@occluze/tether 0.6.7 → 0.6.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.
Files changed (135) hide show
  1. package/README.md +3 -3
  2. package/dist/esm/astro.js +2 -2
  3. package/dist/esm/chunks/account-C3NP6HFB.js +1 -0
  4. package/dist/esm/chunks/account-pages-WLK374FO.js +1 -0
  5. package/dist/esm/chunks/analytics-G3SAWMNL.js +1 -0
  6. package/dist/esm/chunks/chunk-27PJJZGC.js +1 -0
  7. package/dist/esm/chunks/chunk-2FSXS55U.js +1 -0
  8. package/dist/esm/chunks/chunk-FCSWQDVV.js +1 -0
  9. package/dist/esm/chunks/chunk-FOMSMIAM.js +1 -0
  10. package/dist/esm/chunks/chunk-GZJTCLLW.js +1 -0
  11. package/dist/esm/chunks/chunk-HEQILZVR.js +1 -0
  12. package/dist/esm/chunks/chunk-JOOEXYF3.js +4 -0
  13. package/dist/esm/chunks/chunk-MPTQYLSM.js +1 -0
  14. package/dist/esm/chunks/chunk-NEHZ37TU.js +3 -0
  15. package/dist/esm/chunks/chunk-V74KGEJF.js +1 -0
  16. package/dist/esm/chunks/chunk-VT4CDUJJ.js +1 -0
  17. package/dist/esm/chunks/chunk-YJLWX2HK.js +1 -0
  18. package/dist/esm/chunks/diagnose-6VVGZNTY.js +14 -0
  19. package/dist/esm/chunks/extras-GJVRDFM3.js +1 -0
  20. package/dist/esm/chunks/markets-ui-UNB4PTA7.js +1 -0
  21. package/dist/esm/chunks/search-OU75RNQL.js +1 -0
  22. package/dist/esm/index.js +1 -1
  23. package/dist/esm/server.js +2 -1
  24. package/dist/presets/barba.esm.js +56 -36
  25. package/dist/tether.account-pages.js +773 -442
  26. package/dist/tether.account-pages.min.js +1 -1
  27. package/dist/tether.account.js +648 -318
  28. package/dist/tether.account.min.js +1 -1
  29. package/dist/tether.analytics.js +318 -191
  30. package/dist/tether.analytics.min.js +1 -1
  31. package/dist/tether.diagnose.js +331 -242
  32. package/dist/tether.diagnose.min.js +2 -2
  33. package/dist/tether.extras.js +78 -33
  34. package/dist/tether.extras.min.js +1 -1
  35. package/dist/tether.js +3176 -2015
  36. package/dist/tether.markets.js +231 -126
  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 +221 -126
  41. package/dist/tether.search.min.js +1 -1
  42. package/package.json +23 -4
  43. package/src/account/addresses-view.js +92 -0
  44. package/src/account/browser-session.js +359 -0
  45. package/src/account/markup.js +48 -0
  46. package/src/account/operations.js +180 -0
  47. package/src/account/order-lines.js +96 -0
  48. package/src/account/order-list.js +91 -0
  49. package/src/account/order-page.js +192 -0
  50. package/src/account/page-events.js +288 -0
  51. package/src/account/server-client.js +172 -0
  52. package/src/account/shared.js +111 -0
  53. package/src/account/shopify-auth.js +150 -0
  54. package/src/account/subscriptions-view.js +158 -0
  55. package/src/account-api.js +118 -0
  56. package/src/account-links.js +35 -0
  57. package/src/account-pages.js +69 -298
  58. package/src/account.js +280 -323
  59. package/src/amounts.js +36 -0
  60. package/src/analytics-shopify.js +241 -0
  61. package/src/analytics.js +304 -184
  62. package/src/api-version.js +75 -25
  63. package/src/astro.js +233 -68
  64. package/src/cart/checkout.js +97 -0
  65. package/src/cart/drawer.js +138 -0
  66. package/src/cart/mutations.js +234 -0
  67. package/src/cart/render.js +294 -0
  68. package/src/cart/store.js +326 -0
  69. package/src/cart.js +320 -488
  70. package/src/client.js +214 -78
  71. package/src/collection.js +126 -57
  72. package/src/config.js +323 -59
  73. package/src/controls/cart-controls.js +155 -0
  74. package/src/controls/discount.js +96 -0
  75. package/src/controls/extras.js +63 -0
  76. package/src/controls/navigation.js +83 -0
  77. package/src/diagnose-markup.js +333 -0
  78. package/src/diagnose.js +251 -202
  79. package/src/dom.js +219 -220
  80. package/src/extras.js +119 -37
  81. package/src/fragments.js +115 -22
  82. package/src/images.js +104 -0
  83. package/src/index.js +245 -287
  84. package/src/initial.js +78 -66
  85. package/src/lazy-iife.js +92 -22
  86. package/src/lazy.js +25 -4
  87. package/src/loader.js +263 -124
  88. package/src/market-codes.js +35 -0
  89. package/src/markets-ui.js +169 -55
  90. package/src/markets.js +286 -85
  91. package/src/markup.js +64 -0
  92. package/src/mounting.js +214 -91
  93. package/src/page-market.js +116 -0
  94. package/src/parts/account-pages.js +4 -1
  95. package/src/parts/account.js +4 -1
  96. package/src/parts/analytics.js +4 -1
  97. package/src/parts/diagnose.js +4 -1
  98. package/src/parts/extras.js +4 -1
  99. package/src/parts/markets.js +4 -1
  100. package/src/parts/search.js +4 -1
  101. package/src/presets/barba.js +120 -30
  102. package/src/product-events.js +130 -0
  103. package/src/product-render.js +257 -0
  104. package/src/product-state.js +318 -0
  105. package/src/product.js +233 -459
  106. package/src/repeaters.js +173 -0
  107. package/src/search.js +277 -107
  108. package/src/selling-plans.js +107 -47
  109. package/src/server.js +168 -205
  110. package/src/shopify-values.js +89 -0
  111. package/src/status.js +99 -39
  112. package/src/store-html.js +0 -0
  113. package/src/storefront/catalog.js +199 -0
  114. package/src/storefront/json-ld.js +167 -0
  115. package/src/variant-render.js +165 -0
  116. package/types/astro.d.ts +13 -2
  117. package/types/index.d.ts +178 -27
  118. package/types/server.d.ts +89 -17
  119. package/dist/esm/chunks/account-Q6E2TFEV.js +0 -1
  120. package/dist/esm/chunks/account-pages-UZXR4R5F.js +0 -1
  121. package/dist/esm/chunks/analytics-IJBKATUP.js +0 -1
  122. package/dist/esm/chunks/chunk-4QJKLPYR.js +0 -1
  123. package/dist/esm/chunks/chunk-64TUD3QR.js +0 -1
  124. package/dist/esm/chunks/chunk-AJLPU2JC.js +0 -4
  125. package/dist/esm/chunks/chunk-FIOZPPC5.js +0 -1
  126. package/dist/esm/chunks/chunk-K2YEQAIH.js +0 -1
  127. package/dist/esm/chunks/chunk-KIDH76B7.js +0 -1
  128. package/dist/esm/chunks/chunk-PAYT5ZD7.js +0 -1
  129. package/dist/esm/chunks/chunk-RREHGH4A.js +0 -1
  130. package/dist/esm/chunks/chunk-SSJT43CJ.js +0 -1
  131. package/dist/esm/chunks/chunk-VC46IEJQ.js +0 -1
  132. package/dist/esm/chunks/diagnose-3WVAWNTX.js +0 -14
  133. package/dist/esm/chunks/extras-7I7WJX35.js +0 -1
  134. package/dist/esm/chunks/markets-ui-545XLFTE.js +0 -1
  135. package/dist/esm/chunks/search-NILMGYXG.js +0 -1
