@occluze/tether 0.9.2 → 0.9.4

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 (72) hide show
  1. package/README.md +1 -1
  2. package/dist/esm/astro.js +2 -2
  3. package/dist/esm/chunks/account-2467DHLU.js +1 -0
  4. package/dist/esm/chunks/{account-pages-FIXSWJH7.js → account-pages-X7U3E7D7.js} +1 -1
  5. package/dist/esm/chunks/{analytics-MO2ZWBOD.js → analytics-TF7M4KI2.js} +1 -1
  6. package/dist/esm/chunks/{chunk-7CRTJV25.js → chunk-4QINHHE4.js} +1 -1
  7. package/dist/esm/chunks/chunk-5TS6IBBB.js +1 -0
  8. package/dist/esm/chunks/{chunk-BVO7KK2M.js → chunk-646NGAEM.js} +1 -1
  9. package/dist/esm/chunks/chunk-67MCLHFS.js +1 -0
  10. package/dist/esm/chunks/{chunk-FWMPL6PR.js → chunk-6FWNC7QH.js} +1 -1
  11. package/dist/esm/chunks/{chunk-IJAMRI33.js → chunk-AHYDU7Z6.js} +1 -1
  12. package/dist/esm/chunks/{chunk-SZRDO62E.js → chunk-B2X6ZOKA.js} +1 -1
  13. package/dist/esm/chunks/chunk-C2GKO34C.js +1 -0
  14. package/dist/esm/chunks/chunk-EYVBEFKK.js +1 -0
  15. package/dist/esm/chunks/{chunk-DM5LEAWM.js → chunk-F3OXGENC.js} +1 -1
  16. package/dist/esm/chunks/{chunk-OENVX4NY.js → chunk-HEK66LYK.js} +1 -1
  17. package/dist/esm/chunks/chunk-I7XE7GQR.js +1 -0
  18. package/dist/esm/chunks/chunk-KIZBET7N.js +1 -0
  19. package/dist/esm/chunks/chunk-UJYL5G7T.js +1 -0
  20. package/dist/esm/chunks/{chunk-CRKJ2VEX.js → chunk-UM37ZVSP.js} +1 -1
  21. package/dist/esm/chunks/chunk-YW3ZIFWB.js +1 -0
  22. package/dist/esm/chunks/{diagnose-XSZPWEG7.js → diagnose-AOSBLXOJ.js} +1 -1
  23. package/dist/esm/chunks/{extras-DZIOTZ3H.js → extras-THTXX76O.js} +1 -1
  24. package/dist/esm/chunks/lists-UJMD7BCQ.js +1 -0
  25. package/dist/esm/chunks/{markets-ui-DEEYV4KT.js → markets-ui-PTAY3FHU.js} +1 -1
  26. package/dist/esm/chunks/search-G2SRQXDG.js +1 -0
  27. package/dist/esm/index.js +1 -1
  28. package/dist/esm/server.js +2 -2
  29. package/dist/tether.account-pages.js +3 -3
  30. package/dist/tether.account-pages.min.js +1 -1
  31. package/dist/tether.account.js +20 -20
  32. package/dist/tether.account.min.js +1 -1
  33. package/dist/tether.analytics.js +2 -2
  34. package/dist/tether.analytics.min.js +1 -1
  35. package/dist/tether.diagnose.js +2 -2
  36. package/dist/tether.diagnose.min.js +1 -1
  37. package/dist/tether.extras.js +1 -1
  38. package/dist/tether.extras.min.js +1 -1
  39. package/dist/tether.js +248 -129
  40. package/dist/tether.lists.js +12 -8
  41. package/dist/tether.lists.min.js +1 -1
  42. package/dist/tether.markets.js +2 -2
  43. package/dist/tether.markets.min.js +1 -1
  44. package/dist/tether.min.js +1 -1
  45. package/dist/tether.min.js.map +4 -4
  46. package/dist/tether.search.js +60 -23
  47. package/dist/tether.search.min.js +1 -1
  48. package/dist/types/server/src/shared/metafield-ref.d.ts +15 -0
  49. package/dist/types/src/account/server-client.d.ts +2 -1
  50. package/dist/types/src/analytics-queue.d.ts +9 -0
  51. package/dist/types/src/cart/checkout.d.ts +2 -2
  52. package/dist/types/src/cart/drawer.d.ts +9 -4
  53. package/dist/types/src/cart/store.d.ts +2 -0
  54. package/dist/types/src/cart.d.ts +1 -1
  55. package/dist/types/src/client.d.ts +6 -0
  56. package/dist/types/src/dom.d.ts +25 -1
  57. package/dist/types/src/index.d.ts +1 -1
  58. package/dist/types/src/search.d.ts +1 -1
  59. package/dist/types/src/shopify-values.d.ts +2 -0
  60. package/dist/types/src/version.d.ts +1 -1
  61. package/package.json +1 -1
  62. package/dist/esm/chunks/account-XBGNTM7V.js +0 -1
  63. package/dist/esm/chunks/chunk-2J3MTS3E.js +0 -1
  64. package/dist/esm/chunks/chunk-4FR3CUO2.js +0 -1
  65. package/dist/esm/chunks/chunk-7ZXEVDOS.js +0 -1
  66. package/dist/esm/chunks/chunk-FI4NIWAD.js +0 -1
  67. package/dist/esm/chunks/chunk-H6IORH7O.js +0 -1
  68. package/dist/esm/chunks/chunk-OATTAXPO.js +0 -1
  69. package/dist/esm/chunks/chunk-OJAV2I3C.js +0 -1
  70. package/dist/esm/chunks/chunk-Y3NKKN2O.js +0 -1
  71. package/dist/esm/chunks/lists-OJGSVQMM.js +0 -1
  72. package/dist/esm/chunks/search-A6HF5PMJ.js +0 -1
