1const S=".vehicle-card-wrapper, [data-magnetis-card]",v=(n,i)=>{let e=n.getAttribute(`data-${i}`);if(e)return e;const o=n.closest(S);return o&&(e=o.getAttribute(`data-${i}`),e)?e:""},M=n=>{const i=n==null?void 0:n.getAttribute("data-lead-fields");if(!i)return{};try{const e=JSON.parse(i);return e&&typeof e=="object"?e:{}}catch(e){return console.error("Invalid data-lead-fields JSON",e),{}}},A=(n,i,e)=>{const o=new CustomEvent(i,{detail:e,bubbles:!0,cancelable:!0});n.dispatchEvent(o)},I=(n,i)=>!n||!i?n:n.replace(/\{\{vehicle\.(\w+)\}\}/g,function(e,o){const t=i[o];return t==null?"":typeof t=="object"?Array.isArray(t)&&t.length>0?t[0]&&typeof t[0]=="object"&&t[0].url?t[0].url:t.join(", "):t.url?t.url:t.name?t.name:t.label?t.label:typeof t.toString=="function"?t.toString():"":String(t)});let _={wrapper:null,infoPopupId:null,availabilityPopupId:null,vehicleStatus:null};const T=n=>{const i={};return n&&Array.from(n.attributes).forEach(e=>{const o=e.name;if(!o.startsWith("data-vehicle-"))return;const t=o.replace("data-vehicle-","");let c=e.value;if(c&&(c.startsWith("[")||c.startsWith("{")||c==="true"||c==="false"||c==="null"))try{c=JSON.parse(c)}catch{}i[t]=c}),i},C=(n,i,e={})=>{const o=document.getElementById(n);if(!o){console.error("Modal not found: "+n);return}const t=T(i);t.id&&o.setAttribute("data-vehicle-id",String(t.id));let c=[];window.magnetisCtaConfig&&window.magnetisCtaConfig.mappings&&window.magnetisCtaConfig.mappings[n]&&(c=window.magnetisCtaConfig.mappings[n]);const u=o.querySelector(".modal-body");if(!u)return;let d=o.__originalContent;d||(d=u.innerHTML,o.__originalContent=d),u.innerHTML=I(d,t);const w=M(i),y=Object.keys(w).length>0;if((Object.keys(t).length>0||y)&&o.querySelectorAll("form").forEach(l=>{const m=(a,r)=>{const s=typeof r=="object"?JSON.stringify(r):String(r),f=l.querySelector(`input[name="${a}"], select[name="${a}"], textarea[name="${a}"]`);if(!f){const p=document.createElement("input");p.type="hidden",p.name=a,p.value=s,l.appendChild(p);return}f instanceof HTMLSelectElement&&!Array.from(f.options).some(p=>p.value===s)&&f.add(new Option(s,s)),f.value=s,f.dispatchEvent(new Event("change",{bubbles:!0}))};Object.entries(t).forEach(([a,r])=>{r==null||r===""||a==="id"&&y||m(a==="id"?"vi_vehicle_id":`vehicle_${a}`,r)}),Object.entries(w).forEach(([a,r])=>{r==null||r===""||m(a,r)})}),Array.isArray(c)&&c.length>0&&c.forEach(function(l){const m=l.field_selector;let a=l.vehicle_attribute||"";if(typeof a=="string"&&a.includes("{{vehicle.")&&(a=I(a,t)),!m||!a)return;let r=o.querySelector(m);if(!r&&l.create_if_missing){const s=m.match(/\[name="([^"]+)"\]/);if(s){const f=o.querySelector("form");if(f){const p=document.createElement("input");p.type="hidden",p.name=s[1],f.appendChild(p),r=p}}}r&&(["INPUT","TEXTAREA","SELECT"].includes(r.tagName)?(r.value=a,r.dispatchEvent(new Event("change",{bubbles:!0}))):r.textContent=a)}),typeof e.commentsValue=="string"){const l=o.querySelector('[name="comments"]');l&&(l.value=e.commentsValue,l.dispatchEvent(new Event("change",{bubbles:!0})))}if(typeof window.wpcf7<"u"&&typeof window.wpcf7.init=="function"&&o.querySelectorAll(".wpcf7 form").forEach(m=>{window.wpcf7.init(m)}),typeof window.bootstrap>"u"){console.error("Bootstrap is required for modals");return}new window.bootstrap.Modal(o).show();const b={new:"New",used:"Used",demo:"New",cpo:"CPO"},g=t.id?{status:b[String(t.status||"").toLowerCase()]||null,year:t.year||null,make:t.make||null,model:t.model||null,trim:t.trim||null,vin:t.vin||null}:null;o.querySelectorAll("form").forEach(l=>{l.querySelector('[name="magnetisFormType"]')&&l.dispatchEvent(new CustomEvent("magnetis.form_visible",{bubbles:!0,detail:g?{vehicle:g}:{}}))})},L=()=>{document.addEventListener("click",n=>{var m;const e=n.target.closest('[data-action="calculator"]');if(!e)return;n.preventDefault(),_={wrapper:e.closest(S),infoPopupId:v(e,"info-popup-id")||null,availabilityPopupId:v(e,"availability-popup-id")||null,vehicleStatus:v(e,"vehicle-status")||null};const o=parseInt(v(e,"vehicle-id")||"0",10)||0,t="vi",c=v(e,"vehicle-fuel_types"),u=v(e,"vehicle-make")||"",d=v(e,"vehicle-model")||"",w=v(e,"vehicle-model_en")||"",y=v(e,"vehicle-year")||"",h=v(e,"vehicle-main_photo")||"";let b=[];try{c&&(b=typeof c=="string"?JSON.parse(c):c)}catch(a){console.error("Error parsing fuel types:",a)}if(typeof window.INCENTIVE_CALCULATOR_CONFIG<"u"){const a=window.INCENTIVE_CALCULATOR_CONFIG;a.vehicle_type=t,a.current_vehicle_id=o,a.current_trim_id=!1,a.current_fuel_types=Array.isArray(b)?b:[]}const g=document.getElementById("incentive_calculator");if(g){const a=g.querySelector(".vehicle_wrapper");if(a){const s=a.querySelector(".vehicle");
1if(s){s.innerHTML="";const f=document.createElement("span");f.className="model_make",f.textContent=u;const p=document.createElement("br"),E=document.createElement("b");E.className="model_name",(m=document.documentElement.lang)!=null&&m.startsWith("en")?E.textContent=`${y} ${u} ${w||d}`:E.textContent=`${u} ${d} ${y}`,s.appendChild(f),s.appendChild(p),s.appendChild(E)}}const r=g.querySelector(".vehicle_image");r&&(h?(r.src=h,r.style.display=""):r.style.display="none")}const l=document.querySelector(".js-component-incentive-calculator");if(typeof jQuery>"u"||!l){console.error("jQuery or calculator wrapper not found");return}jQuery(l).incentiveCalculator("open",{hide_trim_selector:!0}),setTimeout(function(){typeof window.setCalculatorDefaults=="function"?window.setCalculatorDefaults():A(document,"set_incentive_calculator_defaults")},100)}),document.addEventListener("click",n=>{const e=n.target.closest('[data-action="popup"]');if(!e)return;n.preventDefault();const o=v(e,"modal-id");if(!o){console.error("Modal ID not found");return}const t=e.closest(S);C(o,t)}),document.addEventListener("click",n=>{const i=n.target;if(!i)return;const e=!!i.closest("#lease_info_button"),o=!!i.closest("#finance_info_button"),t=!!i.closest("#no_terms_info_button");if(!e&&!o&&!t)return;const c=_.infoPopupId,u=_.wrapper;if(!c||!u)return;const d=e?window.createLeaseMessage:o?window.createFinanceMessage:window.createNoTermsMessage;if(typeof d!="function")return;n.preventDefault(),n.stopImmediatePropagation();const w=d(),y=document.getElementById("incentive_calculator");y&&(y.style.display="none");const h=document.getElementById("incentive_calculator_modal");h&&(h.style.display="none"),C(c,u,{commentsValue:w})},!0),document.addEventListener("click",n=>{const i=n.target;if(!i)return;const e=!!i.closest("#lease_availability_button"),o=!!i.closest("#finance_availability_button"),t=!!i.closest("#no_terms_availability_button");if(!e&&!o&&!t)return;const c=_.wrapper;if(!c)return;const u=_.availabilityPopupId,d=(_.vehicleStatus||"").toLowerCase(),y=u||(d==="new"||d==="demo"?"srp-calc-availability-fallback-new":"srp-calc-availability-fallback-used"),h=e?window.createLeaseMessage:o?window.createFinanceMessage:window.createNoTermsMessage;if(typeof h!="function")return;n.preventDefault(),n.stopImmediatePropagation();const b=h(),g=document.getElementById("incentive_calculator");g&&(g.style.display="none");const l=document.getElementById("incentive_calculator_modal");l&&(l.style.display="none"),C(y,c,{commentsValue:b})},!0),document.addEventListener("vehicle-listing.ajax-loaded",()=>{var e;const n=window.MOTOINSIGHT;if(!n||typeof n.updateView!="function")return;const i=(e=document.documentElement.lang)!=null&&e.toLowerCase().startsWith("en")?"en-ca":"fr-ca";n.updateView(i)})};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",L):L();export{L as initCTAs};
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.