@@ -1 +1 @@
1
- (()=>{var le=Object.defineProperty;var pe=(e,t)=>{for(var s in t)le(e,s,{get:t[s],enumerable:!0})};var K={};pe(K,{addresses:()=>re,deleteAddress:()=>ne,order:()=>te,renderPages:()=>De,requestReturn:()=>ae,saveAddress:()=>z,setup:()=>Ae,subscriptionAction:()=>oe,subscriptions:()=>ie,updateProfile:()=>se});var fe=window.Tether.__core["config.js"],{DEFAULTS:xe,cfg:W,configure:qe,isConfigured:Pe,log:ke,reportError:k,warn:Re}=fe;var me=window.Tether.__core["client.js"],{TetherError:F,endpoint:Ue,gql:Le,request:Ne,unwrap:Be,withContext:je}=me;var he=window.Tether.__core["dom.js"],{attr:I,busy:Fe,cdnUrl:Ge,dataKey:Ve,emit:X,formatDate:ze,formatMoney:b,formatPercent:Me,get:y,has:Ke,hasTemplate:Je,imageUrl:Qe,notifyLayoutChanged:We,parseJSONAttr:Xe,productUrl:Ye,qsa:u,readText:Ze,repeat:v,repeatKeyed:He,sameImage:et,scoped:tt,sel:d,setImage:G,setSelected:st,setText:w,setTextTracked:rt,show:V,toAttributes:nt,watchImages:it}=he;var C="amount currencyCode",O="id firstName lastName company address1 address2 city province zoneCode zip country countryCode phoneNumber formatted",B={order:`query TetherOrder($id:ID!){order(id:$id){id name number processedAt cancelledAt financialStatus fulfillmentStatus statusPageUrl requiresShipping totalPrice{${C}}subtotal{${C}}totalShipping{${C}}totalTax{${C}}shippingAddress{${O}}billingAddress{${O}}lineItems(first:50){nodes{id name title variantTitle quantity sku image{url altText}price{${C}}totalPrice{${C}}suggestedReturnReasonDefinitions(first:10){nodes{id name handle}}}}fulfillments(first:10){nodes{id status createdAt estimatedDeliveryAt latestShipmentStatus trackingInformation{company number url}}}returnInformation{returnableLineItems(first:50){nodes{quantity lineItem{id}}}}returns(first:10){nodes{id status}}}}`,addresses:`query TetherAddresses{customer{defaultAddress{id}addresses(first:20){nodes{${O}}}}}`,subscriptions:`query TetherSubscriptions{customer{subscriptionContracts(first:20,reverse:true){nodes{id status nextBillingDate currencyCode deliveryPrice{${C}}deliveryPolicy{interval intervalCount{count}}lines(first:20){nodes{id name title variantTitle quantity sku currentPrice{${C}}lineDiscountedPrice{${C}}image{url altText}}}upcomingBillingCycles(first:3){nodes{cycleIndex skipped billingAttemptExpectedDate}}}}}}`,contract:"query TetherContract($id:ID!){customer{subscriptionContract(id:$id){id status upcomingBillingCycles(first:3){nodes{cycleIndex skipped}}}}}"},T={profile:"mutation TetherProfile($input: CustomerUpdateInput!) { customerUpdate(input: $input) { customer { firstName lastName } userErrors { field message } } }",addressCreate:`mutation TetherAddressCreate($address:CustomerAddressInput!,$default:Boolean){customerAddressCreate(address:$address,defaultAddress:$default){customerAddress{${O}}userErrors{field message}}}`,addressUpdate:`mutation TetherAddressUpdate($id:ID!,$address:CustomerAddressInput,$default:Boolean){customerAddressUpdate(addressId:$id,address:$address,defaultAddress:$default){customerAddress{${O}}userErrors{field message}}}`,addressDelete:"mutation TetherAddressDelete($id: ID!) { customerAddressDelete(addressId: $id) { deletedAddressId userErrors { field message } } }",pause:"mutation TetherPause($id: ID!) { subscriptionContractPause(subscriptionContractId: $id) { contract { id status } userErrors { field message } } }",resume:"mutation TetherResume($id: ID!) { subscriptionContractActivate(subscriptionContractId: $id) { contract { id status } userErrors { field message } } }",cancel:"mutation TetherCancel($id: ID!) { subscriptionContractCancel(subscriptionContractId: $id) { contract { id status } userErrors { field message } } }",skip:"mutation TetherSkip($input: SubscriptionBillingCycleInput!) { subscriptionBillingCycleSkip(billingCycleInput: $input) { billingCycle { cycleIndex skipped } userErrors { field message } } }",unskip:"mutation TetherUnskip($input: SubscriptionBillingCycleInput!) { subscriptionBillingCycleUnskip(billingCycleInput: $input) { billingCycle { cycleIndex skipped } userErrors { field message } } }",returnRequest:"mutation TetherReturn($orderId: ID!, $lines: [RequestedLineItemInput!]!) { orderRequestReturn(orderId: $orderId, requestedLineItems: $lines) { return { id status } userErrors { field message } } }"},f=class extends Error{},R=e=>new RegExp(`^gid://shopify/${e}/\\d+(\\?[\\w=&.-]{1,80})?$`),ge={Order:R("Order"),CustomerAddress:R("CustomerAddress"),SubscriptionContract:R("SubscriptionContract"),LineItem:R("LineItem"),ReturnReasonDefinition:R("ReturnReasonDefinition")};function D(e,t){let s=/^\d{1,20}$/.test(String(t??""))?`gid://shopify/${e}/${t}`:String(t??"");if(!ge[e].test(s))throw new f(`${e} id`);return s}var j=(e,t=255)=>{if(e==null||e==="")return;if(typeof e!="string"&&typeof e!="number")throw new f("text");let s=String(e).replace(/[\u0000-\u001f\u007f]/g,"").trim();if(s.length>t)throw new f("too long");return s},ye=["firstName","lastName","company","address1","address2","city","zip","zoneCode","phoneNumber"];function be(e={},{clear:t=!1}={}){if(!e||typeof e!="object"||Array.isArray(e))throw new f("address");let s={};if(ye.forEach(i=>{let r=j(e[i]);r!==void 0?s[i]=r:t&&i in e&&(e[i]===""||e[i]===null)&&(s[i]="")}),e.countryCode!=null&&e.countryCode!==""){let i=String(e.countryCode).toUpperCase();if(!/^[A-Z]{2}$/.test(i))throw new f("countryCode");s.countryCode=i}return s}var $=e=>{let t=e?.userErrors||[];if(t.length){let s=new f(t.map(i=>i.message).join(" | "));throw s.userErrors=t,s}return e},Y={async order(e,{id:t}){return{order:(await e(B.order,{id:D("Order",t)}))?.order||null}},async profile(e,{firstName:t,lastName:s}){let i={};if(t!==void 0&&(i.firstName=j(t,100)??""),s!==void 0&&(i.lastName=j(s,100)??""),!Object.keys(i).length)throw new f("nothing to change");return{customer:$((await e(T.profile,{input:i}))?.customerUpdate).customer}},async addresses(e){let t=(await e(B.addresses,{}))?.customer,s=t?.defaultAddress?.id||null;return{addresses:(t?.addresses?.nodes||[]).map(i=>({...i,isDefault:i.id===s}))}},async saveAddress(e,{id:t,address:s,isDefault:i}){let r=be(s||{},{clear:!!t}),n=i===!0?!0:void 0;return{address:$(t?(await e(T.addressUpdate,{id:D("CustomerAddress",t),address:Object.keys(r).length?r:null,default:n??null}))?.customerAddressUpdate:(await e(T.addressCreate,{address:r,default:n??!1}))?.customerAddressCreate).customerAddress}},async deleteAddress(e,{id:t}){return{deleted:$((await e(T.addressDelete,{id:D("CustomerAddress",t)}))?.customerAddressDelete).deletedAddressId}},async subscriptions(e){return{subscriptions:(await e(B.subscriptions,{}))?.customer?.subscriptionContracts?.nodes||[]}},async subscription(e,{id:t,action:s}){if(!["pause","resume","skip","unskip","cancel"].includes(s))throw new f("action");let i=D("SubscriptionContract",t),r=(await e(B.contract,{id:i}))?.customer?.subscriptionContract;if(!r){let o=new f("not found");throw o.status=404,o}if(s==="skip"||s==="unskip"){let o=r.upcomingBillingCycles?.nodes||[],c=s==="skip"?o.find(m=>!m.skipped):o.find(m=>m.skipped);if(!c)throw new f(s==="skip"?"no upcoming delivery to skip":"nothing skipped");return{billingCycle:$((await e(T[s],{input:{contractId:i,selector:{index:c.cycleIndex}}}))?.[s==="skip"?"subscriptionBillingCycleSkip":"subscriptionBillingCycleUnskip"]).billingCycle}}let n={pause:"subscriptionContractPause",resume:"subscriptionContractActivate",cancel:"subscriptionContractCancel"}[s];return{contract:$((await e(T[s],{id:i}))?.[n]).contract}},async requestReturn(e,{orderId:t,lines:s}){let i=D("Order",t);if(!Array.isArray(s)||!s.length||s.length>50)throw new f("lines");let r=s.map(a=>{let o=Number(a?.quantity);if(!Number.isInteger(o)||o<1||o>1e3)throw new f("quantity");let c={lineItemId:D("LineItem",a.lineItemId),quantity:o};a.reasonId&&(c.returnReasonDefinitionId=D("ReturnReasonDefinition",a.reasonId));let l=j(a.note,300);return l&&(c.customerNote=l),c});return{return:$((await e(T.returnRequest,{orderId:i,lines:r}))?.orderRequestReturn).return}}};var L=null,Z=!1;function Ae(e){L=e}var H=e=>{try{return new URL(e).protocol==="https:"}catch{return!1}},U=e=>{try{return new Date(e).toLocaleDateString(W.locale||void 0)}catch{return e}},Ie={order:e=>["GET",`/order?id=${encodeURIComponent(e.id)}`],addresses:()=>["GET","/addresses"],subscriptions:()=>["GET","/subscriptions"],profile:()=>["POST","/profile"],saveAddress:()=>["POST","/address"],deleteAddress:()=>["POST","/address/delete"],subscription:()=>["POST","/subscription"],requestReturn:()=>["POST","/return"]};async function S(e,t={}){let{server:s,serverFetch:i,query:r}=L;if(s()){let[n,a]=Ie[e](t),o=await i(a,n==="POST"?{method:n,body:t}:{});if(o.loggedIn===!1)throw new F("Not logged in",{code:"NOT_LOGGED_IN",status:401});return o}try{return await Y[e]((n,a)=>r(n,a),t)}catch(n){throw n instanceof f?new F(n.message,{code:"INVALID",userErrors:n.userErrors}):n}}var N=e=>{L.reset(),X("account-updated",{what:e})},te=e=>S("order",{id:e}).then(t=>t.order),se=({firstName:e,lastName:t}={})=>S("profile",{firstName:e,lastName:t}).then(s=>(N("profile"),s.customer)),re=()=>S("addresses").then(e=>e.addresses),z=(e,{id:t,isDefault:s}={})=>S("saveAddress",{id:t,address:e,isDefault:s}).then(i=>(N("addresses"),i.address)),ne=e=>S("deleteAddress",{id:e}).then(t=>(N("addresses"),t.deleted)),ie=()=>S("subscriptions").then(e=>e.subscriptions),oe=(e,t)=>S("subscription",{id:e,action:t}).then(s=>(N("subscriptions"),s)),ae=(e,t)=>S("requestReturn",{orderId:e,lines:t}).then(s=>(N("orders"),s.return));var q=e=>e?String(e).toLowerCase().replace(/_/g," "):"",M=e=>(e?.formatted||[]).join(", "),E=(e,t,s)=>u(e,d(t)).forEach(i=>{let r=y(i,t);r in s&&V(i,!!s[r])}),P=(e,t)=>E(e,"show",t);function we(e,t,s=null){v(e,t,(i,r)=>{let n=s&&s.get(r.id)||0;i.dataset.tetherLine=r.id,u(i,d("order-line")).concat(i.matches(d("order-line"))?[i]:[]).forEach(a=>{let o=y(a,"order-line");if(o==="image"){r.image&&G(a,r.image.url,r.image.altText||r.title);return}let c={title:r.title||r.name,"variant-title":r.variantTitle||"",quantity:String(r.quantity),price:r.price?b(r.price):"",total:r.totalPrice?b(r.totalPrice):"",sku:r.sku||"",returnable:String(n)}[o];c!=null&&w(a,c)}),E(i,"order-line-show",{returnable:n>0}),u(i,d("return-quantity")).forEach(a=>{a.max=String(n),a.min="0",a.value||(a.value="0"),a.disabled=n<1}),u(i,`select${d("return-reason")}`).forEach(a=>{let o=r.suggestedReturnReasonDefinitions?.nodes||[];a.dataset.tetherFilled!==r.id&&(a.dataset.tetherFilled=r.id,o.forEach(c=>a.appendChild(new Option(c.name,c.id))))})})}var Ce={order:d("order")};async function de(e){let t=y(e,"order")||"",s=t.startsWith("url:")?new URL(window.location.href).searchParams.get(t.slice(4)||"id"):t,i=o=>e.setAttribute(I("order-state"),o);if(!s){i("not-found"),E(e,"order-show",{"not-found":!0});return}i("loading"),E(e,"order-show",{loading:!0,ready:!1,"not-found":!1,error:!1});let r;try{r=await te(s)}catch(o){k(o,"order"),i("error"),E(e,"order-show",{loading:!1,error:!0});return}if(!r){i("not-found"),E(e,"order-show",{loading:!1,"not-found":!0});return}e.dataset.tetherOrderId=r.id;let n=new Map((r.returnInformation?.returnableLineItems?.nodes||[]).map(o=>[o.lineItem?.id,o.quantity])),a=r.fulfillments?.nodes||[];u(e,d("order-bind")).forEach(o=>{let c=y(o,"order-bind");if(c==="url"){H(r.statusPageUrl)&&o.setAttribute("href",r.statusPageUrl);return}let l={name:r.name,date:U(r.processedAt),total:b(r.totalPrice),subtotal:r.subtotal?b(r.subtotal):"",shipping:r.totalShipping?b(r.totalShipping):"",tax:r.totalTax?b(r.totalTax):"",status:q(r.financialStatus),fulfillment:q(r.fulfillmentStatus),"shipping-address":M(r.shippingAddress),"billing-address":M(r.billingAddress),items:(r.lineItems?.nodes||[]).map(m=>`${m.quantity}\xD7 ${m.title||m.name}`).join(", "),cancelled:r.cancelledAt?U(r.cancelledAt):""}[c];l!=null&&w(o,l)}),u(e,d("order-lines")).forEach(o=>we(o,r.lineItems?.nodes||[],n)),u(e,d("order-fulfillments")).forEach(o=>v(o,a,(c,l)=>{let m=l.trackingInformation?.[0]||{};u(c,d("fulfillment-bind")).concat(c.matches(d("fulfillment-bind"))?[c]:[]).forEach(h=>{let g=y(h,"fulfillment-bind");if(g==="url"){let A=H(m.url);A&&h.setAttribute("href",m.url),V(h,A);return}let p={status:q(l.latestShipmentStatus||l.status),date:U(l.createdAt),eta:l.estimatedDeliveryAt?U(l.estimatedDeliveryAt):"",company:m.company||"",number:m.number||""}[g];p!=null&&w(h,p)})})),E(e,"order-show",{loading:!1,ready:!0,error:!1,"not-found":!1,cancelled:!!r.cancelledAt,shipped:a.length>0,returnable:[...n.values()].some(o=>o>0),"has-returns":e.dataset.tetherReturned!=="1"&&(r.returns?.nodes||[]).length>0,"return-requested":e.dataset.tetherReturned==="1"}),i("ready")}async function Ee(e){let t=await L.customer().catch(()=>null);t&&["firstName","lastName"].forEach(s=>{let i=e.elements?.[s];i&&!i.dataset.tetherTouched&&(i.value=t[s]||"")})}var ce=null;async function _(e){let t=u(e,d("addresses"));if(!t.length)return;P(e,{"addresses-loading":!0,"addresses-empty":!1});let s;try{s=ce=await re()}catch(i){k(i,"addresses"),P(e,{"addresses-loading":!1,"addresses-error":!0});return}P(e,{"addresses-loading":!1,"addresses-empty":s.length===0,"addresses-error":!1}),t.forEach(i=>v(i,s,(r,n)=>{r.dataset.tetherAddress=n.id,u(r,d("address-bind")).concat(r.matches(d("address-bind"))?[r]:[]).forEach(a=>{let o={formatted:M(n),name:[n.firstName,n.lastName].filter(Boolean).join(" "),company:n.company||"",address1:n.address1||"",address2:n.address2||"",city:n.city||"",zip:n.zip||"",province:n.province||"",country:n.country||"",phone:n.phoneNumber||""}[y(a,"address-bind")];o!=null&&w(a,o)}),E(r,"address-show",{default:n.isDefault,"not-default":!n.isDefault})}))}var Se=["pause","resume","skip","unskip","cancel"];function Te(e){let t=e.upcomingBillingCycles?.nodes?.[0],s=e.status;return{active:s==="ACTIVE",paused:s==="PAUSED",cancelled:s==="CANCELLED",expired:s==="EXPIRED",failed:s==="FAILED",skipped:!!t?.skipped,"can-pause":s==="ACTIVE","can-resume":s==="PAUSED"||s==="FAILED","can-skip":s==="ACTIVE"&&!!t&&!t.skipped,"can-unskip":s==="ACTIVE"&&!!t?.skipped,"can-cancel":s==="ACTIVE"||s==="PAUSED"||s==="FAILED"}}async function ue(e){let t=u(e,d("subscriptions"));if(!t.length)return;P(e,{"subscriptions-loading":!0,"subscriptions-empty":!1});let s;try{s=await ie()}catch(i){k(i,"subscriptions"),P(e,{"subscriptions-loading":!1,"subscriptions-error":!0});return}P(e,{"subscriptions-loading":!1,"subscriptions-empty":s.length===0,"subscriptions-error":!1}),t.forEach(i=>v(i,s,(r,n)=>{r.dataset.tetherSubscription=n.id,r.setAttribute(I("subscription-status"),q(n.status));let a=n.lines?.nodes||[],o=n.deliveryPolicy?.intervalCount?.count||1,c=q(n.deliveryPolicy?.interval),l=a.reduce((h,g)=>h+parseFloat(g.lineDiscountedPrice?.amount||0),0);u(r,d("subscription-bind")).forEach(h=>{let g=y(h,"subscription-bind"),p={status:q(n.status),next:n.nextBillingDate?U(n.nextBillingDate):"",interval:c?o===1?c:`${o} ${c}s`:"",products:a.map(A=>`${A.quantity}\xD7 ${A.title}`).join(", "),total:a.length?b({amount:String(l),currencyCode:n.currencyCode}):"",delivery:n.deliveryPrice?b(n.deliveryPrice):""}[g];p!=null&&w(h,p)}),u(r,d("subscription-lines")).forEach(h=>v(h,a,(g,p)=>{u(g,d("subscription-line")).concat(g.matches(d("subscription-line"))?[g]:[]).forEach(A=>{let J=y(A,"subscription-line");if(J==="image"){p.image&&G(A,p.image.url,p.image.altText||p.title);return}let Q={title:p.title,"variant-title":p.variantTitle||"",quantity:String(p.quantity),price:b(p.currentPrice)}[J];Q!=null&&w(A,Q)})}));let m=Te(n);E(r,"subscription-show",m),u(r,d("subscription-action")).forEach(h=>{let g=y(h,"subscription-action"),p=m[`can-${g}`];h.disabled=!p,h.classList.toggle("is-disabled",!p)})}))}async function De(e=document){Z||(Z=!0,$e()),await Promise.all([...u(e,d("order")).map(t=>de(t)),...u(e,d("profile-form")).map(t=>Ee(t)),_(e),ue(e)])}var ee=e=>Object.fromEntries([...e.elements].filter(t=>t.name&&t.type!=="submit"&&t.type!=="button"&&t.type!=="checkbox").map(t=>[t.name,t.value]));async function x(e,t,{error:s}={}){if(e.getAttribute("aria-busy")!=="true"){e.classList.add("is-busy"),e.setAttribute("aria-busy","true"),e.setAttribute(I("form-state"),"pending"),u(e,d("form-error")).forEach(i=>w(i,""));try{let i=await t();return e.setAttribute(I("form-state"),"saved"),i}catch(i){e.setAttribute(I("form-state"),"error");let r=i?.userErrors?.map(n=>n.message).join(" ")||i?.message||"Something went wrong";u(e,d("form-error")).forEach(n=>w(n,r.replace(/^Customer accounts: /,""))),s&&k(i,s);return}finally{e.classList.remove("is-busy"),e.removeAttribute("aria-busy")}}}function $e(){document.addEventListener("submit",e=>{let t=e.target;if(t.matches?.(d("profile-form")))e.preventDefault(),x(t,async()=>{await se(ee(t)),await L.bindCustomer?.(document)});else if(t.matches?.(d("address-form"))){e.preventDefault();let s=t.dataset.tetherAddressId||void 0,i=!!t.elements?.isDefault?.checked;x(t,async()=>{await z(ee(t),{id:s,isDefault:i}),t.reset(),delete t.dataset.tetherAddressId,await _(document)})}},!0),document.addEventListener("input",e=>{e.target.closest?.(d("profile-form"))&&(e.target.dataset.tetherTouched="1")}),document.addEventListener("click",e=>{let t=e.target,s=t.closest?.("[data-tether-address]"),i=n=>{let a=y(n,"confirm");return!a||window.confirm(a)},r;if((r=t.closest?.(d("address-delete")))&&s)e.preventDefault(),i(r)&&x(s,async()=>{await ne(s.dataset.tetherAddress),await _(document)});else if((r=t.closest?.(d("address-default")))&&s)e.preventDefault(),x(s,async()=>{await z(null,{id:s.dataset.tetherAddress,isDefault:!0}),await _(document)});else if((r=t.closest?.(d("address-edit")))&&s){e.preventDefault();let n=(ce||[]).find(o=>o.id===s.dataset.tetherAddress),a=document.querySelector(d("address-form"));n&&a&&(a.dataset.tetherAddressId=n.id,[...a.elements].forEach(o=>{o.name&&o.name in n&&(o.value=n[o.name]??""),o.name==="isDefault"&&(o.checked=n.isDefault)}),a.scrollIntoView?.({block:"nearest"}))}else if(r=t.closest?.(d("address-new"))){let n=document.querySelector(d("address-form"));n&&(n.reset(),delete n.dataset.tetherAddressId)}else if(r=t.closest?.(d("subscription-action"))){e.preventDefault();let n=r.closest("[data-tether-subscription]"),a=y(r,"subscription-action");if(!n||!Se.includes(a)||r.disabled||!i(r))return;let o=n.dataset.tetherSubscription;n.setAttribute(I("subscription-state"),"pending"),x(n,async()=>{await oe(o,a),await ue(document)}).then(()=>{let c=n.getAttribute(I("form-state"))==="error"?"error":"done";u(document,"[data-tether-subscription]").filter(l=>l===n||l.dataset.tetherSubscription===o).forEach(l=>l.setAttribute(I("subscription-state"),c))})}else if(r=t.closest?.(d("order-return"))){e.preventDefault();let n=r.closest(Ce.order);if(!n?.dataset.tetherOrderId)return;let a=u(n,"[data-tether-line]").map(o=>({lineItemId:o.dataset.tetherLine,quantity:parseInt(o.querySelector(d("return-quantity"))?.value||"0",10),reasonId:o.querySelector(d("return-reason"))?.value||void 0,note:o.querySelector(d("return-note"))?.value||void 0})).filter(o=>o.quantity>0);if(!a.length||!i(r))return;x(n,async()=>{await ae(n.dataset.tetherOrderId,a),n.dataset.tetherReturned="1",await de(n)})}})}window.Tether.__parts["account-pages"]=K;})();
1
+ "use strict";(()=>{var Te=Object.defineProperty;var xe=(e,t)=>{for(var r in t)Te(e,r,{get:t[r],enumerable:!0})};var ne={};xe(ne,{addresses:()=>K,deleteAddress:()=>X,order:()=>G,renderPages:()=>it,requestReturn:()=>W,saveAddress:()=>_,setup:()=>ce,showUnavailable:()=>at,subscriptionAction:()=>Q,subscriptions:()=>J,updateProfile:()=>z});var Ee=window.Tether.__core["config.js"],{DEFAULTS:ct,cfg:oe,configure:ut,isConfigured:lt,log:ft,reportError:E,resolveConfig:pt,toMetafieldIdentifier:mt,warn:ht}=Ee;var Ce=window.Tether.__core["dom.js"],{attr:y,busy:gt,cdnUrl:bt,emit:ie,formatDate:wt,formatMoney:g,formatPercent:At,get:p,has:It,hasTemplate:Tt,imageUrl:xt,notifyLayoutChanged:Et,parseJSONAttr:Ct,productUrl:St,qsa:u,repeat:A,repeatKeyed:$t,sameImage:Dt,scoped:Ot,sel:a,setImage:F,setSelected:qt,setStoreHtml:Rt,setText:h,setTextTracked:vt,show:H,toAttributes:Pt,watchImages:kt}=Ce;var Se=window.Tether.__core["client.js"],{TetherError:R,endpoint:Lt,gql:Ut,request:Bt,unwrap:_t,withContext:Mt}=Se;var m=class extends Error{constructor(t,{status:r=400,userErrors:s=[]}={}){super(t),this.name="InputError",this.status=r,this.userErrors=s}},I="amount currencyCode",L="id firstName lastName company address1 address2 city province zoneCode zip country countryCode phoneNumber formatted",w="userErrors { field message }",V={order:`query TetherOrder($id:ID!){order(id:$id){id name number processedAt cancelledAt financialStatus fulfillmentStatus statusPageUrl requiresShipping totalPrice{${I}}subtotal{${I}}totalShipping{${I}}totalTax{${I}}shippingAddress{${L}}billingAddress{${L}}lineItems(first:50){nodes{id name title variantTitle quantity sku image{url altText}price{${I}}totalPrice{${I}}suggestedReturnReasonDefinitions(first:10){nodes{id name handle}}}}fulfillments(first:10){nodes{id status createdAt estimatedDeliveryAt latestShipmentStatus trackingInformation{company number url}}}returnInformation{returnableLineItems(first:50){nodes{quantity lineItem{id}}}}returns(first:10){nodes{id status}}}}`,addresses:`query TetherAddresses{customer{defaultAddress{id}addresses(first:20){nodes{${L}}}}}`,subscriptions:`query TetherSubscriptions{customer{subscriptionContracts(first:20,reverse:true){nodes{id status nextBillingDate currencyCode deliveryPrice{${I}}deliveryPolicy{interval intervalCount{count}}lines(first:20){nodes{id name title variantTitle quantity sku currentPrice{${I}}lineDiscountedPrice{${I}}image{url altText}}}upcomingBillingCycles(first:3){nodes{cycleIndex skipped billingAttemptExpectedDate}}}}}}`,contract:"query TetherContract($id:ID!){customer{subscriptionContract(id:$id){id status upcomingBillingCycles(first:3){nodes{cycleIndex skipped}}}}}"},N={profile:`mutation TetherProfile($input:CustomerUpdateInput!){customerUpdate(input:$input){customer{firstName lastName}${w}}}`,addressCreate:`mutation TetherAddressCreate($address:CustomerAddressInput!,$default:Boolean){customerAddressCreate(address:$address,defaultAddress:$default){customerAddress{${L}}${w}}}`,addressUpdate:`mutation TetherAddressUpdate($id:ID!,$address:CustomerAddressInput,$default:Boolean){customerAddressUpdate(addressId:$id,address:$address,defaultAddress:$default){customerAddress{${L}}${w}}}`,addressDelete:`mutation TetherAddressDelete($id:ID!){customerAddressDelete(addressId:$id){deletedAddressId ${w}}}`,returnRequest:`mutation TetherReturn($orderId:ID!,$lines:[RequestedLineItemInput!]!){orderRequestReturn(orderId:$orderId,requestedLineItems:$lines){return{id status}${w}}}`},ae={pause:{document:`mutation TetherPause($id:ID!){subscriptionContractPause(subscriptionContractId:$id){contract{id status}${w}}}`,payload:"subscriptionContractPause",input:"contract"},resume:{document:`mutation TetherResume($id:ID!){subscriptionContractActivate(subscriptionContractId:$id){contract{id status}${w}}}`,payload:"subscriptionContractActivate",input:"contract"},cancel:{document:`mutation TetherCancel($id:ID!){subscriptionContractCancel(subscriptionContractId:$id){contract{id status}${w}}}`,payload:"subscriptionContractCancel",input:"contract"},skip:{document:`mutation TetherSkip($input:SubscriptionBillingCycleInput!){subscriptionBillingCycleSkip(billingCycleInput:$input){billingCycle{cycleIndex skipped}${w}}}`,payload:"subscriptionBillingCycleSkip",input:"billingCycle"},unskip:{document:`mutation TetherUnskip($input:SubscriptionBillingCycleInput!){subscriptionBillingCycleUnskip(billingCycleInput:$input){billingCycle{cycleIndex skipped}${w}}}`,payload:"subscriptionBillingCycleUnskip",input:"billingCycle"}};function $e(e){return typeof e=="string"&&Object.hasOwn(ae,e)}function c(e,t){if(!(e===null||typeof e!="object"))return e[t]}function te(e){let t=c(e,"nodes");return Array.isArray(t)?t:[]}var De=/^\d{1,20}$/;function D(e,t){let r=typeof t=="string"||typeof t=="number"?String(t):"",s=De.test(r)?`gid://shopify/${e}/${r}`:r;if(!new RegExp(`^gid://shopify/${e}/\\d+(\\?[\\w=&.-]{1,80})?$`).test(s))throw new m(`${e} id`);return s}var Oe=/[\u0000-\u001f\u007f]/g;function U(e,t=255){if(e==null||e==="")return;if(typeof e!="string"&&typeof e!="number")throw new m("text");let r=String(e).replace(Oe,"").trim();if(r.length>t)throw new m("too long");return r}var qe=["firstName","lastName","company","address1","address2","city","zip","zoneCode","phoneNumber"];function Re(e,{clear:t=!1}={}){if(e===null||typeof e!="object"||Array.isArray(e))throw new m("address");let r=e,s={};for(let o of qe){let i=U(r[o]);i!==void 0?s[o]=i:t&&o in r&&(r[o]===""||r[o]===null)&&(s[o]="")}let n=U(r.countryCode);if(n!==void 0){let o=n.toUpperCase();if(!/^[A-Z]{2}$/.test(o))throw new m("countryCode");s.countryCode=o}return s}function O(e,t){let r=c(e,t),s=c(r,"userErrors");if(Array.isArray(s)&&s.length){let n=s;throw new m(n.map(o=>o.message).join(" | "),{userErrors:n})}return r}var de={async order(e,{id:t}){let r=await e(V.order,{id:D("Order",t)});return{order:c(r,"order")??null}},async profile(e,{firstName:t,lastName:r}){let s={};if(t!==void 0&&(s.firstName=U(t,100)??""),r!==void 0&&(s.lastName=U(r,100)??""),!Object.keys(s).length)throw new m("nothing to change");let n=O(await e(N.profile,{input:s}),"customerUpdate");return{customer:c(n,"customer")}},async addresses(e){let t=c(await e(V.addresses,{}),"customer"),r=c(c(t,"defaultAddress"),"id")??null;return{addresses:te(c(t,"addresses")).map(n=>({...n,isDefault:c(n,"id")===r}))}},async saveAddress(e,{id:t,address:r,isDefault:s}){let n=Re(r??{},{clear:!!t}),o=s===!0;if(!t){let d=await e(N.addressCreate,{address:n,default:o});return{address:c(O(d,"customerAddressCreate"),"customerAddress")}}let i=await e(N.addressUpdate,{id:D("CustomerAddress",t),address:Object.keys(n).length?n:null,default:o?!0:null});return{address:c(O(i,"customerAddressUpdate"),"customerAddress")}},async deleteAddress(e,{id:t}){let r=await e(N.addressDelete,{id:D("CustomerAddress",t)});return{deleted:c(O(r,"customerAddressDelete"),"deletedAddressId")}},async subscriptions(e){let t=c(c(await e(V.subscriptions,{}),"customer"),"subscriptionContracts");return{subscriptions:te(t)}},async subscription(e,{id:t,action:r}){if(!$e(r))throw new m("action");let s=D("SubscriptionContract",t),n=c(c(await e(V.contract,{id:s}),"customer"),"subscriptionContract");if(!n)throw new m("not found",{status:404});let{document:o,payload:i,input:d}=ae[r];if(d==="contract")return{contract:c(O(await e(o,{id:s}),i),"contract")};let l=te(c(n,"upcomingBillingCycles")),T=r==="unskip",x=l.find(Ie=>!!c(Ie,"skipped")===T);if(!x)throw new m(T?"nothing skipped":"no upcoming delivery to skip");let Ae={input:{contractId:s,selector:{index:c(x,"cycleIndex")}}};return{billingCycle:c(O(await e(o,Ae),i),"billingCycle")}},async requestReturn(e,{orderId:t,lines:r}){let s=D("Order",t);if(!Array.isArray(r)||!r.length||r.length>50)throw new m("lines");let n=r.map(i=>{let d=Number(c(i,"quantity"));if(!Number.isInteger(d)||d<1||d>1e3)throw new m("quantity");let l={lineItemId:D("LineItem",c(i,"lineItemId")),quantity:d},T=c(i,"reasonId");T&&(l.returnReasonDefinitionId=D("ReturnReasonDefinition",T));let x=U(c(i,"note"),300);return x&&(l.customerNote=x),l}),o=await e(N.returnRequest,{orderId:s,lines:n});return{return:c(O(o,"orderRequestReturn"),"return")}}};var re=null;function ce(e){re=e}function v(){if(!re)throw new Error("account-pages: loaded without the account part");return re}var ve={order:e=>["GET",`/order?id=${encodeURIComponent(String(e.id))}`],addresses:()=>["GET","/addresses"],subscriptions:()=>["GET","/subscriptions"],profile:()=>["POST","/profile"],saveAddress:()=>["POST","/address"],deleteAddress:()=>["POST","/address/delete"],subscription:()=>["POST","/subscription"],requestReturn:()=>["POST","/return"]};async function C(e,t={}){let{serverBase:r,serverFetch:s,query:n}=v();if(r()){let[i,d]=ve[e](t),l=await s(d,i==="POST"?{method:i,body:t}:{});if(l.kind==="logged-out")throw new R("Not logged in",{code:"NOT_LOGGED_IN",status:401});return l.data}let o=de[e];if(!o)throw new R(`Customer accounts: no operation ${e}`);try{return await o(async(i,d)=>await n(i,d),t)}catch(i){throw i instanceof m?new R(i.message,{code:"INVALID",userErrors:i.userErrors}):i}}function B(e){v().reset(),ie("account-updated",{what:e})}async function G(e){return(await C("order",{id:e})).order??null}async function z({firstName:e,lastName:t}={}){let r=await C("profile",{firstName:e,lastName:t});return B("profile"),r.customer}async function K(){return(await C("addresses")).addresses}async function _(e,{id:t,isDefault:r}={}){let s=await C("saveAddress",{id:t,address:e,isDefault:r});return B("addresses"),s.address}async function X(e){let t=await C("deleteAddress",{id:e});return B("addresses"),t.deleted}async function J(){return(await C("subscriptions")).subscriptions}async function Q(e,t){let r=await C("subscription",{id:e,action:t});return B("subscriptions"),r}async function W(e,t){let r=await C("requestReturn",{orderId:e,lines:t});return B("orders"),r.return}var Pe=window.Tether.__core["shopify-values.js"],{STORE_ENV_NAMES:Kt,formatMoney:Xt,isHttpsUrl:Y,isSecretShopifyToken:Jt,productKey:Qt,productUrl:Wt}=Pe;function q(e){try{return new Date(e).toLocaleDateString(oe.locale)}catch(t){if(t instanceof RangeError)return e;throw t}}function f(e,t,r){u(e,a(t)).forEach(s=>{let n=p(s,t)??"";Object.hasOwn(r,n)&&H(s,r[n]===!0)})}var S=(e,t)=>u(e,a(t)).concat(e.matches(a(t))?[e]:[]),$=e=>e?e.toLowerCase().replace(/_/g," "):"",M=e=>(e?.formatted??[]).join(", "),b=(e,t)=>Object.hasOwn(e,t)?e[t]:void 0;var ke=(e,t)=>({title:e.title||e.name,"variant-title":e.variantTitle||"",quantity:String(e.quantity),price:g(e.price),total:g(e.totalPrice),sku:e.sku||"",returnable:t===null?void 0:String(t)}),Ne=e=>e.tagName==="INPUT";function Le(e,t,r){f(e,"order-line-show",{returnable:r>0}),u(e,a("return-quantity")).forEach(s=>{Ne(s)&&(s.max=String(r),s.min="0",s.value||(s.value="0"),s.disabled=r<1)}),u(e,`select${a("return-reason")}`).forEach(s=>{s.dataset.tetherFilled!==t.id&&(s.dataset.tetherFilled=t.id,(t.suggestedReturnReasonDefinitions?.nodes??[]).forEach(n=>{s.appendChild(new Option(n.name,n.id))}))})}function ue(e,t,r){A(e,t,(s,n)=>{let o=n.id,i=r&&o?r.get(o)??0:null;o&&(s.dataset.tetherLine=o);let d=ke(n,i);S(s,"order-line").forEach(l=>{let T=p(l,"order-line")??"";if(T==="image"){n.image&&F(l,n.image.url,n.image.altText||n.title);return}let x=b(d,T);x!==void 0&&h(l,x)}),o&&i!==null&&Le(s,{...n,id:o},i)})}function Ue(e){let t=p(e,"order")||"";return t.startsWith("url:")?new URL(window.location.href).searchParams.get(t.slice(4)||"id"):t}function j(e,t){e.setAttribute(y("order-state"),t),f(e,"order-show",{loading:t==="loading",ready:!1,"not-found":t==="not-found",error:t==="error"})}var Be=e=>({name:e.name,date:q(e.processedAt),total:g(e.totalPrice),subtotal:g(e.subtotal),shipping:g(e.totalShipping),tax:g(e.totalTax),status:$(e.financialStatus),fulfillment:$(e.fulfillmentStatus),"shipping-address":M(e.shippingAddress),"billing-address":M(e.billingAddress),items:e.lineItems.nodes.map(t=>`${t.quantity}\xD7 ${t.title||t.name}`).join(", "),cancelled:e.cancelledAt?q(e.cancelledAt):""});function _e(e,t){let r=t.trackingInformation[0],s={status:$(t.latestShipmentStatus||t.status),date:q(t.createdAt),eta:t.estimatedDeliveryAt?q(t.estimatedDeliveryAt):"",company:r?.company||"",number:r?.number||""};S(e,"fulfillment-bind").forEach(n=>{let o=p(n,"fulfillment-bind")??"";if(o==="url"){let d=r?.url,l=Y(d);l&&d&&n.setAttribute("href",d),H(n,l);return}let i=b(s,o);i!==void 0&&h(n,i)})}function Me(e,t){let r=new Map((t.returnInformation?.returnableLineItems.nodes??[]).map(i=>[i.lineItem?.id??"",i.quantity])),s=t.fulfillments.nodes,n=Be(t);u(e,a("order-bind")).forEach(i=>{let d=p(i,"order-bind")??"";if(d==="url"){t.statusPageUrl&&Y(t.statusPageUrl)&&i.setAttribute("href",t.statusPageUrl);return}let l=b(n,d);l!==void 0&&h(i,l)}),u(e,a("order-lines")).forEach(i=>{ue(i,t.lineItems.nodes,r)}),u(e,a("order-fulfillments")).forEach(i=>{A(i,s,_e)});let o=e.dataset.tetherReturned==="1";f(e,"order-show",{loading:!1,ready:!0,error:!1,"not-found":!1,cancelled:!!t.cancelledAt,shipped:s.length>0,returnable:[...r.values()].some(i=>i>0),"has-returns":!o&&t.returns.nodes.length>0,"return-requested":o}),e.setAttribute(y("order-state"),"ready")}async function Z(e){let t=Ue(e);if(!t){e.setAttribute(y("order-state"),"not-found"),f(e,"order-show",{"not-found":!0});return}j(e,"loading");let r;try{r=await G(t)}catch(s){E(s,"order"),j(e,"error");return}if(!r){j(e,"not-found");return}e.dataset.tetherOrderId=r.id,Me(e,r)}var le=[],fe=e=>le.find(t=>t.id===e),je=e=>({formatted:M(e),name:[e.firstName,e.lastName].filter(Boolean).join(" "),company:e.company||"",address1:e.address1||"",address2:e.address2||"",city:e.city||"",zip:e.zip||"",province:e.province||"",country:e.country||"",phone:e.phoneNumber||""});function Fe(e,t){e.dataset.tetherAddress=t.id;let r=je(t);S(e,"address-bind").forEach(s=>{let n=b(r,p(s,"address-bind")??"");n!==void 0&&h(s,n)}),f(e,"address-show",{default:t.isDefault,"not-default":!t.isDefault})}async function P(e){let t=u(e,a("addresses"));if(!t.length)return;f(e,"show",{"addresses-loading":!0,"addresses-empty":!1});let r;try{r=await K()}catch(s){E(s,"addresses"),f(e,"show",{"addresses-loading":!1,"addresses-error":!0});return}le=r,f(e,"show",{"addresses-loading":!1,"addresses-empty":r.length===0,"addresses-error":!1}),t.forEach(s=>{A(s,r,Fe)})}function He(e){let t=e.upcomingBillingCycles.nodes[0],r=e.status,s=r==="ACTIVE";return{active:s,paused:r==="PAUSED",cancelled:r==="CANCELLED",expired:r==="EXPIRED",failed:r==="FAILED",skipped:!!t?.skipped,"can-pause":s,"can-resume":r==="PAUSED"||r==="FAILED","can-skip":s&&t!==void 0&&!t.skipped,"can-unskip":s&&!!t?.skipped,"can-cancel":s||r==="PAUSED"||r==="FAILED"}}function Ve(e){let t=$(e.deliveryPolicy?.interval);if(!t)return"";let r=e.deliveryPolicy?.intervalCount?.count??1;return r<=1?t:`${r} ${t}s`}function Ge(e){let t=e.lines.nodes,r=t.reduce((s,n)=>s+Number.parseFloat(n.lineDiscountedPrice?.amount??"0"),0);return{status:$(e.status),next:e.nextBillingDate?q(e.nextBillingDate):"",interval:Ve(e),products:t.map(s=>`${s.quantity}\xD7 ${s.title}`).join(", "),total:t.length?g({amount:String(r),currencyCode:e.currencyCode}):"",delivery:g(e.deliveryPrice)}}function ze(e,t){let r={title:t.title,"variant-title":t.variantTitle||"",quantity:String(t.quantity),price:g(t.currentPrice)};S(e,"subscription-line").forEach(s=>{let n=p(s,"subscription-line")??"";if(n==="image"){t.image&&F(s,t.image.url,t.image.altText||t.title);return}let o=b(r,n);o!==void 0&&h(s,o)})}function Ke(e,t){e.dataset.tetherSubscription=t.id,e.setAttribute(y("subscription-status"),$(t.status));let r=Ge(t);u(e,a("subscription-bind")).forEach(n=>{let o=b(r,p(n,"subscription-bind")??"");o!==void 0&&h(n,o)}),u(e,a("subscription-lines")).forEach(n=>{A(n,t.lines.nodes,ze)});let s=He(t);f(e,"subscription-show",s),u(e,a("subscription-action")).forEach(n=>{let o=b(s,`can-${p(n,"subscription-action")??""}`)===!0;"disabled"in n&&(n.disabled=!o),n.classList.toggle("is-disabled",!o)})}async function ee(e){let t=u(e,a("subscriptions"));if(!t.length)return;f(e,"show",{"subscriptions-loading":!0,"subscriptions-empty":!1});let r;try{r=await J()}catch(s){E(s,"subscriptions"),f(e,"show",{"subscriptions-loading":!1,"subscriptions-error":!0});return}f(e,"show",{"subscriptions-loading":!1,"subscriptions-empty":r.length===0,"subscriptions-error":!1}),t.forEach(s=>{A(s,r,Ke)})}var Xe=["pause","resume","skip","unskip","cancel"],Je=e=>Xe.some(t=>t===e),me=e=>e.tagName==="INPUT",he=e=>e.tagName==="FORM";function pe(e){let t={};for(let r of e.elements){if(!me(r)&&r.tagName!=="SELECT"&&r.tagName!=="TEXTAREA")continue;let s=r;!s.name||s.type==="submit"||s.type==="button"||s.type==="checkbox"||(t[s.name]=s.value)}return t}function Qe(e){let r=(e instanceof R?e.userErrors??[]:[]).map(n=>n.message).join(" ");return r||(e instanceof Error&&e.message?e.message:"Something went wrong").replace(/^Customer accounts: /,"")}async function k(e,t){if(e.getAttribute("aria-busy")==="true")return"busy";e.classList.add("is-busy"),e.setAttribute("aria-busy","true"),e.setAttribute(y("form-state"),"pending");let r=u(e,a("form-error"));r.forEach(s=>{h(s,"")});try{return await t(),e.setAttribute(y("form-state"),"saved"),"saved"}catch(s){return e.setAttribute(y("form-state"),"error"),r.forEach(n=>{h(n,Qe(s))}),"error"}finally{e.classList.remove("is-busy"),e.removeAttribute("aria-busy")}}var se=e=>{let t=p(e,"confirm");return!t||window.confirm(t)},ye=e=>{e.reset(),delete e.dataset.tetherAddressId};function We(e){let t=e.target;if(t instanceof window.HTMLFormElement){if(t.matches(a("profile-form")))e.preventDefault(),k(t,async()=>{await z(pe(t)),await v().bindCustomer(document)});else if(t.matches(a("address-form"))){e.preventDefault();let r=t.dataset.tetherAddressId,s=t.elements.namedItem("isDefault"),n=s instanceof window.HTMLInputElement&&s.checked;k(t,async()=>{await _(pe(t),{id:r,isDefault:n}),ye(t),await P(document)})}}}function Ye(e){let t=fe(e),r=document.querySelector(a("address-form"));if(!(!t||!r||!he(r))){r.dataset.tetherAddressId=t.id;for(let s of r.elements){if(!me(s)&&s.tagName!=="SELECT"&&s.tagName!=="TEXTAREA")continue;let n=s;if(n.name==="isDefault")n.checked=t.isDefault;else if(n.name&&Object.hasOwn(t,n.name)){let o=Object.entries(t).find(([i])=>i===n.name)?.[1];n.value=typeof o=="string"?o:""}}r.scrollIntoView({block:"nearest"})}}function Ze(e,t){let r=t.closest("[data-tether-address]"),s=r instanceof window.HTMLElement?r.dataset.tetherAddress:void 0;if(t.closest(a("address-new"))){let o=document.querySelector(a("address-form"));return o&&he(o)&&ye(o),!0}if(!(r instanceof window.HTMLElement)||!s)return!1;let n=t.closest(a("address-delete"));if(n){if(e.preventDefault(),!se(n))return!0;k(r,async()=>{await X(s),await P(document)})}else if(t.closest(a("address-default")))e.preventDefault(),k(r,async()=>{await _(null,{id:s,isDefault:!0}),await P(document)});else if(t.closest(a("address-edit")))e.preventDefault(),Ye(s);else return!1;return!0}function et(e){let t=e.closest("[data-tether-subscription]"),r=p(e,"subscription-action"),s="disabled"in e&&e.disabled===!0||e.classList.contains("is-disabled");if(!(t instanceof window.HTMLElement)||!Je(r)||s||!se(e))return;let n=t.dataset.tetherSubscription??"";t.setAttribute(y("subscription-state"),"pending"),k(t,async()=>{await Q(n,r),await ee(document)}).then(o=>{let i=o==="error"?"error":"done";u(document,"[data-tether-subscription]").filter(d=>d===t||d.dataset.tetherSubscription===n).forEach(d=>{d.setAttribute(y("subscription-state"),i)})})}function tt(e){let t=e.querySelector(a("return-quantity")),r=e.querySelector(a("return-reason")),s=e.querySelector(a("return-note")),n=l=>l&&"value"in l&&typeof l.value=="string"?l.value:"",o={lineItemId:e.dataset.tetherLine??"",quantity:Number.parseInt(n(t)||"0",10)},i=n(r);i&&(o.reasonId=i);let d=n(s);return d&&(o.note=d),o}function rt(e){let t=e.closest(a("order"));if(!(t instanceof window.HTMLElement))return;let r=t.dataset.tetherOrderId;if(!r)return;let s=u(t,"[data-tether-line]").map(tt).filter(n=>n.quantity>0);!s.length||!se(e)||k(t,async()=>{await W(r,s),t.dataset.tetherReturned="1",await Z(t)})}function st(e){let t=e.target;if(!(t instanceof window.Element)||Ze(e,t))return;let r=t.closest(a("subscription-action"));if(r instanceof window.HTMLElement){e.preventDefault(),et(r);return}let s=t.closest(a("order-return"));s instanceof window.HTMLElement&&(e.preventDefault(),rt(s))}function ge(){document.addEventListener("submit",We,!0),document.addEventListener("input",e=>{let t=e.target;t instanceof window.HTMLElement&&t.closest(a("profile-form"))&&(t.dataset.tetherTouched="1")}),document.addEventListener("click",st)}var nt=["firstName","lastName"];async function ot(e){let t=await v().customer().catch(s=>(E(s,"account"),null));if(!t||e.tagName!=="FORM")return;let r=e.elements;nt.forEach(s=>{let n=r.namedItem(s);(n instanceof window.HTMLInputElement||n instanceof window.HTMLTextAreaElement)&&!n.dataset.tetherTouched&&(n.value=t[s]??"")})}var be=!1;async function it(e=document){be||(be=!0,ge()),await Promise.all([...u(e,a("order")).map(t=>Z(t)),...u(e,a("profile-form")).map(t=>ot(t)),P(e),ee(e)])}function at(e){u(e,a("order")).forEach(t=>{j(t,"error")}),f(e,"show",{"addresses-loading":!1,"addresses-error":!0,"subscriptions-loading":!1,"subscriptions-error":!0})}var{Tether:we}=window;if(!we)throw new Error("tether.account-pages.js runs after the Tether script, which loads it");we.__parts["account-pages"]=ne;})();