@zonos/elements 1.2.2 → 1.2.4-alpha.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 (546) hide show
  1. package/dist/cjs/cart-4ddc2af5.js +616 -0
  2. package/dist/cjs/getBorderRadius-a97a5f75.js +18 -0
  3. package/dist/cjs/getHasMoreSpaceOnRight-4c94667f.js +10 -0
  4. package/dist/cjs/{index-9542d2e7.js → index-20cb112f.js} +127 -26
  5. package/dist/cjs/index.cjs.js +6 -6
  6. package/dist/cjs/isColorVariable-41cacd82.js +16 -0
  7. package/dist/cjs/{isDarkColor-f3446afd.js → isDarkColor-261fcf3d.js} +2 -2
  8. package/dist/cjs/loader.cjs.js +2 -2
  9. package/dist/cjs/localization-11360fed.js +3629 -0
  10. package/dist/cjs/submitGtag-bb093547.js +27 -0
  11. package/dist/cjs/zonos-address_2.cjs.entry.js +108 -108
  12. package/dist/cjs/zonos-badge.cjs.entry.js +25 -22
  13. package/dist/cjs/zonos-banner.cjs.entry.js +65 -53
  14. package/dist/cjs/zonos-button_2.cjs.entry.js +100 -99
  15. package/dist/cjs/zonos-card_2.cjs.entry.js +32 -27
  16. package/dist/cjs/zonos-cart-items_10.cjs.entry.js +422 -419
  17. package/dist/cjs/zonos-checkout.cjs.entry.js +356 -352
  18. package/dist/cjs/zonos-component.cjs.entry.js +15 -15
  19. package/dist/cjs/zonos-controller.cjs.entry.js +235 -151
  20. package/dist/cjs/zonos-country-flag_4.cjs.entry.js +85 -77
  21. package/dist/cjs/zonos-elements.cjs.js +3 -3
  22. package/dist/cjs/zonos-hello-dialog.cjs.entry.js +101 -101
  23. package/dist/cjs/zonos-hello.cjs.entry.js +349 -349
  24. package/dist/cjs/zonos-icon.cjs.entry.js +22 -20
  25. package/dist/cjs/zonos-notification.cjs.entry.js +60 -57
  26. package/dist/cjs/zonos-payment.cjs.entry.js +45 -45
  27. package/dist/cjs/zonos-shipping-rich-radio.cjs.entry.js +40 -40
  28. package/dist/cjs/zonos-text.cjs.entry.js +145 -143
  29. package/dist/cjs/{zonosStore-a430ec5b.js → zonosStore-a0fa5b77.js} +102 -97
  30. package/dist/collection/__mocks__/vercel-app/loadZonos.js +492 -0
  31. package/dist/collection/__mocks__/vercel-app/localization.js +1 -0
  32. package/dist/collection/__mocks__/vercel-app/zonos-hello.entry.js +1 -0
  33. package/dist/collection/__mocks__/zonos-url/loadZonos.js +492 -0
  34. package/dist/{esm-es5/localization-f3828793.js → collection/__mocks__/zonos-url/localization.js} +1 -1
  35. package/dist/collection/__mocks__/zonos-url/zonos-hello.entry.js +1 -0
  36. package/dist/collection/__tests__/build-utils/urlCheckOne.js +59 -0
  37. package/dist/collection/collection-manifest.json +2 -2
  38. package/dist/collection/components/checkout/zonos-checkout/zonos-cart-items/zonos-cart-items.css +4 -1
  39. package/dist/collection/components/checkout/zonos-checkout/zonos-cart-items/zonos-cart-items.js +37 -37
  40. package/dist/collection/components/checkout/zonos-checkout/zonos-cart-subtotal/zonos-cart-subtotal.css +4 -1
  41. package/dist/collection/components/checkout/zonos-checkout/zonos-cart-subtotal/zonos-cart-subtotal.js +44 -44
  42. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-finish/zonos-checkout-finish.css +4 -1
  43. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-finish/zonos-checkout-finish.js +164 -164
  44. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-payment/zonos-checkout-payment.css +4 -1
  45. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout-payment/zonos-checkout-payment.js +149 -149
  46. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout.css +4 -1
  47. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout.js +559 -555
  48. package/dist/collection/components/checkout/zonos-checkout/zonos-customer-info/zonos-customer-info.css +4 -1
  49. package/dist/collection/components/checkout/zonos-checkout/zonos-customer-info/zonos-customer-info.js +153 -153
  50. package/dist/collection/components/checkout/zonos-checkout/zonos-review/zonos-review.css +4 -1
  51. package/dist/collection/components/checkout/zonos-checkout/zonos-review/zonos-review.js +107 -107
  52. package/dist/collection/components/checkout/zonos-checkout/zonos-shipping/zonos-shipping.css +4 -1
  53. package/dist/collection/components/checkout/zonos-checkout/zonos-shipping/zonos-shipping.js +164 -164
  54. package/dist/collection/components/common/countries.js +261 -261
  55. package/dist/collection/components/common/zonos-badge/zonos-badge.css +4 -1
  56. package/dist/collection/components/common/zonos-badge/zonos-badge.js +189 -186
  57. package/dist/collection/components/common/zonos-banner/zonos-banner.css +4 -1
  58. package/dist/collection/components/common/zonos-banner/zonos-banner.js +140 -128
  59. package/dist/collection/components/common/zonos-button/zonos-button.css +5 -5
  60. package/dist/collection/components/common/zonos-button/zonos-button.js +407 -406
  61. package/dist/collection/components/common/zonos-card/zonos-card.css +4 -1
  62. package/dist/collection/components/common/zonos-card/zonos-card.js +165 -162
  63. package/dist/collection/components/common/zonos-collapse/zonos-collapse.css +4 -1
  64. package/dist/collection/components/common/zonos-collapse/zonos-collapse.js +85 -83
  65. package/dist/collection/components/common/zonos-country-flag/zonos-country-flag.css +4 -1
  66. package/dist/collection/components/common/zonos-country-flag/zonos-country-flag.js +101 -96
  67. package/dist/collection/components/common/zonos-country-select/zonos-country-select.css +4 -1
  68. package/dist/collection/components/common/zonos-country-select/zonos-country-select.js +73 -70
  69. package/dist/collection/components/common/zonos-custom-message/zonos-custom-message.css +4 -1
  70. package/dist/collection/components/common/zonos-custom-message/zonos-custom-message.js +62 -59
  71. package/dist/collection/components/common/zonos-dialog/zonos-dialog.css +4 -1
  72. package/dist/collection/components/common/zonos-dialog/zonos-dialog.js +373 -371
  73. package/dist/collection/components/common/zonos-icon/zonos-icon.css +4 -1
  74. package/dist/collection/components/common/zonos-icon/zonos-icon.js +123 -121
  75. package/dist/collection/components/common/zonos-logo/zonos-logo.css +4 -1
  76. package/dist/collection/components/common/zonos-logo/zonos-logo.js +92 -90
  77. package/dist/collection/components/common/zonos-notification/zonos-notification.css +4 -1
  78. package/dist/collection/components/common/zonos-notification/zonos-notification.js +128 -125
  79. package/dist/collection/components/common/zonos-shipping-rich-radio/zonos-shipping-rich-radio.css +5 -1
  80. package/dist/collection/components/common/zonos-shipping-rich-radio/zonos-shipping-rich-radio.js +168 -168
  81. package/dist/collection/components/common/zonos-spinner/zonos-spinner.css +4 -1
  82. package/dist/collection/components/common/zonos-spinner/zonos-spinner.js +71 -71
  83. package/dist/collection/components/common/zonos-text/zonos-text.css +4 -1
  84. package/dist/collection/components/common/zonos-text/zonos-text.js +193 -191
  85. package/dist/collection/components/common/zonos-v-stack/zonos-v-stack.css +4 -1
  86. package/dist/collection/components/common/zonos-v-stack/zonos-v-stack.js +70 -67
  87. package/dist/collection/components/component-template/zonos-component/zonos-component.css +4 -1
  88. package/dist/collection/components/component-template/zonos-component/zonos-component.js +81 -81
  89. package/dist/collection/components/hello/zonos-hello/zonos-hello.css +4 -2
  90. package/dist/collection/components/hello/zonos-hello/zonos-hello.js +447 -446
  91. package/dist/collection/components/hello/zonos-hello-dialog/zonos-hello-dialog-footer/zonos-hello-dialog-footer.css +4 -1
  92. package/dist/collection/components/hello/zonos-hello-dialog/zonos-hello-dialog-footer/zonos-hello-dialog-footer.js +70 -70
  93. package/dist/collection/components/hello/zonos-hello-dialog/zonos-hello-dialog.css +4 -1
  94. package/dist/collection/components/hello/zonos-hello-dialog/zonos-hello-dialog.js +272 -272
  95. package/dist/collection/components/main/zonos-controller.css +4 -1
  96. package/dist/collection/components/main/zonos-controller.js +400 -273
  97. package/dist/collection/components/store/checkout/cart.js +162 -162
  98. package/dist/collection/components/store/checkout/stripe.js +264 -254
  99. package/dist/collection/components/store/hello/localization.js +112 -112
  100. package/dist/collection/components/store/translationStore/strings.arabic.js +147 -147
  101. package/dist/collection/components/store/translationStore/strings.base.js +147 -147
  102. package/dist/collection/components/store/translationStore/strings.chinese.js +147 -147
  103. package/dist/collection/components/store/translationStore/strings.danish.js +147 -147
  104. package/dist/collection/components/store/translationStore/strings.dutch.js +147 -147
  105. package/dist/collection/components/store/translationStore/strings.french.js +147 -147
  106. package/dist/collection/components/store/translationStore/strings.german.js +147 -147
  107. package/dist/collection/components/store/translationStore/strings.hebrew.js +147 -147
  108. package/dist/collection/components/store/translationStore/strings.indonesian.js +147 -147
  109. package/dist/collection/components/store/translationStore/strings.italian.js +147 -147
  110. package/dist/collection/components/store/translationStore/strings.japanese.js +147 -147
  111. package/dist/collection/components/store/translationStore/strings.korean.js +147 -147
  112. package/dist/collection/components/store/translationStore/strings.norwegian.js +147 -147
  113. package/dist/collection/components/store/translationStore/strings.polish.js +147 -147
  114. package/dist/collection/components/store/translationStore/strings.portuguese.js +147 -147
  115. package/dist/collection/components/store/translationStore/strings.russian.js +147 -147
  116. package/dist/collection/components/store/translationStore/strings.spanish.js +147 -147
  117. package/dist/collection/components/store/translationStore/strings.swedish.js +147 -147
  118. package/dist/collection/components/store/translationStore/strings.turkish.js +147 -147
  119. package/dist/collection/components/store/translationStore/strings.vietnamese.js +147 -147
  120. package/dist/collection/components/store/translationStore.js +65 -65
  121. package/dist/collection/components/store/zonosStore.js +98 -94
  122. package/dist/collection/components/stripe/zonos-address/zonos-address.css +4 -1
  123. package/dist/collection/components/stripe/zonos-address/zonos-address.js +142 -142
  124. package/dist/collection/components/stripe/zonos-link-authentication/zonos-link-authentication.css +4 -1
  125. package/dist/collection/components/stripe/zonos-link-authentication/zonos-link-authentication.js +76 -76
  126. package/dist/collection/components/stripe/zonos-payment/zonos-payment.css +4 -1
  127. package/dist/collection/components/stripe/zonos-payment/zonos-payment.js +81 -81
  128. package/dist/collection/components/utils/addDays.js +5 -5
  129. package/dist/collection/components/utils/api/calculateLandedCost.js +11 -11
  130. package/dist/collection/components/utils/api/checkItemRestrictions.js +13 -13
  131. package/dist/collection/components/utils/api/getCountries.js +11 -11
  132. package/dist/collection/components/utils/api/getCountryLandedCost.js +11 -11
  133. package/dist/collection/components/utils/api/getExchangeRate.js +17 -17
  134. package/dist/collection/components/utils/api/getLocaleMessages.js +9 -9
  135. package/dist/collection/components/utils/api/getLocalization.js +24 -19
  136. package/dist/collection/components/utils/api/getShippingZones.js +9 -9
  137. package/dist/collection/components/utils/api/getZonosSetting.js +7 -7
  138. package/dist/collection/components/utils/api/prepCalculateLandedCost.js +26 -26
  139. package/dist/collection/components/utils/checkout/initCheckout.js +17 -17
  140. package/dist/collection/components/utils/checkout/isCheckoutMobile.js +1 -1
  141. package/dist/collection/components/utils/darkenColor.js +4 -4
  142. package/dist/collection/components/utils/formatCurrency.js +8 -8
  143. package/dist/collection/components/utils/formatDate.js +2 -2
  144. package/dist/collection/components/utils/getBorderRadius.js +5 -5
  145. package/dist/collection/components/utils/getButtonTheme.js +8 -8
  146. package/dist/collection/components/utils/getDaysDifference.js +4 -4
  147. package/dist/collection/components/utils/handleFetch.js +89 -77
  148. package/dist/collection/components/utils/hello/currencyConversion/currencyConvert.js +9 -9
  149. package/dist/collection/components/utils/hello/currencyConversion/currencyConvertAndFormat.js +3 -3
  150. package/dist/collection/components/utils/hello/currencyConversion/currencyDisplay.js +10 -10
  151. package/dist/collection/components/utils/hello/currencyConversion/currencyFormat.js +29 -29
  152. package/dist/collection/components/utils/hello/currencyConversion/defaultCurrencyConverter.js +35 -35
  153. package/dist/collection/components/utils/hello/currencyConversion/getCurrencyCode.js +6 -6
  154. package/dist/collection/components/utils/hello/currencyConversion/getCurrencyElements.js +13 -13
  155. package/dist/collection/components/utils/hello/currencyConversion/getInitialElementAmount.js +12 -12
  156. package/dist/collection/components/utils/hello/currencyConversion/getLanguageCode.js +6 -6
  157. package/dist/collection/components/utils/hello/detectItemRestrictions.js +23 -23
  158. package/dist/collection/components/utils/hello/getCurrentHelloLocalePage.js +17 -17
  159. package/dist/collection/components/utils/hello/getHasMoreSpaceAbove.js +5 -5
  160. package/dist/collection/components/utils/hello/getHasMoreSpaceOnRight.js +5 -5
  161. package/dist/collection/components/utils/hello/getProductsOnPage.js +42 -42
  162. package/dist/collection/components/utils/hello/getZCountryUrlParam.js +5 -0
  163. package/dist/collection/components/utils/hello/initHello.js +15 -15
  164. package/dist/collection/components/utils/hello/setZCountryUrlParam.js +9 -0
  165. package/dist/collection/components/utils/isColorVariable.js +10 -10
  166. package/dist/collection/components/utils/isDarkColor.js +1 -1
  167. package/dist/collection/components/utils/isValidSelector.js +8 -8
  168. package/dist/collection/components/utils/jsonParse.js +10 -10
  169. package/dist/collection/components/utils/lightenColor.js +4 -4
  170. package/dist/collection/components/utils/logging/log.js +22 -22
  171. package/dist/collection/components/utils/logging/logError.js +2 -2
  172. package/dist/collection/components/utils/mergeConfig.js +3 -3
  173. package/dist/collection/components/utils/submitGtag.js +9 -9
  174. package/dist/collection/environment.js +142 -111
  175. package/dist/collection/scripts/extractZonosQaUrl.js +26 -0
  176. package/dist/collection/scripts/loadStripe.js +7 -7
  177. package/dist/collection/scripts/stripe.js +80 -80
  178. package/dist/collection/scripts/zonos.js +287 -181
  179. package/dist/collection/styles/stripe/addressRuleStyle.js +14 -14
  180. package/dist/collection/styles/stripe/defaultVariable.js +14 -14
  181. package/dist/collection/types/generated/graphql.customer.types.js +1424 -1424
  182. package/dist/collection/types/generated/graphql.frontend.types.js +376 -376
  183. package/dist/collection/types/stripe/Apperance.js +56 -56
  184. package/dist/collection/types/styles/Color.js +18 -18
  185. package/dist/collection/types/styles/Text.js +97 -97
  186. package/dist/collection/utils/format.js +1 -1
  187. package/dist/collection/utils/generateVercelDeployUrl.js +20 -19
  188. package/dist/components/cart.js +497 -487
  189. package/dist/components/formatCurrency.js +8 -8
  190. package/dist/components/getBorderRadius.js +5 -5
  191. package/dist/components/isColorVariable.js +10 -10
  192. package/dist/components/isDarkColor.js +1 -1
  193. package/dist/components/localization.js +3448 -3426
  194. package/dist/components/submitGtag.js +9 -9
  195. package/dist/components/zonos-address.d.ts +2 -2
  196. package/dist/components/zonos-address2.js +90 -90
  197. package/dist/components/zonos-badge.d.ts +2 -2
  198. package/dist/components/zonos-badge2.js +52 -43
  199. package/dist/components/zonos-banner.d.ts +2 -2
  200. package/dist/components/zonos-banner2.js +88 -76
  201. package/dist/components/zonos-button.d.ts +2 -2
  202. package/dist/components/zonos-button2.js +120 -119
  203. package/dist/components/zonos-card.d.ts +2 -2
  204. package/dist/components/zonos-card2.js +48 -39
  205. package/dist/components/zonos-cart-items.d.ts +2 -2
  206. package/dist/components/zonos-cart-items2.js +43 -43
  207. package/dist/components/zonos-cart-subtotal.d.ts +2 -2
  208. package/dist/components/zonos-cart-subtotal2.js +65 -65
  209. package/dist/components/zonos-checkout-finish.d.ts +2 -2
  210. package/dist/components/zonos-checkout-finish2.js +101 -101
  211. package/dist/components/zonos-checkout-payment.d.ts +2 -2
  212. package/dist/components/zonos-checkout-payment2.js +82 -82
  213. package/dist/components/zonos-checkout.d.ts +2 -2
  214. package/dist/components/zonos-checkout.js +498 -494
  215. package/dist/components/zonos-collapse.d.ts +2 -2
  216. package/dist/components/zonos-collapse2.js +48 -46
  217. package/dist/components/zonos-component.d.ts +2 -2
  218. package/dist/components/zonos-component.js +32 -32
  219. package/dist/components/zonos-controller.d.ts +2 -2
  220. package/dist/components/zonos-controller.js +263 -177
  221. package/dist/components/zonos-country-flag.d.ts +2 -2
  222. package/dist/components/zonos-country-flag2.js +41 -36
  223. package/dist/components/zonos-country-select.d.ts +2 -2
  224. package/dist/components/zonos-country-select2.js +82 -79
  225. package/dist/components/zonos-custom-message.d.ts +2 -2
  226. package/dist/components/zonos-custom-message2.js +44 -41
  227. package/dist/components/zonos-customer-info.d.ts +2 -2
  228. package/dist/components/zonos-customer-info2.js +82 -82
  229. package/dist/components/zonos-dialog.d.ts +2 -2
  230. package/dist/components/zonos-dialog2.js +105 -103
  231. package/dist/components/zonos-hello-dialog-footer.d.ts +2 -2
  232. package/dist/components/zonos-hello-dialog-footer2.js +46 -46
  233. package/dist/components/zonos-hello-dialog.d.ts +2 -2
  234. package/dist/components/zonos-hello-dialog2.js +182 -182
  235. package/dist/components/zonos-hello.d.ts +2 -2
  236. package/dist/components/zonos-hello.js +437 -437
  237. package/dist/components/zonos-icon.d.ts +2 -2
  238. package/dist/components/zonos-icon2.js +40 -38
  239. package/dist/components/zonos-link-authentication.d.ts +2 -2
  240. package/dist/components/zonos-link-authentication2.js +60 -60
  241. package/dist/components/zonos-logo.d.ts +2 -2
  242. package/dist/components/zonos-logo2.js +37 -35
  243. package/dist/components/zonos-notification.d.ts +2 -2
  244. package/dist/components/zonos-notification2.js +82 -79
  245. package/dist/components/zonos-payment.d.ts +2 -2
  246. package/dist/components/zonos-payment2.js +64 -64
  247. package/dist/components/zonos-review.d.ts +2 -2
  248. package/dist/components/zonos-review2.js +72 -72
  249. package/dist/components/zonos-shipping-rich-radio.d.ts +2 -2
  250. package/dist/components/zonos-shipping-rich-radio2.js +62 -62
  251. package/dist/components/zonos-shipping.d.ts +2 -2
  252. package/dist/components/zonos-shipping2.js +114 -114
  253. package/dist/components/zonos-spinner.d.ts +2 -2
  254. package/dist/components/zonos-spinner2.js +31 -31
  255. package/dist/components/zonos-text.d.ts +2 -2
  256. package/dist/components/zonos-text2.js +166 -164
  257. package/dist/components/zonos-v-stack.d.ts +2 -2
  258. package/dist/components/zonos-v-stack2.js +29 -26
  259. package/dist/components/zonosStore.js +101 -97
  260. package/dist/esm/cart-cd87f476.js +598 -0
  261. package/dist/esm/getBorderRadius-35e8acce.js +16 -0
  262. package/dist/esm/getHasMoreSpaceOnRight-70eb913a.js +8 -0
  263. package/dist/esm/{index-d1aa9293.js → index-3617e24c.js} +127 -26
  264. package/dist/esm/index.js +6 -6
  265. package/dist/esm/isColorVariable-91c33804.js +14 -0
  266. package/dist/esm/{isDarkColor-6fbb9b14.js → isDarkColor-44e9e451.js} +2 -2
  267. package/dist/esm/loader.js +3 -3
  268. package/dist/esm/localization-f573428e.js +3614 -0
  269. package/dist/esm/submitGtag-75af52be.js +24 -0
  270. package/dist/esm/zonos-address_2.entry.js +108 -108
  271. package/dist/esm/zonos-badge.entry.js +25 -22
  272. package/dist/esm/zonos-banner.entry.js +65 -53
  273. package/dist/esm/zonos-button_2.entry.js +100 -99
  274. package/dist/esm/zonos-card_2.entry.js +32 -27
  275. package/dist/esm/zonos-cart-items_10.entry.js +422 -419
  276. package/dist/esm/zonos-checkout.entry.js +356 -352
  277. package/dist/esm/zonos-component.entry.js +15 -15
  278. package/dist/esm/zonos-controller.entry.js +235 -151
  279. package/dist/esm/zonos-country-flag_4.entry.js +85 -77
  280. package/dist/esm/zonos-elements.js +4 -4
  281. package/dist/esm/zonos-hello-dialog.entry.js +101 -101
  282. package/dist/esm/zonos-hello.entry.js +349 -349
  283. package/dist/esm/zonos-icon.entry.js +22 -20
  284. package/dist/esm/zonos-notification.entry.js +60 -57
  285. package/dist/esm/zonos-payment.entry.js +45 -45
  286. package/dist/esm/zonos-shipping-rich-radio.entry.js +40 -40
  287. package/dist/esm/zonos-text.entry.js +145 -143
  288. package/dist/esm/{zonosStore-05a62104.js → zonosStore-e0b7a5cf.js} +102 -98
  289. package/dist/esm-es5/cart-cd87f476.js +1 -0
  290. package/dist/esm-es5/getBorderRadius-35e8acce.js +1 -0
  291. package/dist/esm-es5/getHasMoreSpaceOnRight-70eb913a.js +1 -0
  292. package/dist/esm-es5/index-3617e24c.js +2 -0
  293. package/dist/esm-es5/index.js +1 -1
  294. package/dist/esm-es5/{isDarkColor-6fbb9b14.js → isDarkColor-44e9e451.js} +1 -1
  295. package/dist/esm-es5/loader.js +1 -1
  296. package/dist/esm-es5/localization-f573428e.js +1 -0
  297. package/dist/esm-es5/{submitGtag-a901ece5.js → submitGtag-75af52be.js} +1 -1
  298. package/dist/esm-es5/zonos-address_2.entry.js +1 -1
  299. package/dist/esm-es5/zonos-badge.entry.js +1 -1
  300. package/dist/esm-es5/zonos-banner.entry.js +1 -1
  301. package/dist/esm-es5/zonos-button_2.entry.js +1 -1
  302. package/dist/esm-es5/zonos-card_2.entry.js +1 -1
  303. package/dist/esm-es5/zonos-cart-items_10.entry.js +1 -1
  304. package/dist/esm-es5/zonos-checkout.entry.js +1 -1
  305. package/dist/esm-es5/zonos-component.entry.js +1 -1
  306. package/dist/esm-es5/zonos-controller.entry.js +1 -1
  307. package/dist/esm-es5/zonos-country-flag_4.entry.js +1 -1
  308. package/dist/esm-es5/zonos-elements.js +1 -1
  309. package/dist/esm-es5/zonos-hello-dialog.entry.js +1 -1
  310. package/dist/esm-es5/zonos-hello.entry.js +1 -1
  311. package/dist/esm-es5/zonos-icon.entry.js +1 -1
  312. package/dist/esm-es5/zonos-notification.entry.js +1 -1
  313. package/dist/esm-es5/zonos-payment.entry.js +1 -1
  314. package/dist/esm-es5/zonos-shipping-rich-radio.entry.js +1 -1
  315. package/dist/esm-es5/zonos-text.entry.js +1 -1
  316. package/dist/esm-es5/zonosStore-e0b7a5cf.js +1 -0
  317. package/dist/scripts/extractZonosQaUrl.js +30 -0
  318. package/dist/scripts/loadZonos.js +152 -20
  319. package/dist/scripts/zonos.js +152 -20
  320. package/dist/types/__tests__/build-utils/urlCheckOne.d.ts +6 -0
  321. package/dist/types/components/checkout/zonos-checkout/zonos-cart-items/zonos-cart-items.d.ts +2 -2
  322. package/dist/types/components/checkout/zonos-checkout/zonos-cart-subtotal/zonos-cart-subtotal.d.ts +1 -1
  323. package/dist/types/components/checkout/zonos-checkout/zonos-checkout-finish/zonos-checkout-finish.d.ts +28 -28
  324. package/dist/types/components/checkout/zonos-checkout/zonos-checkout-payment/zonos-checkout-payment.d.ts +31 -31
  325. package/dist/types/components/checkout/zonos-checkout/zonos-checkout.d.ts +77 -77
  326. package/dist/types/components/checkout/zonos-checkout/zonos-customer-info/zonos-customer-info.d.ts +31 -31
  327. package/dist/types/components/checkout/zonos-checkout/zonos-review/zonos-review.d.ts +14 -14
  328. package/dist/types/components/checkout/zonos-checkout/zonos-shipping/zonos-shipping.d.ts +29 -29
  329. package/dist/types/components/common/zonos-badge/zonos-badge.d.ts +35 -35
  330. package/dist/types/components/common/zonos-banner/zonos-banner.d.ts +21 -21
  331. package/dist/types/components/common/zonos-button/zonos-button.d.ts +92 -92
  332. package/dist/types/components/common/zonos-card/zonos-card.d.ts +29 -29
  333. package/dist/types/components/common/zonos-collapse/zonos-collapse.d.ts +14 -14
  334. package/dist/types/components/common/zonos-country-flag/zonos-country-flag.d.ts +16 -16
  335. package/dist/types/components/common/zonos-country-select/zonos-country-select.d.ts +9 -9
  336. package/dist/types/components/common/zonos-custom-message/zonos-custom-message.d.ts +9 -9
  337. package/dist/types/components/common/zonos-dialog/zonos-dialog.d.ts +75 -75
  338. package/dist/types/components/common/zonos-icon/zonos-icon.d.ts +27 -27
  339. package/dist/types/components/common/zonos-logo/zonos-logo.d.ts +13 -13
  340. package/dist/types/components/common/zonos-notification/zonos-notification.d.ts +28 -28
  341. package/dist/types/components/common/zonos-shipping-rich-radio/zonos-shipping-rich-radio.d.ts +35 -35
  342. package/dist/types/components/common/zonos-spinner/zonos-spinner.d.ts +11 -11
  343. package/dist/types/components/common/zonos-text/zonos-text.d.ts +30 -30
  344. package/dist/types/components/common/zonos-v-stack/zonos-v-stack.d.ts +10 -10
  345. package/dist/types/components/component-template/zonos-component/zonos-component.d.ts +14 -14
  346. package/dist/types/components/hello/zonos-hello/zonos-hello.d.ts +68 -68
  347. package/dist/types/components/hello/zonos-hello-dialog/zonos-hello-dialog-footer/zonos-hello-dialog-footer.d.ts +10 -10
  348. package/dist/types/components/hello/zonos-hello-dialog/zonos-hello-dialog.d.ts +41 -41
  349. package/dist/types/components/main/zonos-controller.d.ts +47 -37
  350. package/dist/types/components/store/checkout/cart.d.ts +64 -64
  351. package/dist/types/components/store/checkout/stripe.d.ts +44 -43
  352. package/dist/types/components/store/hello/localization.d.ts +15 -15
  353. package/dist/types/components/store/translationStore/strings.arabic.d.ts +147 -147
  354. package/dist/types/components/store/translationStore/strings.base.d.ts +147 -147
  355. package/dist/types/components/store/translationStore/strings.chinese.d.ts +147 -147
  356. package/dist/types/components/store/translationStore/strings.danish.d.ts +147 -147
  357. package/dist/types/components/store/translationStore/strings.dutch.d.ts +147 -147
  358. package/dist/types/components/store/translationStore/strings.french.d.ts +147 -147
  359. package/dist/types/components/store/translationStore/strings.german.d.ts +147 -147
  360. package/dist/types/components/store/translationStore/strings.hebrew.d.ts +147 -147
  361. package/dist/types/components/store/translationStore/strings.indonesian.d.ts +147 -147
  362. package/dist/types/components/store/translationStore/strings.italian.d.ts +147 -147
  363. package/dist/types/components/store/translationStore/strings.japanese.d.ts +147 -147
  364. package/dist/types/components/store/translationStore/strings.korean.d.ts +147 -147
  365. package/dist/types/components/store/translationStore/strings.norwegian.d.ts +147 -147
  366. package/dist/types/components/store/translationStore/strings.polish.d.ts +147 -147
  367. package/dist/types/components/store/translationStore/strings.portuguese.d.ts +147 -147
  368. package/dist/types/components/store/translationStore/strings.russian.d.ts +147 -147
  369. package/dist/types/components/store/translationStore/strings.spanish.d.ts +147 -147
  370. package/dist/types/components/store/translationStore/strings.swedish.d.ts +147 -147
  371. package/dist/types/components/store/translationStore/strings.turkish.d.ts +147 -147
  372. package/dist/types/components/store/translationStore/strings.vietnamese.d.ts +147 -147
  373. package/dist/types/components/store/translationStore.d.ts +2 -2
  374. package/dist/types/components/store/zonosStore.d.ts +23 -22
  375. package/dist/types/components/stripe/zonos-address/zonos-address.d.ts +17 -17
  376. package/dist/types/components/stripe/zonos-link-authentication/zonos-link-authentication.d.ts +9 -9
  377. package/dist/types/components/stripe/zonos-payment/zonos-payment.d.ts +10 -10
  378. package/dist/types/components/utils/addDays.d.ts +6 -6
  379. package/dist/types/components/utils/api/checkItemRestrictions.d.ts +14 -14
  380. package/dist/types/components/utils/api/getCountryLandedCost.d.ts +6 -6
  381. package/dist/types/components/utils/api/getExchangeRate.d.ts +17 -17
  382. package/dist/types/components/utils/api/getLocaleMessages.d.ts +15 -15
  383. package/dist/types/components/utils/api/getLocalization.d.ts +2 -2
  384. package/dist/types/components/utils/api/getZonosSetting.d.ts +4 -4
  385. package/dist/types/components/utils/changeDeepProperty.d.ts +4 -4
  386. package/dist/types/components/utils/changeDeepPropertyAtIndex.d.ts +5 -5
  387. package/dist/types/components/utils/checkout/initCheckout.d.ts +1 -1
  388. package/dist/types/components/utils/darkenColor.d.ts +2 -2
  389. package/dist/types/components/utils/formatCurrency.d.ts +3 -3
  390. package/dist/types/components/utils/formatDate.d.ts +6 -6
  391. package/dist/types/components/utils/handleFetch.d.ts +7 -7
  392. package/dist/types/components/utils/hello/detectItemRestrictions.d.ts +10 -10
  393. package/dist/types/components/utils/hello/getZCountryUrlParam.d.ts +2 -0
  394. package/dist/types/components/utils/hello/setZCountryUrlParam.d.ts +2 -0
  395. package/dist/types/components/utils/lightenColor.d.ts +2 -2
  396. package/dist/types/components/utils/mergeConfig.d.ts +1 -1
  397. package/dist/types/components/utils/submitGtag.d.ts +3 -3
  398. package/dist/types/components.d.ts +96 -0
  399. package/dist/types/environment.d.ts +42 -32
  400. package/dist/types/scripts/extractZonosQaUrl.d.ts +11 -0
  401. package/dist/types/scripts/stripe.d.ts +2 -2
  402. package/dist/types/scripts/zonos.d.ts +50 -37
  403. package/dist/types/stencil-public-runtime.d.ts +29 -0
  404. package/dist/types/styles/stripe/addressRuleStyle.d.ts +1 -1
  405. package/dist/types/styles/stripe/defaultVariable.d.ts +2 -2
  406. package/dist/types/types/ICountryJson.d.ts +20 -20
  407. package/dist/types/types/JsonError.d.ts +3 -3
  408. package/dist/types/types/Translation.d.ts +1 -1
  409. package/dist/types/types/checkout/CheckoutConfig.d.ts +52 -52
  410. package/dist/types/types/checkout/api/CalculateLandedCostRequest.d.ts +16 -16
  411. package/dist/types/types/generated/graphql.customer.types.d.ts +1968 -1968
  412. package/dist/types/types/generated/graphql.frontend.types.d.ts +449 -449
  413. package/dist/types/types/hello/HelloConfig.d.ts +20 -20
  414. package/dist/types/types/hello/Product.d.ts +3 -3
  415. package/dist/types/types/hello/RestrictedItem.d.ts +1 -1
  416. package/dist/types/types/online-store/OnlineStoreConfig.d.ts +1 -1
  417. package/dist/types/types/stripe/Apperance.d.ts +3 -3
  418. package/dist/types/types/styles/Text.d.ts +90 -90
  419. package/dist/types/types/utils/deep/IDeepKeyof.d.ts +1 -1
  420. package/dist/types/types/utils/deep/IDeepKeyofAtIndex.d.ts +2 -2
  421. package/dist/types/utils/generateVercelDeployUrl.d.ts +2 -2
  422. package/dist/zonos-elements/assets/RemoveIcon.svg +1 -1
  423. package/dist/zonos-elements/index.esm.js +1 -1
  424. package/dist/zonos-elements/p-0175125e.system.js +1 -0
  425. package/dist/zonos-elements/p-03923a86.system.entry.js +1 -0
  426. package/dist/zonos-elements/p-08298e74.entry.js +1 -0
  427. package/dist/zonos-elements/p-1bddc7ca.system.entry.js +1 -0
  428. package/dist/zonos-elements/{p-770c959e.js → p-1f8b684a.js} +1 -1
  429. package/dist/zonos-elements/p-2228b050.entry.js +1 -0
  430. package/dist/zonos-elements/p-23e7c655.system.js +1 -1
  431. package/dist/zonos-elements/p-2466df77.entry.js +1 -0
  432. package/dist/zonos-elements/p-29b993c2.system.entry.js +1 -0
  433. package/dist/zonos-elements/p-2a32dc0a.system.entry.js +1 -0
  434. package/dist/zonos-elements/p-2a666084.entry.js +1 -0
  435. package/dist/zonos-elements/p-2f1e9192.system.entry.js +1 -0
  436. package/dist/zonos-elements/{p-f7875c40.js → p-39a5e8e0.js} +1 -1
  437. package/dist/zonos-elements/p-44ddebe4.system.entry.js +1 -0
  438. package/dist/zonos-elements/p-4e8b5d86.system.entry.js +1 -0
  439. package/dist/zonos-elements/p-534dcbd4.system.js +1 -0
  440. package/dist/zonos-elements/p-5a41b5fd.entry.js +1 -0
  441. package/dist/zonos-elements/p-5d0eceaa.entry.js +1 -0
  442. package/dist/zonos-elements/p-62ccb686.entry.js +1 -0
  443. package/dist/zonos-elements/p-643eeb24.system.js +1 -0
  444. package/dist/zonos-elements/p-660a588b.entry.js +1 -0
  445. package/dist/zonos-elements/p-6affe5cc.entry.js +1 -0
  446. package/dist/zonos-elements/p-72ea628d.system.js +1 -0
  447. package/dist/zonos-elements/{p-85ab35c9.system.js → p-754bdfdb.system.js} +1 -1
  448. package/dist/zonos-elements/{p-164fae93.system.js → p-779621e4.system.js} +1 -1
  449. package/dist/zonos-elements/{p-08695f4e.js → p-77a7929b.js} +1 -1
  450. package/dist/zonos-elements/p-7a15d841.entry.js +1 -0
  451. package/dist/zonos-elements/p-7a81ccb5.system.entry.js +1 -0
  452. package/dist/zonos-elements/p-80ba24a8.system.js +1 -0
  453. package/dist/zonos-elements/p-83d100b8.entry.js +1 -0
  454. package/dist/zonos-elements/{p-bf070bf6.js → p-8bbad467.js} +1 -1
  455. package/dist/zonos-elements/p-8ebc3ca5.system.entry.js +1 -0
  456. package/dist/zonos-elements/p-9c78d0ca.entry.js +1 -0
  457. package/dist/zonos-elements/p-9ef86de7.entry.js +1 -0
  458. package/dist/zonos-elements/p-ab46cee9.system.entry.js +1 -0
  459. package/dist/zonos-elements/p-b0268bc5.entry.js +1 -0
  460. package/dist/zonos-elements/p-b4db1620.entry.js +1 -0
  461. package/dist/zonos-elements/p-bc7bf53e.system.js +1 -0
  462. package/dist/zonos-elements/p-bec05c21.system.js +2 -0
  463. package/dist/zonos-elements/p-bec21999.system.js +1 -0
  464. package/dist/zonos-elements/p-c299049e.js +1 -0
  465. package/dist/zonos-elements/p-cd4f8e13.system.entry.js +1 -0
  466. package/dist/zonos-elements/p-ceb2cd7b.system.entry.js +1 -0
  467. package/dist/zonos-elements/p-cf4545ed.system.entry.js +1 -0
  468. package/dist/zonos-elements/p-cf8aaa17.js +2 -0
  469. package/dist/zonos-elements/p-dc9b318c.system.entry.js +1 -0
  470. package/dist/zonos-elements/p-dcf64928.system.entry.js +1 -0
  471. package/dist/zonos-elements/p-e1de2a1f.js +1 -0
  472. package/dist/zonos-elements/{p-3f3fbcea.entry.js → p-e694312d.entry.js} +1 -1
  473. package/dist/zonos-elements/p-ec26fe57.entry.js +1 -0
  474. package/dist/zonos-elements/p-edbea8df.system.js +1 -0
  475. package/dist/zonos-elements/p-f8198015.system.entry.js +1 -0
  476. package/dist/zonos-elements/p-fcd4fc66.system.entry.js +1 -0
  477. package/dist/zonos-elements/zonos-elements.esm.js +1 -1
  478. package/dist/zonos-elements/zonos-elements.js +15 -15
  479. package/package.json +57 -56
  480. package/dist/cjs/cart-d4b52ae8.js +0 -606
  481. package/dist/cjs/getBorderRadius-fdd605c6.js +0 -18
  482. package/dist/cjs/getHasMoreSpaceOnRight-2855491b.js +0 -10
  483. package/dist/cjs/isColorVariable-c1ed7303.js +0 -16
  484. package/dist/cjs/localization-d7fe7290.js +0 -3606
  485. package/dist/cjs/submitGtag-d65003f9.js +0 -27
  486. package/dist/collection/components/utils/hello/setZonosCountryUrlParam.js +0 -9
  487. package/dist/esm/cart-e1b93711.js +0 -588
  488. package/dist/esm/getBorderRadius-45764ad7.js +0 -16
  489. package/dist/esm/getHasMoreSpaceOnRight-feba1ae2.js +0 -8
  490. package/dist/esm/isColorVariable-4cda28c9.js +0 -14
  491. package/dist/esm/localization-f3828793.js +0 -3592
  492. package/dist/esm/submitGtag-a901ece5.js +0 -24
  493. package/dist/esm-es5/cart-e1b93711.js +0 -1
  494. package/dist/esm-es5/getBorderRadius-45764ad7.js +0 -1
  495. package/dist/esm-es5/getHasMoreSpaceOnRight-feba1ae2.js +0 -1
  496. package/dist/esm-es5/index-d1aa9293.js +0 -2
  497. package/dist/esm-es5/zonosStore-05a62104.js +0 -1
  498. package/dist/types/components/utils/hello/setZonosCountryUrlParam.d.ts +0 -2
  499. package/dist/zonos-elements/p-0190f7c4.entry.js +0 -1
  500. package/dist/zonos-elements/p-05256415.system.entry.js +0 -1
  501. package/dist/zonos-elements/p-0e0b46a5.js +0 -1
  502. package/dist/zonos-elements/p-15b71f0b.system.entry.js +0 -1
  503. package/dist/zonos-elements/p-23204b78.system.entry.js +0 -1
  504. package/dist/zonos-elements/p-25db3885.js +0 -1
  505. package/dist/zonos-elements/p-28681677.entry.js +0 -1
  506. package/dist/zonos-elements/p-2b6325ab.entry.js +0 -1
  507. package/dist/zonos-elements/p-34a49bce.entry.js +0 -1
  508. package/dist/zonos-elements/p-36425562.system.entry.js +0 -1
  509. package/dist/zonos-elements/p-365970ff.entry.js +0 -1
  510. package/dist/zonos-elements/p-40083e93.system.entry.js +0 -1
  511. package/dist/zonos-elements/p-40778e43.entry.js +0 -1
  512. package/dist/zonos-elements/p-43a25dab.entry.js +0 -1
  513. package/dist/zonos-elements/p-4a5096d2.system.js +0 -1
  514. package/dist/zonos-elements/p-53649e16.system.js +0 -1
  515. package/dist/zonos-elements/p-5d7ffddb.entry.js +0 -1
  516. package/dist/zonos-elements/p-60821b2a.entry.js +0 -1
  517. package/dist/zonos-elements/p-64fdb7b6.system.js +0 -1
  518. package/dist/zonos-elements/p-68d06767.system.js +0 -2
  519. package/dist/zonos-elements/p-6d82986c.system.entry.js +0 -1
  520. package/dist/zonos-elements/p-6dcd752e.system.js +0 -1
  521. package/dist/zonos-elements/p-6e7cd3f7.entry.js +0 -1
  522. package/dist/zonos-elements/p-7bacecf7.entry.js +0 -1
  523. package/dist/zonos-elements/p-81c699f7.system.entry.js +0 -1
  524. package/dist/zonos-elements/p-824395fd.system.entry.js +0 -1
  525. package/dist/zonos-elements/p-8a75b765.system.entry.js +0 -1
  526. package/dist/zonos-elements/p-8aabbb9b.system.js +0 -1
  527. package/dist/zonos-elements/p-8c867835.system.js +0 -1
  528. package/dist/zonos-elements/p-8db8cc05.system.js +0 -1
  529. package/dist/zonos-elements/p-914ce305.system.entry.js +0 -1
  530. package/dist/zonos-elements/p-9688bb12.entry.js +0 -1
  531. package/dist/zonos-elements/p-96a3c767.entry.js +0 -1
  532. package/dist/zonos-elements/p-98a6e093.system.entry.js +0 -1
  533. package/dist/zonos-elements/p-a3641931.system.entry.js +0 -1
  534. package/dist/zonos-elements/p-aca66238.system.entry.js +0 -1
  535. package/dist/zonos-elements/p-b618cf03.entry.js +0 -1
  536. package/dist/zonos-elements/p-b75ffe64.system.entry.js +0 -1
  537. package/dist/zonos-elements/p-c8ad044e.system.entry.js +0 -1
  538. package/dist/zonos-elements/p-cc070c1c.entry.js +0 -1
  539. package/dist/zonos-elements/p-cc1c785c.system.entry.js +0 -1
  540. package/dist/zonos-elements/p-dc8d7000.js +0 -2
  541. package/dist/zonos-elements/p-de9d8a4f.system.entry.js +0 -1
  542. package/dist/zonos-elements/p-f8491335.system.js +0 -1
  543. package/dist/zonos-elements/p-f868ed42.entry.js +0 -1
  544. /package/dist/esm-es5/{isColorVariable-4cda28c9.js → isColorVariable-91c33804.js} +0 -0
  545. /package/dist/zonos-elements/{p-0636859b.js → p-4c414a92.js} +0 -0
  546. /package/dist/zonos-elements/{p-b6c499d4.js → p-5883217a.js} +0 -0
