@shopgate/engage 7.12.3-beta.1 → 7.20.0-beta.1

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 (419) hide show
  1. package/a11y/components/Section/index.js +2 -2
  2. package/a11y/components/VisuallyHidden/index.js +8 -0
  3. package/a11y/components/index.js +1 -0
  4. package/a11y/constants/index.js +1 -0
  5. package/a11y/helpers/index.js +1 -0
  6. package/a11y/index.js +1 -4
  7. package/account/actions/addContacts.js +1 -1
  8. package/account/actions/deleteContact.js +1 -1
  9. package/account/actions/deleteCustomer.js +1 -1
  10. package/account/actions/fetchContacts.js +1 -1
  11. package/account/actions/fetchCustomer.js +1 -1
  12. package/account/actions/updateContact.js +1 -1
  13. package/account/actions/updateCustomer.js +1 -1
  14. package/account/components/Account/Account.style.js +1 -1
  15. package/account/components/Profile/Profile.provider.js +3 -3
  16. package/account/components/ProfileContact/ProfileContact.js +1 -1
  17. package/app-rating/action-creators/appStart.js +3 -3
  18. package/app-rating/action-creators/ordersPlaced.js +3 -3
  19. package/app-rating/action-creators/popup.js +4 -4
  20. package/app-rating/action-creators/timer.js +3 -3
  21. package/app-rating/actions/showModal.js +6 -6
  22. package/app-rating/constants/index.js +2 -2
  23. package/app-rating/reducers/index.js +2 -2
  24. package/app-rating/subscriptions/index.js +4 -4
  25. package/back-in-stock/actions/index.js +14 -0
  26. package/back-in-stock/components/BackInStockButton/connector.js +1 -0
  27. package/back-in-stock/components/BackInStockButton/index.js +14 -0
  28. package/back-in-stock/components/BackInStockButton/style.js +1 -0
  29. package/back-in-stock/components/CharacteristicsButton/connector.js +3 -0
  30. package/back-in-stock/components/CharacteristicsButton/index.js +8 -0
  31. package/back-in-stock/components/ProductInfoBackInStockButton/connector.js +3 -0
  32. package/back-in-stock/components/ProductInfoBackInStockButton/index.js +10 -0
  33. package/back-in-stock/components/Subscriptions/components/List/index.js +4 -0
  34. package/back-in-stock/components/Subscriptions/components/Subscription/index.js +7 -0
  35. package/back-in-stock/components/Subscriptions/index.js +4 -0
  36. package/back-in-stock/components/index.js +1 -0
  37. package/back-in-stock/constants/Actions.js +1 -0
  38. package/back-in-stock/constants/Common.js +1 -0
  39. package/back-in-stock/constants/Pipelines.js +1 -0
  40. package/back-in-stock/constants/Portals.js +9 -0
  41. package/back-in-stock/constants/index.js +1 -0
  42. package/back-in-stock/hooks/index.js +4 -0
  43. package/back-in-stock/providers/BackInStockSubscriptionsProvider.connector.js +7 -0
  44. package/back-in-stock/providers/BackInStockSubscriptionsProvider.context.js +1 -0
  45. package/back-in-stock/providers/BackInStockSubscriptionsProvider.js +5 -0
  46. package/back-in-stock/providers/index.js +1 -0
  47. package/back-in-stock/reducers/index.js +5 -0
  48. package/back-in-stock/selectors/index.js +43 -0
  49. package/back-in-stock/streams/index.js +1 -0
  50. package/back-in-stock/subscriptions/index.js +11 -0
  51. package/cart/cart.helpers.js +2 -2
  52. package/cart/components/CartItem/CartItemCoupon.js +10 -6
  53. package/cart/components/CartItem/CartItemCouponCode.js +2 -2
  54. package/cart/components/CartItem/CartItemCouponDelete.js +1 -1
  55. package/cart/components/CartItem/CartItemCouponFreeShipping.js +1 -1
  56. package/cart/components/CartItem/CartItemCouponIcon.js +2 -2
  57. package/cart/components/CartItem/CartItemCouponLayout.style.js +5 -1
  58. package/cart/components/CartItem/CartItemCouponTitle.js +2 -2
  59. package/cart/components/CartItem/CartItemProductLayout.js +3 -2
  60. package/cart/components/CartItem/CartItemProductLayoutWide.style.js +1 -1
  61. package/cart/components/CartItem/CartItemProductTitle.js +2 -2
  62. package/cart/components/CartItem/CartItemQuantityPicker.js +26 -14
  63. package/cart/components/CartItem/CartItemSubstitution.js +1 -1
  64. package/cart/components/CartItems/CartItemCardReservation.js +1 -1
  65. package/cart/components/CartItems/CartItemGroupReservation.js +1 -1
  66. package/cart/components/CartSummaryWide/CartSummaryWideCheckoutButton.style.js +1 -1
  67. package/cart/components/PaymentBar/PaymentBar.js +1 -1
  68. package/cart/components/PaymentBar/PaymentBarCheckoutButton.style.js +1 -1
  69. package/cart/components/PaymentBar/PaymentBarPromotionCouponMessages.js +1 -1
  70. package/cart/index.js +1 -1
  71. package/category/actions/index.js +1 -0
  72. package/category/components/CategoryList/index.js +7 -0
  73. package/category/components/CategoryList/style.js +1 -0
  74. package/category/components/index.js +1 -1
  75. package/category/constants/index.js +1 -0
  76. package/category/helpers/index.js +1 -0
  77. package/category/index.js +1 -6
  78. package/category/selectors/index.js +2 -0
  79. package/category/streams/index.js +1 -1
  80. package/checkout/actions/errorCheckout.js +1 -1
  81. package/checkout/actions/fetchCheckoutOrder.js +1 -1
  82. package/checkout/actions/fetchPaymentMethods.js +1 -1
  83. package/checkout/actions/initializeCheckout.js +1 -1
  84. package/checkout/actions/prepareCheckout.js +2 -2
  85. package/checkout/actions/submitCheckoutOrder.js +1 -1
  86. package/checkout/actions/updateCheckoutOrder.js +1 -1
  87. package/checkout/components/Checkout/CheckoutSectionMessages.js +1 -1
  88. package/checkout/components/CheckoutConfirmation/CheckoutConfirmation.js +1 -1
  89. package/checkout/components/CheckoutConfirmation/CheckoutConfirmationBilledTo.js +1 -1
  90. package/checkout/components/PaymentMethodButton/PaymentMethodButton.js +1 -1
  91. package/checkout/components/ShippingMethods/ShippingMethods.js +4 -4
  92. package/checkout/paymentMethods/index.js +2 -2
  93. package/checkout/paymentMethods/paypal/PaypalButtonApp.js +1 -1
  94. package/checkout/paymentMethods/paypal/PaypalButtonWeb.js +1 -1
  95. package/checkout/paymentMethods/paypal/PaypalPayButton.js +1 -1
  96. package/checkout/paymentMethods/paypal/PaypalProvider.js +1 -1
  97. package/checkout/paymentMethods/stripe/StripeButton.js +2 -2
  98. package/checkout/paymentMethods/stripe/StripeCreditCard.js +3 -3
  99. package/checkout/paymentMethods/stripe/StripeProvider.js +8 -8
  100. package/checkout/paymentMethods/stripe/sdk.js +1 -1
  101. package/checkout/providers/AddressBookProvider.js +1 -1
  102. package/checkout/providers/CheckoutProvider.js +8 -8
  103. package/components/ChipLayout/index.js +38 -0
  104. package/components/ChipLayout/spec.js +5 -0
  105. package/components/ChipLayout/style.js +5 -0
  106. package/components/Footer/Footer.js +7 -7
  107. package/components/Form/Builder/Builder.js +50 -29
  108. package/components/Form/Builder/ElementCheckbox.js +1 -1
  109. package/components/Form/Builder/ElementMultiSelect.js +1 -1
  110. package/components/Form/Builder/ElementPhoneNumber.js +3 -3
  111. package/components/Form/Builder/ElementRadio.js +1 -1
  112. package/components/Form/Builder/ElementSelect.js +1 -1
  113. package/components/Form/Builder/ElementText.js +3 -3
  114. package/components/Form/Builder/classes/ActionListener.constants.js +2 -2
  115. package/components/Form/Builder/classes/ActionListener.js +73 -16
  116. package/components/Form/Builder/helpers/buildFormElements.js +2 -2
  117. package/components/Form/Form.js +8 -5
  118. package/components/IntersectionVisibility/index.js +14 -7
  119. package/components/Logo/connector.js +4 -0
  120. package/components/Logo/index.js +4 -0
  121. package/components/Logo/spec.js +1 -0
  122. package/components/Logo/style.js +1 -0
  123. package/components/Menu/components/Position/index.js +5 -5
  124. package/components/Menu/index.js +9 -9
  125. package/components/MessageBar/MessageBar.js +1 -1
  126. package/components/MessageBar/index.js +1 -1
  127. package/components/NavigationHandler/index.js +4 -4
  128. package/components/NavigationHandler/spec.js +1 -1
  129. package/components/Picker/components/Button/index.js +1 -1
  130. package/components/Picker/components/List/index.js +2 -2
  131. package/components/Picker/components/Modal/index.js +7 -7
  132. package/components/Picker/index.js +18 -9
  133. package/components/PickerUtilize/components/Button/index.js +5 -0
  134. package/components/PickerUtilize/components/Button/style.js +1 -0
  135. package/components/PickerUtilize/index.js +17 -0
  136. package/components/PickerUtilize/spec.js +1 -0
  137. package/components/PickerUtilize/style.js +1 -0
  138. package/components/QuantityInput/QuantityInput.js +2 -2
  139. package/components/Radio/Radio.js +1 -1
  140. package/components/RadioCard/RadioCard.js +1 -1
  141. package/components/RangeSlider/components/Handle/index.js +1 -1
  142. package/components/RangeSlider/index.js +36 -24
  143. package/components/SheetList/components/Item/index.js +5 -5
  144. package/components/SheetList/index.js +4 -4
  145. package/components/SideNavigation/SideNavigationCategories.connector.js +2 -2
  146. package/components/SnackBarContainer/index.js +5 -0
  147. package/components/Switch/index.js +12 -0
  148. package/components/Switch/style.js +1 -0
  149. package/components/Tabs/components/TabIndicator.js +2 -2
  150. package/components/Tabs/components/Tabs.js +1 -1
  151. package/components/TimeBoundary/index.js +8 -6
  152. package/components/VideoPlayer/index.js +9 -6
  153. package/components/View/components/Above/index.js +1 -1
  154. package/components/View/components/Below/index.js +1 -1
  155. package/components/View/components/Content/index.js +18 -11
  156. package/components/View/index.js +1 -1
  157. package/components/View/provider.js +22 -5
  158. package/components/index.js +2 -2
  159. package/core/action-creators/app.js +5 -0
  160. package/core/action-creators/appPermissions.js +9 -0
  161. package/core/action-creators/index.js +1 -1
  162. package/core/actions/getGeolocation.js +2 -2
  163. package/core/actions/grantAppTrackingTransparencyPermission.js +6 -0
  164. package/core/actions/grantCameraPermissions.js +1 -1
  165. package/core/actions/grantGeolocationPermissions.js +1 -1
  166. package/core/actions/grantPermissions.js +13 -6
  167. package/core/actions/grantPushPermissions.js +22 -0
  168. package/core/actions/index.js +7 -0
  169. package/core/actions/requestAppPermission.js +12 -0
  170. package/core/actions/requestAppPermissionStatus.js +12 -0
  171. package/core/classes/GeolocationRequest.js +2 -3
  172. package/core/classes/GeolocationRequestApp.js +6 -6
  173. package/core/classes/GeolocationRequestBrowser.js +2 -2
  174. package/core/classes/index.js +1 -0
  175. package/core/collections/AppInitialization.js +49 -0
  176. package/core/collections/index.js +1 -0
  177. package/core/commands/analyticsSetConsent.js +11 -0
  178. package/core/commands/index.js +1 -0
  179. package/core/config/ThemeConfigResolver.js +2 -2
  180. package/core/config/config.action-creators.js +1 -1
  181. package/core/config/config.actions.js +1 -1
  182. package/core/config/config.reducers.js +1 -1
  183. package/core/config/config.subscriptions.js +2 -2
  184. package/core/config/index.js +1 -1
  185. package/core/constants/actionTypes.js +1 -0
  186. package/core/constants/appFeatures.js +1 -0
  187. package/core/constants/index.js +6 -1
  188. package/core/contexts/index.js +1 -0
  189. package/core/helpers/appFeatures.js +14 -0
  190. package/core/helpers/appPermissions.js +43 -6
  191. package/core/helpers/baseUrl.js +14 -0
  192. package/core/helpers/environment.js +4 -0
  193. package/core/helpers/getFullImageSource.js +1 -1
  194. package/core/helpers/i18n.js +5 -3
  195. package/core/helpers/index.js +7 -0
  196. package/core/hocs/index.js +1 -0
  197. package/core/hocs/withCurrentProduct.js +6 -6
  198. package/core/hocs/withTheme.js +2 -2
  199. package/core/hooks/index.js +1 -0
  200. package/core/hooks/useAsyncMemo.js +1 -1
  201. package/core/hooks/useFormState.js +1 -1
  202. package/core/hooks/useScrollTo.js +1 -1
  203. package/core/hooks/useTheme.js +2 -2
  204. package/core/index.js +5 -52
  205. package/core/initialization/index.js +4 -2
  206. package/core/providers/AppProvider.js +10 -8
  207. package/core/providers/index.js +1 -0
  208. package/core/reducers/app.js +6 -0
  209. package/core/reducers/index.js +1 -1
  210. package/core/reducers/merchantSettings.js +1 -1
  211. package/core/reducers/shopSettings.js +1 -1
  212. package/core/selectors/app.js +9 -0
  213. package/core/selectors/index.js +6 -1
  214. package/core/streams/app.js +8 -0
  215. package/core/streams/appPermissions.js +19 -0
  216. package/core/streams/index.js +4 -0
  217. package/core/subscriptions/app.js +7 -0
  218. package/favorites/components/Item/Item.js +5 -5
  219. package/favorites/components/List/List.js +1 -1
  220. package/favorites/components/Lists/Lists.js +4 -4
  221. package/filter/components/PriceSlider/index.js +9 -9
  222. package/filter/helpers/buildFilterParamsForFetchFiltersRequest.js +9 -0
  223. package/filter/helpers/buildUpdatedFilters.js +1 -1
  224. package/filter/helpers/index.js +1 -0
  225. package/filter/helpers/translateFilterLabel.js +6 -0
  226. package/filter/index.js +1 -1
  227. package/filter/providers/SortProvider.helpers.js +1 -1
  228. package/locations/actions/fetchFulfillmentSlots.js +5 -3
  229. package/locations/actions/fetchInventories.js +5 -4
  230. package/locations/actions/fetchLocations.js +18 -3
  231. package/locations/actions/fetchProductInventories.js +4 -2
  232. package/locations/actions/fetchProductLocations.js +9 -2
  233. package/locations/actions/index.js +1 -1
  234. package/locations/actions/setUserGeolocation.js +1 -1
  235. package/locations/actions/setUserSearchGeolocation.js +1 -1
  236. package/locations/actions/submitReservation.js +2 -2
  237. package/locations/components/Cart/CartContextMenuChangeFulfillmentContent.js +1 -1
  238. package/locations/components/FulfillmentPath/FulfillmentPath.js +1 -1
  239. package/locations/components/FulfillmentPath/FulfillmentPathItem.js +2 -2
  240. package/locations/components/FulfillmentSelector/FulfillmentSelectorAddToCart.js +2 -2
  241. package/locations/components/FulfillmentSelector/FulfillmentSelectorAlternativeLocation.js +1 -1
  242. package/locations/components/FulfillmentSheet/FulfillmentSheet.js +2 -2
  243. package/locations/components/FulfillmentSlotSwitcher/FulfillmentSlotDialog.js +1 -1
  244. package/locations/components/ReserveForm/ReserveForm.js +1 -1
  245. package/locations/components/ReserveForm/ReserveFormPhone.js +1 -1
  246. package/locations/components/StockInfo/StockInfo.defaultSettings.js +1 -1
  247. package/locations/components/StoreFinder/StoreFinderMap.style.js +2 -2
  248. package/locations/components/StoreList/StoreListSearch.js +2 -2
  249. package/locations/locations.streams.js +1 -1
  250. package/locations/providers/FulfillmentProvider.js +4 -4
  251. package/locations/providers/StoreFinderProvider.js +1 -1
  252. package/locations/reducers/storage.js +3 -3
  253. package/locations/selectors/index.js +2 -2
  254. package/locations/subscriptions.js +13 -13
  255. package/login/components/ForgotPassword/ForgotPassword.js +1 -1
  256. package/orders/actions/cancelOrder.js +1 -1
  257. package/orders/actions/fetchOrderDetails.js +1 -1
  258. package/orders/constants/status.js +2 -2
  259. package/orders/providers/OrderDetailsPrivateProvider.js +1 -1
  260. package/orders/providers/OrderDetailsProvider.js +3 -3
  261. package/package.json +8 -8
  262. package/page/actions/index.js +1 -0
  263. package/page/components/index.js +1 -0
  264. package/page/constants/index.js +1 -0
  265. package/page/index.js +2 -4
  266. package/page/selectors/index.js +1 -0
  267. package/product/collections/index.js +1 -0
  268. package/product/components/Availability/Availability.connector.js +4 -5
  269. package/product/components/Availability/Availability.js +3 -3
  270. package/product/components/Characteristics/Characteristic/components/Sheet/index.js +20 -0
  271. package/product/components/Characteristics/Characteristic/components/SheetItem/index.js +10 -0
  272. package/product/components/Characteristics/Characteristic/components/SheetItem/style.js +1 -0
  273. package/product/components/Characteristics/Characteristic/index.js +18 -0
  274. package/product/components/Characteristics/Characteristic/style.js +1 -0
  275. package/product/components/Characteristics/Swatch/index.js +12 -0
  276. package/product/components/Characteristics/Swatch/style.js +1 -0
  277. package/product/components/Characteristics/index.js +12 -0
  278. package/product/components/Characteristics/transition.js +1 -0
  279. package/product/components/Description/index.js +2 -2
  280. package/product/components/EffectivityDates/helpers.js +3 -3
  281. package/product/components/EffectivityDates/index.js +1 -1
  282. package/product/components/Header/PriceStriked/connector.js +9 -0
  283. package/product/components/Header/PriceStriked/index.js +5 -0
  284. package/product/components/Header/PriceStriked/style.js +1 -0
  285. package/product/components/Header/Shipping/components/Label/index.js +6 -0
  286. package/product/components/Header/Shipping/components/Label/style.js +1 -0
  287. package/product/components/Header/Shipping/connector.js +9 -0
  288. package/product/components/Header/Shipping/index.js +5 -0
  289. package/product/components/Header/Shipping/mock.js +1 -0
  290. package/product/components/Header/Shipping/spec.js +5 -0
  291. package/product/components/Header/Shipping/style.js +1 -0
  292. package/product/components/Header/Tiers/components/Tier/index.js +6 -0
  293. package/product/components/Header/Tiers/components/Tier/spec.js +1 -0
  294. package/product/components/Header/Tiers/connector.js +10 -0
  295. package/product/components/Header/Tiers/index.js +5 -0
  296. package/product/components/Header/Tiers/spec.js +1 -0
  297. package/product/components/Header/Tiers/style.js +1 -0
  298. package/product/components/Header/index.js +1 -0
  299. package/product/components/MapPriceHint/index.js +1 -1
  300. package/product/components/Media/FeaturedMedia.js +1 -1
  301. package/product/components/MediaSlider/index.js +1 -1
  302. package/product/components/Options/components/Content/connector.js +10 -0
  303. package/product/components/Options/components/Content/index.js +16 -0
  304. package/product/components/Options/components/Content/spec.js +2 -0
  305. package/product/components/Options/components/Option/index.js +4 -0
  306. package/product/components/Options/components/TextOption/components/OptionInfo/index.js +9 -0
  307. package/product/components/Options/components/TextOption/components/OptionInfo/spec.js +1 -0
  308. package/product/components/Options/components/TextOption/components/OptionInfo/style.js +1 -0
  309. package/product/components/Options/components/TextOption/index.js +22 -0
  310. package/product/components/Options/components/TextOption/style.js +1 -0
  311. package/product/components/Options/index.js +5 -0
  312. package/product/components/OrderQuantityHint/index.js +3 -2
  313. package/product/components/OrderQuantityHint/style.js +1 -1
  314. package/product/components/PriceDifference/index.js +1 -1
  315. package/product/components/ProductCard/index.js +2 -2
  316. package/product/components/ProductCharacteristics/helpers/index.js +1 -1
  317. package/product/components/ProductCharacteristics/index.js +28 -12
  318. package/product/components/ProductDiscountBadge/spec.js +1 -1
  319. package/product/components/ProductGridPrice/index.js +2 -2
  320. package/product/components/ProductImage/index.js +15 -12
  321. package/product/components/ProductList/components/Item/index.js +5 -0
  322. package/product/components/ProductList/components/Item/style.js +2 -0
  323. package/product/components/ProductList/components/Iterator/index.js +5 -0
  324. package/product/components/ProductList/components/Iterator/style.js +1 -0
  325. package/product/components/ProductList/components/Layout/index.js +5 -0
  326. package/product/components/ProductList/components/Layout/style.js +1 -0
  327. package/product/components/ProductList/index.js +5 -0
  328. package/product/components/ProductProperties/Content.js +1 -1
  329. package/product/components/ProductProperties/GroupedProperties.js +1 -1
  330. package/product/components/ProductProperties/ListsHTML.js +1 -1
  331. package/product/components/ProductProperties/ProductProperties.js +1 -1
  332. package/product/components/ProductProperties/RowHTML.js +1 -1
  333. package/product/components/ProductProperties/Wrapper.js +1 -1
  334. package/product/components/ProductProperties/style.js +1 -1
  335. package/product/components/ProductProvider/connector.js +5 -0
  336. package/product/components/ProductProvider/index.js +4 -0
  337. package/product/components/ProductSlider/index.js +4 -0
  338. package/product/components/ProductSlider/spec.js +1 -0
  339. package/product/components/ProductSlider/style.js +1 -0
  340. package/product/components/Rating/connector.js +9 -0
  341. package/product/components/Rating/index.js +7 -0
  342. package/product/components/Rating/mock.js +5 -0
  343. package/product/components/Rating/spec.js +5 -0
  344. package/product/components/Rating/style.js +1 -0
  345. package/product/components/Swatch/SwatchContent.js +1 -1
  346. package/product/components/index.js +1 -0
  347. package/product/constants/index.js +1 -1
  348. package/product/contexts/index.js +1 -0
  349. package/product/helpers/index.js +2 -2
  350. package/product/helpers/redirects.js +1 -1
  351. package/product/hocs/index.js +1 -0
  352. package/product/hocs/withProductListEntryProduct.js +12 -0
  353. package/product/hooks/index.js +1 -0
  354. package/product/index.js +4 -11
  355. package/product/providers/index.js +1 -0
  356. package/product/selectors/product.js +13 -2
  357. package/product/selectors/variants.js +2 -2
  358. package/product/streams/index.js +1 -0
  359. package/push-opt-in/action-creators/index.js +1 -0
  360. package/push-opt-in/action-creators/optInTrigger.js +23 -0
  361. package/push-opt-in/action-creators/pushOptIn.js +7 -0
  362. package/push-opt-in/actions/index.js +1 -0
  363. package/push-opt-in/actions/pushOptInModal.js +8 -0
  364. package/push-opt-in/components/PushOptInModal/connector.js +9 -0
  365. package/push-opt-in/components/PushOptInModal/index.js +10 -0
  366. package/push-opt-in/components/PushOptInModal/push-opt-in.svg +62 -0
  367. package/push-opt-in/components/PushOptInModal/style.js +1 -0
  368. package/push-opt-in/components/index.js +1 -0
  369. package/push-opt-in/constants/index.js +1 -0
  370. package/push-opt-in/constants/optInModal.js +1 -0
  371. package/push-opt-in/constants/optInTrigger.js +1 -0
  372. package/push-opt-in/reducers/index.js +1 -0
  373. package/push-opt-in/reducers/optInModal.js +6 -0
  374. package/push-opt-in/reducers/optInTrigger.js +6 -0
  375. package/push-opt-in/selectors/index.js +1 -0
  376. package/push-opt-in/selectors/optInModal.js +8 -0
  377. package/push-opt-in/selectors/optInTrigger.js +5 -0
  378. package/push-opt-in/subscriptions/index.js +1 -0
  379. package/push-opt-in/subscriptions/optInTrigger.js +14 -0
  380. package/registration/providers/GuestRegistrationProvider.actions.js +2 -2
  381. package/registration/providers/GuestRegistrationProvider.js +3 -3
  382. package/registration/providers/RegistrationProvider.actions.js +3 -3
  383. package/registration/providers/RegistrationProvider.js +2 -2
  384. package/registration/subscriptions/index.js +1 -1
  385. package/reviews/actions/index.js +1 -0
  386. package/reviews/components/Reviews/components/Header/components/ReviewsExcerpt/index.js +1 -1
  387. package/reviews/components/Reviews/components/List/index.js +3 -3
  388. package/reviews/components/Reviews/components/List/spec.js +1 -1
  389. package/reviews/components/Reviews/components/RatingCount/index.js +1 -1
  390. package/reviews/components/Reviews/components/ReviewsInfo/index.js +1 -2
  391. package/reviews/components/Reviews/spec.js +1 -1
  392. package/reviews/components/index.js +1 -0
  393. package/reviews/constants/index.js +1 -0
  394. package/reviews/index.js +1 -7
  395. package/reviews/selectors/index.js +1 -0
  396. package/reviews/streams/index.js +1 -0
  397. package/scanner/action-creators/index.js +1 -0
  398. package/scanner/actions/index.js +1 -0
  399. package/scanner/classes/index.js +1 -0
  400. package/scanner/constants/index.js +1 -0
  401. package/scanner/helpers/index.js +1 -0
  402. package/scanner/index.js +1 -6
  403. package/scanner/streams/index.js +1 -0
  404. package/search/actions/index.js +1 -0
  405. package/search/constants/index.js +1 -0
  406. package/search/helpers/index.js +1 -0
  407. package/search/index.js +1 -6
  408. package/search/selectors/index.js +1 -0
  409. package/search/streams/index.js +1 -0
  410. package/styles/helpers/index.js +1 -0
  411. package/styles/helpers/initCSSCustomProperties.js +3 -3
  412. package/styles/helpers/setPageContentWidth.js +2 -1
  413. package/styles/index.js +1 -1
  414. package/tracking/components/CookieConsent/CookieConsentContent.js +1 -1
  415. package/tracking/constants/index.js +2 -1
  416. package/components/MessageBar/MessageBar.types.js +0 -0
  417. package/components/MessageBar/style.js +0 -1
  418. package/product/components/Availability/Availability.types.js +0 -1
  419. /package/page/{NotFound.js → components/NotFound.js} +0 -0
