fontdue-js 1.10.0 → 1.10.2

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 (316) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/__generated__/AddToCartBannerQuery.graphql.js +28 -42
  3. package/dist/__generated__/AddToCartBanner_order.graphql.js +12 -21
  4. package/dist/__generated__/AddressFieldsRefetchQuery.graphql.d.ts +17 -0
  5. package/dist/__generated__/{CheckoutRefetchQuery.graphql.js → AddressFieldsRefetchQuery.graphql.js} +57 -120
  6. package/dist/__generated__/AddressFields_viewer.graphql.d.ts +16 -0
  7. package/dist/__generated__/AddressFields_viewer.graphql.js +133 -25
  8. package/dist/__generated__/BuyButtonIDQuery.graphql.js +36 -54
  9. package/dist/__generated__/BuyButtonSlugQuery.graphql.js +39 -59
  10. package/dist/__generated__/BuyButton_collection.graphql.js +21 -29
  11. package/dist/__generated__/CartButtonQuery.graphql.js +7 -12
  12. package/dist/__generated__/CartButton_order.graphql.js +1 -2
  13. package/dist/__generated__/CartItem_license.graphql.js +19 -32
  14. package/dist/__generated__/CartItem_licenseSelection.graphql.js +27 -44
  15. package/dist/__generated__/CartItem_node.graphql.js +58 -95
  16. package/dist/__generated__/CartItem_product.graphql.js +24 -39
  17. package/dist/__generated__/CartItem_variable.graphql.js +18 -27
  18. package/dist/__generated__/CartItem_viewer.graphql.js +19 -32
  19. package/dist/__generated__/CartOrderApplyCouponMutation.graphql.js +209 -327
  20. package/dist/__generated__/CartOrderCompleteOrderMutation.graphql.d.ts +3 -0
  21. package/dist/__generated__/CartOrderCompleteOrderMutation.graphql.js +229 -320
  22. package/dist/__generated__/CartOrderRemoveDiscountMutation.graphql.js +195 -305
  23. package/dist/__generated__/CartOrderUpdateMutation.graphql.js +229 -349
  24. package/dist/__generated__/CartOrder_UpdateErrors.graphql.d.ts +15 -0
  25. package/dist/__generated__/CartOrder_UpdateErrors.graphql.js +37 -0
  26. package/dist/__generated__/CartOrder_order.graphql.d.ts +0 -1
  27. package/dist/__generated__/CartOrder_order.graphql.js +21 -45
  28. package/dist/__generated__/CartOrder_viewer.graphql.js +1 -2
  29. package/dist/__generated__/CartQuery.graphql.js +203 -330
  30. package/dist/__generated__/CartStateApplyCouponMutation.graphql.js +45 -71
  31. package/dist/__generated__/CartStateRemoveDiscountMutation.graphql.js +31 -49
  32. package/dist/__generated__/CartStateUpdateMutation.graphql.js +141 -237
  33. package/dist/__generated__/CartState_order.graphql.js +13 -24
  34. package/dist/__generated__/CartTotals_order.graphql.js +19 -34
  35. package/dist/__generated__/Cart_viewer.graphql.js +1 -2
  36. package/dist/__generated__/CharacterViewer_Query.graphql.js +117 -140
  37. package/dist/__generated__/CharacterViewer_SlugQuery.graphql.js +120 -145
  38. package/dist/__generated__/CharacterViewer_collection.graphql.d.ts +4 -0
  39. package/dist/__generated__/CharacterViewer_collection.graphql.js +96 -115
  40. package/dist/__generated__/CharacterViewer_family.graphql.d.ts +2 -0
  41. package/dist/__generated__/CharacterViewer_family.graphql.js +42 -48
  42. package/dist/__generated__/CheckoutUpdateCustomerMutation.graphql.js +209 -327
  43. package/dist/__generated__/CheckoutUpdateOrderMutation.graphql.js +240 -390
  44. package/dist/__generated__/Checkout_UpdateOrderErrors.graphql.js +3 -9
  45. package/dist/__generated__/Checkout_identity.graphql.js +1 -2
  46. package/dist/__generated__/Checkout_order.graphql.js +72 -86
  47. package/dist/__generated__/Checkout_viewer.graphql.d.ts +0 -6
  48. package/dist/__generated__/Checkout_viewer.graphql.js +3 -49
  49. package/dist/__generated__/CollectionAa_Query.graphql.js +50 -72
  50. package/dist/__generated__/CollectionAa_product.graphql.js +18 -28
  51. package/dist/__generated__/CouponCodeInput_Refetch_Query.graphql.js +29 -41
  52. package/dist/__generated__/CouponCodeInput_order.graphql.js +1 -2
  53. package/dist/__generated__/CouponCodeInput_viewer.graphql.js +1 -2
  54. package/dist/__generated__/CouponText_coupon.graphql.js +1 -2
  55. package/dist/__generated__/CustomerLoginFormLoginMutation.graphql.js +27 -36
  56. package/dist/__generated__/DownloadRefetchQuery.graphql.js +24 -37
  57. package/dist/__generated__/Download_order.graphql.js +1 -2
  58. package/dist/__generated__/FamilyList_node.graphql.js +3 -9
  59. package/dist/__generated__/Family_node.graphql.js +5 -9
  60. package/dist/__generated__/FontFamiliesQuery.graphql.js +127 -189
  61. package/dist/__generated__/FontFamilies_node.graphql.js +5 -9
  62. package/dist/__generated__/FontStyle_fontStyle.graphql.js +1 -2
  63. package/dist/__generated__/IdentityBox_identity.graphql.js +1 -2
  64. package/dist/__generated__/License_node.graphql.js +27 -42
  65. package/dist/__generated__/NewsletterSignupUpdateCustomerMutation.graphql.js +29 -38
  66. package/dist/__generated__/NewsletterSignup_Query.graphql.js +3 -9
  67. package/dist/__generated__/NewsletterSignup_viewer.graphql.js +3 -9
  68. package/dist/__generated__/PrecartAddToCartMutation.graphql.js +209 -327
  69. package/dist/__generated__/PrecartQuery.graphql.js +116 -188
  70. package/dist/__generated__/Precart_collection.graphql.js +1 -2
  71. package/dist/__generated__/Precart_viewer.graphql.js +68 -103
  72. package/dist/__generated__/PriceBarSection_RefetchQuery.graphql.js +49 -71
  73. package/dist/__generated__/PriceBarSection_node.graphql.js +23 -37
  74. package/dist/__generated__/PriceBar_node.graphql.js +5 -9
  75. package/dist/__generated__/Price_price.graphql.js +1 -2
  76. package/dist/__generated__/SKUPrice_RefetchQuery.graphql.js +18 -28
  77. package/dist/__generated__/SKUPrice_sku.graphql.js +1 -2
  78. package/dist/__generated__/SelectButton_sku.graphql.js +1 -2
  79. package/dist/__generated__/SpecimenLinkQuery.graphql.js +14 -24
  80. package/dist/__generated__/SpecimenLink_node.graphql.js +1 -2
  81. package/dist/__generated__/StoreModalBundleButton_bundle.graphql.js +3 -9
  82. package/dist/__generated__/StoreModalCartQuery.graphql.js +148 -266
  83. package/dist/__generated__/StoreModalCheckoutQuery.graphql.js +99 -122
  84. package/dist/__generated__/StoreModalContainerQuery.graphql.js +41 -53
  85. package/dist/__generated__/StoreModalDownloadRefetchQuery.graphql.js +14 -24
  86. package/dist/__generated__/StoreModalDownload_order.graphql.js +1 -2
  87. package/dist/__generated__/StoreModalFamilyButton_collection.graphql.js +4 -9
  88. package/dist/__generated__/StoreModalFamily_collection.graphql.js +36 -47
  89. package/dist/__generated__/StoreModalIndexItem_fontCollection.graphql.js +17 -26
  90. package/dist/__generated__/StoreModalIndexQuery.graphql.js +50 -74
  91. package/dist/__generated__/StoreModalProductLicenseSelection_viewer.graphql.js +1 -2
  92. package/dist/__generated__/StoreModalProductLicense_license.graphql.js +18 -32
  93. package/dist/__generated__/StoreModalProductQuery.graphql.d.ts +4 -0
  94. package/dist/__generated__/StoreModalProductQuery.graphql.js +265 -395
  95. package/dist/__generated__/StoreModalProductSummaryAddToCartMutation.graphql.js +25 -37
  96. package/dist/__generated__/StoreModalProductSummaryRefetchQuery.graphql.js +61 -92
  97. package/dist/__generated__/StoreModalProductSummary_viewer.graphql.js +36 -58
  98. package/dist/__generated__/StoreModalReviewCompleteOrderMutation.graphql.js +87 -124
  99. package/dist/__generated__/StoreModalReviewIdentity_identity.graphql.js +1 -2
  100. package/dist/__generated__/StoreModalReviewQuery.graphql.js +67 -101
  101. package/dist/__generated__/StoreModalReview_order.graphql.js +3 -9
  102. package/dist/__generated__/StoreModalReview_viewer.graphql.js +1 -2
  103. package/dist/__generated__/StoreModalStyleButton_fontStyle.graphql.js +19 -30
  104. package/dist/__generated__/StripeProvider_viewer.graphql.js +1 -2
  105. package/dist/__generated__/TestFontsFormUpdateCustomerMutation.graphql.js +209 -327
  106. package/dist/__generated__/TestFontsForm_Query.graphql.js +20 -29
  107. package/dist/__generated__/TestFontsForm_viewer.graphql.js +3 -9
  108. package/dist/__generated__/TestModeBannerQuery.graphql.js +1 -2
  109. package/dist/__generated__/TestModeBanner_viewer.graphql.js +1 -2
  110. package/dist/__generated__/ThemeConfigQuery.graphql.js +1 -2
  111. package/dist/__generated__/ThemeConfig_viewer.graphql.js +1 -2
  112. package/dist/__generated__/TypeTesterFeatures_fontStyle.graphql.js +1 -2
  113. package/dist/__generated__/TypeTesterFloatingToolbar_testers.graphql.js +1 -2
  114. package/dist/__generated__/TypeTesterStandalone_StyleQuery.graphql.js +147 -215
  115. package/dist/__generated__/TypeTesterStyleSelectData_fontStyle.graphql.js +5 -12
  116. package/dist/__generated__/TypeTesterStyleSelectData_fontStyleData.graphql.js +1 -2
  117. package/dist/__generated__/TypeTesterStyleSelectData_viewer.graphql.js +17 -29
  118. package/dist/__generated__/TypeTester_NewStyleQuery.graphql.js +116 -165
  119. package/dist/__generated__/TypeTester_fontStyle.graphql.js +37 -46
  120. package/dist/__generated__/TypeTester_sku.graphql.js +1 -2
  121. package/dist/__generated__/TypeTester_viewer.graphql.js +1 -2
  122. package/dist/__generated__/TypeTestersIDQuery.graphql.js +224 -372
  123. package/dist/__generated__/TypeTestersSlugQuery.graphql.js +226 -375
  124. package/dist/__generated__/TypeTesters_collection.graphql.js +26 -44
  125. package/dist/__generated__/TypeTesters_viewer.graphql.js +1 -2
  126. package/dist/__generated__/VariableTableAmounts_option.graphql.js +1 -2
  127. package/dist/__generated__/VariableTableAmounts_variable.graphql.js +1 -2
  128. package/dist/__generated__/productState_Query.graphql.js +93 -150
  129. package/dist/__generated__/productState_bundle.graphql.js +27 -38
  130. package/dist/__generated__/productState_collection.graphql.js +44 -66
  131. package/dist/__generated__/productState_node.graphql.js +55 -88
  132. package/dist/__generated__/productState_sku.graphql.js +1 -2
  133. package/dist/__generated__/useFeaturesData_fontStyle.graphql.js +1 -2
  134. package/dist/__generated__/useTotalStyles_fontCollection.graphql.js +4 -9
  135. package/dist/components/AddToCartBanner/index.js +6 -29
  136. package/dist/components/BuyButton/index.js +25 -41
  137. package/dist/components/BuyingOptions/index.js +10 -14
  138. package/dist/components/Cart/AddressFields.d.ts +2 -4
  139. package/dist/components/Cart/AddressFields.js +206 -191
  140. package/dist/components/Cart/CartItem/VariableTextInput.js +1 -20
  141. package/dist/components/Cart/CartItem/index.d.ts +1 -10
  142. package/dist/components/Cart/CartItem/index.js +74 -106
  143. package/dist/components/Cart/CartOrder.d.ts +11 -0
  144. package/dist/components/Cart/CartOrder.js +313 -402
  145. package/dist/components/Cart/CartState.js +17 -24
  146. package/dist/components/Cart/CartTotals.js +66 -73
  147. package/dist/components/Cart/Checkout.js +275 -463
  148. package/dist/components/Cart/CheckoutSteps.js +0 -2
  149. package/dist/components/Cart/CouponCodeInput.js +2 -25
  150. package/dist/components/Cart/CustomerFields.d.ts +3 -7
  151. package/dist/components/Cart/CustomerFields.js +9 -18
  152. package/dist/components/Cart/Download.js +11 -25
  153. package/dist/components/Cart/EmptyCart.js +5 -12
  154. package/dist/components/Cart/IdentityBox.js +27 -31
  155. package/dist/components/Cart/index.js +23 -35
  156. package/dist/components/Cart/injectRelayEnvironment.js +1 -8
  157. package/dist/components/Cart/types.d.ts +10 -0
  158. package/dist/components/Cart/utils.js +0 -5
  159. package/dist/components/CartButton/index.js +13 -31
  160. package/dist/components/CharacterViewer/index.js +95 -114
  161. package/dist/components/Checkbox/index.js +1 -10
  162. package/dist/components/CollectionAa/index.js +15 -26
  163. package/dist/components/ComponentsContext.js +0 -4
  164. package/dist/components/ConfigContext.js +1 -10
  165. package/dist/components/CookieNotification/index.js +45 -56
  166. package/dist/components/CouponText/index.js +7 -16
  167. package/dist/components/CustomerLoginForm/index.js +8 -19
  168. package/dist/components/Family/FamilyList.js +5 -14
  169. package/dist/components/Family/index.js +5 -21
  170. package/dist/components/FontFamilies/index.js +15 -29
  171. package/dist/components/FontStyle/index.js +14 -19
  172. package/dist/components/FontdueProvider/index.js +7 -21
  173. package/dist/components/Icons/Align.js +0 -5
  174. package/dist/components/Icons/ArrowDownRight.js +0 -4
  175. package/dist/components/Icons/ArrowLeft.js +0 -4
  176. package/dist/components/Icons/ArrowRight.js +0 -4
  177. package/dist/components/Icons/CarrotDown.js +0 -4
  178. package/dist/components/Icons/CarrotUp.js +0 -4
  179. package/dist/components/Icons/Cart.js +0 -4
  180. package/dist/components/Icons/CartNew.js +0 -4
  181. package/dist/components/Icons/Check.js +0 -4
  182. package/dist/components/Icons/Checkbox.js +0 -4
  183. package/dist/components/Icons/CheckboxChecked.js +0 -4
  184. package/dist/components/Icons/CheckboxCrossed.js +0 -4
  185. package/dist/components/Icons/CircledCheck.js +0 -4
  186. package/dist/components/Icons/CircledInfo.js +0 -4
  187. package/dist/components/Icons/CircledMinus.js +0 -4
  188. package/dist/components/Icons/ColorPicker.js +0 -4
  189. package/dist/components/Icons/CreditCard.js +0 -4
  190. package/dist/components/Icons/DownArrow.js +0 -4
  191. package/dist/components/Icons/DownloadFonts.js +0 -4
  192. package/dist/components/Icons/FrowningFace.js +0 -4
  193. package/dist/components/Icons/License.js +0 -4
  194. package/dist/components/Icons/Receipt.js +0 -4
  195. package/dist/components/Icons/User.js +0 -4
  196. package/dist/components/Icons/X.js +0 -4
  197. package/dist/components/Icons/index.js +0 -24
  198. package/dist/components/NewsletterSignup/index.js +24 -42
  199. package/dist/components/Precart/License.js +8 -14
  200. package/dist/components/Precart/index.js +19 -68
  201. package/dist/components/Price/index.js +34 -45
  202. package/dist/components/PriceBar/PriceBarSection.js +17 -33
  203. package/dist/components/PriceBar/index.js +2 -25
  204. package/dist/components/Root/index.js +6 -29
  205. package/dist/components/Root/productState.js +17 -37
  206. package/dist/components/SKUPrice/index.js +11 -23
  207. package/dist/components/Select/index.js +24 -24
  208. package/dist/components/SelectButton/index.js +16 -34
  209. package/dist/components/SelectField/index.js +28 -34
  210. package/dist/components/SpecimenLink/index.js +15 -24
  211. package/dist/components/StickyNav/index.js +16 -34
  212. package/dist/components/StoreModal/StoreModalBundleButton.js +8 -24
  213. package/dist/components/StoreModal/StoreModalCart.js +10 -27
  214. package/dist/components/StoreModal/StoreModalCheckout.d.ts +2 -4
  215. package/dist/components/StoreModal/StoreModalCheckout.js +7 -34
  216. package/dist/components/StoreModal/StoreModalCheckoutContext.d.ts +1 -1
  217. package/dist/components/StoreModal/StoreModalCheckoutContext.js +4 -5
  218. package/dist/components/StoreModal/StoreModalContainer.js +4 -28
  219. package/dist/components/StoreModal/StoreModalDownload.js +5 -16
  220. package/dist/components/StoreModal/StoreModalFamily.js +5 -23
  221. package/dist/components/StoreModal/StoreModalFamilyButton.js +8 -30
  222. package/dist/components/StoreModal/StoreModalIndex.js +4 -12
  223. package/dist/components/StoreModal/StoreModalIndexItem.js +4 -24
  224. package/dist/components/StoreModal/StoreModalLoader.js +4 -9
  225. package/dist/components/StoreModal/StoreModalProduct.js +10 -22
  226. package/dist/components/StoreModal/StoreModalReview.d.ts +2 -2
  227. package/dist/components/StoreModal/StoreModalReview.js +13 -49
  228. package/dist/components/StoreModal/StoreModalReviewIdentity.js +6 -11
  229. package/dist/components/StoreModal/StoreModalRouter.js +0 -9
  230. package/dist/components/StoreModal/StoreModalRouterContext.js +0 -4
  231. package/dist/components/StoreModal/StoreModalStyleButton.js +9 -26
  232. package/dist/components/StoreModal/createRouter.js +3 -10
  233. package/dist/components/StoreModal/index.js +0 -13
  234. package/dist/components/StoreModal/routes.js +6 -16
  235. package/dist/components/StoreModalProductLicenseSelection/ContainerElement.js +15 -16
  236. package/dist/components/StoreModalProductLicenseSelection/LicenseElement.js +9 -17
  237. package/dist/components/StoreModalProductLicenseSelection/LicenseVariableElement.js +30 -31
  238. package/dist/components/StoreModalProductLicenseSelection/LicenseVariableRadioElement.js +15 -21
  239. package/dist/components/StoreModalProductLicenseSelection/StoreModalProductLicense.js +23 -36
  240. package/dist/components/StoreModalProductLicenseSelection/index.js +12 -18
  241. package/dist/components/StoreModalProductSummary/index.js +10 -33
  242. package/dist/components/StripeProvider/index.d.ts +7 -5
  243. package/dist/components/StripeProvider/index.js +24 -31
  244. package/dist/components/Stylesheet/index.js +7 -12
  245. package/dist/components/TestFontsForm/TestFontsFormElement.js +1 -7
  246. package/dist/components/TestFontsForm/index.js +34 -52
  247. package/dist/components/TestModeBanner/index.js +12 -18
  248. package/dist/components/TextField/index.d.ts +5 -4
  249. package/dist/components/TextField/index.js +33 -35
  250. package/dist/components/ThemeConfig/index.js +10 -16
  251. package/dist/components/TypeTester/TypeTesterAlignButtons.js +5 -9
  252. package/dist/components/TypeTester/TypeTesterBullet.js +5 -10
  253. package/dist/components/TypeTester/TypeTesterContent.js +12 -20
  254. package/dist/components/TypeTester/TypeTesterContext.js +34 -47
  255. package/dist/components/TypeTester/TypeTesterEditAll.js +0 -9
  256. package/dist/components/TypeTester/TypeTesterFeatures.js +16 -35
  257. package/dist/components/TypeTester/TypeTesterFeaturesButton.js +7 -21
  258. package/dist/components/TypeTester/TypeTesterFitter.js +6 -11
  259. package/dist/components/TypeTester/TypeTesterFloatingToolbar.js +10 -23
  260. package/dist/components/TypeTester/TypeTesterInput.js +7 -17
  261. package/dist/components/TypeTester/TypeTesterSlider.js +17 -25
  262. package/dist/components/TypeTester/TypeTesterStandalone.js +18 -26
  263. package/dist/components/TypeTester/TypeTesterStandaloneElement.js +11 -20
  264. package/dist/components/TypeTester/TypeTesterState.js +4 -11
  265. package/dist/components/TypeTester/TypeTesterStyleSelect.js +38 -45
  266. package/dist/components/TypeTester/TypeTesterStyleSelectData.js +18 -36
  267. package/dist/components/TypeTester/TypeTesterToolbar.js +9 -21
  268. package/dist/components/TypeTester/TypeTesterVariableAxes.js +12 -18
  269. package/dist/components/TypeTester/index.js +24 -54
  270. package/dist/components/TypeTester/useFeaturesData.js +12 -19
  271. package/dist/components/TypeTester/useTypeTesterStyler.js +27 -35
  272. package/dist/components/TypeTesters/TypeTestersElement.js +14 -17
  273. package/dist/components/TypeTesters/index.js +45 -71
  274. package/dist/components/VariableTableAmounts/index.js +5 -13
  275. package/dist/components/elements/Button/index.js +12 -14
  276. package/dist/components/elements/EmptyCart/index.js +0 -6
  277. package/dist/components/elements/StoreModalCartLayout/index.js +29 -31
  278. package/dist/components/elements/StoreModalContainer/StoreModalContainerContext.js +0 -4
  279. package/dist/components/elements/StoreModalContainer/index.js +15 -24
  280. package/dist/components/elements/StoreModalDownloadLayout/index.js +17 -19
  281. package/dist/components/elements/StoreModalFamily/index.js +22 -23
  282. package/dist/components/elements/StoreModalFamilyButton/index.js +13 -19
  283. package/dist/components/elements/StoreModalIndexItem/index.js +9 -12
  284. package/dist/components/elements/StoreModalLoadingScreen/index.js +0 -5
  285. package/dist/components/elements/StoreModalPageContainer/index.js +15 -16
  286. package/dist/components/elements/StoreModalReviewConfirm/index.js +9 -17
  287. package/dist/components/elements/StoreModalReviewItem/index.js +11 -12
  288. package/dist/components/elements/StoreModalReviewLayout/index.js +50 -52
  289. package/dist/components/elements/StoreModalStyleButton/index.js +11 -16
  290. package/dist/components/useFontStyle.js +6 -11
  291. package/dist/components/useInterval.js +4 -7
  292. package/dist/components/useTotalStyles.js +4 -11
  293. package/dist/hooks.js +0 -3
  294. package/dist/reducer.js +39 -65
  295. package/dist/relay-environment.js +0 -5
  296. package/dist/utils.js +17 -29
  297. package/dist/vanilla/FontStyle.js +10 -18
  298. package/dist/vanilla/TruncatedMarkdown.js +0 -6
  299. package/fontdue.css +6 -4
  300. package/fontdue.css.map +1 -1
  301. package/package.json +7 -5
  302. package/dist/__generated__/AddressFields_countryData.graphql.d.ts +0 -24
  303. package/dist/__generated__/AddressFields_countryData.graphql.js +0 -92
  304. package/dist/__generated__/CheckoutRefetchQuery.graphql.d.ts +0 -17
  305. package/dist/__generated__/Checkout_Refetch_Query.graphql.d.ts +0 -17
  306. package/dist/__generated__/Checkout_Refetch_Query.graphql.js +0 -296
  307. package/dist/__generated__/TypeTesterData_typeTester.graphql.d.ts +0 -20
  308. package/dist/__generated__/TypeTesterData_typeTester.graphql.js +0 -70
  309. package/dist/__generated__/TypeTesterFeatures_stylisticSetName.graphql.d.ts +0 -14
  310. package/dist/__generated__/TypeTesterFeatures_stylisticSetName.graphql.js +0 -35
  311. package/dist/__generated__/TypeTester_StyleQuery.graphql.d.ts +0 -19
  312. package/dist/__generated__/TypeTester_StyleQuery.graphql.js +0 -475
  313. package/dist/components/Family/translations.js +0 -78
  314. package/dist/components/StripeProvider/AsyncStripeProvider.js +0 -71
  315. package/dist/components/TypeTesterData/index.d.ts +0 -7
  316. package/dist/components/TypeTesterData/index.js +0 -40
