@shopify/hydrogen-react 2025.1.4 → 2025.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/browser-dev/CartLineProvider.mjs.map +1 -1
  2. package/dist/browser-dev/CartProvider.mjs.map +1 -1
  3. package/dist/browser-dev/Image.mjs.map +1 -1
  4. package/dist/browser-dev/ModelViewer.mjs.map +1 -1
  5. package/dist/browser-dev/Money.mjs.map +1 -1
  6. package/dist/browser-dev/Video.mjs.map +1 -1
  7. package/dist/browser-dev/codegen.helpers.mjs.map +1 -1
  8. package/dist/browser-dev/optionValueDecoder.mjs.map +1 -1
  9. package/dist/browser-dev/packages/hydrogen-react/package.json.mjs +1 -1
  10. package/dist/browser-dev/storefront-api-constants.mjs +1 -1
  11. package/dist/browser-dev/storefront-api-constants.mjs.map +1 -1
  12. package/dist/browser-dev/useCartAPIStateMachine.mjs.map +1 -1
  13. package/dist/browser-dev/useCartActions.mjs.map +1 -1
  14. package/dist/browser-prod/CartLineProvider.mjs.map +1 -1
  15. package/dist/browser-prod/CartProvider.mjs.map +1 -1
  16. package/dist/browser-prod/Image.mjs.map +1 -1
  17. package/dist/browser-prod/ModelViewer.mjs.map +1 -1
  18. package/dist/browser-prod/Money.mjs.map +1 -1
  19. package/dist/browser-prod/Video.mjs.map +1 -1
  20. package/dist/browser-prod/codegen.helpers.mjs.map +1 -1
  21. package/dist/browser-prod/optionValueDecoder.mjs.map +1 -1
  22. package/dist/browser-prod/packages/hydrogen-react/package.json.mjs +1 -1
  23. package/dist/browser-prod/storefront-api-constants.mjs +1 -1
  24. package/dist/browser-prod/storefront-api-constants.mjs.map +1 -1
  25. package/dist/browser-prod/useCartAPIStateMachine.mjs.map +1 -1
  26. package/dist/browser-prod/useCartActions.mjs.map +1 -1
  27. package/dist/node-dev/CartLineProvider.js.map +1 -1
  28. package/dist/node-dev/CartLineProvider.mjs.map +1 -1
  29. package/dist/node-dev/CartProvider.js.map +1 -1
  30. package/dist/node-dev/CartProvider.mjs.map +1 -1
  31. package/dist/node-dev/Image.js.map +1 -1
  32. package/dist/node-dev/Image.mjs.map +1 -1
  33. package/dist/node-dev/ModelViewer.js.map +1 -1
  34. package/dist/node-dev/ModelViewer.mjs.map +1 -1
  35. package/dist/node-dev/Money.js.map +1 -1
  36. package/dist/node-dev/Money.mjs.map +1 -1
  37. package/dist/node-dev/Video.js.map +1 -1
  38. package/dist/node-dev/Video.mjs.map +1 -1
  39. package/dist/node-dev/codegen.helpers.js.map +1 -1
  40. package/dist/node-dev/codegen.helpers.mjs.map +1 -1
  41. package/dist/node-dev/optionValueDecoder.js.map +1 -1
  42. package/dist/node-dev/optionValueDecoder.mjs.map +1 -1
  43. package/dist/node-dev/packages/hydrogen-react/package.json.js +1 -1
  44. package/dist/node-dev/packages/hydrogen-react/package.json.mjs +1 -1
  45. package/dist/node-dev/storefront-api-constants.js +1 -1
  46. package/dist/node-dev/storefront-api-constants.js.map +1 -1
  47. package/dist/node-dev/storefront-api-constants.mjs +1 -1
  48. package/dist/node-dev/storefront-api-constants.mjs.map +1 -1
  49. package/dist/node-dev/useCartAPIStateMachine.js.map +1 -1
  50. package/dist/node-dev/useCartAPIStateMachine.mjs.map +1 -1
  51. package/dist/node-dev/useCartActions.js.map +1 -1
  52. package/dist/node-dev/useCartActions.mjs.map +1 -1
  53. package/dist/node-prod/CartLineProvider.js.map +1 -1
  54. package/dist/node-prod/CartLineProvider.mjs.map +1 -1
  55. package/dist/node-prod/CartProvider.js.map +1 -1
  56. package/dist/node-prod/CartProvider.mjs.map +1 -1
  57. package/dist/node-prod/Image.js.map +1 -1
  58. package/dist/node-prod/Image.mjs.map +1 -1
  59. package/dist/node-prod/ModelViewer.js.map +1 -1
  60. package/dist/node-prod/ModelViewer.mjs.map +1 -1
  61. package/dist/node-prod/Money.js.map +1 -1
  62. package/dist/node-prod/Money.mjs.map +1 -1
  63. package/dist/node-prod/Video.js.map +1 -1
  64. package/dist/node-prod/Video.mjs.map +1 -1
  65. package/dist/node-prod/codegen.helpers.js.map +1 -1
  66. package/dist/node-prod/codegen.helpers.mjs.map +1 -1
  67. package/dist/node-prod/optionValueDecoder.js.map +1 -1
  68. package/dist/node-prod/optionValueDecoder.mjs.map +1 -1
  69. package/dist/node-prod/packages/hydrogen-react/package.json.js +1 -1
  70. package/dist/node-prod/packages/hydrogen-react/package.json.mjs +1 -1
  71. package/dist/node-prod/storefront-api-constants.js +1 -1
  72. package/dist/node-prod/storefront-api-constants.js.map +1 -1
  73. package/dist/node-prod/storefront-api-constants.mjs +1 -1
  74. package/dist/node-prod/storefront-api-constants.mjs.map +1 -1
  75. package/dist/node-prod/useCartAPIStateMachine.js.map +1 -1
  76. package/dist/node-prod/useCartAPIStateMachine.mjs.map +1 -1
  77. package/dist/node-prod/useCartActions.js.map +1 -1
  78. package/dist/node-prod/useCartActions.mjs.map +1 -1
  79. package/dist/types/CartLineProvider.d.ts +1 -1
  80. package/dist/types/CartProvider.d.ts +2 -2
  81. package/dist/types/Image.d.ts +1 -1
  82. package/dist/types/ModelViewer.d.ts +1 -1
  83. package/dist/types/Money.d.ts +1 -1
  84. package/dist/types/Video.d.ts +1 -1
  85. package/dist/types/codegen.helpers.d.ts +2 -2
  86. package/dist/types/optionValueDecoder.d.ts +2 -2
  87. package/dist/types/storefront-api-constants.d.ts +1 -1
  88. package/dist/types/storefront-api-types.d.ts +2 -2
  89. package/dist/types/useCartAPIStateMachine.d.ts +2 -2
  90. package/dist/types/useCartActions.d.ts +2 -2
  91. package/dist/umd/hydrogen-react.dev.js +2 -2
  92. package/dist/umd/hydrogen-react.dev.js.map +1 -1
  93. package/dist/umd/hydrogen-react.prod.js +2 -2
  94. package/dist/umd/hydrogen-react.prod.js.map +1 -1
  95. package/package.json +1 -1
@@ -268,8 +268,8 @@
268
268
  width
269
269
  height
270
270
  }
