@zonos/elements 1.2.1 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/dist/cjs/{cart-7b70853c.js → cart-55512e32.js} +12 -2
  2. package/dist/cjs/index.cjs.js +2 -2
  3. package/dist/cjs/{localization-387a8a65.js → localization-d7fe7290.js} +40 -13
  4. package/dist/cjs/{submitGtag-bf6e7c5e.js → submitGtag-d65003f9.js} +1 -1
  5. package/dist/cjs/zonos-address_2.cjs.entry.js +7 -2
  6. package/dist/cjs/zonos-cart-items_10.cjs.entry.js +6 -7
  7. package/dist/cjs/zonos-checkout.cjs.entry.js +8 -4
  8. package/dist/cjs/zonos-controller.cjs.entry.js +49 -3
  9. package/dist/cjs/zonos-country-flag_4.cjs.entry.js +1 -1
  10. package/dist/cjs/zonos-hello-dialog.cjs.entry.js +15 -7
  11. package/dist/cjs/zonos-hello.cjs.entry.js +1 -1
  12. package/dist/cjs/zonos-payment.cjs.entry.js +2 -2
  13. package/dist/cjs/zonos-shipping-rich-radio.cjs.entry.js +1 -1
  14. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout.css +2 -2
  15. package/dist/collection/components/checkout/zonos-checkout/zonos-checkout.js +4 -0
  16. package/dist/collection/components/checkout/zonos-checkout/zonos-shipping/zonos-shipping.js +3 -5
  17. package/dist/collection/components/common/zonos-shipping-rich-radio/zonos-shipping-rich-radio.css +1 -0
  18. package/dist/collection/components/hello/zonos-hello-dialog/zonos-hello-dialog.js +15 -7
  19. package/dist/collection/components/main/zonos-controller.js +46 -0
  20. package/dist/collection/components/store/checkout/stripe.js +11 -1
  21. package/dist/collection/components/store/hello/localization.js +31 -9
  22. package/dist/collection/components/stripe/zonos-address/zonos-address.js +5 -0
  23. package/dist/collection/components/utils/api/getExchangeRate.js +9 -4
  24. package/dist/collection/components/utils/checkout/initCheckout.js +1 -1
  25. package/dist/collection/environment.js +22 -13
  26. package/dist/collection/scripts/zonos.js +84 -3
  27. package/dist/collection/utils/generateVercelDeployUrl.js +3 -2
  28. package/dist/components/cart.js +11 -1
  29. package/dist/components/localization.js +40 -13
  30. package/dist/components/zonos-address2.js +5 -0
  31. package/dist/components/zonos-checkout.js +5 -1
  32. package/dist/components/zonos-controller.js +47 -1
  33. package/dist/components/zonos-hello-dialog2.js +15 -7
  34. package/dist/components/zonos-shipping-rich-radio2.js +1 -1
  35. package/dist/components/zonos-shipping2.js +4 -5
  36. package/dist/esm/{cart-07091d2a.js → cart-17650017.js} +12 -2
  37. package/dist/esm/index.js +2 -2
  38. package/dist/esm/{localization-b3c2a9a9.js → localization-f3828793.js} +40 -13
  39. package/dist/esm/{submitGtag-c0b655ad.js → submitGtag-a901ece5.js} +1 -1
  40. package/dist/esm/zonos-address_2.entry.js +7 -2
  41. package/dist/esm/zonos-cart-items_10.entry.js +6 -7
  42. package/dist/esm/zonos-checkout.entry.js +8 -4
  43. package/dist/esm/zonos-controller.entry.js +49 -3
  44. package/dist/esm/zonos-country-flag_4.entry.js +1 -1
  45. package/dist/esm/zonos-hello-dialog.entry.js +15 -7
  46. package/dist/esm/zonos-hello.entry.js +1 -1
  47. package/dist/esm/zonos-payment.entry.js +2 -2
  48. package/dist/esm/zonos-shipping-rich-radio.entry.js +1 -1
  49. package/dist/esm-es5/cart-17650017.js +1 -0
  50. package/dist/esm-es5/index.js +1 -1
  51. package/dist/esm-es5/{localization-b3c2a9a9.js → localization-f3828793.js} +1 -1
  52. package/dist/esm-es5/{submitGtag-c0b655ad.js → submitGtag-a901ece5.js} +1 -1
  53. package/dist/esm-es5/zonos-address_2.entry.js +1 -1
  54. package/dist/esm-es5/zonos-cart-items_10.entry.js +1 -1
  55. package/dist/esm-es5/zonos-checkout.entry.js +1 -1
  56. package/dist/esm-es5/zonos-controller.entry.js +1 -1
  57. package/dist/esm-es5/zonos-country-flag_4.entry.js +1 -1
  58. package/dist/esm-es5/zonos-hello-dialog.entry.js +1 -1
  59. package/dist/esm-es5/zonos-hello.entry.js +1 -1
  60. package/dist/esm-es5/zonos-payment.entry.js +1 -1
  61. package/dist/esm-es5/zonos-shipping-rich-radio.entry.js +1 -1
  62. package/dist/scripts/loadZonos.js +86 -5
  63. package/dist/scripts/zonos.js +86 -5
  64. package/dist/types/components/main/zonos-controller.d.ts +1 -0
  65. package/dist/types/components/store/checkout/stripe.d.ts +2 -1
  66. package/dist/types/components/store/hello/localization.d.ts +2 -0
  67. package/dist/types/components/utils/api/getExchangeRate.d.ts +9 -3
  68. package/dist/types/components/utils/changeDeepProperty.d.ts +1 -1
  69. package/dist/types/components/utils/changeDeepPropertyAtIndex.d.ts +1 -1
  70. package/dist/types/components/utils/checkout/initCheckout.d.ts +1 -1
  71. package/dist/types/environment.d.ts +6 -1
  72. package/dist/types/scripts/zonos.d.ts +3 -0
  73. package/dist/types/types/generated/graphql.customer.types.d.ts +1 -0
  74. package/dist/types/types/generated/graphql.customer.types.ts +1 -0
  75. package/dist/zonos-elements/assets/RemoveIcon.svg +1 -1
  76. package/dist/zonos-elements/index.esm.js +1 -1
  77. package/dist/zonos-elements/p-0ed3bb9f.system.entry.js +1 -0
  78. package/dist/zonos-elements/{p-42ba069d.system.js → p-164fae93.system.js} +1 -1
  79. package/dist/zonos-elements/{p-9b86e655.system.entry.js → p-224125da.system.entry.js} +1 -1
  80. package/dist/zonos-elements/{p-9dc9cbc8.entry.js → p-28681677.entry.js} +1 -1
  81. package/dist/zonos-elements/p-3a56c240.entry.js +1 -0
  82. package/dist/zonos-elements/p-3f3fbcea.entry.js +1 -0
  83. package/dist/zonos-elements/{p-bb36a9f8.js → p-770c959e.js} +1 -1
  84. package/dist/zonos-elements/p-8378d94e.js +1 -0
  85. package/dist/zonos-elements/{p-37db3842.system.entry.js → p-84b00605.system.entry.js} +1 -1
  86. package/dist/zonos-elements/{p-f23749e4.system.js → p-8aabbb9b.system.js} +1 -1
  87. package/dist/zonos-elements/p-8b415737.system.entry.js +1 -0
  88. package/dist/zonos-elements/{p-98105ede.entry.js → p-9202375f.entry.js} +1 -1
  89. package/dist/zonos-elements/p-a1fa50fb.entry.js +1 -0
  90. package/dist/zonos-elements/{p-a20b97e9.system.entry.js → p-aca66238.system.entry.js} +1 -1
  91. package/dist/zonos-elements/{p-87f324c5.entry.js → p-bc2c42f5.entry.js} +1 -1
  92. package/dist/zonos-elements/{p-c28157ec.system.entry.js → p-c8ad044e.system.entry.js} +1 -1
  93. package/dist/zonos-elements/{p-343071d5.entry.js → p-cc070c1c.entry.js} +1 -1
  94. package/dist/zonos-elements/{p-4524a84f.system.entry.js → p-cc1c785c.system.entry.js} +1 -1
  95. package/dist/zonos-elements/p-cd71e41e.entry.js +1 -0
  96. package/dist/zonos-elements/{p-0f7233fd.system.entry.js → p-cf97cc68.system.entry.js} +1 -1
  97. package/dist/zonos-elements/p-d6b8563b.system.entry.js +1 -0
  98. package/dist/zonos-elements/{p-96a3c767.entry.js → p-e5908de2.entry.js} +1 -1
  99. package/dist/zonos-elements/p-f6add79c.system.js +1 -0
  100. package/dist/zonos-elements/{p-6df1eaee.js → p-f7875c40.js} +1 -1
  101. package/dist/zonos-elements/p-f8491335.system.js +1 -1
  102. package/dist/zonos-elements/{p-b64bbf38.system.js → p-f95ac9ec.system.js} +1 -1
  103. package/dist/zonos-elements/zonos-elements.esm.js +1 -1
  104. package/package.json +3 -3
  105. package/dist/esm-es5/cart-07091d2a.js +0 -1
  106. package/dist/zonos-elements/p-0a788f68.entry.js +0 -1
  107. package/dist/zonos-elements/p-23b0b4a2.system.entry.js +0 -1
  108. package/dist/zonos-elements/p-2c20c082.entry.js +0 -1
  109. package/dist/zonos-elements/p-30fd29fb.js +0 -1
  110. package/dist/zonos-elements/p-37fc9f6b.entry.js +0 -1
  111. package/dist/zonos-elements/p-79f9e330.system.js +0 -1
  112. package/dist/zonos-elements/p-914ce305.system.entry.js +0 -1
  113. package/dist/zonos-elements/p-9adf546f.system.entry.js +0 -1
  114. package/dist/zonos-elements/p-d43749bd.entry.js +0 -1
@@ -5,7 +5,7 @@ import { g as getBorderRadius } from './getBorderRadius.js';
5
5
  import { i as isColorVariable } from './isColorVariable.js';
6
6
  import { d as defineCustomElement$1 } from './zonos-text2.js';