@@ -4,411 +4,421 @@ import { i as isDarkColor } from './isDarkColor.js';
4
4
  import { g as getBorderRadius } from './getBorderRadius.js';
5
5
 
6
6
  const prepCalculateLandedCost = () => {
7
- // maybe we don't need email now for prefetch the landed cost
8
- const stripeLinkData = stripeStore.stripeLinkEventData;
9
- const stripeAddressData = stripeStore.stripeAddressEventData;
10
- if (!stripeAddressData || !stripeAddressData.complete) {
11
- throw new Error('Missing stripe address data');
12
- }
13
- return {
14
- checkoutSessionId: cartStore.checkoutSessionId || '',
15
- contact: {
16
- email: (stripeLinkData === null || stripeLinkData === void 0 ? void 0 : stripeLinkData.value.email) || '',
17
- // firstName and lastName should be valid now since stripe only mark
18
- // the address as complete when both fields are filled.
19
- firstName: stripeAddressData.value.firstName || '',
20
- lastName: stripeAddressData.value.lastName || '',
21
- phone: stripeAddressData.value.phone || '',
22
- },
23
- items: cartStore.items.map(item => item),
24
- shippingAddress: {
25
- addressLine1: stripeAddressData.value.address.line1,
26
- addressLine2: stripeAddressData.value.address.line2 || '',
27
- city: stripeAddressData.value.address.city,
28
- country: stripeAddressData.value.address.country,
29
- postalCode: stripeAddressData.value.address.postal_code,
30
- state: stripeAddressData.value.address.state,
31
- },
32
- };
7
+ // maybe we don't need email now for prefetch the landed cost
8
+ const stripeLinkData = stripeStore.stripeLinkEventData;
9
+ const stripeAddressData = stripeStore.stripeAddressEventData;
10
+ if (!stripeAddressData || !stripeAddressData.complete) {
11
+ throw new Error('Missing stripe address data');
12
+ }
13
+ return {
14
+ checkoutSessionId: cartStore.checkoutSessionId || '',
15
+ contact: {
16
+ email: (stripeLinkData === null || stripeLinkData === void 0 ? void 0 : stripeLinkData.value.email) || '',
17
+ // firstName and lastName should be valid now since stripe only mark
18
+ // the address as complete when both fields are filled.
19
+ firstName: stripeAddressData.value.firstName || '',
20
+ lastName: stripeAddressData.value.lastName || '',
21
+ phone: stripeAddressData.value.phone || '',
22
+ },
23
+ items: cartStore.items.map(item => item),
24
+ shippingAddress: {
25
+ addressLine1: stripeAddressData.value.address.line1,
26
+ addressLine2: stripeAddressData.value.address.line2 || '',
27
+ city: stripeAddressData.value.address.city,
28
+ country: stripeAddressData.value.address.country,
29
+ postalCode: stripeAddressData.value.address.postal_code,
30
+ state: stripeAddressData.value.address.state,
31
+ },
32
+ };
33
33
  };