@@ -4,51 +4,24 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _react = _interopRequireWildcard(require("react"));
9
-
10
8
  var _reactRelay = require("react-relay");
11
-
12
- var _reactStripeElements = require("react-stripe-elements");
13
-
9
+ var _reactStripeJs = require("@stripe/react-stripe-js");
14
10
  var _Icons = require("../Icons");
15
-
16
11
  var _AddressFields = _interopRequireDefault(require("./AddressFields"));
17
-
18
12
  var _CustomerFields = _interopRequireDefault(require("./CustomerFields"));
19
-
20
13
  var _CheckoutSteps = _interopRequireDefault(require("./CheckoutSteps"));
21
-
22
- var _injectRelayEnvironment = _interopRequireDefault(require("./injectRelayEnvironment"));
23
-
24
- var _CheckoutUpdateCustomerMutation, _CheckoutUpdateOrderMutation, _Checkout_identity, _Checkout_order, _Checkout_viewer, _Checkout_Refetch_Query;
25
-
14
+ var _ConfigContext = _interopRequireDefault(require("../ConfigContext"));
15
+ var _Checkout_identity, _CheckoutUpdateCustomerMutation, _Checkout_UpdateOrderErrors, _CheckoutUpdateOrderMutation, _Checkout_order, _Checkout_viewer;
26
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
-
28
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
-
30
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
-
32
- 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); }
33
-
34
- 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; }
35
-
36
19
  const MOBILE = 'mobile';
