@occluze/tether 0.9.6 → 0.9.8

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 (58) hide show
  1. package/README.md +1 -1
  2. package/dist/esm/astro.js +1 -1
  3. package/dist/esm/chunks/account-QFGF5FKX.js +1 -0
  4. package/dist/esm/chunks/{account-pages-32IFOHYU.js → account-pages-LMGIPFB7.js} +1 -1
  5. package/dist/esm/chunks/{analytics-OIQ4TFGM.js → analytics-YSTR6H2W.js} +1 -1
  6. package/dist/esm/chunks/{chunk-KW7UPDXI.js → chunk-4BZ4X2Z6.js} +1 -1
  7. package/dist/esm/chunks/{chunk-HZYW2TS3.js → chunk-ADA2ZGPO.js} +1 -1
  8. package/dist/esm/chunks/chunk-B7SC7UOJ.js +1 -0
  9. package/dist/esm/chunks/{chunk-DQJRQBJG.js → chunk-BGUUUMJO.js} +1 -1
  10. package/dist/esm/chunks/{chunk-JJVUNGJZ.js → chunk-GOGPMJ2U.js} +1 -1
  11. package/dist/esm/chunks/{chunk-33IQL4XN.js → chunk-HGNFQHEU.js} +1 -1
  12. package/dist/esm/chunks/{chunk-AMCCY6T4.js → chunk-I54NQEVK.js} +1 -1
  13. package/dist/esm/chunks/{chunk-UDJ62MPR.js → chunk-IBOX3YGQ.js} +1 -1
  14. package/dist/esm/chunks/chunk-KF76466X.js +1 -0
  15. package/dist/esm/chunks/chunk-KH7NEM4B.js +1 -0
  16. package/dist/esm/chunks/{chunk-TES2AUFT.js → chunk-PHTINCRN.js} +1 -1
  17. package/dist/esm/chunks/chunk-QUBBZNJ7.js +1 -0
  18. package/dist/esm/chunks/chunk-R3UWDQL5.js +1 -0
  19. package/dist/esm/chunks/{chunk-U5BYAOTP.js → chunk-SA5G3AUJ.js} +1 -1
  20. package/dist/esm/chunks/{chunk-TUVLYVMF.js → chunk-UJH5ZECZ.js} +1 -1
  21. package/dist/esm/chunks/chunk-XQCBGVU2.js +1 -0
  22. package/dist/esm/chunks/{diagnose-QTIUBMXT.js → diagnose-IOC3BCP5.js} +1 -1
  23. package/dist/esm/chunks/{extras-56DC6CHI.js → extras-5E72QFSJ.js} +1 -1
  24. package/dist/esm/chunks/{lists-SE5VBQ4K.js → lists-35SUHUOX.js} +1 -1
  25. package/dist/esm/chunks/markets-ui-B3ILTPN7.js +1 -0
  26. package/dist/esm/chunks/{search-ZAB5GJOK.js → search-QN457Q2G.js} +1 -1
  27. package/dist/esm/index.js +1 -1
  28. package/dist/esm/server.js +2 -2
  29. package/dist/tether.account.js +24 -11
  30. package/dist/tether.account.min.js +1 -1
  31. package/dist/tether.js +166 -153
  32. package/dist/tether.lists.js +13 -11
  33. package/dist/tether.lists.min.js +1 -1
  34. package/dist/tether.markets.js +12 -0
  35. package/dist/tether.markets.min.js +1 -1
  36. package/dist/tether.min.js +1 -1
  37. package/dist/tether.min.js.map +4 -4
  38. package/dist/types/server/src/shared/serial.d.ts +8 -0
  39. package/dist/types/src/account/server-client.d.ts +3 -1
  40. package/dist/types/src/cart/checkout.d.ts +2 -1
  41. package/dist/types/src/cart/drawer.d.ts +5 -1
  42. package/dist/types/src/cart/mutations.d.ts +13 -13
  43. package/dist/types/src/cart/store.d.ts +8 -4
  44. package/dist/types/src/cart.d.ts +5 -4
  45. package/dist/types/src/config.d.ts +8 -0
  46. package/dist/types/src/fragments.d.ts +0 -2
  47. package/dist/types/src/part-use.d.ts +3 -0
  48. package/dist/types/src/shopify-fields.d.ts +8 -0
  49. package/dist/types/src/version.d.ts +1 -1
  50. package/package.json +5 -2
  51. package/dist/esm/chunks/account-GZLRHV5Z.js +0 -1
  52. package/dist/esm/chunks/chunk-COXH5OXQ.js +0 -1
  53. package/dist/esm/chunks/chunk-ESYKAFMU.js +0 -1
  54. package/dist/esm/chunks/chunk-HO6SNO3A.js +0 -1
  55. package/dist/esm/chunks/chunk-LZINCBME.js +0 -1
  56. package/dist/esm/chunks/chunk-NOTL72DB.js +0 -1
  57. package/dist/esm/chunks/chunk-UU2VVXU2.js +0 -1
  58. package/dist/esm/chunks/markets-ui-GQOUGLUL.js +0 -1
