@occluze/tether 0.9.5 → 0.9.6

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 (41) hide show
  1. package/README.md +2 -2
  2. package/dist/esm/astro.js +1 -1
  3. package/dist/esm/chunks/{account-3CDDXYNB.js → account-GZLRHV5Z.js} +1 -1
  4. package/dist/esm/chunks/{account-pages-OWJGEQ4R.js → account-pages-32IFOHYU.js} +1 -1
  5. package/dist/esm/chunks/{analytics-HOGB5FTF.js → analytics-OIQ4TFGM.js} +1 -1
  6. package/dist/esm/chunks/chunk-33IQL4XN.js +1 -0
  7. package/dist/esm/chunks/{chunk-YLQXC6QC.js → chunk-AMCCY6T4.js} +1 -1
  8. package/dist/esm/chunks/chunk-COXH5OXQ.js +1 -0
  9. package/dist/esm/chunks/{chunk-646NGAEM.js → chunk-DQJRQBJG.js} +1 -1
  10. package/dist/esm/chunks/chunk-ESYKAFMU.js +1 -0
  11. package/dist/esm/chunks/chunk-HO6SNO3A.js +1 -0
  12. package/dist/esm/chunks/{chunk-RULKN77R.js → chunk-HZYW2TS3.js} +1 -1
  13. package/dist/esm/chunks/{chunk-TMPLGTXB.js → chunk-JJVUNGJZ.js} +1 -1
  14. package/dist/esm/chunks/{chunk-F3OXGENC.js → chunk-KW7UPDXI.js} +1 -1
  15. package/dist/esm/chunks/chunk-LZINCBME.js +1 -0
  16. package/dist/esm/chunks/{chunk-GZIUGZVZ.js → chunk-NOTL72DB.js} +1 -1
  17. package/dist/esm/chunks/{chunk-RGDDFRKU.js → chunk-TES2AUFT.js} +1 -1
  18. package/dist/esm/chunks/{chunk-DO7NXPVP.js → chunk-TUVLYVMF.js} +1 -1
  19. package/dist/esm/chunks/{chunk-HMSUZ3KF.js → chunk-U5BYAOTP.js} +1 -1
  20. package/dist/esm/chunks/{chunk-FRJ3O7I3.js → chunk-UDJ62MPR.js} +1 -1
  21. package/dist/esm/chunks/chunk-UU2VVXU2.js +1 -0
  22. package/dist/esm/chunks/{diagnose-ULHFOMN5.js → diagnose-QTIUBMXT.js} +1 -1
  23. package/dist/esm/chunks/{extras-FTL2WPUG.js → extras-56DC6CHI.js} +1 -1
  24. package/dist/esm/chunks/{lists-OFICUJ4T.js → lists-SE5VBQ4K.js} +1 -1
  25. package/dist/esm/chunks/{markets-ui-CZ6DAHEE.js → markets-ui-GQOUGLUL.js} +1 -1
  26. package/dist/esm/chunks/{search-U2KQ54KS.js → search-ZAB5GJOK.js} +1 -1
  27. package/dist/esm/index.js +1 -1
  28. package/dist/esm/server.js +1 -1
  29. package/dist/tether.js +46 -12
  30. package/dist/tether.min.js +1 -1
  31. package/dist/tether.min.js.map +3 -3
  32. package/dist/types/src/cart.d.ts +1 -1
  33. package/dist/types/src/dom.d.ts +5 -4
  34. package/dist/types/src/version.d.ts +1 -1
  35. package/package.json +1 -1
  36. package/dist/esm/chunks/chunk-7BUJ3442.js +0 -1
  37. package/dist/esm/chunks/chunk-P2CFLEGO.js +0 -1
  38. package/dist/esm/chunks/chunk-RBXZXOSD.js +0 -1
  39. package/dist/esm/chunks/chunk-SKYDS3DT.js +0 -1
  40. package/dist/esm/chunks/chunk-YW3ZIFWB.js +0 -1
  41. package/dist/esm/chunks/chunk-YYWS6QKJ.js +0 -1