37
- const DESKTOP = 'desktop'; // countryData will take care of knowing which address fields
38
- // are required
20
+ const DESKTOP = 'desktop';
39
21
 
22
+ // countryData will take care of knowing which address fields
23
+ // are required
40
24
  const IDENTITY_REQUIRED_FIELDS = ['name', 'email', 'phone', 'country'];
41
- const stepFields = {
42
- [_CheckoutSteps.default.Customer]: 'customer',
43
- [_CheckoutSteps.default.Billing]: 'billingIdentity',
44
- [_CheckoutSteps.default.Licensee]: 'licenseeIdentity'
45
- };
46
-
47
- const getCountryFromState = (state, step) => {
48
- const currentStateFields = state[stepFields[step]];
49
- return currentStateFields ? currentStateFields.country : null;
50
- };
51
-
52
25
  const parseCustomProperties = props => {
53
26
  if (!props) return {};
54
27
  return props.reduce((acc, prop) => {
@@ -57,327 +30,267 @@ const parseCustomProperties = props => {
57
30
  return acc;
58
31
  }, {});
59
32
  };
60
-
33
+ _Checkout_identity !== void 0 ? _Checkout_identity : (_Checkout_identity = require("../../__generated__/Checkout_identity.graphql"), _Checkout_identity.hash && _Checkout_identity.hash !== "e69fe84d0b5b4a205aa52d5eefe1048d" && console.error("The definition of 'Checkout_identity' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _Checkout_identity);
61
34
  const updateCustomerMutation = _CheckoutUpdateCustomerMutation !== void 0 ? _CheckoutUpdateCustomerMutation : (_CheckoutUpdateCustomerMutation = require("../../__generated__/CheckoutUpdateCustomerMutation.graphql"), _CheckoutUpdateCustomerMutation.hash && _CheckoutUpdateCustomerMutation.hash !== "0b5cfd0771be9b3107817aefcc7029cf" && console.error("The definition of 'CheckoutUpdateCustomerMutation' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _CheckoutUpdateCustomerMutation);
62
- const updateOrderMutation = _CheckoutUpdateOrderMutation !== void 0 ? _CheckoutUpdateOrderMutation : (_CheckoutUpdateOrderMutation = require("../../__generated__/CheckoutUpdateOrderMutation.graphql"), _CheckoutUpdateOrderMutation.hash && _CheckoutUpdateOrderMutation.hash !== "6e5ed083f06e766e8f156ce7ed59999b" && console.error("The definition of 'CheckoutUpdateOrderMutation' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _CheckoutUpdateOrderMutation);
63
-
64
- class CheckoutFormBase extends _react.default.Component {
65
- constructor(_props) {
66
- super(_props);
67
-
68
- _defineProperty(this, "setMediaQuery", () => {
69
- window.requestAnimationFrame(() => {
70
- this.setState({
71
- mediaQuery: window.innerWidth < 960 ? MOBILE : DESKTOP
72
- });
73
- });
74
- });
75
-
76
- _defineProperty(this, "submitMutation", ({
77
- mutation,
78
- input,
79
- onSuccess
80
- }) => {
81
- (0, _reactRelay.commitMutation)(this.props.environment, {
82
- mutation,
83
- variables: {
84
- input
85
- },
86
- onCompleted: (res, errors) => {
87
- if (errors && errors.length > 0) {
88
- this.setState({
89
- error: errors[0].message,
90
- submitting: false
91
- });
92
- this.props.onScrollToTop();
93
- } else if (res.updateOrder && res.updateOrder.errors) {
94
- this.setState({
95
- submitting: false,
96
- errorsObject: res.updateOrder.errors
97
- });
98
- this.props.onScrollToTop();
99
- } else {
100
- if (typeof onSuccess === 'function') onSuccess();
101
- this.setState({
102
- submitting: false,
103
- error: null
104
- });
105
- }
106
- },
107
- onError: ({
108
- message
109
- }) => {
110
- this.setState({
111
- error: message,
112
- submitting: false
113
- });
114
- this.props.onScrollToTop();
115
- }
116
- });
117
- });
118
-
119
- _defineProperty(this, "updateCustomer", props => {
120
- this.submitMutation({ ...props,
121
- mutation: updateCustomerMutation
122
- });
35
+ _Checkout_UpdateOrderErrors !== void 0 ? _Checkout_UpdateOrderErrors : (_Checkout_UpdateOrderErrors = require("../../__generated__/Checkout_UpdateOrderErrors.graphql"), _Checkout_UpdateOrderErrors.hash && _Checkout_UpdateOrderErrors.hash !== "d76073037a16138de572dbb22d72da8f" && console.error("The definition of 'Checkout_UpdateOrderErrors' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _Checkout_UpdateOrderErrors);
36
+ const updateOrderMutation = _CheckoutUpdateOrderMutation !== void 0 ? _CheckoutUpdateOrderMutation : (_CheckoutUpdateOrderMutation = require("../../__generated__/CheckoutUpdateOrderMutation.graphql"), _CheckoutUpdateOrderMutation.hash && _CheckoutUpdateOrderMutation.hash !== "089745e2478edf385a09357905e4173c" && console.error("The definition of 'CheckoutUpdateOrderMutation' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _CheckoutUpdateOrderMutation);
37
+ const Checkout = _ref => {
38
+ var _orderData$customer, _orderData$billingIde, _orderData$licenseeId, _orderData$licenseeIs;
39
+ let {
40
+ order,
41
+ viewer,
42
+ checkoutStep,
43
+ setCheckoutStep,
44
+ onScrollToTop,
45
+ onComplete,
46
+ error: errorProp,
47
+ saveText = 'Next',
48
+ onCancel
49
+ } = _ref;
50
+ const orderData = (0, _reactRelay.useFragment)(_Checkout_order !== void 0 ? _Checkout_order : (_Checkout_order = require("../../__generated__/Checkout_order.graphql"), _Checkout_order.hash && _Checkout_order.hash !== "693ae9c7f2c7fe9a179bad7b86c16928" && console.error("The definition of 'Checkout_order' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _Checkout_order), order);
51
+ const viewerData = (0, _reactRelay.useFragment)(_Checkout_viewer !== void 0 ? _Checkout_viewer : (_Checkout_viewer = require("../../__generated__/Checkout_viewer.graphql"), _Checkout_viewer.hash && _Checkout_viewer.hash !== "d20d03a2aab3f8bc454ac19fc6368178" && console.error("The definition of 'Checkout_viewer' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _Checkout_viewer), viewer);
52
+ const identity = {
53
+ name: '',
54
+ organization: '',
55
+ email: '',
56
+ phone: '',
57
+ country: 'US',
58
+ administrativeArea: null,
59
+ street: '',
60
+ locality: '',
61
+ sublocality: '',
62
+ zip: '',
63
+ vatNumber: ''
64
+ };
65
+ const [customer, setCustomer] = (0, _react.useState)((_orderData$customer = orderData === null || orderData === void 0 ? void 0 : orderData.customer) !== null && _orderData$customer !== void 0 ? _orderData$customer : {
66
+ name: null,
67
+ email: null,
68
+ newsletterOptIn: false
69
+ });
70
+ const [billingIdentity, setBillingIdentity] = (0, _react.useState)((_orderData$billingIde = orderData === null || orderData === void 0 ? void 0 : orderData.billingIdentity) !== null && _orderData$billingIde !== void 0 ? _orderData$billingIde : identity);
71
+ const [licenseeIdentity, setLicenseeIdentity] = (0, _react.useState)((_orderData$licenseeId = orderData === null || orderData === void 0 ? void 0 : orderData.licenseeIdentity) !== null && _orderData$licenseeId !== void 0 ? _orderData$licenseeId : identity);
72
+ const [billingRequired, setBillingRequired] = (0, _react.useState)();
73
+ const [licenseeRequired, setLicenseeRequired] = (0, _react.useState)(null);
74
+ const [licenseeIsBillingIdentity, setLicenseeIsBillingIdentity] = (0, _react.useState)((_orderData$licenseeIs = orderData === null || orderData === void 0 ? void 0 : orderData.licenseeIsBillingIdentity) !== null && _orderData$licenseeIs !== void 0 ? _orderData$licenseeIs : true);
75
+ const [error, setError] = (0, _react.useState)(null);
76
+ const [submitting, setSubmitting] = (0, _react.useState)(false);
77
+ const [mediaQuery, setMediaQuery] = (0, _react.useState)(DESKTOP);
78
+ (0, _react.useEffect)(() => {
79
+ const updateMediaQuery = () => {
80
+ setMediaQuery(window.innerWidth < 960 ? MOBILE : DESKTOP);
81
+ };
82
+ updateMediaQuery();
83
+ window.addEventListener('resize', updateMediaQuery);
84
+ return () => window.removeEventListener('resize', updateMediaQuery);
85
+ }, []);
86
+ (0, _react.useEffect)(() => {
87
+ setError(null);
88
+ setErrorsObject(null);
89
+ onScrollToTop();
90
+ }, [checkoutStep]);
91
+ const environment = (0, _reactRelay.useRelayEnvironment)();
92
+ const [errorsObject, setErrorsObject] = (0, _react.useState)(null);
93
+ const onCompleted = (res, errors, onSuccess) => {
94
+ var _res$updateOrder;
95
+ if (errors && errors.length > 0) {
96
+ setError(errors[0].message);
97
+ setSubmitting(false);
98
+ onScrollToTop();
99
+ } else if ('updateOrder' in res && (_res$updateOrder = res.updateOrder) !== null && _res$updateOrder !== void 0 && _res$updateOrder.errors) {
100
+ setSubmitting(false);
101
+ setErrorsObject(res.updateOrder.errors);
102
+ onScrollToTop();
103
+ } else {
104
+ if (typeof onSuccess === 'function') onSuccess();
105
+ setSubmitting(false);
106
+ setError(null);
107
+ }
108
+ };
109
+ const onError = error => {
110
+ setError(error.message);
111
+ setSubmitting(false);
112
+ onScrollToTop();
113
+ };
114
+ const updateCustomer = (variables, onSuccess) => {
115
+ (0, _reactRelay.commitMutation)(environment, {
116
+ mutation: updateCustomerMutation,
117
+ variables,
118
+ onCompleted: (res, errors) => onCompleted(res, errors, onSuccess),
119
+ onError
123
120
  });
124
-
125
- _defineProperty(this, "updateOrder", props => {
126
- this.submitMutation({ ...props,
127
- mutation: updateOrderMutation
128
- });
121
+ };
122
+ const updateOrder = (variables, onSuccess) => {
123
+ (0, _reactRelay.commitMutation)(environment, {
124
+ mutation: updateOrderMutation,
125
+ variables,
126
+ onCompleted: (res, errors) => onCompleted(res, errors, onSuccess)
129
127
  });
130
-
131
- _defineProperty(this, "handleSubmit", e => {
132
- e.preventDefault();
133
- const {
134
- customer,
135
- billingIdentity,
136
- licenseeIdentity,
137
- licenseeIsBillingIdentity
138
- } = this.state;
139
- const {
140
- onComplete,
141
- onCancel,
142
- checkoutStep,
143
- setCheckoutStep,
144
- order
145
- } = this.props;
146
- this.setState({
147
- submitting: true,
148
- error: null
128
+ };
129
+ const stripe = (0, _reactStripeJs.useStripe)();
130
+ const elements = (0, _reactStripeJs.useElements)();
131
+ const handleSubmit = () => {
132
+ setSubmitting(true);
133
+ setError(null);
134
+ if (checkoutStep === _CheckoutSteps.default.Customer) {
135
+ updateCustomer({
136
+ input: customer
137
+ }, () => setCheckoutStep(_CheckoutSteps.default.Billing));
138
+ }
139
+ if (checkoutStep === _CheckoutSteps.default.Billing) {
140
+ updateOrder({
141
+ input: {
142
+ billingIdentity
143
+ }
144
+ }, () => setCheckoutStep(_CheckoutSteps.default.Licensee));
145
+ }
146
+ if (checkoutStep === _CheckoutSteps.default.Licensee) {
147
+ updateOrder({
148
+ input: {
149
+ licenseeIsBillingIdentity,
150
+ licenseeIdentity: licenseeIsBillingIdentity ? null : licenseeIdentity
151
+ }
152
+ }, () => {
153
+ if (orderData !== null && orderData !== void 0 && orderData.canCompleteWithCoupon) {
154
+ onComplete();
155
+ } else {
156
+ setCheckoutStep(_CheckoutSteps.default.Payment);
157
+ }
149
158
  });
150
-
151
- if (checkoutStep === _CheckoutSteps.default.Customer) {
152
- this.updateCustomer({
153
- input: { ...customer
154
- },
155
- onSuccess: () => setCheckoutStep(_CheckoutSteps.default.Billing)
156
- });
157
- }
158
-
159
- if (checkoutStep === _CheckoutSteps.default.Billing) {
160
- this.updateOrder({
161
- input: {
162
- billingIdentity
163
- },
164
- onSuccess: () => setCheckoutStep(_CheckoutSteps.default.Licensee)
165
- });
159
+ }
160
+ if (checkoutStep === _CheckoutSteps.default.Payment) {
161
+ var _billingIdentity$stre, _billingIdentity$zip;
162
+ if (!stripe || !elements) {
163
+ console.error('Stripe failed to load');
164
+ return;
166
165
  }
167
-
168
- if (checkoutStep === _CheckoutSteps.default.Licensee) {
169
- this.updateOrder({
170
- input: {
171
- licenseeIsBillingIdentity,
172
- licenseeIdentity: licenseeIsBillingIdentity ? null : licenseeIdentity
173
- },
174
- onSuccess: () => {
175
- if (order.canCompleteWithCoupon) {
176
- onComplete();
177
- } else {
178
- setCheckoutStep(_CheckoutSteps.default.Payment);
179
- }
180
- }
181
- });
166
+ const card = elements.getElement(_reactStripeJs.CardElement);
167
+ if (!card) {
168
+ console.error('Didnt find Stripe Card element');
169
+ return;
182
170
  }
183
-
184
- if (checkoutStep === _CheckoutSteps.default.Payment) {
185
- const {
186
- stripe
187
- } = this.props;
188
- stripe.createPaymentMethod('card', {
189
- billing_details: {
190
- email: billingIdentity.email,
191
- name: billingIdentity.name,
192
- address: {
193
- line1: billingIdentity.street.split(/\n/)[0],
194
- city: billingIdentity.locality || '',
195
- state: billingIdentity.administrativeArea || '',
196
- country: billingIdentity.country,
197
- postal_code: billingIdentity.zip
198
- }
171
+ stripe.createPaymentMethod({
172
+ type: 'card',
173
+ card,
174
+ billing_details: {
175
+ email: billingIdentity.email,
176
+ name: billingIdentity.name,
177
+ address: {
178
+ line1: (_billingIdentity$stre = billingIdentity.street) === null || _billingIdentity$stre === void 0 ? void 0 : _billingIdentity$stre.split(/\n/)[0],
179
+ city: billingIdentity.locality || '',
180
+ state: billingIdentity.administrativeArea || '',
181
+ country: billingIdentity.country,
182
+ postal_code: (_billingIdentity$zip = billingIdentity.zip) !== null && _billingIdentity$zip !== void 0 ? _billingIdentity$zip : undefined
199
183
  }
200
- }).then(({
184
+ }
185
+ }).then(_ref2 => {
186
+ let {
201
187
  paymentMethod,
202
188
  error
203
- }) => {
204
- if (error) {
205
- this.setState({
206
- error: error.message,
207
- submitting: false
208
- });
209
- } else {
210
- this.updateOrder({
189
+ } = _ref2;
190
+ if (error) {
191
+ var _error$message;
192
+ setError((_error$message = error === null || error === void 0 ? void 0 : error.message) !== null && _error$message !== void 0 ? _error$message : 'Unknown Stripe error');
193
+ setSubmitting(false);
194
+ } else {
195
+ if (paymentMethod) {
196
+ updateOrder({
211
197
  input: {
212
198
  stripePaymentMethodId: paymentMethod.id
213
- },
214
- onSuccess: onComplete
215
- });
199
+ }
200
+ }, onComplete);
216
201
  }
217
- }).catch(console.error);
218
- }
219
- });
220
-
221
- _defineProperty(this, "removeErrorsFromFields", (key, fields) => Object.keys(fields).forEach(field => this.setState(({
222
- errorsObject
223
- }) => ({
224
- errorsObject: errorsObject ? {
225
- [key]: { ...errorsObject[key],
226
- [field]: null
227
- }
228
- } : null
229
- }))));
230
-
231
- _defineProperty(this, "makeFieldHandler", field => fields => {
232
- this.removeErrorsFromFields(field, fields);
233
- this.setState(currentState => ({
234
- [field]: { ...currentState[field],
235
- ...fields
236
202
  }
237
- }));
238
- });
239
-
240
- _defineProperty(this, "handleCustomerChange", this.makeFieldHandler('customer'));
241
-
242
- _defineProperty(this, "handleBillingChange", this.makeFieldHandler('billingIdentity'));
243
-
244
- _defineProperty(this, "handleLicenseeChange", this.makeFieldHandler('licenseeIdentity'));
245
-
246
- _defineProperty(this, "isValid", () => {
247
- const {
248
- checkoutStep,
249
- viewer
250
- } = this.props;
251
- const currentState = this.state[stepFields[checkoutStep]];
252
-
253
- const fieldHasValue = field => currentState[field] !== '' && currentState[field] !== null && currentState[field] !== undefined;
254
-
255
- if (checkoutStep === _CheckoutSteps.default.Customer) {
256
- return ['name', 'email'].every(fieldHasValue);
203
+ }).catch(console.error);
204
+ }
205
+ };
206
+ const handleCustomerChange = value => setCustomer(currentValue => ({
207
+ ...currentValue,
208
+ ...value
209
+ }));
210
+ const handleBillingChange = value => {
211
+ setErrorsObject(currentValue => {
212
+ if (currentValue !== null && currentValue !== void 0 && currentValue.billingIdentity) {
213
+ const keys = Object.keys(value);
214
+ return {
215
+ ...currentValue,
216
+ billingIdentity: {
217
+ ...currentValue.billingIdentity,
218
+ ...keys.reduce((acc, field) => {
219
+ acc[field] = null;
220
+ return acc;
221
+ }, {})
222
+ }
223
+ };
257
224
  }
258
-
259
- if (checkoutStep === _CheckoutSteps.default.Billing || checkoutStep === _CheckoutSteps.default.Licensee) {
260
- var _viewer$countryData;
261
-
262
- if (!((_viewer$countryData = viewer.countryData) !== null && _viewer$countryData !== void 0 && _viewer$countryData.response)) return false;
263
- if (checkoutStep === _CheckoutSteps.default.Licensee && this.state.licenseeIsBillingIdentity) return true;
264
- return IDENTITY_REQUIRED_FIELDS.concat(viewer.countryData.response.require).every(fieldHasValue);
225
+ return null;
226
+ });
227
+ setBillingIdentity(currentValue => ({
228
+ ...currentValue,
229
+ ...value
230
+ }));
231
+ };
232
+ const handleLicenseeChange = value => {
233
+ setErrorsObject(currentValue => {
234
+ if (currentValue !== null && currentValue !== void 0 && currentValue.licenseeIdentity) {
235
+ const keys = Object.keys(value);
236
+ return {
237
+ ...currentValue,
238
+ licenseeIdentity: {
239
+ ...currentValue.licenseeIdentity,
240
+ ...keys.reduce((acc, field) => {
241
+ acc[field] = undefined;
242
+ return acc;
243
+ }, {})
244
+ }
245
+ };
265
246
  }
266
-
267
- return true;
247
+ return null;
268
248
  });
269
-
270
- const identity = {
271
- name: '',
272
- organization: '',
273
- email: '',
274
- phone: '',
275
- country: 'US',
276
- administrativeArea: null,
277
- street: '',
278
- locality: '',
279
- sublocality: '',
280
- zip: '',
281
- vatNumber: ''
282
- };
283
- this.state = {
284
- customer: _props.order.customer || {
285
- name: '',
286
- email: '',
287
- newsletterOptIn: false
288
- },
289
- billingIdentity: _props.order.billingIdentity || identity,
290
- licenseeIdentity: _props.order.licenseeIdentity || identity,
291
- licenseeIsBillingIdentity: _props.order.licenseeIsBillingIdentity || true,
292
- error: null,
293
- submitting: false,
294
- token: null,
295
- confirming: false // show confirmation + 'Pay' button
296
-
297
- };
298
- }
299
-
300
- componentDidMount() {
301
- this.setMediaQuery();
302
- window.addEventListener('resize', this.setMediaQuery);
303
-
304
- if (this.props.checkoutStep === _CheckoutSteps.default.Billing || this.props.checkoutStep === _CheckoutSteps.default.Licensee) {
305
- // difficult to query this data from identity stuff,
306
- // unless we add support for that to the schema
307
- // so we'll just do it after-the-fact
308
- this.props.onUpdateCountry(getCountryFromState(this.state, this.props.checkoutStep));
249
+ setLicenseeIdentity(currentValue => ({
250
+ ...currentValue,
251
+ ...value
252
+ }));
253
+ };
254
+ const isValid = () => {
255
+ if (checkoutStep === _CheckoutSteps.default.Customer) {
256
+ return Boolean(customer.name && customer.email);
309
257
  }
310
- }
311
-
312
- componentDidUpdate(prevProps, prevState) {
313
- // get country data for currently visible country;
314
- // we need country to be at this level since the isValid() step is here
315
- // and we need the `require` prop to know if it's valid
316
- if (this.props.checkoutStep === _CheckoutSteps.default.Billing || this.props.checkoutStep === _CheckoutSteps.default.Licensee) {
317
- const prevCountry = getCountryFromState(prevState, prevProps.checkoutStep);
318
- const currentCountry = getCountryFromState(this.state, this.props.checkoutStep);
319
-
320
- if (prevCountry !== currentCountry) {
321
- this.props.onUpdateCountry(currentCountry);
322
- }
258
+ if (checkoutStep === _CheckoutSteps.default.Billing) {
259
+ const requiredFields = IDENTITY_REQUIRED_FIELDS.concat(billingRequired !== null && billingRequired !== void 0 ? billingRequired : []);
260
+ return requiredFields.every(field => billingIdentity[field]);
323
261
  }
324
- }
325
-
326
- componentWillUnmount() {
327
- window.removeEventListener('resize', this.setMediaQuery);
328
- }
329
-
330
- componentWillReceiveProps(nextProps) {
331
- if (this.props.checkoutStep !== nextProps.checkoutStep) {
332
- // remove errors if not relavent to the current form
333
- this.setState({
334
- error: null,
335
- errorsObject: null
336
- });
262
+ if (checkoutStep === _CheckoutSteps.default.Licensee) {
263
+ if (licenseeIsBillingIdentity) return true;
264
+ const requiredFields = IDENTITY_REQUIRED_FIELDS.concat(licenseeRequired !== null && licenseeRequired !== void 0 ? licenseeRequired : []);
265
+ return requiredFields.every(field => licenseeIdentity[field]);
337
266
  }
338
- }
339
-
340
- renderErrors() {
341
- if (this.state.errorsObject) {
267
+ return true;
268
+ };
269
+ const renderErrors = () => {
270
+ if (errorsObject) {
342
271
  return /*#__PURE__*/_react.default.createElement("div", {
343
272
  className: "checkout-modal__errors"
344
273
  }, "Please correct the errors.");
345
274
  }
346
-
347
- if (!this.state.error && !this.props.error) {
275
+ if (!error && !errorProp) {
348
276
  return null;
349
277
  }
350
-
351
278
  return /*#__PURE__*/_react.default.createElement("div", {
352
279
  className: "checkout-modal__errors"
353
- }, this.state.error && /*#__PURE__*/_react.default.createElement("p", null, this.state.error), this.props.error && /*#__PURE__*/_react.default.createElement("p", null, this.props.error));
354
- }
355
-
356
- renderStep(checkoutStep) {
357
- var _viewer$themeConfig, _viewer$settings;
358
-
359
- const {
360
- mediaQuery,
361
- billingIdentity,
362
- licenseeIdentity,
363
- licenseeIsBillingIdentity,
364
- errorsObject,
365
- customer
366
- } = this.state;
367
- const {
368
- setCheckoutStep,
369
- viewer,
370
- countryDataUpdating,
371
- checkboxStyle
372
- } = this.props;
373
- const customProperties = parseCustomProperties(viewer === null || viewer === void 0 ? void 0 : (_viewer$themeConfig = viewer.themeConfig) === null || _viewer$themeConfig === void 0 ? void 0 : _viewer$themeConfig.customProperties); // stripe validates that the strings match this pattern and throws an error
280
+ }, error && /*#__PURE__*/_react.default.createElement("p", null, error), errorProp && /*#__PURE__*/_react.default.createElement("p", null, errorProp));
281
+ };
282
+ const config = (0, _react.useContext)(_ConfigContext.default);
283
+ const renderStep = checkoutStep => {
284
+ var _viewerData$themeConf, _viewerData$settings;
285
+ const customProperties = parseCustomProperties((_viewerData$themeConf = viewerData.themeConfig) === null || _viewerData$themeConf === void 0 ? void 0 : _viewerData$themeConf.customProperties);
286
+
287
+ // stripe validates that the strings match this pattern and throws an error
374
288
  // if they don't, and refuses to render the element. for example if a font
375
289
  // family has a special character in the name (which is actually valid).
376
290
  // so we just don't try to the fontFamily if it's not gonna be valid.
377
291
  // this regex is copied from the stripe js
378
-
379
292
  const stripeRegex = /^[#a-zA-Z0-9-_\s,"'().]*$/;
380
- let fontFamily = `"${(_viewer$settings = viewer.settings) === null || _viewer$settings === void 0 ? void 0 : _viewer$settings.uiFontName}", sans-serif`;
293
+ let fontFamily = `"${(_viewerData$settings = viewerData.settings) === null || _viewerData$settings === void 0 ? void 0 : _viewerData$settings.uiFontName}", sans-serif`;
381
294
  if (!stripeRegex.test(fontFamily)) fontFamily = undefined;
382
295
  const inputStyles = {
383
296
  base: {
@@ -393,17 +306,15 @@ class CheckoutFormBase extends _react.default.Component {
393
306
  color: customProperties['--error_color']
394
307
  }
395
308
  };
396
-
397
309
  if (checkoutStep === _CheckoutSteps.default.Customer) {
310
+ var _viewerData$settings2;
398
311
  return /*#__PURE__*/_react.default.createElement(_CustomerFields.default, {
399
312
  title: "Contact information",
400
313
  value: customer,
401
- onChange: this.handleCustomerChange,
402
- errorsObject: errorsObject && errorsObject.customer,
403
- optInLabel: viewer.settings.newsletterOptInLabel
314
+ onChange: handleCustomerChange,
315
+ optInLabel: (_viewerData$settings2 = viewerData.settings) === null || _viewerData$settings2 === void 0 ? void 0 : _viewerData$settings2.newsletterOptInLabel
404
316
  });
405
317
  }
406
-
407
318
  const customerBreadcrumb = /*#__PURE__*/_react.default.createElement("div", {
408
319
  className: "checkout-modal__section"
409
320
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -415,10 +326,7 @@ class CheckoutFormBase extends _react.default.Component {
415
326
  }, /*#__PURE__*/_react.default.createElement(_Icons.User, null), " Contact information", ' ', /*#__PURE__*/_react.default.createElement("span", {
416
327
  className: "checkout-modal__customer-info__check"
417
328
  }, /*#__PURE__*/_react.default.createElement(_Icons.Check, null)))));
418
-
419
329
  if (checkoutStep === _CheckoutSteps.default.Billing) {
420
- var _viewer$countryData2;
421
-
422
330
  return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, customerBreadcrumb, /*#__PURE__*/_react.default.createElement("div", {
423
331
  className: "checkout-modal__section"
424
332
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -426,17 +334,14 @@ class CheckoutFormBase extends _react.default.Component {
426
334
  }, /*#__PURE__*/_react.default.createElement("div", {
427
335
  className: "checkout-modal__customer-info-message"
428
336
  }, /*#__PURE__*/_react.default.createElement("p", null, /*#__PURE__*/_react.default.createElement(_Icons.Receipt, null), " Billing information")))), /*#__PURE__*/_react.default.createElement(_AddressFields.default, {
429
- title: "Billing information",
430
- countryData: (viewer === null || viewer === void 0 ? void 0 : (_viewer$countryData2 = viewer.countryData) === null || _viewer$countryData2 === void 0 ? void 0 : _viewer$countryData2.response) || null,
431
- viewer: viewer,
337
+ viewer: viewerData,
432
338
  value: billingIdentity,
433
- onChange: this.handleBillingChange,
339
+ onChange: handleBillingChange,
434
340
  requireAtLeast: IDENTITY_REQUIRED_FIELDS,
435
- errorsObject: errorsObject && errorsObject.billingIdentity,
436
- countryDataUpdating: countryDataUpdating
341
+ errorsObject: errorsObject === null || errorsObject === void 0 ? void 0 : errorsObject.billingIdentity,
342
+ onRequiredFieldsChange: setBillingRequired
437
343
  }));
438
344
  }
439
-
440
345
  const billingBreadcrumb = /*#__PURE__*/_react.default.createElement("div", {
441
346
  className: "checkout-modal__section"
442
347
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -448,10 +353,8 @@ class CheckoutFormBase extends _react.default.Component {
448
353
  }, /*#__PURE__*/_react.default.createElement(_Icons.Receipt, null), " Billing information", ' ', /*#__PURE__*/_react.default.createElement("span", {
449
354
  className: "checkout-modal__customer-info__check"
450
355
  }, /*#__PURE__*/_react.default.createElement(_Icons.Check, null)))));
451
-
452
356
  if (checkoutStep === _CheckoutSteps.default.Licensee) {
453
- var _viewer$countryData3;
454
-
357
+ var _config$form;
455
358
  return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, customerBreadcrumb, billingBreadcrumb, /*#__PURE__*/_react.default.createElement("div", {
456
359
  className: "checkout-modal__section"
457
360
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -466,25 +369,20 @@ class CheckoutFormBase extends _react.default.Component {
466
369
  type: "checkbox",
467
370
  id: "licensee-is-billing-identity",
468
371
  checked: licenseeIsBillingIdentity,
469
- onChange: e => this.setState({
470
- licenseeIsBillingIdentity: e.target.checked
471
- })
372
+ onChange: e => setLicenseeIsBillingIdentity(e.target.checked)
472
373
  }), /*#__PURE__*/_react.default.createElement("div", {
473
374
  className: "checkbox__icon"
474
- }, checkboxStyle === 'check' ? /*#__PURE__*/_react.default.createElement(_Icons.Check, null) : /*#__PURE__*/_react.default.createElement(_Icons.X, null))), /*#__PURE__*/_react.default.createElement("label", {
375
+ }, ((_config$form = config.form) === null || _config$form === void 0 ? void 0 : _config$form.checkboxStyle) === 'check' ? /*#__PURE__*/_react.default.createElement(_Icons.Check, null) : /*#__PURE__*/_react.default.createElement(_Icons.X, null))), /*#__PURE__*/_react.default.createElement("label", {
475
376
  htmlFor: "licensee-is-billing-identity"
476
377
  }, "Use the same billing details for licensee")), licenseeIsBillingIdentity === false && /*#__PURE__*/_react.default.createElement(_AddressFields.default, {
477
- title: "Licensee information",
478
- viewer: viewer,
479
- countryData: (viewer === null || viewer === void 0 ? void 0 : (_viewer$countryData3 = viewer.countryData) === null || _viewer$countryData3 === void 0 ? void 0 : _viewer$countryData3.response) || null,
378
+ viewer: viewerData,
480
379
  value: licenseeIdentity,
481
- onChange: this.handleLicenseeChange,
380
+ onChange: handleLicenseeChange,
482
381
  requireAtLeast: IDENTITY_REQUIRED_FIELDS,
483
- errorsObject: errorsObject && errorsObject.licenseeIdentity,
484
- countryDataUpdating: countryDataUpdating
382
+ errorsObject: errorsObject === null || errorsObject === void 0 ? void 0 : errorsObject.licenseeIdentity,
383
+ onRequiredFieldsChange: setLicenseeRequired
485
384
  }));
486
385
  }
487
-
488
386
  const licenseeBreadcrumb = /*#__PURE__*/_react.default.createElement("div", {
489
387
  className: "checkout-modal__section"
490
388
  }, /*#__PURE__*/_react.default.createElement("div", {
@@ -496,7 +394,6 @@ class CheckoutFormBase extends _react.default.Component {
496
394
  }, /*#__PURE__*/_react.default.createElement(_Icons.License, null), " Licensee information", ' ', /*#__PURE__*/_react.default.createElement("span", {
497
395
  className: "checkout-modal__customer-info__check"
498
396
  }, /*#__PURE__*/_react.default.createElement(_Icons.Check, null)))));
499
-
500
397
  if (checkoutStep === _CheckoutSteps.default.Payment) {
501
398
  return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, customerBreadcrumb, billingBreadcrumb, licenseeBreadcrumb, /*#__PURE__*/_react.default.createElement("div", {
502
399
  className: "checkout-modal__section"
@@ -514,121 +411,36 @@ class CheckoutFormBase extends _react.default.Component {
514
411
  className: "checkout-modal__credit-card-message__secondary-text"
515
412
  }, "(Secure payments powered by Stripe)"))))), /*#__PURE__*/_react.default.createElement("div", {
516
413
  className: "checkout-modal__section"
517
- }, /*#__PURE__*/_react.default.createElement(_reactStripeElements.CardElement, {
518
- style: inputStyles,
519
- hidePostalCode: true
414
+ }, /*#__PURE__*/_react.default.createElement(_reactStripeJs.CardElement, {
415
+ options: {
416
+ style: inputStyles,
417
+ hidePostalCode: true
418
+ }
520
419
  })), errorsObject && errorsObject.stripePaymentMethodId && errorsObject.stripePaymentMethodId.length > 0 && /*#__PURE__*/_react.default.createElement("p", {
521
420
  className: "checkout-modal__section__errors"
522
421
  }, errorsObject.stripePaymentMethodId[0]));
523
422
  }
524
-
525
423
  return null;
526
- }
527
-
528
- render() {
529
- const {
530
- saveText = 'Next',
531
- onCancel,
532
- checkoutStep
533
- } = this.props;
534
- return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, this.renderErrors(), /*#__PURE__*/_react.default.createElement("form", {
535
- onSubmit: this.handleSubmit,
536
- style: {
537
- display: this.state.confirming ? 'none' : 'contents'
538
- }
539
- }, /*#__PURE__*/_react.default.createElement("div", {
540
- className: "checkout-modal__sections"
541
- }, this.renderStep(checkoutStep)), /*#__PURE__*/_react.default.createElement("div", {
542
- className: "checkout-modal__buttons"
543
- }, /*#__PURE__*/_react.default.createElement("button", {
544
- className: "checkout-modal__button",
545
- onClick: onCancel,
546
- "data-label": "cancel",
547
- type: "button"
548
- }, "Cancel"), /*#__PURE__*/_react.default.createElement("button", {
549
- className: "checkout-modal__button",
550
- "data-label": "confirm",
551
- disabled: !this.isValid() || this.state.submitting,
552
- type: "submit"
553
- }, this.state.submitting ? 'Submitting...' : /*#__PURE__*/_react.default.createElement(_react.Fragment, null, saveText, /*#__PURE__*/_react.default.createElement("span", {
554
- className: "checkout-modal__button__arrow"
555
- }, " \u2192"))))));
556
- }
557
-
558
- }
559
-
560
- const CheckoutForm = (0, _injectRelayEnvironment.default)(CheckoutFormBase);
561
-
562
- class CheckoutComponent extends _react.default.Component {
563
- constructor(...args) {
564
- super(...args);
565
-
566
- _defineProperty(this, "state", {
567
- refetching: false
568
- });
569
-
570
- _defineProperty(this, "refetchCountryData", countryCode => {
571
- const {
572
- relay
573
- } = this.props;
574
-
575
- if (countryCode) {
576
- if (this.currentRefetch) {
577
- this.currentRefetch.dispose();
578
- }
579
-
580
- this.setState({
581
- refetching: true
582
- });
583
- this.currentRefetch = relay.refetch({
584
- countryCode,
585
- includeCountryCode: true
586
- }, null, () => {
587
- this.setState({
588
- refetching: false
589
- });
590
- });
591
- }
592
- });
593
- }
594
-
595
- componentDidUpdate(prevProps) {
596
- if (prevProps.checkoutStep !== this.props.checkoutStep) {
597
- this.props.onScrollToTop();
598
- }
599
- }
600
-
601
- render() {
602
- const {
603
- order,
604
- onCancel,
605
- onComplete,
606
- onScrollToTop,
607
- viewer,
608
- relay,
609
- ...rest
610
- } = this.props;
611
- const {
612
- refetching
613
- } = this.state;
614
- return /*#__PURE__*/_react.default.createElement(CheckoutForm, _extends({}, rest, {
615
- viewer: viewer,
616
- onCancel: onCancel,
617
- onComplete: onComplete,
618
- order: order,
619
- onScrollToTop: onScrollToTop,
620
- onUpdateCountry: this.refetchCountryData,
621
- countryDataUpdating: refetching
622
- }));
623
- }
624
-
625
- } // eslint-disable-next-line no-unused-expressions
626
-
627
-
628
- _Checkout_identity !== void 0 ? _Checkout_identity : (_Checkout_identity = require("../../__generated__/Checkout_identity.graphql"), _Checkout_identity.hash && _Checkout_identity.hash !== "e69fe84d0b5b4a205aa52d5eefe1048d" && console.error("The definition of 'Checkout_identity' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _Checkout_identity);
629
- const Checkout = (0, _reactRelay.createRefetchContainer)(CheckoutComponent, {
630
- order: _Checkout_order !== void 0 ? _Checkout_order : (_Checkout_order = require("../../__generated__/Checkout_order.graphql"), _Checkout_order.hash && _Checkout_order.hash !== "693ae9c7f2c7fe9a179bad7b86c16928" && console.error("The definition of 'Checkout_order' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _Checkout_order),
631
- viewer: _Checkout_viewer !== void 0 ? _Checkout_viewer : (_Checkout_viewer = require("../../__generated__/Checkout_viewer.graphql"), _Checkout_viewer.hash && _Checkout_viewer.hash !== "c160a87370232346bf51bc9dff9ab051" && console.error("The definition of 'Checkout_viewer' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _Checkout_viewer)
632
- }, _Checkout_Refetch_Query !== void 0 ? _Checkout_Refetch_Query : (_Checkout_Refetch_Query = require("../../__generated__/Checkout_Refetch_Query.graphql"), _Checkout_Refetch_Query.hash && _Checkout_Refetch_Query.hash !== "74262d3ffae1792d1bb5342c303c422b" && console.error("The definition of 'Checkout_Refetch_Query' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _Checkout_Refetch_Query));
424
+ };
425
+ return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, renderErrors(), /*#__PURE__*/_react.default.createElement("form", {
426
+ onSubmit: e => (e.preventDefault(), handleSubmit())
427
+ }, /*#__PURE__*/_react.default.createElement("div", {
428
+ className: "checkout-modal__sections"
429
+ }, renderStep(checkoutStep)), /*#__PURE__*/_react.default.createElement("div", {
430
+ className: "checkout-modal__buttons"
431
+ }, /*#__PURE__*/_react.default.createElement("button", {
432
+ className: "checkout-modal__button",
433
+ onClick: onCancel,
434
+ "data-label": "cancel",
435
+ type: "button"
436
+ }, "Cancel"), /*#__PURE__*/_react.default.createElement("button", {
437
+ className: "checkout-modal__button",
438
+ "data-label": "confirm",
439
+ disabled: !isValid() || submitting,
440
+ type: "submit"
441
+ }, submitting ? 'Submitting...' : /*#__PURE__*/_react.default.createElement(_react.Fragment, null, saveText, /*#__PURE__*/_react.default.createElement("span", {
442
+ className: "checkout-modal__button__arrow"
443
+ }, " \u2192"))))));
444
+ };
633
445
  var _default = Checkout;
634
446
  exports.default = _default;