@zonos/elements 1.4.2 → 1.5.0
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.
- package/dist/cjs/index.cjs.js +7 -7
- package/dist/cjs/zonos-cart-items_12.cjs.entry.js +66 -3
- package/dist/cjs/zonos-checkout.cjs.entry.js +20 -10
- package/dist/collection/components/checkout/zonos-checkout/zonos-cart-items/zonos-cart-items.css +10 -0
- package/dist/collection/components/checkout/zonos-checkout/zonos-cart-items/zonos-cart-items.js +6 -2
- package/dist/collection/components/checkout/zonos-checkout/zonos-checkout.js +7 -10
- package/dist/collection/components/utils/checkout/isHostedVsNativeTestAllowed.js +13 -0
- package/dist/collection/components/utils/checkout/itemCustomization.js +53 -0
- package/dist/collection/components/utils/checkout/parseItemCustomizations.js +6 -0
- package/dist/collection/types/checkout/itemCustomization.js +1 -0
- package/dist/collection/types/index.js +1 -0
- package/dist/esm/index.js +7 -7
- package/dist/esm/zonos-cart-items_12.entry.js +66 -3
- package/dist/esm/zonos-checkout.entry.js +20 -10
- package/dist/esm-es5/index.js +4 -4
- package/dist/esm-es5/zonos-cart-items_12.entry.js +23 -10
- package/dist/esm-es5/zonos-checkout.entry.js +6 -6
- package/dist/scripts/index.js +1 -1
- package/dist/scripts/loadZonos.js +1 -1
- package/dist/scripts/zonos.js +1 -1
- package/dist/types/components/utils/checkout/isHostedVsNativeTestAllowed.d.ts +11 -0
- package/dist/types/components/utils/checkout/itemCustomization.d.ts +23 -0
- package/dist/types/components/utils/checkout/parseItemCustomizations.d.ts +7 -0
- package/dist/types/types/checkout/itemCustomization.d.ts +4 -0
- package/dist/types/types/index.d.ts +1 -0
- package/dist/zonos-elements/index.esm.js +1 -1
- package/dist/zonos-elements/p-30b3c9d3.entry.js +1 -0
- package/dist/zonos-elements/p-5873ab8e.entry.js +1 -0
- package/dist/zonos-elements/{p-be1237fc.system.entry.js → p-7f031592.system.entry.js} +55 -55
- package/dist/zonos-elements/p-Bu9WCfUC.system.js +1 -1
- package/dist/zonos-elements/{p-DCS8qcL6.system.js → p-CXxvn4GX.system.js} +4 -4
- package/dist/zonos-elements/{p-5016d71b.system.entry.js → p-d82fd8a9.system.entry.js} +68 -54
- package/dist/zonos-elements/zonos-elements.esm.js +1 -1
- package/item-customization.d.ts +25 -0
- package/item-customization.js +52 -0
- package/package.json +7 -4
- package/dist/zonos-elements/p-0457f579.entry.js +0 -1
- package/dist/zonos-elements/p-34656e6c.entry.js +0 -1
|
@@ -1,4 +1,17 @@
|
|
|
1
|
-
var __awaiter=this&&this.__awaiter||function(o,t,e,s){function n(o){return o instanceof e?o:new e((function(t){t(o)}))}return new(e||(e=Promise))((function(e,r){function i(o){try{l(s.next(o))}catch(o){r(o)}}function a(o){try{l(s["throw"](o))}catch(o){r(o)}}function l(o){o.done?e(o.value):n(o.value).then(i,a)}l((s=s.apply(o,t||[])).next())}))};var __generator=this&&this.__generator||function(o,t){var e={label:0,sent:function(){if(r[0]&1)throw r[1];return r[1]},trys:[],ops:[]},s,n,r,i=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return i.next=a(0),i["throw"]=a(1),i["return"]=a(2),typeof Symbol==="function"&&(i[Symbol.iterator]=function(){return this}),i;function a(o){return function(t){return l([o,t])}}function l(a){if(s)throw new TypeError("Generator is already executing.");while(i&&(i=0,a[0]&&(e=0)),e)try{if(s=1,n&&(r=a[0]&2?n["return"]:a[0]?n["throw"]||((r=n["return"])&&r.call(n),0):n.next)&&!(r=r.call(n,a[1])).done)return r;if(n=0,r)a=[a[0]&2,r.value];switch(a[0]){case 0:case 1:r=a;break;case 4:e.label++;return{value:a[1],done:false};case 5:e.label++;n=a[1];a=[0];continue;case 7:a=e.ops.pop();e.trys.pop();continue;default:if(!(r=e.trys,r=r.length>0&&r[r.length-1])&&(a[0]===6||a[0]===2)){e=0;continue}if(a[0]===3&&(!r||a[1]>r[0]&&a[1]<r[3])){e.label=a[1];break}if(a[0]===6&&e.label<r[1]){e.label=r[1];r=a;break}if(r&&e.label<r[2]){e.label=r[2];e.ops.push(a);break}if(r[2])e.ops.pop();e.trys.pop();continue}a=t.call(o,e)}catch(o){a=[6,o];n=0}finally{s=r=0}if(a[0]&5)throw a[1];return{value:a[0]?a[1]:void 0,done:true}}};var __spreadArray=this&&this.__spreadArray||function(o,t,e){if(e||arguments.length===2)for(var s=0,n=t.length,r;s<n;s++){if(r||!(s in t)){if(!r)r=Array.prototype.slice.call(t,0,s);r[s]=t[s]}}return o.concat(r||Array.prototype.slice.call(t))};import{r as registerInstance,e as getAssetPath,h,a as Host,F as Fragment,d as createEvent,g as getElement}from"./index-_lt63o7c.js";import{d as cartStore,L as cartStoreHasOneEligibleItem,M as isEuDapRemittance,m as cartStoreIsOrderModificationPaymentOnlySession,N as stripeStoreApplyPromoCode,O as stripeStoreRemovePromoCode,b as stripeStore,H as stripeStoreReset,c as stripeStoreRetrievePayment,t as trackConversionEvent,P as stripeStoreResetPromoCode,Q as stripeStoreMessageBasedOnStatus,R as storeCreditStore,S as storeCreditStoreReset,B as storeCreditStoreCoversFullAmount,y as isPolicyConsentRequired,G as policyConsentStore,T as stripeStoreRecordPolicyConsent,x as cartStoreNextStep,U as extractName,V as stripeStoreTranslateAddressToLatin,I as cartStoreOnChange,W as getCountryField,X as stripeStoreAsyncAddressUpdate,Y as cartStoreUpdateSelectedShippingOption,Z as cartStoreGetShippingTransitInfo,_ as cartStoreGetMethod,$ as sortServiceLevelOptionsByAmount}from"./cart-BoQp8Ema.js";import{t as translate,l as localizationStore,s as storageStore,k as languages,w as getExchangeRate,x as numberFormat,h as localizationStoreOnChange}from"./localization-BIh-4pc_.js";import{r as renderCheckoutCurrency}from"./renderCheckoutCurrency-C2Tw73uR.js";import{c as cleanHtmlMarkdown}from"./cleanHtmlMarkdown-ByGDytaN.js";import{c as classes}from"./classes-BJHSB96f.js";import{z as zonosStore,c as createStore,d as zonosStoreOnChange,g as getZonosStoreTheme,a as zonosStoreFontFamily}from"./zonosStore-msUlqmSD.js";import{D as DUTY_KEY,T as TAXES_KEY,h as hasInclusivePrice}from"./hasInclusivePrice-CbEfIhI5.js";import{i as isSameHostCheckoutLink}from"./isSameHostCheckoutLink-BxAHnL5J.js";import{s as submitAnalytics,c as paypalStoreReset,a as paypalStore}from"./paypal-DNfvnuUU.js";import{h as handleFetch,s as sendErrorLog,j as jsonParse,g as getIsTestMode,i as isCheckoutMobile,a as getIsStagingMode,l as logError}from"./handleFetch-D5GYDF-O.js";import{c as createCustomEvent}from"./createCustomEvent-XQfWgQLB.js";import{g as getBorderRadius}from"./getBorderRadius-DYfkeXdx.js";import{l as log,b as allLogs}from"./VarianceTest-BJmZPrZl.js";import{s as shouldShowLanguageSelect}from"./shouldShowLanguageSelect-CCD7gpSY.js";import{p as placeTestOrder}from"./placeTestOrder-CQaMKFOg.js";import{i as isDarkColor}from"./isDarkColor-YdrG78th.js";import{g as getContrastColor}from"./getContrastColor-CfCPlW9U.js";import{i as isColorVariable}from"./isColorVariable-DXXUq2Lv.js";import{u as updateCheckoutSessionAttributes}from"./updateCheckoutSessionAttributes-4Jq6V4pO.js";import{g as getMissingRequiredShippingFields}from"./getMissingRequiredShippingFields-Ks6_tpjn.js";import{c as containsNonLatinChars}from"./containsNonLatinChars-C04AWRC2.js";import{s as shouldRenderShortAddressCodeInput,a as shouldRenderTaxIdInput}from"./shouldRenderTaxIdInput-CKyZ6Zni.js";import{e as euCountryCodes}from"./TaxId-Cye-evFK.js";import"./isContrastColor-CWLU13s9.js";import"./submitGtag-df9AQ2zL.js";import"./debounce-CrmpwbEE.js";import"./debounce-BR3PaG8X.js";import"./ShortAddressCode-nJ6oI8-n.js";var zonosCartItemsCss=function(){return":host{font-family:var(--zonos--font-family, Inter), Inter;display:block;white-space:normal}:host *{font-family:var(--zonos--font-family, Inter), Inter}: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 .zonos--cart-table{width:100%;border:none;border-collapse:collapse;overflow:auto;font-size:var(--zonos-elements-font-size-base)}:host .zonos--cart-table .zonos--column{padding:8px;font-size:var(--zonos-elements-font-size-base)}:host .zonos--cart-table .zonos--column:last-child{text-align:right}:host .zonos--cart-table .zonos--column:first-child{width:60px}:host .zonos--cart-table td{vertical-align:top}:host .zonos--cart-item-name{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:12px}:host .zonos--cart-item-name .zonos--cart-item-quantity>*{display:inline-block}:host .zonos--cart-item-price zonos-text{white-space:nowrap}:host img{min-width:40px;margin-top:6px}"};var ZonosCartItems=/** @class */function(){function o(o){registerInstance(this,o);this.errorImages=[]}o.prototype.render=function(){var o=this;var t=getAssetPath("./assets/empty-item.jpeg");var e=cartStore.items.filter((function(o){return!o.isRestricted}));return h(Host,{key:"2f81af1b6315853352a29bacaa230d782e76115a",class:"zonos--cart-items zonos--elements"},h("table",{key:"7fe64f09729e0791605cdd8e66d7230ab162c7cf",class:"zonos--cart-table"},h("tbody",{key:"49c17b5c7c68bfd41b2d8fabbbf4c3c764faba33"},e.map((function(e){var s=e.imageUrl;var n=cleanHtmlMarkdown(e.name);var r=e.amount*e.quantity;return h("tr",{class:"zonos--cart-item"},h("td",{class:"zonos--column zonos--cart-item-image"},s&&!o.errorImages.includes(s)?h("img",{alt:e.name,onError:function(){o.errorImages=__spreadArray(__spreadArray([],o.errorImages,true),[s],false)},src:e.imageUrl,style:{"min-width":"40px"},width:40}):h("img",{alt:e.name,src:t,width:40})),h("td",{class:"zonos--column zonos--cart-item-name"},h("div",null,n.map((function(o){return h("zonos-text",{type:"label"},o)}))),h("zonos-text",{textColor:"gray-600",type:"caption"},translate("Quantity"),": ",e.quantity)),h("td",{class:"zonos--column zonos--cart-item-price"},h("zonos-text",{type:"semiBoldLabel",weight:600},renderCheckoutCurrency({amount:r,isForeign:false}))))})))))};Object.defineProperty(o,"assetsDirs",{get:function(){return["assets"]},enumerable:false,configurable:true});return o}();ZonosCartItems.style=zonosCartItemsCss();var ChevronUpIcon$2='<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n<g filter="url(#filter0_dd_2052_3658)">\n<path fill-rule="evenodd" clip-rule="evenodd" d="M7.46967 14.5303C7.76256 14.8232 8.23744 14.8232 8.53033 14.5303L12.5 10.5607L16.4697 14.5303C16.7626 14.8232 17.2374 14.8232 17.5303 14.5303C17.8232 14.2374 17.8232 13.7626 17.5303 13.4697L13.0303 8.96967C12.7374 8.67678 12.2626 8.67678 11.9697 8.96967L7.46967 13.4697C7.17678 13.7626 7.17678 14.2374 7.46967 14.5303Z" fill="currentColor"/>\n</g>\n<defs>\n<filter id="filter0_dd_2052_3658" x="-3.5" y="-2" width="32" height="32" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">\n<feFlood flood-opacity="0" result="BackgroundImageFix"/>\n<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>\n<feOffset dy="2"/>\n<feGaussianBlur stdDeviation="2"/>\n<feComposite in2="hardAlpha" operator="out"/>\n<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06 0"/>\n<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_2052_3658"/>\n<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>\n<feOffset dy="1"/>\n<feGaussianBlur stdDeviation="1"/>\n<feComposite in2="hardAlpha" operator="out"/>\n<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04 0"/>\n<feBlend mode="normal" in2="effect1_dropShadow_2052_3658" result="effect2_dropShadow_2052_3658"/>\n<feBlend mode="normal" in="SourceGraphic" in2="effect2_dropShadow_2052_3658" result="shape"/>\n</filter>\n</defs>\n</svg>\n';var zonosCartRestrictedItemsCss=function(){return':host{font-family:var(--zonos--font-family, Inter), Inter;display:block;white-space:normal}:host *{font-family:var(--zonos--font-family, Inter), Inter}: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{overflow:auto;position:relative}:host zonos-banner{margin-bottom:12px}:host .zonos--cart-title-collapse-trigger{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;gap:24px;-ms-flex-align:center;align-items:center;background:var(--zonos-elements-gray-0);width:100%;border:none;cursor:pointer;margin-bottom:16px;position:-webkit-sticky;position:sticky;top:0;z-index:1;-webkit-transition:0.5s all ease;transition:0.5s all ease}:host .zonos--cart-title-collapse-trigger zonos-icon{-webkit-transition:-webkit-transform 0.3s ease;transition:-webkit-transform 0.3s ease;transition:transform 0.3s ease;transition:transform 0.3s ease, -webkit-transform 0.3s ease}:host .zonos--cart-title-collapse-trigger.collapsed{margin-bottom:0}:host .zonos--cart-title-collapse-trigger.collapsed zonos-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}:host .zonos--cart-title-collapse-trigger::before,:host .zonos--cart-title-collapse-trigger::after{content:"";display:block;width:80%;height:1px;background-color:var(--zonos-elements-border-color);-ms-flex-negative:1;flex-shrink:1}:host .zonos--cart-title-collapse-trigger .zonos--title-wrapper{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:row;flex-direction:row;gap:8px;-ms-flex-align:center;align-items:center}:host .zonos--cart-table{opacity:0.5;width:100%;border:none;border-collapse:collapse;overflow:auto;font-size:var(--zonos-elements-font-size-base)}:host .zonos--cart-table .zonos--column{padding:8px;font-size:var(--zonos-elements-font-size-base)}:host .zonos--cart-table .zonos--column:last-child{text-align:right}:host .zonos--cart-table .zonos--column:first-child{width:60px}:host img{min-width:40px}:host(.collapsed){-ms-flex-negative:0;flex-shrink:0}'};var ZonosCartRestrictedItems=/** @class */function(){function o(o){registerInstance(this,o);
|
|
1
|
+
var __awaiter=this&&this.__awaiter||function(o,t,e,s){function n(o){return o instanceof e?o:new e((function(t){t(o)}))}return new(e||(e=Promise))((function(e,r){function i(o){try{l(s.next(o))}catch(o){r(o)}}function a(o){try{l(s["throw"](o))}catch(o){r(o)}}function l(o){o.done?e(o.value):n(o.value).then(i,a)}l((s=s.apply(o,t||[])).next())}))};var __generator=this&&this.__generator||function(o,t){var e={label:0,sent:function(){if(r[0]&1)throw r[1];return r[1]},trys:[],ops:[]},s,n,r,i=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return i.next=a(0),i["throw"]=a(1),i["return"]=a(2),typeof Symbol==="function"&&(i[Symbol.iterator]=function(){return this}),i;function a(o){return function(t){return l([o,t])}}function l(a){if(s)throw new TypeError("Generator is already executing.");while(i&&(i=0,a[0]&&(e=0)),e)try{if(s=1,n&&(r=a[0]&2?n["return"]:a[0]?n["throw"]||((r=n["return"])&&r.call(n),0):n.next)&&!(r=r.call(n,a[1])).done)return r;if(n=0,r)a=[a[0]&2,r.value];switch(a[0]){case 0:case 1:r=a;break;case 4:e.label++;return{value:a[1],done:false};case 5:e.label++;n=a[1];a=[0];continue;case 7:a=e.ops.pop();e.trys.pop();continue;default:if(!(r=e.trys,r=r.length>0&&r[r.length-1])&&(a[0]===6||a[0]===2)){e=0;continue}if(a[0]===3&&(!r||a[1]>r[0]&&a[1]<r[3])){e.label=a[1];break}if(a[0]===6&&e.label<r[1]){e.label=r[1];r=a;break}if(r&&e.label<r[2]){e.label=r[2];e.ops.push(a);break}if(r[2])e.ops.pop();e.trys.pop();continue}a=t.call(o,e)}catch(o){a=[6,o];n=0}finally{s=r=0}if(a[0]&5)throw a[1];return{value:a[0]?a[1]:void 0,done:true}}};var __spreadArray=this&&this.__spreadArray||function(o,t,e){if(e||arguments.length===2)for(var s=0,n=t.length,r;s<n;s++){if(r||!(s in t)){if(!r)r=Array.prototype.slice.call(t,0,s);r[s]=t[s]}}return o.concat(r||Array.prototype.slice.call(t))};import{r as registerInstance,e as getAssetPath,h,a as Host,F as Fragment,d as createEvent,g as getElement}from"./index-_lt63o7c.js";import{d as cartStore,L as cartStoreHasOneEligibleItem,M as isEuDapRemittance,m as cartStoreIsOrderModificationPaymentOnlySession,N as stripeStoreApplyPromoCode,O as stripeStoreRemovePromoCode,b as stripeStore,H as stripeStoreReset,c as stripeStoreRetrievePayment,t as trackConversionEvent,P as stripeStoreResetPromoCode,Q as stripeStoreMessageBasedOnStatus,R as storeCreditStore,S as storeCreditStoreReset,B as storeCreditStoreCoversFullAmount,y as isPolicyConsentRequired,G as policyConsentStore,T as stripeStoreRecordPolicyConsent,x as cartStoreNextStep,U as extractName,V as stripeStoreTranslateAddressToLatin,I as cartStoreOnChange,W as getCountryField,X as stripeStoreAsyncAddressUpdate,Y as cartStoreUpdateSelectedShippingOption,Z as cartStoreGetShippingTransitInfo,_ as cartStoreGetMethod,$ as sortServiceLevelOptionsByAmount}from"./cart-BoQp8Ema.js";import{t as translate,l as localizationStore,s as storageStore,k as languages,w as getExchangeRate,x as numberFormat,h as localizationStoreOnChange}from"./localization-BIh-4pc_.js";import{r as renderCheckoutCurrency}from"./renderCheckoutCurrency-C2Tw73uR.js";import{c as cleanHtmlMarkdown}from"./cleanHtmlMarkdown-ByGDytaN.js";import{c as classes}from"./classes-BJHSB96f.js";import{z as zonosStore,c as createStore,d as zonosStoreOnChange,g as getZonosStoreTheme,a as zonosStoreFontFamily}from"./zonosStore-msUlqmSD.js";import{D as DUTY_KEY,T as TAXES_KEY,h as hasInclusivePrice}from"./hasInclusivePrice-CbEfIhI5.js";import{i as isSameHostCheckoutLink}from"./isSameHostCheckoutLink-BxAHnL5J.js";import{s as submitAnalytics,c as paypalStoreReset,a as paypalStore}from"./paypal-DNfvnuUU.js";import{h as handleFetch,s as sendErrorLog,j as jsonParse,g as getIsTestMode,i as isCheckoutMobile,a as getIsStagingMode,l as logError}from"./handleFetch-D5GYDF-O.js";import{c as createCustomEvent}from"./createCustomEvent-XQfWgQLB.js";import{g as getBorderRadius}from"./getBorderRadius-DYfkeXdx.js";import{l as log,b as allLogs}from"./VarianceTest-BJmZPrZl.js";import{s as shouldShowLanguageSelect}from"./shouldShowLanguageSelect-CCD7gpSY.js";import{p as placeTestOrder}from"./placeTestOrder-CQaMKFOg.js";import{i as isDarkColor}from"./isDarkColor-YdrG78th.js";import{g as getContrastColor}from"./getContrastColor-CfCPlW9U.js";import{i as isColorVariable}from"./isColorVariable-DXXUq2Lv.js";import{u as updateCheckoutSessionAttributes}from"./updateCheckoutSessionAttributes-4Jq6V4pO.js";import{g as getMissingRequiredShippingFields}from"./getMissingRequiredShippingFields-Ks6_tpjn.js";import{c as containsNonLatinChars}from"./containsNonLatinChars-C04AWRC2.js";import{s as shouldRenderShortAddressCodeInput,a as shouldRenderTaxIdInput}from"./shouldRenderTaxIdInput-CKyZ6Zni.js";import{e as euCountryCodes}from"./TaxId-Cye-evFK.js";import"./isContrastColor-CWLU13s9.js";import"./submitGtag-df9AQ2zL.js";import"./debounce-CrmpwbEE.js";import"./debounce-BR3PaG8X.js";import"./ShortAddressCode-nJ6oI8-n.js";
|
|
2
|
+
/**
|
|
3
|
+
* Import-free so `scripts/buildItemCustomization.mjs` can emit one module.
|
|
4
|
+
* demo-app imports the generated `item-customization.js`, not this file.
|
|
5
|
+
*/var ITEM_CUSTOMIZATION_ATTRIBUTE_KEY="itemCustomization";var isRecord=function(o){return typeof o==="object"&&o!==null&&!Array.isArray(o)};
|
|
6
|
+
/** Drops an empty name, a non-string value, and the unselected value "0". */var readDisplayableItemCustomization=function(o){if(!isRecord(o)){return null}var t=o.name;if(typeof t!=="string"||t===""){return null}var e=o.value;if(typeof e!=="string"||e==="0"){return null}return{name:t,value:e}};var parseJson=function(o){try{
|
|
7
|
+
// The generated package entry cannot import the shared jsonParse helper.
|
|
8
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
9
|
+
return JSON.parse(o)}catch(o){return null}};
|
|
10
|
+
/** Selected customization entries, with the original object for extra ids. */var readItemCustomizationEntries=function(o){var t;var e=(t=o===null||o===void 0?void 0:o.find((function(o){return(o===null||o===void 0?void 0:o.key)===ITEM_CUSTOMIZATION_ATTRIBUTE_KEY})))===null||t===void 0?void 0:t.value;if(!e){return[]}var s=parseJson(e);if(!Array.isArray(s)){return[]}return s.flatMap((function(o){var t=readDisplayableItemCustomization(o);if(!t||!isRecord(o)){return[]}return[{choice:t,raw:o}]}))};
|
|
11
|
+
/**
|
|
12
|
+
* Reads a cart row's `itemCustomization` attribute into display pairs.
|
|
13
|
+
* Unreadable data is an empty list.
|
|
14
|
+
*/var parseItemCustomizations=function(o){return readItemCustomizationEntries(o).map((function(o){return o.choice}))};var zonosCartItemsCss=function(){return":host{font-family:var(--zonos--font-family, Inter), Inter;display:block;white-space:normal}:host *{font-family:var(--zonos--font-family, Inter), Inter}: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 .zonos--cart-table{width:100%;border:none;border-collapse:collapse;overflow:auto;font-size:var(--zonos-elements-font-size-base)}:host .zonos--cart-table .zonos--column{padding:8px;font-size:var(--zonos-elements-font-size-base)}:host .zonos--cart-table .zonos--column:last-child{text-align:right}:host .zonos--cart-table .zonos--column:first-child{width:60px}:host .zonos--cart-table td{vertical-align:top}:host .zonos--cart-item-name{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:12px}:host .zonos--cart-item-name .zonos--cart-item-choices{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:4px;min-width:0}:host .zonos--cart-item-name .zonos--cart-item-choices zonos-text{overflow-wrap:break-word;white-space:normal}:host .zonos--cart-item-name .zonos--cart-item-quantity>*{display:inline-block}:host .zonos--cart-item-price zonos-text{white-space:nowrap}:host img{min-width:40px;margin-top:6px}"};var ZonosCartItems=/** @class */function(){function o(o){registerInstance(this,o);this.errorImages=[]}o.prototype.render=function(){var o=this;var t=getAssetPath("./assets/empty-item.jpeg");var e=cartStore.items.filter((function(o){return!o.isRestricted}));return h(Host,{key:"eeb10f76fbab43d256e6130fe2ab88a33c1598aa",class:"zonos--cart-items zonos--elements"},h("table",{key:"61ae44a57c1386f5ca6afb17c388ae9fcf29d8a1",class:"zonos--cart-table"},h("tbody",{key:"8471ae46186543cee754685e0182c4057d982967"},e.map((function(e){var s=e.imageUrl;var n=cleanHtmlMarkdown(e.name);var r=parseItemCustomizations(e.attributes);var i=e.amount*e.quantity;return h("tr",{class:"zonos--cart-item"},h("td",{class:"zonos--column zonos--cart-item-image"},s&&!o.errorImages.includes(s)?h("img",{alt:e.name,onError:function(){o.errorImages=__spreadArray(__spreadArray([],o.errorImages,true),[s],false)},src:e.imageUrl,style:{"min-width":"40px"},width:40}):h("img",{alt:e.name,src:t,width:40})),h("td",{class:"zonos--column zonos--cart-item-name"},h("div",null,n.map((function(o){return h("zonos-text",{type:"label"},o)}))),r.length>0&&h("div",{class:"zonos--cart-item-choices"},r.map((function(o){return h("zonos-text",{textColor:"gray-600",type:"caption"},o.value===""?o.name:"".concat(o.name,": ").concat(o.value))}))),h("zonos-text",{textColor:"gray-600",type:"caption"},translate("Quantity"),": ",e.quantity)),h("td",{class:"zonos--column zonos--cart-item-price"},h("zonos-text",{type:"semiBoldLabel",weight:600},renderCheckoutCurrency({amount:i,isForeign:false}))))})))))};Object.defineProperty(o,"assetsDirs",{get:function(){return["assets"]},enumerable:false,configurable:true});return o}();ZonosCartItems.style=zonosCartItemsCss();var ChevronUpIcon$2='<svg width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n<g filter="url(#filter0_dd_2052_3658)">\n<path fill-rule="evenodd" clip-rule="evenodd" d="M7.46967 14.5303C7.76256 14.8232 8.23744 14.8232 8.53033 14.5303L12.5 10.5607L16.4697 14.5303C16.7626 14.8232 17.2374 14.8232 17.5303 14.5303C17.8232 14.2374 17.8232 13.7626 17.5303 13.4697L13.0303 8.96967C12.7374 8.67678 12.2626 8.67678 11.9697 8.96967L7.46967 13.4697C7.17678 13.7626 7.17678 14.2374 7.46967 14.5303Z" fill="currentColor"/>\n</g>\n<defs>\n<filter id="filter0_dd_2052_3658" x="-3.5" y="-2" width="32" height="32" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">\n<feFlood flood-opacity="0" result="BackgroundImageFix"/>\n<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>\n<feOffset dy="2"/>\n<feGaussianBlur stdDeviation="2"/>\n<feComposite in2="hardAlpha" operator="out"/>\n<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.06 0"/>\n<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_2052_3658"/>\n<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>\n<feOffset dy="1"/>\n<feGaussianBlur stdDeviation="1"/>\n<feComposite in2="hardAlpha" operator="out"/>\n<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04 0"/>\n<feBlend mode="normal" in2="effect1_dropShadow_2052_3658" result="effect2_dropShadow_2052_3658"/>\n<feBlend mode="normal" in="SourceGraphic" in2="effect2_dropShadow_2052_3658" result="shape"/>\n</filter>\n</defs>\n</svg>\n';var zonosCartRestrictedItemsCss=function(){return':host{font-family:var(--zonos--font-family, Inter), Inter;display:block;white-space:normal}:host *{font-family:var(--zonos--font-family, Inter), Inter}: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{overflow:auto;position:relative}:host zonos-banner{margin-bottom:12px}:host .zonos--cart-title-collapse-trigger{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;gap:24px;-ms-flex-align:center;align-items:center;background:var(--zonos-elements-gray-0);width:100%;border:none;cursor:pointer;margin-bottom:16px;position:-webkit-sticky;position:sticky;top:0;z-index:1;-webkit-transition:0.5s all ease;transition:0.5s all ease}:host .zonos--cart-title-collapse-trigger zonos-icon{-webkit-transition:-webkit-transform 0.3s ease;transition:-webkit-transform 0.3s ease;transition:transform 0.3s ease;transition:transform 0.3s ease, -webkit-transform 0.3s ease}:host .zonos--cart-title-collapse-trigger.collapsed{margin-bottom:0}:host .zonos--cart-title-collapse-trigger.collapsed zonos-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}:host .zonos--cart-title-collapse-trigger::before,:host .zonos--cart-title-collapse-trigger::after{content:"";display:block;width:80%;height:1px;background-color:var(--zonos-elements-border-color);-ms-flex-negative:1;flex-shrink:1}:host .zonos--cart-title-collapse-trigger .zonos--title-wrapper{-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:row;flex-direction:row;gap:8px;-ms-flex-align:center;align-items:center}:host .zonos--cart-table{opacity:0.5;width:100%;border:none;border-collapse:collapse;overflow:auto;font-size:var(--zonos-elements-font-size-base)}:host .zonos--cart-table .zonos--column{padding:8px;font-size:var(--zonos-elements-font-size-base)}:host .zonos--cart-table .zonos--column:last-child{text-align:right}:host .zonos--cart-table .zonos--column:first-child{width:60px}:host img{min-width:40px}:host(.collapsed){-ms-flex-negative:0;flex-shrink:0}'};var ZonosCartRestrictedItems=/** @class */function(){function o(o){registerInstance(this,o);
|
|
2
15
|
/**
|
|
3
16
|
* This is to hide the section when the parent collapse on mobile
|
|
4
17
|
*/this.hide=false;this.errorImages=[];this.internalCollapsed=true;
|
|
@@ -74,7 +87,7 @@ var c=i.subtotals.exchangeRate.rate;var u=function(o){return o.reduce((function(
|
|
|
74
87
|
// subtotals (already in presentment currency) — this is what the shopper
|
|
75
88
|
// actually pays. Duties are not collected (paid on delivery), so they come
|
|
76
89
|
// from the landed cost estimate converted to presentment.
|
|
77
|
-
var
|
|
90
|
+
var d=(s=cartStore.checkoutSession)===null||s===void 0?void 0:s.subtotals;return{dutiesEstimate:u(a.duties)*c,taxesAndFeesEstimate:((n=d===null||d===void 0?void 0:d.taxes)!==null&&n!==void 0?n:0)+((r=d===null||d===void 0?void 0:d.fees)!==null&&r!==void 0?r:0)}}}o.prototype.render=function(){var o=this;var t,e,s,n,r;
|
|
78
91
|
// Since now we are prefetching the landed cost, we need to not show the total that includes the landed cost and shipping
|
|
79
92
|
var i=cartStore.step==="customer-info"?cartStore.subtotal+cartStore.adjustmentTotal:cartStore.total;
|
|
80
93
|
// Order-modification payment-only sessions have no landedCost at all
|
|
@@ -140,9 +153,9 @@ l.sent();return[2/*return*/,{baseUrl:r,order:a}]}}))}))};
|
|
|
140
153
|
/**
|
|
141
154
|
* The value of this parameter should be the sum of all item amounts in the transaction (without shipping and tax).
|
|
142
155
|
* @ref https://developers.google.com/analytics/devguides/collection/ga4/reference/events?client_type=gtag#parameters_22
|
|
143
|
-
*/var
|
|
156
|
+
*/var d=((n=cartStore.checkoutSession)===null||n===void 0?void 0:n.subtotals.items)||((r=t.order)===null||r===void 0?void 0:r.amountSubtotals.items);var h=((i=cartStore.checkoutSession)===null||i===void 0?void 0:i.subtotals.presentmentCurrencyCode)||((a=t.order)===null||a===void 0?void 0:a.currencyCode)||(s===null||s===void 0?void 0:s.toUpperCase());
|
|
144
157
|
// Cart subtotal amount, can be different on the final checkout session/payment intent, therefore only use it if the order/checkout session can not be found.
|
|
145
|
-
var p=u.reduce((function(o,t){return o+t.price*t.quantity}),0);var f=(l=cartStore.items.find(Boolean))===null||l===void 0?void 0:l.currencyCode;var m=((c=t.order)===null||c===void 0?void 0:c.id)||e||(new Date).getTime().toString();if(d
|
|
158
|
+
var p=u.reduce((function(o,t){return o+t.price*t.quantity}),0);var f=(l=cartStore.items.find(Boolean))===null||l===void 0?void 0:l.currencyCode;var m=((c=t.order)===null||c===void 0?void 0:c.id)||e||(new Date).getTime().toString();if(h&&d){return{currency:h,items:u,transaction_id:m,value:d}}
|
|
146
159
|
// Use cart currency and subtotal if the order/checkout session can not be found
|
|
147
160
|
if(f&&p){return{currency:f,items:u,transaction_id:m,value:p}}return{currency:undefined,items:u,transaction_id:m,value:undefined}};this.redirectToUrl=function(o){
|
|
148
161
|
// reset store and checkout session id before redirecting
|
|
@@ -154,8 +167,8 @@ if(window.parent){window.parent.location.href=o}window.location.href=o};this.isR
|
|
|
154
167
|
*/this.shouldRenderKeepShoppingButton=function(){return!t.isRedirectBehavior()&&t.notificationType==="success"};
|
|
155
168
|
/**
|
|
156
169
|
* Should render close button for redirect behavior when the success behavior is redirecting to a different page or when it's an error screen
|
|
157
|
-
*/this.shouldRenderCloseButtonForRedirectBehavior=function(){return t.isRedirectBehavior()||t.notificationType==="error"};this.redirectToMerchantSuccessPage=function(){var o,e,s,n;var r=cartStore.externalConfirmationPageURL||zonosStore.checkoutSettings.successRedirectUrl;var i=r;var a=new URLSearchParams;var l=(o=t.order)===null||o===void 0?void 0:o.id;var c=((n=(s=(e=t.order)===null||e===void 0?void 0:e.references)===null||s===void 0?void 0:s.find((function(o){return(o===null||o===void 0?void 0:o.key)==="zonosOrderNumber"})))===null||n===void 0?void 0:n.value)||null;if(l){a.set("zOrderNumber",l)}if(c){a.set("orderId",c)}var u=a.toString();var
|
|
158
|
-
"".concat(i).concat(
|
|
170
|
+
*/this.shouldRenderCloseButtonForRedirectBehavior=function(){return t.isRedirectBehavior()||t.notificationType==="error"};this.redirectToMerchantSuccessPage=function(){var o,e,s,n;var r=cartStore.externalConfirmationPageURL||zonosStore.checkoutSettings.successRedirectUrl;var i=r;var a=new URLSearchParams;var l=(o=t.order)===null||o===void 0?void 0:o.id;var c=((n=(s=(e=t.order)===null||e===void 0?void 0:e.references)===null||s===void 0?void 0:s.find((function(o){return(o===null||o===void 0?void 0:o.key)==="zonosOrderNumber"})))===null||n===void 0?void 0:n.value)||null;if(l){a.set("zOrderNumber",l)}if(c){a.set("orderId",c)}var u=a.toString();var d=i.includes("?");t.isWaitingToRedirect=true;t.redirectToUrl(u?// Some url already has query string, so we need to append the query string with '&' instead of '?'
|
|
171
|
+
"".concat(i).concat(d?"&":"?").concat(u):i)};
|
|
159
172
|
/**
|
|
160
173
|
* Immediately redirect to the merchant's successRedirectUrl with the
|
|
161
174
|
* zonosCheckoutSessionId query param, without polling for the order. Used
|
|
@@ -441,7 +454,7 @@ if(!e.length){return null}return h(Host,{class:"zonos--currency-toggle zonos--el
|
|
|
441
454
|
*/var applyAddressCompletion=function(o){var t=o.data,e=o.event;var s,n,r,i;
|
|
442
455
|
// Use the same name extraction as the detection step so the two stay in agreement even when
|
|
443
456
|
// the surname is only available via the combined `name` field.
|
|
444
|
-
var a=extractName({firstName:e.value.firstName,lastName:e.value.lastName,name:e.value.name}),l=a.firstName,c=a.lastName;var u=(s=t.firstName)!==null&&s!==void 0?s:l;var
|
|
457
|
+
var a=extractName({firstName:e.value.firstName,lastName:e.value.lastName,name:e.value.name}),l=a.firstName,c=a.lastName;var u=(s=t.firstName)!==null&&s!==void 0?s:l;var d=(n=t.lastName)!==null&&n!==void 0?n:c;return Object.assign(Object.assign({},e),{complete:true,value:Object.assign(Object.assign({},e.value),{address:Object.assign(Object.assign({},e.value.address),{postal_code:(r=t.postal_code)!==null&&r!==void 0?r:e.value.address.postal_code,state:(i=t.state)!==null&&i!==void 0?i:e.value.address.state}),firstName:u,lastName:d,name:"".concat(u," ").concat(d).trim()})})};var shortAddressCodeValidationResult=function(o){var t=o.shippingCountry,e=o.shortAddressCode;
|
|
445
458
|
// Check to see if we are required to collect short address code for the shipping country or not
|
|
446
459
|
var s=shouldRenderShortAddressCodeInput({countryCode:t});
|
|
447
460
|
// If the short address code input is not even rendered, no need to validate anything and allow to proceed. Validate when short address code input is not even rendered would prevent the user from checking out
|
|
@@ -560,7 +573,7 @@ var u=false;if(s||n||r||i||a||l||c){u=true}
|
|
|
560
573
|
if(t){stripeStore.customAddressErrors=Object.assign(Object.assign({},e),{showError:u})}else{stripeStore.customBillingAddressErrors=Object.assign(Object.assign({},e),{showError:u})}return{isValid:!u}};
|
|
561
574
|
/**
|
|
562
575
|
* Make sure all fields in the address are within the character limit
|
|
563
|
-
*/this.validateAddressLength=function(o){var t=o.address,e=o.type;if(!t){return[]}var s=t.value.address,n=s.city,r=s.line1,i=s.postal_code,a=s.state;var l=t.value,c=l.firstName,u=l.lastName,
|
|
576
|
+
*/this.validateAddressLength=function(o){var t=o.address,e=o.type;if(!t){return[]}var s=t.value.address,n=s.city,r=s.line1,i=s.postal_code,a=s.state;var l=t.value,c=l.firstName,u=l.lastName,d=l.name;var h=extractName({firstName:c,lastName:u,name:d}),p=h.firstName,f=h.lastName;var m=n.length;var v=r.length;var g=i.length;var z=a.length;var b=p.length;var y=f.length;var C=e==="shipping"?"shipping":"billing";var x=[];if(m>MAX_CHARACTER_LENGTH_PER_FIELD){x.push({addressType:C,fieldLabel:"City",value:n})}if(v>MAX_CHARACTER_LENGTH_PER_FIELD){x.push({addressType:C,fieldLabel:"Address line 1",value:r})}if(g>MAX_CHARACTER_LENGTH_PER_FIELD){x.push({addressType:C,fieldLabel:"Zip",value:i})}if(z>MAX_CHARACTER_LENGTH_PER_FIELD){x.push({addressType:C,fieldLabel:"State/Province/Region/Prefecture",value:a})}if(b>MAX_CHARACTER_LENGTH_PER_FIELD){x.push({addressType:C,fieldLabel:"First name",value:p})}if(y>MAX_CHARACTER_LENGTH_PER_FIELD){x.push({addressType:C,fieldLabel:"Last name",value:f})}return x};this.handleValidate=function(){var o,e;var s=stripeStore.stripeAddressEventData;var n=stripeStore.stripeBillingAddressEventData;var r=stripeStore.stripeLinkEventData;
|
|
564
577
|
// if the shipping is different from billing, we need to make sure the billing address is valid and disable the button if it's not
|
|
565
578
|
var i=stripeStore.stripeShippingSameAsBilling?!!(s===null||s===void 0?void 0:s.complete):!!(n===null||n===void 0?void 0:n.complete);var a=!!(s===null||s===void 0?void 0:s.complete);var l=!!(r===null||r===void 0?void 0:r.complete);
|
|
566
579
|
// display errors on fields that are invalid
|
|
@@ -570,7 +583,7 @@ var c=t.addressFormRenderType==="zonos"?t.validateCustomAddressForm("billing").i
|
|
|
570
583
|
// if the custom address form is enabled, use the custom address form validation result, otherwise use the stripe validation result
|
|
571
584
|
var u=t.addressFormRenderType==="zonos"?t.validateCustomAddressForm("shipping").isValid:a;if(!l&&(r===null||r===void 0?void 0:r.empty)){t.isEmailError=true}log("==> isValidBilling","info",c,{address:stripeStore.stripeBillingAddressEventData,errors:stripeStore.customBillingAddressErrors});log("==> isValidShipping","info",u,{address:stripeStore.stripeAddressEventData,errors:stripeStore.customAddressErrors});log("==> isValidLink","info",l);
|
|
572
585
|
// validate tax id input if it's required for specific countries, optional otherwise
|
|
573
|
-
var
|
|
586
|
+
var d=taxIdValidationResult({companyName:stripeStore.companyName,shippingCountry:t.shippingCountry,taxId:stripeStore.taxId}),h=d.error,p=d.valid;var f=shortAddressCodeValidationResult({shippingCountry:t.shippingCountry,shortAddressCode:stripeStore.shortAddressCode}),m=f.error,v=f.valid;t.taxIdErrorMessage=!p?translate(h):"";t.shortAddressCodeErrorMessage=!v?translate(m):"";var g=t.validateAddressLength({address:stripeStore.stripeAddressEventData,type:"shipping"});var z=t.validateAddressLength({address:stripeStore.stripeBillingAddressEventData,type:"billing"});t.exceededCharacterLimitErrorFieldList=__spreadArray(__spreadArray([],g,true),z,true);if(!c||!u||!l||!p||!v||t.exceededCharacterLimitErrorFieldList.length>0){return false}return true};this.handleEmailValidation=function(){var o;if(!t.isEmailError){return}if(!((o=stripeStore.stripeLinkEventData)===null||o===void 0?void 0:o.empty)){t.isEmailError=false}};this.prepareAddressObject=function(o){var t;var e=o.value;return{city:e.address.city||"",country:e.address.country,email:((t=stripeStore.stripeLinkEventData)===null||t===void 0?void 0:t.value.email)||"",line1:e.address.line1||"",line2:e.address.line2||"",name:e.name||"",phone:e.phone||"",postal_code:e.address.postal_code||"",state:e.address.state||""}};this.renderExceededCharacterLimitError=function(o){var e=t.exceededCharacterLimitErrorFieldList.filter((function(t){var e=t.addressType;return e===o}));if(!e.length){return null}return h("zonos-banner",{class:"zonos--error-banner",intent:"error",slot:"below-title"},h("ul",null,e.map((function(o){var t=o.fieldLabel,e=o.value;var s=t==="Address line 1";if(s){return h("li",{key:t},translate("[fieldLabel] is [currentLength] characters. Please shorten to [maxLength] or less or move the rest to address line 2.",{currentLength:e.length,fieldLabel:t,maxLength:MAX_CHARACTER_LENGTH_PER_FIELD}))}return h("li",{key:t},translate("[fieldLabel] is [currentLength] characters. Please shorten to [maxLength] or less.",{currentLength:e.length,fieldLabel:t,maxLength:MAX_CHARACTER_LENGTH_PER_FIELD}))}))))};this.renderAddressComponent=function(o){if(!t.selectedCountryCode){void sendErrorLog({endpoint:"NO_COUNTRY_SELECTED_WHEN_RENDERING_ADDRESS_COMPONENT",errors:["No country selected when rendering address component"],metadata:{type:o},shouldPostReleaseErrorReporting:true})}
|
|
574
587
|
// Only use the default address for shipping address
|
|
575
588
|
var e=o==="shipping"?t.defaultAddress:[];
|
|
576
589
|
// Should only record the form type used once
|
|
@@ -582,7 +595,7 @@ return h("zonos-address",{defaultAddress:e,shortAddressCodeErrorMessage:t.shortA
|
|
|
582
595
|
// start validate on typing after error banner is shown, and hide it if the form is complete
|
|
583
596
|
if(this.showErrorBanner){this.showErrorBanner=!this.handleValidate()}};o.prototype.checkInvalidCharacters=function(o){if(!o){return null}
|
|
584
597
|
// Do nothing if the allowed character sets is ALL or the address is incomplete
|
|
585
|
-
if(!o.complete||zonosStore.checkoutSettings.allowedCharacterSets==="ALL"){return null}var t=o.value,e=t.address,s=t.firstName,n=t.lastName,r=t.name;var i=e.city,a=e.country,l=e.line1,c=e.line2,u=e.postal_code,
|
|
598
|
+
if(!o.complete||zonosStore.checkoutSettings.allowedCharacterSets==="ALL"){return null}var t=o.value,e=t.address,s=t.firstName,n=t.lastName,r=t.name;var i=e.city,a=e.country,l=e.line1,c=e.line2,u=e.postal_code,d=e.state;var h=containsNonLatinChars({city:i,country:a,line1:l,line2:c||"",name:r||"".concat(s," ").concat(n),postal_code:u,state:d});if(!Object.keys(h).length){return null}return h};o.prototype.watchShouldEnabledCustomAddress=function(){var o,t,e;var s=this.shouldUseCustomAddressFormOverride||!!((o=this.genericSettings)===null||o===void 0?void 0:o.shouldEnabledCustomAddress);var n=!!this.selectedCountryCode&&s&&!!((e=(t=this.genericSettings)===null||t===void 0?void 0:t.countryCustomAddressEnabled)===null||e===void 0?void 0:e.includes(this.selectedCountryCode));
|
|
586
599
|
// Update the address form render type in the cart store
|
|
587
600
|
cartStore.addressFormRenderType=n?"zonos":"stripe"};o.prototype.disconnectedCallback=function(){
|
|
588
601
|
// unsubscribe from store subscriptions
|
|
@@ -233,7 +233,11 @@ state:e.stateOrProvinceCode||e.stateOrProvince||""},email:t,name:o,phone:e.phone
|
|
|
233
233
|
for(var f=0,v=__spreadArray(__spreadArray([],l,true),u,true);f<v.length;f++){var m=v[f];var g=toContactOption(m,c);if(!g){continue}if(!s(g.address.country)){continue}var p=dedupKey(g);if(d.has(p)){continue}d.add(p);h.push(g)}if(!a){return h}
|
|
234
234
|
// Stable-sort the survivors so addresses matching the currently-selected
|
|
235
235
|
// country come first while everything else keeps its original order.
|
|
236
|
-
return h.map((function(e,t){return{index:t,option:e}})).sort((function(e,t){var o=e.option.address.country===a;var r=t.option.address.country===a;if(o===r){return e.index-t.index}return o?-1:1})).map((function(e){return e.option}))};var isDisabledCountry=function(e){if(e===void 0){e=true}if(!localizationStore.localizationLoaded){return true}if(localizationStore.isDisabledCountry){if(e){log("Checkout: disabled country")}return true}return false};
|
|
236
|
+
return h.map((function(e,t){return{index:t,option:e}})).sort((function(e,t){var o=e.option.address.country===a;var r=t.option.address.country===a;if(o===r){return e.index-t.index}return o?-1:1})).map((function(e){return e.option}))};var isDisabledCountry=function(e){if(e===void 0){e=true}if(!localizationStore.localizationLoaded){return true}if(localizationStore.isDisabledCountry){if(e){log("Checkout: disabled country")}return true}return false};
|
|
237
|
+
/**
|
|
238
|
+
* BigCommerce checkout depends on storefront callbacks (clear cart, inventory).
|
|
239
|
+
* The hosted variant leaves the storefront, so the test does not apply there.
|
|
240
|
+
*/var isHostedVsNativeTestAllowed=function(e){var t=e.createCartId,o=e.enabledTestKeys,r=e.isBigCommerce;if(r){return false}if(typeof t!=="function"){return false}return o.includes("hosted_vs_native")};var isShippableCountry=function(e,
|
|
237
241
|
/**
|
|
238
242
|
* If provided, will check if the country is shippable based on the provided country code instead of the Hello selected country code
|
|
239
243
|
*/
|
|
@@ -565,11 +569,7 @@ storageStore.enabledVariantTestKeys=filterExpiredTests(storageStore.enabledVaria
|
|
|
565
569
|
// map existingSelection to the enabled variant test keys from database
|
|
566
570
|
var e=zonosStore.enabledVariantTestKeys.map((function(e){var t;
|
|
567
571
|
// We will attempt to get the enabled selection from localStorage first and only re-fetch if the testKeys are changed
|
|
568
|
-
var o=(t=storageStore.enabledVariantTestKeys)===null||t===void 0?void 0:t.find((function(t){var o=t.testKey;return o===e}));return{expiresAt:(o===null||o===void 0?void 0:o.expiresAt)||Date.now()+VARIANT_TEST_KEY_EXPIRATION,selectedVariantKey:(o===null||o===void 0?void 0:o.selectedVariantKey)||null,testKey:e}}));storageStoreSetEnabledVariantTestKeys(e);return{allSelected:false}};this.shouldAllowHostedVsNativeTest=function(){
|
|
569
|
-
// This test is only applicable to checkout that's using createCartid callback
|
|
570
|
-
if(typeof zonosStore.checkoutSettings.createCartId!=="function"){return false}var e=zonosStore.enabledVariantTestKeys.includes("hosted_vs_native");
|
|
571
|
-
// Should not do anything if the test is not enabled
|
|
572
|
-
if(!e){return false}return true};
|
|
572
|
+
var o=(t=storageStore.enabledVariantTestKeys)===null||t===void 0?void 0:t.find((function(t){var o=t.testKey;return o===e}));return{expiresAt:(o===null||o===void 0?void 0:o.expiresAt)||Date.now()+VARIANT_TEST_KEY_EXPIRATION,selectedVariantKey:(o===null||o===void 0?void 0:o.selectedVariantKey)||null,testKey:e}}));storageStoreSetEnabledVariantTestKeys(e);return{allSelected:false}};this.shouldAllowHostedVsNativeTest=function(){var e;return isHostedVsNativeTestAllowed({createCartId:zonosStore.checkoutSettings.createCartId,enabledTestKeys:zonosStore.enabledVariantTestKeys,isBigCommerce:Boolean((e=window.Zonos)===null||e===void 0?void 0:e.isBigCommerce)})};
|
|
573
573
|
// Register test hosted vs native if needed to get the variant selection for this test
|
|
574
574
|
this.registerTestHostedVsNative=function(){return __awaiter(t,void 0,void 0,(function(){var e,t,o,r;return __generator(this,(function(n){switch(n.label){case 0:e=this.shouldAllowHostedVsNativeTest();if(!e){return[2/*return*/]}log("[TEST] - Registering hosted vs native test");t=getSelectedTestVariant("hosted_vs_native");
|
|
575
575
|
// No need to request variant test for this test if the test already has variant selected
|
package/dist/scripts/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(){"use strict";const e=({id:e,payload:o,target:t,type:n})=>{var r;t instanceof HTMLIFrameElement?null===(r=t.contentWindow)||void 0===r||r.postMessage({id:e,payload:o,type:n},"*"):t.postMessage({id:e,payload:o,type:n},"*")};class o{constructor(o,t){this.targetElement=o,this.targetId=t,this.sendMessage=(o,t)=>{e({id:this.targetId,payload:t,target:this.targetElement,type:o})}}}o.iframeServices={GOOGLE_PLACES:"zonos--private-iframe-google-places-service-m9bmuh7g"},o.sendMessage=e,o.injectPrivateIframe=({id:e,onload:o,src:t})=>{const n=document.createElement("iframe");return n.src=t,n.id=e,n.style.display="none",n.role="presentation",n.ariaHidden="true",n.tabIndex=-1,n.style.border="none !important",n.style.margin="0px !important",n.style.padding="0px !important",n.style.width="1px !important",n.style.minWidth="100% !important",n.style.overflow="hidden !important",n.style.display="block !important",n.style.visibility="hidden !important",n.style.position="fixed !important",n.style.pointerEvents="none !important",n.style.userSelect="none !important",n.style.height="1px !important",n.onload=()=>o(n),document.body.appendChild(n),n};const t=performance.now(),n=e=>{if("string"==typeof e)return e;try{return JSON.stringify(e)}catch(o){if(e&&"function"==typeof e.toString){return e.toString()}return"Unable to stringify info"}},r=(e,o,...r)=>{var s,i;const{elapsedTimePretty:a}=(()=>{const e=performance.now()-t,o=e>1e3?`${(e/1e3).toFixed(2)}s`:`${e.toFixed(2)}ms`;return{elapsedTime:e,elapsedTimePretty:o}})(),l=[`(${a})`,...r];l.map(n).join(" ");if(!(!!(null===(s=window.Zonos)||void 0===s?void 0:s.debug)||!!window.location.search.match(/\?.*(&*)zonosDebug=1/)))return;let d=document.querySelector("iframe#zonos---debug-logging-iframe");d||(d=document.createElement("iframe"),d.id="zonos---debug-logging-iframe",d.style.display="none",d.style.opacity="0",d.style.position="absolute",d.style.top="-9999px",d.style.left="-9999px",d.style.width="1px",d.style.height="1px",d.style.border="none",d.style.overflow="hidden",d.style.visibility="hidden",document.body.appendChild(d));const c=(null===(i=d.contentWindow)||void 0===i?void 0:i.window.console)||window.console;switch(o){case"warn":c.warn(e,...l);break;case"info":c.info(e,...l);break;case"error":c.error(e,...l);break;default:c.groupCollapsed(e,...l),c.trace(),c.groupEnd()}},s=(e,...o)=>{r(e,"error",...o)},i=["jsdelivr","cdnjs","unpkg","vercel"],a="jsdelivr",l=e=>{const o=i.indexOf(e);return i[o+1]||null},d=()=>window.location.search.includes("zonosStagingMode=1"),c=()=>{var e;return(null===(e=window.Zonos.zonosApiKey)||void 0===e?void 0:e.includes("test"))||window.location.search.includes("zonosTestMode=1")};function u(e,o){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&o.indexOf(n)<0&&(t[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(n=Object.getOwnPropertySymbols(e);r<n.length;r++)o.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(t[n[r]]=e[n[r]])}return t}"function"==typeof SuppressedError&&SuppressedError;const p=["cloudflare","vercel"],m=p[0],w={cloudflare:"https://route.elements.zonos.com",vercel:"https://route.js.zonos.com"},y=w[m],h=(e=m)=>{const o=p.indexOf(e),t=p[o+1];return t||null},g=e=>{if("string"==typeof e)try{return JSON.parse(e)}catch(e){return null}return null},f=()=>{const e="userAgentData"in window.navigator?window.navigator.userAgentData:null,o=(()=>{const e="connection"in window.navigator?window.navigator.connection:null,o="mozConnection"in window.navigator?window.navigator.mozConnection:null,t="webkitConnection"in window.navigator?window.navigator.webkitConnection:null;return e||o||t})();return{connectionDownlink:null==o?void 0:o.downlink,connectionEffectiveType:null==o?void 0:o.effectiveType,connectionRtt:null==o?void 0:o.rtt,connectionSaveData:null==o?void 0:o.saveData,isHostedCheckout:window.Zonos.isLegacyCheckout,screenHeight:window.screen.height,screenWidth:window.innerWidth,userAgent:e&&e.brands.length>0?e:window.navigator.userAgent}},v=["/api/zonos-elements/log-script-load","/api/zonos-elements/log-bulk-load-data"],b=async({response:e,shouldLog:o=!0,shouldThrow:t=!1})=>{try{const o=await e.text(),t=g(o);if(!t)throw new Error(`Failed to parse content: ${o}`);return t}catch(e){if(t)throw e;return o&&console.error(e),null}},S=async({basePathType:e,options:o,path:t})=>{let n;const r=window.Zonos.zonosQaUrlApi||w[e]||m,s=new URL(r+t),i=window.Zonos.cartId?`${window.location.hostname}-${window.Zonos.cartId}`:window.location.hostname;s.searchParams.set("zToken",(e=>{try{return btoa(e).replace(/=/g,"")}catch(o){return e.replace(/[^A-Za-z0-9]/g,"").split("").reverse().join("")}})(i));try{n=await fetch(s.toString(),o)}catch(e){if(e instanceof Error)return{baseUrl:r,errors:[{message:e.message,type:"unknown"}],json:null,response:null,zonosMode:null};return{baseUrl:r,errors:[{message:"Failed to fetch",type:"unknown"}],json:null,response:null,zonosMode:null}}const a=n.headers.get("Zonos-Mode"),l=window.Zonos.zonosQaUrl;if(!window.Zonos.modeAlerted&&a&&l&&(window.Zonos.modeAlerted=!0),n.ok){return{baseUrl:r,errors:[],json:await b({response:n}),response:n,zonosMode:a}}const d=n.status.toString();try{const e=await b({response:n,shouldThrow:!0});if(e&&"errors"in e&&Array.isArray(e.errors)){const o=e.errors;return{baseUrl:r,errors:o.map(e=>"string"==typeof e?{message:e,type:d}:e),json:null,response:n,zonosMode:a}}return{baseUrl:r,errors:[{message:JSON.stringify(e),type:d}],json:null,response:n,zonosMode:a}}catch(e){return{baseUrl:r,errors:[{message:`${d}: ${"Unknown error"}`,type:d}],json:null,response:null,zonosMode:a}}},C=async({basePathType:e,options:o,path:t})=>{var n,s;const i=t.startsWith("/api/bigcommerce")?"vercel":e,a=performance.now(),l=await S({basePathType:i,options:o,path:t}),{errors:d,response:c}=l,p=u(l,["errors","response"]),m=performance.now()-a;r(`${t} (${m.toFixed(2)}ms)`,"info");const b=null==c?void 0:c.headers.get("Zonos-Duration");200===(null==c?void 0:c.status)&&(({apiPath:e,apiType:o,loadTimeInternal:t,loadTimeTotal:n})=>{if(v.includes(e))return;const r=n-t;if(r<0)return;const s=e.split("?")[0]||e,i=f(),a="object"==typeof i.userAgent&&i.userAgent.mobile,l={apiType:o,connectionType:i.connectionEffectiveType,href:s,isHostedCheckout:window.Zonos.isLegacyCheckout,isMobile:(d=a,d||window.innerWidth<890),loadTimeBrowserApi:r,loadTimeInternal:t,loadTimeTotal:n,metadata:Object.assign({},i),screenHeight:i.screenHeight,screenWidth:i.screenWidth,userAgent:"string"==typeof i.userAgent?i.userAgent:i.userAgent.brands.map(e=>e.brand).filter(e=>!/Not.*A.*Brand.*/.test(e)).join(",")};var d;window.Zonos.loadTimeApiInfoList.push(l)})({apiPath:t,apiType:i,loadTimeInternal:b?Number(b):0,loadTimeTotal:m});const z=h(i),k=d.find(({type:e})=>"unknown"===e),Z=d.find(({message:e})=>"string"==typeof e&&(e.includes("signal is aborted")||e.includes("The operation was aborted")||e.includes("Fetch is aborted"))),I=!!k||404===(null==c?void 0:c.status)||500===(null==c?void 0:c.status),j=z&&I;return I&&!Z&&(async({endpoint:e,errors:o,metadata:t,shouldPostReleaseErrorReporting:n})=>{r("sendErrorLog","warn",e,t,o);{const e=Number(window.Zonos.releaseDate);if((new Date).getTime()-e>36e5)return}const s="userAgentData"in window.navigator?window.navigator.userAgentData:null,i={endpoint:e,errors:o,href:window.location.href,metadata:Object.assign({appVersion:window.Zonos.version,domain:window.Zonos.domain,publicCredential:window.Zonos.zonosApiKey,userAgent:s&&s.brands.length>0?s:window.navigator.userAgent},t)};try{fetch(`${y}/api/zonos-elements/log-error`,{body:JSON.stringify(i),headers:{"Zonos-Referer":window.location.hostname},method:"POST"})}catch(e){const o=h();if(!o)return;fetch(`${w[o]}/api/zonos-elements/log-error`,{body:JSON.stringify(i),method:"POST"})}})({endpoint:w[i]+t,errors:d.map(({message:e})=>`API: ${e}`),metadata:{currentBasePath:i,nextFallbackApiType:z,requestHeaders:null==o?void 0:o.headers,requestPayload:g(null===(n=null==o?void 0:o.body)||void 0===n?void 0:n.toString())||(null===(s=null==o?void 0:o.body)||void 0===s?void 0:s.toString()),shouldCallFallback:j,status:null==c?void 0:c.status,statusText:null==c?void 0:c.statusText},shouldPostReleaseErrorReporting:!0}),j?(r(`=== "${t}" failed to fetch, trying next fallback ${z}`),C({basePathType:z,options:o,path:t})):Object.assign({errors:d,response:c},p)},z=async(e,o)=>{const t=u(o||{},[]),n=t.body?JSON.stringify(t.body):void 0,r=t.method||"GET",s=Object.assign({"Content-Type":"application/json","Zonos-Is-BigCommerce":window.Zonos.isBigCommerce.toString(),"Zonos-Referer":window.location.hostname,"Zonos-Staging-Mode":d()?"1":void 0,"Zonos-Test-Mode":c()?"1":void 0,"Zonos-Version":window.Zonos.version,credentialtoken:window.Zonos.zonosApiKey||"Empty credential token from zonos-elements"},t.headers);Object.keys(s).forEach(e=>void 0===s[e]&&delete s[e]);const i=Object.assign(Object.assign({},t),{body:"GET"===r?void 0:n,headers:s,method:r}),a=new URLSearchParams(window.location.search).get("useFallbackApi");return C({basePathType:a||m,options:i,path:e})},k=()=>{const e=window&&window.location.href.includes("forceLoadCdn");if("undefined"==typeof window||e)return null;const o=(e=>{if(!e)return null;const o=new URL(e).searchParams.get("zonosQaUrl");return o?/[^a-zA-Z0-9-_]+/.test(o)?null:o:null})(window.location.href),t="https://v1.4.2.js.zonos.com";if(!o&&(t.includes("test.")||t.includes("test-")))return t;if(!o&&["dev.demo.elements.zonos.com","dev.checkout.elements.zonos.com","dev.storybook.elements.zonos.com"].includes(window.location.hostname))return"https://dev.elements.zonos.com";if(!o)return null;if("dev-elements"===o)return"https://dev.elements.zonos.com";if("worker"===o)return null;const n=`https://${o}.preview.js.zonos.com`;return r(`[ZONOS-WARNING] using '${n}' for loading elements script`,"warn"),fetch(n).then(()=>{window.sessionStorage.removeItem("zonos--checkout-session-id"),window.sessionStorage.removeItem("zonos--client-secret")}).catch(()=>{alert(`[ZONOS-WARNING] '${n}' IS NO LONGER AVAILABLE. REMOVING zonosQaUrl PARAM AND RELOADING THE PAGE`);const e=new URLSearchParams(window.location.search);e.delete("zonosQaUrl");const{pathname:o}=window.location,t=`${o}?${e.toString()}`;return window.history.replaceState(window.history.state,"",t),window.location.reload(),null}),n},Z="https://js.stripe.com/v3",I=/^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/;let j=null;const O=e=>(null!==j||(j=new Promise((o,t)=>{if("undefined"!=typeof window&&"undefined"!=typeof document)if(window.Stripe)o(window.Stripe);else try{let n=(()=>{const e=document.querySelectorAll(`script[src^="${Z}"]`);for(let o=0;o<e.length;o++){const t=e[o];if(t&&I.test(t.src))return t}return null})();n&&e?console.warn("loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used"):n||(n=(()=>{const e=document.createElement("script");e.src=`${Z}`;const o=document.head||document.body;return o?(o.appendChild(e),e):(s("Expected document.body not to be null. Stripe.js requires a <body> element."),null)})()),null==n||n.addEventListener("load",()=>{window.Stripe?o(window.Stripe):t(new Error("Stripe.js not available"))}),null==n||n.addEventListener("error",()=>{t(new Error("Failed to load Stripe.js"))})}catch(e){return void t(e)}else o(null)})),j),A=Promise.resolve().then(()=>(()=>{var e,o;return"undefined"!=typeof window&&("function"==typeof(null===(e=window.Zonos)||void 0===e?void 0:e.createCartId)||"function"==typeof(null===(o=window.Zonos)||void 0===o?void 0:o.buildCartDetail))})()?O(null):null);let E=!1;A.catch(e=>{E||console.warn(e)});const T=async(...e)=>{var o;E=!0;const t=Date.now();return((e,o,t)=>{if(null===e)return null;const[n,r]=o,s=Object.assign({},r),i=(e=>{if(!("version"in e))return;const{version:o}=e;return"number"==typeof o||"string"==typeof o?o:void 0})(e);"string"==typeof i&&i!==3..toString()?delete s.apiVersion:s.apiVersion="2025-02-24.acacia";const a=e(n,s);return((e,o)=>{e&&e._registerWrapper&&e._registerWrapper({name:"stripe-js",startTime:o})})(a,t),a})(null!==(o=await A)&&void 0!==o?o:await O(null),e,t)},L=async({cartId:e,retries:o})=>{const t=c(),n=(()=>{const e=new URLSearchParams(window.location.search);return{overrideShouldEnabledCustomAddress:window.Zonos.overrideUseCustomAddressForm?"1":e.get("overrideShouldEnabledCustomAddress")}})(),s=(()=>{const e=new URLSearchParams(window.location.search).get("validityToken");if(!e||!/^[A-Za-z0-9+/]+={0,2}$/.test(e)||e.length%4!=0)return null;try{return atob(e),e}catch(e){return null}})()||void 0,i=new URLSearchParams;n.overrideShouldEnabledCustomAddress&&i.set("overrideShouldEnabledCustomAddress",n.overrideShouldEnabledCustomAddress);const{errors:a,json:l,zonosMode:d}=await z(`/api/zonos-elements/get-cart?${i.toString()}`,{body:{isTestMode:t,renewCartExpirationToken:s,tempCartUUID:e},headers:{"Content-Type":"application/json"},method:"POST"}),u=!l||a.length;return u&&o?(r("[ZONOS - loadZonos] temp cart not ready, retrying in 1 second","info",{retries:o}),await new Promise(e=>setTimeout(e,500)),L({cartId:e,retries:o-1})):u?null:Object.assign(Object.assign({},l),{zonosMode:d})},P=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/,$=new RegExp(`^${P.source}$`),D=new RegExp(`^cart_${P.source}$`),U=/^[a-zA-Z0-9]{2,}$/,N=/^cart_[a-zA-Z0-9]{2,}$/,R=async e=>{const{isDgsCartId:o,isLegacyCartId:t}=(e=>e?e.includes("undefined")?{isDgsCartId:!1,isLegacyCartId:!1}:N.test(e)?{isDgsCartId:!0,isLegacyCartId:!1}:U.test(e)?{isDgsCartId:!1,isLegacyCartId:!0}:D.test(e)?{isDgsCartId:!0,isLegacyCartId:!1}:$.test(e)?{isDgsCartId:!1,isLegacyCartId:!0}:{isDgsCartId:!1,isLegacyCartId:!1}:{isDgsCartId:!1,isLegacyCartId:!1})(e);if(!t&&!o)return s("[ZONOS - loadZonos] invalid cart id"),null;const n=await L({cartId:e,retries:5});return r("[ZONOS - loadZonos] getting temp cart data","info",n),n?(window.Zonos.storeId=n.cartData.storeId,window.Zonos.zonosApiKey=n.cartData.credentialToken,window.Zonos.zonosMode=n.zonosMode,{cartData:n.cartData,settings:n.settings,storeFavicon:n.storeFaviconUrl,storeId:n.cartData.storeId,storeLogo:n.storeLogoUrl,zonosApiKey:n.cartData.credentialToken}):(s("[ZONOS - loadZonos] Error getting temp cart data, stop checkout process."),null)},F="zonos--checkout-hidden-international-button";var x;const M=(()=>{if("undefined"==typeof document)return null;const e=document.querySelector('script[src*="/zonos.js"]'),{currentLoadScriptUrl:o,isWhiteListed:t}=(({loadScriptSrc:e})=>{if(!e)return{currentLoadScriptUrl:"",isForceLoadVersionDomain:!1,isWhiteListed:!1};const o=new URL(e).origin,t=["dev.elements.zonos.com","dev.assets-checkout.zonos.com",".js.zonos.com","zonos-elements-test-git","zonos-elements-git"].some(e=>o.includes(e)),n=["qa.js.zonos.com"].some(e=>o.includes(e));return{currentLoadScriptUrl:o,isForceLoadVersionDomain:n,isWhiteListed:t}})({loadScriptSrc:null==e?void 0:e.src});return t?o:null})(),B=Date.now(),q="https://v1.4.2.js.zonos.com",W=M||"https://cdn.jsdelivr.net/npm/@zonos/elements@1.4.2",K="https://fonts.googleapis.com",G=/^https:\/\/fonts\.googleapis\.com/;class H{}x=H,H.doneInit=!1,H.cartSettings=null,H.debug="undefined"!=typeof window&&!!window.location.search.match(/\?.*(&*)zonosDebug=1/),H.zonosConversionTest="undefined"!=typeof window&&!!window.location.search.match(/\?.*(&*)zonosConversionTest/),H._paypalMockResponse=null,H.iframeLogType="undefined"!=typeof window?new URLSearchParams(window.location.search).get("iframeLogType"):null,H.isBigCommerce=!1,H.releaseDate="1792599844401",H.isLegacyCheckout=!1,H.googleAnalyticId=null,H.googleAnalyticReady=!1,H.facebookPixelId=null,H.facebookPixelReady=!1,H.startLoadTime=B,H.domain="undefined"!=typeof window?window.location!=window.parent.location&&document.referrer||document.location.hostname:"",H.showBaseForeign="undefined"!=typeof window&&window.location.search.includes("zonosShowBaseForeign"),H.overrideUseCustomAddressForm=!1,H.isCollect=!1,H.isInvoice=!1,H.isNpm=!0,H.zonosQaUrl=null,H.zonosQaUrlApi=null,H.trackEventLogs=[],H.version="v1.4.2",H.modeAlerted=!1,H.cartData=null,H.paypal=null,H.zonosMode=null,H.IframeService=o,H.getCurrentTimestamp=()=>(new Date).getTime(),H.zonosController=null,H.loadTimeApiInfoList=[],H.logIntervalId=null,H.init=async e=>{const{appearance:o,checkoutSettings:t,currencyConverter:n,helloSettings:i,onCountryChange:a,overrideCurrencyFormat:l,storeId:u,zonosApiKey:p}=e;if(x.cartId=new URLSearchParams(window.location.search).get("tempCartUUID"),x.createCartId=null==t?void 0:t.createCartId,x.buildCartDetail=null==t?void 0:t.buildCartDetail,x.doneInit)return;if(r(`====== ZONOS DEBUG MODE: on (${x.version}) ======`),x.zonosApiKey=p,x.storeId=u,"undefined"!=typeof window&&window.parent===window&&(x.googleAnalyticReady=!0,x.facebookPixelReady=!0),x.isNpm){r("====== ZONOS LOADING FROM NPM ======");const o=k();if(o&&!window.isZonosPreview){r(`====== RE-INJECT "zonos.js" FROM PRVIEW: ${o} ======`,"info");const t=document.createElement("script");return t.src=`${o}/dist/scripts/zonos.js`,document.head.appendChild(t),t.addEventListener("load",()=>{window.Zonos.isNpm=x.isNpm,window.Zonos.isBigCommerce=x.isBigCommerce,window.Zonos.isLegacyCheckout=x.isLegacyCheckout,window.Zonos.zonosMode=x.zonosMode,window.Zonos.init(e)}),t.addEventListener("error",()=>{alert(`[ZONOS - loadZonos] Failed to load "loadZonos.js" from zonosQaUrl: ${o}`)}),void(window.isZonosPreview=!0)}if(!p&&!x.cartId)return void s("Zonos API key is required unless `tempCartUUID` is provided in url query params.");if(!x.cartData&&x.cartId){r("Initialize cart data");const e=await R(x.cartId);if(!e)return void s("Failed to get cart data");x.cartData=e.cartData,x.zonosApiKey=e.zonosApiKey,x.cartSettings=e.settings}const t=await(async()=>{const e=c(),o=d();if(!e&&!o||!window.Zonos.zonosApiKey)return null;if(r("[ZONOS - loadZonos] Attempt test public credential","info"),window.Zonos.zonosApiKey.includes("credential_test"))return r("[ZONOS - loadZonos] Test mode is enabled but the API key is already a test key","info"),null;const{errors:t,json:n}=await z("/api/get-test-public-credential");if(t.length||!n)return s("[ZONOS - loadZonos] Failed to get test public credential. Keep using production key",t),null;const i=n.publicCredential;return i?(r(`[ZONOS - loadZonos] Retrieve new test public token ${i}`,"info"),i):(s("[ZONOS - loadZonos] No test public key credential. Keep using production key"),null)})();t&&(x.zonosApiKey=t)}const m=new URL(window.location.href).searchParams.get("payment_intent_client_secret")||sessionStorage.getItem("zonos--client-secret");if(x.cartId&&x.cartData||!!m){r("Cart data or stripe client secret is available, inject hidden button and trigger checkout");const e=document.createElement("button");e.style.display="none",e.id="zonos--checkout-hidden-button",document.body.appendChild(e)}r("init zonos"),x.restoreNativeBrowserFunctions(),x.injectCustomScriptForHostedCheckout(),x.injectZonosCdn(),x.injectZonosCss(),x.injectFonts(),x.injectCheckoutInternationalButton(),x.injectController({config:{appearance:o,checkoutSettings:t,currencyConverter:n,helloSettings:i,onCountryChange:a,overrideCurrencyFormat:l}}),x.doneInit=!0},H.injectCheckoutInternationalButton=()=>{if(!document.querySelector(`#${F}`)){const e=document.createElement("button");e.id=F,e.style.display="none",document.body.appendChild(e)}},H.injectCustomScriptForHostedCheckout=()=>{const e=x.cartData,o=(null==e?void 0:e.metadata)||[],t=o.find(e=>"customHeaderScript"===e.key),n=o.find(e=>"customFooterScript"===e.key);if(window.Zonos.isLegacyCheckout&&(t||n)){if(t){r("Injecting custom header script");const e=document.createElement("script");e.textContent=t.value,document.head.appendChild(e)}if(n){r("Injecting custom footer script");const e=document.createElement("script");e.textContent=n.value,document.body.appendChild(e)}}else r("Skip injecting custom script for hosted checkout","info",{footerScript:n,headerScript:t,isLegacyCheckout:window.Zonos.isLegacyCheckout})},H.displayCurrency=()=>{const e=document.querySelector("zonos-hello");e&&e.displayCurrency()},H.triggerCheckoutInternational=async()=>{const e=document.querySelector(`#${F}`);setTimeout(()=>{var o;e&&e.dispatchEvent(new CustomEvent("click",{detail:o}))},10)},H.openHelloDialog=e=>{const o=document.querySelector("zonos-hello");o&&o.openHelloDialog(null==e||e)},H.showNotification=e=>{var o;null===(o=x.zonosController)||void 0===o||o.showNotification(e)},H.updateOrganizationName=e=>{var o;null===(o=x.zonosController)||void 0===o||o.updateOrganizationName(e)},H.disablePlaceOrderButtons=({autoEnable:e=!0,config:o,disable:t,placeOrderButtonSelector:n})=>{var r;if(!(null===(r=o.checkoutSettings)||void 0===r?void 0:r.disablePlaceOrderButtonActivation)&&n){const o=document.querySelectorAll(n),r=e=>{e.target.getAttribute("disabled")&&(e.preventDefault(),e.stopPropagation())};o.forEach(e=>{e.getAttribute("data-zonos-checkout-attached")||(t?(e.setAttribute("disabled","true"),e.addEventListener("click",r)):(e.removeAttribute("disabled"),e.removeEventListener("click",r)))}),e&&t&&setTimeout(()=>{o.forEach(e=>{e.removeAttribute("disabled"),e.removeEventListener("click",r)})},5e3)}},H.restoreNativeBrowserFunctions=()=>{var e;if("1"===new URL(window.location.href).searchParams.get("useMerchantPolyfill"))return;const o="zonos---native-browser";let t=document.querySelector(`iframe#${o}`);t||(t=document.createElement("iframe"),t.id=o,t.style.display="none",t.style.opacity="0",t.style.position="absolute",t.style.top="-9999px",t.style.left="-9999px",t.style.width="1px",t.style.height="1px",t.style.border="none",t.style.overflow="hidden",t.style.visibility="hidden",document.body.appendChild(t));const n=(null===(e=t.contentWindow)||void 0===e?void 0:e.window.Array.from)||Array.from;Array.from=n,document.body.removeChild(t)},H.injectController=({config:e})=>{var o,t;if(document.querySelector("zonos-controller"))return;if(null===(o=e.checkoutSettings)||void 0===o?void 0:o.placeOrderButtonSelector){const o=e.checkoutSettings.placeOrderButtonSelector;x.disablePlaceOrderButtons({config:e,disable:!0,placeOrderButtonSelector:o});new MutationObserver(()=>{x.disablePlaceOrderButtons({config:e,disable:!0,placeOrderButtonSelector:o})}).observe(document.body,{childList:!0,subtree:!0})}if(null===(t=e.checkoutSettings)||void 0===t?void 0:t.alwaysTriggerInternationalCheckoutSelector){const o=e.checkoutSettings.alwaysTriggerInternationalCheckoutSelector;x.disablePlaceOrderButtons({config:e,disable:!0,placeOrderButtonSelector:o});new MutationObserver(()=>{x.disablePlaceOrderButtons({config:e,disable:!0,placeOrderButtonSelector:o})}).observe(document.body,{childList:!0,subtree:!0})}const n=document.createElement("zonos-controller");n.config=e,n.zonosApiKey=x.zonosApiKey||"",n.addEventListener("stripeInitEvent",async e=>{const{detail:o}=e;r("loading Stripe");const t=await T(o.publishableKey);t?(window.Zonos.stripe=t,window.Zonos.isCollect?n.initCollectElement(t):window.Zonos.isInvoice?n.initInvoiceElement(t):n.initCheckoutElement(t)):s("API seems to be invalid or missing. Failed to load Stripe")}),document.body.appendChild(n),x.zonosController=n,r("Zonos controller injected!")},H.injectScript=({cdnType:e,isModule:o,theRestUrl:t})=>{const n=`${x.getZonosUrl(e)}/${t}`;if(document.querySelector(`script[src="${n}"]`))return void r(`Zonos script "${n}" already exists in the document`,"warn");const i=document.head||document.body,a=document.createElement("script");o?a.type="module":a.noModule=!0,a.src=n,a.crossOrigin="anonymous",a.onerror=()=>{s(`Failed to load ${a.src}`);const n=l(e);n&&x.injectScript({cdnType:n,isModule:o,theRestUrl:t})},i.appendChild(a)},H.getZonosUrl=e=>{const o=()=>{switch(e){case"jsdelivr":return W;case"unpkg":return"https://unpkg.com/@zonos/elements@1.4.2";case"cdnjs":return"https://cdnjs.cloudflare.com/ajax/libs/zonos-elements/1.4.2";case"vercel":return q}};if(x.isNpm){return k()||o()}return o()},H.injectZonosCdn=()=>{x.injectScript({cdnType:a,isModule:!0,theRestUrl:"dist/zonos-elements/zonos-elements.esm.js"}),x.injectScript({cdnType:a,isModule:!1,theRestUrl:"dist/zonos-elements/zonos-elements.js"}),r("Zonos cdn script injected!")},H.injectStylesheet=({cdnType:e,theRestUrl:o})=>{const t=x.getZonosUrl(e),n=document.head||document.body,r=document.createElement("link");r.rel="preconnect",r.href=`${q}/`,n.appendChild(r);const i=document.createElement("link");i.rel="stylesheet",i.href=`${t}/${o}`,i.onerror=()=>{s(`Failed to load ${i.href}`);const t=l(e);t&&x.injectStylesheet({cdnType:t,theRestUrl:o})},n.appendChild(i)},H.injectZonosCss=()=>{document.querySelector('link[rel="stylesheet"][href*="/dist/zonos-elements/zonos-elements.css"]')?r("Zonos style links already injected","warn"):(x.injectStylesheet({cdnType:a,theRestUrl:"dist/zonos-elements/zonos-elements.css"}),r("Zonos style css injected!"))},H.injectFonts=()=>{if((()=>{if(document.fonts.check("1em Inter"))return void r("Inter font already loaded","warn");const e=document.querySelectorAll(`link[rel="stylesheet"][href^="${K}"]`);for(let o=0;o<e.length;o++){const t=e[o];if(t&&!G.test(t.href))return t}return null})())return void r("Inter font already injected","warn");const e=document.head||document.body,o=document.createElement("link");o.rel="preconnect",o.href=K,e.appendChild(o);const t=document.createElement("link");t.rel="stylesheet",t.href=`${K}/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap`,e.appendChild(t),r("Zonos font injected!")},H.setupGoogleFont=e=>{var o;null===(o=x.zonosController)||void 0===o||o.setupGoogleFont(e)},H.injectSupportGoogleFont=e=>{var o;r(`[FONT] injecting ${e}`);const t=null===(o=e.match(/family=(.*?):/))||void 0===o?void 0:o[1],n=document.head||document.body;if(!document.querySelector(`link[rel="preconnect"][href^="${K}"]`)){const e=document.createElement("link");e.rel="preconnect",e.href=K,n.appendChild(e)}if(document.querySelector(`link[rel="stylesheet"][href="${e}"]`))return void r(`[FONT] ${t} font already injected`,"warn");const s=document.createElement("link");s.rel="stylesheet",s.href=e,n.appendChild(s),r(`[FONT] ${t} font injected!`)},exports.Zonos=H})();
|
|
1
|
+
(function(){"use strict";const e=({id:e,payload:o,target:t,type:n})=>{var r;t instanceof HTMLIFrameElement?null===(r=t.contentWindow)||void 0===r||r.postMessage({id:e,payload:o,type:n},"*"):t.postMessage({id:e,payload:o,type:n},"*")};class o{constructor(o,t){this.targetElement=o,this.targetId=t,this.sendMessage=(o,t)=>{e({id:this.targetId,payload:t,target:this.targetElement,type:o})}}}o.iframeServices={GOOGLE_PLACES:"zonos--private-iframe-google-places-service-m9bmuh7g"},o.sendMessage=e,o.injectPrivateIframe=({id:e,onload:o,src:t})=>{const n=document.createElement("iframe");return n.src=t,n.id=e,n.style.display="none",n.role="presentation",n.ariaHidden="true",n.tabIndex=-1,n.style.border="none !important",n.style.margin="0px !important",n.style.padding="0px !important",n.style.width="1px !important",n.style.minWidth="100% !important",n.style.overflow="hidden !important",n.style.display="block !important",n.style.visibility="hidden !important",n.style.position="fixed !important",n.style.pointerEvents="none !important",n.style.userSelect="none !important",n.style.height="1px !important",n.onload=()=>o(n),document.body.appendChild(n),n};const t=performance.now(),n=e=>{if("string"==typeof e)return e;try{return JSON.stringify(e)}catch(o){if(e&&"function"==typeof e.toString){return e.toString()}return"Unable to stringify info"}},r=(e,o,...r)=>{var s,i;const{elapsedTimePretty:a}=(()=>{const e=performance.now()-t,o=e>1e3?`${(e/1e3).toFixed(2)}s`:`${e.toFixed(2)}ms`;return{elapsedTime:e,elapsedTimePretty:o}})(),l=[`(${a})`,...r];l.map(n).join(" ");if(!(!!(null===(s=window.Zonos)||void 0===s?void 0:s.debug)||!!window.location.search.match(/\?.*(&*)zonosDebug=1/)))return;let d=document.querySelector("iframe#zonos---debug-logging-iframe");d||(d=document.createElement("iframe"),d.id="zonos---debug-logging-iframe",d.style.display="none",d.style.opacity="0",d.style.position="absolute",d.style.top="-9999px",d.style.left="-9999px",d.style.width="1px",d.style.height="1px",d.style.border="none",d.style.overflow="hidden",d.style.visibility="hidden",document.body.appendChild(d));const c=(null===(i=d.contentWindow)||void 0===i?void 0:i.window.console)||window.console;switch(o){case"warn":c.warn(e,...l);break;case"info":c.info(e,...l);break;case"error":c.error(e,...l);break;default:c.groupCollapsed(e,...l),c.trace(),c.groupEnd()}},s=(e,...o)=>{r(e,"error",...o)},i=["jsdelivr","cdnjs","unpkg","vercel"],a="jsdelivr",l=e=>{const o=i.indexOf(e);return i[o+1]||null},d=()=>window.location.search.includes("zonosStagingMode=1"),c=()=>{var e;return(null===(e=window.Zonos.zonosApiKey)||void 0===e?void 0:e.includes("test"))||window.location.search.includes("zonosTestMode=1")};function u(e,o){var t={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&o.indexOf(n)<0&&(t[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(n=Object.getOwnPropertySymbols(e);r<n.length;r++)o.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(t[n[r]]=e[n[r]])}return t}"function"==typeof SuppressedError&&SuppressedError;const p=["cloudflare","vercel"],m=p[0],w={cloudflare:"https://route.elements.zonos.com",vercel:"https://route.js.zonos.com"},y=w[m],h=(e=m)=>{const o=p.indexOf(e),t=p[o+1];return t||null},g=e=>{if("string"==typeof e)try{return JSON.parse(e)}catch(e){return null}return null},f=()=>{const e="userAgentData"in window.navigator?window.navigator.userAgentData:null,o=(()=>{const e="connection"in window.navigator?window.navigator.connection:null,o="mozConnection"in window.navigator?window.navigator.mozConnection:null,t="webkitConnection"in window.navigator?window.navigator.webkitConnection:null;return e||o||t})();return{connectionDownlink:null==o?void 0:o.downlink,connectionEffectiveType:null==o?void 0:o.effectiveType,connectionRtt:null==o?void 0:o.rtt,connectionSaveData:null==o?void 0:o.saveData,isHostedCheckout:window.Zonos.isLegacyCheckout,screenHeight:window.screen.height,screenWidth:window.innerWidth,userAgent:e&&e.brands.length>0?e:window.navigator.userAgent}},v=["/api/zonos-elements/log-script-load","/api/zonos-elements/log-bulk-load-data"],b=async({response:e,shouldLog:o=!0,shouldThrow:t=!1})=>{try{const o=await e.text(),t=g(o);if(!t)throw new Error(`Failed to parse content: ${o}`);return t}catch(e){if(t)throw e;return o&&console.error(e),null}},S=async({basePathType:e,options:o,path:t})=>{let n;const r=window.Zonos.zonosQaUrlApi||w[e]||m,s=new URL(r+t),i=window.Zonos.cartId?`${window.location.hostname}-${window.Zonos.cartId}`:window.location.hostname;s.searchParams.set("zToken",(e=>{try{return btoa(e).replace(/=/g,"")}catch(o){return e.replace(/[^A-Za-z0-9]/g,"").split("").reverse().join("")}})(i));try{n=await fetch(s.toString(),o)}catch(e){if(e instanceof Error)return{baseUrl:r,errors:[{message:e.message,type:"unknown"}],json:null,response:null,zonosMode:null};return{baseUrl:r,errors:[{message:"Failed to fetch",type:"unknown"}],json:null,response:null,zonosMode:null}}const a=n.headers.get("Zonos-Mode"),l=window.Zonos.zonosQaUrl;if(!window.Zonos.modeAlerted&&a&&l&&(window.Zonos.modeAlerted=!0),n.ok){return{baseUrl:r,errors:[],json:await b({response:n}),response:n,zonosMode:a}}const d=n.status.toString();try{const e=await b({response:n,shouldThrow:!0});if(e&&"errors"in e&&Array.isArray(e.errors)){const o=e.errors;return{baseUrl:r,errors:o.map(e=>"string"==typeof e?{message:e,type:d}:e),json:null,response:n,zonosMode:a}}return{baseUrl:r,errors:[{message:JSON.stringify(e),type:d}],json:null,response:n,zonosMode:a}}catch(e){return{baseUrl:r,errors:[{message:`${d}: ${"Unknown error"}`,type:d}],json:null,response:null,zonosMode:a}}},C=async({basePathType:e,options:o,path:t})=>{var n,s;const i=t.startsWith("/api/bigcommerce")?"vercel":e,a=performance.now(),l=await S({basePathType:i,options:o,path:t}),{errors:d,response:c}=l,p=u(l,["errors","response"]),m=performance.now()-a;r(`${t} (${m.toFixed(2)}ms)`,"info");const b=null==c?void 0:c.headers.get("Zonos-Duration");200===(null==c?void 0:c.status)&&(({apiPath:e,apiType:o,loadTimeInternal:t,loadTimeTotal:n})=>{if(v.includes(e))return;const r=n-t;if(r<0)return;const s=e.split("?")[0]||e,i=f(),a="object"==typeof i.userAgent&&i.userAgent.mobile,l={apiType:o,connectionType:i.connectionEffectiveType,href:s,isHostedCheckout:window.Zonos.isLegacyCheckout,isMobile:(d=a,d||window.innerWidth<890),loadTimeBrowserApi:r,loadTimeInternal:t,loadTimeTotal:n,metadata:Object.assign({},i),screenHeight:i.screenHeight,screenWidth:i.screenWidth,userAgent:"string"==typeof i.userAgent?i.userAgent:i.userAgent.brands.map(e=>e.brand).filter(e=>!/Not.*A.*Brand.*/.test(e)).join(",")};var d;window.Zonos.loadTimeApiInfoList.push(l)})({apiPath:t,apiType:i,loadTimeInternal:b?Number(b):0,loadTimeTotal:m});const z=h(i),k=d.find(({type:e})=>"unknown"===e),Z=d.find(({message:e})=>"string"==typeof e&&(e.includes("signal is aborted")||e.includes("The operation was aborted")||e.includes("Fetch is aborted"))),I=!!k||404===(null==c?void 0:c.status)||500===(null==c?void 0:c.status),j=z&&I;return I&&!Z&&(async({endpoint:e,errors:o,metadata:t,shouldPostReleaseErrorReporting:n})=>{r("sendErrorLog","warn",e,t,o);{const e=Number(window.Zonos.releaseDate);if((new Date).getTime()-e>36e5)return}const s="userAgentData"in window.navigator?window.navigator.userAgentData:null,i={endpoint:e,errors:o,href:window.location.href,metadata:Object.assign({appVersion:window.Zonos.version,domain:window.Zonos.domain,publicCredential:window.Zonos.zonosApiKey,userAgent:s&&s.brands.length>0?s:window.navigator.userAgent},t)};try{fetch(`${y}/api/zonos-elements/log-error`,{body:JSON.stringify(i),headers:{"Zonos-Referer":window.location.hostname},method:"POST"})}catch(e){const o=h();if(!o)return;fetch(`${w[o]}/api/zonos-elements/log-error`,{body:JSON.stringify(i),method:"POST"})}})({endpoint:w[i]+t,errors:d.map(({message:e})=>`API: ${e}`),metadata:{currentBasePath:i,nextFallbackApiType:z,requestHeaders:null==o?void 0:o.headers,requestPayload:g(null===(n=null==o?void 0:o.body)||void 0===n?void 0:n.toString())||(null===(s=null==o?void 0:o.body)||void 0===s?void 0:s.toString()),shouldCallFallback:j,status:null==c?void 0:c.status,statusText:null==c?void 0:c.statusText},shouldPostReleaseErrorReporting:!0}),j?(r(`=== "${t}" failed to fetch, trying next fallback ${z}`),C({basePathType:z,options:o,path:t})):Object.assign({errors:d,response:c},p)},z=async(e,o)=>{const t=u(o||{},[]),n=t.body?JSON.stringify(t.body):void 0,r=t.method||"GET",s=Object.assign({"Content-Type":"application/json","Zonos-Is-BigCommerce":window.Zonos.isBigCommerce.toString(),"Zonos-Referer":window.location.hostname,"Zonos-Staging-Mode":d()?"1":void 0,"Zonos-Test-Mode":c()?"1":void 0,"Zonos-Version":window.Zonos.version,credentialtoken:window.Zonos.zonosApiKey||"Empty credential token from zonos-elements"},t.headers);Object.keys(s).forEach(e=>void 0===s[e]&&delete s[e]);const i=Object.assign(Object.assign({},t),{body:"GET"===r?void 0:n,headers:s,method:r}),a=new URLSearchParams(window.location.search).get("useFallbackApi");return C({basePathType:a||m,options:i,path:e})},k=()=>{const e=window&&window.location.href.includes("forceLoadCdn");if("undefined"==typeof window||e)return null;const o=(e=>{if(!e)return null;const o=new URL(e).searchParams.get("zonosQaUrl");return o?/[^a-zA-Z0-9-_]+/.test(o)?null:o:null})(window.location.href),t="https://v1.5.0.js.zonos.com";if(!o&&(t.includes("test.")||t.includes("test-")))return t;if(!o&&["dev.demo.elements.zonos.com","dev.checkout.elements.zonos.com","dev.storybook.elements.zonos.com"].includes(window.location.hostname))return"https://dev.elements.zonos.com";if(!o)return null;if("dev-elements"===o)return"https://dev.elements.zonos.com";if("worker"===o)return null;const n=`https://${o}.preview.js.zonos.com`;return r(`[ZONOS-WARNING] using '${n}' for loading elements script`,"warn"),fetch(n).then(()=>{window.sessionStorage.removeItem("zonos--checkout-session-id"),window.sessionStorage.removeItem("zonos--client-secret")}).catch(()=>{alert(`[ZONOS-WARNING] '${n}' IS NO LONGER AVAILABLE. REMOVING zonosQaUrl PARAM AND RELOADING THE PAGE`);const e=new URLSearchParams(window.location.search);e.delete("zonosQaUrl");const{pathname:o}=window.location,t=`${o}?${e.toString()}`;return window.history.replaceState(window.history.state,"",t),window.location.reload(),null}),n},Z="https://js.stripe.com/v3",I=/^https:\/\/js\.stripe\.com\/v3\/?(\?.*)?$/;let j=null;const O=e=>(null!==j||(j=new Promise((o,t)=>{if("undefined"!=typeof window&&"undefined"!=typeof document)if(window.Stripe)o(window.Stripe);else try{let n=(()=>{const e=document.querySelectorAll(`script[src^="${Z}"]`);for(let o=0;o<e.length;o++){const t=e[o];if(t&&I.test(t.src))return t}return null})();n&&e?console.warn("loadStripe.setLoadParameters was called but an existing Stripe.js script already exists in the document; existing script parameters will be used"):n||(n=(()=>{const e=document.createElement("script");e.src=`${Z}`;const o=document.head||document.body;return o?(o.appendChild(e),e):(s("Expected document.body not to be null. Stripe.js requires a <body> element."),null)})()),null==n||n.addEventListener("load",()=>{window.Stripe?o(window.Stripe):t(new Error("Stripe.js not available"))}),null==n||n.addEventListener("error",()=>{t(new Error("Failed to load Stripe.js"))})}catch(e){return void t(e)}else o(null)})),j),A=Promise.resolve().then(()=>(()=>{var e,o;return"undefined"!=typeof window&&("function"==typeof(null===(e=window.Zonos)||void 0===e?void 0:e.createCartId)||"function"==typeof(null===(o=window.Zonos)||void 0===o?void 0:o.buildCartDetail))})()?O(null):null);let E=!1;A.catch(e=>{E||console.warn(e)});const T=async(...e)=>{var o;E=!0;const t=Date.now();return((e,o,t)=>{if(null===e)return null;const[n,r]=o,s=Object.assign({},r),i=(e=>{if(!("version"in e))return;const{version:o}=e;return"number"==typeof o||"string"==typeof o?o:void 0})(e);"string"==typeof i&&i!==3..toString()?delete s.apiVersion:s.apiVersion="2025-02-24.acacia";const a=e(n,s);return((e,o)=>{e&&e._registerWrapper&&e._registerWrapper({name:"stripe-js",startTime:o})})(a,t),a})(null!==(o=await A)&&void 0!==o?o:await O(null),e,t)},L=async({cartId:e,retries:o})=>{const t=c(),n=(()=>{const e=new URLSearchParams(window.location.search);return{overrideShouldEnabledCustomAddress:window.Zonos.overrideUseCustomAddressForm?"1":e.get("overrideShouldEnabledCustomAddress")}})(),s=(()=>{const e=new URLSearchParams(window.location.search).get("validityToken");if(!e||!/^[A-Za-z0-9+/]+={0,2}$/.test(e)||e.length%4!=0)return null;try{return atob(e),e}catch(e){return null}})()||void 0,i=new URLSearchParams;n.overrideShouldEnabledCustomAddress&&i.set("overrideShouldEnabledCustomAddress",n.overrideShouldEnabledCustomAddress);const{errors:a,json:l,zonosMode:d}=await z(`/api/zonos-elements/get-cart?${i.toString()}`,{body:{isTestMode:t,renewCartExpirationToken:s,tempCartUUID:e},headers:{"Content-Type":"application/json"},method:"POST"}),u=!l||a.length;return u&&o?(r("[ZONOS - loadZonos] temp cart not ready, retrying in 1 second","info",{retries:o}),await new Promise(e=>setTimeout(e,500)),L({cartId:e,retries:o-1})):u?null:Object.assign(Object.assign({},l),{zonosMode:d})},P=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/,$=new RegExp(`^${P.source}$`),D=new RegExp(`^cart_${P.source}$`),U=/^[a-zA-Z0-9]{2,}$/,N=/^cart_[a-zA-Z0-9]{2,}$/,R=async e=>{const{isDgsCartId:o,isLegacyCartId:t}=(e=>e?e.includes("undefined")?{isDgsCartId:!1,isLegacyCartId:!1}:N.test(e)?{isDgsCartId:!0,isLegacyCartId:!1}:U.test(e)?{isDgsCartId:!1,isLegacyCartId:!0}:D.test(e)?{isDgsCartId:!0,isLegacyCartId:!1}:$.test(e)?{isDgsCartId:!1,isLegacyCartId:!0}:{isDgsCartId:!1,isLegacyCartId:!1}:{isDgsCartId:!1,isLegacyCartId:!1})(e);if(!t&&!o)return s("[ZONOS - loadZonos] invalid cart id"),null;const n=await L({cartId:e,retries:5});return r("[ZONOS - loadZonos] getting temp cart data","info",n),n?(window.Zonos.storeId=n.cartData.storeId,window.Zonos.zonosApiKey=n.cartData.credentialToken,window.Zonos.zonosMode=n.zonosMode,{cartData:n.cartData,settings:n.settings,storeFavicon:n.storeFaviconUrl,storeId:n.cartData.storeId,storeLogo:n.storeLogoUrl,zonosApiKey:n.cartData.credentialToken}):(s("[ZONOS - loadZonos] Error getting temp cart data, stop checkout process."),null)},F="zonos--checkout-hidden-international-button";var x;const M=(()=>{if("undefined"==typeof document)return null;const e=document.querySelector('script[src*="/zonos.js"]'),{currentLoadScriptUrl:o,isWhiteListed:t}=(({loadScriptSrc:e})=>{if(!e)return{currentLoadScriptUrl:"",isForceLoadVersionDomain:!1,isWhiteListed:!1};const o=new URL(e).origin,t=["dev.elements.zonos.com","dev.assets-checkout.zonos.com",".js.zonos.com","zonos-elements-test-git","zonos-elements-git"].some(e=>o.includes(e)),n=["qa.js.zonos.com"].some(e=>o.includes(e));return{currentLoadScriptUrl:o,isForceLoadVersionDomain:n,isWhiteListed:t}})({loadScriptSrc:null==e?void 0:e.src});return t?o:null})(),B=Date.now(),q="https://v1.5.0.js.zonos.com",W=M||"https://cdn.jsdelivr.net/npm/@zonos/elements@1.5.0",K="https://fonts.googleapis.com",G=/^https:\/\/fonts\.googleapis\.com/;class H{}x=H,H.doneInit=!1,H.cartSettings=null,H.debug="undefined"!=typeof window&&!!window.location.search.match(/\?.*(&*)zonosDebug=1/),H.zonosConversionTest="undefined"!=typeof window&&!!window.location.search.match(/\?.*(&*)zonosConversionTest/),H._paypalMockResponse=null,H.iframeLogType="undefined"!=typeof window?new URLSearchParams(window.location.search).get("iframeLogType"):null,H.isBigCommerce=!1,H.releaseDate="1792773618734",H.isLegacyCheckout=!1,H.googleAnalyticId=null,H.googleAnalyticReady=!1,H.facebookPixelId=null,H.facebookPixelReady=!1,H.startLoadTime=B,H.domain="undefined"!=typeof window?window.location!=window.parent.location&&document.referrer||document.location.hostname:"",H.showBaseForeign="undefined"!=typeof window&&window.location.search.includes("zonosShowBaseForeign"),H.overrideUseCustomAddressForm=!1,H.isCollect=!1,H.isInvoice=!1,H.isNpm=!0,H.zonosQaUrl=null,H.zonosQaUrlApi=null,H.trackEventLogs=[],H.version="v1.5.0",H.modeAlerted=!1,H.cartData=null,H.paypal=null,H.zonosMode=null,H.IframeService=o,H.getCurrentTimestamp=()=>(new Date).getTime(),H.zonosController=null,H.loadTimeApiInfoList=[],H.logIntervalId=null,H.init=async e=>{const{appearance:o,checkoutSettings:t,currencyConverter:n,helloSettings:i,onCountryChange:a,overrideCurrencyFormat:l,storeId:u,zonosApiKey:p}=e;if(x.cartId=new URLSearchParams(window.location.search).get("tempCartUUID"),x.createCartId=null==t?void 0:t.createCartId,x.buildCartDetail=null==t?void 0:t.buildCartDetail,x.doneInit)return;if(r(`====== ZONOS DEBUG MODE: on (${x.version}) ======`),x.zonosApiKey=p,x.storeId=u,"undefined"!=typeof window&&window.parent===window&&(x.googleAnalyticReady=!0,x.facebookPixelReady=!0),x.isNpm){r("====== ZONOS LOADING FROM NPM ======");const o=k();if(o&&!window.isZonosPreview){r(`====== RE-INJECT "zonos.js" FROM PRVIEW: ${o} ======`,"info");const t=document.createElement("script");return t.src=`${o}/dist/scripts/zonos.js`,document.head.appendChild(t),t.addEventListener("load",()=>{window.Zonos.isNpm=x.isNpm,window.Zonos.isBigCommerce=x.isBigCommerce,window.Zonos.isLegacyCheckout=x.isLegacyCheckout,window.Zonos.zonosMode=x.zonosMode,window.Zonos.init(e)}),t.addEventListener("error",()=>{alert(`[ZONOS - loadZonos] Failed to load "loadZonos.js" from zonosQaUrl: ${o}`)}),void(window.isZonosPreview=!0)}if(!p&&!x.cartId)return void s("Zonos API key is required unless `tempCartUUID` is provided in url query params.");if(!x.cartData&&x.cartId){r("Initialize cart data");const e=await R(x.cartId);if(!e)return void s("Failed to get cart data");x.cartData=e.cartData,x.zonosApiKey=e.zonosApiKey,x.cartSettings=e.settings}const t=await(async()=>{const e=c(),o=d();if(!e&&!o||!window.Zonos.zonosApiKey)return null;if(r("[ZONOS - loadZonos] Attempt test public credential","info"),window.Zonos.zonosApiKey.includes("credential_test"))return r("[ZONOS - loadZonos] Test mode is enabled but the API key is already a test key","info"),null;const{errors:t,json:n}=await z("/api/get-test-public-credential");if(t.length||!n)return s("[ZONOS - loadZonos] Failed to get test public credential. Keep using production key",t),null;const i=n.publicCredential;return i?(r(`[ZONOS - loadZonos] Retrieve new test public token ${i}`,"info"),i):(s("[ZONOS - loadZonos] No test public key credential. Keep using production key"),null)})();t&&(x.zonosApiKey=t)}const m=new URL(window.location.href).searchParams.get("payment_intent_client_secret")||sessionStorage.getItem("zonos--client-secret");if(x.cartId&&x.cartData||!!m){r("Cart data or stripe client secret is available, inject hidden button and trigger checkout");const e=document.createElement("button");e.style.display="none",e.id="zonos--checkout-hidden-button",document.body.appendChild(e)}r("init zonos"),x.restoreNativeBrowserFunctions(),x.injectCustomScriptForHostedCheckout(),x.injectZonosCdn(),x.injectZonosCss(),x.injectFonts(),x.injectCheckoutInternationalButton(),x.injectController({config:{appearance:o,checkoutSettings:t,currencyConverter:n,helloSettings:i,onCountryChange:a,overrideCurrencyFormat:l}}),x.doneInit=!0},H.injectCheckoutInternationalButton=()=>{if(!document.querySelector(`#${F}`)){const e=document.createElement("button");e.id=F,e.style.display="none",document.body.appendChild(e)}},H.injectCustomScriptForHostedCheckout=()=>{const e=x.cartData,o=(null==e?void 0:e.metadata)||[],t=o.find(e=>"customHeaderScript"===e.key),n=o.find(e=>"customFooterScript"===e.key);if(window.Zonos.isLegacyCheckout&&(t||n)){if(t){r("Injecting custom header script");const e=document.createElement("script");e.textContent=t.value,document.head.appendChild(e)}if(n){r("Injecting custom footer script");const e=document.createElement("script");e.textContent=n.value,document.body.appendChild(e)}}else r("Skip injecting custom script for hosted checkout","info",{footerScript:n,headerScript:t,isLegacyCheckout:window.Zonos.isLegacyCheckout})},H.displayCurrency=()=>{const e=document.querySelector("zonos-hello");e&&e.displayCurrency()},H.triggerCheckoutInternational=async()=>{const e=document.querySelector(`#${F}`);setTimeout(()=>{var o;e&&e.dispatchEvent(new CustomEvent("click",{detail:o}))},10)},H.openHelloDialog=e=>{const o=document.querySelector("zonos-hello");o&&o.openHelloDialog(null==e||e)},H.showNotification=e=>{var o;null===(o=x.zonosController)||void 0===o||o.showNotification(e)},H.updateOrganizationName=e=>{var o;null===(o=x.zonosController)||void 0===o||o.updateOrganizationName(e)},H.disablePlaceOrderButtons=({autoEnable:e=!0,config:o,disable:t,placeOrderButtonSelector:n})=>{var r;if(!(null===(r=o.checkoutSettings)||void 0===r?void 0:r.disablePlaceOrderButtonActivation)&&n){const o=document.querySelectorAll(n),r=e=>{e.target.getAttribute("disabled")&&(e.preventDefault(),e.stopPropagation())};o.forEach(e=>{e.getAttribute("data-zonos-checkout-attached")||(t?(e.setAttribute("disabled","true"),e.addEventListener("click",r)):(e.removeAttribute("disabled"),e.removeEventListener("click",r)))}),e&&t&&setTimeout(()=>{o.forEach(e=>{e.removeAttribute("disabled"),e.removeEventListener("click",r)})},5e3)}},H.restoreNativeBrowserFunctions=()=>{var e;if("1"===new URL(window.location.href).searchParams.get("useMerchantPolyfill"))return;const o="zonos---native-browser";let t=document.querySelector(`iframe#${o}`);t||(t=document.createElement("iframe"),t.id=o,t.style.display="none",t.style.opacity="0",t.style.position="absolute",t.style.top="-9999px",t.style.left="-9999px",t.style.width="1px",t.style.height="1px",t.style.border="none",t.style.overflow="hidden",t.style.visibility="hidden",document.body.appendChild(t));const n=(null===(e=t.contentWindow)||void 0===e?void 0:e.window.Array.from)||Array.from;Array.from=n,document.body.removeChild(t)},H.injectController=({config:e})=>{var o,t;if(document.querySelector("zonos-controller"))return;if(null===(o=e.checkoutSettings)||void 0===o?void 0:o.placeOrderButtonSelector){const o=e.checkoutSettings.placeOrderButtonSelector;x.disablePlaceOrderButtons({config:e,disable:!0,placeOrderButtonSelector:o});new MutationObserver(()=>{x.disablePlaceOrderButtons({config:e,disable:!0,placeOrderButtonSelector:o})}).observe(document.body,{childList:!0,subtree:!0})}if(null===(t=e.checkoutSettings)||void 0===t?void 0:t.alwaysTriggerInternationalCheckoutSelector){const o=e.checkoutSettings.alwaysTriggerInternationalCheckoutSelector;x.disablePlaceOrderButtons({config:e,disable:!0,placeOrderButtonSelector:o});new MutationObserver(()=>{x.disablePlaceOrderButtons({config:e,disable:!0,placeOrderButtonSelector:o})}).observe(document.body,{childList:!0,subtree:!0})}const n=document.createElement("zonos-controller");n.config=e,n.zonosApiKey=x.zonosApiKey||"",n.addEventListener("stripeInitEvent",async e=>{const{detail:o}=e;r("loading Stripe");const t=await T(o.publishableKey);t?(window.Zonos.stripe=t,window.Zonos.isCollect?n.initCollectElement(t):window.Zonos.isInvoice?n.initInvoiceElement(t):n.initCheckoutElement(t)):s("API seems to be invalid or missing. Failed to load Stripe")}),document.body.appendChild(n),x.zonosController=n,r("Zonos controller injected!")},H.injectScript=({cdnType:e,isModule:o,theRestUrl:t})=>{const n=`${x.getZonosUrl(e)}/${t}`;if(document.querySelector(`script[src="${n}"]`))return void r(`Zonos script "${n}" already exists in the document`,"warn");const i=document.head||document.body,a=document.createElement("script");o?a.type="module":a.noModule=!0,a.src=n,a.crossOrigin="anonymous",a.onerror=()=>{s(`Failed to load ${a.src}`);const n=l(e);n&&x.injectScript({cdnType:n,isModule:o,theRestUrl:t})},i.appendChild(a)},H.getZonosUrl=e=>{const o=()=>{switch(e){case"jsdelivr":return W;case"unpkg":return"https://unpkg.com/@zonos/elements@1.5.0";case"cdnjs":return"https://cdnjs.cloudflare.com/ajax/libs/zonos-elements/1.5.0";case"vercel":return q}};if(x.isNpm){return k()||o()}return o()},H.injectZonosCdn=()=>{x.injectScript({cdnType:a,isModule:!0,theRestUrl:"dist/zonos-elements/zonos-elements.esm.js"}),x.injectScript({cdnType:a,isModule:!1,theRestUrl:"dist/zonos-elements/zonos-elements.js"}),r("Zonos cdn script injected!")},H.injectStylesheet=({cdnType:e,theRestUrl:o})=>{const t=x.getZonosUrl(e),n=document.head||document.body,r=document.createElement("link");r.rel="preconnect",r.href=`${q}/`,n.appendChild(r);const i=document.createElement("link");i.rel="stylesheet",i.href=`${t}/${o}`,i.onerror=()=>{s(`Failed to load ${i.href}`);const t=l(e);t&&x.injectStylesheet({cdnType:t,theRestUrl:o})},n.appendChild(i)},H.injectZonosCss=()=>{document.querySelector('link[rel="stylesheet"][href*="/dist/zonos-elements/zonos-elements.css"]')?r("Zonos style links already injected","warn"):(x.injectStylesheet({cdnType:a,theRestUrl:"dist/zonos-elements/zonos-elements.css"}),r("Zonos style css injected!"))},H.injectFonts=()=>{if((()=>{if(document.fonts.check("1em Inter"))return void r("Inter font already loaded","warn");const e=document.querySelectorAll(`link[rel="stylesheet"][href^="${K}"]`);for(let o=0;o<e.length;o++){const t=e[o];if(t&&!G.test(t.href))return t}return null})())return void r("Inter font already injected","warn");const e=document.head||document.body,o=document.createElement("link");o.rel="preconnect",o.href=K,e.appendChild(o);const t=document.createElement("link");t.rel="stylesheet",t.href=`${K}/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap`,e.appendChild(t),r("Zonos font injected!")},H.setupGoogleFont=e=>{var o;null===(o=x.zonosController)||void 0===o||o.setupGoogleFont(e)},H.injectSupportGoogleFont=e=>{var o;r(`[FONT] injecting ${e}`);const t=null===(o=e.match(/family=(.*?):/))||void 0===o?void 0:o[1],n=document.head||document.body;if(!document.querySelector(`link[rel="preconnect"][href^="${K}"]`)){const e=document.createElement("link");e.rel="preconnect",e.href=K,n.appendChild(e)}if(document.querySelector(`link[rel="stylesheet"][href="${e}"]`))return void r(`[FONT] ${t} font already injected`,"warn");const s=document.createElement("link");s.rel="stylesheet",s.href=e,n.appendChild(s),r(`[FONT] ${t} font injected!`)},exports.Zonos=H})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(){"use strict";const e=()=>{const e=new URLSearchParams(window.location.search);return{overrideShouldEnabledCustomAddress:window.Zonos.overrideUseCustomAddressForm?"1":e.get("overrideShouldEnabledCustomAddress")}},o=e=>/^[A-Z]{2}$/.test(e),n=e=>{try{const n=e.getItem("zonos--country");return n&&o(n)?n:null}catch(e){return null}},t=()=>(e=>{const n=new URLSearchParams(e||window.location.search),t=e=>{const t=n.get(e);return t&&o(t)?t:null},r=t("zCountry"),s=t("country"),i=t("customerCountry");return r||s||i})(new URL(window.location.href).searchParams)||(()=>{var e;return null!==(e=n(window.localStorage))&&void 0!==e?e:n(window.sessionStorage)})();function r(e,o){var n={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&o.indexOf(t)<0&&(n[t]=e[t]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(t=Object.getOwnPropertySymbols(e);r<t.length;r++)o.indexOf(t[r])<0&&Object.prototype.propertyIsEnumerable.call(e,t[r])&&(n[t[r]]=e[t[r]])}return n}"function"==typeof SuppressedError&&SuppressedError;const s=()=>window.location.search.includes("zonosStagingMode=1"),i=()=>{var e;return(null===(e=window.Zonos.zonosApiKey)||void 0===e?void 0:e.includes("test"))||window.location.search.includes("zonosTestMode=1")},a=["cloudflare","vercel"],d=a[0],l={cloudflare:"https://route.elements.zonos.com",vercel:"https://route.js.zonos.com"},c=l[d],u=(e=d)=>{const o=a.indexOf(e),n=a[o+1];return n||null},p=e=>{if("string"==typeof e)try{return JSON.parse(e)}catch(e){return null}return null},w=performance.now(),g=e=>{if("string"==typeof e)return e;try{return JSON.stringify(e)}catch(o){if(e&&"function"==typeof e.toString){return e.toString()}return"Unable to stringify info"}},m=(e,o,...n)=>{var t,r;const{elapsedTimePretty:s}=(()=>{const e=performance.now()-w,o=e>1e3?`${(e/1e3).toFixed(2)}s`:`${e.toFixed(2)}ms`;return{elapsedTime:e,elapsedTimePretty:o}})(),i=[`(${s})`,...n];i.map(g).join(" ");if(!(!!(null===(t=window.Zonos)||void 0===t?void 0:t.debug)||!!window.location.search.match(/\?.*(&*)zonosDebug=1/)))return;let a=document.querySelector("iframe#zonos---debug-logging-iframe");a||(a=document.createElement("iframe"),a.id="zonos---debug-logging-iframe",a.style.display="none",a.style.opacity="0",a.style.position="absolute",a.style.top="-9999px",a.style.left="-9999px",a.style.width="1px",a.style.height="1px",a.style.border="none",a.style.overflow="hidden",a.style.visibility="hidden",document.body.appendChild(a));const d=(null===(r=a.contentWindow)||void 0===r?void 0:r.window.console)||window.console;switch(o){case"warn":d.warn(e,...i);break;case"info":d.info(e,...i);break;case"error":d.error(e,...i);break;default:d.groupCollapsed(e,...i),d.trace(),d.groupEnd()}},y=()=>{const e="connection"in window.navigator?window.navigator.connection:null,o="mozConnection"in window.navigator?window.navigator.mozConnection:null,n="webkitConnection"in window.navigator?window.navigator.webkitConnection:null;return e||o||n},f=["/api/zonos-elements/log-script-load","/api/zonos-elements/log-bulk-load-data"],h=({apiPath:e,apiType:o,loadTimeInternal:n,loadTimeTotal:t})=>{if(f.includes(e))return;const r=t-n;if(r<0)return;const s=e.split("?")[0]||e,i=(()=>{const e="userAgentData"in window.navigator?window.navigator.userAgentData:null,o=y();return{connectionDownlink:null==o?void 0:o.downlink,connectionEffectiveType:null==o?void 0:o.effectiveType,connectionRtt:null==o?void 0:o.rtt,connectionSaveData:null==o?void 0:o.saveData,isHostedCheckout:window.Zonos.isLegacyCheckout,screenHeight:window.screen.height,screenWidth:window.innerWidth,userAgent:e&&e.brands.length>0?e:window.navigator.userAgent}})(),a="object"==typeof i.userAgent&&i.userAgent.mobile,d={apiType:o,connectionType:i.connectionEffectiveType,href:s,isHostedCheckout:window.Zonos.isLegacyCheckout,isMobile:(l=a,l||window.innerWidth<890),loadTimeBrowserApi:r,loadTimeInternal:n,loadTimeTotal:t,metadata:Object.assign({},i),screenHeight:i.screenHeight,screenWidth:i.screenWidth,userAgent:"string"==typeof i.userAgent?i.userAgent:i.userAgent.brands.map(e=>e.brand).filter(e=>!/Not.*A.*Brand.*/.test(e)).join(",")};var l;window.Zonos.loadTimeApiInfoList.push(d)},v=async({endpoint:e,errors:o,metadata:n,shouldPostReleaseErrorReporting:t})=>{if(m("sendErrorLog","warn",e,n,o),t){const e=Number(window.Zonos.releaseDate);if((new Date).getTime()-e>36e5)return}const r="userAgentData"in window.navigator?window.navigator.userAgentData:null,s={endpoint:e,errors:o,href:window.location.href,metadata:Object.assign({appVersion:window.Zonos.version,domain:window.Zonos.domain,publicCredential:window.Zonos.zonosApiKey,userAgent:r&&r.brands.length>0?r:window.navigator.userAgent},n)};try{fetch(`${c}/api/zonos-elements/log-error`,{body:JSON.stringify(s),headers:{"Zonos-Referer":window.location.hostname},method:"POST"})}catch(e){const o=u();if(!o)return;fetch(`${l[o]}/api/zonos-elements/log-error`,{body:JSON.stringify(s),method:"POST"})}},S=async({response:e,shouldLog:o=!0,shouldThrow:n=!1})=>{try{const o=await e.text(),n=p(o);if(!n)throw new Error(`Failed to parse content: ${o}`);return n}catch(e){if(n)throw e;return o&&console.error(e),null}},z=async({basePathType:e,options:o,path:n})=>{let t;const r=window.Zonos.zonosQaUrlApi||l[e]||d,s=new URL(r+n),i=window.Zonos.cartId?`${window.location.hostname}-${window.Zonos.cartId}`:window.location.hostname;s.searchParams.set("zToken",(e=>{try{return btoa(e).replace(/=/g,"")}catch(o){return e.replace(/[^A-Za-z0-9]/g,"").split("").reverse().join("")}})(i));try{t=await fetch(s.toString(),o)}catch(e){if(e instanceof Error)return{baseUrl:r,errors:[{message:e.message,type:"unknown"}],json:null,response:null,zonosMode:null};return{baseUrl:r,errors:[{message:"Failed to fetch",type:"unknown"}],json:null,response:null,zonosMode:null}}const a=t.headers.get("Zonos-Mode"),c=window.Zonos.zonosQaUrl;if(!window.Zonos.modeAlerted&&a&&c&&(window.Zonos.modeAlerted=!0),t.ok){return{baseUrl:r,errors:[],json:await S({response:t}),response:t,zonosMode:a}}const u=t.status.toString();try{const e=await S({response:t,shouldThrow:!0});if(e&&"errors"in e&&Array.isArray(e.errors)){const o=e.errors;return{baseUrl:r,errors:o.map(e=>"string"==typeof e?{message:e,type:u}:e),json:null,response:t,zonosMode:a}}return{baseUrl:r,errors:[{message:JSON.stringify(e),type:u}],json:null,response:t,zonosMode:a}}catch(e){return{baseUrl:r,errors:[{message:`${u}: ${"Unknown error"}`,type:u}],json:null,response:null,zonosMode:a}}},Z=async({basePathType:e,options:o,path:n})=>{var t,s;const i=n.startsWith("/api/bigcommerce")?"vercel":e,a=performance.now(),d=await z({basePathType:i,options:o,path:n}),{errors:c,response:w}=d,g=r(d,["errors","response"]),y=performance.now()-a;m(`${n} (${y.toFixed(2)}ms)`,"info");const f=null==w?void 0:w.headers.get("Zonos-Duration");200===(null==w?void 0:w.status)&&h({apiPath:n,apiType:i,loadTimeInternal:f?Number(f):0,loadTimeTotal:y});const S=u(i),C=c.find(({type:e})=>"unknown"===e),b=c.find(({message:e})=>"string"==typeof e&&(e.includes("signal is aborted")||e.includes("The operation was aborted")||e.includes("Fetch is aborted"))),I=!!C||404===(null==w?void 0:w.status)||500===(null==w?void 0:w.status),L=S&&I;return I&&!b&&v({endpoint:l[i]+n,errors:c.map(({message:e})=>`API: ${e}`),metadata:{currentBasePath:i,nextFallbackApiType:S,requestHeaders:null==o?void 0:o.headers,requestPayload:p(null===(t=null==o?void 0:o.body)||void 0===t?void 0:t.toString())||(null===(s=null==o?void 0:o.body)||void 0===s?void 0:s.toString()),shouldCallFallback:L,status:null==w?void 0:w.status,statusText:null==w?void 0:w.statusText},shouldPostReleaseErrorReporting:!0}),L?(m(`=== "${n}" failed to fetch, trying next fallback ${S}`),Z({basePathType:S,options:o,path:n})):Object.assign({errors:c,response:w},g)},C=async(e,o)=>{const n=r(o||{},[]),t=n.body?JSON.stringify(n.body):void 0,a=n.method||"GET",l=Object.assign({"Content-Type":"application/json","Zonos-Is-BigCommerce":window.Zonos.isBigCommerce.toString(),"Zonos-Referer":window.location.hostname,"Zonos-Staging-Mode":s()?"1":void 0,"Zonos-Test-Mode":i()?"1":void 0,"Zonos-Version":window.Zonos.version,credentialtoken:window.Zonos.zonosApiKey||"Empty credential token from zonos-elements"},n.headers);Object.keys(l).forEach(e=>void 0===l[e]&&delete l[e]);const c=Object.assign(Object.assign({},n),{body:"GET"===a?void 0:t,headers:l,method:a}),u=new URLSearchParams(window.location.search).get("useFallbackApi");return Z({basePathType:u||d,options:c,path:e})},b=(e,...o)=>{m(e,"error",...o)},I=["jsdelivr","cdnjs","unpkg","vercel"],L=e=>{if(!e)return null;const o=new URL(e).searchParams.get("zonosQaUrl");if(!o)return null;return/[^a-zA-Z0-9-_]+/.test(o)?null:o},O=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/,A=new RegExp(`^${O.source}$`),T=new RegExp(`^cart_${O.source}$`),k=/^[a-zA-Z0-9]{2,}$/,U=/^cart_[a-zA-Z0-9]{2,}$/,j=e=>e?e.includes("undefined")?{isDgsCartId:!1,isLegacyCartId:!1}:U.test(e)?{isDgsCartId:!0,isLegacyCartId:!1}:k.test(e)?{isDgsCartId:!1,isLegacyCartId:!0}:T.test(e)?{isDgsCartId:!0,isLegacyCartId:!1}:A.test(e)?{isDgsCartId:!1,isLegacyCartId:!0}:{isDgsCartId:!1,isLegacyCartId:!1}:{isDgsCartId:!1,isLegacyCartId:!1},E=async({cartId:o,retries:n})=>{const t=i(),r=e(),s=(()=>{const e=new URLSearchParams(window.location.search).get("validityToken");if(!e||!/^[A-Za-z0-9+/]+={0,2}$/.test(e)||e.length%4!=0)return null;try{return atob(e),e}catch(e){return null}})()||void 0,a=new URLSearchParams;r.overrideShouldEnabledCustomAddress&&a.set("overrideShouldEnabledCustomAddress",r.overrideShouldEnabledCustomAddress);const{errors:d,json:l,zonosMode:c}=await C(`/api/zonos-elements/get-cart?${a.toString()}`,{body:{isTestMode:t,renewCartExpirationToken:s,tempCartUUID:o},headers:{"Content-Type":"application/json"},method:"POST"}),u=!l||d.length;return u&&n?(m("[ZONOS - loadZonos] temp cart not ready, retrying in 1 second","info",{retries:n}),await new Promise(e=>setTimeout(e,500)),E({cartId:o,retries:n-1})):u?null:Object.assign(Object.assign({},l),{zonosMode:c})},$="z--blur",P=async()=>{const e=window.zonosBlurCurrencyOnInitIntervalId;if(!e)return;await new Promise(e=>setTimeout(e,500)),clearInterval(e);document.querySelectorAll(`.${$}`).forEach(e=>{e.classList.remove($)}),window.zonosBlurCurrencyOnInitIntervalId=void 0},N=({currencySelector:e,specificSelector:o})=>{if(e||o)if(o)o.classList.add($);else{document.querySelectorAll([e].filter(Boolean).join(",")).forEach(e=>{e.classList.add($)})}};var D;const R=(()=>{const e=window&&window.location.href.includes("forceLoadCdn");if("undefined"==typeof window||e)return null;const o=L(window.location.href),n="https://v1.4.2.js.zonos.com";if(!o&&(n.includes("test.")||n.includes("test-")))return n;if(!o&&["dev.demo.elements.zonos.com","dev.checkout.elements.zonos.com","dev.storybook.elements.zonos.com"].includes(window.location.hostname))return"https://dev.elements.zonos.com";if(!o)return null;if("dev-elements"===o)return"https://dev.elements.zonos.com";if("worker"===o)return null;const t=`https://${o}.preview.js.zonos.com`;return m(`[ZONOS-WARNING] using '${t}' for loading elements script`,"warn"),fetch(t).then(()=>{window.sessionStorage.removeItem("zonos--checkout-session-id"),window.sessionStorage.removeItem("zonos--client-secret")}).catch(()=>{alert(`[ZONOS-WARNING] '${t}' IS NO LONGER AVAILABLE. REMOVING zonosQaUrl PARAM AND RELOADING THE PAGE`);const e=new URLSearchParams(window.location.search);e.delete("zonosQaUrl");const{pathname:o}=window.location,n=`${o}?${e.toString()}`;return window.history.replaceState(window.history.state,"",n),window.location.reload(),null}),t})(),F=(()=>{const e=(e=>{if(!e)return null;const o=new URL(e).searchParams.get("zonosQaUrlApi");return o?/[^a-zA-Z0-9-_]+/.test(o)?null:o:null})(window.location.href),o=L(window.location.href),n=e||o;if(!n&&["dev.demo.elements.zonos.com","dev.checkout.elements.zonos.com"].includes(window.location.hostname))return"https://dev.demo.elements.zonos.com";if(!n)return null;if("dev-elements"===n)return"https://dev.demo.elements.zonos.com";if("worker"===n)return"https://worker.iglobalstores.com";if(!e)return null;const t=`https://${e}.route.js.zonos.com`;return m(`[ZONOS-WARNING] using '${t}' for serverless API`,"warn"),t})(),B=Date.now();class M{}D=M,M.isNpm=!1,M.isBigCommerce=!1,M.googleAnalyticId=null,M.googleAnalyticReady=!1,M.facebookPixelId=null,M.facebookPixelReady=!1,M.requested=!1,M.zonosMode=null,M.cartData=null,M.startLoadTime=B,M.overrideUseCustomAddressForm=!1,M.domain=window.location!=window.parent.location?document.referrer:document.location.hostname,M.version="v1.4.2",M.isLegacyCheckout=!1,M.isCollect=!1,M.isInvoice=!1,M.legacyStoreLogo=null,M.legacyStoreFavicon=null,M.parallelLoadTimes=[],M.parallelLoadState="off",M.releaseDate="1792599844401",M.loadTimeApiInfoList=[],M.cartSettings=null,M.loadScriptLogHandler=async({cdnLoadTime:e,fallbackLoadTime:o,isError:n,metadata:t,scriptLoadUrl:r,storeId:s,type:i})=>{try{const e=window.performance.getEntriesByType("resource").find(e=>{const o=e;return o.name.includes(r)&&"script"===o.initiatorType});null==e||e.transferSize;(async()=>{})((e&&(null==e?void 0:e.duration)>0?parseFloat(e.duration.toFixed(2)):parseFloat(o.toFixed(2)),Object.assign({decodedBodySize:null==e?void 0:e.decodedBodySize,encodedBodySize:null==e?void 0:e.encodedBodySize,fallbackLoadTime:o,isError:!!n},t)))}catch(e){}},M.loadScriptLogParallelHandler=async e=>{try{if(D.parallelLoadTimes.push(e),2===D.parallelLoadTimes.length){const e=D.parallelLoadTimes.find(e=>"vercel"===e.type),o=D.parallelLoadTimes.find(e=>"jsdelivr"===e.type);if(!e||!o)return;if(e.isError&&o.isError)return void v({endpoint:`<${e.scriptLoadUrl}> <${o.scriptLoadUrl}>`,errors:["Failed to fetch both Vercel and jsdelivr CDN. Perhaps network issue on customer site."],metadata:{cdnLoadTime:o.fallbackLoadTime,cdnType:o.type,vercelLoadTime:e.fallbackLoadTime}});D.loadScriptLogHandler({cdnLoadTime:o.fallbackLoadTime,fallbackLoadTime:e.fallbackLoadTime,isError:e.isError,metadata:{cdnScriptFallbackTime:o.fallbackLoadTime,cdnScriptIsError:!!o.isError,cdnScriptLoadUrl:o.scriptLoadUrl,cdnScriptType:o.type},scriptLoadUrl:e.scriptLoadUrl,storeId:e.storeId,type:e.type})}}catch(e){}},M.legacyCheckoutErrorHandler=({message:e,metadata:o})=>{b(`[ZONOS - loadZonos] ${e}`),v({endpoint:"LegacyCheckoutInit",errors:[e],metadata:Object.assign(Object.assign({},o),{tempCartUUID:D.cartId})}),document.dispatchEvent(new CustomEvent("legacyCheckoutError",{detail:e}))},M.getGithubCdn=({type:e,version:o})=>{let n="https://cdn.jsdelivr.net/npm/@zonos/elements@1.4.2";"cdnjs"===e?n="https://cdnjs.cloudflare.com/ajax/libs/zonos-elements/1.4.2":"unpkg"===e&&(n="https://unpkg.com/@zonos/elements@1.4.2");return o&&"alpha"!==o?n.replace(/@zonos\/elements@(.+)/,`@zonos/elements@${o}`).replace(/\/zonos-elements\/(.+)/,`/zonos-elements/${o}`):n},M.injectZonos=({cdnType:e="jsdelivr",initConfig:o,parallelLoaded:n,vercelUrl:t,version:r})=>{var s;o=Object.assign(Object.assign({},o),{zonosApiKey:D.zonosApiKey}),r&&(window.Zonos.version=`v${r}`);const i="vercel"===e?t:D.getGithubCdn({type:e,version:r}),a=R||i,d=a.replace("https://","").replace("http://",""),l=document.createElement("script"),c=r&&r<"1.2.5"?"loadZonos.js":"zonos.js";l.src=`https://${d}/dist/scripts/${c}?timestamp=${Date.now()}`,m(`[ZONOS - loadZonos] Injecting "${c}" from "${d}"`,"info");const u="4g"===(null===(s=y())||void 0===s?void 0:s.effectiveType),p=["dev.elements.zonos.com","zonos.com"].some(e=>window.location.href.includes(e)),w=I[0]===e,g=I[1],f="on"===D.parallelLoadState&&u&&w&&g&&!p;f&&D.injectZonos({cdnType:g,initConfig:o,parallelLoaded:!0,vercelUrl:t,version:r});const h=performance.now();l.addEventListener("load",async()=>{if(f||n?D.loadScriptLogParallelHandler({fallbackLoadTime:performance.now()-h,scriptLoadUrl:l.src,storeId:D.storeId||0,type:e}):D.loadScriptLogHandler({fallbackLoadTime:performance.now()-h,scriptLoadUrl:l.src,storeId:D.storeId||0,type:e}),D.isBigCommerce||(D.isBigCommerce=!!window.stencilBootstrap||!!window.bcConfig||!!document.querySelector('script[src*="bigcommerce.com"]')),window.Zonos.isNpm=!1,window.Zonos.zonosQaUrl=R,window.Zonos.zonosQaUrlApi=F,window.Zonos.zonosMode=D.zonosMode,window.Zonos.isBigCommerce=D.isBigCommerce,window.Zonos.loadTimeApiInfoList=D.loadTimeApiInfoList,window.Zonos.overrideUseCustomAddressForm=D.overrideUseCustomAddressForm,window.Zonos.startLoadTime=D.startLoadTime,D.cartSettings&&(window.Zonos.cartSettings=D.cartSettings),D.cartId){const e=D.isCollect?"Collect":"hosted Checkout";if(!D.zonosApiKey)throw D.legacyCheckoutErrorHandler({message:`zonosApiKey is missing to initiate ${e}`}),new Error(`zonosApiKey is required for ${e}`);if(!D.cartData)throw D.legacyCheckoutErrorHandler({message:`cartData is missing to initiate ${e}`}),new Error(`cartData is required for ${e}`);if(D.legacyStoreFavicon&&D.isLegacyCheckout&&!D.isCollect)try{if(200!==(await fetch(D.legacyStoreFavicon)).status)throw new Error("Custom favicon is not available");const e=document.createElement("link");e.rel="shortcut icon",e.type="image/x-icon",e.href=D.legacyStoreFavicon,document.head.appendChild(e)}catch(e){}window.Zonos.cartData=D.cartData,window.Zonos.isLegacyCheckout=D.isLegacyCheckout,window.Zonos.cartSettings=D.cartSettings,window.Zonos.isCollect=D.isCollect,window.Zonos.isInvoice=D.isInvoice;const n=Object.assign(Object.assign({},o),{appearance:Object.assign(Object.assign({},o.appearance),{logoUrl:D.isLegacyCheckout&&!D.isCollect&&D.legacyStoreLogo?D.legacyStoreLogo:void 0}),zonosApiKey:D.zonosApiKey});o=n}window.Zonos.version&&(m(`[ZONOS - loadZonos] Execute "Zonos.init" from "${c}" from "${d}"`,"info"),window.Zonos.init(o))}),l.addEventListener("error",async()=>{const s=(e=>{const o=I.indexOf(e);return I[o+1]||null})(e);if(!f&&!n){if(!s)return;D.injectZonos({cdnType:s,initConfig:o,vercelUrl:t,version:r})}if(["localhost",".zonos.com"].some(e=>window.location.href.includes(e))||R)return;if(f||n)return void D.loadScriptLogParallelHandler({fallbackLoadTime:performance.now()-h,isError:!0,scriptLoadUrl:l.src,storeId:D.storeId||0,type:e});["unpkg","cdnjs","vercel"].includes(e)?v({endpoint:l.src,errors:[`zonos.js - Failed to fetch ${e} CDN.`],metadata:{cdnLoadTime:performance.now()-h,cdnType:e,loadUrl:a,version:r},shouldPostReleaseErrorReporting:!!s}):v({endpoint:l.src,errors:["[Info] Using alternative CDN. Failed to fetch script"],metadata:{cdnType:e,vercelLoadTime:performance.now()-h}})}),document.head.appendChild(l)},M.handlePerformBlurCurrency=()=>{var e,o,n;!(null===(o=null===(e=D.cartSettings)||void 0===e?void 0:e.genericSettings)||void 0===o?void 0:o.blurCurrencyOnInit)?P():(window.zonosBlurCurrencyOnInitCurrencySelector=window.zonosBlurCurrencyOnInitCurrencySelector||(null===(n=D.cartSettings)||void 0===n?void 0:n.helloSettings.currencyElementSelector),(()=>{if("undefined"==typeof window)return;if(window.zonosBlurCurrencyOnInitIntervalId)return;N({currencySelector:window.zonosBlurCurrencyOnInitCurrencySelector});const e=setInterval(()=>{N({currencySelector:window.zonosBlurCurrencyOnInitCurrencySelector})},10);window.zonosBlurCurrencyOnInitIntervalId=e,setTimeout(()=>{P()},7e3)})())},M.init=async o=>{var n,r;if(m("=== Init zonos script release date","info",D.releaseDate),R&&!window.isZonosPreview){m(`[ZONOS - loadZonos] Re-inject "loadZonos.js" from zonosQaUrl: ${R}`,"info");const e=document.createElement("script");return e.src=`${R}/dist/scripts/loadZonos.js?timestamp=${Date.now()}`,document.head.appendChild(e),e.addEventListener("load",()=>{window.Zonos.isNpm=!1,window.Zonos.isBigCommerce=D.isBigCommerce,window.Zonos.isLegacyCheckout=D.isLegacyCheckout,window.Zonos.startLoadTime=D.startLoadTime,window.Zonos.init(o)}),e.addEventListener("error",()=>{alert(`[ZONOS - loadZonos] Failed to load "loadZonos.js" from zonosQaUrl: ${R}`)}),void(window.isZonosPreview=!0)}const a=new URLSearchParams(window.location.search).get("tempCartUUID"),{isDgsCartId:d,isLegacyCartId:l}=j(a);if(a&&!l&&!d)return void D.legacyCheckoutErrorHandler({message:`[ZONOS - loadZonos] invalid &tempCartUUID=${a}`,metadata:{invalidCartId:!0}});D.cartId=a;const c=document.querySelector('script[src*="/zonos.js"]'),u=null===(n=document.querySelector("script[src*='/loadZonos.js']"))||void 0===n?void 0:n.src;m(`[ZONOS - init] first load script src: ${u}`,"info"),window.Zonos.zonosQaUrl=R,window.Zonos.zonosQaUrlApi=F,window.Zonos.zonosQaUrl&&m(`[ZONOS - init] using zonosQaUrl: ${window.Zonos.zonosQaUrl}`,"info"),window.Zonos.zonosQaUrlApi&&m(`[ZONOS - init] using zonosQaUrlApi: ${window.Zonos.zonosQaUrlApi}`,"info");const p=null==u?void 0:u.includes("timestamp=");if(!(D.isNpm||u&&p))return void b("[ZONOS - loadZonos] A timestamp is required as a query parameter in the loadZonos.js script source. This timestamp ensures that you are loading the most recent version of the script, avoiding any cached versions.");if(c||!u||D.requested)return void m("[ZONOS - loadZonos] script is already loaded or requested","info");if(!o.zonosApiKey&&!D.cartId)return D.legacyCheckoutErrorHandler({message:"Zonos API key is required unless `tempCartUUID` is provided in url query params."}),void b("Zonos API key is required unless `tempCartUUID` is provided in url query params.");if(D.requested=!0,D.zonosApiKey=o.zonosApiKey,D.storeId=o.storeId,D.cartId){const e=await(async e=>{const{isDgsCartId:o,isLegacyCartId:n}=j(e);if(!n&&!o)return b("[ZONOS - loadZonos] invalid cart id"),null;const t=await E({cartId:e,retries:5});return m("[ZONOS - loadZonos] getting temp cart data","info",t),t?(window.Zonos.storeId=t.cartData.storeId,window.Zonos.zonosApiKey=t.cartData.credentialToken,window.Zonos.zonosMode=t.zonosMode,{cartData:t.cartData,settings:t.settings,storeFavicon:t.storeFaviconUrl,storeId:t.cartData.storeId,storeLogo:t.storeLogoUrl,zonosApiKey:t.cartData.credentialToken}):(b("[ZONOS - loadZonos] Error getting temp cart data, stop checkout process."),null)})(D.cartId);if(!e)throw D.legacyCheckoutErrorHandler({message:"Error getting cart data"}),new Error("Error getting cart data");D.cartData=e.cartData,D.cartSettings=e.settings,D.legacyStoreLogo=e.storeLogo,D.legacyStoreFavicon=e.storeFavicon,D.storeId=e.storeId,D.zonosApiKey=e.zonosApiKey,D.isCollect=e.cartData.type.includes("COLLECT"),D.isInvoice="INVOICE"===e.cartData.type}if(!D.zonosApiKey)return void b('"zonosApiKey" is required to initialize Zonos');const w=await(async()=>{const e=i(),o=s();if(!e&&!o||!window.Zonos.zonosApiKey)return null;if(m("[ZONOS - loadZonos] Attempt test public credential","info"),window.Zonos.zonosApiKey.includes("credential_test"))return m("[ZONOS - loadZonos] Test mode is enabled but the API key is already a test key","info"),null;const{errors:n,json:t}=await C("/api/get-test-public-credential");if(n.length||!t)return b("[ZONOS - loadZonos] Failed to get test public credential. Keep using production key",n),null;const r=t.publicCredential;return r?(m(`[ZONOS - loadZonos] Retrieve new test public token ${r}`,"info"),r):(b("[ZONOS - loadZonos] No test public key credential. Keep using production key"),null)})();if(w&&(m(`[ZONOS - loadZonos] Using test API key: ${w} for test mode`,"info"),D.zonosApiKey=w),!D.cartId){const{json:o,zonosMode:n}=await(async()=>{if(window.Zonos.cartSettings)return m("Reusing cached zonos settings"),{errors:[],json:window.Zonos.cartSettings,zonosMode:window.Zonos.zonosMode};const o=e(),n=new URLSearchParams;o.overrideShouldEnabledCustomAddress&&n.set("overrideShouldEnabledCustomAddress",o.overrideShouldEnabledCustomAddress);const r=t();r&&n.set("zCountry",r);const{errors:s,json:i,zonosMode:a}=await C(`/api/zonos-elements/zonos-settings?${n.toString()}`);return s.length?(b("Error occurred when getting zonos settings. If this is not an unauthorized error, it will use user settings or default settings"),{errors:s,json:null,zonosMode:a}):{errors:[],json:i,zonosMode:a}})();(null==o?void 0:o.appearanceSettings)&&(null==o?void 0:o.checkoutSettings)&&(null==o?void 0:o.helloSettings)&&(null==o?void 0:o.organization)&&(m("[ZONOS - loadZonos] Prefetching zonos settings","info"),D.cartSettings={appearanceSettings:o.appearanceSettings,checkoutSettings:o.checkoutSettings,credentialTokenId:D.zonosApiKey,genericSettings:o.genericSettings,helloSettings:o.helloSettings,inclusivePriceConfigurations:o.inclusivePriceConfigurations,landedCostSettings:o.landedCostSettings,onlineStoreSettings:o.onlineStoreSettings,organization:o.organization,organizationId:(null===(r=o.organization)||void 0===r?void 0:r.id)||"",shippingZones:o.shippingZones},D.zonosMode=n)}D.handlePerformBlurCurrency();const g=D.storeId||o.storeId||0;m(`[ZONOS - loadZonos] Store ID: ${g}`,"info");const y=new URLSearchParams;y.set("storeId",g.toString()),window.location.search.includes("_enableStoreVersionPinned=1")&&y.set("_enableStoreVersionPinned","1");const{errors:f,json:h}=await C(`/api/get-store-version?${y.toString()}`);if(f.length||!h)return m("[ZONOS - loadZonos] Error getting store version, loading the latest version.","error"),void D.injectZonos({initConfig:o,vercelUrl:"https://v1.4.2.js.zonos.com",version:null});const{isDifferent:v,source:S,version:z}=h;if(m(`[ZONOS - loadZonos] Store version: ${z}, source: ${S}`,"info"),v){m(`[ZONOS - loadZonos] Updating saved store version to ${z}`,"info");const e={storeId:g,version:z};C(`/api/set-store-version?${y.toString()}`,{body:e,method:"POST"}).catch(e=>b("Unable to save store's vesrion",e))}if(!c){const{currentLoadScriptUrl:e,isForceLoadVersionDomain:n,isWhiteListed:t}=(({loadScriptSrc:e})=>{if(!e)return{currentLoadScriptUrl:"",isForceLoadVersionDomain:!1,isWhiteListed:!1};const o=new URL(e).origin,n=["dev.elements.zonos.com","dev.assets-checkout.zonos.com",".js.zonos.com","zonos-elements-test-git","zonos-elements-git"].some(e=>o.includes(e)),t=["qa.js.zonos.com"].some(e=>o.includes(e));return{currentLoadScriptUrl:o,isForceLoadVersionDomain:t,isWhiteListed:n}})({loadScriptSrc:u}),r=t&&!n?e:`${"alpha"===z?"alpha":`v${z}`}.js.zonos.com`,s=t&&!n?null:z;m("[ZONOS - loadZonos] injecting zonos script","info",{currentLoadScriptUrl:e,isForceLoadVersionDomain:n,isWhiteListed:t,loadUrl:r,loadVersion:s,version:z}),D.injectZonos({initConfig:o,vercelUrl:r,version:s})}},(void 0===window.Zonos||window.isZonosPreview&&!window.Zonos.doneInit)&&(window.Zonos=M)})();
|
|
1
|
+
(function(){"use strict";const e=()=>{const e=new URLSearchParams(window.location.search);return{overrideShouldEnabledCustomAddress:window.Zonos.overrideUseCustomAddressForm?"1":e.get("overrideShouldEnabledCustomAddress")}},o=e=>/^[A-Z]{2}$/.test(e),n=e=>{try{const n=e.getItem("zonos--country");return n&&o(n)?n:null}catch(e){return null}},t=()=>(e=>{const n=new URLSearchParams(e||window.location.search),t=e=>{const t=n.get(e);return t&&o(t)?t:null},r=t("zCountry"),s=t("country"),i=t("customerCountry");return r||s||i})(new URL(window.location.href).searchParams)||(()=>{var e;return null!==(e=n(window.localStorage))&&void 0!==e?e:n(window.sessionStorage)})();function r(e,o){var n={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&o.indexOf(t)<0&&(n[t]=e[t]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(t=Object.getOwnPropertySymbols(e);r<t.length;r++)o.indexOf(t[r])<0&&Object.prototype.propertyIsEnumerable.call(e,t[r])&&(n[t[r]]=e[t[r]])}return n}"function"==typeof SuppressedError&&SuppressedError;const s=()=>window.location.search.includes("zonosStagingMode=1"),i=()=>{var e;return(null===(e=window.Zonos.zonosApiKey)||void 0===e?void 0:e.includes("test"))||window.location.search.includes("zonosTestMode=1")},a=["cloudflare","vercel"],d=a[0],l={cloudflare:"https://route.elements.zonos.com",vercel:"https://route.js.zonos.com"},c=l[d],u=(e=d)=>{const o=a.indexOf(e),n=a[o+1];return n||null},p=e=>{if("string"==typeof e)try{return JSON.parse(e)}catch(e){return null}return null},w=performance.now(),g=e=>{if("string"==typeof e)return e;try{return JSON.stringify(e)}catch(o){if(e&&"function"==typeof e.toString){return e.toString()}return"Unable to stringify info"}},m=(e,o,...n)=>{var t,r;const{elapsedTimePretty:s}=(()=>{const e=performance.now()-w,o=e>1e3?`${(e/1e3).toFixed(2)}s`:`${e.toFixed(2)}ms`;return{elapsedTime:e,elapsedTimePretty:o}})(),i=[`(${s})`,...n];i.map(g).join(" ");if(!(!!(null===(t=window.Zonos)||void 0===t?void 0:t.debug)||!!window.location.search.match(/\?.*(&*)zonosDebug=1/)))return;let a=document.querySelector("iframe#zonos---debug-logging-iframe");a||(a=document.createElement("iframe"),a.id="zonos---debug-logging-iframe",a.style.display="none",a.style.opacity="0",a.style.position="absolute",a.style.top="-9999px",a.style.left="-9999px",a.style.width="1px",a.style.height="1px",a.style.border="none",a.style.overflow="hidden",a.style.visibility="hidden",document.body.appendChild(a));const d=(null===(r=a.contentWindow)||void 0===r?void 0:r.window.console)||window.console;switch(o){case"warn":d.warn(e,...i);break;case"info":d.info(e,...i);break;case"error":d.error(e,...i);break;default:d.groupCollapsed(e,...i),d.trace(),d.groupEnd()}},y=()=>{const e="connection"in window.navigator?window.navigator.connection:null,o="mozConnection"in window.navigator?window.navigator.mozConnection:null,n="webkitConnection"in window.navigator?window.navigator.webkitConnection:null;return e||o||n},f=["/api/zonos-elements/log-script-load","/api/zonos-elements/log-bulk-load-data"],h=({apiPath:e,apiType:o,loadTimeInternal:n,loadTimeTotal:t})=>{if(f.includes(e))return;const r=t-n;if(r<0)return;const s=e.split("?")[0]||e,i=(()=>{const e="userAgentData"in window.navigator?window.navigator.userAgentData:null,o=y();return{connectionDownlink:null==o?void 0:o.downlink,connectionEffectiveType:null==o?void 0:o.effectiveType,connectionRtt:null==o?void 0:o.rtt,connectionSaveData:null==o?void 0:o.saveData,isHostedCheckout:window.Zonos.isLegacyCheckout,screenHeight:window.screen.height,screenWidth:window.innerWidth,userAgent:e&&e.brands.length>0?e:window.navigator.userAgent}})(),a="object"==typeof i.userAgent&&i.userAgent.mobile,d={apiType:o,connectionType:i.connectionEffectiveType,href:s,isHostedCheckout:window.Zonos.isLegacyCheckout,isMobile:(l=a,l||window.innerWidth<890),loadTimeBrowserApi:r,loadTimeInternal:n,loadTimeTotal:t,metadata:Object.assign({},i),screenHeight:i.screenHeight,screenWidth:i.screenWidth,userAgent:"string"==typeof i.userAgent?i.userAgent:i.userAgent.brands.map(e=>e.brand).filter(e=>!/Not.*A.*Brand.*/.test(e)).join(",")};var l;window.Zonos.loadTimeApiInfoList.push(d)},v=async({endpoint:e,errors:o,metadata:n,shouldPostReleaseErrorReporting:t})=>{if(m("sendErrorLog","warn",e,n,o),t){const e=Number(window.Zonos.releaseDate);if((new Date).getTime()-e>36e5)return}const r="userAgentData"in window.navigator?window.navigator.userAgentData:null,s={endpoint:e,errors:o,href:window.location.href,metadata:Object.assign({appVersion:window.Zonos.version,domain:window.Zonos.domain,publicCredential:window.Zonos.zonosApiKey,userAgent:r&&r.brands.length>0?r:window.navigator.userAgent},n)};try{fetch(`${c}/api/zonos-elements/log-error`,{body:JSON.stringify(s),headers:{"Zonos-Referer":window.location.hostname},method:"POST"})}catch(e){const o=u();if(!o)return;fetch(`${l[o]}/api/zonos-elements/log-error`,{body:JSON.stringify(s),method:"POST"})}},S=async({response:e,shouldLog:o=!0,shouldThrow:n=!1})=>{try{const o=await e.text(),n=p(o);if(!n)throw new Error(`Failed to parse content: ${o}`);return n}catch(e){if(n)throw e;return o&&console.error(e),null}},z=async({basePathType:e,options:o,path:n})=>{let t;const r=window.Zonos.zonosQaUrlApi||l[e]||d,s=new URL(r+n),i=window.Zonos.cartId?`${window.location.hostname}-${window.Zonos.cartId}`:window.location.hostname;s.searchParams.set("zToken",(e=>{try{return btoa(e).replace(/=/g,"")}catch(o){return e.replace(/[^A-Za-z0-9]/g,"").split("").reverse().join("")}})(i));try{t=await fetch(s.toString(),o)}catch(e){if(e instanceof Error)return{baseUrl:r,errors:[{message:e.message,type:"unknown"}],json:null,response:null,zonosMode:null};return{baseUrl:r,errors:[{message:"Failed to fetch",type:"unknown"}],json:null,response:null,zonosMode:null}}const a=t.headers.get("Zonos-Mode"),c=window.Zonos.zonosQaUrl;if(!window.Zonos.modeAlerted&&a&&c&&(window.Zonos.modeAlerted=!0),t.ok){return{baseUrl:r,errors:[],json:await S({response:t}),response:t,zonosMode:a}}const u=t.status.toString();try{const e=await S({response:t,shouldThrow:!0});if(e&&"errors"in e&&Array.isArray(e.errors)){const o=e.errors;return{baseUrl:r,errors:o.map(e=>"string"==typeof e?{message:e,type:u}:e),json:null,response:t,zonosMode:a}}return{baseUrl:r,errors:[{message:JSON.stringify(e),type:u}],json:null,response:t,zonosMode:a}}catch(e){return{baseUrl:r,errors:[{message:`${u}: ${"Unknown error"}`,type:u}],json:null,response:null,zonosMode:a}}},Z=async({basePathType:e,options:o,path:n})=>{var t,s;const i=n.startsWith("/api/bigcommerce")?"vercel":e,a=performance.now(),d=await z({basePathType:i,options:o,path:n}),{errors:c,response:w}=d,g=r(d,["errors","response"]),y=performance.now()-a;m(`${n} (${y.toFixed(2)}ms)`,"info");const f=null==w?void 0:w.headers.get("Zonos-Duration");200===(null==w?void 0:w.status)&&h({apiPath:n,apiType:i,loadTimeInternal:f?Number(f):0,loadTimeTotal:y});const S=u(i),C=c.find(({type:e})=>"unknown"===e),b=c.find(({message:e})=>"string"==typeof e&&(e.includes("signal is aborted")||e.includes("The operation was aborted")||e.includes("Fetch is aborted"))),I=!!C||404===(null==w?void 0:w.status)||500===(null==w?void 0:w.status),L=S&&I;return I&&!b&&v({endpoint:l[i]+n,errors:c.map(({message:e})=>`API: ${e}`),metadata:{currentBasePath:i,nextFallbackApiType:S,requestHeaders:null==o?void 0:o.headers,requestPayload:p(null===(t=null==o?void 0:o.body)||void 0===t?void 0:t.toString())||(null===(s=null==o?void 0:o.body)||void 0===s?void 0:s.toString()),shouldCallFallback:L,status:null==w?void 0:w.status,statusText:null==w?void 0:w.statusText},shouldPostReleaseErrorReporting:!0}),L?(m(`=== "${n}" failed to fetch, trying next fallback ${S}`),Z({basePathType:S,options:o,path:n})):Object.assign({errors:c,response:w},g)},C=async(e,o)=>{const n=r(o||{},[]),t=n.body?JSON.stringify(n.body):void 0,a=n.method||"GET",l=Object.assign({"Content-Type":"application/json","Zonos-Is-BigCommerce":window.Zonos.isBigCommerce.toString(),"Zonos-Referer":window.location.hostname,"Zonos-Staging-Mode":s()?"1":void 0,"Zonos-Test-Mode":i()?"1":void 0,"Zonos-Version":window.Zonos.version,credentialtoken:window.Zonos.zonosApiKey||"Empty credential token from zonos-elements"},n.headers);Object.keys(l).forEach(e=>void 0===l[e]&&delete l[e]);const c=Object.assign(Object.assign({},n),{body:"GET"===a?void 0:t,headers:l,method:a}),u=new URLSearchParams(window.location.search).get("useFallbackApi");return Z({basePathType:u||d,options:c,path:e})},b=(e,...o)=>{m(e,"error",...o)},I=["jsdelivr","cdnjs","unpkg","vercel"],L=e=>{if(!e)return null;const o=new URL(e).searchParams.get("zonosQaUrl");if(!o)return null;return/[^a-zA-Z0-9-_]+/.test(o)?null:o},O=/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/,A=new RegExp(`^${O.source}$`),T=new RegExp(`^cart_${O.source}$`),k=/^[a-zA-Z0-9]{2,}$/,U=/^cart_[a-zA-Z0-9]{2,}$/,j=e=>e?e.includes("undefined")?{isDgsCartId:!1,isLegacyCartId:!1}:U.test(e)?{isDgsCartId:!0,isLegacyCartId:!1}:k.test(e)?{isDgsCartId:!1,isLegacyCartId:!0}:T.test(e)?{isDgsCartId:!0,isLegacyCartId:!1}:A.test(e)?{isDgsCartId:!1,isLegacyCartId:!0}:{isDgsCartId:!1,isLegacyCartId:!1}:{isDgsCartId:!1,isLegacyCartId:!1},E=async({cartId:o,retries:n})=>{const t=i(),r=e(),s=(()=>{const e=new URLSearchParams(window.location.search).get("validityToken");if(!e||!/^[A-Za-z0-9+/]+={0,2}$/.test(e)||e.length%4!=0)return null;try{return atob(e),e}catch(e){return null}})()||void 0,a=new URLSearchParams;r.overrideShouldEnabledCustomAddress&&a.set("overrideShouldEnabledCustomAddress",r.overrideShouldEnabledCustomAddress);const{errors:d,json:l,zonosMode:c}=await C(`/api/zonos-elements/get-cart?${a.toString()}`,{body:{isTestMode:t,renewCartExpirationToken:s,tempCartUUID:o},headers:{"Content-Type":"application/json"},method:"POST"}),u=!l||d.length;return u&&n?(m("[ZONOS - loadZonos] temp cart not ready, retrying in 1 second","info",{retries:n}),await new Promise(e=>setTimeout(e,500)),E({cartId:o,retries:n-1})):u?null:Object.assign(Object.assign({},l),{zonosMode:c})},$="z--blur",P=async()=>{const e=window.zonosBlurCurrencyOnInitIntervalId;if(!e)return;await new Promise(e=>setTimeout(e,500)),clearInterval(e);document.querySelectorAll(`.${$}`).forEach(e=>{e.classList.remove($)}),window.zonosBlurCurrencyOnInitIntervalId=void 0},N=({currencySelector:e,specificSelector:o})=>{if(e||o)if(o)o.classList.add($);else{document.querySelectorAll([e].filter(Boolean).join(",")).forEach(e=>{e.classList.add($)})}};var D;const R=(()=>{const e=window&&window.location.href.includes("forceLoadCdn");if("undefined"==typeof window||e)return null;const o=L(window.location.href),n="https://v1.5.0.js.zonos.com";if(!o&&(n.includes("test.")||n.includes("test-")))return n;if(!o&&["dev.demo.elements.zonos.com","dev.checkout.elements.zonos.com","dev.storybook.elements.zonos.com"].includes(window.location.hostname))return"https://dev.elements.zonos.com";if(!o)return null;if("dev-elements"===o)return"https://dev.elements.zonos.com";if("worker"===o)return null;const t=`https://${o}.preview.js.zonos.com`;return m(`[ZONOS-WARNING] using '${t}' for loading elements script`,"warn"),fetch(t).then(()=>{window.sessionStorage.removeItem("zonos--checkout-session-id"),window.sessionStorage.removeItem("zonos--client-secret")}).catch(()=>{alert(`[ZONOS-WARNING] '${t}' IS NO LONGER AVAILABLE. REMOVING zonosQaUrl PARAM AND RELOADING THE PAGE`);const e=new URLSearchParams(window.location.search);e.delete("zonosQaUrl");const{pathname:o}=window.location,n=`${o}?${e.toString()}`;return window.history.replaceState(window.history.state,"",n),window.location.reload(),null}),t})(),F=(()=>{const e=(e=>{if(!e)return null;const o=new URL(e).searchParams.get("zonosQaUrlApi");return o?/[^a-zA-Z0-9-_]+/.test(o)?null:o:null})(window.location.href),o=L(window.location.href),n=e||o;if(!n&&["dev.demo.elements.zonos.com","dev.checkout.elements.zonos.com"].includes(window.location.hostname))return"https://dev.demo.elements.zonos.com";if(!n)return null;if("dev-elements"===n)return"https://dev.demo.elements.zonos.com";if("worker"===n)return"https://worker.iglobalstores.com";if(!e)return null;const t=`https://${e}.route.js.zonos.com`;return m(`[ZONOS-WARNING] using '${t}' for serverless API`,"warn"),t})(),B=Date.now();class M{}D=M,M.isNpm=!1,M.isBigCommerce=!1,M.googleAnalyticId=null,M.googleAnalyticReady=!1,M.facebookPixelId=null,M.facebookPixelReady=!1,M.requested=!1,M.zonosMode=null,M.cartData=null,M.startLoadTime=B,M.overrideUseCustomAddressForm=!1,M.domain=window.location!=window.parent.location?document.referrer:document.location.hostname,M.version="v1.5.0",M.isLegacyCheckout=!1,M.isCollect=!1,M.isInvoice=!1,M.legacyStoreLogo=null,M.legacyStoreFavicon=null,M.parallelLoadTimes=[],M.parallelLoadState="off",M.releaseDate="1792773618734",M.loadTimeApiInfoList=[],M.cartSettings=null,M.loadScriptLogHandler=async({cdnLoadTime:e,fallbackLoadTime:o,isError:n,metadata:t,scriptLoadUrl:r,storeId:s,type:i})=>{try{const e=window.performance.getEntriesByType("resource").find(e=>{const o=e;return o.name.includes(r)&&"script"===o.initiatorType});null==e||e.transferSize;(async()=>{})((e&&(null==e?void 0:e.duration)>0?parseFloat(e.duration.toFixed(2)):parseFloat(o.toFixed(2)),Object.assign({decodedBodySize:null==e?void 0:e.decodedBodySize,encodedBodySize:null==e?void 0:e.encodedBodySize,fallbackLoadTime:o,isError:!!n},t)))}catch(e){}},M.loadScriptLogParallelHandler=async e=>{try{if(D.parallelLoadTimes.push(e),2===D.parallelLoadTimes.length){const e=D.parallelLoadTimes.find(e=>"vercel"===e.type),o=D.parallelLoadTimes.find(e=>"jsdelivr"===e.type);if(!e||!o)return;if(e.isError&&o.isError)return void v({endpoint:`<${e.scriptLoadUrl}> <${o.scriptLoadUrl}>`,errors:["Failed to fetch both Vercel and jsdelivr CDN. Perhaps network issue on customer site."],metadata:{cdnLoadTime:o.fallbackLoadTime,cdnType:o.type,vercelLoadTime:e.fallbackLoadTime}});D.loadScriptLogHandler({cdnLoadTime:o.fallbackLoadTime,fallbackLoadTime:e.fallbackLoadTime,isError:e.isError,metadata:{cdnScriptFallbackTime:o.fallbackLoadTime,cdnScriptIsError:!!o.isError,cdnScriptLoadUrl:o.scriptLoadUrl,cdnScriptType:o.type},scriptLoadUrl:e.scriptLoadUrl,storeId:e.storeId,type:e.type})}}catch(e){}},M.legacyCheckoutErrorHandler=({message:e,metadata:o})=>{b(`[ZONOS - loadZonos] ${e}`),v({endpoint:"LegacyCheckoutInit",errors:[e],metadata:Object.assign(Object.assign({},o),{tempCartUUID:D.cartId})}),document.dispatchEvent(new CustomEvent("legacyCheckoutError",{detail:e}))},M.getGithubCdn=({type:e,version:o})=>{let n="https://cdn.jsdelivr.net/npm/@zonos/elements@1.5.0";"cdnjs"===e?n="https://cdnjs.cloudflare.com/ajax/libs/zonos-elements/1.5.0":"unpkg"===e&&(n="https://unpkg.com/@zonos/elements@1.5.0");return o&&"alpha"!==o?n.replace(/@zonos\/elements@(.+)/,`@zonos/elements@${o}`).replace(/\/zonos-elements\/(.+)/,`/zonos-elements/${o}`):n},M.injectZonos=({cdnType:e="jsdelivr",initConfig:o,parallelLoaded:n,vercelUrl:t,version:r})=>{var s;o=Object.assign(Object.assign({},o),{zonosApiKey:D.zonosApiKey}),r&&(window.Zonos.version=`v${r}`);const i="vercel"===e?t:D.getGithubCdn({type:e,version:r}),a=R||i,d=a.replace("https://","").replace("http://",""),l=document.createElement("script"),c=r&&r<"1.2.5"?"loadZonos.js":"zonos.js";l.src=`https://${d}/dist/scripts/${c}?timestamp=${Date.now()}`,m(`[ZONOS - loadZonos] Injecting "${c}" from "${d}"`,"info");const u="4g"===(null===(s=y())||void 0===s?void 0:s.effectiveType),p=["dev.elements.zonos.com","zonos.com"].some(e=>window.location.href.includes(e)),w=I[0]===e,g=I[1],f="on"===D.parallelLoadState&&u&&w&&g&&!p;f&&D.injectZonos({cdnType:g,initConfig:o,parallelLoaded:!0,vercelUrl:t,version:r});const h=performance.now();l.addEventListener("load",async()=>{if(f||n?D.loadScriptLogParallelHandler({fallbackLoadTime:performance.now()-h,scriptLoadUrl:l.src,storeId:D.storeId||0,type:e}):D.loadScriptLogHandler({fallbackLoadTime:performance.now()-h,scriptLoadUrl:l.src,storeId:D.storeId||0,type:e}),D.isBigCommerce||(D.isBigCommerce=!!window.stencilBootstrap||!!window.bcConfig||!!document.querySelector('script[src*="bigcommerce.com"]')),window.Zonos.isNpm=!1,window.Zonos.zonosQaUrl=R,window.Zonos.zonosQaUrlApi=F,window.Zonos.zonosMode=D.zonosMode,window.Zonos.isBigCommerce=D.isBigCommerce,window.Zonos.loadTimeApiInfoList=D.loadTimeApiInfoList,window.Zonos.overrideUseCustomAddressForm=D.overrideUseCustomAddressForm,window.Zonos.startLoadTime=D.startLoadTime,D.cartSettings&&(window.Zonos.cartSettings=D.cartSettings),D.cartId){const e=D.isCollect?"Collect":"hosted Checkout";if(!D.zonosApiKey)throw D.legacyCheckoutErrorHandler({message:`zonosApiKey is missing to initiate ${e}`}),new Error(`zonosApiKey is required for ${e}`);if(!D.cartData)throw D.legacyCheckoutErrorHandler({message:`cartData is missing to initiate ${e}`}),new Error(`cartData is required for ${e}`);if(D.legacyStoreFavicon&&D.isLegacyCheckout&&!D.isCollect)try{if(200!==(await fetch(D.legacyStoreFavicon)).status)throw new Error("Custom favicon is not available");const e=document.createElement("link");e.rel="shortcut icon",e.type="image/x-icon",e.href=D.legacyStoreFavicon,document.head.appendChild(e)}catch(e){}window.Zonos.cartData=D.cartData,window.Zonos.isLegacyCheckout=D.isLegacyCheckout,window.Zonos.cartSettings=D.cartSettings,window.Zonos.isCollect=D.isCollect,window.Zonos.isInvoice=D.isInvoice;const n=Object.assign(Object.assign({},o),{appearance:Object.assign(Object.assign({},o.appearance),{logoUrl:D.isLegacyCheckout&&!D.isCollect&&D.legacyStoreLogo?D.legacyStoreLogo:void 0}),zonosApiKey:D.zonosApiKey});o=n}window.Zonos.version&&(m(`[ZONOS - loadZonos] Execute "Zonos.init" from "${c}" from "${d}"`,"info"),window.Zonos.init(o))}),l.addEventListener("error",async()=>{const s=(e=>{const o=I.indexOf(e);return I[o+1]||null})(e);if(!f&&!n){if(!s)return;D.injectZonos({cdnType:s,initConfig:o,vercelUrl:t,version:r})}if(["localhost",".zonos.com"].some(e=>window.location.href.includes(e))||R)return;if(f||n)return void D.loadScriptLogParallelHandler({fallbackLoadTime:performance.now()-h,isError:!0,scriptLoadUrl:l.src,storeId:D.storeId||0,type:e});["unpkg","cdnjs","vercel"].includes(e)?v({endpoint:l.src,errors:[`zonos.js - Failed to fetch ${e} CDN.`],metadata:{cdnLoadTime:performance.now()-h,cdnType:e,loadUrl:a,version:r},shouldPostReleaseErrorReporting:!!s}):v({endpoint:l.src,errors:["[Info] Using alternative CDN. Failed to fetch script"],metadata:{cdnType:e,vercelLoadTime:performance.now()-h}})}),document.head.appendChild(l)},M.handlePerformBlurCurrency=()=>{var e,o,n;!(null===(o=null===(e=D.cartSettings)||void 0===e?void 0:e.genericSettings)||void 0===o?void 0:o.blurCurrencyOnInit)?P():(window.zonosBlurCurrencyOnInitCurrencySelector=window.zonosBlurCurrencyOnInitCurrencySelector||(null===(n=D.cartSettings)||void 0===n?void 0:n.helloSettings.currencyElementSelector),(()=>{if("undefined"==typeof window)return;if(window.zonosBlurCurrencyOnInitIntervalId)return;N({currencySelector:window.zonosBlurCurrencyOnInitCurrencySelector});const e=setInterval(()=>{N({currencySelector:window.zonosBlurCurrencyOnInitCurrencySelector})},10);window.zonosBlurCurrencyOnInitIntervalId=e,setTimeout(()=>{P()},7e3)})())},M.init=async o=>{var n,r;if(m("=== Init zonos script release date","info",D.releaseDate),R&&!window.isZonosPreview){m(`[ZONOS - loadZonos] Re-inject "loadZonos.js" from zonosQaUrl: ${R}`,"info");const e=document.createElement("script");return e.src=`${R}/dist/scripts/loadZonos.js?timestamp=${Date.now()}`,document.head.appendChild(e),e.addEventListener("load",()=>{window.Zonos.isNpm=!1,window.Zonos.isBigCommerce=D.isBigCommerce,window.Zonos.isLegacyCheckout=D.isLegacyCheckout,window.Zonos.startLoadTime=D.startLoadTime,window.Zonos.init(o)}),e.addEventListener("error",()=>{alert(`[ZONOS - loadZonos] Failed to load "loadZonos.js" from zonosQaUrl: ${R}`)}),void(window.isZonosPreview=!0)}const a=new URLSearchParams(window.location.search).get("tempCartUUID"),{isDgsCartId:d,isLegacyCartId:l}=j(a);if(a&&!l&&!d)return void D.legacyCheckoutErrorHandler({message:`[ZONOS - loadZonos] invalid &tempCartUUID=${a}`,metadata:{invalidCartId:!0}});D.cartId=a;const c=document.querySelector('script[src*="/zonos.js"]'),u=null===(n=document.querySelector("script[src*='/loadZonos.js']"))||void 0===n?void 0:n.src;m(`[ZONOS - init] first load script src: ${u}`,"info"),window.Zonos.zonosQaUrl=R,window.Zonos.zonosQaUrlApi=F,window.Zonos.zonosQaUrl&&m(`[ZONOS - init] using zonosQaUrl: ${window.Zonos.zonosQaUrl}`,"info"),window.Zonos.zonosQaUrlApi&&m(`[ZONOS - init] using zonosQaUrlApi: ${window.Zonos.zonosQaUrlApi}`,"info");const p=null==u?void 0:u.includes("timestamp=");if(!(D.isNpm||u&&p))return void b("[ZONOS - loadZonos] A timestamp is required as a query parameter in the loadZonos.js script source. This timestamp ensures that you are loading the most recent version of the script, avoiding any cached versions.");if(c||!u||D.requested)return void m("[ZONOS - loadZonos] script is already loaded or requested","info");if(!o.zonosApiKey&&!D.cartId)return D.legacyCheckoutErrorHandler({message:"Zonos API key is required unless `tempCartUUID` is provided in url query params."}),void b("Zonos API key is required unless `tempCartUUID` is provided in url query params.");if(D.requested=!0,D.zonosApiKey=o.zonosApiKey,D.storeId=o.storeId,D.cartId){const e=await(async e=>{const{isDgsCartId:o,isLegacyCartId:n}=j(e);if(!n&&!o)return b("[ZONOS - loadZonos] invalid cart id"),null;const t=await E({cartId:e,retries:5});return m("[ZONOS - loadZonos] getting temp cart data","info",t),t?(window.Zonos.storeId=t.cartData.storeId,window.Zonos.zonosApiKey=t.cartData.credentialToken,window.Zonos.zonosMode=t.zonosMode,{cartData:t.cartData,settings:t.settings,storeFavicon:t.storeFaviconUrl,storeId:t.cartData.storeId,storeLogo:t.storeLogoUrl,zonosApiKey:t.cartData.credentialToken}):(b("[ZONOS - loadZonos] Error getting temp cart data, stop checkout process."),null)})(D.cartId);if(!e)throw D.legacyCheckoutErrorHandler({message:"Error getting cart data"}),new Error("Error getting cart data");D.cartData=e.cartData,D.cartSettings=e.settings,D.legacyStoreLogo=e.storeLogo,D.legacyStoreFavicon=e.storeFavicon,D.storeId=e.storeId,D.zonosApiKey=e.zonosApiKey,D.isCollect=e.cartData.type.includes("COLLECT"),D.isInvoice="INVOICE"===e.cartData.type}if(!D.zonosApiKey)return void b('"zonosApiKey" is required to initialize Zonos');const w=await(async()=>{const e=i(),o=s();if(!e&&!o||!window.Zonos.zonosApiKey)return null;if(m("[ZONOS - loadZonos] Attempt test public credential","info"),window.Zonos.zonosApiKey.includes("credential_test"))return m("[ZONOS - loadZonos] Test mode is enabled but the API key is already a test key","info"),null;const{errors:n,json:t}=await C("/api/get-test-public-credential");if(n.length||!t)return b("[ZONOS - loadZonos] Failed to get test public credential. Keep using production key",n),null;const r=t.publicCredential;return r?(m(`[ZONOS - loadZonos] Retrieve new test public token ${r}`,"info"),r):(b("[ZONOS - loadZonos] No test public key credential. Keep using production key"),null)})();if(w&&(m(`[ZONOS - loadZonos] Using test API key: ${w} for test mode`,"info"),D.zonosApiKey=w),!D.cartId){const{json:o,zonosMode:n}=await(async()=>{if(window.Zonos.cartSettings)return m("Reusing cached zonos settings"),{errors:[],json:window.Zonos.cartSettings,zonosMode:window.Zonos.zonosMode};const o=e(),n=new URLSearchParams;o.overrideShouldEnabledCustomAddress&&n.set("overrideShouldEnabledCustomAddress",o.overrideShouldEnabledCustomAddress);const r=t();r&&n.set("zCountry",r);const{errors:s,json:i,zonosMode:a}=await C(`/api/zonos-elements/zonos-settings?${n.toString()}`);return s.length?(b("Error occurred when getting zonos settings. If this is not an unauthorized error, it will use user settings or default settings"),{errors:s,json:null,zonosMode:a}):{errors:[],json:i,zonosMode:a}})();(null==o?void 0:o.appearanceSettings)&&(null==o?void 0:o.checkoutSettings)&&(null==o?void 0:o.helloSettings)&&(null==o?void 0:o.organization)&&(m("[ZONOS - loadZonos] Prefetching zonos settings","info"),D.cartSettings={appearanceSettings:o.appearanceSettings,checkoutSettings:o.checkoutSettings,credentialTokenId:D.zonosApiKey,genericSettings:o.genericSettings,helloSettings:o.helloSettings,inclusivePriceConfigurations:o.inclusivePriceConfigurations,landedCostSettings:o.landedCostSettings,onlineStoreSettings:o.onlineStoreSettings,organization:o.organization,organizationId:(null===(r=o.organization)||void 0===r?void 0:r.id)||"",shippingZones:o.shippingZones},D.zonosMode=n)}D.handlePerformBlurCurrency();const g=D.storeId||o.storeId||0;m(`[ZONOS - loadZonos] Store ID: ${g}`,"info");const y=new URLSearchParams;y.set("storeId",g.toString()),window.location.search.includes("_enableStoreVersionPinned=1")&&y.set("_enableStoreVersionPinned","1");const{errors:f,json:h}=await C(`/api/get-store-version?${y.toString()}`);if(f.length||!h)return m("[ZONOS - loadZonos] Error getting store version, loading the latest version.","error"),void D.injectZonos({initConfig:o,vercelUrl:"https://v1.5.0.js.zonos.com",version:null});const{isDifferent:v,source:S,version:z}=h;if(m(`[ZONOS - loadZonos] Store version: ${z}, source: ${S}`,"info"),v){m(`[ZONOS - loadZonos] Updating saved store version to ${z}`,"info");const e={storeId:g,version:z};C(`/api/set-store-version?${y.toString()}`,{body:e,method:"POST"}).catch(e=>b("Unable to save store's vesrion",e))}if(!c){const{currentLoadScriptUrl:e,isForceLoadVersionDomain:n,isWhiteListed:t}=(({loadScriptSrc:e})=>{if(!e)return{currentLoadScriptUrl:"",isForceLoadVersionDomain:!1,isWhiteListed:!1};const o=new URL(e).origin,n=["dev.elements.zonos.com","dev.assets-checkout.zonos.com",".js.zonos.com","zonos-elements-test-git","zonos-elements-git"].some(e=>o.includes(e)),t=["qa.js.zonos.com"].some(e=>o.includes(e));return{currentLoadScriptUrl:o,isForceLoadVersionDomain:t,isWhiteListed:n}})({loadScriptSrc:u}),r=t&&!n?e:`${"alpha"===z?"alpha":`v${z}`}.js.zonos.com`,s=t&&!n?null:z;m("[ZONOS - loadZonos] injecting zonos script","info",{currentLoadScriptUrl:e,isForceLoadVersionDomain:n,isWhiteListed:t,loadUrl:r,loadVersion:s,version:z}),D.injectZonos({initConfig:o,vercelUrl:r,version:s})}},(void 0===window.Zonos||window.isZonosPreview&&!window.Zonos.doneInit)&&(window.Zonos=M)})();
|