@@ -1,4 +1,4 @@
1
- import{e as E}from"./chunk-646NGAEM.js";import{a as M}from"./chunk-RBXZXOSD.js";import{b as h,e as A}from"./chunk-RULKN77R.js";import{c as D}from"./chunk-YLQXC6QC.js";import"./chunk-GZIUGZVZ.js";import{d as P,e as $,i as v,m as p,n as l,o as m,q as d,y as S}from"./chunk-P2CFLEGO.js";import{C as w,c as k,x as a}from"./chunk-YW3ZIFWB.js";var R=new Set(["in-stock","out-of-stock","backorder","low-stock","plenty-in-stock","on-sale","not-on-sale","has-variants","single-variant","subscription-available","subscription-unavailable","subscription-only","one-time-available","subscription-selected","one-time-selected","has-savings","loading","ready","error","not-found","cart-empty","cart-filled","cart-has-subscription","cart-no-subscription","cart-has-discount","cart-error","cart-warning","list-empty","list-filled","search-empty","search-results","logged-in","logged-out","orders-empty","orders-loading","addresses-loading","addresses-empty","addresses-error","subscriptions-loading","subscriptions-empty","subscriptions-error"]),N=new Set(["title","description","description-text","vendor","type","handle","published-at","price","total-price","compare-at-price","unit-price","min-price","max-price","discount-percentage","discount-amount","variant-title","variant-id","sku","barcode","stock","quantity","featured-image","variant-image","images","tags","link","url","one-time-price","subscription-price","subscription-savings","subscription-savings-amount","checkout-charge","plan-name","plan-description","plan-group","option-value","swatch","image"]),x=new Set(`account account-bind account-link account-login account-logout add-label add-to-cart adding-text
1
+ import{e as E}from"./chunk-DQJRQBJG.js";import{a as M}from"./chunk-UU2VVXU2.js";import{b as h,e as A}from"./chunk-HZYW2TS3.js";import{c as D}from"./chunk-AMCCY6T4.js";import"./chunk-NOTL72DB.js";import{d as P,e as $,i as v,m as p,n as l,o as m,q as d,y as S}from"./chunk-HO6SNO3A.js";import{C as w,c as k,x as a}from"./chunk-ESYKAFMU.js";var R=new Set(["in-stock","out-of-stock","backorder","low-stock","plenty-in-stock","on-sale","not-on-sale","has-variants","single-variant","subscription-available","subscription-unavailable","subscription-only","one-time-available","subscription-selected","one-time-selected","has-savings","loading","ready","error","not-found","cart-empty","cart-filled","cart-has-subscription","cart-no-subscription","cart-has-discount","cart-error","cart-warning","list-empty","list-filled","search-empty","search-results","logged-in","logged-out","orders-empty","orders-loading","addresses-loading","addresses-empty","addresses-error","subscriptions-loading","subscriptions-empty","subscriptions-error"]),N=new Set(["title","description","description-text","vendor","type","handle","published-at","price","total-price","compare-at-price","unit-price","min-price","max-price","discount-percentage","discount-amount","variant-title","variant-id","sku","barcode","stock","quantity","featured-image","variant-image","images","tags","link","url","one-time-price","subscription-price","subscription-savings","subscription-savings-amount","checkout-charge","plan-name","plan-description","plan-group","option-value","swatch","image"]),x=new Set(`account account-bind account-link account-login account-logout add-label add-to-cart adding-text
2
2
  always-enabled bind cart-checkout-charge cart-clear cart-close cart-count cart-discounts cart-drawer cart-label cart-lines
3
3
  cart-note cart-open cart-subtotal cart-total cart-warning checkout code collection collection-bind countries country
4
4
  country-bind country-label country-select default-plan default-purchase discount discount-code discount-form discount-input
@@ -1 +1 @@
1
- import{c as S}from"./chunk-FRJ3O7I3.js";import{a as k,b as E}from"./chunk-DO7NXPVP.js";import{a as v}from"./chunk-SKYDS3DT.js";import{h as p}from"./chunk-7BUJ3442.js";import"./chunk-F3OXGENC.js";import"./chunk-646NGAEM.js";import"./chunk-RBXZXOSD.js";import"./chunk-RULKN77R.js";import"./chunk-YLQXC6QC.js";import"./chunk-GZIUGZVZ.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-P2CFLEGO.js";import{E as d,F as s,x as l}from"./chunk-YW3ZIFWB.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-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 +1 @@
1
- import{a as R}from"./chunk-YYWS6QKJ.js";import"./chunk-RBXZXOSD.js";import{b as w,d as I,g as T}from"./chunk-RULKN77R.js";import{a as H,b as m,d as h}from"./chunk-YLQXC6QC.js";import{c as q,h as x,i as M,j as F}from"./chunk-GZIUGZVZ.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-P2CFLEGO.js";import{F as L,b as l,x as y}from"./chunk-YW3ZIFWB.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-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 +1 @@
1
- import{a as E,c as P,d as k,e as T,f as p,g as A}from"./chunk-TMPLGTXB.js";import{a as I}from"./chunk-YYWS6QKJ.js";import{d as F,e as x}from"./chunk-DO7NXPVP.js";import"./chunk-SKYDS3DT.js";import{h as u}from"./chunk-7BUJ3442.js";import"./chunk-F3OXGENC.js";import"./chunk-646NGAEM.js";import"./chunk-RBXZXOSD.js";import"./chunk-RULKN77R.js";import{e as w}from"./chunk-YLQXC6QC.js";import"./chunk-GZIUGZVZ.js";import{a as L,d as h,i as b,m as s,n as C,o as v,u as z}from"./chunk-P2CFLEGO.js";import{F as y,o as f,p as g,x as a}from"./chunk-YW3ZIFWB.js";var _="{name} ({currency})",j="name",d=null;function B(){d=null}var D="query TetherLocalization{localization{country{isoCode name currency{isoCode symbol}}language{isoCode name}availableCountries{isoCode name currency{isoCode symbol}availableLanguages{isoCode name}}}}",O={isoCode:"string",name:"string",currency:"object"},H=h({localization:{country:O,availableCountries:[O]}});function R(){return d??(d=b(D,{},H).then(e=>e.localization,e=>{throw d=null,e})),d}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 Y=(e,n)=>e.replace(/\{(name|code|currency|symbol)\}/g,(o,i)=>U(n,i));function q(e,n,o){let i=e.getAttribute(s("country-label"))||_,r=(e.getAttribute(s("countries"))||"").toUpperCase().split(/[\s,]+/).filter(Boolean),c=r.length?r.map(t=>n.find(l=>l.isoCode===t)).filter(t=>t!==void 0):n;e.replaceChildren(...c.map(t=>new Option(Y(i,t),t.isoCode))),e.value=o,e.value!==o&&(e.selectedIndex=-1),e.disabled=c.length<2&&!e.hasAttribute(s("always-enabled"))}function $(e,n,o){let i=(a.country||o.country.isoCode).toUpperCase(),r=[...o.availableCountries].sort((t,l)=>t.name.localeCompare(l.name,a.locale||void 0)),c=r.find(t=>t.isoCode===i)??o.country;e.forEach(t=>{q(t,r,i)}),n.forEach(t=>{t.textContent=U(c,v(t,"country-bind")||j)})}function S(e=document){let n=p(e,`select${C("country-select")}`),o=p(e,C("country-bind"));return!n.length&&!o.length?Promise.resolve():R().then(i=>{$(n,o,i)}).catch(i=>{y(i,"country select")})}var Q=e=>Object.values(a.markets?.locales??{}).find(n=>f(n.country)===e);function V(e,n){return e!==void 0?g(e):n?n.language?g(n.language):void 0:a.language}function Z(e){w();let n=[];return u.id()&&n.push(u.setBuyerIdentity({countryCode:e},{create:!1}).catch(o=>{y(o,"cart country")})),T(),k.forEach(o=>n.push(o.load())),P.forEach(o=>{o.closest(I())||(E.delete(o),A(o))}),n}async function re(e,{language:n,locale:o,remember:i=!0}={}){let r=f(e);if(!r)throw new L(`Not a country code: ${e}`,{code:"INVALID_COUNTRY"});let c=Q(r),t=o||c?.locale,l=t||a.locale,m=V(n,c),M=r!==a.country||m!==a.language||l!==a.locale;if(a.country=r,a.language=m||void 0,a.locale=l,i&&x({country:r,language:m,locale:t}),!M)return S(),u.state;n!==void 0&&B();let N=Z(r);return S(),z("country-changed",{country:r,language:a.language}),await Promise.all(N),u.state}export{F as detectMarket,R as getLocalization,S as renderCountrySelects,re as setCountry};
1
+ import{a as E,c as P,d as k,e as T,f as p,g as A}from"./chunk-JJVUNGJZ.js";import{a as I}from"./chunk-LZINCBME.js";import{d as F,e as x}from"./chunk-TUVLYVMF.js";import"./chunk-33IQL4XN.js";import{h as u}from"./chunk-COXH5OXQ.js";import"./chunk-KW7UPDXI.js";import"./chunk-DQJRQBJG.js";import"./chunk-UU2VVXU2.js";import"./chunk-HZYW2TS3.js";import{e as w}from"./chunk-AMCCY6T4.js";import"./chunk-NOTL72DB.js";import{a as L,d as h,i as b,m as s,n as C,o as v,u as z}from"./chunk-HO6SNO3A.js";import{F as y,o as f,p as g,x as a}from"./chunk-ESYKAFMU.js";var _="{name} ({currency})",j="name",d=null;function B(){d=null}var D="query TetherLocalization{localization{country{isoCode name currency{isoCode symbol}}language{isoCode name}availableCountries{isoCode name currency{isoCode symbol}availableLanguages{isoCode name}}}}",O={isoCode:"string",name:"string",currency:"object"},H=h({localization:{country:O,availableCountries:[O]}});function R(){return d??(d=b(D,{},H).then(e=>e.localization,e=>{throw d=null,e})),d}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 Y=(e,n)=>e.replace(/\{(name|code|currency|symbol)\}/g,(o,i)=>U(n,i));function q(e,n,o){let i=e.getAttribute(s("country-label"))||_,r=(e.getAttribute(s("countries"))||"").toUpperCase().split(/[\s,]+/).filter(Boolean),c=r.length?r.map(t=>n.find(l=>l.isoCode===t)).filter(t=>t!==void 0):n;e.replaceChildren(...c.map(t=>new Option(Y(i,t),t.isoCode))),e.value=o,e.value!==o&&(e.selectedIndex=-1),e.disabled=c.length<2&&!e.hasAttribute(s("always-enabled"))}function $(e,n,o){let i=(a.country||o.country.isoCode).toUpperCase(),r=[...o.availableCountries].sort((t,l)=>t.name.localeCompare(l.name,a.locale||void 0)),c=r.find(t=>t.isoCode===i)??o.country;e.forEach(t=>{q(t,r,i)}),n.forEach(t=>{t.textContent=U(c,v(t,"country-bind")||j)})}function S(e=document){let n=p(e,`select${C("country-select")}`),o=p(e,C("country-bind"));return!n.length&&!o.length?Promise.resolve():R().then(i=>{$(n,o,i)}).catch(i=>{y(i,"country select")})}var Q=e=>Object.values(a.markets?.locales??{}).find(n=>f(n.country)===e);function V(e,n){return e!==void 0?g(e):n?n.language?g(n.language):void 0:a.language}function Z(e){w();let n=[];return u.id()&&n.push(u.setBuyerIdentity({countryCode:e},{create:!1}).catch(o=>{y(o,"cart country")})),T(),k.forEach(o=>n.push(o.load())),P.forEach(o=>{o.closest(I())||(E.delete(o),A(o))}),n}async function re(e,{language:n,locale:o,remember:i=!0}={}){let r=f(e);if(!r)throw new L(`Not a country code: ${e}`,{code:"INVALID_COUNTRY"});let c=Q(r),t=o||c?.locale,l=t||a.locale,m=V(n,c),M=r!==a.country||m!==a.language||l!==a.locale;if(a.country=r,a.language=m||void 0,a.locale=l,i&&x({country:r,language:m,locale:t}),!M)return S(),u.state;n!==void 0&&B();let N=Z(r);return S(),z("country-changed",{country:r,language:a.language}),await Promise.all(N),u.state}export{F as detectMarket,R as getLocalization,S as renderCountrySelects,re as setCountry};
@@ -1 +1 @@
1
- import{f as k}from"./chunk-TMPLGTXB.js";import"./chunk-YYWS6QKJ.js";import"./chunk-SKYDS3DT.js";import"./chunk-7BUJ3442.js";import"./chunk-F3OXGENC.js";import"./chunk-646NGAEM.js";import"./chunk-RBXZXOSD.js";import"./chunk-RULKN77R.js";import"./chunk-YLQXC6QC.js";import"./chunk-GZIUGZVZ.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-P2CFLEGO.js";import{D as E,F as A,b as s,x as u}from"./chunk-YW3ZIFWB.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-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};
package/dist/esm/index.js CHANGED
@@ -1 +1 @@
1
- import{a as at,b as ct,c as ut}from"./chunks/chunk-HMSUZ3KF.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-TMPLGTXB.js";import{a as dt,b as mt}from"./chunks/chunk-YYWS6QKJ.js";import{a as it,b as st,c as h}from"./chunks/chunk-FRJ3O7I3.js";import"./chunks/chunk-DO7NXPVP.js";import{a as et}from"./chunks/chunk-SKYDS3DT.js";import{a as K,e as Z,h as s}from"./chunks/chunk-7BUJ3442.js";import"./chunks/chunk-F3OXGENC.js";import{l as Q}from"./chunks/chunk-646NGAEM.js";import{a as u,b as lt}from"./chunks/chunk-RBXZXOSD.js";import{b as tt}from"./chunks/chunk-RULKN77R.js";import{a as W,b as X,c as Y,e as J}from"./chunks/chunk-YLQXC6QC.js";import"./chunks/chunk-GZIUGZVZ.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-P2CFLEGO.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-YW3ZIFWB.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.5";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-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,2 +1,2 @@
1
- import{b as Q,f as G,g as H}from"./chunks/chunk-F3OXGENC.js";import{e as O,f as v,g as w,i as F,l as q}from"./chunks/chunk-646NGAEM.js";import{a as M,c as T,e as V,g as J,h as B,i as K,j}from"./chunks/chunk-GZIUGZVZ.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-P2CFLEGO.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-YW3ZIFWB.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}
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
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};
package/dist/tether.js CHANGED
@@ -319,14 +319,20 @@
319
319
  }