@@ -1,8 +1,8 @@
1
1
  import _regeneratorRuntime from"@babel/runtime/regenerator";function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value;}catch(error){reject(error);return;}if(info.done){resolve(value);}else{Promise.resolve(value).then(_next,_throw);}}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value);}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err);}_next(undefined);});};}import*as Sentry from'@sentry/browser';import{getNeedsPaymentForOrder,getDefaultPaymentMethod,getPaymentMethods}from"../selectors/payment";import{getCheckoutOrder}from"../selectors/order";import{initializeCheckout}from"./initializeCheckout";import{fetchCheckoutOrder}from"./fetchCheckoutOrder";import{updateCheckoutOrder}from"./updateCheckoutOrder";import{fetchPaymentMethods}from"./fetchPaymentMethods";import{errorCheckout}from"./errorCheckout";/**
2
2
  * Starts entering the checkout process for the customer.
3
3
  * @returns {Function}
4
- */export var prepareCheckout=function prepareCheckout(_ref){var _ref$initializeOrder=_ref.initializeOrder,initializeOrder=_ref$initializeOrder===void 0?true:_ref$initializeOrder,_ref$initializePaymen=_ref.initializePayment,initializePayment=_ref$initializePaymen===void 0?true:_ref$initializePaymen;return(/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(dispatch,getState){var _order$paymentTransac,_order$paymentTransac2;var defaultPaymentMethod,needsPayment,order,paymentMethods,paymentAlreadyInitialized;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:if(!initializeOrder){_context.next=9;break;}_context.prev=1;_context.next=4;return dispatch(initializeCheckout());case 4:_context.next=9;break;case 6:_context.prev=6;_context.t0=_context["catch"](1);return _context.abrupt("return",dispatch(errorCheckout('checkout.errors.checkCart','shopgate.checkout.initialize',_context.t0)));case 9:_context.next=11;return Promise.all([dispatch(fetchCheckoutOrder()),dispatch(fetchPaymentMethods())]);case 11:// If payment is needed we create a new payment transaction.
4
+ */export var prepareCheckout=function prepareCheckout(_ref){var _ref$initializeOrder=_ref.initializeOrder,initializeOrder=_ref$initializeOrder===void 0?true:_ref$initializeOrder,_ref$initializePaymen=_ref.initializePayment,initializePayment=_ref$initializePaymen===void 0?true:_ref$initializePaymen;return(/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(dispatch,getState){var _order$paymentTransac,_order$paymentTransac2;var defaultPaymentMethod,needsPayment,order,paymentMethods,paymentAlreadyInitialized;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(!initializeOrder){_context.next=9;break;}_context.prev=1;_context.next=4;return dispatch(initializeCheckout());case 4:_context.next=9;break;case 6:_context.prev=6;_context.t0=_context["catch"](1);return _context.abrupt("return",dispatch(errorCheckout('checkout.errors.checkCart','shopgate.checkout.initialize',_context.t0)));case 9:_context.next=11;return Promise.all([dispatch(fetchCheckoutOrder()),dispatch(fetchPaymentMethods())]);case 11:// If payment is needed we create a new payment transaction.
5
5
  needsPayment=getNeedsPaymentForOrder(getState());if(!needsPayment){_context.next=16;break;}// Pick payment method.
6
6
  defaultPaymentMethod=getDefaultPaymentMethod(getState());if(defaultPaymentMethod){_context.next=16;break;}return _context.abrupt("return",dispatch(errorCheckout('checkout.errors.missingPaymentMethod','shopgate.checkout.getPaymentMethods',{message:'No payment method found.'})));case 16:// Test if order is available in store.
7
7
  order=getCheckoutOrder(getState());if(order){_context.next=19;break;}return _context.abrupt("return",dispatch(errorCheckout('checkout.errors.genericInitialize','shopgate.checkout.initialize',{message:'No order received from API'})));case 19:// Put logging info to sentry.
8
- Sentry.configureScope(function(scope){scope.setTag('checkout_order_id',order.id);scope.addBreadcrumb({category:'checkout',message:"Initialize checkout with order id ".concat(order.id),level:'info'});});paymentMethods=getPaymentMethods(getState());paymentAlreadyInitialized=!!(order===null||order===void 0?void 0:(_order$paymentTransac=order.paymentTransactions)===null||_order$paymentTransac===void 0?void 0:(_order$paymentTransac2=_order$paymentTransac[0])===null||_order$paymentTransac2===void 0?void 0:_order$paymentTransac2.paymentMethod);if(!(needsPayment&&initializePayment&&!paymentAlreadyInitialized&&paymentMethods.length===1)){_context.next=33;break;}_context.prev=23;_context.next=26;return dispatch(updateCheckoutOrder({paymentTransactions:[{paymentMethod:{code:defaultPaymentMethod.code}}]}));case 26:_context.next=28;return dispatch(fetchCheckoutOrder());case 28:_context.next=33;break;case 30:_context.prev=30;_context.t1=_context["catch"](23);return _context.abrupt("return",{success:false,needsPayment:false});case 33:return _context.abrupt("return",{needsPayment:needsPayment,success:true});case 34:case"end":return _context.stop();}}},_callee,null,[[1,6],[23,30]]);}));return function(_x,_x2){return _ref2.apply(this,arguments);};}());};
8
+ Sentry.configureScope(function(scope){scope.setTag('checkout_order_id',order.id);scope.addBreadcrumb({category:'checkout',message:"Initialize checkout with order id ".concat(order.id),level:'info'});});paymentMethods=getPaymentMethods(getState());paymentAlreadyInitialized=!!(order===null||order===void 0?void 0:(_order$paymentTransac=order.paymentTransactions)===null||_order$paymentTransac===void 0?void 0:(_order$paymentTransac2=_order$paymentTransac[0])===null||_order$paymentTransac2===void 0?void 0:_order$paymentTransac2.paymentMethod);if(!(needsPayment&&initializePayment&&!paymentAlreadyInitialized&&paymentMethods.length===1)){_context.next=33;break;}_context.prev=23;_context.next=26;return dispatch(updateCheckoutOrder({paymentTransactions:[{paymentMethod:{code:defaultPaymentMethod.code}}]}));case 26:_context.next=28;return dispatch(fetchCheckoutOrder());case 28:_context.next=33;break;case 30:_context.prev=30;_context.t1=_context["catch"](23);return _context.abrupt("return",{success:false,needsPayment:false});case 33:return _context.abrupt("return",{needsPayment:needsPayment,success:true});case 34:case"end":return _context.stop();}},_callee,null,[[1,6],[23,30]]);}));return function(_x,_x2){return _ref2.apply(this,arguments);};}());};
@@ -2,4 +2,4 @@ import _regeneratorRuntime from"@babel/runtime/regenerator";function asyncGenera
2
2
  * Completes the checkout order by fulfilling with checkout params for each transaction.
3
3
  * @param {Object} payload The action input.
4
4
  * @returns {Function}
5
- */export var submitCheckoutOrder=function submitCheckoutOrder(payload){return(/*#__PURE__*/function(){var _ref=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(dispatch){var pipelineError,pipelineOutput;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:LoadingProvider.setLoading(CHECKOUT_PATTERN);dispatch({type:SUBMIT_CHECKOUT_ORDER,payload:payload});_context.prev=2;_context.next=5;return new PipelineRequest('shopgate.checkout.submit').setInput(payload).setErrorBlacklist([ERROR_CODE_CHECKOUT_GENERIC]).dispatch();case 5:pipelineOutput=_context.sent;dispatch({type:SUBMIT_CHECKOUT_ORDER_SUCCESS});_context.next=14;break;case 9:_context.prev=9;_context.t0=_context["catch"](2);pipelineError=_context.t0;dispatch(errorCheckout('checkout.errors.genericSubmit','shopgate.checkout.submit',_context.t0,false,[1001,1003]));dispatch({type:SUBMIT_CHECKOUT_ORDER_ERROR});case 14:LoadingProvider.unsetLoading(CHECKOUT_PATTERN);if(!pipelineError){_context.next=17;break;}throw pipelineError;case 17:return _context.abrupt("return",pipelineOutput);case 18:case"end":return _context.stop();}}},_callee,null,[[2,9]]);}));return function(_x){return _ref.apply(this,arguments);};}());};
5
+ */export var submitCheckoutOrder=function submitCheckoutOrder(payload){return(/*#__PURE__*/function(){var _ref=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(dispatch){var pipelineError,pipelineOutput;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:LoadingProvider.setLoading(CHECKOUT_PATTERN);dispatch({type:SUBMIT_CHECKOUT_ORDER,payload:payload});_context.prev=2;_context.next=5;return new PipelineRequest('shopgate.checkout.submit').setInput(payload).setErrorBlacklist([ERROR_CODE_CHECKOUT_GENERIC]).dispatch();case 5:pipelineOutput=_context.sent;dispatch({type:SUBMIT_CHECKOUT_ORDER_SUCCESS});_context.next=14;break;case 9:_context.prev=9;_context.t0=_context["catch"](2);pipelineError=_context.t0;dispatch(errorCheckout('checkout.errors.genericSubmit','shopgate.checkout.submit',_context.t0,false,[1001,1003]));dispatch({type:SUBMIT_CHECKOUT_ORDER_ERROR});case 14:LoadingProvider.unsetLoading(CHECKOUT_PATTERN);if(!pipelineError){_context.next=17;break;}throw pipelineError;case 17:return _context.abrupt("return",pipelineOutput);case 18:case"end":return _context.stop();}},_callee,null,[[2,9]]);}));return function(_x){return _ref.apply(this,arguments);};}());};
@@ -2,4 +2,4 @@ import _regeneratorRuntime from"@babel/runtime/regenerator";function asyncGenera
2
2
  * Starts entering the checkout process for the customer.
3
3
  * @param {Object} payload Order payload.
4
4
  * @returns {Function}