34
34
 
35
35
  const calculateLandedCost = async (abortController) => {
36
- // request to get landed cost info
37
- const url = `${"https://v1.route.js.zonos.com"}/api/calculate-landed-cost`;
38
- const { errors, json } = await handleFetch(url, {
39
- body: prepCalculateLandedCost(),
40
- method: 'POST',
41
- signal: abortController === null || abortController === void 0 ? void 0 : abortController.signal,
42
- });
43
- if (errors.length || !json) {
44
- throw new Error('Failed to calculate landed cost');
45
- }
46
- return json;
36
+ // request to get landed cost info
37
+ const url = `${"https://v1.route.js.zonos.com"}/api/calculate-landed-cost`;
38
+ const { errors, json } = await handleFetch(url, {
39
+ body: prepCalculateLandedCost(),
40
+ method: 'POST',
41
+ signal: abortController === null || abortController === void 0 ? void 0 : abortController.signal,
42
+ });
43
+ if (errors.length || !json) {
44
+ throw new Error('Failed to calculate landed cost');
45
+ }
46
+ return json;
47
47
  };
48
48
 
49
49
  const addressRuleStyle = ({ theme, }) => {
50
- switch (theme) {
51
- default:
52
- return {
53
- '.Input': {
54
- // need to reset everything and the paddingTop to default, otherwise the paddingTop will not be updated.
55
- padding: '0',
56
- paddingBottom: '8px',
57
- paddingLeft: '16px',
58
- paddingRight: '8px',
59
- // any value here will be add up to the default paddingTop (20px).
60
- paddingTop: '6px',
61
- },
62
- };
63
- }
50
+ switch (theme) {
51
+ default:
52
+ return {
53
+ '.Input': {
54
+ // need to reset everything and the paddingTop to default, otherwise the paddingTop will not be updated.
55
+ padding: '0',
56
+ paddingBottom: '8px',
57
+ paddingLeft: '16px',
58
+ paddingRight: '8px',
59
+ // any value here will be add up to the default paddingTop (20px).
60
+ paddingTop: '6px',
61
+ },
62
+ };
63
+ }
64
64
  };