320
320
  var readOnlyViews = /* @__PURE__ */ new WeakMap();
321
321
  var READ_ONLY = {
322
- get(object, key) {
323
- const value = Reflect.get(object, key);
324
- return typeof value === "object" && value !== null ? readOnlyView(value) : value;
322
+ get: (object, key) => viewOf(Reflect.get(object, key)),
323
+ // A descriptor's value is the view too, so `Object.getOwnPropertyDescriptor` doesn't hand out the live object.
324
+ getOwnPropertyDescriptor(object, key) {
325
+ const descriptor = Reflect.getOwnPropertyDescriptor(object, key);
326
+ if (descriptor) descriptor.value = viewOf(descriptor.value);
327
+ return descriptor;
325
328
  },
326
329
  set: (_object, key) => refuseChange(key),
327
330
  deleteProperty: (_object, key) => refuseChange(key),
328
331
  defineProperty: (_object, key) => refuseChange(key)
329
332
  };
333
+ function viewOf(value) {
334
+ return typeof value === "object" && value !== null ? readOnlyView(value) : value;
335
+ }
330
336
  function readOnlyView(target) {
331
337
  let view = readOnlyViews.get(target);
332
338
  if (!view) {
@@ -1199,11 +1205,27 @@
1199
1205
  const input = el.querySelector(CHECKABLE);
1200
1206
  if (input && isInput(input)) input.checked = selected;
1201
1207
  }
1202
- function setUnavailable(el, unavailable) {
1208
+ var UNAVAILABLE_NOTE = "tether-unavailable";
1209
+ function describeUnavailable(control, unavailable) {
1210
+ if (unavailable && !document.getElementById(UNAVAILABLE_NOTE)) {
1211
+ const note = document.createElement("span");
1212
+ note.id = UNAVAILABLE_NOTE;
1213
+ note.hidden = true;
1214
+ note.textContent = "Unavailable";
1215
+ document.body.append(note);
1216
+ }
1217
+ const ids = (control.getAttribute("aria-describedby") ?? "").split(" ").filter((id) => id && id !== UNAVAILABLE_NOTE);
1218
+ if (unavailable) ids.push(UNAVAILABLE_NOTE);
1219
+ if (ids.length) control.setAttribute("aria-describedby", ids.join(" "));
1220
+ else control.removeAttribute("aria-describedby");
1221
+ }
1222
+ function setUnavailable(el, unavailable, choosing) {
1203
1223
  el.classList.toggle("is-unavailable", unavailable);
1204
1224
  const isControl = chosenState(el) !== null || isInput(el);
1205
1225
  const control = isControl ? el : el.querySelector(CHECKABLE);
1206
- control?.setAttribute("aria-disabled", String(unavailable));
1226
+ if (!control) return;
1227
+ if (choosing === "picks-closest") describeUnavailable(control, unavailable);
1228
+ else control.setAttribute("aria-disabled", String(unavailable));
1207
1229
  }
1208
1230
  var layoutTimer;
1209
1231
  var pageGlobal = (name) => Reflect.get(window, name);
@@ -1508,6 +1530,13 @@
1508
1530
  var announcedOpen = false;
1509
1531
  var returnFocus = null;
1510
1532
  var classWatcher = null;
1533
+ function callHook(hook2, drawers2, name) {
1534
+ try {
1535
+ hook2?.(drawers2);
1536
+ } catch (error) {
1537
+ reportError(error, name);
1538
+ }
1539
+ }
1511
1540
  var isFocusable = (el) => el !== null && "focus" in el;
1512
1541
  var focusables = (drawer) => qsa(drawer, FOCUSABLE).filter((el) => el.offsetParent !== null || el === document.activeElement);
1513
1542
  var drawers = () => qsa(document, sel("cart-drawer"));
@@ -1559,7 +1588,7 @@
1559
1588
  focusInto(first);
1560
1589
  }, FOCUS_AFTER_OPEN_MS);
1561
1590
  }
