@shopify/hydrogen-react 0.0.0-next-e209d6b → 0.0.0-next-7c06fa2
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/browser-dev/CartLineQuantityAdjustButton.mjs +1 -1
- package/dist/browser-dev/CartLineQuantityAdjustButton.mjs.map +1 -1
- package/dist/browser-prod/CartLineQuantityAdjustButton.mjs +1 -1
- package/dist/browser-prod/CartLineQuantityAdjustButton.mjs.map +1 -1
- package/dist/node-dev/CartLineQuantityAdjustButton.js +1 -1
- package/dist/node-dev/CartLineQuantityAdjustButton.js.map +1 -1
- package/dist/node-dev/CartLineQuantityAdjustButton.mjs +1 -1
- package/dist/node-dev/CartLineQuantityAdjustButton.mjs.map +1 -1
- package/dist/node-prod/CartLineQuantityAdjustButton.js +1 -1
- package/dist/node-prod/CartLineQuantityAdjustButton.js.map +1 -1
- package/dist/node-prod/CartLineQuantityAdjustButton.mjs +1 -1
- package/dist/node-prod/CartLineQuantityAdjustButton.mjs.map +1 -1
- package/dist/umd/hydrogen-react.dev.js +2 -2
- package/dist/umd/hydrogen-react.dev.js.map +1 -1
- package/dist/umd/hydrogen-react.prod.js +1 -1
- package/dist/umd/hydrogen-react.prod.js.map +1 -1
- package/package.json +22 -22
|
@@ -260,5 +260,5 @@
|
|
|
260
260
|
}
|
|
261
261
|
`,te="2023-01";function or(e){const{storeDomain:t,privateStorefrontToken:r,publicStorefrontToken:n,storefrontApiVersion:o,contentType:s}=e;return o!==te&&ar(`StorefrontClient: The Storefront API version that you're using is different than the version this build of Hydrogen React is targeting. You may run into unexpected errors if these versions don't match. Received verion: "${o}"; expected version "${te}"`),{getShopifyDomain(i){return(i==null?void 0:i.storeDomain)??t},getStorefrontApiUrl(i){const a=(i==null?void 0:i.storeDomain)??t;return`${a}${a.endsWith("/")?"":"/"}api/${(i==null?void 0:i.storefrontApiVersion)??o}/graphql.json`},getPrivateTokenHeaders(i){if(!r&&!(i!=null&&i.privateStorefrontToken))throw new Error("StorefrontClient: You did not pass in a 'privateStorefrontToken' while using 'getPrivateTokenHeaders()'");return{"content-type":((i==null?void 0:i.contentType)??s)==="graphql"?"application/graphql":"application/json","X-SDK-Variant":"hydrogen-react","X-SDK-Variant-Source":"react","X-SDK-Version":o,"Shopify-Storefront-Private-Token":(i==null?void 0:i.privateStorefrontToken)??r??"",...i!=null&&i.buyerIp?{"Shopify-Storefront-Buyer-IP":i.buyerIp}:{}}},getPublicTokenHeaders(i){if(!n&&!(i!=null&&i.publicStorefrontToken))throw new Error("StorefrontClient: You did not pass in a 'publicStorefrontToken' while using 'getPublicTokenHeaders()'");const a=(i==null?void 0:i.contentType)??s??"json";return qe(a,o,(i==null?void 0:i.publicStorefrontToken)??n??"")}}}function qe(e,t,r){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":r}}const Fe=new Set,ar=e=>{Fe.has(e)||(console.warn(e),Fe.add(e))},Be=u.createContext({storeDomain:"test",storefrontToken:"abc123",storefrontApiVersion:te,countryIsoCode:"US",languageIsoCode:"EN",getStorefrontApiUrl(){return""},getPublicTokenHeaders(){return{}},getShopifyDomain(){return""}});function ir({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!==te&&console.warn(`<ShopifyProvider/>: This version of Hydrogen React is built for Shopify's Storefront API version ${te}, 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 r=u.useMemo(()=>{function n(o){return(o==null?void 0:o.storeDomain)??t.storeDomain}return{...t,getPublicTokenHeaders(o){return qe(o.contentType,t.storefrontApiVersion,o.storefrontToken??t.storefrontToken)},getShopifyDomain:n,getStorefrontApiUrl(o){const s=n({storeDomain:(o==null?void 0:o.storeDomain)??t.storeDomain});return`${s}${s.endsWith("/")?"":"/"}api/${(o==null?void 0:o.storefrontApiVersion)??t.storefrontApiVersion}/graphql.json`}}},[t]);return u.createElement(Be.Provider,{value:r},e)}function de(){const e=u.useContext(Be);if(!e)throw new Error("'useShop()' must be a descendent of <ShopifyProvider/>");return e}const ve="shopifyCartId",sr="Shopify-Storefront-Id",ur="Shopify-Storefront-Y",cr="Shopify-Storefront-S",H="_shopify_y",Y="_shopify_s";var lr=new Set(["domain","path","max-age","expires","samesite","secure","httponly"]);function dr(e){let t={},r,n,o=0,s=e.split(/;\s*/g),i,a;for(;o<s.length;o++)if(n=s[o],r=n.indexOf("="),~r){if(i=n.substring(0,r++).trim(),a=n.substring(r).trim(),a[0]==='"'&&(a=a.substring(1,a.length-1)),~a.indexOf("%"))try{a=decodeURIComponent(a)}catch{}lr.has(n=i.toLowerCase())?n==="expires"?t.expires=new Date(a):n==="max-age"?t.maxage=+a:t[n]=a:t[i]=a}else(i=n.trim().toLowerCase())&&(i==="httponly"||i==="secure")&&(t[i]=!0);return t}function fr(e,t,r={}){let n=e+"="+encodeURIComponent(t);return r.expires&&(n+="; Expires="+new Date(r.expires).toUTCString()),r.maxage!=null&&r.maxage>=0&&(n+="; Max-Age="+(r.maxage|0)),r.domain&&(n+="; Domain="+r.domain),r.path&&(n+="; Path="+r.path),r.samesite&&(n+="; SameSite="+r.samesite),(r.secure||r.samesite==="None")&&(n+="; Secure"),r.httponly&&(n+="; HttpOnly"),n}const je="xxxx-4xxx-xxxx-xxxxxxxxxxxx";function fe(){let e="";try{const t=window.crypto,r=new Uint16Array(31);t.getRandomValues(r);let n=0;e=je.replace(/[x]/g,o=>{const s=r[n]%16,i=o==="x"?s:s&3|8;return n++,i.toString(16)}).toUpperCase()}catch{e=je.replace(/[x]/g,r=>{const n=Math.random()*16|0;return(r==="x"?n:n&3|8).toString(16)}).toUpperCase()}return`${yr()}-${e}`}function yr(){let e=0,t=0;e=new Date().getTime()>>>0;try{t=performance.now()>>>0}catch{t=0}const r=Math.abs(e+t).toString(16).toLowerCase();return r.padStart(8-r.length,"0")}function ye(e){const t=dr(e);return{[H]:t[H]||"",[Y]:t[Y]||""}}function hr(){const{storefrontId:e,getPublicTokenHeaders:t,getStorefrontApiUrl:r}=de();return u.useCallback(({query:n,variables:o})=>{const s=t({contentType:"json"});e&&(s[sr]=e);const i=ye(document.cookie);return s[ur]=i[H],s[cr]=i[Y],fetch(r(),{method:"POST",headers:s,body:JSON.stringify({query:n.toString(),variables:o})}).then(a=>a.json()).catch(a=>({data:void 0,errors:a==null?void 0:a.toString()}))},[t,e,r])}function gr({numCartLines:e,cartFragment:t,countryCode:r="US"}){const n=hr(),o=u.useCallback(m=>n({query:rr(t),variables:{id:m,numCartLines:e,country:r}}),[n,t,e,r]),s=u.useCallback(m=>n({query:Wt(t),variables:{input:m,numCartLines:e,country:r}}),[t,r,n,e]),i=u.useCallback((m,y)=>n({query:Qt(t),variables:{cartId:m,lines:y,numCartLines:e,country:r}}),[t,r,n,e]),a=u.useCallback((m,y)=>n({query:Jt(t),variables:{cartId:m,lines:y,numCartLines:e,country:r}}),[t,r,n,e]),c=u.useCallback((m,y)=>n({query:zt(t),variables:{cartId:m,lines:y,numCartLines:e,country:r}}),[t,r,n,e]),l=u.useCallback((m,y)=>n({query:Kt(t),variables:{cartId:m,note:y,numCartLines:e,country:r}}),[n,t,e,r]),d=u.useCallback((m,y)=>n({query:Xt(t),variables:{cartId:m,buyerIdentity:y,numCartLines:e,country:r}}),[t,r,n,e]),g=u.useCallback((m,y)=>n({query:er(t),variables:{cartId:m,attributes:y,numCartLines:e,country:r}}),[t,r,n,e]),S=u.useCallback((m,y)=>n({query:tr(t),variables:{cartId:m,discountCodes:y,numCartLines:e,country:r}}),[t,r,n,e]);return u.useMemo(()=>({cartFetch:o,cartCreate:s,cartLineAdd:i,cartLineUpdate:a,cartLineRemove:c,noteUpdate:l,buyerIdentityUpdate:d,cartAttributesUpdate:g,discountCodesUpdate:S,cartFragment:t}),[o,s,i,a,c,l,d,g,S,t])}function R(e,t){return{entry:[...(t==null?void 0:t.entryActions)||[],z({lastValidCart:r=>r==null?void 0:r.cart}),"onCartActionEntry","onCartActionOptimisticUI",e],on:{RESOLVE:{target:(t==null?void 0:t.resolveTarget)||"idle",actions:[z({prevCart:r=>r==null?void 0:r.lastValidCart,cart:(r,n)=>{var o;return(o=n==null?void 0:n.payload)==null?void 0:o.cart},rawCartResult:(r,n)=>{var o;return(o=n==null?void 0:n.payload)==null?void 0:o.rawCartResult},errors:r=>{}})]},ERROR:{target:(t==null?void 0:t.errorTarget)||"error",actions:[z({prevCart:r=>r==null?void 0:r.lastValidCart,cart:r=>r==null?void 0:r.lastValidCart,errors:(r,n)=>{var o;return(o=n==null?void 0:n.payload)==null?void 0:o.errors}})]},CART_COMPLETED:{target:"cartCompleted",actions:z({prevCart:r=>{},cart:r=>{},lastValidCart:r=>{},rawCartResult:r=>{},errors:r=>{}})}},exit:["onCartActionComplete",...(t==null?void 0:t.exitActions)||[]]}}const re={CART_FETCH:{target:"cartFetching"},CART_CREATE:{target:"cartCreating"},CART_SET:{target:"idle",actions:[z({rawCartResult:(e,t)=>t.payload.cart,cart:(e,t)=>be(t.payload.cart)})]}},He={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 mr(e){return Me({id:"Cart",initial:e?"idle":"uninitialized",context:{cart:e&&be(e)},states:{uninitialized:{on:re},cartCompleted:{on:re},initializationError:{on:re},idle:{on:{...re,...He}},error:{on:{...re,...He}},cartFetching:R("cartFetchAction",{errorTarget:"initializationError"}),cartCreating:R("cartCreateAction",{errorTarget:"initializationError"}),cartLineRemoving:R("cartLineRemoveAction"),cartLineUpdating:R("cartLineUpdateAction"),cartLineAdding:R("cartLineAddAction"),noteUpdating:R("noteUpdateAction"),buyerIdentityUpdating:R("buyerIdentityUpdateAction"),cartAttributesUpdating:R("cartAttributesUpdateAction"),discountCodesUpdating:R("discountCodesUpdateAction")}})}function Er({numCartLines:e,onCartActionEntry:t,onCartActionOptimisticUI:r,onCartActionComplete:n,data:o,cartFragment:s,countryCode:i}){const{cartFetch:a,cartCreate:c,cartLineAdd:l,cartLineUpdate:d,cartLineRemove:g,noteUpdate:S,buyerIdentityUpdate:m,cartAttributesUpdate:y,discountCodesUpdate:P}=gr({numCartLines:e,cartFragment:s,countryCode:i}),T=u.useMemo(()=>mr(o),[o]),[k,_,V]=Yt(T,{actions:{cartFetchAction:async(h,f)=>{var A;if(f.type!=="CART_FETCH")return;const{data:C,errors:I}=await a((A=f==null?void 0:f.payload)==null?void 0:A.cartId),D=x(f,C==null?void 0:C.cart,I);_(D)},cartCreateAction:async(h,f)=>{var A;if(f.type!=="CART_CREATE")return;const{data:C,errors:I}=await c(f==null?void 0:f.payload),D=x(f,(A=C==null?void 0:C.cartCreate)==null?void 0:A.cart,I);_(D)},cartLineAddAction:async(h,f)=>{var A,v;if(f.type!=="CARTLINE_ADD"||!((A=h==null?void 0:h.cart)!=null&&A.id))return;const{data:C,errors:I}=await l(h.cart.id,f.payload.lines),D=x(f,(v=C==null?void 0:C.cartLinesAdd)==null?void 0:v.cart,I);_(D)},cartLineUpdateAction:async(h,f)=>{var A,v;if(f.type!=="CARTLINE_UPDATE"||!((A=h==null?void 0:h.cart)!=null&&A.id))return;const{data:C,errors:I}=await d(h.cart.id,f.payload.lines),D=x(f,(v=C==null?void 0:C.cartLinesUpdate)==null?void 0:v.cart,I);_(D)},cartLineRemoveAction:async(h,f)=>{var A,v;if(f.type!=="CARTLINE_REMOVE"||!((A=h==null?void 0:h.cart)!=null&&A.id))return;const{data:C,errors:I}=await g(h.cart.id,f.payload.lines),D=x(f,(v=C==null?void 0:C.cartLinesRemove)==null?void 0:v.cart,I);_(D)},noteUpdateAction:async(h,f)=>{var A,v;if(f.type!=="NOTE_UPDATE"||!((A=h==null?void 0:h.cart)!=null&&A.id))return;const{data:C,errors:I}=await S(h.cart.id,f.payload.note),D=x(f,(v=C==null?void 0:C.cartNoteUpdate)==null?void 0:v.cart,I);_(D)},buyerIdentityUpdateAction:async(h,f)=>{var A,v;if(f.type!=="BUYER_IDENTITY_UPDATE"||!((A=h==null?void 0:h.cart)!=null&&A.id))return;const{data:C,errors:I}=await m(h.cart.id,f.payload.buyerIdentity),D=x(f,(v=C==null?void 0:C.cartBuyerIdentityUpdate)==null?void 0:v.cart,I);_(D)},cartAttributesUpdateAction:async(h,f)=>{var A,v;if(f.type!=="CART_ATTRIBUTES_UPDATE"||!((A=h==null?void 0:h.cart)!=null&&A.id))return;const{data:C,errors:I}=await y(h.cart.id,f.payload.attributes),D=x(f,(v=C==null?void 0:C.cartAttributesUpdate)==null?void 0:v.cart,I);_(D)},discountCodesUpdateAction:async(h,f)=>{var A,v;if(f.type!=="DISCOUNT_CODES_UPDATE"||!((A=h==null?void 0:h.cart)!=null&&A.id))return;const{data:C,errors:I}=await P(h.cart.id,f.payload.discountCodes),D=x(f,(v=C==null?void 0:C.cartDiscountCodesUpdate)==null?void 0:v.cart,I);_(D)},...t&&{onCartActionEntry:(h,f)=>{pr(f)&&t(h,f)}},...r&&{onCartActionOptimisticUI:z((h,f)=>r(h,f))},...n&&{onCartActionComplete:(h,f)=>{Cr(f)&&n(h,f)}}}});return u.useMemo(()=>[k,_,V],[k,_,V])}function be(e){return{...e,lines:F(e==null?void 0:e.lines),note:e.note??void 0}}function x(e,t,r){return r?{type:"ERROR",payload:{errors:r,cartActionEvent:e}}:t?{type:"RESOLVE",payload:{cart:be(t),rawCartResult:t,cartActionEvent:e}}:{type:"CART_COMPLETED",payload:{cartActionEvent:e}}}function pr(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 Cr(e){return e.type==="RESOLVE"||e.type==="ERROR"||e.type==="CART_COMPLETED"}const Ye=u.createContext(null);function K(){const e=u.useContext(Ye);if(!e)throw new Error("Expected a Cart Context, but no Cart Context was found");return e}function Sr({children:e,numCartLines:t,onCreate:r,onLineAdd:n,onLineRemove:o,onLineUpdate:s,onNoteUpdate:i,onBuyerIdentityUpdate:a,onAttributesUpdate:c,onDiscountCodesUpdate:l,onCreateComplete:d,onLineAddComplete:g,onLineRemoveComplete:S,onLineUpdateComplete:m,onNoteUpdateComplete:y,onBuyerIdentityUpdateComplete:P,onAttributesUpdateComplete:T,onDiscountCodesUpdateComplete:k,data:_,cartFragment:V=nr,customerAccessToken:h,countryCode:f="US"}){var ft,yt,ht,gt,mt,Et,pt;f&&(f=f.toUpperCase());const[C,I]=u.useState(f),[D,A]=u.useState(h),v=u.useRef(!1);(C!==f||D!==h)&&(I(f),A(h),v.current=!1);const[U,O]=Er({numCartLines:t,data:_,cartFragment:V,countryCode:f,onCartActionEntry(p,N){try{switch(N.type){case"CART_CREATE":return r==null?void 0:r();case"CARTLINE_ADD":return n==null?void 0:n();case"CARTLINE_REMOVE":return o==null?void 0:o();case"CARTLINE_UPDATE":return s==null?void 0:s();case"NOTE_UPDATE":return i==null?void 0:i();case"BUYER_IDENTITY_UPDATE":return a==null?void 0:a();case"CART_ATTRIBUTES_UPDATE":return c==null?void 0:c();case"DISCOUNT_CODES_UPDATE":return l==null?void 0:l()}}catch(L){console.error("Cart entry action failed",L)}},onCartActionOptimisticUI(p,N){var L,q,$,ue;if(!p.cart)return{...p};switch(N.type){case"CARTLINE_REMOVE":return{...p,cart:{...p.cart,lines:(q=(L=p==null?void 0:p.cart)==null?void 0:L.lines)==null?void 0:q.filter(M=>(M==null?void 0:M.id)&&!N.payload.lines.includes(M==null?void 0:M.id))}};case"CARTLINE_UPDATE":return{...p,cart:{...p.cart,lines:(ue=($=p==null?void 0:p.cart)==null?void 0:$.lines)==null?void 0:ue.map(M=>{const Pe=N.payload.lines.find(({id:Sn})=>Sn===(M==null?void 0:M.id));return Pe&&Pe.quantity?{...M,quantity:Pe.quantity}:M})}}}return{...p}},onCartActionComplete(p,N){const L=N.payload.cartActionEvent;try{switch(N.type){case"RESOLVE":switch(L.type){case"CART_CREATE":return d==null?void 0:d();case"CARTLINE_ADD":return g==null?void 0:g();case"CARTLINE_REMOVE":return S==null?void 0:S();case"CARTLINE_UPDATE":return m==null?void 0:m();case"NOTE_UPDATE":return y==null?void 0:y();case"BUYER_IDENTITY_UPDATE":return Ar(p,L)&&(v.current=!0),P==null?void 0:P();case"CART_ATTRIBUTES_UPDATE":return T==null?void 0:T();case"DISCOUNT_CODES_UPDATE":return k==null?void 0:k()}}}catch(q){console.error("onCartActionComplete failed",q)}}}),Z=u.useRef(!1),Ee=U.matches("cartCompleted"),pe=(U.value==="idle"||U.value==="error"||U.value==="cartCompleted")&&f!==((ht=(yt=(ft=U==null?void 0:U.context)==null?void 0:ft.cart)==null?void 0:yt.buyerIdentity)==null?void 0:ht.countryCode)&&!U.context.errors,se=u.useRef(!1);u.useEffect(()=>{if(!Z.current&&!se.current){if(!_&&we("localStorage")){se.current=!0;try{const p=window.localStorage.getItem(ve);p&&O({type:"CART_FETCH",payload:{cartId:p}})}catch(p){console.warn("error fetching cartId"),console.warn(p)}}Z.current=!0}},[_,Z,O]),u.useEffect(()=>{!pe||v.current||O({type:"BUYER_IDENTITY_UPDATE",payload:{buyerIdentity:{countryCode:f,customerAccessToken:h}}})},[f,h,pe,v,O]);const b=u.useCallback(p=>{if(!Z.current)return console.warn("Cart isn't ready yet");O(p)},[O]);u.useEffect(()=>{var p,N,L;if((N=(p=U==null?void 0:U.context)==null?void 0:p.cart)!=null&&N.id&&we("localStorage"))try{window.localStorage.setItem(ve,(L=U.context.cart)==null?void 0:L.id)}catch(q){console.warn("Failed to save cartId to localStorage",q)}},[(mt=(gt=U==null?void 0:U.context)==null?void 0:gt.cart)==null?void 0:mt.id]),u.useEffect(()=>{if(Ee&&we("localStorage"))try{window.localStorage.removeItem(ve)}catch(p){console.warn("Failed to delete cartId from localStorage",p)}},[Ee]);const Q=u.useCallback(p=>{var N,L;f&&!((N=p.buyerIdentity)!=null&&N.countryCode)&&(p.buyerIdentity==null&&(p.buyerIdentity={}),p.buyerIdentity.countryCode=f),h&&!((L=p.buyerIdentity)!=null&&L.customerAccessToken)&&(p.buyerIdentity==null&&(p.buyerIdentity={}),p.buyerIdentity.customerAccessToken=h),b({type:"CART_CREATE",payload:p})},[f,h,b]),w=_r(U),Ce=u.useMemo(()=>{var p,N,L,q;return{...((p=w==null?void 0:w.context)==null?void 0:p.cart)??{lines:[],attributes:[]},status:Tr(w.value),error:(N=w==null?void 0:w.context)==null?void 0:N.errors,totalQuantity:((q=(L=w==null?void 0:w.context)==null?void 0:L.cart)==null?void 0:q.totalQuantity)??0,cartCreate:Q,linesAdd($){var ue,M;(M=(ue=w==null?void 0:w.context)==null?void 0:ue.cart)!=null&&M.id?b({type:"CARTLINE_ADD",payload:{lines:$}}):Q({lines:$})},linesRemove($){b({type:"CARTLINE_REMOVE",payload:{lines:$}})},linesUpdate($){b({type:"CARTLINE_UPDATE",payload:{lines:$}})},noteUpdate($){b({type:"NOTE_UPDATE",payload:{note:$}})},buyerIdentityUpdate($){b({type:"BUYER_IDENTITY_UPDATE",payload:{buyerIdentity:$}})},cartAttributesUpdate($){b({type:"CART_ATTRIBUTES_UPDATE",payload:{attributes:$}})},discountCodesUpdate($){b({type:"DISCOUNT_CODES_UPDATE",payload:{discountCodes:$}})},cartFragment:V}},[Q,(Et=w==null?void 0:w.context)==null?void 0:Et.cart,(pt=w==null?void 0:w.context)==null?void 0:pt.errors,w.value,V,b]);return u.createElement(Ye.Provider,{value:Ce},e)}function Tr(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 _r(e){const[t,r]=u.useTransition(),[n,o]=u.useState(e),s=u.useRef(!1);t&&(s.current=!0);const i=u.useRef(!1);return!t&&s.current&&(i.current=!0),u.useEffect(()=>{r(()=>{i.current||o(e)})},[e]),i.current?e:n}function we(e){let t;try{t=window[e];const r="__storage_test__";return t.setItem(r,r),t.removeItem(r),!0}catch(r){return!!(r instanceof DOMException&&(r.code===22||r.code===1014||r.name==="QuotaExceededError"||r.name==="NS_ERROR_DOM_QUOTA_REACHED")&&t&&t.length!==0)}}function Ar(e,t){var r,n;return!!(t.payload.buyerIdentity.countryCode&&((n=(r=e.cart)==null?void 0:r.buyerIdentity)==null?void 0:n.countryCode)!==t.payload.buyerIdentity.countryCode)}const Ge=u.createContext(null);function vr({children:e,data:t,initialVariantId:r}){const n=u.useMemo(()=>F(t.variants??{}),[t.variants]);if(!wr(n))throw new Error("<ProductProvider/> requires 'product.variants.nodes' or 'product.variants.edges'");const o=u.useMemo(()=>br(n),[n]),[s,i]=u.useState(()=>We(r,n)),[a,c]=u.useState(()=>ze(s));u.useEffect(()=>{const T=We(r,n);i(T),c(ze(T))},[r,n]);const l=u.useCallback((T,k)=>{c(_=>{const V={..._,[T]:k};return i(Qe(n,V)),V})},[c,n]),d=u.useCallback((T,k)=>{const _=Qe(n,{...a,[T]:k});return(_==null?void 0:_.availableForSale)??!0},[a,n]),g=u.useMemo(()=>F(t.sellingPlanGroups??{}).map(T=>({...T,sellingPlans:F((T==null?void 0:T.sellingPlans)??{})})),[t.sellingPlanGroups]),[S,m]=u.useState(void 0),y=u.useMemo(()=>{var T,k;if(!(!s||!S)){if(!((T=s.sellingPlanAllocations)!=null&&T.nodes)&&!((k=s.sellingPlanAllocations)!=null&&k.edges))throw new Error("<ProductProvider/>: You must include 'sellingPlanAllocations.nodes' or 'sellingPlanAllocations.edges' in your variants in order to calculate selectedSellingPlanAllocation");return F(s.sellingPlanAllocations).find(_=>{var V;return((V=_==null?void 0:_.sellingPlan)==null?void 0:V.id)===S.id})}},[s,S]),P=u.useMemo(()=>({variants:n,variantsConnection:t.variants,options:o,selectedVariant:s,setSelectedVariant:i,selectedOptions:a,setSelectedOption:l,setSelectedOptions:c,isOptionInStock:d,selectedSellingPlan:S,setSelectedSellingPlan:m,selectedSellingPlanAllocation:y,sellingPlanGroups:g,sellingPlanGroupsConnection:t.sellingPlanGroups}),[d,o,t.sellingPlanGroups,t.variants,a,S,y,s,g,l,n]);return u.createElement(Ge.Provider,{value:P},e)}function Ze(){const e=u.useContext(Ge);if(!e)throw new Error("'useProduct' must be a child of <ProductProvider />");return e}function Qe(e,t){var r,n;if(!(!e.length||((n=(r=e==null?void 0:e[0])==null?void 0:r.selectedOptions)==null?void 0:n.length)!==Object.keys(t).length))return e==null?void 0:e.find(o=>Object.entries(t).every(([s,i])=>{var a;return(a=o==null?void 0:o.selectedOptions)==null?void 0:a.some(c=>(c==null?void 0:c.name)===s&&(c==null?void 0:c.value)===i)}))}function br(e){const t=e.reduce((r,n)=>{var o;if(!n.selectedOptions)throw new Error("'getOptions' requires 'variant.selectedOptions'");return(o=n==null?void 0:n.selectedOptions)==null||o.forEach(s=>{r[(s==null?void 0:s.name)??""]=r[(s==null?void 0:s.name)??""]||new Set,r[(s==null?void 0:s.name)??""].add((s==null?void 0:s.value)??"")}),r},{});return Object.keys(t).map(r=>({name:r,values:Array.from(t[r])}))}function We(e,t){if(e){const r=t.find(n=>(n==null?void 0:n.id)===e);return r||console.warn("<ProductProvider/> received a 'initialVariantId' prop, but could not actually find a variant with that ID"),r}if(e===null)return null;if(e===void 0)return t.find(r=>r==null?void 0:r.availableForSale)||t[0]}function ze(e){return e!=null&&e.selectedOptions?e.selectedOptions.reduce((t,r)=>(t[(r==null?void 0:r.name)??""]=(r==null?void 0:r.value)??"",t),{}):{}}function wr(e){return!(!e||!Array.isArray(e))}function he(e){const{as:t,onClick:r,defaultOnClick:n,children:o,buttonRef:s,...i}=e,a=u.useCallback(l=>{if(r){const d=r(l);if(typeof d=="boolean"&&d===!1||l!=null&&l.defaultPrevented)return}n==null||n(l)},[n,r]),c=t||"button";return u.createElement(c,{ref:s,onClick:a,...i},o)}function Ir(e){const[t,r]=u.useState(!1),{variantId:n,quantity:o=1,attributes:s,sellingPlanId:i,onClick:a,children:c,accessibleAddingToCartLabel:l,...d}=e,{status:g,linesAdd:S}=K(),{selectedVariant:m}=Ze(),y=n??(m==null?void 0:m.id)??"",P=n===null||y===""||m===null||t||d.disabled;u.useEffect(()=>{t&&g==="idle"&&r(!1)},[g,t]);const T=u.useCallback(()=>{r(!0),S([{quantity:o,merchandiseId:y||"",attributes:s,sellingPlanId:i}])},[S,o,y,s,i]);return W.createElement(W.Fragment,null,W.createElement(he,{...d,disabled:P,onClick:a,defaultOnClick:T},c),l?W.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?l:null):null)}const Ie={PAGE_VIEW:"PAGE_VIEW",ADD_TO_CART:"ADD_TO_CART"},ge={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"},Je={hydrogen:"hydrogen",headless:"headless"},Ke={hydrogen:"6167201",headless:"12875497473"};function X(e,t){return{schema_id:e,payload:t,metadata:{event_created_at_ms:Date.now()}}}function B(e){const t={id:"",resource:null};if(typeof e!="string")return t;const r=e.match(/^gid:\/\/shopify\/(\w+)\/([a-z0-9]+)/);if(!r||r.length===1)return t;const n=r[2]??null,o=r[1]??null;return{id:n,resource:o}}function G(e,t){return typeof e!="object"?{}:(Object.entries(e).forEach(([r,n])=>{n&&(t[r]=n)}),t)}function Dr(e){return typeof document>"u"?(console.error(`${e} should only be used within the useEffect callback or event handlers`),!0):!1}const Pr="trekkie_storefront_page_view/1.4",kr="myshopify.dev";function Ur(e){const t=e,{id:r,resource:n}=B(t.resourceId),o=n?n.toLowerCase():void 0;return[X(Pr,G({pageType:t.pageType,customerId:t.customerId,resourceType:o,resourceId:parseInt(r)},Nr(t)))]}function Nr(e){return{appClientId:e.shopifySalesChannel?Ke[e.shopifySalesChannel]:Ke.headless,isMerchantRequest:$r(e.url),hydrogenSubchannelId:e.storefrontId||"0",isPersistentCookie:e.hasUserConsent,uniqToken:e.uniqueToken,visitToken:e.visitToken,microSessionId:fe(),microSessionCount:1,url:e.url,path:e.path,search:e.search,referrer:e.referrer,title:e.title,shopId:parseInt(B(e.shopId).id),currency:e.currency,contentLanguage:e.acceptedLanguage||"en"}}function $r(e){if(typeof e!="string")return!1;const t=new URL(e).hostname;return t.indexOf(kr)!==-1||t==="localhost"}const ne="custom_storefront_customer_tracking/1.0",Vr="page_rendered",Lr="collection_page_rendered",Mr="product_page_rendered",Or="product_added_to_cart",Rr="search_submitted";function xr(e){const t=e,r={canonical_url:t.canonicalUrl||t.url,customer_id:t.customerId},n=t.pageType,o=[];switch(o.push(X(ne,G({event_name:Vr,...r},oe(t)))),n){case ge.collection:o.push(X(ne,G({event_name:Lr,...r,collection_name:t.collectionHandle},oe(t))));break;case ge.product:o.push(X(ne,G({event_name:Mr,...r,products:Xe(t.products),total_value:t.totalValue},oe(t))));break;case ge.search:o.push(X(ne,G({event_name:Rr,...r,search_string:t.searchString},oe(t))));break}return o}function qr(e){const t=e,r=B(t.cartId),n=r!=null&&r.id?`${r.id}`:null;return[X(ne,G({event_name:Or,customerId:t.customerId,cart_token:n,total_value:t.totalValue,products:Xe(t.products)},oe(t)))]}function oe(e){return{source:e.shopifySalesChannel||Je.headless,hydrogenSubchannelId:e.storefrontId||"0",is_persistent_cookie:e.hasUserConsent,ccpa_enforced:!1,gdpr_enforced:!1,unique_token:e.uniqueToken,event_time:Date.now(),event_id:fe(),event_source_url:e.url,referrer:e.referrer,user_agent:e.userAgent,navigation_type:e.navigationType,navigation_api:e.navigationApi,shop_id:parseInt(B(e.shopId).id),currency:e.currency}}function Xe(e){return e?e.map(t=>{const r=G({variant_gid:t.variantGid,category:t.category,sku:t.sku,product_id:parseInt(B(t.productGid).id),variant_id:parseInt(B(t.variantGid).id)},{product_gid:t.productGid,name:t.name,variant:t.variantName||"",brand:t.brand,price:t.price,quantity:Number(t.quantity||0)});return JSON.stringify(r)}):[]}function Fr(e,t){const{eventName:r,payload:n}=e;if(!n.hasUserConsent)return Promise.resolve();let o=[];if(r===Ie.PAGE_VIEW){const s=n;o=o.concat(Ur(s),xr(s))}else r===Ie.ADD_TO_CART&&(o=o.concat(qr(n)));return o.length?Br(o,t):Promise.resolve()}const et="sendShopifyAnalytics request is unsuccessful";function Br(e,t){const r={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(r)}).then(n=>{if(!n.ok)throw new Error("Response failed");return n.text()}).then(n=>{n&&JSON.parse(n).result.forEach(s=>{s.status!==200&&console.error(et,`
|
|
262
262
|
|
|
263
|
-
`,s.message)})}).catch(n=>{console.error(et,n)})}catch{return Promise.resolve()}}function jr(){if(Dr("getClientBrowserParameters"))return{uniqueToken:"",visitToken:"",url:"",path:"",search:"",referrer:"",title:"",userAgent:"",navigationType:"",navigationApi:""};const[e,t]=Gr(),r=ye(document.cookie);return{uniqueToken:r[H],visitToken:r[Y],url:location.href,path:location.pathname,search:location.search,referrer:document.referrer,title:document.title,userAgent:navigator.userAgent,navigationType:e,navigationApi:t}}function Hr(){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 Yr(){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 r=performance.navigation.type;switch(r){case PerformanceNavigation.TYPE_NAVIGATE:return"navigate";case PerformanceNavigation.TYPE_RELOAD:return"reload";case PerformanceNavigation.TYPE_BACK_FORWARD:return"back_forward";default:return`unknown: ${r}`}}}catch{}}function Gr(){try{let e="PerformanceNavigationTiming",t=Hr();return t||(t=Yr(),e="performance.navigation"),t?[t,e]:["unknown","unknown"]}catch{}return["error","error"]}function Zr(e){const{cartCreate:t,checkoutUrl:r}=K(),[n,o]=u.useState(!1),{quantity:s,variantId:i,onClick:a,attributes:c,children:l,...d}=e;u.useEffect(()=>{r&&(window.location.href=r)},[r]);const g=u.useCallback(()=>{o(!0),t({lines:[{quantity:s??1,merchandiseId:i,attributes:c}]})},[t,s,i,c]);return u.createElement(he,{disabled:n??d.disabled,...d,onClick:a,defaultOnClick:g},l)}function Qr(e){const[t,r]=u.useState(!1),{status:n,checkoutUrl:o}=K(),{children:s,...i}=e;return u.useEffect(()=>{t&&o&&n==="idle"&&(window.location.href=o)},[t,n,o]),u.createElement(he,{...i,disabled:t||i.disabled,onClick:()=>r(!0)},s)}function tt(e){const{countryIsoCode:t,languageIsoCode:r}=de(),n=`${r}-${t}`;if(!n)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 o=parseFloat(e.amount),s=u.useMemo(()=>({style:"currency",currency:e.currencyCode}),[e.currencyCode]),i=ee(n,s),a=ee(n,{...s,currencyDisplay:"name"}),c=ee(n,{...s,currencyDisplay:"narrowSymbol"}),l=ee(n,{...s,minimumFractionDigits:0,maximumFractionDigits:0}),d=ee(n),g=ee(n,{minimumFractionDigits:0,maximumFractionDigits:0}),S=y=>y.type==="currency",m=u.useMemo(()=>({original:()=>e,currencyCode:()=>e.currencyCode,localizedString:()=>i().format(o),parts:()=>i().formatToParts(o),withoutTrailingZeros:()=>o%1===0?l().format(o):i().format(o),withoutTrailingZerosAndCurrency:()=>o%1===0?g().format(o):d().format(o),currencyName:()=>{var y;return((y=a().formatToParts(o).find(S))==null?void 0:y.value)??e.currencyCode},currencySymbol:()=>{var y;return((y=i().formatToParts(o).find(S))==null?void 0:y.value)??e.currencyCode},currencyNarrowSymbol:()=>{var y;return((y=c().formatToParts(o).find(S))==null?void 0:y.value)??""},amount:()=>i().formatToParts(o).filter(y=>["decimal","fraction","group","integer","literal"].includes(y.type)).map(y=>y.value).join("")}),[e,o,a,i,c,d,l,g]);return u.useMemo(()=>new Proxy(m,{get:(y,P)=>{var T;return(T=Reflect.get(y,P))==null?void 0:T.call(null)}}),[m])}function ee(e,t){return u.useMemo(()=>{let r;return()=>r??(r=new Intl.NumberFormat(e,t))},[e,t])}function ae({data:e,as:t,withoutCurrency:r,withoutTrailingZeros:n,measurement:o,measurementSeparator:s="/",...i}){if(!Wr(e))throw new Error("<Money/> needs a valid 'data' prop that has 'amount' and 'currencyCode'");const a=tt(e),c=t??"div";let l=a.localizedString;return(r||n)&&(r&&!n?l=a.amount:!r&&n?l=a.withoutTrailingZeros:l=a.withoutTrailingZerosAndCurrency),u.createElement(c,{...i},l,o&&o.referenceUnit&&u.createElement(u.Fragment,null,s,o.referenceUnit))}function Wr(e){return typeof e.amount=="string"&&!!e.amount&&typeof e.currencyCode=="string"&&!!e.currencyCode}function zr(e){const{cost:t}=K(),{amountType:r="total",children:n,...o}=e;let s;return r=="total"?s=t==null?void 0:t.totalAmount:r=="subtotal"?s=t==null?void 0:t.subtotalAmount:r=="tax"?s=t==null?void 0:t.totalTaxAmount:r=="duty"&&(s=t==null?void 0:t.totalDutyAmount),s==null?null:u.createElement(ae,{...o,data:s},n)}function Jr(e){var s,i;const{data:t,priceType:r="regular",...n}=e;if(t==null)throw new Error("<CartLinePrice/> requires a cart line as the 'data' prop");const o=r==="regular"?(s=t.cost)==null?void 0:s.totalAmount:(i=t.cost)==null?void 0:i.compareAtAmountPerQuantity;return o==null?null:u.createElement(ae,{...n,data:o})}const rt=u.createContext(null);function De(){const e=u.useContext(rt);if(e==null)throw new Error("Expected a cart line context but none was found");return e}function Kr({children:e,line:t}){return u.createElement(rt.Provider,{value:t},e)}function Xr(e){const t=De(),{as:r,...n}=e,o=r||"span";return u.createElement(o,{...n},t.quantity)}function en(e){const{status:t,linesRemove:r,linesUpdate:n}=K(),o=De(),{children:s,adjust:i,onClick:a,...c}=e,l=u.useCallback(()=>{if(i==="remove"){r([(o==null?void 0:o.id)??""]);return}const d=i==="decrease"?((o==null?void 0:o.quantity)??0)-1:((o==null?void 0:o.quantity)??0)+1;if(d<=0){r([(o==null?void 0:o.id)??""]);return}const g={id:(o==null?void 0:o.id)??"",quantity:d,attributes:(o==null?void 0:o.attributes)??[]};n([g])},[i,o==null?void 0:o.attributes,o==null?void 0:o.id,o==null?void 0:o.quantity,r,n]);return u.createElement(he,{onClick:a,defaultOnClick:l,disabled:typeof c.disabled<"u"?c.disabled:t!=="idle",...c},s)}const tn={DateTime:"string",Decimal:"string",HTML:"string",URL:"string",Color:"string",UnsignedInt64:"string"};function nt(e){const{data:t,options:r,id:n=t.id,frameBorder:o="0",allow:s="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:i=!0,loading:a="lazy",...c}=e;if(!t.embedUrl)throw new Error("<ExternalVideo/> requires the 'embedUrl' property");let l=t.embedUrl;if(r){const d=new URL(t.embedUrl);for(const g of Object.keys(r))d.searchParams.set(g,r[g]);l=d.toString()}return u.createElement("iframe",{...c,id:n??t.embedUrl,title:t.alt??t.id??"external video",frameBorder:o,allow:s,allowFullScreen:i,src:l,loading:a})}const rn=["cdn.shopify.com","cdn.shopifycdn.net","shopify-assets.shopifycdn.com","shopify-assets.shopifycdn.net"],nn=["spin.dev"],on=[...rn,...nn],ie=[352,832,1200,1920,2560];function ot({src:e,width:t,height:r,crop:n,scale:o}){const s=new URL(e),i=o??1;if(t){let a;typeof t=="string"?a=(ie[0]*i).toString():a=(Number(t)*i).toString(),s.searchParams.append("width",a)}return r&&typeof r=="number"&&s.searchParams.append("height",(r*i).toString()),n&&s.searchParams.append("crop",n),s.toString()}function at(e){const t=new URL(e.src);return!on.some(n=>t.hostname.endsWith(n))||!e.width&&!e.height&&!e.crop&&!e.scale?e.src:ot(e)}function an({data:e,loaderOptions:t,elementProps:r}){let n=null;return e!=null&&e.width&&(e!=null&&e.height)&&(n=(e==null?void 0:e.width)/(e==null?void 0:e.height)),t!=null&&t.width||t!=null&&t.height?{width:(t==null?void 0:t.width)??(n&&typeof t.height=="number"?Math.round(n*t.height):null),height:(t==null?void 0:t.height)??(n&&typeof t.width=="number"?Math.round(n*t.width):null)}:r!=null&&r.width||r!=null&&r.height?{width:(r==null?void 0:r.width)??(n&&typeof r.height=="number"?Math.round(n*r.height):null),height:(r==null?void 0:r.height)??(n&&typeof r.width=="number"?Math.round(n*r.width):null)}:e!=null&&e.width||e!=null&&e.height?{width:(e==null?void 0:e.width)??null,height:(e==null?void 0:e.height)??null}:{width:null,height:null}}function it({data:e,width:t,height:r,loading:n,loader:o=at,loaderOptions:s,widths:i,decoding:a="async",...c}){if(!e.url){const y=`<Image/>: the 'data' prop requires the 'url' property. Image: ${e.id??"no ID provided"}`;return console.error(y),null}const{width:l,height:d}=an({data:e,loaderOptions:s,elementProps:{width:t,height:r}});let g=e.url;if(o&&(g=o({...s,src:e.url,width:l,height:d}),typeof g!="string"||!g))throw new Error(`<Image/>: 'loader' did not return a valid string. Image: ${e.id??e.url}`);const S=t&&l&&t<l?t:l,m=c.srcSet??sn({...s,widths:i,src:e.url,width:S,height:d,loader:o});return W.createElement("img",{id:e.id??"",alt:e.altText??c.alt??"",loading:n??"lazy",...c,src:g,width:l??void 0,height:d??void 0,srcSet:m,decoding:a})}function sn({src:e,width:t,crop:r,scale:n,widths:o,loader:s,height:i}){const a=o&&Array.isArray(o);if(a&&o.some(g=>isNaN(g)))throw new Error(`<Image/>: the 'widths' must be an array of numbers. Image: ${e}`);let c=1;t&&i&&(c=Number(i)/Number(t));let l=a?o:ie;!a&&t&&t<ie[ie.length-1]&&(l=ie.filter(g=>g<=t));const d=s||ot;return l.map(g=>`${d({src:e,width:g,height:r?Number(g)*c:void 0,crop:r,scale:n})} ${g??""}w`).join(", ")}function st(e){var l;const{data:t,previewImageOptions:r,id:n=t.id,playsInline:o=!0,controls:s=!0,sourceProps:i={},...a}=e,c=at({src:((l=t.previewImage)==null?void 0:l.url)??"",...r});if(!t.sources)throw new Error("<Video/> requires a 'data.sources' array");return u.createElement("video",{...a,id:n,playsInline:o,controls:s,poster:c},t.sources.map(d=>{if(!(d!=null&&d.url&&(d!=null&&d.mimeType)))throw new Error("<Video/> needs 'source.url' and 'source.mimeType'");return u.createElement("source",{...i,key:d.url,src:d.url,type:d.mimeType})}))}const ut={};function un(e,t){const r=ut[e];if(r)return r;const n=new Promise((o,s)=>{const i=document.createElement("script");t!=null&&t.module?i.type="module":i.type="text/javascript",i.src=e,i.onload=()=>{o(!0)},i.onerror=()=>{s(!1)},(t==null?void 0:t.in)==="head"?document.head.appendChild(i):document.body.appendChild(i)});return ut[e]=n,n}function ct(e,t){const[r,n]=u.useState("loading"),o=JSON.stringify(t);return u.useEffect(()=>{async function s(){try{n("loading"),await un(e,t),n("done")}catch{n("error")}}s().catch(()=>{n("error")})},[e,o,t]),r}function lt(e){var l,d,g;const[t,r]=u.useState(void 0),n=u.useCallback(S=>{r(S)},[]),{data:o,children:s,className:i,...a}=e,c=ct("https://unpkg.com/@google/model-viewer@v1.12.1/dist/model-viewer.min.js",{module:!0});return u.useEffect(()=>{if(t)return a.onError&&t.addEventListener("error",a.onError),a.onLoad&&t.addEventListener("load",a.onLoad),a.onPreload&&t.addEventListener("preload",a.onPreload),a.onModelVisibility&&t.addEventListener("model-visibility",a.onModelVisibility),a.onProgress&&t.addEventListener("progress",a.onProgress),a.onArStatus&&t.addEventListener("ar-status",a.onArStatus),a.onArTracking&&t.addEventListener("ar-tracking",a.onArTracking),a.onQuickLookButtonTapped&&t.addEventListener("quick-look-button-tapped",a.onQuickLookButtonTapped),a.onCameraChange&&t.addEventListener("camera-change",a.onCameraChange),a.onEnvironmentChange&&t.addEventListener("environment-change",a.onEnvironmentChange),a.onPlay&&t.addEventListener("play",a.onPlay),a.onPause&&t.addEventListener("ar-status",a.onPause),a.onSceneGraphReady&&t.addEventListener("scene-graph-ready",a.onSceneGraphReady),()=>{t!=null&&(a.onError&&t.removeEventListener("error",a.onError),a.onLoad&&t.removeEventListener("load",a.onLoad),a.onPreload&&t.removeEventListener("preload",a.onPreload),a.onModelVisibility&&t.removeEventListener("model-visibility",a.onModelVisibility),a.onProgress&&t.removeEventListener("progress",a.onProgress),a.onArStatus&&t.removeEventListener("ar-status",a.onArStatus),a.onArTracking&&t.removeEventListener("ar-tracking",a.onArTracking),a.onQuickLookButtonTapped&&t.removeEventListener("quick-look-button-tapped",a.onQuickLookButtonTapped),a.onCameraChange&&t.removeEventListener("camera-change",a.onCameraChange),a.onEnvironmentChange&&t.removeEventListener("environment-change",a.onEnvironmentChange),a.onPlay&&t.removeEventListener("play",a.onPlay),a.onPause&&t.removeEventListener("ar-status",a.onPause),a.onSceneGraphReady&&t.removeEventListener("scene-graph-ready",a.onSceneGraphReady))}},[t,a.onArStatus,a.onArTracking,a.onCameraChange,a.onEnvironmentChange,a.onError,a.onLoad,a.onModelVisibility,a.onPause,a.onPlay,a.onPreload,a.onProgress,a.onQuickLookButtonTapped,a.onSceneGraphReady]),c!=="done"?null:(d=(l=o.sources)==null?void 0:l[0])!=null&&d.url?u.createElement("model-viewer",{ref:n,...a,className:i,id:a.id??o.id,src:o.sources[0].url,alt:o.alt??null,"camera-controls":a.cameraControls??!0,poster:(a.poster||((g=o.previewImage)==null?void 0:g.url))??null,autoplay:a.autoplay??!0,loading:a.loading,reveal:a.reveal,ar:a.ar,"ar-modes":a.arModes,"ar-scale":a.arScale,"ar-placement":a.arPlacement,"ios-src":a.iosSrc,"touch-action":a.touchAction,"disable-zoom":a.disableZoom,"orbit-sensitivity":a.orbitSensitivity,"auto-rotate":a.autoRotate,"auto-rotate-delay":a.autoRotateDelay,"rotation-per-second":a.rotationPerSecond,"interaction-policy":a.interactionPolicy,"interaction-prompt":a.interactionPrompt,"interaction-prompt-style":a.interactionPromptStyle,"interaction-prompt-threshold":a.interactionPromptThreshold,"camera-orbit":a.cameraOrbit,"camera-target":a.cameraTarget,"field-of-view":a.fieldOfView,"max-camera-orbit":a.maxCameraOrbit,"min-camera-orbit":a.minCameraOrbit,"max-field-of-view":a.maxFieldOfView,"min-field-of-view":a.minFieldOfView,bounds:a.bounds,"interpolation-decay":a.interpolationDecay??100,"skybox-image":a.skyboxImage,"environment-image":a.environmentImage,exposure:a.exposure,"shadow-intensity":a.shadowIntensity??0,"shadow-softness":a.shadowSoftness??0,"animation-name":a.animationName,"animation-crossfade-duration":a.animationCrossfadeDuration,"variant-name":a.variantName,orientation:a.orientation,scale:a.scale},s):(console.error("<ModelViewer/> requires 'data.sources' prop to be an array, with an object that has a property 'url' on it. Rendering 'null'"),null)}function cn({data:e,mediaOptions:t,...r}){switch(e.__typename){case"MediaImage":return e.image?u.createElement(it,{...r,...t==null?void 0:t.image,data:e.image}):(console.warn("<MediaFile/>: 'data.image' does not exist for __typename of 'MediaImage'; rendering 'null' by default."),null);case"Video":return u.createElement(st,{...r,...t==null?void 0:t.video,data:e});case"ExternalVideo":return u.createElement(nt,{...r,...t==null?void 0:t.externalVideo,data:e});case"Model3d":return u.createElement(lt,{...r,...t==null?void 0:t.modelViewer,data:e});default:return console.error("<MediaFile /> requires the '__typename' property to exist on the 'data' prop in order to render the matching sub-component for this type of media. Rendering 'null' by default"),null}}function ln(e){if(!e.type)return console.error("parseMetafield(): The 'type' field is required in order to parse the Metafield. Returning 'parsedValue' of 'null'"),{...e,parsedValue:null};switch(e.type){case"boolean":return{...e,parsedValue:e.value==="true"};case"collection_reference":case"file_reference":case"page_reference":case"product_reference":case"variant_reference":return{...e,parsedValue:e.reference};case"color":case"multi_line_text_field":case"single_line_text_field":case"url":return{...e,parsedValue:e.value};case"dimension":case"money":case"json":case"rating":case"volume":case"weight":case"list.color":case"list.dimension":case"list.number_integer":case"list.number_decimal":case"list.rating":case"list.single_line_text_field":case"list.url":case"list.volume":case"list.weight":{let t=null;try{t=dt(e.value??"")}catch{console.error("parseMetafield(): attempted to JSON.parse the 'metafield.value' property, but failed. Returning 'null' for 'parsedValue'"),t=null}return{...e,parsedValue:t}}case"date":case"date_time":return{...e,parsedValue:new Date(e.value??"")};case"list.date":case"list.date_time":{const t=dt((e==null?void 0:e.value)??"");return{...e,parsedValue:t.map(r=>new Date(r))}}case"number_decimal":case"number_integer":return{...e,parsedValue:Number(e.value)};case"list.collection_reference":case"list.file_reference":case"list.page_reference":case"list.product_reference":case"list.variant_reference":return{...e,parsedValue:F(e.references??void 0)};default:{const t=`parseMetafield(): the 'metafield.type' you passed in is not supported. Your type: "${e.type}". If you believe this is an error, please open an issue on GitHub.`;return console.error(`${t} Returning 'parsedValue' of 'null'`),{...e,parsedValue:null}}}}function dt(e){return String(e).includes("__proto__")?JSON.parse(e,(t,r)=>{if(t!=="__proto__")return r}):JSON.parse(e)}function dn(e){var l,d,g,S,m,y;const{priceType:t="regular",variantId:r,valueType:n="min",data:o,...s}=e;if(o==null)throw new Error("<ProductPrice/> requires a product as the 'data' prop");let i,a;const c=r?F((o==null?void 0:o.variants)??{}).find(P=>(P==null?void 0:P.id)===r)??null:null;if(t==="compareAt")if(r&&c){if(((l=c.compareAtPriceV2)==null?void 0:l.amount)===((d=c.priceV2)==null?void 0:d.amount))return null;i=c.compareAtPriceV2}else n==="max"?i=(g=o==null?void 0:o.compareAtPriceRange)==null?void 0:g.maxVariantPrice:i=(S=o==null?void 0:o.compareAtPriceRange)==null?void 0:S.minVariantPrice;else r&&c?(i=c.priceV2,n==="unit"&&(i=c.unitPrice,a=c.unitPriceMeasurement)):n==="max"?i=(m=o.priceRange)==null?void 0:m.maxVariantPrice:i=(y=o.priceRange)==null?void 0:y.minVariantPrice;return i?a?u.createElement(ae,{...s,data:i,measurement:a}):u.createElement(ae,{...s,data:i}):null}const fn="https://cdn.shopify.com/shopifycloud/shop-js/v1.0/client.js";function yn({variantIds:e,className:t,variantIdsAndQuantities:r,width:n}){const{storeDomain:o}=de(),s=ct(fn);let i=[];if(e&&r)throw new Error(mn);if(e)i=e.reduce((c,l)=>{const d=B(l).id;return d&&c.push(d),c},[]);else if(r)i=r.reduce((c,l)=>{const d=B(l==null?void 0:l.id).id;return d&&c.push(`${d}:${(l==null?void 0:l.quantity)??1}`),c},[]);else throw new Error(gn);if(i.length===0)throw new Error(hn);const a=n?{"--shop-pay-button-width":n}:void 0;return u.createElement("div",{className:t,style:a},s==="done"&&u.createElement("shop-pay-button",{"store-url":o,variants:i.join(",")}))}const hn='You must pass in "variantIds" in the form of ["gid://shopify/ProductVariant/1"]',gn='You must pass in either "variantIds" or "variantIdsAndQuantities" to ShopPayButton',mn="You must provide either a variantIds or variantIdsAndQuantities prop, but not both in the ShopPayButton component",En=60*60*24*360*1,pn=60*30;function Cn(e){const{hasUserConsent:t=!1,domain:r=""}=e||{};u.useEffect(()=>{const n=ye(document.cookie);t?(me(H,n[H]||fe(),En,r),me(Y,n[Y]||fe(),pn,r)):(me(H,"",0,r),me(Y,"",0,r))})}function me(e,t,r,n){document.cookie=fr(e,t,{maxage:r,domain:n,samesite:"Lax",path:"/"})}E.AddToCartButton=Ir,E.AnalyticsEventName=Ie,E.AnalyticsPageType=ge,E.BuyNowButton=Zr,E.CartCheckoutButton=Qr,E.CartCost=zr,E.CartLinePrice=Jr,E.CartLineProvider=Kr,E.CartLineQuantity=Xr,E.CartLineQuantityAdjustButton=en,E.CartProvider=Sr,E.ExternalVideo=nt,E.Image=it,E.MediaFile=cn,E.ModelViewer=lt,E.Money=ae,E.ProductPrice=dn,E.ProductProvider=vr,E.ShopPayButton=yn,E.ShopifyProvider=ir,E.ShopifySalesChannel=Je,E.Video=st,E.createStorefrontClient=or,E.flattenConnection=F,E.getClientBrowserParameters=jr,E.getShopifyCookies=ye,E.parseMetafield=ln,E.sendShopifyAnalytics=Fr,E.storefrontApiCustomScalars=tn,E.useCart=K,E.useCartLine=De,E.useMoney=tt,E.useProduct=Ze,E.useShop=de,E.useShopifyCookies=Cn,Object.defineProperty(E,Symbol.toStringTag,{value:"Module"})});
|
|
263
|
+
`,s.message)})}).catch(n=>{console.error(et,n)})}catch{return Promise.resolve()}}function jr(){if(Dr("getClientBrowserParameters"))return{uniqueToken:"",visitToken:"",url:"",path:"",search:"",referrer:"",title:"",userAgent:"",navigationType:"",navigationApi:""};const[e,t]=Gr(),r=ye(document.cookie);return{uniqueToken:r[H],visitToken:r[Y],url:location.href,path:location.pathname,search:location.search,referrer:document.referrer,title:document.title,userAgent:navigator.userAgent,navigationType:e,navigationApi:t}}function Hr(){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 Yr(){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 r=performance.navigation.type;switch(r){case PerformanceNavigation.TYPE_NAVIGATE:return"navigate";case PerformanceNavigation.TYPE_RELOAD:return"reload";case PerformanceNavigation.TYPE_BACK_FORWARD:return"back_forward";default:return`unknown: ${r}`}}}catch{}}function Gr(){try{let e="PerformanceNavigationTiming",t=Hr();return t||(t=Yr(),e="performance.navigation"),t?[t,e]:["unknown","unknown"]}catch{}return["error","error"]}function Zr(e){const{cartCreate:t,checkoutUrl:r}=K(),[n,o]=u.useState(!1),{quantity:s,variantId:i,onClick:a,attributes:c,children:l,...d}=e;u.useEffect(()=>{r&&(window.location.href=r)},[r]);const g=u.useCallback(()=>{o(!0),t({lines:[{quantity:s??1,merchandiseId:i,attributes:c}]})},[t,s,i,c]);return u.createElement(he,{disabled:n??d.disabled,...d,onClick:a,defaultOnClick:g},l)}function Qr(e){const[t,r]=u.useState(!1),{status:n,checkoutUrl:o}=K(),{children:s,...i}=e;return u.useEffect(()=>{t&&o&&n==="idle"&&(window.location.href=o)},[t,n,o]),u.createElement(he,{...i,disabled:t||i.disabled,onClick:()=>r(!0)},s)}function tt(e){const{countryIsoCode:t,languageIsoCode:r}=de(),n=`${r}-${t}`;if(!n)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 o=parseFloat(e.amount),s=u.useMemo(()=>({style:"currency",currency:e.currencyCode}),[e.currencyCode]),i=ee(n,s),a=ee(n,{...s,currencyDisplay:"name"}),c=ee(n,{...s,currencyDisplay:"narrowSymbol"}),l=ee(n,{...s,minimumFractionDigits:0,maximumFractionDigits:0}),d=ee(n),g=ee(n,{minimumFractionDigits:0,maximumFractionDigits:0}),S=y=>y.type==="currency",m=u.useMemo(()=>({original:()=>e,currencyCode:()=>e.currencyCode,localizedString:()=>i().format(o),parts:()=>i().formatToParts(o),withoutTrailingZeros:()=>o%1===0?l().format(o):i().format(o),withoutTrailingZerosAndCurrency:()=>o%1===0?g().format(o):d().format(o),currencyName:()=>{var y;return((y=a().formatToParts(o).find(S))==null?void 0:y.value)??e.currencyCode},currencySymbol:()=>{var y;return((y=i().formatToParts(o).find(S))==null?void 0:y.value)??e.currencyCode},currencyNarrowSymbol:()=>{var y;return((y=c().formatToParts(o).find(S))==null?void 0:y.value)??""},amount:()=>i().formatToParts(o).filter(y=>["decimal","fraction","group","integer","literal"].includes(y.type)).map(y=>y.value).join("")}),[e,o,a,i,c,d,l,g]);return u.useMemo(()=>new Proxy(m,{get:(y,P)=>{var T;return(T=Reflect.get(y,P))==null?void 0:T.call(null)}}),[m])}function ee(e,t){return u.useMemo(()=>{let r;return()=>r??(r=new Intl.NumberFormat(e,t))},[e,t])}function ae({data:e,as:t,withoutCurrency:r,withoutTrailingZeros:n,measurement:o,measurementSeparator:s="/",...i}){if(!Wr(e))throw new Error("<Money/> needs a valid 'data' prop that has 'amount' and 'currencyCode'");const a=tt(e),c=t??"div";let l=a.localizedString;return(r||n)&&(r&&!n?l=a.amount:!r&&n?l=a.withoutTrailingZeros:l=a.withoutTrailingZerosAndCurrency),u.createElement(c,{...i},l,o&&o.referenceUnit&&u.createElement(u.Fragment,null,s,o.referenceUnit))}function Wr(e){return typeof e.amount=="string"&&!!e.amount&&typeof e.currencyCode=="string"&&!!e.currencyCode}function zr(e){const{cost:t}=K(),{amountType:r="total",children:n,...o}=e;let s;return r=="total"?s=t==null?void 0:t.totalAmount:r=="subtotal"?s=t==null?void 0:t.subtotalAmount:r=="tax"?s=t==null?void 0:t.totalTaxAmount:r=="duty"&&(s=t==null?void 0:t.totalDutyAmount),s==null?null:u.createElement(ae,{...o,data:s},n)}function Jr(e){var s,i;const{data:t,priceType:r="regular",...n}=e;if(t==null)throw new Error("<CartLinePrice/> requires a cart line as the 'data' prop");const o=r==="regular"?(s=t.cost)==null?void 0:s.totalAmount:(i=t.cost)==null?void 0:i.compareAtAmountPerQuantity;return o==null?null:u.createElement(ae,{...n,data:o})}const rt=u.createContext(null);function De(){const e=u.useContext(rt);if(e==null)throw new Error("Expected a cart line context but none was found");return e}function Kr({children:e,line:t}){return u.createElement(rt.Provider,{value:t},e)}function Xr(e){const t=De(),{as:r,...n}=e,o=r||"span";return u.createElement(o,{...n},t.quantity)}function en(e){const{status:t,linesRemove:r,linesUpdate:n}=K(),o=De(),{children:s,adjust:i,onClick:a,...c}=e,l=u.useCallback(()=>{if(i==="remove"){r([(o==null?void 0:o.id)??""]);return}const d=i==="decrease"?((o==null?void 0:o.quantity)??0)-1:((o==null?void 0:o.quantity)??0)+1;if(d<=0){r([(o==null?void 0:o.id)??""]);return}const g={id:(o==null?void 0:o.id)??"",quantity:d,attributes:(o==null?void 0:o.attributes)??[]};n([g])},[i,o==null?void 0:o.attributes,o==null?void 0:o.id,o==null?void 0:o.quantity,r,n]);return u.createElement(he,{...c,onClick:a,defaultOnClick:l,disabled:typeof c.disabled<"u"?c.disabled:t!=="idle"},s)}const tn={DateTime:"string",Decimal:"string",HTML:"string",URL:"string",Color:"string",UnsignedInt64:"string"};function nt(e){const{data:t,options:r,id:n=t.id,frameBorder:o="0",allow:s="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:i=!0,loading:a="lazy",...c}=e;if(!t.embedUrl)throw new Error("<ExternalVideo/> requires the 'embedUrl' property");let l=t.embedUrl;if(r){const d=new URL(t.embedUrl);for(const g of Object.keys(r))d.searchParams.set(g,r[g]);l=d.toString()}return u.createElement("iframe",{...c,id:n??t.embedUrl,title:t.alt??t.id??"external video",frameBorder:o,allow:s,allowFullScreen:i,src:l,loading:a})}const rn=["cdn.shopify.com","cdn.shopifycdn.net","shopify-assets.shopifycdn.com","shopify-assets.shopifycdn.net"],nn=["spin.dev"],on=[...rn,...nn],ie=[352,832,1200,1920,2560];function ot({src:e,width:t,height:r,crop:n,scale:o}){const s=new URL(e),i=o??1;if(t){let a;typeof t=="string"?a=(ie[0]*i).toString():a=(Number(t)*i).toString(),s.searchParams.append("width",a)}return r&&typeof r=="number"&&s.searchParams.append("height",(r*i).toString()),n&&s.searchParams.append("crop",n),s.toString()}function at(e){const t=new URL(e.src);return!on.some(n=>t.hostname.endsWith(n))||!e.width&&!e.height&&!e.crop&&!e.scale?e.src:ot(e)}function an({data:e,loaderOptions:t,elementProps:r}){let n=null;return e!=null&&e.width&&(e!=null&&e.height)&&(n=(e==null?void 0:e.width)/(e==null?void 0:e.height)),t!=null&&t.width||t!=null&&t.height?{width:(t==null?void 0:t.width)??(n&&typeof t.height=="number"?Math.round(n*t.height):null),height:(t==null?void 0:t.height)??(n&&typeof t.width=="number"?Math.round(n*t.width):null)}:r!=null&&r.width||r!=null&&r.height?{width:(r==null?void 0:r.width)??(n&&typeof r.height=="number"?Math.round(n*r.height):null),height:(r==null?void 0:r.height)??(n&&typeof r.width=="number"?Math.round(n*r.width):null)}:e!=null&&e.width||e!=null&&e.height?{width:(e==null?void 0:e.width)??null,height:(e==null?void 0:e.height)??null}:{width:null,height:null}}function it({data:e,width:t,height:r,loading:n,loader:o=at,loaderOptions:s,widths:i,decoding:a="async",...c}){if(!e.url){const y=`<Image/>: the 'data' prop requires the 'url' property. Image: ${e.id??"no ID provided"}`;return console.error(y),null}const{width:l,height:d}=an({data:e,loaderOptions:s,elementProps:{width:t,height:r}});let g=e.url;if(o&&(g=o({...s,src:e.url,width:l,height:d}),typeof g!="string"||!g))throw new Error(`<Image/>: 'loader' did not return a valid string. Image: ${e.id??e.url}`);const S=t&&l&&t<l?t:l,m=c.srcSet??sn({...s,widths:i,src:e.url,width:S,height:d,loader:o});return W.createElement("img",{id:e.id??"",alt:e.altText??c.alt??"",loading:n??"lazy",...c,src:g,width:l??void 0,height:d??void 0,srcSet:m,decoding:a})}function sn({src:e,width:t,crop:r,scale:n,widths:o,loader:s,height:i}){const a=o&&Array.isArray(o);if(a&&o.some(g=>isNaN(g)))throw new Error(`<Image/>: the 'widths' must be an array of numbers. Image: ${e}`);let c=1;t&&i&&(c=Number(i)/Number(t));let l=a?o:ie;!a&&t&&t<ie[ie.length-1]&&(l=ie.filter(g=>g<=t));const d=s||ot;return l.map(g=>`${d({src:e,width:g,height:r?Number(g)*c:void 0,crop:r,scale:n})} ${g??""}w`).join(", ")}function st(e){var l;const{data:t,previewImageOptions:r,id:n=t.id,playsInline:o=!0,controls:s=!0,sourceProps:i={},...a}=e,c=at({src:((l=t.previewImage)==null?void 0:l.url)??"",...r});if(!t.sources)throw new Error("<Video/> requires a 'data.sources' array");return u.createElement("video",{...a,id:n,playsInline:o,controls:s,poster:c},t.sources.map(d=>{if(!(d!=null&&d.url&&(d!=null&&d.mimeType)))throw new Error("<Video/> needs 'source.url' and 'source.mimeType'");return u.createElement("source",{...i,key:d.url,src:d.url,type:d.mimeType})}))}const ut={};function un(e,t){const r=ut[e];if(r)return r;const n=new Promise((o,s)=>{const i=document.createElement("script");t!=null&&t.module?i.type="module":i.type="text/javascript",i.src=e,i.onload=()=>{o(!0)},i.onerror=()=>{s(!1)},(t==null?void 0:t.in)==="head"?document.head.appendChild(i):document.body.appendChild(i)});return ut[e]=n,n}function ct(e,t){const[r,n]=u.useState("loading"),o=JSON.stringify(t);return u.useEffect(()=>{async function s(){try{n("loading"),await un(e,t),n("done")}catch{n("error")}}s().catch(()=>{n("error")})},[e,o,t]),r}function lt(e){var l,d,g;const[t,r]=u.useState(void 0),n=u.useCallback(S=>{r(S)},[]),{data:o,children:s,className:i,...a}=e,c=ct("https://unpkg.com/@google/model-viewer@v1.12.1/dist/model-viewer.min.js",{module:!0});return u.useEffect(()=>{if(t)return a.onError&&t.addEventListener("error",a.onError),a.onLoad&&t.addEventListener("load",a.onLoad),a.onPreload&&t.addEventListener("preload",a.onPreload),a.onModelVisibility&&t.addEventListener("model-visibility",a.onModelVisibility),a.onProgress&&t.addEventListener("progress",a.onProgress),a.onArStatus&&t.addEventListener("ar-status",a.onArStatus),a.onArTracking&&t.addEventListener("ar-tracking",a.onArTracking),a.onQuickLookButtonTapped&&t.addEventListener("quick-look-button-tapped",a.onQuickLookButtonTapped),a.onCameraChange&&t.addEventListener("camera-change",a.onCameraChange),a.onEnvironmentChange&&t.addEventListener("environment-change",a.onEnvironmentChange),a.onPlay&&t.addEventListener("play",a.onPlay),a.onPause&&t.addEventListener("ar-status",a.onPause),a.onSceneGraphReady&&t.addEventListener("scene-graph-ready",a.onSceneGraphReady),()=>{t!=null&&(a.onError&&t.removeEventListener("error",a.onError),a.onLoad&&t.removeEventListener("load",a.onLoad),a.onPreload&&t.removeEventListener("preload",a.onPreload),a.onModelVisibility&&t.removeEventListener("model-visibility",a.onModelVisibility),a.onProgress&&t.removeEventListener("progress",a.onProgress),a.onArStatus&&t.removeEventListener("ar-status",a.onArStatus),a.onArTracking&&t.removeEventListener("ar-tracking",a.onArTracking),a.onQuickLookButtonTapped&&t.removeEventListener("quick-look-button-tapped",a.onQuickLookButtonTapped),a.onCameraChange&&t.removeEventListener("camera-change",a.onCameraChange),a.onEnvironmentChange&&t.removeEventListener("environment-change",a.onEnvironmentChange),a.onPlay&&t.removeEventListener("play",a.onPlay),a.onPause&&t.removeEventListener("ar-status",a.onPause),a.onSceneGraphReady&&t.removeEventListener("scene-graph-ready",a.onSceneGraphReady))}},[t,a.onArStatus,a.onArTracking,a.onCameraChange,a.onEnvironmentChange,a.onError,a.onLoad,a.onModelVisibility,a.onPause,a.onPlay,a.onPreload,a.onProgress,a.onQuickLookButtonTapped,a.onSceneGraphReady]),c!=="done"?null:(d=(l=o.sources)==null?void 0:l[0])!=null&&d.url?u.createElement("model-viewer",{ref:n,...a,className:i,id:a.id??o.id,src:o.sources[0].url,alt:o.alt??null,"camera-controls":a.cameraControls??!0,poster:(a.poster||((g=o.previewImage)==null?void 0:g.url))??null,autoplay:a.autoplay??!0,loading:a.loading,reveal:a.reveal,ar:a.ar,"ar-modes":a.arModes,"ar-scale":a.arScale,"ar-placement":a.arPlacement,"ios-src":a.iosSrc,"touch-action":a.touchAction,"disable-zoom":a.disableZoom,"orbit-sensitivity":a.orbitSensitivity,"auto-rotate":a.autoRotate,"auto-rotate-delay":a.autoRotateDelay,"rotation-per-second":a.rotationPerSecond,"interaction-policy":a.interactionPolicy,"interaction-prompt":a.interactionPrompt,"interaction-prompt-style":a.interactionPromptStyle,"interaction-prompt-threshold":a.interactionPromptThreshold,"camera-orbit":a.cameraOrbit,"camera-target":a.cameraTarget,"field-of-view":a.fieldOfView,"max-camera-orbit":a.maxCameraOrbit,"min-camera-orbit":a.minCameraOrbit,"max-field-of-view":a.maxFieldOfView,"min-field-of-view":a.minFieldOfView,bounds:a.bounds,"interpolation-decay":a.interpolationDecay??100,"skybox-image":a.skyboxImage,"environment-image":a.environmentImage,exposure:a.exposure,"shadow-intensity":a.shadowIntensity??0,"shadow-softness":a.shadowSoftness??0,"animation-name":a.animationName,"animation-crossfade-duration":a.animationCrossfadeDuration,"variant-name":a.variantName,orientation:a.orientation,scale:a.scale},s):(console.error("<ModelViewer/> requires 'data.sources' prop to be an array, with an object that has a property 'url' on it. Rendering 'null'"),null)}function cn({data:e,mediaOptions:t,...r}){switch(e.__typename){case"MediaImage":return e.image?u.createElement(it,{...r,...t==null?void 0:t.image,data:e.image}):(console.warn("<MediaFile/>: 'data.image' does not exist for __typename of 'MediaImage'; rendering 'null' by default."),null);case"Video":return u.createElement(st,{...r,...t==null?void 0:t.video,data:e});case"ExternalVideo":return u.createElement(nt,{...r,...t==null?void 0:t.externalVideo,data:e});case"Model3d":return u.createElement(lt,{...r,...t==null?void 0:t.modelViewer,data:e});default:return console.error("<MediaFile /> requires the '__typename' property to exist on the 'data' prop in order to render the matching sub-component for this type of media. Rendering 'null' by default"),null}}function ln(e){if(!e.type)return console.error("parseMetafield(): The 'type' field is required in order to parse the Metafield. Returning 'parsedValue' of 'null'"),{...e,parsedValue:null};switch(e.type){case"boolean":return{...e,parsedValue:e.value==="true"};case"collection_reference":case"file_reference":case"page_reference":case"product_reference":case"variant_reference":return{...e,parsedValue:e.reference};case"color":case"multi_line_text_field":case"single_line_text_field":case"url":return{...e,parsedValue:e.value};case"dimension":case"money":case"json":case"rating":case"volume":case"weight":case"list.color":case"list.dimension":case"list.number_integer":case"list.number_decimal":case"list.rating":case"list.single_line_text_field":case"list.url":case"list.volume":case"list.weight":{let t=null;try{t=dt(e.value??"")}catch{console.error("parseMetafield(): attempted to JSON.parse the 'metafield.value' property, but failed. Returning 'null' for 'parsedValue'"),t=null}return{...e,parsedValue:t}}case"date":case"date_time":return{...e,parsedValue:new Date(e.value??"")};case"list.date":case"list.date_time":{const t=dt((e==null?void 0:e.value)??"");return{...e,parsedValue:t.map(r=>new Date(r))}}case"number_decimal":case"number_integer":return{...e,parsedValue:Number(e.value)};case"list.collection_reference":case"list.file_reference":case"list.page_reference":case"list.product_reference":case"list.variant_reference":return{...e,parsedValue:F(e.references??void 0)};default:{const t=`parseMetafield(): the 'metafield.type' you passed in is not supported. Your type: "${e.type}". If you believe this is an error, please open an issue on GitHub.`;return console.error(`${t} Returning 'parsedValue' of 'null'`),{...e,parsedValue:null}}}}function dt(e){return String(e).includes("__proto__")?JSON.parse(e,(t,r)=>{if(t!=="__proto__")return r}):JSON.parse(e)}function dn(e){var l,d,g,S,m,y;const{priceType:t="regular",variantId:r,valueType:n="min",data:o,...s}=e;if(o==null)throw new Error("<ProductPrice/> requires a product as the 'data' prop");let i,a;const c=r?F((o==null?void 0:o.variants)??{}).find(P=>(P==null?void 0:P.id)===r)??null:null;if(t==="compareAt")if(r&&c){if(((l=c.compareAtPriceV2)==null?void 0:l.amount)===((d=c.priceV2)==null?void 0:d.amount))return null;i=c.compareAtPriceV2}else n==="max"?i=(g=o==null?void 0:o.compareAtPriceRange)==null?void 0:g.maxVariantPrice:i=(S=o==null?void 0:o.compareAtPriceRange)==null?void 0:S.minVariantPrice;else r&&c?(i=c.priceV2,n==="unit"&&(i=c.unitPrice,a=c.unitPriceMeasurement)):n==="max"?i=(m=o.priceRange)==null?void 0:m.maxVariantPrice:i=(y=o.priceRange)==null?void 0:y.minVariantPrice;return i?a?u.createElement(ae,{...s,data:i,measurement:a}):u.createElement(ae,{...s,data:i}):null}const fn="https://cdn.shopify.com/shopifycloud/shop-js/v1.0/client.js";function yn({variantIds:e,className:t,variantIdsAndQuantities:r,width:n}){const{storeDomain:o}=de(),s=ct(fn);let i=[];if(e&&r)throw new Error(mn);if(e)i=e.reduce((c,l)=>{const d=B(l).id;return d&&c.push(d),c},[]);else if(r)i=r.reduce((c,l)=>{const d=B(l==null?void 0:l.id).id;return d&&c.push(`${d}:${(l==null?void 0:l.quantity)??1}`),c},[]);else throw new Error(gn);if(i.length===0)throw new Error(hn);const a=n?{"--shop-pay-button-width":n}:void 0;return u.createElement("div",{className:t,style:a},s==="done"&&u.createElement("shop-pay-button",{"store-url":o,variants:i.join(",")}))}const hn='You must pass in "variantIds" in the form of ["gid://shopify/ProductVariant/1"]',gn='You must pass in either "variantIds" or "variantIdsAndQuantities" to ShopPayButton',mn="You must provide either a variantIds or variantIdsAndQuantities prop, but not both in the ShopPayButton component",En=60*60*24*360*1,pn=60*30;function Cn(e){const{hasUserConsent:t=!1,domain:r=""}=e||{};u.useEffect(()=>{const n=ye(document.cookie);t?(me(H,n[H]||fe(),En,r),me(Y,n[Y]||fe(),pn,r)):(me(H,"",0,r),me(Y,"",0,r))})}function me(e,t,r,n){document.cookie=fr(e,t,{maxage:r,domain:n,samesite:"Lax",path:"/"})}E.AddToCartButton=Ir,E.AnalyticsEventName=Ie,E.AnalyticsPageType=ge,E.BuyNowButton=Zr,E.CartCheckoutButton=Qr,E.CartCost=zr,E.CartLinePrice=Jr,E.CartLineProvider=Kr,E.CartLineQuantity=Xr,E.CartLineQuantityAdjustButton=en,E.CartProvider=Sr,E.ExternalVideo=nt,E.Image=it,E.MediaFile=cn,E.ModelViewer=lt,E.Money=ae,E.ProductPrice=dn,E.ProductProvider=vr,E.ShopPayButton=yn,E.ShopifyProvider=ir,E.ShopifySalesChannel=Je,E.Video=st,E.createStorefrontClient=or,E.flattenConnection=F,E.getClientBrowserParameters=jr,E.getShopifyCookies=ye,E.parseMetafield=ln,E.sendShopifyAnalytics=Fr,E.storefrontApiCustomScalars=tn,E.useCart=K,E.useCartLine=De,E.useMoney=tt,E.useProduct=Ze,E.useShop=de,E.useShopifyCookies=Cn,Object.defineProperty(E,Symbol.toStringTag,{value:"Module"})});
|
|
264
264
|
//# sourceMappingURL=hydrogen-react.prod.js.map
|