65
65
 
66
66
  const defaultVariable = ({ borderStyle, theme, }) => {
67
- switch (theme) {
68
- case 'DARK':
69
- return {
70
- borderRadius: getBorderRadius(borderStyle),
71
- colorBackground: '#101117',
72
- colorBackgroundText: '#C5C6CA',
73
- colorText: '#C5C6CA',
74
- colorTextPlaceholder: '#C5C6CA',
75
- };
76
- default:
77
- return {
78
- borderRadius: getBorderRadius(borderStyle),
79
- };
80
- }
67
+ switch (theme) {
68
+ case 'DARK':
69
+ return {
70
+ borderRadius: getBorderRadius(borderStyle),
71
+ colorBackground: '#101117',
72
+ colorBackgroundText: '#C5C6CA',
73
+ colorText: '#C5C6CA',
74
+ colorTextPlaceholder: '#C5C6CA',
75
+ };
76
+ default:
77
+ return {
78
+ borderRadius: getBorderRadius(borderStyle),
79
+ };
80
+ }
81
81
  };
82
82
 
83
83
  const { onChange: onChange$1, reset: reset$1, state: stripeStore, } = createStore(() => ({
84
- clientSecret: sessionStorage.getItem('zonos--client-secret') || null,
85
- fetchingLandedCostAbordController: null,
86
- isFetchingLandedCost: false,
87
- isFetchingSession: false,
88
- stripe: null,
89
- stripeAddressElement: null,
90
- stripeAddressEventData: null,
91
- stripeAddressUsedWhenFetchingLC: null,
92
- stripeElements: null,
93
- stripeLinkElement: null,
94
- stripeLinkEventData: null,
95
- stripeLinkUsedWhenFetchingLC: null,
96
- stripePaymentElement: null,
97
- stripePaymentEventData: null,
84
+ clientSecret: sessionStorage.getItem('zonos--client-secret') || null,
85
+ fetchingLandedCostAbordController: null,
86
+ isFetchingLandedCost: false,
87
+ isFetchingSession: false,
88
+ stripe: null,
89
+ stripeAddressElement: null,
90
+ stripeAddressEventData: null,
91
+ stripeAddressUsedWhenFetchingLC: null,
92
+ stripeElements: null,
93
+ stripeElementsOptions: null,
94
+ stripeLinkElement: null,
95
+ stripeLinkEventData: null,
96
+ stripeLinkUsedWhenFetchingLC: null,
97
+ stripePaymentElement: null,
98
+ stripePaymentEventData: null,
98
99
  }));