5
- */export var updateCheckoutOrder=function updateCheckoutOrder(payload){return(/*#__PURE__*/function(){var _ref=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(dispatch){var pipelineError;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:dispatch({type:UPDATE_CHECKOUT_ORDER});_context.prev=1;_context.next=4;return new PipelineRequest('shopgate.checkout.updateOrder').setInput(payload).setErrorBlacklist([ERROR_CODE_CHECKOUT_GENERIC,EVALIDATION]).dispatch();case 4:dispatch({type:UPDATE_CHECKOUT_ORDER_SUCCESS});_context.next=11;break;case 7:_context.prev=7;_context.t0=_context["catch"](1);pipelineError=_context.t0;if(_context.t0.code===EVALIDATION){dispatch(validationErrorsCheckout(_context.t0.errors));}else{dispatch(errorCheckout('checkout.errors.genericUpdate','shopgate.checkout.updateOrder',_context.t0,false));dispatch({type:UPDATE_CHECKOUT_ORDER_ERROR});}case 11:if(!pipelineError){_context.next=13;break;}throw pipelineError;case 13:case"end":return _context.stop();}}},_callee,null,[[1,7]]);}));return function(_x){return _ref.apply(this,arguments);};}());};
5
+ */export var updateCheckoutOrder=function updateCheckoutOrder(payload){return(/*#__PURE__*/function(){var _ref=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(dispatch){var pipelineError;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:dispatch({type:UPDATE_CHECKOUT_ORDER});_context.prev=1;_context.next=4;return new PipelineRequest('shopgate.checkout.updateOrder').setInput(payload).setErrorBlacklist([ERROR_CODE_CHECKOUT_GENERIC,EVALIDATION]).dispatch();case 4:dispatch({type:UPDATE_CHECKOUT_ORDER_SUCCESS});_context.next=11;break;case 7:_context.prev=7;_context.t0=_context["catch"](1);pipelineError=_context.t0;if(_context.t0.code===EVALIDATION){dispatch(validationErrorsCheckout(_context.t0.errors));}else{dispatch(errorCheckout('checkout.errors.genericUpdate','shopgate.checkout.updateOrder',_context.t0,false));dispatch({type:UPDATE_CHECKOUT_ORDER_ERROR});}case 11:if(!pipelineError){_context.next=13;break;}throw pipelineError;case 13:case"end":return _context.stop();}},_callee,null,[[1,7]]);}));return function(_x){return _ref.apply(this,arguments);};}());};
@@ -1,4 +1,4 @@
1
1
  function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import React from'react';import PropTypes from'prop-types';import classNames from'classnames';import{css}from'glamor';import{errorBehavior}from'@shopgate/engage/core';import{themeConfig}from'@shopgate/pwa-common/helpers/config';var variables=themeConfig.variables;var styles={wrapper:css({paddingTop:variables.gap.xsmall}).toString(),message:css({fontSize:' 0.75rem'}).toString(),error:css({color:'var(--color-state-alert)'}).toString(),warning:css({color:'var(--color-state-warning)'}).toString(),info:css({color:'var(--color-state-ok)'}).toString()};/**
2
2
  * @param {Object} props The component props
3
3
  * @returns {JSX}
4
- */var CheckoutSectionMessages=function CheckoutSectionMessages(_ref){var messages=_ref.messages;if(!Array.isArray(messages)||messages.length===0){return null;}return React.createElement("ul",{className:styles.wrapper},messages.map(function(_ref2){var _classNames;var message=_ref2.message,additionalParams=_ref2.additionalParams,type=_ref2.type;return React.createElement("li",{key:message,className:classNames(styles.message,(_classNames={},_defineProperty(_classNames,styles.error,type==='error'),_defineProperty(_classNames,styles.warning,type==='warning'),_defineProperty(_classNames,styles.info,type==='info'),_classNames))},errorBehavior.getErrorMessage(message,additionalParams));}));};CheckoutSectionMessages.defaultProps={messages:null};export default CheckoutSectionMessages;
4
+ */var CheckoutSectionMessages=function CheckoutSectionMessages(_ref){var messages=_ref.messages;if(!Array.isArray(messages)||messages.length===0){return null;}return React.createElement("ul",{className:styles.wrapper},messages.map(function(_ref2){var message=_ref2.message,additionalParams=_ref2.additionalParams,type=_ref2.type;return React.createElement("li",{key:message,className:classNames(styles.message,_defineProperty(_defineProperty(_defineProperty({},styles.error,type==='error'),styles.warning,type==='warning'),styles.info,type==='info'))},errorBehavior.getErrorMessage(message,additionalParams));}));};CheckoutSectionMessages.defaultProps={messages:null};export default CheckoutSectionMessages;
@@ -3,5 +3,5 @@ import _regeneratorRuntime from"@babel/runtime/regenerator";function asyncGenera
3
3
  * @returns {JSX}
4
4
  */var CheckoutConfirmation=function CheckoutConfirmation(_ref){var onContinueShopping=_ref.onContinueShopping,isUserLoggedIn=_ref.isUserLoggedIn,fetchCheckoutOrder=_ref.fetchCheckoutOrder;var _useRoute=useRoute(),order=_useRoute.state.order,query=_useRoute.query;var _useState=useState(null),_useState2=_slicedToArray(_useState,2),orderData=_useState2[0],setOrderData=_useState2[1];// Finding the source of order data.
5
5
  // Either from the route state or from a pipeline request.
6
- useEffect(function(){/** */var handleFetch=/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var data;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:_context.next=2;return fetchCheckoutOrder();case 2:data=_context.sent;setOrderData(data);case 4:case"end":return _context.stop();}}},_callee);}));return function handleFetch(){return _ref2.apply(this,arguments);};}();if(!order){handleFetch();return;}setOrderData(order);},[fetchCheckoutOrder,order,query]);// Map order data to more UI friendly format.
6
+ useEffect(function(){/** */var handleFetch=/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var data;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.next=2;return fetchCheckoutOrder();case 2:data=_context.sent;setOrderData(data);case 4:case"end":return _context.stop();}},_callee);}));return function handleFetch(){return _ref2.apply(this,arguments);};}();if(!order){handleFetch();return;}setOrderData(order);},[fetchCheckoutOrder,order,query]);// Map order data to more UI friendly format.
7
7
  var _useMemo=useMemo(function(){if(!orderData){return{};}return{orderNumber:orderData.orderNumber,date:orderData.date,cartItems:convertLineItemsToCartItems(orderData.lineItems),isReserveOnly:isReserveOnlyOrder(orderData),isDirectShipOnly:isDirectShipOnlyOrder(orderData),currencyOverride:orderData.currencyCode};},[orderData]),orderNumber=_useMemo.orderNumber,date=_useMemo.date,cartItems=_useMemo.cartItems,isReserveOnly=_useMemo.isReserveOnly,isDirectShipOnly=_useMemo.isDirectShipOnly,currencyOverride=_useMemo.currencyOverride;if(!orderData||!cartItems){return null;}return React.createElement("div",{className:style.root},React.createElement("div",{className:style.main},React.createElement("div",{className:style.backButtonContainer},React.createElement(ResponsiveBackButton,{label:"checkout.success.continue",onClick:onContinueShopping})),React.createElement("div",{className:style.container},React.createElement("h2",{className:style.heading},i18n.text('checkout.success.title')),React.createElement("p",{className:style.orderNum},i18n.text('checkout.success.order_date',{date:i18n.date(new Date(date).getTime(),'short')}),' | ',i18n.text('checkout.success.order_number',{orderNumber:orderNumber})),React.createElement("div",{className:style.instructions},React.createElement("p",{className:style.body},i18n.text('checkout.success.instructions_1')),React.createElement("p",{className:style.body},i18n.text('checkout.success.instructions_2')))),React.createElement("div",{className:style.cartItems},React.createElement(CartItems,{cartItems:cartItems,onFocus:function onFocus(){},multiLineReservation:true,editable:false,isCheckoutConfirmation:true,isDirectShipOnly:isDirectShipOnly,currencyOverride:currencyOverride})),React.createElement(ResponsiveContainer,{breakpoint:"<md",appAlways:true},React.createElement(CheckoutConfirmationPickUpContact,{order:orderData}),React.createElement(CheckoutConfirmationPickupNotes,{order:orderData}),React.createElement(CheckoutConfirmationShippedTo,{order:orderData}),!isUserLoggedIn&&isReserveOnly?React.createElement(CheckoutConfirmationOrderContact,{order:orderData}):React.createElement(CheckoutConfirmationBilledTo,{order:orderData}),React.createElement(CheckoutConfirmationOrderSummary,{order:orderData}),React.createElement(SupplementalContent,{className:style.supplementalWrapper})),React.createElement("div",{className:style.buttonWrapper},React.createElement(RippleButton,{type:"secondary",disabled:false,className:style.button.toString(),onClick:onContinueShopping},i18n.text('checkout.success.continue')))),React.createElement("div",{className:style.side},React.createElement(ResponsiveContainer,{breakpoint:">=md",webOnly:true},React.createElement(CheckoutConfirmationPickUpContact,{order:orderData}),React.createElement(CheckoutConfirmationPickupNotes,{order:orderData}),React.createElement(CheckoutConfirmationShippedTo,{order:orderData}),!isUserLoggedIn&&isReserveOnly?React.createElement(CheckoutConfirmationOrderContact,{order:orderData}):React.createElement(CheckoutConfirmationBilledTo,{order:orderData}),React.createElement(CheckoutConfirmationOrderSummary,{order:orderData}),React.createElement(SupplementalContent,{className:style.supplementalWrapper}))));};export default hot(connect(CheckoutConfirmation));
@@ -1,4 +1,4 @@
1
1
  function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}import React,{useMemo}from'react';import PropTypes from'prop-types';import startCase from'lodash/startCase';import{i18n}from"../../../core/helpers/i18n";import CheckoutConfirmationSection from"./CheckoutConfirmationSection";/**
2
2
  * CheckoutConfirmationBilledTo component
3
3
  * @returns {JSX}
4
- */var CheckoutConfirmationBilledTo=function CheckoutConfirmationBilledTo(_ref){var order=_ref.order,className=_ref.className;var content=useMemo(function(){var billing=order.addressSequences.find(function(address){return address.type==='billing';});var firstName=billing.firstName,lastName=billing.lastName,address1=billing.address1,city=billing.city,region=billing.region,postalCode=billing.postalCode;var _ref2=order.paymentTransactions||[{}],_ref3=_slicedToArray(_ref2,1),_ref3$=_ref3[0],payment=_ref3$===void 0?{}:_ref3$;var _payment$paymentInfo=payment.paymentInfo;_payment$paymentInfo=_payment$paymentInfo===void 0?{}:_payment$paymentInfo;var _payment$paymentInfo$=_payment$paymentInfo.card;_payment$paymentInfo$=_payment$paymentInfo$===void 0?{}:_payment$paymentInfo$;var type=_payment$paymentInfo$.type,last4=_payment$paymentInfo$.last4,paymentType=_payment$paymentInfo.type;var hasPayment=order.paymentTransactions&&order.paymentTransactions[0];var address=["".concat(firstName," ").concat(lastName),"".concat(address1||''),"".concat(city?"".concat(city,","):''," ").concat(city&&region?region:''," ").concat(postalCode||'')].filter(Boolean).join('\n');return[].concat(hasPayment&&paymentType==='cc'?[{label:i18n.text('checkout.success.card_holder'),text:address}]:[{label:i18n.text('checkout.success.address'),text:address}],hasPayment&&paymentType==='cc'?[{label:i18n.text('checkout.success.payment_method'),text:"".concat(startCase(type)," **** **** ").concat(last4)}]:[],hasPayment&&paymentType==='paypal'?[{label:i18n.text('checkout.success.payment_method'),text:'PayPal'}]:[]);},[order]);return React.createElement(CheckoutConfirmationSection,{title:"checkout.success.billed_to",content:content,className:className});};CheckoutConfirmationBilledTo.defaultProps={className:null};export default CheckoutConfirmationBilledTo;
4
+ */var CheckoutConfirmationBilledTo=function CheckoutConfirmationBilledTo(_ref){var order=_ref.order,className=_ref.className;var content=useMemo(function(){var billing=order.addressSequences.find(function(address){return address.type==='billing';});var firstName=billing.firstName,lastName=billing.lastName,address1=billing.address1,city=billing.city,region=billing.region,postalCode=billing.postalCode;var _ref2=order.paymentTransactions||[{}],_ref3=_slicedToArray(_ref2,1),_ref3$=_ref3[0],payment=_ref3$===void 0?{}:_ref3$;var _payment$paymentInfo=payment.paymentInfo,_payment$paymentInfo2=_payment$paymentInfo===void 0?{}:_payment$paymentInfo,_payment$paymentInfo3=_payment$paymentInfo2.card,_payment$paymentInfo4=_payment$paymentInfo3===void 0?{}:_payment$paymentInfo3,type=_payment$paymentInfo4.type,last4=_payment$paymentInfo4.last4,paymentType=_payment$paymentInfo2.type;var hasPayment=order.paymentTransactions&&order.paymentTransactions[0];var address=["".concat(firstName," ").concat(lastName),"".concat(address1||''),"".concat(city?"".concat(city,","):''," ").concat(city&&region?region:''," ").concat(postalCode||'')].filter(Boolean).join('\n');return[].concat(hasPayment&&paymentType==='cc'?[{label:i18n.text('checkout.success.card_holder'),text:address}]:[{label:i18n.text('checkout.success.address'),text:address}],hasPayment&&paymentType==='cc'?[{label:i18n.text('checkout.success.payment_method'),text:"".concat(startCase(type)," **** **** ").concat(last4)}]:[],hasPayment&&paymentType==='paypal'?[{label:i18n.text('checkout.success.payment_method'),text:'PayPal'}]:[]);},[order]);return React.createElement(CheckoutConfirmationSection,{title:"checkout.success.billed_to",content:content,className:className});};CheckoutConfirmationBilledTo.defaultProps={className:null};export default CheckoutConfirmationBilledTo;
@@ -1,4 +1,4 @@
1
- var _css;function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import React from'react';import PropTypes from'prop-types';import{responsiveMediaQuery}from'@shopgate/engage/styles';import{css}from'glamor';import{useCheckoutContext}from"../../hooks/common";var styles={root:css((_css={outline:'none',border:'1px solid rgba(0, 0, 0, 0.12)',borderRadius:4,background:'#fff',height:52,width:160,display:'flex',flexDirection:'row',justifyContent:'center',alignItems:'center'},_defineProperty(_css,responsiveMediaQuery('xs'),{width:'50%'}),_defineProperty(_css,'&:not(:last-child)',{borderTopRightRadius:0,borderBottomRightRadius:0}),_defineProperty(_css,'&:not(:first-child)',{borderLeft:'none',borderTopLeftRadius:0,borderBottomLeftRadius:0}),_defineProperty(_css,'&:hover',{background:'rgba(0, 0, 0, 0.05)'}),_css)).toString(),active:css({background:'rgba(0, 0, 0, 0.12)','&:hover':{background:'rgba(0, 0, 0, 0.12)'}}).toString()};/**
1
+ function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import React from'react';import PropTypes from'prop-types';import{responsiveMediaQuery}from'@shopgate/engage/styles';import{css}from'glamor';import{useCheckoutContext}from"../../hooks/common";var styles={root:css(_defineProperty(_defineProperty(_defineProperty(_defineProperty({outline:'none',border:'1px solid rgba(0, 0, 0, 0.12)',borderRadius:4,background:'#fff',height:52,width:160,display:'flex',flexDirection:'row',justifyContent:'center',alignItems:'center'},responsiveMediaQuery('xs'),{width:'50%'}),'&:not(:last-child)',{borderTopRightRadius:0,borderBottomRightRadius:0}),'&:not(:first-child)',{borderLeft:'none',borderTopLeftRadius:0,borderBottomLeftRadius:0}),'&:hover',{background:'rgba(0, 0, 0, 0.05)'})).toString(),active:css({background:'rgba(0, 0, 0, 0.12)','&:hover':{background:'rgba(0, 0, 0, 0.12)'}}).toString()};/**
2
2
  * Payment Button
3
3
  * @param {Object} props Props
4
4
  * @returns {JSX}
@@ -1,4 +1,4 @@
1
- import _regeneratorRuntime from"@babel/runtime/regenerator";function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value;}catch(error){reject(error);return;}if(info.done){resolve(value);}else{Promise.resolve(value).then(_next,_throw);}}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value);}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err);}_next(undefined);});};}function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key];}}return target;}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key];}return target;}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}import{hot}from'react-hot-loader/root';import React,{useCallback,useEffect,useMemo,useState}from'react';import PropTypes from'prop-types';import{css}from'glamor';import classNames from'classnames';import CryptoJs from'crypto-js';import sortBy from'lodash/sortBy';import uniqBy from'lodash/uniqBy';import{themeConfig}from'@shopgate/pwa-common/helpers/config';import{i18n}from'@shopgate/engage/core';import{RadioGroupV2 as RadioGroup,RadioCard,MessageBar}from'@shopgate/engage/components';import{useCheckoutContext}from'@shopgate/engage/checkout/hooks/common';import ShippingMethod from"./ShippingMethod";import connect from"./connector";var variables=themeConfig.variables;var styles={root:css({padding:"0 ".concat(variables.gap.big,"px ").concat(variables.gap.xbig,"px")}).toString(),headline:css({fontSize:'1.25rem',fontWeight:'normal',padding:"0 ".concat(variables.gap.small,"px 0 0"),margin:"0 0 ".concat(variables.gap.small,"px 0"),color:'var(--color-text-high-emphasis)',textTransform:'none'}).toString(),container:css({border:'1px solid #eaeaea',' li:nth-child(2n)':{background:'var(--color-background-accent)'}}).toString(),containerSingle:css({padding:variables.gap.small}).toString(),card:css({display:'flex',alignItems:'center'}).toString(),errorMessage:css({margin:0}).toString(),iOSCard:css({width:'100%',overflow:'hidden',marginBottom:variables.gap.big}).toString()};/**
1
+ import _regeneratorRuntime from"@babel/runtime/regenerator";var _excluded=["serviceLevels"];function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value;}catch(error){reject(error);return;}if(info.done){resolve(value);}else{Promise.resolve(value).then(_next,_throw);}}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value);}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err);}_next(undefined);});};}function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key];}}return target;}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key];}return target;}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}import{hot}from'react-hot-loader/root';import React,{useCallback,useEffect,useMemo,useState}from'react';import PropTypes from'prop-types';import{css}from'glamor';import classNames from'classnames';import CryptoJs from'crypto-js';import sortBy from'lodash/sortBy';import uniqBy from'lodash/uniqBy';import{themeConfig}from'@shopgate/pwa-common/helpers/config';import{i18n}from'@shopgate/engage/core';import{RadioGroupV2 as RadioGroup,RadioCard,MessageBar}from'@shopgate/engage/components';import{useCheckoutContext}from'@shopgate/engage/checkout/hooks/common';import ShippingMethod from"./ShippingMethod";import connect from"./connector";var variables=themeConfig.variables;var styles={root:css({padding:"0 ".concat(variables.gap.big,"px ").concat(variables.gap.xbig,"px")}).toString(),headline:css({fontSize:'1.25rem',fontWeight:'normal',padding:"0 ".concat(variables.gap.small,"px 0 0"),margin:"0 0 ".concat(variables.gap.small,"px 0"),color:'var(--color-text-high-emphasis)',textTransform:'none'}).toString(),container:css({border:'1px solid #eaeaea',' li:nth-child(2n)':{background:'var(--color-background-accent)'}}).toString(),containerSingle:css({padding:variables.gap.small}).toString(),card:css({display:'flex',alignItems:'center'}).toString(),errorMessage:css({margin:0}).toString(),iOSCard:css({width:'100%',overflow:'hidden',marginBottom:variables.gap.big}).toString()};/**
2
2
  * Hashes a shipping method
3
3
  * @param {Object} method A shipping method
4
4
  * @returns {string}
@@ -15,9 +15,9 @@ setSelectedHash(hashShippingMethod(selectedShippingMethod));},[selectedShippingM
15
15
  * data handling, we transform the original data structure to the shape which is required for
16
16
  * the update request.
17
17
  */var shippingMethods=useMemo(function(){// Flat map all service levels of all shipping methods and aggregate with parent (method) data.
18
- var unsortedLevels=availableShippingMethods.flatMap(function(method){var serviceLevels=method.serviceLevels,methodData=_objectWithoutProperties(method,["serviceLevels"]);return serviceLevels.map(function(serviceLevel){var entry=_extends({},methodData,{serviceLevel:serviceLevel});var hash=hashShippingMethod(entry);return _extends({},entry,{hash:hash});});});// Remove duplicated shipping levels that originated from different shipping methods.
18
+ var unsortedLevels=availableShippingMethods.flatMap(function(method){var serviceLevels=method.serviceLevels,methodData=_objectWithoutProperties(method,_excluded);return serviceLevels.map(function(serviceLevel){var entry=_extends({},methodData,{serviceLevel:serviceLevel});var hash=hashShippingMethod(entry);return _extends({},entry,{hash:hash});});});// Remove duplicated shipping levels that originated from different shipping methods.
19
19
  var dedupedLevels=uniqBy(unsortedLevels,function(_ref4){var _serviceLevel$carrier;var serviceLevel=_ref4.serviceLevel;return"".concat(serviceLevel.code,"#").concat((_serviceLevel$carrier=serviceLevel.carrier)===null||_serviceLevel$carrier===void 0?void 0:_serviceLevel$carrier.code);});// Show cheapest service level first followed by alphabetic name.
20
- return sortBy(dedupedLevels,['serviceLevel.cost','serviceLevel.name']);},[availableShippingMethods]);var onChange=useCallback(/*#__PURE__*/function(){var _ref5=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(event,value){var _shippingMethod$servi,_shippingMethod$servi2,_shippingMethod$servi3;var shippingMethod;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:// Determine the selected shipping method by its hash
20
+ return sortBy(dedupedLevels,['serviceLevel.cost','serviceLevel.name']);},[availableShippingMethods]);var onChange=useCallback(/*#__PURE__*/function(){var _ref5=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(event,value){var _shippingMethod$servi,_shippingMethod$servi2,_shippingMethod$servi3;var shippingMethod;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:// Determine the selected shipping method by its hash
21
21
  shippingMethod=shippingMethods.find(function(_ref6){var hash=_ref6.hash;return value===hash;});if(shippingMethod){_context.next=3;break;}return _context.abrupt("return");case 3:// Update the local state
22
22
  setSelectedHash(shippingMethod===null||shippingMethod===void 0?void 0:shippingMethod.hash);// Perform the update request
23
- _context.next=6;return updateShippingMethod({code:shippingMethod===null||shippingMethod===void 0?void 0:shippingMethod.code,serviceLevel:{code:shippingMethod===null||shippingMethod===void 0?void 0:(_shippingMethod$servi=shippingMethod.serviceLevel)===null||_shippingMethod$servi===void 0?void 0:_shippingMethod$servi.code,carrier:{code:shippingMethod===null||shippingMethod===void 0?void 0:(_shippingMethod$servi2=shippingMethod.serviceLevel)===null||_shippingMethod$servi2===void 0?void 0:(_shippingMethod$servi3=_shippingMethod$servi2.carrier)===null||_shippingMethod$servi3===void 0?void 0:_shippingMethod$servi3.code}}});case 6:case"end":return _context.stop();}}},_callee);}));return function(_x,_x2){return _ref5.apply(this,arguments);};}(),[shippingMethods,updateShippingMethod]);if((order===null||order===void 0?void 0:order.status)!=='new'||!orderHasDirectShipItems){return null;}if(shippingMethods.length===0){return React.createElement("div",{className:styles.root},React.createElement("h3",{className:styles.headline},i18n.text('checkout.shippingMethod.title')),React.createElement(MessageBar,{messages:[{type:'error',message:i18n.text("checkout.shippingMethod.errors.".concat(!shippingAddress?'noShippingAddress':'invalidShippingAddress'))}],classNames:{container:styles.errorMessage},showIcons:true}));}return React.createElement("div",{className:styles.root},React.createElement("h3",{className:styles.headline},i18n.text('checkout.shippingMethod.title')),shippingMethods.length===1?React.createElement("div",{className:classNames(styles.container,styles.containerSingle)},React.createElement(ShippingMethod,{shippingMethod:shippingMethods[0]})):React.createElement(RadioGroup,{name:"shipping-methods",value:selectedHash,onChange:onChange,component:"ul",classes:{root:styles.container},disabled:isLoading},shippingMethods.map(function(shippingMethod){return React.createElement(RadioCard,{renderCard:CardComponent,value:shippingMethod.hash,key:shippingMethod.hash},React.createElement(ShippingMethod,{shippingMethod:shippingMethod}));})));};ShippingMethods.defaultProps={orderHasDirectShipItems:false};export default hot(connect(ShippingMethods));
23
+ _context.next=6;return updateShippingMethod({code:shippingMethod===null||shippingMethod===void 0?void 0:shippingMethod.code,serviceLevel:{code:shippingMethod===null||shippingMethod===void 0?void 0:(_shippingMethod$servi=shippingMethod.serviceLevel)===null||_shippingMethod$servi===void 0?void 0:_shippingMethod$servi.code,carrier:{code:shippingMethod===null||shippingMethod===void 0?void 0:(_shippingMethod$servi2=shippingMethod.serviceLevel)===null||_shippingMethod$servi2===void 0?void 0:(_shippingMethod$servi3=_shippingMethod$servi2.carrier)===null||_shippingMethod$servi3===void 0?void 0:_shippingMethod$servi3.code}}});case 6:case"end":return _context.stop();}},_callee);}));return function(_x,_x2){return _ref5.apply(this,arguments);};}(),[shippingMethods,updateShippingMethod]);if((order===null||order===void 0?void 0:order.status)!=='new'||!orderHasDirectShipItems){return null;}if(shippingMethods.length===0){return React.createElement("div",{className:styles.root},React.createElement("h3",{className:styles.headline},i18n.text('checkout.shippingMethod.title')),React.createElement(MessageBar,{messages:[{type:'error',message:i18n.text("checkout.shippingMethod.errors.".concat(!shippingAddress?'noShippingAddress':'invalidShippingAddress'))}],classNames:{container:styles.errorMessage},showIcons:true}));}return React.createElement("div",{className:styles.root},React.createElement("h3",{className:styles.headline},i18n.text('checkout.shippingMethod.title')),shippingMethods.length===1?React.createElement("div",{className:classNames(styles.container,styles.containerSingle)},React.createElement(ShippingMethod,{shippingMethod:shippingMethods[0]})):React.createElement(RadioGroup,{name:"shipping-methods",value:selectedHash,onChange:onChange,component:"ul",classes:{root:styles.container},disabled:isLoading},shippingMethods.map(function(shippingMethod){return React.createElement(RadioCard,{renderCard:CardComponent,value:shippingMethod.hash,key:shippingMethod.hash},React.createElement(ShippingMethod,{shippingMethod:shippingMethod}));})));};ShippingMethods.defaultProps={orderHasDirectShipItems:false};export default hot(connect(ShippingMethods));
@@ -13,9 +13,9 @@ import _regeneratorRuntime from"@babel/runtime/regenerator";function _extends(){
13
13
  */var PaymentMethodProvider=function PaymentMethodProvider(_ref){var order=_ref.order,paymentMethods=_ref.paymentMethods,fetchOrder=_ref.fetchOrder,updateOrder=_ref.updateOrder;var _useState=useState(null),_useState2=_slicedToArray(_useState,2),activePaymentMeta=_useState2[0],setActivePaymentMeta=_useState2[1];var _useContext=useContext(CheckoutContext),setPaymentHandler=_useContext.setPaymentHandler,setPaymentData=_useContext.setPaymentData,needsPayment=_useContext.needsPayment,setButtonLocked=_useContext.setButtonLocked,setLocked=_useContext.setLocked;var paymentMethodRef=useRef();// Set active payment method to the orders first transaction.
14
14
  var paymentMethodCode=useMemo(function(){var _order$paymentTransac;var transaction=(_order$paymentTransac=order.paymentTransactions)===null||_order$paymentTransac===void 0?void 0:_order$paymentTransac[0];if(!transaction)return null;return transaction.paymentMethod.code;},[order]);var paymentData=useMemo(function(){return paymentMethods===null||paymentMethods===void 0?void 0:paymentMethods.find(function(p){return p.code===paymentMethodCode;});},[paymentMethodCode,paymentMethods]);var paymentImpl=useMemo(function(){return AVAILABLE_PAYMENT_METHOD.find(function(method){var _paymentData$paymentP;return method.code===(paymentData===null||paymentData===void 0?void 0:(_paymentData$paymentP=paymentData.paymentProvider)===null||_paymentData$paymentP===void 0?void 0:_paymentData$paymentP.code);});},[paymentData]);// Global transaction handler
15
15
  // Currently simply redirect fulfill request to the active payment method.
16
- useEffect(function(){setPaymentHandler({getSupportsRedirect:(paymentImpl===null||paymentImpl===void 0?void 0:paymentImpl.getSupportsRedirect)||function(){return true;},getCustomPayButton:function getCustomPayButton(){return paymentImpl===null||paymentImpl===void 0?void 0:paymentImpl.payButton;},fulfillTransaction:function(){var _fulfillTransaction=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref2){var paymentTransactions,resolved;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:paymentTransactions=_ref2.paymentTransactions;_context.next=3;return paymentMethodRef.current.fulfillTransaction({paymentTransactions:paymentTransactions});case 3:resolved=_context.sent;return _context.abrupt("return",resolved);case 5:case"end":return _context.stop();}}},_callee);}));function fulfillTransaction(_x){return _fulfillTransaction.apply(this,arguments);}return fulfillTransaction;}()});},[paymentImpl,setButtonLocked,setPaymentHandler]);// Map configured payment methods
16
+ useEffect(function(){setPaymentHandler({getSupportsRedirect:(paymentImpl===null||paymentImpl===void 0?void 0:paymentImpl.getSupportsRedirect)||function(){return true;},getCustomPayButton:function getCustomPayButton(){return paymentImpl===null||paymentImpl===void 0?void 0:paymentImpl.payButton;},fulfillTransaction:function(){var _fulfillTransaction=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref2){var paymentTransactions,resolved;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:paymentTransactions=_ref2.paymentTransactions;_context.next=3;return paymentMethodRef.current.fulfillTransaction({paymentTransactions:paymentTransactions});case 3:resolved=_context.sent;return _context.abrupt("return",resolved);case 5:case"end":return _context.stop();}},_callee);}));function fulfillTransaction(_x){return _fulfillTransaction.apply(this,arguments);}return fulfillTransaction;}()});},[paymentImpl,setButtonLocked,setPaymentHandler]);// Map configured payment methods
17
17
  var availablePaymentMethods=useMemo(function(){return paymentMethods.map(function(method){return _extends({},AVAILABLE_PAYMENT_METHOD.find(function(m){return m.code===method.paymentProvider.code;}),{internalCode:method.code,settings:method.settings});});},[paymentMethods]);// Change payment method.