7
7
 
8
- const zonosShippingRichRadioCss = ":host{font-family:Inter;display:block}:host img{max-width:100%}:host dl,:host dd,:host h1,:host h2,:host h3,:host h4,:host h5,:host h6,:host hr,:host figure,:host p,:host pre{margin:0}:host{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}:host{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host input{margin:0;accent-color:var(--selected-border-color, var(--amino-blue-600))}:host .zonos--shipping-rich-radio-item{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;padding:var(--amino-space-16);-ms-flex-align:center;align-items:center;gap:var(--amino-space-16);cursor:pointer;border:1px solid var(--amino-gray-200)}:host .zonos--shipping-rich-radio-item:first-child{border-top-left-radius:var(--border-radius, var(--amino-radius-10));border-top-right-radius:var(--border-radius, var(--amino-radius-10))}:host .zonos--shipping-rich-radio-item:last-child{border-bottom-right-radius:var(--border-radius, var(--amino-radius-10))}:host .zonos--shipping-rich-radio-item:not(:last-child){border-bottom:none}:host .zonos--shipping-rich-radio-item.selected{outline:1px solid var(--selected-border-color, var(--amino-blue-600));outline-offset:-1px}:host .zonos--shipping-info{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex:1;flex:1}:host .zonos--shipping-detail{-ms-flex:1;flex:1}:host .zonos--sub-detail{display:-ms-inline-flexbox;display:inline-flex;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap}";
8
+ const zonosShippingRichRadioCss = ":host{font-family:Inter;display:block}:host img{max-width:100%}:host dl,:host dd,:host h1,:host h2,:host h3,:host h4,:host h5,:host h6,:host hr,:host figure,:host p,:host pre{margin:0}:host{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}:host{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host input{margin:0;accent-color:var(--selected-border-color, var(--amino-blue-600))}:host .zonos--shipping-rich-radio-item{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;padding:var(--amino-space-16);-ms-flex-align:center;align-items:center;gap:var(--amino-space-16);cursor:pointer;border:1px solid var(--amino-gray-200)}:host .zonos--shipping-rich-radio-item:first-child{border-top-left-radius:var(--border-radius, var(--amino-radius-10));border-top-right-radius:var(--border-radius, var(--amino-radius-10))}:host .zonos--shipping-rich-radio-item:last-child{border-bottom-right-radius:var(--border-radius, var(--amino-radius-10));border-bottom-left-radius:var(--border-radius, var(--amino-radius-10))}:host .zonos--shipping-rich-radio-item:not(:last-child){border-bottom:none}:host .zonos--shipping-rich-radio-item.selected{outline:1px solid var(--selected-border-color, var(--amino-blue-600));outline-offset:-1px}:host .zonos--shipping-info{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex:1;flex:1}:host .zonos--shipping-detail{-ms-flex:1;flex:1}:host .zonos--sub-detail{display:-ms-inline-flexbox;display:inline-flex;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap}";
9
9
 