@@ -21,11 +21,11 @@
21
21
 
22
22
  // tether-core:client.ts
23
23
  var m2 = window.Tether.__core["client.ts"];
24
- var [endpoint, gql, matches, orNull, shaped, TetherError] = m2;
24
+ var [endpoint, gql, matches, orNull, shaped, TetherError, withTimeout] = m2;
25
25
 
26
26
  // tether-core:dom.ts
27
27
  var m3 = window.Tether.__core["dom.ts"];
28
- var [ANALYTICS_EVENTS, attr, attributesFromJson, busy, emit, formatDate, formatMoney, get, has, hasTemplate, isOwnEvent, notifyLayoutChanged, parseJSONAttr, productUrl, qsa, repeat, scoped, sel, setImage, setStoreHtml, setText, show] = m3;
28
+ var [ANALYTICS_EVENTS, attr, attributesFromJson, busy, emit, formatDate, formatMoney, get, has, hasTemplate, integerAttribute, isOwnEvent, notifyLayoutChanged, parseJSONAttr, productUrl, qsa, repeat, scoped, sel, setImage, setStoreHtml, setText, show] = m3;
29
29
 
30
30
  // tether-core:fragments.ts
31
31
  var m4 = window.Tether.__core["fragments.ts"];
@@ -71,6 +71,10 @@
71
71
  var m7 = window.Tether.__core["collection.ts"];
72
72
  var [listSelector] = m7;
73
73
 
74
+ // tether-core:shopify-values.ts
75
+ var m8 = window.Tether.__core["shopify-values.ts"];
76
+ var [isHttpsUrl, MAX_CONNECTION_SIZE] = m8;
77
+
74
78
  // src/lists.ts
75
79
  var URL_QUERY_SOURCE = "url:";
76
80
  var COLLECTION_QUERY = `query TetherCollection($handle:String!,$first:Int!,$after:String,$sortKey:ProductCollectionSortKeys,$reverse:Boolean,$filters:[ProductFilter!]){collection(handle:$handle){${collectionFields()} products(first:$first,after:$after,sortKey:$sortKey,reverse:$reverse,filters:$filters){nodes{...TetherProduct}pageInfo{hasNextPage endCursor}}}}`;
@@ -126,7 +130,7 @@
126
130
  return list;
127
131
  }
128
132
  var isElement = (target) => target instanceof window.Element;
129
- var toLimit = (raw) => parseInt(raw ?? "", 10) || void 0;
133
+ var listLimit = (root, fallback) => integerAttribute(root, "limit", { min: 1, max: MAX_CONNECTION_SIZE, fallback });
130
134
  var toIntent = (raw) => raw === "COMPLEMENTARY" ? "COMPLEMENTARY" : "RELATED";