99
100
  const getStripeOptions = ({ clientSecret, overrideBorderRaidus, overridePrimaryColor, overrideTheme, }) => {
100
- const primaryColor = overridePrimaryColor || zonosStore.appearance.colorPrimary;
101
- const themeBasedColor = primaryColor && isDarkColor(primaryColor) ? 'night' : 'flat';
102
- // if overrideTheme is provided, use it. Otherwise, use theme based on primary color
103
- const theme = overrideTheme === 'DARK' ? 'night' : 'flat';
104
- return {
105
- appearance: {
106
- labels: 'floating',
107
- rules: Object.assign({}, addressRuleStyle({ theme: 'LIGHT' })),
108
- // get contrast theme color base on primary color
109
- theme: overrideTheme ? theme : themeBasedColor,
110
- variables: Object.assign({}, defaultVariable({
111
- borderStyle: overrideBorderRaidus,
112
- theme: 'LIGHT',
113
- })),
114
- },
115
- clientSecret,
116
- locale: localizationStore.selectedLocale,
117
- };
101
+ const primaryColor = overridePrimaryColor || zonosStore.appearance.colorPrimary;
102
+ const themeBasedColor = primaryColor && isDarkColor(primaryColor) ? 'night' : 'flat';
103
+ // if overrideTheme is provided, use it. Otherwise, use theme based on primary color
104
+ const theme = overrideTheme === 'DARK' ? 'night' : 'flat';
105
+ return {
106
+ appearance: {
107
+ labels: 'floating',
108
+ rules: Object.assign({}, addressRuleStyle({ theme: 'LIGHT' })),
109
+ // get contrast theme color base on primary color
110
+ theme: overrideTheme ? theme : themeBasedColor,
111
+ variables: Object.assign({}, defaultVariable({
112
+ borderStyle: overrideBorderRaidus,
113
+ theme: 'LIGHT',
114
+ })),
115
+ },
116
+ clientSecret,
117
+ locale: localizationStore.selectedLocale,
118
+ };
118
119
  };