18
- var handleChangePayment=useCallback(/*#__PURE__*/function(){var _ref3=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(code){var meta,_args2=arguments;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:meta=_args2.length>1&&_args2[1]!==undefined?_args2[1]:null;if(!(paymentMethodCode===code)){_context2.next=5;break;}setActivePaymentMeta(meta);setPaymentData({meta:meta});return _context2.abrupt("return");case 5:setLocked(true);_context2.next=8;return updateOrder({paymentTransactions:[{paymentMethod:{code:code}}]});case 8:_context2.next=10;return fetchOrder();case 10:setActivePaymentMeta(meta);setPaymentData({meta:meta});setLocked(false);case 13:case"end":return _context2.stop();}}},_callee2);}));return function(_x2){return _ref3.apply(this,arguments);};}(),[setPaymentData,paymentMethodCode,setLocked,updateOrder,fetchOrder]);// API for the underlying payment methods.
18
+ var handleChangePayment=useCallback(/*#__PURE__*/function(){var _ref3=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(code){var meta,_args2=arguments;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:meta=_args2.length>1&&_args2[1]!==undefined?_args2[1]:null;if(!(paymentMethodCode===code)){_context2.next=5;break;}setActivePaymentMeta(meta);setPaymentData({meta:meta});return _context2.abrupt("return");case 5:setLocked(true);_context2.next=8;return updateOrder({paymentTransactions:[{paymentMethod:{code:code}}]});case 8:_context2.next=10;return fetchOrder();case 10:setActivePaymentMeta(meta);setPaymentData({meta:meta});setLocked(false);case 13:case"end":return _context2.stop();}},_callee2);}));return function(_x2){return _ref3.apply(this,arguments);};}(),[setPaymentData,paymentMethodCode,setLocked,updateOrder,fetchOrder]);// API for the underlying payment methods.
19
19
  var paymentMethodApi=useMemo(function(){return{registerPaymentMethod:function registerPaymentMethod(api){setButtonLocked(false);paymentMethodRef.current=api;}};},[setButtonLocked]);// Ignore for ROPIS.
20
20
  if(!needsPayment){return null;}// Render the respective payment method provider.
21
21
  var _ref4=paymentImpl||{},Provider=_ref4.provider,Content=_ref4.content;return React.createElement(Context.Provider,{value:paymentMethodApi},React.createElement("div",{className:styles.section},React.createElement("h3",{className:styles.headline},i18n.text('checkout.payment.title')),React.createElement("div",{className:styles.buttons},availablePaymentMethods.map(function(method){return React.createElement(method.button,{key:method.internalCode,settings:method.settings,onChange:function onChange(meta){return handleChangePayment(method.internalCode,meta);},active:method.internalCode===paymentMethodCode,activePaymentMeta:activePaymentMeta});})),paymentImpl?React.createElement(Provider,{context:Context,data:paymentData,activePaymentMeta:activePaymentMeta},React.createElement(Content,null)):null));};PaymentMethodProvider.defaultProps={order:null,paymentMethods:null};export default connect(mapStateToProps,mapDispatchToProps)(PaymentMethodProvider);
@@ -1,4 +1,4 @@
1
1
  import _regeneratorRuntime from"@babel/runtime/regenerator";function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value;}catch(error){reject(error);return;}if(info.done){resolve(value);}else{Promise.resolve(value).then(_next,_throw);}}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value);}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err);}_next(undefined);});};}import React,{useEffect}from'react';import{css}from'glamor';import PropTypes from'prop-types';import{PayPalRiskCheck}from'@shopgate/native-modules';import{useCheckoutContext}from"../../hooks/common";import Button from"../../components/PaymentMethodButton";import paypalLogoUrl from"./paypal_logo.png";var styles={logo:css({width:'60%'}).toString()};/**
2
2
  * @param {Object} props The component props
3
3
  * @returns {JSX}
4
- */var PaypalButtonApp=function PaypalButtonApp(props){var settings=props.settings;var _useCheckoutContext=useCheckoutContext(),setLocked=_useCheckoutContext.setLocked;useEffect(function(){if(!settings)return;/** Async handler */var handler=/*#__PURE__*/function(){var _ref=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:if(!(PayPalRiskCheck===null||PayPalRiskCheck===void 0?void 0:PayPalRiskCheck.setup)){_context.next=10;break;}setLocked(true);_context.prev=2;_context.next=5;return PayPalRiskCheck.setup(settings.env==='sandbox');case 5:_context.next=9;break;case 7:_context.prev=7;_context.t0=_context["catch"](2);case 9:setLocked(false);case 10:case"end":return _context.stop();}}},_callee,null,[[2,7]]);}));return function handler(){return _ref.apply(this,arguments);};}();handler();},[setLocked,settings]);return React.createElement(Button,props,React.createElement("img",{className:styles.logo,src:paypalLogoUrl,alt:"PayPal"}));};PaypalButtonApp.defaultProps={settings:null};export default PaypalButtonApp;
4
+ */var PaypalButtonApp=function PaypalButtonApp(props){var settings=props.settings;var _useCheckoutContext=useCheckoutContext(),setLocked=_useCheckoutContext.setLocked;useEffect(function(){if(!settings)return;/** Async handler */var handler=/*#__PURE__*/function(){var _ref=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(!(PayPalRiskCheck===null||PayPalRiskCheck===void 0?void 0:PayPalRiskCheck.setup)){_context.next=10;break;}setLocked(true);_context.prev=2;_context.next=5;return PayPalRiskCheck.setup(settings.env==='sandbox');case 5:_context.next=9;break;case 7:_context.prev=7;_context.t0=_context["catch"](2);case 9:setLocked(false);case 10:case"end":return _context.stop();}},_callee,null,[[2,7]]);}));return function handler(){return _ref.apply(this,arguments);};}();handler();},[setLocked,settings]);return React.createElement(Button,props,React.createElement("img",{className:styles.logo,src:paypalLogoUrl,alt:"PayPal"}));};PaypalButtonApp.defaultProps={settings:null};export default PaypalButtonApp;
@@ -3,6 +3,6 @@ import _regeneratorRuntime from"@babel/runtime/regenerator";function _slicedToAr
3
3
  * @param {Object} props Props
4
4
  * @returns {JSX}
5
5
  */var PaypalButton=function PaypalButton(_ref){var settings=_ref.settings,_onChange=_ref.onChange,activeFundingSource=_ref.activePaymentMeta,active=_ref.active;var _useCheckoutContext=useCheckoutContext(),setLocked=_useCheckoutContext.setLocked,order=_useCheckoutContext.order;var paypal=usePaypal();// Initialize paypal sdk.
6
- useEffect(function(){if(!settings||!order)return;/** Async handler */var handler=/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:setLocked(true);_context.prev=1;_context.next=4;return loadWebSdk(settings,order);case 4:_context.next=8;break;case 6:_context.prev=6;_context.t0=_context["catch"](1);case 8:setLocked(false);case 9:case"end":return _context.stop();}}},_callee,null,[[1,6]]);}));return function handler(){return _ref2.apply(this,arguments);};}();handler();},[order,setLocked,settings]);// Create paypal markers (just logic-less logos for each payment method).
6
+ useEffect(function(){if(!settings||!order)return;/** Async handler */var handler=/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:setLocked(true);_context.prev=1;_context.next=4;return loadWebSdk(settings,order);case 4:_context.next=8;break;case 6:_context.prev=6;_context.t0=_context["catch"](1);case 8:setLocked(false);case 9:case"end":return _context.stop();}},_callee,null,[[1,6]]);}));return function handler(){return _ref2.apply(this,arguments);};}();handler();},[order,setLocked,settings]);// Create paypal markers (just logic-less logos for each payment method).
7
7
  var marks=useMemo(function(){if(!paypal)return[];return paypal.getFundingSources().map(function(fundingSource){var mark=window.paypal.Marks({fundingSource:fundingSource});if(!mark.isEligible())return null;return[mark,fundingSource];}).filter(function(m){return!!m;});},[paypal]);// Render marks to dom once ready.
8
8
  useLayoutEffect(function(){requestAnimationFrame(function(){marks.forEach(function(_ref3,index){var _ref4=_slicedToArray(_ref3,1),mark=_ref4[0];mark.render("#sg-paypal-button-".concat(index));});},[]);},[marks]);return React.createElement(Fragment,null,marks.map(function(_ref5,index){var _ref6=_slicedToArray(_ref5,2),fundingSource=_ref6[1];var isButtonActive=fundingSource===paypal.FUNDING.PAYPAL&&!activeFundingSource?active:active&&fundingSource===activeFundingSource;return React.createElement(Button,{key:fundingSource,onChange:function onChange(){return _onChange(fundingSource);},active:isButtonActive},React.createElement("div",{id:"sg-paypal-button-".concat(index),className:styles.button}));}));};PaypalButton.defaultProps={settings:null,activePaymentMeta:null};export default PaypalButton;
@@ -8,5 +8,5 @@ import _regeneratorRuntime from"@babel/runtime/regenerator";function _extends(){
8
8
  var formActions=useRef({});useEffect(function(){formActions.current={onSubmit:onSubmit,onValidate:onValidate};},[onSubmit,onValidate]);// Trigger rendering the paypal button whenever a property changes.
9
9
  useLayoutEffect(function(){if(!paypal)return;if(_typeof(fundingSource)==='object')return;if(paypalButton.current){paypalButton.current.close();}var customSettings=getThemeSettings('PayPal')||{};paypalButton.current=paypal.Buttons({fundingSource:fundingSource||paypal.FUNDING.PAYPAL,createOrder:function createOrder(){var _paymentTransactions$;var externalCode=(_paymentTransactions$=paymentTransactions[0])===null||_paymentTransactions$===void 0?void 0:_paymentTransactions$.externalCode;return externalCode;},onInit:function onInit(_,actions){// Here again thanks paypal, there is no way access the actions outside these handlers.
10
10
  setPaypalActions(actions);},onClick:function onClick(_,actions){// Trigger manual form validation to comply to paypal standards.
11
- var isValid=formActions.current.onValidate();if(isValid&&!disabled){return actions.resolve();}return actions.reject();},onApprove:function(){var _onApprove=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(_,actions){var redirect;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:_context.next=2;return formActions.current.onSubmit();case 2:redirect=_context.sent;if(redirect){showModal({type:MODAL_PIPELINE_ERROR,title:null,confirm:null,dismiss:'modal.ok',message:'checkout.errors.paypalFunding'});actions.restart();}case 4:case"end":return _context.stop();}}},_callee);}));function onApprove(_x,_x2){return _onApprove.apply(this,arguments);}return onApprove;}(),style:_extends({label:'pay',color:'white'},customSettings)});paypalButton.current.render(button.current);},[disabled,fundingSource,paymentTransactions,paypal,showModal]);// Sync our internal disabled state with paypals disabled state.
11
+ var isValid=formActions.current.onValidate();if(isValid&&!disabled){return actions.resolve();}return actions.reject();},onApprove:function(){var _onApprove=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(_,actions){var redirect;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.next=2;return formActions.current.onSubmit();case 2:redirect=_context.sent;if(redirect){showModal({type:MODAL_PIPELINE_ERROR,title:null,confirm:null,dismiss:'modal.ok',message:'checkout.errors.paypalFunding'});actions.restart();}case 4:case"end":return _context.stop();}},_callee);}));function onApprove(_x,_x2){return _onApprove.apply(this,arguments);}return onApprove;}(),style:_extends({label:'pay',color:'white'},customSettings)});paypalButton.current.render(button.current);},[disabled,fundingSource,paymentTransactions,paypal,showModal]);// Sync our internal disabled state with paypals disabled state.
12
12
  useEffect(function(){if(!paypalActions)return;if(disabled){paypalActions.disable();return;}paypalActions.enable();},[disabled,paypalActions]);if(_typeof(fundingSource)==='object')return null;if(!paypal){return null;}return React.createElement(Fragment,null,React.createElement("h3",{className:styles.headline},i18n.text('checkout.finalizePayment')),React.createElement("div",{ref:button}));};var mapDispatchToProps={showModal:showModal};export default connect(null,mapDispatchToProps)(PaypalPayButton);