@@ -1 +1 @@
1
- import{c as S}from"./chunk-UDJ62MPR.js";import{a as k,b as E}from"./chunk-TUVLYVMF.js";import{a as v}from"./chunk-33IQL4XN.js";import{h as p}from"./chunk-COXH5OXQ.js";import"./chunk-KW7UPDXI.js";import"./chunk-DQJRQBJG.js";import"./chunk-UU2VVXU2.js";import"./chunk-HZYW2TS3.js";import"./chunk-AMCCY6T4.js";import"./chunk-NOTL72DB.js";import{P as w,S as b,a as f,n as u,o as g,p as y,q as h,u as c}from"./chunk-HO6SNO3A.js";import{E as d,F as s,x as l}from"./chunk-ESYKAFMU.js";function C(t,e){let r=b(w(t,"line-attributes"));return e?[{key:"_group",value:e},...r]:r}async function _(t){let e=t.closest(u("group"));if(!e)return null;let r=g(e,"group"),n=C(e,r),i=h(e,u("product")).flatMap(o=>{let a=v.get(o);if(!a?.variant?.availableForSale||a.quantity<=0)return[];let m=a.getLine();return m?[{...m,attributes:[...m.attributes??[],...n]}]:[]});if(!i.length)return d("group-add: nothing selected"),null;try{let o=await p.add(i);return c("group-added",{group:r,lines:i},e),o}catch(o){return s(o,"group add"),null}}function I(t,e,r){t.classList.toggle("is-invalid",r),r?e?.setAttribute("aria-invalid","true"):e?.removeAttribute("aria-invalid")}async function q(t,e,r){try{await p.applyDiscount(r),I(t,e,!1),c("discount-applied",{code:r},t),e&&(e.value="")}catch(n){I(t,e,!0),n instanceof f&&n.code==="INVALID_DISCOUNT"?c("discount-invalid",{code:r},t):s(n,"discount")}}function N(t){if(t.key===l.storageKey||t.key===`${l.storageKey}:seen`){p.init().catch(n=>{s(n,"cart from another tab")});return}if(t.key!==k()||!t.newValue)return;let e=E(t.newValue);if(!e)return;let r={language:e.language??null,locale:e.locale,remember:!1};S(e.country,r).catch(n=>{s(n,"market from another tab")})}var L=new WeakMap,A=t=>t.split("/").pop()??t;function M(t){try{window.history.replaceState(window.history.state,"",t)}catch{}}function $(t,{variant:e,sellingPlanId:r}){let n=`${e.id}|${r??""}`,i=L.get(t);if(L.set(t,n),!i||i===n)return;let o=l.variantUrl&&document.querySelector(u("product"))===t;if(!y(t,"variant-url")&&!o)return;let a=new URL(window.location.href);a.searchParams.set("variant",A(e.id)),r?a.searchParams.set("selling_plan",A(r)):a.searchParams.delete("selling_plan"),M(a)}export{_ as addGroup,q as applyDiscountCode,N as onStorage,$ as writeVariantUrl};
1
+ import{c as S}from"./chunk-IBOX3YGQ.js";import{a as k,b as E}from"./chunk-UJH5ZECZ.js";import{a as v}from"./chunk-HGNFQHEU.js";import{h as p}from"./chunk-KF76466X.js";import"./chunk-4BZ4X2Z6.js";import"./chunk-BGUUUMJO.js";import"./chunk-KH7NEM4B.js";import"./chunk-ADA2ZGPO.js";import"./chunk-I54NQEVK.js";import"./chunk-R3UWDQL5.js";import{P as w,S as b,a as f,n as u,o as g,p as y,q as h,u as c}from"./chunk-B7SC7UOJ.js";import{E as d,F as s,x as l}from"./chunk-QUBBZNJ7.js";function C(t,e){let r=b(w(t,"line-attributes"));return e?[{key:"_group",value:e},...r]:r}async function _(t){let e=t.closest(u("group"));if(!e)return null;let r=g(e,"group"),n=C(e,r),i=h(e,u("product")).flatMap(o=>{let a=v.get(o);if(!a?.variant?.availableForSale||a.quantity<=0)return[];let m=a.getLine();return m?[{...m,attributes:[...m.attributes??[],...n]}]:[]});if(!i.length)return d("group-add: nothing selected"),null;try{let o=await p.add(i);return c("group-added",{group:r,lines:i},e),o}catch(o){return s(o,"group add"),null}}function I(t,e,r){t.classList.toggle("is-invalid",r),r?e?.setAttribute("aria-invalid","true"):e?.removeAttribute("aria-invalid")}async function q(t,e,r){try{await p.applyDiscount(r),I(t,e,!1),c("discount-applied",{code:r},t),e&&(e.value="")}catch(n){I(t,e,!0),n instanceof f&&n.code==="INVALID_DISCOUNT"?c("discount-invalid",{code:r},t):s(n,"discount")}}function N(t){if(t.key===l.storageKey||t.key===`${l.storageKey}:seen`){p.init().catch(n=>{s(n,"cart from another tab")});return}if(t.key!==k()||!t.newValue)return;let e=E(t.newValue);if(!e)return;let r={language:e.language??null,locale:e.locale,remember:!1};S(e.country,r).catch(n=>{s(n,"market from another tab")})}var L=new WeakMap,A=t=>t.split("/").pop()??t;function M(t){try{window.history.replaceState(window.history.state,"",t)}catch{}}function $(t,{variant:e,sellingPlanId:r}){let n=`${e.id}|${r??""}`,i=L.get(t);if(L.set(t,n),!i||i===n)return;let o=l.variantUrl&&document.querySelector(u("product"))===t;if(!y(t,"variant-url")&&!o)return;let a=new URL(window.location.href);a.searchParams.set("variant",A(e.id)),r?a.searchParams.set("selling_plan",A(r)):a.searchParams.delete("selling_plan"),M(a)}export{_ as addGroup,q as applyDiscountCode,N as onStorage,$ as writeVariantUrl};
@@ -1 +1 @@
1
- import{a as R}from"./chunk-LZINCBME.js";import"./chunk-UU2VVXU2.js";import{b as w,d as I,g as T}from"./chunk-HZYW2TS3.js";import{a as H,b as m,d as h}from"./chunk-AMCCY6T4.js";import{c as q,h as x,i as M,j as F}from"./chunk-NOTL72DB.js";import{F as v,G as E,I as f,M as K,O as A,R as O,a as P,i as a,m as $,n as c,o as s,p as d,r as N,u,x as b,z as k}from"./chunk-HO6SNO3A.js";import{F as L,b as l,x as y}from"./chunk-ESYKAFMU.js";var U="url:",W=`query TetherCollection($handle:String!,$first:Int!,$after:String,$sortKey:ProductCollectionSortKeys,$reverse:Boolean,$filters:[ProductFilter!]){collection(handle:$handle){${q()} products(first:$first,after:$after,sortKey:$sortKey,reverse:$reverse,filters:$filters){nodes{...TetherProduct}pageInfo{hasNextPage endCursor}}}}`,j="query TetherSearch($first:Int!,$after:String,$query:String,$sortKey:ProductSortKeys,$reverse:Boolean){products(first:$first,after:$after,query:$query,sortKey:$sortKey,reverse:$reverse){nodes{...TetherProduct}pageInfo{hasNextPage endCursor}}}";async function z({collection:n,query:t,first:r=y.collectionFirst,after:e=null,sortKey:o,reverse:i=!1,filters:D}={}){if(n){let S=await a(h(W),{handle:n,first:r,after:e,sortKey:o||void 0,reverse:i,filters:D??void 0},x);if(!S.collection)throw new P(`Collection not found: ${n}`,{code:"NOT_FOUND"});let{products:g,...Y}=S.collection;return g.nodes.forEach(m),{collection:Y,products:g.nodes,pageInfo:g.pageInfo}}let p=await a(h(j),{first:r,after:e,query:t||void 0,sortKey:o||void 0,reverse:i},M);return p.products.nodes.forEach(m),{collection:null,products:p.products.nodes,pageInfo:p.products.pageInfo}}async function X(n,t="RELATED"){let r=H(typeof n=="object"?n?.id:n);if(!r)throw new P("No product for recommendations",{code:"NOT_FOUND"});let e=r.startsWith("gid://"),i=(await a(h(`query TetherRecs(${e?"$id: ID!":"$handle: String!"},$intent:ProductRecommendationIntent){productRecommendations(${e?"productId: $id":"productHandle: $handle"},intent:$intent){...TetherProduct}}`),e?{id:r,intent:t}:{handle:r,intent:t},F)).productRecommendations??[];return i.forEach(m),i}var Z=n=>n instanceof window.Element,_=(n,t)=>O(n,"limit",{min:1,max:250,fallback:t}),G=n=>n==="COMPLEMENTARY"?"COMPLEMENTARY":"RELATED",C=class{constructor(t){l(this,"root");l(this,"products",[]);l(this,"pageInfo",null);l(this,"collection",null);l(this,"loadToken",0);this.root=t,t.addEventListener("click",r=>{if(!Z(r.target))return;let e=r.target.closest(c("load-more"));e?.closest(R())===t&&(r.preventDefault(),A(e,()=>this.load(!0)))})}$(t){return N(this.root,t,R())}options(){let{root:t}=this,r={reverse:s(t,"reverse")==="true",first:_(t,y.collectionFirst)},e=s(t,"sort");if(e&&(r.sortKey=e),d(t,"collection"))return r.collection=s(t,"collection")??"",r;let o=s(t,"products")??"";return r.query=o.startsWith(U)?new URL(window.location.href).searchParams.get(o.slice(U.length))||"":o,r}async loadRecommendations(){let{key:t}=w(this.root,window.location,"recommendations"),r=this.root.closest(c("product"));return!t&&r&&({key:t}=w(r)),X(t,G(s(this.root,"intent")))}async load(t=!1){this.loadToken+=1;let r=this.loadToken,e=()=>r!==this.loadToken;try{if(d(this.root,"recommendations")){let o=await this.loadRecommendations();if(e())return;this.products=o.slice(0,_(this.root,o.length))}else{let o=await z({...this.options(),after:t?this.pageInfo?.endCursor??null:null});if(e())return;this.collection=o.collection,this.pageInfo=o.pageInfo,this.products=t?[...this.products,...o.products]:o.products}this.render(),T(this.root,"ready"),u("list-ready",{products:this.products,collection:this.collection},this.root)}catch(o){if(e())return;t||T(this.root,I(o)?"not-found":"error",o),I(o)&&d(this.root,"recommendations")||L(o,"list load failed"),u("error",{error:o,context:"list"},this.root)}}render(){let{collection:t}=this;this.$(c("collection-bind")).forEach(e=>{switch(s(e,"collection-bind")??""){case"title":E(e,t?.title??"");break;case"description":v(e,t?.descriptionHtml);break;case"image":b(e,t?.image?.url,t?.image?.altText||t?.title);break;case"count":E(e,this.products.length);break}}),this.$(c("list")).forEach(e=>{k(e,this.products,(o,i)=>{o.setAttribute($("product"),i.handle),o.removeAttribute($("state"))}),u("list-rendered",{container:e},this.root)});let r=this.products.length===0;this.$(c("show")).forEach(e=>{let o=s(e,"show");o==="list-empty"&&f(e,r),o==="list-filled"&&f(e,!r)}),this.$(c("load-more")).forEach(e=>{f(e,!!this.pageInfo?.hasNextPage)}),K("list")}},Q=new WeakMap;function ct(n){let t=Q.get(n);return t||(t=new C(n),Q.set(n,t)),t.load()}export{z as getProducts,X as getRecommendations,ct as loadList};
1
+ import{a as R}from"./chunk-XQCBGVU2.js";import"./chunk-KH7NEM4B.js";import{b as w,d as I,g as T}from"./chunk-ADA2ZGPO.js";import{a as H,b as m,d as h}from"./chunk-I54NQEVK.js";import{a as q,h as x,i as M,j as F}from"./chunk-R3UWDQL5.js";import{F as v,G as E,I as f,M as K,O as A,R as O,a as P,i as a,m as $,n as c,o as s,p as d,r as N,u,x as b,z as k}from"./chunk-B7SC7UOJ.js";import{F as L,b as l,x as y}from"./chunk-QUBBZNJ7.js";var U="url:",W=`query TetherCollection($handle:String!,$first:Int!,$after:String,$sortKey:ProductCollectionSortKeys,$reverse:Boolean,$filters:[ProductFilter!]){collection(handle:$handle){${q()} products(first:$first,after:$after,sortKey:$sortKey,reverse:$reverse,filters:$filters){nodes{...TetherProduct}pageInfo{hasNextPage endCursor}}}}`,j="query TetherSearch($first:Int!,$after:String,$query:String,$sortKey:ProductSortKeys,$reverse:Boolean){products(first:$first,after:$after,query:$query,sortKey:$sortKey,reverse:$reverse){nodes{...TetherProduct}pageInfo{hasNextPage endCursor}}}";async function z({collection:n,query:t,first:r=y.collectionFirst,after:e=null,sortKey:o,reverse:i=!1,filters:D}={}){if(n){let S=await a(h(W),{handle:n,first:r,after:e,sortKey:o||void 0,reverse:i,filters:D??void 0},x);if(!S.collection)throw new P(`Collection not found: ${n}`,{code:"NOT_FOUND"});let{products:g,...Y}=S.collection;return g.nodes.forEach(m),{collection:Y,products:g.nodes,pageInfo:g.pageInfo}}let p=await a(h(j),{first:r,after:e,query:t||void 0,sortKey:o||void 0,reverse:i},M);return p.products.nodes.forEach(m),{collection:null,products:p.products.nodes,pageInfo:p.products.pageInfo}}async function X(n,t="RELATED"){let r=H(typeof n=="object"?n?.id:n);if(!r)throw new P("No product for recommendations",{code:"NOT_FOUND"});let e=r.startsWith("gid://"),i=(await a(h(`query TetherRecs(${e?"$id: ID!":"$handle: String!"},$intent:ProductRecommendationIntent){productRecommendations(${e?"productId: $id":"productHandle: $handle"},intent:$intent){...TetherProduct}}`),e?{id:r,intent:t}:{handle:r,intent:t},F)).productRecommendations??[];return i.forEach(m),i}var Z=n=>n instanceof window.Element,_=(n,t)=>O(n,"limit",{min:1,max:250,fallback:t}),G=n=>n==="COMPLEMENTARY"?"COMPLEMENTARY":"RELATED",C=class{constructor(t){l(this,"root");l(this,"products",[]);l(this,"pageInfo",null);l(this,"collection",null);l(this,"loadToken",0);this.root=t,t.addEventListener("click",r=>{if(!Z(r.target))return;let e=r.target.closest(c("load-more"));e?.closest(R())===t&&(r.preventDefault(),A(e,()=>this.load(!0)))})}$(t){return N(this.root,t,R())}options(){let{root:t}=this,r={reverse:s(t,"reverse")==="true",first:_(t,y.collectionFirst)},e=s(t,"sort");if(e&&(r.sortKey=e),d(t,"collection"))return r.collection=s(t,"collection")??"",r;let o=s(t,"products")??"";return r.query=o.startsWith(U)?new URL(window.location.href).searchParams.get(o.slice(U.length))||"":o,r}async loadRecommendations(){let{key:t}=w(this.root,window.location,"recommendations"),r=this.root.closest(c("product"));return!t&&r&&({key:t}=w(r)),X(t,G(s(this.root,"intent")))}async load(t=!1){this.loadToken+=1;let r=this.loadToken,e=()=>r!==this.loadToken;try{if(d(this.root,"recommendations")){let o=await this.loadRecommendations();if(e())return;this.products=o.slice(0,_(this.root,o.length))}else{let o=await z({...this.options(),after:t?this.pageInfo?.endCursor??null:null});if(e())return;this.collection=o.collection,this.pageInfo=o.pageInfo,this.products=t?[...this.products,...o.products]:o.products}this.render(),T(this.root,"ready"),u("list-ready",{products:this.products,collection:this.collection},this.root)}catch(o){if(e())return;t||T(this.root,I(o)?"not-found":"error",o),I(o)&&d(this.root,"recommendations")||L(o,"list load failed"),u("error",{error:o,context:"list"},this.root)}}render(){let{collection:t}=this;this.$(c("collection-bind")).forEach(e=>{switch(s(e,"collection-bind")??""){case"title":E(e,t?.title??"");break;case"description":v(e,t?.descriptionHtml);break;case"image":b(e,t?.image?.url,t?.image?.altText||t?.title);break;case"count":E(e,this.products.length);break}}),this.$(c("list")).forEach(e=>{k(e,this.products,(o,i)=>{o.setAttribute($("product"),i.handle),o.removeAttribute($("state"))}),u("list-rendered",{container:e},this.root)});let r=this.products.length===0;this.$(c("show")).forEach(e=>{let o=s(e,"show");o==="list-empty"&&f(e,r),o==="list-filled"&&f(e,!r)}),this.$(c("load-more")).forEach(e=>{f(e,!!this.pageInfo?.hasNextPage)}),K("list")}},Q=new WeakMap;function ct(n){let t=Q.get(n);return t||(t=new C(n),Q.set(n,t)),t.load()}export{z as getProducts,X as getRecommendations,ct as loadList};
@@ -0,0 +1 @@
1
+ import{a as z,c as P,d as k,e as T,f as p,g as S}from"./chunk-GOGPMJ2U.js";import{a as x}from"./chunk-XQCBGVU2.js";import{d as H,e as A}from"./chunk-UJH5ZECZ.js";import"./chunk-HGNFQHEU.js";import{h as u}from"./chunk-KF76466X.js";import"./chunk-4BZ4X2Z6.js";import"./chunk-BGUUUMJO.js";import"./chunk-KH7NEM4B.js";import"./chunk-ADA2ZGPO.js";import{e as E}from"./chunk-I54NQEVK.js";import"./chunk-R3UWDQL5.js";import{a as L,d as h,i as b,m as d,n as m,o as v,u as w}from"./chunk-B7SC7UOJ.js";import{F as s,o as y,p as C,x as a}from"./chunk-QUBBZNJ7.js";var _="{name} ({currency})",j="name",f=null;function B(){f=null}var D="query TetherLocalization{localization{country{isoCode name currency{isoCode symbol}}language{isoCode name}availableCountries{isoCode name currency{isoCode symbol}availableLanguages{isoCode name}}}}",I={isoCode:"string",name:"string",currency:"object"},R=h({localization:{country:I,availableCountries:[I]}});function Y(){return f??(f=b(D,{},R).then(e=>e.localization,e=>{throw f=null,e})),f}function U(e,n){switch(n){case"name":return e.name;case"code":return e.isoCode;case"currency":return e.currency.isoCode;case"symbol":return e.currency.symbol;default:return""}}var q=(e,n)=>e.replace(/\{(name|code|currency|symbol)\}/g,(t,i)=>U(n,i));function $(e,n,t){let i=e.getAttribute(d("country-label"))||_,r=(e.getAttribute(d("countries"))||"").toUpperCase().split(/[\s,]+/).filter(Boolean),c=r.length?r.map(o=>n.find(l=>l.isoCode===o)).filter(o=>o!==void 0):n;e.replaceChildren(...c.map(o=>new Option(q(i,o),o.isoCode))),e.value=t,e.value!==t&&(e.selectedIndex=-1),e.disabled=c.length<2&&!e.hasAttribute(d("always-enabled"))}function Q(e,n,t){let i=(a.country||t.country.isoCode).toUpperCase(),r=[...t.availableCountries].sort((o,l)=>o.name.localeCompare(l.name,a.locale||void 0)),c=r.find(o=>o.isoCode===i)??t.country;e.forEach(o=>{$(o,r,i)}),n.forEach(o=>{o.textContent=U(c,v(o,"country-bind")||j)})}var M=!1;function V(e){let{target:n}=e;!(n instanceof window.HTMLSelectElement)||!n.matches(m("country-select"))||!n.value||K(n.value).catch(t=>{s(t,"country")})}function O(e=document){let n=p(e,`select${m("country-select")}`),t=p(e,m("country-bind"));return n.length&&!M&&(M=!0,document.addEventListener("change",V)),!n.length&&!t.length?Promise.resolve():Y().then(i=>{Q(n,t,i)}).catch(i=>{s(i,"country select")})}var Z=e=>Object.values(a.markets?.locales??{}).find(n=>y(n.country)===e);function G(e,n){return e!==void 0?C(e):n?n.language?C(n.language):void 0:a.language}function J(e){E();let n=[];return u.id()&&n.push(u.setBuyerIdentity({countryCode:e},{create:!1}).catch(t=>{s(t,"cart country")})),T(),k.forEach(t=>n.push(t.load())),P.forEach(t=>{t.closest(x())||(z.delete(t),S(t))}),n}async function K(e,{language:n,locale:t,remember:i=!0}={}){let r=y(e);if(!r)throw new L(`Not a country code: ${e}`,{code:"INVALID_COUNTRY"});let c=Z(r),o=t||c?.locale,l=o||a.locale,g=G(n,c),N=r!==a.country||g!==a.language||l!==a.locale;if(a.country=r,a.language=g||void 0,a.locale=l,i&&A({country:r,language:g,locale:o}),!N)return O(),u.state;n!==void 0&&B();let F=J(r);return O(),w("country-changed",{country:r,language:a.language}),await Promise.all(F),u.state}export{H as detectMarket,Y as getLocalization,O as renderCountrySelects,K as setCountry};
@@ -1 +1 @@
1
- import{f as k}from"./chunk-JJVUNGJZ.js";import"./chunk-LZINCBME.js";import"./chunk-33IQL4XN.js";import"./chunk-COXH5OXQ.js";import"./chunk-KW7UPDXI.js";import"./chunk-DQJRQBJG.js";import"./chunk-UU2VVXU2.js";import"./chunk-HZYW2TS3.js";import"./chunk-AMCCY6T4.js";import"./chunk-NOTL72DB.js";import{B as q,D as v,G as R,I as d,R as p,c as T,d as I,i as L,m as w,n as o,o as m,q as h,u as x,x as C,z as M}from"./chunk-HO6SNO3A.js";import{D as E,F as A,b as s,x as u}from"./chunk-ESYKAFMU.js";var U=I({predictiveSearch:T({products:[{priceRange:"object"}],collections:["object"],queries:[{text:"string"}]})}),D="query TetherPredictive($q:String!,$limit:Int!){predictiveSearch(query:$q,limit:$limit,limitScope:EACH,types:[PRODUCT,COLLECTION,QUERY]){products{id handle title availableForSale featuredImage{url altText}priceRange{minVariantPrice{amount currencyCode}}}collections{handle title image{url altText}}queries{text}}}",V=6,F=10,O=2,_="/search",g=new WeakSet,$=0,b=new Set,P=a=>a.tagName==="A"?a:a.querySelector("a");function f(a,t){h(a,o("search-bind")).forEach(e=>{let i=m(e,"search-bind");i==="image"?C(e,t.image?.url,t.image?.altText||t.title):(i==="title"||i==="price"||i==="text")&&t[i]!=null&&R(e,t[i])})}function H(a,t){let e=P(a);e&&(t&&e.setAttribute("href",t),e.setAttribute("role","option"))}var y=class{constructor(t,e,i){s(this,"root");s(this,"input");s(this,"results");s(this,"limit");s(this,"minCharacters");s(this,"resultsId");s(this,"searchNumber",0);s(this,"timer");s(this,"lastTerm","");s(this,"cache",new Map);s(this,"listening",new window.AbortController);this.root=t,this.input=e,this.results=i,this.limit=p(t,"search-limit",{min:1,max:F,fallback:V}),this.minCharacters=p(t,"search-min",{min:1,fallback:O}),i.id||($+=1,i.id=`${u.prefix}-search-${$}`),this.resultsId=i.id,this.setUpAria(),this.listen(),b.add(this)}stop(){this.listening.abort(),clearTimeout(this.timer),b.delete(this),g.delete(this.root)}setUpAria(){this.input.setAttribute("role","combobox"),this.input.setAttribute("aria-autocomplete","list"),this.input.setAttribute("aria-controls",this.resultsId),this.input.setAttribute("aria-expanded","false"),this.input.setAttribute("autocomplete","off"),this.results.hasAttribute("role")||this.results.setAttribute("role","listbox"),this.results.hidden=!0}listen(){let{signal:t}=this.listening;this.input.addEventListener("input",()=>{let e=this.input.value.trim();e!==this.lastTerm&&(this.lastTerm=e,clearTimeout(this.timer),this.timer=setTimeout(()=>void this.search(e),u.searchDelay))},{signal:t}),this.input.addEventListener("focus",()=>{this.input.value.trim().length>=this.minCharacters&&this.options().length&&this.open(!0)},{signal:t}),this.input.addEventListener("keydown",e=>{this.onKeydown(e)},{signal:t}),document.addEventListener("click",e=>{if(!this.root.isConnected){this.stop();return}this.root.contains(e.target)||this.open(!1)},{signal:t})}setState(t){this.root.setAttribute(w("search-state"),t)}open(t){this.root.classList.toggle("is-open",t),this.results.hidden=!t,this.input.setAttribute("aria-expanded",String(t)),t||this.input.removeAttribute("aria-activedescendant")}options(){return h(this.results,'[role="option"]')}async fetchResults(t){let e=this.cache.get(t);if(e)return e;let i=await L(D,{q:t,limit:this.limit},U);return this.cache.set(t,i.predictiveSearch),i.predictiveSearch}async search(t){this.searchNumber+=1;let e=this.searchNumber;if(t.length<this.minCharacters){this.open(!1),this.setState("idle");return}this.setState("loading");try{let i=await this.fetchResults(t);e===this.searchNumber&&this.render(i,t)}catch(i){if(e!==this.searchNumber){E("a superseded search failed",i);return}this.setState("error"),A(i,"search")}}fillList(t,e,i){h(this.results,o(t)).forEach(l=>{M(l,e,i),d(l,e.length>0)})}queryUrl(t){let e=this.root.getAttribute("action")||_,i=e.includes("?")?"&":"?";return`${e}${i}${this.input.name||"q"}=${encodeURIComponent(t)}`}render(t,e){let i=t?.products??[],l=t?.collections??[],c=(t?.queries??[]).filter(n=>n.text.toLowerCase()!==e.toLowerCase());this.fillList("search-products",i,(n,r)=>{let N=v(r.priceRange.minVariantPrice);f(n,{title:r.title,price:N,image:r.featuredImage}),H(n,q(r.handle,r.id)),n.classList.toggle("is-sold-out",!r.availableForSale)}),this.fillList("search-collections",l,(n,r)=>{f(n,{title:r.title,image:r.image}),H(n,`${(u.collectionPath||"/collection").replace(/\/$/,"")}/${r.handle}`)}),this.fillList("search-queries",c,(n,r)=>{f(n,{text:r.text}),P(n)?.setAttribute("href",this.queryUrl(r.text))});let S=i.length+l.length+c.length;this.showCount(S),this.setState(S?"ready":"empty"),this.open(!0),x("search",{term:e,products:i,collections:l,queries:c},this.root)}showCount(t){h(this.root,o("show")).forEach(e=>{let i=m(e,"show");i==="search-empty"&&d(e,t===0),i==="search-results"&&d(e,t>0)}),this.options().forEach((e,i)=>{e.id||(e.id=`${this.resultsId}-${i}`),e.setAttribute("aria-selected","false")}),this.input.removeAttribute("aria-activedescendant")}highlight(t,e){t.forEach((l,c)=>{l.setAttribute("aria-selected",String(c===e))});let i=t[e];i&&(this.input.setAttribute("aria-activedescendant",i.id),i.scrollIntoView?.({block:"nearest"}))}onKeydown(t){let e=this.options(),i=e.findIndex(l=>l.getAttribute("aria-selected")==="true");t.key==="ArrowDown"&&e.length?(t.preventDefault(),this.open(!0),this.highlight(e,(i+1)%e.length)):t.key==="ArrowUp"&&e.length?(t.preventDefault(),this.highlight(e,i<=0?e.length-1:i-1)):t.key==="Enter"&&i>=0?(t.preventDefault(),e[i]?.click()):t.key==="Escape"&&this.open(!1)}};function Y(a=document){b.forEach(t=>{t.root.isConnected||t.stop()});for(let t of k(a,o("search"))){if(g.has(t))continue;g.add(t);let e=t.querySelector(o("search-input"))??t.querySelector("input"),i=t.querySelector(o("search-results"));e&&i&&new y(t,e,i)}}export{Y as mountSearch};
1
+ import{f as k}from"./chunk-GOGPMJ2U.js";import"./chunk-XQCBGVU2.js";import"./chunk-HGNFQHEU.js";import"./chunk-KF76466X.js";import"./chunk-4BZ4X2Z6.js";import"./chunk-BGUUUMJO.js";import"./chunk-KH7NEM4B.js";import"./chunk-ADA2ZGPO.js";import"./chunk-I54NQEVK.js";import"./chunk-R3UWDQL5.js";import{B as q,D as v,G as R,I as d,R as p,c as T,d as I,i as L,m as w,n as o,o as m,q as h,u as x,x as C,z as M}from"./chunk-B7SC7UOJ.js";import{D as E,F as A,b as s,x as u}from"./chunk-QUBBZNJ7.js";var U=I({predictiveSearch:T({products:[{priceRange:"object"}],collections:["object"],queries:[{text:"string"}]})}),D="query TetherPredictive($q:String!,$limit:Int!){predictiveSearch(query:$q,limit:$limit,limitScope:EACH,types:[PRODUCT,COLLECTION,QUERY]){products{id handle title availableForSale featuredImage{url altText}priceRange{minVariantPrice{amount currencyCode}}}collections{handle title image{url altText}}queries{text}}}",V=6,F=10,O=2,_="/search",g=new WeakSet,$=0,b=new Set,P=a=>a.tagName==="A"?a:a.querySelector("a");function f(a,t){h(a,o("search-bind")).forEach(e=>{let i=m(e,"search-bind");i==="image"?C(e,t.image?.url,t.image?.altText||t.title):(i==="title"||i==="price"||i==="text")&&t[i]!=null&&R(e,t[i])})}function H(a,t){let e=P(a);e&&(t&&e.setAttribute("href",t),e.setAttribute("role","option"))}var y=class{constructor(t,e,i){s(this,"root");s(this,"input");s(this,"results");s(this,"limit");s(this,"minCharacters");s(this,"resultsId");s(this,"searchNumber",0);s(this,"timer");s(this,"lastTerm","");s(this,"cache",new Map);s(this,"listening",new window.AbortController);this.root=t,this.input=e,this.results=i,this.limit=p(t,"search-limit",{min:1,max:F,fallback:V}),this.minCharacters=p(t,"search-min",{min:1,fallback:O}),i.id||($+=1,i.id=`${u.prefix}-search-${$}`),this.resultsId=i.id,this.setUpAria(),this.listen(),b.add(this)}stop(){this.listening.abort(),clearTimeout(this.timer),b.delete(this),g.delete(this.root)}setUpAria(){this.input.setAttribute("role","combobox"),this.input.setAttribute("aria-autocomplete","list"),this.input.setAttribute("aria-controls",this.resultsId),this.input.setAttribute("aria-expanded","false"),this.input.setAttribute("autocomplete","off"),this.results.hasAttribute("role")||this.results.setAttribute("role","listbox"),this.results.hidden=!0}listen(){let{signal:t}=this.listening;this.input.addEventListener("input",()=>{let e=this.input.value.trim();e!==this.lastTerm&&(this.lastTerm=e,clearTimeout(this.timer),this.timer=setTimeout(()=>void this.search(e),u.searchDelay))},{signal:t}),this.input.addEventListener("focus",()=>{this.input.value.trim().length>=this.minCharacters&&this.options().length&&this.open(!0)},{signal:t}),this.input.addEventListener("keydown",e=>{this.onKeydown(e)},{signal:t}),document.addEventListener("click",e=>{if(!this.root.isConnected){this.stop();return}this.root.contains(e.target)||this.open(!1)},{signal:t})}setState(t){this.root.setAttribute(w("search-state"),t)}open(t){this.root.classList.toggle("is-open",t),this.results.hidden=!t,this.input.setAttribute("aria-expanded",String(t)),t||this.input.removeAttribute("aria-activedescendant")}options(){return h(this.results,'[role="option"]')}async fetchResults(t){let e=this.cache.get(t);if(e)return e;let i=await L(D,{q:t,limit:this.limit},U);return this.cache.set(t,i.predictiveSearch),i.predictiveSearch}async search(t){this.searchNumber+=1;let e=this.searchNumber;if(t.length<this.minCharacters){this.open(!1),this.setState("idle");return}this.setState("loading");try{let i=await this.fetchResults(t);e===this.searchNumber&&this.render(i,t)}catch(i){if(e!==this.searchNumber){E("a superseded search failed",i);return}this.setState("error"),A(i,"search")}}fillList(t,e,i){h(this.results,o(t)).forEach(l=>{M(l,e,i),d(l,e.length>0)})}queryUrl(t){let e=this.root.getAttribute("action")||_,i=e.includes("?")?"&":"?";return`${e}${i}${this.input.name||"q"}=${encodeURIComponent(t)}`}render(t,e){let i=t?.products??[],l=t?.collections??[],c=(t?.queries??[]).filter(n=>n.text.toLowerCase()!==e.toLowerCase());this.fillList("search-products",i,(n,r)=>{let N=v(r.priceRange.minVariantPrice);f(n,{title:r.title,price:N,image:r.featuredImage}),H(n,q(r.handle,r.id)),n.classList.toggle("is-sold-out",!r.availableForSale)}),this.fillList("search-collections",l,(n,r)=>{f(n,{title:r.title,image:r.image}),H(n,`${(u.collectionPath||"/collection").replace(/\/$/,"")}/${r.handle}`)}),this.fillList("search-queries",c,(n,r)=>{f(n,{text:r.text}),P(n)?.setAttribute("href",this.queryUrl(r.text))});let S=i.length+l.length+c.length;this.showCount(S),this.setState(S?"ready":"empty"),this.open(!0),x("search",{term:e,products:i,collections:l,queries:c},this.root)}showCount(t){h(this.root,o("show")).forEach(e=>{let i=m(e,"show");i==="search-empty"&&d(e,t===0),i==="search-results"&&d(e,t>0)}),this.options().forEach((e,i)=>{e.id||(e.id=`${this.resultsId}-${i}`),e.setAttribute("aria-selected","false")}),this.input.removeAttribute("aria-activedescendant")}highlight(t,e){t.forEach((l,c)=>{l.setAttribute("aria-selected",String(c===e))});let i=t[e];i&&(this.input.setAttribute("aria-activedescendant",i.id),i.scrollIntoView?.({block:"nearest"}))}onKeydown(t){let e=this.options(),i=e.findIndex(l=>l.getAttribute("aria-selected")==="true");t.key==="ArrowDown"&&e.length?(t.preventDefault(),this.open(!0),this.highlight(e,(i+1)%e.length)):t.key==="ArrowUp"&&e.length?(t.preventDefault(),this.highlight(e,i<=0?e.length-1:i-1)):t.key==="Enter"&&i>=0?(t.preventDefault(),e[i]?.click()):t.key==="Escape"&&this.open(!1)}};function Y(a=document){b.forEach(t=>{t.root.isConnected||t.stop()});for(let t of k(a,o("search"))){if(g.has(t))continue;g.add(t);let e=t.querySelector(o("search-input"))??t.querySelector("input"),i=t.querySelector(o("search-results"));e&&i&&new y(t,e,i)}}export{Y as mountSearch};
package/dist/esm/index.js CHANGED
@@ -1 +1 @@
1
- import{a as at,b as ct,c as ut}from"./chunks/chunk-U5BYAOTP.js";import{b as C,d as P,e as T,f as g,g as nt,h as ot,i as rt,j as L,k}from"./chunks/chunk-JJVUNGJZ.js";import{a as dt,b as mt}from"./chunks/chunk-LZINCBME.js";import{a as it,b as st,c as h}from"./chunks/chunk-UDJ62MPR.js";import"./chunks/chunk-TUVLYVMF.js";import{a as et}from"./chunks/chunk-33IQL4XN.js";import{a as K,e as Z,h as s}from"./chunks/chunk-COXH5OXQ.js";import"./chunks/chunk-KW7UPDXI.js";import{l as Q}from"./chunks/chunk-DQJRQBJG.js";import{a as u,b as lt}from"./chunks/chunk-UU2VVXU2.js";import{b as tt}from"./chunks/chunk-HZYW2TS3.js";import{a as W,b as X,c as Y,e as J}from"./chunks/chunk-AMCCY6T4.js";import"./chunks/chunk-NOTL72DB.js";import{D as j,L as v,O as p,Q as z,a as F,f as G,k as _,m,n as i,s as q,t as y,u as U,v as B}from"./chunks/chunk-HO6SNO3A.js";import{B as $,C as E,D as b,E as V,F as a,e as D,x as c,y as H}from"./chunks/chunk-ESYKAFMU.js";function ft(t){let e=[],n=new window.AbortController,o={signal:n.signal};return q.forEach(r=>{document.addEventListener(`${c.prefix}:${r}`,d=>e.push(d),o)}),document.addEventListener("astro:page-load",r=>e.push(r),o),t().then(r=>r.startAnalytics(e)).catch(r=>{n.abort(),e.length=0,a(r,"analytics")}),e}var S="0.9.6";var Mt=["account-login","account-bind","account-link","orders","order","addresses","subscriptions","profile-form","address-form"],Nt=()=>[...Mt.map(t=>`[${m(t)}]`),`[${m("show")}^="logged-"]`].join(",");function Ot(){return!!Z(at())}function pt(t){!c.account||!(g(t,Nt()).length>0||ut(new URLSearchParams(window.location.search).get("account"))||Ot())||u("account").then(n=>n.mountAccount(t)).catch(n=>{a(n,"account")})}function l(t){return(...e)=>u("account").then(n=>{let o=n[t];return o(...e)})}var gt={login:l("login"),logout:l("logout"),isLoggedIn:l("isLoggedIn"),customer:l("customer"),orders:l("orders"),order:l("order"),updateProfile:l("updateProfile"),addresses:l("addresses"),saveAddress:l("saveAddress"),deleteAddress:l("deleteAddress"),subscriptions:l("subscriptions"),subscriptionAction:l("subscriptionAction"),requestReturn:l("requestReturn"),render:l("render"),mountAccount:l("mountAccount")};var yt=()=>`data-${c.prefix}-key`,ht=t=>t instanceof window.Element;function Et(t){let e=t.closest(`[${yt()}]`),n=e?.getAttribute(yt());return e&&n?{line:e,id:n}:null}function w(t,e){t.catch(n=>{a(n,e)})}function It(t,e){let n=Et(e);if(!n?.line.closest(i("cart-lines")))return;let{line:o,id:r}=n;if(e.closest(i("line-remove"))){t.preventDefault(),o.classList.add("is-busy"),w(s.removeLine(r),"cart line");return}let d=Rt(e);!d||!s.lines.some(xt=>xt.id===r)||(t.preventDefault(),w(s.changeQuantity(r,d),"cart line"))}function Rt(t){return t.closest(i("line-plus"))?1:t.closest(i("line-minus"))?-1:0}function Dt(t){let{target:e}=t;if(!ht(e))return;if(e.closest(i("cart-open"))){t.preventDefault(),s.toggle();return}if(e.closest(i("cart-close"))){t.preventDefault(),s.close();return}let n=e.closest(i("cart-clear"));if(n){t.preventDefault(),p(n,()=>s.clear().catch(r=>{a(r,"cart clear")}));return}let o=e.closest(i("checkout"));if(o){t.preventDefault(),p(o,()=>s.checkout());return}It(t,e)}function vt(t,e,n){t.classList.add("is-busy"),t.setAttribute("aria-busy","true"),w(e,n)}function Ht(t,{line:e,id:n}){let o=t.value.trim();if(z.test(o)){vt(e,s.updateLine(n,Number(o)),"cart line");return}let r=s.lines.find(d=>d.id===n);r&&(t.value=String(s.quantityOf(r)))}function $t(t){let{target:e}=t;if(!ht(e))return;let n=Et(e);n&&e instanceof window.HTMLInputElement&&e.matches(i("line","quantity"))?Ht(e,n):n&&e instanceof window.HTMLSelectElement&&e.matches(i("line-plan"))?vt(n.line,s.updateLine(n.id,{sellingPlanId:e.value||null}),"cart line plan"):Vt(e)&&e.matches(i("cart-note"))&&w(s.setNote(e.value),"cart note")}var Vt=t=>t instanceof window.HTMLInputElement||t instanceof window.HTMLTextAreaElement||t instanceof window.HTMLSelectElement;function Ft(t){if(s.isOpen()){if(t.key==="Escape"){s.close();return}K(t)}}function Pt(){document.addEventListener("click",Dt),document.addEventListener("change",$t),document.addEventListener("keydown",Ft)}var x=t=>t instanceof window.Element;function Gt(t){let e=t.querySelector(i("discount-input"))??t.querySelector("input");return e instanceof window.HTMLInputElement?e:null}function _t(t){let{target:e}=t,n=x(e)?e.closest(i("discount-form")):null;if(!n)return;t.preventDefault();let o=Gt(n),r=o?.value.trim();r&&p(n,()=>u("extras").then(d=>d.applyDiscountCode(n,o,r))).catch(d=>{a(d,"discount")})}function qt(t){let{target:e}=t;if(!x(e))return;let n=e.closest(i("discount-form"));n&&(n.classList.remove("is-invalid"),e.removeAttribute("aria-invalid"))}function Ut(t){let{target:e}=t,n=x(e)?e.closest(i("discount-remove")):null;if(!n)return;t.preventDefault();let o=n.closest(i("discount-code"))?.getAttribute(m("discount-code"));o&&s.removeDiscount(o).catch(r=>{a(r,"discount")})}function wt(){document.addEventListener("submit",_t,!0),document.addEventListener("input",qt),document.addEventListener("click",Ut)}var M=t=>u("extras").then(e=>e.addGroup(t)),N=t=>{a(t,"extras")};function Bt(t){let{target:e}=t,n=e instanceof window.Element?e.closest(i("group-add")):null;n&&(t.preventDefault(),p(n,()=>M(n)).catch(N))}function jt(t){!c.domain||!t.key?.startsWith(`${c.prefix}:`)||u("extras").then(e=>{e.onStorage(t)}).catch(N)}function zt(t){if(!y(t,"variant-changed"))return;let{target:e}=t;e instanceof window.Element&&(!c.variantUrl&&!e.hasAttribute(m("variant-url"))||u("extras").then(n=>{n.writeVariantUrl(e,t.detail)}).catch(N))}function At(){document.addEventListener("click",Bt),window.addEventListener("storage",jt),document.addEventListener(`${c.prefix}:variant-changed`,zt)}var O=null;function bt(){O=document.body}async function Qt(t){await t.ready();let e=st();if(!e){O!==document.body&&t.mount(document);return}try{await h(e.country,{language:e.language??null,locale:e.locale,remember:!1})}catch(n){a(n,"country")}t.mount(document)}function Kt(t){document.addEventListener("astro:page-load",()=>{Qt(t).catch(e=>{a(e,"page mount")})}),document.addEventListener("astro:before-swap",()=>{O=null,t.unmount()})}function Wt(t){let{target:e}=t;!(e instanceof window.HTMLSelectElement)||!e.matches(i("country-select"))||e.value&&h(e.value).catch(n=>{a(n,"country")})}function Xt(){ot(),P.forEach(t=>{t.root.getAttribute(m("state"))==="error"&&t.load()})}function Ct(t){c.astro&&Kt(t),document.addEventListener("change",Wt),window.addEventListener("online",Xt)}var Yt=50;function Jt(){let t=v("TETHER_CONFIG");return typeof t=="object"&&t!==null?Object.fromEntries(Object.entries(t)):{}}var f=null,I=null,Zt=null,Tt=!1;function te(t){let e=0;return g(t,dt()).forEach(n=>{if(C.has(n))return;C.add(n),e++;let o=mt(n);P.add(o),n.addEventListener(`${c.prefix}:list-rendered`,r=>{y(r,"list-rendered")&&A(r.detail.container)}),rt(o.load())}),e}function ee(t){g(t,`${i("country-select")},${i("country-bind")}`).length&&u("markets").then(e=>e.renderCountrySelects(t)).catch(e=>{a(e,"markets")}),pt(t),g(t,i("search")).length&&u("search").then(e=>{e.mountSearch(t)}).catch(e=>{a(e,"search")})}function Lt(t){let e=te(t);return g(t,i("product")).forEach(n=>{nt(n)&&e++}),ee(t),e}function A(t=document){if(!E())return 0;t===document&&bt(),T(),k(t.ownerDocument??document);let e=Lt(t);return L(),s.render(),b(`mounted ${e} scope(s)`,t),e}function ne(t){let e=t.filter(o=>o.isConnected&&!t.some(r=>r!==o&&r.contains(o)));if(!e.length||!E())return;T(),e.forEach(o=>{k(o)});let n=e.reduce((o,r)=>o+Lt(r),0);L(),s.render(),b(`mounted ${n} scope(s) in ${e.length} added element(s)`)}function kt(){s.close()}function oe(t){let e=t?.closest(i("product"));return e?et.get(e)??null:null}function re(){Tt||(Tt=!0,Pt(),wt(),At(),Ct({ready:()=>f??Promise.resolve(null),mount:A,unmount:kt}))}async function ie(t){let e=c.country,n=t?.buyerIdentity.countryCode;if(!t||!e||!n||n===e)return t;try{return await s.setBuyerIdentity({countryCode:e},{create:!1})}catch(o){return a(o,"cart country"),t}}function St(t={}){return f&&!Object.keys(t).length?f:($({...Jt(),...t}),E()?(ct(),re(),c.observe&&se(),c.analytics&&(Zt??(Zt=ft(()=>u("analytics")))),f=it(t).then(()=>s.init()).then(ie).then(e=>(U("ready",{cart:e}),R)),f):(V("TETHER_CONFIG is missing domain or token. Tether is idle."),f=Promise.resolve(null),f))}function se(){if(I||typeof MutationObserver>"u")return;let t,e=new Set;I=new MutationObserver(n=>{n.forEach(o=>{o.addedNodes.forEach(r=>{r instanceof window.Element&&e.add(r)})}),clearTimeout(t),t=setTimeout(()=>{let o=[...e];e.clear(),ne(o)},Yt)}),I.observe(document.body,{childList:!0,subtree:!0})}var ae=t=>u("markets").then(e=>e.detectMarket(t??c.markets)),ce=t=>u("lists").then(e=>e.getProducts(t)),ue=(t,e)=>u("lists").then(n=>n.getRecommendations(t,e)),le=()=>u("markets").then(t=>t.getLocalization()),de=t=>u("diagnose").then(e=>e.diagnose({...t,version:S}));function me(t,e){let n=`${c.prefix}:${t}`,o=r=>{y(r,t)&&e(r.detail,r)};return document.addEventListener(n,o),()=>{document.removeEventListener(n,o)}}var fe={VERSION:S,init:St,mount:A,unmount:kt,get config(){return H},get ready(){return f??Promise.resolve(null)},query:_,withContext:G,cart:s,getProduct:Y,getProducts:ce,getRecommendations:ue,getScope:oe,addGroup:M,account:gt,primeProduct:X,normalizeProductKey:W,clearProductCache:J,formatMoney:j,imageUrl:B,plans:Q,TetherError:F,resolveProductKey:tt,setCountry:h,detectMarket:ae,getLocalization:le,diagnose:de,on:me},pe={__core:lt,__parts:{}},R=Object.assign(fe,pe),mn=R;function ge(){Reflect.set(window,"Tether",R);let t=v("TETHER_CONFIG");if(!t||D(t,"autoMount")===!1||v("TETHER_INTEGRATION"))return;let e=()=>{St().then(()=>A(document)).catch(n=>{a(n,"init")})};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e,{once:!0}):e()}typeof window<"u"&&typeof document<"u"&&ge();export{S as VERSION,M as addGroup,R as api,mn as default,oe as getScope,St as init,A as mount,h as setCountry,kt as unmount};
1
+ import{a as at,b as ct,c as ut}from"./chunks/chunk-SA5G3AUJ.js";import{b as T,d as P,e as L,f as g,g as nt,h as ot,i as rt,j as S,k}from"./chunks/chunk-GOGPMJ2U.js";import{a as dt,b as mt}from"./chunks/chunk-XQCBGVU2.js";import{a as it,b as st,c as w}from"./chunks/chunk-IBOX3YGQ.js";import"./chunks/chunk-UJH5ZECZ.js";import{a as et}from"./chunks/chunk-HGNFQHEU.js";import{a as K,e as Z,h as s}from"./chunks/chunk-KF76466X.js";import"./chunks/chunk-4BZ4X2Z6.js";import{l as Q}from"./chunks/chunk-BGUUUMJO.js";import{a as u,b as lt}from"./chunks/chunk-KH7NEM4B.js";import{b as tt}from"./chunks/chunk-ADA2ZGPO.js";import{a as W,b as X,c as Y,e as J}from"./chunks/chunk-I54NQEVK.js";import"./chunks/chunk-R3UWDQL5.js";import{D as j,L as v,O as y,Q as z,a as F,f as G,k as _,m,n as i,s as q,t as E,u as U,v as B}from"./chunks/chunk-B7SC7UOJ.js";import{B as $,C as h,D as C,E as V,F as c,e as D,x as a,y as H}from"./chunks/chunk-QUBBZNJ7.js";function ft(t){let e=[],n=new window.AbortController,o={signal:n.signal};return q.forEach(r=>{document.addEventListener(`${a.prefix}:${r}`,d=>e.push(d),o)}),document.addEventListener("astro:page-load",r=>e.push(r),o),t().then(r=>r.startAnalytics(e)).catch(r=>{n.abort(),e.length=0,c(r,"analytics")}),e}var x="0.9.8";function f(t,e){u(t).then(e).catch(n=>{c(n,t)})}var Nt=["account-login","account-bind","account-link","orders","order","addresses","subscriptions","profile-form","address-form"],Mt=()=>[...Nt.map(t=>`[${m(t)}]`),`[${m("show")}^="logged-"]`].join(",");function Ot(){return!!Z(at())}function pt(t){!a.account||!(g(t,Mt()).length>0||ut(new URLSearchParams(window.location.search).get("account"))||Ot())||f("account",n=>n.mountAccount(t))}function l(t){return(...e)=>u("account").then(n=>{let o=n[t];return o(...e)})}var yt={login:l("login"),logout:l("logout"),isLoggedIn:l("isLoggedIn"),customer:l("customer"),orders:l("orders"),order:l("order"),updateProfile:l("updateProfile"),addresses:l("addresses"),saveAddress:l("saveAddress"),deleteAddress:l("deleteAddress"),subscriptions:l("subscriptions"),subscriptionAction:l("subscriptionAction"),requestReturn:l("requestReturn"),render:l("render"),mountAccount:l("mountAccount")};var gt=()=>`data-${a.prefix}-key`,Et=t=>t instanceof window.Element;function ht(t){let e=t.closest(`[${gt()}]`),n=e?.getAttribute(gt());return e&&n?{line:e,id:n}:null}function A(t,e){t.catch(n=>{c(n,e)})}function It(t,e){let n=ht(e);if(!n?.line.closest(i("cart-lines")))return;let{line:o,id:r}=n;if(e.closest(i("line-remove"))){t.preventDefault(),o.classList.add("is-busy"),A(s.removeLine(r),"cart line");return}let d=Rt(e);!d||!s.lines.some(xt=>xt.id===r)||(t.preventDefault(),A(s.changeQuantity(r,d),"cart line"))}function Rt(t){return t.closest(i("line-plus"))?1:t.closest(i("line-minus"))?-1:0}function Dt(t){let{target:e}=t;if(!Et(e))return;if(e.closest(i("cart-open"))){t.preventDefault(),s.toggle();return}if(e.closest(i("cart-close"))){t.preventDefault(),s.close();return}let n=e.closest(i("cart-clear"));if(n){t.preventDefault(),y(n,()=>s.clear().catch(r=>{c(r,"cart clear")}));return}let o=e.closest(i("checkout"));if(o){t.preventDefault(),y(o,()=>s.checkout());return}It(t,e)}function vt(t,e,n){t.classList.add("is-busy"),t.setAttribute("aria-busy","true"),A(e,n)}function Ht(t,{line:e,id:n}){let o=t.value.trim();if(z.test(o)){vt(e,s.updateLine(n,Number(o)),"cart line");return}let r=s.lines.find(d=>d.id===n);r&&(t.value=String(s.quantityOf(r)))}function $t(t){let{target:e}=t;if(!Et(e))return;let n=ht(e);n&&e instanceof window.HTMLInputElement&&e.matches(i("line","quantity"))?Ht(e,n):n&&e instanceof window.HTMLSelectElement&&e.matches(i("line-plan"))?vt(n.line,s.updateLine(n.id,{sellingPlanId:e.value||null}),"cart line plan"):Vt(e)&&e.matches(i("cart-note"))&&A(s.setNote(e.value),"cart note")}var Vt=t=>t instanceof window.HTMLInputElement||t instanceof window.HTMLTextAreaElement||t instanceof window.HTMLSelectElement;function Ft(t){if(s.isOpen()){if(t.key==="Escape"){s.close();return}K(t)}}function Pt(){document.addEventListener("click",Dt),document.addEventListener("change",$t),document.addEventListener("keydown",Ft)}var N=t=>t instanceof window.Element;function Gt(t){let e=t.querySelector(i("discount-input"))??t.querySelector("input");return e instanceof window.HTMLInputElement?e:null}function _t(t){let{target:e}=t,n=N(e)?e.closest(i("discount-form")):null;if(!n)return;t.preventDefault();let o=Gt(n),r=o?.value.trim();r&&y(n,()=>u("extras").then(d=>d.applyDiscountCode(n,o,r))).catch(d=>{c(d,"discount")})}function qt(t){let{target:e}=t;if(!N(e))return;let n=e.closest(i("discount-form"));n&&(n.classList.remove("is-invalid"),e.removeAttribute("aria-invalid"))}function Ut(t){let{target:e}=t,n=N(e)?e.closest(i("discount-remove")):null;if(!n)return;t.preventDefault();let o=n.closest(i("discount-code"))?.getAttribute(m("discount-code"));o&&s.removeDiscount(o).catch(r=>{c(r,"discount")})}function wt(){document.addEventListener("submit",_t,!0),document.addEventListener("input",qt),document.addEventListener("click",Ut)}var M=t=>u("extras").then(e=>e.addGroup(t));function Bt(t){let{target:e}=t,n=e instanceof window.Element?e.closest(i("group-add")):null;n&&(t.preventDefault(),y(n,()=>M(n)).catch(o=>{c(o,"extras")}))}function jt(t){!a.domain||!t.key?.startsWith(`${a.prefix}:`)||f("extras",e=>{e.onStorage(t)})}function zt(t){if(!E(t,"variant-changed"))return;let{target:e}=t;e instanceof window.Element&&(!a.variantUrl&&!e.hasAttribute(m("variant-url"))||f("extras",n=>{n.writeVariantUrl(e,t.detail)}))}function At(){document.addEventListener("click",Bt),window.addEventListener("storage",jt),document.addEventListener(`${a.prefix}:variant-changed`,zt)}var O=null;function bt(){O=document.body}async function Qt(t){await t.ready();let e=st();if(!e){O!==document.body&&t.mount(document);return}try{await w(e.country,{language:e.language??null,locale:e.locale,remember:!1})}catch(n){c(n,"country")}t.mount(document)}function Kt(t){document.addEventListener("astro:page-load",()=>{Qt(t).catch(e=>{c(e,"page mount")})}),document.addEventListener("astro:before-swap",()=>{O=null,t.unmount()})}function Wt(){ot(),P.forEach(t=>{t.root.getAttribute(m("state"))==="error"&&t.load()})}function Ct(t){a.astro&&Kt(t),window.addEventListener("online",Wt)}var Xt=50;function Yt(){let t=v("TETHER_CONFIG");return typeof t=="object"&&t!==null?Object.fromEntries(Object.entries(t)):{}}var p=null,I=null,Jt=null,Tt=!1;function Zt(t){let e=0;return g(t,dt()).forEach(n=>{if(T.has(n))return;T.add(n),e++;let o=mt(n);P.add(o),n.addEventListener(`${a.prefix}:list-rendered`,r=>{E(r,"list-rendered")&&b(r.detail.container)}),rt(o.load())}),e}function te(t){g(t,`${i("country-select")},${i("country-bind")}`).length&&f("markets",e=>e.renderCountrySelects(t)),pt(t),g(t,i("search")).length&&f("search",e=>{e.mountSearch(t)})}function Lt(t){let e=Zt(t);return g(t,i("product")).forEach(n=>{nt(n)&&e++}),te(t),e}function b(t=document){if(!h())return 0;t===document&&bt(),L(),k(t.ownerDocument??document);let e=Lt(t);return S(),s.render(),C(`mounted ${e} scope(s)`,t),e}function ee(t){let e=t.filter(o=>o.isConnected&&!t.some(r=>r!==o&&r.contains(o)));if(!e.length||!h())return;L(),e.forEach(o=>{k(o)});let n=e.reduce((o,r)=>o+Lt(r),0);S(),s.render(),C(`mounted ${n} scope(s) in ${e.length} added element(s)`)}function St(){s.close()}function ne(t){let e=t?.closest(i("product"));return e?et.get(e)??null:null}function oe(){Tt||(Tt=!0,Pt(),wt(),At(),Ct({ready:()=>p??Promise.resolve(null),mount:b,unmount:St}))}async function re(t){let e=a.country,n=t?.buyerIdentity.countryCode;if(!e||!n||n===e)return t;try{return await s.setBuyerIdentity({countryCode:e},{create:!1})}catch(o){return c(o,"cart country"),t}}function kt(t={}){return p&&!Object.keys(t).length?p:($({...Yt(),...t}),h()?(ct(),oe(),a.observe&&ie(),a.analytics&&(Jt??(Jt=ft(()=>u("analytics")))),p=it(t).then(()=>s.init()).then(re).then(e=>(U("ready",{cart:e}),R)),p):(V("TETHER_CONFIG is missing domain or token. Tether is idle."),p=Promise.resolve(null),p))}function ie(){if(I||typeof MutationObserver>"u")return;let t,e=new Set;I=new MutationObserver(n=>{n.forEach(o=>{o.addedNodes.forEach(r=>{r instanceof window.Element&&e.add(r)})}),clearTimeout(t),t=setTimeout(()=>{let o=[...e];e.clear(),ee(o)},Xt)}),I.observe(document.body,{childList:!0,subtree:!0})}var se=t=>u("markets").then(e=>e.detectMarket(t??a.markets)),ae=t=>u("lists").then(e=>e.getProducts(t)),ce=(t,e)=>u("lists").then(n=>n.getRecommendations(t,e)),ue=()=>u("markets").then(t=>t.getLocalization()),le=t=>u("diagnose").then(e=>e.diagnose({...t,version:x}));function de(t,e){let n=`${a.prefix}:${t}`,o=r=>{E(r,t)&&e(r.detail,r)};return document.addEventListener(n,o),()=>{document.removeEventListener(n,o)}}var me={VERSION:x,init:kt,mount:b,unmount:St,get config(){return H},get ready(){return p??Promise.resolve(null)},query:_,withContext:G,cart:s,getProduct:Y,getProducts:ae,getRecommendations:ce,getScope:ne,addGroup:M,account:yt,primeProduct:X,normalizeProductKey:W,clearProductCache:J,formatMoney:j,imageUrl:B,plans:Q,TetherError:F,resolveProductKey:tt,setCountry:w,detectMarket:se,getLocalization:ue,diagnose:le,on:de},fe={__core:lt,__parts:{}},R=Object.assign(me,fe),En=R;function pe(){Reflect.set(window,"Tether",R);let t=v("TETHER_CONFIG");if(!t||D(t,"autoMount")===!1||v("TETHER_INTEGRATION"))return;let e=()=>{kt().then(()=>b(document)).catch(n=>{c(n,"init")})};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e,{once:!0}):e()}typeof window<"u"&&typeof document<"u"&&pe();export{x as VERSION,M as addGroup,R as api,En as default,ne as getScope,kt as init,b as mount,w as setCountry,St as unmount};
@@ -1,2 +1,2 @@
1
- import{b as Q,f as G,g as H}from"./chunks/chunk-KW7UPDXI.js";import{e as O,f as v,g as w,i as F,l as q}from"./chunks/chunk-DQJRQBJG.js";import{a as M,c as T,e as V,g as J,h as B,i as K,j}from"./chunks/chunk-NOTL72DB.js";import{C as D,a as y,c as k,d as I,f as ot,h as E,j as _,v as L}from"./chunks/chunk-HO6SNO3A.js";import{E as U,q as $,t as x,u as S,v as C,w as g,z as A}from"./chunks/chunk-ESYKAFMU.js";function z(t,e={}){if(!t)return null;let{variant:r,sellingPlan:a,defaultPurchase:c=g.defaultPurchase,lowStock:u=g.lowStock}=e,d=G(t,{variant:r,sellingPlan:a,defaultPurchase:c}),n=H(t,{...d,quantity:1},u);if(!n)throw new y(`Product ${t.handle} has no variants`);let{selected:l,line:p}=n,i=(o,s)=>!Q(t,l,o,s);return{variant:n.variant,selected:l,purchase:n.purchase.kind,plan:p.kind==="subscription"?n.plan:null,plans:O(t).map(o=>({id:o.id,name:o.name,price:w(n.variant,o.id),savings:F(n.variant,o.id).percentage,selected:p.kind==="subscription"&&o.id===p.planId,available:!!v(n.variant,o.id)})),savings:n.savings.percentage,price:n.price,compareAtPrice:n.compareAtPrice,available:n.variant.availableForSale,show:n.show,unavailable:Object.fromEntries(t.options.map(o=>[o.name,o.optionValues.map(s=>s.name).filter(s=>i(o.name,s))])),isUnavailable:i}}var it=500,at=100,st=100,lt="query TetherServerProductById($id:ID!){node(id:$id){... on Product{...TetherProduct}}}",ct="query TetherServerProduct($handle:String!){product(handle:$handle){...TetherProduct}}",ut=()=>`query TetherServerCollection($handle:String!,$first:Int!,$after:String,$sortKey:ProductCollectionSortKeys,$reverse:Boolean,$filters:[ProductFilter!]){collection(handle:$handle){${T()} products(first:$first,after:$after,sortKey:$sortKey,reverse:$reverse,filters:$filters){nodes{...TetherProduct}pageInfo{hasNextPage endCursor}}}}`,dt="query TetherServerProducts($first:Int!,$after:String,$query:String,$sortKey:ProductSortKeys,$reverse:Boolean){products(first:$first,after:$after,query:$query,sortKey:$sortKey,reverse:$reverse){nodes{...TetherProduct}pageInfo{hasNextPage endCursor}}}",ft=()=>`query TetherServerCollections($first:Int!,$after:String){collections(first:$first,after:$after){nodes{${T()}}pageInfo{hasNextPage endCursor}}}`,pt=t=>`query TetherServerRecs(${t?"$id: ID!":"$handle: String!"},$intent:ProductRecommendationIntent){productRecommendations(${t?"productId: $id":"productHandle: $handle"},intent:$intent){...TetherProduct}}`,mt=I({product:k(V)}),gt=I({node:k(J)}),yt=I({collections:{nodes:[{handle:"string"}],pageInfo:{hasNextPage:"boolean"}}});async function Pt(t){let e=[],r=null;for(let a=0;a<st;a++){let c=await E(t,ft(),{first:at,after:r},yt);if(e.push(...c.collections.nodes),!c.collections.pageInfo.hasNextPage)break;r=c.collections.pageInfo.endCursor}return e}function Y(t,e){let r=(i,o,s)=>E(t,f=>`${i}
2
- ${M(t,f)}`,o,s);async function a(i){let o=C(i);if(!o)return null;if(o.startsWith("gid://")){let{node:f}=await r(lt,{id:o},gt);return f?.id?f:null}return(await r(ct,{handle:o},mt)).product}async function c(i,{first:o=e,after:s=null,sortKey:f,reverse:m=!1,filters:b}){let h=await r(ut(),{handle:i,first:o,after:s,sortKey:f||void 0,reverse:m,filters:b??void 0},B);if(!h.collection)return{collection:null,products:[],pageInfo:{hasNextPage:!1,endCursor:null}};let{products:P,...rt}=h.collection;return{collection:rt,products:P.nodes,pageInfo:P.pageInfo}}async function u(i={}){let{collection:o,query:s,first:f=e,after:m=null,sortKey:b,reverse:h=!1}=i;if(o)return c(o,i);let P=await r(dt,{first:f,after:m,query:s||void 0,sortKey:b||void 0,reverse:h},K);return{collection:null,products:P.products.nodes,pageInfo:P.products.pageInfo}}async function d(i={}){let o=[],s=null;for(let f=0;f<it;f++){let m=await u({...i,first:e,after:s});if(o.push(...m.products),!m.pageInfo.hasNextPage)break;s=m.pageInfo.endCursor}return o}async function n(i,o={}){let s=await u({...o,collection:i});return s.collection?{...s.collection,products:s.products,pageInfo:s.pageInfo}:null}async function l(i,o="RELATED"){let s=C(typeof i=="object"?i?.id:i);if(!s)throw new y("No product for recommendations",{code:"NOT_FOUND"});let f=s.startsWith("gid://");return(await r(pt(f),f?{id:s,intent:o}:{handle:s,intent:o},j)).productRecommendations??[]}return{getProduct:a,getProducts:u,allProducts:d,getCollection:n,allCollections:()=>Pt(t),getRecommendations:l}}var X={size:"https://schema.org/size",color:"https://schema.org/color",colour:"https://schema.org/color",material:"https://schema.org/material"},R=t=>JSON.stringify(t).replace(/</g,"\\u003c").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029");function W(t){return JSON.parse(JSON.stringify(t))}var Z=t=>t.split("/").pop()??t;function ht(t){return t.availableForSale?t.currentlyNotInStock?"https://schema.org/BackOrder":"https://schema.org/InStock":"https://schema.org/OutOfStock"}function St(t,e){if(!t.requiresSellingPlan)return e.price;let r=O(t).find(a=>v(e,a.id));return(r&&w(e,r.id))??e.price}function tt(t,e,r){let a=St(t,e),c=r?.includes("?")?"&":"?";return{"@type":"Offer",price:a.amount,priceCurrency:a.currencyCode,availability:ht(e),url:r?`${r}${c}variant=${Z(e.id)}`:void 0}}function Ct(t,e,r,a){let c=e.selectedOptions.flatMap(u=>{let d=X[u.name.toLowerCase()];return d?[[d.split("/").pop()??d,u.value]]:[]});return{"@type":"Product",name:`${t.title} - ${e.title}`,sku:e.sku||void 0,image:e.image?.url||a[0],...Object.fromEntries(c),offers:tt(t,e,r)}}function It(t,{url:e},r){if(e)return e;let a=S(r.productPath,t.handle,t.id);if(!(!r.siteUrl||!a))return new URL(a,r.siteUrl).toString()}function N(t,e,r){if(!t)return null;let a=It(t,e,r),c=t.images.nodes.map(i=>i.url).filter(Boolean),u=e.brand||t.vendor,d=u?{"@type":"Brand",name:u}:void 0,n=t.description.trim()||void 0,l=t.variants.nodes;if(l.length<=1){let[i]=l;return W({"@context":"https://schema.org","@type":"Product",name:t.title,description:n,url:a,image:c,sku:i?.sku||void 0,brand:d,offers:i?tt(t,i,a):void 0})}let p=t.options.map(i=>X[i.name.toLowerCase()]).filter(Boolean);return W({"@context":"https://schema.org","@type":"ProductGroup",name:t.title,description:n,url:a,productGroupID:Z(t.id),image:c,brand:d,variesBy:[...new Set(p)],hasVariant:l.map(i=>Ct(t,i,a,c))})}var et=25,vt=2,wt=1;function bt(t,{productPath:e=g.productPath,id:r}={}){return S(e,t,r)}function nt(t,e){for(let r of e){let a=t[r];if(typeof a=="string"&&a)return a}return""}function $t(t){let e={};for(let[u,d]of Object.entries(t))Object.hasOwn(g,u)&&(e[u]=d);let r=typeof t.domain=="string"&&t.domain?t.domain:"",a=typeof t.token=="string"&&t.token?t.token:"",c={...A({...e,domain:r||nt(t,$.domain),token:a||nt(t,$.token)}),pageSize:kt(t.pageSize)};return t.fetch&&(c.fetch=t.fetch),t.siteUrl!==void 0&&(c.siteUrl=t.siteUrl),c}function kt(t){return typeof t=="number"&&Number.isInteger(t)&&t>=1&&t<=250?t:(t!==void 0&&U(`invalid pageSize ${JSON.stringify(t)}: using ${String(et)}`),et)}function Et(t,e){return{...t,description:"",descriptionHtml:"",images:{nodes:t.images.nodes.slice(0,Math.max(1,e))},variants:{nodes:t.variants.nodes.map(r=>({...r,image:null}))}}}function zt(t={}){let e=$t(t);if(!e.domain||!e.token)throw new y("createStorefront needs domain and token: pass them, or import.meta.env with PUBLIC_SHOPIFY_DOMAIN and PUBLIC_SHOPIFY_STOREFRONT_TOKEN",{code:"NOT_CONFIGURED"});let r=Y(e,e.pageSize),a={productPath:e.productPath,siteUrl:e.siteUrl};function c(n,{card:l=!1,images:p=vt}={}){let i=(Array.isArray(n)?n:[n]).filter(s=>s!=null),o={v:wt,at:new Date().toISOString(),country:e.country||null,language:e.language||null,products:l?i.map(s=>Et(s,p)):i};return`<script type="application/json" data-tether-hydrate>${R(o)}<\/script>`}function u(n,l={}){return n?`<script type="application/ld+json">${R(N(n,l,a))}<\/script>`:""}function d(n,l={}){return z(n,{defaultPurchase:e.defaultPurchase,lowStock:e.lowStock,...l})}return{config:e,query:(n,l,p)=>_(e,n,l,p),...r,hydrate:c,formatMoney:(n,l=e.locale)=>x(n,l),formatPercent:(n,l=e.locale)=>D(n,l),imageUrl:L,jsonLd:u,jsonLdData:(n,l={})=>N(n,l,a),initialState:d,productUrl:(n,l={})=>bt(n,{productPath:e.productPath,...l}),plans:q}}export{y as TetherError,zt as createStorefront,x as formatMoney,D as formatPercent,L as imageUrl,z as initialState,q as plans,C as productKey,bt as productUrl,ot as withContext};
1
+ import{b as Q,f as G,g as H}from"./chunks/chunk-4BZ4X2Z6.js";import{e as O,f as v,g as w,i as F,l as q}from"./chunks/chunk-BGUUUMJO.js";import{a as T,b as M,e as V,g as J,h as B,i as K,j}from"./chunks/chunk-R3UWDQL5.js";import{C as D,a as y,c as k,d as I,f as ot,h as E,j as _,v as L}from"./chunks/chunk-B7SC7UOJ.js";import{E as U,q as $,t as x,u as S,v as C,w as g,z as A}from"./chunks/chunk-QUBBZNJ7.js";function z(t,e={}){if(!t)return null;let{variant:r,sellingPlan:a,defaultPurchase:c=g.defaultPurchase,lowStock:u=g.lowStock}=e,d=G(t,{variant:r,sellingPlan:a,defaultPurchase:c}),n=H(t,{...d,quantity:1},u);if(!n)throw new y(`Product ${t.handle} has no variants`);let{selected:l,line:p}=n,i=(o,s)=>!Q(t,l,o,s);return{variant:n.variant,selected:l,purchase:n.purchase.kind,plan:p.kind==="subscription"?n.plan:null,plans:O(t).map(o=>({id:o.id,name:o.name,price:w(n.variant,o.id),savings:F(n.variant,o.id).percentage,selected:p.kind==="subscription"&&o.id===p.planId,available:!!v(n.variant,o.id)})),savings:n.savings.percentage,price:n.price,compareAtPrice:n.compareAtPrice,available:n.variant.availableForSale,show:n.show,unavailable:Object.fromEntries(t.options.map(o=>[o.name,o.optionValues.map(s=>s.name).filter(s=>i(o.name,s))])),isUnavailable:i}}var it=500,at=100,st=100,lt="query TetherServerProductById($id:ID!){node(id:$id){... on Product{...TetherProduct}}}",ct="query TetherServerProduct($handle:String!){product(handle:$handle){...TetherProduct}}",ut=()=>`query TetherServerCollection($handle:String!,$first:Int!,$after:String,$sortKey:ProductCollectionSortKeys,$reverse:Boolean,$filters:[ProductFilter!]){collection(handle:$handle){${T()} products(first:$first,after:$after,sortKey:$sortKey,reverse:$reverse,filters:$filters){nodes{...TetherProduct}pageInfo{hasNextPage endCursor}}}}`,dt="query TetherServerProducts($first:Int!,$after:String,$query:String,$sortKey:ProductSortKeys,$reverse:Boolean){products(first:$first,after:$after,query:$query,sortKey:$sortKey,reverse:$reverse){nodes{...TetherProduct}pageInfo{hasNextPage endCursor}}}",ft=()=>`query TetherServerCollections($first:Int!,$after:String){collections(first:$first,after:$after){nodes{${T()}}pageInfo{hasNextPage endCursor}}}`,pt=t=>`query TetherServerRecs(${t?"$id: ID!":"$handle: String!"},$intent:ProductRecommendationIntent){productRecommendations(${t?"productId: $id":"productHandle: $handle"},intent:$intent){...TetherProduct}}`,mt=I({product:k(V)}),gt=I({node:k(J)}),yt=I({collections:{nodes:[{handle:"string"}],pageInfo:{hasNextPage:"boolean"}}});async function Pt(t){let e=[],r=null;for(let a=0;a<st;a++){let c=await E(t,ft(),{first:at,after:r},yt);if(e.push(...c.collections.nodes),!c.collections.pageInfo.hasNextPage)break;r=c.collections.pageInfo.endCursor}return e}function Y(t,e){let r=(i,o,s)=>E(t,f=>`${i}
2
+ ${M(t,f)}`,o,s);async function a(i){let o=C(i);if(!o)return null;if(o.startsWith("gid://")){let{node:f}=await r(lt,{id:o},gt);return f?.id?f:null}return(await r(ct,{handle:o},mt)).product}async function c(i,{first:o=e,after:s=null,sortKey:f,reverse:m=!1,filters:b}){let h=await r(ut(),{handle:i,first:o,after:s,sortKey:f||void 0,reverse:m,filters:b??void 0},B);if(!h.collection)return{collection:null,products:[],pageInfo:{hasNextPage:!1,endCursor:null}};let{products:P,...rt}=h.collection;return{collection:rt,products:P.nodes,pageInfo:P.pageInfo}}async function u(i={}){let{collection:o,query:s,first:f=e,after:m=null,sortKey:b,reverse:h=!1}=i;if(o)return c(o,i);let P=await r(dt,{first:f,after:m,query:s||void 0,sortKey:b||void 0,reverse:h},K);return{collection:null,products:P.products.nodes,pageInfo:P.products.pageInfo}}async function d(i={}){let o=[],s=null;for(let f=0;f<it;f++){let m=await u({...i,first:e,after:s});if(o.push(...m.products),!m.pageInfo.hasNextPage)break;s=m.pageInfo.endCursor}return o}async function n(i,o={}){let s=await u({...o,collection:i});return s.collection?{...s.collection,products:s.products,pageInfo:s.pageInfo}:null}async function l(i,o="RELATED"){let s=C(typeof i=="object"?i?.id:i);if(!s)throw new y("No product for recommendations",{code:"NOT_FOUND"});let f=s.startsWith("gid://");return(await r(pt(f),f?{id:s,intent:o}:{handle:s,intent:o},j)).productRecommendations??[]}return{getProduct:a,getProducts:u,allProducts:d,getCollection:n,allCollections:()=>Pt(t),getRecommendations:l}}var X={size:"https://schema.org/size",color:"https://schema.org/color",colour:"https://schema.org/color",material:"https://schema.org/material"},R=t=>JSON.stringify(t).replace(/</g,"\\u003c").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029");function W(t){return JSON.parse(JSON.stringify(t))}var Z=t=>t.split("/").pop()??t;function ht(t){return t.availableForSale?t.currentlyNotInStock?"https://schema.org/BackOrder":"https://schema.org/InStock":"https://schema.org/OutOfStock"}function St(t,e){if(!t.requiresSellingPlan)return e.price;let r=O(t).find(a=>v(e,a.id));return(r&&w(e,r.id))??e.price}function tt(t,e,r){let a=St(t,e),c=r?.includes("?")?"&":"?";return{"@type":"Offer",price:a.amount,priceCurrency:a.currencyCode,availability:ht(e),url:r?`${r}${c}variant=${Z(e.id)}`:void 0}}function Ct(t,e,r,a){let c=e.selectedOptions.flatMap(u=>{let d=X[u.name.toLowerCase()];return d?[[d.split("/").pop()??d,u.value]]:[]});return{"@type":"Product",name:`${t.title} - ${e.title}`,sku:e.sku||void 0,image:e.image?.url||a[0],...Object.fromEntries(c),offers:tt(t,e,r)}}function It(t,{url:e},r){if(e)return e;let a=S(r.productPath,t.handle,t.id);if(!(!r.siteUrl||!a))return new URL(a,r.siteUrl).toString()}function N(t,e,r){if(!t)return null;let a=It(t,e,r),c=t.images.nodes.map(i=>i.url).filter(Boolean),u=e.brand||t.vendor,d=u?{"@type":"Brand",name:u}:void 0,n=t.description.trim()||void 0,l=t.variants.nodes;if(l.length<=1){let[i]=l;return W({"@context":"https://schema.org","@type":"Product",name:t.title,description:n,url:a,image:c,sku:i?.sku||void 0,brand:d,offers:i?tt(t,i,a):void 0})}let p=t.options.map(i=>X[i.name.toLowerCase()]).filter(Boolean);return W({"@context":"https://schema.org","@type":"ProductGroup",name:t.title,description:n,url:a,productGroupID:Z(t.id),image:c,brand:d,variesBy:[...new Set(p)],hasVariant:l.map(i=>Ct(t,i,a,c))})}var et=25,vt=2,wt=1;function bt(t,{productPath:e=g.productPath,id:r}={}){return S(e,t,r)}function nt(t,e){for(let r of e){let a=t[r];if(typeof a=="string"&&a)return a}return""}function $t(t){let e={};for(let[u,d]of Object.entries(t))Object.hasOwn(g,u)&&(e[u]=d);let r=typeof t.domain=="string"&&t.domain?t.domain:"",a=typeof t.token=="string"&&t.token?t.token:"",c={...A({...e,domain:r||nt(t,$.domain),token:a||nt(t,$.token)}),pageSize:kt(t.pageSize)};return t.fetch&&(c.fetch=t.fetch),t.siteUrl!==void 0&&(c.siteUrl=t.siteUrl),c}function kt(t){return typeof t=="number"&&Number.isInteger(t)&&t>=1&&t<=250?t:(t!==void 0&&U(`invalid pageSize ${JSON.stringify(t)}: using ${String(et)}`),et)}function Et(t,e){return{...t,description:"",descriptionHtml:"",images:{nodes:t.images.nodes.slice(0,Math.max(1,e))},variants:{nodes:t.variants.nodes.map(r=>({...r,image:null}))}}}function Yt(t={}){let e=$t(t);if(!e.domain||!e.token)throw new y("createStorefront needs domain and token: pass them, or import.meta.env with PUBLIC_SHOPIFY_DOMAIN and PUBLIC_SHOPIFY_STOREFRONT_TOKEN",{code:"NOT_CONFIGURED"});let r=Y(e,e.pageSize),a={productPath:e.productPath,siteUrl:e.siteUrl};function c(n,{card:l=!1,images:p=vt}={}){let i=(Array.isArray(n)?n:[n]).filter(s=>s!=null),o={v:wt,at:new Date().toISOString(),country:e.country||null,language:e.language||null,products:l?i.map(s=>Et(s,p)):i};return`<script type="application/json" data-tether-hydrate>${R(o)}<\/script>`}function u(n,l={}){return n?`<script type="application/ld+json">${R(N(n,l,a))}<\/script>`:""}function d(n,l={}){return z(n,{defaultPurchase:e.defaultPurchase,lowStock:e.lowStock,...l})}return{config:e,query:(n,l,p)=>_(e,n,l,p),...r,hydrate:c,formatMoney:(n,l=e.locale)=>x(n,l),formatPercent:(n,l=e.locale)=>D(n,l),imageUrl:L,jsonLd:u,jsonLdData:(n,l={})=>N(n,l,a),initialState:d,productUrl:(n,l={})=>bt(n,{productPath:e.productPath,...l}),plans:q}}export{y as TetherError,Yt as createStorefront,x as formatMoney,D as formatPercent,L as imageUrl,z as initialState,q as plans,C as productKey,bt as productUrl,ot as withContext};
@@ -159,7 +159,7 @@
159
159
  var toUserErrors = (value) => listOf(value, toUserError).filter((error) => error !== null);
