1"use strict";(self.webpackChunkcrownpeak_opus2=self.webpackChunkcrownpeak_opus2||[]).push([["marketing-landing-loader"],{"./src/js/opus2/marketing/marketingLandingPage.ts"(e,t,o){o.r(t),o.d(t,{MarketingLandingPage:()=>i});var s=o(/*! tslib */"./node_modules/tslib/tslib.es6.mjs"),r=o(/*! ../apiCaching/apiWrapper */"./src/js/opus2/apiCaching/apiWrapper.ts"),n=o(/*! ../util/pageSettings */"./src/js/opus2/util/pageSettings.ts");class i{static getInstance(){return i.instance||(i.instance=new i),i.instance}constructor(){this.useFakeData=!1,this.seax={},this.promoObject={},this.couponCodeParam="",this.disclaimerText="",this.discountTitle="",this.useAdditionalStyle=!0,this.init(),this.fakeData={pc:[{promoCode:"MAMA",promoMessageId:1,promoMessage:"Why wait? What is your time worth? Book now & save {discount}!",promoCodeId:1},{promoCode:"APPLIANCE",promoMessageId:17,promoMessage:"{discount} for Single Appliance Removal*<i>(Cannot be combined, excludes subzero refrigerators, and hot tubs)</i>",promoCodeId:17}],s:[{discountID:1,discountValue:20,unit:"$"},{discountID:2,discountValue:10,unit:"%"}],seax:[{promoCode:"SUMMER",promoMessageId:1,promoMessage:"Why wait? What is your time worth? Book now & save!",promoCodeId:1},{promoCode:"WINTER",promoMessageId:1,promoMessage:"Why wait? What is your time worth? Book now & save!",promoCodeId:1},{promoCode:"SPRING",promoMessageId:1,promoMessage:"Why wait? What is your time worth? Book now & save!",promoCodeId:1},{promoCode:"FALL",promoMessageId:1,promoMessage:"Why wait? What is your time worth? Book now & save!",promoCodeId:1}],defaultText:"Why wait? What is your time worth? Book now & save $20!",defaultCoupon:"N/A"}}init(){var e,t,o;const s=this.checkForParams();s.p&&this.handlePhoneNumber({p:null!==(e=s.p)&&void 0!==e?e:""}),s.pcParam||s.sParam?this.handleParams({pcParam:null!==(t=s.pcParam)&&void 0!==t?t:"",sParam:null!==(o=s.sParam)&&void 0!==o?o:""}):this.attachDefaultOffersWhenNoParams()}handlePhoneNumber(e){const t=e.p;this.setMobileNumber(t)}setMobileNumber(e){const t=String(e).replace(/\D/g,"");if(10!==t.length)return void console.warn("Invalid phone number provided (must be exactly 10 digits):",e);const o=/^(\d{3})(\d{3})(\d{4})$/.exec(t);if(!o)return void console.warn("Phone number format validation failed:",e);const[,s,r,n]=o,i=`(${s}) ${r}-${n}`,a=`tel:${s}${r}${n}`;this.updateHeaderPhoneElements(i,a),this.updateRealTimeCommPhoneNumbers(i,a)}updateHeaderPhoneElements(e,t){const o=document.querySelectorAll(".find-local-campaign.header-phoneno");for(const s of o)this.updatePhoneElement(s,e,t);const s=document.querySelectorAll(".find-local.header-phoneno");for(const o of s)this.updatePhoneElement(o,e,t)}updatePhoneElement(e,t,o){e.innerHTML=`<span class="header-phoneno-desktop">${t}</span>`,e.href=o}updateRealTimeCommPhoneNumbers(e,t){var o;const s=document.querySelectorAll(".real-time-comm-cta-wrapper");for(const r of s){const s=r.querySelector("a");(null===(o=null==s?void 0:s.href)||void 0===o?void 0:o.includes("tel:"))&&(s.href=t,s.innerHTML=e)}}sanitizeInput(e){return e?e.replace(/[<>]/g,"").replace(/javascript:/gi,"").trim():""}setSeasonalParams(){this.seax={WINTER:["December","January","February"],SPRING:["March","April","May"],SUMMER:["June","July","August"],FALL:["September","October","November"]};const e=["January","February","March","April","May","June","July","August","September","October","November","December"][(new Date).getMonth()],t=Object.keys(this.seax).find(t=>this.seax[t].includes(e));return null!=t?t:""}checkForParams(){const e=window.location.href,t=new URL(e),o=new URLSearchParams(t.search);return{pcParam:this.sanitizeInput(o.get("pc")),sParam:this.sanitizeInput(o.get("s")),lName:this.sanitizeInput(o.get("lname")),p:this.sanitizeInput(o.get("p"))}}handleParams(e){const t=e.pcParam,o=e.sParam;this.getDisplayText(t,o).then(e=>{this.displayContent(e)}).catch(e=>{console.error("Error getting display text:",e)})}getDisplayText(e,t){return this.getData().then(o=>{var s,r;this.couponCodeParam=null!==(s=null==o?void 0:o.defaultCoupon)&&void 0!==s?s:"";const n=this.findPromoCode(o,e),i=this.findDiscount(o,t),a=this.buildMessageContent(o,n,i);return this.disclaimerText=null!==(r=a.disclaimer)&&void 0!==r?r:"",this.constructDummyDom(a.finalMe
1ssage,n?n.promoCode:"",a.disclaimer)}).catch(e=>(console.error("Error processing promotion data:",e),this.constructDummyDom("","","")))}findPromoCode(e,t){var o,s;if(!t||!e)return null;if("seax"===t.toLowerCase()){const t=this.setSeasonalParams();return null===(o=e.seax)||void 0===o?void 0:o.find(e=>(e.promoCode||"").toLowerCase()===t.toLowerCase())}return null===(s=e.pc)||void 0===s?void 0:s.find(e=>(e.promoCode||"").toLowerCase()===t.toLowerCase())}findDiscount(e,t){return t?e.s.find(e=>(e.discountID||"").toString().toLowerCase()===t.toLowerCase()):null}buildMessageContent(e,t,o){var s;let r=null!==(s=null==e?void 0:e.defaultText)&&void 0!==s?s:"",n="";return this.promoObject.couponCode=null==t?void 0:t.promoCode,t&&o?r=this.formatMessageWithDiscount(t.promoMessage,o):t&&!o&&(r=this.getMessageWithoutDiscount(t,e)),n=this.extractDisclaimer(r),n&&(r=r.replace(`<i>${n}</i>`,"")),this.promoObject.promoMessage=r,{finalMessage:r,disclaimer:n}}formatMessageWithDiscount(e,t){var o,s,r;let n="";return n="$"===t.unit?`${t.unit}${null!==(o=t.discountValue)&&void 0!==o?o:"0"}`:`${null!==(s=t.discountValue)&&void 0!==s?s:"0"}${null!==(r=t.unit)&&void 0!==r?r:""}`,n&&(this.discountTitle=`${n} Off!`),e.replace("{discount}",n)}getMessageWithoutDiscount(e,t){var o;return e.promoMessage.includes("{discount}")?null!==(o=t.defaultText)&&void 0!==o?o:"":e.promoMessage}extractDisclaimer(e){var t,o;return null!==(o=null===(t=null==e?void 0:e.split("<i>")[1])||void 0===t?void 0:t.split("</i>")[0])&&void 0!==o?o:""}constructDummyDom(e,t,o){const s="var(--primary-500)",r=`color:${s};`;let n="";return e&&(n=`<span style="${r}">${e}</span>`),t&&(n+=`<br/>use promo code <span style="${r}">${t}</span>`),o&&(n+=`<br/><span class="promo__disclaimer" style="${`color:${s}; font-style: italic; font-weight: normal; font-size: ${"1rem"};line-height: 1.5rem; display: inline-block;`}">${o}</span>`),n}getData(){return(0,s.__awaiter)(this,void 0,void 0,function*(){try{if(this.useFakeData)return yield new Promise(e=>{setTimeout(()=>{e(this.fakeData)},1e3)});{const e=`${window.location.origin}/config-files/_offers-config.json`;return yield(0,r.getCachedAPIResponse)(e,60,!1,!0)}}catch(e){return console.error("Error fetching data:",e),{}}})}constructOfferMessage(){var e,t,o,s;const r=this.stripHtmlTagsFromMessage(null!==(e=this.promoObject.promoMessage.replace(/\*/g,""))&&void 0!==e?e:""),i={couponCode:null!==(t=this.promoObject.couponCode)&&void 0!==t?t:this.couponCodeParam,couponExpiryDate:"",description:r,longDescription:this.disclaimerText,title:null!==(o=this.discountTitle)&&void 0!==o?o:"",source:null!==(s=(0,n.getPageSettings)("pagetemplate").replace(/"|:/g,""))&&void 0!==s?s:"",promoMessage:r};sessionStorage.setItem("offerDetails",JSON.stringify(i))}displayContent(e){const t=document.querySelectorAll(".hero-banner-promo");if(0===t.length)return;const o=(new DOMParser).parseFromString(e,"text/html");t.forEach(e=>{for(;e.firstChild;)e.removeChild(e.firstChild);e&&(e.style.fontSize="2.05rem",e.style.fontWeight="bold",e.style.color="#1f2a37");const t=document.createDocumentFragment(),s=o.body.cloneNode(!0).childNodes;for(;s.length>0;)t.appendChild(s[0]);e.appendChild(t),this.restyleBannerForOpacity(e)}),this.realTimeCommunicationStyling(),this.constructOfferMessage()}realTimeCommunicationStyling(){const e=document.querySelectorAll(".real-time-communication");if(e.length>0){const t="font-size: inherit; font-weight: normal;",o="display:none";e.forEach(e=>{e.style.cssText=t;const s=e.querySelector(".promo__disclaimer");s&&(s.style.cssText=o,this.attachReadMore(s));const r=e.closest(".real-time-comm-list");r&&this.setImageHeightAt100(r)})}}setImageHeightAt100(e){e.querySelectorAll("li").forEach(e=>{const t=e.querySelector(".real-time-comm-image");t&&(t.style.height="100%")})}attachReadMore(e){const t="Read More...",o=document.createElement("div");o.textContent=t,o.style.cssText="display:block; cursor:pointer; color:inherit; margin: 1rem 0;font-style: italic;font-weight: normal;font-size: 0.8rem;",e.insertAdjacentElement("afterend",o),o.addEventListener("click",()=>{"none"===e.style.display?(e.style.cssText="color:var(--primary-500);font-style: italic;font-weight: normal;font-size: 0.8rem;line-height: 1.2rem;margin: 1rem 0;opacity: 0.8;display: inline-block;",o.textContent="Read Less...",o.style.marginTop="0px"):(e.style.display="none",o.textContent=t,o.style.marginTop="1rem")})}stripHtmlTagsFromMessage(e){if(!e)return"";return e.replace(/<\/?(p|div|br|li|tr|td|th|ul|ol|h[1-6]|table)[^>
1]*>/gi," ").replace(/<\/?[a-z][a-z\d]*(?:\s+[a-z\d-]+(?:=(?:"[^"]*"|'[^']*'|[^\s>]+))?)*\s*\/?>/gi,"").replace(/\s+/g," ").trim()}attachDefaultOffersWhenNoParams(){this.handleParams({pcParam:"",sParam:""})}restyleBannerForOpacity(e){const t=null==e?void 0:e.closest(".hero-banner-wrap");if(null==t?void 0:t.classList.contains("translucent-layer"))return;const o=null==e?void 0:e.closest(".hero-banner-overlay");if(!e||!o)return;o.style.background="linear-gradient(90deg, rgba(0, 0, 0, .9), hsla(0, 6%, 44%, 0) 96.68%)",e.style.color="inherit";const s=e.querySelector(".promo__disclaimer");s&&(s.style.color="inherit",s.style.opacity="0.8"),this.useAdditionalStyle&&this.imageBlurrer(e)}imageBlurrer(e){const t=e.closest(".hero-container");if(!t)return;const o=t.querySelector(".hero-banner-img");if(!o)return;t.style.overflow="hidden";o.style.cssText="width: 104%; height: 104%; left: 4px; top: -4px; filter: blur(2px);"}}document.addEventListener("DOMContentLoaded",()=>{const e=(0,n.getPageSettings)("pagetemplate");if(!(null==e?void 0:e.toLowerCase().includes("campaign page template")))return;i.getInstance().init()})}}]); 2//# sourceMappingURL=opus2.marketing-landing-loader.341ba97afa97b0040b95.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.