@@ -3,4 +3,4 @@ import _regeneratorRuntime from"@babel/runtime/regenerator";function asyncGenera
3
3
  * @return {JSX}
4
4
  */var PaypalProvider=function PaypalProvider(_ref){var activeFundingSource=_ref.activePaymentMeta;var _useContext=useContext(PaymentContext),registerPaymentMethod=_useContext.registerPaymentMethod;useEffect(function(){// Register payment method.
5
5
  registerPaymentMethod({// Paypal doesn't need to fulfill any transactions.
6
- fulfillTransaction:function(){var _fulfillTransaction=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref2){var paymentTransactions,_paymentTransactions$,id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:paymentTransactions=_ref2.paymentTransactions;if(!isAvailable()){_context.next=10;break;}id=paymentTransactions===null||paymentTransactions===void 0?void 0:(_paymentTransactions$=paymentTransactions[0])===null||_paymentTransactions$===void 0?void 0:_paymentTransactions$.id;_context.prev=3;_context.next=6;return PayPalRiskCheck.submit(id);case 6:_context.next=10;break;case 8:_context.prev=8;_context.t0=_context["catch"](3);case 10:return _context.abrupt("return",[]);case 11:case"end":return _context.stop();}}},_callee,null,[[3,8]]);}));function fulfillTransaction(_x){return _fulfillTransaction.apply(this,arguments);}return fulfillTransaction;}()});},[activeFundingSource,registerPaymentMethod]);return null;};PaypalProvider.propTypes={activePaymentMeta:PropTypes.string};PaypalProvider.defaultProps={activePaymentMeta:null};export default PaypalProvider;
6
+ fulfillTransaction:function(){var _fulfillTransaction=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref2){var paymentTransactions,_paymentTransactions$,id;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:paymentTransactions=_ref2.paymentTransactions;if(!isAvailable()){_context.next=10;break;}id=paymentTransactions===null||paymentTransactions===void 0?void 0:(_paymentTransactions$=paymentTransactions[0])===null||_paymentTransactions$===void 0?void 0:_paymentTransactions$.id;_context.prev=3;_context.next=6;return PayPalRiskCheck.submit(id);case 6:_context.next=10;break;case 8:_context.prev=8;_context.t0=_context["catch"](3);case 10:return _context.abrupt("return",[]);case 11:case"end":return _context.stop();}},_callee,null,[[3,8]]);}));function fulfillTransaction(_x){return _fulfillTransaction.apply(this,arguments);}return fulfillTransaction;}()});},[activeFundingSource,registerPaymentMethod]);return null;};PaypalProvider.propTypes={activePaymentMeta:PropTypes.string};PaypalProvider.defaultProps={activePaymentMeta:null};export default PaypalProvider;
@@ -1,5 +1,5 @@
1
- import _regeneratorRuntime from"@babel/runtime/regenerator";function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value;}catch(error){reject(error);return;}if(info.done){resolve(value);}else{Promise.resolve(value).then(_next,_throw);}}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value);}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err);}_next(undefined);});};}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key];}}return target;}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key];}return target;}import React,{useEffect,useState,Fragment}from'react';import PropTypes from'prop-types';import{css}from'glamor';import Button from"../../components/PaymentMethodButton";import{i18n}from"../../../core/helpers/i18n";import{loadSdk}from"./sdk";import{useCheckoutContext}from"../../hooks/common";import connect from"./StripeButton.connector";import googlePayLogo from"./googlepay.png";import applePayLogo from"./applepay.svg";var styles={mark:css({height:32}).toString()};/**
1
+ import _regeneratorRuntime from"@babel/runtime/regenerator";var _excluded=["publishableKey","onChange","active","activePaymentMeta"];function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value;}catch(error){reject(error);return;}if(info.done){resolve(value);}else{Promise.resolve(value).then(_next,_throw);}}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value);}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err);}_next(undefined);});};}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}function _objectWithoutProperties(source,excluded){if(source==null)return{};var target=_objectWithoutPropertiesLoose(source,excluded);var key,i;if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i<sourceSymbolKeys.length;i++){key=sourceSymbolKeys[i];if(excluded.indexOf(key)>=0)continue;if(!Object.prototype.propertyIsEnumerable.call(source,key))continue;target[key]=source[key];}}return target;}function _objectWithoutPropertiesLoose(source,excluded){if(source==null)return{};var target={};var sourceKeys=Object.keys(source);var key,i;for(i=0;i<sourceKeys.length;i++){key=sourceKeys[i];if(excluded.indexOf(key)>=0)continue;target[key]=source[key];}return target;}import React,{useEffect,useState,Fragment}from'react';import PropTypes from'prop-types';import{css}from'glamor';import Button from"../../components/PaymentMethodButton";import{i18n}from"../../../core/helpers/i18n";import{loadSdk}from"./sdk";import{useCheckoutContext}from"../../hooks/common";import connect from"./StripeButton.connector";import googlePayLogo from"./googlepay.png";import applePayLogo from"./applepay.svg";var styles={mark:css({height:32}).toString()};/**
2
2
  * Stripe
3
3
  * @param {Object} props Props
4
4
  * @returns {JSX}
5
- */var StripeButton=function StripeButton(_ref){var publishableKey=_ref.publishableKey,_onChange=_ref.onChange,active=_ref.active,subMethod=_ref.activePaymentMeta,props=_objectWithoutProperties(_ref,["publishableKey","onChange","active","activePaymentMeta"]);var _useState=useState(null),_useState2=_slicedToArray(_useState,2),stripeRequest=_useState2[0],setStripeRequest=_useState2[1];var _useState3=useState(null),_useState4=_slicedToArray(_useState3,2),stripeRequestType=_useState4[0],setStripeRequestType=_useState4[1];var _useCheckoutContext=useCheckoutContext(),order=_useCheckoutContext.order;useEffect(function(){if(!publishableKey){return;}/** */var fn=/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var _order$addressSequenc,_order$addressSequenc2;var stripe,req,availability;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:if(order){_context.next=2;break;}return _context.abrupt("return");case 2:_context.next=4;return loadSdk(publishableKey);case 4:stripe=_context.sent;req=stripe.paymentRequest({country:(_order$addressSequenc=order.addressSequences)===null||_order$addressSequenc===void 0?void 0:(_order$addressSequenc2=_order$addressSequenc[0])===null||_order$addressSequenc2===void 0?void 0:_order$addressSequenc2.country,currency:order.currencyCode.toLowerCase(),total:{label:'Checkout',amount:Math.round(order.total*100)}});_context.next=8;return req.canMakePayment();case 8:availability=_context.sent;if(availability){_context.next=11;break;}return _context.abrupt("return");case 11:setStripeRequest(req);setStripeRequestType(availability);case 13:case"end":return _context.stop();}}},_callee);}));return function fn(){return _ref2.apply(this,arguments);};}();fn();},[order,publishableKey]);return React.createElement(Fragment,null,React.createElement(Button,_extends({},props,{onChange:function onChange(){return _onChange(null);},active:active&&!subMethod}),i18n.text('checkout.payment.buttons.stripe')),stripeRequest&&(stripeRequestType===null||stripeRequestType===void 0?void 0:stripeRequestType.applePay)?React.createElement(Button,_extends({},props,{active:!!(active&&subMethod),onChange:function onChange(){return _onChange({stripeRequest:stripeRequest,stripeRequestType:stripeRequestType});}}),React.createElement("img",{className:styles.mark,alt:"ApplePay",src:applePayLogo})):null,stripeRequest&&!(stripeRequestType===null||stripeRequestType===void 0?void 0:stripeRequestType.applePay)?React.createElement(Button,_extends({},props,{active:!!(active&&subMethod),onChange:function onChange(){return _onChange({stripeRequest:stripeRequest,stripeRequestType:stripeRequestType});}}),React.createElement("img",{className:styles.mark,alt:"GooglePay",src:googlePayLogo})):null);};StripeButton.defaultProps={publishableKey:null,activePaymentMeta:null};export default connect(StripeButton);
5
+ */var StripeButton=function StripeButton(_ref){var publishableKey=_ref.publishableKey,_onChange=_ref.onChange,active=_ref.active,subMethod=_ref.activePaymentMeta,props=_objectWithoutProperties(_ref,_excluded);var _useState=useState(null),_useState2=_slicedToArray(_useState,2),stripeRequest=_useState2[0],setStripeRequest=_useState2[1];var _useState3=useState(null),_useState4=_slicedToArray(_useState3,2),stripeRequestType=_useState4[0],setStripeRequestType=_useState4[1];var _useCheckoutContext=useCheckoutContext(),order=_useCheckoutContext.order;useEffect(function(){if(!publishableKey){return;}/** */var fn=/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var _order$addressSequenc,_order$addressSequenc2;var stripe,req,availability;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(order){_context.next=2;break;}return _context.abrupt("return");case 2:_context.next=4;return loadSdk(publishableKey);case 4:stripe=_context.sent;req=stripe.paymentRequest({country:(_order$addressSequenc=order.addressSequences)===null||_order$addressSequenc===void 0?void 0:(_order$addressSequenc2=_order$addressSequenc[0])===null||_order$addressSequenc2===void 0?void 0:_order$addressSequenc2.country,currency:order.currencyCode.toLowerCase(),total:{label:'Checkout',amount:Math.round(order.total*100)}});_context.next=8;return req.canMakePayment();case 8:availability=_context.sent;if(availability){_context.next=11;break;}return _context.abrupt("return");case 11:setStripeRequest(req);setStripeRequestType(availability);case 13:case"end":return _context.stop();}},_callee);}));return function fn(){return _ref2.apply(this,arguments);};}();fn();},[order,publishableKey]);return React.createElement(Fragment,null,React.createElement(Button,_extends({},props,{onChange:function onChange(){return _onChange(null);},active:active&&!subMethod}),i18n.text('checkout.payment.buttons.stripe')),stripeRequest&&(stripeRequestType===null||stripeRequestType===void 0?void 0:stripeRequestType.applePay)?React.createElement(Button,_extends({},props,{active:!!(active&&subMethod),onChange:function onChange(){return _onChange({stripeRequest:stripeRequest,stripeRequestType:stripeRequestType});}}),React.createElement("img",{className:styles.mark,alt:"ApplePay",src:applePayLogo})):null,stripeRequest&&!(stripeRequestType===null||stripeRequestType===void 0?void 0:stripeRequestType.applePay)?React.createElement(Button,_extends({},props,{active:!!(active&&subMethod),onChange:function onChange(){return _onChange({stripeRequest:stripeRequest,stripeRequestType:stripeRequestType});}}),React.createElement("img",{className:styles.mark,alt:"GooglePay",src:googlePayLogo})):null);};StripeButton.defaultProps={publishableKey:null,activePaymentMeta:null};export default connect(StripeButton);
@@ -1,9 +1,9 @@
1
- function _typeof(obj){if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function _typeof(obj){return typeof obj;};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};}return _typeof(obj);}function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor;}function _possibleConstructorReturn(self,call){if(call&&(_typeof(call)==="object"||typeof call==="function")){return call;}return _assertThisInitialized(self);}function _getPrototypeOf(o){_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o);};return _getPrototypeOf(o);}function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return self;}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function");}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});if(superClass)_setPrototypeOf(subClass,superClass);}function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(o,p){o.__proto__=p;return o;};return _setPrototypeOf(o,p);}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import React,{useContext}from'react';import{css}from'glamor';import{themeConfig}from'@shopgate/engage';import{i18n}from'@shopgate/engage/core';import{TextField}from'@shopgate/engage/components';import{getCSSCustomProp}from'@shopgate/engage/styles';import{CardNumberElement,CardCvcElement,CardExpiryElement}from'@stripe/react-stripe-js';import Section from"../../components/Checkout/CheckoutSection";import{useCheckoutContext}from"../../hooks/common";import StripeContext from"./StripeProvider.context";var colors=themeConfig.colors;var styles={root:css({padding:'0 16px',display:'flex',flexDirection:'column',flex:'0 0 auto',' .formElement':{background:"var(--color-background-accent, ".concat(colors.shade8,")"),padding:0,marginBottom:38,borderTopLeftRadius:4,borderTopRightRadius:4,borderBottom:"1px solid ".concat(colors.shade12)},' .formElement label':{color:'var(--color-text-low-emphasis)',paddingLeft:24},' .underline':{marginBottom:0,borderBottom:'none'},' .errorText':{bottom:-20,left:18},' .StripeElement':{paddingLeft:16}}).toString(),secondRow:css({display:'flex',flexDirection:'row'}).toString(),cvc:css({flex:1.5,marginRight:16}).toString(),expiry:css({flex:1}).toString()};/* eslint-disable react/prop-types */ /**
1
+ function _typeof(obj){if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function _typeof(obj){return typeof obj;};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};}return _typeof(obj);}function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor;}function _callSuper(_this,derived,args){function isNativeReflectConstruct(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{return!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(e){return false;}}derived=_getPrototypeOf(derived);return _possibleConstructorReturn(_this,isNativeReflectConstruct()?Reflect.construct(derived,args||[],_getPrototypeOf(_this).constructor):derived.apply(_this,args));}function _possibleConstructorReturn(self,call){if(call&&(_typeof(call)==="object"||typeof call==="function")){return call;}return _assertThisInitialized(self);}function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return self;}function _getPrototypeOf(o){_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o);};return _getPrototypeOf(o);}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function");}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});if(superClass)_setPrototypeOf(subClass,superClass);}function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(o,p){o.__proto__=p;return o;};return _setPrototypeOf(o,p);}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import React,{useContext}from'react';import{css}from'glamor';import{themeConfig}from'@shopgate/engage';import{i18n}from'@shopgate/engage/core';import{TextField}from'@shopgate/engage/components';import{getCSSCustomProp}from'@shopgate/engage/styles';import{CardNumberElement,CardCvcElement,CardExpiryElement}from'@stripe/react-stripe-js';import Section from"../../components/Checkout/CheckoutSection";import{useCheckoutContext}from"../../hooks/common";import StripeContext from"./StripeProvider.context";var colors=themeConfig.colors;var styles={root:css({padding:'0 16px',display:'flex',flexDirection:'column',flex:'0 0 auto',' .formElement':{background:"var(--color-background-accent, ".concat(colors.shade8,")"),padding:0,marginBottom:38,borderTopLeftRadius:4,borderTopRightRadius:4,borderBottom:"1px solid ".concat(colors.shade12)},' .formElement label':{color:'var(--color-text-low-emphasis)',paddingLeft:24},' .underline':{marginBottom:0,borderBottom:'none'},' .errorText':{bottom:-20,left:18},' .StripeElement':{paddingLeft:16}}).toString(),secondRow:css({display:'flex',flexDirection:'row'}).toString(),cvc:css({flex:1.5,marginRight:16}).toString(),expiry:css({flex:1}).toString()};/* eslint-disable react/prop-types */ /**
2
2
  * Wrapper
3
3
  * @param {Object} Element element
4
4
  * @returns {Object}
5
- */var wrapStripeElement=function wrapStripeElement(Element){var _temp;return _temp=/*#__PURE__*/function(_React$Component){_inherits(_temp,_React$Component);function _temp(){var _getPrototypeOf2;var _this;_classCallCheck(this,_temp);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=_possibleConstructorReturn(this,(_getPrototypeOf2=_getPrototypeOf(_temp)).call.apply(_getPrototypeOf2,[this].concat(args)));_defineProperty(_assertThisInitialized(_this),"onChange",function(){_this.props.onChange({target:{value:' '}});});return _this;}_createClass(_temp,[{key:"render",/** Render
6
- * @returns {JSX} */value:function render(){return React.createElement(Element,_extends({},this.props,{onChange:this.onChange}));}}]);return _temp;}(React.Component),_temp;};/* eslint-enable react/prop-types */var StripeCardNumberElement=wrapStripeElement(CardNumberElement);var StripeCardCvcElement=wrapStripeElement(CardCvcElement);var StripeCardExpiryElement=wrapStripeElement(CardExpiryElement);/**
5
+ */var wrapStripeElement=function wrapStripeElement(Element){return(/*#__PURE__*/function(_React$Component){function _class(){var _this2;_classCallCheck(this,_class);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this2=_callSuper(this,_class,[].concat(args));_defineProperty(_this2,"onChange",function(){_this2.props.onChange({target:{value:' '}});});return _this2;}_inherits(_class,_React$Component);return _createClass(_class,[{key:"render",value:/** Render
6
+ * @returns {JSX} */function render(){return React.createElement(Element,_extends({},this.props,{onChange:this.onChange}));}}]);}(React.Component));};/* eslint-enable react/prop-types */var StripeCardNumberElement=wrapStripeElement(CardNumberElement);var StripeCardCvcElement=wrapStripeElement(CardCvcElement);var StripeCardExpiryElement=wrapStripeElement(CardExpiryElement);/**
7
7
  * PickupContactForm
8
8
  * @returns {JSX}
9
9
  */var StripeCreditCard=function StripeCreditCard(){var _paymentData$meta;var cardRef=React.useRef();var _useContext=useContext(StripeContext),error=_useContext.error,setError=_useContext.setError;var _useCheckoutContext=useCheckoutContext(),needsPayment=_useCheckoutContext.needsPayment,paymentData=_useCheckoutContext.paymentData;// Scrolls to stripe config when error is set.
@@ -4,30 +4,30 @@ import _regeneratorRuntime from"@babel/runtime/regenerator";function _slicedToAr
4
4
  * @param {Object} req Stripe request.
5
5
  * @param {Order} order Order
6
6
  * @return {Promise}
7
- */export var prepareStripeRequestCheckout=function prepareStripeRequestCheckout(stripe,req,order){return new Promise(/*#__PURE__*/function(){var _ref=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(resolve,reject){var availability;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:// Update totals if they updated due to promotions etc.
7
+ */export var prepareStripeRequestCheckout=function prepareStripeRequestCheckout(stripe,req,order){return new Promise(/*#__PURE__*/function(){var _ref=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(resolve,reject){var availability;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:// Update totals if they updated due to promotions etc.
8
8
  req.update({total:{amount:Math.round(order.total*100),label:'Checkout'}});// Recheck availability again.
9
9
  _context2.next=3;return req.canMakePayment();case 3:availability=_context2.sent;if(availability){_context2.next=7;break;}reject(availability);return _context2.abrupt("return");case 7:// Handle success
10
- req.on('paymentmethod',/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(event){return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:resolve(event);case 1:case"end":return _context.stop();}}},_callee);}));return function(_x3){return _ref2.apply(this,arguments);};}());// Handle cancellation
10
+ req.on('paymentmethod',/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(event){return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:resolve(event);case 1:case"end":return _context.stop();}},_callee);}));return function(_x3){return _ref2.apply(this,arguments);};}());// Handle cancellation
11
11
  req.on('cancel',function(err){reject(err);});// Show to user
