fontdue-js 2.21.0 → 2.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (468) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/components/ConfigContext.d.ts +3 -0
  3. package/dist/components/ConfigContext.js +2 -1
  4. package/dist/components/FontdueProvider/FontdueProviderClientComponent.js +2 -0
  5. package/dist/components/FontdueProvider/useAuxUIOwner.d.ts +1 -0
  6. package/dist/components/FontdueProvider/useAuxUIOwner.js +28 -0
  7. package/dist/components/TypeTester/TypeTesterFeatures.js +2 -1
  8. package/dist/components/TypeTester/TypeTesterFeaturesButton.js +5 -3
  9. package/dist/components/TypeTester/TypeTesterStandalone.d.ts +2 -2
  10. package/dist/components/TypeTester/TypeTesterStandalone.js +2 -1
  11. package/dist/components/TypeTester/TypeTesterStandalone.preload.d.ts +14 -0
  12. package/dist/components/TypeTester/TypeTesterStandalone.preload.js +19 -0
  13. package/dist/components/TypeTester/types.d.ts +2 -0
  14. package/dist/components/TypeTester/types.js +10 -1
  15. package/dist/components/TypeTesters/TypeTestersElement.d.ts +2 -1
  16. package/dist/components/TypeTesters/TypeTestersElement.js +3 -1
  17. package/dist/components/TypeTesters/index.d.ts +2 -0
  18. package/dist/components/TypeTesters/index.js +5 -2
  19. package/dist/config.d.ts +6 -0
  20. package/dist/config.js +20 -0
  21. package/dist/corsError.d.ts +1 -0
  22. package/dist/corsError.js +16 -9
  23. package/dist/global-shim.js +8 -0
  24. package/dist/index.d.ts +2 -0
  25. package/dist/index.js +1 -0
  26. package/dist/relay/environment.js +51 -42
  27. package/dist-cjs/__generated__/AddToCartBannerQuery.graphql.js +194 -0
  28. package/dist-cjs/__generated__/AddToCartBanner_item.graphql.js +107 -0
  29. package/dist-cjs/__generated__/AddToCartBanner_order.graphql.js +131 -0
  30. package/dist-cjs/__generated__/AddressFieldsRefetchQuery.graphql.js +170 -0
  31. package/dist-cjs/__generated__/AddressFields_viewer.graphql.js +125 -0
  32. package/dist-cjs/__generated__/BuyButtonIDQuery.graphql.js +121 -0
  33. package/dist-cjs/__generated__/BuyButtonSlugQuery.graphql.js +146 -0
  34. package/dist-cjs/__generated__/BuyButton_collection.graphql.js +56 -0
  35. package/dist-cjs/__generated__/CartButtonQuery.graphql.js +139 -0
  36. package/dist-cjs/__generated__/CartButton_order.graphql.js +71 -0
  37. package/dist-cjs/__generated__/CartItemAdditionalLicenses_licenses.graphql.js +42 -0
  38. package/dist-cjs/__generated__/CartItemAdditionalLicenses_orderItem.graphql.js +52 -0
  39. package/dist-cjs/__generated__/CartItemLicense_selection.graphql.js +80 -0
  40. package/{dist/__generated__/CartItem_product.graphql.js → dist-cjs/__generated__/CartItemProduct_product.graphql.js} +27 -38
  41. package/{dist/__generated__/CartItem_licenseSelection.graphql.js → dist-cjs/__generated__/CartItemVariable_selection.graphql.js} +32 -31
  42. package/dist-cjs/__generated__/CartItemVariable_variable.graphql.js +58 -0
  43. package/dist-cjs/__generated__/CartItem_node.graphql.js +166 -0
  44. package/dist-cjs/__generated__/CartOrderCompleteOrderMutation.graphql.js +783 -0
  45. package/dist-cjs/__generated__/CartOrderRemoveDiscountMutation.graphql.js +760 -0
  46. package/dist-cjs/__generated__/CartOrderUpdateMutation.graphql.js +795 -0
  47. package/{dist/__generated__/ThemeConfig_viewer.graphql.js → dist-cjs/__generated__/CartOrder_UpdateErrors.graphql.js} +8 -8
  48. package/{dist/__generated__/StoreModalReview_order.graphql.js → dist-cjs/__generated__/CartOrder_order.graphql.js} +125 -105
  49. package/{dist/__generated__/StoreModalReview_viewer.graphql.js → dist-cjs/__generated__/CartOrder_viewer.graphql.js} +7 -3
  50. package/dist-cjs/__generated__/CartQuery.graphql.js +887 -0
  51. package/{dist/__generated__/StoreModalReviewCompleteOrderMutation.graphql.js → dist-cjs/__generated__/CartStateRemoveDiscountMutation.graphql.js} +188 -208
  52. package/dist-cjs/__generated__/CartStateUpdateMutation.graphql.js +790 -0
  53. package/dist-cjs/__generated__/CartState_order.graphql.js +122 -0
  54. package/dist-cjs/__generated__/CartTotals_order.graphql.js +140 -0
  55. package/dist-cjs/__generated__/CharacterViewerIDQuery.graphql.js +332 -0
  56. package/dist-cjs/__generated__/CharacterViewerSlugQuery.graphql.js +362 -0
  57. package/dist-cjs/__generated__/CharacterViewerStyleRefetchQuery.graphql.js +226 -0
  58. package/dist-cjs/__generated__/CharacterViewer_collection.graphql.js +197 -0
  59. package/dist-cjs/__generated__/CharacterViewer_family.graphql.js +101 -0
  60. package/dist-cjs/__generated__/CharacterViewer_style.graphql.js +161 -0
  61. package/{dist/__generated__/CartOrderApplyCouponMutation.graphql.js → dist-cjs/__generated__/CheckoutUpdateCustomerMutation.graphql.js} +269 -418
  62. package/dist-cjs/__generated__/CheckoutUpdateOrderMutation.graphql.js +811 -0
  63. package/dist-cjs/__generated__/Checkout_UpdateOrderErrors.graphql.js +97 -0
  64. package/dist-cjs/__generated__/Checkout_identity.graphql.js +94 -0
  65. package/dist-cjs/__generated__/Checkout_order.graphql.js +144 -0
  66. package/{dist/__generated__/TestModeBanner_viewer.graphql.js → dist-cjs/__generated__/Checkout_viewer.graphql.js} +20 -10
  67. package/dist-cjs/__generated__/CollectionAa_Query.graphql.js +192 -0
  68. package/dist-cjs/__generated__/CollectionAa_product.graphql.js +69 -0
  69. package/{dist/__generated__/StoreModalReviewUpdateOrderMutation.graphql.js → dist-cjs/__generated__/CouponCodeInputApplyCouponMutation.graphql.js} +191 -204
  70. package/dist-cjs/__generated__/CouponText_coupon.graphql.js +73 -0
  71. package/dist-cjs/__generated__/CustomerLoginFormLoginMutation.graphql.js +72 -0
  72. package/dist-cjs/__generated__/CustomerLoginFormQuery.graphql.js +91 -0
  73. package/{dist/__generated__/SKUPrice_RefetchQuery.graphql.js → dist-cjs/__generated__/DownloadRefetchQuery.graphql.js} +38 -43
  74. package/dist-cjs/__generated__/Download_order.graphql.js +61 -0
  75. package/dist-cjs/__generated__/FamilyList_node.graphql.js +96 -0
  76. package/dist-cjs/__generated__/Family_node.graphql.js +160 -0
  77. package/dist-cjs/__generated__/FontFamiliesQuery.graphql.js +368 -0
  78. package/dist-cjs/__generated__/FontStyle_fontStyle.graphql.js +32 -0
  79. package/dist-cjs/__generated__/IdentityBox_identity.graphql.js +52 -0
  80. package/{dist/__generated__/CartItem_license.graphql.js → dist-cjs/__generated__/License_node.graphql.js} +29 -8
  81. package/{dist/__generated__/NewsletterSignup_Query.graphql.js → dist-cjs/__generated__/NewsletterSignupQuery.graphql.js} +19 -8
  82. package/dist-cjs/__generated__/NewsletterSignupUpdateCustomerMutation.graphql.js +81 -0
  83. package/dist-cjs/__generated__/NodePasswordFormAccessNodeMutation.graphql.js +72 -0
  84. package/dist-cjs/__generated__/NodePasswordFormIDQuery.graphql.js +93 -0
  85. package/dist-cjs/__generated__/NodePasswordFormSlugQuery.graphql.js +115 -0
  86. package/dist-cjs/__generated__/OrderVariableSelectionReduxRefetchQuery.graphql.js +154 -0
  87. package/dist-cjs/__generated__/OrderVariableSelectionRedux_viewer.graphql.js +75 -0
  88. package/dist-cjs/__generated__/OrderVariableSelection_variables.graphql.js +107 -0
  89. package/dist-cjs/__generated__/PrecartAddToCartMutation.graphql.js +793 -0
  90. package/dist-cjs/__generated__/PrecartClearCartMutation.graphql.js +81 -0
  91. package/dist-cjs/__generated__/PrecartQuery.graphql.js +308 -0
  92. package/{dist/__generated__/CartItem_viewer.graphql.js → dist-cjs/__generated__/Precart_collection.graphql.js} +22 -28
  93. package/dist-cjs/__generated__/Precart_license.graphql.js +67 -0
  94. package/dist-cjs/__generated__/Precart_viewer.graphql.js +161 -0
  95. package/{dist/__generated__/PriceBarSection_RefetchQuery.graphql.js → dist-cjs/__generated__/PriceBarSectionRefetchQuery.graphql.js} +51 -35
  96. package/dist-cjs/__generated__/PriceBarSection_node.graphql.js +121 -0
  97. package/dist-cjs/__generated__/PriceBar_node.graphql.js +60 -0
  98. package/dist-cjs/__generated__/Price_price.graphql.js +40 -0
  99. package/dist-cjs/__generated__/SKUPrice_sku.graphql.js +69 -0
  100. package/dist-cjs/__generated__/SelectButton_sku.graphql.js +54 -0
  101. package/dist-cjs/__generated__/ServerConfigProviderQuery.graphql.js +108 -0
  102. package/{dist/__generated__/CartTotalsCreateSnapshotMutation.graphql.js → dist-cjs/__generated__/ShareCartCreateSnapshotMutation.graphql.js} +7 -7
  103. package/dist-cjs/__generated__/SpecimenLinkQuery.graphql.js +120 -0
  104. package/dist-cjs/__generated__/StoreModalBundleButton_bundle.graphql.js +85 -0
  105. package/dist-cjs/__generated__/StoreModalCartQuery.graphql.js +1017 -0
  106. package/dist-cjs/__generated__/StoreModalCheckoutQuery.graphql.js +194 -0
  107. package/dist-cjs/__generated__/StoreModalContainerQuery.graphql.js +228 -0
  108. package/dist-cjs/__generated__/StoreModalDownloadRefetchQuery.graphql.js +102 -0
  109. package/dist-cjs/__generated__/StoreModalDownload_order.graphql.js +40 -0
  110. package/dist-cjs/__generated__/StoreModalFamilyButton_collection.graphql.js +135 -0
  111. package/dist-cjs/__generated__/StoreModalFamily_collection.graphql.js +130 -0
  112. package/dist-cjs/__generated__/StoreModalIndexItem_fontCollection.graphql.js +98 -0
  113. package/dist-cjs/__generated__/StoreModalIndexQuery.graphql.js +263 -0
  114. package/dist-cjs/__generated__/StoreModalOrderVariableSelection_order.graphql.js +98 -0
  115. package/dist-cjs/__generated__/StoreModalOrderVariableSelection_viewer.graphql.js +66 -0
  116. package/dist-cjs/__generated__/StoreModalProductContent_collection.graphql.js +92 -0
  117. package/{dist/__generated__/StoreModalProductLicenseSelection_viewer.graphql.js → dist-cjs/__generated__/StoreModalProductLicenseSelection_collection.graphql.js} +6 -10
  118. package/dist-cjs/__generated__/StoreModalProductLicense_license.graphql.js +104 -0
  119. package/dist-cjs/__generated__/StoreModalProductQuery.graphql.js +702 -0
  120. package/dist-cjs/__generated__/StoreModalProductRefetchQuery.graphql.js +433 -0
  121. package/dist-cjs/__generated__/StoreModalProductSummaryAddToCartMutation.graphql.js +149 -0
  122. package/dist-cjs/__generated__/StoreModalProductSummaryClearCartMutation.graphql.js +81 -0
  123. package/dist-cjs/__generated__/StoreModalProductSummaryRefetchQuery.graphql.js +281 -0
  124. package/dist-cjs/__generated__/StoreModalProductSummary_viewer.graphql.js +243 -0
  125. package/dist-cjs/__generated__/StoreModalReviewIdentity_identity.graphql.js +52 -0
  126. package/dist-cjs/__generated__/StoreModalStyleButton_fontStyle.graphql.js +113 -0
  127. package/dist-cjs/__generated__/StoreModalUnifiedCheckoutCompleteOrderMutation.graphql.js +302 -0
  128. package/dist-cjs/__generated__/StoreModalUnifiedCheckoutUpdateCustomerMutation.graphql.js +323 -0
  129. package/{dist/__generated__/StoreModalReviewQuery.graphql.js → dist-cjs/__generated__/StoreModalUnifiedCheckoutUpdateOrderMutation.graphql.js} +243 -261
  130. package/dist-cjs/__generated__/StoreModalUnifiedCheckout_order.graphql.js +237 -0
  131. package/{dist/__generated__/TestFontsForm_viewer.graphql.js → dist-cjs/__generated__/StoreModalUnifiedCheckout_viewer.graphql.js} +48 -32
  132. package/dist-cjs/__generated__/StripeProviderCreateCheckoutSessionMutation.graphql.js +105 -0
  133. package/dist-cjs/__generated__/StripeProvider_viewer.graphql.js +139 -0
  134. package/dist-cjs/__generated__/TestFontsFormUpdateCustomerMutation.graphql.js +770 -0
  135. package/dist-cjs/__generated__/TestFontsForm_Query.graphql.js +126 -0
  136. package/dist-cjs/__generated__/TestModeBannerQuery.graphql.js +87 -0
  137. package/dist-cjs/__generated__/ThemeConfigQuery.graphql.js +87 -0
  138. package/dist-cjs/__generated__/TypeTesterFeaturesButton_fontStyle.graphql.js +32 -0
  139. package/dist-cjs/__generated__/TypeTesterFeatures_fontStyle.graphql.js +36 -0
  140. package/{dist/__generated__/Cart_viewer.graphql.js → dist-cjs/__generated__/TypeTesterFloatingToolbar_testers.graphql.js} +18 -14
  141. package/{dist/__generated__/TypeTester_NewStyleQuery.graphql.js → dist-cjs/__generated__/TypeTesterStandaloneChangedStylesQuery.graphql.js} +125 -122
  142. package/dist-cjs/__generated__/TypeTesterStandaloneQuery.graphql.js +450 -0
  143. package/dist-cjs/__generated__/TypeTesterStyleSelectData_fontStyle.graphql.js +106 -0
  144. package/dist-cjs/__generated__/TypeTesterStyleSelectData_fontStyleData.graphql.js +88 -0
  145. package/dist-cjs/__generated__/TypeTesterStyleSelectData_viewer.graphql.js +166 -0
  146. package/dist-cjs/__generated__/TypeTesterToolbar_fontStyle.graphql.js +36 -0
  147. package/{dist/__generated__/SpecimenLink_node.graphql.js → dist-cjs/__generated__/TypeTesterVariableAxes_fontStyle.graphql.js} +14 -8
  148. package/dist-cjs/__generated__/TypeTester_fontStyle.graphql.js +106 -0
  149. package/dist-cjs/__generated__/TypeTester_viewer.graphql.js +40 -0
  150. package/dist-cjs/__generated__/TypeTestersChangedStylesQuery.graphql.js +347 -0
  151. package/dist-cjs/__generated__/TypeTestersIDQuery.graphql.js +637 -0
  152. package/dist-cjs/__generated__/TypeTestersRefetchQuery.graphql.js +554 -0
  153. package/dist-cjs/__generated__/TypeTestersSlugQuery.graphql.js +644 -0
  154. package/dist-cjs/__generated__/TypeTesters_collection.graphql.js +258 -0
  155. package/dist-cjs/__generated__/TypeTesters_viewer.graphql.js +40 -0
  156. package/{dist/__generated__/CouponCodeInput_order.graphql.js → dist-cjs/__generated__/VariableTableAmounts_option.graphql.js} +10 -4
  157. package/dist-cjs/__generated__/VariableTableAmounts_variable.graphql.js +34 -0
  158. package/dist-cjs/__generated__/productState_Query.graphql.js +184 -0
  159. package/{dist/__generated__/CartItem_variable.graphql.js → dist-cjs/__generated__/productState_bundle.graphql.js} +31 -19
  160. package/dist-cjs/__generated__/productState_collection.graphql.js +90 -0
  161. package/dist-cjs/__generated__/productState_collectionBundle.graphql.js +88 -0
  162. package/dist-cjs/__generated__/productState_node.graphql.js +122 -0
  163. package/{dist/__generated__/TypeTester_sku.graphql.js → dist-cjs/__generated__/productState_sku.graphql.js} +7 -13
  164. package/dist-cjs/__generated__/useFeaturesData_fontStyle.graphql.js +64 -0
  165. package/dist-cjs/__generated__/useFontStyle_fontStyle.graphql.js +94 -0
  166. package/{dist/__generated__/FontFamilies_node.graphql.js → dist-cjs/__generated__/useTotalStyles_fontCollection.graphql.js} +19 -11
  167. package/dist-cjs/__tests__/collectionBundleSelection.test.js +1630 -0
  168. package/dist-cjs/components/AddToCartBanner/index.js +75 -0
  169. package/dist-cjs/components/BuyButton/index.js +124 -0
  170. package/{dist/components/BuyButton/BuyButton.server.js → dist-cjs/components/BuyButton/index.server.js} +9 -12
  171. package/dist-cjs/components/BuyingOptions/index.js +23 -0
  172. package/dist-cjs/components/Cart/AddressFields.js +162 -0
  173. package/dist-cjs/components/Cart/CartItem/CartItemAdditionalLicenses.js +33 -0
  174. package/dist-cjs/components/Cart/CartItem/CartItemLicense.js +66 -0
  175. package/dist-cjs/components/Cart/CartItem/CartItemProduct.js +36 -0
  176. package/dist-cjs/components/Cart/CartItem/CartItemVariable.js +66 -0
  177. package/dist-cjs/components/Cart/CartItem/VariableTextInput.js +79 -0
  178. package/dist-cjs/components/Cart/CartItem/index.js +95 -0
  179. package/dist-cjs/components/Cart/CartOrder.js +314 -0
  180. package/dist-cjs/components/Cart/CartState.js +93 -0
  181. package/dist-cjs/components/Cart/CartTotals.js +97 -0
  182. package/dist-cjs/components/Cart/Checkout.js +473 -0
  183. package/dist-cjs/components/Cart/CheckoutSteps.js +15 -0
  184. package/dist-cjs/components/Cart/CouponCodeInput.js +90 -0
  185. package/dist-cjs/components/Cart/CustomerFields.js +80 -0
  186. package/dist-cjs/components/Cart/Download.js +62 -0
  187. package/dist-cjs/components/Cart/EmptyCart.js +42 -0
  188. package/dist-cjs/components/Cart/IdentityBox.js +37 -0
  189. package/dist-cjs/components/Cart/ShareCart.js +87 -0
  190. package/dist-cjs/components/Cart/index.js +36 -0
  191. package/dist-cjs/components/Cart/injectRelayEnvironment.js +21 -0
  192. package/dist-cjs/components/Cart/types.js +5 -0
  193. package/dist-cjs/components/Cart/utils.js +8 -0
  194. package/dist-cjs/components/CartButton/index.js +127 -0
  195. package/dist-cjs/components/CartButton/index.server.js +18 -0
  196. package/dist-cjs/components/CharacterViewer/StyleSelect.js +60 -0
  197. package/dist-cjs/components/CharacterViewer/index.js +441 -0
  198. package/dist-cjs/components/CharacterViewer/index.server.js +36 -0
  199. package/dist-cjs/components/Checkbox/index.js +27 -0
  200. package/dist-cjs/components/CollectionAa/index.js +38 -0
  201. package/dist-cjs/components/ComponentsContext.js +12 -0
  202. package/dist-cjs/components/ConfigContext.js +86 -0
  203. package/dist-cjs/components/ConsentBanner/consent.js +92 -0
  204. package/dist-cjs/components/ConsentBanner/index.js +84 -0
  205. package/dist-cjs/components/CookieNotification/index.js +83 -0
  206. package/dist-cjs/components/CorsErrorModal.js +98 -0
  207. package/dist-cjs/components/CouponText/index.js +38 -0
  208. package/dist-cjs/components/CustomerLoginForm/index.js +88 -0
  209. package/dist-cjs/components/Family/FamilyList.js +43 -0
  210. package/dist-cjs/components/Family/index.js +77 -0
  211. package/dist-cjs/components/FontFamilies/index.js +53 -0
  212. package/dist-cjs/components/FontStyle/index.js +37 -0
  213. package/dist-cjs/components/FontdueProvider/FontdueProviderClientComponent.js +74 -0
  214. package/dist-cjs/components/FontdueProvider/index.js +43 -0
  215. package/dist-cjs/components/FontdueProvider/index.server.js +35 -0
  216. package/dist-cjs/components/FontdueProvider/useAuxUIOwner.js +32 -0
  217. package/dist-cjs/components/Icons/Align.js +58 -0
  218. package/dist-cjs/components/Icons/ArrowDownRight.js +19 -0
  219. package/dist-cjs/components/Icons/ArrowLeft.js +22 -0
  220. package/dist-cjs/components/Icons/ArrowRight.js +19 -0
  221. package/dist-cjs/components/Icons/CarrotDown.js +19 -0
  222. package/dist-cjs/components/Icons/CarrotUp.js +19 -0
  223. package/dist-cjs/components/Icons/Cart.js +23 -0
  224. package/dist-cjs/components/Icons/CartNew.js +33 -0
  225. package/dist-cjs/components/Icons/Check.js +19 -0
  226. package/dist-cjs/components/Icons/Checkbox.js +24 -0
  227. package/dist-cjs/components/Icons/CheckboxChecked.js +24 -0
  228. package/dist-cjs/components/Icons/CheckboxCrossed.js +26 -0
  229. package/dist-cjs/components/Icons/CircledCheck.js +21 -0
  230. package/dist-cjs/components/Icons/CircledInfo.js +21 -0
  231. package/dist-cjs/components/Icons/CircledMinus.js +21 -0
  232. package/dist-cjs/components/Icons/ColorPicker.js +19 -0
  233. package/dist-cjs/components/Icons/CreditCard.js +21 -0
  234. package/dist-cjs/components/Icons/DownArrow.js +24 -0
  235. package/dist-cjs/components/Icons/DownloadFonts.js +25 -0
  236. package/dist-cjs/components/Icons/FrowningFace.js +25 -0
  237. package/dist-cjs/components/Icons/License.js +19 -0
  238. package/dist-cjs/components/Icons/Receipt.js +34 -0
  239. package/dist-cjs/components/Icons/User.js +19 -0
  240. package/dist-cjs/components/Icons/X.js +19 -0
  241. package/dist-cjs/components/Icons/index.js +167 -0
  242. package/dist-cjs/components/NewsletterSignup/NewsletterSignupElement.js +15 -0
  243. package/dist-cjs/components/NewsletterSignup/index.js +192 -0
  244. package/dist-cjs/components/NewsletterSignup/index.server.js +18 -0
  245. package/dist-cjs/components/NodePasswordForm/index.js +114 -0
  246. package/dist-cjs/components/OrderVariableSelection/OrderVariableSelectionRedux.js +66 -0
  247. package/dist-cjs/components/OrderVariableSelection/index.js +199 -0
  248. package/dist-cjs/components/Precart/License.js +70 -0
  249. package/dist-cjs/components/Precart/index.js +331 -0
  250. package/dist-cjs/components/Price/index.js +111 -0
  251. package/dist-cjs/components/PriceBar/PriceBarSection.js +61 -0
  252. package/dist-cjs/components/PriceBar/index.js +49 -0
  253. package/dist-cjs/components/Root/index.js +208 -0
  254. package/dist-cjs/components/Root/productState.js +143 -0
  255. package/dist-cjs/components/SKUPrice/index.js +46 -0
  256. package/dist-cjs/components/Select/index.js +36 -0
  257. package/dist-cjs/components/SelectButton/index.js +79 -0
  258. package/dist-cjs/components/ServerConfigProvider/index.js +39 -0
  259. package/dist-cjs/components/SpecimenLink/index.js +37 -0
  260. package/dist-cjs/components/StickyNav/index.js +80 -0
  261. package/dist-cjs/components/StoreModal/StoreModalBundleButton.js +47 -0
  262. package/dist-cjs/components/StoreModal/StoreModalCart.js +79 -0
  263. package/dist-cjs/components/StoreModal/StoreModalCheckout.js +24 -0
  264. package/dist-cjs/components/StoreModal/StoreModalCheckoutContext.js +14 -0
  265. package/dist-cjs/components/StoreModal/StoreModalContainer.js +117 -0
  266. package/dist-cjs/components/StoreModal/StoreModalDownload.js +38 -0
  267. package/dist-cjs/components/StoreModal/StoreModalFamily.js +58 -0
  268. package/dist-cjs/components/StoreModal/StoreModalFamilyButton.js +69 -0
  269. package/dist-cjs/components/StoreModal/StoreModalIndex.js +27 -0
  270. package/dist-cjs/components/StoreModal/StoreModalIndexItem.js +63 -0
  271. package/dist-cjs/components/StoreModal/StoreModalLicenseeIsBillingSelection.js +30 -0
  272. package/dist-cjs/components/StoreModal/StoreModalLoader.js +22 -0
  273. package/dist-cjs/components/StoreModal/StoreModalOrderVariableSelection.js +89 -0
  274. package/dist-cjs/components/StoreModal/StoreModalProduct.js +154 -0
  275. package/dist-cjs/components/StoreModal/StoreModalReviewIdentity.js +18 -0
  276. package/dist-cjs/components/StoreModal/StoreModalRouter.js +28 -0
  277. package/dist-cjs/components/StoreModal/StoreModalStyleButton.js +52 -0
  278. package/dist-cjs/components/StoreModal/index.js +39 -0
  279. package/dist-cjs/components/StoreModal/routes.js +51 -0
  280. package/dist-cjs/components/StoreModal/types.js +5 -0
  281. package/dist-cjs/components/StoreModalProductLicenseSelection/LicenseElement.js +46 -0
  282. package/dist-cjs/components/StoreModalProductLicenseSelection/LicenseVariableElement.js +35 -0
  283. package/dist-cjs/components/StoreModalProductLicenseSelection/LicenseVariableRadioElement.js +47 -0
  284. package/dist-cjs/components/StoreModalProductLicenseSelection/StoreModalProductLicense.js +133 -0
  285. package/dist-cjs/components/StoreModalProductLicenseSelection/index.js +31 -0
  286. package/dist-cjs/components/StoreModalProductSummary/index.js +219 -0
  287. package/dist-cjs/components/StripeLogo.js +17 -0
  288. package/dist-cjs/components/StripeProvider/index.js +172 -0
  289. package/dist-cjs/components/Switch/index.js +7 -0
  290. package/dist-cjs/components/TestFontsForm/TestFontsFormElement.js +15 -0
  291. package/dist-cjs/components/TestFontsForm/index.js +208 -0
  292. package/dist-cjs/components/TestFontsForm/index.server.js +18 -0
  293. package/dist-cjs/components/TestModeBanner/index.js +34 -0
  294. package/dist-cjs/components/TextField/index.js +42 -0
  295. package/dist-cjs/components/ThemeConfig/index.js +41 -0
  296. package/dist-cjs/components/ThemeConfig/index.server.js +17 -0
  297. package/dist-cjs/components/Tracking/index.js +164 -0
  298. package/dist-cjs/components/TypeTester/TypeTesterAlignButtons.js +34 -0
  299. package/dist-cjs/components/TypeTester/TypeTesterBullet.js +23 -0
  300. package/dist-cjs/components/TypeTester/TypeTesterContent.js +58 -0
  301. package/dist-cjs/components/TypeTester/TypeTesterContext.js +166 -0
  302. package/dist-cjs/components/TypeTester/TypeTesterEditAll.js +36 -0
  303. package/dist-cjs/components/TypeTester/TypeTesterFeatures.js +133 -0
  304. package/dist-cjs/components/TypeTester/TypeTesterFeaturesButton.js +82 -0
  305. package/dist-cjs/components/TypeTester/TypeTesterFitter.js +21 -0
  306. package/dist-cjs/components/TypeTester/TypeTesterFloatingToolbar.js +79 -0
  307. package/dist-cjs/components/TypeTester/TypeTesterInput.js +72 -0
  308. package/dist-cjs/components/TypeTester/TypeTesterSlider.js +76 -0
  309. package/dist-cjs/components/TypeTester/TypeTesterStandalone.js +137 -0
  310. package/dist-cjs/components/TypeTester/TypeTesterStandalone.preload.js +27 -0
  311. package/dist-cjs/components/TypeTester/TypeTesterStandalone.server.js +26 -0
  312. package/dist-cjs/components/TypeTester/TypeTesterStandaloneElement.js +65 -0
  313. package/dist-cjs/components/TypeTester/TypeTesterState.js +133 -0
  314. package/dist-cjs/components/TypeTester/TypeTesterStyleSelect.js +101 -0
  315. package/dist-cjs/components/TypeTester/TypeTesterStyleSelectData.js +102 -0
  316. package/dist-cjs/components/TypeTester/TypeTesterToolbar.js +94 -0
  317. package/dist-cjs/components/TypeTester/TypeTesterVariableAxes.js +65 -0
  318. package/dist-cjs/components/TypeTester/features.js +150 -0
  319. package/dist-cjs/components/TypeTester/index.js +169 -0
  320. package/dist-cjs/components/TypeTester/types.js +14 -0
  321. package/dist-cjs/components/TypeTester/useFeaturesData.js +36 -0
  322. package/dist-cjs/components/TypeTester/useTypeTesterStyler.js +83 -0
  323. package/dist-cjs/components/TypeTesters/TypeTestersElement.js +33 -0
  324. package/dist-cjs/components/TypeTesters/index.js +271 -0
  325. package/dist-cjs/components/TypeTesters/index.server.js +44 -0
  326. package/dist-cjs/components/UrlContext.js +16 -0
  327. package/dist-cjs/components/VariableTableAmounts/index.js +28 -0
  328. package/dist-cjs/components/elements/Button/index.js +21 -0
  329. package/dist-cjs/components/elements/EmptyCart/index.js +30 -0
  330. package/dist-cjs/components/elements/StoreModalCartLayout/index.js +38 -0
  331. package/dist-cjs/components/elements/StoreModalContainer/StoreModalContainerContext.js +11 -0
  332. package/dist-cjs/components/elements/StoreModalContainer/index.js +77 -0
  333. package/dist-cjs/components/elements/StoreModalDownloadLayout/index.js +25 -0
  334. package/dist-cjs/components/elements/StoreModalFamily/index.js +31 -0
  335. package/dist-cjs/components/elements/StoreModalFamilyButton/index.js +45 -0
  336. package/dist-cjs/components/elements/StoreModalIndexItem/index.js +35 -0
  337. package/dist-cjs/components/elements/StoreModalLicenseeIsBillingIdentityElement.js +59 -0
  338. package/dist-cjs/components/elements/StoreModalLoadingScreen/index.js +14 -0
  339. package/dist-cjs/components/elements/StoreModalPageContainer/index.js +22 -0
  340. package/dist-cjs/components/elements/StoreModalStyleButton/index.js +37 -0
  341. package/dist-cjs/components/elements/StoreModalUnifiedCheckout.js +753 -0
  342. package/dist-cjs/components/useConsent.js +26 -0
  343. package/dist-cjs/components/useFont.js +76 -0
  344. package/dist-cjs/components/useFontStyle.js +58 -0
  345. package/dist-cjs/components/useInterval.js +28 -0
  346. package/dist-cjs/components/useTotalStyles.js +26 -0
  347. package/dist-cjs/config.js +27 -0
  348. package/dist-cjs/corsError.js +89 -0
  349. package/dist-cjs/data/unicodeData.js +1 -0
  350. package/dist-cjs/fontLoader.js +55 -0
  351. package/dist-cjs/global-shim.js +12 -0
  352. package/dist-cjs/hooks/useAutofit.js +114 -0
  353. package/dist-cjs/hooks/useLicenseAndOrderVariables.js +25 -0
  354. package/dist-cjs/hooks/useRefetchOnLicenseChanges.js +60 -0
  355. package/dist-cjs/hooks.js +18 -0
  356. package/dist-cjs/index.js +18 -0
  357. package/dist-cjs/package.json +1 -0
  358. package/dist-cjs/react-ranger.d.js +1 -0
  359. package/dist-cjs/react-ranger.js +301 -0
  360. package/dist-cjs/reducer.js +291 -0
  361. package/dist-cjs/relay/environment.js +148 -0
  362. package/dist-cjs/relay/loadSerializableQuery.js +57 -0
  363. package/dist-cjs/relay/useSerializablePreloadedQuery.js +52 -0
  364. package/dist-cjs/retryImport.js +24 -0
  365. package/dist-cjs/scripts/updateUnicodeData.js +49 -0
  366. package/dist-cjs/utils.js +107 -0
  367. package/dist-cjs/vanilla/FontStyle.js +58 -0
  368. package/dist-cjs/vanilla/TruncatedMarkdown.js +28 -0
  369. package/package.json +1 -1
  370. package/dist/__generated__/CartItem_license.graphql.d.ts +0 -27
  371. package/dist/__generated__/CartItem_licenseSelection.graphql.d.ts +0 -34
  372. package/dist/__generated__/CartItem_product.graphql.d.ts +0 -32
  373. package/dist/__generated__/CartItem_variable.graphql.d.ts +0 -23
  374. package/dist/__generated__/CartItem_viewer.graphql.d.ts +0 -30
  375. package/dist/__generated__/CartOrderApplyCouponMutation.graphql.d.ts +0 -21
  376. package/dist/__generated__/CartStateApplyCouponMutation.graphql.d.ts +0 -21
  377. package/dist/__generated__/CartStateApplyCouponMutation.graphql.js +0 -274
  378. package/dist/__generated__/CartTotalsCreateSnapshotMutation.graphql.d.ts +0 -22
  379. package/dist/__generated__/Cart_viewer.graphql.d.ts +0 -20
  380. package/dist/__generated__/CharacterViewer_Query.graphql.d.ts +0 -21
  381. package/dist/__generated__/CharacterViewer_Query.graphql.js +0 -230
  382. package/dist/__generated__/CharacterViewer_SlugQuery.graphql.d.ts +0 -25
  383. package/dist/__generated__/CharacterViewer_SlugQuery.graphql.js +0 -257
  384. package/dist/__generated__/CouponCodeInput_Refetch_Query.graphql.d.ts +0 -17
  385. package/dist/__generated__/CouponCodeInput_Refetch_Query.graphql.js +0 -201
  386. package/dist/__generated__/CouponCodeInput_order.graphql.d.ts +0 -13
  387. package/dist/__generated__/CouponCodeInput_viewer.graphql.d.ts +0 -25
  388. package/dist/__generated__/CouponCodeInput_viewer.graphql.js +0 -88
  389. package/dist/__generated__/CouponCodeRefetchQuery.graphql.d.ts +0 -22
  390. package/dist/__generated__/CouponCodeRefetchQuery.graphql.js +0 -178
  391. package/dist/__generated__/Family_viewer.graphql.d.ts +0 -17
  392. package/dist/__generated__/FontFamilies_node.graphql.d.ts +0 -20
  393. package/dist/__generated__/NewsletterSignup_Query.graphql.d.ts +0 -21
  394. package/dist/__generated__/NewsletterSignup_viewer.graphql.d.ts +0 -20
  395. package/dist/__generated__/NewsletterSignup_viewer.graphql.js +0 -56
  396. package/dist/__generated__/OrderVariableSelectionMutation.graphql.d.ts +0 -69
  397. package/dist/__generated__/OrderVariableSelectionMutation_viewer.graphql.d.ts +0 -30
  398. package/dist/__generated__/PriceBarSection_RefetchQuery.graphql.d.ts +0 -26
  399. package/dist/__generated__/PriceBarSection_viewer.graphql.d.ts +0 -17
  400. package/dist/__generated__/PriceBar_viewer.graphql.d.ts +0 -17
  401. package/dist/__generated__/SKUPriceRefetchQuery.graphql.d.ts +0 -31
  402. package/dist/__generated__/SKUPriceRefetchQuery.graphql.js +0 -130
  403. package/dist/__generated__/SKUPriceUpdateQuery.graphql.d.ts +0 -29
  404. package/dist/__generated__/SKUPrice_RefetchQuery.graphql.d.ts +0 -26
  405. package/dist/__generated__/SKUPrice_viewer.graphql.d.ts +0 -19
  406. package/dist/__generated__/SelectButton_viewer.graphql.d.ts +0 -17
  407. package/dist/__generated__/SpecimenLink_node.graphql.d.ts +0 -21
  408. package/dist/__generated__/StoreModalBundleButton_viewer.graphql.d.ts +0 -17
  409. package/dist/__generated__/StoreModalFamilyButton_viewer.graphql.d.ts +0 -17
  410. package/dist/__generated__/StoreModalFamily_viewer.graphql.d.ts +0 -17
  411. package/dist/__generated__/StoreModalOrderVariableSelectionHookQuery.graphql.d.ts +0 -26
  412. package/dist/__generated__/StoreModalOrderVariableSelectionOrderUpdateMutation.graphql.d.ts +0 -60
  413. package/dist/__generated__/StoreModalOrderVariableSelectionRefetchQuery.graphql.d.ts +0 -26
  414. package/dist/__generated__/StoreModalOrderVariableSelectionVariable_order.graphql.d.ts +0 -27
  415. package/dist/__generated__/StoreModalOrderVariableSelectionVariable_variable.graphql.d.ts +0 -24
  416. package/dist/__generated__/StoreModalProductContent_viewer.graphql.d.ts +0 -30
  417. package/dist/__generated__/StoreModalProductLicenseSelection_viewer.graphql.d.ts +0 -20
  418. package/dist/__generated__/StoreModalProductViewerRefetchQuery.graphql.d.ts +0 -31
  419. package/dist/__generated__/StoreModalReviewCompleteOrderMutation.graphql.d.ts +0 -25
  420. package/dist/__generated__/StoreModalReviewQuery.graphql.d.ts +0 -22
  421. package/dist/__generated__/StoreModalReviewUpdateOrderMutation.graphql.d.ts +0 -63
  422. package/dist/__generated__/StoreModalReview_order.graphql.d.ts +0 -59
  423. package/dist/__generated__/StoreModalReview_viewer.graphql.d.ts +0 -19
  424. package/dist/__generated__/StoreModalStyleButton_viewer.graphql.d.ts +0 -17
  425. package/dist/__generated__/TestFontsForm_viewer.graphql.d.ts +0 -29
  426. package/dist/__generated__/TestModeBanner_viewer.graphql.d.ts +0 -23
  427. package/dist/__generated__/ThemeConfig_viewer.graphql.d.ts +0 -19
  428. package/dist/__generated__/TypeTesterStandalone_StyleQuery.graphql.d.ts +0 -32
  429. package/dist/__generated__/TypeTesterStandalone_StyleQuery.graphql.js +0 -385
  430. package/dist/__generated__/TypeTesterStyleSelect_family.graphql.d.ts +0 -33
  431. package/dist/__generated__/TypeTesterStyleSelect_fontStyle.graphql.d.ts +0 -27
  432. package/dist/__generated__/TypeTester_NewStyleQuery.graphql.d.ts +0 -41
  433. package/dist/__generated__/TypeTester_sku.graphql.d.ts +0 -21
  434. package/dist/__generated__/useOrderVariables_order.graphql.d.ts +0 -24
  435. package/dist/components/BuyButton/BuyButton.server.d.ts +0 -3
  436. package/dist/components/CartButton/index-server.d.ts +0 -3
  437. package/dist/components/CartButton/index-server.js +0 -18
  438. package/dist/components/OrderVariableSelection/OrderVariableSelectionMutation.d.ts +0 -7
  439. package/dist/components/SelectField/index.d.ts +0 -13
  440. package/dist/components/SelectField/index.js +0 -49
  441. package/dist/components/StoreModal/StoreModalReview.d.ts +0 -6
  442. package/dist/components/StoreModal/StoreModalReview.js +0 -221
  443. package/dist/components/StoreModal/StoreModalRouterContext.d.ts +0 -7
  444. package/dist/components/StoreModal/StoreModalRouterContext.js +0 -11
  445. package/dist/components/StoreModal/createRouter.d.ts +0 -41
  446. package/dist/components/StoreModal/createRouter.js +0 -48
  447. package/dist/components/StoreModalProductLicenseSelection/ContainerElement.d.ts +0 -9
  448. package/dist/components/StoreModalProductLicenseSelection/ContainerElement.js +0 -25
  449. package/dist/components/Stylesheet/index.d.ts +0 -7
  450. package/dist/components/Stylesheet/index.js +0 -43
  451. package/dist/components/TestModeBanner/index.server.d.ts +0 -2
  452. package/dist/components/TestModeBanner/index.server.js +0 -17
  453. package/dist/components/elements/StoreModalReviewConfirm/index.d.ts +0 -12
  454. package/dist/components/elements/StoreModalReviewConfirm/index.js +0 -50
  455. package/dist/components/elements/StoreModalReviewItem/index.d.ts +0 -9
  456. package/dist/components/elements/StoreModalReviewItem/index.js +0 -21
  457. package/dist/components/elements/StoreModalReviewLayout/index.d.ts +0 -17
  458. package/dist/components/elements/StoreModalReviewLayout/index.js +0 -59
  459. package/dist/components/useFontLoaded.d.ts +0 -24
  460. package/dist/components/useFontLoaded.js +0 -60
  461. package/dist/deepMerge.d.ts +0 -4
  462. package/dist/deepMerge.js +0 -24
  463. package/dist/hooks/useOrderVariables.d.ts +0 -5
  464. package/dist/relay-environment.d.ts +0 -7
  465. package/dist/relay-environment.js +0 -34
  466. package/dist/utils/interpolateOrderVariableDescription.d.ts +0 -36
  467. package/dist/utils/interpolateOrderVariableDescription.test.d.ts +0 -1
  468. /package/dist/{__tests__/collectionBundleSelection.test.d.ts → global-shim.d.ts} +0 -0
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ 'use client';
3
+
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.NewsletterSignupPreloadedQueryRenderer = NewsletterSignupPreloadedQueryRenderer;
8
+ exports.default = NewsletterSignup;
9
+ var _NewsletterSignupQuery2 = _interopRequireDefault(require("../../__generated__/NewsletterSignupQuery.graphql"));
10
+ var _NewsletterSignupUpdateCustomerMutation2 = _interopRequireDefault(require("../../__generated__/NewsletterSignupUpdateCustomerMutation.graphql"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _reactRelay = require("react-relay");
13
+ var _reactGoogleRecaptcha = _interopRequireDefault(require("react-google-recaptcha"));
14
+ var _TextField = _interopRequireDefault(require("../TextField"));
15
+ var _Check = _interopRequireDefault(require("../Icons/Check"));
16
+ var _useSerializablePreloadedQuery = _interopRequireDefault(require("../../relay/useSerializablePreloadedQuery"));
17
+ 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); }
18
+ 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; }
19
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
20
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
21
+ const updateCustomerMutation = (_NewsletterSignupUpdateCustomerMutation2.default.hash && _NewsletterSignupUpdateCustomerMutation2.default.hash !== "769087891b6f263122bbb630b3f2ca6c" && console.error("The definition of 'NewsletterSignupUpdateCustomerMutation' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _NewsletterSignupUpdateCustomerMutation2.default);
22
+ const query = (_NewsletterSignupQuery2.default.hash && _NewsletterSignupQuery2.default.hash !== "24b303198a6038318723fc0124548862" && console.error("The definition of 'NewsletterSignupQuery' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _NewsletterSignupQuery2.default);
23
+ function NewsletterSignupComponent({
24
+ optInLabel: optInLabelProp,
25
+ successLabel: successLabelProp,
26
+ buttonLabel = 'Subscribe',
27
+ optInCheckboxChecked = false,
28
+ title,
29
+ intro,
30
+ data
31
+ }) {
32
+ const [name, setName] = (0, _react.useState)('');
33
+ const [email, setEmail] = (0, _react.useState)('');
34
+ const [newsletterOptIn, setNewsletterOptIn] = (0, _react.useState)(optInCheckboxChecked);
35
+ const [error, setError] = (0, _react.useState)(null);
36
+ const [submitting, setSubmitting] = (0, _react.useState)(false);
37
+ const [submitted, setSubmitted] = (0, _react.useState)(false);
38
+ const [recaptchaToken, setRecaptchaToken] = (0, _react.useState)(null);
39
+ const [pendingSubmit, setPendingSubmit] = (0, _react.useState)(false);
40
+ const recaptchaRef = (0, _react.useRef)(null);
41
+ const environment = (0, _reactRelay.useRelayEnvironment)();
42
+ const recaptchaEnabled = data.viewer?.settings?.recaptchaEnabled ?? false;
43
+ const recaptchaSiteKey = data.viewer?.settings?.recaptchaSiteKey;
44
+ const submitForm = (0, _react.useCallback)(token => {
45
+ setSubmitting(true);
46
+ setPendingSubmit(false);
47
+ setError(null);
48
+ (0, _reactRelay.commitMutation)(environment, {
49
+ mutation: updateCustomerMutation,
50
+ variables: {
51
+ input: {
52
+ name,
53
+ email,
54
+ newsletterOptIn,
55
+ recaptchaToken: token ?? undefined
56
+ }
57
+ },
58
+ onCompleted: (_res, errors) => {
59
+ if (errors && errors.length > 0) {
60
+ setError(errors[0].message);
61
+ setSubmitting(false);
62
+ // Reset reCAPTCHA on error so user can retry
63
+ recaptchaRef.current?.reset();
64
+ setRecaptchaToken(null);
65
+ } else {
66
+ setSubmitted(true);
67
+ setSubmitting(false);
68
+ setError(null);
69
+ }
70
+ },
71
+ onError: ({
72
+ message
73
+ }) => {
74
+ setError(message);
75
+ setSubmitting(false);
76
+ // Reset reCAPTCHA on error so user can retry
77
+ recaptchaRef.current?.reset();
78
+ setRecaptchaToken(null);
79
+ }
80
+ });
81
+ }, [environment, name, email, newsletterOptIn]);
82
+ const handleRecaptchaChange = (0, _react.useCallback)(token => {
83
+ setRecaptchaToken(token);
84
+ // If we were waiting for a token to submit, do it now
85
+ if (token && pendingSubmit) {
86
+ submitForm(token);
87
+ }
88
+ }, [pendingSubmit, submitForm]);
89
+ const handleRecaptchaExpired = (0, _react.useCallback)(() => {
90
+ setRecaptchaToken(null);
91
+ }, []);
92
+ const handleSubmit = e => {
93
+ e.preventDefault();
94
+
95
+ // If reCAPTCHA is enabled but no token, execute it and wait for callback
96
+ if (recaptchaEnabled && recaptchaSiteKey && !recaptchaToken) {
97
+ setPendingSubmit(true);
98
+ setError(null);
99
+ recaptchaRef.current?.execute();
100
+ return;
101
+ }
102
+ submitForm(recaptchaToken);
103
+ };
104
+
105
+ // Button is disabled only while actively submitting or waiting for reCAPTCHA
106
+ const disabled = !newsletterOptIn || !email || !name;
107
+ const optInLabel = optInLabelProp || data.viewer?.settings?.newsletterOptInLabel;
108
+ const successLabel = (successLabelProp || data.viewer?.settings?.newsletterSuccessLabel) ?? 'Success!';
109
+ if (submitted) {
110
+ return /*#__PURE__*/_react.default.createElement("div", {
111
+ className: "newsletter-signup"
112
+ }, /*#__PURE__*/_react.default.createElement("div", {
113
+ className: "newsletter-signup__success",
114
+ dangerouslySetInnerHTML: {
115
+ __html: successLabel
116
+ }
117
+ }));
118
+ }
119
+ return /*#__PURE__*/_react.default.createElement("div", {
120
+ className: "newsletter-signup"
121
+ }, /*#__PURE__*/_react.default.createElement("h2", {
122
+ className: "newsletter-signup__title"
123
+ }, title), /*#__PURE__*/_react.default.createElement("p", {
124
+ className: "newsletter-signup__intro"
125
+ }, intro), error && /*#__PURE__*/_react.default.createElement("p", {
126
+ className: "newsletter-signup__error"
127
+ }, error), /*#__PURE__*/_react.default.createElement("form", {
128
+ onSubmit: handleSubmit
129
+ }, /*#__PURE__*/_react.default.createElement("div", {
130
+ className: "newsletter-signup__section"
131
+ }, /*#__PURE__*/_react.default.createElement(_TextField.default, {
132
+ label: "Name *",
133
+ placeholder: "Your name",
134
+ autocomplete: "name",
135
+ value: name,
136
+ onChange: value => setName(value)
137
+ })), /*#__PURE__*/_react.default.createElement("div", {
138
+ className: "newsletter-signup__section"
139
+ }, /*#__PURE__*/_react.default.createElement(_TextField.default, {
140
+ label: "Email *",
141
+ placeholder: "Your email",
142
+ type: "email",
143
+ autocomplete: "email",
144
+ value: email,
145
+ onChange: value => setEmail(value)
146
+ })), /*#__PURE__*/_react.default.createElement("div", {
147
+ className: "newsletter-signup__section newsletter-signup__checkbox-field"
148
+ }, /*#__PURE__*/_react.default.createElement("div", {
149
+ className: "checkbox"
150
+ }, /*#__PURE__*/_react.default.createElement("input", {
151
+ type: "checkbox",
152
+ id: "customer-newsletter-opt-in",
153
+ checked: newsletterOptIn,
154
+ onChange: e => setNewsletterOptIn(e.target.checked)
155
+ }), /*#__PURE__*/_react.default.createElement("div", {
156
+ className: "checkbox__icon"
157
+ }, /*#__PURE__*/_react.default.createElement(_Check.default, null))), /*#__PURE__*/_react.default.createElement("label", {
158
+ htmlFor: "customer-newsletter-opt-in",
159
+ dangerouslySetInnerHTML: {
160
+ __html: optInLabel ?? ''
161
+ }
162
+ })), recaptchaEnabled && recaptchaSiteKey && /*#__PURE__*/_react.default.createElement(_reactGoogleRecaptcha.default, {
163
+ ref: recaptchaRef,
164
+ sitekey: recaptchaSiteKey,
165
+ size: "invisible",
166
+ onChange: handleRecaptchaChange,
167
+ onExpired: handleRecaptchaExpired
168
+ }), /*#__PURE__*/_react.default.createElement("div", {
169
+ className: "newsletter-signup__section"
170
+ }, /*#__PURE__*/_react.default.createElement("button", {
171
+ className: "submit-button",
172
+ disabled: submitting || pendingSubmit || disabled
173
+ }, submitting || pendingSubmit ? 'Submitting...' : buttonLabel, ' ', /*#__PURE__*/_react.default.createElement("span", {
174
+ className: "submit-button__arrow"
175
+ }, ' →')))));
176
+ }
177
+ function NewsletterSignupPreloadedQueryRenderer({
178
+ preloadedQuery,
179
+ ...props
180
+ }) {
181
+ const queryRef = (0, _useSerializablePreloadedQuery.default)(preloadedQuery);
182
+ const data = (0, _reactRelay.usePreloadedQuery)(query, queryRef);
183
+ return /*#__PURE__*/_react.default.createElement(NewsletterSignupComponent, _extends({
184
+ data: data
185
+ }, props));
186
+ }
187
+ function NewsletterSignup(props) {
188
+ const data = (0, _reactRelay.useLazyLoadQuery)(query, {});
189
+ return /*#__PURE__*/_react.default.createElement(NewsletterSignupComponent, _extends({}, props, {
190
+ data: data
191
+ }));
192
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = NewsletterSignup;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _loadSerializableQuery = _interopRequireDefault(require("../../relay/loadSerializableQuery"));
9
+ var _index = require("./index");
10
+ var _NewsletterSignupQuery = _interopRequireDefault(require("../../__generated__/NewsletterSignupQuery.graphql"));
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
13
+ async function NewsletterSignup(props) {
14
+ const preloadedQuery = await (0, _loadSerializableQuery.default)(_NewsletterSignupQuery.default, {});
15
+ return /*#__PURE__*/_react.default.createElement(_index.NewsletterSignupPreloadedQueryRenderer, _extends({}, props, {
16
+ preloadedQuery: preloadedQuery
17
+ }));
18
+ }
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ 'use client';
3
+
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = NodePasswordForm;
8
+ var _NodePasswordFormSlugQuery2 = _interopRequireDefault(require("../../__generated__/NodePasswordFormSlugQuery.graphql"));
9
+ var _NodePasswordFormIDQuery2 = _interopRequireDefault(require("../../__generated__/NodePasswordFormIDQuery.graphql"));
10
+ var _NodePasswordFormAccessNodeMutation2 = _interopRequireDefault(require("../../__generated__/NodePasswordFormAccessNodeMutation.graphql"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _reactRelay = require("react-relay");
13
+ var _TextField = _interopRequireDefault(require("../TextField"));
14
+ 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); }
15
+ 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; }
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
18
+ const accessNodeMutation = (_NodePasswordFormAccessNodeMutation2.default.hash && _NodePasswordFormAccessNodeMutation2.default.hash !== "d0beeb729c358ef4eebd1c8be47ec68e" && console.error("The definition of 'NodePasswordFormAccessNodeMutation' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _NodePasswordFormAccessNodeMutation2.default);
19
+ function NodePasswordFormComponent(props) {
20
+ const [password, setPassword] = (0, _react.useState)('');
21
+ const [error, setError] = (0, _react.useState)(null);
22
+ const [commitMutation, submitting] = (0, _reactRelay.useMutation)(accessNodeMutation);
23
+ const disabled = submitting || !password;
24
+ const handleSubmit = e => {
25
+ e.preventDefault();
26
+ setError(null);
27
+ commitMutation({
28
+ variables: {
29
+ input: {
30
+ password,
31
+ id: props.collectionId,
32
+ slug: props.collectionSlug
33
+ }
34
+ },
35
+ onCompleted: res => {
36
+ if (res.accessNode?.success) {
37
+ location.reload();
38
+ }
39
+ },
40
+ onError: error => {
41
+ setError(error.message);
42
+ }
43
+ });
44
+ };
45
+ return /*#__PURE__*/_react.default.createElement("form", {
46
+ onSubmit: handleSubmit,
47
+ className: "node-password-form"
48
+ }, error && /*#__PURE__*/_react.default.createElement("p", {
49
+ className: "node-password-form__error"
50
+ }, error), /*#__PURE__*/_react.default.createElement("div", {
51
+ className: "node-password-form__section"
52
+ }, /*#__PURE__*/_react.default.createElement(_TextField.default, {
53
+ label: "Password *",
54
+ placeholder: "Enter password",
55
+ autocomplete: "off",
56
+ type: "password",
57
+ value: password,
58
+ onChange: value => setPassword(value)
59
+ })), /*#__PURE__*/_react.default.createElement("div", {
60
+ className: "node-password-form__section"
61
+ }, /*#__PURE__*/_react.default.createElement("button", {
62
+ disabled: disabled,
63
+ className: "submit-button"
64
+ }, "Submit")));
65
+ }
66
+ const idQuery = (_NodePasswordFormIDQuery2.default.hash && _NodePasswordFormIDQuery2.default.hash !== "2af86f8f6df3d2e6061ea1c9dd777a26" && console.error("The definition of 'NodePasswordFormIDQuery' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _NodePasswordFormIDQuery2.default);
67
+ function NodePasswordFormIDQueryRenderer({
68
+ collectionId,
69
+ ...rest
70
+ }) {
71
+ const data = (0, _reactRelay.useLazyLoadQuery)(idQuery, {
72
+ collectionId
73
+ });
74
+ // this is counterintuitive, but we've added the @catch directive on the collection,
75
+ // and we're expecting it to respond with an error if the node is inaccessible due to being
76
+ // password-protected. so, when we encounter the error we're safe to render the password form.
77
+ // (we don't want to show the form if the user has already gained access)
78
+ if (data.collection.ok === false) return /*#__PURE__*/_react.default.createElement(NodePasswordFormComponent, _extends({}, rest, {
79
+ collectionId: collectionId
80
+ }));
81
+ }
82
+ const slugQuery = (_NodePasswordFormSlugQuery2.default.hash && _NodePasswordFormSlugQuery2.default.hash !== "c40faf067007027fa9ba6673350c7202" && console.error("The definition of 'NodePasswordFormSlugQuery' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _NodePasswordFormSlugQuery2.default);
83
+ function NodePasswordFormSlugQueryRenderer({
84
+ collectionSlug,
85
+ ...rest
86
+ }) {
87
+ const data = (0, _reactRelay.useLazyLoadQuery)(slugQuery, {
88
+ collectionSlug
89
+ });
90
+ // see note in NodePasswordFormIDQueryRenderer
91
+ if (data.viewer.slug?.collection.ok === false) return /*#__PURE__*/_react.default.createElement(NodePasswordFormComponent, _extends({}, rest, {
92
+ collectionSlug: collectionSlug
93
+ }));
94
+ return null;
95
+ }
96
+
97
+ // default client export
98
+ function NodePasswordForm({
99
+ collectionId,
100
+ collectionSlug,
101
+ ...rest
102
+ }) {
103
+ if (collectionId) {
104
+ return /*#__PURE__*/_react.default.createElement(NodePasswordFormIDQueryRenderer, _extends({
105
+ collectionId: collectionId
106
+ }, rest));
107
+ }
108
+ if (collectionSlug) {
109
+ return /*#__PURE__*/_react.default.createElement(NodePasswordFormSlugQueryRenderer, _extends({
110
+ collectionSlug: collectionSlug
111
+ }, rest));
112
+ }
113
+ throw new Error('NodePasswordForm expected either a collectionId or collectionSlug prop');
114
+ }
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = OrderVariableSelectionRedux;
7
+ var _OrderVariableSelectionRedux_viewer2 = _interopRequireDefault(require("../../__generated__/OrderVariableSelectionRedux_viewer.graphql"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _reactRelay = require("react-relay");
10
+ var _reactRedux = require("react-redux");
11
+ var _index = _interopRequireDefault(require("./index"));
12
+ var _OrderVariableSelectionReduxRefetchQuery = _interopRequireDefault(require("../../__generated__/OrderVariableSelectionReduxRefetchQuery.graphql"));
13
+ var _useRefetchOnLicenseChanges = require("../../hooks/useRefetchOnLicenseChanges");
14
+ 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); }
15
+ 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; }
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ function OrderVariableSelectionRedux({
18
+ viewer: viewerKey,
19
+ disabled,
20
+ children
21
+ }) {
22
+ const environment = (0, _reactRelay.useRelayEnvironment)();
23
+ const [viewer, refetch] = (0, _reactRelay.useRefetchableFragment)((_OrderVariableSelectionRedux_viewer2.default.hash && _OrderVariableSelectionRedux_viewer2.default.hash !== "eaa5e1fdf47cb582dd3c7bdea0a5e6b2" && console.error("The definition of 'OrderVariableSelectionRedux_viewer' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _OrderVariableSelectionRedux_viewer2.default), viewerKey);
24
+ const refetchVariables = (0, _react.useMemo)(() => ({}), []);
25
+ (0, _useRefetchOnLicenseChanges.useRefetchOnLicenseChanges)({
26
+ environment,
27
+ refetch,
28
+ query: _OrderVariableSelectionReduxRefetchQuery.default,
29
+ variables: refetchVariables
30
+ });
31
+ const dispatch = (0, _reactRedux.useDispatch)();
32
+ const selections = (0, _reactRedux.useSelector)(state => state.orderVariableSelections);
33
+ const handleSelectionChange = (0, _react.useCallback)(newSelections => {
34
+ dispatch({
35
+ type: 'UPDATE_ORDER_VARIABLE_SELECTIONS',
36
+ selections: newSelections
37
+ });
38
+ }, [dispatch]);
39
+
40
+ // Auto-populate Redux state with detected country for country-type variables
41
+ (0, _react.useEffect)(() => {
42
+ if (!viewer.detectedCountry || !viewer.orderVariables) return;
43
+
44
+ // Find country-type variables that don't have a selection yet
45
+ const countryVariablesNeedingSelection = viewer.orderVariables.filter(v => v.variableType === 'country').filter(v => !selections.find(s => s.orderVariableId === v.id));
46
+ if (countryVariablesNeedingSelection.length === 0) return;
47
+
48
+ // Pre-populate with detected country
49
+ const newSelections = [...selections, ...countryVariablesNeedingSelection.map(v => ({
50
+ orderVariableId: v.id,
51
+ orderVariableOptionId: null,
52
+ countryCode: viewer.detectedCountry
53
+ }))];
54
+ dispatch({
55
+ type: 'UPDATE_ORDER_VARIABLE_SELECTIONS',
56
+ selections: newSelections
57
+ });
58
+ }, [viewer.detectedCountry, viewer.orderVariables, selections, dispatch]);
59
+ return /*#__PURE__*/_react.default.createElement(_index.default, {
60
+ variables: viewer,
61
+ selections: selections,
62
+ onSelectionChange: handleSelectionChange,
63
+ disabled: disabled,
64
+ children: children
65
+ });
66
+ }
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = OrderVariableSelection;
7
+ var _OrderVariableSelection_variables2 = _interopRequireDefault(require("../../__generated__/OrderVariableSelection_variables.graphql"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _reactRelay = require("react-relay");
10
+ var _Button = _interopRequireDefault(require("../elements/Button"));
11
+ var _ConfigContext = _interopRequireDefault(require("../ConfigContext"));
12
+ var _Icons = require("../Icons");
13
+ 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); }
14
+ 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; }
15
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
+ // Ghost variable type
17
+
18
+ // Component props
19
+
20
+ function Variable({
21
+ variable,
22
+ selection,
23
+ onToggle,
24
+ ghost = false,
25
+ onRemoveGhost,
26
+ countries
27
+ }) {
28
+ const {
29
+ form: config
30
+ } = (0, _react.useContext)(_ConfigContext.default);
31
+ const isSelected = Boolean(selection);
32
+ const handleClickVariable = (0, _react.useCallback)(() => {
33
+ // Only toggle boolean variables when clicked
34
+ if (variable.variableType === 'boolean') {
35
+ onToggle(variable.id, null);
36
+ } else if (variable.variableType === 'select' && !isSelected && variable.orderVariableOptions?.length) {
37
+ // For unselected select variables, select the first option by default
38
+ onToggle(variable.id, variable.orderVariableOptions[0].id);
39
+ }
40
+ // Country variables are now static (non-editable)
41
+ }, [variable, isSelected, onToggle]);
42
+ const handleChangeVariableOption = (0, _react.useCallback)(e => {
43
+ onToggle(variable.id, e.target.value);
44
+ }, [variable.id, onToggle]);
45
+ let options = variable.orderVariableOptions?.map(option => ({
46
+ ...option,
47
+ disabled: false
48
+ }));
49
+
50
+ // if there are any selections NOT present in viewer.orderVariables.orderVariableOptions,
51
+ // but they ARE present in the selection, it means they've been soft-deleted in the backend.
52
+ // but we can include it in the list of options in a disabled state. the user can still
53
+ // checkout with the option they previoulsy selected if they want to
54
+ if (selection?.orderVariableOptionId && options && !options.find(option => selection?.orderVariableOptionId == option.id)) {
55
+ options = options.concat({
56
+ id: selection.orderVariableOptionId,
57
+ amount: selection.orderVariableOptionAmount ?? null,
58
+ disabled: true
59
+ });
60
+ }
61
+ const selectedOption = options?.find(o => o.id === selection?.orderVariableOptionId);
62
+ const selectedCountry = countries?.find(c => c.code === selection?.countryCode);
63
+ return /*#__PURE__*/_react.default.createElement("div", {
64
+ className: "store-modal__order-variable-selection__item",
65
+ "data-variable-type": variable.variableType,
66
+ "data-ghost": ghost
67
+ }, /*#__PURE__*/_react.default.createElement(_Button.default, {
68
+ className: "store-modal__order-variable-selection__button",
69
+ onClick: handleClickVariable,
70
+ "data-selected": isSelected
71
+ }, /*#__PURE__*/_react.default.createElement("div", {
72
+ className: "store-modal__order-variable-selection__label"
73
+ }, /*#__PURE__*/_react.default.createElement("span", {
74
+ className: "store-modal__order-variable-selection__icon-pair"
75
+ }, variable.variableType === 'boolean' ? isSelected ? config.checkboxStyle === 'check' ? /*#__PURE__*/_react.default.createElement(_Icons.CheckboxChecked, null) : /*#__PURE__*/_react.default.createElement(_Icons.CheckboxCrossed, null) : /*#__PURE__*/_react.default.createElement(_Icons.Checkbox, null) : null, variable.name)), variable.variableType === 'select' ? /*#__PURE__*/_react.default.createElement("label", {
76
+ className: "store-modal__order-variable-selection__select-label"
77
+ }, selectedOption ? selectedOption.amount : `Select an option`, /*#__PURE__*/_react.default.createElement(_Icons.CarrotDown, null), /*#__PURE__*/_react.default.createElement("select", {
78
+ className: "store-modal__order-variable-selection__select",
79
+ value: selection?.orderVariableOptionId || '',
80
+ onChange: handleChangeVariableOption,
81
+ onClick: e => e.stopPropagation()
82
+ }, /*#__PURE__*/_react.default.createElement("option", {
83
+ value: "",
84
+ disabled: true
85
+ }, "Select an option"), options?.map(({
86
+ id,
87
+ amount,
88
+ disabled
89
+ }) => /*#__PURE__*/_react.default.createElement("option", {
90
+ key: id,
91
+ value: id,
92
+ disabled: disabled
93
+ }, amount, " ", disabled ? '(Deprecated)' : null)))) : null, variable.variableType === 'country' && selectedCountry ? /*#__PURE__*/_react.default.createElement("span", {
94
+ className: "store-modal__order-variable-selection__country-value"
95
+ }, selectedCountry.name) : null), variable.description ? /*#__PURE__*/_react.default.createElement("div", {
96
+ className: "store-modal__order-variable-selection__description",
97
+ dangerouslySetInnerHTML: {
98
+ __html: variable.description
99
+ }
100
+ }) : null, ghost && /*#__PURE__*/_react.default.createElement("div", {
101
+ className: "store-modal__order-variable-selection__ghost-container"
102
+ }, "This variable has been removed from our system and is deprecated", ' ', /*#__PURE__*/_react.default.createElement("button", {
103
+ className: "store-modal__order-variable-selection__ghost-remove",
104
+ onClick: onRemoveGhost
105
+ }, "Remove")));
106
+ }
107
+ function OrderVariableSelection({
108
+ variables: variablesKey,
109
+ selections,
110
+ onSelectionChange,
111
+ disabled,
112
+ ghostVariables = [],
113
+ onRemoveGhostVariable,
114
+ descriptionOverrides,
115
+ children: {
116
+ label
117
+ }
118
+ }) {
119
+ const variables = (0, _reactRelay.useFragment)((_OrderVariableSelection_variables2.default.hash && _OrderVariableSelection_variables2.default.hash !== "b73b43b61cd5edd5face7d4a5615b2f5" && console.error("The definition of 'OrderVariableSelection_variables' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _OrderVariableSelection_variables2.default), variablesKey);
120
+ const handleSelectionChange = (0, _react.useCallback)((variableId, optionId, countryCode) => {
121
+ // Update the selections with the new value
122
+ const newSelections = selections.map(selection => ({
123
+ orderVariableId: selection.orderVariableId,
124
+ orderVariableOptionId: selection.orderVariableOptionId,
125
+ countryCode: selection.countryCode
126
+ }));
127
+ const existingIndex = newSelections.findIndex(s => s.orderVariableId === variableId);
128
+
129
+ // Find the variable to determine its type
130
+ const variable = variables.orderVariables?.find(v => v.id === variableId);
131
+ const isBoolean = variable?.variableType === 'boolean';
132
+ if (existingIndex >= 0) {
133
+ // For boolean variables, if it's already selected, remove it entirely
134
+ if (isBoolean && newSelections[existingIndex].orderVariableOptionId === optionId) {
135
+ newSelections.splice(existingIndex, 1);
136
+ } else {
137
+ // Update existing selection
138
+ // For country variables: clear orderVariableOptionId when setting countryCode
139
+ // For select/boolean variables: clear countryCode when setting orderVariableOptionId
140
+ const isCountryVariable = variable?.variableType === 'country';
141
+ newSelections[existingIndex] = {
142
+ ...newSelections[existingIndex],
143
+ orderVariableOptionId: isCountryVariable ? null : optionId,
144
+ countryCode: isCountryVariable ? countryCode ?? newSelections[existingIndex].countryCode : null
145
+ };
146
+ }
147
+ } else {
148
+ // Add new selection
149
+ newSelections.push({
150
+ orderVariableId: variableId,
151
+ orderVariableOptionId: optionId,
152
+ countryCode: countryCode
153
+ });
154
+ }
155
+ onSelectionChange(newSelections);
156
+ }, [selections, onSelectionChange, variables.orderVariables]);
157
+ if (!variables.orderVariables || variables.orderVariables.length === 0) {
158
+ return null;
159
+ }
160
+ return /*#__PURE__*/_react.default.createElement("div", {
161
+ className: "store-modal__order-variable-selection__container",
162
+ "data-disabled": disabled
163
+ }, /*#__PURE__*/_react.default.createElement("h3", {
164
+ className: "store-modal__order-variable-selection__title"
165
+ }, label), variables.orderVariables.map(variable => {
166
+ const currentSelection = selections.find(s => s.orderVariableId === variable.id);
167
+
168
+ // Use description override if provided, otherwise use the variable's description
169
+ const effectiveVariable = descriptionOverrides?.[variable.id] !== undefined ? {
170
+ ...variable,
171
+ description: descriptionOverrides[variable.id]
172
+ } : variable;
173
+ return /*#__PURE__*/_react.default.createElement(Variable, {
174
+ key: variable.id,
175
+ variable: effectiveVariable,
176
+ selection: currentSelection,
177
+ countries: variables.countries?.filter(c => c !== null) ?? null,
178
+ onToggle: (orderVariableId, orderVariableOptionId, countryCode) => handleSelectionChange(orderVariableId, orderVariableOptionId !== undefined ? orderVariableOptionId : null, countryCode)
179
+ });
180
+ }), ghostVariables.map(ghost => {
181
+ return /*#__PURE__*/_react.default.createElement(Variable, {
182
+ key: ghost.orderVariable.id,
183
+ variable: {
184
+ ...ghost.orderVariable,
185
+ orderVariableOptions: ghost.orderVariableOption ? [ghost.orderVariableOption] : null
186
+ },
187
+ selection: {
188
+ orderVariableId: ghost.orderVariable.id,
189
+ orderVariableOptionId: ghost.orderVariableOption?.id ?? null,
190
+ orderVariableOptionAmount: ghost.orderVariableOption?.amount ?? null
191
+ },
192
+ countries: variables.countries?.filter(c => c !== null) ?? null,
193
+ ghost: true,
194
+ onToggle: () => {} // Ghost variables don't toggle
195
+ ,
196
+ onRemoveGhost: onRemoveGhostVariable ? () => onRemoveGhostVariable(ghost.orderVariable.id) : undefined
197
+ });
198
+ }));
199
+ }
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _License_node2 = _interopRequireDefault(require("../../__generated__/License_node.graphql"));
8
+ var _reactRelay = require("react-relay");
9
+ var _reactRedux = require("react-redux");
10
+ var _react = _interopRequireDefault(require("react"));
11
+ var _Icons = require("../Icons");
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ const License = ({
14
+ node: nodeKey,
15
+ selected,
16
+ onSelectLicense,
17
+ onSelectLicenseOption
18
+ }) => {
19
+ const node = (0, _reactRelay.useFragment)((_License_node2.default.hash && _License_node2.default.hash !== "1550b152731d8412ffc55716cb536407" && console.error("The definition of 'License_node' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _License_node2.default), nodeKey);
20
+ if (!node) return null;
21
+ const selectedLicenseOptions = (0, _reactRedux.useSelector)(state => state.licenseOptions);
22
+ const selectedOptions = selectedLicenseOptions.find(spec => spec.licenseId === node.id);
23
+ return /*#__PURE__*/_react.default.createElement("div", {
24
+ className: "pre-cart__license-wrapper"
25
+ }, /*#__PURE__*/_react.default.createElement("div", {
26
+ className: "pre-cart__license",
27
+ "data-selected": selected
28
+ }, /*#__PURE__*/_react.default.createElement("div", {
29
+ className: "pre-cart__license__name-wrapper"
30
+ }, /*#__PURE__*/_react.default.createElement("label", {
31
+ className: "pre-cart__license__name"
32
+ }, /*#__PURE__*/_react.default.createElement("div", {
33
+ className: "pre-cart__license__checkbox"
34
+ }, selected && /*#__PURE__*/_react.default.createElement(_Icons.Check, null)), node.name, /*#__PURE__*/_react.default.createElement("input", {
35
+ type: "checkbox",
36
+ checked: selected,
37
+ value: node.id,
38
+ onChange: e => onSelectLicense(node.id, e.target.checked)
39
+ })), selected && /*#__PURE__*/_react.default.createElement("a", {
40
+ href: node.url,
41
+ "aria-label": "Info",
42
+ className: "pre-cart__license__icon",
43
+ "data-label": "info"
44
+ }, /*#__PURE__*/_react.default.createElement(_Icons.CircledInfo, null))), selected && /*#__PURE__*/_react.default.createElement("ul", null, node.variables && node.variables.map(variable => {
45
+ const selectedLicenseOption = selectedOptions?.licenseOptions[variable.id];
46
+ if (variable.variableType === 'text') return null;
47
+ const selectedLicenseAmount = variable?.options?.find(option => option.id === selectedLicenseOption)?.amount;
48
+ return /*#__PURE__*/_react.default.createElement("li", {
49
+ key: variable.id
50
+ }, /*#__PURE__*/_react.default.createElement("label", {
51
+ className: "pre-cart__license__option"
52
+ }, "\u21B3 ", selectedLicenseAmount, /*#__PURE__*/_react.default.createElement(_Icons.CarrotDown, null), /*#__PURE__*/_react.default.createElement("select", {
53
+ value: selectedLicenseOption || '',
54
+ onChange: e => onSelectLicenseOption(node.id, variable.id, e.target.value)
55
+ }, /*#__PURE__*/_react.default.createElement("option", {
56
+ value: "",
57
+ disabled: true
58
+ }, "Select one"), variable.options && variable.options.map(option => /*#__PURE__*/_react.default.createElement("option", {
59
+ key: option.id,
60
+ value: option.id
61
+ }, option.amount)))));
62
+ }))), node.description && /*#__PURE__*/_react.default.createElement("div", {
63
+ className: "pre-cart__license__description",
64
+ dangerouslySetInnerHTML: {
65
+ __html: node.description
66
+ }
67
+ }));
68
+ };
69
+ var _default = License;
70
+ exports.default = _default;