PageSourceSearch

https://www.ecoatm.com/cdn/shop/t/127/assets/price-your-device.js?v=160148098092566794051790188586

js ecoatm.com collected 2026-10-01 11:30:28 UTC 159,945 bytes, 964 lines download raw bytes

1const LOCKED_CARRIER_HANDLE="locked-to-a-carrier";window.PYD={state:{...window.PYD?.state||{}},config:{GRAPHQL_URL:"https://api.ecoatm.com/omni/v1/graphql/graphql",CHANNELS:["WEB","TRADE_IN"],SHOPIFY_URL:"https://ecoatm-public.myshopify.com/api/2025-04/graphql.json",SHOPIFY_ACCESS_TOKEN:"b5a1a54d256bb415c6098f182d75d015",...window.PYD?.config||{}},allErrorMessages:{email:"Please enter a valid email","payable-to":"Enter a full name","first-name":"Enter a first name","last-name":"Enter a last name",address:"Enter an address","address-1":"Enter an apartment or suite",city:"Enter a city",state:"Enter a state","zip-code":"Enter a ZIP code",phone:"Enter a phone number","payment-address":"Enter a billing address","paypal-email":"Enter a PayPal email address",terms:"Please agree to the terms of service",mailin:"Please select an option","payment-method":"Please select a payment method"},screens:{pyd:"#ti-device-picker",cart:"#ti-cart",checkout:"#ti-checkout",thankYou:"#ti-thank-you"},queries:{brands:`query Brands( $channels: [ChannelName]) {
2      brands(channels: $channels) {
3        id
4        name
5      }
6    }`,categories:`query Categories($channels: [ChannelName]) {
7      categories(channels: $channels) {
8        id
9        name
10      }
11    }`,series:`query Series($brandId: ID!, $categoryId: ID!, $channels: [ChannelName]) {
12      series(brandId: $brandId, categoryId: $categoryId, channels: $channels) {
13        id
14        name
15        readyForSale
16        moratoriumEndDate
17      }
18    }`,models:`query Models($brandId: String!, $categoryId: ID, $seriesId: String) {
19      models(categoryId: $categoryId, brandId: $brandId, seriesId: $seriesId) {
20        id
21        name
22      }
23    }`,storage:`query StorageOptions($brandId: String!, $seriesId: String!, $modelName: String!) {
24      storageOptions(brandId: $brandId, seriesId: $seriesId, modelName: $modelName) {
25        id
26        name
27      }
28    }`,carriers:`query Carriers {
29      carriers {
30        id
31        name
32      }
33    }`,createPackingSlip:`mutation CreatePackingSlip($item: TransactionItemInput!) {
34      checkout(input: {
35        operation: CREATE_PACKING_SLIP,
36        transactionItems: [$item]
37      }) {
38        packingSlip { number }
39      }
40    }`,addOffer:`mutation AddOffer($item: TransactionItemInput!, $packingSlipNumber: String!) {
41      checkout(input: {
42        operation: ADD_OFFER,
43        packingSlipNumber: $packingSlipNumber,
44        transactionItem: $item
45      }) {
46        packingSlip { number }
47      }
48    }`,removeOffer:`
49      mutation RemoveOffer($packingSlipNumber: String!, $offerNumber: String!) {
50        checkout(input: {
51          operation: REMOVE_OFFER,
52          packingSlipNumber: $packingSlipNumber,
53          offerNumber: $offerNumber
54        }) {
55          packingSlip { number }
56        }
57      }
58    `,payout:`query Payout($brandName: String!
59      $modelName: String!
60      $seriesName: String
61      $storageOption: String
62      $carrierName: String
63      $categoryId: ID
64      $powerUp: Boolean
65      $lcdOK: Boolean
66      $cracks: Boolean
67      $additionalPromoQualifiers: JSON
68      $channels: [ChannelName]
69      $countryCode: String
70      $currencyCode: String
71    ) {
72      payout(
73        brandName: $brandName
74        modelName: $modelName
75        seriesName: $seriesName
76        storageOption: $storageOption
77        carrierName: $carrierName
78        categoryId: $categoryId
79        powerUp: $powerUp
80        lcdOK: $lcdOK
81        cracks: $cracks
82        additionalPromoQualifiers: $additionalPromoQualifiers
83        channels: $channels
84        countryCode: $countryCode
85        currencyCode: $currencyCode
86      ) {
87        deviceId
88        offerId
89        pid
90        recyclable
91        promotion {
92          promoCode
93          promoPrice
94          sourceId
95        }
96        offerState
97        offerV3 {
98          amount
99          channel
100          currencyCode
101        }
102      }
103    }`,packingSlip:`query PackingSlip($number: String!) {
104      packingSlip(number: $number) {
105        createdAt
106        email
107        expirationDate
108        id
109        number
110        totalEstimatedValue 
111        totalPayoutBonus
112        totalPromo 
113        totalEstimatedPayment
114        paymentInformation {
115          id
116          payoutType
117          paypalEmail
118          checkAddress {
119            id
120            checkName
121            street1
122            city
123            state
124            zipCode
125            country
126            phoneNumber
127          }
128        }
129        status
130        submittedAt
131        updatedAt
132        shippingInformation {
133          id
134          firstName
135          lastName
136          street1
137          city
138          state
139          zipCode
140          country
141          phoneNumber
142        }
143        shippingOptions {
144          id
145          name
146        }
147        transactionItems {
148          id
149          number
150          product {
151            id
152            name
153            manufacturerName
154            categoryName
155            imageUrl
156          }
157          status
158          estimatedValue
159          actualValue
160          hasEstimatedValue
161          createdAt
162          updatedAt
163        }
164      }
165    }`,deviceFAQ:`
166        query GetDeviceFAQ($handle: MetaobjectHandleInput!) {
167          metaobject(handle: $handle) {
168            handle
169            fields {
170              key
171              value
172            }
173          }
174        }
175      `,verifyAddress:`query VerifyAddress($street1: String!, $city: String!, $state: String!, $zip: String!) {
176        verifyAddress(street1: $street1, city: $city, state: $state, zip: $zip) {
177          city
178          country
179          state
180          street1
181          zip
182        }
183      }`,checkout:`mutation Checkout($input: CheckoutInput!) {
184        checkout(input: $input) {
185          operation
186          packingSlip {
187            id
188            number
189            status
190            email
191            transactionItems {
192              id
193              number
194              product {
195                id
196                name
197                manufacturerName
198                categoryName
199                imageUrl
200              }
201              status
202              estimatedValue
203              actualValue
204              hasEstimatedValue
205              createdAt
206              updatedAt
207            }
208            shippingInformation {
209              id
210              firstName
211              lastName
212              street1
213              city
214              state
215              zipCode
216              country
217              phoneNumber
218            }
219            paymentInformation {
220              id
221              payoutType
222              paypalEmail
223              checkAddress {
224                street1
225                city
226                state
227                zipCode
228                country
229                phoneNumber
230              }
231            }
232            totalEstimatedValue 
233            totalPayoutBonus
234            totalPromo 
235            totalEstimatedPayment
236            #eligibleForBox
237            expirationDate
238            shippingLabelUrl
239            user {
240              email
241              firstName
242              lastName
243            }      
244            createdAt
245            updatedAt
246            submittedAt
247          }
248        }
249      }`},init(){this.parseSettings(),this.initScreen("pyd")},parseSettings(){try{const settings=JSON.parse(document.querySelector("#pyd")?.dataset.settings||"{}");return window.PYD??={},window.PYD.config={...window.PYD.config,...settings},window.PYD_META_TAGS_ENABLED=!!window.PYD.config?.UPDATE_META_TAGS,settings}catch{return{}}},initScreen(defaultScreen){const{["ti-screen"]:screen}=this.getUrlParams(["ti-screen"]),existingScreen=screen&&this.screens[screen]?screen:defaultScreen;this.showScreen(existingScreen)},showScreen(key){const selector=this.screens[key];if(PYD.state.currentScreen=key,!selector){console.error(`Screen key "${key}" is not defined in PYD.screens{}.`);return}
249Object.values(this.screens).forEach(sel=>{const el=document.querySelector(sel);el&&(el.style.display="none",el.setAttribute("hidden",""))});const target=document.querySelector(selector);target?(target.style.display="block",target.removeAttribute("hidden"),PYD.updateUrlParam("ti-screen",key),key==="pyd"&&window.dispatchEvent(new CustomEvent("pageload",{detail:{stepName:selector}}))):console.error(`Element for selector "${selector}" not found.`)},async fetchData(url,query2=null,method="GET",extraHeaders={}){const headers=new Headers({"Content-Type":"application/json",Accept:"application/json",...extraHeaders});let finalUrl=url;const requestOptions={method,query:query2,headers,redirect:"follow"};return method==="GET"?(finalUrl=`${url}?query=${encodeURIComponent(query2.query)}`,query2.variables&&(finalUrl+=`&variables=${encodeURIComponent(JSON.stringify(query2.variables))}`)):(requestOptions.method="POST",requestOptions.body=JSON.stringify({query:query2.query,variables:query2.variables||null})),fetch(finalUrl,requestOptions)},getUrlParams(keys=[]){return Object.fromEntries(keys.map(k=>[k,new URLSearchParams(window.location.search).get(k)||""]))},formatCurrency(value){return value.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})},updateUrlParams(updates){const url=new URL(window.location.href);let hasChanges=!1;Object.entries(updates).forEach(([key,value])=>{const current=url.searchParams.get(key);value?current!==value&&(url.searchParams.set(key,value),hasChanges=!0):current!==null&&(url.searchParams.delete(key),hasChanges=!0)}),hasChanges&&window.history.replaceState({},"",url.toString())},buildCanonicalFromUrl(excludeParams=["ti-screen"]){const url=new URL(window.location.href);return excludeParams.forEach(param=>url.searchParams.delete(param)),`${url.origin}${url.pathname}${url.search}`},updateUrlParam(key,value){this.updateUrlParams({[key]:value})},setSessionStorage:(key,value)=>{const existing=sessionStorage.getItem(key);let dataToStore=value;if(existing&&typeof value=="object"){const parsed=JSON.parse(existing);parsed&&typeof parsed=="object"&&(dataToStore={...parsed,...value})}sessionStorage.setItem(key,JSON.stringify(dataToStore))},getSessionStorage:key=>{try{return JSON.parse(sessionStorage.getItem(key))}catch{return sessionStorage.getItem(key)}},clearSessionStorage:key=>{typeof Storage>"u"||sessionStorage.removeItem(key)},reset(){const PYDForm2=document.querySelector("pyd-form");PYDForm2?.resetDownstream(["brand","series","model","storage","carrier"]),PYDForm2?.disableSubmit(),PYDForm2?.disableQuestions(),PYD.updateUrlParams({brand:null,series:null,model:null,storage:null,carrier:null,q1:null,q2:null,q3:null}),this.state={},PYD.hideAll(".offer-screen").then(()=>{document.querySelector(".device-placeholder")?.classList.remove("hidden")}),this.showScreen("pyd");const scrollTarget=document.getElementById("ti-device-picker");scrollTarget&&scrollTarget.scrollIntoView({behavior:"smooth",block:"start"}),PYDForm2?.init()},resetPYDState(){Object.assign(this.state,{brand:void 0,category:void 0,series:void 0,model:void 0,storage:void 0,carrier:void 0,q1:void 0,q2:void 0,q3:void 0})},hideAll(selector){return new Promise(resolve=>{document.querySelectorAll(selector).forEach(el=>{el.classList.add("hidden")}),resolve()})},async getPriceEstimate(){const activeChannel=document.querySelector("[data-channel]").dataset.channel.split(",").map(s=>s.trim()).filter(s=>s.length);PYD.config.CHANNELS=activeChannel;const countryCode=document.querySelector("[data-country]").dataset.country,currencyCode={US:"USD",CA:"CAD"}[countryCode]||"USD",validPromoParams=PYD.getSessionStorage("socialMarketingPromoUTM"),{brand,category,series,model,storage,carrier,q1,q2,q3}=PYD.state,carrierName=carrier?.handle===LOCKED_CARRIER_HANDLE?"Other":carrier?.name??null,variables={brandName:brand?.name??null,seriesName:series?.name??null,modelName:model?.name??series?.name??null,storageOption:storage?.name??null,carrierName,categoryId:category?.id??null,powerUp:q1.id==="yes",lcdOK:q2.id==="yes",cracks:q3.id==="yes",channels:PYD.config?.CHANNELS??["WEB"],latitude:null,longitude:null,countryCode:countryCode??"US",currencyCode};
249validPromoParams!=null&&Object.keys(validPromoParams).length>0&&(variables.additionalPromoQualifiers=validPromoParams);const data=await(await PYD.fetchData(PYD.config.GRAPHQL_URL,{query:PYD.queries.payout,variables},"POST")).json(),payout=data?.data?.payout||[];document.querySelector(".device-cash-offer")?.classList.add("active"),typeof data.errors<"u"||payout.offerV3==null?PYD.hideAll(".offer-type").then(()=>{document.querySelector(".device-placeholder")?.classList.add("hidden"),document.querySelector(".offer-card")?.classList.remove("hidden"),document.querySelector(".offer-error")?.classList.remove("hidden")}):document.querySelector(".offer-error").classList.add("hidden"),PYD.state.payout=payout},setDeviceInfo:()=>{let sessionData=PYD.getSessionStorage("pyd");const brandName=sessionData&&sessionData.brandName.charAt(0).toUpperCase()+sessionData.brandName.slice(1),categoryName=sessionData&&sessionData.categoryName,modelName=sessionData&&sessionData.modelName,seriesName=sessionData&&sessionData.seriesName,storageOption=sessionData&&sessionData.storageOption,carrierName=sessionData&&sessionData.carrierName,powerUp=sessionData&&sessionData.powerUp,lcdOk=sessionData&&sessionData.lcdOk,cracks=sessionData&&sessionData.cracks,offerPrice=sessionData&&sessionData.offerPrice,promoPrice=sessionData&&sessionData.promoPrice,offerPriceMailIn=sessionData&&sessionData.offerPriceMailIn,offerState=sessionData&&sessionData.offerState?.toLowerCase(),countryCode=document.querySelector("[data-country]").dataset.country,currencyCode={CA:" CAD"}[countryCode]||"",displayName=modelName&&modelName.trim()!==""&&modelName!==seriesName?modelName:seriesName;document.querySelectorAll(".strikethrough-price").forEach(i2=>{i2.innerHTML=""}),document.querySelector(".device-name").innerHTML=`${decodeURIComponent(brandName)} ${decodeURIComponent(displayName)}`,document.querySelector(".device-storage").classList.add("hidden"),storageOption&&(document.querySelector(".device-storage").innerHTML=`${storageOption}`,document.querySelector(".device-storage").classList.remove("hidden")),document.querySelector(".device-carrier").classList.add("hidden"),carrierName&&(document.querySelector(".device-carrier").innerHTML=`${carrierName}`,document.querySelector(".device-carrier").classList.remove("hidden")),document.querySelector(".powers-on.yes").classList.toggle("hidden",powerUp==="no"),document.querySelector(".powers-on.no").classList.toggle("hidden",powerUp!=="no"),document.querySelector(".lights-up.yes").classList.toggle("hidden",lcdOk==="no"),document.querySelector(".lights-up.no").classList.toggle("hidden",lcdOk!=="no"),document.querySelector(".has-cracks.yes").classList.toggle("hidden",cracks!=="no"),document.querySelector(".has-cracks.no").classList.toggle("hidden",cracks==="no");let offerType=document.querySelector(".device-offer").dataset.offerType;PYD.setSessionStorage("pyd",{selectedOfferType:offerType}),PYD.hideAll(".offer-type").then(()=>{if(offerType=="both"&&((offerPrice==null||offerPrice==0)&&(offerType="mailin"),(offerPriceMailIn==null||offerPriceMailIn==0)&&(offerType="kiosk")),offerType=="both"){PYD.setSessionStorage("pyd",{offerDisplayed:"both"}),document.querySelector(".device-placeholder").classList.add("hidden"),document.querySelector(".offer-card").classList.remove("hidden"),document.querySelector(".kiosk-mailin").classList.remove("hidden");let kioskDiscount=1-document.querySelector(".kiosk").dataset.discount/100;kioskDiscount<1&&Math.round(offerPrice*kioskDiscount)<offerPrice&&(document.querySelector("label[for='kiosk-offer'] .strikethrough-price").innerHTML=`$${Math.round(offerPrice*kioskDiscount)}<div class="currency-code">${currencyCode}</div>`),document.querySelector("label[for='kiosk-offer'] .amount:not(.counter)").innerHTML=`${offerPrice}`,PYD.countUp(offerPrice,"label[for='kiosk-offer'] .offer-amount"),document.querySelector("label[for='mailin-offer'] .amount:not(.counter)").innerHTML=`${offerPriceMailIn}`,PYD.countUp(offerPriceMailIn,"label[for='mailin-offer'] .offer-amount"),this.dispatchEvent(new CustomEvent("pyd:condition-completed",{detail:{...PYD.state,stepName:"condition"},bubbles:!0})),this.dispatchEvent(new CustomEvent("pyd:form-completed",{detail:{...PYD.state,stepName:"offer page"},bubbles:!0}))}offerType=="kiosk"&&(PYD.setSessionStorage("pyd",{offerDisplayed:"kiosk"}),document.querySelector(".kiosk")?.classList.remove("hidden"),document.querySelector(".offer-card")?.classList.remove("hidden"),PYD.hideAll(".offer-state").then(()=>
249{if(this.dispatchEvent(new CustomEvent("pyd:screen-loaded",{detail:{screen:offerState?.replaceAll("_","-")},bubbles:!0})),offerState){if(offerState=="base_price"){document.querySelector(".base-price").classList.remove("hidden");let kioskDiscount=1-document.querySelector(".kiosk").dataset.discount/100;kioskDiscount<1&&Math.round(offerPrice*kioskDiscount)<offerPrice&&(document.querySelector(".base-price .strikethrough-price").innerHTML=`$${Math.round(offerPrice*kioskDiscount)}<div class="currency-code">${currencyCode}</div>`),document.querySelector(".base-price .amount:not(.counter)").innerHTML=`${offerPrice}${currencyCode}`,PYD.countUp(offerPrice,".base-price .offer-amount",currencyCode)}if(offerState=="promo_price"){let offerPriceWithPromo=offerPrice+promoPrice,promoPercent=1-document.querySelector(".kiosk").dataset.promoPercent/100;if(promoPercent<1&&Math.round(offerPriceWithPromo*promoPercent)<offerPriceWithPromo)document.querySelector(".promo-price").classList.remove("hidden"),document.querySelector(".promo-price .strikethrough-price").innerHTML=`$${Math.round(offerPriceWithPromo*promoPercent)}<div class="currency-code">${currencyCode}</div>`,document.querySelector(".promo-price .amount:not(.counter)").innerHTML=`${Math.round(offerPriceWithPromo)}${currencyCode}`,PYD.countUp(offerPriceWithPromo,".promo-price .offer-amount",currencyCode);else{let strikethroughPrice=offerPrice,offerPriceWithPromo2=offerPrice+promoPrice;PYD.setSessionStorage("pyd",{offerPrice:offerPriceWithPromo2}),document.querySelector(".promo-price").classList.remove("hidden"),document.querySelector(".promo-price .strikethrough-price").innerHTML=`$${Math.round(strikethroughPrice)}<div class="currency-code">${currencyCode}</div>`,document.querySelector(".promo-price .amount:not(.counter)").innerHTML=`${Math.round(offerPriceWithPromo2)}${currencyCode}`,PYD.countUp(offerPriceWithPromo2,".promo-price .offer-amount",currencyCode)}}if(offerState=="no_lock"){document.querySelector(".no-lock").classList.remove("hidden"),categoryName.toLowerCase()=="tablet"?document.querySelector(".no-lock .tablet").classList.remove("hidden"):document.querySelector(".no-lock .non-tablet").classList.remove("hidden");let kioskDiscount=1-document.querySelector(".kiosk").dataset.discount/100;kioskDiscount<1&&Math.round(offerPrice*kioskDiscount)<offerPrice&&(document.querySelector(".no-lock .strikethrough-price").innerHTML=`$${Math.round(offerPrice*kioskDiscount)}<div class="currency-code">${currencyCode}</div>`),document.querySelector(".no-lock .amount:not(.counter)").innerHTML=`${offerPrice}${currencyCode}`,PYD.countUp(offerPrice,".no-lock .offer-amount",currencyCode)}offerState=="recycle"&&document.querySelector(".recycle").classList.remove("hidden"),offerState=="check_back"&&document.querySelector(".check-back").classList.remove("hidden"),offerState=="device_not_accepted"&&document.querySelector(".device-not-accepted").classList.remove("hidden"),document.querySelector(".device-email").classList.add("hidden"),document.querySelector(".device-dropoff").classList.add("hidden"),document.querySelector(".device-placeholder").classList.add("hidden"),this.dispatchEvent(new CustomEvent("pyd:condition-completed",{detail:{...PYD.state,stepName:"condition"},bubbles:!0})),this.dispatchEvent(new CustomEvent("pyd:form-completed",{detail:{...PYD.state,stepName:"offer page"},bubbles:!0}))}})),offerType=="mailin"&&(document.querySelector(".mailin").classList.remove("hidden"),document.querySelector(".mail-in-error").classList.add("hidden"),offerPriceMailIn<=0||sessionData.productId==""?(PYD.setSessionStorage("pyd",{offerDisplayed:"none"}),document.querySelector(".offer-error").classList.add("hidden"),document.querySelector(".mail-in").classList.add("hidden"),document.querySelector(".mail-in-error").classList.remove("hidden"),this.dispatchEvent(new CustomEvent("pyd:form-completed",{detail:{...PYD.state,stepName:"no price available"},bubbles:!0}))):(PYD.setSessionStorage("pyd",{offerDisplayed:"mail-in"}),document.querySelector(".mail-in").classList.remove("hidden"),document.querySelector(".mailin").classList.remove("hidden"),document.querySelector(".mailin .amount:not(.counter)").innerHTML=`${offerPriceMailIn}`,PYD.countUp(offerPriceMailIn,".mailin .offer-amount")),document.querySelector(".device-placeholder").classList.add("hidden"),document.querySelector(".offer-card").classList.remove("hidden"),this.dispatchEvent(new CustomEvent("pyd:condition-completed",{detail:{...PYD.state,stepName:"condition"},bubbles:!0})),this.dispatchEvent(new CustomEvent("pyd:form-completed",{detail:{...PYD.state,stepName:"offer page"},bubbles:!0})))}),document.querySelector(".ti-pyd-offer").scrollIntoView({behavior:"smooth",block:"start"}),window.dispatchEvent(new CustomEvent("pyd:offer-shown",{detail:PYD.state,bubbles:!0,composed:!0}))},countUp:(countTo,selector,suffix="")=>{suffix!==""&&(suffix=" "+suffix);const el=document.querySelector(`${selector} .counter`);if(!countTo||!el)return;const duration=1e3,start=performance.now(),animate=t=>{const progress=Math.min((t-start)/duration,1),value=Math.floor(progress*countTo);el.textContent=`${value}${suffix}`,progress<1?requestAnimationFrame(animate):el.textContent=`${countTo}${suffix}`};requestAnimationFrame(animate)},copyToClipboard:text=>{navigator.clipboard.writeText(text).then(()=>
249{const copied=document.querySelector(".device-offer .copied");copied.classList.add("show"),setTimeout(()=>{copied.classList.remove("show")},2e3)}).catch(err=>{console.error("Failed to copy:",err)})},updateMetaTags:({title,description,canonical})=>{canonical=(canonical||"").toLowerCase();const upsertMeta=(selector,attributes)=>{let tag=document.querySelector(selector);tag||(tag=document.createElement("meta"),Object.keys(attributes).forEach(key=>{key!=="content"&&tag.setAttribute(key,attributes[key])}),document.head.appendChild(tag)),attributes.content&&tag.setAttribute("content",attributes.content)};title&&(document.title=title),upsertMeta('meta[name="description"]',{name:"description",content:description});let canonicalLink=document.querySelector('link[rel="canonical"]');canonicalLink||(canonicalLink=document.createElement("link"),canonicalLink.setAttribute("rel","canonical"),document.head.appendChild(canonicalLink)),canonical&&canonicalLink.setAttribute("href",canonical),title&&upsertMeta('meta[property="og:title"]',{property:"og:title",content:title}),description&&upsertMeta('meta[property="og:description"]',{property:"og:description",content:description}),canonical&&upsertMeta('meta[property="og:url"]',{property:"og:url",content:canonical}),title&&upsertMeta('meta[name="twitter:title"]',{name:"twitter:title",content:title}),description&&upsertMeta('meta[name="twitter:description"]',{name:"twitter:description",content:description}),canonical&&upsertMeta('meta[name="twitter:url"]',{name:"twitter:url",content:canonical})},capitalize:str=>str.charAt(0).toUpperCase()+str.slice(1),getBrandFromDomain:()=>{const domain=location.hostname.toLowerCase();return domain.includes("ecoatm")?"ecoatm":domain.includes("gazelle")?"gazelle":"ecoatm"},acceptOffer:e=>{document.querySelector("#kiosk-offer").checked==!0&&PYD.setSessionStorage("pyd",{selectedOfferType:"kiosk"}),document.querySelector("#mailin-offer").checked==!0&&PYD.setSessionStorage("pyd",{selectedOfferType:"mailin"});let sessionData=PYD.getSessionStorage("pyd");const offerType=sessionData&&sessionData.selectedOfferType,offerId=sessionData&&sessionData.offerId,productId=sessionData&&sessionData.productId;if(offerType==="kiosk"&&(PYD.getEmail(e),window.dispatchEvent(new CustomEvent("pyd:offer-kiosk",{detail:{...PYD.state,stepName:"offer page"}}))),offerType==="mailin"){let newDevice={productId,offerId};PYD.setSessionStorage("pyd",{currency:"USD"}),window.tradeIn.addItem(newDevice),["brand","series","model","storage","carrier","q1","q2","q3"].forEach(p=>PYD.updateUrlParam(p,null)),window.dispatchEvent(new CustomEvent("pyd:offer-accepted",{detail:PYD.state,bubbles:!0,composed:!0})),PYD.showScreen("cart")}},getEmail:e=>{const combinedVariant=document.querySelector('[data-contact-variant="combined"]'),legacyVariant=document.querySelector('[data-contact-variant="legacy"]');window.PYD_ENABLE_COMBINED_CONTACT?legacyVariant?.remove():combinedVariant?.remove();const countryCode=document.querySelector("[data-country]").dataset.country,currencyCode={CA:" CAD"}[countryCode]||"";document.querySelector("#email-button img")?.classList.remove("hidden"),document.querySelector("#email-button .pyd-spinner")?.classList.add("hidden"),document.querySelector("#phone-button img")?.classList.remove("hidden"),document.querySelector("#phone-button .pyd-spinner")?.classList.add("hidden"),PYD.enableButton("#email-button"),PYD.enableButton("#phone-button"),document.querySelector(".kiosk-mailin").classList.add("hidden"),document.querySelector(".kiosk").classList.remove("hidden");let sessionData=PYD.getSessionStorage("pyd");document.querySelectorAll(".offer-state").forEach(el=>{el.classList.add("hidden")}),document.querySelector(".device-email").classList.remove("hidden");const combinedEmailInput=document.querySelector('.combined-contact-form input[name="email-address"]');if(combinedEmailInput&&(PYD.updateContactButtonState(),combinedEmailInput.oninput=PYD.updateContactButtonState),sessionData?.offerState.toLowerCase()=="promo_price"){let offerPriceWithPromo=sessionData?.offerPrice+sessionData?.promoPrice,promoPercent=1-document.querySelector(".kiosk").dataset.promoPercent/100;promoPercent<1&&Math.round(offerPriceWithPromo*promoPercent)<offerPriceWithPromo?document.querySelector(".device-email .strikethrough-price").innerHTML=`$${Math.round(offerPriceWithPromo*promoPercent)}<div class="currency-code">${currencyCode}</div>`:document.querySelector(".device-email .strikethrough-price").innerHTML=`$${Math.round(se
249ssionData?.offerPrice-sessionData?.promoPrice)}<div class="currency-code">${currencyCode}</div>`,document.querySelector(".device-email .amount:not(.counter)").innerHTML=`${offerPriceWithPromo}${currencyCode}`,document.querySelector(".device-email .amount.counter").innerHTML=`${offerPriceWithPromo}${currencyCode}`}else{let kioskDiscount=1-document.querySelector(".kiosk").dataset.discount/100;kioskDiscount<1&&Math.round(sessionData.offerPrice*kioskDiscount)<sessionData.offerPrice&&(document.querySelector(".device-email .strikethrough-price").innerHTML=`$${Math.round(sessionData.offerPrice*kioskDiscount)}<div class="currency-code">${currencyCode}</div>`),document.querySelector(".device-email .amount:not(.counter)").innerHTML=`${sessionData.offerPrice}${currencyCode}`,document.querySelector(".device-email .amount.counter").innerHTML=`${sessionData.offerPrice}${currencyCode}`}this.dispatchEvent(new CustomEvent("pyd:screen-loaded",{detail:{screen:"contact-form"},bubbles:!0}))},disableButton:selector=>{let targetButton=document.querySelector(selector);targetButton?.setAttribute("disabled","disabled"),targetButton?.classList.add("disabled"),targetButton?.setAttribute("disabled","true"),targetButton?.style&&(targetButton.style.pointerEvents="none"),targetButton?.style&&(targetButton.style.opacity=.5)},enableButton:selector=>{let targetButton=document.querySelector(selector);targetButton?.removeAttribute("disabled","disabled"),targetButton?.classList.remove("disabled"),targetButton?.removeAttribute("disabled","true"),targetButton?.style&&(targetButton.style.pointerEvents="auto"),targetButton?.style&&(targetButton.style.opacity=1)},updateContactButtonState:()=>{if(!document.querySelector(".combined-contact-form"))return;const emailAddress=document.querySelector('input[name="email-address"]')?.value.trim()||"";PYD.validateEmail(emailAddress)?PYD.enableButton("#email-button"):PYD.disableButton("#email-button")},getOfferCodeEmail:e=>{PYD.disableButton("#email-button");const emailAddress=document.querySelector('input[name="email-address"]').value.trim();PYD.validateEmail(emailAddress)===!1?(document.querySelector(".input-email").classList.add("error"),document.querySelector('input[name="email-address"]').addEventListener("input",PYD.errorMessageRemove),PYD.enableButton("#email-button")):(document.querySelector(".input-email").classList.remove("error"),document.querySelector("#email-button img")?.classList.add("hidden"),document.querySelector("#email-button .pyd-spinner").classList.remove("hidden"),PYD.setSessionStorage("pyd",{emailAddress}),PYD.state.emailAddress=emailAddress,PYD.getOfferCode("email"))},getOfferCodePhone:e=>{PYD.disableButton("#phone-button");const phone=document.querySelector('input[name="phone-number"]').value.trim();PYD.validatePhone(phone)===!1?(document.querySelector(".error-message.phone-error")?.classList.remove("hidden"),document.querySelector(".error-message.checkbox-error")?.classList.add("hidden"),document.querySelector(".input-phone")?.classList.add("error"),document.querySelector('input[name="phone-number"]').addEventListener("input",PYD.errorMessageRemove),PYD.enableButton("#phone-button")):document.querySelector("#text-subscribe")?.dataset.requireConsent!=="false"&&!document.querySelector('#text-subscribe input[type="checkbox"]')?.checked?(document.querySelector(".error-message.checkbox-error")?.classList.remove("hidden"),document.querySelector(".error-message.phone-error")?.classList.add("hidden"),document.querySelector(".input-phone")?.classList.add("error"),PYD.enableButton("#phone-button")):(document.querySelector(".input-phone")?.classList.remove("error"),document.querySelector(".error-message.checkbox-error")?.classList.add("hidden"),document.querySelector(".error-message.phone-error")?.classList.add("hidden"),document.querySelector("#phone-button img")?.classList.add("hidden"),document.querySelector("#phone-button .pyd-spinner")?.classList.remove("hidden"),PYD.setSessionStorage("pyd",{phoneNumber:phone}),PYD.state.phone=phone,PYD.getOfferCode("phone"))},getOfferCodeContact:e=>{PYD.disableButton("#email-button");const emailAddress=document.querySelector('input[name="email-address"]').value.trim();if(PYD.validateEmail(emailAddress)===!1){document.querySelector(".input-email").classList.add("error"),document.querySelector('input[name="email-address"]').addEventListener("input",PYD.errorMessageRemove),PYD.enableButton("#email-button");return}document.querySelector(".input-email").classList.remove("error");const phoneInput=document.querySelector('input[name="phone-number"]'),phone=phoneInput?phoneInput.value.trim():"";if(phone&&PYD.validatePhone(phone)===!1){document.querySelector(".error-message.phone-error")?.classList.remove("hidden"),document.querySelector(".input-phone")?.classList.add("error"),phoneInput.addEventListener("input",PYD.errorMessageRemove),PYD.enableButton("#email-button");return}document.querySelector(".input-phone")?.classList.remove("error"),document.querySelector(".error-message.phone-error")?.classList.add("hidden"),document.querySelector("#email-button img")?.classList.add("hidden"),document.querySelector("#email-button .pyd-spinner")?.classList.remove("hidden"),PYD.setSessionStorage("pyd",{emailAddress,phoneNumber:phone||void 0}),PYD.state.emailAddress=emailAddress,PYD.state.phone=phone||void 0,PYD.getOfferCode("email")},getOfferCode:type=>{const countryCode=document.querySelector("[data-country]").dataset.country,currencyCode={CA:" CAD"}[countryCode]||"";let sessionData=PYD.getSessionStorage("pyd"),apiUrl=`${PYD.config.GRAPHQL_URL}/graphql`,moneyLionExist=!1,moneyLionElement=document.getElementById("moneyLionMain");moneyLionElement&&moneyLionElement.style.display!=="none"&&(moneyLionExist=!0);let optimizelyDecisionData=PYD.getSessionStorage("optimizelyDecisionData"),metaData={moneylionVisible:moneyLionExist,optimizelyDecisionData,referringDomain:window.location.hostname};const sessionKeys={pyd_gclid:"gclid",pyd_msclkid:"msclkid",pyd_fbclid:"fbclid"};
249Object.keys(sessionKeys).forEach(storageKey=>{const value=sessionStorage.getItem(storageKey);value&&(metaData[sessionKeys[storageKey]]=value)}),PYD.handleNewsletterSubscribe();let stepName=sessionData.emailAddress&&sessionData.phoneNumber?"enter email and phone":"enter "+type;this.dispatchEvent(new CustomEvent("pyd:enter-contact",{detail:{...PYD.state,stepName},bubbles:!0,composed:!0}));var graphql={query:`mutation DropOffCode(
250        $DeviceId: String!
251        ${sessionData.emailAddress?"$Email: String":""}
252        ${sessionData.phoneNumber?"$phoneNumber: String":""}
253        $OfferId: String
254        $scratches: Boolean
255        $cracks: Boolean
256        $powerUp: Boolean
257        $lcdOk: Boolean
258        $channelName: ChannelName
259        $v2PaymentInfo: PaymentInfoV2Input
260        $codeType: String
261        $metadata: JSON
262      ) {
263        dropOffCode(
264          DeviceId: $DeviceId
265          ${sessionData.emailAddress?"Email: $Email":""}
266          ${sessionData.phoneNumber?"phoneNumber: $phoneNumber":""}
267          OfferId: $OfferId
268          scratches: $scratches
269          cracks: $cracks
270          powerUp: $powerUp
271          lcdOk: $lcdOk
272          channelName: $channelName
273          v2PaymentInfo: $v2PaymentInfo
274          codeType: $codeType
275          metadata: $metadata
276        ) {
277          Code
278          ChannelName
279          CodeVersion
280          CreationDateTime
281          DevicePriceId
282          ${sessionData.emailAddress?"Email":""}
283          ${sessionData.phoneNumber?"PhoneNumber":""}
284          ExpirationDateTime
285          Id
286          Price
287          PriceGrade
288        }
289      }`,variables:{DeviceId:sessionData.deviceId,Email:sessionData.emailAddress,OfferId:sessionData.offerId,scratches:sessionData.cracks==="yes",cracks:sessionData.cracks==="yes",powerUp:sessionData.powerUp==="yes",lcdOk:sessionData.lcdOk==="yes",channelName:"WEB",codeType:"W",metadata:metaData,...sessionData.emailAddress&&{Email:sessionData.emailAddress.toLowerCase()},...sessionData.phoneNumber&&{phoneNumber:sessionData.phoneNumber}}};PYD.fetchData(apiUrl,graphql,"POST").then(response=>response.json()).then(results=>{if(results.errors&&results.errors.length>0){let error=results.errors[0],errorData={apiUrl,query:graphql};PYD.handleError("Error caught while fetching DropOffCode",error,errorData)}else{let offer=results.data.dropOffCode;PYD.setSessionStorage("pyd",{createdAt:offer.CreationDateTime,expiryDate:offer.ExpirationDateTime,kioskCode:offer.Code,currency:"USD"});let sessionData2=PYD.getSessionStorage("pyd");if(PYD.state.kioskCode=offer.Code,this.dispatchEvent(new CustomEvent("pyd:thank-you",{detail:{...PYD.state,stepName:"thank you page"},bubbles:!0,composed:!0})),document.querySelector(".device-email")?.classList.add("hidden"),document.querySelector(".device-dropoff")?.classList.remove("hidden"),document.querySelector(".offer-code .code")&&(document.querySelector(".offer-code .code").innerHTML=`${offer.Code}`),document.querySelector(".expire-date span")&&(document.querySelector(".expire-date span").innerHTML=` Expires ${PYD.formatDate(offer.ExpirationDateTime)}`),sessionData2?.offerState.toLowerCase()=="promo_price"){let offerPriceWithPromo=sessionData2?.offerPrice+sessionData2?.promoPrice,promoPercent=1-document.querySelector(".kiosk").dataset.promoPercent/100;promoPercent<1&&Math.round(offerPriceWithPromo*promoPercent)<offerPriceWithPromo?document.querySelector(".device-dropoff .strikethrough-price").innerHTML=`$${Math.round(offerPriceWithPromo*promoPercent)}<div class="currency-code">${currencyCode}</div>`:document.querySelector(".device-dropoff .strikethrough-price").innerHTML=`$${Math.round(sessionData2?.offerPrice-sessionData2?.promoPrice)}<div class="currency-code">${currencyCode}</div>`,document.querySelector(".device-dropoff .amount:not(.counter)").innerHTML=`${offerPriceWithPromo}${currencyCode}`,document.querySelector(".device-dropoff .amount.counter").innerHTML=`${offerPriceWithPromo}${currencyCode}`}else{let kioskDiscount=1-document.querySelector(".kiosk").dataset.discount/100;kioskDiscount<1&&Math.round(sessionData2.offerPrice*kioskDiscount)<sessionData2.offerPrice&&(document.querySelector(".device-dropoff .strikethrough-price").innerHTML=`$${Math.round(se
289ssionData2.offerPrice*kioskDiscount)}<div class="currency-code">${currencyCode}</div>`),document.querySelector(".device-dropoff .amount:not(.counter)").innerHTML=`${sessionData2.offerPrice}${currencyCode}`,document.querySelector(".device-dropoff .amount.counter").innerHTML=`${sessionData2.offerPrice}${currencyCode}`}PYD.sendOffer(),PYD.clearSessionStorage("pyd")}}).catch(error=>{PYD.hideAll(".offer-type").then(()=>{error.code=="VALIDATION_ERROR"?(document.querySelector(".input-email")?.classList.add("error"),document.querySelector("#email-button img")?.classList.remove("hidden"),document.querySelector("#email-button .pyd-spinner")?.classList.add("hidden"),document.querySelector(".kiosk")?.classList.remove("hidden"),PYD.enableButton("#email-button")):(document.querySelector(".device-placeholder")?.classList.add("hidden"),document.querySelector(".offer-card")?.classList.remove("hidden"),document.querySelector(".offer-error")?.classList.remove("hidden"))});let errorData={apiUrl,query:graphql};PYD.handleError("Error caught while fetching DropOffCode",error,errorData)})},handleNewsletterSubscribe:()=>{const newsletterInputs=document.querySelectorAll('.contact-form input[name="method"]'),sessionData=PYD.getSessionStorage("pyd");newsletterInputs.length?newsletterInputs.forEach(input=>{input.checked&&input.getAttribute("id")=="email-method"&&document.querySelector("#email-newsletter").checked&&(PYD.setSessionStorage("pyd",{emailSubscribed:!0}),PYD.subscribeToNewsletter(sessionData.emailAddress.toLowerCase(),PYD.getBrandFromDomain(),PYD.config.NEWSLETTER_SOURCE))}):document.querySelector("#email-newsletter")?.checked&&sessionData.emailAddress&&(PYD.setSessionStorage("pyd",{emailSubscribed:!0}),PYD.subscribeToNewsletter(sessionData.emailAddress.toLowerCase(),PYD.getBrandFromDomain(),PYD.config.NEWSLETTER_SOURCE))},setSessionStorage:(key,value)=>{const existing=sessionStorage.getItem(key);let dataToStore=value;if(existing&&typeof value=="object"){const parsed=JSON.parse(existing);parsed&&typeof parsed=="object"&&(dataToStore={...parsed,...value})}sessionStorage.setItem(key,JSON.stringify(dataToStore))},getSessionStorage:key=>{try{return JSON.parse(sessionStorage.getItem(key))}catch{return sessionStorage.getItem(key)}},clearSessionStorage:key=>{typeof Storage>"u"||sessionStorage.removeItem(key)},handleize:(input="")=>input?input.trim().toString().toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/&/g,"-and-").replace(/\+/g,"-plus-").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-"):"",validateEmail:email=>!!/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email),validatePhone:phone=>{const cleaned=phone.replace(/[^\d]/g,"");return!!/^(\d{10}|\d{11})$/.test(cleaned)},validateZip:zip=>!!/^\d{5}(-\d{4})?$/.test(zip),formatDate:isoString=>{const date=new Date(isoString),options={month:"short",day:"2-digit",year:"numeric",timeZone:"UTC"};return date.toLocaleDateString("en-US",options)},formatPhoneNumber:input=>{let value=input.value.replace(/\D/g,""),formattedValue="";value==""&&input.classList.remove("filled"),value.length>0&&(input.classList.add("filled"),formattedValue=value.substring(0,3)),value.length>=4&&(formattedValue+="-"+value.substring(3,6)),value.length>=7&&(formattedValue+="-"+value.substring(6,10)),input.value=formattedValue},formatAddress:({street1,city,state,zip})=>`${street1}<br>${city}, ${state} ${zip}`,errorMessageRemove:e=>{const input=e.target;input.value==""&&(input.closest(".contact-form-container").classList.remove("error"),input.removeEventListener("input",PYD.errorMessageRemove))},handleError(message,error,payout){throw console.error(message,error),window.ecoATMTheme.sendLogsToDataDog({error,message,payload:{apiURL:payout?.apiUrl,query:payout?.query}}),error},deActivateErrorCard:()=>{document.querySelector(".offer-screen.device-error")?.classList.add("hidden"),document.querySelector(".offer-screen.device-placeholder")?.classList.remove("hidden"),document.querySelector(".offer-screen.offer-card")?.classList.add("hidden")},activateErrorCard:()=>{if(document.querySelector(".offer-screen.device-placeholder")?.classList.add("hidden"),document.querySelector(".offer-screen.device-error")?.classList.remove("hidden"),document.querySelector(".offer-screen.offer-card")?.classList.add("hidden"),window.innerWidth<650){const target=document.getElementById("estimate-button");target&&target.scrollIntoView({behavior:"smooth",block:"start"})}},sendOffer:e=>{let sessionData=PYD.getSessionStorage("pyd"),apiUrl=`${PYD.config.GRAPHQL_URL}}/graphql`;var graphql={query:`mutation SendDropoffCode($input: SendDropoffCodeInput) {
290        sendDropoffCode(input: $input)
291      }`,variables:{input:{kioskCode:sessionData.kioskCode,deviceId:sessionData.deviceId,offerId:sessionData.offerId}}};PYD.fetchData(apiUrl,graphql,"POST").then(response=>response.json()).then(results=>{console.log(results)}).catch(error=>{let errorData={apiUrl,query:graphql};PYD.handleError("Error caught while fetching sendDropoffCode",error,errorData)})},subscribeToNewsletter:(email,domain,contactSourceDetail)=>new Promise((resolve,reject)=>{let apiUrl=`${PYD.config.GRAPHQL_URL}/graphql`;var graphql={query:`mutation subscribeToNewsletter($input: NewsletterSubscribeInput!) {
292          subscribeToNewsletter(input: $input)
293        }`,variables:{input:{referringDomain:window.location.hostname,emailAddress:email,domain,contactSourceDetail}}};PYD.fetchData(apiUrl,graphql,"POST").then(response=>response.json()).then(results=>{resolve(results)}).catch(error=>{let errorData={apiUrl,query:graphql};PYD.handleError("Error caught while fetching subscribeToNewsletter",error,errorData),reject(error)})}),validateAddressesAndSubmit:async function(customerData){const mailingUserInputAddress=document.querySelector(".gpyd-m-checkout__confirm-ad
293dress--mailing [user-input-address]");mailingUserInputAddress&&(mailingUserInputAddress.innerHTML=PYD.formatAddress({street1:customerData.customerAddress,city:customerData.customerCity,state:customerData.customerState,zip:customerData.customerZip}));const primary=await PYD.verifyShippingAddress({street1:customerData.customerAddress,city:customerData.customerCity,state:customerData.customerState,zip:customerData.customerZip});if(primary){VERIFIED_MAIN_ADDRESS=primary;const mailingVerifiedAddress=document.querySelector(".gpyd-m-checkout__confirm-address--mailing [verified-address]");mailingVerifiedAddress&&(mailingVerifiedAddress.innerHTML=PYD.formatAddress({street1:primary.street1,city:primary.city,state:primary.state,zip:primary.zip}))}const useSameAddress=!!document.querySelector(".checkout-payment-options")?.shadowRoot.querySelector(".gpyd-m-checkout__check-address checkbox-input")?.shadowRoot.querySelector('input[type="checkbox"]')?.checked,checkAddress=customerData.checkCustomerAddress,hasCheckAddress=checkAddress&&checkAddress.customerAddress&&checkAddress.customerCity&&checkAddress.customerState&&checkAddress.customerZip;let secondary=null;if(useSameAddress==!0)secondary=primary,VERIFIED_CHECK_ADDRESS=primary;else if(hasCheckAddress){const checkUserInputAddress=document.querySelector(".gpyd-m-checkout__confirm-address--check [user-input-address]");if(checkUserInputAddress&&(checkUserInputAddress.innerHTML=PYD.formatAddress({street1:checkAddress.customerAddress,city:checkAddress.customerCity,state:checkAddress.customerState,zip:checkAddress.customerZip})),secondary=await PYD.verifyShippingAddress({street1:checkAddress.customerAddress,city:checkAddress.customerCity,state:checkAddress.customerState,zip:checkAddress.customerZip}),secondary){VERIFIED_CHECK_ADDRESS=secondary;const checkVerifiedAddress=document.querySelector(".gpyd-m-checkout__confirm-address--check [verified-address]");checkVerifiedAddress&&(checkVerifiedAddress.innerHTML=PYD.formatAddress({street1:secondary.street1,city:secondary.city,state:secondary.state,zip:secondary.zip}))}}CUSTOMER_DATA={...customerData};const normalize=str=>(str||"").trim().toUpperCase();let isMainSameAddress=!0;primary&&(isMainSameAddress=normalize(customerData.customerAddress)===normalize(primary.street1)&&normalize(customerData.customerCity)===normalize(primary.city)&&normalize(customerData.customerState)===normalize(primary.state)&&normalize(primary.zip).includes(normalize(customerData.customerZip)));let isCheckSameAddress=!0;if(!useSameAddress&&secondary&&(isCheckSameAddress=normalize(checkAddress.customerAddress)===normalize(secondary.street1)&&normalize(checkAddress.customerCity)===normalize(secondary.city)&&normalize(checkAddress.customerState)===normalize(secondary.state)&&normalize(secondary.zip).includes(normalize(checkAddress.customerZip))),isMainSameAddress&&isCheckSameAddress)PYD.moveToThankYou();else{document.querySelector(".gpyd-m-checkout__confirm-sale")?.removeAttribute("disabled");const leftInner=document.querySelector(".gpyd-m-checkout__left-inner");leftInner&&leftInner.classList.add("inactive");const address=document.querySelector(".gpyd-m-checkout__confirm-address");address&&address.classList.add("active"),window.scrollTo(0,0)}},async moveToThankYou(){document.querySelector(".gpyd-m-checkout__confirm-address--submit")?.setAttribute("disabled","true");const mailInUserVerifiedAddress=document.querySelector('[data-name="user-default-address-mailin"]'),checkUserVerifiedAddress=document.querySelector('[data-name="user-default-address-check"]');let useVerifiedMainAddress=!1,useVerifiedCheckAddress=!1;if(mailInUserVerifiedAddress?.shadowRoot){const checkbox=mailInUserVerifiedAddress.shadowRoot.querySelector('input[type="checkbox"]');checkbox&&(useVerifiedMainAddress=checkbox.checked)}if(checkUserVerifiedAddress?.shadowRoot){const checkbox=checkUserVerifiedAddress.shadowRoot.querySelector('input[type="checkbox"]');checkbox&&(useVerifiedCheckAddress=checkbox.checked)}Object.entries(CUSTOMER_ADDRESS).forEach(([id,value])=>{const el=document.getElementById(id);el&&(el.textContent=value)});let customerMainDataForPackingSlip={...CUSTOMER_DATA};
293if(useVerifiedMainAddress&&VERIFIED_MAIN_ADDRESS){const verifiedMap={customerAddress:VERIFIED_MAIN_ADDRESS.street1||"",customerCity:VERIFIED_MAIN_ADDRESS.city||"",customerState:VERIFIED_MAIN_ADDRESS.state||"",customerZip:VERIFIED_MAIN_ADDRESS.zip||""};Object.entries(verifiedMap).forEach(([id,value])=>{const el=document.getElementById(id);el&&(el.textContent=value)}),customerMainDataForPackingSlip={...customerMainDataForPackingSlip,customerAddress:VERIFIED_MAIN_ADDRESS.street1,customerCity:VERIFIED_MAIN_ADDRESS.city,customerState:VERIFIED_MAIN_ADDRESS.state,customerZip:VERIFIED_MAIN_ADDRESS.zip}}useVerifiedCheckAddress&&VERIFIED_CHECK_ADDRESS&&(customerMainDataForPackingSlip={...customerMainDataForPackingSlip,checkCustomerAddress:{...customerMainDataForPackingSlip.checkCustomerAddress,customerAddress:VERIFIED_CHECK_ADDRESS.street1,customerCity:VERIFIED_CHECK_ADDRESS.city,customerState:VERIFIED_CHECK_ADDRESS.state,customerZip:VERIFIED_CHECK_ADDRESS.zip}});const selectedShippingOptionId=document.getElementById("shippingOptions")?.shadowRoot?.querySelector('input[type="radio"]:checked')?.value||null;if(await PYD.submitPackingSlip(customerMainDataForPackingSlip,selectedShippingOptionId)){window.dispatchEvent(new CustomEvent("tradeIn:thankYouLoaded",{detail:{...PYD.state,stepName:"thank you mail-in"}})),document.querySelector('checkbox-input[data-name="subscribe"]')?.shadowRoot?.querySelector('input[type="checkbox"]')?.checked&&PYD.subscribeToNewsletter(CUSTOMER_DATA.customerEmail,PYD.getBrandFromDomain(),PYD.config.NEWSLETTER_SOURCE),document.querySelector(".gpyd-m-checkout__confirm-address--submit")?.removeAttribute("disabled"),window.tradeIn.deletePackingSlipFromStorage();const nextStepsCard=document.querySelector(".gpyd-m-checkout__thank-you--card-2-row.row-2"),descriptionContainer=nextStepsCard.querySelector(".gpyd-m-checkout__description"),labelText=descriptionContainer?.getAttribute("data-label-text")||"Print out your shipping label, then pack & ship your device(s).",boxText=descriptionContainer?.getAttribute("data-label-box")||"Wait for your box to arrive, then pack & ship your device(s).",mailInState=PYD.getSessionStorage("pyd").mailInMethod;descriptionContainer.innerHTML=mailInState==="Get a box sent to you"?boxText:labelText;const leftInner=document.querySelector(".gpyd-m-checkout__left-inner");leftInner&&leftInner.classList.add("inactive");const confirmSection=document.querySelector(".gpyd-m-checkout__confirm-address"),thankYouSection=document.querySelector(".gpyd-m-checkout__thank-you");confirmSection?.classList.remove("active"),thankYouSection?.classList.add("active"),window.scrollTo(0,0),document.querySelector(".gpyd-m-checkout__confirm-address--submit")?.removeAttribute("disabled"),document.querySelector(".gpyd-m-checkout__confirm-sale")?.removeAttribute("disabled"),PYD.clearSessionStorage("pyd")}else document.querySelector(".gpyd-m-checkout__confirm-address--submit")?.removeAttribute("disabled"),document.querySelector(".gpyd-m-checkout__confirm-sale")?.removeAttribute("disabled"),console.error("Packing slip submission failed.")},showCheckoutErrorMessage:type=>{let selector="input-address";document.querySelector(".gpyd-m-checkout__left .gpyd-m-checkout__confirm-address")?.classList.contains("active")&&(selector="verify-address"),document.querySelector(".gpyd-m-checkout__confirm-sale")?.removeAttribute("disabled"),document.querySelector(".gpyd-m-checkout__confirm-address--submit")?.removeAttribute("disabled"),document.querySelectorAll(".ti-checkout__error-popup .ti-checkout__error-popup--content").forEach(el=>{el.classList.remove("active")}),document.querySelector(`.ti-checkout__error-popup[data-type="${selector}"]`)?.classList.add("active"),document.querySelector(`.ti-checkout__error-popup[data-type="${selector}"] .ti-checkout__error-popup--content[data-type="${type}"]`)?.classList.add("active")},hideCheckoutErrorMessage:()=>{document.querySelectorAll(".ti-checkout__error-popup").forEach(popup=>{popup.classList.remove("active")}),document.querySelectorAll(".ti-checkout__error-popup--content").forEach(popup=>{popup.classList.remove("active")})},setMailInMethods:shippingOptions=>{const options=[],fallback=shippingOptions.find(opt=>opt.name!=="obb");fallback&&options.push({value:fallback.id.toString(),title:"Print a Shipping Label",caption:"Sent via email"});const obbOption=shippingOptions.find(opt=>opt.name==="obb");obbOption&&options.length<2&&options.push({value:obbOption.id.toString(),title:"Get a box sent to you",caption:"6 - 7 days to arrive"});const radioGroup=document.getElementById("shippingOptions");
293if(radioGroup&&(radioGroup.setAttribute("data-options",JSON.stringify(options)),options.length===1)){const shadow=radioGroup.shadowRoot;if(shadow){const radio=shadow.querySelector('input[type="radio"]');radio&&(radio.checked=!0,radio.dispatchEvent(new Event("change",{bubbles:!0})));const radioOption=shadow.querySelector(".radio-option.checked");radioOption&&radioOption.classList.add("hide-radio")}}},gettingPackingSlip:async paymentType=>{const packingSlip=await window.tradeIn.getPackingSlip(),isCheckoutPage=window.location.search.includes("ti-screen=checkout");if(!packingSlip&&isCheckoutPage){const baseUrl=window.location.origin+window.location.pathname;window.location.href=baseUrl;return}if(!packingSlip)return;const items=packingSlip.transactionItems||[],html=`
294      <div class="gpyd-m-checkout__right-summary--content gpyd-m-checkout__description">
295        ${items.map(item=>`
296          <div class="gpyd-m-checkout__right-summary--content-row">
297            <div>${item.product.name}</div>
298            <div>$${item.estimatedValue.toFixed(2)}</div>
299          </div>
300        `).join("")}
301      </div>
302    `;packingSlip.shippingOptions&&PYD.setMailInMethods(packingSlip.shippingOptions),new MutationObserver((mutations,obs)=>{const containers=document.querySelectorAll(".gpyd-m-checkout__right-summary");containers.length>0&&(containers.forEach(container=>{container.innerHTML=html}),obs.disconnect())}).observe(document.body,{childList:!0,subtree:!0});const subTotal=packingSlip.totalEstimatedValue||0,promoPrice=packingSlip.totalPromo||0;let amazonGiftcardPrice=packingSlip.totalPayoutBonus||0,totalPrice=packingSlip.totalEstimatedPayment||0,showPromoPrice=!1;paymentType=="Amazon Gift Card"&&amazonGiftcardPrice==0&&(amazonGiftcardPrice=parseFloat((subTotal*.015).toFixed(2)),totalPrice=parseFloat((subTotal+promoPrice+amazonGiftcardPrice).toFixed(2))),PYD.setSessionStorage("pyd",{promotionalBonus:promoPrice,coupon:""});function updateElementsTextRaw(selector,value,prefix="$"){document.querySelectorAll(selector).forEach(el=>{el.textContent=`${prefix}${value}`})}function updateElementsText(selector,value,prefix="$"){document.querySelectorAll(selector).forEach(el=>{el.textContent=`${prefix}${value.toFixed(2)}`})}function addClassToElement(selector,newClass){document.querySelectorAll(selector).forEach(el=>{el.classList.add(newClass)})}function removeClassFromElement(selector,newClass){document.querySelectorAll(selector).forEach(el=>{el.classList.remove(newClass)})}const itemCount=items.length;document.querySelectorAll(".gpyd-m-checkout__right-subtotal--amount-count").forEach(span=>{span.textContent=itemCount===1?"1 item":`${itemCount} items`}),updateElementsTextRaw(".gpyd-m-checkout__right-subtotal--amount-number",PYD.formatCurrency(subTotal)),showPromoPrice?(updateElementsText(".gpyd-m-checkout__right-promo--amount-number",promoPrice),removeClassFromElement(".gpyd-m-checkout__right-promo","inactive")):addClassToElement(".gpyd-m-checkout__right-promo","inactive"),paymentType=="Amazon Gift Card"?(updateElementsText(".gpyd-m-checkout__right-amazon--amount-number",amazonGiftcardPrice),removeClassFromElement(".gpyd-m-checkout__right-amazon","inactive")):addClassToElement(".gpyd-m-checkout__right-amazon","inactive"),updateElementsTextRaw(".gpyd-m-checkout__right-total--amount-number",PYD.formatCurrency(totalPrice)),updateElementsTextRaw(".gpyd-m-checkout__summary-top-amount",PYD.formatCurrency(totalPrice))},submitPackingSlip:async(customerData,selectedShippingOptionId)=>{let input={operation:"SUBMIT",packingSlipNumber:window.tradeIn.getPackingSlipFromStorage(),email:customerData.customerEmail,shippingInformation:{firstName:customerData.customerFirstName,lastName:customerData.customerLastName,address:{street1:customerData.customerAddress,city:customerData.customerCity,state:customerData.customerState,zipCode:customerData.customerZip,country:"United States"},phoneNumber:customerData.customerPhone},selectedShippingOptionId:parseInt(selectedShippingOptionId)};customerData.customerPaymentName==="Paypal"&&(input.paymentInformation={payoutType:"PAYPAL",paypalEmail:customerData.customerPaymentAddress}),customerData.customerPaymentName==="Amazon Gift Card"&&(input.paymentInformation={payoutType:"AMAZON_GIFT_CARD"}),customerData.customerPaymentName==="Check"&&(input.paymentInformation={payoutType:"CHECK"},input.paymentInformation.checkName=customerData.checkCustomerAddress.customerFullName,input.paymentInformation.checkAddress={street1:customerData.checkCustomerAddress.customerAddress,city:customerData.checkCustomerAddress.customerCity,state:customerData.checkCustomerAddress.customerState,zipCode:customerData.checkCustomerAddress.customerZip,country:"United States"});let variables={input},apiUrl=`${PYD.config.GRAPHQL_URL}/graphql`;const graphql={query:PYD.queries.checkout,variables};return PYD.fetchData(apiUrl,graphql,"POST").then(response=>response.json()).then(results=>(results?.errors?.[0]?.code==="TRANSACTION_ITEM_LIMIT_EXCEEDED"||results?.errors?.[0]?.code==="TRANSACTION_ITEM_LIMIT_WOULD_EXCEED"?PYD.showCheckoutErrorMessage("limit"):PYD.hideCheckoutErrorMessage(),results?.data?.checkout?.packingSlip||null)).catch(error=>{PYD.showCheckoutErrorMessage("general");let errorData={apiUrl,query:graphql};return PYD.handleError("Error caught while Submitting PackingSlip",error,errorData),null})},verifyShippingAddress:async({street1,city,state,zip})=>{let apiUrl=`${PYD.config.GRAPHQL_URL}/graphql`;const graphql={query:PYD.queries.verifyAddress,variables:{street1,city,state,zip}};return PYD.fetchData(apiUrl,graphql,"GET").then(response=>response.json()).then(results=>{const verified=results?.data?.verifyAddress;return PYD.hideCheckoutErrorMessage(),verified||null}).catch(error=>{PYD.showCheckoutErrorMessage("general");let errorData={apiUrl,query:graphql};return PYD.handleError("Error caught while verifyShippingAddress",error,errorData),null})},initCheckoutPage:async()=>{document.querySelector(".ti-cart")?.classList.add("inactive");const packingSlip=await window.tradeIn.getPackingSlip();if(packingSlip){PYD.state.confirmationNumber=packingSlip.number;const span=document.getElementById("gpydOrderNumber");span&&(span.textContent=packingSlip.number),await PYD.gettingPackingSlip("paypal")}else PYD.init(),initTradeIn();await PYD.cartReady,window.dispatchEvent(new CustomEvent("tradeIn:CheckoutLoaded",{detail:{...PYD.state,stepName:"mail-in checkout"}}))},getFAQs:async handle=>{try{let variables={handle:{handle,type:"device_faq"}};const deviceFAQResponse=await PYD.fetchData(PYD.config.SHOPIFY_URL,{query:PYD.queries.deviceFAQ,variables},"POST",{"X-Shopify-Storefront-Access-Token":PYD.config.SHOPIFY_ACCESS_TOKEN});if(!deviceFAQResponse||!deviceFAQResponse.ok)return console.info(`No FAQ response for handle "${handle}" (status: ${deviceFAQResponse?.status})`),null;const text=await deviceFAQResponse.text();if(!text?.trim())return console.info(`No FAQ content found for handle "${handle}"`),null;let deviceFAQData;try{deviceFAQData=JSON.parse(text)}catch{return console.info(`FAQ data not JSON for handle "${handle}" \u2014 ignoring`),null}const metaobject=deviceFAQData?.data?.metaobject;if(!metaobject?.fields?.length)return console.info(`No FAQ metaobject fields foun
302d for handle "${handle}"`),null;let faq={};return metaobject.fields.forEach(field=>{field.value&&(faq[field.key]=field.value)}),faq||null}catch(error){return console.warn(`FAQ fetch failed for "${handle}"`,error),null}},parseFAQs:answerStr=>{try{let cleanedStr=answerStr.replace(/\\"/g,'"').replace(/\\n/g,"");return JSON.parse(cleanedStr)}catch(e){return console.warn("Failed to parse answer:",e),null}},extractFAQ:faqData=>{let faqList=[];for(let i2=1;;i2++){let questionKey=`brand_question_${i2}`,answerKey=`answer_${i2}`;if(!(questionKey in faqData)||!(answerKey in faqData))break;let question=faqData[questionKey],answerRaw=faqData[answerKey],answer=PYD.parseFAQs(answerRaw);faqList.push({question,answer})}return faqList},loadFAQs:async handle=>{try{let faqResponse=await PYD.getFAQs(handle);if(faqResponse){let faqs=PYD.extractFAQ(faqResponse);PYD.renderFAQs(faqs)}else console.log("No FAQ fields found for handle:",handle)}catch(error){console.warn("Error loading FAQs:",error)}},renderFAQs:faqList=>{let container=document.getElementById("dynamic-accordion-container");if(!container||!faqList.length)return;let generateHTMLFromRichText=richText=>{let renderNode=node=>{if(node.type==="text")return node.value;if(node.type==="paragraph")return`<p>${node.children.map(renderNode).join("")}</p>`;if(node.type==="list"){let tag=node.listType==="ordered"?"ol":"ul";return`<${tag}>${node.children.map(renderNode).join("")}</${tag}>`}return node.type==="list-item"?`<li>${node.children.map(renderNode).join("")}</li>`:""};return richText.children.map(renderNode).join("")};const html=faqList.map((faq,index)=>{const contentHtml=generateHTMLFromRichText(faq.answer);return`
303        <div class="accordion" data-index="${index}">
304          <details>
305            <summary aria-expanded="false" role="button">
306              <h3 class="accordion__title inline-richtext h4">${faq.question}</h3>
307              <svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"></path></svg>
308            </summary>
309            <div class="accordion__content rte" role="region">
310              <div class="metafield-rich_text_field">
311                ${contentHtml}
312              </div>
313            </div>
314          </details>
315        </div>
316      `}).join("");container.innerHTML=html},deleteFAQs:()=>{let container=document.getElementById("dynamic-accordion-container");container&&(container.innerHTML="")},handleFAQs:async function(state){const{brand,series,model,stepName}=state??{};if(stepName){if(stepName=="brand"){if(!brand)return;this.deleteFAQs(),await this.loadFAQs(brand.handle)}else if(stepName=="series"){if(!brand||!series)return;const handle=`${brand.name}-${this.handleize(series.handle)}`;this.deleteFAQs(),await this.loadFAQs(handle)}else if(stepName=="model"){if(!brand||!model)return;this.deleteFAQs();const handle=`${brand?.name}-${this.handleize(model.handle)}`;await this.loadFAQs(handle)}}}};function parseProductName(fullName=""){const carrierMatch=fullName.match(/\(([^)]+)\)$/),carrier=carrierMatch?carrierMatch[1]:null;let remaining=fullName.replace(/\([^)]+\)$/,"").trim();const capacityMatch=remaining.match(/(\d+GB)$/i),capacity=capacityMatch?capacityMatch[1]:null;return capacity&&(remaining=remaining.replace(/\d+GB$/i,"").trim()),{name:remaining,capacity,carrier}}let DATALAYER={dataLayerTrackEvent(payload){(window.dataLayer=window.dataLayer||[]).push(payload)},stringToHash(str){let hash=0;if(!str)return hash;for(let i2=0;i2<str.length;i2++)hash=(hash<<5)-hash+str.charCodeAt(i2),hash|=0;return hash},buildPayload(st){let stepName=st?.stepName;const{brand,category,series,model,payout,storage,carrier,q1,q2,q3}=st,cartItems=st?.cart?.items||[];let doneState=!1,displayCartItems=!1,pydSession=PYD.getSessionStorage("pyd");if(stepName?.toLowerCase().includes("condition")&&q3==null||stepName?.toLowerCase().includes("q1")||stepName?.toLowerCase().includes("q2")||stepName?.toLowerCase().includes("q3"))return;if(stepName?.toLowerCase().includes("mail-in estimate")&&!PYD.state?.currentScreen?.toLowerCase().includes("cart"))return;stepName?.toLowerCase().includes("#ti-device-picker")?stepName="start":stepName?.toLowerCase().includes("series")?stepName="device model":stepName?.toLowerCase().includes("thank you")&&(doneState=!0),stepName?.toLowerCase().includes("mail-in")&&(
316displayCartItems=!0);let price,value=null,offerAmountWeb=null,offerAmountTradeIn=null;if(Array.isArray(payout?.offerV3))for(const o of payout.offerV3)o.channel?.toLowerCase().includes("web")&&(offerAmountWeb=o.amount),o.channel?.toLowerCase().includes("trade_in")&&(offerAmountTradeIn=o.amount);const selectedOfferType=pydSession?.selectedOfferType;selectedOfferType?.toLowerCase().includes("mailin")?(price=offerAmountTradeIn,value=st?.cart?.estimatedTotal):selectedOfferType?.toLowerCase().includes("kiosk")&&offerAmountWeb&&(payout?.offerState.toLowerCase()=="promo_price"?(price=payout.promotion.promoPrice+offerAmountWeb,value=payout.promotion.promoPrice+offerAmountWeb):(price=offerAmountWeb,value=offerAmountWeb));const promoBonus=pydSession?.promotionalBonus,userFields={...st?.emailAddress&&{hashedemail:this.stringToHash(st?.emailAddress)},...st?.phone&&{hashedphone:this.stringToHash(st?.phone)},...st?.kioskCode&&{offer_code:st?.kioskCode},...pydSession?.emailSubscribed&&{marketing_opt_in:pydSession.emailSubscribed},...pydSession?.mailInMethod&&{"mail-in_method":pydSession.mailInMethod},...pydSession?.offerDisplayed&&{offer_displayed:pydSession.offerDisplayed},...selectedOfferType&&{offer_type:selectedOfferType},...st?.paymentOption&&{payment_type:st?.paymentOption},...(st?.confirmationNumber||st?.kioskCode)&&{transaction_id:st?.confirmationNumber||st.kioskCode},...promoBonus!=null&&{promotional_bonus:promoBonus},...value&&{value},...pydSession?.currency&&{currency:pydSession.currency},...pydSession?.coupon&&{coupon:pydSession.coupon}};let itemsFromCart=[];displayCartItems&&(itemsFromCart=cartItems.map((dev,idx)=>{const parsed=parseProductName(dev?.product?.name);return{item_id:dev?.product?.id,item_brand:dev?.product?.manufacturerName,item_category:dev?.product?.categoryName,item_name:parsed?.name,device_capacity:parsed?.capacity,device_carrier:parsed?.carrier,device_power:dev?.q1?.id,device_light:dev?.q2?.id,device_cracks:dev?.q3?.id,offer_state:dev?.offerState,price:dev?.actualValue||dev?.estimatedValue,offer_amount_mail_in:dev?.actualValue||dev?.estimatedValue,quantity:1,index:idx+1}}));const hasActiveDevice=brand||category||series||model||storage||carrier||q1||q2||q3;let currentDevicePayload=[];hasActiveDevice&&currentDevicePayload.push({item_id:payout?.pid||null,item_brand:brand?.name||null,item_category:category?.name||null,item_name:model?.name??series?.name??null,device_capacity:storage?.name||null,device_carrier:carrier?.name||null,device_power:q1==null?null:q1.id?.toLowerCase().includes("yes"),device_light:q2==null?null:q2.id?.toLowerCase().includes("yes"),device_cracks:q3==null?null:q3.id?.toLowerCase().includes("yes"),offer_state:payout?.offerState||null,price,offer_amount_kiosk:offerAmountWeb,offer_amount_mail_in:offerAmountTradeIn,quantity:1,index:itemsFromCart.length+1});const items=[...itemsFromCart,...currentDevicePayload],optimizely_data=PYD.getSessionStorage("optimizelyDecisionData")||null,payload={gtm:{uniqueEventId:Date.now(),priorityId:1,start:performance.now()},event:"page.submit",site_id:window.location.hostname,v:12,name:"price your device",step_name:stepName,done:doneState,record:{recordType:"user"},domain:window.location.hostname,...userFields,items,...optimizely_data&&{optimizely_data}};this.dataLayerTrackEvent(payload)},trackDevicePricing:st=>{let stepName=st?.stepName;const{brand,category,series,model,payout,storage,carrier,q1,q2,q3}=st;let doneState=!1;if(stepName?.toLowerCase().includes("condition")&&q3==null||stepName?.toLowerCase().includes("q1")||stepName?.toLowerCase().includes("q2")||stepName?.toLowerCase().includes("q3"))return;if(stepName?.toLowerCase().includes("mail-in estimate")&&!PYD.state?.currentScreen?.toLowerCase().includes("cart"))return;stepName?.toLowerCase().includes("ti-device-picker")?stepName="start":stepName?.toLowerCase().includes("series")?stepName="device model":stepName?.toLowerCase().includes("thank you")&&(doneState=!0);let offerAmountWeb;if(Array.isArray(payout?.offerV3))for(const o of payout.offerV3)o.channel?.toLowerCase().includes("web")&&(offerAmountWeb=o.amount);let data={};brand?.name&&(data.device_brand=brand.name),category?.name&&(data.device_category=category.name),series?.name&&(data.device_model=decodeURIComponent(series.name)),model?.name&&(data.device_model=decodeURIComponent(model.name)),storage?.name&&(data.device_capacity=storage.name),carrier?.name&&(data.device_carrier=carrier.name),payout?.offerState&&(data.offer_state=payout.offerState),offerAmountWeb&&(payout?.offerState.toLowerCase()=="promo_price"?data.offer_amount=payout.promotion.promoPrice+offerAmountWeb:data.offer_amount=offerAmountWeb),st?.emailAddress&&(data.email=st.emailAddress),st?.emailAddress&&(data.hashedemail=DATALAYER.stringToHash(st.emailAddress)),st?.kioskCode&&(data.offer_code=st.kioskCode),PYD.getSessionStorage("pyd")?.emailSubscribed&&(
316data.marketing_opt_in=PYD.getSessionStorage("pyd").emailSubscribed),q1?.id&&(data.device_power=q1.id?.toLowerCase().includes("yes")),q2?.id&&(data.device_light=q2.id?.toLowerCase().includes("yes")),q3?.id&&(data.device_cracks=q3.id?.toLowerCase().includes("yes")),stepName?.toLowerCase().includes("offer page")&&(delete data.device_power,delete data.device_light,delete data.device_cracks);const optimizely_data=PYD.getSessionStorage("optimizelyDecisionData")||null,eventData={event:"page.submit",v:12,name:"price your device",done:doneState,step:{name:stepName},record:{recordType:"user"},...Object.keys(data).length>0&&{data},...optimizely_data&&{optimizely_data}};DATALAYER.dataLayerTrackEvent(eventData)}};const PYD_EVENTS=["pageload","pyd:enter-contact","pyd:thank-you","tradeIn:cartLoadedPYD","pyd:form-completed","pyd:condition-completed","pyd:offer-kiosk","tradeIn:CheckoutLoaded","tradeIn:thankYouLoaded","pyd:form-change-completed"];PYD_EVENTS.forEach(evtName=>{window.addEventListener(evtName,event=>{window.PYD?.config?.DATALAYER_FLAG?DATALAYER.trackDevicePricing(event?.detail):DATALAYER.buildPayload(event?.detail)})}),window.tradeIn={},(()=>{const initTradeIn2=()=>{window.tradeIn={API_URL:PYD.config.GRAPHQL_URL,resetCart(){PYD.state.cart={}},async getCart(){return window.dispatchEvent(new CustomEvent("tradeIn:cartLoading")),PYD._cartPromise||(PYD._cartPromise=(async()=>{window.dispatchEvent(new CustomEvent("tradeIn:cartLoading"));try{const packingSlip=await this.getPackingSlip();return packingSlip?(PYD.state.cart={items:packingSlip.transactionItems||[],estimatedTotal:packingSlip.totalEstimatedPayment||0},window.dispatchEvent(new CustomEvent("tradeIn:cartLoaded",{detail:{cart:PYD.state.cart}})),localStorage.setItem("tradein_cart",JSON.stringify(PYD.state.cart)),window.dispatchEvent(new CustomEvent("tradeIn:cartLoadedPYD",{detail:{...PYD.state,cart:PYD.state.cart,stepName:"mail-in estimate"},bubbles:!0,composed:!0})),PYD._resolveCartReady&&(PYD._resolveCartReady(),PYD._resolveCartReady=null),PYD.state.cart):(this.resetCart(),window.dispatchEvent(new CustomEvent("tradeIn:cartLoaded",{detail:{cart:PYD.state.cart}})),PYD._resolveCartReady&&(PYD._resolveCartReady(),PYD._resolveCartReady=null),PYD.state.cart)}catch(err){let errorData={apiUrl:this.API_URL,query:PYD.queries.packingSlip};throw PYD.handleError("Failed to get cart for given packing slip number:",err,errorData),window.dispatchEvent(new CustomEvent("tradeIn:cartError",{detail:{error:err}})),err}finally{PYD._cartPromise=null}})()),PYD._cartPromise},async addItem(item){window.dispatchEvent(new CustomEvent("tradeIn:cartLoading"));const packingSlipNumber=(await this.getPackingSlip())?.number,isNew=!packingSlipNumber;try{const query2=isNew?PYD.queries.createPackingSlip:PYD.queries.addOffer,variables=isNew?{item}:{item,packingSlipNumber},PSNumber=(await(await PYD.fetchData(this.API_URL,{query:query2,variables},"POST")).json())?.data?.checkout?.packingSlip?.number;return this.setPackingSlipToStorage(PSNumber),this.packingSlipData=null,this._packingSlipPromise=null,window.dispatchEvent(new CustomEvent("tradeIn:item-added",{detail:{packingSlipNumber:PSNumber,item,cart:PYD.state.cart},bubbles:!0,composed:!0})),PYD.resetPYDState(),await this.getCart()}catch(err){let errorData={apiUrl:this.API_URL,query};return PYD.handleError("Failed to add item to cart:",err,errorData),window.dispatchEvent(new CustomEvent("tradeIn:cartError",{detail:{error:err}})),[]}},async deleteItem(SRNumber,productId){window.dispatchEvent(new CustomEvent("tradeIn:cartLoading"));const packingSlip=await this.getPackingSlip();if(!packingSlip?.number)return null;try{return await PYD.fetchData(this.API_URL,{query:PYD.queries.removeOffer,variables:{packingSlipNumber:packingSlip.number,offerNumber:SRNumber}},"POST"),this._packingSlipPromise=null,this.packingSlipData=null,window.dispatchEvent(new CustomEvent("tradeIn:item-removed",{detail:{packingSlipNumber:packingSlip.number,item:{SRNumber,productId},cart:PYD.state.cart},bubbles:!0,composed:!0})),dataLayer.push({items:null}),await this.getCart()}catch(err){let errorData={apiUrl:this.API_URL,query:PYD.queries.removeOffer};return PYD.handleError("Failed to remove item from cart:",err,errorData),window.dispatchEvent(new CustomEvent("tradeIn:cartError",{detail:{error:err}})),null}},async getPackingSlip(){const packingSlipNumber=this.getPackingSlipFromStorage();return packingSlipNumber?this.packingSlipData?.number===packingSlipNumber?this.packingSlipData:this._packingSlipPromise?this._packingSlipPromise:(this._packingSlipPromise=(async()=>{try{const packingSlip=(await(await PYD.fetchData(this.API_URL,{query:PYD.queries.packingSlip,variables:{number:packingSlipNumber}},"POST")).json())?.data?.packingSlip||null;return this.packingSlipData=packingSlip,packingSlip}catch(err){let errorData={apiUrl:this.API_URL,query:PYD.queries.packingSlip};return PYD.handleError("Failed to fetch packingSlip:",err,errorData),null}finally{this._packingSlipPromise=null}})(),this._packingSlipPromise):null},setPackingSlipToStorage(value){localStorage.setItem("packingSlipNumber",value)},getPackingSlipFromStorage(){return localStorage.getItem("packingSlipNumber")},deletePackingSlipFromStorage(){localStorage.removeItem("packingSlipNumber")}},window.tradeIn.getCart()};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{PYD.init(),initTradeIn2()}):(PYD.init(),initTradeIn2())})();class PYDSearchableDropdown extends HTMLElement{constructor(){super(),this.options=[],this.filteredOptions=[],this.isOpen=!1,this.isRestoringFromUrl=!1,this.selectedValue="",this.activeOptionIndex=-1}connectedCallback(){this.cacheElements(),this.setupAria(),this.attachListeners()}cacheElements(){this.input=this.querySelector("[data-input]"),this.icon=this.querySelector("[data-icon]"),this.spinner=this.querySelector("[data-spinner]"),this.dropdown=this.querySelector("[dropdown-menu]")}setupAria(){if(!this.input||!this.dropdown)return;const selection=this.getAttribute("data-selection")||"field",counter=PYDSearchableDropdown._idCounter=(PYDSearchableDropdown._idCounter||0)+1,dropdownId=this.dropdown.id||"pyd-dd-"+selection+"-"+counter;this.dropdown.id=dropdownId,this.dropdown.setAttribute("role","listbox"),this.input.setAttribute("role","combobox"),this.input.setAttribute("aria-expanded","fal
316se"),this.input.setAttribute("aria-haspopup","listbox"),this.input.setAttribute("aria-autocomplete","list"),this.input.setAttribute("aria-controls",dropdownId)}attachListeners(){this.input?.addEventListener("focus",()=>{}),this.input?.addEventListener("click",()=>{this.input.value="",this.showAllOptions(),this.open()}),this.input?.addEventListener("input",e=>{this.filter(e.target.value),this.open()}),this.input?.addEventListener("blur",()=>{setTimeout(()=>{this.contains(document.activeElement)||(this.input.value.trim()||(this.input.value=this.selectedValue),this.close())},100)}),this.dropdown?.addEventListener("click",e=>{const option=e.target.closest("[data-value]"),isHeader=e.target.closest("[data-is-header]"),isLink=e.target.closest("[data-is-link]");!option||isHeader||isLink||this._selectOption(option)}),this.dropdown?.addEventListener("mousedown",e=>{e.preventDefault()}),document.addEventListener("click",e=>{this.contains(e.target)||this.close()}),this.input?.addEventListener("keydown",e=>{const isOpen=this.isOpen,options=this._getSelectableOptions();if(e.key==="Enter")e.preventDefault(),isOpen?this.activeOptionIndex>=0&&options[this.activeOptionIndex]&&this._selectOption(options[this.activeOptionIndex]):(this.input.value="",this.showAllOptions(),this.open());else if(e.key==="ArrowDown"){e.preventDefault(),isOpen||(this.showAllOptions(),this.open());const newIndex=Math.min(this.activeOptionIndex+1,options.length-1);this.activeOptionIndex=newIndex,this._highlightOption(options,this.activeOptionIndex)}else e.key==="ArrowUp"?(e.preventDefault(),this.activeOptionIndex>0&&(this.activeOptionIndex--,this._highlightOption(options,this.activeOptionIndex))):e.key==="Escape"&&(e.preventDefault(),this.close())})}_getSelectableOptions(){return Array.from(this.dropdown?.querySelectorAll("[data-value]")||[])}_highlightOption(options,index){options.forEach((opt,i2)=>{const isActive=i2===index;opt.classList.toggle("active",isActive),opt.setAttribute("aria-selected",isActive?"true":"false"),isActive&&opt.scrollIntoView({block:"nearest"})}),index>=0&&options[index]?this.input?.setAttribute("aria-activedescendant",options[index].id||""):this.input?.removeAttribute("aria-activedescendant")}_selectOption(option){const id=option.dataset.value||null,categoryId=option.dataset.categoryId||null,categoryName=option.dataset.categoryName||null,handle=option.dataset.handle||null,name=option.textContent.trim();this.setSelectedValue(name,handle),this.close(),this.dispatchEvent(new CustomEvent("pyd:form-changed",{detail:{id,name,categoryId,categoryName,selection:this.getAttribute("data-selection"),stepName:this.getAttribute("data-selection")},bubbles:!0,composed:!0}))}toggle(){this.hasAttribute("disabled")||(this.isOpen?this.close():this.open())}open(){this.hasAttribute("disabled")||(this.isOpen=!0,this.activeOptionIndex=-1,this.dropdown?.removeAttribute("hidden"),this.input?.setAttribute("aria-expanded","true"))}close(){this.isOpen=!1,this.activeOptionIndex=-1,this.dropdown?.setAttribute("hidden",""),this.input?.setAttribute("aria-expanded","false"),this.input?.removeAttribute("aria-activedescendant"),this.dropdown?.querySelectorAll("[data-value]").forEach(opt=>opt.classList.remove("active"))}enable(){this.input?.removeAttribute("disabled")}disable(){this.input?.setAttribute("disabled",""),this.close()}hide(){this.setAttribute("hidden","")}show(){this.removeAttribute("hidden")}setValue(label){this.input&&(this.input.value=label)}getDisplayLabel(label,handle=null){return this.getAttribute("data-selection")==="carrier"&&handle===LOCKED_CARRIER_HANDLE?window.PYD?.config?.LOCKED_CARRIER_LABEL||"Locked":label}setSelectedValue(label,handle=null){const displayLabel=this.getDisplayLabel(label,handle);this.selectedValue=displayLabel,this.setValue(displayLabel)}reset(){this.options=[],this.filteredOptions=[],this.selectedValue="",this.input&&(this.input.value=""),this.renderOptions(),this.disable()}setLoading(loading){loading?(this.spinner?.removeAttribute("hidden"),this.icon?.setAttribute("hidden","")):(this.spinner?.setAttribute("hidden",""),this.icon?.removeAttribute("hidden"))}setOptions(options){this.options=options,this.filteredOptions=options,this.renderOptions(),this.enable()}showAllOptions(){this.filteredOptions=this.options,this.renderOptions()}filter(query2){const q=query2.trim().toLowerCase();this.filteredOptions=q?this.options.filter(opt=>!opt.isHeader&&opt.name.toLowerCase().includes(q)):this.options,this.renderOptions()}getItemSeoLink(selection,handle){const order=["brand","series","model"],baseUrl=`${window.location.origin}${window.location.pathname}`,params=new URLSearchParams,selectionIndex=order.indexOf(selection);if(selectionIndex===-1)return baseUrl;
316for(let i2=0;i2<selectionIndex;i2++){const key=order[i2],value=PYD.state?.[key]?.handle;value&&params.set(key,value)}handle&&params.set(selection,handle);const query2=params.toString();return query2?`${baseUrl}?${query2}`:baseUrl}renderOptions(){if(!this.dropdown)return;const selection=this.dropdown.getAttribute("data-menu-selection")||"",mappedOptions=(this.filteredOptions.length?this.filteredOptions:[{name:"No results",id:"",isHeader:!0}]).map(opt=>{if(opt.isHeader)return opt.name==="Cell Phone"?'<div class="searchable-dropdown__menu-header searchable-dropdown__menu-header--small pyd-header pyd-dropdown-header device-subtitle" data-is-header="true" aria-hidden="true">CELL PHONE</div>':opt.name==="Tablet"||opt.name==="MP3 Player"?`<div class="searchable-dropdown__menu-header pyd-header pyd-dropdown-header device-subtitle" data-is-header="true" aria-hidden="true">${opt.name}</div>`:`<div class="searchable-dropdown__menu-header pyd-header pyd-dropdown-header" data-is-header="true" aria-hidden="true">${opt.name}</div>`;if(opt.isLink)return`<a data-tracking-id="${opt.dataTrackingId}" href="${opt.url}" target="_blank" rel="noopener noreferrer" class="searchable-dropdown__menu-item searchable-dropdown__menu-item--link" data-is-link="true">
317            ${opt.name}
318            <svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
319              <path d="M9.5 1.25C9.5 0.84375 9.8125 0.5 10.25 0.5H15.2188C15.6562 0.5 15.9688 0.84375 15.9688 1.25V6.25C15.9688 6.6875 15.6562 7 15.2188 7C14.8125 7 14.4688 6.6875 14.4688 6.25V3.0625L7.5 10.0312C7.21875 10.3438 6.75 10.3438 6.46875 10.0312C6.15625 9.75 6.15625 9.28125 6.46875 8.96875L13.4375 2H10.25C9.8125 2 9.5 1.6875 9.5 1.25ZM2.25 1.5H6.25C6.65625 1.5 7 1.84375 7 2.25C7 2.6875 6.65625 3 6.25 3H2.25C1.8125 3 1.5 3.34375 1.5 3.75V14.25C1.5 14.6875 1.8125 15 2.25 15H12.75C13.1562 15 13.5 14.6875 13.5 14.25V10.25C13.5 9.84375 13.8125 9.5 14.25 9.5C14.6562 9.5 15 9.84375 15 10.25V14.25C15 15.5 13.9688 16.5 12.75 16.5H2.25C1 16.5 0 15.5 0 14.25V3.75C0 2.53125 1 1.5 2.25 1.5Z" fill="currentColor"/>
320            </svg>
321          </a>`;const{id,name,categoryId,categoryName,tracking,handle}=opt,selection2=this.getAttribute("data-selection")||"item",attrs=[`id="${`pyd-opt-${selection2}-${id||i}`}"`,`data-value="${id}"`,'role="option"','aria-selected="false"',categoryId?`data-category-id="${categoryId}"`:"",categoryName?`data-category-name="${categoryName}"`:"",tracking?`data-tracking-id="${tracking}"`:"",handle?`data-handle="${handle}"`:""].filter(Boolean).join(" "),seoLink=this.getItemSeoLink(selection2,handle);return`<div class="searchable-dropdown__menu-item" ${attrs}>
322          <a href="${seoLink}" onclick="event.preventDefault();">${name}</a>
323        </div>`});this.dropdown.innerHTML=mappedOptions.join("")}}customElements.define("pyd-searchable-dropdown",PYDSearchableDropdown);class PYDForm extends HTMLElement{constructor(){super(),this.apiUrl=PYD.config.GRAPHQL_URL,this.props=this.parseProps()}parseProps(){try{const propsAttr=this.getAttribute("data-props");return propsAttr?JSON.parse(propsAttr):{}}catch(error){return console.error("Error parsing data-props:",error),{}}}connectedCallback(){this.props.lockedCarrierLabel!==void 0&&window.PYD?.config&&(window.PYD.config.LOCKED_CARRIER_LABEL=this.props.lockedCarrierLabel),this.cacheFormFields(),this.disableQuestions(),this.setupDownstream(),this.attachEventListeners(),this.init()}cacheFormFields(){this.dropdowns={brand:this.querySelector('[data-selection="brand"]'),series:this.querySelector('[data-selection="series"]'),model:this.querySelector('[data-selection="model"]'),storage:this.querySelector('[data-selection="storage"]'),carrier:this.querySelector('[data-selection="carrier"]')},this.conditionQuestions={q1:this.querySelector('[data-condition="q1"]'),q2:this.querySelector('[data-condition="q2"]'),q3:this.querySelector('[data-condition="q3"]')},this.submit=this.querySelector("button[data-submit]")}setupDownstream(){this.addEventListener("pyd:form-changed",async e=>{const{id,name,selection,value,categoryId,categoryName}=e.detail??{};e.asyncResult=(async()=>{try{if(selection==="brand"){const handle=PYD.handleize(name);PYD.state={...PYD.state,brand:{id,name,handle},series:null,model:null,category:null,storage:null,carrier:null,q1:null,q2:null,q3:null,payout:[]},this.resetDownstream(["series","model","storage","carrier"]),this.disableQuestions(),this.disableSubmit(),PYD.updateUrlParams({brand:handle,series:null,model:null,storage:null,carrier:null,q1:null,q2:null,q3:null}),window.PYD_META_TAGS_ENABLED&&PYD.updateMetaTags({title:`Sell Your ${PYD.capitalize(handle)} ${handle=="apple"?"iPhone for Cash or Estimate the Trade In Value":`Phones, Trade In Your ${PYD.capitalize(handle)} Phones for Cash`} \u2013 EcoATM`,description:`Safely sell your ${PYD.capitalize(handle)} ${handle=="apple"?"iPhone, iPad or iPod":"phone"}  at an ecoATM kiosk near you! Get cash immediately for your old devices!`,canonical:PYD.buildCanonicalFromUrl()}),await this.loadDevices()}else if(selection==="series"){const{brand}=PYD.state,deviceResponse=await PYD.fetchData(this.apiUrl,{query:PYD.queries.models,variables:{brandId:brand.id,seriesId:id,categoryId}},"GET");let handle;const deviceData=await deviceResponse.json(),deviceArr=deviceData?.data?.models||[];
323if(deviceArr.length==1){handle=PYD.handleize(deviceArr[0].name);const device=deviceArr.length>0?{...deviceArr[0],handle:PYD.handleize(deviceArr[0].name)}:null;PYD.state={...PYD.state,series:{id,name,handle},model:{id:null,name:null,handle:null},category:{id:categoryId,name:categoryName,handle:PYD.handleize(categoryName)},storage:null,carrier:null,q1:null,q2:null,q3:null}}else handle=PYD.handleize(name),PYD.state={...PYD.state,series:{id,name,handle},model:{id:null,name:null,handle:null},category:{id:categoryId,name:categoryName,handle:PYD.handleize(categoryName)},storage:null,carrier:null,q1:null,q2:null,q3:null};this.resetDownstream(["model","storage","carrier"]),this.disableQuestions(),this.disableSubmit(),PYD.updateUrlParams({series:handle,model:null,storage:null,carrier:null,q1:null,q2:null,q3:null}),window.PYD_META_TAGS_ENABLED&&PYD.updateMetaTags({title:`Sell Your ${PYD.capitalize(brand.handle)} ${PYD.capitalize(name)}, Trade In Your ${PYD.capitalize(brand.handle)} ${PYD.capitalize(name)} for Cash \u2013 EcoATM `,description:`Get instant cash for your ${PYD.capitalize(brand.handle)} ${PYD.capitalize(name)} at an ecoATM kiosk near you. Fast, secure, and available nationwide.`,canonical:PYD.buildCanonicalFromUrl()}),(await this.loadModels(deviceData)).length<=1&&await this.loadStorage()}else if(selection==="model"){const handle=PYD.handleize(name);PYD.state={...PYD.state,model:{id,name,handle},storage:null,carrier:null,q1:null,q2:null,q3:null},this.resetDownstream(["storage","carrier"]),this.disableQuestions(),this.disableSubmit(),PYD.updateUrlParams({model:handle,storage:null,carrier:null,q1:null,q2:null,q3:null}),window.PYD_META_TAGS_ENABLED&&PYD.updateMetaTags({title:`Sell Your ${PYD.capitalize(PYD.state.brand.handle)} ${PYD.capitalize(handle)}, Trade In Your ${PYD.capitalize(PYD.state.brand.handle)} ${PYD.capitalize(handle)} for Cash \u2013 EcoATM `,description:`Get instant cash for your ${PYD.capitalize(PYD.state.brand.handle)} ${PYD.capitalize(handle)} at an ecoATM kiosk near you. Fast, secure, and available nationwide.`,canonical:PYD.buildCanonicalFromUrl()}),await this.loadStorage()}else if(selection==="storage"){const handle=PYD.handleize(name);PYD.state={...PYD.state,storage:{id,name,handle},carrier:null,q1:null,q2:null,q3:null},this.resetDownstream(["carrier"]),this.disableQuestions(),this.disableSubmit(),PYD.updateUrlParams({storage:handle,carrier:null,q1:null,q2:null,q3:null}),await this.loadCarriers()}else if(selection==="carrier"){const handle=PYD.handleize(name);PYD.state={...PYD.state,carrier:{id,name,handle},q1:null,q2:null,q3:null},this.disableQuestions(),this.disableSubmit(),PYD.updateUrlParams({carrier:handle,q1:null,q2:null,q3:null}),this.enableQuestion("q1")}else selection==="q1"?(PYD.state={...PYD.state,q1:{id:value,name:"powerUp"}},this.disableSubmit(),PYD.updateUrlParam("q1",value),this.enableQuestion("q2")):selection==="q2"?(PYD.state={...PYD.state,q2:{id:value,name:"lcdOk"}},this.disableSubmit(),PYD.updateUrlParam("q2",value),this.enableQuestion("q3")):selection==="q3"&&(PYD.state={...PYD.state,q3:{id:value,name:"cracks"}},PYD.updateUrlParam("q3",value),this.enableSubmit());window.dispatchEvent(new CustomEvent("pyd:form-change-completed",{detail:{...PYD.state,stepName:selection},bubbles:!0,composed:!0}))}catch(error){let errorData={apiUrl:this.apiUrl,query:PYD.state};PYD.handleError(`Failed to process ${selection}`,error,errorData)}})()})}attachEventListeners(){Object.entries(this.conditionQuestions).forEach(([key,question])=>{if(!question)return;question.querySelectorAll('input[type="radio"]').forEach(radio=>{radio.addEventListener("change",()=>{this.dispatchEvent(new CustomEvent("pyd:form-changed",{detail:{selection:key,value:radio.value,stepName:"condition"},bubbles:!0}))}),radio.addEventListener("keydown",e=>{e.key==="Enter"&&(e.preventDefault(),radio.checked=!0,radio.dispatchEvent(new Event("change",{bubbles:!0})))})}),question.querySelectorAll("label.pyd-form__question-card").forEach(label=>{label.addEventListener("keydown",e=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),label.click())})})}),this.submit.addEventListener("click",e=>{e.preventDefault(),this.handleFormSubmit()})}
323async init(){try{if(PYD.deActivateErrorCard(),PYD.state?.currentScreen?.toLowerCase().includes("pyd")){this.dropdowns.brand.setLoading(!0);const channels=this.props.channel?[this.props.channel]:null,brands=((await(await PYD.fetchData(this.apiUrl,{query:PYD.queries.brands,variables:channels?{channels}:{}},"GET")).json())?.data?.brands||[]).map(brand=>({...brand,handle:PYD.handleize(brand.name)})),topBrandNames=["Apple","Samsung","Google","HTC","LG","Motorola","Nokia"],brandMap=new Map(brands.map(b=>[b.name.toLowerCase(),b])),topBrands=topBrandNames.map(name=>brandMap.get(name.toLowerCase())).filter(Boolean),otherBrands=brands.filter(b=>!topBrandNames.some(name=>b.name.toLowerCase()===name.toLowerCase())),groupedBrands=[{id:"",name:"Top Brands",isHeader:!0},...topBrands,...otherBrands.length?[{id:"",name:"Other Brands",isHeader:!0},...otherBrands]:[]];this.dropdowns.brand.setOptions(groupedBrands),this.autoSelectFromUrl(),window.dispatchEvent(new CustomEvent("pyd:form-initialized",{detail:{},bubbles:!0})),PYD.deActivateErrorCard()}PYD.cartPromise=null}catch(error){PYD.activateErrorCard();let errorData={apiUrl:this.apiUrl,query:PYD.queries.brands};PYD.handleError("Failed to load brands",error,errorData)}finally{this.dropdowns.brand.setLoading(!1)}}async loadDevices(){const{brand}=PYD.state;try{this.dropdowns.series.setLoading(!0);const channels=this.props.channel?[this.props.channel]:null,categories=((await(await PYD.fetchData(this.apiUrl,{query:PYD.queries.categories,variables:channels?{channels}:{}},"GET")).json())?.data?.categories||[]).map(category=>({...category,name:this.props.deviceCategories[PYD.handleize(category.name)]??category.name,handle:PYD.handleize(category.name)})),allDevices=(await Promise.all(categories.map(async({id,name})=>{const variables={brandId:brand.id,categoryId:id};channels&&(variables.channels=channels);const res=await PYD.fetchData(this.apiUrl,{query:PYD.queries.series,variables},"GET"),{data}=await res.json(),devices=data.series||[];return devices.length?[{id,name,isHeader:!0},...devices.map(d=>({id:d.id,name:d.name,categoryId:id,categoryName:name,handle:PYD.handleize(d.name)}))]:[]}))).flat();this.props.deviceLinkText&&this.props.deviceLinkUrl&&allDevices.unshift({id:null,name:this.props.deviceLinkText,url:this.props.deviceLinkUrl,isLink:!0,dataTrackingId:"how-to-find-device"}),allDevices.unshift({id:"",name:"Search for & select a device",isHeader:!0}),this.dropdowns.series.setOptions(allDevices)}catch(error){PYD.activateErrorCard();let errorData={apiUrl:this.apiUrl,query:PYD.queries.categories};PYD.handleError("Failed to load devices:",error,errorData)}finally{this.dropdowns.series.setLoading(!1)}}async loadModels(prefetchedData=null){const{brand,series,category}=PYD.state;try{this.dropdowns.model.setLoading(!0);let modelData;prefetchedData?modelData=prefetchedData:modelData=await(await PYD.fetchData(this.apiUrl,{query:PYD.queries.models,variables:{brandId:brand.id,seriesId:series.id,categoryId:category.id}},"GET")).json();const models=(modelData?.data?.models||[]).map(model=>({...model,handle:PYD.handleize(model.name)}));if(models.length==1){const model=models[0];PYD.state={...PYD.state,model:{id:model.id,name:model.name,handle:model.handle}}}return models.length>1&&(this.dropdowns.model.show(),this.dropdowns.model.setOptions(models)),models}catch(error){PYD.activateErrorCard();let errorData={apiUrl:this.apiUrl,query:PYD.queries.models};return PYD.handleError("Failed to load model",error,errorData),[]}finally{this.dropdowns.model.setLoading(!1)}}async loadStorage(){const{brand,model,series}=PYD.state;try{this.dropdowns.storage.setLoading(!0);let storages=((await(await PYD.fetchData(this.apiUrl,{query:PYD.queries.storage,variables:{brandId:brand.id,seriesId:series.id,modelName:model.name}},"GET")).json())?.data?.storageOptions||[]).map(storage=>({...storage,handle:PYD.handleize(storage.name)}));if(!storages.length){this.dropdowns.storage.disable(),this.dropdowns.carrier.disable(),PYD.state={...PYD.state,storage:{id:null,name:null,handle:null},carrier:{id:null,name:null,handle:null}}
323,this.enableQuestion("q1");return}return storages.forEach(storage=>{storage.tracking=`capacity-${storage.name}-button`}),storages.unshift({id:"",name:"Select the storage",isHeader:!0}),this.props.storageLinkText&&this.props.storageLinkUrl&&storages.push({id:null,name:this.props.storageLinkText,url:this.props.storageLinkUrl,isLink:!0,dataTrackingId:"how-to-find-storage"}),this.dropdowns.storage.setOptions(storages),storages}catch(error){PYD.activateErrorCard();let errorData={apiUrl:this.apiUrl,query:PYD.queries.storage};PYD.handleError("Failed to load storage",error,errorData)}finally{this.dropdowns.storage.setLoading(!1)}}async loadCarriers(){try{this.dropdowns.carrier.setLoading(!0);const categoryHandle=PYD.state?.category?.handle,showCarrierList=this.props?.showCarrierList!==!1;let carriers=((await(await PYD.fetchData(this.apiUrl,{query:PYD.queries.carriers},"GET")).json())?.data?.carriers||[]).map(carrier=>({...carrier,handle:PYD.handleize(carrier.name)}));if(categoryHandle==="mp3-player"||!carriers.length){this.dropdowns.carrier.disable(),PYD.state={...PYD.state,carrier:{id:null,name:null,handle:null}},this.enableQuestion("q1");return}if(categoryHandle==="tablet")carriers=carriers.filter(c=>c.id?.toLowerCase().includes("wifi"));else if(carriers=carriers.filter(c=>!c.id?.toLowerCase().includes("wifi")),!showCarrierList){const unlockedCarrier=carriers.find(c=>c.handle==="unlocked"),otherCarrier=carriers.find(c=>c.handle==="other");carriers=[unlockedCarrier?{id:unlockedCarrier.id,name:unlockedCarrier.name,handle:unlockedCarrier.handle}:{id:"unlocked",name:"Unlocked",handle:"unlocked"},{id:otherCarrier?.id||"other",name:"Locked to a carrier",handle:LOCKED_CARRIER_HANDLE}]}if(carriers.forEach(carrier=>{carrier.tracking=`capacity-${carrier.name}-button`}),carriers.unshift({id:"",name:showCarrierList?"Select the carrier":categoryHandle==="tablet"?"Does your tablet connect to cellular":"Is your device unlocked?",isHeader:!0}),this.props.carrierLinkText&&this.props.carrierLinkUrl){const carrierUrl=categoryHandle==="tablet"&&this.props.carrierLinkUrlTablet?this.props.carrierLinkUrlTablet:this.props.carrierLinkUrl;carriers.push({id:null,name:this.props.carrierLinkText,url:carrierUrl,isLink:!0,dataTrackingId:"how-to-find-carrier"})}return this.dropdowns.carrier.setOptions(carriers),carriers}catch(error){PYD.activateErrorCard();let errorData={apiUrl:this.apiUrl,query:PYD.queries.carriers};PYD.handleError("Failed to load carrier",error,errorData)}finally{this.dropdowns.carrier.setLoading(!1)}}async autoSelectFromUrl(){this.formSubmitting(!0);const urlParams=PYD.getUrlParams(["brand","series","model","storage","carrier","q1","q2","q3"]),{brand,series,model,storage,carrier}=urlParams,selectDropdown=async(dropdown,value,selection)=>
323{if(!value||!dropdown)return null;const dropdownOptions=Array.from(dropdown.querySelectorAll("[data-value]"));let matchedDropdown=dropdownOptions.find(item=>item.getAttribute("data-handle")?.trim()===value);const shouldMapLegacyCarrierToLocked=selection==="carrier"&&this.props?.showCarrierList===!1&&value!=="unlocked";if(!matchedDropdown&&shouldMapLegacyCarrierToLocked&&(matchedDropdown=dropdownOptions.find(item=>item.getAttribute("data-handle")?.trim()===LOCKED_CARRIER_HANDLE)),!matchedDropdown)return null;const id=matchedDropdown.dataset.value,name=matchedDropdown.textContent.trim(),handle=matchedDropdown.dataset.handle||null,categoryId=matchedDropdown.dataset.categoryId||null,categoryName=matchedDropdown.dataset.categoryName||null;dropdown.setSelectedValue(name,handle);const wait=this.waitForEventResult(this,"pyd:form-changed");return this.dispatchEvent(new CustomEvent("pyd:form-changed",{detail:{id,name,selection,categoryId,categoryName,stepName:selection},bubbles:!0})),await wait,{id,name}},brandData=await selectDropdown(this.dropdowns.brand,brand,"brand"),seriesData=brandData?await selectDropdown(this.dropdowns.series,series,"series"):null,deviceData=seriesData;if(((seriesData?await selectDropdown(this.dropdowns.model,model,"model"):null)||seriesData?await selectDropdown(this.dropdowns.storage,storage,"storage"):null)&&await selectDropdown(this.dropdowns.carrier,carrier,"carrier"),this.formSubmitting(!1),brandData===null){this.disableQuestions(),this.disableSubmit();return}let allSelected=!0;["q1","q2","q3"].forEach(key=>{const value=urlParams[key];if(!value){allSelected=!1;return}const question=this.conditionQuestions[key];if(!question){allSelected=!1;return}const radio=question.querySelector(`input[type="radio"][value="${value}"]`);if(!radio){allSelected=!1;return}radio.checked=!0,this.dispatchEvent(new CustomEvent("pyd:form-changed",{detail:{selection:key,value,stepName:key},bubbles:!0}))}),allSelected&&brandData!==null&&deviceData!==null&&this.handleFormSubmit()}waitForEventResult(target,eventName){return new Promise(resolve=>{const handler=async e=>{target.removeEventListener(eventName,handler),resolve(e.asyncResult instanceof Promise?await e.asyncResult:e.asyncResult)};target.addEventListener(eventName,handler)})}resetDownstream(keys){keys.forEach(key=>{const dropdown=this.dropdowns[key];dropdown?.reset(),key==="model"&&dropdown?.hide()})}disableQuestions(){Object.values(this.conditionQuestions).forEach(question=>{question&&(question.setAttribute("disabled",""),question.querySelectorAll('input[type="radio"]').forEach(input=>{input.checked=!1,input.disabled=!0,input.tabIndex=-1}),question.querySelectorAll("label.pyd-form__question-card").forEach(label=>{label.tabIndex=-1}))})}enableQuestion(key){const section=this.conditionQuestions[key];section&&(section.removeAttribute("disabled"),section.querySelectorAll('input[type="radio"]').forEach(input=>{input.disabled=!1,input.tabIndex=-1}),section.querySelectorAll("label.pyd-form__question-card").forEach(label=>{label.tabIndex=0}))}enableSubmit(){this.submit.removeAttribute("disabled")}disableSubmit(){const anyDisabled=Object.values(this.conditionQuestions).some(q=>q?.hasAttribute("disabled"));this.submit.toggleAttribute("disabled",anyDisabled)}formSubmitting(submitting=!1){this.classList.toggle("submitting",submitting),this.submit.classList.toggle("loading",submitting),submitting?(this.submit.toggleAttribute("disabled",!0),Object.values(this.dropdowns||{}).forEach(dropdown=>{typeof dropdown?.disable=="function"&&dropdown.disable()})):(Object.values(this.dropdowns||{}).forEach(dropdown=>{typeof dropdown?.enable=="function"&&dropdown.options?.length>0&&dropdown.enable()}),this.disableSubmit())}async handleFormSubmit(){this.formSubmitting(!0);try{document.querySelector(".offer-screen.device-error")?.classList.add("hidden"),await PYD.getPriceEstimate(),this.handleFormComplete()}catch(error){PYD.activateErrorCard();let errorData={apiUrl:this.apiUrl,query:PYD.state};PYD.handleError("Failed to submit form",error,errorData)}finally{this.formSubmitting(!1),this.submit.toggleAttribute("disabled",!0)}}handleFormComplete(){const{brand,series,model,category,storage,carrier,payout,q1,q2,q3}=PYD.state,offerList=payout?.offerV3??[],mailInEntry=offerList.find(entry=>entry.channel==="TRADE_IN")||null,kioskEntry=offerList.find(entry=>entry.channel==="WEB")||null,mailInPayout=mailInEntry?.amount??null,baseKioskPayout=kioskEntry?.amount??null;PYD.clearSessionStorage("pyd"),PYD.clearSessionStorage("price_your_device"),PYD.setSessionStorage("pyd",{carrierName:carrier?.handle===LOCKED_CARRIER_HANDLE?"Other":carrier?.name??null,brandId:brand?.id??null,brandName:brand?.name??null,carrierId:carrier?.id??null,categoryId:category?.id??null,categoryName:category?.name??null,cracks:q3?.id??null,deviceId:payout?.deviceId,lcdOk:q2?.id??null,modelId:model?.id??null,modelName:model?.name??null,productId:payout?.pid??null,offerId:payout?.offerId??null,offerPriceMailIn:mailInPayout??null,offerPrice:baseKioskPayout??null,offerState:payout?.offerState??null,promoPrice:payout?.promotion?.promoPrice??0,powerUp:q1?.id??null,seriesHandle:model?.handle||series?.handle,seriesId:model?.id||series?.id,seriesName:model?.name||series?.name,storageHandle:storage?.handle??null,storageId:storage?.id??null,storageOption:storage?.name??null}),PYD.setSessionStorage("price_your_device",PYD.state),PYD.setDeviceInfo()}}customElements.define("pyd-form",PYDForm);class PYDModal extends HTMLElement{constructor(){super(),this.backdrop=null,this.dialog=null,this.triggerElement=null,this.closeHandler=this.closeHandler.bind(this),this.outsideClickHandler=this.outsideClickHandler.bind(this),this.keydownHandler=this.keydownHandler.bind(this)}connectedCallback(){const id=this.dataset.modalId;id&&document.querySelectorAll(`[data-modal-trigger="${id}"]`).forEach(btn=>{btn.addEventListener("click",()=>{this.triggerElement=btn,this.open()})})}open(){const clone=this.cloneNode(!0);for(this.backdrop=document.createElement("div"),this.backdrop.classList.add("pyd-modal__backdrop"),this.backdrop.setAttribute("role","dialog"),this.backdrop.setAttribute("aria-modal","true"),this.dialog=document.createElement("div"),this.dialog.classList.add("pyd-modal__dialog");clone.firstChild;)this.dialog.appendChild(clone.firstChild);this.backdrop.appendChild(this.dialog);const titleEl=this.dialog.querySelector(".pyd-modal__title");if(titleEl){if(!titleEl.id){const modalCounter=PYDModal._idCounter=(PYDModal._idCounter||0)+1;titleEl.id="pyd-modal-title-"+modalCounter}this.backdrop.setAttribute("aria-labelledby",titleEl.id)}document.body.appendChild(this.backdrop),requestAnimationFrame(()=>{this.backdrop.classList.add("show"),this.dialog.classList.add("show");const focusable=this.dialog.querySelector('button:not([disabled]):not([hidden]), [href]:not([disabled]):not([hidden]), input:not([disabled]):not([hidden]), select:not([disabled]):not([hidden]), textarea:not([disabled]):not([hidden]), [tabindex]:not
323([tabindex="-1"]):not([disabled]):not([hidden])');focusable&&focusable.focus()}),this.bindEvents()}close(){if(!this.backdrop)return;this.backdrop.classList.remove("show"),this.dialog.classList.remove("show");const trigger=this.triggerElement;setTimeout(()=>{this.backdrop&&this.backdrop.parentNode&&this.backdrop.parentNode.removeChild(this.backdrop),this.unbindEvents(),trigger&&trigger.focus()},250)}bindEvents(){this.backdrop.addEventListener("click",this.outsideClickHandler),this.backdrop.querySelectorAll("[data-modal-close]").forEach(btn=>{btn.addEventListener("click",this.closeHandler)}),document.addEventListener("keydown",this.keydownHandler)}unbindEvents(){this.backdrop&&(this.backdrop.removeEventListener("click",this.outsideClickHandler),this.backdrop.querySelectorAll("[data-modal-close]").forEach(btn=>{btn.removeEventListener("click",this.closeHandler)}),document.removeEventListener("keydown",this.keydownHandler))}outsideClickHandler(e){e.target===this.backdrop&&this.close()}closeHandler(){this.close()}keydownHandler(e){e.key==="Escape"&&(e.preventDefault(),this.close())}}customElements.define("pyd-modal",PYDModal);class PYDTabs extends HTMLElement{constructor(){super(),this.buttons=[],this.contents=[]}connectedCallback(){this.buttons=Array.from(this.querySelectorAll("[data-tab-btn]")),this.contents=Array.from(this.querySelectorAll("[data-tab-content]")),this.buttons.forEach(btn=>{btn.addEventListener("click",()=>this.openTab(btn.dataset.tabBtn))});const defaultBtn=this.querySelector("[data-default]");defaultBtn?this.openTab(defaultBtn.dataset.tabBtn):this.buttons.length&&this.openTab(this.buttons[0].dataset.tabBtn)}openTab(id){this.buttons.forEach(btn=>{btn.classList.toggle("active",btn.dataset.tabBtn===id)}),this.contents.forEach(content=>{const match=content.dataset.tabContent===id;content.classList.toggle("active",match)})}}customElements.define("pyd-tabs",PYDTabs);class PYDSlider extends HTMLElement{constructor(){super(),this.index=0}connectedCallback(){this.track=this.querySelector("[data-track]"),this.slides=Array.from(this.querySelectorAll("[data-slide]")),this.total=this.slides.length,this.count=this.querySelector("[data-count]"),this.prevBtn=this.querySelector("[data-prev]"),this.nextBtn=this.querySelector("[data-next]"),this.update(),this.prevBtn.addEventListener("click",()=>this.prev()),this.nextBtn.addEventListener("click",()=>this.next())}update(){this.style.setProperty("--index",this.index),this.count.textContent=`${this.index+1} / ${this.total}`}next(){this.index<this.total-1&&(this.index++,this.update())}prev(){this.index>0&&(this.index--,this.update())}}customElements.define("pyd-slider",PYDSlider);class TradeInCartItems extends HTMLElement{constructor(){super()}connectedCallback(){document.readyState==="loading"?document.addEventListener("DOMContentLoaded",this.onDomReady.bind(this)):this.onDomReady(),this.emptyCartText=this.getAttribute("empty-cart-text")||"",this.emptyCartCta=this.getAttribute("empty-cart-cta")||"",this.sellMoreCta=this.getAttribute("sell-more-cta")||"",window.addEventListener("tradeIn:cartLoading",()=>this.renderSkeleton()),window.addEventListener("tradeIn:cartLoaded",e=>this.renderCart(e.detail.cart)),window.addEventListener("tradeIn:cartError",e=>this.renderError(e.detail.error))}onDomReady(){this.renderSkeleton()}renderCart(cart){const items=Array.isArray(cart?.items)?cart.items:[],hasItems=items.length>0;this.innerHTML=hasItems?this.renderTable(items):this.renderEmpty(),this.querySelectorAll(".delete-btn").forEach(btn=>{btn.addEventListener("click",e=>{const srNumber=e.currentTarget.dataset.srNumber,productId=e.currentTarget.dataset.productId;window.tradeIn.deleteItem(srNumber,productId)})})}renderTable(items){return`
324      <div class="ti-cart-items">
325        <table class="ti-table">
326          <thead>
327            <tr>
328              <th>Device</th>
329              <th></th>
330              <th>Offer</th>
331            </tr>
332          </thead>
333          <tbody>
334            ${items.map(item=>`
335              <tr data-id="${item.number}">
336                <td>${item.product.manufacturerName} ${item.product.name}</td>
337                <td>
338                  <button class="delete-btn" data-sr-number="${item.number}" data-product-id="${item.id}" aria-label="Delete item">
339                    <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
340                      <path fill-rule="evenodd" clip-rule="evenodd"
341                        d="M12.97 5.5h3.53a.5.5 0 0 1 0 1h-1.25v10a.5.5 0 0 1-.5.5h-8.5c-.28 0-.5-.22-.5-.5v-10H4.5a.5.5 0 1 1 0-1h3.53a3.06 3.06 0 0 1 .6-1.65C9.06 3.32 9.7 3 10.5 3s1.44.32 1.87.85a3.07 3.07 0 0 1 .6 1.65ZM10.5 4c-.51 0-.86.19-1.09.48-.19.24-.31.6-.36 1.02h2.9c-.06-.42-.16-.78-.36-1.02-.24-.29-.58-.48-1.09-.48ZM6.75 6.5V16h7.5V6.5h-7.5Zm1.946 1.396a.5.5 0 0 1 .854.354v6a.5.5 0 0 1-1 0v-6a.5.5 0 0 1 .146-.354Zm2.9 0a.5.5 0 0 1 .854.354v6a.5.5 0 0 1-1 0v-6a.5.5 0 0 1 .146-.354Z"
342                        fill="#000"/>
343                    </svg>
344                  </button>
345                </td>
346                <td>
347                  ${item.bonus>0?`<span class="bonus-price"><s>$${item.estimatedValue.toFixed(2)}</s></span> <span>$${item.estimatedValue.toFixed(2)+item.bonus.toFixed(2)}</span>`:`<span>$${item.estimatedValue.toFixed(2)}</span>`}
348                </td>
349              </tr>
350            `).join("")}
351          </tbody>
352        </table>
353
354        <button data-ti-get-pyd-btn class="pyd-button pyd-button--outline" onclick="javascript:PYD.reset(this);">
355          <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
356            <path d="M10 3H6L4.5.781C4.281.47 4.531 0 4.906 0h6.157c.374 0 .624.469.406.781L10 3ZM6 4h4c.094.094.25.188.406.281C12.156 5.406 16 7.844 16 13a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3c0-5.156 3.813-7.594 5.594-8.719.125-.093.281-.187.406-.281Zm2.625 2.75A.627.627 0 0 0 8 6.125a.627.627 0 0 0-.625.625v.438c-.25.062-.5.156-.719.28-.437.25-.812.72-.781 1.376 0 .625.375 1.031.75 1.281.344.188.781.313 1.125.438h.063c.375.124.656.218.875.343.156.094.156.156.
356156.25.031.156-.031.25-.156.313-.157.125-.407.156-.688.156-.344 0-.656-.125-1.094-.25-.062-.031-.156-.063-.218-.094-.344-.094-.688.063-.782.406a.604.604 0 0 0 .375.782c.063.031.125.031.188.062.281.094.562.188.875.281v.438c0 .344.281.625.625.625a.627.627 0 0 0 .625-.625v-.406c.25-.063.5-.156.75-.281.437-.282.781-.75.75-1.407 0-.656-.344-1.062-.75-1.312a4.994 4.994 0 0 0-1.156-.469h-.032c-.406-.125-.687-.219-.875-.344-.156-.094-.187-.156-.187-.187 0-.125.062-.219.218-.313.157-.094.407-.156.657-.156.312 0 .625.094.968.188.344.062.688-.126.782-.47.094-.312-.125-.655-.438-.75-.219-.062-.437-.124-.656-.155V6.75Z" fill="currentColor"/>
357          </svg>
358          ${this.sellMoreCta}
359        </button>
360      </div>
361    `}renderEmpty(){return`
362      <div class="ti-cart-items">
363        <div class="ti-cart-empty">
364          <div class="ti-cart-empty__text">
365            ${this.emptyCartText}
366          </div>
367          <button data-ti-get-pyd-btn class="pyd-button pyd-button--primary" onclick="javascript:PYD.reset(this);">
368            <svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
369              <path d="M10 3H6L4.5.781C4.281.47 4.531 0 4.906 0h6.157c.374 0 .624.469.406.781L10 3ZM6 4h4c.094.094.25.188.406.281C12.156 5.406 16 7.844 16 13a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3c0-5.156 3.813-7.594 5.594-8.719.125-.093.281-.187.406-.281Zm2.625 2.75A.627.627 0 0 0 8 6.125a.627.627 0 0 0-.625.625v.438c-.25.062-.5.156-.719.28-.437.25-.812.72-.781 1.376 0 .625.375 1.031.75 1.281.344.188.781.313 1.125.438h.063c.375.124.656.218.875.343.156.094.156.156.156.25.031.156-.031.25-.156.313-.157.125-.407.156-.688.156-.344 0-.656-.125-1.094-.25-.062-.031-.156-.063-.218-.094-.344-.094-.688.063-.782.406a.604.604 0 0 0 .375.782c.063.031.125.031.188.062.281.094.562.188.875.281v.438c0 .344.281.625.625.625a.627.627 0 0 0 .625-.625v-.406c.25-.063.5-.156.75-.281.437-.282.781-.75.75-1.407 0-.656-.344-1.062-.75-1.312a4.994 4.994 0 0 0-1.156-.469h-.032c-.406-.125-.687-.219-.875-.344-.156-.094-.187-.156-.187-.187 0-.125.062-.219.218-.313.157-.094.407-.156.657-.156.312 0 .625.094.968.188.344.062.688-.126.782-.47.094-.312-.125-.655-.438-.75-.219-.062-.437-.124-.656-.155V6.75Z" fill="currentColor"/>
370            </svg>
371            ${this.emptyCartCta}
372          </button>
373        </div>
374      </div>
375    `}renderSkeleton(){this.innerHTML=`
376      <div class="pyd-skeleton pyd-skeleton-line-items">
377        <div><span></span><span></span></div>
378        <div><span></span><span></span><span></span></div>
379        <div><span></span><span></span><span></span></div>
380      </div>
381    `}renderError(error){this.innerHTML=`
382      <div class="ti-cart-items ti-error">
383        <p>Something went wrong while loading your cart.</p>
384        <p>${error?.message||"Unknown error"}</p>
385      </div>
386    `}}customElements.define("tradein-cart-items",TradeInCartItems);class TradeInCartSummary extends HTMLElement{connectedCallback(){document.readyState==="loading"?document.addEventListener("DOMContentLoaded",this.onDomReady.bind(this)):this.onDomReady(),window.addEventListener("tradeIn:cartLoading",()=>this.renderSkeleton()),window.addEventListener("tradeIn:cartLoaded",e=>this.renderSummary(e.detail.cart)),window.addEventListener("tradeIn:cartLoaded",e=>{const cart=e.detail?.cart;this.renderSummary(cart)})}onDomReady(){this.renderSkeleton()}renderSummary(cart){const{estimatedSubtotal,estimatedBonus,estimatedTotal}=cart||{},hasItems=(Array.isArray(cart?.items)?cart.items:[])?.length>0,disclaimer=this.getAttribute("disclaimer")||"",cta=this.getAttribute("cta")||"",terms=this.getAttribute("terms")||"",bonus=this.getAttribute("bonus")||"Bonus",subtotal=this.getAttribute("subtotal")||"Subtotal",total=this.getAttribute("total")||"Total",currency="USD";this.innerHTML=hasItems?`
387      <ul class="ti-cart__summary-content">
388        ${estimatedSubtotal?`
389          <li class="ti-cart__summary-item">
390            <span>${subtotal}</span>
391            <span>$${PYD.formatCurrency(estimatedSubtotal)}</span>
392          </li>`:""}
393    
394        ${estimatedBonus?`
395          <li class="ti-cart__summary-item bonus">
396            <span>${bonus}</span>
397            <span>+ $${PYD.formatCurrency(estimatedBonus)}</span>
398          </li>`:""}
399    
400        ${estimatedTotal!==void 0?`
401          <li class="ti-cart__summary-item total">
402            <span>${total}</span>
403            <span><span>${currency}</span> $${PYD.formatCurrency(estimatedTotal)}</span>
404          </li>`:""}
405    
406        ${disclaimer?`
407          <li class="ti-cart__summary-item disclaimer"><p>${disclaimer}</p></li>`:""}
408    
409        ${cta?`
410          <li class="ti-cart__summary-item btn">
411            <button class="pyd-button pyd-button--primary w-full ti-cart__checkout">${cta}</button>
412          </li>`:""}
413    
414        ${terms?`
415          <li class="ti-cart__summary-item terms">${terms}</li>`:""}
416      </ul>
417    `:"",cta&&this.querySelector(".ti-cart__checkout")?.addEventListener("click",()=>{PYD.showScreen("checkout")??PYD.initCheckoutPage()})}renderSkeleton(){this.innerHTML=`
418      <div class="pyd-skeleton pyd-skeleton-cart-summary ti-cart__summary-content">
419        <div><span></span><span></span></div>
420        <div><span></span><span></span></div>
421        <div><span></span><span></span></div>
422        <div><span></span><span></span><span></span></div>
423        <div><span></span></div>
424        <div><span></span><span></span></div>
425      </div>
426    `}}customElements.define("tradein-cart-summary",TradeInCartSummary);class TextInput extends HTMLElement{static get observedAttributes(){return["data-name","data-label","text-color","placeholder-color","border-color","background-color","data-type","data-required","paragraph-size","legend-size","input-label-checked-size"]}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.style.setProperty("--text-color",this.getAttribute("text-color")||"#000000"),this.style.setProperty("--placeholder-color",this.getAttribute("placeholder-color")||"#707070"),this.style.setProperty("--border-color",this.getAttribute("border-color")||"#e85200"),this.style.setProperty("--background-color",this.getAttribute("background-color")||"#fff3f3"),this.style.setProperty("--paragraph-size",this.getAttribute("paragraph-size")+"px"||"16px"),this.style.setProperty("--legend-size",this.getAttribute("legend-size")+"px"||"16px"),this.style.setProperty("--input-label-checked-size",this.getAttribute("input-label-checked-size")+"px"||"14px"),this.style.setProperty("--input-error-color",this.getAttribute("input-error-color")),this.render()}attributeChangedCallback(name,oldVal,newVal){oldVal!==newVal&&(["text-color","placeholder-color","border-color","background-color","paragraph-size","legend-size","input-label-checked-size"].includes(name)&&(this.style.setProperty("--text-color",this.getAttribute("text-color")||"#000000"),this.style.setProperty("--placeholder-color",this.getAttribute("placeholder-color")||"#707070"),this.style.setProperty("--border-color",this.getAttribute("border-color")||"#e85200"),this.style.setProperty("--background-color",this.getAttribute("background-color")||"#fff3f3"),this.style.setProperty("--paragraph-size",this.getAttribute("paragraph-size")+"px"||"16px"),this.style.setProperty("--legend-size",this.getAttribute("legend-size")+"px"||"16px"),this.style.setProperty("--input-label-checked-size",this.getAttribute("input-label-checked-size")+"px"||"14px")),["data-name","data-label"].includes(name)&&(this.inputName=this.getAttribute("data-name")||"input-name",this.inputLabel=this.getAttribute("data-label")||"Label"),this.render())}render(){if(!!!this.shadowRoot.querySelector("style")){const style=document.createElement("style");style.textContent=`
427        :host {
428          display: block;
429        }
430
431        .input-box {
432          position: relative;
433          display: block;
434          max-width: 749px;
435          margin: 0;
436        }
437
438        input[type="text"], input[type="email"], input[type="tel"] {
439          width: 100%;
440          box-sizing: border-box;
441          height: 48px;
442          padding: 16px 16px 0 16px;
443          border: 1px solid var(--border-color);
444          border-radius: 6px;
445          background-color: var(--background-color);
446          color: var(--text-color);
447          font-size: var(--paragraph-size);
448          font-weight: 500;
449          outline: none;
450        }
451
452        input[type="text"]::placeholder, input[type="email"]::placeholder, input[type="tel"]::placeholder {
453          color: transparent;
454        }
455
456        label {
457          position: absolute;
458          left: 12px;
459          top: 50%;
460          transform: translateY(-50%);
461          font-size: var(--legend-size);
462          color: var(--placeholder-color);
463          background: transparent;
464          pointer-events: none;
465          transition:
466            top 0.2s ease,
467            right 0.2s ease,
468            left 0.2s ease,
469            font-size 0.2s ease,
470            color 0.2s ease;
471        }
472
473        .input-box.focused label,
474        .input-box.error label,
475        .input-box.filled label {
476          top: 5px;
477          left: 12px;
478          right: 12px;
479          font-size: var(--input-label-checked-size);
480          color: var(--placeholder-color);
481        }
482
483        .input-box.error input {
484          border-color: var(--input-error-color);
485        }
486
487        .input-box .error-message {
488          color: var(--input-error-color);
489          font-size: var(--legend-size);
490          margin-top: 4px;
491          display: none;
492          line-height: 1;
493        }
494
495        .input-box.error .error-message {
496          display: block;
497          var(--legend-size)
498        }
499      `,this.shadowRoot.appendChild(style)}const existing=this.shadowRoot.querySelector(".input-box");existing&&this.shadowRoot.removeChild(existing);const container=document.createElement("div");container.className="input-box",container.innerHTML=`
500      <input type="${this.getAttribute("data-type")}" name="${this.inputName}" id="${this.inputName}" aria-label="${this.inputLabel}">
501      <label for="${this.inputName}">${this.inputLabel}</label>
502      <div class="error-message">This field is required</div>
503    `,this.shadowRoot.appendChild(container);const input=container.querySelector("input"),dataRequired=this.getAttribute("data-required");dataRequired=="true"&&(input.required=!0),this.getAttribute("data-type")=="tel"&&(input.setAttribute("pattern","[0-9]{3}-[0-9]{3}-[0-9]{4}"),input.setAttribute("title","Enter a 10-digit phone number"),input.addEventListener("input",function(e){let x=e.target.value.replace(/\D/g,"").match(/(\d{0,3})(\d{0,3})(\d{0,4})/);e.target.value=x[2]?x[1]+"-"+x[2]+(x[3]?"-"+x[3]:""):x[1]})),(this.inputName==="first-name"||this.inputName==="last-name")&&(input.setAttribute("pattern",".{2,}"),input.setAttribute("title","Please enter at least 2 characters"));const updateState=()=>{container.classList.toggle("filled",!!input.value)};input.addEventListener("focus",()=>container.classList.add("focused"));const errorMessage=container.querySelector(".error-message"),validate=()=>{const isRequired=dataRequired==="true",isEmpty=!input.value.trim(),inputId=input.getAttribute("id"),message=PYD.allErrorMessages[inputId]||"This field is required";isRequired&&isEmpty?(container.classList.add("error"),errorMessage.textContent=message):(container.classList.remove("error"),errorMessage.textContent="")};input.addEventListener("blur",()=>
503{container.classList.remove("focused"),updateState(),validate()}),input.addEventListener("input",updateState),updateState()}}customElements.define("text-input",TextInput);class CheckboxInput extends HTMLElement{static get observedAttributes(){return["data-name","data-checked","data-richtext","data-label","check-color","text-color","border-color","background-color","data-required","paragraph-size","legend-size"]}constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){this.updateCustomProperties(),this.render()}attributeChangedCallback(name,oldVal,newVal){oldVal!==newVal&&(["check-color","text-color","border-color","background-color"].includes(name)&&this.updateCustomProperties(),["data-name","data-label"].includes(name)&&(this.inputName=this.getAttribute("data-name")||"checkbox-name",this.inputLabel=this.getAttribute("data-label")||"Check me"),this.render())}updateCustomProperties(){this.style.setProperty("--check-color",this.getAttribute("check-color")||"#ffffff"),this.style.setProperty("--text-color",this.getAttribute("text-color")||"#000000"),this.style.setProperty("--border-color",this.getAttribute("border-color")||"#e85200"),this.style.setProperty("--background-color",this.getAttribute("background-color")||"#fff3f3"),this.style.setProperty("--checkbox-error-color",this.getAttribute("checkbox-error-color")||"#FF2026"),this.style.setProperty("--checkbox-unchecked-border-color",this.getAttribute("checkbox-unchecked-border-color")||"#000000"),this.style.setProperty("--paragraph-size",this.getAttribute("paragraph-size")+"px"||"16px"),this.style.setProperty("--legend-size",this.getAttribute("legend-size")+"px"||"16px")}render(){if(!!!this.shadowRoot.querySelector("style")){const style=document.createElement("style");style.textContent=`
504        :host {
505          display: block;
506        }
507
508        .checkbox-wrapper {
509          display: grid;
510          grid-template-columns: 24px auto;
511          align-items: start;
512          gap: 0;
513          margin: 0;
514          cursor: pointer;
515          color: var(--text-color);
516        }
517
518        input[type="checkbox"] {
519          appearance: none;
520          width: 16px;
521          height: 16px;
522          margin: 3px 0;
523          border: 1.5px solid var(--checkbox-unchecked-border-color);
524          border-radius: 4px;
525          background-color: transparent;
526          cursor: pointer;
527          position: relative;
528        }
529
530        input[type="checkbox"]:checked {
531          border: 1.5px solid var(--border-color);
532          background-color: var(--background-color);
533        }
534
535        input[type="checkbox"]:checked::after {
536          content: '';
537          position: absolute;
538          left: 4px;
539          top: 0;
540          width: 4px;
541          height: 8px;
542          border: solid var(--check-color);
543          border-width: 0 2px 2px 0;
544          transform: rotate(45deg);
545        }
546
547        label {
548          font-size: var(--legend-size);
549          cursor: pointer;
550        }
551
552        input[type="checkbox"].invalid:checked {
553          border: 1.5px solid var(--border-color);
554        }
555
556        .error-message {
557          display: none;
558          color: var(--checkbox-error-color);
559          font-size: var(--legend-size);
560          grid-column: 1 / -1;
561          letter-spacing: 0;
562          margin-top: 10px;
563        }
564
565        .label-content * {
566          margin: 0;
567        }
568
569        .label-content a {
570          color: inherit;
571          text-decoration: underline;
572        }
573      `,this.shadowRoot.appendChild(style)}const existing=this.shadowRoot.querySelector(".checkbox-wrapper");existing&&this.shadowRoot.removeChild(existing),this.inputName=this.getAttribute("data-name")||"checkbox-name";const isRichtext=this.getAttribute("data-richtext")==="true";let inputLabel=this.getAttribute("data-label")||"Check me";if(isRichtext){const el=document.getElementById(inputLabel);el&&(inputLabel=el.innerHTML.trim())}const isChecked=this.getAttribute("data-checked")==="true",dataRequired=this.getAttribute("data-required")==="true",wrapper=document.createElement("label");
573wrapper.className="checkbox-wrapper",wrapper.innerHTML=`
574      <input type="checkbox" name="${this.inputName}" id="${this.inputName}" ${isChecked?"checked":""} ${dataRequired?"required":""}>
575      <div class="label-content"></div>
576      <div class="error-message">This field is required.</div>
577    `;const labelContent=wrapper.querySelector(".label-content");isRichtext?labelContent.innerHTML=inputLabel:labelContent.textContent=inputLabel,this.shadowRoot.appendChild(wrapper);const checkbox=this.shadowRoot.querySelector('input[type="checkbox"]'),errorMessage=this.shadowRoot.querySelector(".error-message");checkbox.addEventListener("change",()=>{checkbox.checked&&(checkbox.classList.remove("invalid"),checkbox.setCustomValidity(""),errorMessage&&(errorMessage.textContent="",errorMessage.style.display="none"))})}}customElements.define("checkbox-input",CheckboxInput);class RadioAccordion extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this.options=[]}static get observedAttributes(){return["data-name","data-options","title-color","caption-color","border-color","background-color","hide-dropdown","paragraph-size","legend-size","data-required"]}attributeChangedCallback(name,oldVal,newVal){name==="data-name"&&(this.radioName=newVal||"dynamic-radio",this.render()),name==="data-options"&&oldVal!==newVal&&(this.parseOptionsFromAttribute(newVal),this.render()),name==="title-color"&&this.style.setProperty("--title-color",newVal||"#000000"),name==="caption-color"&&this.style.setProperty("--caption-color",newVal||"#707070"),name==="border-color"&&this.style.setProperty("--border-color",newVal||"#e85200"),name==="background-color"&&this.style.setProperty("--background-color",newVal||"#fff3f3"),name==="hide-dropdown"&&(newVal=="true"?this.style.setProperty("--hide-dropdown","none"):this.style.setProperty("--hide-dropdown","block"))}connectedCallback(){this.radioName=this.getAttribute("data-name")||"radio-name";const dataAttr=this.getAttribute("data-options");this.parseOptionsFromAttribute(dataAttr),this.style.setProperty("--title-color",this.getAttribute("title-color")||"#000000"),this.style.setProperty("--caption-color",this.getAttribute("caption-color")||"#707070"),this.style.setProperty("--border-color",this.getAttribute("border-color")||"#e85200"),this.style.setProperty("--background-color",this.getAttribute("background-color")||"#fff3f3"),this.style.setProperty("--input-error-color",this.getAttribute("input-error-color")||"#FF2026"),this.style.setProperty("--paragraph-size",this.getAttribute("paragraph-size")+"px"||"16px"),this.style.setProperty("--legend-size",this.getAttribute("legend-size")+"px"||"16px"),this.render()}parseOptionsFromAttribute(data){try{this.options=data?JSON.parse(data):[]}catch(e){console.error("Invalid JSON in data-options:",e),this.options=[]}}render(){this.shadowRoot.innerHTML=`
578      <style>
579        :host {
580          display: block;
581        }
582        .info-wrapper {
583          display: grid;
584          grid-template-columns: 26px auto;
585          align-items: start;
586        }
587        .info-icon {
588          width: 18px;
589          height: 18px;
590          background-repeat: no-repeat;
591          background-position: center;
592          background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTciIHZpZXdCb3g9IjAgMCAxOCAxNyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTkgMkM2LjY1NjI1IDIgNC41MzEyNSAzLjI1IDMuMzQzNzUgNS4yNUMyLjE4NzUgNy4yODEyNSAyLjE4NzUgOS43NSAzLjM0Mzc1IDExLjc1QzQuNTMxMjUgMTMuNzgxMiA2LjY1NjI1IDE1IDkgMTVDMTEuMzEyNSAxNSAxMy40Mzc1IDEzLjc4MTIgMTQuNjI1IDExLjc1QzE1Ljc4MTIgOS43NSAxNS43ODEyIDcuMjgxMjUgMTQuNjI1IDUuMjVDMTMuNDM3NSAzLjI1IDExLjMxMjUgMiA5IDJaTTkgMTYuNUM2LjEyNSAxNi41IDMuNSAxNSAyLjA2MjUgMTIuNUMwLjYyNSAxMC4wMzEyIDAuNjI1IDcgMi4wNjI1IDQuNUMzLjUgMi4wMzEyNSA2LjEyNSAwLjUgOSAwLjVDMTEuODQzOCAwLjUgMTQuNDY4OCAyLjAzMTI1IDE1LjkwNjIgNC41QzE3LjM0MzggNyAxNy4zNDM4IDEwLjAzMTIgMTUuOTA2MiAxMi41QzE0LjQ2ODggMTUgMTEuODQzOCAxNi41IDkgMTYuNVpNNy43NSAxMUg4LjVWOUg3Ljc1QzcuMzEyNSA5IDcgOC42ODc1IDcgOC4yNUM3IDcuODQzNzUgNy4zMTI1IDcuNSA3Ljc1IDcuNUg5LjI1QzkuNjU2MjUgNy41IDEwIDcuODQzNzUgMTAgOC4yNVYxMUgxMC4yNUMxMC42NTYyIDExIDExIDExLjM0MzggMTEgMTEuNzVDMTEgMTIuMTg3NSAxMC42NTYyIDEyLjUgMTAuMjUgMTIuNUg3Ljc1QzcuMzEyNSAxMi41IDcgMTIuMTg3NSA3IDExLjc1QzcgMTEuMzQzOCA3LjMxMjUgMTEgNy43NSAxMVpNOSA2LjVDOC40Mzc1IDYuNSA4IDYuMDYyNSA4IDUuNUM4IDQuOTY4NzUgOC40Mzc1IDQuNSA5IDQuNUM5LjUzMTI1IDQuNSAxMCA0Ljk2ODc1IDEwIDUuNUMxMCA2LjA2MjUgOS41MzEyNSA2LjUgOSA2LjVaIiBmaWxsPSIjNTI0RjREIi8+Cjwvc3ZnPgo=);
593        }
594
595        .radio-option {
596          position: relative;
597          display: block;
598          border: 2px solid #ffffff;
599          background-color: #F0EBE3;
600          margin-bottom: -1px;
601          max-width: 600px;
602          transition: border-color 0.2s, background-color 0.2s;
603          overflow: hidden;
604        }
605        
606        label.radio-option:first-of-type {
607          border-top-left-radius: 8px;
608          border-top-right-radius: 8px;
609        }
610
611        label.radio-option:last-of-type {
612          border-bottom-left-radius: 8px;
613          border-bottom-right-radius: 8px;
614        }
615
616        .radio-option.checked {
617          border-radius: 8px;
618          background-color: var(--background-color);
619          border-color: var(--border-color);
620          z-index: 1;
621        }
622
623        .radio-header {
624          display: grid;
625          grid-template-columns: 26px 1fr 100px;
626          align-items: start;
627          padding: 10px;
628          cursor: pointer;
629          transition: background 0.2s;
630          align-items: center;
631        }
632
633        .radio-option:hover .radio-header {
634          background-color: #ffffff;
635        }
636
637        .radio-input {
638          appearance: none;
639          -webkit-appearance: none;
640          width: 18px;
641          height: 18px;
642          border: 2px solid #000000;
643          border-radius: 50%;
644          margin: 3px 0;
645          position: relative;
646          background-color: white;
647          cursor: pointer;
648          transition: border 0.2s;
649        }
650
651        .radio-input:checked {
652          border: 6px solid var(--border-color);
653        }
654        .text-content {
655          display: flex;
656          flex-direction: column;
657        }
658
659        .image-content {
660          text-align: right;
661        }
662
663        .image-content img {
664          max-width: 80px;
665        }
666
667        .title {
668          font-weight: 400;
669          font-size: var(--legend-size);
670          margin-top: 0;
671          color: var(--title-color);
672        }
673
674        .caption {
675          font-size: var(--legend-size);
676          color: var(--caption-color);
677          margin-top: 2px;
678        }
679
680        .dropdown {
681          font-size: var(--legend-size);
682          padding: 12px 10px;
683          display: none;
684          background: var(--background-color);
685          border-top: 1px solid #ddd;
686        }
687
688        .radio-option.checked .dropdown {
689          display: block;
690        }
691
692        .radio-option.checked .dropdown{
693          display: var(--hide-dropdown);
694        }
695
696        .radio-checked-content {
697          display: none;
698        }
699
700        .radio-checked-content.active {
701          padding: 14px 0;
702          display: flex;
703          flex-direction: column;
704          gap: 14px;
705        }
706
707        .radio-checked-content__grid-3 {
708          display: grid;
709          grid-template-columns: 1fr 1fr 1fr;
710          gap: 14px;
711        }
712
713        .info-wrapper {
714          margin-top: 14px;
715        }
716
717        #container.invalid .radio-options-wrapper {
718          border-radius: 8px;
719          border: 1px solid var(--input-error-color);
720          padding-bottom: 1px;
721        }
722
723        #container.invalid .error-message {
724          display: block!important;
725          font-size: var(--legend-size);
726        }
727      </style>
728      <div id="container"></div>
729    `;const container=this.shadowRoot.querySelector("#container");container.innerHTML="";const optionsWrapper=document.createElement("div");optionsWrapper.className="radio-options-wrapper",this.options.forEach((opt,
729index)=>{const label=document.createElement("label");label.className="radio-option",label.innerHTML=`
730        <div class="radio-header">
731          <input class="radio-input" type="radio" name="${this.radioName}" value="${opt.value}">
732          <div class="text-content">
733            <div class="title">${opt.title}</div>
734            <div class="caption">${opt.caption}</div>
735          </div>
736          <div class="image-content">
737            ${opt.image?`<img src="${opt.image}">`:""}
738          </div>
739        </div>
740      `,label.querySelector("input").addEventListener("change",()=>this.updateChecked());const dropdown=document.createElement("div");if(dropdown.className="dropdown",opt.html){const temp=document.createElement("div");temp.innerHTML=opt.html,[...temp.children].forEach(el=>dropdown.appendChild(el))}label.appendChild(dropdown),optionsWrapper.appendChild(label)}),container.appendChild(optionsWrapper);const errorDiv=document.createElement("div");errorDiv.className="error-message",errorDiv.style.display="none",errorDiv.style.color="#FF2026",container.appendChild(errorDiv),this.updateChecked()}updateChecked(){const allOptions=this.shadowRoot.querySelectorAll(".radio-option"),hasCheckoutPaymentOptions=this.classList.contains("checkout-payment-options");let anyChecked=!1;allOptions.forEach(label=>{const input=label.querySelector('input[type="radio"]'),isChecked=input.checked;label.classList.toggle("checked",isChecked),isChecked&&(anyChecked=!0,hasCheckoutPaymentOptions&&PYD.gettingPackingSlip(input.value))});const radioContainer=this.shadowRoot.querySelector("#container");radioContainer&&anyChecked&&radioContainer.classList.remove("invalid")}}customElements.define("radio-accordion",RadioAccordion);class RadioGroup extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this.options=[]}static get observedAttributes(){return["data-name","data-options","title-color","caption-color","border-color","background-color","background-color-checked","error-color","data-required"]}attributeChangedCallback(name,oldVal,newVal){name==="data-name"&&(this.radioName=newVal||"dynamic-radio",this.render()),name==="data-options"&&oldVal!==newVal&&(this.parseOptionsFromAttribute(newVal),this.render()),name==="title-color"&&this.style.setProperty("--title-color",newVal),name==="caption-color"&&this.style.setProperty("--caption-color",newVal),name==="border-color"&&this.style.setProperty("--border-color",newVal),name==="background-color"&&this.style.setProperty("--background-color",newVal),name==="error-color"&&this.style.setProperty("--input-error-color",newVal)}connectedCallback(){this.radioName=this.getAttribute("data-name")||"radio-name";const dataAttr=this.getAttribute("data-options");this.parseOptionsFromAttribute(dataAttr);const titleColor=this.getAttribute("title-color"),captionColor=this.getAttribute("caption-color"),borderColor=this.getAttribute("border-color"),bgColor=this.getAttribute("background-color"),errorColor=this.getAttribute("error-color"),bgColorChecked=this.getAttribute("background-color-checked");this.style.setProperty("--title-color",titleColor),this.style.setProperty("--caption-color",captionColor),this.style.setProperty("--border-color",borderColor),this.style.setProperty("--background-color",bgColor),this.style.setProperty("--background-color-checked",bgColorChecked),this.style.setProperty("--input-error-color",errorColor);const legendSizeAttr=this.getAttribute("legend-size"),legendSize=legendSizeAttr?legendSizeAttr+"px":"16px";this.style.setProperty("--legend-size",legendSize),this.render()}parseOptionsFromAttribute(data){try{this.options=data?JSON.parse(data):[]}catch(e){console.error("Invalid JSON in data-options:",e),this.options=[]}}render(){this.shadowRoot.innerHTML=`
741      <style>
742        :host {
743          display: block;
744        }
745
746        .radio-option {
747          position: relative;
748          display: flex;
749          align-items: flex-start;
750          padding: 14px 8px 14px;
751          border: 1px solid #dedcdf;
752          margin-bottom: -1px;
753          max-width: 749px;
754          cursor: pointer;
755          transition: border-color 0.2s, background-color 0.2s;
756          background-color: var(--background-color);
757        }
758
759        .radio-option.hide-radio {
760          padding: 14px;
761        }
762
763        label.radio-option:first-of-type {
764          border-top-left-radius: 8px;
765          border-top-right-radius: 8px;
766        }
767
768        label.radio-option:last-of-type {
769          border-bottom-left-radius: 8px;
770          border-bottom-right-radius: 8px;
771        }
772
773        .radio-option:hover {
774          background-color: var(--background-color-checked);
775          border-color: var(--border-color);
776          z-index: 1;
777          border-radius: 8px;
778        }
779
780        .radio-option.checked {
781          background-color: var(--background-color-checked);
782          border-color: var(--border-color);
783          z-index: 1;
784          border-width: 2px;
785          border-radius: 8px;
786        }
787
788        .radio-input {
789          appearance: none;
790          -webkit-appearance: none;
791          width: 18px;
792          height: 18px;
793          border: 1px solid #dedede;
794          border-radius: 50%;
795          margin-right: 8px;
796          position: relative;
797          cursor: pointer;
798          background-color: #ffffff;
799          transition: border 0.2s;
800        }
801
802        .radio-option.hide-radio .radio-input {
803          display: none;
804        }
805
806        .radio-input:checked {
807          border: 6px solid var(--border-color);
808        }
809
810        .radio-input:focus {
811          outline: none;
812        }
813
814        .radio-option:has(.radio-input:focus-visible) {
815          outline: 2px solid var(--border-color);
816          outline-offset: 2px;
817          z-index: 2;
818        }
819
820        .text-content {
821          display: flex;
822          flex-direction: column;
823        }
824
825        .title {
826          margin-top: 0;
827          font-weight: 700;
828          font-size: 14px;
829          color: var(--title-color);
830        }
831
832        .caption {
833          font-size: 14px;
834          color: var(--caption-color);
835          margin-top: 4px;
836        }
837
838        #container.invalid .radio-options-wrapper {
839          border-radius: 8px;
840          border: 1px solid var(--input-error-color);
841          padding-bottom: 1px;
842        }
843
844        .error-message {
845          color: var(--input-error-color);
846        }
847
848        #container.invalid .error-message {
849          display: block!important;
850          font-size: var(--legend-size);
851        }
852      </style>
853      <div id="container"></div>
854    `;const container=this.shadowRoot.querySelector("#container");container.innerHTML="";const optionsWrapper=document.createElement("div");optionsWrapper.className="radio-options-wrapper",this.options.forEach((opt,
854index)=>{const label=document.createElement("label");label.className="radio-option",label.innerHTML=`
855        <input class="radio-input" type="radio" name="${this.radioName}" value="${opt.value}">
856        <div class="text-content">
857          <div class="title">${opt.title}</div>
858          <div class="caption">${opt.caption}</div>
859        </div>
860      `,label.querySelector("input").addEventListener("change",()=>this.updateChecked()),optionsWrapper.appendChild(label)}),container.appendChild(optionsWrapper);const errorDiv=document.createElement("div");errorDiv.className="error-message",errorDiv.style.display="none",container.appendChild(errorDiv),this.updateChecked()}updateChecked(){const allOptions=this.shadowRoot.querySelectorAll(".radio-option");let anyChecked=!1;allOptions.forEach(label=>{const isChecked=label.querySelector('input[type="radio"]').checked;label.classList.toggle("checked",isChecked),isChecked&&(anyChecked=!0)});const radioContainer=this.shadowRoot.querySelector("#container");radioContainer&&anyChecked&&radioContainer.classList.remove("invalid")}}customElements.define("radio-group",RadioGroup);class SearchableSelect extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this.states=[]}connectedCallback(){const name=this.getAttribute("data-name")||"state",label=this.getAttribute("data-label")||"Select",textColor=this.getAttribute("text-color"),placeholderColor=this.getAttribute("placeholder-color"),borderColor=this.getAttribute("border-color"),backgroundColor=this.getAttribute("background-color"),optionData=this.getAttribute("data-options"),paragraphSize=this.getAttribute("paragraph-size")+"px"||"16px",legendSize=this.getAttribute("legend-size")+"px"||"16px",inputLabelCheckedSize=this.getAttribute("input-label-checked-size")+"px"||"14px",inputErrorColor=this.getAttribute("input-error-color");try{this.states=JSON.parse(optionData)||[]}catch{console.warn("Invalid JSON in data-options attribute"),this.states=[]}this.shadowRoot.innerHTML=`
861      <style>
862        :host {
863          display: block;
864          position: relative;
865          max-width: 749px;
866        }
867
868        .input-box {
869          position: relative;
870          width: 100%;
871        }
872
873        input {
874          width: 100%;
875          box-sizing: border-box;
876          height: 48px;
877          padding: 16px 12px 0 12px;
878          border: 1px solid ${borderColor};
879          border-radius: 6px;
880          background-color: ${backgroundColor};
881          background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTEiIHZpZXdCb3g9IjAgMCAxOCAxMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTguMzM1OTQgOS42NjQwNkwwLjgzNTkzOCAyLjE2NDA2QzAuNDQ1MzEyIDEuODEyNSAwLjQ0NTMxMiAxLjIyNjU2IDAuODM1OTM4IDAuODM1OTM4QzEuMTg3NSAwLjQ4NDM3NSAxLjc3MzQ0IDAuNDg0Mzc1IDIuMTY0MDYgMC44MzU5MzhMOSA3LjcxMDk0TDE1LjgzNTkgMC44NzVDMTYuMTg3NSAwLjQ4NDM3NSAxNi43NzM0IDAuNDg0Mzc1IDE3LjE2NDEgMC44NzVDMTcuNTE1NiAxLjIyNjU2IDE3LjUxNTYgMS44MTI1IDE3LjE2NDEgMi4xNjQwNkw5LjYyNSA5LjY2NDA2QzkuMjczNDQgMTAuMDU0NyA4LjY4NzUgMTAuMDU0NyA4LjMzNTk0IDkuNjY0MDZaIiBmaWxsPSIjNTM0RjRDIi8+Cjwvc3ZnPgo=);
882          background-repeat: no-repeat;
883          background-position: right 15px center;
884          color: ${textColor};
885          font-size: ${paragraphSize};
886          outline: none;
887          cursor: default;
888          caret-color: transparent;
889        }
890
891        .input-box.error input {
892          border-color: ${inputErrorColor};
893        }
894
895        .input-box .error-message {
896          color: ${inputErrorColor};
897          font-size: ${legendSize};
898          margin-top: 4px;
899          display: none;
900          line-height: 1;
901        }
902
903        .input-box.error .error-message {
904          display: block;
905        }
906
907        label {
908          position: absolute;
909          left: 12px;
910          top: 50%;
911          transform: translateY(-50%);
912          font-size: 14px;
913          color: ${placeholderColor};
914          background: transparent;
915          pointer-events: none;
916          transition: top 0.2s ease, font-size 0.2s ease;
917        }
918
919        .focused label,
920        .error label,
921        .filled label {
922          top: 5px;
923          font-size: ${inputLabelCheckedSize}px;
924        }
925
926        ul {
927          list-style: none;
928          padding: 0;
929          margin: 4px 0 0;
930          border: 1px solid ${borderColor};
931          background: white;
932          max-height: 180px;
933          overflow-y: auto;
934          border-radius: 6px;
935          position: absolute;
936          width: -webkit-fill-available;
937          width: -moz-available;
938          z-index: 100;
939          display: none;
940        }
941
942        ul.visible {
943          display: block;
944        }
945
946        li {
947          padding: 8px 12px;
948          cursor: pointer;
949        }
950
951        li:hover,
952        li.active {
953          background: #eee;
954        }
955      </style>
956
957      <div class="input-box">
958        <label for="${name}">${label}</label>
959        <input type="text" id="${name}" name="${name}" autocomplete="off" />
960        <div class="error-message">This field is required</div>
961        <ul></ul>
962      </div>
963    `;const container=this.shadowRoot.querySelector(".input-box"),input=this.shadowRoot.querySelector("input"),ul=this.shadowRoot.querySelector("ul");this.getAttribute("data-required")=="true"&&(input.required=!0);let activeIndex=-1;const updateSuggestions=()=>
963{ul.innerHTML="",activeIndex=-1,this.states.forEach(state=>{const li=document.createElement("li");li.textContent=state,li.addEventListener("mousedown",()=>{input.value=state,ul.classList.remove("visible"),container.classList.add("filled")}),ul.appendChild(li)}),ul.classList.add("visible")},highlightItem=(items,index)=>{items.forEach((li,i2)=>li.classList.toggle("active",i2===index)),index>=0&&items[index]&&items[index].scrollIntoView({block:"nearest"})},getItems=()=>Array.from(ul.querySelectorAll("li"));input.addEventListener("focus",()=>{container.classList.add("focused"),updateSuggestions()}),input.addEventListener("blur",()=>{ul.classList.remove("visible"),container.classList.remove("focused"),activeIndex=-1;const inputId=input.getAttribute("id"),message=PYD.allErrorMessages[inputId]||"This field is required",errorMessage=container.querySelector(".error-message");input.value.trim()!==""?(container.classList.add("filled"),container.classList.remove("error"),errorMessage.textContent=""):(container.classList.remove("filled"),container.classList.add("error"),errorMessage.textContent=message)}),input.addEventListener("keydown",e=>{const isOpen=ul.classList.contains("visible");if(e.key==="ArrowDown"){e.preventDefault(),isOpen||updateSuggestions();const items=getItems();activeIndex=Math.min(activeIndex+1,items.length-1),highlightItem(items,activeIndex)}else if(e.key==="ArrowUp"){e.preventDefault();const items=getItems();activeIndex=Math.max(activeIndex-1,0),highlightItem(items,activeIndex)}else if(e.key==="Enter"||e.key===" "){e.preventDefault();const items=getItems();isOpen&&activeIndex>=0&&items[activeIndex]?items[activeIndex].dispatchEvent(new MouseEvent("mousedown",{bubbles:!0})):isOpen||updateSuggestions()}else e.key==="Escape"?(e.preventDefault(),ul.classList.remove("visible"),activeIndex=-1):e.key!=="Tab"&&e.key!=="Shift"&&e.preventDefault()})}}customElements.define("searchable-select",SearchableSelect);class AddressInjector extends HTMLElement{constructor(){super()}connectedCallback(){this.injectPlaceholder()}injectPlaceholder(){const placeholder=document.querySelector(".check-address-placeholder"),checkoutBlock=document.querySelector(".checkout-payment-options");if(!placeholder||!checkoutBlock||!checkoutBlock.shadowRoot)return;const addressContainer=checkoutBlock.shadowRoot.querySelector(".dropdown .address");if(!addressContainer)return;addressContainer.appendChild(placeholder),this.dispatchEvent(new CustomEvent("address-injected",{detail:{injected:!0},bubbles:!0}));const paymentRadio=document.querySelector(".checkout-payment-options");if(!paymentRadio||!paymentRadio.shadowRoot)return;const wrapper=paymentRadio.shadowRoot.querySelector(".gpyd-m-checkout__check-address checkbox-input"),target=paymentRadio.shadowRoot.querySelector(".gpyd-m-checkout__check-address .radio-checked-content");if(!wrapper||!target||!wrapper.shadowRoot)return;const checkbox=wrapper.shadowRoot.querySelector('input[type="checkbox"]');if(!checkbox)return;const toggleClass=()=>{checkbox.checked?target.classList.remove("active"):target.classList.add("active")};toggleClass(),checkbox.addEventListener("change",toggleClass)}}customElements.define("address-injector",AddressInjector),this.addEventListener("pyd:form-initialized",async e=>{PYD.state?.currentScreen?.toLowerCase().includes("pyd")&&PYD.loadFAQs("pyd")}),this.addEventListener("pyd:form-completed",async e=>{PYD.deleteFAQs()}),this.addEventListener("pyd:form-change-completed",async e=>{PYD.state?.currentScreen?.toLowerCase().includes("pyd")&&PYD.handleFAQs(e.detail)});let CUSTOMER_ADDRESS=null,VERIFIED_MAIN_ADDRESS=null,VERIFIED_CHECK_ADDRESS=null,CUSTOMER_DATA=null;document.querySelectorAll(".gpyd-m-checkout__summary-top").forEach(element=>{element.addEventListener("click",()=>{element.classList.toggle("active")})}),document.querySelectorAll(".ti-checkout__error-popup--close-icon").forEach(icon=>{icon.addEventListener("click",function(){const popup=this.closest(".ti-checkout__error-popup");popup&&popup.classList.remove("active")})});const form=document.querySelector(".confirm-sale-form");form?.addEventListener("submit",e=>{e.preventDefault();
963let isValid=!0,firstInvalidInput=null,customerEmail="",customerMailinMethodTitle="",customerMailinMethodCaption="",customerFirstName="",customerLastName="",customerAddress="",customerCity="",customerState="",customerZip="",customerPhone="",customerPaymentName="",customerPaymentAddress="",checkCustomerAddress={};const validateTermsCheckbox=()=>{const checkboxComponent=form.querySelector('checkbox-input[data-name="terms"]');if(checkboxComponent&&checkboxComponent.shadowRoot){const checkbox=checkboxComponent.shadowRoot.querySelector('input[type="checkbox"]'),errorMessage=checkboxComponent.shadowRoot.querySelector(".error-message"),isRequired=checkbox.hasAttribute("required"),isChecked=checkbox.checked;checkbox.setCustomValidity(""),isRequired&&!isChecked?(isValid=!1,firstInvalidInput||(firstInvalidInput=checkbox),checkbox.setCustomValidity(" "),checkbox.classList.add("invalid"),errorMessage&&(errorMessage.textContent=PYD.allErrorMessages.terms,errorMessage.style.display="block")):(checkbox.classList.remove("invalid"),checkbox.setCustomValidity(""),errorMessage&&(errorMessage.textContent="",errorMessage.style.display="none"))}},validateMailin=()=>{const radioGroupComponent=form.querySelector('radio-group[data-name="shipping-option"]');if(radioGroupComponent&&radioGroupComponent.shadowRoot){const checkedOption=radioGroupComponent.shadowRoot.querySelector('input[type="radio"]:checked'),errorMessage=radioGroupComponent.shadowRoot.querySelector(".error-message"),radioGroupContainer=radioGroupComponent.shadowRoot.querySelector("#container"),isRequired=radioGroupComponent.hasAttribute("data-required");radioGroupComponent.setCustomValidity?.(""),isRequired&&!checkedOption?(isValid=!1,firstInvalidInput||(firstInvalidInput=radioGroupComponent.shadowRoot.querySelector('input[type="radio"]')),radioGroupComponent.setCustomValidity?.(" "),radioGroupContainer.classList.add("invalid"),errorMessage&&(errorMessage.textContent=PYD.allErrorMessages.mailin)):(radioGroupContainer.classList.remove("invalid"),radioGroupComponent.setCustomValidity?.(""),errorMessage&&(errorMessage.textContent=""))}},validatePaymentOptions=()=>{const radioAccordionComponent=form.querySelector('radio-accordion[data-name="payment-option"]');if(radioAccordionComponent&&radioAccordionComponent.shadowRoot){const checkedOption=radioAccordionComponent.shadowRoot.querySelector('input[type="radio"]:checked'),errorMessage=radioAccordionComponent.shadowRoot.querySelector(".error-message"),radioGroupContainer=radioAccordionComponent.shadowRoot.querySelector("#container"),isRequired=radioAccordionComponent.hasAttribute("data-required");radioAccordionComponent.setCustomValidity?.(""),isRequired&&!checkedOption?(isValid=!1,firstInvalidInput||(firstInvalidInput=radioAccordionComponent.shadowRoot.querySelector('input[type="radio"]')),radioAccordionComponent.setCustomValidity?.(" "),radioGroupContainer.classList.add("invalid"),errorMessage&&(errorMessage.textContent=PYD.allErrorMessages["payment-method"])):(radioGroupContainer.classList.remove("invalid"),radioAccordionComponent.setCustomValidity?.(""),errorMessage&&(errorMessage.textContent=""))}},paymentOptionElement=form.querySelector('radio-accordion[data-name="payment-option"]')?.shadowRoot.querySelector(".radio-option.checked");paymentOptionElement&&paymentOptionElement.querySelector(".radio-input")&&(customerPaymentName=paymentOptionElement.querySelector(".radio-input").value,PYD.state.paymentOption=customerPaymentName);const components=Array.from(form.querySelectorAll("text-input, searchable-select, radio-group, radio-accordion"));form.querySelectorAll(".checkout-payment-options").forEach(accordion=>{accordion.shadowRoot&&accordion.shadowRoot.querySelectorAll("text-input, searchable-select").forEach(input=>{const inputName=input.shadowRoot?.querySelector("input, select")?.name,radioOption=input.closest(".radio-option"),isCheckField=["payable-to","address","city","state","zip-code","phone"].includes(inputName),hasCheckPlaceholder=radioOption?.querySelector(".check-address-placeholder");if(inputName==="paypal-email"){customerPaymentName==="Paypal"&&components.push(input);return}if(isCheckField){const isUsingSameAddress=hasCheckPlaceholder.querySelector("checkbox-input")?.shadowRoot?.querySelector('input[type="checkbox"]')?.checked;customerPaymentName==="Check"&&hasCheckPlaceholder&&!isUsingSameAddress&&components.push(input);return}components.push(input)})});const termsBox=form.querySelector('checkbox-input[data-name="terms"]');termsBox&&components.push(termsBox);let errorMessages={...PYD.allErrorMessages};customerPaymentName==="Paypal"?errorMessages["paypal-email"]="Enter a PayPal email address":delete errorMessages["paypal-email"],components.forEac
963h(component=>{if(component.getAttribute("data-name")=="shipping-option"){validateMailin();return}if(component.getAttribute("data-name")=="payment-option"){validatePaymentOptions();return}if(component.getAttribute("data-name")=="terms"){validateTermsCheckbox();return}const shadowInput=component.shadowRoot.querySelector("input"),container=component.shadowRoot.querySelector(".input-box"),errorMessage=container?.querySelector(".error-message"),inputName=shadowInput.name,isRequired=shadowInput.hasAttribute("required"),value=shadowInput.value.trim(),isEmpty=!value;if(shadowInput.setCustomValidity(""),isRequired&&isEmpty){isValid=!1,firstInvalidInput||(firstInvalidInput=shadowInput);const customMessage=errorMessages[inputName]||"This field is required";shadowInput.setCustomValidity(" "),container?.classList.add("error"),errorMessage&&(errorMessage.textContent=customMessage);return}let formatError="";switch((inputName==="email"||inputName==="paypal-email")&&(PYD.validateEmail(value)||(formatError="Enter a valid email address")),inputName==="zip-code"&&(PYD.validateZip(value)||(formatError="Enter a 5-digit or 9-digit ZIP code")),inputName==="phone"&&(PYD.validatePhone(value)||(formatError="Enter a 10-digit phone number")),formatError?(isValid=!1,firstInvalidInput||(firstInvalidInput=shadowInput),shadowInput.setCustomValidity(" "),container?.classList.add("error"),errorMessage&&(errorMessage.textContent=formatError)):(container?.classList.remove("error"),errorMessage&&(errorMessage.textContent="")),inputName){case"email":customerEmail||(customerEmail=value);break;case"first-name":customerFirstName||(customerFirstName=value);break;case"last-name":customerLastName||(customerLastName=value);break;case"address":customerAddress||(customerAddress=value);break;case"address-1":customerCity||(customerAddress+=" "+value);break;case"city":customerCity||(customerCity=value);break;case"state":customerState||(customerState=value);break;case"zip-code":customerZip||(customerZip=value);break;case"phone":customerPhone||(customerPhone=value);break}}),PYD.state.emailAddress=customerEmail;const subscribeInput=document.querySelector('checkbox-input[data-name="subscribe"]')?.shadowRoot?.querySelector('input[type="checkbox"]');PYD.setSessionStorage("pyd",{emailSubscribed:subscribeInput?subscribeInput.checked:!1});const mailInMethodElement=form.querySelector('radio-group[data-name="shipping-option"]')?.shadowRoot.querySelector(".radio-option.checked");if(mailInMethodElement&&(mailInMethodElement.querySelector(".title")&&(customerMailinMethodTitle=mailInMethodElement.querySelector(".title").textContent.trim()),mailInMethodElement.querySelector(".caption")&&(customerMailinMethodCaption=mailInMethodElement.querySelector(".caption").textContent.trim()),document.querySelectorAll(".gpyd-m-checkout__sale-confirmed").forEach(el=>{el.classList.remove("active")}),customerMailinMethodTitle==="Get a box sent to you"&&document.querySelector('.gpyd-m-checkout__sale-confirmed[data-type="box"]').classList.add("active"),customerMailinMethodTitle==="Print a Shipping Label"&&document.querySelector('.gpyd-m-checkout__sale-confirmed[data-type="shipping"]').classList.add("active")),PYD.setSessionStorage("pyd",{mailInMethod:customerMailinMethodTitle}),paymentOptionElement){if(customerPaymentName=="Paypal"&&paymentOptionElement.querySelector("text-input")){const paymentInput=paymentOptionElement.querySelector("text-input").shadowRoot.querySelector("input");paymentInput&&(customerPaymentAddress=paymentInput.value)}const checkAddressCard=document.querySelector(".gpyd-m-checkout__confirm-address--check");if(customerPaymentName=="Check"){checkAddressCard&&checkAddressCard.classList.remove("inactive"),checkCustomerAddress.customerFullName=customerFirstName+" "+customerLastName,checkCustomerAddress.customerAddress=customerAddress,checkCustomerAddress.customerCity=customerCity,checkCustomerAddress.customerState=customerState,checkCustomerAddress.customerZip=customerZip,checkCustomerAddress.customerPhone=customerPhone;const paymentOptions=document.querySelector(".checkout-payment-options");
963if(paymentOptions?.shadowRoot){const checkCheckboxContainer=paymentOptions.shadowRoot.querySelector(".gpyd-m-checkout__check-address checkbox-input");if(checkCheckboxContainer?.shadowRoot){const checkbox=checkCheckboxContainer.shadowRoot.querySelector('input[type="checkbox"]');if(checkbox)if(checkbox.checked)checkAddressCard&&checkAddressCard.classList.add("inactive");else{const checkAddressContainer=paymentOptions.shadowRoot.querySelector(".gpyd-m-checkout__check-address");if(checkAddressContainer){const getInputValue=selector=>checkAddressContainer.querySelector(selector)?.shadowRoot?.querySelector(selector)?.value?.trim()||"";checkCustomerAddress.customerFullName=getInputValue("#payable-to"),checkCustomerAddress.customerAddress=[getInputValue("#address"),getInputValue("#address-1")].filter(Boolean).join(" "),checkCustomerAddress.customerCity=getInputValue("#city"),checkCustomerAddress.customerZip=getInputValue("#zip-code"),checkCustomerAddress.customerState=getInputValue("#state"),checkCustomerAddress.customerPhone=getInputValue("#phone")}}}}}else checkAddressCard&&checkAddressCard.classList.add("inactive")}let customerData={customerEmail,customerMailinMethodTitle,customerMailinMethodCaption,customerFirstName,customerLastName,customerAddress,customerCity,customerState,customerZip,customerPhone,customerPaymentName,customerPaymentAddress,checkCustomerAddress};if(CUSTOMER_ADDRESS=customerData,!isValid&&firstInvalidInput){firstInvalidInput.reportValidity(),firstInvalidInput.focus();const absoluteTop=firstInvalidInput.getBoundingClientRect().top+window.scrollY;window.scrollTo({top:absoluteTop-100,behavior:"smooth"});return}document.querySelector(".gpyd-m-checkout__confirm-sale")?.setAttribute("disabled","true"),PYD.validateAddressesAndSubmit(customerData),window.dispatchEvent(new CustomEvent("tradeIn:cartLoaded",{detail:{cart:{items:[]}}})),localStorage.setItem("tradein_cart",JSON.stringify([]))}),document.querySelector(".gpyd-m-checkout__confirm-address--submit")?.addEventListener("click",function(){PYD.moveToThankYou()});const editAddressButtons=document.querySelectorAll(".gpyd-m-checkout__confirm-address--edit");editAddressButtons.forEach(button=>{button.addEventListener("click",()=>{const address=document.querySelector(".gpyd-m-checkout__confirm-address"),leftInner=document.querySelector(".gpyd-m-checkout__left-inner");address&&address.classList.remove("active"),leftInner&&leftInner.classList.remove("inactive")})}),document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{new URLSearchParams(window.location.search).get("ti-screen")==="checkout"&&PYD.initCheckoutPage()}):new URLSearchParams(window.location.search).get("ti-screen")==="checkout"&&PYD.initCheckoutPage();
964//# sourceMappingURL=/cdn/shop/t/127/assets/price-your-device.js.map?v=160148098092566794051790188586

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.