fontdue-js 2.22.1 → 2.22.3

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 (352) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/__generated__/StoreModalFamily_collection.graphql.d.ts +2 -1
  3. package/dist/__generated__/StoreModalFamily_collection.graphql.js +49 -31
  4. package/dist/__generated__/StoreModalProductQuery.graphql.d.ts +1 -1
  5. package/dist/__generated__/StoreModalProductQuery.graphql.js +68 -50
  6. package/dist/__generated__/StoreModalProductRefetchQuery.graphql.d.ts +1 -1
  7. package/dist/__generated__/StoreModalProductRefetchQuery.graphql.js +61 -43
  8. package/dist/components/StoreModal/StoreModalFamily.js +13 -2
  9. package/dist/components/elements/StoreModalUnifiedCheckout.js +7 -3
  10. package/package.json +1 -1
  11. package/dist-cjs/__generated__/AddToCartBannerQuery.graphql.js +0 -194
  12. package/dist-cjs/__generated__/AddToCartBanner_item.graphql.js +0 -107
  13. package/dist-cjs/__generated__/AddToCartBanner_order.graphql.js +0 -131
  14. package/dist-cjs/__generated__/AddressFieldsRefetchQuery.graphql.js +0 -170
  15. package/dist-cjs/__generated__/AddressFields_viewer.graphql.js +0 -125
  16. package/dist-cjs/__generated__/BuyButtonIDQuery.graphql.js +0 -121
  17. package/dist-cjs/__generated__/BuyButtonSlugQuery.graphql.js +0 -146
  18. package/dist-cjs/__generated__/BuyButton_collection.graphql.js +0 -56
  19. package/dist-cjs/__generated__/CartButtonQuery.graphql.js +0 -139
  20. package/dist-cjs/__generated__/CartButton_order.graphql.js +0 -71
  21. package/dist-cjs/__generated__/CartItemAdditionalLicenses_licenses.graphql.js +0 -42
  22. package/dist-cjs/__generated__/CartItemAdditionalLicenses_orderItem.graphql.js +0 -52
  23. package/dist-cjs/__generated__/CartItemLicense_selection.graphql.js +0 -80
  24. package/dist-cjs/__generated__/CartItemProduct_product.graphql.js +0 -113
  25. package/dist-cjs/__generated__/CartItemVariable_selection.graphql.js +0 -107
  26. package/dist-cjs/__generated__/CartItemVariable_variable.graphql.js +0 -58
  27. package/dist-cjs/__generated__/CartItem_node.graphql.js +0 -166
  28. package/dist-cjs/__generated__/CartOrderCompleteOrderMutation.graphql.js +0 -783
  29. package/dist-cjs/__generated__/CartOrderRemoveDiscountMutation.graphql.js +0 -760
  30. package/dist-cjs/__generated__/CartOrderUpdateMutation.graphql.js +0 -795
  31. package/dist-cjs/__generated__/CartOrder_UpdateErrors.graphql.js +0 -43
  32. package/dist-cjs/__generated__/CartOrder_order.graphql.js +0 -264
  33. package/dist-cjs/__generated__/CartOrder_viewer.graphql.js +0 -51
  34. package/dist-cjs/__generated__/CartQuery.graphql.js +0 -887
  35. package/dist-cjs/__generated__/CartStateRemoveDiscountMutation.graphql.js +0 -422
  36. package/dist-cjs/__generated__/CartStateUpdateMutation.graphql.js +0 -790
  37. package/dist-cjs/__generated__/CartState_order.graphql.js +0 -122
  38. package/dist-cjs/__generated__/CartTotals_order.graphql.js +0 -140
  39. package/dist-cjs/__generated__/CharacterViewerIDQuery.graphql.js +0 -332
  40. package/dist-cjs/__generated__/CharacterViewerSlugQuery.graphql.js +0 -362
  41. package/dist-cjs/__generated__/CharacterViewerStyleRefetchQuery.graphql.js +0 -226
  42. package/dist-cjs/__generated__/CharacterViewer_collection.graphql.js +0 -197
  43. package/dist-cjs/__generated__/CharacterViewer_family.graphql.js +0 -101
  44. package/dist-cjs/__generated__/CharacterViewer_style.graphql.js +0 -161
  45. package/dist-cjs/__generated__/CheckoutUpdateCustomerMutation.graphql.js +0 -770
  46. package/dist-cjs/__generated__/CheckoutUpdateOrderMutation.graphql.js +0 -811
  47. package/dist-cjs/__generated__/Checkout_UpdateOrderErrors.graphql.js +0 -97
  48. package/dist-cjs/__generated__/Checkout_identity.graphql.js +0 -94
  49. package/dist-cjs/__generated__/Checkout_order.graphql.js +0 -144
  50. package/dist-cjs/__generated__/Checkout_viewer.graphql.js +0 -74
  51. package/dist-cjs/__generated__/CollectionAa_Query.graphql.js +0 -192
  52. package/dist-cjs/__generated__/CollectionAa_product.graphql.js +0 -69
  53. package/dist-cjs/__generated__/CouponCodeInputApplyCouponMutation.graphql.js +0 -432
  54. package/dist-cjs/__generated__/CouponText_coupon.graphql.js +0 -73
  55. package/dist-cjs/__generated__/CustomerLoginFormLoginMutation.graphql.js +0 -72
  56. package/dist-cjs/__generated__/CustomerLoginFormQuery.graphql.js +0 -91
  57. package/dist-cjs/__generated__/DownloadRefetchQuery.graphql.js +0 -124
  58. package/dist-cjs/__generated__/Download_order.graphql.js +0 -61
  59. package/dist-cjs/__generated__/FamilyList_node.graphql.js +0 -96
  60. package/dist-cjs/__generated__/Family_node.graphql.js +0 -160
  61. package/dist-cjs/__generated__/FontFamiliesQuery.graphql.js +0 -368
  62. package/dist-cjs/__generated__/FontStyle_fontStyle.graphql.js +0 -32
  63. package/dist-cjs/__generated__/IdentityBox_identity.graphql.js +0 -52
  64. package/dist-cjs/__generated__/License_node.graphql.js +0 -97
  65. package/dist-cjs/__generated__/NewsletterSignupQuery.graphql.js +0 -110
  66. package/dist-cjs/__generated__/NewsletterSignupUpdateCustomerMutation.graphql.js +0 -81
  67. package/dist-cjs/__generated__/NodePasswordFormAccessNodeMutation.graphql.js +0 -72
  68. package/dist-cjs/__generated__/NodePasswordFormIDQuery.graphql.js +0 -93
  69. package/dist-cjs/__generated__/NodePasswordFormSlugQuery.graphql.js +0 -115
  70. package/dist-cjs/__generated__/OrderVariableSelectionReduxRefetchQuery.graphql.js +0 -154
  71. package/dist-cjs/__generated__/OrderVariableSelectionRedux_viewer.graphql.js +0 -75
  72. package/dist-cjs/__generated__/OrderVariableSelection_variables.graphql.js +0 -107
  73. package/dist-cjs/__generated__/PrecartAddToCartMutation.graphql.js +0 -793
  74. package/dist-cjs/__generated__/PrecartClearCartMutation.graphql.js +0 -81
  75. package/dist-cjs/__generated__/PrecartQuery.graphql.js +0 -308
  76. package/dist-cjs/__generated__/Precart_collection.graphql.js +0 -81
  77. package/dist-cjs/__generated__/Precart_license.graphql.js +0 -67
  78. package/dist-cjs/__generated__/Precart_viewer.graphql.js +0 -161
  79. package/dist-cjs/__generated__/PriceBarSectionRefetchQuery.graphql.js +0 -184
  80. package/dist-cjs/__generated__/PriceBarSection_node.graphql.js +0 -121
  81. package/dist-cjs/__generated__/PriceBar_node.graphql.js +0 -60
  82. package/dist-cjs/__generated__/Price_price.graphql.js +0 -40
  83. package/dist-cjs/__generated__/SKUPrice_sku.graphql.js +0 -69
  84. package/dist-cjs/__generated__/SelectButton_sku.graphql.js +0 -54
  85. package/dist-cjs/__generated__/ServerConfigProviderQuery.graphql.js +0 -108
  86. package/dist-cjs/__generated__/ShareCartCreateSnapshotMutation.graphql.js +0 -84
  87. package/dist-cjs/__generated__/SpecimenLinkQuery.graphql.js +0 -120
  88. package/dist-cjs/__generated__/StoreModalBundleButton_bundle.graphql.js +0 -85
  89. package/dist-cjs/__generated__/StoreModalCartQuery.graphql.js +0 -1017
  90. package/dist-cjs/__generated__/StoreModalCheckoutQuery.graphql.js +0 -194
  91. package/dist-cjs/__generated__/StoreModalContainerQuery.graphql.js +0 -228
  92. package/dist-cjs/__generated__/StoreModalDownloadRefetchQuery.graphql.js +0 -102
  93. package/dist-cjs/__generated__/StoreModalDownload_order.graphql.js +0 -40
  94. package/dist-cjs/__generated__/StoreModalFamilyButton_collection.graphql.js +0 -135
  95. package/dist-cjs/__generated__/StoreModalFamily_collection.graphql.js +0 -130
  96. package/dist-cjs/__generated__/StoreModalIndexItem_fontCollection.graphql.js +0 -98
  97. package/dist-cjs/__generated__/StoreModalIndexQuery.graphql.js +0 -263
  98. package/dist-cjs/__generated__/StoreModalOrderVariableSelection_order.graphql.js +0 -98
  99. package/dist-cjs/__generated__/StoreModalOrderVariableSelection_viewer.graphql.js +0 -66
  100. package/dist-cjs/__generated__/StoreModalProductContent_collection.graphql.js +0 -92
  101. package/dist-cjs/__generated__/StoreModalProductLicenseSelection_collection.graphql.js +0 -47
  102. package/dist-cjs/__generated__/StoreModalProductLicense_license.graphql.js +0 -104
  103. package/dist-cjs/__generated__/StoreModalProductQuery.graphql.js +0 -702
  104. package/dist-cjs/__generated__/StoreModalProductRefetchQuery.graphql.js +0 -433
  105. package/dist-cjs/__generated__/StoreModalProductSummaryAddToCartMutation.graphql.js +0 -149
  106. package/dist-cjs/__generated__/StoreModalProductSummaryClearCartMutation.graphql.js +0 -81
  107. package/dist-cjs/__generated__/StoreModalProductSummaryRefetchQuery.graphql.js +0 -281
  108. package/dist-cjs/__generated__/StoreModalProductSummary_viewer.graphql.js +0 -243
  109. package/dist-cjs/__generated__/StoreModalReviewIdentity_identity.graphql.js +0 -52
  110. package/dist-cjs/__generated__/StoreModalStyleButton_fontStyle.graphql.js +0 -113
  111. package/dist-cjs/__generated__/StoreModalUnifiedCheckoutCompleteOrderMutation.graphql.js +0 -302
  112. package/dist-cjs/__generated__/StoreModalUnifiedCheckoutUpdateCustomerMutation.graphql.js +0 -323
  113. package/dist-cjs/__generated__/StoreModalUnifiedCheckoutUpdateOrderMutation.graphql.js +0 -473
  114. package/dist-cjs/__generated__/StoreModalUnifiedCheckout_order.graphql.js +0 -237
  115. package/dist-cjs/__generated__/StoreModalUnifiedCheckout_viewer.graphql.js +0 -117
  116. package/dist-cjs/__generated__/StripeProviderCreateCheckoutSessionMutation.graphql.js +0 -105
  117. package/dist-cjs/__generated__/StripeProvider_viewer.graphql.js +0 -139
  118. package/dist-cjs/__generated__/TestFontsFormUpdateCustomerMutation.graphql.js +0 -770
  119. package/dist-cjs/__generated__/TestFontsForm_Query.graphql.js +0 -126
  120. package/dist-cjs/__generated__/TestModeBannerQuery.graphql.js +0 -87
  121. package/dist-cjs/__generated__/ThemeConfigQuery.graphql.js +0 -87
  122. package/dist-cjs/__generated__/TypeTesterFeaturesButton_fontStyle.graphql.js +0 -32
  123. package/dist-cjs/__generated__/TypeTesterFeatures_fontStyle.graphql.js +0 -36
  124. package/dist-cjs/__generated__/TypeTesterFloatingToolbar_testers.graphql.js +0 -53
  125. package/dist-cjs/__generated__/TypeTesterStandaloneChangedStylesQuery.graphql.js +0 -347
  126. package/dist-cjs/__generated__/TypeTesterStandaloneQuery.graphql.js +0 -450
  127. package/dist-cjs/__generated__/TypeTesterStyleSelectData_fontStyle.graphql.js +0 -106
  128. package/dist-cjs/__generated__/TypeTesterStyleSelectData_fontStyleData.graphql.js +0 -88
  129. package/dist-cjs/__generated__/TypeTesterStyleSelectData_viewer.graphql.js +0 -166
  130. package/dist-cjs/__generated__/TypeTesterToolbar_fontStyle.graphql.js +0 -36
  131. package/dist-cjs/__generated__/TypeTesterVariableAxes_fontStyle.graphql.js +0 -61
  132. package/dist-cjs/__generated__/TypeTester_fontStyle.graphql.js +0 -106
  133. package/dist-cjs/__generated__/TypeTester_viewer.graphql.js +0 -40
  134. package/dist-cjs/__generated__/TypeTestersChangedStylesQuery.graphql.js +0 -347
  135. package/dist-cjs/__generated__/TypeTestersIDQuery.graphql.js +0 -637
  136. package/dist-cjs/__generated__/TypeTestersRefetchQuery.graphql.js +0 -554
  137. package/dist-cjs/__generated__/TypeTestersSlugQuery.graphql.js +0 -644
  138. package/dist-cjs/__generated__/TypeTesters_collection.graphql.js +0 -258
  139. package/dist-cjs/__generated__/TypeTesters_viewer.graphql.js +0 -40
  140. package/dist-cjs/__generated__/VariableTableAmounts_option.graphql.js +0 -34
  141. package/dist-cjs/__generated__/VariableTableAmounts_variable.graphql.js +0 -34
  142. package/dist-cjs/__generated__/productState_Query.graphql.js +0 -184
  143. package/dist-cjs/__generated__/productState_bundle.graphql.js +0 -79
  144. package/dist-cjs/__generated__/productState_collection.graphql.js +0 -90
  145. package/dist-cjs/__generated__/productState_collectionBundle.graphql.js +0 -88
  146. package/dist-cjs/__generated__/productState_node.graphql.js +0 -122
  147. package/dist-cjs/__generated__/productState_sku.graphql.js +0 -51
  148. package/dist-cjs/__generated__/useFeaturesData_fontStyle.graphql.js +0 -64
  149. package/dist-cjs/__generated__/useFontStyle_fontStyle.graphql.js +0 -94
  150. package/dist-cjs/__generated__/useTotalStyles_fontCollection.graphql.js +0 -57
  151. package/dist-cjs/__tests__/collectionBundleSelection.test.js +0 -1630
  152. package/dist-cjs/components/AddToCartBanner/index.js +0 -75
  153. package/dist-cjs/components/BuyButton/index.js +0 -124
  154. package/dist-cjs/components/BuyButton/index.server.js +0 -36
  155. package/dist-cjs/components/BuyingOptions/index.js +0 -23
  156. package/dist-cjs/components/Cart/AddressFields.js +0 -162
  157. package/dist-cjs/components/Cart/CartItem/CartItemAdditionalLicenses.js +0 -33
  158. package/dist-cjs/components/Cart/CartItem/CartItemLicense.js +0 -66
  159. package/dist-cjs/components/Cart/CartItem/CartItemProduct.js +0 -36
  160. package/dist-cjs/components/Cart/CartItem/CartItemVariable.js +0 -66
  161. package/dist-cjs/components/Cart/CartItem/VariableTextInput.js +0 -79
  162. package/dist-cjs/components/Cart/CartItem/index.js +0 -95
  163. package/dist-cjs/components/Cart/CartOrder.js +0 -314
  164. package/dist-cjs/components/Cart/CartState.js +0 -93
  165. package/dist-cjs/components/Cart/CartTotals.js +0 -97
  166. package/dist-cjs/components/Cart/Checkout.js +0 -473
  167. package/dist-cjs/components/Cart/CheckoutSteps.js +0 -15
  168. package/dist-cjs/components/Cart/CouponCodeInput.js +0 -90
  169. package/dist-cjs/components/Cart/CustomerFields.js +0 -80
  170. package/dist-cjs/components/Cart/Download.js +0 -62
  171. package/dist-cjs/components/Cart/EmptyCart.js +0 -42
  172. package/dist-cjs/components/Cart/IdentityBox.js +0 -37
  173. package/dist-cjs/components/Cart/ShareCart.js +0 -87
  174. package/dist-cjs/components/Cart/index.js +0 -36
  175. package/dist-cjs/components/Cart/injectRelayEnvironment.js +0 -21
  176. package/dist-cjs/components/Cart/types.js +0 -5
  177. package/dist-cjs/components/Cart/utils.js +0 -8
  178. package/dist-cjs/components/CartButton/index.js +0 -127
  179. package/dist-cjs/components/CartButton/index.server.js +0 -18
  180. package/dist-cjs/components/CharacterViewer/StyleSelect.js +0 -60
  181. package/dist-cjs/components/CharacterViewer/index.js +0 -441
  182. package/dist-cjs/components/CharacterViewer/index.server.js +0 -36
  183. package/dist-cjs/components/Checkbox/index.js +0 -27
  184. package/dist-cjs/components/CollectionAa/index.js +0 -38
  185. package/dist-cjs/components/ComponentsContext.js +0 -12
  186. package/dist-cjs/components/ConfigContext.js +0 -86
  187. package/dist-cjs/components/ConsentBanner/consent.js +0 -92
  188. package/dist-cjs/components/ConsentBanner/index.js +0 -84
  189. package/dist-cjs/components/CookieNotification/index.js +0 -83
  190. package/dist-cjs/components/CorsErrorModal.js +0 -98
  191. package/dist-cjs/components/CouponText/index.js +0 -38
  192. package/dist-cjs/components/CustomerLoginForm/index.js +0 -88
  193. package/dist-cjs/components/Family/FamilyList.js +0 -43
  194. package/dist-cjs/components/Family/index.js +0 -77
  195. package/dist-cjs/components/FontFamilies/index.js +0 -53
  196. package/dist-cjs/components/FontStyle/index.js +0 -37
  197. package/dist-cjs/components/FontdueProvider/FontdueProviderClientComponent.js +0 -74
  198. package/dist-cjs/components/FontdueProvider/index.js +0 -43
  199. package/dist-cjs/components/FontdueProvider/index.server.js +0 -35
  200. package/dist-cjs/components/FontdueProvider/useAuxUIOwner.js +0 -32
  201. package/dist-cjs/components/Icons/Align.js +0 -58
  202. package/dist-cjs/components/Icons/ArrowDownRight.js +0 -19
  203. package/dist-cjs/components/Icons/ArrowLeft.js +0 -22
  204. package/dist-cjs/components/Icons/ArrowRight.js +0 -19
  205. package/dist-cjs/components/Icons/CarrotDown.js +0 -19
  206. package/dist-cjs/components/Icons/CarrotUp.js +0 -19
  207. package/dist-cjs/components/Icons/Cart.js +0 -23
  208. package/dist-cjs/components/Icons/CartNew.js +0 -33
  209. package/dist-cjs/components/Icons/Check.js +0 -19
  210. package/dist-cjs/components/Icons/Checkbox.js +0 -24
  211. package/dist-cjs/components/Icons/CheckboxChecked.js +0 -24
  212. package/dist-cjs/components/Icons/CheckboxCrossed.js +0 -26
  213. package/dist-cjs/components/Icons/CircledCheck.js +0 -21
  214. package/dist-cjs/components/Icons/CircledInfo.js +0 -21
  215. package/dist-cjs/components/Icons/CircledMinus.js +0 -21
  216. package/dist-cjs/components/Icons/ColorPicker.js +0 -19
  217. package/dist-cjs/components/Icons/CreditCard.js +0 -21
  218. package/dist-cjs/components/Icons/DownArrow.js +0 -24
  219. package/dist-cjs/components/Icons/DownloadFonts.js +0 -25
  220. package/dist-cjs/components/Icons/FrowningFace.js +0 -25
  221. package/dist-cjs/components/Icons/License.js +0 -19
  222. package/dist-cjs/components/Icons/Receipt.js +0 -34
  223. package/dist-cjs/components/Icons/User.js +0 -19
  224. package/dist-cjs/components/Icons/X.js +0 -19
  225. package/dist-cjs/components/Icons/index.js +0 -167
  226. package/dist-cjs/components/NewsletterSignup/NewsletterSignupElement.js +0 -15
  227. package/dist-cjs/components/NewsletterSignup/index.js +0 -192
  228. package/dist-cjs/components/NewsletterSignup/index.server.js +0 -18
  229. package/dist-cjs/components/NodePasswordForm/index.js +0 -114
  230. package/dist-cjs/components/OrderVariableSelection/OrderVariableSelectionRedux.js +0 -66
  231. package/dist-cjs/components/OrderVariableSelection/index.js +0 -199
  232. package/dist-cjs/components/Precart/License.js +0 -70
  233. package/dist-cjs/components/Precart/index.js +0 -331
  234. package/dist-cjs/components/Price/index.js +0 -111
  235. package/dist-cjs/components/PriceBar/PriceBarSection.js +0 -61
  236. package/dist-cjs/components/PriceBar/index.js +0 -49
  237. package/dist-cjs/components/Root/index.js +0 -208
  238. package/dist-cjs/components/Root/productState.js +0 -143
  239. package/dist-cjs/components/SKUPrice/index.js +0 -46
  240. package/dist-cjs/components/Select/index.js +0 -36
  241. package/dist-cjs/components/SelectButton/index.js +0 -79
  242. package/dist-cjs/components/ServerConfigProvider/index.js +0 -39
  243. package/dist-cjs/components/SpecimenLink/index.js +0 -37
  244. package/dist-cjs/components/StickyNav/index.js +0 -80
  245. package/dist-cjs/components/StoreModal/StoreModalBundleButton.js +0 -47
  246. package/dist-cjs/components/StoreModal/StoreModalCart.js +0 -79
  247. package/dist-cjs/components/StoreModal/StoreModalCheckout.js +0 -24
  248. package/dist-cjs/components/StoreModal/StoreModalCheckoutContext.js +0 -14
  249. package/dist-cjs/components/StoreModal/StoreModalContainer.js +0 -117
  250. package/dist-cjs/components/StoreModal/StoreModalDownload.js +0 -38
  251. package/dist-cjs/components/StoreModal/StoreModalFamily.js +0 -58
  252. package/dist-cjs/components/StoreModal/StoreModalFamilyButton.js +0 -69
  253. package/dist-cjs/components/StoreModal/StoreModalIndex.js +0 -27
  254. package/dist-cjs/components/StoreModal/StoreModalIndexItem.js +0 -63
  255. package/dist-cjs/components/StoreModal/StoreModalLicenseeIsBillingSelection.js +0 -30
  256. package/dist-cjs/components/StoreModal/StoreModalLoader.js +0 -22
  257. package/dist-cjs/components/StoreModal/StoreModalOrderVariableSelection.js +0 -89
  258. package/dist-cjs/components/StoreModal/StoreModalProduct.js +0 -154
  259. package/dist-cjs/components/StoreModal/StoreModalReviewIdentity.js +0 -18
  260. package/dist-cjs/components/StoreModal/StoreModalRouter.js +0 -28
  261. package/dist-cjs/components/StoreModal/StoreModalStyleButton.js +0 -52
  262. package/dist-cjs/components/StoreModal/index.js +0 -39
  263. package/dist-cjs/components/StoreModal/routes.js +0 -51
  264. package/dist-cjs/components/StoreModal/types.js +0 -5
  265. package/dist-cjs/components/StoreModalProductLicenseSelection/LicenseElement.js +0 -46
  266. package/dist-cjs/components/StoreModalProductLicenseSelection/LicenseVariableElement.js +0 -35
  267. package/dist-cjs/components/StoreModalProductLicenseSelection/LicenseVariableRadioElement.js +0 -47
  268. package/dist-cjs/components/StoreModalProductLicenseSelection/StoreModalProductLicense.js +0 -133
  269. package/dist-cjs/components/StoreModalProductLicenseSelection/index.js +0 -31
  270. package/dist-cjs/components/StoreModalProductSummary/index.js +0 -219
  271. package/dist-cjs/components/StripeLogo.js +0 -17
  272. package/dist-cjs/components/StripeProvider/index.js +0 -172
  273. package/dist-cjs/components/Switch/index.js +0 -7
  274. package/dist-cjs/components/TestFontsForm/TestFontsFormElement.js +0 -15
  275. package/dist-cjs/components/TestFontsForm/index.js +0 -208
  276. package/dist-cjs/components/TestFontsForm/index.server.js +0 -18
  277. package/dist-cjs/components/TestModeBanner/index.js +0 -34
  278. package/dist-cjs/components/TextField/index.js +0 -42
  279. package/dist-cjs/components/ThemeConfig/index.js +0 -41
  280. package/dist-cjs/components/ThemeConfig/index.server.js +0 -17
  281. package/dist-cjs/components/Tracking/index.js +0 -164
  282. package/dist-cjs/components/TypeTester/TypeTesterAlignButtons.js +0 -34
  283. package/dist-cjs/components/TypeTester/TypeTesterBullet.js +0 -23
  284. package/dist-cjs/components/TypeTester/TypeTesterContent.js +0 -58
  285. package/dist-cjs/components/TypeTester/TypeTesterContext.js +0 -166
  286. package/dist-cjs/components/TypeTester/TypeTesterEditAll.js +0 -36
  287. package/dist-cjs/components/TypeTester/TypeTesterFeatures.js +0 -133
  288. package/dist-cjs/components/TypeTester/TypeTesterFeaturesButton.js +0 -82
  289. package/dist-cjs/components/TypeTester/TypeTesterFitter.js +0 -21
  290. package/dist-cjs/components/TypeTester/TypeTesterFloatingToolbar.js +0 -79
  291. package/dist-cjs/components/TypeTester/TypeTesterInput.js +0 -72
  292. package/dist-cjs/components/TypeTester/TypeTesterSlider.js +0 -76
  293. package/dist-cjs/components/TypeTester/TypeTesterStandalone.js +0 -137
  294. package/dist-cjs/components/TypeTester/TypeTesterStandalone.preload.js +0 -27
  295. package/dist-cjs/components/TypeTester/TypeTesterStandalone.server.js +0 -26
  296. package/dist-cjs/components/TypeTester/TypeTesterStandaloneElement.js +0 -65
  297. package/dist-cjs/components/TypeTester/TypeTesterState.js +0 -133
  298. package/dist-cjs/components/TypeTester/TypeTesterStyleSelect.js +0 -101
  299. package/dist-cjs/components/TypeTester/TypeTesterStyleSelectData.js +0 -102
  300. package/dist-cjs/components/TypeTester/TypeTesterToolbar.js +0 -94
  301. package/dist-cjs/components/TypeTester/TypeTesterVariableAxes.js +0 -65
  302. package/dist-cjs/components/TypeTester/features.js +0 -150
  303. package/dist-cjs/components/TypeTester/index.js +0 -169
  304. package/dist-cjs/components/TypeTester/types.js +0 -14
  305. package/dist-cjs/components/TypeTester/useFeaturesData.js +0 -36
  306. package/dist-cjs/components/TypeTester/useTypeTesterStyler.js +0 -83
  307. package/dist-cjs/components/TypeTesters/TypeTestersElement.js +0 -33
  308. package/dist-cjs/components/TypeTesters/index.js +0 -271
  309. package/dist-cjs/components/TypeTesters/index.server.js +0 -44
  310. package/dist-cjs/components/UrlContext.js +0 -16
  311. package/dist-cjs/components/VariableTableAmounts/index.js +0 -28
  312. package/dist-cjs/components/elements/Button/index.js +0 -21
  313. package/dist-cjs/components/elements/EmptyCart/index.js +0 -30
  314. package/dist-cjs/components/elements/StoreModalCartLayout/index.js +0 -38
  315. package/dist-cjs/components/elements/StoreModalContainer/StoreModalContainerContext.js +0 -11
  316. package/dist-cjs/components/elements/StoreModalContainer/index.js +0 -77
  317. package/dist-cjs/components/elements/StoreModalDownloadLayout/index.js +0 -25
  318. package/dist-cjs/components/elements/StoreModalFamily/index.js +0 -31
  319. package/dist-cjs/components/elements/StoreModalFamilyButton/index.js +0 -45
  320. package/dist-cjs/components/elements/StoreModalIndexItem/index.js +0 -35
  321. package/dist-cjs/components/elements/StoreModalLicenseeIsBillingIdentityElement.js +0 -59
  322. package/dist-cjs/components/elements/StoreModalLoadingScreen/index.js +0 -14
  323. package/dist-cjs/components/elements/StoreModalPageContainer/index.js +0 -22
  324. package/dist-cjs/components/elements/StoreModalStyleButton/index.js +0 -37
  325. package/dist-cjs/components/elements/StoreModalUnifiedCheckout.js +0 -753
  326. package/dist-cjs/components/useConsent.js +0 -26
  327. package/dist-cjs/components/useFont.js +0 -76
  328. package/dist-cjs/components/useFontStyle.js +0 -58
  329. package/dist-cjs/components/useInterval.js +0 -28
  330. package/dist-cjs/components/useTotalStyles.js +0 -26
  331. package/dist-cjs/config.js +0 -27
  332. package/dist-cjs/corsError.js +0 -89
  333. package/dist-cjs/data/unicodeData.js +0 -1
  334. package/dist-cjs/fontLoader.js +0 -55
  335. package/dist-cjs/global-shim.js +0 -12
  336. package/dist-cjs/hooks/useAutofit.js +0 -114
  337. package/dist-cjs/hooks/useLicenseAndOrderVariables.js +0 -25
  338. package/dist-cjs/hooks/useRefetchOnLicenseChanges.js +0 -60
  339. package/dist-cjs/hooks.js +0 -18
  340. package/dist-cjs/index.js +0 -18
  341. package/dist-cjs/package.json +0 -1
  342. package/dist-cjs/react-ranger.d.js +0 -1
  343. package/dist-cjs/react-ranger.js +0 -301
  344. package/dist-cjs/reducer.js +0 -291
  345. package/dist-cjs/relay/environment.js +0 -148
  346. package/dist-cjs/relay/loadSerializableQuery.js +0 -57
  347. package/dist-cjs/relay/useSerializablePreloadedQuery.js +0 -52
  348. package/dist-cjs/retryImport.js +0 -24
  349. package/dist-cjs/scripts/updateUnicodeData.js +0 -49
  350. package/dist-cjs/utils.js +0 -107
  351. package/dist-cjs/vanilla/FontStyle.js +0 -58
  352. package/dist-cjs/vanilla/TruncatedMarkdown.js +0 -28