131
135
  var ListScope = class {
132
136
  constructor(root) {
@@ -151,9 +155,10 @@
151
155
  /** The collection or search query of the list's attributes. */
152
156
  options() {
153
157
  const { root } = this;
154
- const query = { reverse: get(root, "reverse") === "true" };
155
- const first = toLimit(get(root, "limit"));
156
- if (first) query.first = first;
158
+ const query = {
159
+ reverse: get(root, "reverse") === "true",
160
+ first: listLimit(root, cfg.collectionFirst)
161
+ };
157
162
  const sortKey = get(root, "sort");
158
163
  if (sortKey) query.sortKey = sortKey;
159
164
  if (has(root, "collection")) {
@@ -185,8 +190,7 @@
185
190
  if (has(this.root, "recommendations")) {
186
191
  const recommendations = await this.loadRecommendations();
187
192
  if (stale()) return;
188
- const limit = toLimit(get(this.root, "limit"));
189
- this.products = limit ? recommendations.slice(0, limit) : recommendations;
193
+ this.products = recommendations.slice(0, listLimit(this.root, recommendations.length));
190
194
  } else {
191
195
  const page = await getProducts({ ...this.options(), after: more ? this.pageInfo?.endCursor ?? null : null });
192
196
  if (stale()) return;
@@ -1 +1 @@
1
- (()=>{var O=Object.defineProperty;var et=(e,t,o)=>t in e?O(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var ot=(e,t)=>{for(var o in t)O(e,o,{get:t[o],enumerable:!0})};var a=(e,t,o)=>et(e,typeof t!="symbol"?t+"":t,o);var S={};ot(S,{getProducts:()=>J,getRecommendations:()=>Z,loadList:()=>ht});var rt=window.Tether.__core["config.ts"],[b,yt,Pt,Tt,Et,A,xt]=rt;var nt=window.Tether.__core["client.ts"],[$t,l,st,P,u,T]=nt;var it=window.Tether.__core["dom.ts"],[Ct,E,kt,L,p,Nt,St,i,m,_t,Ot,K,bt,At,Lt,M,U,c,q,F,x,f]=it;var ct=window.Tether.__core["fragments.ts"],[D]=ct;var at=window.Tether.__core["loader.ts"],[Ut,qt,v,h,g]=at;function d(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}var R={amount:"string",currencyCode:"string"},H={id:"string",handle:"string",title:"string",options:["object"],images:{nodes:["object"]},priceRange:{minVariantPrice:R,maxVariantPrice:R},variants:{nodes:[{id:"string",price:R,selectedOptions:["object"]}]}},Q={nodes:[H],pageInfo:{hasNextPage:"boolean"}};var Y=u({collection:P({handle:"string",products:Q})}),j=u({products:Q}),z=u({productRecommendations:P([H])});var dt=window.Tether.__core["status.ts"],[jt,$,I,C]=dt;var lt=window.Tether.__core["collection.ts"],[k]=lt;var B="url:",ut=`query TetherCollection($handle:String!,$first:Int!,$after:String,$sortKey:ProductCollectionSortKeys,$reverse:Boolean,$filters:[ProductFilter!]){collection(handle:$handle){${D()} products(first:$first,after:$after,sortKey:$sortKey,reverse:$reverse,filters:$filters){nodes{...TetherProduct}pageInfo{hasNextPage endCursor}}}}`,pt="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 J({collection:e,query:t,first:o=b.collectionFirst,after:r=null,sortKey:n,reverse:s=!1,filters:X}={}){if(e){let _=await l(g(ut),{handle:e,first:o,after:r,sortKey:n||void 0,reverse:s,filters:X??void 0},Y);if(!_.collection)throw new T(`Collection not found: ${e}`,{code:"NOT_FOUND"});let{products:y,...tt}=_.collection;return y.nodes.forEach(h),{collection:tt,products:y.nodes,pageInfo:y.pageInfo}}let w=await l(g(pt),{first:o,after:r,query:t||void 0,sortKey:n||void 0,reverse:s},j);return w.products.nodes.forEach(h),{collection:null,products:w.products.nodes,pageInfo:w.products.pageInfo}}async function Z(e,t="RELATED"){let o=v(typeof e=="object"?e?.id:e);if(!o)throw new T("No product for recommendations",{code:"NOT_FOUND"});let r=o.startsWith("gid://"),s=(await l(g(`query TetherRecs(${r?"$id: ID!":"$handle: String!"},$intent:ProductRecommendationIntent){productRecommendations(${r?"productId: $id":"productHandle: $handle"},intent:$intent){...TetherProduct}}`),r?{id:o,intent:t}:{handle:o,intent:t},z)).productRecommendations??[];return s.forEach(h),s}var mt=e=>e instanceof window.Element,V=e=>parseInt(e??"",10)||void 0,ft=e=>e==="COMPLEMENTARY"?"COMPLEMENTARY":"RELATED",N=class{constructor(t){a(this,"root");a(this,"products",[]);a(this,"pageInfo",null);a(this,"collection",null);a(this,"loadToken",0);this.root=t,t.addEventListener("click",o=>{if(!mt(o.target))return;let r=o.target.closest(c("load-more"));r?.closest(k())===t&&(o.preventDefault(),L(r,()=>this.load(!0)))})}$(t){return U(this.root,t,k())}options(){let{root:t}=this,o={reverse:i(t,"reverse")==="true"},r=V(i(t,"limit"));r&&(o.first=r);let n=i(t,"sort");if(n&&(o.sortKey=n),m(t,"collection"))return o.collection=i(t,"collection")??"",o;let s=i(t,"products")??"";return o.query=s.startsWith(B)?new URL(window.location.href).searchParams.get(s.slice(B.length))||"":s,o}async loadRecommendations(){let{key:t}=I(this.root,window.location,"recommendations"),o=this.root.closest(c("product"));return!t&&o&&({key:t}=I(o)),Z(t,ft(i(this.root,"intent")))}async load(t=!1){this.loadToken+=1;let o=this.loadToken,r=()=>o!==this.loadToken;try{if(m(this.root,"recommendations")){let n=await this.loadRecommendations();if(r())return;let s=V(i(this.root,"limit"));this.products=s?n.slice(0,s):n}else{let n=await J({...this.options(),after:t?this.pageInfo?.endCursor??null:null});if(r())return;this.collection=n.collection,this.pageInfo=n.pageInfo,this.products=t?[...this.products,...n.products]:n.products}this.render(),C(this.root,"ready"),p("list-ready",{products:this.products,collection:this.collection},this.root)}catch(n){if(r())return;t||C(this.root,$(n)?"not-found":"error",n),$(n)&&m(this.root,"recommendations")||A(n,"list load failed"),p("error",{error:n,context:"list"},this.root)}}render(){let{collection:t}=this;this.$(c("collection-bind")).forEach(r=>{switch(i(r,"collection-bind")??""){case"title":x(r,t?.title??"");break;case"description":F(r,t?.descriptionHtml);break;case"image":q(r,t?.image?.url,t?.image?.altText||t?.title);break;case"count":x(r,this.products.length);break}}),this.$(c("list")).forEach(r=>{M(r,this.products,(n,s)=>{n.setAttribute(E("product"),s.handle),n.removeAttribute(E("state"))}),p("list-rendered",{container:r},this.root)});let o=this.products.length===0;this.$(c("show")).forEach(r=>{let n=i(r,"show");n==="list-empty"&&f(r,o),n==="list-filled"&&f(r,!o)}),this.$(c("load-more")).forEach(r=>{f(r,!!this.pageInfo?.hasNextPage)}),K("list")}},W=new WeakMap;function ht(e){let t=W.get(e);return t||(t=new N(e),W.set(e,t)),t.load()}function gt(e){return d(e)&&d(e.__core)&&d(e.__parts)}function G(e,t){let o=Reflect.get(window,"Tether");if(!gt(o))throw new Error(`tether.${e}.js runs after the Tether script, which loads it, and needs its window.Tether`);o.__parts[e]=t}G("lists",S);})();
1
+ (()=>{var b=Object.defineProperty;var rt=(e,t,o)=>t in e?b(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o;var nt=(e,t)=>{for(var o in t)b(e,o,{get:t[o],enumerable:!0})};var a=(e,t,o)=>rt(e,typeof t!="symbol"?t+"":t,o);var O={};nt(O,{getProducts:()=>X,getRecommendations:()=>G,loadList:()=>yt});var st=window.Tether.__core["config.ts"],[P,Et,xt,It,Ct,A,Nt]=st;var it=window.Tether.__core["client.ts"],[$t,l,ct,T,u,E,_t]=it;var at=window.Tether.__core["dom.ts"],[Ot,x,St,L,m,bt,At,s,p,Lt,M,Mt,K,Kt,Ut,Ft,U,F,c,q,v,I,f]=at;var dt=window.Tether.__core["fragments.ts"],[D]=dt;var lt=window.Tether.__core["loader.ts"],[Dt,Ht,H,h,g]=lt;function d(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}var C={amount:"string",currencyCode:"string"},Q={id:"string",handle:"string",title:"string",options:["object"],images:{nodes:["object"]},priceRange:{minVariantPrice:C,maxVariantPrice:C},variants:{nodes:[{id:"string",price:C,selectedOptions:["object"]}]}},Y={nodes:[Q],pageInfo:{hasNextPage:"boolean"}};var j=u({collection:T({handle:"string",products:Y})}),z=u({products:Y}),B=u({productRecommendations:T([Q])});var ut=window.Tether.__core["status.ts"],[Wt,N,R,$]=ut;var mt=window.Tether.__core["collection.ts"],[_]=mt;var pt=window.Tether.__core["shopify-values.ts"],[Xt,V]=pt;var W="url:",ft=`query TetherCollection($handle:String!,$first:Int!,$after:String,$sortKey:ProductCollectionSortKeys,$reverse:Boolean,$filters:[ProductFilter!]){collection(handle:$handle){${D()} products(first:$first,after:$after,sortKey:$sortKey,reverse:$reverse,filters:$filters){nodes{...TetherProduct}pageInfo{hasNextPage endCursor}}}}`,ht="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 X({collection:e,query:t,first:o=P.collectionFirst,after:r=null,sortKey:n,reverse:i=!1,filters:et}={}){if(e){let S=await l(g(ft),{handle:e,first:o,after:r,sortKey:n||void 0,reverse:i,filters:et??void 0},j);if(!S.collection)throw new E(`Collection not found: ${e}`,{code:"NOT_FOUND"});let{products:y,...ot}=S.collection;return y.nodes.forEach(h),{collection:ot,products:y.nodes,pageInfo:y.pageInfo}}let w=await l(g(ht),{first:o,after:r,query:t||void 0,sortKey:n||void 0,reverse:i},z);return w.products.nodes.forEach(h),{collection:null,products:w.products.nodes,pageInfo:w.products.pageInfo}}async function G(e,t="RELATED"){let o=H(typeof e=="object"?e?.id:e);if(!o)throw new E("No product for recommendations",{code:"NOT_FOUND"});let r=o.startsWith("gid://"),i=(await l(g(`query TetherRecs(${r?"$id: ID!":"$handle: String!"},$intent:ProductRecommendationIntent){productRecommendations(${r?"productId: $id":"productHandle: $handle"},intent:$intent){...TetherProduct}}`),r?{id:o,intent:t}:{handle:o,intent:t},B)).productRecommendations??[];return i.forEach(h),i}var gt=e=>e instanceof window.Element,Z=(e,t)=>M(e,"limit",{min:1,max:V,fallback:t}),wt=e=>e==="COMPLEMENTARY"?"COMPLEMENTARY":"RELATED",k=class{constructor(t){a(this,"root");a(this,"products",[]);a(this,"pageInfo",null);a(this,"collection",null);a(this,"loadToken",0);this.root=t,t.addEventListener("click",o=>{if(!gt(o.target))return;let r=o.target.closest(c("load-more"));r?.closest(_())===t&&(o.preventDefault(),L(r,()=>this.load(!0)))})}$(t){return F(this.root,t,_())}options(){let{root:t}=this,o={reverse:s(t,"reverse")==="true",first:Z(t,P.collectionFirst)},r=s(t,"sort");if(r&&(o.sortKey=r),p(t,"collection"))return o.collection=s(t,"collection")??"",o;let n=s(t,"products")??"";return o.query=n.startsWith(W)?new URL(window.location.href).searchParams.get(n.slice(W.length))||"":n,o}async loadRecommendations(){let{key:t}=R(this.root,window.location,"recommendations"),o=this.root.closest(c("product"));return!t&&o&&({key:t}=R(o)),G(t,wt(s(this.root,"intent")))}async load(t=!1){this.loadToken+=1;let o=this.loadToken,r=()=>o!==this.loadToken;try{if(p(this.root,"recommendations")){let n=await this.loadRecommendations();if(r())return;this.products=n.slice(0,Z(this.root,n.length))}else{let n=await X({...this.options(),after:t?this.pageInfo?.endCursor??null:null});if(r())return;this.collection=n.collection,this.pageInfo=n.pageInfo,this.products=t?[...this.products,...n.products]:n.products}this.render(),$(this.root,"ready"),m("list-ready",{products:this.products,collection:this.collection},this.root)}catch(n){if(r())return;t||$(this.root,N(n)?"not-found":"error",n),N(n)&&p(this.root,"recommendations")||A(n,"list load failed"),m("error",{error:n,context:"list"},this.root)}}render(){let{collection:t}=this;this.$(c("collection-bind")).forEach(r=>{switch(s(r,"collection-bind")??""){case"title":I(r,t?.title??"");break;case"description":v(r,t?.descriptionHtml);break;case"image":q(r,t?.image?.url,t?.image?.altText||t?.title);break;case"count":I(r,this.products.length);break}}),this.$(c("list")).forEach(r=>{U(r,this.products,(n,i)=>{n.setAttribute(x("product"),i.handle),n.removeAttribute(x("state"))}),m("list-rendered",{container:r},this.root)});let o=this.products.length===0;this.$(c("show")).forEach(r=>{let n=s(r,"show");n==="list-empty"&&f(r,o),n==="list-filled"&&f(r,!o)}),this.$(c("load-more")).forEach(r=>{f(r,!!this.pageInfo?.hasNextPage)}),K("list")}},J=new WeakMap;function yt(e){let t=J.get(e);return t||(t=new k(e),J.set(e,t)),t.load()}function Pt(e){return d(e)&&d(e.__core)&&d(e.__parts)}function tt(e,t){let o=Reflect.get(window,"Tether");if(!Pt(o))throw new Error(`tether.${e}.js runs after the Tether script, which loads it, and needs its window.Tether`);o.__parts[e]=t}tt("lists",O);})();
@@ -20,7 +20,7 @@
20
20
 
21
21
  // tether-core:client.ts
22
22
  var m2 = window.Tether.__core["client.ts"];
23
- var [endpoint, gql, matches, orNull, shaped, TetherError] = m2;
23
+ var [endpoint, gql, matches, orNull, shaped, TetherError, withTimeout] = m2;
24
24
 
25
25
  // tether-core:cart.ts
26
26
  var m3 = window.Tether.__core["cart.ts"];
@@ -36,7 +36,7 @@
36
36
 
37
37
  // tether-core:dom.ts
38
38
  var m6 = window.Tether.__core["dom.ts"];
39
- var [ANALYTICS_EVENTS, attr, attributesFromJson, busy, emit, formatDate, formatMoney, get, has, hasTemplate, isOwnEvent, notifyLayoutChanged, parseJSONAttr, productUrl, qsa, repeat, scoped, sel, setImage, setStoreHtml, setText, show] = m6;
39
+ var [ANALYTICS_EVENTS, attr, attributesFromJson, busy, emit, formatDate, formatMoney, get, has, hasTemplate, integerAttribute, isOwnEvent, notifyLayoutChanged, parseJSONAttr, productUrl, qsa, repeat, scoped, sel, setImage, setStoreHtml, setText, show] = m6;
40
40
 
41
41
  // tether-core:mounting.ts
42
42
  var m7 = window.Tether.__core["mounting.ts"];
@@ -1 +1 @@
1
- (()=>{var G=Object.defineProperty;var V=(e,t)=>{for(var n in t)G(e,n,{get:t[n],enumerable:!0})};var b={};V(b,{detectMarket:()=>K,getLocalization:()=>J,renderCountrySelects:()=>L,setCountry:()=>Ee});var Z=window.Tether.__core["config.ts"],[c,Ae,Ne,M,S,C,ve]=Z;var Q=window.Tether.__core["client.ts"],[Ie,x,ze,Re,T,E]=Q;var X=window.Tether.__core["cart.ts"],[g]=X;var ee=window.Tether.__core["collection.ts"],[P]=ee;var te=window.Tether.__core["loader.ts"],[_,De,je,Ke,$e]=te;var ne=window.Tether.__core["dom.ts"],[Je,m,Ye,Be,A,We,Ge,N,Ve,Ze,Qe,Xe,et,tt,nt,ot,rt,w,at,ct,it,ut]=ne;var oe=window.Tether.__core["mounting.ts"],[v,O,I,z,R,k]=oe;var re=window.Tether.__core["market-codes.ts"],[s,d]=re;function U(e,t="localStorage"){try{return window[t].getItem(e)}catch{return null}}function H(e,t,n="localStorage"){try{window[n].setItem(e,t)}catch{}}function F(e){try{return decodeURIComponent(e)}catch(t){if(t instanceof URIError)return e;throw t}}var ae="tether_country",D=()=>`${c.prefix}:market:${c.domain}`,j={getItem:e=>U(e)};function ce(){let e=typeof window<"u";return{document:typeof document<"u"?document:null,location:e?window.location:null,storage:j,global:e?window:{}}}function ie(e){try{return JSON.parse(e)}catch(t){if(t instanceof SyntaxError)return null;throw t}}function ue(e){if(typeof e!="object"||e===null)return null;let t=s(Reflect.get(e,"country"));if(!t)return null;let n=Reflect.get(e,"locale");return{country:t,language:d(Reflect.get(e,"language"))??void 0,locale:typeof n=="string"&&n?n:void 0}}var le=e=>ue(ie(e));function se(e=j){let t=e.getItem(D());return t?le(t):null}function de(e,t){if(!e||!t)return null;let n=e.cookie.split(";").map(a=>a.trim()).find(a=>a.startsWith(`${t}=`));return n?F(n.slice(t.length+1)):null}function h(e,t){if(!e||!t)return null;let n=t.toLowerCase(),a=Object.keys(e).find(o=>o.toLowerCase()===n);return a?e[a]??null:null}function ge(e,t){let n=r=>t.document?.querySelector(`meta[name="${r}"]`)?.getAttribute("content"),a=Reflect.get(t.global,"TETHER_COUNTRY"),o=Reflect.get(t.global,"TETHER_LANGUAGE"),i=n("tether-country")||de(t.document,e.cookie||ae);return{country:a||i,language:o||n("tether-language")}}function fe(e,t){let n=(t.location?.pathname??"/").split("/").find(u=>u!==""),a=h(e.locales,n);if(a)return a;let o=t.document?.documentElement.getAttribute("lang");if(!o)return null;let i=h(e.locales,o)??h(e.locales,o.split("-")[0]);if(i)return{locale:o,...i};if(e.locales&&e.strict)return null;let r=o.split("-")[1];return{language:o,country:r?.length===2?r:null,locale:o}}function me(e,t,n){switch(e){case"saved":return t.remember===!1?null:se(n.storage);case"server":return ge(t,n);case"webflow":return fe(t,n)}}function pe(e){return e?e===!0?M:e:["saved"]}function K(e=c.markets,t=ce()){let n=(e===c.markets?e:S(e))??{};if(n.detect===!1)return{};let a={},o={sources:a};for(let i of pe(n.detect)){let r=me(i,n,t);if(!r)continue;let u=s(r.country),l=d(r.language),f=typeof r.locale=="string"&&r.locale?r.locale:null;u&&!o.country&&(o.country=u,a.country=i),l&&!o.language&&(o.language=l,a.language=i),f&&!o.locale&&(o.locale=f,a.locale=i)}return o}function $(e){if(c.markets?.remember===!1)return;let t={country:e.country,language:e.language||void 0,locale:e.locale||void 0};H(D(),JSON.stringify(t))}var ye="{name} ({currency})",Ce="name",p=null;function we(){p=null}var ke="query TetherLocalization{localization{country{isoCode name currency{isoCode symbol}}language{isoCode name}availableCountries{isoCode name currency{isoCode symbol}availableLanguages{isoCode name}}}}",q={isoCode:"string",name:"string",currency:"object"},he=T({localization:{country:q,availableCountries:[q]}});function J(){return p??(p=x(ke,{},he).then(e=>e.localization,e=>{throw p=null,e})),p}function Y(e,t){switch(t){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 Le=(e,t)=>e.replace(/\{(name|code|currency|symbol)\}/g,(n,a)=>Y(t,a));function be(e,t,n){let a=e.getAttribute(m("country-label"))||ye,o=(e.getAttribute(m("countries"))||"").toUpperCase().split(/[\s,]+/).filter(Boolean),i=o.length?o.map(r=>t.find(u=>u.isoCode===r)).filter(r=>r!==void 0):t;e.replaceChildren(...i.map(r=>new Option(Le(a,r),r.isoCode))),e.value=n,e.value!==n&&(e.selectedIndex=-1),e.disabled=i.length<2&&!e.hasAttribute(m("always-enabled"))}function Me(e,t,n){let a=(c.country||n.country.isoCode).toUpperCase(),o=[...n.availableCountries].sort((r,u)=>r.name.localeCompare(u.name,c.locale||void 0)),i=o.find(r=>r.isoCode===a)??n.country;e.forEach(r=>{be(r,o,a)}),t.forEach(r=>{r.textContent=Y(i,N(r,"country-bind")||Ce)})}function L(e=document){let t=k(e,`select${w("country-select")}`),n=k(e,w("country-bind"));return!t.length&&!n.length?Promise.resolve():J().then(a=>{Me(t,n,a)}).catch(a=>{C(a,"country select")})}var Se=e=>Object.values(c.markets?.locales??{}).find(t=>s(t.country)===e);function xe(e,t){return e!==void 0?d(e):t?t.language?d(t.language):void 0:c.language}function Te(e){_();let t=[];return g.id()&&t.push(g.setBuyerIdentity({countryCode:e},{create:!1}).catch(n=>{C(n,"cart country")})),R(),v.forEach(n=>t.push(n.load())),O.forEach(n=>{n.closest(P())||(I.delete(n),z(n))}),t}async function Ee(e,{language:t,locale:n,remember:a=!0}={}){let o=s(e);if(!o)throw new E(`Not a country code: ${e}`,{code:"INVALID_COUNTRY"});let i=Se(o),r=n||i?.locale,u=r||c.locale,l=xe(t,i),f=o!==c.country||l!==c.language||u!==c.locale;if(c.country=o,c.language=l||void 0,c.locale=u,a&&$({country:o,language:l,locale:r}),!f)return L(),g.state;t!==void 0&&we();let W=Te(o);return L(),A("country-changed",{country:o,language:c.language}),await Promise.all(W),g.state}function y(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Pe(e){return y(e)&&y(e.__core)&&y(e.__parts)}function B(e,t){let n=Reflect.get(window,"Tether");if(!Pe(n))throw new Error(`tether.${e}.js runs after the Tether script, which loads it, and needs its window.Tether`);n.__parts[e]=t}B("markets",b);})();
1
+ (()=>{var G=Object.defineProperty;var V=(e,t)=>{for(var n in t)G(e,n,{get:t[n],enumerable:!0})};var b={};V(b,{detectMarket:()=>K,getLocalization:()=>J,renderCountrySelects:()=>L,setCountry:()=>Ee});var Z=window.Tether.__core["config.ts"],[i,Ae,Ne,M,S,C,ve]=Z;var Q=window.Tether.__core["client.ts"],[Ie,x,ze,Re,T,E,Ue]=Q;var X=window.Tether.__core["cart.ts"],[g]=X;var ee=window.Tether.__core["collection.ts"],[P]=ee;var te=window.Tether.__core["loader.ts"],[_,je,Ke,$e,qe]=te;var ne=window.Tether.__core["dom.ts"],[Ye,m,Be,We,A,Ge,Ve,N,Ze,Qe,Xe,et,tt,nt,ot,rt,at,it,w,ct,ut,lt,st]=ne;var oe=window.Tether.__core["mounting.ts"],[v,O,I,z,R,k]=oe;var re=window.Tether.__core["market-codes.ts"],[s,d]=re;function U(e,t="localStorage"){try{return window[t].getItem(e)}catch{return null}}function H(e,t,n="localStorage"){try{window[n].setItem(e,t)}catch{}}function F(e){try{return decodeURIComponent(e)}catch(t){if(t instanceof URIError)return e;throw t}}var ae="tether_country",D=()=>`${i.prefix}:market:${i.domain}`,j={getItem:e=>U(e)};function ie(){let e=typeof window<"u";return{document:typeof document<"u"?document:null,location:e?window.location:null,storage:j,global:e?window:{}}}function ce(e){try{return JSON.parse(e)}catch(t){if(t instanceof SyntaxError)return null;throw t}}function ue(e){if(typeof e!="object"||e===null)return null;let t=s(Reflect.get(e,"country"));if(!t)return null;let n=Reflect.get(e,"locale");return{country:t,language:d(Reflect.get(e,"language"))??void 0,locale:typeof n=="string"&&n?n:void 0}}var le=e=>ue(ce(e));function se(e=j){let t=e.getItem(D());return t?le(t):null}function de(e,t){if(!e||!t)return null;let n=e.cookie.split(";").map(a=>a.trim()).find(a=>a.startsWith(`${t}=`));return n?F(n.slice(t.length+1)):null}function h(e,t){if(!e||!t)return null;let n=t.toLowerCase(),a=Object.keys(e).find(o=>o.toLowerCase()===n);return a?e[a]??null:null}function ge(e,t){let n=r=>t.document?.querySelector(`meta[name="${r}"]`)?.getAttribute("content"),a=Reflect.get(t.global,"TETHER_COUNTRY"),o=Reflect.get(t.global,"TETHER_LANGUAGE"),c=n("tether-country")||de(t.document,e.cookie||ae);return{country:a||c,language:o||n("tether-language")}}function fe(e,t){let n=(t.location?.pathname??"/").split("/").find(u=>u!==""),a=h(e.locales,n);if(a)return a;let o=t.document?.documentElement.getAttribute("lang");if(!o)return null;let c=h(e.locales,o)??h(e.locales,o.split("-")[0]);if(c)return{locale:o,...c};if(e.locales&&e.strict)return null;let r=o.split("-")[1];return{language:o,country:r?.length===2?r:null,locale:o}}function me(e,t,n){switch(e){case"saved":return t.remember===!1?null:se(n.storage);case"server":return ge(t,n);case"webflow":return fe(t,n)}}function pe(e){return e?e===!0?M:e:["saved"]}function K(e=i.markets,t=ie()){let n=(e===i.markets?e:S(e))??{};if(n.detect===!1)return{};let a={},o={sources:a};for(let c of pe(n.detect)){let r=me(c,n,t);if(!r)continue;let u=s(r.country),l=d(r.language),f=typeof r.locale=="string"&&r.locale?r.locale:null;u&&!o.country&&(o.country=u,a.country=c),l&&!o.language&&(o.language=l,a.language=c),f&&!o.locale&&(o.locale=f,a.locale=c)}return o}function $(e){if(i.markets?.remember===!1)return;let t={country:e.country,language:e.language||void 0,locale:e.locale||void 0};H(D(),JSON.stringify(t))}var ye="{name} ({currency})",Ce="name",p=null;function we(){p=null}var ke="query TetherLocalization{localization{country{isoCode name currency{isoCode symbol}}language{isoCode name}availableCountries{isoCode name currency{isoCode symbol}availableLanguages{isoCode name}}}}",q={isoCode:"string",name:"string",currency:"object"},he=T({localization:{country:q,availableCountries:[q]}});function J(){return p??(p=x(ke,{},he).then(e=>e.localization,e=>{throw p=null,e})),p}function Y(e,t){switch(t){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 Le=(e,t)=>e.replace(/\{(name|code|currency|symbol)\}/g,(n,a)=>Y(t,a));function be(e,t,n){let a=e.getAttribute(m("country-label"))||ye,o=(e.getAttribute(m("countries"))||"").toUpperCase().split(/[\s,]+/).filter(Boolean),c=o.length?o.map(r=>t.find(u=>u.isoCode===r)).filter(r=>r!==void 0):t;e.replaceChildren(...c.map(r=>new Option(Le(a,r),r.isoCode))),e.value=n,e.value!==n&&(e.selectedIndex=-1),e.disabled=c.length<2&&!e.hasAttribute(m("always-enabled"))}function Me(e,t,n){let a=(i.country||n.country.isoCode).toUpperCase(),o=[...n.availableCountries].sort((r,u)=>r.name.localeCompare(u.name,i.locale||void 0)),c=o.find(r=>r.isoCode===a)??n.country;e.forEach(r=>{be(r,o,a)}),t.forEach(r=>{r.textContent=Y(c,N(r,"country-bind")||Ce)})}function L(e=document){let t=k(e,`select${w("country-select")}`),n=k(e,w("country-bind"));return!t.length&&!n.length?Promise.resolve():J().then(a=>{Me(t,n,a)}).catch(a=>{C(a,"country select")})}var Se=e=>Object.values(i.markets?.locales??{}).find(t=>s(t.country)===e);function xe(e,t){return e!==void 0?d(e):t?t.language?d(t.language):void 0:i.language}function Te(e){_();let t=[];return g.id()&&t.push(g.setBuyerIdentity({countryCode:e},{create:!1}).catch(n=>{C(n,"cart country")})),R(),v.forEach(n=>t.push(n.load())),O.forEach(n=>{n.closest(P())||(I.delete(n),z(n))}),t}async function Ee(e,{language:t,locale:n,remember:a=!0}={}){let o=s(e);if(!o)throw new E(`Not a country code: ${e}`,{code:"INVALID_COUNTRY"});let c=Se(o),r=n||c?.locale,u=r||i.locale,l=xe(t,c),f=o!==i.country||l!==i.language||u!==i.locale;if(i.country=o,i.language=l||void 0,i.locale=u,a&&$({country:o,language:l,locale:r}),!f)return L(),g.state;t!==void 0&&we();let W=Te(o);return L(),A("country-changed",{country:o,language:i.language}),await Promise.all(W),g.state}function y(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Pe(e){return y(e)&&y(e.__core)&&y(e.__parts)}function B(e,t){let n=Reflect.get(window,"Tether");if(!Pe(n))throw new Error(`tether.${e}.js runs after the Tether script, which loads it, and needs its window.Tether`);n.__parts[e]=t}B("markets",b);})();