160
160
 
161
161
  // src/account/server-client.ts
162
- var known = null;
162
+ var loginState = { kind: "unknown" };
163
163
  function serverBase() {
164
164
  const server = cfg.account?.server;
165
165
  if (!server) {
@@ -211,17 +211,30 @@
211
211
  }
212
212
  return { kind: "answer", data };
213
213
  }
214
+ async function askWhoIsLoggedIn() {
215
+ const answer = await serverFetch("/me");
216
+ return answer.kind === "answer" && answer.data["loggedIn"] === true ? { loggedIn: true, customer: toAccountCustomer(answer.data["customer"]) } : { loggedIn: false };
217
+ }
214
218
  async function serverLogin() {
215
- if (!known) {
216
- const answer = await serverFetch("/me");
217
- known = answer.kind === "answer" && answer.data["loggedIn"] === true ? { loggedIn: true, customer: toAccountCustomer(answer.data["customer"]) } : { loggedIn: false };
219
+ if (loginState.kind === "known") return loginState.login;
220
+ if (loginState.kind === "unknown") loginState = { kind: "asking", request: askWhoIsLoggedIn() };
221
+ const { request } = loginState;
222
+ const isCurrent = () => loginState.kind === "asking" && loginState.request === request;
223
+ let login2;
224
+ try {
225
+ login2 = await request;
226
+ } catch (error) {
227
+ if (isCurrent()) loginState = { kind: "unknown" };
228
+ throw error;
218
229
  }
219
- setLoginHint(known.loggedIn);
220
- return known;
230
+ if (!isCurrent()) return serverLogin();
231
+ loginState = { kind: "known", login: login2 };
232
+ setLoginHint(login2.loggedIn);
233
+ return login2;
221
234
  }
222
- var isServerLoggedIn = () => known?.loggedIn === true;
235
+ var isServerLoggedIn = () => loginState.kind === "known" && loginState.login.loggedIn;
223
236
  function forgetServerLogin() {
224
- known = null;
237
+ loginState = { kind: "unknown" };
225
238
  }
226
239
  function navigate(url) {
227
240
  const replacement = cfg.account?.navigate;
@@ -246,7 +259,7 @@
246
259
  }
247
260
  async function serverLogout(returnTo) {
248
261
  const answer = await serverFetch("/logout", { method: "POST", body: { returnTo, cartId: Cart.id() } });
249
- known = null;
262
+ forgetServerLogin();
250
263
  setLoginHint(false);
251
264
  emit("account-logout", {});
252
265
  const logoutUrl = answer.kind === "answer" ? textOrNull(answer.data["logoutUrl"]) : null;
@@ -408,7 +421,7 @@
408
421
  } = {}) {
409
422
  if (await serverLogout(returnTo) === "stayed") await render(document);
410
423
  }