271
- `,re="2025-01",Vn="mock.shop",Ve=e=>e.includes(Vn);function Un({storeDomain:e,privateStorefrontToken:t,publicStorefrontToken:n,storefrontApiVersion:r=re,contentType:a}){if(!e)throw new Error(Ue+"`storeDomain` is required when creating a new Storefront client in production.");r!==re&&Nn(`The Storefront API version that you're using is different than the version this build of Hydrogen React is targeting.
272
- You may run into unexpected errors if these versions don't match. Received version: "${r}"; expected version "${re}"`);const i=s=>{const o=(s==null?void 0:s.storeDomain)??e;return o.includes("://")?o:`https://${o}`};return{getShopifyDomain:i,getStorefrontApiUrl(s){const o=i(s),c=o+(o.endsWith("/")?"api":"/api");return Ve(o)?c:`${c}/${(s==null?void 0:s.storefrontApiVersion)??r}/graphql.json`},getPrivateTokenHeaders(s){if(!t&&!(s!=null&&s.privateStorefrontToken)&&!Ve(e))throw new Error(Ue+"You did not pass in a `privateStorefrontToken` while using `createStorefrontClient()` or `getPrivateTokenHeaders()`");return{"content-type":((s==null?void 0:s.contentType)??a)==="graphql"?"application/graphql":"application/json","X-SDK-Variant":"hydrogen-react","X-SDK-Variant-Source":"react","X-SDK-Version":r,"Shopify-Storefront-Private-Token":(s==null?void 0:s.privateStorefrontToken)??t??"",...s!=null&&s.buyerIp?{"Shopify-Storefront-Buyer-IP":s.buyerIp}:{}}},getPublicTokenHeaders(s){if(!n&&!(s!=null&&s.publicStorefrontToken)&&!Ve(e))throw new Error(Ue+"You did not pass in a `publicStorefrontToken` while using `createStorefrontClient()` or `getPublicTokenHeaders()`");const o=(s==null?void 0:s.contentType)??a??"json";return ut(o,r,(s==null?void 0:s.publicStorefrontToken)??n??"")}}}function ut(e,t,n){return{"content-type":e==="graphql"?"application/graphql":"application/json","X-SDK-Variant":"hydrogen-react","X-SDK-Variant-Source":"react","X-SDK-Version":t,"X-Shopify-Storefront-Access-Token":n}}const lt=new Set,Ue="[h2:error:createStorefrontClient] ",Nn=(e,t="warn")=>{lt.has(e)||(console[t](`[h2:${t}:createStorefrontClient] `+e),lt.add(e))},dt={storeDomain:"test",storefrontToken:"abc123",storefrontApiVersion:re,countryIsoCode:"US",languageIsoCode:"EN",getStorefrontApiUrl(){return""},getPublicTokenHeaders(){return{}},getShopifyDomain(){return""}},ft=l.createContext(dt);function Mn(){var e,t,n;if(typeof window>"u")return!1;try{const r=(t=(e=window.performance)==null?void 0:e.getEntriesByType)==null?void 0:t.call(e,"navigation")[0];return!!((n=r==null?void 0:r.serverTiming)!=null&&n.some(a=>a.name==="_sfapi_proxy"))}catch{return!1}}function Fn({children:e,...t}){if(!t.countryIsoCode||!t.languageIsoCode||!t.storeDomain||!t.storefrontToken||!t.storefrontApiVersion)throw new Error("Please provide the necessary props to '<ShopifyProvider/>'");t.storefrontApiVersion!==re&&console.warn(`<ShopifyProvider/>: This version of Hydrogen React is built for Shopify's Storefront API version ${re}, but it looks like you're using version ${t.storefrontApiVersion}. There may be issues or bugs if you use a mismatched version of Hydrogen React and the Storefront API.`);const n=l.useMemo(()=>{const r=t.sameDomainForStorefrontApi??Mn();function a(i){const s=(i==null?void 0:i.storeDomain)??t.storeDomain;return s.includes("://")?s:`https://${s}`}return{...t,sameDomainForStorefrontApi:r,getPublicTokenHeaders(i){return ut(i.contentType,t.storefrontApiVersion,i.storefrontToken??t.storefrontToken)},getShopifyDomain:a,getStorefrontApiUrl(i){const s=r&&typeof window<"u"?window.location.origin:a({storeDomain:(i==null?void 0:i.storeDomain)??t.storeDomain});return`${s}${s.endsWith("/")?"":"/"}api/${(i==null?void 0:i.storefrontApiVersion)??t.storefrontApiVersion}/graphql.json`}}},[t]);return React.createElement(ft.Provider,{value:n},e)}function ce(){const e=l.useContext(ft);if(!e)throw new Error("'useShop()' must be a descendent of <ShopifyProvider/>");return e}const Ne="shopifyCartId",ht="Shopify-Storefront-Id",gt="Shopify-Storefront-Y",yt="Shopify-Storefront-S",Te="_shopify_y",Ce="_shopify_s",Me="X-Shopify-VisitToken",Fe="X-Shopify-UniqueToken",Le={current:null};function ee(e){var n,r,a;let t;if(typeof window<"u"&&typeof window.performance<"u")try{const i=/^https?:\/\/([^/]+)(\/api\/(?:unstable|2\d{3}-\d{2})\/graphql\.json(?=$|\?))?/,s=performance.getEntriesByType("resource");let o;for(let c=s.length-1;c>=0;c--){const u=s[c];if(u.initiatorType!=="fetch")continue;const g=window.location.host,d=u.name.match(i);if(!d)continue;const[,h,f]=d;if(h===g||f&&(h==null?void 0:h.endsWith(`.${g}`))){const E=mt(u);if(E){o=E;break}}}if(o&&(t=o),t?Le.current=t:Le.current&&(t=Le.current),!t){const c=performance.getEntriesByType("navigation")[0];t=mt(c,!1)}}catch{}if(!t){const i=typeof e=="string"?e:typeof document<"u"?document.cookie:"";t={uniqueToken:((n=i.match(/\b_shopify_y=([^;]+)/))==null?void 0:n[1])||"",visitToken:((r=i.match(/\b_shopify_s=([^;]+)/))==null?void 0:r[1])||"",consent:((a=i.match(/\b_tracking_consent=([^;]+)/))==null?void 0:a[1])||""}}return t}function mt(e,t=!0){let n="",r="",a="";const i=e.serverTiming;if(i&&i.length>=3)for(let s=i.length-1;s>=0;s--){const{name:o,description:c}=i[s];if(!(!o||!c)&&(o==="_y"?n=c:o==="_s"?r=c:o==="_cmp"&&(a=c),n&&r&&a))break}return n&&r&&(!t||a)?{uniqueToken:n,visitToken:r,consent:a}:void 0}function Ln(){const{storefrontId:e,getPublicTokenHeaders:t,getStorefrontApiUrl:n,sameDomainForStorefrontApi:r}=ce();return l.useCallback(({query:a,variables:i})=>{const s=t({contentType:"json"});if(e&&(s[ht]=e),!r){const{uniqueToken:o,visitToken:c}=ee();o&&(s[gt]=o,s[Fe]=o),c&&(s[yt]=c,s[Me]=c)}return fetch(n(),{method:"POST",headers:s,body:JSON.stringify({query:a.toString(),variables:i})}).then(o=>o.json()).catch(o=>({data:void 0,errors:o==null?void 0:o.toString()}))},[t,e,n,r])}function xn({numCartLines:e,cartFragment:t,countryCode:n="US",languageCode:r="EN"}){const a=Ln(),i=l.useCallback(y=>a({query:kn(t),variables:{id:y,numCartLines:e,country:n,language:r}}),[a,t,e,n,r]),s=l.useCallback(y=>a({query:An(t),variables:{input:y,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),o=l.useCallback((y,E)=>a({query:wn(t),variables:{cartId:y,lines:E,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),c=l.useCallback((y,E)=>a({query:In(t),variables:{cartId:y,lines:E,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),u=l.useCallback((y,E)=>a({query:bn(t),variables:{cartId:y,lines:E,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),g=l.useCallback((y,E)=>a({query:vn(t),variables:{cartId:y,note:E,numCartLines:e,country:n,language:r}}),[a,t,e,n,r]),d=l.useCallback((y,E)=>a({query:Pn(t),variables:{cartId:y,buyerIdentity:E,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),h=l.useCallback((y,E)=>a({query:On(t),variables:{cartId:y,attributes:E,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),f=l.useCallback((y,E)=>a({query:Rn(t),variables:{cartId:y,discountCodes:E,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]);return l.useMemo(()=>({cartFetch:i,cartCreate:s,cartLineAdd:o,cartLineUpdate:c,cartLineRemove:u,noteUpdate:g,buyerIdentityUpdate:d,cartAttributesUpdate:h,discountCodesUpdate:f,cartFragment:t}),[i,s,o,c,u,g,d,h,f,t])}function Y(e,t){return{entry:[...(t==null?void 0:t.entryActions)||[],ne({lastValidCart:n=>n==null?void 0:n.cart}),"onCartActionEntry","onCartActionOptimisticUI",e],on:{RESOLVE:{target:(t==null?void 0:t.resolveTarget)||"idle",actions:[ne({prevCart:n=>n==null?void 0:n.lastValidCart,cart:(n,r)=>{var a;return(a=r==null?void 0:r.payload)==null?void 0:a.cart},rawCartResult:(n,r)=>{var a;return(a=r==null?void 0:r.payload)==null?void 0:a.rawCartResult},errors:n=>{}})]},ERROR:{target:(t==null?void 0:t.errorTarget)||"error",actions:[ne({prevCart:n=>n==null?void 0:n.lastValidCart,cart:n=>n==null?void 0:n.lastValidCart,errors:(n,r)=>{var a;return(a=r==null?void 0:r.payload)==null?void 0:a.errors}})]},CART_COMPLETED:{target:"cartCompleted",actions:ne({prevCart:n=>{},cart:n=>{},lastValidCart:n=>{},rawCartResult:n=>{},errors:n=>{}})}},exit:["onCartActionComplete",...(t==null?void 0:t.exitActions)||[]]}}const ue={CART_FETCH:{target:"cartFetching"},CART_CREATE:{target:"cartCreating"},CART_SET:{target:"idle",actions:[ne({rawCartResult:(e,t)=>t.payload.cart,cart:(e,t)=>xe(t.payload.cart)})]}},pt={CARTLINE_ADD:{target:"cartLineAdding"},CARTLINE_UPDATE:{target:"cartLineUpdating"},CARTLINE_REMOVE:{target:"cartLineRemoving"},NOTE_UPDATE:{target:"noteUpdating"},BUYER_IDENTITY_UPDATE:{target:"buyerIdentityUpdating"},CART_ATTRIBUTES_UPDATE:{target:"cartAttributesUpdating"},DISCOUNT_CODES_UPDATE:{target:"discountCodesUpdating"}};function qn(e){return rt({id:"Cart",initial:e?"idle":"uninitialized",context:{cart:e&&xe(e)},states:{uninitialized:{on:ue},cartCompleted:{on:ue},initializationError:{on:ue},idle:{on:{...ue,...pt}},error:{on:{...ue,...pt}},cartFetching:Y("cartFetchAction",{errorTarget:"initializationError"}),cartCreating:Y("cartCreateAction",{errorTarget:"initializationError"}),cartLineRemoving:Y("cartLineRemoveAction"),cartLineUpdating:Y("cartLineUpdateAction"),cartLineAdding:Y("cartLineAddAction"),noteUpdating:Y("noteUpdateAction"),buyerIdentityUpdating:Y("buyerIdentityUpdateAction"),cartAttributesUpdating:Y("cartAttributesUpdateAction"),discountCodesUpdating:Y("discountCodesUpdateAction")}})}function jn({numCartLines:e,onCartActionEntry:t,onCartActionOptimisticUI:n,onCartActionComplete:r,data:a,cartFragment:i,countryCode:s,languageCode:o}){const{cartFetch:c,cartCreate:u,cartLineAdd:g,cartLineUpdate:d,cartLineRemove:h,noteUpdate:f,buyerIdentityUpdate:y,cartAttributesUpdate:E,discountCodesUpdate:T}=xn({numCartLines:e,cartFragment:i,countryCode:s,languageCode:o}),b=l.useMemo(()=>qn(a),[a]),[I,A,v]=Sn(b,{actions:{cartFetchAction:async(p,m)=>{var w;if(m.type!=="CART_FETCH")return;const{data:_,errors:P}=await c((w=m==null?void 0:m.payload)==null?void 0:w.cartId),R=W(m,_==null?void 0:_.cart,P);A(R)},cartCreateAction:async(p,m)=>{var w;if(m.type!=="CART_CREATE")return;const{data:_,errors:P}=await u(m==null?void 0:m.payload),R=W(m,(w=_==null?void 0:_.cartCreate)==null?void 0:w.cart,P);A(R)},cartLineAddAction:async(p,m)=>{var w,O;if(m.type!=="CARTLINE_ADD"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await g(p.cart.id,m.payload.lines),R=W(m,(O=_==null?void 0:_.cartLinesAdd)==null?void 0:O.cart,P);A(R)},cartLineUpdateAction:async(p,m)=>{var w,O;if(m.type!=="CARTLINE_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await d(p.cart.id,m.payload.lines),R=W(m,(O=_==null?void 0:_.cartLinesUpdate)==null?void 0:O.cart,P);A(R)},cartLineRemoveAction:async(p,m)=>{var w,O;if(m.type!=="CARTLINE_REMOVE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await h(p.cart.id,m.payload.lines),R=W(m,(O=_==null?void 0:_.cartLinesRemove)==null?void 0:O.cart,P);A(R)},noteUpdateAction:async(p,m)=>{var w,O;if(m.type!=="NOTE_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await f(p.cart.id,m.payload.note),R=W(m,(O=_==null?void 0:_.cartNoteUpdate)==null?void 0:O.cart,P);A(R)},buyerIdentityUpdateAction:async(p,m)=>{var w,O;if(m.type!=="BUYER_IDENTITY_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await y(p.cart.id,m.payload.buyerIdentity),R=W(m,(O=_==null?void 0:_.cartBuyerIdentityUpdate)==null?void 0:O.cart,P);A(R)},cartAttributesUpdateAction:async(p,m)=>{var w,O;if(m.type!=="CART_ATTRIBUTES_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await E(p.cart.id,m.payload.attributes),R=W(m,(O=_==null?void 0:_.cartAttributesUpdate)==null?void 0:O.cart,P);A(R)},discountCodesUpdateAction:async(p,m)=>{var w,O;if(m.type!=="DISCOUNT_CODES_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await T(p.cart.id,m.payload.discountCodes),R=W(m,(O=_==null?void 0:_.cartDiscountCodesUpdate)==null?void 0:O.cart,P);A(R)},...t&&{onCartActionEntry:(p,m)=>{Hn(m)&&t(p,m)}},...n&&{onCartActionOptimisticUI:ne((p,m)=>n(p,m))},...r&&{onCartActionComplete:(p,m)=>{$n(m)&&r(p,m)}}}});return l.useMemo(()=>[I,A,v],[I,A,v])}function xe(e){return{...e,lines:Q(e==null?void 0:e.lines),note:e.note??void 0}}function W(e,t,n){return n?{type:"ERROR",payload:{errors:n,cartActionEvent:e}}:t?{type:"RESOLVE",payload:{cart:xe(t),rawCartResult:t,cartActionEvent:e}}:{type:"CART_COMPLETED",payload:{cartActionEvent:e}}}function Hn(e){return e.type==="CART_CREATE"||e.type==="CARTLINE_ADD"||e.type==="CARTLINE_UPDATE"||e.type==="CARTLINE_REMOVE"||e.type==="NOTE_UPDATE"||e.type==="BUYER_IDENTITY_UPDATE"||e.type==="CART_ATTRIBUTES_UPDATE"||e.type==="DISCOUNT_CODES_UPDATE"}function $n(e){return e.type==="RESOLVE"||e.type==="ERROR"||e.type==="CART_COMPLETED"}const Et=l.createContext(null);function ae(){const e=l.useContext(Et);if(!e)throw new Error("Expected a Cart Context, but no Cart Context was found");return e}function Bn({children:e,numCartLines:t,onCreate:n,onLineAdd:r,onLineRemove:a,onLineUpdate:i,onNoteUpdate:s,onBuyerIdentityUpdate:o,onAttributesUpdate:c,onDiscountCodesUpdate:u,onCreateComplete:g,onLineAddComplete:d,onLineRemoveComplete:h,onLineUpdateComplete:f,onNoteUpdateComplete:y,onBuyerIdentityUpdateComplete:E,onAttributesUpdateComplete:T,onDiscountCodesUpdateComplete:b,data:I,cartFragment:A=Dn,customerAccessToken:v,countryCode:p,languageCode:m}){var en,tn,nn,rn,an,on,sn;const _=ce();if(!_)throw new Error("<CartProvider> needs to be a descendant of <ShopifyProvider>");p=(p??_.countryIsoCode??"US").toUpperCase(),m=(m??_.languageIsoCode??"EN").toUpperCase(),p&&(p=p.toUpperCase());const[P,R]=l.useState(p),[w,O]=l.useState(v),H=l.useRef(!1);(P!==p||w!==v)&&(R(p),O(v),H.current=!1);const[k,$]=jn({numCartLines:t,data:I,cartFragment:A,countryCode:p,languageCode:m,onCartActionEntry(C,N){try{switch(N.type){case"CART_CREATE":return n==null?void 0:n();case"CARTLINE_ADD":return r==null?void 0:r();case"CARTLINE_REMOVE":return a==null?void 0:a();case"CARTLINE_UPDATE":return i==null?void 0:i();case"NOTE_UPDATE":return s==null?void 0:s();case"BUYER_IDENTITY_UPDATE":return o==null?void 0:o();case"CART_ATTRIBUTES_UPDATE":return c==null?void 0:c();case"DISCOUNT_CODES_UPDATE":return u==null?void 0:u()}}catch(F){console.error("Cart entry action failed",F)}},onCartActionOptimisticUI(C,N){var F,K,M,_e;if(!C.cart)return{...C};switch(N.type){case"CARTLINE_REMOVE":return{...C,cart:{...C.cart,lines:(K=(F=C==null?void 0:C.cart)==null?void 0:F.lines)==null?void 0:K.filter(L=>(L==null?void 0:L.id)&&!N.payload.lines.includes(L==null?void 0:L.id))}};case"CARTLINE_UPDATE":return{...C,cart:{...C.cart,lines:(_e=(M=C==null?void 0:C.cart)==null?void 0:M.lines)==null?void 0:_e.map(L=>{const Qe=N.payload.lines.find(({id:ga})=>ga===(L==null?void 0:L.id));return Qe&&Qe.quantity?{...L,quantity:Qe.quantity}:L})}}}return{...C}},onCartActionComplete(C,N){const F=N.payload.cartActionEvent;try{switch(N.type){case"RESOLVE":switch(F.type){case"CART_CREATE":return g==null?void 0:g();case"CARTLINE_ADD":return d==null?void 0:d();case"CARTLINE_REMOVE":return h==null?void 0:h();case"CARTLINE_UPDATE":return f==null?void 0:f();case"NOTE_UPDATE":return y==null?void 0:y();case"BUYER_IDENTITY_UPDATE":return Gn(C,F)&&(H.current=!0),E==null?void 0:E();case"CART_ATTRIBUTES_UPDATE":return T==null?void 0:T();case"DISCOUNT_CODES_UPDATE":return b==null?void 0:b()}}}catch(K){console.error("onCartActionComplete failed",K)}}}),X=l.useRef(!1),[me,V]=l.useState(!1),se=k.matches("cartCompleted"),pe=(k.value==="idle"||k.value==="error"||k.value==="cartCompleted")&&p!==((nn=(tn=(en=k==null?void 0:k.context)==null?void 0:en.cart)==null?void 0:tn.buyerIdentity)==null?void 0:nn.countryCode)&&!k.context.errors,Ee=l.useRef(!1);l.useEffect(()=>{if(!X.current&&!Ee.current){if(!I&&qe("localStorage")){Ee.current=!0;try{const C=window.localStorage.getItem(Ne);C&&$({type:"CART_FETCH",payload:{cartId:C}})}catch(C){console.warn("error fetching cartId"),console.warn(C)}}X.current=!0,V(!0)}},[I,X,$]),l.useEffect(()=>{!pe||H.current||$({type:"BUYER_IDENTITY_UPDATE",payload:{buyerIdentity:{countryCode:p,customerAccessToken:v}}})},[p,v,pe,H,$]);const B=l.useCallback(C=>{if(!X.current)return console.warn("Cart isn't ready yet");$(C)},[$]);l.useEffect(()=>{var C,N,F;if((N=(C=k==null?void 0:k.context)==null?void 0:C.cart)!=null&&N.id&&qe("localStorage"))try{window.localStorage.setItem(Ne,(F=k.context.cart)==null?void 0:F.id)}catch(K){console.warn("Failed to save cartId to localStorage",K)}},[(an=(rn=k==null?void 0:k.context)==null?void 0:rn.cart)==null?void 0:an.id]),l.useEffect(()=>{if(se&&qe("localStorage"))try{window.localStorage.removeItem(Ne)}catch(C){console.warn("Failed to delete cartId from localStorage",C)}},[se]);const Ke=l.useCallback(C=>{var N,F;p&&!((N=C.buyerIdentity)!=null&&N.countryCode)&&(C.buyerIdentity==null&&(C.buyerIdentity={}),C.buyerIdentity.countryCode=p),v&&!((F=C.buyerIdentity)!=null&&F.customerAccessToken)&&(C.buyerIdentity==null&&(C.buyerIdentity={}),C.buyerIdentity.customerAccessToken=v),B({type:"CART_CREATE",payload:C})},[p,v,B]),D=Wn(k),ha=l.useMemo(()=>{var C,N,F,K;return{...((C=D==null?void 0:D.context)==null?void 0:C.cart)??{lines:[],attributes:[]},status:Yn(D.value),error:(N=D==null?void 0:D.context)==null?void 0:N.errors,totalQuantity:((K=(F=D==null?void 0:D.context)==null?void 0:F.cart)==null?void 0:K.totalQuantity)??0,cartCreate:Ke,cartReady:me,linesAdd(M){var _e,L;(L=(_e=D==null?void 0:D.context)==null?void 0:_e.cart)!=null&&L.id?B({type:"CARTLINE_ADD",payload:{lines:M}}):Ke({lines:M})},linesRemove(M){B({type:"CARTLINE_REMOVE",payload:{lines:M}})},linesUpdate(M){B({type:"CARTLINE_UPDATE",payload:{lines:M}})},noteUpdate(M){B({type:"NOTE_UPDATE",payload:{note:M}})},buyerIdentityUpdate(M){B({type:"BUYER_IDENTITY_UPDATE",payload:{buyerIdentity:M}})},cartAttributesUpdate(M){B({type:"CART_ATTRIBUTES_UPDATE",payload:{attributes:M}})},discountCodesUpdate(M){B({type:"DISCOUNT_CODES_UPDATE",payload:{discountCodes:M}})},cartFragment:A}},[Ke,me,(on=D==null?void 0:D.context)==null?void 0:on.cart,(sn=D==null?void 0:D.context)==null?void 0:sn.errors,D.value,A,B]);return React.createElement(Et.Provider,{value:ha},e)}function Yn(e){switch(e){case"uninitialized":case"initializationError":return"uninitialized";case"idle":case"cartCompleted":case"error":return"idle";case"cartFetching":return"fetching";case"cartCreating":return"creating";case"cartLineAdding":case"cartLineRemoving":case"cartLineUpdating":case"noteUpdating":case"buyerIdentityUpdating":case"cartAttributesUpdating":case"discountCodesUpdating":return"updating"}}function Wn(e){const[t,n]=l.useTransition(),[r,a]=l.useState(e),i=l.useRef(!1);t&&(i.current=!0);const s=l.useRef(!1);return!t&&i.current&&(s.current=!0),l.useEffect(()=>{n(()=>{s.current||a(e)})},[e]),s.current?e:r}function qe(e){let t;try{t=window[e];const n="__storage_test__";return t.setItem(n,n),t.removeItem(n),!0}catch(n){return!!(n instanceof DOMException&&(n.code===22||n.code===1014||n.name==="QuotaExceededError"||n.name==="NS_ERROR_DOM_QUOTA_REACHED")&&t&&t.length!==0)}}function Gn(e,t){var n,r;return!!(t.payload.buyerIdentity.countryCode&&((r=(n=e.cart)==null?void 0:n.buyerIdentity)==null?void 0:r.countryCode)!==t.payload.buyerIdentity.countryCode)}const _t=l.createContext(null);function Zn({children:e,data:t,initialVariantId:n}){const r=l.useMemo(()=>Q(t.variants??{}),[t.variants]);if(!Qn(r))throw new Error("<ProductProvider/> requires 'product.variants.nodes' or 'product.variants.edges'");const a=l.useMemo(()=>Kn(r),[r]),[i,s]=l.useState(()=>Ct(n,r)),[o,c]=l.useState(()=>wt(i));l.useEffect(()=>{const T=Ct(n,r);s(T),c(wt(T))},[n,r]);const u=l.useCallback((T,b)=>{c(I=>{const A={...I,[T]:b};return s(Tt(r,A)),A})},[c,r]),g=l.useCallback((T,b)=>{const I=Tt(r,{...o,[T]:b});return(I==null?void 0:I.availableForSale)??!0},[o,r]),d=l.useMemo(()=>Q(t.sellingPlanGroups??{}).map(T=>({...T,sellingPlans:Q((T==null?void 0:T.sellingPlans)??{})})),[t.sellingPlanGroups]),[h,f]=l.useState(void 0),y=l.useMemo(()=>{var T,b;if(!(!i||!h)){if(!((T=i.sellingPlanAllocations)!=null&&T.nodes)&&!((b=i.sellingPlanAllocations)!=null&&b.edges))throw new Error("<ProductProvider/>: You must include 'sellingPlanAllocations.nodes' or 'sellingPlanAllocations.edges' in your variants in order to calculate selectedSellingPlanAllocation");return Q(i.sellingPlanAllocations).find(I=>{var A;return((A=I==null?void 0:I.sellingPlan)==null?void 0:A.id)===h.id})}},[i,h]),E=l.useMemo(()=>({product:t,variants:r,variantsConnection:t.variants,options:a,selectedVariant:i,setSelectedVariant:s,selectedOptions:o,setSelectedOption:u,setSelectedOptions:c,isOptionInStock:g,selectedSellingPlan:h,setSelectedSellingPlan:f,selectedSellingPlanAllocation:y,sellingPlanGroups:d,sellingPlanGroupsConnection:t.sellingPlanGroups}),[t,g,a,o,h,y,i,d,u,r]);return React.createElement(_t.Provider,{value:E},e)}function St(){const e=l.useContext(_t);if(!e)throw new Error("'useProduct' must be a child of <ProductProvider />");return e}function Tt(e,t){var n,r;if(!(!e.length||((r=(n=e==null?void 0:e[0])==null?void 0:n.selectedOptions)==null?void 0:r.length)!==Object.keys(t).length))return e==null?void 0:e.find(a=>Object.entries(t).every(([i,s])=>{var o;return(o=a==null?void 0:a.selectedOptions)==null?void 0:o.some(c=>(c==null?void 0:c.name)===i&&(c==null?void 0:c.value)===s)}))}function Kn(e){const t=e.reduce((n,r)=>{var a;if(!r.selectedOptions)throw new Error("'getOptions' requires 'variant.selectedOptions'");return(a=r==null?void 0:r.selectedOptions)==null||a.forEach(i=>{n[(i==null?void 0:i.name)??""]=n[(i==null?void 0:i.name)??""]||new Set,n[(i==null?void 0:i.name)??""].add((i==null?void 0:i.value)??"")}),n},{});return Object.keys(t).map(n=>({name:n,values:Array.from(t[n])}))}function Ct(e,t){if(e){const n=t.find(r=>(r==null?void 0:r.id)===e);return n||console.warn("<ProductProvider/> received a 'initialVariantId' prop, but could not actually find a variant with that ID"),n}if(e===null)return null;if(e===void 0)return t.find(n=>n==null?void 0:n.availableForSale)||t[0]}function wt(e){return e!=null&&e.selectedOptions?e.selectedOptions.reduce((t,n)=>(t[(n==null?void 0:n.name)??""]=(n==null?void 0:n.value)??"",t),{}):{}}function Qn(e){return!(!e||!Array.isArray(e))}function we(e){const{as:t,onClick:n,defaultOnClick:r,children:a,buttonRef:i,...s}=e,o=l.useCallback(u=>{if(n){const g=n(u);if(typeof g=="boolean"&&g===!1||u!=null&&u.defaultPrevented)return}r==null||r(u)},[r,n]),c=t||"button";return React.createElement(c,{ref:i,onClick:o,...s},a)}function Jn(e){const[t,n]=l.useState(!1),{variantId:r,quantity:a=1,attributes:i,sellingPlanId:s,onClick:o,children:c,accessibleAddingToCartLabel:u,...g}=e,{status:d,linesAdd:h}=ae(),{selectedVariant:f}=St(),y=r??(f==null?void 0:f.id)??"",E=r===null||y===""||f===null||t||g.disabled;l.useEffect(()=>{t&&d==="idle"&&n(!1)},[d,t]);const T=l.useCallback(()=>{n(!0),h([{quantity:a,merchandiseId:y||"",attributes:i,sellingPlanId:s}])},[h,a,y,i,s]);return U.createElement(U.Fragment,null,U.createElement(we,{...g,disabled:E,onClick:o,defaultOnClick:T},c),u?U.createElement("p",{style:{position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"},role:"alert","aria-live":"assertive"},t?u:null):null)}const te={PAGE_VIEW:"PAGE_VIEW",ADD_TO_CART:"ADD_TO_CART",PAGE_VIEW_2:"PAGE_VIEW_2",COLLECTION_VIEW:"COLLECTION_VIEW",PRODUCT_VIEW:"PRODUCT_VIEW",SEARCH_VIEW:"SEARCH_VIEW"},Ae={article:"article",blog:"blog",captcha:"captcha",cart:"cart",collection:"collection",customersAccount:"customers/account",customersActivateAccount:"customers/activate_account",customersAddresses:"customers/addresses",customersLogin:"customers/login",customersOrder:"customers/order",customersRegister:"customers/register",customersResetPassword:"customers/reset_password",giftCard:"gift_card",home:"index",listCollections:"list-collections",forbidden:"403",notFound:"404",page:"page",password:"password",product:"product",policy:"policy",search:"search"},At={hydrogen:"hydrogen",headless:"headless"},bt={hydrogen:"6167201",headless:"12875497473"};function j(e,t){return{schema_id:e,payload:t,metadata:{event_created_at_ms:Date.now()}}}function x(e){const t={id:"",resource:null,resourceId:null,search:"",searchParams:new URLSearchParams,hash:""};if(typeof e!="string")return t;try{const{search:n,searchParams:r,pathname:a,hash:i}=new URL(e),s=a.split("/"),o=s[s.length-1],c=s[s.length-2];return!o||!c?t:{id:`${o}${n}${i}`||"",resource:c??null,resourceId:o||null,search:n,searchParams:r,hash:i}}catch{return t}}function q(e,t){return typeof e!="object"?{}:(Object.entries(e).forEach(([n,r])=>{r&&(t[n]=r)}),t)}function Xn(e){return typeof document>"u"?(console.error(`${e} should only be used within the useEffect callback or event handlers`),!0):!1}const It="xxxx-4xxx-xxxx-xxxxxxxxxxxx";function be(){let e="";try{const t=window.crypto,n=new Uint16Array(31);t.getRandomValues(n);let r=0;e=It.replace(/[x]/g,a=>{const i=n[r]%16,s=a==="x"?i:i&3|8;return r++,s.toString(16)}).toUpperCase()}catch{e=It.replace(/[x]/g,n=>{const r=Math.random()*16|0;return(n==="x"?r:r&3|8).toString(16)}).toUpperCase()}return`${zn()}-${e}`}function zn(){let e=0,t=0;e=new Date().getTime()>>>0;try{t=performance.now()>>>0}catch{t=0}return Math.abs(e+t).toString(16).toLowerCase().padStart(8,"0")}function er(e){const t=ee(e);return{[Te]:t.uniqueToken,[Ce]:t.visitToken}}const tr="trekkie_storefront_page_view/1.4",nr="myshopify.dev";function vt(e){const t=e,{id:n,resource:r}=x(t.resourceId),a=r?r.toLowerCase():void 0;return[j(tr,q({pageType:t.pageType,customerId:parseInt(x(t.customerId).id||"0"),resourceType:a,resourceId:parseInt(n)},rr(t)))]}function rr(e){return{appClientId:e.shopifySalesChannel?bt[e.shopifySalesChannel]:bt.headless,isMerchantRequest:ar(e.url),hydrogenSubchannelId:e.storefrontId||e.hydrogenSubchannelId||"0",isPersistentCookie:e.hasUserConsent,uniqToken:e.uniqueToken,visitToken:e.visitToken,microSessionId:be(),microSessionCount:1,url:e.url,path:e.path,search:e.search,referrer:e.referrer,title:e.title,shopId:parseInt(x(e.shopId).id),currency:e.currency,contentLanguage:e.acceptedLanguage||"en"}}function ar(e){if(typeof e!="string")return!1;const t=new URL(e).hostname;return t.indexOf(nr)!==-1||t==="localhost"}const ir="2025.1.4",G="custom_storefront_customer_tracking/1.2",Pt="page_rendered",Ot="collection_page_rendered",Rt="product_page_rendered",or="product_added_to_cart",kt="search_submitted";function le(e){return{canonical_url:e.canonicalUrl||e.url,customer_id:parseInt(x(e.customerId).id||"0")}}function sr(e){const t=e,n=le(t),r=t.pageType,a=[];switch(a.push(j(G,q({event_name:Pt,...n},Z(t)))),r){case Ae.collection:a.push(j(G,q({event_name:Ot,...n,collection_name:t.collectionHandle,collection_id:parseInt(x(t.collectionId).id)},Z(t))));break;case Ae.product:a.push(j(G,q({event_name:Rt,...n,products:je(t.products),total_value:t.totalValue},Z(t))));break;case Ae.search:a.push(j(G,q({event_name:kt,...n,search_string:t.searchString},Z(t))));break}return a}function cr(e){const t=e,n=le(t);return[j(G,q({event_name:Pt,...n},Z(t)))]}function ur(e){const t=e,n=le(t);return[j(G,q({event_name:Ot,...n,collection_name:t.collectionHandle,collection_id:parseInt(x(t.collectionId).id)},Z(t)))]}function lr(e){const t=e,n=le(t);return[j(G,q({event_name:Rt,...n,products:je(t.products),total_value:t.totalValue},Z(t)))]}function dr(e){const t=e,n=le(t);return[j(G,q({event_name:kt,...n,search_string:t.searchString},Z(t)))]}function fr(e){const t=e,n=x(t.cartId);return[j(G,q({event_name:or,customerId:t.customerId,cart_token:n!=null&&n.id?`${n.id}`:null,total_value:t.totalValue,products:je(t.products),customer_id:parseInt(x(t.customerId).id||"0")},Z(t)))]}function Z(e){return{source:e.shopifySalesChannel||At.headless,asset_version_id:e.assetVersionId||ir,hydrogenSubchannelId:e.storefrontId||e.hydrogenSubchannelId||"0",is_persistent_cookie:e.hasUserConsent,deprecated_visit_token:e.visitToken,unique_token:e.uniqueToken,event_time:Date.now(),event_id:be(),event_source_url:e.url,referrer:e.referrer,user_agent:e.userAgent,navigation_type:e.navigationType,navigation_api:e.navigationApi,shop_id:parseInt(x(e.shopId).id),currency:e.currency,ccpa_enforced:e.ccpaEnforced||!1,gdpr_enforced:e.gdprEnforced||!1,gdpr_enforced_as_string:e.gdprEnforced?"true":"false",analytics_allowed:e.analyticsAllowed||!1,marketing_allowed:e.marketingAllowed||!1,sale_of_data_allowed:e.saleOfDataAllowed||!1}}function je(e){return e?e.map(t=>{const n=q({variant_gid:t.variantGid,category:t.category,sku:t.sku,product_id:parseInt(x(t.productGid).id),variant_id:parseInt(x(t.variantGid).id)},{product_gid:t.productGid,name:t.name,variant:t.variantName||"",brand:t.brand,price:parseFloat(t.price),quantity:Number(t.quantity||0)});return JSON.stringify(n)}):[]}function hr(e,t){const{eventName:n,payload:r}=e;if(!r.hasUserConsent)return Promise.resolve();let a=[];const i=r;return n===te.PAGE_VIEW?a=a.concat(vt(i),sr(i)):n===te.ADD_TO_CART?a=a.concat(fr(r)):n===te.PAGE_VIEW_2?a=a.concat(vt(i),cr(i)):n===te.COLLECTION_VIEW?a=a.concat(ur(i)):n===te.PRODUCT_VIEW?a=a.concat(lr(i)):n===te.SEARCH_VIEW&&(a=a.concat(dr(i))),a.length?yr(a,t):Promise.resolve()}function gr(){return typeof window>"u"||!window.navigator?!1:/Chrome-Lighthouse/.test(window.navigator.userAgent)}const Dt="sendShopifyAnalytics request is unsuccessful";function yr(e,t){if(gr())return Promise.resolve();const n={events:e,metadata:{event_sent_at_ms:Date.now()}};try{return fetch(t?`https://${t}/.well-known/shopify/monorail/unstable/produce_batch`:"https://monorail-edge.shopifysvc.com/unstable/produce_batch",{method:"post",headers:{"content-type":"text/plain"},body:JSON.stringify(n)}).then(r=>{if(!r.ok)throw new Error("Response failed");return r.text()}).then(r=>{r&&JSON.parse(r).result.forEach(i=>{i.status!==200&&console.error(Dt,`
271
+ `,re="2025-04",Vn="mock.shop",Ve=e=>e.includes(Vn);function Un({storeDomain:e,privateStorefrontToken:t,publicStorefrontToken:n,storefrontApiVersion:r=re,contentType:a}){if(!e)throw new Error(Ue+"`storeDomain` is required when creating a new Storefront client in production.");r!==re&&Nn(`The Storefront API version that you're using is different than the version this build of Hydrogen React is targeting.
272
+ You may run into unexpected errors if these versions don't match. Received version: "${r}"; expected version "${re}"`);const i=s=>{const o=(s==null?void 0:s.storeDomain)??e;return o.includes("://")?o:`https://${o}`};return{getShopifyDomain:i,getStorefrontApiUrl(s){const o=i(s),c=o+(o.endsWith("/")?"api":"/api");return Ve(o)?c:`${c}/${(s==null?void 0:s.storefrontApiVersion)??r}/graphql.json`},getPrivateTokenHeaders(s){if(!t&&!(s!=null&&s.privateStorefrontToken)&&!Ve(e))throw new Error(Ue+"You did not pass in a `privateStorefrontToken` while using `createStorefrontClient()` or `getPrivateTokenHeaders()`");return{"content-type":((s==null?void 0:s.contentType)??a)==="graphql"?"application/graphql":"application/json","X-SDK-Variant":"hydrogen-react","X-SDK-Variant-Source":"react","X-SDK-Version":r,"Shopify-Storefront-Private-Token":(s==null?void 0:s.privateStorefrontToken)??t??"",...s!=null&&s.buyerIp?{"Shopify-Storefront-Buyer-IP":s.buyerIp}:{}}},getPublicTokenHeaders(s){if(!n&&!(s!=null&&s.publicStorefrontToken)&&!Ve(e))throw new Error(Ue+"You did not pass in a `publicStorefrontToken` while using `createStorefrontClient()` or `getPublicTokenHeaders()`");const o=(s==null?void 0:s.contentType)??a??"json";return ut(o,r,(s==null?void 0:s.publicStorefrontToken)??n??"")}}}function ut(e,t,n){return{"content-type":e==="graphql"?"application/graphql":"application/json","X-SDK-Variant":"hydrogen-react","X-SDK-Variant-Source":"react","X-SDK-Version":t,"X-Shopify-Storefront-Access-Token":n}}const lt=new Set,Ue="[h2:error:createStorefrontClient] ",Nn=(e,t="warn")=>{lt.has(e)||(console[t](`[h2:${t}:createStorefrontClient] `+e),lt.add(e))},dt={storeDomain:"test",storefrontToken:"abc123",storefrontApiVersion:re,countryIsoCode:"US",languageIsoCode:"EN",getStorefrontApiUrl(){return""},getPublicTokenHeaders(){return{}},getShopifyDomain(){return""}},ft=l.createContext(dt);function Mn(){var e,t,n;if(typeof window>"u")return!1;try{const r=(t=(e=window.performance)==null?void 0:e.getEntriesByType)==null?void 0:t.call(e,"navigation")[0];return!!((n=r==null?void 0:r.serverTiming)!=null&&n.some(a=>a.name==="_sfapi_proxy"))}catch{return!1}}function Fn({children:e,...t}){if(!t.countryIsoCode||!t.languageIsoCode||!t.storeDomain||!t.storefrontToken||!t.storefrontApiVersion)throw new Error("Please provide the necessary props to '<ShopifyProvider/>'");t.storefrontApiVersion!==re&&console.warn(`<ShopifyProvider/>: This version of Hydrogen React is built for Shopify's Storefront API version ${re}, but it looks like you're using version ${t.storefrontApiVersion}. There may be issues or bugs if you use a mismatched version of Hydrogen React and the Storefront API.`);const n=l.useMemo(()=>{const r=t.sameDomainForStorefrontApi??Mn();function a(i){const s=(i==null?void 0:i.storeDomain)??t.storeDomain;return s.includes("://")?s:`https://${s}`}return{...t,sameDomainForStorefrontApi:r,getPublicTokenHeaders(i){return ut(i.contentType,t.storefrontApiVersion,i.storefrontToken??t.storefrontToken)},getShopifyDomain:a,getStorefrontApiUrl(i){const s=r&&typeof window<"u"?window.location.origin:a({storeDomain:(i==null?void 0:i.storeDomain)??t.storeDomain});return`${s}${s.endsWith("/")?"":"/"}api/${(i==null?void 0:i.storefrontApiVersion)??t.storefrontApiVersion}/graphql.json`}}},[t]);return React.createElement(ft.Provider,{value:n},e)}function ce(){const e=l.useContext(ft);if(!e)throw new Error("'useShop()' must be a descendent of <ShopifyProvider/>");return e}const Ne="shopifyCartId",ht="Shopify-Storefront-Id",gt="Shopify-Storefront-Y",yt="Shopify-Storefront-S",Te="_shopify_y",Ce="_shopify_s",Me="X-Shopify-VisitToken",Fe="X-Shopify-UniqueToken",Le={current:null};function ee(e){var n,r,a;let t;if(typeof window<"u"&&typeof window.performance<"u")try{const i=/^https?:\/\/([^/]+)(\/api\/(?:unstable|2\d{3}-\d{2})\/graphql\.json(?=$|\?))?/,s=performance.getEntriesByType("resource");let o;for(let c=s.length-1;c>=0;c--){const u=s[c];if(u.initiatorType!=="fetch")continue;const g=window.location.host,d=u.name.match(i);if(!d)continue;const[,h,f]=d;if(h===g||f&&(h==null?void 0:h.endsWith(`.${g}`))){const E=mt(u);if(E){o=E;break}}}if(o&&(t=o),t?Le.current=t:Le.current&&(t=Le.current),!t){const c=performance.getEntriesByType("navigation")[0];t=mt(c,!1)}}catch{}if(!t){const i=typeof e=="string"?e:typeof document<"u"?document.cookie:"";t={uniqueToken:((n=i.match(/\b_shopify_y=([^;]+)/))==null?void 0:n[1])||"",visitToken:((r=i.match(/\b_shopify_s=([^;]+)/))==null?void 0:r[1])||"",consent:((a=i.match(/\b_tracking_consent=([^;]+)/))==null?void 0:a[1])||""}}return t}function mt(e,t=!0){let n="",r="",a="";const i=e.serverTiming;if(i&&i.length>=3)for(let s=i.length-1;s>=0;s--){const{name:o,description:c}=i[s];if(!(!o||!c)&&(o==="_y"?n=c:o==="_s"?r=c:o==="_cmp"&&(a=c),n&&r&&a))break}return n&&r&&(!t||a)?{uniqueToken:n,visitToken:r,consent:a}:void 0}function Ln(){const{storefrontId:e,getPublicTokenHeaders:t,getStorefrontApiUrl:n,sameDomainForStorefrontApi:r}=ce();return l.useCallback(({query:a,variables:i})=>{const s=t({contentType:"json"});if(e&&(s[ht]=e),!r){const{uniqueToken:o,visitToken:c}=ee();o&&(s[gt]=o,s[Fe]=o),c&&(s[yt]=c,s[Me]=c)}return fetch(n(),{method:"POST",headers:s,body:JSON.stringify({query:a.toString(),variables:i})}).then(o=>o.json()).catch(o=>({data:void 0,errors:o==null?void 0:o.toString()}))},[t,e,n,r])}function xn({numCartLines:e,cartFragment:t,countryCode:n="US",languageCode:r="EN"}){const a=Ln(),i=l.useCallback(y=>a({query:kn(t),variables:{id:y,numCartLines:e,country:n,language:r}}),[a,t,e,n,r]),s=l.useCallback(y=>a({query:An(t),variables:{input:y,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),o=l.useCallback((y,E)=>a({query:wn(t),variables:{cartId:y,lines:E,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),c=l.useCallback((y,E)=>a({query:In(t),variables:{cartId:y,lines:E,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),u=l.useCallback((y,E)=>a({query:bn(t),variables:{cartId:y,lines:E,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),g=l.useCallback((y,E)=>a({query:vn(t),variables:{cartId:y,note:E,numCartLines:e,country:n,language:r}}),[a,t,e,n,r]),d=l.useCallback((y,E)=>a({query:Pn(t),variables:{cartId:y,buyerIdentity:E,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),h=l.useCallback((y,E)=>a({query:On(t),variables:{cartId:y,attributes:E,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),f=l.useCallback((y,E)=>a({query:Rn(t),variables:{cartId:y,discountCodes:E,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]);return l.useMemo(()=>({cartFetch:i,cartCreate:s,cartLineAdd:o,cartLineUpdate:c,cartLineRemove:u,noteUpdate:g,buyerIdentityUpdate:d,cartAttributesUpdate:h,discountCodesUpdate:f,cartFragment:t}),[i,s,o,c,u,g,d,h,f,t])}function Y(e,t){return{entry:[...(t==null?void 0:t.entryActions)||[],ne({lastValidCart:n=>n==null?void 0:n.cart}),"onCartActionEntry","onCartActionOptimisticUI",e],on:{RESOLVE:{target:(t==null?void 0:t.resolveTarget)||"idle",actions:[ne({prevCart:n=>n==null?void 0:n.lastValidCart,cart:(n,r)=>{var a;return(a=r==null?void 0:r.payload)==null?void 0:a.cart},rawCartResult:(n,r)=>{var a;return(a=r==null?void 0:r.payload)==null?void 0:a.rawCartResult},errors:n=>{}})]},ERROR:{target:(t==null?void 0:t.errorTarget)||"error",actions:[ne({prevCart:n=>n==null?void 0:n.lastValidCart,cart:n=>n==null?void 0:n.lastValidCart,errors:(n,r)=>{var a;return(a=r==null?void 0:r.payload)==null?void 0:a.errors}})]},CART_COMPLETED:{target:"cartCompleted",actions:ne({prevCart:n=>{},cart:n=>{},lastValidCart:n=>{},rawCartResult:n=>{},errors:n=>{}})}},exit:["onCartActionComplete",...(t==null?void 0:t.exitActions)||[]]}}const ue={CART_FETCH:{target:"cartFetching"},CART_CREATE:{target:"cartCreating"},CART_SET:{target:"idle",actions:[ne({rawCartResult:(e,t)=>t.payload.cart,cart:(e,t)=>xe(t.payload.cart)})]}},pt={CARTLINE_ADD:{target:"cartLineAdding"},CARTLINE_UPDATE:{target:"cartLineUpdating"},CARTLINE_REMOVE:{target:"cartLineRemoving"},NOTE_UPDATE:{target:"noteUpdating"},BUYER_IDENTITY_UPDATE:{target:"buyerIdentityUpdating"},CART_ATTRIBUTES_UPDATE:{target:"cartAttributesUpdating"},DISCOUNT_CODES_UPDATE:{target:"discountCodesUpdating"}};function qn(e){return rt({id:"Cart",initial:e?"idle":"uninitialized",context:{cart:e&&xe(e)},states:{uninitialized:{on:ue},cartCompleted:{on:ue},initializationError:{on:ue},idle:{on:{...ue,...pt}},error:{on:{...ue,...pt}},cartFetching:Y("cartFetchAction",{errorTarget:"initializationError"}),cartCreating:Y("cartCreateAction",{errorTarget:"initializationError"}),cartLineRemoving:Y("cartLineRemoveAction"),cartLineUpdating:Y("cartLineUpdateAction"),cartLineAdding:Y("cartLineAddAction"),noteUpdating:Y("noteUpdateAction"),buyerIdentityUpdating:Y("buyerIdentityUpdateAction"),cartAttributesUpdating:Y("cartAttributesUpdateAction"),discountCodesUpdating:Y("discountCodesUpdateAction")}})}function jn({numCartLines:e,onCartActionEntry:t,onCartActionOptimisticUI:n,onCartActionComplete:r,data:a,cartFragment:i,countryCode:s,languageCode:o}){const{cartFetch:c,cartCreate:u,cartLineAdd:g,cartLineUpdate:d,cartLineRemove:h,noteUpdate:f,buyerIdentityUpdate:y,cartAttributesUpdate:E,discountCodesUpdate:T}=xn({numCartLines:e,cartFragment:i,countryCode:s,languageCode:o}),b=l.useMemo(()=>qn(a),[a]),[I,A,v]=Sn(b,{actions:{cartFetchAction:async(p,m)=>{var w;if(m.type!=="CART_FETCH")return;const{data:_,errors:P}=await c((w=m==null?void 0:m.payload)==null?void 0:w.cartId),R=W(m,_==null?void 0:_.cart,P);A(R)},cartCreateAction:async(p,m)=>{var w;if(m.type!=="CART_CREATE")return;const{data:_,errors:P}=await u(m==null?void 0:m.payload),R=W(m,(w=_==null?void 0:_.cartCreate)==null?void 0:w.cart,P);A(R)},cartLineAddAction:async(p,m)=>{var w,O;if(m.type!=="CARTLINE_ADD"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await g(p.cart.id,m.payload.lines),R=W(m,(O=_==null?void 0:_.cartLinesAdd)==null?void 0:O.cart,P);A(R)},cartLineUpdateAction:async(p,m)=>{var w,O;if(m.type!=="CARTLINE_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await d(p.cart.id,m.payload.lines),R=W(m,(O=_==null?void 0:_.cartLinesUpdate)==null?void 0:O.cart,P);A(R)},cartLineRemoveAction:async(p,m)=>{var w,O;if(m.type!=="CARTLINE_REMOVE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await h(p.cart.id,m.payload.lines),R=W(m,(O=_==null?void 0:_.cartLinesRemove)==null?void 0:O.cart,P);A(R)},noteUpdateAction:async(p,m)=>{var w,O;if(m.type!=="NOTE_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await f(p.cart.id,m.payload.note),R=W(m,(O=_==null?void 0:_.cartNoteUpdate)==null?void 0:O.cart,P);A(R)},buyerIdentityUpdateAction:async(p,m)=>{var w,O;if(m.type!=="BUYER_IDENTITY_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await y(p.cart.id,m.payload.buyerIdentity),R=W(m,(O=_==null?void 0:_.cartBuyerIdentityUpdate)==null?void 0:O.cart,P);A(R)},cartAttributesUpdateAction:async(p,m)=>{var w,O;if(m.type!=="CART_ATTRIBUTES_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await E(p.cart.id,m.payload.attributes),R=W(m,(O=_==null?void 0:_.cartAttributesUpdate)==null?void 0:O.cart,P);A(R)},discountCodesUpdateAction:async(p,m)=>{var w,O;if(m.type!=="DISCOUNT_CODES_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await T(p.cart.id,m.payload.discountCodes),R=W(m,(O=_==null?void 0:_.cartDiscountCodesUpdate)==null?void 0:O.cart,P);A(R)},...t&&{onCartActionEntry:(p,m)=>{Hn(m)&&t(p,m)}},...n&&{onCartActionOptimisticUI:ne((p,m)=>n(p,m))},...r&&{onCartActionComplete:(p,m)=>{$n(m)&&r(p,m)}}}});return l.useMemo(()=>[I,A,v],[I,A,v])}function xe(e){return{...e,lines:Q(e==null?void 0:e.lines),note:e.note??void 0}}function W(e,t,n){return n?{type:"ERROR",payload:{errors:n,cartActionEvent:e}}:t?{type:"RESOLVE",payload:{cart:xe(t),rawCartResult:t,cartActionEvent:e}}:{type:"CART_COMPLETED",payload:{cartActionEvent:e}}}function Hn(e){return e.type==="CART_CREATE"||e.type==="CARTLINE_ADD"||e.type==="CARTLINE_UPDATE"||e.type==="CARTLINE_REMOVE"||e.type==="NOTE_UPDATE"||e.type==="BUYER_IDENTITY_UPDATE"||e.type==="CART_ATTRIBUTES_UPDATE"||e.type==="DISCOUNT_CODES_UPDATE"}function $n(e){return e.type==="RESOLVE"||e.type==="ERROR"||e.type==="CART_COMPLETED"}const Et=l.createContext(null);function ae(){const e=l.useContext(Et);if(!e)throw new Error("Expected a Cart Context, but no Cart Context was found");return e}function Bn({children:e,numCartLines:t,onCreate:n,onLineAdd:r,onLineRemove:a,onLineUpdate:i,onNoteUpdate:s,onBuyerIdentityUpdate:o,onAttributesUpdate:c,onDiscountCodesUpdate:u,onCreateComplete:g,onLineAddComplete:d,onLineRemoveComplete:h,onLineUpdateComplete:f,onNoteUpdateComplete:y,onBuyerIdentityUpdateComplete:E,onAttributesUpdateComplete:T,onDiscountCodesUpdateComplete:b,data:I,cartFragment:A=Dn,customerAccessToken:v,countryCode:p,languageCode:m}){var en,tn,nn,rn,an,on,sn;const _=ce();if(!_)throw new Error("<CartProvider> needs to be a descendant of <ShopifyProvider>");p=(p??_.countryIsoCode??"US").toUpperCase(),m=(m??_.languageIsoCode??"EN").toUpperCase(),p&&(p=p.toUpperCase());const[P,R]=l.useState(p),[w,O]=l.useState(v),H=l.useRef(!1);(P!==p||w!==v)&&(R(p),O(v),H.current=!1);const[k,$]=jn({numCartLines:t,data:I,cartFragment:A,countryCode:p,languageCode:m,onCartActionEntry(C,N){try{switch(N.type){case"CART_CREATE":return n==null?void 0:n();case"CARTLINE_ADD":return r==null?void 0:r();case"CARTLINE_REMOVE":return a==null?void 0:a();case"CARTLINE_UPDATE":return i==null?void 0:i();case"NOTE_UPDATE":return s==null?void 0:s();case"BUYER_IDENTITY_UPDATE":return o==null?void 0:o();case"CART_ATTRIBUTES_UPDATE":return c==null?void 0:c();case"DISCOUNT_CODES_UPDATE":return u==null?void 0:u()}}catch(F){console.error("Cart entry action failed",F)}},onCartActionOptimisticUI(C,N){var F,K,M,_e;if(!C.cart)return{...C};switch(N.type){case"CARTLINE_REMOVE":return{...C,cart:{...C.cart,lines:(K=(F=C==null?void 0:C.cart)==null?void 0:F.lines)==null?void 0:K.filter(L=>(L==null?void 0:L.id)&&!N.payload.lines.includes(L==null?void 0:L.id))}};case"CARTLINE_UPDATE":return{...C,cart:{...C.cart,lines:(_e=(M=C==null?void 0:C.cart)==null?void 0:M.lines)==null?void 0:_e.map(L=>{const Qe=N.payload.lines.find(({id:ga})=>ga===(L==null?void 0:L.id));return Qe&&Qe.quantity?{...L,quantity:Qe.quantity}:L})}}}return{...C}},onCartActionComplete(C,N){const F=N.payload.cartActionEvent;try{switch(N.type){case"RESOLVE":switch(F.type){case"CART_CREATE":return g==null?void 0:g();case"CARTLINE_ADD":return d==null?void 0:d();case"CARTLINE_REMOVE":return h==null?void 0:h();case"CARTLINE_UPDATE":return f==null?void 0:f();case"NOTE_UPDATE":return y==null?void 0:y();case"BUYER_IDENTITY_UPDATE":return Gn(C,F)&&(H.current=!0),E==null?void 0:E();case"CART_ATTRIBUTES_UPDATE":return T==null?void 0:T();case"DISCOUNT_CODES_UPDATE":return b==null?void 0:b()}}}catch(K){console.error("onCartActionComplete failed",K)}}}),X=l.useRef(!1),[me,V]=l.useState(!1),se=k.matches("cartCompleted"),pe=(k.value==="idle"||k.value==="error"||k.value==="cartCompleted")&&p!==((nn=(tn=(en=k==null?void 0:k.context)==null?void 0:en.cart)==null?void 0:tn.buyerIdentity)==null?void 0:nn.countryCode)&&!k.context.errors,Ee=l.useRef(!1);l.useEffect(()=>{if(!X.current&&!Ee.current){if(!I&&qe("localStorage")){Ee.current=!0;try{const C=window.localStorage.getItem(Ne);C&&$({type:"CART_FETCH",payload:{cartId:C}})}catch(C){console.warn("error fetching cartId"),console.warn(C)}}X.current=!0,V(!0)}},[I,X,$]),l.useEffect(()=>{!pe||H.current||$({type:"BUYER_IDENTITY_UPDATE",payload:{buyerIdentity:{countryCode:p,customerAccessToken:v}}})},[p,v,pe,H,$]);const B=l.useCallback(C=>{if(!X.current)return console.warn("Cart isn't ready yet");$(C)},[$]);l.useEffect(()=>{var C,N,F;if((N=(C=k==null?void 0:k.context)==null?void 0:C.cart)!=null&&N.id&&qe("localStorage"))try{window.localStorage.setItem(Ne,(F=k.context.cart)==null?void 0:F.id)}catch(K){console.warn("Failed to save cartId to localStorage",K)}},[(an=(rn=k==null?void 0:k.context)==null?void 0:rn.cart)==null?void 0:an.id]),l.useEffect(()=>{if(se&&qe("localStorage"))try{window.localStorage.removeItem(Ne)}catch(C){console.warn("Failed to delete cartId from localStorage",C)}},[se]);const Ke=l.useCallback(C=>{var N,F;p&&!((N=C.buyerIdentity)!=null&&N.countryCode)&&(C.buyerIdentity==null&&(C.buyerIdentity={}),C.buyerIdentity.countryCode=p),v&&!((F=C.buyerIdentity)!=null&&F.customerAccessToken)&&(C.buyerIdentity==null&&(C.buyerIdentity={}),C.buyerIdentity.customerAccessToken=v),B({type:"CART_CREATE",payload:C})},[p,v,B]),D=Wn(k),ha=l.useMemo(()=>{var C,N,F,K;return{...((C=D==null?void 0:D.context)==null?void 0:C.cart)??{lines:[],attributes:[]},status:Yn(D.value),error:(N=D==null?void 0:D.context)==null?void 0:N.errors,totalQuantity:((K=(F=D==null?void 0:D.context)==null?void 0:F.cart)==null?void 0:K.totalQuantity)??0,cartCreate:Ke,cartReady:me,linesAdd(M){var _e,L;(L=(_e=D==null?void 0:D.context)==null?void 0:_e.cart)!=null&&L.id?B({type:"CARTLINE_ADD",payload:{lines:M}}):Ke({lines:M})},linesRemove(M){B({type:"CARTLINE_REMOVE",payload:{lines:M}})},linesUpdate(M){B({type:"CARTLINE_UPDATE",payload:{lines:M}})},noteUpdate(M){B({type:"NOTE_UPDATE",payload:{note:M}})},buyerIdentityUpdate(M){B({type:"BUYER_IDENTITY_UPDATE",payload:{buyerIdentity:M}})},cartAttributesUpdate(M){B({type:"CART_ATTRIBUTES_UPDATE",payload:{attributes:M}})},discountCodesUpdate(M){B({type:"DISCOUNT_CODES_UPDATE",payload:{discountCodes:M}})},cartFragment:A}},[Ke,me,(on=D==null?void 0:D.context)==null?void 0:on.cart,(sn=D==null?void 0:D.context)==null?void 0:sn.errors,D.value,A,B]);return React.createElement(Et.Provider,{value:ha},e)}function Yn(e){switch(e){case"uninitialized":case"initializationError":return"uninitialized";case"idle":case"cartCompleted":case"error":return"idle";case"cartFetching":return"fetching";case"cartCreating":return"creating";case"cartLineAdding":case"cartLineRemoving":case"cartLineUpdating":case"noteUpdating":case"buyerIdentityUpdating":case"cartAttributesUpdating":case"discountCodesUpdating":return"updating"}}function Wn(e){const[t,n]=l.useTransition(),[r,a]=l.useState(e),i=l.useRef(!1);t&&(i.current=!0);const s=l.useRef(!1);return!t&&i.current&&(s.current=!0),l.useEffect(()=>{n(()=>{s.current||a(e)})},[e]),s.current?e:r}function qe(e){let t;try{t=window[e];const n="__storage_test__";return t.setItem(n,n),t.removeItem(n),!0}catch(n){return!!(n instanceof DOMException&&(n.code===22||n.code===1014||n.name==="QuotaExceededError"||n.name==="NS_ERROR_DOM_QUOTA_REACHED")&&t&&t.length!==0)}}function Gn(e,t){var n,r;return!!(t.payload.buyerIdentity.countryCode&&((r=(n=e.cart)==null?void 0:n.buyerIdentity)==null?void 0:r.countryCode)!==t.payload.buyerIdentity.countryCode)}const _t=l.createContext(null);function Zn({children:e,data:t,initialVariantId:n}){const r=l.useMemo(()=>Q(t.variants??{}),[t.variants]);if(!Qn(r))throw new Error("<ProductProvider/> requires 'product.variants.nodes' or 'product.variants.edges'");const a=l.useMemo(()=>Kn(r),[r]),[i,s]=l.useState(()=>Ct(n,r)),[o,c]=l.useState(()=>wt(i));l.useEffect(()=>{const T=Ct(n,r);s(T),c(wt(T))},[n,r]);const u=l.useCallback((T,b)=>{c(I=>{const A={...I,[T]:b};return s(Tt(r,A)),A})},[c,r]),g=l.useCallback((T,b)=>{const I=Tt(r,{...o,[T]:b});return(I==null?void 0:I.availableForSale)??!0},[o,r]),d=l.useMemo(()=>Q(t.sellingPlanGroups??{}).map(T=>({...T,sellingPlans:Q((T==null?void 0:T.sellingPlans)??{})})),[t.sellingPlanGroups]),[h,f]=l.useState(void 0),y=l.useMemo(()=>{var T,b;if(!(!i||!h)){if(!((T=i.sellingPlanAllocations)!=null&&T.nodes)&&!((b=i.sellingPlanAllocations)!=null&&b.edges))throw new Error("<ProductProvider/>: You must include 'sellingPlanAllocations.nodes' or 'sellingPlanAllocations.edges' in your variants in order to calculate selectedSellingPlanAllocation");return Q(i.sellingPlanAllocations).find(I=>{var A;return((A=I==null?void 0:I.sellingPlan)==null?void 0:A.id)===h.id})}},[i,h]),E=l.useMemo(()=>({product:t,variants:r,variantsConnection:t.variants,options:a,selectedVariant:i,setSelectedVariant:s,selectedOptions:o,setSelectedOption:u,setSelectedOptions:c,isOptionInStock:g,selectedSellingPlan:h,setSelectedSellingPlan:f,selectedSellingPlanAllocation:y,sellingPlanGroups:d,sellingPlanGroupsConnection:t.sellingPlanGroups}),[t,g,a,o,h,y,i,d,u,r]);return React.createElement(_t.Provider,{value:E},e)}function St(){const e=l.useContext(_t);if(!e)throw new Error("'useProduct' must be a child of <ProductProvider />");return e}function Tt(e,t){var n,r;if(!(!e.length||((r=(n=e==null?void 0:e[0])==null?void 0:n.selectedOptions)==null?void 0:r.length)!==Object.keys(t).length))return e==null?void 0:e.find(a=>Object.entries(t).every(([i,s])=>{var o;return(o=a==null?void 0:a.selectedOptions)==null?void 0:o.some(c=>(c==null?void 0:c.name)===i&&(c==null?void 0:c.value)===s)}))}function Kn(e){const t=e.reduce((n,r)=>{var a;if(!r.selectedOptions)throw new Error("'getOptions' requires 'variant.selectedOptions'");return(a=r==null?void 0:r.selectedOptions)==null||a.forEach(i=>{n[(i==null?void 0:i.name)??""]=n[(i==null?void 0:i.name)??""]||new Set,n[(i==null?void 0:i.name)??""].add((i==null?void 0:i.value)??"")}),n},{});return Object.keys(t).map(n=>({name:n,values:Array.from(t[n])}))}function Ct(e,t){if(e){const n=t.find(r=>(r==null?void 0:r.id)===e);return n||console.warn("<ProductProvider/> received a 'initialVariantId' prop, but could not actually find a variant with that ID"),n}if(e===null)return null;if(e===void 0)return t.find(n=>n==null?void 0:n.availableForSale)||t[0]}function wt(e){return e!=null&&e.selectedOptions?e.selectedOptions.reduce((t,n)=>(t[(n==null?void 0:n.name)??""]=(n==null?void 0:n.value)??"",t),{}):{}}function Qn(e){return!(!e||!Array.isArray(e))}function we(e){const{as:t,onClick:n,defaultOnClick:r,children:a,buttonRef:i,...s}=e,o=l.useCallback(u=>{if(n){const g=n(u);if(typeof g=="boolean"&&g===!1||u!=null&&u.defaultPrevented)return}r==null||r(u)},[r,n]),c=t||"button";return React.createElement(c,{ref:i,onClick:o,...s},a)}function Jn(e){const[t,n]=l.useState(!1),{variantId:r,quantity:a=1,attributes:i,sellingPlanId:s,onClick:o,children:c,accessibleAddingToCartLabel:u,...g}=e,{status:d,linesAdd:h}=ae(),{selectedVariant:f}=St(),y=r??(f==null?void 0:f.id)??"",E=r===null||y===""||f===null||t||g.disabled;l.useEffect(()=>{t&&d==="idle"&&n(!1)},[d,t]);const T=l.useCallback(()=>{n(!0),h([{quantity:a,merchandiseId:y||"",attributes:i,sellingPlanId:s}])},[h,a,y,i,s]);return U.createElement(U.Fragment,null,U.createElement(we,{...g,disabled:E,onClick:o,defaultOnClick:T},c),u?U.createElement("p",{style:{position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"},role:"alert","aria-live":"assertive"},t?u:null):null)}const te={PAGE_VIEW:"PAGE_VIEW",ADD_TO_CART:"ADD_TO_CART",PAGE_VIEW_2:"PAGE_VIEW_2",COLLECTION_VIEW:"COLLECTION_VIEW",PRODUCT_VIEW:"PRODUCT_VIEW",SEARCH_VIEW:"SEARCH_VIEW"},Ae={article:"article",blog:"blog",captcha:"captcha",cart:"cart",collection:"collection",customersAccount:"customers/account",customersActivateAccount:"customers/activate_account",customersAddresses:"customers/addresses",customersLogin:"customers/login",customersOrder:"customers/order",customersRegister:"customers/register",customersResetPassword:"customers/reset_password",giftCard:"gift_card",home:"index",listCollections:"list-collections",forbidden:"403",notFound:"404",page:"page",password:"password",product:"product",policy:"policy",search:"search"},At={hydrogen:"hydrogen",headless:"headless"},bt={hydrogen:"6167201",headless:"12875497473"};function j(e,t){return{schema_id:e,payload:t,metadata:{event_created_at_ms:Date.now()}}}function x(e){const t={id:"",resource:null,resourceId:null,search:"",searchParams:new URLSearchParams,hash:""};if(typeof e!="string")return t;try{const{search:n,searchParams:r,pathname:a,hash:i}=new URL(e),s=a.split("/"),o=s[s.length-1],c=s[s.length-2];return!o||!c?t:{id:`${o}${n}${i}`||"",resource:c??null,resourceId:o||null,search:n,searchParams:r,hash:i}}catch{return t}}function q(e,t){return typeof e!="object"?{}:(Object.entries(e).forEach(([n,r])=>{r&&(t[n]=r)}),t)}function Xn(e){return typeof document>"u"?(console.error(`${e} should only be used within the useEffect callback or event handlers`),!0):!1}const It="xxxx-4xxx-xxxx-xxxxxxxxxxxx";function be(){let e="";try{const t=window.crypto,n=new Uint16Array(31);t.getRandomValues(n);let r=0;e=It.replace(/[x]/g,a=>{const i=n[r]%16,s=a==="x"?i:i&3|8;return r++,s.toString(16)}).toUpperCase()}catch{e=It.replace(/[x]/g,n=>{const r=Math.random()*16|0;return(n==="x"?r:r&3|8).toString(16)}).toUpperCase()}return`${zn()}-${e}`}function zn(){let e=0,t=0;e=new Date().getTime()>>>0;try{t=performance.now()>>>0}catch{t=0}return Math.abs(e+t).toString(16).toLowerCase().padStart(8,"0")}function er(e){const t=ee(e);return{[Te]:t.uniqueToken,[Ce]:t.visitToken}}const tr="trekkie_storefront_page_view/1.4",nr="myshopify.dev";function vt(e){const t=e,{id:n,resource:r}=x(t.resourceId),a=r?r.toLowerCase():void 0;return[j(tr,q({pageType:t.pageType,customerId:parseInt(x(t.customerId).id||"0"),resourceType:a,resourceId:parseInt(n)},rr(t)))]}function rr(e){return{appClientId:e.shopifySalesChannel?bt[e.shopifySalesChannel]:bt.headless,isMerchantRequest:ar(e.url),hydrogenSubchannelId:e.storefrontId||e.hydrogenSubchannelId||"0",isPersistentCookie:e.hasUserConsent,uniqToken:e.uniqueToken,visitToken:e.visitToken,microSessionId:be(),microSessionCount:1,url:e.url,path:e.path,search:e.search,referrer:e.referrer,title:e.title,shopId:parseInt(x(e.shopId).id),currency:e.currency,contentLanguage:e.acceptedLanguage||"en"}}function ar(e){if(typeof e!="string")return!1;const t=new URL(e).hostname;return t.indexOf(nr)!==-1||t==="localhost"}const ir="2025.4.1",G="custom_storefront_customer_tracking/1.2",Pt="page_rendered",Ot="collection_page_rendered",Rt="product_page_rendered",or="product_added_to_cart",kt="search_submitted";function le(e){return{canonical_url:e.canonicalUrl||e.url,customer_id:parseInt(x(e.customerId).id||"0")}}function sr(e){const t=e,n=le(t),r=t.pageType,a=[];switch(a.push(j(G,q({event_name:Pt,...n},Z(t)))),r){case Ae.collection:a.push(j(G,q({event_name:Ot,...n,collection_name:t.collectionHandle,collection_id:parseInt(x(t.collectionId).id)},Z(t))));break;case Ae.product:a.push(j(G,q({event_name:Rt,...n,products:je(t.products),total_value:t.totalValue},Z(t))));break;case Ae.search:a.push(j(G,q({event_name:kt,...n,search_string:t.searchString},Z(t))));break}return a}function cr(e){const t=e,n=le(t);return[j(G,q({event_name:Pt,...n},Z(t)))]}function ur(e){const t=e,n=le(t);return[j(G,q({event_name:Ot,...n,collection_name:t.collectionHandle,collection_id:parseInt(x(t.collectionId).id)},Z(t)))]}function lr(e){const t=e,n=le(t);return[j(G,q({event_name:Rt,...n,products:je(t.products),total_value:t.totalValue},Z(t)))]}function dr(e){const t=e,n=le(t);return[j(G,q({event_name:kt,...n,search_string:t.searchString},Z(t)))]}function fr(e){const t=e,n=x(t.cartId);return[j(G,q({event_name:or,customerId:t.customerId,cart_token:n!=null&&n.id?`${n.id}`:null,total_value:t.totalValue,products:je(t.products),customer_id:parseInt(x(t.customerId).id||"0")},Z(t)))]}function Z(e){return{source:e.shopifySalesChannel||At.headless,asset_version_id:e.assetVersionId||ir,hydrogenSubchannelId:e.storefrontId||e.hydrogenSubchannelId||"0",is_persistent_cookie:e.hasUserConsent,deprecated_visit_token:e.visitToken,unique_token:e.uniqueToken,event_time:Date.now(),event_id:be(),event_source_url:e.url,referrer:e.referrer,user_agent:e.userAgent,navigation_type:e.navigationType,navigation_api:e.navigationApi,shop_id:parseInt(x(e.shopId).id),currency:e.currency,ccpa_enforced:e.ccpaEnforced||!1,gdpr_enforced:e.gdprEnforced||!1,gdpr_enforced_as_string:e.gdprEnforced?"true":"false",analytics_allowed:e.analyticsAllowed||!1,marketing_allowed:e.marketingAllowed||!1,sale_of_data_allowed:e.saleOfDataAllowed||!1}}function je(e){return e?e.map(t=>{const n=q({variant_gid:t.variantGid,category:t.category,sku:t.sku,product_id:parseInt(x(t.productGid).id),variant_id:parseInt(x(t.variantGid).id)},{product_gid:t.productGid,name:t.name,variant:t.variantName||"",brand:t.brand,price:parseFloat(t.price),quantity:Number(t.quantity||0)});return JSON.stringify(n)}):[]}function hr(e,t){const{eventName:n,payload:r}=e;if(!r.hasUserConsent)return Promise.resolve();let a=[];const i=r;return n===te.PAGE_VIEW?a=a.concat(vt(i),sr(i)):n===te.ADD_TO_CART?a=a.concat(fr(r)):n===te.PAGE_VIEW_2?a=a.concat(vt(i),cr(i)):n===te.COLLECTION_VIEW?a=a.concat(ur(i)):n===te.PRODUCT_VIEW?a=a.concat(lr(i)):n===te.SEARCH_VIEW&&(a=a.concat(dr(i))),a.length?yr(a,t):Promise.resolve()}function gr(){return typeof window>"u"||!window.navigator?!1:/Chrome-Lighthouse/.test(window.navigator.userAgent)}const Dt="sendShopifyAnalytics request is unsuccessful";function yr(e,t){if(gr())return Promise.resolve();const n={events:e,metadata:{event_sent_at_ms:Date.now()}};try{return fetch(t?`https://${t}/.well-known/shopify/monorail/unstable/produce_batch`:"https://monorail-edge.shopifysvc.com/unstable/produce_batch",{method:"post",headers:{"content-type":"text/plain"},body:JSON.stringify(n)}).then(r=>{if(!r.ok)throw new Error("Response failed");return r.text()}).then(r=>{r&&JSON.parse(r).result.forEach(i=>{i.status!==200&&console.error(Dt,`
273
273
 
274
274
  `,i.message)})}).catch(r=>{console.error(Dt,r)})}catch{return Promise.resolve()}}function mr(){if(Xn("getClientBrowserParameters"))return{uniqueToken:"",visitToken:"",url:"",path:"",search:"",referrer:"",title:"",userAgent:"",navigationType:"",navigationApi:""};const[e,t]=_r(),n=ee();return{uniqueToken:n.uniqueToken,visitToken:n.visitToken,url:location.href,path:location.pathname,search:location.search,referrer:document.referrer,title:document.title,userAgent:navigator.userAgent,navigationType:e,navigationApi:t}}function pr(){try{const e=(performance==null?void 0:performance.getEntriesByType)&&(performance==null?void 0:performance.getEntriesByType("navigation"));if(e&&e[0]){const t=window.performance.getEntriesByType("navigation")[0].type;return t&&t.toString()}}catch{}}function Er(){var e,t;try{if(PerformanceNavigation&&((e=performance==null?void 0:performance.navigation)==null?void 0:e.type)!==null&&((t=performance==null?void 0:performance.navigation)==null?void 0:t.type)!==void 0){const n=performance.navigation.type;switch(n){case PerformanceNavigation.TYPE_NAVIGATE:return"navigate";case PerformanceNavigation.TYPE_RELOAD:return"reload";case PerformanceNavigation.TYPE_BACK_FORWARD:return"back_forward";default:return`unknown: ${n}`}}}catch{}}function _r(){try{let e="PerformanceNavigationTiming",t=pr();return t||(t=Er(),e="performance.navigation"),t?[t,e]:["unknown","unknown"]}catch{}return["error","error"]}function Sr(e){const{cartCreate:t,checkoutUrl:n}=ae(),[r,a]=l.useState(!1),{quantity:i,variantId:s,sellingPlanId:o,onClick:c,attributes:u,children:g,...d}=e;l.useEffect(()=>{r&&n&&(window.location.href=n)},[r,n]);const h=l.useCallback(()=>{a(!0),t({lines:[{quantity:i??1,merchandiseId:s,attributes:u,sellingPlanId:o}]})},[t,i,s,u,o]);return React.createElement(we,{disabled:r??d.disabled,...d,onClick:c,defaultOnClick:h},g)}function Tr(e){const[t,n]=l.useState(!1),{status:r,checkoutUrl:a}=ae(),{children:i,...s}=e;return l.useEffect(()=>{t&&a&&r==="idle"&&(window.location.href=a)},[t,r,a]),React.createElement(we,{...s,disabled:t||s.disabled,onClick:()=>n(!0)},i)}function Vt(e){const{countryIsoCode:t,languageIsoCode:n}=ce(),r=n.includes("_")?n.replace("_","-"):`${n}-${t}`;if(!r)throw new Error("useMoney(): Unable to get 'locale' from 'useShop()', which means that 'locale' was not passed to '<ShopifyProvider/>'. 'locale' is required for 'useMoney()' to work");const a=parseFloat(e.amount),{defaultFormatter:i,nameFormatter:s,narrowSymbolFormatter:o,withoutTrailingZerosFormatter:c,withoutCurrencyFormatter:u,withoutTrailingZerosOrCurrencyFormatter:g}=l.useMemo(()=>{const f={style:"currency",currency:e.currencyCode};return{defaultFormatter:ie(r,f),nameFormatter:ie(r,{...f,currencyDisplay:"name"}),narrowSymbolFormatter:ie(r,{...f,currencyDisplay:"narrowSymbol"}),withoutTrailingZerosFormatter:ie(r,{...f,minimumFractionDigits:0,maximumFractionDigits:0}),withoutCurrencyFormatter:ie(r),withoutTrailingZerosOrCurrencyFormatter:ie(r,{minimumFractionDigits:0,maximumFractionDigits:0})}},[e.currencyCode,r]),d=f=>f.type==="currency",h=l.useMemo(()=>({original:()=>e,currencyCode:()=>e.currencyCode,localizedString:()=>i().format(a),parts:()=>i().formatToParts(a),withoutTrailingZeros:()=>a%1===0?c().format(a):i().format(a),withoutTrailingZerosAndCurrency:()=>a%1===0?g().format(a):u().format(a),currencyName:()=>{var f;return((f=s().formatToParts(a).find(d))==null?void 0:f.value)??e.currencyCode},currencySymbol:()=>{var f;return((f=i().formatToParts(a).find(d))==null?void 0:f.value)??e.currencyCode},currencyNarrowSymbol:()=>{var f;return((f=o().formatToParts(a).find(d))==null?void 0:f.value)??""},amount:()=>i().formatToParts(a).filter(f=>["decimal","fraction","group","integer","literal"].includes(f.type)).map(f=>f.value).join("")}),[e,a,s,i,o,u,c,g]);return l.useMemo(()=>new Proxy(h,{get:(f,y)=>{var E;return(E=Reflect.get(f,y))==null?void 0:E.call(null)}}),[h])}const Ut=new Map;function ie(e,t){const n=JSON.stringify([e,t]);return function(){let r=Ut.get(n);return r||(r=new Intl.NumberFormat(e,t),Ut.set(n,r)),r}}function Ie({data:e,as:t,withoutCurrency:n,withoutTrailingZeros:r,measurement:a,measurementSeparator:i="/",...s}){if(!Cr(e))throw new Error("<Money/> needs a valid 'data' prop that has 'amount' and 'currencyCode'");const o=Vt(e),c=t??"div";let u=o.localizedString;return(n||r)&&(n&&!r?u=o.amount:!n&&r?u=o.withoutTrailingZeros:u=o.withoutTrailingZerosAndCurrency),React.createElement(c,{...s},u,a&&a.referenceUnit&&React.createElement(React.Fragment,null,i,a.referenceUnit))}function Cr(e){return typeof e.amount=="string"&&!!e.amount&&typeof e.currencyCode=="string"&&!!e.currencyCode}function wr(e){const{cost:t}=ae(),{amountType:n="total",children:r,...a}=e;let i;return n=="total"?i=t==null?void 0:t.totalAmount:n=="subtotal"?i=t==null?void 0:t.subtotalAmount:n=="tax"?i=t==null?void 0:t.totalTaxAmount:n=="duty"&&(i=t==null?void 0:t.totalDutyAmount),i==null?null:React.createElement(Ie,{...a,data:i},r)}const Nt=l.createContext(null);function He(){const e=l.useContext(Nt);if(e==null)throw new Error("Expected a cart line context but none was found");return e}function Ar({children:e,line:t}){return React.createElement(Nt.Provider,{value:t},e)}function br(e){const t=He(),{as:n,...r}=e,a=n||"span";return React.createElement(a,{...r},t.quantity)}function Ir(e){const{status:t,linesRemove:n,linesUpdate:r}=ae(),a=He(),{children:i,adjust:s,onClick:o,...c}=e,u=l.useCallback(()=>{if(s==="remove"){n([(a==null?void 0:a.id)??""]);return}const d=s==="decrease"?((a==null?void 0:a.quantity)??0)-1:((a==null?void 0:a.quantity)??0)+1;if(d<=0){n([(a==null?void 0:a.id)??""]);return}const h={id:(a==null?void 0:a.id)??"",quantity:d,attributes:(a==null?void 0:a.attributes)??[]};r([h])},[s,a==null?void 0:a.attributes,a==null?void 0:a.id,a==null?void 0:a.quantity,n,r]),g=c.disabled;return React.createElement(we,{...c,onClick:o,defaultOnClick:u,disabled:typeof g<"u"?g:t!=="idle"},i)}const vr={DateTime:"string",Decimal:"string",HTML:"string",URL:"string",Color:"string",UnsignedInt64:"string"},Pr={DateTime:"string",Decimal:"string",HTML:"string",ISO8601DateTime:"string",URL:"string",UnsignedInt64:"string"},Mt=l.forwardRef((e,t)=>{const{data:n,options:r,id:a=n.id,frameBorder:i="0",allow:s="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:o=!0,loading:c="lazy",...u}=e;if(!n.embedUrl)throw new Error("<ExternalVideo/> requires the 'embedUrl' property");let g=n.embedUrl;if(r){const d=new URL(n.embedUrl);for(const[h,f]of Object.entries(r))typeof f>"u"||d.searchParams.set(h,f.toString());g=d.toString()}return React.createElement("iframe",{...u,id:a??n.embedUrl,title:n.alt??n.id??"external video",frameBorder:i,allow:s,allowFullScreen:o,src:g,loading:c,ref:t})}),$e=",",oe={OPTION:":",END_OF_PREFIX:",",SEQUENCE_GAP:" ",RANGE:"-"},Be=(()=>{const e=new Map;return function(t,n){var r;if(t.length===0)return!1;if(!e.has(n)){const a=new Set;for(const i of Ft(n)){a.add(i.join($e));for(let s=0;s<i.length;s++)a.add(i.slice(0,s+1).join($e))}e.set(n,a)}return!!((r=e.get(n))!=null&&r.has(t.join($e)))}})();function Ft(e){if(!e)return[];if(e.startsWith("v1_"))return Rr(Or(e));throw new Error("Unsupported option value encoding")}const Or=e=>e.replace(/^v1_/,"");function Rr(e){const t=/[ :,-]/g;let n=0,r;const a=[],i=[];let s=0,o=null;for(;r=t.exec(e);){const u=r[0],g=Number.parseInt(e.slice(n,r.index))||0;if(o!==null){for(;o<g;o++)i[s]=o,a.push([...i]);o=null}i[s]=g,u===oe.RANGE?o=g:u===oe.OPTION?s++:((u===oe.SEQUENCE_GAP||u===oe.END_OF_PREFIX&&e[r.index-1]!==oe.END_OF_PREFIX)&&a.push([...i]),u===oe.END_OF_PREFIX&&(i.pop(),s--)),n=t.lastIndex}const c=e.match(/\d+$/g);if(c){const u=parseInt(c[0]);if(o!=null)for(;o<=u;o++)i[s]=o,a.push([...i]);else a.push([u])}return a}function kr(e){return Object.assign({},...e.map(t=>({[t.name]:Object.assign({},...t!=null&&t.optionValues?t.optionValues.map((n,r)=>({[n.name]:r})):[])})))}function de(e){return Object.assign({},...e.map(t=>({[t.name]:t.value})))}function Ye(e){return JSON.stringify(de(e))}function Lt(e){return Array.isArray(e)?JSON.stringify(Object.assign({},...e.map(t=>({[t.name]:t.value})))):JSON.stringify(e)}function Dr(e,t){return Object.keys(e).map(r=>t[r]?t[r][e[r]]:null).filter(r=>r!==null)}function Vr(e){return Object.assign({},...e.map(t=>({[Lt(t.selectedOptions||[])]:t})))}const xt=["options","selectedOrFirstAvailableVariant","adjacentVariants"],Ur=["handle","encodedVariantExistence","encodedVariantAvailability"];function J(e){return console.error(`[h2:error:getProductOptions] product.${e} is missing. Make sure you query for this field from the Storefront API.`),!1}function qt(e,t=!1){var a;let n=!0;const r=Object.keys(e);if((t?[...xt,...Ur]:xt).forEach(i=>{r.includes(i)||(n=J(i))}),e.options){const i=e==null?void 0:e.options[0];if(t&&!(i!=null&&i.name)&&(n=J("options.name")),(a=e==null?void 0:e.options[0])!=null&&a.optionValues){let s=e.options[0].optionValues[0];t&&!(s!=null&&s.name)&&(n=J("options.optionValues.name")),s=e.options[0].optionValues.filter(o=>!!(o!=null&&o.firstSelectableVariant))[0],s!=null&&s.firstSelectableVariant&&(n=We(s.firstSelectableVariant,"options.optionValues.firstSelectableVariant",n,t))}else n=J("options.optionValues")}return e.selectedOrFirstAvailableVariant&&(n=We(e.selectedOrFirstAvailableVariant,"selectedOrFirstAvailableVariant",n,t)),e.adjacentVariants&&e.adjacentVariants[0]&&(n=We(e.adjacentVariants[0],"adjacentVariants",n,t)),n?e:{}}function We(e,t,n,r){var i;let a=n;if(r&&!((i=e.product)!=null&&i.handle)&&(a=J(`${t}.product.handle`)),e.selectedOptions){const s=e.selectedOptions[0];s!=null&&s.name||(a=J(`${t}.selectedOptions.name`)),s!=null&&s.value||(a=J(`${t}.selectedOptions.value`))}else a=J(`${t}.selectedOptions`);return a}function Nr(e){const t=qt(e);if(!t.options)return[];const n={};t.options.map(a=>{var i;(i=a.optionValues)==null||i.map(s=>{if(s.firstSelectableVariant){const o=Ye(s.firstSelectableVariant.selectedOptions);n[o]=s.firstSelectableVariant}})}),t.adjacentVariants.map(a=>{const i=Ye(a.selectedOptions);n[i]=a});const r=t.selectedOrFirstAvailableVariant;if(r){const a=Ye(r.selectedOptions);n[a]=r}return Object.values(n)}function Mr(e){const t=qt(e,!0);if(!t.options)return[];const{options:n,selectedOrFirstAvailableVariant:r,adjacentVariants:a,encodedVariantExistence:i,encodedVariantAvailability:s,handle:o}=t,c=r==null?void 0:r.selectedOptions.map(y=>y.name),u=n.filter(y=>c&&c.indexOf(y.name)>=0),g=kr(n),d=Vr(r?[r,...a]:a),h=de(r?r.selectedOptions:[]);return u.map((y,E)=>({...y,optionValues:y.optionValues.map(T=>{var O;const b={...h};b[y.name]=T.name;const I=Lt(b||[]),v=Dr(b||[],g).slice(0,E+1),p=Be(v,i||""),m=Be(v,s||""),_=d[I]||T.firstSelectableVariant;let P={};_&&(P=de(_.selectedOptions||[]));const R=new URLSearchParams(P),w=((O=_==null?void 0:_.product)==null?void 0:O.handle)||o;return{...T,variant:_,handle:w,variantUriQuery:R.toString(),selected:h[y.name]===T.name,exists:p,available:m,isDifferentProduct:w!==o}})}))}const Fr=`#graphql
275
275
  fragment Image on Image {