@@ -1,753 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = StoreModalUnifiedCheckout;
7
- var _StoreModalUnifiedCheckoutCompleteOrderMutation2 = _interopRequireDefault(require("../../__generated__/StoreModalUnifiedCheckoutCompleteOrderMutation.graphql"));
8
- var _StoreModalUnifiedCheckoutUpdateOrderMutation2 = _interopRequireDefault(require("../../__generated__/StoreModalUnifiedCheckoutUpdateOrderMutation.graphql"));
9
- var _StoreModalUnifiedCheckoutUpdateCustomerMutation2 = _interopRequireDefault(require("../../__generated__/StoreModalUnifiedCheckoutUpdateCustomerMutation.graphql"));
10
- var _StoreModalUnifiedCheckout_order2 = _interopRequireDefault(require("../../__generated__/StoreModalUnifiedCheckout_order.graphql"));
11
- var _StoreModalUnifiedCheckout_viewer2 = _interopRequireDefault(require("../../__generated__/StoreModalUnifiedCheckout_viewer.graphql"));
12
- var _react = _interopRequireWildcard(require("react"));
13
- var _reactGoogleRecaptcha = _interopRequireDefault(require("react-google-recaptcha"));
14
- var Sentry = _interopRequireWildcard(require("@sentry/react"));
15
- var _reactRelay = require("react-relay");
16
- var _AddressFields = _interopRequireDefault(require("../Cart/AddressFields"));
17
- var _CustomerFields = _interopRequireDefault(require("../Cart/CustomerFields"));
18
- var _reactStripeJs = require("@stripe/react-stripe-js");
19
- var _StoreModalLicenseeIsBillingIdentityElement = _interopRequireDefault(require("./StoreModalLicenseeIsBillingIdentityElement"));
20
- var _reactRedux = require("react-redux");
21
- var _StripeLogo = _interopRequireDefault(require("../StripeLogo"));
22
- var _Icons = require("../Icons");
23
- var _ConfigContext = _interopRequireDefault(require("../ConfigContext"));
24
- var _Price = require("../Price");
25
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
26
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
27
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
28
- /**
29
- * StoreModalUnifiedCheckout
30
- *
31
- * This component handles the checkout flow for orders, collecting customer information,
32
- * billing/licensee details, and processing payment through Stripe.
33
- *
34
- * Key implementation details:
35
- *
36
- * 1. Auto-save billing identity (fontdue tax system only):
37
- * - When using fontdue's tax system (not Stripe Tax), we need the billing address
38
- * to calculate taxes before showing the final amount
39
- * - The billing identity is auto-saved (with 500ms debounce) once the Stripe Address
40
- * Element reports complete (name + address fields)
41
- * - Email is a separate field (not part of Address Element), so auto-save may trigger
42
- * before email is filled, which will cause backend validation errors to display
43
- * - This ensures taxes are calculated and displayed before the user clicks Pay
44
- * - On page reload, if billing identity already exists, billingAddressComplete starts
45
- * as true to prevent re-triggering auto-save
46
- *
47
- * 2. Billing identity diff tracking:
48
- * - We track differences between local state and saved backend data (billingIdentityDiff)
49
- * - This determines isBillingIdentitySaved, which controls when payment can proceed
50
- * - If the user edits any field after auto-save, it triggers another save cycle
51
- * - All fields are normalized (null/undefined/empty string treated as equivalent)
52
- *
53
- * 3. Pay button validation:
54
- * - The Pay button is always enabled (as long as EULA is checked) even if billing
55
- * info isn't fully saved yet
56
- * - This is intentional: we need to allow the user to click Pay so we can call
57
- * elements.submit(), which triggers Stripe's validation and shows any validation
58
- * errors inline in the Stripe UI elements
59
- * - After Stripe validation passes, we check if billing identity is saved
60
- * - If not saved, we show an error message above the Pay button asking them to
61
- * complete billing information (validation errors should now be visible above)
62
- *
63
- * 4. Customer info pre-fill:
64
- * - When customer submits their contact info, if billing name/email are empty,
65
- * we pre-fill them from customer data as a convenience
66
- *
67
- * 5. Country mismatch handling (order snapshots):
68
- * - When loading a hydrated order (e.g., from quote/snapshot), the order may have
69
- * a country variable that differs from the user's detected country
70
- * - In this case, we force licenseeIsBillingIdentity to false and always collect
71
- * separate licensee information to ensure the licensee country matches the quote
72
- * - This preserves pricing/availability from the original quote
73
- *
74
- * 6. Licensee country syncing:
75
- * - When licensee country changes, it automatically updates any country-type order
76
- * variables to maintain consistent pricing based on the selected country
77
- *
78
- * 7. Zero-order/coupon flow:
79
- * - Orders with $0 total (due to coupons) bypass Stripe payment entirely
80
- * - These use the completeOrder mutation instead of confirmPayment
81
- *
82
- * 8. Tax system variations:
83
- * - Stripe Tax system: Uses embedded checkout, billing handled by Stripe
84
- * - Fontdue tax system: Collects billing info directly, auto-saves for tax calculation
85
- */
86
-
87
- /* const LICENSEE_REQUIRED_FIELDS = ['organization', 'country'] as (keyof Identity)[]; */
88
-
89
- const IDENTITY_REQUIRED_FIELDS = ['name', 'email', 'country'];
90
- const defaultIdentity = {
91
- name: '',
92
- organization: '',
93
- email: '',
94
- phone: '',
95
- country: '',
96
- administrativeArea: null,
97
- street: '',
98
- locality: '',
99
- sublocality: '',
100
- zip: '',
101
- vatNumber: ''
102
- };
103
- function getIdentityFields(object) {
104
- if (!object) return;
105
- return {
106
- name: object.name ?? '',
107
- organization: object.organization ?? null,
108
- email: object.email ?? '',
109
- phone: object.phoneNullable ?? '',
110
- country: object.country ?? '',
111
- administrativeArea: object.administrativeArea ?? null,
112
- street: object.street ?? null,
113
- locality: object.locality ?? null,
114
- sublocality: object.sublocality ?? null,
115
- zip: object.zip ?? null,
116
- vatNumber: object.vatNumber ?? null
117
- };
118
- }
119
- function EditableSection({
120
- onSubmit,
121
- onCancel,
122
- onEdit,
123
- disabled,
124
- disableSubmit,
125
- cancelable,
126
- editing,
127
- children: {
128
- show,
129
- edit,
130
- save
131
- }
132
- }) {
133
- const [submitting, setSubmitting] = (0, _react.useState)(false);
134
- const handleSubmit = (0, _react.useCallback)(e => {
135
- e.preventDefault();
136
- setSubmitting(true);
137
- onSubmit({
138
- onSuccess: () => {
139
- setSubmitting(false);
140
- },
141
- onError: () => setSubmitting(false)
142
- });
143
- }, [setSubmitting, onSubmit]);
144
- const handleCancel = (0, _react.useCallback)(() => {
145
- setSubmitting(false);
146
- onCancel?.();
147
- }, [setSubmitting, onCancel]);
148
- return /*#__PURE__*/_react.default.createElement("div", {
149
- className: "store-modal__cart__checkout-section",
150
- "data-editing": editing,
151
- "data-disabled": disabled
152
- }, editing ? /*#__PURE__*/_react.default.createElement("form", {
153
- onSubmit: handleSubmit
154
- }, edit, /*#__PURE__*/_react.default.createElement("div", {
155
- className: "store-modal__cart__buttons"
156
- }, cancelable ? /*#__PURE__*/_react.default.createElement("button", {
157
- className: "store-modal__cart__button",
158
- type: "button",
159
- onClick: handleCancel
160
- }, "Cancel") : null, /*#__PURE__*/_react.default.createElement("button", {
161
- className: "store-modal__cart__button",
162
- type: "submit",
163
- disabled: submitting || disableSubmit
164
- }, submitting ? 'Submitting...' : save))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, show, /*#__PURE__*/_react.default.createElement("button", {
165
- type: "button",
166
- className: "store-modal__cart__edit-button",
167
- onClick: onEdit
168
- }, "Change")));
169
- }
170
- function StoreModalUnifiedCheckout({
171
- order: orderKey,
172
- viewer: viewerKey,
173
- onScrollToTop,
174
- onUpdateOrderVariableSelections
175
- }) {
176
- const viewer = (0, _reactRelay.useFragment)((_StoreModalUnifiedCheckout_viewer2.default.hash && _StoreModalUnifiedCheckout_viewer2.default.hash !== "048ce405742611f6684cb5306d28478b" && console.error("The definition of 'StoreModalUnifiedCheckout_viewer' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _StoreModalUnifiedCheckout_viewer2.default), viewerKey);
177
- const order = (0, _reactRelay.useFragment)((_StoreModalUnifiedCheckout_order2.default.hash && _StoreModalUnifiedCheckout_order2.default.hash !== "7c5503876a562732ebaead9b2ae97180" && console.error("The definition of 'StoreModalUnifiedCheckout_order' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _StoreModalUnifiedCheckout_order2.default), orderKey);
178
-
179
- // Check if order has a country-type order variable with a different country than detected
180
- // This is important for order snapshot/quote functionality where a quote was created for
181
- // a different country than the user's detected country. In this case, we must collect
182
- // licensee information to ensure the country variable matches the licensee's country.
183
- // If the countries match (or no country variable exists), allow the normal checkout flow.
184
- const countryVariableSelection = order.orderVariableSelections?.find(selection => selection.orderVariable.variableType === 'country');
185
- const hasCountryMismatch = countryVariableSelection && countryVariableSelection.countryCode && countryVariableSelection.countryCode !== viewer.detectedCountry;
186
-
187
- // When loading a hydrated order (e.g., from order snapshot/quote), initialize the
188
- // licensee country from the order variable country if no licensee country exists yet.
189
- // This is useful for the "order snapshot" functionality where we want to preserve
190
- // the original country selection from the quote.
191
- const getInitialCountry = () => {
192
- // If order already has a licensee identity with country, use that
193
- if (order?.licenseeIdentity?.country) {
194
- return order.licenseeIdentity.country;
195
- }
196
-
197
- // Otherwise, check if there's a country-type order variable selection
198
- const countryVariableSelection = order?.orderVariableSelections?.find(selection => selection.orderVariable.variableType === 'country');
199
- if (countryVariableSelection?.countryCode) {
200
- return countryVariableSelection.countryCode;
201
- }
202
-
203
- // Fall back to detected country or viewer country
204
- return viewer.detectedCountry ?? viewer.country;
205
- };
206
- const initialIdentity = {
207
- ...defaultIdentity,
208
- country: getInitialCountry()
209
- };
210
- const [customer, setCustomer] = (0, _react.useState)(order?.customer ?? {
211
- name: null,
212
- email: null,
213
- newsletterOptIn: false
214
- });
215
- const [licenseeIdentity, setLicenseeIdentity] = (0, _react.useState)(getIdentityFields(order?.licenseeIdentity) ?? initialIdentity);
216
- const [billingIdentity, setBillingIdentity] = (0, _react.useState)(getIdentityFields(order?.billingIdentity) ?? initialIdentity);
217
-
218
- // Track if the Stripe Address Element reports as complete
219
- // Start as true if order already has billing identity (page reload case)
220
- const [billingAddressComplete, setBillingAddressComplete] = (0, _react.useState)(!!order?.billingIdentity);
221
-
222
- // Track differences between local state and saved backend data
223
- const billingIdentityDiff = (0, _react.useMemo)(() => {
224
- const savedIdentity = order?.billingIdentity;
225
- if (!savedIdentity) return null;
226
-
227
- // Helper to normalize values (treat null, undefined, and empty string as equivalent)
228
- const normalize = val => val || '';
229
- const differences = {};
230
- const checkField = (field, localValue, savedValue) => {
231
- const normalizedLocal = normalize(localValue);
232
- const normalizedSaved = normalize(savedValue);
233
- if (normalizedLocal !== normalizedSaved) {
234
- differences[field] = {
235
- local: normalizedLocal,
236
- saved: normalizedSaved
237
- };
238
- }
239
- };
240
- checkField('name', billingIdentity.name, savedIdentity.name);
241
- checkField('email', billingIdentity.email, savedIdentity.email);
242
- checkField('phone', billingIdentity.phone, savedIdentity.phoneNullable);
243
- checkField('country', billingIdentity.country, savedIdentity.country);
244
- checkField('street', billingIdentity.street, savedIdentity.street);
245
- checkField('locality', billingIdentity.locality, savedIdentity.locality);
246
- checkField('sublocality', billingIdentity.sublocality, savedIdentity.sublocality);
247
- checkField('administrativeArea', billingIdentity.administrativeArea, savedIdentity.administrativeArea);
248
- checkField('zip', billingIdentity.zip, savedIdentity.zip);
249
- checkField('organization', billingIdentity.organization, savedIdentity.organization);
250
- checkField('vatNumber', billingIdentity.vatNumber, savedIdentity.vatNumber);
251
- return Object.keys(differences).length > 0 ? differences : null;
252
- }, [billingIdentity, order?.billingIdentity]);
253
- const isBillingIdentitySaved = billingIdentityDiff === null && !!order?.billingIdentity;
254
- const handleCustomerChange = (0, _react.useCallback)(value => setCustomer(currentValue => ({
255
- ...currentValue,
256
- ...value
257
- })), [setCustomer]);
258
- const handleLicenseeChange = (0, _react.useCallback)(value => {
259
- setErrorsObject(currentValue => {
260
- if (currentValue?.licenseeIdentity) {
261
- const keys = Object.keys(value);
262
- return {
263
- ...currentValue,
264
- licenseeIdentity: {
265
- ...currentValue.licenseeIdentity,
266
- ...keys.reduce((acc, field) => {
267
- acc[field] = null;
268
- return acc;
269
- }, {})
270
- }
271
- };
272
- }
273
- return currentValue;
274
- });
275
- setLicenseeIdentity(currentValue => ({
276
- ...currentValue,
277
- ...value
278
- }));
279
- }, [setLicenseeIdentity]);
280
- const environment = (0, _reactRelay.useRelayEnvironment)();
281
- const [error, setError] = (0, _react.useState)(null);
282
- const [errorsObject, setErrorsObject] = (0, _react.useState)(null);
283
- const [customerErrorsObject, setCustomerErrorsObject] = (0, _react.useState)(null);
284
- const [_submitting, setSubmitting] = (0, _react.useState)(false);
285
- /* const [licenseeRequiredFields, setLicenseeRequiredFields] = useState<
286
- * (keyof Identity)[]
287
- * >(LICENSEE_REQUIRED_FIELDS); */
288
- const [acceptedEULA, setAcceptedEULA] = (0, _react.useState)(false);
289
- const {
290
- form: config
291
- } = (0, _react.useContext)(_ConfigContext.default);
292
-
293
- // reCAPTCHA state
294
- const [recaptchaToken, setRecaptchaToken] = (0, _react.useState)(null);
295
- const [pendingCustomerSubmit, setPendingCustomerSubmit] = (0, _react.useState)(null);
296
- const recaptchaRef = (0, _react.useRef)(null);
297
- const recaptchaEnabled = viewer.settings?.recaptchaEnabled ?? false;
298
- const recaptchaSiteKey = viewer.settings?.recaptchaSiteKey;
299
- const onCompleted = (res, errors, onSuccess, onError) => {
300
- if (errors && errors.length > 0) {
301
- setError(errors[0].message);
302
- setSubmitting(false);
303
- onError?.();
304
- } else if ('updateCustomer' in res && res.updateCustomer?.errors && (res.updateCustomer.errors.name || res.updateCustomer.errors.email || res.updateCustomer.errors.newsletterOptIn)) {
305
- setSubmitting(false);
306
- setCustomerErrorsObject(res.updateCustomer.errors);
307
- onError?.();
308
- } else if ('updateOrder' in res && res.updateOrder?.errors) {
309
- setSubmitting(false);
310
- setErrorsObject(res.updateOrder.errors);
311
- onError?.();
312
- } else {
313
- onSuccess?.();
314
- setSubmitting(false);
315
- setError(null);
316
- setCustomerErrorsObject(null);
317
- setErrorsObject(null);
318
- }
319
- };
320
- const onError = error => {
321
- setError(error.message);
322
- setSubmitting(false);
323
- };
324
- const updateCustomer = (0, _react.useCallback)((variables, onSuccess, onErrorCallback) => {
325
- (0, _reactRelay.commitMutation)(environment, {
326
- mutation: (_StoreModalUnifiedCheckoutUpdateCustomerMutation2.default.hash && _StoreModalUnifiedCheckoutUpdateCustomerMutation2.default.hash !== "a41e423a93ba20f15ebbe826dd802514" && console.error("The definition of 'StoreModalUnifiedCheckoutUpdateCustomerMutation' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _StoreModalUnifiedCheckoutUpdateCustomerMutation2.default),
327
- variables,
328
- onCompleted: (res, errors) => onCompleted(res, errors, onSuccess, onErrorCallback),
329
- onError
330
- });
331
- }, [environment]);
332
- const updateOrder = (0, _react.useCallback)((variables, onSuccess, onError) => {
333
- (0, _reactRelay.commitMutation)(environment, {
334
- mutation: (_StoreModalUnifiedCheckoutUpdateOrderMutation2.default.hash && _StoreModalUnifiedCheckoutUpdateOrderMutation2.default.hash !== "189cd7ac579c6898dca2f4b6e07861d1" && console.error("The definition of 'StoreModalUnifiedCheckoutUpdateOrderMutation' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _StoreModalUnifiedCheckoutUpdateOrderMutation2.default),
335
- variables,
336
- onCompleted: (res, errors) => onCompleted(res, errors, onSuccess, onError),
337
- onError
338
- });
339
- }, [environment]);
340
-
341
- // Update country order variable when licensee address country changes
342
- (0, _react.useEffect)(() => {
343
- if (!licenseeIdentity.country || !order.orderVariableSelections) return;
344
-
345
- // Find country-type order variable
346
- const countryVariableSelection = order.orderVariableSelections.find(selection => selection.orderVariable.variableType === 'country');
347
- if (!countryVariableSelection) return;
348
-
349
- // Only update if the country has actually changed
350
- if (countryVariableSelection.countryCode === licenseeIdentity.country) return;
351
-
352
- // Build updated selections array
353
- const updatedSelections = order.orderVariableSelections.map(selection => ({
354
- orderVariableId: selection.orderVariable.id,
355
- orderVariableOptionId: selection.orderVariableOption?.id ?? null,
356
- countryCode: selection.orderVariable.variableType === 'country' ? licenseeIdentity.country : selection.countryCode ?? null
357
- }));
358
-
359
- // Update the order with new country via callback
360
- onUpdateOrderVariableSelections(updatedSelections);
361
- }, [licenseeIdentity.country, order.orderVariableSelections, onUpdateOrderVariableSelections]);
362
-
363
- // When a country mismatch exists, force licenseeIsBillingIdentity to false
364
- // This ensures we always collect licensee information for orders with mismatched country
365
- (0, _react.useEffect)(() => {
366
- if (hasCountryMismatch && (order.licenseeIsBillingIdentity ?? true)) {
367
- // Update order to force separate licensee collection
368
- updateOrder({
369
- input: {
370
- licenseeIsBillingIdentity: false
371
- }
372
- });
373
- }
374
- }, [hasCountryMismatch, order.licenseeIsBillingIdentity, updateOrder]);
375
-
376
- // Auto-save billing identity when complete (for fontdue tax system only)
377
- // This ensures taxes are calculated before showing the payment element
378
- (0, _react.useEffect)(() => {
379
- const taxSystem = viewer.settings.taxSystem;
380
- const canUseEmbeddedCheckout = taxSystem === 'stripe';
381
-
382
- // Only for fontdue tax system (not Stripe Tax/embedded checkout)
383
- if (!canUseEmbeddedCheckout && order.customer && !isBillingIdentitySaved) {
384
- // Check if the Stripe Address Element reports as complete AND email is filled
385
- const isComplete = billingAddressComplete;
386
- if (isComplete) {
387
- // Debounce the update to avoid sending on every character change
388
- const timeoutId = setTimeout(() => {
389
- // Save billing identity to backend for tax calculation
390
- updateOrder({
391
- input: {
392
- billingIdentity
393
- }
394
- });
395
- }, 500); // 500ms debounce
396
-
397
- return () => clearTimeout(timeoutId);
398
- }
399
- }
400
- }, [billingIdentity, isBillingIdentitySaved, billingAddressComplete, order.customer, updateOrder, viewer.settings]);
401
- let initialEditingState = null;
402
- // set initial state depending on if checkout is already in progress
403
- if (!order.customer) initialEditingState = 'customer';
404
- const [editing, setEditing] = (0, _react.useState)(initialEditingState);
405
-
406
- // Submit customer data with optional reCAPTCHA token
407
- const submitCustomer = (0, _react.useCallback)((token, callbacks) => {
408
- setPendingCustomerSubmit(null);
409
- if (!billingIdentity.name && !billingIdentity.email) {
410
- setBillingIdentity({
411
- ...billingIdentity,
412
- name: customer.name ?? '',
413
- email: customer.email ?? ''
414
- });
415
- }
416
- updateCustomer({
417
- input: {
418
- ...customer,
419
- recaptchaToken: token ?? undefined
420
- }
421
- }, () => {
422
- callbacks.onSuccess();
423
- setEditing(null);
424
- // Reset reCAPTCHA after successful submission
425
- recaptchaRef.current?.reset();
426
- setRecaptchaToken(null);
427
- }, () => {
428
- callbacks.onError();
429
- // Reset reCAPTCHA on error so user can retry
430
- recaptchaRef.current?.reset();
431
- setRecaptchaToken(null);
432
- });
433
- }, [customer, billingIdentity, updateCustomer]);
434
- const handleRecaptchaChange = (0, _react.useCallback)(token => {
435
- setRecaptchaToken(token);
436
- // If we were waiting for a token to submit, do it now
437
- if (token && pendingCustomerSubmit) {
438
- submitCustomer(token, pendingCustomerSubmit.callbacks);
439
- }
440
- }, [pendingCustomerSubmit, submitCustomer]);
441
- const handleRecaptchaExpired = (0, _react.useCallback)(() => {
442
- setRecaptchaToken(null);
443
- }, []);
444
- const handleCustomerSubmit = callbacks => {
445
- // If reCAPTCHA is enabled but no token, execute it and wait for callback
446
- if (recaptchaEnabled && recaptchaSiteKey && !recaptchaToken) {
447
- setPendingCustomerSubmit({
448
- callbacks
449
- });
450
- recaptchaRef.current?.execute();
451
- return;
452
- }
453
- submitCustomer(recaptchaToken, callbacks);
454
- };
455
- const handleLicenseeIsBillingIdentityChange = (0, _react.useCallback)(value => {
456
- updateOrder({
457
- input: {
458
- licenseeIsBillingIdentity: value
459
- }
460
- });
461
- }, [updateOrder]);
462
- const handleBillingChange = (0, _react.useCallback)((value, complete) => {
463
- setError(null);
464
- setErrorsObject(currentValue => {
465
- if (currentValue?.billingIdentity) {
466
- const keys = Object.keys(value);
467
- return {
468
- ...currentValue,
469
- billingIdentity: {
470
- ...currentValue.billingIdentity,
471
- ...keys.reduce((acc, field) => {
472
- acc[field] = null;
473
- return acc;
474
- }, {})
475
- }
476
- };
477
- }
478
- return currentValue;
479
- });
480
- setBillingIdentity(currentValue => {
481
- const newValue = {
482
- ...currentValue,
483
- ...value
484
- };
485
- if (typeof complete === 'boolean') {
486
- setBillingAddressComplete(complete);
487
- }
488
- return newValue;
489
- });
490
- }, [order?.billingIdentity]);
491
- const stripe = (0, _reactStripeJs.useStripe)();
492
- const elements = (0, _reactStripeJs.useElements)();
493
- const [completing, setCompleting] = (0, _react.useState)(false);
494
- const [checkingOut, setCheckingOut] = (0, _react.useState)(false);
495
- const dispatch = (0, _reactRedux.useDispatch)();
496
-
497
- // When a country mismatch exists, always show licensee section (force collection)
498
- // Otherwise, only show when user has selected "Your client" option
499
- const showLicenseeSection = order.customer && (hasCountryMismatch || !(order.licenseeIsBillingIdentity ?? false));
500
- const handleCheckout = (0, _react.useCallback)(async () => {
501
- // Validate Stripe elements first
502
- if (elements) {
503
- const result = await elements.submit();
504
- if (result.error) {
505
- // Stripe will show validation errors in the UI
506
- return;
507
- }
508
- }
509
-
510
- // If licensee section is shown, save licensee data before navigating to checkout
511
- if (showLicenseeSection) {
512
- setCheckingOut(true);
513
- updateOrder({
514
- input: {
515
- licenseeIdentity
516
- }
517
- }, () => {
518
- setCheckingOut(false);
519
- dispatch({
520
- type: 'STORE_MODAL_NAVIGATE',
521
- route: 'checkout'
522
- });
523
- }, () => {
524
- setCheckingOut(false);
525
- });
526
- } else {
527
- dispatch({
528
- type: 'STORE_MODAL_NAVIGATE',
529
- route: 'checkout'
530
- });
531
- }
532
- }, [showLicenseeSection, licenseeIdentity, updateOrder, dispatch, elements]);
533
- const handleComplete = async e => {
534
- e.preventDefault();
535
- if (!order) return;
536
- if (!billingIdentity) {
537
- console.error('No billing identity, required for payment');
538
- return;
539
- }
540
-
541
- // Validate Stripe elements first
542
- if (elements) {
543
- const result = await elements.submit();
544
- if (result.error) {
545
- // Stripe will show validation errors in the UI
546
- return;
547
- }
548
- }
549
-
550
- // If billing identity is not saved yet, don't proceed with payment
551
- // The validation above will show errors for incomplete fields
552
- if (!isBillingIdentitySaved) {
553
- setError('Please complete all billing information above');
554
- return;
555
- }
556
- setCompleting(true);
557
- setError(null);
558
- const processPayment = () => {
559
- if (order.canCompleteWithCoupon) {
560
- (0, _reactRelay.commitMutation)(environment, {
561
- mutation: (_StoreModalUnifiedCheckoutCompleteOrderMutation2.default.hash && _StoreModalUnifiedCheckoutCompleteOrderMutation2.default.hash !== "ea880419670573334e55529f454f8026" && console.error("The definition of 'StoreModalUnifiedCheckoutCompleteOrderMutation' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _StoreModalUnifiedCheckoutCompleteOrderMutation2.default),
562
- variables: {},
563
- onCompleted: (_response, errors) => {
564
- if (errors && errors.length > 0) {
565
- setCompleting(false);
566
- setError(errors[0].message);
567
- return;
568
- }
569
- window.location.href = order.completeUrl;
570
- }
571
- });
572
- return;
573
- }
574
- if (!stripe || !elements) return;
575
- stripe?.confirmPayment({
576
- elements,
577
- confirmParams: {
578
- return_url: order.completeUrl,
579
- payment_method_data: {
580
- billing_details: {
581
- email: billingIdentity.email,
582
- name: billingIdentity.name,
583
- phone: billingIdentity.phone,
584
- address: {
585
- line1: billingIdentity.street?.split(/\n/)[0],
586
- line2: billingIdentity.street?.split(/\n/)[1] ?? '',
587
- city: billingIdentity.locality ?? '',
588
- state: billingIdentity.administrativeArea ?? '',
589
- country: billingIdentity.country,
590
- postal_code: billingIdentity.zip ?? ''
591
- }
592
- }
593
- }
594
- }
595
- }).then(result => {
596
- if ('error' in result) {
597
- setCompleting(false);
598
- setError(result.error.message ?? 'Payment failed. Please try another payment method.');
599
- }
600
- }).catch(error => {
601
- console.log(error);
602
- setCompleting(false);
603
- });
604
- };
605
-
606
- // Save both licensee (if shown) and billing info before processing payment
607
- const orderInput = {
608
- billingIdentity
609
- };
610
- if (showLicenseeSection) {
611
- orderInput.licenseeIdentity = licenseeIdentity;
612
- }
613
- updateOrder({
614
- input: orderInput
615
- }, () => {
616
- processPayment();
617
- }, () => {
618
- setCompleting(false);
619
- });
620
- };
621
- const taxSystem = viewer.settings.taxSystem;
622
- const canUseEmbeddedCheckout = taxSystem === 'stripe';
623
- const showBillingSection = !canUseEmbeddedCheckout && order.customer;
624
-
625
- // billing info will be handled by embedded checkout
626
- const showCheckoutButton = canUseEmbeddedCheckout && order.customer;
627
- const zeroOrder = order.canCompleteWithCoupon;
628
- const showPaymentSection = !canUseEmbeddedCheckout && order.customer;
629
- const billingComplete = IDENTITY_REQUIRED_FIELDS.every(key => Boolean(billingIdentity[key]));
630
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(EditableSection, {
631
- editing: editing === 'customer',
632
- disabled: false,
633
- onEdit: () => setEditing('customer'),
634
- onSubmit: handleCustomerSubmit,
635
- disableSubmit: false
636
- }, {
637
- save: canUseEmbeddedCheckout ? order.customer ? 'Save' : 'Continue' : 'Checkout',
638
- show: /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("h3", {
639
- className: "store-modal__cart__checkout-section-title"
640
- }, "Contact information"), order.customer ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, order.customer.name, /*#__PURE__*/_react.default.createElement("br", null), order.customer.email) : 'Loading...'),
641
- edit: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h3", {
642
- className: "store-modal__cart__checkout-section-title"
643
- }, "Contact information"), /*#__PURE__*/_react.default.createElement(_CustomerFields.default, {
644
- value: customer,
645
- onChange: handleCustomerChange,
646
- optInLabel: viewer.settings?.newsletterOptInLabel,
647
- errors: customerErrorsObject
648
- }), recaptchaEnabled && recaptchaSiteKey && /*#__PURE__*/_react.default.createElement(_reactGoogleRecaptcha.default, {
649
- ref: recaptchaRef,
650
- sitekey: recaptchaSiteKey,
651
- size: "invisible",
652
- onChange: handleRecaptchaChange,
653
- onExpired: handleRecaptchaExpired
654
- }))
655
- }), order.customer && !hasCountryMismatch ? /*#__PURE__*/_react.default.createElement(_StoreModalLicenseeIsBillingIdentityElement.default, {
656
- disabled: false,
657
- value: order.licenseeIsBillingIdentity ?? false,
658
- onChange: handleLicenseeIsBillingIdentityChange
659
- }, {
660
- label: /*#__PURE__*/_react.default.createElement("div", {
661
- dangerouslySetInnerHTML: {
662
- __html: viewer.settings?.storeModalSelectLicenseeLabel ?? ''
663
- }
664
- })
665
- }) : null, showLicenseeSection ? /*#__PURE__*/_react.default.createElement("div", {
666
- className: "store-modal__cart__checkout-section"
667
- }, /*#__PURE__*/_react.default.createElement("h3", {
668
- className: "store-modal__cart__checkout-section-title"
669
- }, hasCountryMismatch ? 'Licensee information' : 'Licensee information (your client)'), /*#__PURE__*/_react.default.createElement("div", {
670
- className: "store-modal__cart__identity-fields"
671
- }, /*#__PURE__*/_react.default.createElement(_AddressFields.default, {
672
- viewer: viewer,
673
- value: licenseeIdentity,
674
- onChange: handleLicenseeChange,
675
- errorsObject: errorsObject?.licenseeIdentity,
676
- identityType: "licensee"
677
- }))) : null, showBillingSection ? /*#__PURE__*/_react.default.createElement("div", {
678
- className: "store-modal__cart__checkout-section",
679
- "data-disabled": !order.customer
680
- }, /*#__PURE__*/_react.default.createElement("h3", {
681
- className: "store-modal__cart__checkout-section-title"
682
- }, "Billing information"), /*#__PURE__*/_react.default.createElement("div", {
683
- className: "store-modal__cart__identity-fields"
684
- }, /*#__PURE__*/_react.default.createElement(_AddressFields.default, {
685
- viewer: viewer,
686
- value: billingIdentity,
687
- onChange: handleBillingChange,
688
- errorsObject: errorsObject?.billingIdentity,
689
- identityType: "billing"
690
- }))) : null, showCheckoutButton ? /*#__PURE__*/_react.default.createElement("div", {
691
- className: "store-modal__cart__checkout-section",
692
- "data-disabled": false
693
- }, /*#__PURE__*/_react.default.createElement("button", {
694
- type: "button",
695
- className: "store-modal__cart__button",
696
- onClick: handleCheckout,
697
- disabled: checkingOut
698
- }, checkingOut ? 'Submitting...' : 'Checkout')) : null, showPaymentSection ? /*#__PURE__*/_react.default.createElement("div", {
699
- className: "store-modal__cart__checkout-section",
700
- "data-disabled": false
701
- }, /*#__PURE__*/_react.default.createElement("form", {
702
- onSubmit: handleComplete
703
- }, !zeroOrder && order.stripePaymentIntent?.clientSecret && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h3", {
704
- className: "store-modal__cart__checkout-section-title"
705
- }, "Payment information", /*#__PURE__*/_react.default.createElement("span", {
706
- className: "store-modal__cart__checkout-section-subtitle"
707
- }, /*#__PURE__*/_react.default.createElement("a", {
708
- href: "https://stripe.com",
709
- target: "_blank",
710
- rel: "noopener"
711
- }, "Powered by ", /*#__PURE__*/_react.default.createElement(_StripeLogo.default, null)))), /*#__PURE__*/_react.default.createElement("div", {
712
- className: "store-modal__cart__payment"
713
- }, /*#__PURE__*/_react.default.createElement(Sentry.ErrorBoundary, {
714
- fallback: /*#__PURE__*/_react.default.createElement("div", null, "Something went wrong")
715
- }, /*#__PURE__*/_react.default.createElement(_reactStripeJs.PaymentElement, {
716
- options: {
717
- layout: {
718
- type: 'tabs',
719
- defaultCollapsed: false,
720
- radios: true,
721
- spacedAccordionItems: true
722
- }
723
- }
724
- })))), error && /*#__PURE__*/_react.default.createElement("div", {
725
- className: "store-modal__cart__error"
726
- }, error), /*#__PURE__*/_react.default.createElement("div", {
727
- className: "store-modal__cart__agreement"
728
- }, /*#__PURE__*/_react.default.createElement("div", {
729
- className: "checkbox"
730
- }, /*#__PURE__*/_react.default.createElement("input", {
731
- type: "checkbox",
732
- id: "eula-agreement",
733
- checked: acceptedEULA,
734
- onChange: event => setAcceptedEULA(event.target.checked)
735
- }), /*#__PURE__*/_react.default.createElement("div", {
736
- className: "checkbox__icon"
737
- }, config.checkboxStyle === 'check' ? /*#__PURE__*/_react.default.createElement(_Icons.Check, null) : /*#__PURE__*/_react.default.createElement(_Icons.X, null))), /*#__PURE__*/_react.default.createElement("label", {
738
- htmlFor: "eula-agreement"
739
- }, /*#__PURE__*/_react.default.createElement("div", {
740
- dangerouslySetInnerHTML: {
741
- __html: viewer.settings?.eulaAgreementLabel ?? ''
742
- }
743
- }))), /*#__PURE__*/_react.default.createElement("button", {
744
- type: "submit",
745
- className: "store-modal__cart__button",
746
- disabled: completing || !acceptedEULA
747
- }, completing ? 'Submitting...' : zeroOrder ? 'Complete order' : /*#__PURE__*/_react.default.createElement("span", null, "Pay", ' ', order.stripePaymentIntent?.amount && order.stripePaymentIntent?.currency ? /*#__PURE__*/_react.default.createElement(_Price.Price, {
748
- price: {
749
- amount: order.stripePaymentIntent.amount,
750
- currency: order.stripePaymentIntent.currency
751
- }
752
- }) : null)))) : null);
753
- }