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