@occluze/tether 0.9.6 → 0.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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-32IFOHYU.js → account-pages-LMGIPFB7.js} +1 -1
- package/dist/esm/chunks/{analytics-OIQ4TFGM.js → analytics-YSTR6H2W.js} +1 -1
- package/dist/esm/chunks/{chunk-KW7UPDXI.js → chunk-4BZ4X2Z6.js} +1 -1
- package/dist/esm/chunks/{chunk-HZYW2TS3.js → chunk-ADA2ZGPO.js} +1 -1
- package/dist/esm/chunks/chunk-B7SC7UOJ.js +1 -0
- package/dist/esm/chunks/{chunk-DQJRQBJG.js → chunk-BGUUUMJO.js} +1 -1
- package/dist/esm/chunks/{chunk-JJVUNGJZ.js → chunk-GOGPMJ2U.js} +1 -1
- package/dist/esm/chunks/{chunk-33IQL4XN.js → chunk-HGNFQHEU.js} +1 -1
- package/dist/esm/chunks/{chunk-AMCCY6T4.js → chunk-I54NQEVK.js} +1 -1
- package/dist/esm/chunks/{chunk-UDJ62MPR.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-TES2AUFT.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-U5BYAOTP.js → chunk-SA5G3AUJ.js} +1 -1
- package/dist/esm/chunks/{chunk-TUVLYVMF.js → chunk-UJH5ZECZ.js} +1 -1
- package/dist/esm/chunks/chunk-XQCBGVU2.js +1 -0
- package/dist/esm/chunks/{diagnose-QTIUBMXT.js → diagnose-IOC3BCP5.js} +1 -1
- package/dist/esm/chunks/{extras-56DC6CHI.js → extras-5E72QFSJ.js} +1 -1
- package/dist/esm/chunks/{lists-SE5VBQ4K.js → lists-35SUHUOX.js} +1 -1
- package/dist/esm/chunks/markets-ui-B3ILTPN7.js +1 -0
- package/dist/esm/chunks/{search-ZAB5GJOK.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 +24 -11
- package/dist/tether.account.min.js +1 -1
- package/dist/tether.js +166 -153
- 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 +8 -0
- package/dist/types/src/account/server-client.d.ts +3 -1
- 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 +8 -4
- package/dist/types/src/cart.d.ts +5 -4
- package/dist/types/src/config.d.ts +8 -0
- 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-GZLRHV5Z.js +0 -1
- package/dist/esm/chunks/chunk-COXH5OXQ.js +0 -1
- package/dist/esm/chunks/chunk-ESYKAFMU.js +0 -1
- package/dist/esm/chunks/chunk-HO6SNO3A.js +0 -1
- package/dist/esm/chunks/chunk-LZINCBME.js +0 -1
- package/dist/esm/chunks/chunk-NOTL72DB.js +0 -1
- package/dist/esm/chunks/chunk-UU2VVXU2.js +0 -1
- package/dist/esm/chunks/markets-ui-GQOUGLUL.js +0 -1
package/dist/tether.lists.js
CHANGED
|
@@ -27,13 +27,15 @@
|
|
|
27
27
|
var m3 = window.Tether.__core["dom.ts"];
|
|
28
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
|
-
//
|
|
31
|
-
var
|
|
32
|
-
|
|
30
|
+
// src/shopify-fields.ts
|
|
31
|
+
var IMAGE_FIELDS = "url altText width height";
|
|
32
|
+
function collectionFields() {
|
|
33
|
+
return ` id handle title description descriptionHtml image{${IMAGE_FIELDS}}seo{title description}`;
|
|
34
|
+
}
|
|
33
35
|
|
|
34
36
|
// tether-core:loader.ts
|
|
35
|
-
var
|
|
36
|
-
var [clearProductCache, getProduct, normalizeProductKey, primeProduct, withProductFragment] =
|
|
37
|
+
var m4 = window.Tether.__core["loader.ts"];
|
|
38
|
+
var [clearProductCache, getProduct, normalizeProductKey, primeProduct, withProductFragment] = m4;
|
|
37
39
|
|
|
38
40
|
// server/src/shared/json.ts
|
|
39
41
|
function isRecord(value) {
|
|
@@ -64,16 +66,16 @@
|
|
|
64
66
|
});
|
|
65
67
|
|
|
66
68
|
// tether-core:status.ts
|
|
67
|
-
var
|
|
68
|
-
var [boundary, isNotFound, resolveProductKey, setScopeStatus] =
|
|
69
|
+
var m5 = window.Tether.__core["status.ts"];
|
|
70
|
+
var [boundary, isNotFound, resolveProductKey, setScopeStatus] = m5;
|
|
69
71
|
|
|
70
72
|
// tether-core:collection.ts
|
|
71
|
-
var
|
|
72
|
-
var [listSelector] =
|
|
73
|
+
var m6 = window.Tether.__core["collection.ts"];
|
|
74
|
+
var [listSelector] = m6;
|
|
73
75
|
|
|
74
76
|
// tether-core:shopify-values.ts
|
|
75
|
-
var
|
|
76
|
-
var [isHttpsUrl, MAX_CONNECTION_SIZE] =
|
|
77
|
+
var m7 = window.Tether.__core["shopify-values.ts"];
|
|
78
|
+
var [isHttpsUrl, MAX_CONNECTION_SIZE] = m7;
|
|
77
79
|
|
|
78
80
|
// src/lists.ts
|
|
79
81
|
var URL_QUERY_SOURCE = "url:";
|
package/dist/tether.lists.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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
|
|
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 k={};nt(k,{getProducts:()=>X,getRecommendations:()=>G,loadList:()=>yt});var st=window.Tether.__core["config.ts"],[P,Et,xt,It,$t,A,Ct]=st;var it=window.Tether.__core["client.ts"],[Rt,l,ct,T,u,E,_t]=it;var at=window.Tether.__core["dom.ts"],[kt,x,Ot,L,p,bt,At,s,m,Lt,M,Mt,K,Kt,Ft,Ut,F,U,c,q,D,I,f]=at;var dt="url altText width height";function v(){return` id handle title description descriptionHtml image{${dt}}seo{title description}`}var lt=window.Tether.__core["loader.ts"],[vt,Ht,H,h,g]=lt;function d(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}var $={amount:"string",currencyCode:"string"},Q={id:"string",handle:"string",title:"string",options:["object"],images:{nodes:["object"]},priceRange:{minVariantPrice:$,maxVariantPrice:$},variants:{nodes:[{id:"string",price:$,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,C,N,R]=ut;var pt=window.Tether.__core["collection.ts"],[_]=pt;var mt=window.Tether.__core["shopify-values.ts"],[Xt,V]=mt;var W="url:",ft=`query TetherCollection($handle:String!,$first:Int!,$after:String,$sortKey:ProductCollectionSortKeys,$reverse:Boolean,$filters:[ProductFilter!]){collection(handle:$handle){${v()} 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 O=await l(g(ft),{handle:e,first:o,after:r,sortKey:n||void 0,reverse:i,filters:et??void 0},j);if(!O.collection)throw new E(`Collection not found: ${e}`,{code:"NOT_FOUND"});let{products:y,...ot}=O.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",S=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 U(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),m(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}=N(this.root,window.location,"recommendations"),o=this.root.closest(c("product"));return!t&&o&&({key:t}=N(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(m(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(),R(this.root,"ready"),p("list-ready",{products:this.products,collection:this.collection},this.root)}catch(n){if(r())return;t||R(this.root,C(n)?"not-found":"error",n),C(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(s(r,"collection-bind")??""){case"title":I(r,t?.title??"");break;case"description":D(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=>{F(r,this.products,(n,i)=>{n.setAttribute(x("product"),i.handle),n.removeAttribute(x("state"))}),p("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 S(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",k);})();
|
package/dist/tether.markets.js
CHANGED
|
@@ -246,9 +246,21 @@
|
|
|
246
246
|
el.textContent = countryField(inUse, get(el, "country-bind") || DEFAULT_BIND);
|
|
247
247
|
});
|
|
248
248
|
}
|
|
249
|
+
var followingSelects = false;
|
|
250
|
+
function onCountrySelectChange(event) {
|
|
251
|
+
const { target } = event;
|
|
252
|
+
if (!(target instanceof window.HTMLSelectElement) || !target.matches(sel("country-select")) || !target.value) return;
|
|
253
|
+
setCountry(target.value).catch((error) => {
|
|
254
|
+
reportError(error, "country");
|
|
255
|
+
});
|
|
256
|
+
}
|
|
249
257
|
function renderCountrySelects(root = document) {
|
|
250
258
|
const selects = within(root, `select${sel("country-select")}`);
|
|
251
259
|
const binds = within(root, sel("country-bind"));
|
|
260
|
+
if (selects.length && !followingSelects) {
|
|
261
|
+
followingSelects = true;
|
|
262
|
+
document.addEventListener("change", onCountrySelectChange);
|
|
263
|
+
}
|
|
252
264
|
if (!selects.length && !binds.length) return Promise.resolve();
|
|
253
265
|
return getLocalization().then((localization) => {
|
|
254
266
|
fillCountries(selects, binds, localization);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var
|
|
1
|
+
(()=>{var Z=Object.defineProperty;var Q=(e,t)=>{for(var n in t)Z(e,n,{get:t[n],enumerable:!0})};var b={};Q(b,{detectMarket:()=>K,getLocalization:()=>Y,renderCountrySelects:()=>L,setCountry:()=>W});var X=window.Tether.__core["config.ts"],[c,Ne,Oe,S,M,m,Ie]=X;var ee=window.Tether.__core["client.ts"],[Re,x,Ue,He,E,T,Fe]=ee;var te=window.Tether.__core["cart.ts"],[g]=te;var ne=window.Tether.__core["collection.ts"],[P]=ne;var oe=window.Tether.__core["loader.ts"],[_,$e,qe,Je,Ye]=oe;var re=window.Tether.__core["dom.ts"],[We,p,Ge,Ve,v,Ze,Qe,A,Xe,et,tt,nt,ot,rt,at,ct,it,ut,y,lt,st,dt,gt]=re;var ae=window.Tether.__core["mounting.ts"],[N,O,I,z,R,k]=ae;var ce=window.Tether.__core["market-codes.ts"],[s,d]=ce;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 ie="tether_country",D=()=>`${c.prefix}:market:${c.domain}`,j={getItem:e=>U(e)};function ue(){let e=typeof window<"u";return{document:typeof document<"u"?document:null,location:e?window.location:null,storage:j,global:e?window:{}}}function le(e){try{return JSON.parse(e)}catch(t){if(t instanceof SyntaxError)return null;throw t}}function se(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 de=e=>se(le(e));function ge(e=j){let t=e.getItem(D());return t?de(t):null}function fe(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 me(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")||fe(t.document,e.cookie||ie);return{country:a||i,language:o||n("tether-language")}}function pe(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 ye(e,t,n){switch(e){case"saved":return t.remember===!1?null:ge(n.storage);case"server":return me(t,n);case"webflow":return pe(t,n)}}function we(e){return e?e===!0?S:e:["saved"]}function K(e=c.markets,t=ue()){let n=(e===c.markets?e:M(e))??{};if(n.detect===!1)return{};let a={},o={sources:a};for(let i of we(n.detect)){let r=ye(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 Ce="{name} ({currency})",ke="name",w=null;function he(){w=null}var Le="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"},be=E({localization:{country:q,availableCountries:[q]}});function Y(){return w??(w=x(Le,{},be).then(e=>e.localization,e=>{throw w=null,e})),w}function B(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 Se=(e,t)=>e.replace(/\{(name|code|currency|symbol)\}/g,(n,a)=>B(t,a));function Me(e,t,n){let a=e.getAttribute(p("country-label"))||Ce,o=(e.getAttribute(p("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(Se(a,r),r.isoCode))),e.value=n,e.value!==n&&(e.selectedIndex=-1),e.disabled=i.length<2&&!e.hasAttribute(p("always-enabled"))}function xe(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=>{Me(r,o,a)}),t.forEach(r=>{r.textContent=B(i,A(r,"country-bind")||ke)})}var J=!1;function Ee(e){let{target:t}=e;!(t instanceof window.HTMLSelectElement)||!t.matches(y("country-select"))||!t.value||W(t.value).catch(n=>{m(n,"country")})}function L(e=document){let t=k(e,`select${y("country-select")}`),n=k(e,y("country-bind"));return t.length&&!J&&(J=!0,document.addEventListener("change",Ee)),!t.length&&!n.length?Promise.resolve():Y().then(a=>{xe(t,n,a)}).catch(a=>{m(a,"country select")})}var Te=e=>Object.values(c.markets?.locales??{}).find(t=>s(t.country)===e);function Pe(e,t){return e!==void 0?d(e):t?t.language?d(t.language):void 0:c.language}function _e(e){_();let t=[];return g.id()&&t.push(g.setBuyerIdentity({countryCode:e},{create:!1}).catch(n=>{m(n,"cart country")})),R(),N.forEach(n=>t.push(n.load())),O.forEach(n=>{n.closest(P())||(I.delete(n),z(n))}),t}async function W(e,{language:t,locale:n,remember:a=!0}={}){let o=s(e);if(!o)throw new T(`Not a country code: ${e}`,{code:"INVALID_COUNTRY"});let i=Te(o),r=n||i?.locale,u=r||c.locale,l=Pe(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&&he();let V=_e(o);return L(),v("country-changed",{country:o,language:c.language}),await Promise.all(V),g.state}function C(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function ve(e){return C(e)&&C(e.__core)&&C(e.__parts)}function G(e,t){let n=Reflect.get(window,"Tether");if(!ve(n))throw new Error(`tether.${e}.js runs after the Tether script, which loads it, and needs its window.Tether`);n.__parts[e]=t}G("markets",b);})();
|