PageSourceSearch

https://vinassessment.com/vite/assets/marketing-vue-CXBJU53u.js

js vinassessment.com collected 2026-09-24 13:40:04 UTC 70,149 bytes, 3 lines download raw bytes

1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/leaflet-src-DTvBk-Fv.js","assets/_commonjsHelpers-C4iS2aBk.js","assets/leaflet-jCI8mrZJ.css","assets/category_browser_controller-BaNohuud.js","assets/stimulus-CZA9Too6.js","assets/depreciation_explorer_controller-DjcjeLTS.js","assets/state_browser_controller-BFutBJT2.js","assets/inventory_map_controller-B_cMD0XA.js","assets/brochure_preview_controller-BHE4BvTm.js","assets/price_watch_controller-BTTZflVj.js","assets/value_my_car_controller-BBQ--9z6.js","assets/preload-helper-CqGm-vB4.js","assets/clarity-DAOTEr25.js","assets/theme-DmMLtbi_.js","assets/shopper_tools_controller-BniFUvE4.js","assets/persona_switch_controller-NJcuN6ts.js","assets/data_sets_form_controller-Dx_nRNqb.js","assets/pricing_product_tabs_controller-CE005DkL.js","assets/report_anatomy_controller-hg8eh6iQ.js","assets/vin_scenario_tabs_controller-DQrxtk2M.js","assets/photo_compare_controller-s-gHvKpE.js","assets/promo_video_controller-BABGFurV.js","assets/vauto_savings_controller-h_Wc2QiR.js","assets/market_report_controller-DXE6j97N.js","assets/vdp_map_controller-Cl3CDxTj.js","assets/basemap-PSfnQVMb.js","assets/mount_islands-WB_PHPkB.js","assets/runtime-dom.esm-bundler-DmoWU8zx.js","assets/pinia-PeiisaIy.js","assets/vueQueryPlugin-BR4iPZkC.js","assets/useDarkMode-ComkcJAi.js","assets/_plugin-vue_export-helper-DlAUqK2U.js","assets/mount_islands-CL4oXQ-D.css"])))=>i.map(i=>d[i]);
2var rt=Object.defineProperty;var nt=(n,t,e)=>t in n?rt(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var T=(n,t,e)=>nt(n,typeof t!="symbol"?t+"":t,e);import{_ as y}from"./preload-helper-CqGm-vB4.js";import{C as w,A as ot}from"./stimulus-CZA9Too6.js";import{a as lt}from"./clarity-DAOTEr25.js";import{p as ht}from"./theme-DmMLtbi_.js";class A extends w{changeScope(t){const{state:e="",slug:s="all",stateLabel:i,trimLabel:a}=t.detail||{},r=!!(e!==(this.baselineStateValue||"")||s&&s!=="all");if(this.statusTarget.hidden=!r,this.summaryTarget.hidden=!r,this.referenceTarget.open=!r,r){const o=e?i||e:"the U.S.",d=s&&s!=="all"?a||s:"all trims",l=this.periodValue||"Monthly price history",c=this.baselineLabelValue||"national history for all trims";this.statusTarget.textContent=`${l} is not available for ${o} · ${d}. Explore the ${c} below; it does not reflect your selected filters.`}else this.statusTarget.textContent=""}}T(A,"targets",["status","reference","summary"]),T(A,"values",{baselineState:String,baselineLabel:String,period:String});const $=new Map;function W(n){if(!$.has(n)){const t=fetch(n,{headers:{Accept:"application/json"}}).then(async e=>{if(!e.ok)throw new Error("State prices unavailable");const s=await e.json();if(!["ready","empty"].includes(s.status))throw new Error("State prices unavailable");return s}).finally(()=>$.delete(n));$.set(n,t)}return $.get(n)}function V(n){return`No qualifying active listings right now. Prices are from vehicles listed during the last 3 months (${n.period_start}–${n.period_end}), using the latest recorded asking price per VIN.`}class K extends w{connect(){this.marketScope={state:"",slug:"all",stateLabel:"United States",trimLabel:"All trims"},this.cache=new Map,this.onScope=t=>this.applyScope(t.detail),this.onRegional=t=>this.receiveData(t.detail),window.addEventListener("seo:scope-changed",this.onScope),window.addEventListener("seo:regional-data",this.onRegional),window.dispatchEvent(new CustomEvent("seo:request-scope"))}disconnect(){window.removeEventListener("seo:scope-changed",this.onScope),window.removeEventListener("seo:regional-data",this.onRegional)}applyScope(t){this.marketScope={...this.marketScope,...t},this.render()}receiveData({state:t,data:e}){this.cache.set(t,e),t===this.marketScope.state&&this.render()}highlight(t){t.forEach(e=>e.classList.toggle("price-trim-row--selected",this.marketScope.slug!=="all"&&e.dataset.trim===this.marketScope.slug))}render(){const{state:t,stateLabel:e,slug:s,trimLabel:i}=this.marketScope;if(this.nationalTarget.hidden=!!t,this.nationalNoteTargets.forEach(b=>{b.hidden=!!t}),this.regionalTarget.hidden=!0,this.statusTarget.hidden=!t,!t){this.highlight(this.rowTargets);return}const a=e||t,r=this.cache.get(t);if(!r){this.statusTarget.textContent=`${a} · Loading actual state trim prices…`;return}if(r.status==="unavailable"){this.statusTarget.textContent=`${a} · State trim prices are temporarily unavailable. Choose another state or United States.`;return}const o=Array.isArray(r.trims)?r.trims:[];if(!o.length){this.statusTarget.textContent=`${a} · ${r.basis==="historical"?"No qualifying active listings. Last 3 months: "
2:""}Not enough qualifying listings to show reliable prices by trim. Choose another state or United States.`;return}const d=s==="all"||o.some(b=>b.slug===s);this.statusTarget.textContent=`${a} · ${r.basis==="historical"?V(r):`Current inventory${r.observed_at?` · Checked ${r.observed_at}`:""}.`} Counts and prices are for each trim in this state.${s!=="all"?d?` ${i||s} is highlighted.`:` Not enough qualifying listings for ${i||s}; other available trims are shown.`:""}`;const l=document.createElement("table");l.className="seo-table seo-table--responsive";const c=l.createCaption();c.textContent=`${a} asking prices by trim`;const f=["Trim","Based on","Median price","Typical range"],v=l.createTHead().insertRow();f.forEach(b=>{const E=document.createElement("th");E.scope="col",E.textContent=b,v.append(E)});const u=l.createTBody(),p=b=>b!=null&&Number.isFinite(Number(b))?Number(b).toLocaleString("en-US"):"—",_=b=>b!=null&&Number.isFinite(Number(b))?`$${p(b)}`:"—";o.forEach(b=>{const E=u.insertRow();E.dataset.trim=b.slug,[b.label,`${p(b.count)} listings`,_(b.median),b.p25!=null&&b.p75!=null?`${_(b.p25)}–${_(b.p75)}`:"—"].forEach((x,h)=>{const m=E.insertCell();m.dataset.label=f[h],m.textContent=x})}),this.highlight([...u.rows]),this.regionalTarget.replaceChildren(l),this.regionalTarget.hidden=!1}}
2T(K,"targets",["national","nationalNote","regional","status","row"]);async function ct(n,t,e=document,s=(i,a)=>console.error(`[marketing] ${i} failed to load:`,a)){await Promise.all(Object.entries(t).map(async([i,a])=>{if(e.querySelector(`[data-controller~="${i}"]`))try{const r=await a();n.register(i,r.default)}catch(r){s(i,r)}}))}class dt extends w{openSection(t){document.dispatchEvent(new CustomEvent("site-nav:open",{detail:{section:t.currentTarget.dataset.navSection,trigger:t.currentTarget}}))}openSearch(){document.dispatchEvent(new CustomEvent("seo-search:open"))}}class Z extends w{connect(){this._outsideClick=t=>{this.element.contains(t.target)||this.close()},this._escClose=t=>{t.key==="Escape"&&(this.close(),this.hasTriggerTarget&&this.triggerTarget.focus())},document.addEventListener("click",this._outsideClick),document.addEventListener("keydown",this._escClose)}disconnect(){document.removeEventListener("click",this._outsideClick),document.removeEventListener("keydown",this._escClose)}toggle(t){t.preventDefault(),t.stopPropagation();const e=this.menuTarget.dataset.open==="true";e||this._closeOthers(),this.setOpen(!e)}_closeOthers(){document.querySelectorAll('[data-marketing-dropdown-target="menu"][data-open="true"]').forEach(t=>{if(t===this.menuTarget)return;t.dataset.open="false";const e=t.parentElement&&t.parentElement.querySelector('[data-marketing-dropdown-target="trigger"]');e&&e.setAttribute("aria-expanded","false")})}close(){this.setOpen(!1)}setOpen(t){this.hasMenuTarget&&(this.menuTarget.dataset.open=t?"true":"false"),this.hasTriggerTarget&&this.triggerTarget.setAttribute("aria-expanded",String(t))}}T(Z,"targets",["trigger","menu"]);class G extends w{fill(t){t.preventDefault();const s=t.currentTarget.getAttribute("data-vin");!s||!this.hasInputTarget||(this.inputTarget.value=s,this.inputTarget.focus(),this.inputTarget.dispatchEvent(new Event("input",{bubbles:!0})))}}T(G,"targets",["input"]);class Q extends w{select(t){const e=t.currentTarget,s=e.getAttribute("data-panel");s&&(this.tabTargets.forEach(i=>{i.setAttribute("aria-selected",i===e?"true":"false")}),this.panelTargets.forEach(i=>{i.id===s?i.setAttribute("data-active","true"):i.removeAttribute("data-active")}))}}T(Q,"targets",["tab","panel"]);class Y extends w{copy(){const t=this.element.querySelector('.mkt-code__panel[data-active="true"]');if(!t)return;const e=t.innerText||t.textContent||"";if(!e)return;const s=navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(e):this._fallback(e);Promise.resolve(s).then(()=>this._flash("Copied")).catch(()=>this._flash("Press Cmd+C"))}_flash(t){if(!this.hasButtonTarget)return;const e=this.buttonTarget;e.classList.add("is-copied");let s="Copy";this.hasLabelTarget&&(s=this.labelTarget.textContent,this.labelTarget.textContent=t),clearTimeout(this._t),this._t=setTimeout(()=>{e.classList.remove("is-copied"),this.hasLabelTarget&&(this.labelTarget.textContent=s)},1500)}_fallback(t){return new Promise((e,s)=>{try{const i=document.createElement("textarea");i.value=t,i.setAttribute("readonly",""),i.style.position="fixed",i.style.top="-9999px",document.body.appendChild(i),i.select();const a=document.execCommand("copy");document.body.removeChild(i),a?e():s(new Error("execCommand failed"))}catch(i){s(i)}})}}T(Y,"targets",["button","label"]);class J extends w{connect(){if(!this.hasTabTarget||(this._sections=this.tabTargets.map(e=>document.getElementById(e.getAttribute("href").slice(1))).filter(Boolean),!this._sections.length))return;const t=this.tabTargets.find(e=>e.getAttribute("aria-selected")==="true")||this.tabTargets[0];this._setActive(t.getAttribute("href").slice(1))}click(t){t.preventDefault();const e=t.currentTarget.getAttribute("href").slice(1);this._setActive(e)}_setActive(t){this.tabTargets.forEach(e=>{const s=e.getAttribute("href")===`#${t}`;e.classList.toggle("is-active",s),e.setAttribute("aria-selected",s?"true":"false"),e.tabIndex=s?0:-1}),this._sections.forEach(e=>{e.hidden=e.id!==t})}}T(J,"targets",["tab"]);class ut extends w{connect(){this._dismissed=!1;try{this._dismissed=sessionStorage.getItem("mkt-stickycta-dismissed")==="1"}catch{}this._dismissed||(this._heroH1=document.getElementById("hero-h1"),this._footer=document.querySelector(".mkt-footer"),this._update=this._update.bind(this),window.addEventListener("scroll",this._update,{passive:!0}),window.addEventListener("resize",this._update),this._update())}disconnect(){window.removeEventListener("scroll",this._update),window.removeEventListener("resize",this._update)}dismiss(){this._dismissed=!0,this.element.setAttribute("data-shown","fal
2se");try{sessionStorage.setItem("mkt-stickycta-dismissed","1")}catch{}}_update(){if(this._dismissed)return;const t=this._heroH1&&this._heroH1.getBoundingClientRect().bottom<0,e=this._footer&&this._footer.getBoundingClientRect().top<window.innerHeight+120,s=t&&!e;this.element.setAttribute("data-shown",s?"true":"false")}}class R extends w{constructor(){super(...arguments);T(this,"onSubmit",async e=>{e.preventDefault();const s=this.inputTarget.value.trim().toUpperCase();if(!/^[A-HJ-NPR-Z0-9]{17}$/.test(s)){this.showError("Please enter a valid 17-character VIN.");return}this.submitTarget.disabled=!0,this.hideError(),this.hideResult();try{const i=await fetch(`${this.endpointValue}${s}`,{headers:{Accept:"application/json"}});if(i.status===429){this.showError("You've hit the free check limit. Book a demo to score your inventory in bulk.");return}if(i.status===404){this.showError("We don't have history on this VIN yet. Book a demo and we'll dig deeper.");return}if(!i.ok){this.showError("Something went wrong. Please try again in a moment.");return}const a=await i.json();this.renderResult(a)}catch{this.showError("Network error. Please try again.")}finally{this.submitTarget.disabled=!1}})}connect(){this.formTarget.addEventListener("submit",this.onSubmit)}disconnect(){this.formTarget.removeEventListener("submit",this.onSubmit)}renderResult(e){const s=o=>o.split(/\s+/).map(d=>/^[A-Z0-9-]{2,3}$/.test(d)?d:d.charAt(0).toUpperCase()+d.slice(1).toLowerCase()).join(" "),i=e.make?s(e.make):"",a=e.model?s(e.model):"";this.titleTarget.textContent=[e.year,i,a,e.engine].filter(Boolean).join(" · "),this.auctionsTarget.textContent=String(e.auction_event_count??0),this.titleStatusTarget.textContent=e.title_status?e.title_status.charAt(0).toUpperCase()+e.title_status.slice(1):"—",this.cohortTarget.textContent=String(e.cohort_size??0);const r=this.resultTarget.querySelector(".mkt-vr-gauge");if(r){r.classList.remove(...Array.from(r.classList).filter(c=>c.startsWith("mkt-vr-gauge--")&&!c.endsWith("--lg"))),r.classList.add(`mkt-vr-gauge--${e.risk_band||"unknown"}`);const o=r.querySelector(".mkt-vr-gauge__num");o&&(o.textContent=e.risk_score==null?"—":String(e.risk_score));const d=r.querySelector(".mkt-vr-gauge__bar");if(d){const c=parseFloat(d.getAttribute("stroke-dasharray")||"0"),f=e.risk_score==null?0:e.risk_score;d.setAttribute("stroke-dashoffset",String(c*(1-f/100)))}const l=r.querySelector(".mkt-vr-gauge__band");l&&(l.textContent=(e.risk_band||"unknown").replace(/_/g," ").toUpperCase()),e.risk_score==null?r.setAttribute("aria-label","Risk score not available for this VIN"):r.setAttribute("aria-label",`Auction risk score ${e.risk_score} of 100, ${e.risk_band} risk band`)}this.resultTarget.hidden=!1}showError(e){this.errorTarget.textContent=e,this.errorTarget.hidden=!1}hideError(){this.errorTarget.hidden=!0,this.errorTarget.textContent=""}hideResult(){this.resultTarget.hidden=!0}}T(R,"targets",["form","input","submit","result","error","title","auctions","titleStatus","cohort"]),T(R,"values",{endpoint:String});class X extends w{connect(){requestAnimationFrame(()=>this.element.classList.add("is-visible")),this.timeoutValue>0&&(this._t=setTimeout(()=>this.dismiss(),this.timeoutValue))}dismiss(){clearTimeout(this._t),this.element.classList.remove("is-visible"),this.element.classList.add("is-leaving"),setTimeout(()=>this.element.remove(),350)}disconnect(){clearTimeout(this._t)}}T(X,"values",{timeout:{type:Number,default:6e3}});class tt extends w{connect(){this.apply=this.apply.bind(this),this.element.addEventListener("pointerdown",this.apply),this.element.addEventListener("touchstart",this.apply,{passive:!0}),this.element.addEventListener("keydown",this.apply)}disconnect(){this.element.removeEventListener("pointerdown",this.apply),this.element.removeEventListener("touchstart",this.apply),this.element.removeEventListener("keydown",this.apply)}apply(t){if(!this.queryValue||t&&t.type==="keydown"&&t.key!=="Enter")return;const e=new URL(this.element.href,window.location.origin);new URLSearchParams(this.queryValue).forEach((s,i)=>e.searchParams.set(i,s)),this.element.href=e.toString()}}T(tt,"values",{query:String});const q=100,U=88,B=69.17;class N extends w{connect(){this.motionEnabled=!0,this.updateMotion(),"IntersectionObserver"in window?(this.revealObserver=new IntersectionObserver(e=>{e.some(s=>s.isIntersecting)&&(this.element.classList.add("is-revealed"),this.renderGeography().catch(s=>console.warn("[finder-teaser] Map unavailable:",s)),this.revealObserver.disconnect())},{threshold:.15}),this.revealObserver.observe(this.element)):this.element.classList.add("is-revealed");const t=()=>this.refine().catch(()=>{});window.requestIdleCallback?requestIdleCallback(t,{timeout:4e3}):setTimeout(t,1500)}disconnect(){var t,e;(t=this.revealObserver)==null||t.disconnect(),(e=this.geographicMap)==null||e.remove(),this.geographicMap=null,this.mapData=null}toggleMotion(){this.motionEnabled=!this.motionEnabled,this.updateMotion()}updateMotion(){this.element.classList.toggle("is-motion-enabled",this.motionEnabled),this.element.classList.toggle("is-motion-paused",!this.motionEnabled),this.hasMotionTarget&&(this.motionTarget.textContent=this.motionEnabled?"Pause animation":"Play animation",this.motionTarget.setAttribute("aria-pressed",String(this.motionEnabled)))}hidePhoto(t){var e;(e=t.target.closest(".vdp-finder__photo-card"))==null||e.remove()}click(){try{window.dataLayer&&window.dataLayer.push({event:"vs_finder_teaser_click"})}catch{}}async refine(){let t="";try{t=localStorage.getItem("cf_zip")||""}catch{}const e=new AbortController,s=setTimeout(()=>e.abort(),6e3);let i;try{const d=async l=>(await fetch(this.apiValue+this.vinValue+(l?"?zip="+encodeURIComponent(l):""),{credentials:"omit",signal:e.signal})).json();i=await d(t),(!i||!i.ok)&&!t&&this.zipValue&&(i=await d(this.zipValue))}finally{clearTimeout(s)}if(!i||!i.ok||!i.zip)return;if(i.zip!==this.zipValue||t)try{localStorage.setItem("cf_zip",i.zip)}catch{}const a=this.hasCtaTarget&&this.ctaTarget;a&&(a.dataset.deferredQueryQueryValue=(a.dataset.deferredQueryQueryValue||"").replace(/&?zip=\d*/,"")+"&zip="+i.zip,a.textContent=i.total>
20?"See all "+i.total.toLocaleString()+" cars near you →":"See every one for sale near you →"),this.drawMap(i),this.hasCityTarget&&(this.cityTarget.textContent=i.city||"you"),this.hasStateTarget&&(this.stateTarget.textContent=i.state||""),this.hasMapcapTarget&&(this.mapcapTarget.textContent=(i.radius||i.free_radius||50)+" miles around "+(i.city||"you"));const r=(d,l)=>{const c=document.createElement("span");return c.className=d,c.textContent=l,c};if(this.hasVerdictTarget){const d=this.verdictTarget;d.textContent="";const l=i.radius||i.free_radius||50;i.cheaper>0?(d.append(r("vdp-finder__count",i.cheaper.toLocaleString()+" cheaper")," within "+l+" miles"),i.best&&i.best.delta<0&&d.append(" · best ",r("vdp-finder__best","$"+(-i.best.delta).toLocaleString()+" less"))):i.total>0?d.append(r("vdp-finder__count","This car is the cheapest")," of "+(i.total+1).toLocaleString()+" within "+l+" miles"):d.textContent="Compare prices on similar cars within "+l+" miles of you."}const o=this.rowsTarget;o.textContent="",[[i.same_trim,"same trim"],[i.adjacent_year,"from nearby years, same body"],[i.lower_trim,"one trim down"]].forEach(([d,l])=>{if(!d||!d.count)return;const c=d.min_delta||0,f=c<-300?"is-good":c>300?"is-bad":"is-flat",v=c<-300?"▼ $"+(-c).toLocaleString()+" less":c>300?"▲ $"+c.toLocaleString()+" more":"about the same",u=document.createElement("div");u.className="vdp-finder__row",u.append(r("vdp-finder__what",d.count.toLocaleString()+" "+l),r("vdp-finder__from","from $"+(d.min_price||0).toLocaleString()),r("vdp-finder__delta "+f,v),r("vdp-finder__where",d.city||"")),o.append(u)})}async renderGeography(){var e;if(!this.hasGeographyTarget||!this.mapData||!this.element.classList.contains("is-revealed"))return;const t=this.mapData;if(!(!Array.isArray(t.origin_ll)||t.origin_ll.length!==2||!t.origin_ll.every(Number.isFinite))&&!this.mapLoading){this.mapLoading=!0;try{const[s,,i]=await Promise.all([y(()=>import("./leaflet-src-DTvBk-Fv.js").then(l=>l.l),__vite__mapDeps([0,1])),y(()=>Promise.resolve({}),__vite__mapDeps([2])),y(()=>import("./basemap-PSfnQVMb.js"),[])]);if(!this.element.isConnected||this.mapData!==t)return;const a=s.default||s;this.geographicMap||(this.geographicMap=a.map(this.geographyTarget,{zoomControl:!1,dragging:!1,scrollWheelZoom:!1,doubleClickZoom:!1,touchZoom:!1,boxZoom:!1,keyboard:!1,zoomSnap:0,attributionControl:!0}),this.geographicMap.attributionControl.setPrefix(!1),a.tileLayer(i.LIGHT_TILE_URL,{attribution:i.BASEMAP_ATTRIBUTION,maxZoom:18}).addTo(this.geographicMap));const r=this.geographicMap;r.setView(t.origin_ll,8,{animate:!1}),(e=this.locationLayer)==null||e.remove(),this.locationLayer=a.layerGroup().addTo(r);const o=(t.radius||t.free_radius||50)*1609.344,d=a.circle(t.origin_ll,{radius:o,color:"#3789BB",weight:2,dashArray:"5 5",fillColor:"#67c2e6",fillOpacity:.08,interactive:!1}).addTo(this.locationLayer);r.fitBounds(d.getBounds(),{padding:[18,28],animate:!1}),(t.points||[]).slice().sort((l,c)=>(l[2]<0?1:0)-(c[2]<0?1:0)).forEach(([l,c,f])=>{!Number.isFinite(l)||!Number.isFinite(c)||r.distance(t.origin_ll,[l,c])>o||a.circleMarker([l,c],{radius:f<0?6:5,color:"#fff",weight:2,fillColor:f<0?"#16834b":"#718797",fillOpacity:1,interactive:!1}).addTo(this.locationLayer)}),a.circleMarker(t.origin_ll,{radius:7,color:"#fff",weight:3,fillColor:"#3789BB",fillOpacity:1,interactive:!1}).addTo(this.locationLayer),this.geographyTarget.parentElement.classList.add("is-map-ready")}finally{this.mapLoading=!1}}}drawMap(t){if(this.mapData=t,this.renderGeography().catch(l=>console.warn("[finder-teaser] Map unavailable:",l)),!this.hasDotsTarget||!Array.isArray(t.points)||!Array.isArray(t.origin_ll))return;const[e,s]=t.origin_ll;this.hasMapEmptyTarget&&(this.mapEmptyTarget.hidden=t.points.length>0);const i=t.radius||t.free_radius||50,a=Math.cos(e*Math.PI/180)*B,r=U/i,o=this.dotsTarget;o.textContent="";const d="http://www.w3.org/2000/svg";t.points.slice().sort((l,c)=>(l[2]<0?1:0)-(c[2]<0?1:0)).forEach(([l,c,f])=>{const v=(c-s)*a*r,u=-(l-e)*B*r;if(Math.hypot(v,u)>U-4)return;const p=document.createElementNS(d,"circle");p.setAttribute("cx",(q+v).toFixed(1)),p.setAttribute("cy",(q+u).toFixed(1)),p.setAttribute("r","5"),p.setAttribute("class","vdp-finder__dot"+(f<0?" is-good":"")),o.append(p)})}}T(N,"values",{vin:String,api:String,zip:String}),T(N,"targets",["rows","cta","city","state","verdict","dots","mapcap","motion","mapEmpty","geography"]);function mt(n,t){return!n||!n.trims?null:n.trims.find(e=>e.slug===t)||null}function gt(n,t){return!n||!n.states?null:n.states.find(e=>e.code===t)||null}function M(n,{trim:t=null,miles:e=null,state:s=null}={}){const i=t?t.median:n.nationalMedian;let a=i;const r=e===null?n.avgMileage:e;if(n.slopePer10k&&(a+=n.slopePer10k*((n.avgMileage-r)/1e4)),s){const o=Math.min(1.15,Math.max(.85,s.typical/n.nationalMedian));a*=o}return Math.max(Math.round(a/50)*50,Math.round(i*.4))}function H(n,t,e=null){let s=.94,i=1.06;const a=e&&e.p25&&e.p75&&e.median>0?e:null;return a?(s=a.p25/a.median,i=a.p75/a.median):n.p25&&n.p75&&n.nationalMedian>0&&(s=n.p25/n.nationalMedian,i=n.p75/n.nationalMedian),{low:Math.round(t*s/50)*50,high:Math.round(t*i/50)*50}}const pt=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",maximumFractionDigits:0});class D extends w{connect(){this.regionalResults=new Map,this.cfg=JSON.parse(this.payloadTarget.textContent),this.trimSlug="all",this.miles=this.cfg.avgMileage,this.stateCode="",this.useMileageRange=!1,this.fmt=pt,this.onRegionalData=t=>{this.regionalResults.set(t.detail.state,t.detail.data),this.stateCode===t.detail.state&&this.render()},window.addEventListener("seo:regional-data",this.onRegionalData),this.onEstimateRequest=()=>this.render(),window.addEventListener("seo:request-estimate",this.onEstimateRequest),this.onScopeRequest=()=>this.publishScope(),this.onScopeChange=t=>{this.trimSlug=t.detail.slug||"all",this.stateCode=t.detail.state||"",this.hasStateTarget&&(this.stateTarget.value=this.stateCode),this.render(),this.publishScope()},window.addEventListener("seo:request-scope",this.onScopeRequest),window.addEventListener("seo:change-scope",this.onScopeChange),this.render(),this.publishScope()}publishScope(){var t,e;window.dispatchEvent(new CustomEvent("seo:scope-changed",{detail:{state:this.stateCode,slug:this.trimSlug||"all",stateLabel:this.hasStateTarget&&((t=this.stateTarget.selectedOptions[0])==null?void 0:t.textContent)||"United States",trimLabel:((e=this.trim)==null?void 0:e.label)||"All trims"}}))}disconnect(){window.removeEventListener("seo:regional-data",this.onRegionalData),window.removeEventListener("seo:request-estimate",this.onEstimateRequest),window.removeEventListener("seo:request-scope",this.onScopeRequest),window.removeEventListener("seo:change-scope",this.onScopeChange)}selectTrim(t){this.trimSlug=t.currentTarget.dataset.trimSlug,this.publishScope(),this.render()}changeMiles(t){this.miles=Math.min(3e5,Math.max(0,Number(String(t.currentTarget.value).replace(/[,\s]/g,""))||0)),this.render()}slideMiles(t){this.changeMiles(t),this.hasMilesTarget&&(this.milesTarget.value=this.miles.toLocaleStr
2ing("en-US"))}formatMiles(t){t.currentTarget.value=this.miles.toLocaleString("en-US")}setMiles(t){this.miles=Number(t.currentTarget.dataset.miles),this.hasMilesTarget&&(this.milesTarget.value=this.miles),this.render()}toggleMileageRange(t){this.useMileageRange=t.currentTarget.checked,this.exactMileageTarget.hidden=this.useMileageRange,this.mileageRangeTarget.hidden=!this.useMileageRange,this.useMileageRange?this.changeMileageRange():this.changeMiles({currentTarget:this.milesTarget})}changeMileageRange(){const t=s=>Math.min(3e5,Math.max(0,Number(String(s).replace(/[,\s]/g,""))||0)),e=[t(this.milesFromTarget.value),t(this.milesToTarget.value)].sort((s,i)=>s-i);[this.mileageFrom,this.mileageTo]=e,this.miles=Math.round((this.mileageFrom+this.mileageTo)/2),this.render()}formatMileageRange(){this.changeMileageRange(),this.milesFromTarget.value=this.mileageFrom.toLocaleString("en-US"),this.milesToTarget.value=this.mileageTo.toLocaleString("en-US")}changeState(t){this.stateCode=t.currentTarget.value,this.render(),this.publishScope()}get trim(){return mt(this.cfg,this.trimSlug)}get state(){return gt(this.cfg,this.stateCode)}async loadRegional(t){this.regionalResults.set(t,{status:"loading"});try{const e=await W(this.urlValue.replace("STATE",encodeURIComponent(t)));this.regionalResults.set(t,e)}catch{this.regionalResults.set(t,{status:"unavailable"})}this.stateCode===t&&this.element.isConnected&&this.render()}render(){var l,c,f,v;this.hasMilesSliderTarget&&(this.milesSliderTarget.value=this.miles,this.milesSliderTarget.setAttribute("aria-valuetext",`${this.miles.toLocaleString("en-US")} miles on the odometer`));const t=this.trim,e=M(this.cfg,{trim:t,miles:this.miles,state:this.state}),s=M(this.cfg,{trim:t,miles:this.cfg.avgMileage,state:null});this.trimButtonTargets.forEach(u=>{const p=u.dataset.trimSlug===this.trimSlug;u.classList.toggle("seo-config__seg--active",p),u.setAttribute("aria-pressed",String(p))});const a=((c=(l=this.regionalResults)==null?void 0:l.get(this.stateCode))==null?void 0:c.basis)==="historical"||this.stateCode&&(!this.state||this.state.active===0)||this.trimSlug&&this.trimSlug!=="all"&&!t;if(this.hasMatchingLabelTarget&&(this.matchingLabelTarget.textContent="listings"),this.hasResultLabelTarget&&(this.resultLabelTarget.textContent=a?"Median asking price · state listings":"Estimated asking price"),this.hasModelNoticeTarget&&(this.modelNoticeTarget.hidden=!!a),this.hasAssumptionsTarget&&(this.assumptionsTarget.hidden=!!a),this.hasScopeStatusTarget&&(this.scopeStatusTarget.hidden=!a),a){this.stateCode&&!this.regionalResults.has(this.stateCode)&&this.loadRegional(this.stateCode);const u=this.regionalResults.get(this.stateCode),p=(u==null?void 0:u.status)==="ready"?(f=u.series)==null?void 0:f.find(E=>E.slug===(this.trimSlug||"all")):null,_=(p==null?void 0:p.median)>0&&p.count>0,b=(u==null?void 0:u.basis)==="historical";b&&this.hasResultLabelTarget&&(this.resultLabelTarget.textContent="Median asking price · last 3 months"),b&&this.hasMatchingLabelTarget&&(this.matchingLabelTarget.textContent="vehicles listed in the last 3 months"),this.estimateTarget.textContent=_?this.fmt.format(p.median):"—",this.rangeLowTarget.textContent=_&&p.p25!=null?this.fmt.format(p.p25):"—",this.rangeHighTarget.textContent=_&&p.p75!=null?this.fmt.format(p.p75):"—",this.matchingTarget.textContent=_?p.count.toLocaleString("en-US"):(u==null?void 0:u.status)==="empty"?"0":"—",this.matchingPlaceTarget.textContent=this.hasStateTarget&&((v=this.stateTarget.selectedOptions[0])==null?void 0:v.textContent)||"",this.hasBasisLabelTarget&&(this.basisLabelTarget.textContent=(p==null?void 0:p.label)||(t==null?void 0:t.label)||"All trims"),this.hasMileageBasisTarget&&(this.mileageBasisTarget.hidden=!0),this.hasScopeStatusTarget&&(this.scopeStatusTarget.textContent=_?`${b?V(u)+" ":""}Based on ${p.count.toLocaleString("en-US")} qualifying state listings${u.observed_at?` as of ${u.observed_at}`:""}. Typical range is the 25th–75th percentile. ${p.count<10?"Small market sample. ":""}These are observed asking prices, not an estimate for your entered mileage; changing mileage does not change these statistics.`:(u==null?void 0:u.status)==="loading"?"Loading actual state listing prices…":(u==null?void 0:u.status)==="unavailable"?"State prices are temporarily unavailable. Choose another state or All states to continue."
2:b&&u.status==="empty"?"No qualifying active listings or listings from the last 3 months in this state. Choose another state or All states.":"Not enough qualifying listings for this selection. Choose All trims, another state, or All states to see available prices."),window.dispatchEvent(new CustomEvent("seo:estimate-changed",{detail:{price:null}}));return}this.hasMilesLabelTarget&&(this.milesLabelTarget.textContent=`${this.miles.toLocaleString("en-US")} mi`);let r=H(this.cfg,e,t);if(this.useMileageRange){const u=[this.mileageFrom,this.mileageTo].map(p=>H(this.cfg,M(this.cfg,{trim:t,miles:p,state:this.state}),t));r={low:Math.min(...u.map(p=>p.low)),high:Math.max(...u.map(p=>p.high))}}this.hasMileageBasisTarget&&(this.mileageBasisTarget.hidden=!this.useMileageRange,this.mileageBasisTarget.textContent=this.useMileageRange?`For ${this.mileageFrom.toLocaleString("en-US")}–${this.mileageTo.toLocaleString("en-US")} miles. Main estimate and loan calculation use the midpoint (${this.miles.toLocaleString("en-US")} mi); the price range covers both endpoints. This does not filter the listings below.`:""),this.estimateTarget.textContent=this.fmt.format(e),this.rangeLowTarget.textContent=this.fmt.format(r.low),this.rangeHighTarget.textContent=this.fmt.format(r.high),window.dispatchEvent(new CustomEvent("seo:estimate-changed",{detail:{price:e}}));const o=Math.round((e/s-1)*100);this.deltaTarget.textContent=`${o>=0?"+":""}${o}% vs this version at typical mileage`;const d=this.state?this.state.active:t?t.count:this.cfg.listingCount;this.matchingTarget.textContent=d.toLocaleString("en-US"),this.matchingPlaceTarget.textContent=this.state?`${this.state.name} · all trims (estimate uses the selected trim)`:"the U.S.",this.hasBasisCountTarget&&(this.basisCountTarget.textContent=(t?t.count:this.cfg.listingCount).toLocaleString("en-US")),this.hasBasisLabelTarget&&(this.basisLabelTarget.textContent=(t==null?void 0:t.label)||"All trims")}}T(D,"values",{url:String}),T(D,"targets",["resultLabel","modelNotice","assumptions","matchingLabel","scopeStatus","payload","trimButton","miles","milesSlider","milesLabel","state","exactMileage","mileageRange","milesFrom","milesTo","mileageBasis","estimate","rangeLow","rangeHigh","matching","matchingPlace","delta","basisCount","basisLabel"]);class I extends w{connect(){var t;this.nationalSummaries=this.hasSummaryDataTarget?JSON.parse(this.summaryDataTarget.textContent):null,this.nationalOptions=((t=this.nationalSummaries)==null?void 0:t.options)||(this.hasSelectTarget?[...this.selectTarget.options].map(e=>({value:e.value,label:e.textContent})):[]),this.regionalCache=new Map,this.regionCode="",this.selectedSlug="all",this.requestId=0,this.onTrimSelected=e=>this.activate(e.detail.slug),this.onScopeChanged=e=>{this.scopeAcknowledged=!0,this.selectedSlug=e.detail.slug,this.regionSelectTarget.value!==e.detail.state?(this.regionSelectTarget.value=e.detail.state,this.changeRegion()):(this.activate(e.detail.slug),this.regionalData&&this.publishRegional(this.regionCode,this.regionalData))},window.addEventListener("seo:scope-changed",this.onScopeChanged),window.addEventListener("seo:trim-selected",this.onTrimSelected),this.hasRegionSelectTarget&&(this.regionSelectTarget.value="",this.changeRegion()),window.dispatchEvent(new CustomEvent("seo:request-scope"))}disconnect(){var t;this.requestId++,(t=this.abortRequest)==null||t.abort(),window.removeEventListener("seo:trim-selected",this.onTrimSelected),window.removeEventListener("seo:scope-changed",this.onScopeChanged)}select(t){this.activate(t.currentTarget.dataset.trim)}changeSelection(t){if(this.requestScope(t.currentTarget.value),this.activate(t.currentTarget.value),this.hasMatrixSelectTarget&&t.currentTarget===this.matrixSelectTarget){const e=this.matrixHeadTargets.find(i=>i.dataset.trim===t.currentTarget.value),s=e==null?void 0:e.closest(".price-mileage-matrix__scrollarea");if(s){const i=e.parentElement.firstElementChild.getBoundingClientRect().width,a=s.scrollLeft+e.getBoundingClientRect().left-s.getBoundingClientRect().left-i;s.scrollTo({left:Math.max(0,a),behavior:"smooth"})}}}requestScope(t=this.selectedSlug){var e,s,i,a;this.scopeAcknowledged=!1,window.dispatchEvent(new CustomEvent("seo:change-scope",{detail:{state:this.regionSelectTarget.value,slug:t}})),this.scopeAcknowledged||window.dispatchEvent(new CustomEvent("seo:scope-changed",{detail:{state:this.regionSelectTarget.value,slug:t,stateLabel:((s=(e=this.regionSelectTarget.selectedOptions)==null?void 0:e[0])==null?void 0:s.textContent)||"United States",trimLabel:((a=(i=this.nationalOptions)==null?void 0:i.find(r=>r.value===t))==null?void 0:a.label)||"All trims"}}))}publishRegional(t,e){window.dispatchEvent(new CustomEvent("seo:regional-data",{detail:{state:t,data:e}}))}activate(t){var e,s;if(this.regionCode){if(!this.regionalData)return;if(this.selectedSlug=t,!this.regionalData.series.some(i=>i.slug===t)){this.regionalPanelTarget.hidden=!0,this.statusTarget.textContent="Not enough qualifying listings for this trim in the selected state. Choose another trim or All trims.",this.updateSummary(this.regionalData.state_name,((e=this.nationalOptions.find(i=>i.value===t))==null?void 0:e.label)||t,null,null);return}this.statusTarget.textContent="",this.selectTarget.value=this.selectedSlug,this.renderRegional();return}if(!(!this.seriesTargets.some(i=>i.dataset.trim===t)&&!((s=this.nationalOptions)!=null&&s.some(i=>i.value===t)))){if(this.selectedSlug=t,this.hasSelectTarget&&(this.selectTarget.value=t),this.hasMatrixSelectTarget&&(this.matrixSelectTarget.value=t),this.matrixCellTargets.forEac
2h(i=>i.classList.toggle("price-mileage-matrix__cell--selected",i.dataset.trim===t)),this.nationalSummaries){const i=this.nationalSummaries.summaries[t];this.updateSummary("United States",(i==null?void 0:i.label)||"All trims",i==null?void 0:i.count,i==null?void 0:i.median),this.dateTarget.textContent=`National snapshot · ${this.nationalSummaries.date}`}this.hasTooltipTarget&&this.hideTip(),this.hitTargets.forEach(i=>{if(i.dataset.trim){const a=i.dataset.trim===t;i.dataset.selected=String(a),i.setAttribute("tabindex",a?"0":"-1"),i.setAttribute("aria-hidden",String(!a))}}),this.seriesTargets.forEach(i=>i.classList.toggle("seo-mchart__series--active",i.dataset.trim===t)),this.chipTargets.forEach(i=>i.classList.toggle("seo-mchart__chip--active",i.dataset.trim===t)),this.matrixColTargets.forEach(i=>i.classList.toggle("seo-mchart__col--active",i.dataset.trim===t)),this.matrixHeadTargets.forEach(i=>i.classList.toggle("seo-mchart__colhead--active",i.dataset.trim===t))}}updateSummary(t,e,s,i){var r;this.hasCountLabelTarget&&(this.countLabelTarget.textContent=((r=this.regionalData)==null?void 0:r.basis)==="historical"?"Vehicles listed · last 3 months":"Active listings");const a=o=>Number.isFinite(Number(o))&&o!=null?Number(o).toLocaleString("en-US"):"—";this.scopeTarget.textContent=`${t} · ${e}`,this.countTarget.textContent=a(s),this.medianTarget.textContent=i!=null?`$${a(i)}`:"—"}setOptions(t){this.selectTarget.replaceChildren(...t.map(({value:e,label:s})=>{const i=document.createElement("option");return i.value=e,i.textContent=s,i}))}async changeRegion(t){var i,a,r,o,d;if(t)return this.requestScope(),this.regionCode!==this.regionSelectTarget.value?this.changeRegion():void 0;const e=++this.requestId;if((i=this.abortRequest)==null||i.abort(),this.regionCode=this.regionSelectTarget.value,this.regionalData=null,this.statusTarget.textContent="",this.regionalPanelTarget.hidden=!0,this.nationalPanelTarget.hidden=!!this.regionCode,this.selectTarget.disabled=!1,!this.regionCode){this.setOptions(this.nationalOptions),this.activate(this.nationalOptions.some(l=>l.value===this.selectedSlug)?this.selectedSlug:"all");return}const s=this.regionCode;this.statusTarget.textContent="Loading actual state listings…",this.selectTarget.disabled=!0,this.updateSummary(this.regionSelectTarget.selectedOptions[0].textContent,"Loading…",null,null),this.dateTarget.textContent="";try{let l=this.regionalCache.get(s);if(l||(l=await W(this.urlValue.replace("STATE",encodeURIComponent(s))),this.regionalCache.set(s,l)),e!==this.requestId)return;if(this.regionalData=l,(a=this.publishRegional)==null||a.call(this,s,l),this.setOptions(this.nationalOptions),this.selectTarget.disabled=!((r=l.series)!=null&&r.length),this.statusTarget.textContent=l.status==="empty"?"No qualifying active listings or listings from the last 3 months in this state. Choose another state or United States.":"",!((o=l.series)!=null&&o.length)){this.updateSummary(l.state_name,"All trims",l.count,null);return}this.activate(this.selectedSlug)}catch(l){if(e!==this.requestId||l.name==="AbortError")return;(d=this.publishRegional)==null||d.call(this,s,{status:"unavailable"}),this.statusTarget.textContent="State data is temporarily unavailable. Choose another state or return to United States to see the national snapshot.",this.updateSummary(this.regionSelectTarget.selectedOptions[0].textContent,"Unavailable",null,null)}}renderRegional(){const t=this.regionalData.series.find(g=>g.slug===this.selectedSlug);if(!t)return;this.updateSummary(this.regionalData.state_name,t.slug==="all"?"All trims":t.label,t.count,t.median);const e=new Date(`${this.regionalData.observed_at}T12:00:00`);this.dateTarget.textContent=this.regionalData.basis==="historical"?V(this.regionalData):`Current inventory · checked ${Number.isNaN(e.getTime())?this.regionalData.observed_at:e.toLocaleDateString("en-US")} · may differ from the national snapshot`;const s=this.regionalPanelTarget;s.replaceChildren(),s.hidden=!1;const i=t.points||[];if(i.length<2){const g=document.createElement("p");g.textContent="Not enough mileage bands to draw a reliable curve for this selection. The summary above covers its qualifying listings.",s.append(g);return}const a="http://www.w3.org/2000/svg",r=document.createElementNS(a,"svg");r.setAttribute("viewBox","0 0 1000 420"),r.setAttribute("role","img"),r.setAttribute("aria-label",`${this.regionalData.state_name}, ${t.label}: median asking price by odometer mileage`);const o=(g,S,k)=>{const L=document.createElementNS(a,g);
2return Object.entries(S).forEach(([it,at])=>L.setAttribute(it,at)),k!=null&&(L.textContent=k),r.append(L),L},d=Math.min(...i.map(g=>g.p25))*.9,l=Math.max(...i.map(g=>g.p75))*1.08,c=Math.max(...i.map(g=>g.miles))*1.06,f=g=>100+g/c*850,v=g=>350-(g-d)/Math.max(1,l-d)*315;for(let g=0;g<=4;g++){const S=d+(l-d)*g/4;o("line",{x1:100,x2:950,y1:v(S),y2:v(S),stroke:"#dfebf2"}),o("text",{x:85,y:v(S)+7,"text-anchor":"end"},`$${Math.round(S/1e3)}K`)}const u=[];i.forEach(g=>{const S=u[u.length-1];!S||g.bucket>S[S.length-1].bucket+1?u.push([g]):S.push(g)}),u.forEach(g=>{if(g.length>1){const S=[...g.map(k=>`${f(k.miles)},${v(k.p75)}`),...[...g].reverse().map(k=>`${f(k.miles)},${v(k.p25)}`)].join(" ");o("polygon",{points:S,fill:"#d6e9f5"}),o("polyline",{points:g.map(k=>`${f(k.miles)},${v(k.median)}`).join(" "),fill:"none",stroke:"#3789BB","stroke-width":4})}}),i.forEach(g=>{const S=o("circle",{cx:f(g.miles),cy:v(g.median),r:7,fill:"#3789BB",stroke:"#fff","stroke-width":2}),k=document.createElementNS(a,"title");k.textContent=`${g.label}: $${g.median.toLocaleString("en-US")}, ${g.count} listings`,S.append(k)});for(let g=0;g<=c;g+=c>9e4?3e4:15e3)o("text",{x:f(g),y:390,"text-anchor":"middle"},`${g/1e3}K mi`);const p=document.createElement("div");p.className="price-chart-regional__plot",p.append(r),s.append(p);const _=document.createElement("table");_.className="seo-table";const b=_.createCaption();b.textContent=`${this.regionalData.state_name} · ${t.label} · actual mileage bands`;const E=_.createTHead().insertRow();["Mileage (odometer)","Listings","Median asking price","Middle 50%"].forEach(g=>{const S=document.createElement("th");S.textContent=g,E.append(S)});const x=_.createTBody();i.forEach(g=>{const S=x.insertRow();[g.label,g.count.toLocaleString("en-US"),`$${g.median.toLocaleString("en-US")}`,`$${g.p25.toLocaleString("en-US")}–$${g.p75.toLocaleString("en-US")}`].forEach(k=>{S.insertCell().textContent=k})});const h=document.createElement("details");h.className="seo-light-details";const m=document.createElement("summary");m.textContent="View the selected state’s mileage data";const C=document.createElement("div");C.className="seo-tablewrap",C.append(_),h.append(m,C),s.append(h)}showTip(t){const e=t.currentTarget.dataset,s=this.tooltipTarget;s.textContent="";const i=document.createElement("strong");i.textContent=`${e.series} · ${e.label}`;const a=document.createElement("div");a.textContent=`${e.median} median · ${e.range} · ${e.count} listings`,s.append(i,a),s.hidden=!1;const r=s.parentElement.getBoundingClientRect(),o=t.currentTarget.getBoundingClientRect();s.style.left=`${o.left-r.left+o.width/2}px`,s.style.top=`${o.top-r.top-10}px`}hideTip(){this.tooltipTarget.hidden=!0}}T(I,"values",{url:String}),T(I,"targets",["countLabel","chip","series","hit","tooltip","matrixCol","matrixHead","matrixSelect","matrixCell","select","regionSelect","summaryData","summary","scope","count","median","date","status","nationalPanel","regionalPanel"]);class et extends w{showTip(t){const e=t.currentTarget.dataset,s=this.tooltipTarget;s.textContent="";const i=document.createElement("strong");i.textContent=e.label;const a=document.createElement("div");a.textContent=e.average?`${e.average} average asking price`:`${e.median} median · ${e.range} typical · ${e.count} cars`,s.append(i,a),s.hidden=!1;const r=s.parentElement.getBoundingClientRect(),o=t.currentTarget.getBoundingClientRect(),d=s.parentElement.scrollLeft||0,l=s.getBoundingClientRect().width/2,c=Math.max(l+8,Math.min(r.width-l-8,o.left-r.left+o.width/2));s.style.left=`${c+d}px`,s.style.top=`${Math.max(s.getBoundingClientRect().height+8,o.top-r.top-10)}px`}navigate(t){if(t.key==="Escape")return this.hideTip();if(["Enter"," "].includes(t.key))return t.preventDefault(),this.showTip(t);const e=this.hitTargets.indexOf(t.currentTarget);let s;t.key==="ArrowRight"&&(s=Math.min(e+1,this.hitTargets.length-1)),t.key==="ArrowLeft"&&(s=Math.max(e-1,0)),t.key==="Home"&&(s=0),t.key==="End"&&(s=this.hitTargets.length-1),s!==void 0&&(t.preventDefault(),this.hitTargets.forEach((i,a)=>{i.tabIndex=a===s?0:-1}),this.hitTargets[s].focus())}hideTip(){this.tooltipTarget.hidden=!0}}T(et,"targets",["hit","tooltip"]);class O extends w{connect(){this.price=this.hasPriceValue&&this.priceValue>0?this.priceValue:25e3,this.term=this.hasTermValue&&this.termValue>0?this.termValue:60,this.apr=this.hasAprValue?this.aprValue:7,this.down=Math.round(this.price*(this.hasDownPctValue?this.downPctValue:10)/100),this.fmt=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",maximumFractionDigits:0}),this.num=new Intl.NumberFormat("en-US",{maximumFractionDigits:0}),this.onEstimate=t=>{const e=Number(t.detail&&t.detail.price);if(!e){["monthly","financed","interest","total","summary"].forEach(i=>
2{this[`has${i[0].toUpperCase()+i.slice(1)}Target`]&&(this[`${i}Target`].textContent="—")}),this.hasPriceDescriptionTarget&&(this.priceDescriptionTarget.textContent="No estimate is available for the selected market. Enter a vehicle price to calculate payments.");return}const s=this.price>0?this.down/this.price:.1;this.price=e,this.down=Math.round(e*s),this.formatAmounts(),this.render()},window.addEventListener("seo:estimate-changed",this.onEstimate),this.render(),window.dispatchEvent(new CustomEvent("seo:request-estimate"))}disconnect(){window.removeEventListener("seo:estimate-changed",this.onEstimate)}parseAmount(t){return Math.max(0,Number(String(t).replace(/[^0-9.]/g,""))||0)}formatAmounts(){this.hasPriceTarget&&(this.priceTarget.value=this.num.format(Math.round(this.price))),this.hasDownTarget&&(this.downTarget.value=this.num.format(Math.round(this.down)))}changePrice(t){this.price=this.parseAmount(t.currentTarget.value),this.render()}changeDown(t){this.down=this.parseAmount(t.currentTarget.value),this.render()}changeApr(t){this.apr=Math.max(0,Number(t.currentTarget.value)||0),this.render()}selectTerm(t){this.term=Number(t.currentTarget.dataset.term)||60,this.render()}monthlyPayment(t,e,s){if(s<=0||t<=0)return 0;const i=e/100/12;if(i===0)return t/s;const a=Math.pow(1+i,s);return t*i*a/(a-1)}render(){const t=Math.min(this.down,this.price),e=Math.max(0,this.price-t),s=this.monthlyPayment(e,this.apr,this.term),i=s*this.term;if(this.hasPriceDescriptionTarget&&(this.priceDescriptionTarget.textContent=this.fmt.format(this.price)),this.element.ownerDocument.querySelectorAll('[data-jump="monthly"]').forEach(a=>{a.textContent=`≈ ${this.fmt.format(Math.round(s))}/mo loan ↓`}),this.termButtonTargets.forEach(a=>{const r=Number(a.dataset.term)===this.term;a.classList.toggle("pay-calc__seg--active",r),a.setAttribute("aria-pressed",r?"true":"false")}),this.hasDownPctTarget){const a=this.price>0?Math.round(t*100/this.price):0;this.downPctTarget.textContent=`${a}% down`}this.hasMonthlyTarget&&(this.monthlyTarget.textContent=this.fmt.format(Math.round(s))),this.hasFinancedTarget&&(this.financedTarget.textContent=this.fmt.format(Math.round(e))),this.hasInterestTarget&&(this.interestTarget.textContent=this.fmt.format(Math.max(0,Math.round(i-e)))),this.hasTotalTarget&&(this.totalTarget.textContent=this.fmt.format(Math.round(i))),this.hasSummaryTarget&&(this.summaryTarget.textContent=`${this.term} months · ${this.apr}% APR · ${this.fmt.format(Math.round(t))} down`)}}T(O,"targets",["price","down","downPct","apr","termButton","term","monthly","financed","interest","total","summary","priceDescription"]),T(O,"values",{price:Number,term:Number,apr:Number,downPct:Number});class P extends w{connect(){this.catalog=null,this.fetching=null,this.flat=[],this.sel=0,this.searchScope={make:this.scopeMakeValue||null,makeName:this.scopeMakeNameValue||"",model:this.scopeModelValue||null,modelName:this.scopeModelNameValue||""},this.boundHotkey=this.hotkey.bind(this),document.addEventListener("keydown",this.boundHotkey),this.boundOpenEvent=()=>this.open(),document.addEventListener("seo-search:open",this.boundOpenEvent),this.boundWarm=()=>this.ensureCatalog(),this.hasTriggerTarget&&(this.triggerTarget.addEventListener("mouseenter",this.boundWarm,{once:!0}),this.triggerTarget.addEventListener("focus",this.boundWarm,{once:!0}))}disconnect(){document.removeEventListener("keydown",this.boundHotkey),document.removeEventListener("seo-search:open",this.boundOpenEvent)}hotkey(t){(t.metaKey||t.ctrlKey)&&t.key.toLowerCase()==="k"&&(t.preventDefault(),this.open())}ensureCatalog(){return this.catalog?Promise.resolve(this.catalog):(this.fetching||(this.fetching=fetch(this.catalogUrlValue,{headers:{Accept:"application/json"}}).then(t=>t.ok?t.json():Promise.reject(t.status)).then(t=>(this.catalog=t,t)).catch(()=>(this.fetching=null,null))),this.fetching)}open(){this.scrimTarget.hidden=!1,this.inputTarget.setAttribute("aria-expanded","true"),this.hasTriggerTarget&&this.triggerTarget.setAttribute("aria-expanded","true"),document.body.style.overflow="hidden",this.syncScopeChip(),this.sel=0,this.render(),this.inputTarget.focu
2s(),this.ensureCatalog().then(()=>{this.scrimTarget.hidden||this.render()})}close(){this.scrimTarget.hidden=!0,this.inputTarget.setAttribute("aria-expanded","false"),document.body.style.overflow="",this.hasTriggerTarget&&(this.triggerTarget.setAttribute("aria-expanded","false"),this.triggerTarget.hidden||this.triggerTarget.focus()),this.inputTarget.value=""}scrimClick(t){t.target===this.scrimTarget&&this.close()}onInput(){this.sel=0,this.render()}onKeydown(t){t.key==="ArrowDown"?(t.preventDefault(),this.move(1)):t.key==="ArrowUp"?(t.preventDefault(),this.move(-1)):t.key==="Enter"?(t.preventDefault(),this.activate()):t.key==="Escape"?(t.preventDefault(),this.close()):t.key==="Backspace"&&!this.inputTarget.value&&(this.searchScope.model||this.searchScope.make)&&(this.searchScope.model?(this.searchScope.model=null,this.searchScope.modelName=""):(this.searchScope.make=null,this.searchScope.makeName=""),this.syncScopeChip(),this.render())}rowsHover(t){const e=t.target.closest("[data-idx]");e&&Number(e.dataset.idx)!==this.sel&&(this.sel=Number(e.dataset.idx),this.paintSelection(!1))}rowsClick(t){const e=t.target.closest("[data-fill]");if(e){this.inputTarget.value=e.dataset.fill,this.sel=0,this.render(),this.inputTarget.focus();return}const s=t.target.closest("[data-idx]");s&&(this.sel=Number(s.dataset.idx),this.activate())}bindThumbErrors(){this.resultsTarget.querySelectorAll("[data-thumb] img").forEach(t=>{t.onerror=()=>this.thumbFallback(t),t.complete&&t.naturalWidth===0&&this.thumbFallback(t)})}thumbFallback(t){const e=t.closest("[data-thumb]");if(e){if(t.dataset.badge&&!t.src.endsWith(t.dataset.badge)){t.src=t.dataset.badge,t.classList.add("seo-srch-thumb__img--badge");return}e.innerHTML=`<span class="seo-srch-badge">${this.esc(e.dataset.mono||"VA")}</span>`}}norm(t){return String(t).toLowerCase().replace(/[^a-z0-9]/g,"")}esc(t){return String(t).replace(/[&<>"']/g,e=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[e])}mark(t,e){const s=this.esc(t);if(!e)return s;const i=t.toLowerCase().indexOf(e.toLowerCase());return i<0?s:this.esc(t.slice(0,i))+"<mark>"+this.esc(t.slice(i,i+e.length))+"</mark>"+this.esc(t.slice(i+e.length))}money(t){return t==null?"":"$"+Math.round(t).toLocaleString("en-US")}num(t){return t==null?"":Number(t).toLocaleString("en-US")}vinShape(t){const e=t.trim().toUpperCase();if(/\s/.test(e)||e.length<8||e.length>17||!/^[A-Z0-9]+$/.test(e)||(e.match(/[0-9]/g)||[]).length<2||(e.match(/[A-Z]/g)||[]).length<2)return null;const s=[];for(let i=0;i<e.length;i+=1)"IOQ".includes(e[i])&&s.push(i);return{s:e,len:e.length,bad:s,complete:e.length===17&&s.length===0}}parse(t){const e=t.trim().toLowerCase().split(/\s+/).filter(Boolean);let s=null;const i=[],a=new Date().getFullYear()+2;e.forEach(c=>{const f=/^(19|20)\d{2}$/.test(c)?Number(c):null;f&&f>=1980&&f<=a&&!s?s=f:i.push(c)});let r=null;const o=[];i.forEach(c=>{var v;const f=!r&&c.length>=3&&(((v=this.catalog)==null?void 0:v.states)||[]).find(u=>u.s.startsWith(c)||this.norm(u.n).startsWith(this.norm(c)));f?r=f:o.push(c)});const d=o.some(c=>c.length>=3&&("depreciation".startsWith(c)||"resale".startsWith(c))),l=o.filter(c=>!(c.length>=3&&("depreciation".startsWith(c)||"resale".startsWith(c)))).join(" ");return{year:s,state:r,text:l,wantsDep:d}}scoreName(t,e){const s=this.norm(t),i=this.norm(e);return i?s===i?120:s.startsWith(i)?100-s.length*.1:String(t).toLowerCase().split(/[\s-]/).some(r=>this.norm(r).startsWith(i))?70:s.includes(i)?40:0:0}yearEntry(t,e){return(t.y||[]).find(s=>s[0]===e)}build(t){const e=[],s=this.parse(t),i=this.vinShape(t);if(i&&e.push({label:"VIN",rows:[{kind:"vin",vin:i}]}),!this.catalog)return{groups:e,parsed:s,vin:i,loading:t.trim().length>=2&&!i};const a=s.text,r=!t.trim()&&(this.searchScope.make||this.searchScope.model);if(a.length<2&&!s.year&&!s.state&&!s.wantsDep&&!r)return{groups:e,parsed:s,vin:i};let o=[];if(a.length>=2)this.catalog.models.forEach(h=>{const m=Math.max(this.scoreName(h.n,a),this.scoreName(`${this.makeName(h.mk)} ${h.n}`,a)-5,this.scoreName(h.s,a)-2);if(m>0){const C=this.searchScope.make&&h.mk===this.searchScope.make?18:0;o.push({m:h,s:m+C})}});else if(this.searchScope.model){const h=this.catalog.models.find(m=>m.mk===this.searchScope.make&&m.s===this.searchScope.model);h&&o.push({m:h,s:100})}else this.searchScope.make?this.catalog.models.filter(h=>h.mk===this.searchScope.make).forEach(h=>o.push({m:h,s:50})):(s.year||s.state||s.wantsDep)&&this.catalog.models.slice(0,4).forEach(h=>o.push({m:h,s:30}));o.sort((h,m)=>m.s-h.s||m.m.l-h.m.l),o=o.slice(0,24);let d=[];if(a.length>
2=2)this.catalog.makes.forEach(h=>{const m=Math.max(this.scoreName(h.n,a),this.scoreName(h.s,a));m>0&&d.push({mk:h,s:m})});else if(r&&this.searchScope.make&&!this.searchScope.model){const h=this.catalog.makes.find(m=>m.s===this.searchScope.make);h&&d.push({mk:h,s:10})}d.sort((h,m)=>m.s-h.s||m.mk.l-h.mk.l);const l={},c=[],f=(h,m)=>{const C=this.yearEntry(h,m);C&&c.push({kind:"year",q:a,title:`${m} ${this.makeName(h.mk)} ${h.n}`,model:h,segs:["prices",h.mk,h.s,String(m)],hits:[3],meta:"year price page",price:this.money(C[1]),sub:`${this.num(C[2])} listings`})};s.year&&o.length?(o.slice(0,4).forEach(h=>f(h.m,s.year)),c.length===1&&[s.year+1,s.year-1].forEach(h=>f(o[0].m,h))):o.length&&(a.length>=2||r)&&!s.state&&(o[0].m.y||[]).slice(0,3).forEach(h=>f(o[0].m,h[0])),c.length&&(l.year={label:"Year pages",rows:c});const v=o.slice(0,r&&!this.searchScope.model?8:4).map(h=>{const m=h.m,C=m.y||[];return{kind:"model",q:a,title:`${this.makeName(m.mk)} ${m.n}`,model:m,segs:["prices",m.mk,m.s],hits:[2],meta:`model hub · ${C.length} model year${C.length===1?"":"s"}`,price:this.money(m.p),sub:`${this.num(m.l)} listings`}});v.length&&(l.model={label:"Model hubs",rows:v});const u=d.slice(0,3).map(h=>{const m=h.mk;return{kind:"make",q:a,title:m.n,make:m,segs:["prices",m.s],hits:[1],meta:`${m.m} models · ${this.shortMoney(m.pmin)}–${this.shortMoney(m.pmax)}`,price:this.num(m.l),sub:"listings"}});u.length&&(l.make={label:"Make hubs",rows:u});const p=o.filter(h=>h.m.dep).slice(0,s.wantsDep?3:1).map(h=>{const m=h.m;return{kind:"dep",q:a,title:`${this.makeName(m.mk)} ${m.n} depreciation`,model:m,segs:["depreciation",m.mk,m.s],hits:[1,2],meta:"value curve by model year",price:"",sub:""}});p.length&&(l.dep={label:"Depreciation",rows:p});const _=[];if(s.state&&(_.push({kind:"state",q:a,title:`${s.state.n} used car market`,mono:s.state.n.slice(0,2).toUpperCase(),segs:["market",s.state.s],hits:[1],meta:"state market page",price:"",sub:""}),o.length&&s.year)){const h=o[0].m;this.yearEntry(h,s.year)&&_.push({kind:"state",q:a,title:`${s.year} ${this.makeName(h.mk)} ${h.n} in ${s.state.n}`,model:h,segs:["prices",h.mk,h.s,String(s.year),s.state.s],hits:[4],meta:"year price in state",price:"",sub:""})}_.length&&(l.state={label:"State markets",rows:_});const E=[{title:"Value my car",segs:["value-my-car"],meta:"free instant valuation",mono:"$"},{title:"Market reports",segs:["reports"],meta:"monthly price movers",mono:"≡"}].filter(h=>!a||this.scoreName(h.title,a)>0||a.length>=3).map(h=>({kind:"tool",q:a,title:h.title,mono:h.mono,segs:h.segs,hits:[],meta:h.meta,price:"",sub:""}));E.length&&(u.length||v.length||c.length)&&(l.tool={label:"Tools",rows:E.slice(0,2)});let x;return r&&this.searchScope.model?x=["year","dep","model","tool"]:r?x=["model","make","tool"]:s.year?x=["year","model","make","dep","state","tool"]:s.wantsDep?x=["dep","model","year","make","state","tool"]:s.state?x=["state","model","make","year","dep","tool"]:x=["make","model","year","dep","state","tool"],x.forEach(h=>{l[h]&&e.push(l[h])}),{groups:e,parsed:s,vin:i}}makeName(t){var s;const e=(((s=this.catalog)==null?void 0:s.makes)||[]).find(i=>i.s===t);return e?e.n:t}shortMoney(t){return t==null?"—":t>=1e3?`$${Math.round(t/1e3)}K`:`$${t}`}thumbHTML(t){var e;if(t.make){const s=this.esc(t.make.n.replace(/[^A-Za-z0-9]/g,"").slice(0,2).toUpperCase());return t.make.logo?`<span class="seo-srch-thumb seo-srch-thumb--badge" data-thumb data-mono="${s}"><img src="/images/make-logos-small/${this.esc(t.make.s)}.png" alt="" loading="lazy" decoding="async" class="seo-srch-thumb__img seo-srch-thumb__img--badge"></span>`:`<span class="seo-srch-thumb seo-srch-thumb--badge" data-thumb><span class="seo-srch-badge">${s}</span></span>`}if(t.model){const s=t.model,i=this.esc(this.makeName(s.mk).replace(/[^A-Za-z0-9]/g,"").slice(0,2).toUpperCase()),a=(((e=this.catalog)==null?void 0:e.makes)||[]).find(o=>o.s===s.mk),r=a&&a.logo?`/images/make-logos-small/${s.mk}.png`:"";return s.img?`<span class="seo-srch-thumb" data-thumb data-mono="${i}"><img src="${this.esc(s.img)}" alt="" loading="lazy" decoding="async" class="seo-srch-thumb__img" data-badge="${this.esc(r)}"></span>`:r?`<span class="seo-srch-thumb seo-srch-thumb--badge" data-thumb data-mono="${i}"><img src="${r}" alt="" loading="lazy" decoding="async" class="seo-srch-thumb__img seo-srch-thumb__img--badge"></span>`:`<span class="seo-srch-thumb seo-srch-thumb--badge" data-thumb><span class="seo-srch-badge">${i}</span></span>`}return`<span class="seo-srch-thumb seo-srch-thumb--badge" data-thumb><span class="seo-srch-badge">${this.esc(t.mono||"VA")}</span></span>`}routeHTML(t,e){return`<span class="seo-srch-route">${t.map((s,i)=>`<span class="seo-srch-route__seg${e.includes(i)?" seo-srch-route__seg--hit":""}">/${this.esc(s)}</span>`).join("")}</span>`}rowHTML(t,e){if(t.kind==="vin")return this.vinHTML(t.vin,e);const s=e===this.sel;return`<div class="seo-srch-row" role="option" id="seo-srch-row-${e}" data-idx="${e}" aria-selected="${s}">`+this.thumbHTML(t)+`<span class="seo-srch-row__main"><span class="seo-srch-row__title">${this.mark(t.title,t.q)}</span><span class="seo-srch-row__route">${this.routeHTML(t.segs,t.hits)}`+(t.meta?`<span class="seo-srch-row__meta"> · ${this.esc(t.meta)}</span>`:"")+'</span></span><span class="seo-srch-row__data">'+(t.price?`<span class="seo-srch-row__price seo-shx-mono">${this.esc(t.price)}</span>`:"")+(t.sub?`<span class="seo-srch-row__sub seo-shx-mono">${this.esc(t.sub)}</span>`:"")+"</span></div>"}vinHTML(t,e){const s=e===this.sel;let i="";for(let d=0;d<17;d+=1){const l=t.s[d],c=["seo-srch-vin__cell"];l&&c.push(t.bad.includes(d)?"seo-srch-vin__cell--err":"seo-srch-vin__cell--on"),!l&&d===t.len&&c.push("seo-srch-vin__cell--next"),(d===2||d===9)&&c.push("seo-srch-vin__cell--gap"),i+=`<span class="${c.join(" ")}">${l?this.esc(l):"·"}</span>`}let a,r="",o;return t.bad.length?(a="invalid character",r="seo-srch-vin__state--bad",o=`A VIN never contains I, O or Q — remove ${t.bad.map(d=>t.s[d]).join(", ")} to continue.`):t.complete?(a="ready",r="seo-srch-vin__state--ok",o="Opens the full vehicle record: decode, market position and listing history."):(a=`${17-t.len} left`,o="Keep typing — VINs are exactly 17 characters."),`<div class="seo-srch-row seo-srch-vinrow" role="option" id="seo-srch-row-${e}" data-idx="${e}" aria-selected="${s}"><span class="seo-srch-vin__head"><span class="seo-srch-row__title">Decode VIN</span><span class="seo-srch-vin__state ${r}">${this.esc(a)}</span><span class="seo-srch-row__route"><span class="seo-srch-route"><span class="seo-srch-route__seg">/vehicle</span><span class="seo-srch-route__seg seo-srch-route__seg--hit">/${this.esc(t.s)}</span></span></span></span><span class="seo-srch-vin__reg" aria-hidden="true">${i}</span><span class="seo-srch-vin__legend"><span>1–3 WMI</span><span>4–9 vehicle</span><span>10 year</span><span>
211–17 serial</span></span><span class="seo-srch-vin__decode">${this.esc(o)}</span></div>`}emptyHTML(){const t=this.searchScope.model?`${this.searchScope.makeName} ${this.searchScope.modelName}`:this.searchScope.make?this.searchScope.makeName:null,e=this.searchScope.model?[`2024 ${this.searchScope.modelName.toLowerCase()}`,`${this.searchScope.modelName.toLowerCase()} depreciation`,"value my car"]:this.searchScope.make?[`${this.searchScope.makeName.toLowerCase()} depreciation`,"value my car"]:["chevrolet","ford","toyota","2022 f-150","camry depreciation","value my car"];return`<div class="seo-srch-msg"><h3>${t?`Start inside ${this.esc(t)}`:"Search the whole price index"}</h3><p>Type at least two characters. Add a year for a model-year page, a state for a local market, or paste a 17-character VIN.</p><div class="seo-srch-chips">${e.map(s=>`<button type="button" class="seo-srch-chip" data-fill="${this.esc(s)}">${this.esc(s)}</button>`).join("")}</div></div>`}noResultsHTML(t){var s;const e=(((s=this.catalog)==null?void 0:s.makes)||[]).slice(0,6).map(i=>`<button type="button" class="seo-srch-chip" data-fill="${this.esc(i.n.toLowerCase())}">${this.esc(i.n)}</button>`).join("");return`<div class="seo-srch-msg"><h3>Nothing matches “${this.esc(t.trim())}”</h3><p>Check the spelling, or start from a make and drill down from there.</p><div class="seo-srch-chips">${e}</div></div>`}render(){const t=this.inputTarget.value,e=this.build(t);this.flat=[];let s="";if(e.loading)s='<div class="seo-srch-msg"><h3>Loading the index…</h3><p>One second — the catalog is on its way.</p></div>',this.countTarget.textContent="";else if(!e.groups.length&&!t.trim())s=this.emptyHTML(),this.countTarget.textContent="";else if(!e.groups.length)s=this.noResultsHTML(t),this.countTarget.textContent="0 results";else{e.groups.forEach(a=>a.rows.forEach(r=>this.flat.push(r))),this.sel>=this.flat.length&&(this.sel=0);let i=0;s=e.groups.map(a=>{const r=a.rows.map(o=>this.rowHTML(o,i++)).join("");return`<div class="seo-srch-group"><div class="seo-srch-eyebrow"><span>${this.esc(a.label)}</span><span class="seo-srch-eyebrow__ct">${a.rows.length}</span><span class="seo-srch-eyebrow__rule"></span></div>${r}</div>`}).join(""),this.countTarget.textContent=e.vin?`${e.vin.len}/17`:`${this.flat.length} result${this.flat.length===1?"":"s"}`}this.resultsTarget.innerHTML=s,this.bindThumbErrors(),this.paintSelection(!0)}paintSelection(t){const e=this.resultsTarget.querySelectorAll("[data-idx]");e.forEach(s=>{const i=Number(s.dataset.idx)===this.sel;s.setAttribute("aria-selected",i?"true":"false"),i&&(this.inputTarget.setAttribute("aria-activedescendant",s.id),t&&s.scrollIntoView({block:"nearest"}))}),e.length||this.inputTarget.setAttribute("aria-activedescendant","")}move(t){this.flat.length&&(this.sel=(this.sel+t+this.flat.length)%this.flat.length,this.paintSelection(!0))}activate(){const t=this.flat[this.sel];if(t){if(t.kind==="vin"){if(!t.vin.complete){this.flashStatus(t.vin.bad.length?"Fix the VIN first — it never contains I, O or Q":`${17-t.vin.len} characters left`);return}window.location.assign(`/vehicle?vin=${encodeURIComponent(t.vin.s)}`);return}window.location.assign(`/${t.segs.map(encodeURIComponent).join("/")}`)}}flashStatus(t){this.hasStatusTarget&&(this.statusTarget.textContent=t,clearTimeout(this.statusTimer),this.statusTimer=setTimeout(()=>{this.statusTarget.textContent=""},2600))}syncScopeChip(){if(!this.hasScopeTarget)return;const t=this.searchScope.model?`${this.searchScope.make}/${this.searchScope.model}`:this.searchScope.make||"";this.scopeTarget.textContent=t,this.scopeTarget.hidden=!t,this.inputTarget.placeholder=t?`refine within ${t}`:"make, model, year, state or VIN"}}T(P,"targets",["trigger","scrim","input","results","count","scope","status"]),T(P,"values",{catalogUrl:String,scopeMake:String,scopeMakeName:String,scopeModel:String,scopeModelName:String});class st extends w{connect(){this.boundOpen=t=>this.open(t.detail),this.boundKey=t=>this.onKey(t),this.boundSearch=()=>{this.panelTarget.hidden||this.close()},document.addEventListener("site-nav:open",this.boundOpen),document.addEventListener("keydown",this.boundKey,!0),document.addEventListener("seo-search:open",this.boundSearch)}disconnect(){document.removeEventListener("site-nav:open",this.boundOpen),document.removeEventListener("keydown",this.boundKey,!0),document.removeEventListener("seo-search:open",this.boundSearch),this.releaseBackgroun
2d()}open({section:t="shoppers",trigger:e}={}){var i,a;if(!this.panelTarget.hidden){this.select(t);return}this.trigger=e||document.activeElement,this.select(t),this.panelTarget.hidden=!1,this.scrimTarget.hidden=!1,(i=this.trigger)==null||i.setAttribute("aria-expanded","true"),this.savedOverflow=document.body.style.overflow,document.body.style.overflow="hidden",this.background=[];let s=this.element;for(;s.parentElement&&(this.background.push(...[...s.parentElement.children].filter(r=>r!==s).map(r=>({element:r,inert:r.inert}))),s.parentElement!==document.body);)s=s.parentElement;this.background.forEach(({element:r})=>{r.inert=!0}),(a=this.tabTargets.find(r=>r.dataset.section===this.selected))==null||a.focus()}select(t){this.selected=this.tabTargets.some(e=>e.dataset.section===t)?t:"shoppers",this.tabTargets.forEach(e=>{const s=e.dataset.section===this.selected;e.setAttribute("aria-selected",String(s)),e.tabIndex=s?0:-1}),this.sectionTargets.forEach(e=>{e.hidden=e.dataset.section!==this.selected})}selectSection(t){this.select(t.currentTarget.dataset.section)}onTabKey(t){const e=this.tabTargets.indexOf(t.currentTarget);let s;["ArrowDown","ArrowRight"].includes(t.key)&&(s=(e+1)%this.tabTargets.length),["ArrowUp","ArrowLeft"].includes(t.key)&&(s=(e-1+this.tabTargets.length)%this.tabTargets.length),t.key==="Home"&&(s=0),t.key==="End"&&(s=this.tabTargets.length-1),s!==void 0&&(t.preventDefault(),this.select(this.tabTargets[s].dataset.section),this.tabTargets[s].focus())}onKey(t){if(!this.panelTarget.hidden){if((t.metaKey||t.ctrlKey)&&t.key.toLowerCase()==="k")t.preventDefault(),t.stopImmediatePropagation(),this.openSearch();else if(t.key==="Escape")t.preventDefault(),this.close();else if(t.key==="Tab"){const e=[...this.panelTarget.querySelectorAll('a[href], button, summary, [tabindex="0"]')].filter(a=>a.tabIndex>=0&&a.getClientRects().length),s=e[0],i=e[e.length-1];t.shiftKey&&document.activeElement===s?(t.preventDefault(),i==null||i.focus()):!t.shiftKey&&document.activeElement===i&&(t.preventDefault(),s==null||s.focus())}}}releaseBackground(){var t;this.savedOverflow!==void 0&&(document.body.style.overflow=this.savedOverflow),this.savedOverflow=void 0,(t=this.background)==null||t.forEach(({element:e,inert:s})=>{e.inert=s}),this.background=null}close(){var e,s;this.panelTarget.hidden=!0,this.scrimTarget.hidden=!0,(e=this.trigger)==null||e.setAttribute("aria-expanded","false"),this.releaseBackground();const t=(s=this.trigger)!=null&&s.isConnected&&this.trigger.getClientRects().length?this.trigger:[...document.querySelectorAll('[aria-controls="seo-cnav-panel"]')].find(i=>i.getClientRects().length);t==null||t.focus()}followLink(t){t.target.closest("a[href]")&&this.close()}openSearch(){this.close(),document.dispatchEvent(new CustomEvent("seo-search:open"))}}T(st,"targets",["panel","scrim","tab","section","tabs"]);lt();function ft(){if(window.__mkt_stimulus__)return;const n=ot.start();n.register("marketing-nav",dt),n.register("marketing-dropdown",Z),n.register("vin-demo-sample",G),n.register("code-tabs",Q),n.register("copy-button",Y),n.register("pricing-tabs",J),n.register("pricing-stickycta",ut),n.register("vin-check-widget",R),n.register("mkt-flash",X),n.register("deferred-query",tt),n.register("finder-teaser",N),n.register("price-configurator",D),n.register("mileage-chart",I),n.register("trend-chart",et),n.register("price-history-scope",A),n.register("price-trim-table",K),n.register("payment-calculator",O),n.register("seo-search",P),n.register("cluster-nav",st),ct(n,{"category-browser":()=>y(()=>import("./category_browser_controller-BaNohuud.js"),__vite__mapDeps([3,4])),"depreciation-explorer":()=>y(()=>import("./depreciation_explorer_controller-DjcjeLTS.js"),__vite__mapDeps([5,4])),"state-browser":()=>y(()=>import("./state_browser_controller-BFutBJT2.js"),__vite__mapDeps([6,4])),"inventory-map":()=>y(()=>import("./inventory_map_controller-B_cMD0XA.js"),__vite__mapDeps([7,4])),"brochure-preview":()=>y(()=>import("./brochure_preview_controller-BHE4BvTm.js"),__vite__mapDeps([8,4])),"price-watch":()=>y(()=>import("./price_watch_controller-BTTZflVj.js"),__vite__mapDeps([9,4])),"value-my-car":()=>y(()=>import("./value_my_car_controller-BBQ--9z6.js"),__vite__mapDeps([10,4,11,12,13])),"shopper-tools":()=>y(()=>import("./shopper_tools_controller-BniFUvE4.js"),__vite__mapDeps([14,4])),"persona-switch":()=>y(()=>import("./persona_switch_controller-NJcuN6ts.js"),__vite__mapDeps([15,4])),"data-sets-form":()=>y(()=>import("./data_sets_form_controller-Dx_nRNqb.js"),__vite__mapDeps([16,4])),"pricing-product-tabs":()=>y(()=>import("./pricing_product_tabs_controller-CE005DkL.js"),__vite__mapDeps([17,4])),"report-anatomy":()=>y(()=>import("./report_anatomy_controller-hg8eh6iQ.js"),__vite__mapDeps([18,4])),"vin-scenario-tabs":()=>y(()=>import("./vin_scenario_tabs_controller-DQrxtk2M.js"),__vite__mapDeps([19,4])),"photo-compare":()=>y(()=>import("./photo_compare_controller-s-gHvKpE.js"),__vite__mapDeps([20,4])),"promo-video":()=>y(()=>import("./promo_video_controller-BABGFurV.js"),__vite__mapDeps([21,4])),"vauto-savings":()=>y(()=>import("./vauto_savings_controller-h_Wc2QiR.js"),__vite__mapDeps([22,4])),"market-report":()=>y(()=>import("./market_report_controller-DXE6j97N.js"),__vite__mapDeps([23,4])),"vdp-map":()=>y(()=>import("./vdp_map_controller-Cl3CDxTj.js"),__vite__mapDeps([24,11,4,25]))}),window.__mkt_stimulus__=n}function bt(){const n=()=>{const t=document.documentElement.classList.contains("app-dark");
2document.querySelectorAll("[data-dark-mode-button]").forEach(e=>{e.setAttribute("aria-pressed",String(t)),e.setAttribute("aria-label",t?"Switch to light mode":"Switch to dark mode")}),document.querySelectorAll('[data-dark-mode-target="label"]').forEach(e=>{e.textContent=t?"Light mode":"Dark mode"})};n(),document.querySelectorAll('[data-action*="dark-mode"], [data-controller="dark-mode"]').forEach(t=>{const e=t.matches("button")?t:t.querySelector("button");!e||e.__mkt_dark_bound__||(e.__mkt_dark_bound__=!0,e.addEventListener("click",s=>{s.preventDefault();const i=document.documentElement,a=!i.classList.contains("app-dark");i.classList.toggle("app-dark",a),i.classList.toggle("dark-mode",a),ht(a),n()}))})}const Tt="[data-mkt-vin-demo], [data-mkt-mcp-chat], [data-mkt-dealer-preview], [data-demo-cards]",vt="#marketing-vue, [data-mkt-contact-widget]";let F=!1;function j(){F||(F=!0,y(()=>import("./mount_islands-WB_PHPkB.js"),__vite__mapDeps([26,27,28,29,30,13,31,11,32])).then(n=>n.mountVueIslands()).catch(n=>console.error("[marketing-vue] islands chunk load failed:",n)))}function yt(){if(document.querySelector(Tt)){j();return}if(!document.querySelector(vt))return;const n={passive:!0},t=["pointerdown","keydown","touchstart","scroll"],e=()=>{t.forEach(s=>window.removeEventListener(s,e,n)),j()};t.forEach(s=>window.addEventListener(s,e,n))}function z(){ft(),bt(),yt()}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",z):z();export{gt as a,H as b,M as e,mt as f,pt as u};
3//# sourceMappingURL=marketing-vue-CXBJU53u.js.map

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.