1562
- cfg.onCartOpen?.(opened);
1591
+ callHook(cfg.onCartOpen, opened, "onCartOpen");
1563
1592
  emit("cart-toggled", { open: true });
1564
1593
  }
1565
1594
  function announceClosed(all, hadFocus) {
@@ -1567,7 +1596,7 @@
1567
1596
  syncDrawerAria();
1568
1597
  if (hadFocus && returnFocus?.isConnected) returnFocus.focus({ preventScroll: true });
1569
1598
  returnFocus = null;
1570
- cfg.onCartClose?.(all);
1599
+ callHook(cfg.onCartClose, all, "onCartClose");
1571
1600
  emit("cart-toggled", { open: false });
1572
1601
  }
1573
1602
  function openCart() {
@@ -2630,10 +2659,11 @@
2630
2659
  /**
2631
2660
  * Adds a code. A code Shopify doesn't accept is removed again, so it doesn't warn on every later change.
2632
2661
  *
2633
- * @throws {TetherError} `INVALID_DISCOUNT` (rejected) when Shopify doesn't accept the code.
2662
+ * @throws {TetherError} `INVALID_DISCOUNT` (rejected) when Shopify doesn't accept the code, or it is blank.
2634
2663
  */
2635
2664
  async applyDiscount(typed) {
2636
2665
  const code = typed.trim();
2666
+ if (!code) throw new TetherError("No discount code", { code: "INVALID_DISCOUNT" });
2637
2667
  const cart = await Cart.setDiscountCodes((current) => [.../* @__PURE__ */ new Set([...current, code])]);
2638
2668
  const wanted = code.toLowerCase();
2639
2669
  const applied = (cart?.discountCodes ?? []).find((discount) => discount.code.toLowerCase() === wanted);
@@ -2904,7 +2934,7 @@
2904
2934
  const value = get(node, "option-value") ?? "";
2905
2935
  setSelected(node, view.selected[name] === value);
2906
2936
  const unavailable = !isValueAvailable(product, view.selected, name, value);
2907
- setUnavailable(node, unavailable);
2937
+ setUnavailable(node, unavailable, "picks-closest");
2908
2938
  node.setAttribute("data-unavailable", unavailable ? "true" : "false");
2909
2939
  });
