@occluze/tether 0.6.8 → 0.7.0

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 (259) hide show
  1. package/README.md +11 -11
  2. package/dist/esm/astro.js +2 -2
  3. package/dist/esm/chunks/account-UIPWJQ3Y.js +1 -0
  4. package/dist/esm/chunks/account-pages-6ROA6Y4V.js +1 -0
  5. package/dist/esm/chunks/analytics-2V632IRV.js +1 -0
  6. package/dist/esm/chunks/chunk-4GCXM764.js +1 -0
  7. package/dist/esm/chunks/chunk-56FCLJJD.js +1 -0
  8. package/dist/esm/chunks/chunk-5Z5O3767.js +1 -0
  9. package/dist/esm/chunks/chunk-6OZJCAGZ.js +1 -0
  10. package/dist/esm/chunks/chunk-A5SYCVQM.js +1 -0
  11. package/dist/esm/chunks/chunk-BA4LQJJQ.js +1 -0
  12. package/dist/esm/chunks/chunk-BFTZR4OB.js +4 -0
  13. package/dist/esm/chunks/chunk-C5JYQCWH.js +1 -0
  14. package/dist/esm/chunks/chunk-E5YO6274.js +1 -0
  15. package/dist/esm/chunks/chunk-MPDWM2NN.js +1 -0
  16. package/dist/esm/chunks/chunk-T44MUL4Y.js +1 -0
  17. package/dist/esm/chunks/chunk-YLUULATY.js +1 -0
  18. package/dist/esm/chunks/diagnose-3FEKRIEK.js +14 -0
  19. package/dist/esm/chunks/extras-6POFBNOP.js +1 -0
  20. package/dist/esm/chunks/markets-ui-FD6NI2OG.js +1 -0
  21. package/dist/esm/chunks/search-UJ73YBQ5.js +1 -0
  22. package/dist/esm/index.js +1 -1
  23. package/dist/esm/server.js +2 -2
  24. package/dist/presets/barba.esm.js +19 -23
  25. package/dist/tether.account-pages.js +320 -365
  26. package/dist/tether.account-pages.min.js +1 -1
  27. package/dist/tether.account.js +242 -491
  28. package/dist/tether.account.min.js +1 -1
  29. package/dist/tether.analytics.js +66 -88
  30. package/dist/tether.analytics.min.js +1 -1
  31. package/dist/tether.diagnose.js +36 -33
  32. package/dist/tether.diagnose.min.js +2 -2
  33. package/dist/tether.extras.js +28 -36
  34. package/dist/tether.extras.min.js +1 -1
  35. package/dist/tether.js +1270 -894
  36. package/dist/tether.markets.js +73 -90
  37. package/dist/tether.markets.min.js +1 -1
  38. package/dist/tether.min.js +0 -0
  39. package/dist/tether.min.js.map +4 -4
  40. package/dist/tether.search.js +44 -68
  41. package/dist/tether.search.min.js +1 -1
  42. package/dist/types/server/src/shared/account-orders.d.ts +44 -0
  43. package/dist/types/server/src/shared/account-routes.d.ts +153 -0
  44. package/dist/types/server/src/shared/api-versions.d.ts +13 -0
  45. package/dist/types/server/src/shared/error-message.d.ts +2 -0
  46. package/dist/types/server/src/shared/json.d.ts +25 -0
  47. package/dist/types/server/src/shared/market-codes.d.ts +16 -0
  48. package/dist/types/src/account/addresses-view.d.ts +5 -0
  49. package/dist/types/src/account/answers.d.ts +40 -0
  50. package/dist/types/src/account/markup.d.ts +19 -0
  51. package/dist/types/src/account/operations.d.ts +41 -0
  52. package/dist/types/src/account/order-lines.d.ts +13 -0
  53. package/dist/types/src/account/order-list.d.ts +12 -0
  54. package/dist/types/src/account/order-page.d.ts +6 -0
  55. package/dist/types/src/account/page-answers.d.ts +182 -0
  56. package/dist/types/src/account/page-events.d.ts +2 -0
  57. package/dist/types/src/account/server-client.d.ts +60 -0
  58. package/dist/types/src/account/subscriptions-view.d.ts +2 -0
  59. package/dist/types/src/account-api.d.ts +18 -0
  60. package/dist/types/src/account-marks.d.ts +15 -0
  61. package/dist/types/src/account-pages.d.ts +8 -0
  62. package/dist/types/src/account.d.ts +64 -0
  63. package/dist/types/src/amounts.d.ts +12 -0
  64. package/dist/types/src/analytics-shopify.d.ts +41 -0
  65. package/dist/types/src/analytics.d.ts +2 -0
  66. package/dist/types/src/api-version.d.ts +28 -0
  67. package/dist/types/src/astro.d.ts +42 -0
  68. package/dist/types/src/cart/cart-shape.d.ts +43 -0
  69. package/dist/types/src/cart/checkout.d.ts +16 -0
  70. package/dist/types/src/cart/drawer.d.ts +18 -0
  71. package/dist/types/src/cart/mutations.d.ts +79 -0
  72. package/dist/types/src/cart/render.d.ts +17 -0
  73. package/dist/types/src/cart/store.d.ts +182 -0
  74. package/dist/types/src/cart.d.ts +106 -0
  75. package/dist/types/src/client.d.ts +100 -0
  76. package/dist/types/src/collection.d.ts +25 -0
  77. package/dist/types/src/config-sections.d.ts +40 -0
  78. package/dist/types/src/config.d.ts +185 -0
  79. package/dist/types/src/controls/cart-controls.d.ts +2 -0
  80. package/dist/types/src/controls/discount.d.ts +2 -0
  81. package/dist/types/src/controls/extras.d.ts +5 -0
  82. package/dist/types/src/controls/navigation.d.ts +12 -0
  83. package/dist/types/src/diagnose-markup.d.ts +19 -0
  84. package/dist/types/src/diagnose.d.ts +60 -0
  85. package/dist/types/src/dom.d.ts +75 -0
  86. package/dist/types/src/extras.d.ts +21 -0
  87. package/dist/types/src/fragments.d.ts +158 -0
  88. package/dist/types/src/globals.d.ts +15 -0
  89. package/dist/types/src/images.d.ts +20 -0
  90. package/dist/types/src/index.d.ts +167 -0
  91. package/dist/types/src/initial.d.ts +56 -0
  92. package/dist/types/src/lazy.d.ts +28 -0
  93. package/dist/types/src/loader.d.ts +84 -0
  94. package/dist/types/src/market-codes.d.ts +6 -0
  95. package/dist/types/src/markets-ui.d.ts +32 -0
  96. package/dist/types/src/markets.d.ts +72 -0
  97. package/dist/types/src/markup.d.ts +131 -0
  98. package/dist/types/src/mounting.d.ts +46 -0
  99. package/dist/types/src/page-market.d.ts +27 -0
  100. package/dist/types/src/presets/barba.d.ts +56 -0
  101. package/dist/types/src/product-events.d.ts +2 -0
  102. package/dist/types/src/product-render.d.ts +17 -0
  103. package/dist/types/src/product-shape.d.ts +88 -0
  104. package/dist/types/src/product-state.d.ts +110 -0
  105. package/dist/types/src/product.d.ts +66 -0
  106. package/dist/types/src/repeaters.d.ts +16 -0
  107. package/dist/types/src/search.d.ts +33 -0
  108. package/dist/types/src/selling-plans.d.ts +64 -0
  109. package/dist/types/src/server.d.ts +88 -0
  110. package/dist/types/src/shopify-values.d.ts +46 -0
  111. package/dist/types/src/status.d.ts +33 -0
  112. package/dist/types/src/storage.d.ts +12 -0
  113. package/dist/types/src/store-html.d.ts +39 -0
  114. package/dist/types/src/storefront/catalog.d.ts +38 -0
  115. package/dist/types/src/storefront/json-ld.d.ts +20 -0
  116. package/dist/types/src/variant-render.d.ts +14 -0
  117. package/package.json +24 -23
  118. package/src/account/addresses-view.ts +58 -0
  119. package/src/account/answers.ts +79 -0
  120. package/src/account/markup.ts +36 -0
  121. package/src/account/operations.ts +145 -0
  122. package/src/account/{order-lines.js → order-lines.ts} +20 -41
  123. package/src/account/order-list.ts +107 -0
  124. package/src/account/order-page.ts +137 -0
  125. package/src/account/page-answers.ts +317 -0
  126. package/src/account/{page-events.js → page-events.ts} +55 -90
  127. package/src/account/server-client.ts +183 -0
  128. package/src/account/{subscriptions-view.js → subscriptions-view.ts} +25 -68
  129. package/src/account-api.ts +98 -0
  130. package/src/account-marks.ts +35 -0
  131. package/src/{account-pages.js → account-pages.ts} +29 -37
  132. package/src/account.ts +284 -0
  133. package/src/amounts.ts +64 -0
  134. package/src/{analytics-shopify.js → analytics-shopify.ts} +112 -107
  135. package/src/analytics.ts +315 -0
  136. package/src/{api-version.js → api-version.ts} +25 -31
  137. package/src/{astro.js → astro.ts} +110 -104
  138. package/src/cart/cart-shape.ts +25 -0
  139. package/src/cart/checkout.ts +101 -0
  140. package/src/cart/{drawer.js → drawer.ts} +18 -31
  141. package/src/cart/mutations.ts +237 -0
  142. package/src/cart/{render.js → render.ts} +68 -96
  143. package/src/cart/store.ts +279 -0
  144. package/src/{cart.js → cart.ts} +82 -128
  145. package/src/client.ts +391 -0
  146. package/src/{collection.js → collection.ts} +30 -38
  147. package/src/config-sections.ts +284 -0
  148. package/src/config.ts +480 -0
  149. package/src/controls/{cart-controls.js → cart-controls.ts} +22 -54
  150. package/src/controls/{discount.js → discount.ts} +13 -34
  151. package/src/controls/{extras.js → extras.ts} +15 -24
  152. package/src/controls/{navigation.js → navigation.ts} +24 -30
  153. package/src/{diagnose-markup.js → diagnose-markup.ts} +37 -72
  154. package/src/{diagnose.js → diagnose.ts} +95 -96
  155. package/src/dom.ts +268 -0
  156. package/src/{extras.js → extras.ts} +43 -52
  157. package/src/fragments.ts +261 -0
  158. package/src/globals.d.ts +15 -0
  159. package/src/{images.js → images.ts} +30 -43
  160. package/src/index.ts +415 -0
  161. package/src/initial.ts +101 -0
  162. package/src/lazy-iife.ts +197 -0
  163. package/src/lazy.ts +42 -0
  164. package/src/{loader.js → loader.ts} +149 -123
  165. package/src/market-codes.ts +6 -0
  166. package/src/{markets-ui.js → markets-ui.ts} +91 -68
  167. package/src/markets.ts +246 -0
  168. package/src/markup.ts +127 -0
  169. package/src/{mounting.js → mounting.ts} +88 -101
  170. package/src/{page-market.js → page-market.ts} +32 -38
  171. package/src/part-integrity.ts +7 -0
  172. package/src/parts/account-pages.ts +7 -0
  173. package/src/parts/account.ts +7 -0
  174. package/src/parts/analytics.ts +7 -0
  175. package/src/parts/diagnose.ts +7 -0
  176. package/src/parts/extras.ts +7 -0
  177. package/src/parts/markets.ts +7 -0
  178. package/src/parts/search.ts +7 -0
  179. package/src/presets/barba.ts +194 -0
  180. package/src/{product-events.js → product-events.ts} +33 -48
  181. package/src/{product-render.js → product-render.ts} +38 -77
  182. package/src/product-shape.ts +49 -0
  183. package/src/product-state.ts +318 -0
  184. package/src/{product.js → product.ts} +90 -126
  185. package/src/{repeaters.js → repeaters.ts} +40 -52
  186. package/src/{search.js → search.ts} +85 -103
  187. package/src/selling-plans.ts +145 -0
  188. package/src/server.ts +211 -0
  189. package/src/{shopify-values.js → shopify-values.ts} +24 -22
  190. package/src/{status.js → status.ts} +34 -54
  191. package/src/storage.ts +34 -0
  192. package/src/store-html.ts +359 -0
  193. package/src/storefront/catalog.ts +196 -0
  194. package/src/storefront/{json-ld.js → json-ld.ts} +45 -68
  195. package/src/{variant-render.js → variant-render.ts} +24 -50
  196. package/dist/esm/chunks/account-C3NP6HFB.js +0 -1
  197. package/dist/esm/chunks/account-pages-WLK374FO.js +0 -1
  198. package/dist/esm/chunks/analytics-G3SAWMNL.js +0 -1
  199. package/dist/esm/chunks/chunk-27PJJZGC.js +0 -1
  200. package/dist/esm/chunks/chunk-2FSXS55U.js +0 -1
  201. package/dist/esm/chunks/chunk-FCSWQDVV.js +0 -1
  202. package/dist/esm/chunks/chunk-FOMSMIAM.js +0 -1
  203. package/dist/esm/chunks/chunk-GZJTCLLW.js +0 -1
  204. package/dist/esm/chunks/chunk-HEQILZVR.js +0 -1
  205. package/dist/esm/chunks/chunk-JOOEXYF3.js +0 -4
  206. package/dist/esm/chunks/chunk-MPTQYLSM.js +0 -1
  207. package/dist/esm/chunks/chunk-NEHZ37TU.js +0 -3
  208. package/dist/esm/chunks/chunk-V74KGEJF.js +0 -1
  209. package/dist/esm/chunks/chunk-VT4CDUJJ.js +0 -1
  210. package/dist/esm/chunks/chunk-YJLWX2HK.js +0 -1
  211. package/dist/esm/chunks/diagnose-6VVGZNTY.js +0 -14
  212. package/dist/esm/chunks/extras-GJVRDFM3.js +0 -1
  213. package/dist/esm/chunks/markets-ui-UNB4PTA7.js +0 -1
  214. package/dist/esm/chunks/search-OU75RNQL.js +0 -1
  215. package/src/account/addresses-view.js +0 -92
  216. package/src/account/browser-session.js +0 -359
  217. package/src/account/markup.js +0 -48
  218. package/src/account/operations.js +0 -180
  219. package/src/account/order-list.js +0 -91
  220. package/src/account/order-page.js +0 -192
  221. package/src/account/server-client.js +0 -172
  222. package/src/account/shared.js +0 -111
  223. package/src/account/shopify-auth.js +0 -150
  224. package/src/account-api.js +0 -118
  225. package/src/account-links.js +0 -35
  226. package/src/account.js +0 -342
  227. package/src/amounts.js +0 -36
  228. package/src/analytics.js +0 -352
  229. package/src/cart/checkout.js +0 -97
  230. package/src/cart/mutations.js +0 -234
  231. package/src/cart/store.js +0 -326
  232. package/src/client.js +0 -267
  233. package/src/config.js +0 -349
  234. package/src/dom.js +0 -287
  235. package/src/fragments.js +0 -237
  236. package/src/index.js +0 -353
  237. package/src/initial.js +0 -87
  238. package/src/lazy-iife.js +0 -116
  239. package/src/lazy.js +0 -39
  240. package/src/market-codes.js +0 -35
  241. package/src/markets.js +0 -334
  242. package/src/markup.js +0 -64
  243. package/src/parts/account-pages.js +0 -6
  244. package/src/parts/account.js +0 -6
  245. package/src/parts/analytics.js +0 -6
  246. package/src/parts/diagnose.js +0 -6
  247. package/src/parts/extras.js +0 -6
  248. package/src/parts/markets.js +0 -6
  249. package/src/parts/search.js +0 -6
  250. package/src/presets/barba.js +0 -190
  251. package/src/product-state.js +0 -318
  252. package/src/selling-plans.js +0 -154
  253. package/src/server.js +0 -215
  254. package/src/store-html.js +0 -0
  255. package/src/storefront/catalog.js +0 -199
  256. package/types/astro.d.ts +0 -28
  257. package/types/barba.d.ts +0 -16
  258. package/types/index.d.ts +0 -577
  259. package/types/server.d.ts +0 -182
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  (() => {
3
2
  var __defProp = Object.defineProperty;
4
3
  var __export = (target, all) => {
@@ -6,7 +5,7 @@
6
5
  __defProp(target, name, { get: all[name], enumerable: true });
7
6
  };
8
7
 
9
- // src/extras.js
8
+ // src/extras.ts
10
9
  var extras_exports = {};
11
10
  __export(extras_exports, {
12
11
  addGroup: () => addGroup,
@@ -14,28 +13,30 @@
14
13
  writeVariantUrl: () => writeVariantUrl
15
14
  });
16
15
 
17
- // tether-core:config.js
18
- var m = window.Tether.__core["config.js"];
19
- var { DEFAULTS, cfg, configure, isConfigured, log, reportError, resolveConfig, toMetafieldIdentifier, warn } = m;
16
+ // tether-core:config.ts
17
+ var m = window.Tether.__core["config.ts"];
18
+ var [cfg, isConfigured, log, MARKET_SOURCES, parseMarkets, reportError, warn] = m;
20
19
 
21
- // tether-core:dom.js
22
- var m2 = window.Tether.__core["dom.js"];
23
- var { attr, busy, cdnUrl, emit, formatDate, formatMoney, formatPercent, get, has, hasTemplate, imageUrl, notifyLayoutChanged, parseJSONAttr, productUrl, qsa, repeat, repeatKeyed, sameImage, scoped, sel, setImage, setSelected, setStoreHtml, setText, setTextTracked, show, toAttributes, watchImages } = m2;
20
+ // tether-core:dom.ts
21
+ var m2 = window.Tether.__core["dom.ts"];
22
+ var [ANALYTICS_EVENTS, attr, attributesFromJson, emit, formatDate, formatMoney, get, has, hasTemplate, isOwnEvent, parseJSONAttr, productUrl, qsa, repeat, sel, setImage, setText, show] = m2;
24
23
 
25
- // tether-core:product.js
26
- var m3 = window.Tether.__core["product.js"];
27
- var { ProductScope, rememberOptionNames, scopes } = m3;
24
+ // tether-core:product.ts
25
+ var m3 = window.Tether.__core["product.ts"];
26
+ var [scopes] = m3;
28
27
 
29
- // tether-core:cart.js
30
- var m4 = window.Tether.__core["cart.js"];
31
- var { Cart, trapFocus } = m4;
28
+ // tether-core:cart.ts
29
+ var m4 = window.Tether.__core["cart.ts"];
30
+ var [Cart] = m4;
32
31
 
33
- // src/extras.js
32
+ // server/src/shared/json.ts
33
+ function isRecord(value) {
34
+ return value !== null && typeof value === "object" && !Array.isArray(value);
35
+ }
36
+
37
+ // src/extras.ts
34
38
  function groupAttributes(group, name) {
35
- const extra = toAttributes(
36
- /** @type {Parameters<typeof toAttributes>[0]} */
37
- parseJSONAttr(group, "line-attributes")
38
- );
39
+ const extra = attributesFromJson(parseJSONAttr(group, "line-attributes"));
39
40
  return name ? [{ key: "_group", value: name }, ...extra] : extra;
40
41
  }
41
42
  async function addGroup(button) {
@@ -69,11 +70,8 @@
69
70
  } catch {
70
71
  return null;
71
72
  }
72
- if (typeof value !== "object" || value === null) return null;
73
- const { country, language, locale } = (
74
- /** @type {Record<string, unknown>} */
75
- value
76
- );
73
+ if (!isRecord(value)) return null;
74
+ const { country, language, locale } = value;
77
75
  if (typeof country !== "string" || !country) return null;
78
76
  return {
79
77
  country,
@@ -90,13 +88,10 @@
90
88
  }
91
89
  if (event.key !== `${cfg.prefix}:market:${cfg.domain}` || !event.newValue) return;
92
90
  const market = parseStoredMarket(event.newValue);
93
- const { Tether: Tether2 } = (
94
- /** @type {Window & { Tether?: { setCountry: SetCountry } }} */
95
- window
96
- );
97
- if (!market || !Tether2) return;
91
+ const tether = Reflect.get(window, "Tether");
92
+ if (!market || !tether) return;
98
93
  const options = { language: market.language, locale: market.locale, remember: false };
99
- Tether2.setCountry(market.country, options).catch((error) => {
94
+ tether.setCountry(market.country, options).catch((error) => {
100
95
  reportError(error, "market from another tab");
101
96
  });
102
97
  }
@@ -122,11 +117,8 @@
122
117
  replaceUrlIfAllowed(url);
123
118
  }
124
119
 
125
- // src/parts/extras.js
126
- var { Tether } = (
127
- /** @type {Window & { Tether?: { __parts: Record<string, unknown> } }} */
128
- window
129
- );
120
+ // src/parts/extras.ts
121
+ var { Tether } = window;
130
122
  if (!Tether) throw new Error("tether.extras.js runs after the Tether script, which loads it");
131
- Tether.__parts["extras"] = extras_exports;
123
+ Tether.__parts.extras = extras_exports;
132
124
  })();