119
120
  const initStripeElements = async (props) => {
120
- var _a;
121
- const clientSecret = stripeStore.clientSecret;
122
- if (!stripeStore.stripe) {
123
- log('Skip. Stripe is not initialized');
124
- return;
125
- }
126
- if (clientSecret) {
127
- const stripeOptions = getStripeOptions({
128
- clientSecret,
129
- overrideBorderRaidus: props === null || props === void 0 ? void 0 : props.overrideBorderRaidus,
130
- overridePrimaryColor: props === null || props === void 0 ? void 0 : props.overridePrimaryColor,
131
- overrideTheme: props === null || props === void 0 ? void 0 : props.overrideTheme,
132
- });
133
- if (!stripeStore.stripeElements) {
134
- // init stripe elements if it doesn't exist
135
- stripeStore.stripeElements = (_a = stripeStore.stripe) === null || _a === void 0 ? void 0 : _a.elements(stripeOptions);
121
+ var _a;
122
+ const clientSecret = stripeStore.clientSecret;
123
+ if (!stripeStore.stripe) {
124
+ log('Skip. Stripe is not initialized');
125
+ return;
136
126
  }
137
- else {
138
- // update elements with new option if it already exists
139
- stripeStore.stripeElements.update(stripeOptions);
127
+ if (clientSecret) {
128
+ const stripeOptions = getStripeOptions({
129
+ clientSecret,
130
+ overrideBorderRaidus: props === null || props === void 0 ? void 0 : props.overrideBorderRaidus,
131
+ overridePrimaryColor: props === null || props === void 0 ? void 0 : props.overridePrimaryColor,
132
+ overrideTheme: props === null || props === void 0 ? void 0 : props.overrideTheme,
133
+ });
134
+ // compare with the previous options to see if we need to update
135
+ const isSameOptions = JSON.stringify(stripeOptions) ===
136
+ JSON.stringify(stripeStore.stripeElementsOptions);
137
+ if (!stripeStore.stripeElements) {
138
+ // init stripe elements if it doesn't exist
139
+ stripeStore.stripeElements = (_a = stripeStore.stripe) === null || _a === void 0 ? void 0 : _a.elements(stripeOptions);
140
+ // save stripe elements options for later comparison
141
+ stripeStore.stripeElementsOptions = stripeOptions;
142
+ log('Stripe elements initialized');
143
+ return;
144
+ }
145
+ if (!isSameOptions) {
146
+ // update elements with new option if it already exists
147
+ stripeStore.stripeElements.update(stripeOptions);
148
+ // save stripe elements options for later comparison
149
+ stripeStore.stripeElementsOptions = stripeOptions;
150
+ }
151
+ log('Stripe elements initialized');
140
152
  }
141
- log('Stripe elements initialized');
142
- }
143
153
  };
144
154
  const stripeStoreReset = () => {
145
- // clean clientSecret so that we can start the new one.
146
- sessionStorage.removeItem('zonos--client-secret');
147
- // cleanup stripe elements
148
- reset$1();
149
- // set stripe back to window.Zonos.stripe
150
- stripeStore.stripe = window.Zonos.stripe;
155
+ // clean clientSecret so that we can start the new one.
156
+ sessionStorage.removeItem('zonos--client-secret');
157
+ // cleanup stripe elements
158
+ reset$1();
159
+ // set stripe back to window.Zonos.stripe
160
+ stripeStore.stripe = window.Zonos.stripe;
151
161
  };
152
162
  /**
153
163
  * Check if the address and email info used when fetching landed cost with the current email and address info are different
154
164
  * Purpose is to resend the request if the info used when fetching landed cost is different from the current info
155
165
  */
156
166
  const isPrefetchInfoOutdated = () => {
157
- var _a, _b, _c, _d;
158
- const hasAbortController = stripeStore.fetchingLandedCostAbordController;
159
- if (!hasAbortController) {
160
- // if there is no abort controller, this is a new request
161
- return false;
162
- }
163
- const isLinkDataDirty = JSON.stringify((_a = stripeStore.stripeLinkUsedWhenFetchingLC) === null || _a === void 0 ? void 0 : _a.value) !==
164
- JSON.stringify((_b = stripeStore.stripeLinkEventData) === null || _b === void 0 ? void 0 : _b.value);
165
- const isAddressDataDirty = JSON.stringify((_c = stripeStore.stripeAddressUsedWhenFetchingLC) === null || _c === void 0 ? void 0 : _c.value) !==
166
- JSON.stringify((_d = stripeStore.stripeAddressEventData) === null || _d === void 0 ? void 0 : _d.value);
167
- return isLinkDataDirty || isAddressDataDirty;
167
+ var _a, _b, _c, _d;
168
+ const hasAbortController = stripeStore.fetchingLandedCostAbordController;
169
+ if (!hasAbortController) {
170
+ // if there is no abort controller, this is a new request
171
+ return false;
172
+ }
173
+ const isLinkDataDirty = JSON.stringify((_a = stripeStore.stripeLinkUsedWhenFetchingLC) === null || _a === void 0 ? void 0 : _a.value) !==
174
+ JSON.stringify((_b = stripeStore.stripeLinkEventData) === null || _b === void 0 ? void 0 : _b.value);
175
+ const isAddressDataDirty = JSON.stringify((_c = stripeStore.stripeAddressUsedWhenFetchingLC) === null || _c === void 0 ? void 0 : _c.value) !==
176
+ JSON.stringify((_d = stripeStore.stripeAddressEventData) === null || _d === void 0 ? void 0 : _d.value);
177
+ return isLinkDataDirty || isAddressDataDirty;
168
178
  };
169
179
  const stripeStorePrefetchLandedCost = async () => {
170
- var _a, _b, _c, _d;
171
- const stripeAddressReady = !!((_a = stripeStore.stripeAddressEventData) === null || _a === void 0 ? void 0 : _a.complete);
172
- const stripeLinkReady = !!((_b = stripeStore.stripeLinkEventData) === null || _b === void 0 ? void 0 : _b.complete);
173
- const shouldRefetch = isPrefetchInfoOutdated();
174
- if (shouldRefetch) {
175
- // if the info used when fetching landed cost is different from the current info, abort the previous request
176
- (_c = stripeStore.fetchingLandedCostAbordController) === null || _c === void 0 ? void 0 : _c.abort();
177
- stripeStore.fetchingLandedCostAbordController = null;
178
- }
179
- // only fetch if we are not fetching or we need to refetch
180
- if (stripeAddressReady &&
181
- stripeLinkReady &&
182
- (shouldRefetch || !stripeStore.isFetchingLandedCost)) {
183
- stripeStore.isFetchingLandedCost = true;
184
- if (stripeStore.stripeAddressEventData) {
185
- stripeStore.stripeAddressUsedWhenFetchingLC = Object.assign({}, stripeStore.stripeAddressEventData);
186
- }
187
- if (stripeStore.stripeLinkEventData) {
188
- stripeStore.stripeLinkUsedWhenFetchingLC = Object.assign({}, stripeStore.stripeLinkEventData);
180
+ var _a, _b, _c, _d;
181
+ const stripeAddressReady = !!((_a = stripeStore.stripeAddressEventData) === null || _a === void 0 ? void 0 : _a.complete);
182
+ const stripeLinkReady = !!((_b = stripeStore.stripeLinkEventData) === null || _b === void 0 ? void 0 : _b.complete);
183
+ const shouldRefetch = isPrefetchInfoOutdated();
184
+ if (shouldRefetch) {
185
+ // if the info used when fetching landed cost is different from the current info, abort the previous request
186
+ (_c = stripeStore.fetchingLandedCostAbordController) === null || _c === void 0 ? void 0 : _c.abort();
187
+ stripeStore.fetchingLandedCostAbordController = null;
189
188
  }
190
- try {
191
- const abortController = new AbortController();
192
- stripeStore.fetchingLandedCostAbordController = abortController;
193
- const { checkoutSessionWorkflow, shipmentRatingCalculateWorkflow } = await calculateLandedCost(abortController);
194
- // reset abort controller after we are done
195
- stripeStore.fetchingLandedCostAbordController = null;
196
- // update cart store with landed cost info
197
- cartStore.landedCostData =
198
- (checkoutSessionWorkflow === null || checkoutSessionWorkflow === void 0 ? void 0 : checkoutSessionWorkflow.filter(Boolean)) || null;
199
- cartStore.shippingData =
200
- (shipmentRatingCalculateWorkflow === null || shipmentRatingCalculateWorkflow === void 0 ? void 0 : shipmentRatingCalculateWorkflow.filter(Boolean)) || null;
201
- // apply new subtotal and total, this is mainly to show items in the presentment currency
202
- const firstLandedCostData = (_d = cartStore.landedCostData) === null || _d === void 0 ? void 0 : _d.find(Boolean);
203
- const subtotals = !!firstLandedCostData
204
- ? firstLandedCostData.subtotals
205
- : null;
206
- if (subtotals) {
207
- // prefetch landed cost will not update shipping and taxes since we haven't selected shipping method yet
208
- cartStoreApplySubtotals({
209
- exchangeRate: subtotals.exchangeRate,
210
- items: subtotals.items,
211
- landedCostTotal: 0,
212
- presentmentCurrencyCode: subtotals.presentmentCurrencyCode,
213
- shipping: 0,
214
- total: subtotals.items,
215
- });
216
- }
217
- }
218
- catch (err) {
219
- logError(err);
189
+ // only fetch if we are not fetching or we need to refetch
190
+ if (stripeAddressReady &&
191
+ stripeLinkReady &&
192
+ (shouldRefetch || !stripeStore.isFetchingLandedCost)) {
193
+ stripeStore.isFetchingLandedCost = true;
194
+ if (stripeStore.stripeAddressEventData) {
195
+ stripeStore.stripeAddressUsedWhenFetchingLC = Object.assign({}, stripeStore.stripeAddressEventData);
196
+ }
197
+ if (stripeStore.stripeLinkEventData) {
198
+ stripeStore.stripeLinkUsedWhenFetchingLC = Object.assign({}, stripeStore.stripeLinkEventData);
199
+ }
200
+ try {
201
+ const abortController = new AbortController();
202
+ stripeStore.fetchingLandedCostAbordController = abortController;
203
+ const { checkoutSessionWorkflow, shipmentRatingCalculateWorkflow } = await calculateLandedCost(abortController);
204
+ // reset abort controller after we are done
205
+ stripeStore.fetchingLandedCostAbordController = null;
206
+ // update cart store with landed cost info
207
+ cartStore.landedCostData =
208
+ (checkoutSessionWorkflow === null || checkoutSessionWorkflow === void 0 ? void 0 : checkoutSessionWorkflow.filter(Boolean)) || null;
209
+ cartStore.shippingData =
210
+ (shipmentRatingCalculateWorkflow === null || shipmentRatingCalculateWorkflow === void 0 ? void 0 : shipmentRatingCalculateWorkflow.filter(Boolean)) || null;
211
+ // apply new subtotal and total, this is mainly to show items in the presentment currency
212
+ const firstLandedCostData = (_d = cartStore.landedCostData) === null || _d === void 0 ? void 0 : _d.find(Boolean);
213
+ const subtotals = !!firstLandedCostData
214
+ ? firstLandedCostData.subtotals
215
+ : null;
216
+ if (subtotals) {
217
+ // prefetch landed cost will not update shipping and taxes since we haven't selected shipping method yet
218
+ cartStoreApplySubtotals({
219
+ exchangeRate: subtotals.exchangeRate,
220
+ items: subtotals.items,
221
+ landedCostTotal: 0,
222
+ presentmentCurrencyCode: subtotals.presentmentCurrencyCode,
223
+ shipping: 0,
224
+ total: subtotals.items,
225
+ });
226
+ }
227
+ }
228
+ catch (err) {
229
+ logError(err);
230
+ }
231
+ stripeStore.isFetchingLandedCost = false;
220
232
  }
221
- stripeStore.isFetchingLandedCost = false;
222
- }
223
233
  };
224
234
  const getStripeMessageBasedOnStatus = (status) => {
225
- let messages = [];
226
- let isError = true;
227
- // Inspect the PaymentIntent `status` to indicate the status of the payment
228
- // to your customer.
229
- //
230
- // Some payment methods will [immediately succeed or fail][0] upon
231
- // confirmation, while others will first enter a `processing` state.
232
- //
233
- // [0]: https://stripe.com/docs/payments/payment-methods#payment-notification
234
- switch (status) {
235
- case 'succeeded': {
236
- messages = [
237
- translate('Your payment went through successfully! Thank you for shopping with us! We hope you had an enjoyable experience and your support means the world to us.'),
238
- '',
239
- '',
240
- translate("We've sent an email confirmation of the order details for your review. And our team is carefully preparing your order so it arrives on time."),
241
- ];
242
- isError = false;
243
- break;
244
- }
245
- case 'requires_capture':
246
- case 'processing': {
247
- messages = [
248
- translate("Payment processing. We'll update you when payment is received."),
249
- ];
250
- isError = false;
251
- break;
252
- }
253
- case 'requires_payment_method': {
254
- messages = [
255
- translate('Payment failed. Please try another payment method.'),
256
- ];
257
- break;
258
- }
259
- default: {
260
- messages = [translate('Something went wrong.')];
261
- break;
235
+ let messages = [];
236
+ let isError = true;
237
+ // Inspect the PaymentIntent `status` to indicate the status of the payment
238
+ // to your customer.
239
+ //
240
+ // Some payment methods will [immediately succeed or fail][0] upon
241
+ // confirmation, while others will first enter a `processing` state.
242
+ //
243
+ // [0]: https://stripe.com/docs/payments/payment-methods#payment-notification
244
+ switch (status) {
245
+ case 'succeeded': {
246
+ messages = [
247
+ translate('Your payment went through successfully! Thank you for shopping with us! We hope you had an enjoyable experience and your support means the world to us.'),
248
+ '',
249
+ '',
250
+ translate("We've sent an email confirmation of the order details for your review. And our team is carefully preparing your order so it arrives on time."),
251
+ ];
252
+ isError = false;
253
+ break;
254
+ }
255
+ case 'requires_capture':
256
+ case 'processing': {
257
+ messages = [
258
+ translate("Payment processing. We'll update you when payment is received."),
259
+ ];
260
+ isError = false;
261
+ break;
262
+ }
263
+ case 'requires_payment_method': {
264
+ messages = [
265
+ translate('Payment failed. Please try another payment method.'),
266
+ ];
267
+ break;
268
+ }
269
+ default: {
270
+ messages = [translate('Something went wrong.')];
271
+ break;
272
+ }
262
273
  }
263
- }
264
- return {
265
- isError,
266
- messages,
267
- };
274
+ return {
275
+ isError,
276
+ messages,
277
+ };
268
278
  };
269
279
  const stripeStoreRetrievePayment = async ({ clientSecret: _clientSecret, storybookForceStatus, }) => {
270
- if (storybookForceStatus) {
271
- // return status right away if we are in storybook mode
272
- const { isError, messages } = getStripeMessageBasedOnStatus(storybookForceStatus);
280
+ if (storybookForceStatus) {
281
+ // return status right away if we are in storybook mode
282
+ const { isError, messages } = getStripeMessageBasedOnStatus(storybookForceStatus);
283
+ return { error: isError, messages };
284
+ }
285
+ const clientSecret = _clientSecret || stripeStore.clientSecret;
286
+ if (!stripeStore.stripe || !clientSecret) {
287
+ logError('Failed to retrieve payment intent. Stripe is not initialized');
288
+ return { error: true, message: [translate('Something went wrong.')] };
289
+ }
290
+ const { paymentIntent } = await stripeStore.stripe.retrievePaymentIntent(clientSecret);
291
+ const status = paymentIntent === null || paymentIntent === void 0 ? void 0 : paymentIntent.status;
292
+ const { isError, messages } = getStripeMessageBasedOnStatus(status);
273
293
  return { error: isError, messages };
274
- }
275
- const clientSecret = _clientSecret || stripeStore.clientSecret;
276
- if (!stripeStore.stripe || !clientSecret) {
277
- logError('Failed to retrieve payment intent. Stripe is not initialized');
278
- return { error: true, message: [translate('Something went wrong.')] };
279
- }
280
- const { paymentIntent } = await stripeStore.stripe.retrievePaymentIntent(clientSecret);
281
- const status = paymentIntent === null || paymentIntent === void 0 ? void 0 : paymentIntent.status;
282
- const { isError, messages } = getStripeMessageBasedOnStatus(status);
283
- return { error: isError, messages };
284
294
  };
285
295
  const stripeStoreConfirmPayment = async () => {
286
- var _a, _b, _c;
287
- const stripePaymentReady = !!((_a = stripeStore.stripePaymentEventData) === null || _a === void 0 ? void 0 : _a.complete);
288
- const stripeElements = stripeStore.stripeElements;
289
- const stripe = stripeStore.stripe;
290
- const stripeClientSecret = stripeStore.clientSecret;
291
- if (stripe && stripeElements && stripePaymentReady && stripeClientSecret) {
292
- const { error } = await stripe.confirmPayment({
293
- confirmParams: {
294
- receipt_email: (_c = (_b = stripeStore.stripeLinkEventData) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.email,
295
- return_url: window.location.href,
296
- },
297
- elements: stripeElements,
298
- redirect: 'if_required',
299
- });
300
- if (error) {
301
- if (error.type === 'card_error' || error.type === 'validation_error') {
302
- throw new Error(error.message);
303
- }
304
- if (error.type === 'invalid_request_error') {
305
- if (error.code === 'payment_intent_unexpected_state') {
306
- // PaymentIntent was canceled or expired, or status is `require_capture`.
307
- // don't throw error here because we will reset the checkout session last step
308
- return;
296
+ var _a, _b, _c;
297
+ const stripePaymentReady = !!((_a = stripeStore.stripePaymentEventData) === null || _a === void 0 ? void 0 : _a.complete);
298
+ const stripeElements = stripeStore.stripeElements;
299
+ const stripe = stripeStore.stripe;
300
+ const stripeClientSecret = stripeStore.clientSecret;
301
+ if (stripe && stripeElements && stripePaymentReady && stripeClientSecret) {
302
+ const { error } = await stripe.confirmPayment({
303
+ confirmParams: {
304
+ receipt_email: (_c = (_b = stripeStore.stripeLinkEventData) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.email,
305
+ return_url: window.location.href,
306
+ },
307
+ elements: stripeElements,
308
+ redirect: 'if_required',
309
+ });
310
+ if (error) {
311
+ if (error.type === 'card_error' || error.type === 'validation_error') {
312
+ throw new Error(error.message);
313
+ }
314
+ if (error.type === 'invalid_request_error') {
315
+ if (error.code === 'payment_intent_unexpected_state') {
316
+ // PaymentIntent was canceled or expired, or status is `require_capture`.
317
+ // don't throw error here because we will reset the checkout session last step
318
+ return;
319
+ }
320
+ }
321
+ throw new Error('An unexpected error occurred.');
309
322
  }
310
- }
311
- throw new Error('An unexpected error occurred.');
312
323
  }
313
- }
314
324
  };
315
325
  /**
316
326
  * Init checkout session
317
327
  * @returns {boolean} whether or not the checkout session is successfully created
318
328
  */
319
329
  const stripeStoreInitCheckoutSession = async () => {
320
- var _a;
321
- const total = cartStore.items.reduce((amount, item) => amount + item.amount * item.quantity, 0);
322
- if (!total || !localizationStore.targetCurrency) {
323
- logError('Fail to create checkout session - invalid total or currency');
324
- return false;
325
- }
326
- stripeStore.isFetchingSession = true;
327
- const { errors, json } = await handleFetch(`${"https://v1.route.js.zonos.com"}/api/create-checkout-session`, {
328
- body: {
329
- currency: ((_a = cartStore.items.find(Boolean)) === null || _a === void 0 ? void 0 : _a.currencyCode) || '',
330
- itemsAmount: total,
331
- presentmentCountryCode: localizationStore.selectedCountryCode || null,
332
- },
333
- method: 'POST',
334
- });
335
- stripeStore.isFetchingSession = false;
336
- if (errors.length || !json) {
337
- logError('Error occurs when creating checkout session', JSON.stringify(errors, null, 2));
338
- return false;
339
- }
340
- const result = json.checkoutSessionCreate;
341
- stripeStore.clientSecret = result.clientSecret;
342
- // update cart store with updated informations
343
- cartStore.checkoutSessionId = result.id;
344
- cartStoreApplySubtotals(Object.assign(Object.assign({}, result.subtotals), { landedCostTotal: 0, shipping: 0, total: result.subtotals.items }));
345
- log('Exchange rate updated for cart items (checkout session create)', 'info', cartStore.exchangeRate);
346
- log('done-init-checkout-session');
347
- return true;
330
+ var _a;
331
+ const total = cartStore.items.reduce((amount, item) => amount + item.amount * item.quantity, 0);
332
+ if (!total || !localizationStore.targetCurrency) {
333
+ logError('Fail to create checkout session - invalid total or currency');
334
+ return false;
335
+ }
336
+ stripeStore.isFetchingSession = true;
337
+ const { errors, json } = await handleFetch(`${"https://v1.route.js.zonos.com"}/api/create-checkout-session`, {
338
+ body: {
339
+ currency: ((_a = cartStore.items.find(Boolean)) === null || _a === void 0 ? void 0 : _a.currencyCode) || '',
340
+ itemsAmount: total,
341
+ presentmentCountryCode: localizationStore.selectedCountryCode || null,
342
+ },
343
+ method: 'POST',
344
+ });
345
+ stripeStore.isFetchingSession = false;
346
+ if (errors.length || !json) {
347
+ logError('Error occurs when creating checkout session', JSON.stringify(errors, null, 2));
348
+ return false;
349
+ }
350
+ const result = json.checkoutSessionCreate;
351
+ stripeStore.clientSecret = result.clientSecret;
352
+ // update cart store with updated informations
353
+ cartStore.checkoutSessionId = result.id;
354
+ cartStoreApplySubtotals(Object.assign(Object.assign({}, result.subtotals), { landedCostTotal: 0, shipping: 0, total: result.subtotals.items }));
355
+ log('Exchange rate updated for cart items (checkout session create)', 'info', cartStore.exchangeRate);
356
+ log('done-init-checkout-session');
357
+ return true;
348
358
  };
349
359
  /**
350
360
  * Update checkout session. Use for updating amount with landed cost id, or update session when cart items change
351
361
  */
352
362
  const stripeStoreUpdateCheckoutSession = async ({ currency, id, itemsAmount, landedCostId, presentmentCountryCode, }) => {
353
- // No need to set loading state here because this function will be called under the hood to update
354
- // landed cost id for the section.
355
- const { errors, json } = await handleFetch(`${"https://v1.route.js.zonos.com"}/api/update-checkout-session`, {
356
- body: {
357
- currency,
358
- id,
359
- itemsAmount,
360
- landedCostId,
361
- presentmentCountryCode,
362
- },
363
- method: 'POST',
364
- });
365
- if (errors.length || !json) {
366
- logError('Error occurs when updating checkout session', JSON.stringify(errors, null, 2));
367
- return { errors, json };
368
- }
369
- return { errors: [], json };
363
+ // No need to set loading state here because this function will be called under the hood to update
364
+ // landed cost id for the section.
365
+ const { errors, json } = await handleFetch(`${"https://v1.route.js.zonos.com"}/api/update-checkout-session`, {
366
+ body: {
367
+ currency,
368
+ id,
369
+ itemsAmount,
370
+ landedCostId,
371
+ presentmentCountryCode,
372
+ },
373
+ method: 'POST',
374
+ });
375
+ if (errors.length || !json) {
376
+ logError('Error occurs when updating checkout session', JSON.stringify(errors, null, 2));
377
+ return { errors, json };
378
+ }
379
+ return { errors: [], json };
370
380
  };
371
381
  onChange$1('clientSecret', clientSecret => {
372
- // update stripe elements when client secret changes
373
- if (clientSecret && stripeStore.stripe) {
374
- sessionStorage.setItem('zonos--client-secret', clientSecret);
375
- }
376
- if (!clientSecret) {
377
- sessionStorage.removeItem('zonos--client-secret');
378
- }
382
+ // update stripe elements when client secret changes
383
+ if (clientSecret && stripeStore.stripe) {
384
+ sessionStorage.setItem('zonos--client-secret', clientSecret);
385
+ }
386
+ if (!clientSecret) {
387
+ sessionStorage.removeItem('zonos--client-secret');
388
+ }
379
389
  });
380
390
 
381
391
  const formatDate = ({ date, formatOptions = { day: 'numeric', weekday: 'long', year: 'numeric' }, }) => {
382
- // format date to Thursday 3, 2023
383
- return new Intl.DateTimeFormat('en-US', formatOptions).format(date);
392
+ // format date to Thursday 3, 2023
393
+ return new Intl.DateTimeFormat('en-US', formatOptions).format(date);
384
394
  };
385
395
 
386
396
  const getDaysDifference = (targetDate) => {
387
- const currentDate = new Date();
388
- const timeDifference = targetDate.getTime() - currentDate.getTime();
389
- const daysDifference = Math.floor(timeDifference / (1000 * 60 * 60 * 24)); // Convert milliseconds to days
390
- return daysDifference;
397
+ const currentDate = new Date();
398
+ const timeDifference = targetDate.getTime() - currentDate.getTime();
399
+ const daysDifference = Math.floor(timeDifference / (1000 * 60 * 60 * 24)); // Convert milliseconds to days
400
+ return daysDifference;
391
401
  };
392
402
 
393
403
  const { onChange, reset, state: cartStore, } = createStore(() => ({
394
- checkoutSessionId: sessionStorage.getItem('zonos--checkout-session-id') || null,
395
- currency: 'USD',
396
- dutiesTaxFees: 0,
397
- error: null,
398
- exchangeRate: null,
399
- isSelectedShippingAboveDeminimis: false,
400
- isSelectedShippingGuarantee: false,
401
- items: [],
402
- landedCostData: null,
403
- selectedLandedCost: null,
404
- selectedShippingOption: null,
405
- selectedShippingOptionExpectedDate: '',
406
- selectedShippingOptionTransitTime: '',
407
- shipping: 0,
408
- shippingData: null,
409
- step: 'customer-info',
410
- subtotal: 0,
411
- total: 0,
404
+ checkoutSessionId: sessionStorage.getItem('zonos--checkout-session-id') || null,
405
+ currency: 'USD',
406
+ dutiesTaxFees: 0,
407
+ error: null,
408
+ exchangeRate: null,
409
+ isSelectedShippingAboveDeminimis: false,
410
+ isSelectedShippingGuarantee: false,
411
+ items: [],
412
+ landedCostData: null,
413
+ selectedLandedCost: null,
414
+ selectedShippingOption: null,
415
+ selectedShippingOptionExpectedDate: '',
416
+ selectedShippingOptionTransitTime: '',
417
+ shipping: 0,
418
+ shippingData: null,
419
+ step: 'customer-info',
420
+ subtotal: 0,
421
+ total: 0,
412
422
  }));
413
423
  /**
414
424
  * Format shipping transit info to be displayed on UI
@@ -418,171 +428,171 @@ const { onChange, reset, state: cartStore, } = createStore(() => ({
418
428
  * - minTransit: 3
419
429
  */
420
430
  const cartStoreGetShippingTransitInfo = (item) => {
421
- const minTransit = item.minTransitAt
422
- ? getDaysDifference(new Date(item.minTransitAt))
423
- : '';
424
- const maxTransit = item.maxTransitAt
425
- ? getDaysDifference(new Date(item.maxTransitAt))
426
- : '';
427
- const expectedDate = item.minTransitAt
428
- ? formatDate({
429
- date: new Date(item.minTransitAt),
430
- })
431
- : '';
432
- return {
433
- expectedDate,
434
- maxTransit,
435
- minTransit,
436
- };
431
+ const minTransit = item.minTransitAt
432
+ ? getDaysDifference(new Date(item.minTransitAt))
433
+ : '';
434
+ const maxTransit = item.maxTransitAt
435
+ ? getDaysDifference(new Date(item.maxTransitAt))
436
+ : '';
437
+ const expectedDate = item.minTransitAt
438
+ ? formatDate({
439
+ date: new Date(item.minTransitAt),
440
+ })
441
+ : '';
442
+ return {
443
+ expectedDate,
444
+ maxTransit,
445
+ minTransit,
446
+ };
437
447
  };
438
448
  const cartStoreReset = () => {
439
- sessionStorage.removeItem('zonos--checkout-session-id');
440
- // reset cart store
441
- reset();
449
+ sessionStorage.removeItem('zonos--checkout-session-id');
450
+ // reset cart store
451
+ reset();
442
452
  };
443
453
  const cartStoreUpdateToErrorState = ({ messages, title, }) => {
444
- cartStore.step = 'error';
445
- cartStore.error = {
446
- messages,
447
- title,
448
- };
454
+ cartStore.step = 'error';
455
+ cartStore.error = {
456
+ messages,
457
+ title,
458
+ };
449
459
  };
450
460
  const cartStoreApplySubtotals = (subtotals) => {
451
- // update exchange rate so we can use it to display cart items
452
- cartStore.exchangeRate = subtotals.exchangeRate;
453
- cartStore.dutiesTaxFees = subtotals.landedCostTotal;
454
- cartStore.subtotal = subtotals.items;
455
- cartStore.total = subtotals.total;
456
- cartStore.currency = subtotals.presentmentCurrencyCode;
461
+ // update exchange rate so we can use it to display cart items
462
+ cartStore.exchangeRate = subtotals.exchangeRate;
463
+ cartStore.dutiesTaxFees = subtotals.landedCostTotal;
464
+ cartStore.subtotal = subtotals.items;
465
+ cartStore.total = subtotals.total;
466
+ cartStore.currency = subtotals.presentmentCurrencyCode;
457
467
  };
458
468
  const cartStoreReCalculateTotal = async ({ currency, itemsAmount, landedCostId, }) => {
459
- if (landedCostId && cartStore.selectedLandedCost) {
460
- // update cart total right away if we have landed cost id to avoid order total flickering
461
- const subtotals = cartStore.selectedLandedCost.subtotals;
462
- cartStoreApplySubtotals(subtotals);
463
- log('Exchange rate updated for cart items (landed cost subtotal)', 'info', cartStore.exchangeRate);
464
- }
465
- // update checkout session
466
- if (!cartStore.checkoutSessionId) {
467
- logError('Could update cart total without checkout session id');
468
- return false;
469
- }
470
- const { json } = await stripeStoreUpdateCheckoutSession({
471
- currency,
472
- id: cartStore.checkoutSessionId,
473
- itemsAmount,
474
- landedCostId,
475
- presentmentCountryCode: localizationStore.selectedCountryCode,
476
- });
477
- if (!json) {
478
- // do nothing if we can't get checkout session
479
- logError('Error occurs when updating checkout session');
480
- cartStoreUpdateToErrorState({
481
- messages: [
482
- translate("There's been an error updating your checkout session. Please reload and try again or contact support if the error persists"),
483
- ],
484
- title: translate('Error updating Checkout'),
469
+ if (landedCostId && cartStore.selectedLandedCost) {
470
+ // update cart total right away if we have landed cost id to avoid order total flickering
471
+ const subtotals = cartStore.selectedLandedCost.subtotals;
472
+ cartStoreApplySubtotals(subtotals);
473
+ log('Exchange rate updated for cart items (landed cost subtotal)', 'info', cartStore.exchangeRate);
474
+ }
475
+ // update checkout session
476
+ if (!cartStore.checkoutSessionId) {
477
+ logError('Could update cart total without checkout session id');
478
+ return false;
479
+ }
480
+ const { json } = await stripeStoreUpdateCheckoutSession({
481
+ currency,
482
+ id: cartStore.checkoutSessionId,
483
+ itemsAmount,
484
+ landedCostId,
485
+ presentmentCountryCode: localizationStore.selectedCountryCode,
485
486
  });
486
- return false;
487
- }
488
- if (!landedCostId) {
489
- // This is when first open the checkout modal and we just want to get info from the old cart session.
490
- // use subtotals from checkout session to update cart total
491
- cartStoreApplySubtotals(json.checkoutSessionUpdate.subtotals);
492
- log('Exchange rate updated for cart items (checkout session update)', 'info', cartStore.exchangeRate);
493
- }
494
- return true;
487
+ if (!json) {
488
+ // do nothing if we can't get checkout session
489
+ logError('Error occurs when updating checkout session');
490
+ cartStoreUpdateToErrorState({
491
+ messages: [
492
+ translate("There's been an error updating your checkout session. Please reload and try again or contact support if the error persists"),
493
+ ],
494
+ title: translate('Error updating Checkout'),
495
+ });
496
+ return false;
497
+ }
498
+ if (!landedCostId) {
499
+ // This is when first open the checkout modal and we just want to get info from the old cart session.
500
+ // use subtotals from checkout session to update cart total
501
+ cartStoreApplySubtotals(json.checkoutSessionUpdate.subtotals);
502
+ log('Exchange rate updated for cart items (checkout session update)', 'info', cartStore.exchangeRate);
503
+ }
504
+ return true;
495
505
  };
496
506
  const cartStoreUpdateSelectedShippingOption = async (selectedShippingOption) => {
497
- var _a, _b, _c, _d, _e;
498
- cartStore.selectedShippingOption = selectedShippingOption;
499
- // update shipping transit info
500
- const { expectedDate, maxTransit, minTransit } = cartStoreGetShippingTransitInfo(cartStore.selectedShippingOption);
501
- cartStore.selectedShippingOptionExpectedDate = expectedDate;
502
- cartStore.selectedShippingOptionTransitTime =
503
- minTransit && maxTransit
504
- ? `${minTransit}-${maxTransit}`
505
- : `${minTransit || maxTransit}`;
506
- const selectedLandedCost = (_a = cartStore.landedCostData) === null || _a === void 0 ? void 0 : _a.find(checkoutSessionPresentment => {
507
- var _a, _b, _c;
508
- return ((_b = (_a = checkoutSessionPresentment.landedCost) === null || _a === void 0 ? void 0 : _a.shipmentRating) === null || _b === void 0 ? void 0 : _b.id) ===
509
- ((_c = cartStore.selectedShippingOption) === null || _c === void 0 ? void 0 : _c.id);
510
- });
511
- // save selected landed cost for later use
512
- cartStore.selectedLandedCost = selectedLandedCost || null;
513
- if (!selectedLandedCost) {
514
- // do nothing if we can't find landed cost for selected shipping option
515
- return false;
516
- }
517
- // update shipping value and dutiesTaxFees on selectedShippingOption change
518
- cartStore.shipping = selectedLandedCost.subtotals.shipping;
519
- // update deminimis status
520
- const isGuarantee = ((_b = selectedLandedCost === null || selectedLandedCost === void 0 ? void 0 : selectedLandedCost.landedCost) === null || _b === void 0 ? void 0 : _b.landedCostGuaranteeCode) === 'ZONOS';
521
- // one item in deminimis with type of duty and tax has threshold value is "ABOVE"
522
- const isAboveDeminimis = !!((_d = (_c = selectedLandedCost === null || selectedLandedCost === void 0 ? void 0 : selectedLandedCost.landedCost) === null || _c === void 0 ? void 0 : _c.deMinimis) === null || _d === void 0 ? void 0 : _d.find(item => ['DUTY', 'TAX'].includes(item.type) && item.threshold === 'ABOVE'));
523
- cartStore.isSelectedShippingAboveDeminimis = isAboveDeminimis;
524
- cartStore.isSelectedShippingGuarantee = isGuarantee;
525
- // update session with selected landed cost
526
- const updateCalulateStatus = await cartStoreReCalculateTotal({
527
- landedCostId: (_e = selectedLandedCost.landedCost) === null || _e === void 0 ? void 0 : _e.id,
528
- });
529
- return updateCalulateStatus;
507
+ var _a, _b, _c, _d, _e;
508
+ cartStore.selectedShippingOption = selectedShippingOption;
509
+ // update shipping transit info
510
+ const { expectedDate, maxTransit, minTransit } = cartStoreGetShippingTransitInfo(cartStore.selectedShippingOption);
511
+ cartStore.selectedShippingOptionExpectedDate = expectedDate;
512
+ cartStore.selectedShippingOptionTransitTime =
513
+ minTransit && maxTransit
514
+ ? `${minTransit}-${maxTransit}`
515
+ : `${minTransit || maxTransit}`;
516
+ const selectedLandedCost = (_a = cartStore.landedCostData) === null || _a === void 0 ? void 0 : _a.find(checkoutSessionPresentment => {
517
+ var _a, _b, _c;
518
+ return ((_b = (_a = checkoutSessionPresentment.landedCost) === null || _a === void 0 ? void 0 : _a.shipmentRating) === null || _b === void 0 ? void 0 : _b.id) ===
519
+ ((_c = cartStore.selectedShippingOption) === null || _c === void 0 ? void 0 : _c.id);
520
+ });
521
+ // save selected landed cost for later use
522
+ cartStore.selectedLandedCost = selectedLandedCost || null;
523
+ if (!selectedLandedCost) {
524
+ // do nothing if we can't find landed cost for selected shipping option
525
+ return false;
526
+ }
527
+ // update shipping value and dutiesTaxFees on selectedShippingOption change
528
+ cartStore.shipping = selectedLandedCost.subtotals.shipping;
529
+ // update deminimis status
530
+ const isGuarantee = ((_b = selectedLandedCost === null || selectedLandedCost === void 0 ? void 0 : selectedLandedCost.landedCost) === null || _b === void 0 ? void 0 : _b.landedCostGuaranteeCode) === 'ZONOS';
531
+ // one item in deminimis with type of duty and tax has threshold value is "ABOVE"
532
+ const isAboveDeminimis = !!((_d = (_c = selectedLandedCost === null || selectedLandedCost === void 0 ? void 0 : selectedLandedCost.landedCost) === null || _c === void 0 ? void 0 : _c.deMinimis) === null || _d === void 0 ? void 0 : _d.find(item => ['DUTY', 'TAX'].includes(item.type) && item.threshold === 'ABOVE'));
533
+ cartStore.isSelectedShippingAboveDeminimis = isAboveDeminimis;
534
+ cartStore.isSelectedShippingGuarantee = isGuarantee;
535
+ // update session with selected landed cost
536
+ const updateCalulateStatus = await cartStoreReCalculateTotal({
537
+ landedCostId: (_e = selectedLandedCost.landedCost) === null || _e === void 0 ? void 0 : _e.id,
538
+ });
539
+ return updateCalulateStatus;
530
540
  };
531
541
  onChange('checkoutSessionId', () => {
532
- if (!cartStore.checkoutSessionId) {
533
- sessionStorage.removeItem('zonos--checkout-session-id');
534
- return;
535
- }
536
- sessionStorage.setItem('zonos--checkout-session-id', cartStore.checkoutSessionId);
542
+ if (!cartStore.checkoutSessionId) {
543
+ sessionStorage.removeItem('zonos--checkout-session-id');
544
+ return;
545
+ }
546
+ sessionStorage.setItem('zonos--checkout-session-id', cartStore.checkoutSessionId);
537
547
  });
538
548
  const cartStoreUpdateItems = async (items) => {
539
- var _a;
540
- cartStore.items = items;
541
- const currency = (_a = items.find(Boolean)) === null || _a === void 0 ? void 0 : _a.currencyCode;
542
- const total = items.reduce((amt, item) => {
543
- return amt + item.amount * item.quantity;
544
- }, 0);
545
- if (!currency || !total) {
546
- // do nothing if we can't get currency or total
547
- return;
548
- }
549
- cartStore.currency = currency;
550
- // set loading state here because this is first load checkout session when we already have checkout session id stored
551
- stripeStore.isFetchingSession = true;
552
- await cartStoreReCalculateTotal({
553
- currency: currency,
554
- itemsAmount: total,
555
- });
556
- stripeStore.isFetchingSession = false;
549
+ var _a;
550
+ cartStore.items = items;
551
+ const currency = (_a = items.find(Boolean)) === null || _a === void 0 ? void 0 : _a.currencyCode;
552
+ const total = items.reduce((amt, item) => {
553
+ return amt + item.amount * item.quantity;
554
+ }, 0);
555
+ if (!currency || !total) {
556
+ // do nothing if we can't get currency or total
557
+ return;
558
+ }
559
+ cartStore.currency = currency;
560
+ // set loading state here because this is first load checkout session when we already have checkout session id stored
561
+ stripeStore.isFetchingSession = true;
562
+ await cartStoreReCalculateTotal({
563
+ currency: currency,
564
+ itemsAmount: total,
565
+ });
566
+ stripeStore.isFetchingSession = false;
557
567
  };
558
568
  const cartStoreResetSelectedShippingOption = () => {
559
- cartStore.selectedShippingOption = null;
560
- cartStore.isSelectedShippingAboveDeminimis = false;
561
- cartStore.isSelectedShippingGuarantee = false;
562
- cartStore.selectedShippingOptionExpectedDate = '';
563
- cartStore.selectedShippingOptionTransitTime = '';
564
- cartStore.shipping = 0;
569
+ cartStore.selectedShippingOption = null;
570
+ cartStore.isSelectedShippingAboveDeminimis = false;
571
+ cartStore.isSelectedShippingGuarantee = false;
572
+ cartStore.selectedShippingOptionExpectedDate = '';
573
+ cartStore.selectedShippingOptionTransitTime = '';
574
+ cartStore.shipping = 0;
565
575
  };
566
576
  const cartStoreNextStep = () => {
567
- if (cartStore.step === 'customer-info') {
568
- cartStore.step = 'shipping';
569
- }
570
- else if (cartStore.step === 'shipping') {
571
- cartStore.step = 'payment';
572
- }
573
- else if (cartStore.step === 'payment') {
574
- cartStore.step = 'finish';
575
- }
577
+ if (cartStore.step === 'customer-info') {
578
+ cartStore.step = 'shipping';
579
+ }
580
+ else if (cartStore.step === 'shipping') {
581
+ cartStore.step = 'payment';
582
+ }
583
+ else if (cartStore.step === 'payment') {
584
+ cartStore.step = 'finish';
585
+ }
576
586
  };
577
587
  const cartStorePreviousStep = () => {
578
- if (cartStore.step === 'payment') {
579
- cartStore.step = 'shipping';
580
- }
581
- else if (cartStore.step === 'shipping') {
582
- cartStore.step = 'customer-info';
583
- // reset selected shipping option
584
- cartStoreResetSelectedShippingOption();
585
- }
588
+ if (cartStore.step === 'payment') {
589
+ cartStore.step = 'shipping';
590
+ }
591
+ else if (cartStore.step === 'shipping') {
592
+ cartStore.step = 'customer-info';
593
+ // reset selected shipping option
594
+ cartStoreResetSelectedShippingOption();
595
+ }
586
596
  };
587
597
 
588
598
  export { cartStoreApplySubtotals as a, cartStoreGetShippingTransitInfo as b, cartStore as c, cartStoreNextStep as d, cartStorePreviousStep as e, cartStoreReCalculateTotal as f, cartStoreReset as g, cartStoreUpdateItems as h, cartStoreUpdateSelectedShippingOption as i, cartStoreUpdateToErrorState as j, stripeStorePrefetchLandedCost as k, initStripeElements as l, stripeStoreInitCheckoutSession as m, stripeStoreConfirmPayment as n, stripeStoreReset as o, stripeStoreRetrievePayment as p, stripeStore as s };