12
- req.show();case 10:case"end":return _context2.stop();}}},_callee2);}));return function(_x,_x2){return _ref.apply(this,arguments);};}());};/**
12
+ req.show();case 10:case"end":return _context2.stop();}},_callee2);}));return function(_x,_x2){return _ref.apply(this,arguments);};}());};/**
13
13
  * Triggers the payment using stripe payment request api.
14
14
  * @param {Object} stripe Stripe
15
15
  * @param {Object} req Stripe Request
16
16
  * @param {Object} order Order
17
17
  * @param {Object} activeTransaction Active request
18
18
  * @returns {Promise}
19
- */var triggerStripeRequest=/*#__PURE__*/function(){var _ref3=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(stripe,req,order,activeTransaction){var _activeTransaction$ch;var event,intent,result,step;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:// Create checkout event on stripe.
19
+ */var triggerStripeRequest=/*#__PURE__*/function(){var _ref3=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(stripe,req,order,activeTransaction){var _activeTransaction$ch;var event,intent,result,step;return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:// Create checkout event on stripe.
20
20
  // For apple pay the event is already created beforehands
21
21
  // This is due to safaris limitation that the `show` needs
22
22
  // to happen directly inside a gesture handler (click, ..)
23
23
  event=req.preparedEvent;if(event){_context3.next=5;break;}_context3.next=4;return prepareStripeRequestCheckout(stripe,req,order);case 4:event=_context3.sent;case 5:// Send over to stripe and let it validate.
24
- intent=activeTransaction===null||activeTransaction===void 0?void 0:(_activeTransaction$ch=activeTransaction.checkoutParams)===null||_activeTransaction$ch===void 0?void 0:_activeTransaction$ch.paymentIntent;/* eslint-disable camelcase */_context3.next=8;return stripe.confirmCardPayment(intent,{payment_method:event.paymentMethod.id},{handleActions:false});case 8:result=_context3.sent;if(!result.error){_context3.next=12;break;}event.complete('fail');throw result.error;case 12:event.complete('success');if(!(result.paymentIntent.status==='requires_action')){_context3.next=20;break;}_context3.next=16;return stripe.confirmCardPayment(intent);case 16:step=_context3.sent;if(!step.error){_context3.next=19;break;}throw step.error;case 19:return _context3.abrupt("return",step);case 20:return _context3.abrupt("return",result);case 21:case"end":return _context3.stop();}}},_callee3);}));return function triggerStripeRequest(_x4,_x5,_x6,_x7){return _ref3.apply(this,arguments);};}();/**
24
+ intent=activeTransaction===null||activeTransaction===void 0?void 0:(_activeTransaction$ch=activeTransaction.checkoutParams)===null||_activeTransaction$ch===void 0?void 0:_activeTransaction$ch.paymentIntent;/* eslint-disable camelcase */_context3.next=8;return stripe.confirmCardPayment(intent,{payment_method:event.paymentMethod.id},{handleActions:false});case 8:result=_context3.sent;if(!result.error){_context3.next=12;break;}event.complete('fail');throw result.error;case 12:event.complete('success');if(!(result.paymentIntent.status==='requires_action')){_context3.next=20;break;}_context3.next=16;return stripe.confirmCardPayment(intent);case 16:step=_context3.sent;if(!step.error){_context3.next=19;break;}throw step.error;case 19:return _context3.abrupt("return",step);case 20:return _context3.abrupt("return",result);case 21:case"end":return _context3.stop();}},_callee3);}));return function triggerStripeRequest(_x4,_x5,_x6,_x7){return _ref3.apply(this,arguments);};}();/**
25
25
  * A Provider that is needed for all stripe based
26
26
  * @param {Object} props The components props.
27
27
  * @returns {JSX}
28
- */var StripeProvider=function StripeProvider(_ref4){var children=_ref4.children;var _React$useState=React.useState(null),_React$useState2=_slicedToArray(_React$useState,2),error=_React$useState2[0],setError=_React$useState2[1];var _useCheckoutContext=useCheckoutContext(),order=_useCheckoutContext.order,paymentData=_useCheckoutContext.paymentData;var stripe=useStripe();var elements=useElements();var contextApi=React.useMemo(function(){return{error:error,setError:setError,fulfillTransaction:function(){var _fulfillTransaction=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(_ref5){var _activeTransaction$ch2;var paymentTransactions,activeTransaction,_ref6,_paymentIntent,_ref7,incomingError,paymentIntent;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:paymentTransactions=_ref5.paymentTransactions;// Make sure api responded with a new payment transaction.
29
- activeTransaction=paymentTransactions[0];if(activeTransaction===null||activeTransaction===void 0?void 0:(_activeTransaction$ch2=activeTransaction.checkoutParams)===null||_activeTransaction$ch2===void 0?void 0:_activeTransaction$ch2.paymentIntent){_context4.next=5;break;}setError(i18n.text('checkout.errors.noPaymentTransaction'));return _context4.abrupt("return",false);case 5:if(!((paymentData===null||paymentData===void 0?void 0:paymentData.meta)&&(paymentData===null||paymentData===void 0?void 0:paymentData.meta.stripeRequest))){_context4.next=17;break;}_context4.prev=6;_context4.next=9;return triggerStripeRequest(stripe,paymentData.meta.stripeRequest,order,activeTransaction);case 9:_ref6=_context4.sent;_paymentIntent=_ref6.paymentIntent;return _context4.abrupt("return",[{id:activeTransaction.id,checkoutParams:{paymentIntentId:_paymentIntent.id}}]);case 14:_context4.prev=14;_context4.t0=_context4["catch"](6);return _context4.abrupt("return",false);case 17:_context4.next=19;return stripe.confirmCardPayment(activeTransaction.checkoutParams.paymentIntent,{/* eslint-disable-next-line camelcase */payment_method:{card:elements.getElement(CardNumberElement)}});case 19:_ref7=_context4.sent;incomingError=_ref7.error;paymentIntent=_ref7.paymentIntent;if(!incomingError){_context4.next=26;break;}console.error(incomingError,activeTransaction.checkoutParams.paymentIntent);setError(incomingError.message);return _context4.abrupt("return",false);case 26:return _context4.abrupt("return",[{id:activeTransaction.id,checkoutParams:{paymentIntentId:paymentIntent.id}}]);case 27:case"end":return _context4.stop();}}},_callee4,null,[[6,14]]);}));function fulfillTransaction(_x8){return _fulfillTransaction.apply(this,arguments);}return fulfillTransaction;}()};},[elements,error,order,paymentData,stripe]);var _useContext=useContext(PaymentContext),registerPaymentMethod=_useContext.registerPaymentMethod;useEffect(function(){registerPaymentMethod(contextApi);},[contextApi,registerPaymentMethod]);return React.createElement(Context.Provider,{value:contextApi},children);};/**
28
+ */var StripeProvider=function StripeProvider(_ref4){var children=_ref4.children;var _React$useState=React.useState(null),_React$useState2=_slicedToArray(_React$useState,2),error=_React$useState2[0],setError=_React$useState2[1];var _useCheckoutContext=useCheckoutContext(),order=_useCheckoutContext.order,paymentData=_useCheckoutContext.paymentData;var stripe=useStripe();var elements=useElements();var contextApi=React.useMemo(function(){return{error:error,setError:setError,fulfillTransaction:function(){var _fulfillTransaction=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(_ref5){var _activeTransaction$ch2;var paymentTransactions,activeTransaction,_ref7,_paymentIntent,_ref8,incomingError,paymentIntent;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:paymentTransactions=_ref5.paymentTransactions;// Make sure api responded with a new payment transaction.
29
+ activeTransaction=paymentTransactions[0];if(activeTransaction===null||activeTransaction===void 0?void 0:(_activeTransaction$ch2=activeTransaction.checkoutParams)===null||_activeTransaction$ch2===void 0?void 0:_activeTransaction$ch2.paymentIntent){_context4.next=5;break;}setError(i18n.text('checkout.errors.noPaymentTransaction'));return _context4.abrupt("return",false);case 5:if(!((paymentData===null||paymentData===void 0?void 0:paymentData.meta)&&(paymentData===null||paymentData===void 0?void 0:paymentData.meta.stripeRequest))){_context4.next=17;break;}_context4.prev=6;_context4.next=9;return triggerStripeRequest(stripe,paymentData.meta.stripeRequest,order,activeTransaction);case 9:_ref7=_context4.sent;_paymentIntent=_ref7.paymentIntent;return _context4.abrupt("return",[{id:activeTransaction.id,checkoutParams:{paymentIntentId:_paymentIntent.id}}]);case 14:_context4.prev=14;_context4.t0=_context4["catch"](6);return _context4.abrupt("return",false);case 17:_context4.next=19;return stripe.confirmCardPayment(activeTransaction.checkoutParams.paymentIntent,{/* eslint-disable-next-line camelcase */payment_method:{card:elements.getElement(CardNumberElement)}});case 19:_ref8=_context4.sent;incomingError=_ref8.error;paymentIntent=_ref8.paymentIntent;if(!incomingError){_context4.next=26;break;}console.error(incomingError,activeTransaction.checkoutParams.paymentIntent);setError(incomingError.message);return _context4.abrupt("return",false);case 26:return _context4.abrupt("return",[{id:activeTransaction.id,checkoutParams:{paymentIntentId:paymentIntent.id}}]);case 27:case"end":return _context4.stop();}},_callee4,null,[[6,14]]);}));function fulfillTransaction(_x8){return _fulfillTransaction.apply(this,arguments);}return fulfillTransaction;}()};},[elements,error,order,paymentData,stripe]);var _useContext=useContext(PaymentContext),registerPaymentMethod=_useContext.registerPaymentMethod;useEffect(function(){registerPaymentMethod(contextApi);},[contextApi,registerPaymentMethod]);return React.createElement(Context.Provider,{value:contextApi},children);};/**
30
30
  * A Provider that is needed for all stripe based
31
31
  * @param {Object} props The components props.
32
32
  * @returns {JSX}
33
- */var StripeProviderWrapper=function StripeProviderWrapper(_ref8){var publishableKey=_ref8.publishableKey,children=_ref8.children;React.useEffect(function(){if(!publishableKey){return;}loadSdk(publishableKey);},[publishableKey]);return React.createElement(Elements,{stripe:stripePromise},React.createElement(StripeProvider,null,children));};StripeProviderWrapper.defaultProps={publishableKey:null};export default connect(StripeProviderWrapper);
33
+ */var StripeProviderWrapper=function StripeProviderWrapper(_ref9){var publishableKey=_ref9.publishableKey,children=_ref9.children;React.useEffect(function(){if(!publishableKey){return;}loadSdk(publishableKey);},[publishableKey]);return React.createElement(Elements,{stripe:stripePromise},React.createElement(StripeProvider,null,children));};StripeProviderWrapper.defaultProps={publishableKey:null};export default connect(StripeProviderWrapper);
@@ -2,7 +2,7 @@ import _regeneratorRuntime from"@babel/runtime/regenerator";function asyncGenera
2
2
  * Loads the stripe sdk
3
3
  * @param {string} publishableKey The publishable stripe key.
4
4
  * @returns {Stripe}
5
- */export var loadSdk=function loadSdk(publishableKey){if(loaded){return promise;}loaded=true;/** */var fn=/*#__PURE__*/function(){var _ref=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var stripeObject;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:_context.prev=0;_context.next=3;return loadStripe(publishableKey);case 3:stripeObject=_context.sent;stripe=stripeObject;resolve(stripeObject);return _context.abrupt("return",stripeObject);case 9:_context.prev=9;_context.t0=_context["catch"](0);reject(_context.t0);throw _context.t0;case 13:case"end":return _context.stop();}}},_callee,null,[[0,9]]);}));return function fn(){return _ref.apply(this,arguments);};}();return fn();};/**
5
+ */export var loadSdk=function loadSdk(publishableKey){if(loaded){return promise;}loaded=true;/** */var fn=/*#__PURE__*/function(){var _ref=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var stripeObject;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.prev=0;_context.next=3;return loadStripe(publishableKey);case 3:stripeObject=_context.sent;stripe=stripeObject;resolve(stripeObject);return _context.abrupt("return",stripeObject);case 9:_context.prev=9;_context.t0=_context["catch"](0);reject(_context.t0);throw _context.t0;case 13:case"end":return _context.stop();}},_callee,null,[[0,9]]);}));return function fn(){return _ref.apply(this,arguments);};}();return fn();};/**
6
6
  * Returns the sdk
7
7
  * @returns {Object}
8
8
  * */export var getSdk=function getSdk(){return stripe;};
@@ -8,4 +8,4 @@ import _regeneratorRuntime from"@babel/runtime/regenerator";function _extends(){
8
8
  */var AddressBookProvider=function AddressBookProvider(_ref){var children=_ref.children,order=_ref.order,billingAddress=_ref.billingAddress,shippingAddress=_ref.shippingAddress,updateCheckoutOrder=_ref.updateCheckoutOrder,fetchCheckoutOrder=_ref.fetchCheckoutOrder,historyPopToRoute=_ref.historyPopToRoute,isPickupContactEnabled=_ref.isPickupContactEnabled;var _useState=useState(false),_useState2=_slicedToArray(_useState,2),isLoading=_useState2[0],setLoading=_useState2[1];var _useRoute=useRoute(),pathname=_useRoute.pathname,routeId=_useRoute.id,_useRoute$params$type=_useRoute.params.type,type=_useRoute$params$type===void 0?ADDRESS_TYPE_BILLING:_useRoute$params$type;var popToCheckout=useCallback(function(){historyPopToRoute({pattern:CHECKOUT_PATTERN,routeId:routeId});},[historyPopToRoute,routeId]);/**
9
9
  * @param {Array} addressSequences Address sequences
10
10
  * @returns {Array}
11
- */var createAddressSequenceIndexes=function createAddressSequenceIndexes(addressSequences){var primaryBillToAddressSequenceIndex=addressSequences.findIndex(function(address){return address.type==='billing';});var primaryShipToAddressSequenceIndex=addressSequences.findIndex(function(address){return address.type==='shipping'||address.type==='pickup';});primaryBillToAddressSequenceIndex=primaryBillToAddressSequenceIndex!==-1?primaryBillToAddressSequenceIndex:undefined;primaryShipToAddressSequenceIndex=primaryShipToAddressSequenceIndex!==-1?primaryShipToAddressSequenceIndex:undefined;return{primaryBillToAddressSequenceIndex:primaryBillToAddressSequenceIndex,primaryShipToAddressSequenceIndex:primaryShipToAddressSequenceIndex};};var updateOrderWithContact=useCallback(/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(contactId){var gotoCheckout,addressSequences,billingFromSequence,_args=arguments;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:gotoCheckout=_args.length>1&&_args[1]!==undefined?_args[1]:true;setLoading(true);_context.prev=2;addressSequences=[];if(type===ADDRESS_TYPE_BILLING){addressSequences.push({customerContactId:contactId,type:'billing'});}else if(billingAddress){addressSequences.push({customerContactId:billingAddress.customerContactId,type:'billing'});}if(type===ADDRESS_TYPE_SHIPPING){addressSequences.push({customerContactId:contactId,type:'shipping'});}else if(shippingAddress){addressSequences.push({customerContactId:shippingAddress.customerContactId,type:'shipping'});}billingFromSequence=addressSequences.find(function(address){return address.type==='billing';});if(billingFromSequence&&isPickupContactEnabled){addressSequences.push({customerContactId:billingFromSequence.customerContactId,type:'pickup'});}_context.next=10;return updateCheckoutOrder(_extends({addressSequences:addressSequences},createAddressSequenceIndexes(addressSequences)));case 10:if(gotoCheckout){popToCheckout();}_context.next=15;break;case 13:_context.prev=13;_context.t0=_context["catch"](2);case 15:setLoading(false);case 16:case"end":return _context.stop();}}},_callee,null,[[2,13]]);}));return function(_x){return _ref2.apply(this,arguments);};}(),[billingAddress,isPickupContactEnabled,popToCheckout,shippingAddress,type,updateCheckoutOrder]);var deleteContactFromOrder=useCallback(/*#__PURE__*/function(){var _ref3=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(contactId){var addressSequences;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:if(Array.isArray(order===null||order===void 0?void 0:order.addressSequences)){_context2.next=2;break;}return _context2.abrupt("return");case 2:addressSequences=order.addressSequences.reduce(function(acc,_ref4){var customerContactId=_ref4.customerContactId,addressType=_ref4.type;if(customerContactId!==contactId){acc.push({type:addressType,customerContactId:customerContactId});}return acc;},[]);_context2.prev=3;_context2.next=6;return updateCheckoutOrder(_extends({addressSequences:addressSequences},createAddressSequenceIndexes(addressSequences)));case 6:_context2.next=10;break;case 8:_context2.prev=8;_context2.t0=_context2["catch"](3);case 10:case"end":return _context2.stop();}}},_callee2,null,[[3,8]]);}));return function(_x2){return _ref3.apply(this,arguments);};}(),[order,updateCheckoutOrder]);useEffect(function(){if(isLoading){LoadingProvider.setLoading(pathname);}else{LoadingProvider.resetLoading(pathname);}return function(){LoadingProvider.resetLoading(pathname);};},[isLoading,pathname]);useEffect(function(){if(!order){fetchCheckoutOrder();}},[fetchCheckoutOrder,order]);var value=useMemo(function(){return{isCheckout:true,updateOrderWithContact:updateOrderWithContact,deleteContactFromOrder:deleteContactFromOrder,popToCheckout:popToCheckout,type:type};},[updateOrderWithContact,deleteContactFromOrder,popToCheckout,type]);return React.createElement(Context.Provider,{value:value},children);};AddressBookProvider.defaultProps={children:null,order:null,billingAddress:null,shippingAddress:null};export default connect(makeMapStateToProp,mapDispatchToProps)(AddressBookProvider);
11
+ */var createAddressSequenceIndexes=function createAddressSequenceIndexes(addressSequences){var primaryBillToAddressSequenceIndex=addressSequences.findIndex(function(address){return address.type==='billing';});var primaryShipToAddressSequenceIndex=addressSequences.findIndex(function(address){return address.type==='shipping'||address.type==='pickup';});primaryBillToAddressSequenceIndex=primaryBillToAddressSequenceIndex!==-1?primaryBillToAddressSequenceIndex:undefined;primaryShipToAddressSequenceIndex=primaryShipToAddressSequenceIndex!==-1?primaryShipToAddressSequenceIndex:undefined;return{primaryBillToAddressSequenceIndex:primaryBillToAddressSequenceIndex,primaryShipToAddressSequenceIndex:primaryShipToAddressSequenceIndex};};var updateOrderWithContact=useCallback(/*#__PURE__*/function(){var _ref2=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(contactId){var gotoCheckout,addressSequences,billingFromSequence,_args=arguments;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:gotoCheckout=_args.length>1&&_args[1]!==undefined?_args[1]:true;setLoading(true);_context.prev=2;addressSequences=[];if(type===ADDRESS_TYPE_BILLING){addressSequences.push({customerContactId:contactId,type:'billing'});}else if(billingAddress){addressSequences.push({customerContactId:billingAddress.customerContactId,type:'billing'});}if(type===ADDRESS_TYPE_SHIPPING){addressSequences.push({customerContactId:contactId,type:'shipping'});}else if(shippingAddress){addressSequences.push({customerContactId:shippingAddress.customerContactId,type:'shipping'});}billingFromSequence=addressSequences.find(function(address){return address.type==='billing';});if(billingFromSequence&&isPickupContactEnabled){addressSequences.push({customerContactId:billingFromSequence.customerContactId,type:'pickup'});}_context.next=10;return updateCheckoutOrder(_extends({addressSequences:addressSequences},createAddressSequenceIndexes(addressSequences)));case 10:if(gotoCheckout){popToCheckout();}_context.next=15;break;case 13:_context.prev=13;_context.t0=_context["catch"](2);case 15:setLoading(false);case 16:case"end":return _context.stop();}},_callee,null,[[2,13]]);}));return function(_x){return _ref2.apply(this,arguments);};}(),[billingAddress,isPickupContactEnabled,popToCheckout,shippingAddress,type,updateCheckoutOrder]);var deleteContactFromOrder=useCallback(/*#__PURE__*/function(){var _ref3=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(contactId){var addressSequences;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:if(Array.isArray(order===null||order===void 0?void 0:order.addressSequences)){_context2.next=2;break;}return _context2.abrupt("return");case 2:addressSequences=order.addressSequences.reduce(function(acc,_ref4){var customerContactId=_ref4.customerContactId,addressType=_ref4.type;if(customerContactId!==contactId){acc.push({type:addressType,customerContactId:customerContactId});}return acc;},[]);_context2.prev=3;_context2.next=6;return updateCheckoutOrder(_extends({addressSequences:addressSequences},createAddressSequenceIndexes(addressSequences)));case 6:_context2.next=10;break;case 8:_context2.prev=8;_context2.t0=_context2["catch"](3);case 10:case"end":return _context2.stop();}},_callee2,null,[[3,8]]);}));return function(_x2){return _ref3.apply(this,arguments);};}(),[order,updateCheckoutOrder]);useEffect(function(){if(isLoading){LoadingProvider.setLoading(pathname);}else{LoadingProvider.resetLoading(pathname);}return function(){LoadingProvider.resetLoading(pathname);};},[isLoading,pathname]);useEffect(function(){if(!order){fetchCheckoutOrder();}},[fetchCheckoutOrder,order]);var value=useMemo(function(){return{isCheckout:true,updateOrderWithContact:updateOrderWithContact,deleteContactFromOrder:deleteContactFromOrder,popToCheckout:popToCheckout,type:type};},[updateOrderWithContact,deleteContactFromOrder,popToCheckout,type]);return React.createElement(Context.Provider,{value:value},children);};AddressBookProvider.defaultProps={children:null,order:null,billingAddress:null,shippingAddress:null};export default connect(makeMapStateToProp,mapDispatchToProps)(AddressBookProvider);
@@ -6,23 +6,23 @@ import _regeneratorRuntime from"@babel/runtime/regenerator";function asyncGenera
6
6
  * Checkout Provider