411
- async function loginState() {
424
+ async function loginState2() {
412
425
  try {
413
426
  return (await serverLogin()).loggedIn ? { kind: "logged-in" } : { kind: "logged-out" };
414
427
  } catch (error) {
@@ -429,7 +442,7 @@
429
442
  return fallback;
430
443
  }
431
444
  async function render(root = document) {
432
- const state = await loginState();
445
+ const state = await loginState2();
433
446
  if (state.kind === "unknown") reportError(state.error, "account");
434
447
  const loggedIn = state.kind === "logged-in";
435
448
  qsa(root, sel("show")).forEach((el) => {
@@ -1 +1 @@
1
- (()=>{var St=Object.defineProperty;var Lt=(t,e)=>{for(var r in e)St(t,r,{get:e[r],enumerable:!0})};var j={};Lt(j,{addresses:()=>ne,customer:()=>F,deleteAddress:()=>se,isLoggedIn:()=>xt,login:()=>At,logout:()=>kt,mountAccount:()=>le,order:()=>ee,orders:()=>Ot,render:()=>U,requestReturn:()=>ce,saveAddress:()=>oe,subscriptionAction:()=>ae,subscriptions:()=>ie,updateProfile:()=>re});var bt=window.Tether.__core["config.ts"],[u,ge,V,pe,we,y,he]=bt;var Et=window.Tether.__core["client.ts"],[xe,Ae,Oe,ke,Te,p,B]=Et;var Rt=window.Tether.__core["dom.ts"],[Se,Le,be,Ee,T,G,P,m,Re,Ie,J,Ne,Ce,ve,Ue,d,R,_e,c,I,$e,A,S]=Rt;var It=window.Tether.__core["cart.ts"],[L]=It;var Nt=window.Tether.__core["lazy.ts"],[K]=Nt;function g(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function a(t,e){return g(t)?t[e]:void 0}function _(t){return Array.isArray(t)?t:[]}function i(t){return typeof t=="string"&&t!==""?t:null}var Ct=t=>typeof t=="number"&&Number.isFinite(t)?t:null,X=t=>Ct(t)??0,N=(t,e)=>_(t).map(r=>e(r)),z=(t,e)=>({nodes:N(a(t,"nodes"),e)}),$=t=>N(t,i).filter(e=>e!==null);function W(t){return t instanceof Error?t.message:String(t)}function Z(t,e,r="localStorage"){try{window[r].setItem(t,e)}catch{}}function q(t,e="localStorage"){try{window[e].removeItem(t)}catch{}}var D=()=>`${u.prefix}:account-hint:${u.domain}`;var Y=t=>t==="in"||t==="expired"||t==="error";function vt(t){let e=i(a(t,"amount")),r=i(a(t,"currencyCode"));return e===null||r===null?null:{amount:e,currencyCode:r}}function Ut(t){let e=i(a(t,"url"));return e===null?null:{url:e,altText:i(a(t,"altText"))}}var _t=t=>({title:i(a(t,"title")),variantTitle:i(a(t,"variantTitle")),quantity:X(a(t,"quantity")),image:Ut(a(t,"image"))}),$t=(t,e)=>({id:e,name:i(a(t,"name")),processedAt:i(a(t,"processedAt")),financialStatus:i(a(t,"financialStatus")),fulfillmentStatus:i(a(t,"fulfillmentStatus")),statusPageUrl:i(a(t,"statusPageUrl")),totalPrice:vt(a(t,"totalPrice")),lineItems:z(a(t,"lineItems"),_t)});function Q(t){let e=[];for(let r of _(t)){let n=i(a(r,"id"));if(n===null)return{kind:"missing-id"};e.push($t(r,n))}return{kind:"read",orders:e}}var qt=t=>new p(`Customer accounts: the answer has no ${t}`);function tt(t){let e=g(t)?t:{},r=i(e.id),n=i(e.email),o=e.address;return{...r===null?{}:{id:r},firstName:i(e.firstName),lastName:i(e.lastName),displayName:i(e.displayName),emailAddress:n===null?null:{emailAddress:n},defaultAddress:Array.isArray(o)?{formatted:$(o)}:null}}function et(t){let e=Q(t);if(e.kind==="missing-id")throw qt("order id");return e.orders}function Dt(t){let e=i(a(t,"message"));if(e===null)return null;let r=a(t,"field");return{message:e,field:Array.isArray(r)?$(r):null,code:i(a(t,"code"))}}var rt=t=>N(t,Dt).filter(e=>e!==null);var x=null;function nt(){let t=u.account?.server;if(!t)throw new p("Customer accounts need the Worker: set account.server",{code:"NOT_CONFIGURED"});return new URL(t,window.location.href).href.replace(/\/$/,"")}function ot(t){t?Z(D(),"1"):q(D())}async function Mt(t){let e;try{e=await t.json()}catch(r){if(r instanceof SyntaxError)return{};throw r}return g(e)?e:{}}async function Ft(t,e){try{return await B(u.requestTimeout,async r=>{let n=await fetch(t,{...e,signal:r});return{response:n,data:await Mt(n)}})}catch(r){throw new p(`Network error: ${W(r)}`,{code:"NETWORK"})}}async function O(t,{method:e="GET",body:r}={}){let n={method:e,credentials:"include"};e==="POST"&&(n.headers={"Content-Type":"application/json","X-Tether-Account":"1"}),r&&(n.body=JSON.stringify(r));let{response:o,data:s}=await Ft(`${nt()}${t}`,n);if(o.status===401)return{kind:"logged-out"};if(!o.ok){let l=i(s.error)??String(o.status),w=rt(s.userErrors);throw new p(`Customer accounts: ${l}`,{status:o.status,...w.length>0&&{userErrors:w},...s.code==="INVALID"&&{code:"INVALID"}})}return{kind:"answer",data:s}}async function C(){if(!x){let t=await O("/me");x=t.kind==="answer"&&t.data.loggedIn===!0?{loggedIn:!0,customer:tt(t.data.customer)}:{loggedIn:!1}}return ot(x.loggedIn),x}var st=()=>x?.loggedIn===!0;function it(){x=null}function at(t){let e=u.account?.navigate;e?e(t):window.location.assign(t)}var jt=t=>t||u.account?.locale||(u.locale||"").split("-")[0]||"";function ct({returnTo:t,locale:e}){let r=new URL(`${nt()}/login`);r.searchParams.set("returnTo",t);let n=jt(e);n&&r.searchParams.set("locale",n),u.country&&r.searchParams.set("country",u.country.toUpperCase()),at(r.toString())}async function ut(){let t=L.id();if(!(await C()).loggedIn||!t)return null;let e=await O("/cart",{method:"POST",body:{cartId:t}});return e.kind==="logged-out"?null:i(e.data.checkoutUrl)}async function dt(t){let e=await O("/logout",{method:"POST",body:{returnTo:t,cartId:L.id()}});x=null,ot(!1),T("account-logout",{});let r=e.kind==="answer"?i(e.data.logoutUrl):null;return r?(at(r),"redirected"):"stayed"}var Ht=window.Tether.__core["shopify-values.ts"],[lt,cr]=Ht;function b(t,e,r){d(t,c(e)).forEach(n=>{let o=m(n,e)??"";Object.hasOwn(r,o)&&S(n,r[o]===!0)})}var mt=(t,e)=>d(t,c(e)).concat(t.matches(c(e))?[t]:[]);var k=(t,e)=>Object.hasOwn(t,e)?t[e]:void 0;var Vt=(t,e)=>({title:t.title||t.name||"","variant-title":t.variantTitle||"",quantity:String(t.quantity),price:P(t.price),total:P(t.totalPrice),sku:t.sku||"",returnable:e===null?void 0:String(e)}),Bt=t=>t.tagName==="INPUT";function Gt(t,e,r){b(t,"order-line-show",{returnable:r>0}),d(t,c("return-quantity")).forEach(n=>{Bt(n)&&(n.max=String(r),n.min="0",n.value||(n.value="0"),n.disabled=r<1)}),d(t,`select${c("return-reason")}`).forEach(n=>{n.dataset.tetherFilled!==e.id&&(n.dataset.tetherFilled=e.id,(e.suggestedReturnReasonDefinitions?.nodes??[]).forEach(o=>{n.appendChild(new Option(o.name??"",o.id))}))})}function ft(t,e,r){R(t,e,(n,o)=>{let s=o.id,l=r&&s?r.get(s)??0:null;s&&(n.dataset.tetherLine=s);let w=Vt(o,l);mt(n,"order-line").forEach(h=>{let E=m(h,"order-line")??"";if(E==="image"){o.image&&I(h,o.image.url,o.image.altText||o.title||"");return}let H=k(w,E);H!==void 0&&A(h,H)}),s&&l!==null&&Gt(n,{...o,id:s},l)})}var M=10,v=50,gt=t=>typeof t=="number"&&Number.isInteger(t)&&t>=1&&t<=v,Jt=t=>J(t,"limit",{min:1,max:v,fallback:M}),Kt=t=>t.replace(/\?.*$/,"").replace(/^.*\//,"");function Xt(t){let e=u.account?.orderUrl;if(e)return e.replaceAll("{id}",encodeURIComponent(Kt(t.id)));let r=t.statusPageUrl;return r!==null&&lt(r)?r:null}var zt=t=>({name:t.name??"",date:G(t.processedAt),total:P(t.totalPrice),status:t.financialStatus?.toLowerCase(),fulfillment:t.fulfillmentStatus?.toLowerCase(),items:t.lineItems.nodes.map(e=>`${String(e.quantity)}\xD7 ${e.title??""}`).join(", ")});function Wt(t,e){let r=e.lineItems.nodes,n=Xt(e),o=zt(e);d(t,c("order-bind")).forEach(s=>{let l=m(s,"order-bind")??"";if(l==="url"){n&&s.setAttribute("href",n);return}if(l==="image"){let h=r.find(E=>E.image)?.image;h&&I(s,h.url,h.altText||r[0]?.title||"");return}let w=k(o,l);w!==void 0&&A(s,w)}),d(t,c("order-lines")).forEach(s=>{ft(s,r,null)}),m(t,"order-bind")==="url"&&n&&t.setAttribute("href",n)}async function pt(t,e){let r=d(t,c("orders")),n=r[0];if(!n)return;b(t,"show",{"orders-loading":!0,"orders-empty":!1});let o=Jt(n),s;try{s=await e(o)}catch(l){y(l,"orders"),s=null}b(t,"show",{"orders-loading":!1,"orders-empty":s?.length===0}),r.forEach(l=>{R(l,s??[],Wt)})}var Zt=["order","addresses","subscriptions","profile-form","address-form"],xt=st;function At({returnTo:t=window.location.href,locale:e}={}){return new Promise(r=>{ct({returnTo:t,locale:e}),r()})}async function F(){let t=await C();return t.loggedIn?t.customer:null}async function Ot({first:t=M}={}){if(!gt(t))throw new p(`Customer accounts: orders() takes first from 1 to ${String(v)}`,{code:"INVALID"});let e=await O(`/orders?${new URLSearchParams({first:String(t)}).toString()}`);return e.kind==="logged-out"?[]:et(e.data.orders)}async function kt({returnTo:t=u.account?.logoutUrl||`${window.location.origin}/`}={}){await dt(t)==="stayed"&&await U(document)}async function Yt(){try{return(await C()).loggedIn?{kind:"logged-in"}:{kind:"logged-out"}}catch(t){return{kind:"unknown",error:t}}}var wt=t=>Zt.some(e=>d(t,c(e)).length>0);function Qt(t){d(t,c("account-link")).forEach(e=>{e.setAttribute("href",te(m(e,"account-link")))})}function te(t){let e=u.account,r=`https://${u.domain}/account`;return t==="payment"?e?.paymentUrl||e?.subscriptionsUrl||r:t==="subscriptions"&&e?.subscriptionsUrl||r}async function U(t=document){let e=await Yt();e.kind==="unknown"&&y(e.error,"account");let r=e.kind==="logged-in";if(d(t,c("show")).forEach(n=>{let o=m(n,"show");o==="logged-in"&&S(n,r),o==="logged-out"&&S(n,!r)}),Qt(t),e.kind==="unknown"&&wt(t)){(await f()).showUnavailable(t);return}r&&(await Tt(t),await Promise.all([pt(t,n=>Ot({first:n})),wt(t)?f().then(n=>n.renderPages(t)):null]))}async function Tt(t){let e=d(t,c("account-bind"));if(!e.length)return;let r;try{r=await F()}catch(o){y(o,"account");return}if(!r)return;let n={"first-name":r.firstName,"last-name":r.lastName,name:r.displayName,email:r.emailAddress?.emailAddress,address:r.defaultAddress?.formatted.join(", ")};e.forEach(o=>{let s=k(n,m(o,"account-bind")??"");s!=null&&A(o,s)})}var ht=null;function f(){return ht??(ht=K("account-pages").then(t=>(t.setup({serverFetch:O,customer:F,bindCustomer:Tt,reset:it}),t))),ht}var ee=t=>f().then(e=>e.order(t)),re=t=>f().then(e=>e.updateProfile(t)),ne=()=>f().then(t=>t.addresses()),oe=(t,e)=>f().then(r=>r.saveAddress(t,e)),se=t=>f().then(e=>e.deleteAddress(t)),ie=()=>f().then(t=>t.subscriptions()),ae=(t,e)=>f().then(r=>r.subscriptionAction(t,e)),ce=(t,e)=>f().then(r=>r.requestReturn(t,e));function ue(t){let e=t.target;e instanceof window.Element&&(e.closest(c("account-login"))?(t.preventDefault(),At().catch(r=>{y(r,"login")})):e.closest(c("account-logout"))&&(t.preventDefault(),kt().catch(r=>{y(r,"logout")})))}function de(){let t=new URL(window.location.href),e=t.searchParams.get("account");if(Y(e))switch(t.searchParams.delete("account"),window.history.replaceState(window.history.state,"",t),e){case"in":T("account-login",{});break;case"expired":case"error":T("account-error",{error:e});break}}var yt=!1;async function le(t=document){if(yt){await U(t);return}yt=!0,document.addEventListener("click",ue),de(),L.setCheckoutResolver(ut),await U(t),V("account",xt()?"logged in":"logged out")}function me(t){return g(t)&&g(t.__core)&&g(t.__parts)}function Pt(t,e){let r=Reflect.get(window,"Tether");if(!me(r))throw new Error(`tether.${t}.js runs after the Tether script, which loads it, and needs its window.Tether`);r.__parts[t]=e}Pt("account",j);})();
1
+ (()=>{var St=Object.defineProperty;var Lt=(t,e)=>{for(var r in e)St(t,r,{get:e[r],enumerable:!0})};var H={};Lt(H,{addresses:()=>oe,customer:()=>j,deleteAddress:()=>ie,isLoggedIn:()=>kt,login:()=>xt,logout:()=>Ot,mountAccount:()=>me,order:()=>re,orders:()=>At,render:()=>U,requestReturn:()=>ue,saveAddress:()=>se,subscriptionAction:()=>ce,subscriptions:()=>ae,updateProfile:()=>ne});var bt=window.Tether.__core["config.ts"],[u,pe,B,we,he,k,ye]=bt;var Et=window.Tether.__core["client.ts"],[xe,Ae,Oe,Pe,Te,w,G]=Et;var It=window.Tether.__core["dom.ts"],[Le,be,Ee,Ie,P,J,T,g,Re,Ne,K,Ce,ve,Ue,_e,d,R,qe,c,N,$e,x,S]=It;var Rt=window.Tether.__core["cart.ts"],[L]=Rt;var Nt=window.Tether.__core["lazy.ts"],[W]=Nt;function p(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function a(t,e){return p(t)?t[e]:void 0}function _(t){return Array.isArray(t)?t:[]}function i(t){return typeof t=="string"&&t!==""?t:null}var Ct=t=>typeof t=="number"&&Number.isFinite(t)?t:null,X=t=>Ct(t)??0,C=(t,e)=>_(t).map(r=>e(r)),z=(t,e)=>({nodes:C(a(t,"nodes"),e)}),q=t=>C(t,i).filter(e=>e!==null);function Z(t){return t instanceof Error?t.message:String(t)}function Y(t,e,r="localStorage"){try{window[r].setItem(t,e)}catch{}}function $(t,e="localStorage"){try{window[e].removeItem(t)}catch{}}var D=()=>`${u.prefix}:account-hint:${u.domain}`;var Q=t=>t==="in"||t==="expired"||t==="error";function vt(t){let e=i(a(t,"amount")),r=i(a(t,"currencyCode"));return e===null||r===null?null:{amount:e,currencyCode:r}}function Ut(t){let e=i(a(t,"url"));return e===null?null:{url:e,altText:i(a(t,"altText"))}}var _t=t=>({title:i(a(t,"title")),variantTitle:i(a(t,"variantTitle")),quantity:X(a(t,"quantity")),image:Ut(a(t,"image"))}),qt=(t,e)=>({id:e,name:i(a(t,"name")),processedAt:i(a(t,"processedAt")),financialStatus:i(a(t,"financialStatus")),fulfillmentStatus:i(a(t,"fulfillmentStatus")),statusPageUrl:i(a(t,"statusPageUrl")),totalPrice:vt(a(t,"totalPrice")),lineItems:z(a(t,"lineItems"),_t)});function tt(t){let e=[];for(let r of _(t)){let n=i(a(r,"id"));if(n===null)return{kind:"missing-id"};e.push(qt(r,n))}return{kind:"read",orders:e}}var $t=t=>new w(`Customer accounts: the answer has no ${t}`);function et(t){let e=p(t)?t:{},r=i(e.id),n=i(e.email),o=e.address;return{...r===null?{}:{id:r},firstName:i(e.firstName),lastName:i(e.lastName),displayName:i(e.displayName),emailAddress:n===null?null:{emailAddress:n},defaultAddress:Array.isArray(o)?{formatted:q(o)}:null}}function rt(t){let e=tt(t);if(e.kind==="missing-id")throw $t("order id");return e.orders}function Dt(t){let e=i(a(t,"message"));if(e===null)return null;let r=a(t,"field");return{message:e,field:Array.isArray(r)?q(r):null,code:i(a(t,"code"))}}var nt=t=>C(t,Dt).filter(e=>e!==null);var m={kind:"unknown"};function ot(){let t=u.account?.server;if(!t)throw new w("Customer accounts need the Worker: set account.server",{code:"NOT_CONFIGURED"});return new URL(t,window.location.href).href.replace(/\/$/,"")}function st(t){t?Y(D(),"1"):$(D())}async function Mt(t){let e;try{e=await t.json()}catch(r){if(r instanceof SyntaxError)return{};throw r}return p(e)?e:{}}async function Ft(t,e){try{return await G(u.requestTimeout,async r=>{let n=await fetch(t,{...e,signal:r});return{response:n,data:await Mt(n)}})}catch(r){throw new w(`Network error: ${Z(r)}`,{code:"NETWORK"})}}async function A(t,{method:e="GET",body:r}={}){let n={method:e,credentials:"include"};e==="POST"&&(n.headers={"Content-Type":"application/json","X-Tether-Account":"1"}),r&&(n.body=JSON.stringify(r));let{response:o,data:s}=await Ft(`${ot()}${t}`,n);if(o.status===401)return{kind:"logged-out"};if(!o.ok){let l=i(s.error)??String(o.status),h=nt(s.userErrors);throw new w(`Customer accounts: ${l}`,{status:o.status,...h.length>0&&{userErrors:h},...s.code==="INVALID"&&{code:"INVALID"}})}return{kind:"answer",data:s}}async function jt(){let t=await A("/me");return t.kind==="answer"&&t.data.loggedIn===!0?{loggedIn:!0,customer:et(t.data.customer)}:{loggedIn:!1}}async function b(){if(m.kind==="known")return m.login;m.kind==="unknown"&&(m={kind:"asking",request:jt()});let{request:t}=m,e=()=>m.kind==="asking"&&m.request===t,r;try{r=await t}catch(n){throw e()&&(m={kind:"unknown"}),n}return e()?(m={kind:"known",login:r},st(r.loggedIn),r):b()}var it=()=>m.kind==="known"&&m.login.loggedIn;function M(){m={kind:"unknown"}}function at(t){let e=u.account?.navigate;e?e(t):window.location.assign(t)}var Ht=t=>t||u.account?.locale||(u.locale||"").split("-")[0]||"";function ct({returnTo:t,locale:e}){let r=new URL(`${ot()}/login`);r.searchParams.set("returnTo",t);let n=Ht(e);n&&r.searchParams.set("locale",n),u.country&&r.searchParams.set("country",u.country.toUpperCase()),at(r.toString())}async function ut(){let t=L.id();if(!(await b()).loggedIn||!t)return null;let e=await A("/cart",{method:"POST",body:{cartId:t}});return e.kind==="logged-out"?null:i(e.data.checkoutUrl)}async function dt(t){let e=await A("/logout",{method:"POST",body:{returnTo:t,cartId:L.id()}});M(),st(!1),P("account-logout",{});let r=e.kind==="answer"?i(e.data.logoutUrl):null;return r?(at(r),"redirected"):"stayed"}var Vt=window.Tether.__core["shopify-values.ts"],[lt,ur]=Vt;function E(t,e,r){d(t,c(e)).forEach(n=>{let o=g(n,e)??"";Object.hasOwn(r,o)&&S(n,r[o]===!0)})}var mt=(t,e)=>d(t,c(e)).concat(t.matches(c(e))?[t]:[]);var O=(t,e)=>Object.hasOwn(t,e)?t[e]:void 0;var Bt=(t,e)=>({title:t.title||t.name||"","variant-title":t.variantTitle||"",quantity:String(t.quantity),price:T(t.price),total:T(t.totalPrice),sku:t.sku||"",returnable:e===null?void 0:String(e)}),Gt=t=>t.tagName==="INPUT";function Jt(t,e,r){E(t,"order-line-show",{returnable:r>0}),d(t,c("return-quantity")).forEach(n=>{Gt(n)&&(n.max=String(r),n.min="0",n.value||(n.value="0"),n.disabled=r<1)}),d(t,`select${c("return-reason")}`).forEach(n=>{n.dataset.tetherFilled!==e.id&&(n.dataset.tetherFilled=e.id,(e.suggestedReturnReasonDefinitions?.nodes??[]).forEach(o=>{n.appendChild(new Option(o.name??"",o.id))}))})}function gt(t,e,r){R(t,e,(n,o)=>{let s=o.id,l=r&&s?r.get(s)??0:null;s&&(n.dataset.tetherLine=s);let h=Bt(o,l);mt(n,"order-line").forEach(y=>{let I=g(y,"order-line")??"";if(I==="image"){o.image&&N(y,o.image.url,o.image.altText||o.title||"");return}let V=O(h,I);V!==void 0&&x(y,V)}),s&&l!==null&&Jt(n,{...o,id:s},l)})}var F=10,v=50,ft=t=>typeof t=="number"&&Number.isInteger(t)&&t>=1&&t<=v,Kt=t=>K(t,"limit",{min:1,max:v,fallback:F}),Wt=t=>t.replace(/\?.*$/,"").replace(/^.*\//,"");function Xt(t){let e=u.account?.orderUrl;if(e)return e.replaceAll("{id}",encodeURIComponent(Wt(t.id)));let r=t.statusPageUrl;return r!==null&&lt(r)?r:null}var zt=t=>({name:t.name??"",date:J(t.processedAt),total:T(t.totalPrice),status:t.financialStatus?.toLowerCase(),fulfillment:t.fulfillmentStatus?.toLowerCase(),items:t.lineItems.nodes.map(e=>`${String(e.quantity)}\xD7 ${e.title??""}`).join(", ")});function Zt(t,e){let r=e.lineItems.nodes,n=Xt(e),o=zt(e);d(t,c("order-bind")).forEach(s=>{let l=g(s,"order-bind")??"";if(l==="url"){n&&s.setAttribute("href",n);return}if(l==="image"){let y=r.find(I=>I.image)?.image;y&&N(s,y.url,y.altText||r[0]?.title||"");return}let h=O(o,l);h!==void 0&&x(s,h)}),d(t,c("order-lines")).forEach(s=>{gt(s,r,null)}),g(t,"order-bind")==="url"&&n&&t.setAttribute("href",n)}async function pt(t,e){let r=d(t,c("orders")),n=r[0];if(!n)return;E(t,"show",{"orders-loading":!0,"orders-empty":!1});let o=Kt(n),s;try{s=await e(o)}catch(l){k(l,"orders"),s=null}E(t,"show",{"orders-loading":!1,"orders-empty":s?.length===0}),r.forEach(l=>{R(l,s??[],Zt)})}var Yt=["order","addresses","subscriptions","profile-form","address-form"],kt=it;function xt({returnTo:t=window.location.href,locale:e}={}){return new Promise(r=>{ct({returnTo:t,locale:e}),r()})}async function j(){let t=await b();return t.loggedIn?t.customer:null}async function At({first:t=F}={}){if(!ft(t))throw new w(`Customer accounts: orders() takes first from 1 to ${String(v)}`,{code:"INVALID"});let e=await A(`/orders?${new URLSearchParams({first:String(t)}).toString()}`);return e.kind==="logged-out"?[]:rt(e.data.orders)}async function Ot({returnTo:t=u.account?.logoutUrl||`${window.location.origin}/`}={}){await dt(t)==="stayed"&&await U(document)}async function Qt(){try{return(await b()).loggedIn?{kind:"logged-in"}:{kind:"logged-out"}}catch(t){return{kind:"unknown",error:t}}}var wt=t=>Yt.some(e=>d(t,c(e)).length>0);function te(t){d(t,c("account-link")).forEach(e=>{e.setAttribute("href",ee(g(e,"account-link")))})}function ee(t){let e=u.account,r=`https://${u.domain}/account`;return t==="payment"?e?.paymentUrl||e?.subscriptionsUrl||r:t==="subscriptions"&&e?.subscriptionsUrl||r}async function U(t=document){let e=await Qt();e.kind==="unknown"&&k(e.error,"account");let r=e.kind==="logged-in";if(d(t,c("show")).forEach(n=>{let o=g(n,"show");o==="logged-in"&&S(n,r),o==="logged-out"&&S(n,!r)}),te(t),e.kind==="unknown"&&wt(t)){(await f()).showUnavailable(t);return}r&&(await Pt(t),await Promise.all([pt(t,n=>At({first:n})),wt(t)?f().then(n=>n.renderPages(t)):null]))}async function Pt(t){let e=d(t,c("account-bind"));if(!e.length)return;let r;try{r=await j()}catch(o){k(o,"account");return}if(!r)return;let n={"first-name":r.firstName,"last-name":r.lastName,name:r.displayName,email:r.emailAddress?.emailAddress,address:r.defaultAddress?.formatted.join(", ")};e.forEach(o=>{let s=O(n,g(o,"account-bind")??"");s!=null&&x(o,s)})}var ht=null;function f(){return ht??(ht=W("account-pages").then(t=>(t.setup({serverFetch:A,customer:j,bindCustomer:Pt,reset:M}),t))),ht}var re=t=>f().then(e=>e.order(t)),ne=t=>f().then(e=>e.updateProfile(t)),oe=()=>f().then(t=>t.addresses()),se=(t,e)=>f().then(r=>r.saveAddress(t,e)),ie=t=>f().then(e=>e.deleteAddress(t)),ae=()=>f().then(t=>t.subscriptions()),ce=(t,e)=>f().then(r=>r.subscriptionAction(t,e)),ue=(t,e)=>f().then(r=>r.requestReturn(t,e));function de(t){let e=t.target;e instanceof window.Element&&(e.closest(c("account-login"))?(t.preventDefault(),xt().catch(r=>{k(r,"login")})):e.closest(c("account-logout"))&&(t.preventDefault(),Ot().catch(r=>{k(r,"logout")})))}function le(){let t=new URL(window.location.href),e=t.searchParams.get("account");if(Q(e))switch(t.searchParams.delete("account"),window.history.replaceState(window.history.state,"",t),e){case"in":P("account-login",{});break;case"expired":case"error":P("account-error",{error:e});break}}var yt=!1;async function me(t=document){if(yt){await U(t);return}yt=!0,document.addEventListener("click",de),le(),L.setCheckoutResolver(ut),await U(t),B("account",kt()?"logged in":"logged out")}function ge(t){return p(t)&&p(t.__core)&&p(t.__parts)}function Tt(t,e){let r=Reflect.get(window,"Tether");if(!ge(r))throw new Error(`tether.${t}.js runs after the Tether script, which loads it, and needs its window.Tether`);r.__parts[t]=e}Tt("account",H);})();