2910
2940
  });
@@ -2924,12 +2954,16 @@
2924
2954
  }
2925
2955
  const mode = get(el, "purchase");
2926
2956
  setSelected(el, mode === purchase.kind);
2927
- setUnavailable(el, mode === "subscription" ? !view.subscriptionAvailable : scope.product.requiresSellingPlan);
2957
+ setUnavailable(
2958
+ el,
2959
+ mode === "subscription" ? !view.subscriptionAvailable : scope.product.requiresSellingPlan,
2960
+ "does-nothing"
2961
+ );
2928
2962
  });
2929
2963
  scope.$(sel("plan-value")).forEach((node) => {
2930
2964
  const planId = get(node, "plan-value") ?? "";
2931
2965
  setSelected(node, line.kind === "subscription" && planId === line.planId);
2932
- setUnavailable(node, !allocationFor(variant, planId));
2966
+ setUnavailable(node, !allocationFor(variant, planId), "does-nothing");
2933
2967
  const plan = scope.plans.find((candidate) => candidate.id === planId);
2934
2968
  const texts = planBindTexts(variant, planId, plan, FORMAT);
2935
2969
  qsa(node, sel("plan-bind")).forEach((el) => {
@@ -3564,7 +3598,7 @@
3564
3598
  }
3565
3599
 
3566
3600
  // src/version.ts
3567
- var VERSION = "0.9.5";
3601
+ var VERSION = "0.9.6";
3568
3602
 
3569
3603
  // src/lazy-iife.ts
3570
3604
  var coreModules = {