7
7
  * @returns {JSX}
8
8
  */var CheckoutProvider=function CheckoutProvider(_ref){var pathPattern=_ref.pathPattern,orderInitialized=_ref.orderInitialized,orderReadOnly=_ref.orderReadOnly,historyReplace=_ref.historyReplace,prepareCheckout=_ref.prepareCheckout,fetchCheckoutOrder=_ref.fetchCheckoutOrder,updateCheckoutOrder=_ref.updateCheckoutOrder,submitCheckoutOrder=_ref.submitCheckoutOrder,showModal=_ref.showModal,children=_ref.children,shopSettings=_ref.shopSettings,billingAddress=_ref.billingAddress,shippingAddress=_ref.shippingAddress,pickupAddress=_ref.pickupAddress,paymentTransactions=_ref.paymentTransactions,fetchCart=_ref.fetchCart,taxLines=_ref.taxLines,userLocation=_ref.userLocation,isDataReady=_ref.isDataReady,fulfillmentSlot=_ref.fulfillmentSlot,orderReserveOnly=_ref.orderReserveOnly,isShippingAddressSelectionEnabled=_ref.isShippingAddressSelectionEnabled,isPickupContactSelectionEnabled=_ref.isPickupContactSelectionEnabled,isGuestCheckout=_ref.isGuestCheckout,campaignAttribution=_ref.campaignAttribution,clearCheckoutCampaign=_ref.clearCheckoutCampaign,checkoutOrder=_ref.order;var _React$useState=React.useState(null),_React$useState2=_slicedToArray(_React$useState,2),paymentButton=_React$useState2[0],setPaymentButton=_React$useState2[1];var paymentHandlerRef=React.useRef(null);var _React$useState3=React.useState(null),_React$useState4=_slicedToArray(_React$useState3,2),paymentData=_React$useState4[0],setPaymentData=_React$useState4[1];var _React$useState5=React.useState(true),_React$useState6=_slicedToArray(_React$useState5,2),isLocked=_React$useState6[0],setLocked=_React$useState6[1];var _React$useState7=React.useState(true),_React$useState8=_slicedToArray(_React$useState7,2),isButtonLocked=_React$useState8[0],setButtonLocked=_React$useState8[1];var _React$useState9=React.useState(true),_React$useState10=_slicedToArray(_React$useState9,2),isLoading=_React$useState10[0],setLoading=_React$useState10[1];var _React$useState11=React.useState(selfPickupConstraints),_React$useState12=_slicedToArray(_React$useState11,2),validationRules=_React$useState12[0],setValidationRules=_React$useState12[1];var _React$useState13=React.useState(false),_React$useState14=_slicedToArray(_React$useState13,2),updateOptIns=_React$useState14[0],_setUpdateOptIns=_React$useState14[1];var defaultOptInFormState=_extends({},initialOptInFormState);var optInFormState=useFormState(defaultOptInFormState,function(){});// Initialize checkout process.
9
- var _useAsyncMemo=useAsyncMemo(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var _ref3,needsPaymentCheckout,success;return _regeneratorRuntime.wrap(function _callee$(_context){while(1){switch(_context.prev=_context.next){case 0:_context.prev=0;_context.next=3;return prepareCheckout({initializeOrder:!orderInitialized});case 3:_ref3=_context.sent;needsPaymentCheckout=_ref3.needsPayment;success=_ref3.success;setLocked(false);return _context.abrupt("return",{isCheckoutInitialized:success,needsPayment:needsPaymentCheckout});case 10:_context.prev=10;_context.t0=_context["catch"](0);return _context.abrupt("return",{isCheckoutInitialized:false,needsPayment:false});case 13:case"end":return _context.stop();}}},_callee,null,[[0,10]]);})),[],false),_useAsyncMemo2=_slicedToArray(_useAsyncMemo,1),_useAsyncMemo2$=_useAsyncMemo2[0],isCheckoutInitialized=_useAsyncMemo2$.isCheckoutInitialized,needsPayment=_useAsyncMemo2$.needsPayment;// Handle passed errors from external checkout gateway.
9
+ var _useAsyncMemo=useAsyncMemo(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(){var _ref4,needsPaymentCheckout,success;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:_context.prev=0;_context.next=3;return prepareCheckout({initializeOrder:!orderInitialized});case 3:_ref4=_context.sent;needsPaymentCheckout=_ref4.needsPayment;success=_ref4.success;setLocked(false);return _context.abrupt("return",{isCheckoutInitialized:success,needsPayment:needsPaymentCheckout});case 10:_context.prev=10;_context.t0=_context["catch"](0);return _context.abrupt("return",{isCheckoutInitialized:false,needsPayment:false});case 13:case"end":return _context.stop();}},_callee,null,[[0,10]]);})),[],false),_useAsyncMemo2=_slicedToArray(_useAsyncMemo,1),_useAsyncMemo2$=_useAsyncMemo2[0],isCheckoutInitialized=_useAsyncMemo2$.isCheckoutInitialized,needsPayment=_useAsyncMemo2$.needsPayment;// Handle passed errors from external checkout gateway.
10
10
  React.useEffect(function(){var urlParams=new URLSearchParams(window.location.search);var errorCode=urlParams.get('errorCode');if(!errorCode){return;}showModal({title:null,confirm:null,dismiss:'modal.ok',message:'checkout.errors.payment.genericExternal'});},[showModal]);var submitPromise=React.useRef(null);// Handles submit of the checkout form.
11
- var handleSubmitOrder=React.useCallback(/*#__PURE__*/function(){var _ref4=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(values){var _submitPromise$curren,_submitPromise$curren2,_submitPromise$curren3,_submitPromise$curren4,fulfilledPaymentTransactions,_submitPromise$curren5,_submitPromise$curren6,marketingOptIn,_ref5,paymentTransactionResults,redirectNeeded,_paymentHandlerRef$cu,_submitPromise$curren9,_submitPromise$curren10,_paymentTransactionRe,url,_submitPromise$curren7,_submitPromise$curren8,redirectWanted,_paymentHandlerRef$cu2,_submitPromise$curren11,_submitPromise$curren12,_ref6,_ref7,order;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:setLocked(true);// Update order to set pickup contact.
11
+ var handleSubmitOrder=React.useCallback(/*#__PURE__*/function(){var _ref5=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(values){var _submitPromise$curren,_submitPromise$curren2,_submitPromise$curren3,_submitPromise$curren4,fulfilledPaymentTransactions,_submitPromise$curren5,_submitPromise$curren6,marketingOptIn,_ref7,paymentTransactionResults,redirectNeeded,_paymentHandlerRef$cu,_submitPromise$curren9,_submitPromise$curren10,_paymentTransactionRe3,_paymentTransactionRe4,url,_submitPromise$curren7,_submitPromise$curren8,redirectWanted,_paymentHandlerRef$cu2,_submitPromise$curren11,_submitPromise$curren12,_ref8,_ref9,order;return _regeneratorRuntime.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:setLocked(true);// Update order to set pickup contact.
12
12
  if(orderReadOnly){_context2.next=14;break;}_context2.prev=2;_context2.next=5;return updateCheckoutOrder({notes:values.instructions,addressSequences:[_extends({},billingAddress,{customerContactId:billingAddress.customerContactId||undefined})].concat(isShippingAddressSelectionEnabled?_extends({},shippingAddress,{customerContactId:shippingAddress.customerContactId||undefined}):[],isPickupContactSelectionEnabled?_extends({},values.pickupPerson==='me'?_extends({},billingAddress,{customerContactId:billingAddress.customerContactId||undefined,type:'pickup'}):{type:'pickup',firstName:values.firstName,lastName:values.lastName,mobile:values.mobile,emailAddress:values.emailAddress}):[]),primaryBillToAddressSequenceIndex:0,primaryShipToAddressSequenceIndex:1});case 5:_context2.next=12;break;case 7:_context2.prev=7;_context2.t0=_context2["catch"](2);setLocked(false);submitPromise===null||submitPromise===void 0?void 0:(_submitPromise$curren=submitPromise.current)===null||_submitPromise$curren===void 0?void 0:(_submitPromise$curren2=_submitPromise$curren.resolve)===null||_submitPromise$curren2===void 0?void 0:_submitPromise$curren2.call(_submitPromise$curren);return _context2.abrupt("return");case 12:_context2.next=25;break;case 14:if(!(isGuestCheckout&&isPickupContactSelectionEnabled&&values.instructions)){_context2.next=25;break;}_context2.prev=15;_context2.next=18;return updateCheckoutOrder({notes:values.instructions});case 18:_context2.next=25;break;case 20:_context2.prev=20;_context2.t1=_context2["catch"](15);setLocked(false);submitPromise===null||submitPromise===void 0?void 0:(_submitPromise$curren3=submitPromise.current)===null||_submitPromise$curren3===void 0?void 0:(_submitPromise$curren4=_submitPromise$curren3.resolve)===null||_submitPromise$curren4===void 0?void 0:_submitPromise$curren4.call(_submitPromise$curren3);return _context2.abrupt("return");case 25:// Fulfill using selected payment method.
13
- fulfilledPaymentTransactions=[];if(!needsPayment){_context2.next=34;break;}_context2.next=29;return paymentHandlerRef.current.fulfillTransaction({paymentTransactions:paymentTransactions});case 29:fulfilledPaymentTransactions=_context2.sent;if(fulfilledPaymentTransactions){_context2.next=34;break;}setLocked(false);submitPromise===null||submitPromise===void 0?void 0:(_submitPromise$curren5=submitPromise.current)===null||_submitPromise$curren5===void 0?void 0:(_submitPromise$curren6=_submitPromise$curren5.resolve)===null||_submitPromise$curren6===void 0?void 0:_submitPromise$curren6.call(_submitPromise$curren5);return _context2.abrupt("return");case 34:_context2.prev=34;if(updateOptIns){marketingOptIn=optInFormState.values.marketingOptIn;}_context2.next=38;return submitCheckoutOrder(_extends({paymentTransactions:fulfilledPaymentTransactions,userAgent:getUserAgent(),platform:'engage',marketingOptIn:marketingOptIn},campaignAttribution?{campaignAttribution:campaignAttribution}:{}));case 38:_ref5=_context2.sent;paymentTransactionResults=_ref5.paymentTransactionResults;redirectNeeded=_ref5.redirectNeeded;if(!(redirectNeeded&&paymentTransactionResults.length)){_context2.next=56;break;}_paymentTransactionRe=paymentTransactionResults[0].redirectParams;_paymentTransactionRe=_paymentTransactionRe===void 0?{}:_paymentTransactionRe;url=_paymentTransactionRe.url;if(!isAvailable()){_context2.next=51;break;}_context2.next=48;return InAppBrowser.openLink({url:url,options:{enableDefaultShare:false}});case 48:// On Close we simply unlock the checkout
14
- setLocked(false);submitPromise===null||submitPromise===void 0?void 0:(_submitPromise$curren7=submitPromise.current)===null||_submitPromise$curren7===void 0?void 0:(_submitPromise$curren8=_submitPromise$curren7.resolve)===null||_submitPromise$curren8===void 0?void 0:_submitPromise$curren8.call(_submitPromise$curren7);return _context2.abrupt("return");case 51:// Implemented specifically for paypal:
13
+ fulfilledPaymentTransactions=[];if(!needsPayment){_context2.next=34;break;}_context2.next=29;return paymentHandlerRef.current.fulfillTransaction({paymentTransactions:paymentTransactions});case 29:fulfilledPaymentTransactions=_context2.sent;if(fulfilledPaymentTransactions){_context2.next=34;break;}setLocked(false);submitPromise===null||submitPromise===void 0?void 0:(_submitPromise$curren5=submitPromise.current)===null||_submitPromise$curren5===void 0?void 0:(_submitPromise$curren6=_submitPromise$curren5.resolve)===null||_submitPromise$curren6===void 0?void 0:_submitPromise$curren6.call(_submitPromise$curren5);return _context2.abrupt("return");case 34:_context2.prev=34;if(updateOptIns){marketingOptIn=optInFormState.values.marketingOptIn;}_context2.next=38;return submitCheckoutOrder(_extends({paymentTransactions:fulfilledPaymentTransactions,userAgent:getUserAgent(),platform:'engage',marketingOptIn:marketingOptIn},campaignAttribution?{campaignAttribution:campaignAttribution}:{}));case 38:_ref7=_context2.sent;paymentTransactionResults=_ref7.paymentTransactionResults;redirectNeeded=_ref7.redirectNeeded;if(!(redirectNeeded&&paymentTransactionResults.length)){_context2.next=54;break;}_paymentTransactionRe3=paymentTransactionResults[0].redirectParams,_paymentTransactionRe4=_paymentTransactionRe3===void 0?{}:_paymentTransactionRe3,url=_paymentTransactionRe4.url;if(!isAvailable()){_context2.next=49;break;}_context2.next=46;return InAppBrowser.openLink({url:url,options:{enableDefaultShare:false}});case 46:// On Close we simply unlock the checkout
14
+ setLocked(false);submitPromise===null||submitPromise===void 0?void 0:(_submitPromise$curren7=submitPromise.current)===null||_submitPromise$curren7===void 0?void 0:(_submitPromise$curren8=_submitPromise$curren7.resolve)===null||_submitPromise$curren8===void 0?void 0:_submitPromise$curren8.call(_submitPromise$curren7);return _context2.abrupt("return");case 49:// Implemented specifically for paypal:
15
15
  // https://developer.paypal.com/docs/checkout/integration-features/funding-failure/
16
16
  // In the website we don't want to redirect and instead use to paypal sdk to
17
17
  // control the "mini browser" / popup.
18
- redirectWanted=true;if(paymentHandlerRef===null||paymentHandlerRef===void 0?void 0:(_paymentHandlerRef$cu=paymentHandlerRef.current)===null||_paymentHandlerRef$cu===void 0?void 0:_paymentHandlerRef$cu.getSupportsRedirect){redirectWanted=paymentHandlerRef===null||paymentHandlerRef===void 0?void 0:(_paymentHandlerRef$cu2=paymentHandlerRef.current)===null||_paymentHandlerRef$cu2===void 0?void 0:_paymentHandlerRef$cu2.getSupportsRedirect();}if(redirectWanted){window.location.href=url;}else{setLocked(false);}submitPromise===null||submitPromise===void 0?void 0:(_submitPromise$curren9=submitPromise.current)===null||_submitPromise$curren9===void 0?void 0:(_submitPromise$curren10=_submitPromise$curren9.resolve)===null||_submitPromise$curren10===void 0?void 0:_submitPromise$curren10.call(_submitPromise$curren9,true);return _context2.abrupt("return");case 56:_context2.next=63;break;case 58:_context2.prev=58;_context2.t2=_context2["catch"](34);setLocked(false);submitPromise===null||submitPromise===void 0?void 0:(_submitPromise$curren11=submitPromise.current)===null||_submitPromise$curren11===void 0?void 0:(_submitPromise$curren12=_submitPromise$curren11.resolve)===null||_submitPromise$curren12===void 0?void 0:_submitPromise$curren12.call(_submitPromise$curren11);return _context2.abrupt("return");case 63:_context2.next=65;return Promise.all([fetchCheckoutOrder(),fetchCart()]);case 65:_ref6=_context2.sent;_ref7=_slicedToArray(_ref6,1);order=_ref7[0];clearCheckoutCampaign();historyReplace({pathname:CHECKOUT_CONFIRMATION_PATTERN,state:{order:order}});// We don't set locked to false to avoid unnecessary UI changes right before
18
+ redirectWanted=true;if(paymentHandlerRef===null||paymentHandlerRef===void 0?void 0:(_paymentHandlerRef$cu=paymentHandlerRef.current)===null||_paymentHandlerRef$cu===void 0?void 0:_paymentHandlerRef$cu.getSupportsRedirect){redirectWanted=paymentHandlerRef===null||paymentHandlerRef===void 0?void 0:(_paymentHandlerRef$cu2=paymentHandlerRef.current)===null||_paymentHandlerRef$cu2===void 0?void 0:_paymentHandlerRef$cu2.getSupportsRedirect();}if(redirectWanted){window.location.href=url;}else{setLocked(false);}submitPromise===null||submitPromise===void 0?void 0:(_submitPromise$curren9=submitPromise.current)===null||_submitPromise$curren9===void 0?void 0:(_submitPromise$curren10=_submitPromise$curren9.resolve)===null||_submitPromise$curren10===void 0?void 0:_submitPromise$curren10.call(_submitPromise$curren9,true);return _context2.abrupt("return");case 54:_context2.next=61;break;case 56:_context2.prev=56;_context2.t2=_context2["catch"](34);setLocked(false);submitPromise===null||submitPromise===void 0?void 0:(_submitPromise$curren11=submitPromise.current)===null||_submitPromise$curren11===void 0?void 0:(_submitPromise$curren12=_submitPromise$curren11.resolve)===null||_submitPromise$curren12===void 0?void 0:_submitPromise$curren12.call(_submitPromise$curren11);return _context2.abrupt("return");case 61:_context2.next=63;return Promise.all([fetchCheckoutOrder(),fetchCart()]);case 63:_ref8=_context2.sent;_ref9=_slicedToArray(_ref8,1);order=_ref9[0];clearCheckoutCampaign();historyReplace({pathname:CHECKOUT_CONFIRMATION_PATTERN,state:{order:order}});// We don't set locked to false to avoid unnecessary UI changes right before
19
19
  // going to confirmation page.
20
- case 70:case"end":return _context2.stop();}}},_callee2,null,[[2,7],[15,20],[34,58]]);}));return function(_x){return _ref4.apply(this,arguments);};}(),[orderReadOnly,isGuestCheckout,isPickupContactSelectionEnabled,needsPayment,fetchCheckoutOrder,fetchCart,clearCheckoutCampaign,historyReplace,updateCheckoutOrder,billingAddress,isShippingAddressSelectionEnabled,shippingAddress,paymentTransactions,updateOptIns,submitCheckoutOrder,campaignAttribution,optInFormState.values]);var handleUpdateShippingMethod=useCallback(/*#__PURE__*/function(){var _ref8=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(selectedShippingMethod){return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:setLocked(true);_context3.prev=1;_context3.next=4;return updateCheckoutOrder({addressSequences:[_extends({},billingAddress),_extends({},shippingAddress,{orderSegment:{selectedShippingMethod:selectedShippingMethod}})].concat(isGuestCheckout&&pickupAddress?[_extends({},pickupAddress)]:[]),primaryBillToAddressSequenceIndex:0,primaryShipToAddressSequenceIndex:1});case 4:_context3.next=8;break;case 6:_context3.prev=6;_context3.t0=_context3["catch"](1);case 8:_context3.prev=8;_context3.next=11;return fetchCheckoutOrder();case 11:_context3.next=15;break;case 13:_context3.prev=13;_context3.t1=_context3["catch"](8);case 15:setLocked(false);case 16:case"end":return _context3.stop();}}},_callee3,null,[[1,6],[8,13]]);}));return function(_x2){return _ref8.apply(this,arguments);};}(),[billingAddress,pickupAddress,shippingAddress,fetchCheckoutOrder,isGuestCheckout,updateCheckoutOrder]);// Whenever the order is locked we also want to show to loading bar.
20
+ case 68:case"end":return _context2.stop();}},_callee2,null,[[2,7],[15,20],[34,56]]);}));return function(_x){return _ref5.apply(this,arguments);};}(),[orderReadOnly,isGuestCheckout,isPickupContactSelectionEnabled,needsPayment,fetchCheckoutOrder,fetchCart,clearCheckoutCampaign,historyReplace,updateCheckoutOrder,billingAddress,isShippingAddressSelectionEnabled,shippingAddress,paymentTransactions,updateOptIns,submitCheckoutOrder,campaignAttribution,optInFormState.values]);var handleUpdateShippingMethod=useCallback(/*#__PURE__*/function(){var _ref10=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(selectedShippingMethod){return _regeneratorRuntime.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:setLocked(true);_context3.prev=1;_context3.next=4;return updateCheckoutOrder({addressSequences:[_extends({},billingAddress),_extends({},shippingAddress,{orderSegment:{selectedShippingMethod:selectedShippingMethod}})].concat(isGuestCheckout&&pickupAddress?[_extends({},pickupAddress)]:[]),primaryBillToAddressSequenceIndex:0,primaryShipToAddressSequenceIndex:1});case 4:_context3.next=8;break;case 6:_context3.prev=6;_context3.t0=_context3["catch"](1);case 8:_context3.prev=8;_context3.next=11;return fetchCheckoutOrder();case 11:_context3.next=15;break;case 13:_context3.prev=13;_context3.t1=_context3["catch"](8);case 15:setLocked(false);case 16:case"end":return _context3.stop();}},_callee3,null,[[1,6],[8,13]]);}));return function(_x2){return _ref10.apply(this,arguments);};}(),[billingAddress,pickupAddress,shippingAddress,fetchCheckoutOrder,isGuestCheckout,updateCheckoutOrder]);// Whenever the order is locked we also want to show to loading bar.
21
21
  React.useEffect(function(){if(isLocked){setLoading(true);return;}setLoading(false);},[isLocked]);React.useEffect(function(){if(isLoading){LoadingProvider.setLoading(pathPattern);return;}LoadingProvider.resetLoading(pathPattern);},[isLoading,pathPattern]);// Hold form states.