@@ -1 +1 @@
1
- "use strict";(()=>{var k=Object.defineProperty;var U=(e,t)=>{for(var r in t)k(e,r,{get:t[r],enumerable:!0})};var f={};U(f,{addGroup:()=>q,onStorage:()=>I,writeVariantUrl:()=>L});var A=window.Tether.__core["config.js"],{DEFAULTS:O,cfg:c,configure:P,isConfigured:v,log:F,reportError:i,resolveConfig:J,toMetafieldIdentifier:V,warn:d}=A;var j=window.Tether.__core["dom.js"],{attr:G,busy:H,cdnUrl:R,emit:m,formatDate:W,formatMoney:z,formatPercent:B,get:g,has:h,hasTemplate:Q,imageUrl:X,notifyLayoutChanged:Y,parseJSONAttr:w,productUrl:Z,qsa:y,repeat:tt,repeatKeyed:et,sameImage:rt,scoped:ot,sel:u,setImage:nt,setSelected:at,setStoreHtml:st,setText:ct,setTextTracked:it,show:ut,toAttributes:b,watchImages:lt}=j;var C=window.Tether.__core["product.js"],{ProductScope:ft,rememberOptionNames:dt,scopes:x}=C;var M=window.Tether.__core["cart.js"],{Cart:p,trapFocus:gt}=M;function $(e,t){let r=b(w(e,"line-attributes"));return t?[{key:"_group",value:t},...r]:r}async function q(e){let t=e.closest(u("group"));if(!t)return null;let r=g(t,"group"),n=$(t,r),o=y(t,u("product")).flatMap(s=>{let a=x.get(s);if(!a?.variant?.availableForSale||a.quantity<=0)return[];let l=a.getLine();return l?[{...l,attributes:[...l.attributes??[],...n]}]:[]});if(!o.length)return d("group-add: nothing selected"),null;try{let s=await p.add(o);return m("group-added",{group:r,lines:o},t),s}catch(s){return i(s,"group add"),null}}function E(e){let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!="object"||t===null)return null;let{country:r,language:n,locale:o}=t;return typeof r!="string"||!r?null:{country:r,language:typeof n=="string"?n:null,locale:typeof o=="string"?o:void 0}}function I(e){if(e.key===c.storageKey||e.key===`${c.storageKey}:seen`){p.init().catch(o=>{i(o,"cart from another tab")});return}if(e.key!==`${c.prefix}:market:${c.domain}`||!e.newValue)return;let t=E(e.newValue),{Tether:r}=window;if(!t||!r)return;let n={language:t.language,locale:t.locale,remember:!1};r.setCountry(t.country,n).catch(o=>{i(o,"market from another tab")})}var _=new WeakMap,S=e=>e.split("/").pop()??e;function K(e){try{window.history.replaceState(window.history.state,"",e)}catch{}}function L(e,{variant:t,sellingPlanId:r}){let n=`${t.id}|${r??""}`,o=_.get(e);if(_.set(e,n),!o||o===n)return;let s=c.variantUrl&&document.querySelector(u("product"))===e;if(!h(e,"variant-url")&&!s)return;let a=new URL(window.location.href);a.searchParams.set("variant",S(t.id)),r?a.searchParams.set("selling_plan",S(r)):a.searchParams.delete("selling_plan"),K(a)}var{Tether:T}=window;if(!T)throw new Error("tether.extras.js runs after the Tether script, which loads it");T.__parts.extras=f;})();
1
+ (()=>{var E=Object.defineProperty;var A=(t,r)=>{for(var n in r)E(t,n,{get:r[n],enumerable:!0})};var f={};A(f,{addGroup:()=>U,onStorage:()=>I,writeVariantUrl:()=>P});var C=window.Tether.__core["config.ts"],[i,q,F,K,V,u,d]=C;var O=window.Tether.__core["dom.ts"],[z,D,g,m,G,W,w,y,Y,Z,h,v,k,B,l,H,Q,X]=O;var M=window.Tether.__core["product.ts"],[x]=M;var N=window.Tether.__core["cart.ts"],[p]=N;function T(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function R(t,r){let n=g(h(t,"line-attributes"));return r?[{key:"_group",value:r},...n]:n}async function U(t){let r=t.closest(l("group"));if(!r)return null;let n=w(r,"group"),o=R(r,n),e=k(r,l("product")).flatMap(a=>{let s=x.get(a);if(!s?.variant?.availableForSale||s.quantity<=0)return[];let c=s.getLine();return c?[{...c,attributes:[...c.attributes??[],...o]}]:[]});if(!e.length)return d("group-add: nothing selected"),null;try{let a=await p.add(e);return m("group-added",{group:n,lines:e},r),a}catch(a){return u(a,"group add"),null}}function L(t){let r;try{r=JSON.parse(t)}catch{return null}if(!T(r))return null;let{country:n,language:o,locale:e}=r;return typeof n!="string"||!n?null:{country:n,language:typeof o=="string"?o:null,locale:typeof e=="string"?e:void 0}}function I(t){if(t.key===i.storageKey||t.key===`${i.storageKey}:seen`){p.init().catch(e=>{u(e,"cart from another tab")});return}if(t.key!==`${i.prefix}:market:${i.domain}`||!t.newValue)return;let r=L(t.newValue),n=Reflect.get(window,"Tether");if(!r||!n)return;let o={language:r.language,locale:r.locale,remember:!1};n.setCountry(r.country,o).catch(e=>{u(e,"market from another tab")})}var b=new WeakMap,S=t=>t.split("/").pop()??t;function J(t){try{window.history.replaceState(window.history.state,"",t)}catch{}}function P(t,{variant:r,sellingPlanId:n}){let o=`${r.id}|${n??""}`,e=b.get(t);if(b.set(t,o),!e||e===o)return;let a=i.variantUrl&&document.querySelector(l("product"))===t;if(!y(t,"variant-url")&&!a)return;let s=new URL(window.location.href);s.searchParams.set("variant",S(r.id)),n?s.searchParams.set("selling_plan",S(n)):s.searchParams.delete("selling_plan"),J(s)}var{Tether:_}=window;if(!_)throw new Error("tether.extras.js runs after the Tether script, which loads it");_.__parts.extras=f;})();