@shopgate/engage 7.32.0-beta.2 → 7.32.0-beta.20

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 (662) hide show
  1. package/account/components/Profile/Profile.provider.d.ts +1 -1
  2. package/account/components/Profile/ProfileAddressBook.d.ts.map +1 -1
  3. package/account/components/Profile/ProfileAddressBook.js +13 -22
  4. package/account/components/Profile/ProfileAddressCard.d.ts.map +1 -1
  5. package/account/components/Profile/ProfileAddressCard.js +9 -18
  6. package/account/components/Profile/ProfileForm.d.ts.map +1 -1
  7. package/account/components/Profile/ProfileForm.js +15 -42
  8. package/account/components/ProfileContact/ProfileContact.js +13 -21
  9. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts +2 -1
  10. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.d.ts.map +1 -1
  11. package/admin-preview/components/FrontendSettingsPreviewBridge/FrontendSettingsPreviewBridge.js +61 -5
  12. package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts +7 -1
  13. package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.d.ts.map +1 -1
  14. package/admin-preview/components/FrontendSettingsPreviewBridge/helpers.js +14 -2
  15. package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts +15 -2
  16. package/admin-preview/components/FrontendSettingsPreviewBridge/types.d.ts.map +1 -1
  17. package/admin-preview/constants/index.d.ts +9 -22
  18. package/admin-preview/constants/index.d.ts.map +1 -1
  19. package/admin-preview/constants/index.js +10 -27
  20. package/admin-preview/{detection.d.ts → helpers/_internal/detection.d.ts} +12 -8
  21. package/admin-preview/helpers/_internal/detection.d.ts.map +1 -0
  22. package/admin-preview/helpers/_internal/detection.js +93 -0
  23. package/admin-preview/helpers/_internal/origins.d.ts +20 -0
  24. package/admin-preview/helpers/_internal/origins.d.ts.map +1 -0
  25. package/admin-preview/helpers/_internal/origins.js +72 -0
  26. package/admin-preview/helpers/index.d.ts +20 -0
  27. package/admin-preview/helpers/index.d.ts.map +1 -1
  28. package/admin-preview/helpers/index.js +26 -2
  29. package/admin-preview/hooks/index.d.ts +9 -7
  30. package/admin-preview/hooks/index.d.ts.map +1 -1
  31. package/admin-preview/hooks/index.js +21 -18
  32. package/admin-preview/initialization/_internal/initialFrontendSettings.d.ts +32 -0
  33. package/admin-preview/initialization/_internal/initialFrontendSettings.d.ts.map +1 -0
  34. package/admin-preview/initialization/_internal/initialFrontendSettings.js +43 -0
  35. package/admin-preview/initialization/awaitInitialFrontendSettings.d.ts +23 -0
  36. package/admin-preview/initialization/awaitInitialFrontendSettings.d.ts.map +1 -0
  37. package/admin-preview/initialization/awaitInitialFrontendSettings.js +88 -0
  38. package/back-in-stock/components/BackInStockButton/index.js +5 -5
  39. package/back-in-stock/components/Subscriptions/components/Subscription/index.js +2 -5
  40. package/cart/components/CartItem/CartItemProductLayout.js +2 -1
  41. package/cart/components/CartItem/CartItemProductLayoutWide.js +2 -2
  42. package/cart/components/CartItem/CartItemProductLayoutWideRemoveItem.js +7 -14
  43. package/cart/components/CartItem/CartItemQuantityPicker.js +3 -2
  44. package/cart/components/CartItems/CartItemCardReservationLabelChangeStore.js +6 -24
  45. package/cart/components/CartItems/CartItems.js +8 -10
  46. package/cart/components/CartItems/CartItemsSubstitution.js +3 -2
  47. package/cart/components/CartSummaryWide/CartSummaryWide.js +2 -2
  48. package/cart/components/CartSummaryWide/CartSummaryWideCheckoutButton.js +9 -23
  49. package/cart/components/PaymentBar/PaymentBarCheckoutButton.js +8 -30
  50. package/cart/components/PaymentBar/testUtils/mockFactories.js +4 -11
  51. package/category/components/CategoryImage/index.js +24 -17
  52. package/checkout/components/AddressBook/AddressList.js +14 -23
  53. package/checkout/components/Checkout/CheckoutActions.js +4 -3
  54. package/checkout/components/Checkout/CheckoutAddress.js +8 -0
  55. package/checkout/components/Checkout/CheckoutSection.js +6 -2
  56. package/checkout/components/CheckoutConfirmation/CheckoutConfirmation.js +6 -7
  57. package/checkout/components/ResponsiveBackButton/ResponsiveBackButton.js +7 -17
  58. package/components/Badge/Badge.d.ts +30 -0
  59. package/components/Badge/Badge.d.ts.map +1 -0
  60. package/components/Badge/Badge.js +49 -0
  61. package/components/Badge/index.d.ts +3 -0
  62. package/components/Badge/index.d.ts.map +1 -0
  63. package/components/Badge/index.js +1 -0
  64. package/components/Card/Card.d.ts +27 -0
  65. package/components/Card/Card.d.ts.map +1 -0
  66. package/components/Card/Card.js +57 -0
  67. package/components/Card/index.d.ts +4 -0
  68. package/components/Card/index.d.ts.map +1 -0
  69. package/components/Card/index.js +2 -0
  70. package/components/Card/useCardAppearance.d.ts +11 -0
  71. package/components/Card/useCardAppearance.d.ts.map +1 -0
  72. package/components/Card/useCardAppearance.js +22 -0
  73. package/components/ChipLayout/index.js +2 -4
  74. package/components/NavigationHandler/connector.js +1 -1
  75. package/components/NavigationHandler/index.d.ts +2 -2
  76. package/components/Paper/Paper.d.ts +48 -0
  77. package/components/Paper/Paper.d.ts.map +1 -0
  78. package/components/Paper/Paper.js +64 -0
  79. package/components/Paper/index.d.ts +3 -0
  80. package/components/Paper/index.d.ts.map +1 -0
  81. package/components/Paper/index.js +1 -0
  82. package/components/RadioCard/RadioCard.d.ts.map +1 -1
  83. package/components/RadioCard/RadioCard.js +2 -1
  84. package/components/SheetList/components/Item/index.js +8 -8
  85. package/components/Tabs/components/Tab.d.ts.map +1 -1
  86. package/components/Tabs/components/Tab.js +14 -16
  87. package/components/Typography/Typography.d.ts +1 -1
  88. package/components/Typography/Typography.d.ts.map +1 -1
  89. package/components/Typography/Typography.js +2 -0
  90. package/components/View/components/Content/index.d.ts.map +1 -1
  91. package/components/View/components/Content/index.js +4 -1
  92. package/components/constants.d.ts +6 -0
  93. package/components/constants.d.ts.map +1 -0
  94. package/components/index.d.ts +6 -1
  95. package/components/index.d.ts.map +1 -1
  96. package/components/index.js +6 -2
  97. package/components/v2/Button/Button.d.ts +24 -13
  98. package/components/v2/Button/Button.d.ts.map +1 -1
  99. package/components/v2/Button/Button.js +139 -41
  100. package/components/v2/ButtonBase/ButtonBase.d.ts +50 -10
  101. package/components/v2/ButtonBase/ButtonBase.d.ts.map +1 -1
  102. package/components/v2/ButtonBase/ButtonBase.js +192 -17
  103. package/components/v2/ButtonBase/hooks.d.ts +0 -1
  104. package/components/v2/ButtonBase/hooks.d.ts.map +1 -1
  105. package/components/v2/ButtonBase/hooks.js +36 -12
  106. package/components/v2/ButtonGroup/ButtonGroup.d.ts +11 -5
  107. package/components/v2/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  108. package/components/v2/ButtonGroup/ButtonGroup.js +49 -26
  109. package/components/v2/CircularProgress/CircularProgress.d.ts.map +1 -1
  110. package/components/v2/CircularProgress/CircularProgress.js +10 -5
  111. package/components/v2/IconButton/IconButton.d.ts +72 -0
  112. package/components/v2/IconButton/IconButton.d.ts.map +1 -0
  113. package/components/v2/IconButton/IconButton.js +169 -0
  114. package/components/v2/IconButton/index.d.ts +3 -0
  115. package/components/v2/IconButton/index.d.ts.map +1 -0
  116. package/components/v2/IconButton/index.js +1 -0
  117. package/components/v2/index.d.ts +1 -0
  118. package/components/v2/index.d.ts.map +1 -1
  119. package/components/v2/index.js +1 -0
  120. package/core/helpers/getFullImageSource.d.ts +5 -1
  121. package/core/helpers/getFullImageSource.d.ts.map +1 -1
  122. package/core/helpers/getFullImageSource.js +30 -14
  123. package/core/helpers/i18n.d.ts +4 -0
  124. package/core/helpers/i18n.d.ts.map +1 -1
  125. package/core/helpers/i18n.js +3 -0
  126. package/core/hooks/events/appEvents.d.ts +31 -46
  127. package/core/hooks/events/appEvents.d.ts.map +1 -0
  128. package/core/hooks/events/appEvents.js +26 -29
  129. package/core/hooks/events/index.d.ts +4 -4
  130. package/core/hooks/events/index.d.ts.map +1 -1
  131. package/core/hooks/events/useLongPress.d.ts +55 -58
  132. package/core/hooks/events/useLongPress.d.ts.map +1 -0
  133. package/core/hooks/events/useLongPress.js +23 -16
  134. package/core/hooks/events/usePressHandler.d.ts +32 -21
  135. package/core/hooks/events/usePressHandler.d.ts.map +1 -1
  136. package/core/hooks/events/usePressHandler.js +12 -10
  137. package/core/hooks/events/useScrollDirectionChange.d.ts +72 -61
  138. package/core/hooks/events/useScrollDirectionChange.d.ts.map +1 -0
  139. package/core/hooks/events/useScrollDirectionChange.js +36 -43
  140. package/core/hooks/html/useLoadImage.d.ts +3 -3
  141. package/core/hooks/html/useLoadImage.d.ts.map +1 -1
  142. package/core/hooks/html/useLoadImage.js +2 -2
  143. package/core/hooks/useLocalStorage.d.ts +8 -0
  144. package/core/hooks/useLocalStorage.d.ts.map +1 -1
  145. package/core/hooks/useLocalStorage.js +22 -15
  146. package/core/hooks/useNavigation.d.ts +10 -2
  147. package/core/hooks/useNavigation.d.ts.map +1 -1
  148. package/core/hooks/useNavigation.js +1 -2
  149. package/core/initialization/fetchSettings.d.ts +12 -0
  150. package/core/initialization/fetchSettings.d.ts.map +1 -0
  151. package/core/initialization/fetchSettings.js +134 -0
  152. package/core/initialization/index.d.ts +33 -2
  153. package/core/initialization/index.d.ts.map +1 -1
  154. package/core/initialization/index.js +44 -103
  155. package/core/router/conductor.d.ts +9 -0
  156. package/core/router/helpers.d.ts +28 -15
  157. package/core/router/helpers.d.ts.map +1 -1
  158. package/core/router/helpers.js +8 -8
  159. package/development/action-creators/index.d.ts +3 -0
  160. package/development/action-creators/index.d.ts.map +1 -0
  161. package/development/action-creators/settings.d.ts +45 -0
  162. package/development/action-creators/settings.d.ts.map +1 -0
  163. package/development/action-creators/settings.js +21 -10
  164. package/development/action-creators/storage.d.ts +17 -0
  165. package/development/action-creators/storage.d.ts.map +1 -0
  166. package/development/action-creators/storage.js +7 -4
  167. package/development/components/ClientInformation/ClientInformation.d.ts +6 -0
  168. package/development/components/ClientInformation/ClientInformation.d.ts.map +1 -0
  169. package/development/components/ClientInformation/ClientInformation.js +7 -4
  170. package/development/components/ClientInformation/actions.d.ts +6 -0
  171. package/development/components/ClientInformation/actions.d.ts.map +1 -0
  172. package/development/components/ClientInformation/actions.js +1 -1
  173. package/development/components/ClientInformation/index.d.ts +2 -0
  174. package/development/components/ClientInformation/index.d.ts.map +1 -0
  175. package/development/components/DevelopmentSettings/DevelopmentSettings.d.ts +16 -0
  176. package/development/components/DevelopmentSettings/DevelopmentSettings.d.ts.map +1 -0
  177. package/development/components/DevelopmentSettings/DevelopmentSettings.js +43 -30
  178. package/development/components/DevelopmentSettings/index.d.ts +2 -0
  179. package/development/components/DevelopmentSettings/index.d.ts.map +1 -0
  180. package/development/components/DevelopmentTools/DevelopmentTools.d.ts +10 -0
  181. package/development/components/DevelopmentTools/DevelopmentTools.d.ts.map +1 -0
  182. package/development/components/DevelopmentTools/DevelopmentTools.js +8 -8
  183. package/development/components/DevelopmentTools/Shortcuts.d.ts +6 -0
  184. package/development/components/DevelopmentTools/Shortcuts.d.ts.map +1 -0
  185. package/development/components/DevelopmentTools/Shortcuts.js +0 -1
  186. package/development/components/DevelopmentTools/hooks.d.ts +8 -0
  187. package/development/components/DevelopmentTools/hooks.d.ts.map +1 -0
  188. package/development/components/DevelopmentTools/hooks.js +2 -3
  189. package/development/components/DevelopmentTools/index.d.ts +2 -0
  190. package/development/components/DevelopmentTools/index.d.ts.map +1 -0
  191. package/development/components/SimulatedInsets/SimulatedInsetBottom.d.ts +7 -0
  192. package/development/components/SimulatedInsets/SimulatedInsetBottom.d.ts.map +1 -0
  193. package/development/components/SimulatedInsets/SimulatedInsetBottom.js +1 -6
  194. package/development/components/SimulatedInsets/SimulatedInsetTop.d.ts +7 -0
  195. package/development/components/SimulatedInsets/SimulatedInsetTop.d.ts.map +1 -0
  196. package/development/components/SimulatedInsets/SimulatedInsetTop.js +2 -7
  197. package/development/components/SimulatedInsets/SimulatedInsets.d.ts +13 -0
  198. package/development/components/SimulatedInsets/SimulatedInsets.d.ts.map +1 -0
  199. package/development/components/SimulatedInsets/SimulatedInsets.js +2 -7
  200. package/development/components/SimulatedInsets/index.d.ts +2 -0
  201. package/development/components/SimulatedInsets/index.d.ts.map +1 -0
  202. package/development/components/SimulatedInsets/types.d.ts +15 -0
  203. package/development/components/SimulatedInsets/types.d.ts.map +1 -0
  204. package/development/components/SimulatedInsets/types.js +1 -0
  205. package/development/components/index.d.ts +3 -0
  206. package/development/components/index.d.ts.map +1 -0
  207. package/development/constants/actionTypes.d.ts +6 -0
  208. package/development/constants/actionTypes.d.ts.map +1 -0
  209. package/development/constants/actionTypes.js +2 -1
  210. package/development/constants/index.d.ts +2 -0
  211. package/development/constants/index.d.ts.map +1 -0
  212. package/development/reducers/index.d.ts +24 -0
  213. package/development/reducers/index.d.ts.map +1 -0
  214. package/development/reducers/settings.d.ts +17 -0
  215. package/development/reducers/settings.d.ts.map +1 -0
  216. package/development/reducers/settings.js +48 -35
  217. package/development/reducers/storage.d.ts +17 -0
  218. package/development/reducers/storage.d.ts.map +1 -0
  219. package/development/reducers/storage.js +24 -24
  220. package/development/selectors/index.d.ts +3 -0
  221. package/development/selectors/index.d.ts.map +1 -0
  222. package/development/selectors/settings.d.ts +52 -0
  223. package/development/selectors/settings.d.ts.map +1 -0
  224. package/development/selectors/settings.js +21 -11
  225. package/development/selectors/storage.d.ts +10 -0
  226. package/development/selectors/storage.d.ts.map +1 -0
  227. package/development/selectors/storage.js +6 -18
  228. package/development/streams/index.d.ts +2 -0
  229. package/development/streams/index.d.ts.map +1 -0
  230. package/development/streams/insets.d.ts +8 -0
  231. package/development/streams/insets.d.ts.map +1 -0
  232. package/development/streams/insets.js +1 -3
  233. package/development/subscriptions/index.d.ts +15 -0
  234. package/development/subscriptions/index.d.ts.map +1 -0
  235. package/development/subscriptions/index.js +6 -2
  236. package/development/types/development.d.ts +68 -0
  237. package/development/types/development.d.ts.map +1 -0
  238. package/development/types/development.js +1 -0
  239. package/development/types/index.d.ts +2 -0
  240. package/development/types/index.d.ts.map +1 -0
  241. package/development/types/index.js +1 -0
  242. package/favorites/components/FavoriteButtonWide/FavoriteButtonWide.js +7 -17
  243. package/favorites/components/Item/Item.d.ts +1 -1
  244. package/favorites/components/Item/Item.d.ts.map +1 -1
  245. package/favorites/components/Item/Item.js +2 -5
  246. package/favorites/components/List/List.d.ts +1 -1
  247. package/favorites/components/List/List.d.ts.map +1 -1
  248. package/favorites/components/List/List.js +0 -1
  249. package/favorites/components/List/ListContent.js +4 -5
  250. package/favorites/components/Lists/Lists.js +4 -5
  251. package/filter/components/FilterItem/index.js +12 -2
  252. package/filter/components/FilterPageContent/components/ApplyButton/index.d.ts +21 -0
  253. package/filter/components/FilterPageContent/components/ApplyButton/index.d.ts.map +1 -0
  254. package/filter/components/FilterPageContent/components/ApplyButton/index.js +27 -56
  255. package/filter/components/FilterPageContent/components/FilterButtonBar/index.d.ts +8 -0
  256. package/filter/components/FilterPageContent/components/FilterButtonBar/index.d.ts.map +1 -0
  257. package/filter/components/FilterPageContent/components/FilterButtonBar/index.js +63 -0
  258. package/filter/components/FilterPageContent/components/ResetButton/index.d.ts +17 -0
  259. package/filter/components/FilterPageContent/components/ResetButton/index.d.ts.map +1 -0
  260. package/filter/components/FilterPageContent/components/ResetButton/index.js +26 -46
  261. package/filter/components/FilterPageContent/components/Selector/components/Selected/index.d.ts +19 -0
  262. package/filter/components/FilterPageContent/components/Selector/components/Selected/index.d.ts.map +1 -0
  263. package/filter/components/FilterPageContent/components/Selector/components/Selected/index.js +25 -46
  264. package/filter/components/FilterPageContent/components/Selector/components/Toggle/index.d.ts +14 -0
  265. package/filter/components/FilterPageContent/components/Selector/components/Toggle/index.d.ts.map +1 -0
  266. package/filter/components/FilterPageContent/components/Selector/components/Toggle/index.js +13 -46
  267. package/filter/components/FilterPageContent/components/Selector/components/ValueCheckbox/index.d.ts +25 -0
  268. package/filter/components/FilterPageContent/components/Selector/components/ValueCheckbox/index.d.ts.map +1 -0
  269. package/filter/components/FilterPageContent/components/Selector/components/ValueCheckbox/index.js +77 -0
  270. package/filter/components/FilterPageContent/components/Selector/index.d.ts +43 -0
  271. package/filter/components/FilterPageContent/components/Selector/index.d.ts.map +1 -0
  272. package/filter/components/FilterPageContent/components/Selector/index.js +52 -40
  273. package/filter/components/FilterPageContent/index.d.ts +16 -0
  274. package/filter/components/FilterPageContent/index.d.ts.map +1 -0
  275. package/filter/components/FilterPageContent/index.js +51 -57
  276. package/filter/components/PriceSlider/components/Label/index.js +86 -94
  277. package/filter/components/PriceSlider/index.js +43 -30
  278. package/filter/helpers/buildFilterParamsForFetchFiltersRequest.d.ts +8 -0
  279. package/filter/helpers/buildFilterParamsForFetchFiltersRequest.d.ts.map +1 -0
  280. package/filter/helpers/buildInitialFilters.d.ts +7 -0
  281. package/filter/helpers/buildInitialFilters.d.ts.map +1 -0
  282. package/filter/helpers/buildUpdatedFilters.d.ts +7 -0
  283. package/filter/helpers/buildUpdatedFilters.d.ts.map +1 -0
  284. package/filter/helpers/index.d.ts +5 -0
  285. package/filter/helpers/index.d.ts.map +1 -0
  286. package/filter/helpers/translateFilterLabel.d.ts +8 -0
  287. package/filter/helpers/translateFilterLabel.d.ts.map +1 -0
  288. package/filter/providers/FilterPageProvider.context.d.ts +157 -0
  289. package/filter/providers/FilterPageProvider.context.d.ts.map +1 -0
  290. package/filter/providers/FilterPageProvider.d.ts +24 -0
  291. package/filter/providers/FilterPageProvider.d.ts.map +1 -0
  292. package/filter/providers/FilterPageProvider.js +77 -132
  293. package/locations/components/ChangeLocationButton/ChangeLocationButton.js +10 -14
  294. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotDialog.js +4 -8
  295. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcher.js +1 -1
  296. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherBar.js +8 -13
  297. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotSwitcherDefault.js +10 -10
  298. package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherBar.js +12 -16
  299. package/locations/components/GlobalLocationSwitcher/GlobalLocationSwitcherDefault.js +9 -10
  300. package/locations/components/ReserveForm/ReserveForm.js +6 -7
  301. package/locations/components/StoreDetails/components/GetDirectionsButton.js +2 -4
  302. package/locations/components/StoreDetails/components/StoreDetails.js +5 -10
  303. package/locations/components/StoreDetails/components/StoresNearbyListItem.js +13 -21
  304. package/locations/components/StoreFinder/StoreFinderSelectLocationButton.js +5 -11
  305. package/locations/components/StoreFinder/StoreFinderStoreInfoButton.js +5 -11
  306. package/locations/components/StoreList/StoreListProduct.js +2 -3
  307. package/locations/components/StoreList/StoreListSearch.js +1 -0
  308. package/locations/components/StoreList/StoreSelectLocationButton.js +5 -11
  309. package/login/components/ForgotPassword/ForgotPassword.js +11 -23
  310. package/mocks/date.js +31 -0
  311. package/mocks/index.js +3 -0
  312. package/mocks/pipelineRequest.js +1 -0
  313. package/mocks/subscriptions.js +1 -0
  314. package/orders/components/OrderDetails/OrderDetailsAuthenticate.js +5 -7
  315. package/orders/components/OrderHistory/OrderHistoryList.d.ts.map +1 -1
  316. package/orders/components/OrderHistory/OrderHistoryList.js +8 -9
  317. package/orders/components/OrderHistory/OrderHistoryTable.d.ts.map +1 -1
  318. package/orders/components/OrderHistory/OrderHistoryTable.js +4 -0
  319. package/package.json +9 -9
  320. package/page/components/NotFound.d.ts +7 -0
  321. package/page/components/NotFound.d.ts.map +1 -0
  322. package/page/components/NotFound.js +8 -8
  323. package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.d.ts +52 -0
  324. package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.d.ts.map +1 -0
  325. package/page/components/ResponsiveWidgetImage/ResponsiveWidgetImage.js +4 -4
  326. package/page/components/ResponsiveWidgetImage/index.d.ts +2 -0
  327. package/page/components/ResponsiveWidgetImage/index.d.ts.map +1 -0
  328. package/page/components/WidgetRichText/WidgetRichText.d.ts +25 -0
  329. package/page/components/WidgetRichText/WidgetRichText.d.ts.map +1 -0
  330. package/page/components/WidgetRichText/index.d.ts +2 -0
  331. package/page/components/WidgetRichText/index.d.ts.map +1 -0
  332. package/page/components/WidgetVideo/WidgetVideo.d.ts +43 -0
  333. package/page/components/WidgetVideo/WidgetVideo.d.ts.map +1 -0
  334. package/page/components/WidgetVideo/WidgetVideo.js +33 -39
  335. package/page/components/WidgetVideo/index.d.ts +2 -0
  336. package/page/components/WidgetVideo/index.d.ts.map +1 -0
  337. package/page/components/Widgets/Overlay.d.ts +17 -0
  338. package/page/components/Widgets/Overlay.d.ts.map +1 -0
  339. package/page/components/Widgets/Overlay.js +24 -38
  340. package/page/components/Widgets/Tooltip.d.ts +20 -0
  341. package/page/components/Widgets/Tooltip.d.ts.map +1 -0
  342. package/page/components/Widgets/Tooltip.js +6 -10
  343. package/page/components/Widgets/Widget.d.ts +32 -0
  344. package/page/components/Widgets/Widget.d.ts.map +1 -0
  345. package/page/components/Widgets/Widget.js +14 -28
  346. package/page/components/Widgets/WidgetContext.d.ts +32 -38
  347. package/page/components/Widgets/WidgetContext.d.ts.map +1 -0
  348. package/page/components/Widgets/WidgetContext.js +2 -8
  349. package/page/components/Widgets/WidgetProvider.d.ts +29 -0
  350. package/page/components/Widgets/WidgetProvider.d.ts.map +1 -0
  351. package/page/components/Widgets/WidgetProvider.js +8 -15
  352. package/page/components/Widgets/Widgets.d.ts +16 -0
  353. package/page/components/Widgets/Widgets.d.ts.map +1 -0
  354. package/page/components/Widgets/Widgets.js +5 -12
  355. package/page/components/Widgets/WidgetsPreviewContext.d.ts +21 -0
  356. package/page/components/Widgets/WidgetsPreviewContext.d.ts.map +1 -0
  357. package/page/components/Widgets/WidgetsPreviewContext.js +5 -7
  358. package/page/components/Widgets/WidgetsPreviewProvider.d.ts +18 -0
  359. package/page/components/Widgets/WidgetsPreviewProvider.d.ts.map +1 -0
  360. package/page/components/Widgets/WidgetsPreviewProvider.js +5 -6
  361. package/page/components/Widgets/constants.d.ts +18 -0
  362. package/page/components/Widgets/constants.d.ts.map +1 -0
  363. package/page/components/Widgets/constants.js +24 -2
  364. package/page/components/Widgets/events.d.ts +38 -0
  365. package/page/components/Widgets/events.d.ts.map +1 -0
  366. package/page/components/Widgets/events.js +8 -12
  367. package/page/components/Widgets/helpers.d.ts +69 -0
  368. package/page/components/Widgets/helpers.d.ts.map +1 -0
  369. package/page/components/Widgets/helpers.js +58 -13
  370. package/page/components/Widgets/hooks.d.ts +13 -0
  371. package/page/components/Widgets/hooks.d.ts.map +1 -0
  372. package/page/components/Widgets/hooks.js +18 -12
  373. package/page/components/Widgets/index.d.ts +3 -0
  374. package/page/components/Widgets/index.d.ts.map +1 -0
  375. package/page/components/Widgets/types.d.ts +138 -114
  376. package/page/components/Widgets/types.d.ts.map +1 -0
  377. package/page/components/Widgets/types.js +1 -0
  378. package/page/components/index.d.ts +5 -0
  379. package/page/components/index.d.ts.map +1 -0
  380. package/page/constants/actionTypes.d.ts +4 -0
  381. package/page/constants/actionTypes.d.ts.map +1 -0
  382. package/page/constants/index.d.ts +25 -0
  383. package/page/constants/index.d.ts.map +1 -0
  384. package/page/constants/index.js +5 -3
  385. package/page/helpers/index.d.ts +70 -62
  386. package/page/helpers/index.d.ts.map +1 -0
  387. package/page/helpers/index.js +31 -29
  388. package/page/hooks/index.d.ts +54 -53
  389. package/page/hooks/index.d.ts.map +1 -0
  390. package/page/hooks/index.js +20 -15
  391. package/page/selectors/index.d.ts +32 -0
  392. package/page/selectors/index.d.ts.map +1 -0
  393. package/page/widget.config.schema.json +54 -0
  394. package/page/widgets/Button/Button.js +2 -3
  395. package/page/widgets/CategoryList/CategoryList.js +2 -1
  396. package/page/widgets/HeroBanner/config.json +6 -0
  397. package/page/widgets/Image/config.json +6 -0
  398. package/page/widgets/ImageRow/config.json +6 -0
  399. package/page/widgets/ImageSlider/config.json +6 -0
  400. package/page/widgets/ImageSlider/hooks.js +4 -2
  401. package/page/widgets/NestedCategoryFilter/NestedCategoryFilter.js +8 -8
  402. package/page/widgets/ProductList/ProductList.js +18 -14
  403. package/page/widgets/ProductSlider/ProductSlider.js +1 -15
  404. package/page/widgets/README.md +92 -0
  405. package/page/widgets/Video/Video.d.ts +6 -0
  406. package/page/widgets/Video/Video.d.ts.map +1 -0
  407. package/page/widgets/Video/Video.js +0 -2
  408. package/page/widgets/Video/config.json +6 -0
  409. package/page/widgets/Video/hooks.d.ts +53 -0
  410. package/page/widgets/Video/hooks.d.ts.map +1 -0
  411. package/page/widgets/Video/hooks.js +4 -12
  412. package/page/widgets/Video/index.d.ts +2 -0
  413. package/page/widgets/Video/index.d.ts.map +1 -0
  414. package/product/components/Description/index.js +0 -2
  415. package/product/components/FilterBar/components/Content/components/FilterButton/index.js +38 -46
  416. package/product/components/FilterBar/components/Content/components/FilterChips/components/FilterChip/index.d.ts +38 -0
  417. package/product/components/FilterBar/components/Content/components/FilterChips/components/FilterChip/index.d.ts.map +1 -0
  418. package/product/components/FilterBar/components/Content/components/FilterChips/components/FilterChip/index.js +88 -0
  419. package/product/components/FilterBar/components/Content/components/FilterChips/index.js +54 -35
  420. package/product/components/FilterBar/components/Content/components/Sort/index.js +1 -1
  421. package/product/components/FilterBar/components/Content/index.js +7 -3
  422. package/product/components/FilterBar/index.js +11 -22
  423. package/product/components/Media/FeaturedMedia.js +7 -1
  424. package/product/components/Media/MediaImage.js +24 -23
  425. package/product/components/Media/MediaPlaceholder.js +4 -7
  426. package/product/components/MediaSlider/components/MediaImage/index.js +6 -2
  427. package/product/components/MediaSlider/constants.js +1 -12
  428. package/product/components/OrderQuantityHint/index.js +16 -1
  429. package/product/components/ProductCard/index.js +36 -23
  430. package/product/components/ProductFilters/index.js +2 -6
  431. package/product/components/ProductGrid/components/Item/components/ItemDetails/index.js +12 -4
  432. package/product/components/ProductGrid/components/Item/components/ItemFavoritesButton/index.js +0 -1
  433. package/product/components/ProductGrid/components/Item/components/ItemImage/index.js +3 -6
  434. package/product/components/ProductGrid/components/Item/components/ItemName/index.js +6 -1
  435. package/product/components/ProductGrid/components/Item/index.js +10 -2
  436. package/product/components/ProductGrid/components/Layout/index.js +19 -4
  437. package/product/components/ProductGrid/constants.d.ts +2 -0
  438. package/product/components/ProductGrid/constants.d.ts.map +1 -0
  439. package/product/components/ProductGrid/constants.js +1 -0
  440. package/product/components/ProductGrid/hooks.d.ts +11 -0
  441. package/product/components/ProductGrid/hooks.d.ts.map +1 -0
  442. package/product/components/ProductGrid/hooks.js +48 -0
  443. package/product/components/ProductGrid/index.js +3 -6
  444. package/product/components/ProductGridPrice/index.js +0 -6
  445. package/product/components/ProductImage/ProductImage.d.ts +42 -0
  446. package/product/components/ProductImage/ProductImage.d.ts.map +1 -0
  447. package/product/components/ProductImage/ProductImage.js +158 -0
  448. package/product/components/ProductImage/ProductImagePlaceholder.d.ts +23 -0
  449. package/product/components/ProductImage/ProductImagePlaceholder.d.ts.map +1 -0
  450. package/product/components/ProductImage/ProductImagePlaceholder.js +12 -17
  451. package/product/components/ProductImage/constants.d.ts +7 -0
  452. package/product/components/ProductImage/constants.d.ts.map +1 -0
  453. package/product/components/ProductImage/constants.js +6 -0
  454. package/product/components/ProductImage/hooks.d.ts +8 -0
  455. package/product/components/ProductImage/hooks.d.ts.map +1 -0
  456. package/product/components/ProductImage/hooks.js +32 -0
  457. package/product/components/ProductImage/index.d.ts +3 -0
  458. package/product/components/ProductImage/index.d.ts.map +1 -0
  459. package/product/components/ProductImage/index.js +1 -201
  460. package/product/components/ProductList/components/Item/index.js +5 -3
  461. package/product/components/ProductList/components/Layout/index.js +8 -20
  462. package/product/components/ProductRatingStars/ProductRatingStars.d.ts.map +1 -1
  463. package/product/components/ProductRatingStars/ProductRatingStars.js +4 -17
  464. package/product/components/ProductSlider/constants.d.ts +3 -0
  465. package/product/components/ProductSlider/constants.d.ts.map +1 -0
  466. package/product/components/ProductSlider/constants.js +2 -0
  467. package/product/components/ProductSlider/hooks.d.ts +7 -0
  468. package/product/components/ProductSlider/hooks.d.ts.map +1 -0
  469. package/product/components/ProductSlider/hooks.js +40 -0
  470. package/product/components/ProductSlider/index.js +8 -8
  471. package/product/components/Rating/index.js +12 -21
  472. package/product/components/RelationsSlider/RelationsSliderContent.js +3 -2
  473. package/product/components/RelationsSlider/constants.d.ts +3 -0
  474. package/product/components/RelationsSlider/constants.d.ts.map +1 -0
  475. package/product/components/RelationsSlider/constants.js +2 -1
  476. package/product/components/RelationsSlider/hooks.d.ts +6 -0
  477. package/product/components/RelationsSlider/hooks.d.ts.map +1 -0
  478. package/product/components/RelationsSlider/hooks.js +34 -0
  479. package/product/components/UnitQuantityPicker/UnitQuantityPicker.d.ts.map +1 -1
  480. package/product/components/UnitQuantityPicker/UnitQuantityPicker.js +15 -33
  481. package/product/helpers/index.js +29 -11
  482. package/product/hooks/index.js +3 -1
  483. package/product/hooks/useLoadProductImage.js +4 -2
  484. package/product/hooks/useShowEmptyRatingStars.d.ts +7 -0
  485. package/product/hooks/useShowEmptyRatingStars.d.ts.map +1 -0
  486. package/product/hooks/useShowEmptyRatingStars.js +21 -0
  487. package/product/index.js +0 -1
  488. package/product/selectors/mocks/productProperties.mock.js +49 -0
  489. package/push-opt-in/components/PushOptInModal/index.js +4 -4
  490. package/registration/components/Registration/RegistrationFormActions.js +4 -4
  491. package/reviews/components/Reviews/components/AllReviewsLink/index.js +6 -6
  492. package/reviews/components/Reviews/components/Header/components/WriteReviewLink/index.js +4 -3
  493. package/settings/action-creators/appSettings.d.ts +3 -3
  494. package/settings/action-creators/appSettings.d.ts.map +1 -1
  495. package/settings/constants/appSettings.d.ts +3 -0
  496. package/settings/constants/appSettings.d.ts.map +1 -1
  497. package/settings/constants/appSettings.js +6 -1
  498. package/settings/constants/imageSettings.d.ts +52 -0
  499. package/settings/constants/imageSettings.d.ts.map +1 -0
  500. package/settings/constants/imageSettings.js +69 -0
  501. package/settings/helpers/index.d.ts +3 -0
  502. package/settings/helpers/index.d.ts.map +1 -0
  503. package/settings/helpers/index.js +1 -0
  504. package/settings/helpers/resolveImageSettings.d.ts +70 -0
  505. package/settings/helpers/resolveImageSettings.d.ts.map +1 -0
  506. package/settings/helpers/resolveImageSettings.js +171 -0
  507. package/settings/helpers/toImageQuality.d.ts +7 -0
  508. package/settings/helpers/toImageQuality.d.ts.map +1 -0
  509. package/settings/helpers/toImageQuality.js +44 -0
  510. package/settings/helpers/toThumborColor.d.ts +15 -0
  511. package/settings/helpers/toThumborColor.d.ts.map +1 -0
  512. package/settings/helpers/toThumborColor.js +51 -0
  513. package/settings/hooks/index.d.ts +2 -0
  514. package/settings/hooks/index.d.ts.map +1 -0
  515. package/settings/hooks/index.js +1 -0
  516. package/settings/hooks/useImageSettings.d.ts +28 -0
  517. package/settings/hooks/useImageSettings.d.ts.map +1 -0
  518. package/settings/hooks/useImageSettings.js +39 -0
  519. package/settings/reducers/appSettings.d.ts.map +1 -1
  520. package/settings/reducers/appSettings.js +123 -8
  521. package/settings/reducers/index.d.ts +3 -3
  522. package/settings/selectors/appSettings.d.ts +122 -1
  523. package/settings/selectors/appSettings.d.ts.map +1 -1
  524. package/settings/selectors/appSettings.js +80 -1
  525. package/settings/types/appSettings.d.ts +279 -0
  526. package/settings/types/appSettings.d.ts.map +1 -1
  527. package/settings/types/appSettings.js +133 -1
  528. package/styles/helpers/index.d.ts +2 -0
  529. package/styles/helpers/index.js +2 -0
  530. package/styles/helpers/loadFontCss.d.ts +22 -0
  531. package/styles/helpers/loadFontCss.d.ts.map +1 -0
  532. package/styles/helpers/loadFontCss.js +138 -0
  533. package/styles/helpers/loadThemeCss.d.ts +14 -0
  534. package/styles/helpers/loadThemeCss.d.ts.map +1 -0
  535. package/styles/helpers/loadThemeCss.js +123 -0
  536. package/styles/index.d.ts +1 -1
  537. package/styles/index.d.ts.map +1 -1
  538. package/styles/reset/root.js +23 -4
  539. package/styles/reset/typographyCustomProps.d.ts +12 -0
  540. package/styles/reset/typographyCustomProps.d.ts.map +1 -0
  541. package/styles/reset/typographyCustomProps.js +11 -0
  542. package/styles/theme/createDefaultThemeOptions/index.d.ts +11 -1
  543. package/styles/theme/createDefaultThemeOptions/index.d.ts.map +1 -1
  544. package/styles/theme/createDefaultThemeOptions/index.js +129 -10
  545. package/styles/theme/createTheme/createComponents.types.d.ts +118 -4
  546. package/styles/theme/createTheme/createComponents.types.d.ts.map +1 -1
  547. package/styles/theme/createTheme/createComponents.types.js +122 -8
  548. package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.d.ts.map +1 -1
  549. package/styles/theme/createTheme/createCssVarsForColorSchemeThemes.js +13 -3
  550. package/styles/theme/createTheme/createPalette.types.d.ts +5 -0
  551. package/styles/theme/createTheme/createPalette.types.d.ts.map +1 -1
  552. package/styles/theme/createTheme/createPalette.types.js +7 -2
  553. package/styles/theme/createTheme/createShape.d.ts +3 -0
  554. package/styles/theme/createTheme/createShape.d.ts.map +1 -1
  555. package/styles/theme/createTheme/createThemeFromColorScheme.d.ts +3 -1
  556. package/styles/theme/createTheme/createThemeFromColorScheme.d.ts.map +1 -1
  557. package/styles/theme/createTheme/createThemeFromColorScheme.js +6 -3
  558. package/styles/theme/createTheme/createTypography.d.ts +4 -2
  559. package/styles/theme/createTheme/createTypography.js +60 -18
  560. package/styles/theme/createTheme/helpers/cssVarsParser.d.ts.map +1 -1
  561. package/styles/theme/createTheme/helpers/cssVarsParser.js +10 -3
  562. package/styles/theme/createTheme/index.d.ts +2 -1
  563. package/styles/theme/createTheme/index.d.ts.map +1 -1
  564. package/styles/theme/createTheme/index.js +3 -1
  565. package/styles/theme/createTheme/shadows.d.ts +11 -1
  566. package/styles/theme/createTheme/shadows.d.ts.map +1 -1
  567. package/styles/theme/createTheme/shadows.js +41 -7
  568. package/styles/theme/createTheme/types.d.ts +16 -5
  569. package/styles/theme/createTheme/types.d.ts.map +1 -1
  570. package/styles/theme/createTheme/types.js +8 -3
  571. package/styles/theme/hooks/useColorScheme.d.ts +4 -3
  572. package/styles/theme/hooks/useColorScheme.d.ts.map +1 -1
  573. package/styles/theme/hooks/useColorScheme.js +4 -3
  574. package/styles/theme/hooks/useMediaQuery.d.ts +7 -0
  575. package/styles/theme/hooks/useMediaQuery.d.ts.map +1 -1
  576. package/styles/theme/hooks/useMediaQuery.js +5 -5
  577. package/styles/theme/hooks/useTheme.js +1 -1
  578. package/styles/theme/index.d.ts +4 -1
  579. package/styles/theme/index.d.ts.map +1 -1
  580. package/styles/theme/providers/ColorSchemeContext.d.ts +40 -0
  581. package/styles/theme/providers/ColorSchemeContext.d.ts.map +1 -0
  582. package/styles/theme/providers/ColorSchemeContext.js +14 -0
  583. package/styles/theme/providers/ThemeContext.d.ts +3 -0
  584. package/styles/theme/providers/ThemeContext.d.ts.map +1 -0
  585. package/styles/theme/providers/ThemeContext.js +2 -0
  586. package/styles/theme/providers/ThemeProvider.d.ts +3 -13
  587. package/styles/theme/providers/ThemeProvider.d.ts.map +1 -1
  588. package/styles/theme/providers/ThemeProvider.js +86 -13
  589. package/styles/theme/utils/color.d.ts +12 -12
  590. package/styles/theme/utils/color.d.ts.map +1 -1
  591. package/tracking/components/CookieConsentModal/index.js +3 -4
  592. package/tracking/components/PrivacySettings/index.js +3 -3
  593. package/admin-preview/detection.d.ts.map +0 -1
  594. package/admin-preview/detection.js +0 -166
  595. package/cart/components/PaymentBar/PaymentBarReserveButton.connector.js +0 -6
  596. package/cart/components/PaymentBar/PaymentBarReserveButton.js +0 -71
  597. package/components/ChipLayout/spec.js +0 -41
  598. package/components/Logo/spec.js +0 -12
  599. package/components/NavigationHandler/spec.js +0 -84
  600. package/components/Picker/spec.js +0 -94
  601. package/components/PickerUtilize/spec.js +0 -35
  602. package/components/RangeSlider/spec.js +0 -190
  603. package/components/SheetList/components/Item/spec.js +0 -101
  604. package/components/SheetList/spec.js +0 -43
  605. package/components/TimeBoundary/spec.js +0 -83
  606. package/filter/components/FilterItem/spec.js +0 -14
  607. package/filter/components/FilterPageContent/components/ApplyButton/spec.js +0 -46
  608. package/filter/components/FilterPageContent/components/ResetButton/spec.js +0 -29
  609. package/filter/components/FilterPageContent/components/Selector/components/Selected/spec.js +0 -26
  610. package/filter/components/FilterPageContent/components/Selector/components/Toggle/spec.js +0 -34
  611. package/filter/components/FilterPageContent/components/Selector/components/ValueButton/index.js +0 -69
  612. package/filter/components/FilterPageContent/components/Selector/components/ValueButton/spec.js +0 -32
  613. package/filter/components/FilterPageContent/components/Selector/spec.js +0 -33
  614. package/filter/components/PriceSlider/components/Label/spec.js +0 -26
  615. package/filter/components/PriceSlider/spec.js +0 -30
  616. package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.connector.js +0 -16
  617. package/locations/components/StoreFinder/StoreFinderGetDirectionsButton.js +0 -52
  618. package/product/collections/index.js +0 -1
  619. package/product/components/EffectivityDates/constants.d.ts +0 -3
  620. package/product/components/EffectivityDates/constants.d.ts.map +0 -1
  621. package/product/components/EffectivityDates/helpers.d.ts +0 -6
  622. package/product/components/EffectivityDates/helpers.d.ts.map +0 -1
  623. package/product/components/FilterBar/components/Content/components/FilterChips/connector.js +0 -22
  624. package/product/components/FilterBar/components/Content/spec.js +0 -136
  625. package/product/components/Header/Shipping/spec.js +0 -36
  626. package/product/components/Header/Tiers/components/Tier/spec.js +0 -48
  627. package/product/components/Header/Tiers/spec.js +0 -64
  628. package/product/components/Media/helpers.d.ts +0 -2
  629. package/product/components/Media/helpers.d.ts.map +0 -1
  630. package/product/components/Options/components/Content/spec.js +0 -73
  631. package/product/components/Options/components/TextOption/components/OptionInfo/spec.js +0 -72
  632. package/product/components/ProductDiscountBadge/spec.js +0 -58
  633. package/product/components/ProductGrid/components/Item/components/ItemDetails/spec.js +0 -73
  634. package/product/components/ProductGrid/components/Item/components/ItemFavoritesButton/spec.js +0 -33
  635. package/product/components/ProductGrid/components/Item/components/ItemImage/spec.js +0 -16
  636. package/product/components/ProductGrid/components/Item/components/ItemName/spec.js +0 -21
  637. package/product/components/ProductGrid/components/Item/components/ItemPrice/spec.js +0 -37
  638. package/product/components/ProductGrid/spec.js +0 -52
  639. package/product/components/ProductImage/connector.js +0 -12
  640. package/product/components/ProductImage/spec.js +0 -87
  641. package/product/components/ProductSlider/spec.js +0 -37
  642. package/product/components/Rating/connector.js +0 -26
  643. package/product/components/Rating/spec.js +0 -58
  644. package/product/helpers/index.d.ts +0 -13
  645. package/product/helpers/index.d.ts.map +0 -1
  646. package/product/helpers/redirects.d.ts +0 -2
  647. package/product/helpers/redirects.d.ts.map +0 -1
  648. package/product/selectors/helpers/filterProperties.d.ts +0 -8
  649. package/product/selectors/helpers/filterProperties.d.ts.map +0 -1
  650. package/product/selectors/helpers/index.d.ts +0 -3
  651. package/product/selectors/helpers/index.d.ts.map +0 -1
  652. package/product/selectors/helpers/wrapMemoizedSelector.d.ts +0 -2
  653. package/product/selectors/helpers/wrapMemoizedSelector.d.ts.map +0 -1
  654. package/product/selectors/product.d.ts +0 -112
  655. package/product/selectors/product.d.ts.map +0 -1
  656. package/reviews/components/Reviews/components/Header/components/WriteReviewLink/spec.js +0 -52
  657. package/reviews/components/Reviews/components/Header/spec.js +0 -78
  658. package/reviews/components/Reviews/components/List/spec.js +0 -108
  659. package/reviews/components/Reviews/components/RatingCount/spec.js +0 -38
  660. package/reviews/components/Reviews/spec.js +0 -101
  661. package/tsconfig.build.json +0 -26
  662. package/tsconfig.json +0 -19
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveImageSettings.d.ts","sourceRoot":"","sources":["../../../settings/helpers/resolveImageSettings.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,eAAe,EACf,aAAa,EACb,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AA2D9B;;;;;;;GAOG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;;OAGG;IACH,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B;;;;OAIG;IACH,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,MAAM,4BAA4B,GACtC,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,eAAe,EAAE,OAAO,CAAC;CAC1B;AA4DD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,2BAA2B,GACtC,wBAAwB,OAAO,EAC/B,eAAe,aAAa,KAC3B,4BAiCF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,GACtC,wBAAwB,OAAO,EAC/B,eAAe,aAAa,KAC3B,4BAyBF,CAAC"}
@@ -0,0 +1,171 @@
1
+ import "core-js/modules/es.array.reduce.js";
2
+ // Imported via its module path rather than the "core" barrel, since that barrel pulls in
3
+ // getFullImageSource which reads these settings back, and would create a circular import.
4
+ import { getThemeSettings } from '@shopgate/engage/core/config/getThemeSettings';
5
+ import { DEFAULT_IMAGE_FILL_COLOR, DEFAULT_IMAGE_FILL_TRANSPARENT, DEFAULT_IMAGE_QUALITY, LEGACY_IMAGE_SETTINGS_KEY, MAX_IMAGE_DIMENSION, PRODUCT_IMAGE_BASE_WIDTHS } from "../constants/imageSettings";
6
+ import { toThumborColor } from "./toThumborColor";
7
+
8
+ /**
9
+ * The shape of the legacy AppImages theme settings. Every field is optional - the key is absent
10
+ * entirely in most shops, and undefined in every jest run, since the test theme config mock has no
11
+ * settings at all.
12
+ */
13
+
14
+ /**
15
+ * Maps a product image context onto the legacy AppImages key that configured it.
16
+ */
17
+ const LEGACY_RESOLUTION_KEYS = {
18
+ pdp: 'HeroImage',
19
+ gallery: 'GalleryImage',
20
+ list: 'ListImage'
21
+ };
22
+
23
+ /**
24
+ * The ratio the legacy resolutions are assumed to have when they are not configured at all - the
25
+ * built-in base widths then produce exactly the resolutions the legacy defaults shipped with.
26
+ */
27
+ const DEFAULT_RATIO = {
28
+ width: 1,
29
+ height: 1
30
+ };
31
+ const PRODUCT_IMAGE_CONTEXTS = Object.keys(PRODUCT_IMAGE_BASE_WIDTHS);
32
+
33
+ /**
34
+ * The resolved settings for one product image context: the resolution ladder to request from the
35
+ * image service, and the aspect ratio to apply to the rendered element.
36
+ *
37
+ * ratio is null while the legacy settings are in effect, because those configure explicit
38
+ * dimensions rather than a ratio - consumers then let the Image component derive the ratio from
39
+ * the largest resolution, exactly as before.
40
+ */
41
+
42
+ /**
43
+ * The resolved settings for every product image context, keyed by context.
44
+ */
45
+
46
+ /**
47
+ * What getFullImageSource needs to build an image url.
48
+ *
49
+ * The color and the transparency flag stay separate rather than being joined into one token,
50
+ * because the image sources spell them differently.
51
+ */
52
+
53
+ /**
54
+ * Reads the legacy AppImages settings from the theme configuration.
55
+ * @returns The legacy settings, or an empty object when they are not configured.
56
+ */
57
+ const getLegacyImageSettings = () => getThemeSettings(LEGACY_IMAGE_SETTINGS_KEY) ?? {};
58
+
59
+ /**
60
+ * Whether a ratio part can be calculated with.
61
+ * @param value The value to check.
62
+ * @returns Whether it is usable.
63
+ */
64
+ const isUsableRatioPart = value => typeof value === 'number' && Number.isFinite(value) && value > 0;
65
+
66
+ /**
67
+ * Substitutes a ratio that cannot be calculated with. Anything reading a configured ratio goes
68
+ * through here first - a source may send a half typed value, or none at all.
69
+ * @param ratio The configured ratio.
70
+ * @returns The ratio, or the default when it is unusable.
71
+ */
72
+ const toUsableRatio = ratio => {
73
+ if (!ratio || !isUsableRatioPart(ratio.width) || !isUsableRatioPart(ratio.height)) {
74
+ return DEFAULT_RATIO;
75
+ }
76
+ return ratio;
77
+ };
78
+
79
+ /**
80
+ * Derives a resolution ladder from a context's base widths and an aspect ratio.
81
+ * @param context The product image context.
82
+ * @param ratio The aspect ratio to apply, already passed through toUsableRatio.
83
+ * @returns The resolutions, ordered ascending.
84
+ */
85
+ const deriveResolutions = (context, ratio) => PRODUCT_IMAGE_BASE_WIDTHS[context].map(baseWidth => {
86
+ const height = Math.max(1, Math.round(baseWidth * ratio.height / ratio.width));
87
+ if (height <= MAX_IMAGE_DIMENSION) {
88
+ return {
89
+ width: baseWidth,
90
+ height
91
+ };
92
+ }
93
+
94
+ // Scaled down as a whole rather than capping the height alone, so the requested image keeps the
95
+ // shape the layout reserves for it.
96
+ return {
97
+ width: Math.max(1, Math.round(baseWidth * MAX_IMAGE_DIMENSION / height)),
98
+ height: MAX_IMAGE_DIMENSION
99
+ };
100
+ });
101
+
102
+ /**
103
+ * Resolves the settings for every product image context.
104
+ *
105
+ * Precedence:
106
+ * - Once the app settings are hydrated from a source (admin sync / jsonp), they are authoritative.
107
+ * The configured ratio applies to every context unless that context overrides it.
108
+ * - Before hydration the legacy AppImages resolutions are passed through as-is, with a null ratio.
109
+ * They already carry their own implied proportions, so reverse engineering a ratio from them
110
+ * would only introduce rounding - passing them through unchanged keeps the pre-hydration path
111
+ * identical to the legacy behavior.
112
+ * @param areAppSettingsHydrated Whether the app settings arrived from a source.
113
+ * @param imageSettings The image settings from the store.
114
+ * @returns The resolved settings, keyed by context.
115
+ */
116
+ export const resolveProductImageSettings = (areAppSettingsHydrated, imageSettings) => {
117
+ const legacy = areAppSettingsHydrated ? null : getLegacyImageSettings();
118
+ return PRODUCT_IMAGE_CONTEXTS.reduce((resolved, context) => {
119
+ if (legacy) {
120
+ const legacyResolutions = legacy[LEGACY_RESOLUTION_KEYS[context]];
121
+ return {
122
+ ...resolved,
123
+ [context]: {
124
+ resolutions: legacyResolutions?.length ? legacyResolutions : deriveResolutions(context, DEFAULT_RATIO),
125
+ ratio: null
126
+ }
127
+ };
128
+ }
129
+ const product = imageSettings?.product;
130
+ const ratio = toUsableRatio(product?.[context]?.ratio ?? product?.ratio);
131
+ const resolutions = deriveResolutions(context, ratio);
132
+ const largest = resolutions[resolutions.length - 1];
133
+ return {
134
+ ...resolved,
135
+ [context]: {
136
+ resolutions,
137
+ ratio: [largest.width, largest.height]
138
+ }
139
+ };
140
+ }, {});
141
+ };
142
+
143
+ /**
144
+ * Resolves the quality and fill that image urls are built with.
145
+ * @param areAppSettingsHydrated Whether the app settings arrived from a source.
146
+ * @param imageSettings The image settings from the store.
147
+ * @returns The image service settings.
148
+ */
149
+ export const resolveImageServiceSettings = (areAppSettingsHydrated, imageSettings) => {
150
+ let color;
151
+ let fillTransparent;
152
+ if (areAppSettingsHydrated) {
153
+ color = imageSettings?.fillColor ?? DEFAULT_IMAGE_FILL_COLOR;
154
+ fillTransparent = imageSettings?.fillTransparent ?? DEFAULT_IMAGE_FILL_TRANSPARENT;
155
+ } else {
156
+ // The legacy value packs both parts into one string, e.g. "FFFFFF,1". Its color is normalized
157
+ // like a configured one - theme configurations carry values the image service will not take.
158
+ const {
159
+ fillColor: legacyFillColor = ''
160
+ } = getLegacyImageSettings();
161
+ const [legacyColor, legacyFillTransparent] = legacyFillColor.split(',');
162
+ color = legacyColor ? toThumborColor(legacyColor) : DEFAULT_IMAGE_FILL_COLOR;
163
+ fillTransparent = legacyFillTransparent === undefined ? DEFAULT_IMAGE_FILL_TRANSPARENT : legacyFillTransparent.trim() === '1';
164
+ }
165
+ return {
166
+ // No hydration branch, unlike the fill: the unhydrated slice already holds the legacy quality.
167
+ quality: imageSettings?.quality ?? DEFAULT_IMAGE_QUALITY,
168
+ fillColor: color,
169
+ fillTransparent
170
+ };
171
+ };
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Converts a configured value into a compression quality the image service accepts.
3
+ * @param value The value to convert.
4
+ * @returns A whole number between 1 and 100.
5
+ */
6
+ export declare const toImageQuality: (value: unknown) => number;
7
+ //# sourceMappingURL=toImageQuality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toImageQuality.d.ts","sourceRoot":"","sources":["../../../settings/helpers/toImageQuality.ts"],"names":[],"mappings":"AA4BA;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,OAAO,KAAG,MAY/C,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { logger } from '@shopgate/pwa-core/helpers';
2
+ import { DEFAULT_IMAGE_QUALITY } from "../constants/imageSettings";
3
+
4
+ /**
5
+ * The range the image service accepts.
6
+ */
7
+ const MIN_IMAGE_QUALITY = 1;
8
+ const MAX_IMAGE_QUALITY = 100;
9
+
10
+ /**
11
+ * Coerces a configured value into a number.
12
+ * @param value The configured value.
13
+ * @returns The number, or NaN when the value does not express one.
14
+ */
15
+ const toNumber = value => {
16
+ if (typeof value === 'number') {
17
+ return value;
18
+ }
19
+
20
+ // Emptiness is handled here rather than left to Number(), which would read both "" and null as a
21
+ // perfectly valid zero.
22
+ if (typeof value === 'string' && value.trim() !== '') {
23
+ return Number(value);
24
+ }
25
+ return NaN;
26
+ };
27
+
28
+ /**
29
+ * Converts a configured value into a compression quality the image service accepts.
30
+ * @param value The value to convert.
31
+ * @returns A whole number between 1 and 100.
32
+ */
33
+ export const toImageQuality = value => {
34
+ const quality = toNumber(value);
35
+ if (!Number.isFinite(quality)) {
36
+ logger.warn(`Invalid image quality "${value}", falling back to ${DEFAULT_IMAGE_QUALITY}`);
37
+ return DEFAULT_IMAGE_QUALITY;
38
+ }
39
+
40
+ // Out of range numbers are clamped rather than rejected, so a value that is still being typed
41
+ // degrades into the nearest usable one instead of jumping back to the default. Zero is included
42
+ // in that - the service takes it, but the images it returns are unusable.
43
+ return Math.min(Math.max(Math.round(quality), MIN_IMAGE_QUALITY), MAX_IMAGE_QUALITY);
44
+ };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Converts a color into the format Thumbor's fill filter expects - a hexadecimal RGB expression
3
+ * without the leading "#", or one of its own keywords.
4
+ *
5
+ * Any alpha channel on the input is dropped: Thumbor's fill color cannot carry one, and Color.hex()
6
+ * returns the opaque six digit form. Transparency is only expressible by configuring the
7
+ * "transparent" keyword explicitly.
8
+ *
9
+ * Everything else is canonicalized to hex rather than passing HTML color names through, so that
10
+ * "white", "#fff" and "rgb(255, 255, 255)" all produce the same url and share a CDN cache entry.
11
+ * @param value The color to convert.
12
+ * @returns The Thumbor color token.
13
+ */
14
+ export declare const toThumborColor: (value: string) => string;
15
+ //# sourceMappingURL=toThumborColor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toThumborColor.d.ts","sourceRoot":"","sources":["../../../settings/helpers/toThumborColor.ts"],"names":[],"mappings":"AAqBA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,KAAG,MAiB9C,CAAC"}
@@ -0,0 +1,51 @@
1
+ import "core-js/modules/es.array.includes.js";
2
+ import "core-js/modules/es.string.replace.js";
3
+ import Color from 'color';
4
+ import { logger } from '@shopgate/pwa-core/helpers';
5
+ // Imported via its module path rather than the "styles" barrel, since that barrel pulls in the
6
+ // ThemeProvider and would create a circular import.
7
+ import { isColor } from '@shopgate/engage/styles/theme/utils/color';
8
+ import { DEFAULT_IMAGE_FILL_COLOR } from "../constants/imageSettings";
9
+
10
+ /**
11
+ * Values Thumbor's fill filter accepts that are not CSS colors, so they have to bypass the color
12
+ * parser and be passed through untouched.
13
+ * @see https://thumbor.readthedocs.io/en/latest/filling.html
14
+ */
15
+ const THUMBOR_COLOR_KEYWORDS = ['auto', 'blur', 'transparent'];
16
+
17
+ /**
18
+ * A hexadecimal color without the leading "#" - the format the image service itself expects, and
19
+ * therefore what the legacy AppImages config stores. It is not a valid CSS color, so it has to be
20
+ * recognized before the color parser sees it.
21
+ */
22
+ const BARE_HEX_PATTERN = /^([\da-f]{3}|[\da-f]{4}|[\da-f]{6}|[\da-f]{8})$/i;
23
+
24
+ /**
25
+ * Converts a color into the format Thumbor's fill filter expects - a hexadecimal RGB expression
26
+ * without the leading "#", or one of its own keywords.
27
+ *
28
+ * Any alpha channel on the input is dropped: Thumbor's fill color cannot carry one, and Color.hex()
29
+ * returns the opaque six digit form. Transparency is only expressible by configuring the
30
+ * "transparent" keyword explicitly.
31
+ *
32
+ * Everything else is canonicalized to hex rather than passing HTML color names through, so that
33
+ * "white", "#fff" and "rgb(255, 255, 255)" all produce the same url and share a CDN cache entry.
34
+ * @param value The color to convert.
35
+ * @returns The Thumbor color token.
36
+ */
37
+ export const toThumborColor = value => {
38
+ const trimmed = typeof value === 'string' ? value.trim() : '';
39
+ if (THUMBOR_COLOR_KEYWORDS.includes(trimmed.toLowerCase())) {
40
+ return trimmed.toLowerCase();
41
+ }
42
+
43
+ // A bare hex is what the image service and the legacy config use, but not something the color
44
+ // parser recognizes, so it gets its "#" back before parsing.
45
+ const parsable = BARE_HEX_PATTERN.test(trimmed) ? `#${trimmed}` : trimmed;
46
+ if (!isColor(parsable)) {
47
+ logger.warn(`Invalid image fill color "${value}", falling back to ${DEFAULT_IMAGE_FILL_COLOR}`);
48
+ return DEFAULT_IMAGE_FILL_COLOR;
49
+ }
50
+ return Color(parsable).hex().replace('#', '').toUpperCase();
51
+ };
@@ -0,0 +1,2 @@
1
+ export { useImageServiceSettings, useProductImageSettings, } from './useImageSettings';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../settings/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1 @@
1
+ export { useImageServiceSettings, useProductImageSettings } from "./useImageSettings";
@@ -0,0 +1,28 @@
1
+ import type { ResolvedImageServiceSettings, ResolvedProductImageSettings } from '../helpers';
2
+ /**
3
+ * Resolves the resolutions and aspect ratio to request for every product image context, keyed by
4
+ * `pdp`, `gallery` and `list`.
5
+ *
6
+ * Prefer giving ProductImage a `context` prop, which resolves its own settings. This hook is for
7
+ * the places that render the plain Image component instead, e.g. the fullscreen gallery sliders,
8
+ * which need its unwrapped mode.
9
+ *
10
+ * `ratio` may be null, which the Image component reads as "derive one from the largest
11
+ * resolution" - pass it through rather than substituting a value.
12
+ * @returns The resolved settings, keyed by context.
13
+ */
14
+ export declare const useProductImageSettings: () => ResolvedProductImageSettings;
15
+ /**
16
+ * Resolves the quality and fill color for image service urls, in the shape getFullImageSource
17
+ * takes as its third argument.
18
+ *
19
+ * Components rarely need this - the Image component already calls it and applies the result. It is
20
+ * separate from useProductImageSettings because both values apply to every image the service
21
+ * serves, not just product images.
22
+ *
23
+ * `fillColor` is a hash free hex, not a CSS color, and the transparency flag is a separate
24
+ * `fillTransparent` - the image sources spell the pair differently.
25
+ * @returns The image service settings.
26
+ */
27
+ export declare const useImageServiceSettings: () => ResolvedImageServiceSettings;
28
+ //# sourceMappingURL=useImageSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useImageSettings.d.ts","sourceRoot":"","sources":["../../../settings/hooks/useImageSettings.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,QAAO,4BAQ1C,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,QAAO,4BAQ1C,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { useMemo } from 'react';
2
+ import { useSelector } from 'react-redux';
3
+ import { getAreAppSettingsHydrated, getImageSettings } from "../selectors/appSettings";
4
+ import { resolveImageServiceSettings, resolveProductImageSettings } from "../helpers";
5
+ /**
6
+ * Resolves the resolutions and aspect ratio to request for every product image context, keyed by
7
+ * `pdp`, `gallery` and `list`.
8
+ *
9
+ * Prefer giving ProductImage a `context` prop, which resolves its own settings. This hook is for
10
+ * the places that render the plain Image component instead, e.g. the fullscreen gallery sliders,
11
+ * which need its unwrapped mode.
12
+ *
13
+ * `ratio` may be null, which the Image component reads as "derive one from the largest
14
+ * resolution" - pass it through rather than substituting a value.
15
+ * @returns The resolved settings, keyed by context.
16
+ */
17
+ export const useProductImageSettings = () => {
18
+ const areAppSettingsHydrated = useSelector(getAreAppSettingsHydrated);
19
+ const imageSettings = useSelector(getImageSettings);
20
+ return useMemo(() => resolveProductImageSettings(areAppSettingsHydrated, imageSettings), [areAppSettingsHydrated, imageSettings]);
21
+ };
22
+
23
+ /**
24
+ * Resolves the quality and fill color for image service urls, in the shape getFullImageSource
25
+ * takes as its third argument.
26
+ *
27
+ * Components rarely need this - the Image component already calls it and applies the result. It is
28
+ * separate from useProductImageSettings because both values apply to every image the service
29
+ * serves, not just product images.
30
+ *
31
+ * `fillColor` is a hash free hex, not a CSS color, and the transparency flag is a separate
32
+ * `fillTransparent` - the image sources spell the pair differently.
33
+ * @returns The image service settings.
34
+ */
35
+ export const useImageServiceSettings = () => {
36
+ const areAppSettingsHydrated = useSelector(getAreAppSettingsHydrated);
37
+ const imageSettings = useSelector(getImageSettings);
38
+ return useMemo(() => resolveImageServiceSettings(areAppSettingsHydrated, imageSettings), [areAppSettingsHydrated, imageSettings]);
39
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"appSettings.d.ts","sourceRoot":"","sources":["../../../settings/reducers/appSettings.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAG/E,KAAK,iBAAiB,GAAG,wBAAwB,GAAG,aAAa,CAAC;AAQlE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,gBAalC,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,WAAW,EAAE,OAAO,CAAC,gBAAgB,EAAE,iBAAiB,CAW5D,CAAC;AAEH,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"appSettings.d.ts","sourceRoot":"","sources":["../../../settings/reducers/appSettings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAa/E,KAAK,iBAAiB,GAAG,wBAAwB,GAAG,aAAa,CAAC;AAQlE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,gBAuElC,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,WAAW,EAAE,OAAO,CAAC,gBAAgB,EAAE,iBAAiB,CAqD7D,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -1,6 +1,10 @@
1
1
  import _merge from "lodash/merge";
2
- import { produce } from 'immer';
3
2
  import { RECEIVE_APP_SETTINGS } from "../constants/appSettings";
3
+ import { DEFAULT_IMAGE_FILL_COLOR, DEFAULT_IMAGE_FILL_TRANSPARENT, DEFAULT_IMAGE_QUALITY, DEFAULT_SHOW_INNER_SHADOW } from "../constants/imageSettings";
4
+ // Deliberately not exported from the "helpers" barrel - they normalize values on their way into
5
+ // the slice, which is nothing a consumer of the settings needs.
6
+ import { toImageQuality } from "../helpers/toImageQuality";
7
+ import { toThumborColor } from "../helpers/toThumborColor";
4
8
  const isReceiveAppSettingsAction = action => action.type === RECEIVE_APP_SETTINGS && 'settings' in action;
5
9
 
6
10
  /**
@@ -17,8 +21,72 @@ export const DEFAULT_APP_SETTINGS = {
17
21
  transition: 'fade',
18
22
  fixed: {
19
23
  borderEnabled: true
24
+ },
25
+ favorites: {
26
+ showCounter: true
20
27
  }
21
28
  }
29
+ },
30
+ product: {
31
+ grid: {
32
+ columns: {
33
+ small: 2,
34
+ large: 4
35
+ }
36
+ },
37
+ slider: {
38
+ slidesPerView: {
39
+ small: 2.3,
40
+ medium: 3.3,
41
+ large: 4.3
42
+ }
43
+ },
44
+ rating: {
45
+ showEmptyStars: false
46
+ },
47
+ card: {
48
+ productName: {
49
+ maxLines: 3
50
+ }
51
+ },
52
+ tile: {
53
+ productName: {
54
+ maxLines: 3
55
+ }
56
+ }
57
+ },
58
+ cards: {
59
+ style: 'shadow',
60
+ shadow: {
61
+ size: 'medium'
62
+ }
63
+ },
64
+ typography: {
65
+ variants: {}
66
+ },
67
+ appearance: {
68
+ defaultColorSchemeMode: 'light'
69
+ },
70
+ widgets: {
71
+ mediaMargins: {
72
+ top: 0,
73
+ bottom: 0,
74
+ left: 0,
75
+ right: 0
76
+ }
77
+ },
78
+ images: {
79
+ quality: DEFAULT_IMAGE_QUALITY,
80
+ // Already in the image service's format, so the unhydrated path needs no conversion.
81
+ fillColor: DEFAULT_IMAGE_FILL_COLOR,
82
+ fillTransparent: DEFAULT_IMAGE_FILL_TRANSPARENT,
83
+ product: {
84
+ ratio: {
85
+ width: 1,
86
+ height: 1
87
+ },
88
+ showInnerShadow: DEFAULT_SHOW_INNER_SHADOW
89
+ }
22
90
  }
23
91
  };
24
92
 
@@ -30,13 +98,60 @@ export const DEFAULT_APP_SETTINGS = {
30
98
  */
31
99
  const appSettings = (state, action = {
32
100
  type: ''
33
- }) => produce(state ?? DEFAULT_APP_SETTINGS, draft => {
101
+ }) => {
34
102
  if (isReceiveAppSettingsAction(action)) {
35
- // Deep merge so a partial payload (e.g. only some navigation.tabBar fields)
36
- // keeps the built-in defaults for anything the source omits, rather than
37
- // shallow-replacing whole branches and leaving consumers with undefined.
38
- _merge(draft, action.settings);
39
- draft.isHydrated = true;
103
+ const {
104
+ images,
105
+ typography,
106
+ appearance,
107
+ widgets
108
+ } = action.settings ?? {};
109
+ const {
110
+ mediaMargins
111
+ } = widgets ?? {};
112
+
113
+ // Merged over the defaults rather than over the current state, so a field an incoming payload
114
+ // omits falls back to its default instead of keeping the value of an earlier one. The admin
115
+ // preview needs that: it stops sending a shadow size once the card style isn't `shadow`, and it
116
+ // clears a whole branch by sending a null.
117
+ const nextState = _merge({}, DEFAULT_APP_SETTINGS, {
118
+ ...action.settings,
119
+ // A cleared branch is mapped to undefined, which merge skips, so the defaults it started from
120
+ // stay in place. A null would be written into the slice like any other value.
121
+ images: images === null ? undefined : {
122
+ ...images,
123
+ product: images?.product ?? undefined
124
+ },
125
+ typography: typography === null ? undefined : {
126
+ ...typography,
127
+ variants: typography?.variants ?? undefined
128
+ },
129
+ appearance: appearance === null ? undefined : {
130
+ ...appearance,
131
+ defaultColorSchemeMode: appearance?.defaultColorSchemeMode ?? undefined
132
+ },
133
+ widgets: widgets === null ? undefined : {
134
+ ...widgets,
135
+ // Sides are mapped one by one, because the admin clears a single margin with a null just
136
+ // like it clears a whole branch with one.
137
+ mediaMargins: !mediaMargins ? undefined : {
138
+ top: mediaMargins.top ?? undefined,
139
+ bottom: mediaMargins.bottom ?? undefined,
140
+ left: mediaMargins.left ?? undefined,
141
+ right: mediaMargins.right ?? undefined
142
+ }
143
+ }
144
+ }, {
145
+ isHydrated: true
146
+ });
147
+
148
+ // Converted on the way in, so the slice holds wire ready values and every image url does not
149
+ // pay for it. Unconditional, because an empty string or a null reaches here like any other
150
+ // value - both converters are idempotent.
151
+ nextState.images.fillColor = toThumborColor(nextState.images.fillColor);
152
+ nextState.images.quality = toImageQuality(nextState.images.quality);
153
+ return nextState;
40
154
  }
41
- });
155
+ return state ?? DEFAULT_APP_SETTINGS;
156
+ };
42
157
  export default appSettings;
@@ -3,10 +3,10 @@ export declare const settings: import("redux").Reducer<{
3
3
  shopSettings: Object;
4
4
  merchantSettings: Object;
5
5
  appSettings: import("../types/appSettings").AppSettingsSlice;
6
- }, (import("redux").UnknownAction | {
6
+ }, ({
7
7
  type: string;
8
- settings: import("../types/appSettings").AppSettings;
9
- }) | import("redux").Action<string>, Partial<{
8
+ settings: import("../types/appSettings").DeepPartial<import("../types/appSettings").AppSettings>;
9
+ } | import("redux").UnknownAction) | import("redux").Action<string>, Partial<{
10
10
  config: Object | undefined;
11
11
  shopSettings: Object | undefined;
12
12
  merchantSettings: Object | undefined;