22
22
  var formState=useFormState(defaultPickupPersonState,handleSubmitOrder,validationRules);// When "someone-else" is picked for pickup the validation rules need to change.
23
23
  React.useEffect(function(){setValidationRules(formState.values.pickupPerson==='me'||isGuestCheckout?selfPickupConstraints:pickupConstraints);},[formState.values.pickupPerson,isGuestCheckout]);var isOrderable=React.useMemo(function(){return typeof(checkoutOrder===null||checkoutOrder===void 0?void 0:checkoutOrder.isOrderable)!=='undefined'?checkoutOrder.isOrderable:true;},[checkoutOrder]);// Create memoized context value.
24
24
  var value=React.useMemo(function(){return{setPaymentHandler:function setPaymentHandler(handler){setPaymentButton(function(){return handler.getCustomPayButton();});paymentHandlerRef.current=handler;},paymentButton:paymentButton,paymentData:paymentData,setPaymentData:setPaymentData,paymentTransactions:paymentTransactions,isLocked:isLocked,isButtonLocked:(isLocked||isButtonLocked)&&needsPayment||!isOrderable,isLoading:isLoading,supportedCountries:shopSettings.supportedCountries,countrySortOrder:shopSettings.countrySortOrder,formValidationErrors:convertValidationErrors(formState.validationErrors||{}),formSetValues:formState.setValues,handleSubmitOrder:function handleSubmitOrder(){var promise=new Promise(function(resolve,reject){submitPromise.current={resolve:resolve,reject:reject};});formState.handleSubmit.apply(formState,arguments);return promise;},handleValidation:function handleValidation(){return formState.validate(formState.values);},updateShippingMethod:handleUpdateShippingMethod,defaultPickupPersonState:defaultPickupPersonState,userLocation:userLocation,billingAddress:billingAddress,shippingAddress:shippingAddress,pickupAddress:pickupAddress,taxLines:taxLines,order:checkoutOrder,currencyCode:checkoutOrder===null||checkoutOrder===void 0?void 0:checkoutOrder.currencyCode,needsPayment:needsPayment,orderReserveOnly:orderReserveOnly,isShippingAddressSelectionEnabled:isShippingAddressSelectionEnabled,isPickupContactSelectionEnabled:isPickupContactSelectionEnabled,isGuestCheckout:isGuestCheckout,fulfillmentSlot:fulfillmentSlot,optInFormSetValues:optInFormState.setValues,defaultOptInFormState:defaultOptInFormState,setUpdateOptIns:function setUpdateOptIns(){var val=arguments.length>0&&arguments[0]!==undefined?arguments[0]:true;_setUpdateOptIns(val);},setButtonLocked:setButtonLocked,setLoading:setLoading,setLocked:setLocked};},[paymentButton,paymentData,paymentTransactions,isLocked,isButtonLocked,needsPayment,isOrderable,isLoading,shopSettings.supportedCountries,shopSettings.countrySortOrder,formState,handleUpdateShippingMethod,userLocation,billingAddress,shippingAddress,pickupAddress,taxLines,checkoutOrder,orderReserveOnly,isShippingAddressSelectionEnabled,isPickupContactSelectionEnabled,isGuestCheckout,fulfillmentSlot,optInFormState.setValues,defaultOptInFormState]);// Handle deeplinks from external payment site.
25
25
  React.useEffect(function(){if(!isAvailable())return undefined;/**
26
26
  * @param {Object} event Event
27
- */var listener=/*#__PURE__*/function(){var _ref9=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(event){var _ref10,_ref10$link,link,_link$match,_link$match2,_,_scheme,path,_ref11,_ref12,order;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:_ref10=(event===null||event===void 0?void 0:event.detail)||{},_ref10$link=_ref10.link,link=_ref10$link===void 0?'':_ref10$link;/* eslint-disable-next-line no-unused-vars */_link$match=link.match(/(.*):\/\/([a-zA-Z0-9-/]*)(.*)/),_link$match2=_slicedToArray(_link$match,3),_=_link$match2[0],_scheme=_link$match2[1],path=_link$match2[2];// Order is done, fetch again to retrieve infos for success page
28
- if(!(path==='payment/success')){_context4.next=11;break;}_context4.next=5;return Promise.all([fetchCheckoutOrder(),fetchCart()]);case 5:_ref11=_context4.sent;_ref12=_slicedToArray(_ref11,1);order=_ref12[0];historyReplace({pathname:CHECKOUT_CONFIRMATION_PATTERN,state:{order:order}});_context4.next=12;break;case 11:if(path==='payment/error'){showModal({title:null,confirm:null,dismiss:'modal.ok',message:'checkout.errors.payment.genericExternal'});}case 12:case"end":return _context4.stop();}}},_callee4);}));return function listener(_x3){return _ref9.apply(this,arguments);};}();Linking.addEventListener('deepLinkOpened',listener);return function(){Linking.removeEventListener('deepLinkOpened',listener);};},[fetchCart,fetchCheckoutOrder,historyReplace,showModal]);if(!isDataReady||!isCheckoutInitialized){return null;}return React.createElement(Context.Provider,{value:value},children);};CheckoutProvider.defaultProps={orderInitialized:false,orderReadOnly:false,orderReserveOnly:false,isShippingAddressSelectionEnabled:false,isPickupContactSelectionEnabled:false,isGuestCheckout:false};export default connect(CheckoutProvider);/* eslint-enable no-unused-expressions */
27
+ */var listener=/*#__PURE__*/function(){var _ref11=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(event){var _ref12,_ref12$link,link,_link$match,_link$match2,_,_scheme,path,_ref15,_ref16,order;return _regeneratorRuntime.wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:_ref12=(event===null||event===void 0?void 0:event.detail)||{},_ref12$link=_ref12.link,link=_ref12$link===void 0?'':_ref12$link;/* eslint-disable-next-line no-unused-vars */_link$match=link.match(/(.*):\/\/([a-zA-Z0-9-/]*)(.*)/),_link$match2=_slicedToArray(_link$match,3),_=_link$match2[0],_scheme=_link$match2[1],path=_link$match2[2];// Order is done, fetch again to retrieve infos for success page
28
+ if(!(path==='payment/success')){_context4.next=11;break;}_context4.next=5;return Promise.all([fetchCheckoutOrder(),fetchCart()]);case 5:_ref15=_context4.sent;_ref16=_slicedToArray(_ref15,1);order=_ref16[0];historyReplace({pathname:CHECKOUT_CONFIRMATION_PATTERN,state:{order:order}});_context4.next=12;break;case 11:if(path==='payment/error'){showModal({title:null,confirm:null,dismiss:'modal.ok',message:'checkout.errors.payment.genericExternal'});}case 12:case"end":return _context4.stop();}},_callee4);}));return function listener(_x3){return _ref11.apply(this,arguments);};}();Linking.addEventListener('deepLinkOpened',listener);return function(){Linking.removeEventListener('deepLinkOpened',listener);};},[fetchCart,fetchCheckoutOrder,historyReplace,showModal]);if(!isDataReady||!isCheckoutInitialized){return null;}return React.createElement(Context.Provider,{value:value},children);};CheckoutProvider.defaultProps={orderInitialized:false,orderReadOnly:false,orderReserveOnly:false,isShippingAddressSelectionEnabled:false,isPickupContactSelectionEnabled:false,isGuestCheckout:false};export default connect(CheckoutProvider);/* eslint-enable no-unused-expressions */
@@ -0,0 +1,38 @@
1
+ function _typeof(obj){if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function _typeof(obj){return typeof obj;};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};}return _typeof(obj);}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor;}function _callSuper(_this,derived,args){function isNativeReflectConstruct(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{return!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(e){return false;}}derived=_getPrototypeOf(derived);return _possibleConstructorReturn(_this,isNativeReflectConstruct()?Reflect.construct(derived,args||[],_getPrototypeOf(_this).constructor):derived.apply(_this,args));}function _possibleConstructorReturn(self,call){if(call&&(_typeof(call)==="object"||typeof call==="function")){return call;}return _assertThisInitialized(self);}function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return self;}function _getPrototypeOf(o){_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o);};return _getPrototypeOf(o);}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function");}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});if(superClass)_setPrototypeOf(subClass,superClass);}function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(o,p){o.__proto__=p;return o;};return _setPrototypeOf(o,p);}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import React,{Component}from'react';import PropTypes from'prop-types';import debounce from'lodash/debounce';import I18n from'@shopgate/pwa-common/components/I18n';import RippleButton from'@shopgate/pwa-ui-shared/RippleButton';import{themeConfig}from'@shopgate/pwa-common/helpers/config';import styles from"./style";var variables=themeConfig.variables;/**
2
+ * The height of one row.
3
+ * @type {number}
4
+ */export var CHIP_ROW_HEIGHT=34;/**
5
+ * The minimum width that a chip should have.
6
+ * @type {number}
7
+ */export var CHIP_MINIMUM_WIDTH=60;/**
8
+ * The ChipLayout component.
9
+ */var ChipLayout=/*#__PURE__*/function(_Component){function ChipLayout(){var _this2;_classCallCheck(this,ChipLayout);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this2=_callSuper(this,ChipLayout,[].concat(args));/**
10
+ * Debounced, eg. layout effect
11
+ */_defineProperty(_this2,"processHiddenElementsDebounced",debounce(_this2.processHiddenElements,50));return _this2;}_inherits(ChipLayout,_Component);return _createClass(ChipLayout,[{key:"componentDidMount",value:/**
12
+ * When the component mounts we need to initially process all children.
13
+ */function componentDidMount(){this.processHiddenElementsDebounced();}/**
14
+ * Eveyry time pathname or other prop changes this callback is called.
15
+ * This funtion will start processing hidden elements in order to check if "more" button
16
+ * should be rendered.
17
+ *
18
+ * It must be done on every prop change, including the pathname.
19
+ * Sometimes this component is rendered invisible, then since `.processHiddenElements` uses
20
+ * refs.clientHeight it would always be zero.
21
+ */},{key:"componentDidUpdate",value:function componentDidUpdate(){this.processHiddenElementsDebounced();}/**
22
+ * Returns the maximum height the container should have.
23
+ * @returns {number}
24
+ */},{key:"maxContentHeight",get:function get(){// 8 -> container padding.
25
+ return CHIP_ROW_HEIGHT*this.props.maxRows+8;}/**
26
+ * Returns the more button styles.
27
+ * @return {string} The store button class name.
28
+ */},{key:"moreButtonStyles",get:function get(){if(this.props.invertMoreButton){return styles.moreButtonInverted;}return styles.moreButton;}/**
29
+ * Loops through all children to make sure the more button appears if there is too much content.
30
+ */},{key:"processHiddenElements",value:function processHiddenElements(){var _this3=this;if(!this.containerRef){return;}// Find out if there are overflowing elements.
31
+ var lastVisibleElement=0;var showMoreButton=this.containerRef.scrollHeight>this.containerRef.clientHeight;var containerHeight=this.containerRef.clientHeight;var chips=Array.from(this.layoutRef.children);this.moreButtonRef.style.display=showMoreButton?'block':'none';this.layoutRef.style.minHeight=showMoreButton?"".concat(this.maxContentHeight,"px"):'0px';// If the more button is not visible we don't need to process anything.
32
+ if(!showMoreButton){return;}// Hide or show chips that are hidden due to overflow.
33
+ chips.forEach(function(child,index){var isVisible=child.offsetTop+child.clientHeight<containerHeight;child.setAttribute('style',"display: ".concat(isVisible?'flex':'none',";"));if(isVisible){lastVisibleElement=index;}});// Hide the more button if previous assumption was incorrect.
34
+ if(lastVisibleElement===chips.length-1){this.moreButtonRef.style.display='none';return;}// Hide elements so that the 'more button' has enough space.
35
+ chips.slice(0,lastVisibleElement+1).reverse().every(function(element){var offsetBottom=element.offsetTop+element.clientHeight;if(_this3.moreButtonRef.offsetTop>offsetBottom){return true;}var buttonSpaceRequired=_this3.moreButtonRef.clientWidth+variables.gap.big;var elementRight=_this3.containerRef.clientWidth-(element.offsetLeft+element.clientWidth);var spaceDiff=buttonSpaceRequired-elementRight;var remainingChipWidth=element.clientWidth-spaceDiff;if(remainingChipWidth>CHIP_MINIMUM_WIDTH){element.setAttribute('style',"max-width: ".concat(remainingChipWidth,"px"));return false;}if(element.offsetTop!==chips[lastVisibleElement].offsetTop){element.setAttribute('style','display: none');return false;}element.setAttribute('style','display: none');return true;});}},{key:"render",value:/**
36
+ * Renders the component.
37
+ * @returns {JSX}
38
+ */function render(){var _this4=this;return React.createElement("div",{ref:function ref(element){_this4.containerRef=element;},className:"".concat(styles.container(this.maxContentHeight)," engage__chip-layout")},React.createElement("div",{ref:function ref(element){_this4.layoutRef=element;},className:styles.layout},this.props.children),React.createElement("div",{ref:function ref(element){_this4.moreButtonRef=element;},className:styles.moreButtonWrapper},React.createElement(RippleButton,{fill:true,type:"plain",className:this.moreButtonStyles,onClick:this.props.handleMoreButton},React.createElement(I18n.Text,{string:this.props.moreLabel}))));}}]);}(Component);_defineProperty(ChipLayout,"defaultProps",{children:null,handleMoreButton:function handleMoreButton(){},invertMoreButton:false,maxRows:2,moreLabel:'more',pathname:''});export default ChipLayout;
@@ -0,0 +1,5 @@
1
+ import React from'react';import{mount}from'enzyme';import Chip from'@shopgate/pwa-ui-shared/Chip';import ChipsLayout from"./index";/**
2
+ * Since the component uses the <Measure> component it needs an actual
3
+ * browser to be tested as it needs a full browser that supports styling and
4
+ * width/height calculation.
5
+ */describe('<ChipsLayout />',function(){it('should render with one chip',function(){var Component=React.createElement(ChipsLayout,null,React.createElement(Chip,{id:"some-id"},"foo"));var wrapper=mount(Component);expect(wrapper).toMatchSnapshot();expect(wrapper.find(Chip).length).toEqual(1);expect(wrapper.find(Chip).at(0).find('button').at(1).text()).toEqual('foo');});it('should render with two chips',function(){var Component=React.createElement(ChipsLayout,null,React.createElement(Chip,{id:"some-id"},"foo"),React.createElement(Chip,{id:"some-other-id"},"bar"));var wrapper=mount(Component);expect(wrapper).toMatchSnapshot();expect(wrapper.find(Chip).length).toEqual(2);expect(wrapper.find(Chip).at(0).find('button').at(1).text()).toEqual('foo');expect(wrapper.find(Chip).at(1).find('button').at(1).text()).toEqual('bar');});});