10
10
  const ZonosShippingRichRadio = /*@__PURE__*/ proxyCustomElement(class ZonosShippingRichRadio extends HTMLElement {
11
11
  constructor() {
@@ -1,5 +1,5 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
- import { c as cartStore, i as cartStoreUpdateSelectedShippingOption, b as cartStoreGetShippingTransitInfo, s as stripeStore } from './cart.js';
2
+ import { c as cartStore, i as cartStoreUpdateSelectedShippingOption, b as cartStoreGetShippingTransitInfo } from './cart.js';
3
3
  import { t as translate } from './localization.js';
4
4
  import { f as formatCurrency } from './formatCurrency.js';
5
5
  import { s as submitGtag } from './submitGtag.js';
@@ -52,9 +52,8 @@ const ZonosShipping = /*@__PURE__*/ proxyCustomElement(class ZonosShipping exten
52
52
  }
53
53
  }
54
54
  render() {
55
- var _a, _b;
56
- const shipToCountry = (_a = stripeStore.stripeAddressEventData) === null || _a === void 0 ? void 0 : _a.value.address.country;
57
- const serviceLevels = (_b = cartStore.shippingData) === null || _b === void 0 ? void 0 : _b.flatMap((item) => {
55
+ var _a;
56
+ const serviceLevels = (_a = cartStore.shippingData) === null || _a === void 0 ? void 0 : _a.flatMap((item) => {
58
57
  var _a, _b;
59
58
  const { expectedDate, maxTransit, minTransit } = cartStoreGetShippingTransitInfo(item);
60
59
  const sublabel = expectedDate
@@ -75,7 +74,7 @@ const ZonosShipping = /*@__PURE__*/ proxyCustomElement(class ZonosShipping exten
75
74
  value: item.id,
76
75
  };
77
76
  });
78
- return (h(Host, { class: "zonos--shipping zonos--elements" }, h("div", { class: "zonos--group" }, h("zonos-text", { class: "zonos--title", type: "semiBoldSubheader" }, translate('Shipping information')), h("zonos-text", { class: "zonos--shipping-method-title", type: "semiBoldLabel" }, translate('Shipping method')), !(serviceLevels === null || serviceLevels === void 0 ? void 0 : serviceLevels.length) ? (h("zonos-banner", { bannerTitle: "No shipping methods found - try editing your address or contacting support if the error persists", intent: "error" })) : (h("zonos-shipping-rich-radio", { items: serviceLevels || [], onRadioSelected: e => this.handleRadioSelected(e) })), cartStore.isSelectedShippingAboveDeminimis && (h("zonos-banner", { intent: "warning" }, translate('Above de minimis threshold for'), " ", shipToCountry, ".", ' ', translate('Duties and taxes will be applied to items and shipping.')))), h("zonos-button", { backgroundColor: this.submitBtnColor, "is-disabled": this.disabled, loading: this.continueLoading, onClick: () => this.continueClickHandler(), size: "lg",
77
+ return (h(Host, { class: "zonos--shipping zonos--elements" }, h("div", { class: "zonos--group" }, h("zonos-text", { class: "zonos--title", type: "semiBoldSubheader" }, translate('Shipping information')), h("zonos-text", { class: "zonos--shipping-method-title", type: "semiBoldLabel" }, translate('Shipping method')), !(serviceLevels === null || serviceLevels === void 0 ? void 0 : serviceLevels.length) ? (h("zonos-banner", { bannerTitle: "No shipping methods found - try editing your address or contacting support if the error persists", intent: "error" })) : (h("zonos-shipping-rich-radio", { items: serviceLevels || [], onRadioSelected: e => this.handleRadioSelected(e) }))), h("zonos-button", { backgroundColor: this.submitBtnColor, "is-disabled": this.disabled, loading: this.continueLoading, onClick: () => this.continueClickHandler(), size: "lg",
79
78
  // use primary type when on mobile mode
80
79
  variant: this.submitBtnType }, translate('Go to payment'))));
81
80
  }
@@ -1,5 +1,5 @@
1
1
  import { c as createStore, z as zonosStore } from './zonosStore-05a62104.js';
2
- import { h as handleFetch, l as log, a as localizationStore, b as logError, t as translate } from './localization-b3c2a9a9.js';
2
+ import { h as handleFetch, l as log, a as localizationStore, b as logError, t as translate } from './localization-f3828793.js';
3
3
  import { i as isDarkColor } from './isDarkColor-6fbb9b14.js';
4
4
  import { g as getBorderRadius } from './getBorderRadius-45764ad7.js';
5
5
 
@@ -90,6 +90,7 @@ const { onChange: onChange$1, reset: reset$1, state: stripeStore, } = createStor
90
90
  stripeAddressEventData: null,
91
91
  stripeAddressUsedWhenFetchingLC: null,
92
92
  stripeElements: null,
93
+ stripeElementsOptions: null,
93
94
  stripeLinkElement: null,
94
95
  stripeLinkEventData: null,
95
96
  stripeLinkUsedWhenFetchingLC: null,
@@ -130,13 +131,22 @@ const initStripeElements = async (props) => {
130
131
  overridePrimaryColor: props === null || props === void 0 ? void 0 : props.overridePrimaryColor,
131
132
  overrideTheme: props === null || props === void 0 ? void 0 : props.overrideTheme,
132
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);
133
137
  if (!stripeStore.stripeElements) {
134
138
  // init stripe elements if it doesn't exist
135
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;
136
144
  }
137
- else {
145
+ if (!isSameOptions) {
138
146
  // update elements with new option if it already exists
139
147
  stripeStore.stripeElements.update(stripeOptions);
148
+ // save stripe elements options for later comparison
149
+ stripeStore.stripeElementsOptions = stripeOptions;
140
150
  }
141
151
  log('Stripe elements initialized');
142
152
  }
package/dist/esm/index.js CHANGED
@@ -1,6 +1,6 @@
1
- export { c as cartStore, a as cartStoreApplySubtotals, b as cartStoreGetShippingTransitInfo, d as cartStoreNextStep, e as cartStorePreviousStep, f as cartStoreReCalculateTotal, g as cartStoreReset, h as cartStoreUpdateItems, i as cartStoreUpdateSelectedShippingOption, j as cartStoreUpdateToErrorState } from './cart-07091d2a.js';
1
+ export { c as cartStore, a as cartStoreApplySubtotals, b as cartStoreGetShippingTransitInfo, d as cartStoreNextStep, e as cartStorePreviousStep, f as cartStoreReCalculateTotal, g as cartStoreReset, h as cartStoreUpdateItems, i as cartStoreUpdateSelectedShippingOption, j as cartStoreUpdateToErrorState } from './cart-17650017.js';
2
2
  import './zonosStore-05a62104.js';
3
3
  import './index-d1aa9293.js';
4
- import './localization-b3c2a9a9.js';
4
+ import './localization-f3828793.js';
5
5
  import './isDarkColor-6fbb9b14.js';
6
6
  import './getBorderRadius-45764ad7.js';
@@ -3196,18 +3196,23 @@ const getCountryLandedCost = async (countryCode) => {
3196
3196
 
3197
3197
  const getExchangeRate = async ({ country, isGuaranteed, sourceCurrency, targetCurrency, }) => {
3198
3198
  var _a;
3199
+ // If source currency matches target currency (US -> US) and is not a guaranteed rate, return null
3200
+ if (sourceCurrency === targetCurrency && !isGuaranteed) {
3201
+ return { exchangeRate: null, maxAge: null };
3202
+ }
3199
3203
  const url = `${"https://v1.route.js.zonos.com"}/api/exchange-rates?sourceCurrency=${sourceCurrency}&targetCurrency=${targetCurrency}&isGuaranteed=${isGuaranteed}&country=${country}}`;
3200
3204
  const { errors, json } = await handleFetch(url);
3201
3205
  if (errors.length || !json) {
3202
3206
  logError(`Error fetching country landed cost: ${(_a = errors.find(Boolean)) === null || _a === void 0 ? void 0 : _a.message}`);
3203
- return null;
3207
+ return { exchangeRate: null, maxAge: null };
3204
3208
  }
3205
- const { rate, targetFormat } = json.exchangeRateCreate;
3209
+ const { maxAge, rate, targetFormat } = json.exchangeRateCreate;
3206
3210
  if (rate) {
3207
3211
  sessionStorage.setItem(country + '_rate', JSON.stringify(rate));
3208
- return { rate, targetFormat };
3212
+ const exchangeRate = { rate, targetFormat };
3213
+ return { exchangeRate, maxAge };
3209
3214
  }
3210
- return null;
3215
+ return { exchangeRate: null, maxAge: null };
3211
3216
  };
3212
3217
 
3213
3218
  const getLocaleMessages = async ({ countryCode, localeTo, storeId, }) => {
@@ -3465,23 +3470,45 @@ const { state: localizationStore } = createStore({
3465
3470
  shippingZoneCountries: null,
3466
3471
  targetCurrency: 'USD',
3467
3472
  });
3473
+ const triggerGetExchangeRate = async (isGuaranteed) => {
3474
+ const { exchangeRate, maxAge } = await getExchangeRate({
3475
+ country: localizationStore.selectedCountryCode,
3476
+ isGuaranteed,
3477
+ sourceCurrency: zonosStore.sourceCurrency,
3478
+ targetCurrency: localizationStore.targetCurrency,
3479
+ });
3480
+ if (exchangeRate) {
3481
+ localizationStore.exchangeRate = exchangeRate;
3482
+ currencyDisplay();
3483
+ }
3484
+ return { maxAge };
3485
+ };
3486
+ // This recursive function is for users who step away from their computer and come back needing a new exchange rate
3487
+ const startExchangeRateTimeout = ({ isGuaranteed, maxAge, }) => {
3488
+ if (localizationStore.exchangeRateTimeout) {
3489
+ clearTimeout(localizationStore.exchangeRateTimeout);
3490
+ }
3491
+ // maxAge comes in seconds, convert to milliseconds
3492
+ const defaultMaxAge = 5 * 60;
3493
+ const maxAgeToUse = maxAge || defaultMaxAge;
3494
+ // Recursively set timeouts to get new exchange rates when the current one expires
3495
+ localizationStore.exchangeRateTimeout = setTimeout(async () => {
3496
+ const { maxAge: newMaxAge } = await triggerGetExchangeRate(isGuaranteed);
3497
+ startExchangeRateTimeout({ isGuaranteed, maxAge: newMaxAge });
3498
+ }, maxAgeToUse * 1000);
3499
+ };
3468
3500
  const getNewLocalization = async () => {
3469
3501
  log('get new localization store');
3470
3502
  const { isShippableCountry, selectedCountryCode } = localizationStore;
3471
- const isGuaranteed = zonosStore.checkoutSettings.visibilityStatus === 'ENABLED';
3472
3503
  if (zonosStore.helloSettings.currencyBehavior === 'DISABLED' ||
3473
3504
  !isShippableCountry ||
3474
3505
  !selectedCountryCode) {
3475
3506
  return;
3476
3507
  }
3477
- localizationStore.exchangeRate = await getExchangeRate({
3478
- country: localizationStore.selectedCountryCode,
3479
- isGuaranteed,
3480
- sourceCurrency: zonosStore.sourceCurrency,
3481
- targetCurrency: localizationStore.targetCurrency,
3482
- });
3483
- if (localizationStore.exchangeRate) {
3484
- currencyDisplay();
3508
+ if (zonosStore.sourceCurrency !== localizationStore.targetCurrency) {
3509
+ const isGuaranteed = zonosStore.checkoutSettings.visibilityStatus === 'ENABLED';
3510
+ const { maxAge } = await triggerGetExchangeRate(isGuaranteed);
3511
+ startExchangeRateTimeout({ isGuaranteed, maxAge });
3485
3512
  }
3486
3513
  localizationStore.countryLandedCost = await getCountryLandedCost(localizationStore.selectedCountryCode);
3487
3514
  };
@@ -1,5 +1,5 @@
1
1
  import { z as zonosStore } from './zonosStore-05a62104.js';
2
- import { l as log } from './localization-b3c2a9a9.js';
2
+ import { l as log } from './localization-f3828793.js';
3
3
 
4
4
  const checkoutBreakpoint = 890;
5
5
  const isCheckoutMobile = (isMobile) => {
@@ -1,6 +1,6 @@
1
1
  import { r as registerInstance, h, H as Host, d as getElement } from './index-d1aa9293.js';
2
- import { s as stripeStore, m as stripeStorePrefetchLandedCost } from './cart-07091d2a.js';
3
- import { b as logError, a as localizationStore } from './localization-b3c2a9a9.js';
2
+ import { s as stripeStore, m as stripeStorePrefetchLandedCost } from './cart-17650017.js';
3
+ import { b as logError, a as localizationStore } from './localization-f3828793.js';
4
4
  import './zonosStore-05a62104.js';
5
5
  import './isDarkColor-6fbb9b14.js';
6
6
  import './getBorderRadius-45764ad7.js';
@@ -35,6 +35,11 @@ const ZonosAddress = class {
35
35
  ? Object.values(shippableCountries).map(country => country.code)
36
36
  : [],
37
37
  contacts: this.defaultAddress ? [this.defaultAddress] : undefined,
38
+ defaultValues: {
39
+ address: {
40
+ country: localizationStore.selectedCountryCode || 'AL',
41
+ },
42
+ },
38
43
  display: {
39
44
  name: 'split',
40
45
  },
@@ -1,8 +1,8 @@
1
1
  import { r as registerInstance, a as getAssetPath, h, H as Host, F as Fragment, c as createEvent, d as getElement } from './index-d1aa9293.js';
2
- import { c as cartStore, s as stripeStore, p as stripeStoreRetrievePayment, o as stripeStoreReset, i as cartStoreUpdateSelectedShippingOption, b as cartStoreGetShippingTransitInfo } from './cart-07091d2a.js';
3
- import { t as translate } from './localization-b3c2a9a9.js';
2
+ import { c as cartStore, s as stripeStore, p as stripeStoreRetrievePayment, o as stripeStoreReset, i as cartStoreUpdateSelectedShippingOption, b as cartStoreGetShippingTransitInfo } from './cart-17650017.js';
3
+ import { t as translate } from './localization-f3828793.js';
4
4
  import { g as getBorderRadius } from './getBorderRadius-45764ad7.js';
5
- import { s as submitGtag, i as isCheckoutMobile } from './submitGtag-c0b655ad.js';
5
+ import { s as submitGtag, i as isCheckoutMobile } from './submitGtag-a901ece5.js';
6
6
  import { c as classes } from './classes-0d95c529.js';
7
7
  import { z as zonosStore } from './zonosStore-05a62104.js';
8
8
  import './isDarkColor-6fbb9b14.js';
@@ -464,9 +464,8 @@ const ZonosShipping = class {
464
464
  }
465
465
  }
466
466
  render() {
467
- var _a, _b;
468
- const shipToCountry = (_a = stripeStore.stripeAddressEventData) === null || _a === void 0 ? void 0 : _a.value.address.country;
469
- const serviceLevels = (_b = cartStore.shippingData) === null || _b === void 0 ? void 0 : _b.flatMap((item) => {
467
+ var _a;
468
+ const serviceLevels = (_a = cartStore.shippingData) === null || _a === void 0 ? void 0 : _a.flatMap((item) => {
470
469
  var _a, _b;
471
470
  const { expectedDate, maxTransit, minTransit } = cartStoreGetShippingTransitInfo(item);
472
471
  const sublabel = expectedDate
@@ -487,7 +486,7 @@ const ZonosShipping = class {
487
486
  value: item.id,
488
487
  };
489
488
  });
490
- return (h(Host, { class: "zonos--shipping zonos--elements" }, h("div", { class: "zonos--group" }, h("zonos-text", { class: "zonos--title", type: "semiBoldSubheader" }, translate('Shipping information')), h("zonos-text", { class: "zonos--shipping-method-title", type: "semiBoldLabel" }, translate('Shipping method')), !(serviceLevels === null || serviceLevels === void 0 ? void 0 : serviceLevels.length) ? (h("zonos-banner", { bannerTitle: "No shipping methods found - try editing your address or contacting support if the error persists", intent: "error" })) : (h("zonos-shipping-rich-radio", { items: serviceLevels || [], onRadioSelected: e => this.handleRadioSelected(e) })), cartStore.isSelectedShippingAboveDeminimis && (h("zonos-banner", { intent: "warning" }, translate('Above de minimis threshold for'), " ", shipToCountry, ".", ' ', translate('Duties and taxes will be applied to items and shipping.')))), h("zonos-button", { backgroundColor: this.submitBtnColor, "is-disabled": this.disabled, loading: this.continueLoading, onClick: () => this.continueClickHandler(), size: "lg",
489
+ return (h(Host, { class: "zonos--shipping zonos--elements" }, h("div", { class: "zonos--group" }, h("zonos-text", { class: "zonos--title", type: "semiBoldSubheader" }, translate('Shipping information')), h("zonos-text", { class: "zonos--shipping-method-title", type: "semiBoldLabel" }, translate('Shipping method')), !(serviceLevels === null || serviceLevels === void 0 ? void 0 : serviceLevels.length) ? (h("zonos-banner", { bannerTitle: "No shipping methods found - try editing your address or contacting support if the error persists", intent: "error" })) : (h("zonos-shipping-rich-radio", { items: serviceLevels || [], onRadioSelected: e => this.handleRadioSelected(e) }))), h("zonos-button", { backgroundColor: this.submitBtnColor, "is-disabled": this.disabled, loading: this.continueLoading, onClick: () => this.continueClickHandler(), size: "lg",
491
490
  // use primary type when on mobile mode
492
491
  variant: this.submitBtnType }, translate('Go to payment'))));
493
492
  }
@@ -1,8 +1,8 @@
1
1
  import { r as registerInstance, h, F as Fragment, H as Host } from './index-d1aa9293.js';
2
- import { k as initStripeElements, c as cartStore, h as cartStoreUpdateItems, g as cartStoreReset, s as stripeStore, l as stripeStoreInitCheckoutSession, j as cartStoreUpdateToErrorState, m as stripeStorePrefetchLandedCost, d as cartStoreNextStep, n as stripeStoreConfirmPayment, o as stripeStoreReset, e as cartStorePreviousStep } from './cart-07091d2a.js';
3
- import { a as localizationStore, l as log, t as translate } from './localization-b3c2a9a9.js';
2
+ import { k as initStripeElements, c as cartStore, h as cartStoreUpdateItems, g as cartStoreReset, s as stripeStore, l as stripeStoreInitCheckoutSession, j as cartStoreUpdateToErrorState, m as stripeStorePrefetchLandedCost, d as cartStoreNextStep, n as stripeStoreConfirmPayment, o as stripeStoreReset, e as cartStorePreviousStep } from './cart-17650017.js';
3
+ import { a as localizationStore, l as log, t as translate } from './localization-f3828793.js';
4
4
  import { z as zonosStore, m as mergeConfig } from './zonosStore-05a62104.js';
5
- import { s as submitGtag, i as isCheckoutMobile } from './submitGtag-c0b655ad.js';
5
+ import { s as submitGtag, i as isCheckoutMobile } from './submitGtag-a901ece5.js';
6
6
  import { c as classes } from './classes-0d95c529.js';
7
7
  import { g as getBorderRadius } from './getBorderRadius-45764ad7.js';
8
8
  import { i as isDarkColor } from './isDarkColor-6fbb9b14.js';
@@ -16,7 +16,7 @@ const MessageIcon = `<svg width="18" height="18" viewBox="0 0 18 18" fill="none"
16
16
 
17
17
  const RemoveIcon = `<svg color="var(--amino-gray-800)" fill="none" height="24" viewBox="0 0 24 24" width="24" xmlns="https://www.w3.org/2000/svg"><path clip-rule="evenodd" d="M22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Z" data-is-secondary-color="true" fill="var(--amino-gray-200)" fill-rule="evenodd"></path><path clip-rule="evenodd" d="M8.293 8.293a1 1 0 0 1 1.414 0L12 10.586l2.293-2.293a1 1 0 1 1 1.414 1.414L13.414 12l2.293 2.293a1 1 0 0 1-1.414 1.414L12 13.414l-2.293 2.293a1 1 0 0 1-1.414-1.414L10.586 12 8.293 9.707a1 1 0 0 1 0-1.414Z" fill="currentColor" fill-rule="evenodd"></path></svg>`;
18
18
 
19
- const zonosCheckoutCss = ".sc-zonos-checkout-h{font-family:Inter;display:block}.sc-zonos-checkout-h img.sc-zonos-checkout{max-width:100%}.sc-zonos-checkout-h dl.sc-zonos-checkout,.sc-zonos-checkout-h dd.sc-zonos-checkout,.sc-zonos-checkout-h h1.sc-zonos-checkout,.sc-zonos-checkout-h h2.sc-zonos-checkout,.sc-zonos-checkout-h h3.sc-zonos-checkout,.sc-zonos-checkout-h h4.sc-zonos-checkout,.sc-zonos-checkout-h h5.sc-zonos-checkout,.sc-zonos-checkout-h h6.sc-zonos-checkout,.sc-zonos-checkout-h hr.sc-zonos-checkout,.sc-zonos-checkout-h figure.sc-zonos-checkout,.sc-zonos-checkout-h p.sc-zonos-checkout,.sc-zonos-checkout-h pre.sc-zonos-checkout{margin:0}.sc-zonos-checkout-h{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.sc-zonos-checkout-h *.sc-zonos-checkout::-webkit-scrollbar{width:10px}.sc-zonos-checkout-h *.sc-zonos-checkout::-webkit-scrollbar-track{background:var(--amino-gray-50)}.sc-zonos-checkout-h *.sc-zonos-checkout::-webkit-scrollbar-thumb{border-radius:10px;background:#cccccc;border:3px solid transparent;background-clip:content-box}.sc-zonos-checkout-h *.sc-zonos-checkout::-webkit-scrollbar-thumb:hover{background:#d6d6d6}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout{display:-ms-flexbox;display:flex;height:100%;overflow:hidden;border-radius:var(--border-radius, var(--amino-radius-10))}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--left.sc-zonos-checkout,.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--right.sc-zonos-checkout{-ms-flex:1;flex:1;padding:var(--amino-space-48) var(--amino-space-56)}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--left.sc-zonos-checkout{background-color:var(--primary-color, var(--amino-gray-0));border-right:1px solid var(--amino-gray-200)}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--right.sc-zonos-checkout{background-color:var(--amino-gray-0);padding-bottom:var(--amino-space-80)}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout{width:100%;max-height:100%;height:100%;overflow:auto;-ms-flex-direction:column;flex-direction:column;background-color:var(--amino-gray-0);-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding:var(--amino-space-24);padding-bottom:50px}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout .zonos--header.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center;width:100%}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout .zonos--header.sc-zonos-checkout img.sc-zonos-checkout{width:150px;min-width:150px}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout .zonos--logo.sc-zonos-checkout{margin-bottom:0}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout zonos-checkout-finish.sc-zonos-checkout{-ms-flex:1;flex:1}.sc-zonos-checkout-h .zonos--left.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.sc-zonos-checkout-h .zonos--left.sc-zonos-checkout .zonos--back-button.sc-zonos-checkout{margin-bottom:var(--amino-space-24)}.sc-zonos-checkout-h .zonos--left.sc-zonos-checkout .zonos--wrapper.sc-zonos-checkout{padding:0 var(--amino-space-8) var(--amino-space-8)}.sc-zonos-checkout-h .zonos--left.sc-zonos-checkout .zonos--payment-error-banner.sc-zonos-checkout{margin-top:var(--amino-space-24)}.sc-zonos-checkout-h .zonos--right.sc-zonos-checkout{position:relative}.sc-zonos-checkout-h .zonos--right.sc-zonos-checkout .zonos--close-button.sc-zonos-checkout{position:absolute;right:var(--amino-space-32);top:var(--amino-space-32)}.sc-zonos-checkout-h .zonos--footer.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-pack:end;justify-content:flex-end;-ms-flex-align:center;align-items:center;position:absolute;bottom:var(--amino-space-32);right:var(--amino-space-56);gap:var(--amino-space-8)}.sc-zonos-checkout-h .zonos--wrapper.sc-zonos-checkout{overflow:auto;max-height:100%;position:relative}.sc-zonos-checkout-h .flex--wrapper.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;max-height:100%}.sc-zonos-checkout-h .zonos--logo.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.sc-zonos-checkout-h .zonos--checkout-default-message.sc-zonos-checkout{margin-left:var(--amino-space-76);margin-bottom:var(--amino-space-8)}.preview.sc-zonos-checkout-h{min-width:500px;margin:auto}.preview.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout{border:var(--amino-border)}.preview.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout{padding:var(--amino-space-32)}.mobile.sc-zonos-checkout-h{min-width:auto}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;overflow:auto;border-radius:0;max-height:100%;height:100%;border:0}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--left.sc-zonos-checkout,.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--right.sc-zonos-checkout{padding:var(--amino-space-12)}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--left.sc-zonos-checkout{-ms-flex-order:2;order:2}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--right.sc-zonos-checkout{-ms-flex-order:1;order:1;padding-top:var(--amino-space-16)}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--right.sc-zonos-checkout .zonos--wrapper.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:var(--amino-space-16);margin-top:var(--amino-space-24);border:var(--amino-border);border-radius:var(--border-radius, var(--amino-radius-10));background-color:var(--amino-gray-50);padding:var(--amino-space-12);margin-top:var(--amino-space-32)}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--wrapper.sc-zonos-checkout{max-height:100%}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--footer.sc-zonos-checkout{-ms-flex-order:3;order:3}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout{width:auto}.mobile.sc-zonos-checkout-h .zonos--cart-subtotal.sc-zonos-checkout{margin:0}.mobile.sc-zonos-checkout-h .zonos--footer.sc-zonos-checkout{bottom:0;left:0;padding:var(--amino-space-12);position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;background-color:var(--amino-gray-0)}";
19
+ const zonosCheckoutCss = ".sc-zonos-checkout-h{font-family:Inter;display:block}.sc-zonos-checkout-h img.sc-zonos-checkout{max-width:100%}.sc-zonos-checkout-h dl.sc-zonos-checkout,.sc-zonos-checkout-h dd.sc-zonos-checkout,.sc-zonos-checkout-h h1.sc-zonos-checkout,.sc-zonos-checkout-h h2.sc-zonos-checkout,.sc-zonos-checkout-h h3.sc-zonos-checkout,.sc-zonos-checkout-h h4.sc-zonos-checkout,.sc-zonos-checkout-h h5.sc-zonos-checkout,.sc-zonos-checkout-h h6.sc-zonos-checkout,.sc-zonos-checkout-h hr.sc-zonos-checkout,.sc-zonos-checkout-h figure.sc-zonos-checkout,.sc-zonos-checkout-h p.sc-zonos-checkout,.sc-zonos-checkout-h pre.sc-zonos-checkout{margin:0}.sc-zonos-checkout-h{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.sc-zonos-checkout-h *.sc-zonos-checkout::-webkit-scrollbar{width:10px}.sc-zonos-checkout-h *.sc-zonos-checkout::-webkit-scrollbar-track{background:var(--amino-gray-50)}.sc-zonos-checkout-h *.sc-zonos-checkout::-webkit-scrollbar-thumb{border-radius:10px;background:#cccccc;border:3px solid transparent;background-clip:content-box}.sc-zonos-checkout-h *.sc-zonos-checkout::-webkit-scrollbar-thumb:hover{background:#d6d6d6}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout{display:-ms-flexbox;display:flex;height:100%;overflow:hidden;border-radius:var(--border-radius, var(--amino-radius-10))}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--left.sc-zonos-checkout,.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--right.sc-zonos-checkout{-ms-flex:1;flex:1;padding:var(--amino-space-48) var(--amino-space-56)}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--left.sc-zonos-checkout{background-color:var(--primary-color, var(--amino-gray-0));border-right:1px solid var(--amino-gray-200)}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--right.sc-zonos-checkout{background-color:var(--amino-gray-0);padding-bottom:var(--amino-space-80)}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout{width:100%;max-height:100%;height:100%;overflow:auto;-ms-flex-direction:column;flex-direction:column;background-color:var(--amino-gray-0);-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding:var(--amino-space-24);padding-bottom:50px}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout .zonos--header.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center;width:100%}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout .zonos--header.sc-zonos-checkout img.sc-zonos-checkout{width:150px;min-width:150px}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout .zonos--logo.sc-zonos-checkout{margin-bottom:0}.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout zonos-checkout-finish.sc-zonos-checkout{-ms-flex:1;flex:1}.sc-zonos-checkout-h .zonos--left.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.sc-zonos-checkout-h .zonos--left.sc-zonos-checkout .zonos--back-button.sc-zonos-checkout{margin-bottom:var(--amino-space-24)}.sc-zonos-checkout-h .zonos--left.sc-zonos-checkout .zonos--wrapper.sc-zonos-checkout{padding:0 var(--amino-space-8) var(--amino-space-8)}.sc-zonos-checkout-h .zonos--left.sc-zonos-checkout .zonos--payment-error-banner.sc-zonos-checkout{margin-top:var(--amino-space-24)}.sc-zonos-checkout-h .zonos--right.sc-zonos-checkout{position:relative}.sc-zonos-checkout-h .zonos--right.sc-zonos-checkout .zonos--close-button.sc-zonos-checkout{position:absolute;right:var(--amino-space-24);top:var(--amino-space-24)}.sc-zonos-checkout-h .zonos--footer.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-pack:end;justify-content:flex-end;-ms-flex-align:center;align-items:center;position:absolute;bottom:var(--amino-space-32);right:var(--amino-space-56);gap:var(--amino-space-8)}.sc-zonos-checkout-h .zonos--wrapper.sc-zonos-checkout{overflow:auto;max-height:100%;position:relative}.sc-zonos-checkout-h .flex--wrapper.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;max-height:100%}.sc-zonos-checkout-h .zonos--logo.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.sc-zonos-checkout-h .zonos--checkout-default-message.sc-zonos-checkout{margin-left:var(--amino-space-76);margin-bottom:var(--amino-space-8)}.preview.sc-zonos-checkout-h{min-width:500px;margin:auto}.preview.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout{border:var(--amino-border)}.preview.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout{padding:var(--amino-space-32)}.mobile.sc-zonos-checkout-h{min-width:auto}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;overflow:auto;border-radius:0;max-height:100%;height:100%;border:0}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--left.sc-zonos-checkout,.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--right.sc-zonos-checkout{padding:var(--amino-space-12)}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--left.sc-zonos-checkout{-ms-flex-order:2;order:2}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--right.sc-zonos-checkout{-ms-flex-order:1;order:1;padding-top:var(--amino-space-16)}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--right.sc-zonos-checkout .zonos--wrapper.sc-zonos-checkout{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:var(--amino-space-16);margin-top:var(--amino-space-24);border:var(--amino-border);border-radius:var(--border-radius, var(--amino-radius-10));background-color:var(--amino-gray-50);padding:var(--amino-space-12);margin-top:var(--amino-space-32)}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--wrapper.sc-zonos-checkout{max-height:100%}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--footer.sc-zonos-checkout{-ms-flex-order:3;order:3}.mobile.sc-zonos-checkout-h .zonos--content.sc-zonos-checkout .zonos--done.sc-zonos-checkout{width:auto}.mobile.sc-zonos-checkout-h .zonos--cart-subtotal.sc-zonos-checkout{margin:0}.mobile.sc-zonos-checkout-h .zonos--footer.sc-zonos-checkout{bottom:0;left:0;padding:var(--amino-space-12);position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;background-color:var(--amino-gray-0)}";
20
20
 
21
21
  const ZonosCheckout = class {
22
22
  constructor(hostRef) {
@@ -131,6 +131,8 @@ const ZonosCheckout = class {
131
131
  e.preventDefault();
132
132
  e.stopPropagation();
133
133
  log('zonos checkout button clicked');
134
+ // start loading
135
+ stripeStore.isFetchingSession = true;
134
136
  this.open = true;
135
137
  try {
136
138
  // buildCartDetail need to be catch since it may throw error
@@ -141,6 +143,8 @@ const ZonosCheckout = class {
141
143
  submitGtag('zonos-checkout-start');
142
144
  }
143
145
  catch (err) {
146
+ // stop loading
147
+ stripeStore.isFetchingSession = false;
144
148
  cartStoreUpdateToErrorState({
145
149
  messages: [
146
150
  translate("There's been an error creating your checkout session. Please reload and try again or contact support if the error persists"),
@@ -1,6 +1,6 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host } from './index-d1aa9293.js';
2
- import { s as stripeStore } from './cart-07091d2a.js';
3
- import { h as handleFetch, b as logError, i as isValidSelector, l as log, c as initLocalizationStore, d as localizationStoreUpdateSelectedCountryCode } from './localization-b3c2a9a9.js';
2
+ import { s as stripeStore } from './cart-17650017.js';
3
+ import { h as handleFetch, b as logError, i as isValidSelector, l as log, c as initLocalizationStore, d as localizationStoreUpdateSelectedCountryCode } from './localization-f3828793.js';
4
4
  import { z as zonosStore, d as zonosStoreInitSetting } from './zonosStore-05a62104.js';
5
5
  import './isDarkColor-6fbb9b14.js';
6
6
  import './getBorderRadius-45764ad7.js';
@@ -23,7 +23,7 @@ const injectCheckoutElement = () => {
23
23
  document.body.appendChild(newCheckoutElement);
24
24
  }
25
25
  };
26
- const initCheckout = async (config) => {
26
+ const initCheckout = (config) => {
27
27
  if (!config.placeOrderButtonSelector) {
28
28
  // do nothing if checkout button anchor is not set
29
29
  return;
@@ -62,6 +62,44 @@ const ZonosController = class {
62
62
  constructor(hostRef) {
63
63
  registerInstance(this, hostRef);
64
64
  this.stripeInitEvent = createEvent(this, "stripeInitEvent", 7);
65
+ this.disablePlaceOrderButtons = ({ disable }) => {
66
+ const placeOrderButtonSelector = zonosStore.checkoutSettings.placeOrderButtonSelector;
67
+ if (!placeOrderButtonSelector) {
68
+ return;
69
+ }
70
+ const disableEvent = (e) => {
71
+ const target = e.target;
72
+ // prevent default and propagation when the item has disabled attribute
73
+ if (target.getAttribute('disabled')) {
74
+ e.preventDefault();
75
+ e.stopPropagation();
76
+ }
77
+ };
78
+ const placeOrderButton = document.querySelectorAll(placeOrderButtonSelector);
79
+ placeOrderButton.forEach(button => {
80
+ if (disable) {
81
+ button.setAttribute('disabled', 'true');
82
+ // prevent the selector to perform default action when it's disabled
83
+ button.addEventListener('click', disableEvent);
84
+ }
85
+ else {
86
+ button.removeAttribute('disabled');
87
+ // clean up the event listener
88
+ button.removeEventListener('click', disableEvent);
89
+ }
90
+ });
91
+ // only auto enable if autoEnable is true and the state is enable
92
+ if (disable) {
93
+ setTimeout(() => {
94
+ // release it if zonos is not initialized after 5 seconds (this is to prevent the place order button from being disabled forever due to api)
95
+ placeOrderButton.forEach(button => {
96
+ button.removeAttribute('disabled');
97
+ // clean up the event listener if exists
98
+ button.removeEventListener('click', disableEvent);
99
+ });
100
+ }, 5000);
101
+ }
102
+ };
65
103
  this.config = undefined;
66
104
  this.zonosApiKey = undefined;
67
105
  }
@@ -77,6 +115,10 @@ const ZonosController = class {
77
115
  stripeStore.stripe = stripe;
78
116
  void initCheckout(zonosStore.checkoutSettings);
79
117
  log('init checkout element');
118
+ // enable place order button after checkout is loaded
119
+ this.disablePlaceOrderButtons({
120
+ disable: false,
121
+ });
80
122
  }
81
123
  /**
82
124
  * Init zonos notification
@@ -99,6 +141,10 @@ const ZonosController = class {
99
141
  log('Failed to load zonos settings. This domain may not have access', 'warn');
100
142
  return;
101
143
  }
144
+ // disable place order button until checkout is loaded
145
+ this.disablePlaceOrderButtons({
146
+ disable: true,
147
+ });
102
148
  // init zonos notification
103
149
  this.initZonosNotification();
104
150
  // load default setting if fail to load user setting
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, h, H as Host, d as getElement } from './index-d1aa9293.js';
2
- import { a as localizationStore, d as localizationStoreUpdateSelectedCountryCode, t as translate } from './localization-b3c2a9a9.js';
2
+ import { a as localizationStore, d as localizationStoreUpdateSelectedCountryCode, t as translate } from './localization-f3828793.js';
3
3
  import { c as classes } from './classes-0d95c529.js';
4
4
  import { i as isDarkColor } from './isDarkColor-6fbb9b14.js';
5
5
  import './zonosStore-05a62104.js';
@@ -1,5 +1,5 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host } from './index-d1aa9293.js';
2
- import { f as currencyConvertAndFormat, t as translate, a as localizationStore } from './localization-b3c2a9a9.js';
2
+ import { j as currencyFormat, a as localizationStore, t as translate } from './localization-f3828793.js';
3
3
  import { z as zonosStore } from './zonosStore-05a62104.js';
4
4
  import { c as classes } from './classes-0d95c529.js';
5
5
  import { g as getHasMoreSpaceOnRight } from './getHasMoreSpaceOnRight-feba1ae2.js';
@@ -78,18 +78,26 @@ const ZonosHelloDialog = class {
78
78
  const { countryLandedCost, selectedCountryCode } = localizationStore;
79
79
  // Our Robby API spells deminimis wrong here
80
80
  const dutyDeminimis = (countryLandedCost === null || countryLandedCost === void 0 ? void 0 : countryLandedCost.dutyDeminimus)
81
- ? currencyConvertAndFormat(countryLandedCost.dutyDeminimus)
81
+ ? currencyFormat(countryLandedCost.dutyDeminimus)
82
82
  : null;
83
+ // If Canada, use 40 CAD (courier duty de minimis)
84
+ const dutyDeminimisToUse = localizationStore.selectedCountryCode === 'CA'
85
+ ? currencyFormat(40)
86
+ : dutyDeminimis;
83
87
  // If deminimis is undefined or null, assume it's $0
84
- const dutyDeMinimisMessage = dutyDeminimis
85
- ? `${translate('Spend')} ${dutyDeminimis} ${translate('duty free')}`
88
+ const dutyDeMinimisMessage = dutyDeminimisToUse
89
+ ? `${translate('Spend')} ${dutyDeminimisToUse} ${translate('duty free')}`
86
90
  : translate('Duties will apply to all orders');
87
91
  // Our Robby API spells deminimis wrong here
88
92
  const taxDeminimis = (countryLandedCost === null || countryLandedCost === void 0 ? void 0 : countryLandedCost.vatTaxDeminimus)
89
- ? currencyConvertAndFormat(countryLandedCost.vatTaxDeminimus)
93
+ ? currencyFormat(countryLandedCost.vatTaxDeminimus)
90
94
  : null;
91
- const taxDeMinimisMessage = taxDeminimis
92
- ? `${translate('Spend')} ${taxDeminimis} ${translate('tax free')}`
95
+ // If Canada, use 150 CAD (courier tax de minimis)
96
+ const taxDeminimisToUse = localizationStore.selectedCountryCode === 'CA'
97
+ ? currencyFormat(150)
98
+ : taxDeminimis;
99
+ const taxDeMinimisMessage = taxDeminimisToUse
100
+ ? `${translate('Spend')} ${taxDeminimisToUse} ${translate('tax free')}`
93
101
  : translate('Taxes will apply to all orders');
94
102
  const animateLeft = this.animateFromLeftOverride ||
95
103
  (this.dialogRef && getHasMoreSpaceOnRight(this.dialogRef));
@@ -1,6 +1,6 @@
1
1
  import { r as registerInstance, h, H as Host } from './index-d1aa9293.js';
2
2
  import { _ as _root, i as isObjectLike_1, e as _baseGetTag, f as isObject_1, z as zonosStore, m as mergeConfig } from './zonosStore-05a62104.js';
3
- import { h as handleFetch, b as logError, a as localizationStore, i as isValidSelector, t as translate, s as setZonosCountryUrlParam, l as log, e as currencyDisplay, f as currencyConvertAndFormat, g as currencyConvert, j as currencyFormat } from './localization-b3c2a9a9.js';
3
+ import { h as handleFetch, b as logError, a as localizationStore, i as isValidSelector, t as translate, s as setZonosCountryUrlParam, l as log, e as currencyDisplay, f as currencyConvertAndFormat, g as currencyConvert, j as currencyFormat } from './localization-f3828793.js';
4
4
  import { c as classes } from './classes-0d95c529.js';
5
5
  import { g as getHasMoreSpaceOnRight } from './getHasMoreSpaceOnRight-feba1ae2.js';
6
6
 
@@ -1,7 +1,7 @@
1
1
  import { r as registerInstance, h, H as Host, d as getElement } from './index-d1aa9293.js';
2
- import { s as stripeStore } from './cart-07091d2a.js';
2
+ import { s as stripeStore } from './cart-17650017.js';
3
3
  import './zonosStore-05a62104.js';
4
- import './localization-b3c2a9a9.js';
4
+ import './localization-f3828793.js';
5
5
  import './isDarkColor-6fbb9b14.js';
6
6
  import './getBorderRadius-45764ad7.js';
7
7
 
@@ -4,7 +4,7 @@ import { c as classes } from './classes-0d95c529.js';
4
4
  import { g as getBorderRadius } from './getBorderRadius-45764ad7.js';
5
5
  import { i as isColorVariable } from './isColorVariable-4cda28c9.js';
6
6
 
7
- const zonosShippingRichRadioCss = ":host{font-family:Inter;display:block}:host img{max-width:100%}:host dl,:host dd,:host h1,:host h2,:host h3,:host h4,:host h5,:host h6,:host hr,:host figure,:host p,:host pre{margin:0}:host{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}:host{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host input{margin:0;accent-color:var(--selected-border-color, var(--amino-blue-600))}:host .zonos--shipping-rich-radio-item{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;padding:var(--amino-space-16);-ms-flex-align:center;align-items:center;gap:var(--amino-space-16);cursor:pointer;border:1px solid var(--amino-gray-200)}:host .zonos--shipping-rich-radio-item:first-child{border-top-left-radius:var(--border-radius, var(--amino-radius-10));border-top-right-radius:var(--border-radius, var(--amino-radius-10))}:host .zonos--shipping-rich-radio-item:last-child{border-bottom-right-radius:var(--border-radius, var(--amino-radius-10))}:host .zonos--shipping-rich-radio-item:not(:last-child){border-bottom:none}:host .zonos--shipping-rich-radio-item.selected{outline:1px solid var(--selected-border-color, var(--amino-blue-600));outline-offset:-1px}:host .zonos--shipping-info{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex:1;flex:1}:host .zonos--shipping-detail{-ms-flex:1;flex:1}:host .zonos--sub-detail{display:-ms-inline-flexbox;display:inline-flex;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap}";
7
+ const zonosShippingRichRadioCss = ":host{font-family:Inter;display:block}:host img{max-width:100%}:host dl,:host dd,:host h1,:host h2,:host h3,:host h4,:host h5,:host h6,:host hr,:host figure,:host p,:host pre{margin:0}:host{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}:host{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host input{margin:0;accent-color:var(--selected-border-color, var(--amino-blue-600))}:host .zonos--shipping-rich-radio-item{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;padding:var(--amino-space-16);-ms-flex-align:center;align-items:center;gap:var(--amino-space-16);cursor:pointer;border:1px solid var(--amino-gray-200)}:host .zonos--shipping-rich-radio-item:first-child{border-top-left-radius:var(--border-radius, var(--amino-radius-10));border-top-right-radius:var(--border-radius, var(--amino-radius-10))}:host .zonos--shipping-rich-radio-item:last-child{border-bottom-right-radius:var(--border-radius, var(--amino-radius-10));border-bottom-left-radius:var(--border-radius, var(--amino-radius-10))}:host .zonos--shipping-rich-radio-item:not(:last-child){border-bottom:none}:host .zonos--shipping-rich-radio-item.selected{outline:1px solid var(--selected-border-color, var(--amino-blue-600));outline-offset:-1px}:host .zonos--shipping-info{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex:1;flex:1}:host .zonos--shipping-detail{-ms-flex:1;flex:1}:host .zonos--sub-detail{display:-ms-inline-flexbox;display:inline-flex;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap}";
8
8
 
9
9
  const ZonosShippingRichRadio = class {
10
10
  constructor(hostRef) {
@@ -0,0 +1 @@
1
+ var __awaiter=this&&this.__awaiter||function(e,t,r,o){function n(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,i){function a(e){try{c(o.next(e))}catch(e){i(e)}}function s(e){try{c(o["throw"](e))}catch(e){i(e)}}function c(e){e.done?r(e.value):n(e.value).then(a,s)}c((o=o.apply(e,t||[])).next())}))};var __generator=this&&this.__generator||function(e,t){var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},o,n,i,a;return a={next:s(0),throw:s(1),return:s(2)},typeof Symbol==="function"&&(a[Symbol.iterator]=function(){return this}),a;function s(e){return function(t){return c([e,t])}}function c(s){if(o)throw new TypeError("Generator is already executing.");while(a&&(a=0,s[0]&&(r=0)),r)try{if(o=1,n&&(i=s[0]&2?n["return"]:s[0]?n["throw"]||((i=n["return"])&&i.call(n),0):n.next)&&!(i=i.call(n,s[1])).done)return i;if(n=0,i)s=[s[0]&2,i.value];switch(s[0]){case 0:case 1:i=s;break;case 4:r.label++;return{value:s[1],done:false};case 5:r.label++;n=s[1];s=[0];continue;case 7:s=r.ops.pop();r.trys.pop();continue;default:if(!(i=r.trys,i=i.length>0&&i[i.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!i||s[1]>i[0]&&s[1]<i[3])){r.label=s[1];break}if(s[0]===6&&r.label<i[1]){r.label=i[1];i=s;break}if(i&&r.label<i[2]){r.label=i[2];r.ops.push(s);break}if(i[2])r.ops.pop();r.trys.pop();continue}s=t.call(e,r)}catch(e){s=[6,e];n=0}finally{o=i=0}if(s[0]&5)throw s[1];return{value:s[0]?s[1]:void 0,done:true}}};import{c as createStore,z as zonosStore}from"./zonosStore-05a62104.js";import{h as handleFetch,l as log,a as localizationStore,b as logError,t as translate}from"./localization-f3828793.js";import{i as isDarkColor}from"./isDarkColor-6fbb9b14.js";import{g as getBorderRadius}from"./getBorderRadius-45764ad7.js";var prepCalculateLandedCost=function(){var e=stripeStore.stripeLinkEventData;var t=stripeStore.stripeAddressEventData;if(!t||!t.complete){throw new Error("Missing stripe address data")}return{checkoutSessionId:cartStore.checkoutSessionId||"",contact:{email:(e===null||e===void 0?void 0:e.value.email)||"",firstName:t.value.firstName||"",lastName:t.value.lastName||"",phone:t.value.phone||""},items:cartStore.items.map((function(e){return e})),shippingAddress:{addressLine1:t.value.address.line1,addressLine2:t.value.address.line2||"",city:t.value.address.city,country:t.value.address.country,postalCode:t.value.address.postal_code,state:t.value.address.state}}};var calculateLandedCost=function(e){return __awaiter(void 0,void 0,void 0,(function(){var t,r,o,n;return __generator(this,(function(i){switch(i.label){case 0:t="".concat("https://v1.route.js.zonos.com","/api/calculate-landed-cost");return[4,handleFetch(t,{body:prepCalculateLandedCost(),method:"POST",signal:e===null||e===void 0?void 0:e.signal})];case 1:r=i.sent(),o=r.errors,n=r.json;if(o.length||!n){throw new Error("Failed to calculate landed cost")}return[2,n]}}))}))};var addressRuleStyle=function(e){var t=e.theme;switch(t){default:return{".Input":{padding:"0",paddingBottom:"8px",paddingLeft:"16px",paddingRight:"8px",paddingTop:"6px"}}}};var defaultVariable=function(e){var t=e.borderStyle,r=e.theme;switch(r){case"DARK":return{borderRadius:getBorderRadius(t),colorBackground:"#101117",colorBackgroundText:"#C5C6CA",colorText:"#C5C6CA",colorTextPlaceholder:"#C5C6CA"};default:return{borderRadius:getBorderRadius(t)}}};var _f=createStore((function(){return{clientSecret:sessionStorage.getItem("zonos--client-secret")||null,fetchingLandedCostAbordController:null,isFetchingLandedCost:false,isFetchingSession:false,stripe:null,stripeAddressElement:null,stripeAddressEventData:null,stripeAddressUsedWhenFetchingLC:null,stripeElements:null,stripeElementsOptions:null,stripeLinkElement:null,stripeLinkEventData:null,stripeLinkUsedWhenFetchingLC:null,stripePaymentElement:null,stripePaymentEventData:null}})),onChange$1=_f.onChange,reset$1=_f.reset,stripeStore=_f.state;var getStripeOptions=function(e){var t=e.clientSecret,r=e.overrideBorderRaidus,o=e.overridePrimaryColor,n=e.overrideTheme;var i=o||zonosStore.appearance.colorPrimary;var a=i&&isDarkColor(i)?"night":"flat";var s=n==="DARK"?"night":"flat";return{appearance:{labels:"floating",rules:Object.assign({},addressRuleStyle({theme:"LIGHT"})),theme:n?s:a,variables:Object.assign({},defaultVariable({borderStyle:r,theme:"LIGHT"}))},clientSecret:t,locale:localizationStore.selectedLocale}};var initStripeElements=function(e){return __awaiter(void 0,void 0,void 0,(function(){var t,r,o,n;return __generator(this,(function(i){r=stripeStore.clientSecret;if(!stripeStore.stripe){log("Skip. Stripe is not initialized");return[2]}if(r){o=getStripeOptions({clientSecret:r,overrideBorderRaidus:e===null||e===void 0?void 0:e.overrideBorderRaidus,overridePrimaryColor:e===null||e===void 0?void 0:e.overridePrimaryColor,overrideTheme:e===null||e===void 0?void 0:e.overrideTheme});n=JSON.stringify(o)===JSON.stringify(stripeStore.stripeElementsOptions);if(!stripeStore.stripeElements){stripeStore.stripeElements=(t=stripeStore.stripe)===null||t===void 0?void 0:t.elements(o);stripeStore.stripeElementsOptions=o;log("Stripe elements initialized");return[2]}if(!n){stripeStore.stripeElements.update(o);stripeStore.stripeElementsOptions=o}log("Stripe elements initialized")}return[2]}))}))};var stripeStoreReset=function(){sessionStorage.removeItem("zonos--client-secret");reset$1();stripeStore.stripe=window.Zonos.stripe};var isPrefetchInfoOutdated=function(){var e,t,r,o;var n=stripeStore.fetchingLandedCostAbordController;if(!n){return false}var i=JSON.stringify((e=stripeStore.stripeLinkUsedWhenFetchingLC)===null||e===void 0?void 0:e.value)!==JSON.stringify((t=stripeStore.stripeLinkEventData)===null||t===void 0?void 0:t.value);var a=JSON.stringify((r=stripeStore.stripeAddressUsedWhenFetchingLC)===null||r===void 0?void 0:r.value)!==JSON.stringify((o=stripeStore.stripeAddressEventData)===null||o===void 0?void 0:o.value);return i||a};var stripeStorePrefetchLandedCost=function(){return __awaiter(void 0,void 0,void 0,(function(){var e,t,r,o,n,i,a,s,c,l,d,u,p,S;return __generator(this,(function(v){switch(v.label){case 0:n=!!((e=stripeStore.stripeAddressEventData)===null||e===void 0?void 0:e.complete);i=!!((t=stripeStore.stripeLinkEventData)===null||t===void 0?void 0:t.complete);a=isPrefetchInfoOutdated();if(a){(r=stripeStore.fetchingLandedCostAbordController)===null||r===void 0?void 0:r.abort();stripeStore.fetchingLandedCostAbordController=null}if(!(n&&i&&(a||!stripeStore.isFetchingLandedCost)))return[3,5];stripeStore.isFetchingLandedCost=true;if(stripeStore.stripeAddressEventData){stripeStore.stripeAddressUsedWhenFetchingLC=Object.assign({},stripeStore.stripeAddressEventData)}if(stripeStore.stripeLinkEventData){stripeStore.stripeLinkUsedWhenFetchingLC=Object.assign({},stripeStore.stripeLinkEventData)}v.label=1;case 1:v.trys.push([1,3,,4]);s=new AbortController;stripeStore.fetchingLandedCostAbordController=s;return[4,calculateLandedCost(s)];case 2:c=v.sent(),l=c.checkoutSessionWorkflow,d=c.shipmentRatingCalculateWorkflow;stripeStore.fetchingLandedCostAbordController=null;cartStore.landedCostData=(l===null||l===void 0?void 0:l.filter(Boolean))||null;cartStore.shippingData=(d===null||d===void 0?void 0:d.filter(Boolean))||null;u=(o=cartStore.landedCostData)===null||o===void 0?void 0:o.find(Boolean);p=!!u?u.subtotals:null;if(p){cartStoreApplySubtotals({exchangeRate:p.exchangeRate,items:p.items,landedCostTotal:0,presentmentCurrencyCode:p.presentmentCurrencyCode,shipping:0,total:p.items})}return[3,4];case 3:S=v.sent();logError(S);return[3,4];case 4:stripeStore.isFetchingLandedCost=false;v.label=5;case 5:return[2]}}))}))};var getStripeMessageBasedOnStatus=function(e){var t=[];var r=true;switch(e){case"succeeded":{t=[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."),"","",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.")];r=false;break}case"requires_capture":case"processing":{t=[translate("Payment processing. We'll update you when payment is received.")];r=false;break}case"requires_payment_method":{t=[translate("Payment failed. Please try another payment method.")];break}default:{t=[translate("Something went wrong.")];break}}return{isError:r,messages:t}};var stripeStoreRetrievePayment=function(e){var t=e.clientSecret,r=e.storybookForceStatus;return __awaiter(void 0,void 0,void 0,(function(){var e,o,n,i,a,s,c,l,d;return __generator(this,(function(u){switch(u.label){case 0:if(r){e=getStripeMessageBasedOnStatus(r),o=e.isError,n=e.messages;return[2,{error:o,messages:n}]}i=t||stripeStore.clientSecret;if(!stripeStore.stripe||!i){logError("Failed to retrieve payment intent. Stripe is not initialized");return[2,{error:true,message:[translate("Something went wrong.")]}]}return[4,stripeStore.stripe.retrievePaymentIntent(i)];case 1:a=u.sent().paymentIntent;s=a===null||a===void 0?void 0:a.status;c=getStripeMessageBasedOnStatus(s),l=c.isError,d=c.messages;return[2,{error:l,messages:d}]}}))}))};var stripeStoreConfirmPayment=function(){return __awaiter(void 0,void 0,void 0,(function(){var e,t,r,o,n,i,a,s;return __generator(this,(function(c){switch(c.label){case 0:o=!!((e=stripeStore.stripePaymentEventData)===null||e===void 0?void 0:e.complete);n=stripeStore.stripeElements;i=stripeStore.stripe;a=stripeStore.clientSecret;if(!(i&&n&&o&&a))return[3,2];return[4,i.confirmPayment({confirmParams:{receipt_email:(r=(t=stripeStore.stripeLinkEventData)===null||t===void 0?void 0:t.value)===null||r===void 0?void 0:r.email,return_url:window.location.href},elements:n,redirect:"if_required"})];case 1:s=c.sent().error;if(s){if(s.type==="card_error"||s.type==="validation_error"){throw new Error(s.message)}if(s.type==="invalid_request_error"){if(s.code==="payment_intent_unexpected_state"){return[2]}}throw new Error("An unexpected error occurred.")}c.label=2;case 2:return[2]}}))}))};var stripeStoreInitCheckoutSession=function(){return __awaiter(void 0,void 0,void 0,(function(){var e,t,r,o,n,i;return __generator(this,(function(a){switch(a.label){case 0:t=cartStore.items.reduce((function(e,t){return e+t.amount*t.quantity}),0);if(!t||!localizationStore.targetCurrency){logError("Fail to create checkout session - invalid total or currency");return[2,false]}stripeStore.isFetchingSession=true;return[4,handleFetch("".concat("https://v1.route.js.zonos.com","/api/create-checkout-session"),{body:{currency:((e=cartStore.items.find(Boolean))===null||e===void 0?void 0:e.currencyCode)||"",itemsAmount:t,presentmentCountryCode:localizationStore.selectedCountryCode||null},method:"POST"})];case 1:r=a.sent(),o=r.errors,n=r.json;stripeStore.isFetchingSession=false;if(o.length||!n){logError("Error occurs when creating checkout session",JSON.stringify(o,null,2));return[2,false]}i=n.checkoutSessionCreate;stripeStore.clientSecret=i.clientSecret;cartStore.checkoutSessionId=i.id;cartStoreApplySubtotals(Object.assign(Object.assign({},i.subtotals),{landedCostTotal:0,shipping:0,total:i.subtotals.items}));log("Exchange rate updated for cart items (checkout session create)","info",cartStore.exchangeRate);log("done-init-checkout-session");return[2,true]}}))}))};var stripeStoreUpdateCheckoutSession=function(e){var t=e.currency,r=e.id,o=e.itemsAmount,n=e.landedCostId,i=e.presentmentCountryCode;return __awaiter(void 0,void 0,void 0,(function(){var e,a,s;return __generator(this,(function(c){switch(c.label){case 0:return[4,handleFetch("".concat("https://v1.route.js.zonos.com","/api/update-checkout-session"),{body:{currency:t,id:r,itemsAmount:o,landedCostId:n,presentmentCountryCode:i},method:"POST"})];case 1:e=c.sent(),a=e.errors,s=e.json;if(a.length||!s){logError("Error occurs when updating checkout session",JSON.stringify(a,null,2));return[2,{errors:a,json:s}]}return[2,{errors:[],json:s}]}}))}))};onChange$1("clientSecret",(function(e){if(e&&stripeStore.stripe){sessionStorage.setItem("zonos--client-secret",e)}if(!e){sessionStorage.removeItem("zonos--client-secret")}}));var formatDate=function(e){var t=e.date,r=e.formatOptions,o=r===void 0?{day:"numeric",weekday:"long",year:"numeric"}:r;return new Intl.DateTimeFormat("en-US",o).format(t)};var getDaysDifference=function(e){var t=new Date;var r=e.getTime()-t.getTime();var o=Math.floor(r/(1e3*60*60*24));return o};var _g=createStore((function(){return{checkoutSessionId:sessionStorage.getItem("zonos--checkout-session-id")||null,currency:"USD",dutiesTaxFees:0,error:null,exchangeRate:null,isSelectedShippingAboveDeminimis:false,isSelectedShippingGuarantee:false,items:[],landedCostData:null,selectedLandedCost:null,selectedShippingOption:null,selectedShippingOptionExpectedDate:"",selectedShippingOptionTransitTime:"",shipping:0,shippingData:null,step:"customer-info",subtotal:0,total:0}})),onChange=_g.onChange,reset=_g.reset,cartStore=_g.state;var cartStoreGetShippingTransitInfo=function(e){var t=e.minTransitAt?getDaysDifference(new Date(e.minTransitAt)):"";var r=e.maxTransitAt?getDaysDifference(new Date(e.maxTransitAt)):"";var o=e.minTransitAt?formatDate({date:new Date(e.minTransitAt)}):"";return{expectedDate:o,maxTransit:r,minTransit:t}};var cartStoreReset=function(){sessionStorage.removeItem("zonos--checkout-session-id");reset()};var cartStoreUpdateToErrorState=function(e){var t=e.messages,r=e.title;cartStore.step="error";cartStore.error={messages:t,title:r}};var cartStoreApplySubtotals=function(e){cartStore.exchangeRate=e.exchangeRate;cartStore.dutiesTaxFees=e.landedCostTotal;cartStore.subtotal=e.items;cartStore.total=e.total;cartStore.currency=e.presentmentCurrencyCode};var cartStoreReCalculateTotal=function(e){var t=e.currency,r=e.itemsAmount,o=e.landedCostId;return __awaiter(void 0,void 0,void 0,(function(){var e,n;return __generator(this,(function(i){switch(i.label){case 0:if(o&&cartStore.selectedLandedCost){e=cartStore.selectedLandedCost.subtotals;cartStoreApplySubtotals(e);log("Exchange rate updated for cart items (landed cost subtotal)","info",cartStore.exchangeRate)}if(!cartStore.checkoutSessionId){logError("Could update cart total without checkout session id");return[2,false]}return[4,stripeStoreUpdateCheckoutSession({currency:t,id:cartStore.checkoutSessionId,itemsAmount:r,landedCostId:o,presentmentCountryCode:localizationStore.selectedCountryCode})];case 1:n=i.sent().json;if(!n){logError("Error occurs when updating checkout session");cartStoreUpdateToErrorState({messages:[translate("There's been an error updating your checkout session. Please reload and try again or contact support if the error persists")],title:translate("Error updating Checkout")});return[2,false]}if(!o){cartStoreApplySubtotals(n.checkoutSessionUpdate.subtotals);log("Exchange rate updated for cart items (checkout session update)","info",cartStore.exchangeRate)}return[2,true]}}))}))};var cartStoreUpdateSelectedShippingOption=function(e){return __awaiter(void 0,void 0,void 0,(function(){var t,r,o,n,i,a,s,c,l,d,u,p,S;return __generator(this,(function(v){switch(v.label){case 0:cartStore.selectedShippingOption=e;a=cartStoreGetShippingTransitInfo(cartStore.selectedShippingOption),s=a.expectedDate,c=a.maxTransit,l=a.minTransit;cartStore.selectedShippingOptionExpectedDate=s;cartStore.selectedShippingOptionTransitTime=l&&c?"".concat(l,"-").concat(c):"".concat(l||c);d=(t=cartStore.landedCostData)===null||t===void 0?void 0:t.find((function(e){var t,r,o;return((r=(t=e.landedCost)===null||t===void 0?void 0:t.shipmentRating)===null||r===void 0?void 0:r.id)===((o=cartStore.selectedShippingOption)===null||o===void 0?void 0:o.id)}));cartStore.selectedLandedCost=d||null;if(!d){return[2,false]}cartStore.shipping=d.subtotals.shipping;u=((r=d===null||d===void 0?void 0:d.landedCost)===null||r===void 0?void 0:r.landedCostGuaranteeCode)==="ZONOS";p=!!((n=(o=d===null||d===void 0?void 0:d.landedCost)===null||o===void 0?void 0:o.deMinimis)===null||n===void 0?void 0:n.find((function(e){return["DUTY","TAX"].includes(e.type)&&e.threshold==="ABOVE"})));cartStore.isSelectedShippingAboveDeminimis=p;cartStore.isSelectedShippingGuarantee=u;return[4,cartStoreReCalculateTotal({landedCostId:(i=d.landedCost)===null||i===void 0?void 0:i.id})];case 1:S=v.sent();return[2,S]}}))}))};onChange("checkoutSessionId",(function(){if(!cartStore.checkoutSessionId){sessionStorage.removeItem("zonos--checkout-session-id");return}sessionStorage.setItem("zonos--checkout-session-id",cartStore.checkoutSessionId)}));var cartStoreUpdateItems=function(e){return __awaiter(void 0,void 0,void 0,(function(){var t,r,o;return __generator(this,(function(n){switch(n.label){case 0:cartStore.items=e;r=(t=e.find(Boolean))===null||t===void 0?void 0:t.currencyCode;o=e.reduce((function(e,t){return e+t.amount*t.quantity}),0);if(!r||!o){return[2]}cartStore.currency=r;stripeStore.isFetchingSession=true;return[4,cartStoreReCalculateTotal({currency:r,itemsAmount:o})];case 1:n.sent();stripeStore.isFetchingSession=false;return[2]}}))}))};var cartStoreResetSelectedShippingOption=function(){cartStore.selectedShippingOption=null;cartStore.isSelectedShippingAboveDeminimis=false;cartStore.isSelectedShippingGuarantee=false;cartStore.selectedShippingOptionExpectedDate="";cartStore.selectedShippingOptionTransitTime="";cartStore.shipping=0};var cartStoreNextStep=function(){if(cartStore.step==="customer-info"){cartStore.step="shipping"}else if(cartStore.step==="shipping"){cartStore.step="payment"}else if(cartStore.step==="payment"){cartStore.step="finish"}};var cartStorePreviousStep=function(){if(cartStore.step==="payment"){cartStore.step="shipping"}else if(cartStore.step==="shipping"){cartStore.step="customer-info";cartStoreResetSelectedShippingOption()}};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,initStripeElements as k,stripeStoreInitCheckoutSession as l,stripeStorePrefetchLandedCost as m,stripeStoreConfirmPayment as n,stripeStoreReset as o,stripeStoreRetrievePayment as p,stripeStore as s};
@@ -1 +1 @@
1
- export{c as cartStore,a as cartStoreApplySubtotals,b as cartStoreGetShippingTransitInfo,d as cartStoreNextStep,e as cartStorePreviousStep,f as cartStoreReCalculateTotal,g as cartStoreReset,h as cartStoreUpdateItems,i as cartStoreUpdateSelectedShippingOption,j as cartStoreUpdateToErrorState}from"./cart-07091d2a.js";import"./zonosStore-05a62104.js";import"./index-d1aa9293.js";import"./localization-b3c2a9a9.js";import"./isDarkColor-6fbb9b14.js";import"./getBorderRadius-45764ad7.js";
1
+ export{c as cartStore,a as cartStoreApplySubtotals,b as cartStoreGetShippingTransitInfo,d as cartStoreNextStep,e as cartStorePreviousStep,f as cartStoreReCalculateTotal,g as cartStoreReset,h as cartStoreUpdateItems,i as cartStoreUpdateSelectedShippingOption,j as cartStoreUpdateToErrorState}from"./cart-17650017.js";import"./zonosStore-05a62104.js";import"./index-d1aa9293.js";import"./localization-f3828793.js";import"./isDarkColor-6fbb9b14.js";import"./getBorderRadius-45764ad7.js";