mod-build 4.0.80 → 4.0.81

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/package.json +1 -1
  2. package/public/resources/scripts/abandonment/abandonment-a4bbb36fbc8ed64042b8.min.js +2 -0
  3. package/public/resources/scripts/abandonment/abandonment.min.js +2 -0
  4. package/public/resources/scripts/callrail/callrail-14011d73b50a928de4b4.min.js +2 -0
  5. package/public/resources/scripts/callrail/callrail.min.js +2 -0
  6. package/public/resources/scripts/footer/footer-component-46dc0d7ca6af4fc3b76b.min.js +2 -0
  7. package/public/resources/scripts/footer/footer-component.min.js +2 -0
  8. package/public/resources/scripts/geolocation/geolocation.min.js +2 -0
  9. package/public/resources/scripts/helpers/addVWOTestQueryParam.min.js +2 -0
  10. package/public/resources/scripts/helpers/addVWOTestQueryParam.min.js.map +1 -0
  11. package/public/resources/scripts/helpers/additionalOpts.min.js +2 -0
  12. package/public/resources/scripts/helpers/additionalOpts.min.js.map +1 -0
  13. package/public/resources/scripts/helpers/calls-only.min.js +2 -0
  14. package/public/resources/scripts/helpers/calls-only.min.js.map +1 -0
  15. package/public/resources/scripts/helpers/getPhoneAssignmentData.min.js +2 -0
  16. package/public/resources/scripts/helpers/getPhoneAssignmentData.min.js.map +1 -0
  17. package/public/resources/scripts/helpers/initNumericOnlyFields.min.js +2 -0
  18. package/public/resources/scripts/helpers/initNumericOnlyFields.min.js.map +1 -0
  19. package/public/resources/scripts/helpers/initQSForm.min.js +2 -0
  20. package/public/resources/scripts/helpers/initQSForm.min.js.map +1 -0
  21. package/public/resources/scripts/helpers/initQuadTransform.min.js +2 -0
  22. package/public/resources/scripts/helpers/initQuadTransform.min.js.map +1 -0
  23. package/public/resources/scripts/helpers/isZipCodeValid.min.js +2 -0
  24. package/public/resources/scripts/helpers/isZipCodeValid.min.js.map +1 -0
  25. package/public/resources/scripts/helpers/observeVWOVariation.min.js +2 -0
  26. package/public/resources/scripts/helpers/observeVWOVariation.min.js.map +1 -0
  27. package/public/resources/scripts/helpers/opts.min.js +2 -0
  28. package/public/resources/scripts/helpers/opts.min.js.map +1 -0
  29. package/public/resources/scripts/jornaya.hbs +35 -0
  30. package/public/resources/scripts/jornaya.html +35 -0
  31. package/public/resources/scripts/mod-alytics/modalytics-be44027508c0438f6709.min.js +2 -0
  32. package/public/resources/scripts/mod-alytics/modalytics.min.js +2 -0
  33. package/public/resources/scripts/mod-form/form/contractor-0918337caf3dfede1609.min.js +2 -0
  34. package/public/resources/scripts/mod-form/form/contractor.min.js +2 -0
  35. package/public/resources/scripts/mod-form/form/homeowner-19a121b0e596042326f4.min.js +2 -0
  36. package/public/resources/scripts/mod-form/form/homeowner.min.js +2 -0
  37. package/public/resources/scripts/mod-utils/modutils-bc275eb41af515f626ef.min.js +2 -0
  38. package/public/resources/scripts/mod-utils/modutils.min.js +2 -0
  39. package/public/resources/scripts/trusted-form.hbs +38 -0
  40. package/public/resources/scripts/trusted-form.html +38 -0
  41. package/public/resources/styles/components/abandonment/abandonment-8a673f060817db6cb7dc.min.css +1 -0
  42. package/public/resources/styles/components/abandonment/abandonment.min.css +1 -0
  43. package/public/resources/styles/components/footer/mod-footer-d233fa64b6c8297c70ec.min.css +1 -0
  44. package/public/resources/styles/components/footer/mod-footer.min.css +1 -0
  45. package/public/resources/styles/components/footer/qs-footer-926e67c28d10c729db46.min.css +1 -0
  46. package/public/resources/styles/components/footer/qs-footer.min.css +1 -0
  47. package/src/resources/data/tcpa.json +4 -0
  48. package/src/resources/templates/modals/about/index.hbs +9 -0
  49. package/src/resources/templates/modals/about/index.html +9 -0
  50. package/src/resources/templates/modals/contact-us/index.hbs +348 -0
  51. package/src/resources/templates/modals/contact-us/index.html +348 -0
  52. package/src/resources/templates/modals/e-sign-consent/index.hbs +35 -0
  53. package/src/resources/templates/modals/e-sign-consent/index.html +35 -0
  54. package/src/resources/templates/modals/faq/index.hbs +9 -0
  55. package/src/resources/templates/modals/faq/index.html +9 -0
  56. package/src/resources/templates/modals/privacy/index.hbs +237 -0
  57. package/src/resources/templates/modals/privacy/index.html +237 -0
  58. package/src/resources/templates/modals/terms/index.hbs +167 -0
  59. package/src/resources/templates/modals/terms/index.html +167 -0
  60. package/src/shared-components/call-tracking/_call-tracking.scss +311 -0
  61. package/src/shared-components/call-tracking/call-tracking-icon.html +8 -0
  62. package/src/shared-components/call-tracking/call-tracking.html +81 -0
  63. package/src/shared-components/call-tracking/phone.svg +6 -0
  64. package/src/shared-components/card-button/_card-button.scss +49 -0
  65. package/src/shared-components/card-button/card-button.html +9 -0
  66. package/src/shared-components/carousel/_carousel.scss +106 -0
  67. package/src/shared-components/carousel/carousel.html +23 -0
  68. package/src/shared-components/carousel/carousel.js +3573 -0
  69. package/src/shared-components/carousel/carousel.js.map +1 -0
  70. package/src/shared-components/carousel/carousel.min.js +2 -0
  71. package/src/shared-components/carousel/carousel.min.js.map +1 -0
  72. package/src/shared-components/carousel/carousel.min.min.js +2 -0
  73. package/src/shared-components/carousel/carousel.min.min.js.map +1 -0
  74. package/src/shared-components/checkbox/_checkbox.scss +130 -0
  75. package/src/shared-components/checkbox/checkbox.html +10 -0
  76. package/src/shared-components/consent-capture/tcpa.html +12 -0
  77. package/src/shared-components/expand-collapse/_expand-collapse.scss +93 -0
  78. package/src/shared-components/expand-collapse/expand-collapse.html +8 -0
  79. package/src/shared-components/expand-collapse/expand-collapse.js +40 -0
  80. package/src/shared-components/expand-collapse/expand-collapse.min.js +2 -0
  81. package/src/shared-components/expand-collapse/expand-collapse.min.js.map +1 -0
  82. package/src/shared-components/featured-block/_featured-block.scss +191 -0
  83. package/src/shared-components/featured-block/featured-block.html +80 -0
  84. package/src/shared-components/foot-assets/foot-assets.html +107 -0
  85. package/src/shared-components/form-tcpa/form-tcpa-spanish.html +61 -0
  86. package/src/shared-components/form-tcpa/form-tcpa.html +55 -0
  87. package/src/shared-components/gtm-body/gtm-body.html +4 -0
  88. package/src/shared-components/head/head.html +195 -0
  89. package/src/shared-components/header/_header.scss +200 -0
  90. package/src/shared-components/header/header.html +79 -0
  91. package/src/shared-components/hero/_hero.scss +276 -0
  92. package/src/shared-components/hero/hero.html +136 -0
  93. package/src/shared-components/how-it-works/_how-it-works.scss +138 -0
  94. package/src/shared-components/how-it-works/how-it-works.html +19 -0
  95. package/src/shared-components/input/_input.scss +242 -0
  96. package/src/shared-components/input/input.html +30 -0
  97. package/src/shared-components/preloader/_preloader.scss +61 -0
  98. package/src/shared-components/preloader/preloader.html +49 -0
  99. package/src/shared-components/progress-bar/_progress-bar.scss +142 -0
  100. package/src/shared-components/progress-bar/progress-bar.html +20 -0
  101. package/src/shared-components/progress-bar/progress-bar.js +26 -0
  102. package/src/shared-components/progress-bar/progress-bar.min.js +2 -0
  103. package/src/shared-components/progress-bar/progress-bar.min.js.map +1 -0
  104. package/src/shared-components/radio-button/_radio-button.scss +577 -0
  105. package/src/shared-components/radio-button/radio-button.html +25 -0
  106. package/src/shared-components/reviews/_reviews.scss +79 -0
  107. package/src/shared-components/reviews/reviews.html +27 -0
  108. package/src/shared-components/section-deals/sitemap.xml +9 -0
  109. package/src/shared-components/select/_select.scss +61 -0
  110. package/src/shared-components/select/select.html +8 -0
  111. package/src/shared-components/steps/_steps.scss +431 -0
  112. package/src/shared-components/steps/defaultFormFieldConfig.json +64 -0
  113. package/src/shared-components/steps/step-fields.html +36 -0
  114. package/src/shared-components/steps/steps.html +136 -0
  115. package/src/shared-components/textarea/_textarea.scss +96 -0
  116. package/src/shared-components/textarea/textarea.html +13 -0
  117. package/src/shared-components/theme-toggle/_theme-toggle.scss +68 -0
  118. package/src/shared-components/theme-toggle/theme-toggle.html +34 -0
  119. package/src/shared-components/tile/_tile.scss +117 -0
  120. package/src/shared-components/tile/tile.html +27 -0
  121. package/src/shared-components/value-props/_value-props.scss +99 -0
  122. package/src/shared-components/value-props/value-props.html +17 -0
  123. package/src/shared-components/zip-control/_zip-control.scss +42 -0
  124. package/src/shared-components/zip-control/zip-control.html +21 -0
  125. package/tasks/grab-shared-scripts.js +14 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mod-build",
3
- "version": "4.0.80",
3
+ "version": "4.0.81",
4
4
  "description": "Share components for S3 sites.",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -0,0 +1,2 @@
1
+ "use strict";var modalDialog=document.querySelector(".modal--abandonment"),abandonment={event:new Event("abandonment.closed"),modalElement:modalDialog||document.querySelector(".abandonment__modal"),isModalDialog:!!modalDialog,heapTrack:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e&&modUtils.heap("track",["Abandonment popup | ".concat(e),t])},closeModal:function(e){this.heapTrack("Closed"),this.isModalDialog?(e.close(),document.body.classList.remove("no-scroll"),e.setAttribute("aria-hidden","true"),document.querySelector(".step--active").focus()):this.modalElement.style.display="none",this.modalElement.parentNode.dispatchEvent(this.event)},initClickTracking:function(){var e=this,t=document.querySelectorAll("#abandonment .btn-call-now"),n=document.querySelectorAll("#abandonment .btn-get-price-quotes");t&&t.forEach((function(t){t.addEventListener("click",(function(t){e.closeModal(e.modalElement),e.heapTrack("Clicked Phone Number",{phoneNumber:t.target.textContent.trim()})}))})),n&&n.forEach((function(t){t.addEventListener("click",(function(){e.closeModal(e.modalElement),e.heapTrack("Clicked CTA")}))}))},initCloseListener:function(){var e=this;this.isModalDialog?(this.modalElement.querySelector('[data-close="dialog"]').addEventListener("click",(function(){e.closeModal(e.modalElement)})),document.body.addEventListener("click",(function(t){t.target.id===e.modalElement.id&&e.closeModal(e.modalElement)})),document.addEventListener("keydown",(function(t){"Escape"===t.key&&e.closeModal(e.modalElement)}))):document.addEventListener("click",(function(t){t.target.id&&("abandonment-modal"!==t.target.id&&"btnModalClose"!==t.target.id||e.modalElement&&(e.modalElement.style.display="none",document.body.classList.remove("no-scroll"),e.heapTrack("Closed"),e.modalElement.dispatchEvent(e.event)))}))},initAbandonmentForm:function(){var e=document.getElementById("abandonment-form");if(e){form.init(e,{isAbandonmentForm:!0,hasBackButtons:!1,hasClickToProceed:!1,hasProgressbar:!1,hasZipChange:!1,skipStep:{device:"",index:null,shouldSkip:!1}})}},setAbandonmentType:function(){"default"===(document.getElementById("abandonment-form")?"form":"default")?this.initClickTracking():this.initAbandonmentForm()},init:function(){this.setAbandonmentType(),this.initCloseListener();var e=window.location.hash;this.heapTrack("Shown",{step:e}),this.isModalDialog&&(this.modalElement.show(),this.modalElement.focus(),this.modalElement.setAttribute("aria-hidden","false"),modUtils.trapTabFocusInDialog("abandonmentDialog"))}};abandonment.init();
2
+ //# sourceMappingURL=abandonment.min.js.map
@@ -0,0 +1,2 @@
1
+ "use strict";var modalDialog=document.querySelector(".modal--abandonment"),abandonment={event:new Event("abandonment.closed"),modalElement:modalDialog||document.querySelector(".abandonment__modal"),isModalDialog:!!modalDialog,heapTrack:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e&&modUtils.heap("track",["Abandonment popup | ".concat(e),t])},closeModal:function(e){this.heapTrack("Closed"),this.isModalDialog?(e.close(),document.body.classList.remove("no-scroll"),e.setAttribute("aria-hidden","true"),document.querySelector(".step--active").focus()):this.modalElement.style.display="none",this.modalElement.parentNode.dispatchEvent(this.event)},initClickTracking:function(){var e=this,t=document.querySelectorAll("#abandonment .btn-call-now"),n=document.querySelectorAll("#abandonment .btn-get-price-quotes");t&&t.forEach((function(t){t.addEventListener("click",(function(t){e.closeModal(e.modalElement),e.heapTrack("Clicked Phone Number",{phoneNumber:t.target.textContent.trim()})}))})),n&&n.forEach((function(t){t.addEventListener("click",(function(){e.closeModal(e.modalElement),e.heapTrack("Clicked CTA")}))}))},initCloseListener:function(){var e=this;this.isModalDialog?(this.modalElement.querySelector('[data-close="dialog"]').addEventListener("click",(function(){e.closeModal(e.modalElement)})),document.body.addEventListener("click",(function(t){t.target.id===e.modalElement.id&&e.closeModal(e.modalElement)})),document.addEventListener("keydown",(function(t){"Escape"===t.key&&e.closeModal(e.modalElement)}))):document.addEventListener("click",(function(t){t.target.id&&("abandonment-modal"!==t.target.id&&"btnModalClose"!==t.target.id||e.modalElement&&(e.modalElement.style.display="none",document.body.classList.remove("no-scroll"),e.heapTrack("Closed"),e.modalElement.dispatchEvent(e.event)))}))},initAbandonmentForm:function(){var e=document.getElementById("abandonment-form");if(e){form.init(e,{isAbandonmentForm:!0,hasBackButtons:!1,hasClickToProceed:!1,hasProgressbar:!1,hasZipChange:!1,skipStep:{device:"",index:null,shouldSkip:!1}})}},setAbandonmentType:function(){"default"===(document.getElementById("abandonment-form")?"form":"default")?this.initClickTracking():this.initAbandonmentForm()},init:function(){this.setAbandonmentType(),this.initCloseListener();var e=window.location.hash;this.heapTrack("Shown",{step:e}),this.isModalDialog&&(this.modalElement.show(),this.modalElement.focus(),this.modalElement.setAttribute("aria-hidden","false"),modUtils.trapTabFocusInDialog("abandonmentDialog"))}};abandonment.init();
2
+ //# sourceMappingURL=abandonment.min.js.map
@@ -0,0 +1,2 @@
1
+ "use strict";var callrail={setCallRailCookie:function(t){var a,o=Object.entries(t);a=(o=o.map((function(t){return t.join("=")}))).join("|"),modUtils.setCookie("qs_track_data",a)},init:function(t){var a=this;if(null===modUtils.getCookie("qs_track_data"))var o=0,i=setInterval((function(){if(++o,Object.keys(modForm.opts.quadLinkParams).length>0||20===o){clearInterval(i);var r=modUtils.getUrlParamsToObject(),e=void 0!==r.PartnerSourceID?r.PartnerSourceID:0,s={afk:modForm.opts.quadLinkParams.AffiliateKey,clk:modForm.opts.quadLinkParams.CLK,ccid:modForm.opts.quadLinkParams.CCID,qtr:modForm.opts.quadLinkParams.QTR};0!==e&&(s.psid=e),a.setCallRailCookie(s),modUtils.fetchScript(t)}}),1e3);else modUtils.fetchScript(t)}};
2
+ //# sourceMappingURL=callrail.min.js.map
@@ -0,0 +1,2 @@
1
+ "use strict";var callrail={setCallRailCookie:function(t){var a,o=Object.entries(t);a=(o=o.map((function(t){return t.join("=")}))).join("|"),modUtils.setCookie("qs_track_data",a)},init:function(t){var a=this;if(null===modUtils.getCookie("qs_track_data"))var o=0,i=setInterval((function(){if(++o,Object.keys(modForm.opts.quadLinkParams).length>0||20===o){clearInterval(i);var r=modUtils.getUrlParamsToObject(),e=void 0!==r.PartnerSourceID?r.PartnerSourceID:0,s={afk:modForm.opts.quadLinkParams.AffiliateKey,clk:modForm.opts.quadLinkParams.CLK,ccid:modForm.opts.quadLinkParams.CCID,qtr:modForm.opts.quadLinkParams.QTR};0!==e&&(s.psid=e),a.setCallRailCookie(s),modUtils.fetchScript(t)}}),1e3);else modUtils.fetchScript(t)}};
2
+ //# sourceMappingURL=callrail.min.js.map
@@ -0,0 +1,2 @@
1
+ "use strict";function _slicedToArray(t,e){return _arrayWithHoles(t)||_iterableToArrayLimit(t,e)||_unsupportedIterableToArray(t,e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(t,e){if(t){if("string"==typeof t)return _arrayLikeToArray(t,e);var o={}.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?_arrayLikeToArray(t,e):void 0}}function _arrayLikeToArray(t,e){(null==e||e>t.length)&&(e=t.length);for(var o=0,n=Array(e);o<e;o++)n[o]=t[o];return n}function _iterableToArrayLimit(t,e){var o=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=o){var n,a,r,i,c=[],s=!0,l=!1;try{if(r=(o=o.call(t)).next,0===e){if(Object(o)!==o)return;s=!1}else for(;!(s=(n=r.call(o)).done)&&(c.push(n.value),c.length!==e);s=!0);}catch(t){l=!0,a=t}finally{try{if(!s&&null!=o.return&&(i=o.return(),Object(i)!==i))return}finally{if(l)throw a}}return c}}function _arrayWithHoles(t){if(Array.isArray(t))return t}function _typeof(t){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof(t)}var Footer={element:document.querySelector("#footer-component"),siteData:"object"===("undefined"==typeof siteData?"undefined":_typeof(siteData))?siteData:{},footerType:"qs",modDomain:"https://modernize.com",refocusOnElement:"",isBestCompany:window.location.host.includes("bestcompany")||window.location.host.includes("topsolarcompanies")||window.location.host.includes("besthomesecuritycompanys"),defaultFooter:{mod:{copyright:{year:(new Date).getFullYear(),text:"All&nbsp;Rights&nbsp;Reserved.",spanishText:"Todos&nbsp;los&nbsp;derechos&nbsp;reservados.",companyName:"Modernize.com"},contractor:{text:"Are you a contractor?",linkText:"Join Our Contractor Network",link:"https://modernize.com/pro/register/leads/?utm_campaign=quinstreet-referral",spanishText:"¿Eres un contratista?",spanishLinkText:"Únete a nuestra red de contratistas"},captchaDisclosure:{text:"This site is protected by reCAPTCHA and the Google",privacy:{text:"Privacy Policy",spanishText:"Política de Privacidad",url:"https://policies.google.com/privacy"},terms:{text:"Terms&nbsp;of&nbsp;Service",spanishText:"Términos de Servicio",url:"https://policies.google.com/terms"}}},qs:{links:[{id:"about",url:"/?modal=about",modal:!0,text:"About",spanishText:"Acerca de"},{id:"privacy",url:"/?modal=privacy",modal:!0,text:"Privacy Notice",spanishText:"Aviso de Privacidad"},{id:"publisher",url:"https://modernize.com/contact?publisher",text:"Affiliates",spanishText:"Afiliados",modal:!1},{id:"tou",url:"/?modal=terms",modal:!0,text:"Terms of Use",spanishText:"Términos de Uso"},{id:"contact",url:"/?modal=contact-us",modal:!0,text:"Contact Us",spanishText:"Contáctanos"},{id:"ccpa",url:"https://privacy-central.securiti.ai/#/dsr/1b319101-f00c-470f-a7f0-26aa81f057b8",modal:!1,text:"Do Not Sell or Share My Personal Information",spanishText:"No vender ni compartir mi información personal"}],copyright:{companyName:"QuinStreet, Inc",text:"All Rights Reserved.",spanishText:"Todos los derechos reservados.",year:(new Date).getFullYear()},contractor:{text:"Are you a contractor?",linkText:"Join Our Contractor Network",link:"https://modernize.com/pro/register/leads/?utm_campaign=quinstreet-referral",spanishText:"¿Eres un contratista?",spanishLinkText:"Únete a nuestra red de contratistas"}}},render:function(t){this.element.innerHTML=t},getFooterParams:function(){var t=document.querySelector('script[src*="footer-component"]');t&&(t.src&&t.src.indexOf("qa.")>-1&&(this.modDomain="https://qa.modernize.com"),("mod"===t.getAttribute("data-type")||t.src.indexOf("mod-footer")>-1)&&(this.footerType="mod"))},getAssetPath:function(){return"".concat(this.modDomain,"/quote/resources/assets")},getLinkTag:function(t){var e=this.siteData,o=e.isSpanishPage,n=e.pathSubdirectory,a="".concat(n||""===n?n:"/","resources/templates/modals/");return'<a\n\t\t\t\tid="'.concat(t.id,'"\n\t\t\t\thref="').concat(t.url).concat(t.anchor?"#"+t.anchor:"",'"\n\t\t\t\t').concat(!0===t.modal?'data-load="'.concat(a).concat(t.url.replace("/?modal=",""),'/"\n\t\t\t\t\tdata-bind="modal-page"\n\t\t\t\t\tdata-anchor="#').concat(t.anchor,'"'):'target="'.concat(t.target?t.target:"_blank",'"\n\t\t\t\t\trel="noopener noreferrer"'),">\n\t\t\t\t").concat(o?t.spanishText:t.text,"\n\t\t\t</a>")},getModCopyRightAndRecaptcha:function(){var t=this.defaultFooter.mod,e=t.copyright,o=t.captchaDisclosure,n=this.siteData,a=n.companyName,r=n.isSpanishPage;return'\n\t\t\t<p class="footer__copyright">\n\t\t\t\t&copy; '.concat(e.year," ").concat(a||e.companyName,".\n\t\t\t\t").concat(r?e.spanishText:e.text,'\n\t\t\t</p>\n\t\t\t<p class="footer__copyright footer__captcha-disclosure">\n\t\t\t\t').concat(r?'Este sitio está protegido por reCAPTCHA y se aplican la <a href="'.concat(o.privacy.url,'" target="_blank">').concat(o.privacy.spanishText,'</a> y <a href="').concat(o.terms.url,'" target="_blank">').concat(o.terms.spanishText,"</a>&nbsp;de&nbsp;Google"):"".concat(o.text,'\n\t\t\t\t\t<a href="').concat(o.privacy.url,'" target="_blank">').concat(o.privacy.text,'</a> and\n\t\t\t\t\t<a href="').concat(o.terms.url,'" target="_blank">').concat(o.terms.text,"</a>&nbsp;apply."),"\n\t\t\t</p>")},getModFooterLinks:function(){var t=this,e=this.defaultFooter.qs.links,o=this.siteData,n=o.footerLinks,a=o.isQuotePage,r=o.isQSPage;return'\n\t\t\t<ul class="footer__links">\n\t\t\t\t'.concat(e.map((function(e){if(!a&&r||("tou"===e.id&&(e.text="Terms & Conditions",e.spanishText="Términos y Condiciones"),"about"===e.id&&(e.text="About Us",e.spanishText="Acerca de Nosotros"),"publisher"===e.id&&(e.text="I'm a Publisher",e.spanishText="Soy Editor"),"contact"!==e.id))return"\n\t\t\t\t\t".concat(t.element.hasAttribute("data-hide-".concat(e.id))?"":"<li>\n\t\t\t\t\t\t".concat(t.getLinkTag(e),"\n\t\t\t\t\t</li>"))})).join(""),"\n\n\t\t\t\t").concat(n?n.map((function(e){return"\n\t\t\t\t\t<li>\n\t\t\t\t\t\t".concat(t.getLinkTag(e),"\n\t\t\t\t\t</li>")})).join(""):"","\n\t\t\t</ul>")},displayModFooter:function(){var t=this.defaultFooter.mod.contractor,e=this.siteData,o=e.bbbLogoPath,n=e.trade,a=e.isQuotePage,r=e.isSpanishPage,i="".concat(this.getAssetPath(),a?"/images/logos/misc/bbb-dark.svg":"/images/logos/misc/bbb.svg"),c=o||i,s=this.element;this.render('<div class="footer'.concat(a?" footer--quote-page":"").concat(r?" footer--spanish":"",'">\n\t\t\t\t<div class="container">\n\t\t\t\t\t').concat(s.hasAttribute("data-hide-bbb")?"":'<img width="130" height="47" loading="lazy" src="'.concat(c,'" alt="BBB Accredited Logo" class="footer__bbb-logo footer__bbb\n\t\t\t\t\t\t\t').concat(s.hasAttribute("data-hide-bbb-xs")?"hidden-xs":"",'">'),"\n\t\t\t\t\t").concat(s.hasAttribute("data-hide-contractor")?"":'<div class="footer__head-link">\n\t\t\t\t\t\t'.concat(r?t.spanishText:t.text,'\n\t\t\t\t\t\t<a target="_blank" href="').concat(t.link).concat(n?"&trade=".concat(n):"",'" rel="noopener noreferrer">\n\t\t\t\t\t\t\t').concat(r?t.spanishLinkText:t.linkText,"\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>"),"\n\n\t\t\t\t\t\t").concat(this.getModFooterLinks(),"\n\t\t\t\t\t\t").concat(this.getModCopyRightAndRecaptcha(),"\n\t\t\t\t</div>\n\t\t\t</div>"))},displayQsFooter:function(){var t=this,e=this.defaultFooter.qs,o=e.contractor,n=e.links,a=e.copyright,r=t.siteData,i=r.trade,c=r.footerLinks,s=r.bbbLogoPath,l=r.isSpanishPage,d=r.companyName,u=this.element,h=d||a.companyName;this.render('<footer class="footer '.concat(l?"footer--spanish":"",'">\n\t\t\t\t<div class="container">\n\t\t\t\t\t').concat(u.hasAttribute("data-show-bbb")?'<svg class="footer__bbb-logo footer__bbb">\n\t\t\t\t\t\t<use href="'.concat(s,'"></use>\n\t\t\t\t\t</svg>'):"","\n\n\t\t\t\t\t").concat(u.hasAttribute("data-hide-contractor")?"":'<div class="footer__head-link">\n\t\t\t\t\t\t'.concat(l?o.spanishText:o.text,'\n\t\t\t\t\t\t<a href="').concat(o.link).concat(i?"&trade=".concat(i):"",'" target="_blank" rel="noopener noreferrer">\n\t\t\t\t\t\t\t').concat(l?o.spanishLinkText:o.linkText,"\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>"),'\n\n\t\t\t\t\t<ul class="footer__links">\n\t\t\t\t\t\t').concat(n.map((function(e){return"".concat(u.hasAttribute("data-hide-".concat(e.id))?"":"<li>\n\t\t\t\t\t\t\t\t\t\t".concat(t.getLinkTag(e),"\n\t\t\t\t\t\t\t\t\t</li>"))})).join(""),"\n\n\t\t\t\t\t\t").concat(c?c.map((function(e){return'<li style="'.concat(e.order?"order:".concat(e.order):"",'">\n\t\t\t\t\t\t\t\t\t').concat(t.getLinkTag(e),"\n\t\t\t\t\t\t\t\t</li>")})).join(""):"","\n\t\t\t\t\t</ul>\n\t\t\t\t\t").concat(u.hasAttribute("data-hide-copyright")?"":'<p class="footer__copyright">\n\t\t\t\t\t\t&copy; '.concat(a.year," ").concat(t.isBestCompany?"Modernize":h,". ").concat(l?a.spanishText:a.text,"\n\t\t\t\t\t</p>"),"\n\t\t\t\t</div>\n\t\t\t</footer>"))},loadCss:function(){var t=document.getElementsByTagName("head")[0],e=document.createElement("link");e.type="text/css",e.rel="stylesheet","mod"===this.footerType?e.href="".concat("/resources/styles/components/footer/mod-footer-d233fa64b6c8297c70ec.min.css"):e.href="".concat("/resources/styles/components/footer/qs-footer-926e67c28d10c729db46.min.css"),t.appendChild(e)},getQueryParam:function(t){var e=window.location.search.match(new RegExp("[?&]"+t+"=([^&]+)"));return e?e[1]:null},camelToUnderscore:function(t){return t.replace(/([A-Z])/g," $1").split(" ").join("_").toLowerCase()},prepopModalTemplateWithSiteData:function(t){var e={company_name:this.isBestCompany?"Modernize":this.siteData.company_name||("mod"===this.footerType?"Modernize.com":"Quinstreet, Inc."),domain:window.location.host};return Object.entries(e).forEach((function(e){var o=_slicedToArray(e,2),n=o[0],a=o[1],r=new RegExp("{{("+n+"|"+Footer.camelToUnderscore(n)+")}}","gi");t=t.replace(r,a)})),t},initModalLinks:function(){var t=this,e='a[data-bind="modal-page"]',o="info-modal",n=['<dialog id="'+o+'" role="dialog" aria-labelledby="footer-modal-title" aria-hidden="true" tabindex="-1" style="border: 0; background-color: transparent; outline:0; padding:0; max-width: 100%; max-height: 100%; height: 100%; position: fixed; top: 0; z-index: 100;">','<div class="modal-dialog">','<div class="modal-content">','<div class="modal-header">','<h1 id="footer-modal-title" class="modal-title"></h1>',"</div>",'<div class="modal-body">Loading...</div>','<div class="modal-footer">','<button type="button" class="btn btn-primary btn--primary close" data-dismiss="modal" data-close="dialog">Close</button>',"</div>","</div>","</div>","</dialog>"].join("");document.querySelectorAll(e).forEach((function(e){e.addEventListener("click",(function(e){e.preventDefault();var a=this,r=a.getAttribute("data-load"),i=a.getAttribute("id");document.getElementById(o)&&document.getElementById(o).remove(),document.body.insertAdjacentHTML("beforeend",n);var c=document.getElementById(o),s=c.querySelector(".modal-title"),l=c.querySelector(".modal-body");s.textContent=a.textContent,fetch(r).then((function(t){return t.text()})).then((function(t){l.innerHTML=Footer.prepopModalTemplateWithSiteData(t),c.querySelectorAll("a[href^=\\#]").forEach((function(t){t.addEventListener("click",(function(t){t.preventDefault();var e=c.querySelector(this.hash);e.scrollIntoView({behavior:"smooth"});var o=l.querySelectorAll("section");l.addEventListener("scroll",(function t(){o.forEach((function(t){t.blur()})),l.classList.contains("scrolling")||(l.classList.add("scrolling"),setTimeout((function(){l.classList.remove("scrolling"),e.focus(),l.removeEventListener("scroll",t)}),750))}))}))}));var e=a.getAttribute("data-anchor");e&&"#undefined"!==e&&document.querySelector(e).scrollIntoView(),modUtils.trapTabFocusInDialog(o),Footer.initCloseDialog(o)})),c.show(),c.focus(),c.setAttribute("aria-hidden","false"),t.refocusOnElement=i;var d=new MutationObserver((function(){l.hasChildNodes()&&(d.disconnect(),function(){for(var t=l.getElementsByTagName("script"),e=0;e<t.length;e++){var o=t[e].innerText;new Function(o)()}var n=l.querySelectorAll("script[src]");function a(){}for(var r=0;r<n.length;r++){var i=document.createElement("script");i.src=n[r].src,i.onload=a,document.head.appendChild(i)}}())}));c.open&&d.observe(l,{childList:!0,subtree:!0})}))}));var a=this.getQueryParam("modal");a&&document.querySelectorAll("".concat(e,'[href="/?modal=').concat(a,'"]:first')).click();var r=window.location.search;r&&(r=r.substring(1),document.querySelectorAll(e).forEach((function(t){var e=t.getAttribute("href");e+="&"+r,t.setAttribute("href",e)})))},closeModal:function(t){var e=document.body.classList.contains("modal-opened-globally");t.close(),t.setAttribute("aria-hidden","true"),this.refocusOnElement&&!e&&(document.getElementById(this.refocusOnElement).focus(),this.refocusOnElement=""),e&&document.body.classList.remove("modal-opened-globally")},initCloseDialog:function(t){var e=document.getElementById(t),o=this;e.querySelector('[data-close="dialog"]').addEventListener("click",(function(){o.closeModal(e)})),document.body.addEventListener("click",(function(n){n.target.id===t&&o.closeModal(e)})),document.addEventListener("keydown",(function(t){"Escape"===t.key&&o.closeModal(e)}))},init:function(){this.getFooterParams(),this.loadCss(),"mod"===this.footerType?this.displayModFooter():this.displayQsFooter(),this.initModalLinks()}};window.addEventListener("load",(function(){"function"==typeof window.HTMLDialogElement&&modUtils.heap("track",["HTML Dialog Element Supported"]),"IdlizeQueue"in window?window.IdlizeQueue.pushTask((function(){Footer.init()})):Footer.init()}));
2
+ //# sourceMappingURL=footer-component.min.js.map
@@ -0,0 +1,2 @@
1
+ "use strict";function _slicedToArray(t,e){return _arrayWithHoles(t)||_iterableToArrayLimit(t,e)||_unsupportedIterableToArray(t,e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(t,e){if(t){if("string"==typeof t)return _arrayLikeToArray(t,e);var o={}.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?_arrayLikeToArray(t,e):void 0}}function _arrayLikeToArray(t,e){(null==e||e>t.length)&&(e=t.length);for(var o=0,n=Array(e);o<e;o++)n[o]=t[o];return n}function _iterableToArrayLimit(t,e){var o=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=o){var n,a,r,i,c=[],s=!0,l=!1;try{if(r=(o=o.call(t)).next,0===e){if(Object(o)!==o)return;s=!1}else for(;!(s=(n=r.call(o)).done)&&(c.push(n.value),c.length!==e);s=!0);}catch(t){l=!0,a=t}finally{try{if(!s&&null!=o.return&&(i=o.return(),Object(i)!==i))return}finally{if(l)throw a}}return c}}function _arrayWithHoles(t){if(Array.isArray(t))return t}function _typeof(t){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof(t)}var Footer={element:document.querySelector("#footer-component"),siteData:"object"===("undefined"==typeof siteData?"undefined":_typeof(siteData))?siteData:{},footerType:"qs",modDomain:"https://modernize.com",refocusOnElement:"",isBestCompany:window.location.host.includes("bestcompany")||window.location.host.includes("topsolarcompanies")||window.location.host.includes("besthomesecuritycompanys"),defaultFooter:{mod:{copyright:{year:(new Date).getFullYear(),text:"All&nbsp;Rights&nbsp;Reserved.",spanishText:"Todos&nbsp;los&nbsp;derechos&nbsp;reservados.",companyName:"Modernize.com"},contractor:{text:"Are you a contractor?",linkText:"Join Our Contractor Network",link:"https://modernize.com/pro/register/leads/?utm_campaign=quinstreet-referral",spanishText:"¿Eres un contratista?",spanishLinkText:"Únete a nuestra red de contratistas"},captchaDisclosure:{text:"This site is protected by reCAPTCHA and the Google",privacy:{text:"Privacy Policy",spanishText:"Política de Privacidad",url:"https://policies.google.com/privacy"},terms:{text:"Terms&nbsp;of&nbsp;Service",spanishText:"Términos de Servicio",url:"https://policies.google.com/terms"}}},qs:{links:[{id:"about",url:"/?modal=about",modal:!0,text:"About",spanishText:"Acerca de"},{id:"privacy",url:"/?modal=privacy",modal:!0,text:"Privacy Notice",spanishText:"Aviso de Privacidad"},{id:"publisher",url:"https://modernize.com/contact?publisher",text:"Affiliates",spanishText:"Afiliados",modal:!1},{id:"tou",url:"/?modal=terms",modal:!0,text:"Terms of Use",spanishText:"Términos de Uso"},{id:"contact",url:"/?modal=contact-us",modal:!0,text:"Contact Us",spanishText:"Contáctanos"},{id:"ccpa",url:"https://privacy-central.securiti.ai/#/dsr/1b319101-f00c-470f-a7f0-26aa81f057b8",modal:!1,text:"Do Not Sell or Share My Personal Information",spanishText:"No vender ni compartir mi información personal"}],copyright:{companyName:"QuinStreet, Inc",text:"All Rights Reserved.",spanishText:"Todos los derechos reservados.",year:(new Date).getFullYear()},contractor:{text:"Are you a contractor?",linkText:"Join Our Contractor Network",link:"https://modernize.com/pro/register/leads/?utm_campaign=quinstreet-referral",spanishText:"¿Eres un contratista?",spanishLinkText:"Únete a nuestra red de contratistas"}}},render:function(t){this.element.innerHTML=t},getFooterParams:function(){var t=document.querySelector('script[src*="footer-component"]');t&&(t.src&&t.src.indexOf("qa.")>-1&&(this.modDomain="https://qa.modernize.com"),("mod"===t.getAttribute("data-type")||t.src.indexOf("mod-footer")>-1)&&(this.footerType="mod"))},getAssetPath:function(){return"".concat(this.modDomain,"/quote/resources/assets")},getLinkTag:function(t){var e=this.siteData,o=e.isSpanishPage,n=e.pathSubdirectory,a="".concat(n||""===n?n:"/","resources/templates/modals/");return'<a\n\t\t\t\tid="'.concat(t.id,'"\n\t\t\t\thref="').concat(t.url).concat(t.anchor?"#"+t.anchor:"",'"\n\t\t\t\t').concat(!0===t.modal?'data-load="'.concat(a).concat(t.url.replace("/?modal=",""),'/"\n\t\t\t\t\tdata-bind="modal-page"\n\t\t\t\t\tdata-anchor="#').concat(t.anchor,'"'):'target="'.concat(t.target?t.target:"_blank",'"\n\t\t\t\t\trel="noopener noreferrer"'),">\n\t\t\t\t").concat(o?t.spanishText:t.text,"\n\t\t\t</a>")},getModCopyRightAndRecaptcha:function(){var t=this.defaultFooter.mod,e=t.copyright,o=t.captchaDisclosure,n=this.siteData,a=n.companyName,r=n.isSpanishPage;return'\n\t\t\t<p class="footer__copyright">\n\t\t\t\t&copy; '.concat(e.year," ").concat(a||e.companyName,".\n\t\t\t\t").concat(r?e.spanishText:e.text,'\n\t\t\t</p>\n\t\t\t<p class="footer__copyright footer__captcha-disclosure">\n\t\t\t\t').concat(r?'Este sitio está protegido por reCAPTCHA y se aplican la <a href="'.concat(o.privacy.url,'" target="_blank">').concat(o.privacy.spanishText,'</a> y <a href="').concat(o.terms.url,'" target="_blank">').concat(o.terms.spanishText,"</a>&nbsp;de&nbsp;Google"):"".concat(o.text,'\n\t\t\t\t\t<a href="').concat(o.privacy.url,'" target="_blank">').concat(o.privacy.text,'</a> and\n\t\t\t\t\t<a href="').concat(o.terms.url,'" target="_blank">').concat(o.terms.text,"</a>&nbsp;apply."),"\n\t\t\t</p>")},getModFooterLinks:function(){var t=this,e=this.defaultFooter.qs.links,o=this.siteData,n=o.footerLinks,a=o.isQuotePage,r=o.isQSPage;return'\n\t\t\t<ul class="footer__links">\n\t\t\t\t'.concat(e.map((function(e){if(!a&&r||("tou"===e.id&&(e.text="Terms & Conditions",e.spanishText="Términos y Condiciones"),"about"===e.id&&(e.text="About Us",e.spanishText="Acerca de Nosotros"),"publisher"===e.id&&(e.text="I'm a Publisher",e.spanishText="Soy Editor"),"contact"!==e.id))return"\n\t\t\t\t\t".concat(t.element.hasAttribute("data-hide-".concat(e.id))?"":"<li>\n\t\t\t\t\t\t".concat(t.getLinkTag(e),"\n\t\t\t\t\t</li>"))})).join(""),"\n\n\t\t\t\t").concat(n?n.map((function(e){return"\n\t\t\t\t\t<li>\n\t\t\t\t\t\t".concat(t.getLinkTag(e),"\n\t\t\t\t\t</li>")})).join(""):"","\n\t\t\t</ul>")},displayModFooter:function(){var t=this.defaultFooter.mod.contractor,e=this.siteData,o=e.bbbLogoPath,n=e.trade,a=e.isQuotePage,r=e.isSpanishPage,i="".concat(this.getAssetPath(),a?"/images/logos/misc/bbb-dark.svg":"/images/logos/misc/bbb.svg"),c=o||i,s=this.element;this.render('<div class="footer'.concat(a?" footer--quote-page":"").concat(r?" footer--spanish":"",'">\n\t\t\t\t<div class="container">\n\t\t\t\t\t').concat(s.hasAttribute("data-hide-bbb")?"":'<img width="130" height="47" loading="lazy" src="'.concat(c,'" alt="BBB Accredited Logo" class="footer__bbb-logo footer__bbb\n\t\t\t\t\t\t\t').concat(s.hasAttribute("data-hide-bbb-xs")?"hidden-xs":"",'">'),"\n\t\t\t\t\t").concat(s.hasAttribute("data-hide-contractor")?"":'<div class="footer__head-link">\n\t\t\t\t\t\t'.concat(r?t.spanishText:t.text,'\n\t\t\t\t\t\t<a target="_blank" href="').concat(t.link).concat(n?"&trade=".concat(n):"",'" rel="noopener noreferrer">\n\t\t\t\t\t\t\t').concat(r?t.spanishLinkText:t.linkText,"\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>"),"\n\n\t\t\t\t\t\t").concat(this.getModFooterLinks(),"\n\t\t\t\t\t\t").concat(this.getModCopyRightAndRecaptcha(),"\n\t\t\t\t</div>\n\t\t\t</div>"))},displayQsFooter:function(){var t=this,e=this.defaultFooter.qs,o=e.contractor,n=e.links,a=e.copyright,r=t.siteData,i=r.trade,c=r.footerLinks,s=r.bbbLogoPath,l=r.isSpanishPage,d=r.companyName,u=this.element,h=d||a.companyName;this.render('<footer class="footer '.concat(l?"footer--spanish":"",'">\n\t\t\t\t<div class="container">\n\t\t\t\t\t').concat(u.hasAttribute("data-show-bbb")?'<svg class="footer__bbb-logo footer__bbb">\n\t\t\t\t\t\t<use href="'.concat(s,'"></use>\n\t\t\t\t\t</svg>'):"","\n\n\t\t\t\t\t").concat(u.hasAttribute("data-hide-contractor")?"":'<div class="footer__head-link">\n\t\t\t\t\t\t'.concat(l?o.spanishText:o.text,'\n\t\t\t\t\t\t<a href="').concat(o.link).concat(i?"&trade=".concat(i):"",'" target="_blank" rel="noopener noreferrer">\n\t\t\t\t\t\t\t').concat(l?o.spanishLinkText:o.linkText,"\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>"),'\n\n\t\t\t\t\t<ul class="footer__links">\n\t\t\t\t\t\t').concat(n.map((function(e){return"".concat(u.hasAttribute("data-hide-".concat(e.id))?"":"<li>\n\t\t\t\t\t\t\t\t\t\t".concat(t.getLinkTag(e),"\n\t\t\t\t\t\t\t\t\t</li>"))})).join(""),"\n\n\t\t\t\t\t\t").concat(c?c.map((function(e){return'<li style="'.concat(e.order?"order:".concat(e.order):"",'">\n\t\t\t\t\t\t\t\t\t').concat(t.getLinkTag(e),"\n\t\t\t\t\t\t\t\t</li>")})).join(""):"","\n\t\t\t\t\t</ul>\n\t\t\t\t\t").concat(u.hasAttribute("data-hide-copyright")?"":'<p class="footer__copyright">\n\t\t\t\t\t\t&copy; '.concat(a.year," ").concat(t.isBestCompany?"Modernize":h,". ").concat(l?a.spanishText:a.text,"\n\t\t\t\t\t</p>"),"\n\t\t\t\t</div>\n\t\t\t</footer>"))},loadCss:function(){var t=document.getElementsByTagName("head")[0],e=document.createElement("link");e.type="text/css",e.rel="stylesheet","mod"===this.footerType?e.href="".concat(this.modDomain,"/quote/resources/shared-resources/styles/components/footer/mod-footer.min.css"):e.href="".concat(this.modDomain,"/quote/resources/shared-resources/styles/components/footer/qs-footer.min.css"),t.appendChild(e)},getQueryParam:function(t){var e=window.location.search.match(new RegExp("[?&]"+t+"=([^&]+)"));return e?e[1]:null},camelToUnderscore:function(t){return t.replace(/([A-Z])/g," $1").split(" ").join("_").toLowerCase()},prepopModalTemplateWithSiteData:function(t){var e={company_name:this.isBestCompany?"Modernize":this.siteData.company_name||("mod"===this.footerType?"Modernize.com":"Quinstreet, Inc."),domain:window.location.host};return Object.entries(e).forEach((function(e){var o=_slicedToArray(e,2),n=o[0],a=o[1],r=new RegExp("{{("+n+"|"+Footer.camelToUnderscore(n)+")}}","gi");t=t.replace(r,a)})),t},initModalLinks:function(){var t=this,e='a[data-bind="modal-page"]',o="info-modal",n=['<dialog id="'+o+'" role="dialog" aria-labelledby="footer-modal-title" aria-hidden="true" tabindex="-1" style="border: 0; background-color: transparent; outline:0; padding:0; max-width: 100%; max-height: 100%; height: 100%; position: fixed; top: 0; z-index: 100;">','<div class="modal-dialog">','<div class="modal-content">','<div class="modal-header">','<h1 id="footer-modal-title" class="modal-title"></h1>',"</div>",'<div class="modal-body">Loading...</div>','<div class="modal-footer">','<button type="button" class="btn btn-primary btn--primary close" data-dismiss="modal" data-close="dialog">Close</button>',"</div>","</div>","</div>","</dialog>"].join("");document.querySelectorAll(e).forEach((function(e){e.addEventListener("click",(function(e){e.preventDefault();var a=this,r=a.getAttribute("data-load"),i=a.getAttribute("id");document.getElementById(o)&&document.getElementById(o).remove(),document.body.insertAdjacentHTML("beforeend",n);var c=document.getElementById(o),s=c.querySelector(".modal-title"),l=c.querySelector(".modal-body");s.textContent=a.textContent,fetch(r).then((function(t){return t.text()})).then((function(t){l.innerHTML=Footer.prepopModalTemplateWithSiteData(t),c.querySelectorAll("a[href^=\\#]").forEach((function(t){t.addEventListener("click",(function(t){t.preventDefault();var e=c.querySelector(this.hash);e.scrollIntoView({behavior:"smooth"});var o=l.querySelectorAll("section");l.addEventListener("scroll",(function t(){o.forEach((function(t){t.blur()})),l.classList.contains("scrolling")||(l.classList.add("scrolling"),setTimeout((function(){l.classList.remove("scrolling"),e.focus(),l.removeEventListener("scroll",t)}),750))}))}))}));var e=a.getAttribute("data-anchor");e&&"#undefined"!==e&&document.querySelector(e).scrollIntoView(),modUtils.trapTabFocusInDialog(o),Footer.initCloseDialog(o)})),c.show(),c.focus(),c.setAttribute("aria-hidden","false"),t.refocusOnElement=i;var d=new MutationObserver((function(){l.hasChildNodes()&&(d.disconnect(),function(){for(var t=l.getElementsByTagName("script"),e=0;e<t.length;e++){var o=t[e].innerText;new Function(o)()}var n=l.querySelectorAll("script[src]");function a(){}for(var r=0;r<n.length;r++){var i=document.createElement("script");i.src=n[r].src,i.onload=a,document.head.appendChild(i)}}())}));c.open&&d.observe(l,{childList:!0,subtree:!0})}))}));var a=this.getQueryParam("modal");a&&document.querySelectorAll("".concat(e,'[href="/?modal=').concat(a,'"]:first')).click();var r=window.location.search;r&&(r=r.substring(1),document.querySelectorAll(e).forEach((function(t){var e=t.getAttribute("href");e+="&"+r,t.setAttribute("href",e)})))},closeModal:function(t){var e=document.body.classList.contains("modal-opened-globally");t.close(),t.setAttribute("aria-hidden","true"),this.refocusOnElement&&!e&&(document.getElementById(this.refocusOnElement).focus(),this.refocusOnElement=""),e&&document.body.classList.remove("modal-opened-globally")},initCloseDialog:function(t){var e=document.getElementById(t),o=this;e.querySelector('[data-close="dialog"]').addEventListener("click",(function(){o.closeModal(e)})),document.body.addEventListener("click",(function(n){n.target.id===t&&o.closeModal(e)})),document.addEventListener("keydown",(function(t){"Escape"===t.key&&o.closeModal(e)}))},init:function(){this.getFooterParams(),this.loadCss(),"mod"===this.footerType?this.displayModFooter():this.displayQsFooter(),this.initModalLinks()}};window.addEventListener("load",(function(){"function"==typeof window.HTMLDialogElement&&modUtils.heap("track",["HTML Dialog Element Supported"]),"IdlizeQueue"in window?window.IdlizeQueue.pushTask((function(){Footer.init()})):Footer.init()}));
2
+ //# sourceMappingURL=footer-component.min.js.map
@@ -0,0 +1,2 @@
1
+ "use strict";var geolocation={defaultLocation:null,currentLocation:{},cookieExpirationMinutes:1440,locationData:["country","state","statecode","city","zipcode"],source:"maxmind",status:"",usedSource:null,responseCollection:{},getGeolocationEndpoint:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;null===t&&(t=this.source),this.usedSource=t;var o=modUtils.getEnv();if("insurance"===t)return"https://www.nextinsure.com/listingdisplay/handlers/geo.ashx";if("maxmind"===t){var e=window.document.location.origin;return"https://geoip-js.com/geoip/v2.1/city/me?referrer=".concat(e)}var n=modUtils.getUrlParamsToObject().geo;return"https://api.".concat("production"===o?"modernize":"hilstaging",".com/v1/geo-targets?type=").concat(t,"&geoTargetConstant=").concat(n)},formatGeoResponse:function(t){var o={};if("maxmind"===this.usedSource)o={country:t.country.names.en,city:t.city.names.en,state:t.subdivisions[0].names.en,statecode:t.subdivisions[0].iso_code,zipcode:t.postal.code};else if("google"===this.usedSource){var e=t.data.canonicalName.split(",")||[];({Country:["country"],State:["state","country"],City:["city","state","country"],"Postal Code":["zipcode","state","country"],"Neighborhood-3":["neighborhood","state","country"],"Neighborhood-4":["neighborhood","city","state","country"]})["Neighborhood"===t.data.type?t.data.type+"-"+e.length:t.data.type].forEach((function(t,n){o[t]=e[n]})),o.statecode=o.statecode?o.statecode:t.data.stateCode,o.city=o.city?o.city:t.data.city}else if("bing"===this.usedSource){var n=t.data.name.split("|")||[];({Country:["country"],State:["state","country"],City:["city","state","country"],County:["county","state","country"],PostalCode:["zipcode","state","country"]})[t.data.type].forEach((function(t,e){o[t]=n[e]})),o.statecode=o.statecode?o.statecode:t.data.stateCode,o.city=o.city?o.city:t.data.city}else o=t;return o},fetchUserLocation:function(t){var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=this,n=this.getGeolocationEndpoint();fetch(n).then((function(t){return t.json()})).then((function(n){var i=e.formatGeoResponse(n);e.responseCollection[e.source]=i,i.zipcode?t(i):(e.source="maxmind",e.fetchUserLocation(t,o))})).catch((function(n){console.log(n),"google"===e.usedSource||"bing"===e.usedSource?(e.source="maxmind",e.fetchUserLocation(t,o)):"maxmind"===e.usedSource?(e.source="insurance",e.fetchUserLocation(t,o)):o(n)}))},getLocationCookie:function(){var t=modUtils.getCookie("geolocation");if(t)try{return JSON.parse(t)}catch(t){return}},isValidLocationResponse:function(t){for(var o=0;o<this.locationData.length;o++)if(!t[this.locationData[o]])return!1;return!0},setLocationCookie:function(t){var o=JSON.stringify(t);modUtils.setCookie("geolocation",o,this.cookieExpirationMinutes)},setLocationValues:function(t){var o=this;return!!this.isValidLocationResponse(t)&&(this.locationData.forEach((function(e){o.currentLocation[e]=t[e]})),this.setLocationCookie(this.currentLocation),!0)},populateGeolocationElements:function(){var t=this,o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;null===o&&(o=this.currentLocation),"United States"===o.country&&document.querySelectorAll("[data-geolocation]:not([data-geolocation-loaded])").forEach((function(e){var n=e.getAttribute("data-geolocation");if(n){Object.keys(o).forEach((function(t){if(n.includes("{".concat(t,"}"))){var e=o[t]||"";n=n.replace("{".concat(t,"}"),e)}}));["input","textarea","select"].indexOf(e.tagName.toLowerCase())>-1?e.value=n:e.innerHTML=n,"success"===t.status&&e.setAttribute("data-geolocation-loaded",!0)}}))},init:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=this,e=modUtils.getUrlParamsToObject();t&&Object.assign(this,t),e.geolocationSrc&&(o.source=e.geolocationSrc),e.msclkid?o.source="bing":e.gclid&&(o.source="google");var n=["bing","google"];n.includes(o.source)&&!e.geo&&(o.source="maxmind");var i=function(t){if(o.setLocationValues(t)){var e=new CustomEvent("geolocation.dataReady",{detail:t});if(document.dispatchEvent(e),o.status="success",o.populateGeolocationElements(),n.includes(o.source)){var i=o.source;o.source="maxmind",o.fetchUserLocation((function(){o.source=i,o.usedSource=o.source}),(function(){o.source=i,o.usedSource=o.source}))}}},a=this.getLocationCookie();a&&this.isValidLocationResponse(a)?i(a):this.fetchUserLocation(i,(function(t){o.status="error";var e=new CustomEvent("geolocation.fetchError",{detail:t});document.dispatchEvent(e),o.defaultLocation&&o.populateGeolocationElements(o.defaultLocation)}))},ready:function(){var t=new CustomEvent("geolocation.scriptLoaded");document.dispatchEvent(t)}};"undefined"!=typeof module&&void 0!==module.exports?module.exports=geolocation:geolocation.ready();
2
+ //# sourceMappingURL=geolocation.min.js.map
@@ -0,0 +1,2 @@
1
+ !function(){"use strict";var t={d:function(e,o){for(var r in o)t.o(o,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:o[r]})},o:function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r:function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};function o(){const t=Object.keys(window.modForm.opts.getVars).filter((t=>t.startsWith("vwo-test"))),e=window.modForm.opts.getVars[t];if(!t||!e)return;const o=Object.keys(window.modForm.opts.getVars).filter((t=>t.match(/v[1-9]{1,}/g)));o.length>0?o.forEach((t=>{const o=window.modForm.opts.getVars[t],r=`${e}-${t}`;o&&o.split(",").forEach((t=>{const e=document.getElementsByClassName(t)[0];e&&e.setAttribute(window.modForm.opts.vwoVariationDataAttribute,r)}))})):setTimeout((()=>{document.body.setAttribute(window.modForm.opts.vwoVariationDataAttribute,e)}),500)}t.r(e),t.d(e,{addVWOTestQueryParam:function(){return o}});var r=window;for(var n in e)r[n]=e[n];e.__esModule&&Object.defineProperty(r,"__esModule",{value:!0})}();
2
+ //# sourceMappingURL=addVWOTestQueryParam.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addVWOTestQueryParam.min.js","mappings":"yBACA,IAAIA,EAAsB,CCA1BA,EAAwB,SAASC,EAASC,GACzC,IAAI,IAAIC,KAAOD,EACXF,EAAoBI,EAAEF,EAAYC,KAASH,EAAoBI,EAAEH,EAASE,IAC5EE,OAAOC,eAAeL,EAASE,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAG3E,ECPAH,EAAwB,SAASS,EAAKC,GAAQ,OAAOL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,EAAO,ECCtGV,EAAwB,SAASC,GACX,oBAAXa,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeL,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeL,EAAS,aAAc,CAAEe,OAAO,GACvD,G,KCFO,SAASC,IACf,MAAMC,EAAeb,OAAOc,KAAKC,OAAOC,QAAQC,KAAKC,SAASC,QAAOC,GAASA,EAAMC,WAAW,cACzFC,EAAoBP,OAAOC,QAAQC,KAAKC,QAAQL,GAEtD,IAAMA,IAAgBS,EACrB,OAGD,MAAMC,EAAevB,OAAOc,KAAKC,OAAOC,QAAQC,KAAKC,SAASC,QAAOC,GAASA,EAAMI,MAAM,iBAGtFD,EAAaE,OAAS,EACzBF,EAAaG,SAAQC,IACpB,MAAMC,EAAab,OAAOC,QAAQC,KAAKC,QAAQS,GACzCE,EAAsB,GAAGP,KAAqBK,IAEhDC,GACHA,EAAWE,MAAM,KAAKJ,SAAQK,IAC7B,MAAMC,EAAUC,SAASC,uBAAuBH,GAAW,GAEvDC,GACHA,EAAQG,aAAapB,OAAOC,QAAQC,KAAKmB,0BAA2BP,EACrE,GAEF,IAGDQ,YAAW,KACVJ,SAASK,KAAKH,aAAapB,OAAOC,QAAQC,KAAKmB,0BAA2Bd,EAAkB,GAC1F,IAEL,C","sources":["webpack://mod-form/webpack/bootstrap","webpack://mod-form/webpack/runtime/define property getters","webpack://mod-form/webpack/runtime/hasOwnProperty shorthand","webpack://mod-form/webpack/runtime/make namespace object","webpack://mod-form/./lib/helpers/trackers/addVWOTestQueryParam.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n* Adding vwo-test parameter value (HSMERCH-XXXX) to the body\n* Adding vwo-test parameter value (HSMERCH-XXXX) with version to the sections for multi-variate test\n*/\nexport function addVWOTestQueryParam() {\n\tconst vwoTestParam = Object.keys(window.modForm.opts.getVars).filter(param => param.startsWith('vwo-test'));\n\tconst vwoTestParamValue = window.modForm.opts.getVars[vwoTestParam];\n\n\tif (!(vwoTestParam && vwoTestParamValue)) {\n\t\treturn;\n\t}\n\n\tconst testVersions = Object.keys(window.modForm.opts.getVars).filter(param => param.match(/v[1-9]{1,}/g));\n\n\t// Multivariate Test\n\tif (testVersions.length > 0) {\n\t\ttestVersions.forEach(version => {\n\t\t\tconst classLists = window.modForm.opts.getVars[version];\n\t\t\tconst elementAttributeVal = `${vwoTestParamValue}-${version}`;\n\n\t\t\tif (classLists) {\n\t\t\t\tclassLists.split(',').forEach(className => {\n\t\t\t\t\tconst element = document.getElementsByClassName(className)[0];\n\n\t\t\t\t\tif (element) {\n\t\t\t\t\t\telement.setAttribute(window.modForm.opts.vwoVariationDataAttribute, elementAttributeVal);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsetTimeout(() => {\n\t\t\tdocument.body.setAttribute(window.modForm.opts.vwoVariationDataAttribute, vwoTestParamValue);\n\t\t}, 500);\n\t}\n}\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","addVWOTestQueryParam","vwoTestParam","keys","window","modForm","opts","getVars","filter","param","startsWith","vwoTestParamValue","testVersions","match","length","forEach","version","classLists","elementAttributeVal","split","className","element","document","getElementsByClassName","setAttribute","vwoVariationDataAttribute","setTimeout","body"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ !function(){"use strict";var e={d:function(t,o){for(var i in o)e.o(o,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:o[i]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r:function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{additionalOptions:function(){return o}});const o={isSubmitting:!1,isPhoneValid:!1,isZipValid:!1,areLeadTokenScriptsLoaded:!1,loadedScripts:[],optedIn:!1,inlineZip:!1,mutationObserverTarget:document.body,mutationObserverConfig:{attributes:!0},projexURL:null,redirectStart:null,zipEditControlCls:".zip-control__edit, .change-zip-control, .step__city-state, .form__city-state, .zip-control, .form-group__city-state",zipEditInput:'input[name="zip1"], input[name="inertZip"]',zipControlButton:document.querySelector(".zip-control__button"),retryZipValidation:!1,preventDuplicateSubmission:!1,getTime:(new Date).getTime(),radioButtonClickedByMouse:!1,includeDuplicateSubmissionExperience:!0,homeownerLeadConversionProps:{}};var i=window;for(var n in t)i[n]=t[n];t.__esModule&&Object.defineProperty(i,"__esModule",{value:!0})}();
2
+ //# sourceMappingURL=additionalOpts.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"additionalOpts.min.js","mappings":"yBACA,IAAIA,EAAsB,CCA1BA,EAAwB,SAASC,EAASC,GACzC,IAAI,IAAIC,KAAOD,EACXF,EAAoBI,EAAEF,EAAYC,KAASH,EAAoBI,EAAEH,EAASE,IAC5EE,OAAOC,eAAeL,EAASE,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAG3E,ECPAH,EAAwB,SAASS,EAAKC,GAAQ,OAAOL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,EAAO,ECCtGV,EAAwB,SAASC,GACX,oBAAXa,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeL,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeL,EAAS,aAAc,CAAEe,OAAO,GACvD,G,4DCNO,MAAMC,EAAoB,CAEhCC,cAAc,EACdC,cAAc,EACdC,YAAY,EACZC,2BAA2B,EAC3BC,cAAe,GACfC,SAAS,EAETC,WAAW,EACXC,uBAAwBC,SAASC,KACjCC,uBAAwB,CACvBC,YAAY,GAEbC,UAAW,KACXC,cAAe,KACfC,kBAAmB,uHACnBC,aAAc,6CACdC,iBAAkBR,SAASS,cAAc,wBACzCC,oBAAoB,EACpBC,4BAA4B,EAC5BC,SAAS,IAAIC,MAAOD,UACpBE,2BAA2B,EAC3BC,sCAAsC,EACtCC,6BAA8B,CAAC,G","sources":["webpack://mod-form/webpack/bootstrap","webpack://mod-form/webpack/runtime/define property getters","webpack://mod-form/webpack/runtime/hasOwnProperty shorthand","webpack://mod-form/webpack/runtime/make namespace object","webpack://mod-form/./lib/config/additionalOpts.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export const additionalOptions = {\n\t// set true before sending data to server and back to false when response is returned from server\n\tisSubmitting: false,\n\tisPhoneValid: false,\n\tisZipValid: false,\n\tareLeadTokenScriptsLoaded: false,\n\tloadedScripts: [],\n\toptedIn: false,\n\t// set true if you want inline validation on input with zip. be warned this causes many edge cases you will need to fix\n\tinlineZip: false,\n\tmutationObserverTarget: document.body,\n\tmutationObserverConfig: {\n\t\tattributes: true\n\t},\n\tprojexURL: null,\n\tredirectStart: null,\n\tzipEditControlCls: '.zip-control__edit, .change-zip-control, .step__city-state, .form__city-state, .zip-control, .form-group__city-state',\n\tzipEditInput: 'input[name=\"zip1\"], input[name=\"inertZip\"]',\n\tzipControlButton: document.querySelector('.zip-control__button'),\n\tretryZipValidation: false,\n\tpreventDuplicateSubmission: false,\n\tgetTime: new Date().getTime(),\n\tradioButtonClickedByMouse: false,\n\tincludeDuplicateSubmissionExperience: true,\n\thomeownerLeadConversionProps: {}\n};\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","additionalOptions","isSubmitting","isPhoneValid","isZipValid","areLeadTokenScriptsLoaded","loadedScripts","optedIn","inlineZip","mutationObserverTarget","document","body","mutationObserverConfig","attributes","projexURL","redirectStart","zipEditControlCls","zipEditInput","zipControlButton","querySelector","retryZipValidation","preventDuplicateSubmission","getTime","Date","radioButtonClickedByMouse","includeDuplicateSubmissionExperience","homeownerLeadConversionProps"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ !function(){"use strict";var e={202:function(e,o,t){function n(e){const o=window.modForm.opts.observedTargetNode,t=window.modForm.opts.observerConfig;new MutationObserver((function(o,t){for(const n of o)"attributes"===n.type&&n.target.hasAttribute(window.modForm.opts.vwoVariationDataAttribute)&&n.target.getAttribute(window.modForm.opts.vwoVariationDataAttribute).indexOf(window.modForm.opts.vwoVariationDataAttributeValue)>-1&&(e(),t.disconnect())})).observe(o,t)}t.d(o,{K:function(){return n}})},3389:function(e,o,t){t.d(o,{additionalOptions:function(){return n}});const n={isSubmitting:!1,isPhoneValid:!1,isZipValid:!1,areLeadTokenScriptsLoaded:!1,loadedScripts:[],optedIn:!1,inlineZip:!1,mutationObserverTarget:document.body,mutationObserverConfig:{attributes:!0},projexURL:null,redirectStart:null,zipEditControlCls:".zip-control__edit, .change-zip-control, .step__city-state, .form__city-state, .zip-control, .form-group__city-state",zipEditInput:'input[name="zip1"], input[name="inertZip"]',zipControlButton:document.querySelector(".zip-control__button"),retryZipValidation:!1,preventDuplicateSubmission:!1,getTime:(new Date).getTime(),radioButtonClickedByMouse:!1,includeDuplicateSubmissionExperience:!0,homeownerLeadConversionProps:{}}},3765:function(e,o,t){function n(){const e=Object.keys(window.modForm.opts.getVars).filter((e=>e.startsWith("vwo-test"))),o=window.modForm.opts.getVars[e];if(!e||!o)return;const t=Object.keys(window.modForm.opts.getVars).filter((e=>e.match(/v[1-9]{1,}/g)));t.length>0?t.forEach((e=>{const t=window.modForm.opts.getVars[e],n=`${o}-${e}`;t&&t.split(",").forEach((e=>{const o=document.getElementsByClassName(e)[0];o&&o.setAttribute(window.modForm.opts.vwoVariationDataAttribute,n)}))})):setTimeout((()=>{document.body.setAttribute(window.modForm.opts.vwoVariationDataAttribute,o)}),500)}t.d(o,{l:function(){return n}})},3898:function(e,o,t){t.d(o,{initQuadTransform:function(){return s}});var n=t(6306);async function s(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],o=!1;const t=(0,n.getQueryParamsFromSessionStorage)()||window.modUtils.getUrlParamsToObject(),s=t.hasOwnProperty("quadlink"),i=t.hasOwnProperty("tagID"),r={message:""},a=["ad","sp","fb","mt","adposition","dev","gclid","ki","sq","fb_ad_id","fb_adset_id","fb_campaign_id","placement","PartnerSourceID","sub2_id","PublisherSubID"];if(Object.keys(t).some((function(e){return window.modForm.opts.qsParams.includes(e.toUpperCase())}))){for(const e in t)window.modForm.opts.qsParams.includes(e.toUpperCase())&&void 0!==t[e]&&(window.modForm.opts.quadLinkParams[e.toUpperCase()]=t[e]);(0,n.heapIdentify)();const e=[window.modForm.opts.quadLinkParams];t&&t.AffiliateKey&&e.push({AffiliateKey:t.AffiliateKey}),(0,n.addToHeapEventAndUserProperties)(e),window.modForm.opts.phoneAssignmentConfig.showPhoneAssignmentNumber&&(0,n.getPhoneAssignmentData)(window.modForm.opts.quadLinkParams)}else{let c="",d="";i?(c=t.tagID,d="tagID"):(c=s?t.quadlink:(0,n.getDefaultQuad)(window.modForm.opts.vertical),d=s?"quadlink":"defaultQuad"),window.modForm.opts.quadLinkData[d]=c;for(const e in t)a.includes(e)&&(window.modForm.opts.quadLinkData[e]=t[e],o=!0);if(""!==c){if(window.modUtils.getLandingPage().includes("bestcompany")&&window.modUtils.getLandingPage().includes("find-a-pro")){const e=document.querySelector('input[name="quadlink"]'),t=(0,n.getDefaultQuad)(n.defaultQuadLinkValues["bestcompany.com"].findapro).replace("&default=yes;","");e&&(e.value=t),window.modForm.opts.quadLinkData.quadlink?window.modForm.opts.quadLinkData.quadlink=t:o&&(window.modForm.opts.quadLinkData.defaultQuad=t)}e?"IdlizeQueue"in window?(r.message="initQuadTransform() called on DOMContentLoaded with IdlizeQueue",window.IdlizeQueue.pushTask((()=>{(0,n.transformQuadlink)()}))):((0,n.transformQuadlink)(),r.message="initQuadTransform() called on DOMContentLoaded without IdlizeQueue"):((0,n.transformQuadlink)(),r.message="initQuadTransform() called on window.onload")}window.modUtils.heap("track",["Quad Transform",r])}}},5895:function(e,o,t){t(6306)},6306:function(e,o,t){t.d(o,{addToHeapEventAndUserProperties:function(){return S},addVWOTestQueryParam:function(){return g.l},appendFormInput:function(){return c},defaultQuadLinkValues:function(){return h},getDefaultQuad:function(){return b},getDefaultQuadByDomain:function(){return y},getHeapSessionIdCookieData:function(){return f},getPhoneAssignmentData:function(){return l.getPhoneAssignmentData},getQSApiDomain:function(){return v},getQueryParamsFromSessionStorage:function(){return w},heapIdentify:function(){return F},initDuplicateSubmissionExperience:function(){return s},initQuadTransform:function(){return k.initQuadTransform},observeVWOVariation:function(){return m.K},populateFormWithZipData:function(){return i},populateInput:function(){return d},populateLocationFieldsDynamically:function(){return r},prepopFormFromURL:function(){return a},saveUserInfoToCookie:function(){return p},transformQuadlink:function(){return u}});var n=t(9693);function s(e){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:".swiper-slide-active .step-inner";const t=window.modForm.opts.form.querySelector(o),n=document.querySelectorAll(".form-btns, .form-bts, .controls, .findpros-form__btns"),s=document.querySelector(".form-tcpa"),i=window.modForm.opts.landingPage.includes("bestcompany")?"https://bestcompany.com/":"https://modernize.com/";let r=e.resultsPage?e.resultsPage:i;r.indexOf(window.modForm.opts.suppressConversionPixelParam)<=-1&&(r+=(r.indexOf("?")<0?"?":"&")+window.modForm.opts.suppressConversionPixelParam),window.modForm.opts.form.classList.add(window.modForm.opts.formLoadingCls);window.modUtils.getCookie("duplicateSubmitFireCnvrsnPxl")||r.indexOf("ThankYou")>-1&&void 0!==window.dataLayer&&window.dataLayer.push({event:"Lead Conversion Failed Redirects"}),window.modUtils.setCookie("duplicateSubmitFireCnvrsnPxl",!0),window.modForm.preventDuplicateSubmission=!0,setTimeout((function(){window.modForm.opts.backButtons&&window.modForm.opts.backButtons.forEach((function(e){e.style.display="none"})),window.modForm.opts.progressBar&&window.modForm.opts.progressBar.forEach((function(e){e.style.display="none"})),n&&n.forEach((function(e){e.style.display="none"})),s&&(s.style.display="none"),window.modForm.opts.form.querySelector(".swiper-wrapper").style.alignItems="center",window.modForm.opts.form.classList.remove(window.modForm.opts.formLoadingCls);const e=window.modForm.opts.isLeadWidget?"_blank":"_self";t.innerHTML='<div class="duplicate-submission" style="background-color:#fff;display:flex; flex-direction:column;justify-content:center;align-items:center;min-height:390px;padding:40px 10px;text-align:center;"><h3 style="color:#545253;font-size:22px;font-weight:bold;margin:30px auto 0;">Welcome Back!</h3><p style="color:#545253;display:block;font-size:15px;font-weight:400;line-height:1.5;margin:20px auto 30px;">It looks like you just submitted your <br>information a moment ago.</p><a class="btn '+(window.modForm.opts.addAccessibilityUpdates?"btn--primary":"btn-primary")+'" id="double-submission-fallback-button" href="'+r+'" target="'+e+'" style="max-width:280px;line-height: normal;width:100%;display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 14px 0px 15px;margin:0 auto 30px;min-width:unset"><span class="btn__text" style="visibility:visible;font-size: 18px">See Your Matches</span></a></div>',window.modUtils.heap("track",["Showing Duplicate Submission Experience - on Step One",{resultsPage:r}])}),300)}t(5895);function i(e){["city","state"].forEach((function(o){e[o]&&d(o,e[o])})),document.querySelectorAll('input[name="zip"], input[name="zip1"]').forEach((function(o){o.value=e.zip}))}function r(e){window.modForm.opts.userLocation=e.city+", "+e.state;const o=document.querySelectorAll(".user-location:not(.reviews-block .user-location)");o.length&&o.forEach((function(e){e&&(e.innerHTML=window.modForm.opts.userLocation)})),document.querySelector(".user-city")&&(document.querySelector(".user-city").innerHTML=e.city)}function a(){Object.keys(window.modForm.opts.getVars).forEach((function(e){window.modForm.opts.ignoreQueryParams.includes(e)||c(e,window.modForm.opts.getVars[e]),"zip"===e&&(c("zip1",window.modForm.opts.getVars[e]),c("inertZip",window.modForm.opts.getVars[e])),window.modForm.opts.prepopulateUserInfo&&p(e,window.modForm.opts.getVars[e])})),void 0!==window.modForm.opts.getVars.zip&&(window.modForm.opts.prepopulateUserInfo||(0,n.isZipCodeValid)(window.modForm.opts.getVars.zip,(function(e){e.success&&e.data&&(i(e.data),r(e.data),"function"==typeof window.modForm.opts.zipCodeValidated&&window.modForm.opts.zipCodeValidated(e.data))})))}t(8352);function c(e,o,t){if(window.modForm.opts.form.querySelector('input[name="'+e+'"]'))t||d(e,o);else{const t=document.createElement("input");t.type="hidden",t.id=e,t.name=e,t.value=o,window.modForm.opts.form.appendChild(t)}}function d(e,o){const t=window.modForm.opts.form.querySelector('input[name="'+e+'"]');if(t)if("INPUT"===t.tagName&&"radio"===t.type&&t.value===o)t.setAttribute("checked",!0);else if("INPUT"===t.tagName&&"checkbox"===t.type)t.setAttribute("checked",!0);else if("SELECT"===t.tagName)t.querySelector('option[value="'+o+'"]').setAttribute("selected",!0);else if(t.value=o,"zip"===e){const e=window.modForm.opts.form.querySelector('input[name="zip1"]');e&&(e.value=o)}}var m=t(202);var l=t(8357);function u(){let e={};const o=new XMLHttpRequest,t=v()+window.modForm.opts.trafficDetailsApi;o.open("POST",t),o.setRequestHeader("Content-Type","application/json"),o.send(JSON.stringify(window.modForm.opts.quadLinkData)),o.addEventListener("load",(async function(){if(this.response&&(e={...e,...JSON.parse(this.response)},4===this.readyState&&200===this.status)){for(const o in e)window.modForm.opts.qsParams.includes(o)&&e.hasOwnProperty(o)&&(window.modForm.opts.quadLinkParams[o]=e[o]);window.modForm.opts.phoneAssignmentConfig.showPhoneAssignmentNumber&&(0,l.getPhoneAssignmentData)(e),F(),window.modForm.opts.quadLinkHasBeenTransformed=!0,S([window.modForm.opts.quadLinkParams,{AffiliateKey:e.AffiliateKey}])}})),o.addEventListener("error",(function(){console.error("Something went wrong")}))}function p(e,o){e.toLowerCase().includes("zip")?window.modForm.userObj.zip=o:window.modForm.userObj[e]=o,window.modUtils.setCookie("userInfo",JSON.stringify(window.modForm.userObj),526740)}function f(){let e,o,t=null,n=null,s="";if(window.modUtils.heapCookie&&(n=window.modUtils.heapCookieData.sessionId,t=window.modUtils.getCookie(n)),null!==t){const n=JSON.parse(decodeURIComponent(t));e=n.initialTimestamp,o=e+36e5,s=window.modForm.opts.isFrontdoorExclusiveMatch?decodeURIComponent(n.resultsPage):n.resultsPage}return{heapSessionSubmitCookie:t,heapSessionId:n,initialTimestamp:e,expireInOneHour:o,resultsPage:s}}function w(){const e=window.sessionStorage?window.sessionStorage.getItem("queryParams"):null,o=e?JSON.parse(e):null;return o&&(window.modForm.opts.getVars=o,a()),o}var g=t(3765);const h={"modernize.com":{medicalalerts:{c:"1677934",s:"31135",f:"202109081618210"},showers:{c:"1683621",s:"3086",f:"202309141602090"},default:{c:"1679227",s:"29914",f:"202202161521310"}},"modernizesolar.com":{c:"1679227",s:"29914",f:"202202161521310"},"modernize-solar.com":{c:"1679227",s:"29914",f:"202202161521310"},"go.jacuzzi.com":{c:"1674074",s:"3086",f:"202011031614490"},"m.go.jacuzzi.com":{c:"1674074",s:"3086",f:"202011031614490"},"americanhomewarranty.org":{c:"1673835",s:"3086",f:"202010191645170"},"m.americanhomewarranty.org":{c:"1673835",s:"3086",f:"202010191645170"},"homewindowprices.org":{c:"1673838",s:"3086",f:"202010191645180"},"m.homewindowprices.org":{c:"1673838",s:"3086",f:"202010191645180"},"mygutterguards.com":{c:"1673836",s:"3086",f:"202010191645180"},"m.mygutterguards.com":{c:"1673836",s:"3086",f:"202010191645180"},"tophottubs.org":{c:"1673840",s:"3086",f:"202010191645190"},"m.tophottubs.org":{c:"1673840",s:"3086",f:"202010191645190"},"americanstandardwalkinbaths.com":{c:"1665214",s:"28354",f:"201906181327550"},"m.americanstandardwalkinbaths.com":{c:"1665215",s:"28354",f:"201906181327560"},"bathandshower.org":{c:"1667476",s:"26393",f:"201910011622070"},"m.bathandshower.org":{c:"1667460",s:"26401",f:"201910011622030"},"bathandshowerpros.com":{c:"1658267",s:"26393",f:"201809211357520"},"m.bathandshowerpros.com":{c:"1658263",s:"26401",f:"201809211352160"},"quotes.bathwraps.com":{c:"1660429",s:"26393",f:"201812121510250"},"m.bathwraps.com":{c:"1660426",s:"26401",f:"201812121509080"},"craftmaticbeds.com":{c:"655234",s:"3086",f:"201008201638230"},"emedicalalerts.com":{c:"1647425",s:"26393",f:"201711071755250"},"m.emedicalalerts.com":{c:"1647405",s:"26401",f:"201711071755190"},"flooringpricer.com":{c:"1668109",s:"26393",f:"201910231539300"},"m.flooringpricer.com":{c:"1668101",s:"26401",f:"201910231539280"},"findyourwindows.com":{c:"1654347",s:"26393",f:"201805111614390"},"m.findyourwindows.com":{c:"1654331",s:"26401",f:"201805111612300"},"homesecurityprices.org":{c:"1658310",s:"26393",f:"201809211526510"},"m.homesecurityprices.org":{c:"1658305",s:"26401",f:"201809211509250"},"quotes.improvementcenter.com":{bathrooms:{c:"1652517",s:"26393",f:"201803221337450"},gutters:{c:"1614214",s:"3086",f:"201608311104250"},stairlifts:{c:"1658469",s:"26393",f:"201809260926260"},walkintubs:{c:"1647588",s:"26393",f:"201711081408530"}},"bathrooms.improvementcenter.com":{c:"1652509",s:"26401",f:"201803221337420"},"gutters.improvementcenter.com":{c:"1635550",s:"16479",f:"201703010604120"},"stairlifts.improvementcenter.com":{c:"1658465",s:"26401",f:"201809260926240"},"walkintubs.improvementcenter.com":{c:"1647564",s:"26401",f:"201711081408460"},"kitchensandcabinets.com":{c:"1652648",s:"26393",f:"201803261349020"},"m.kitchensandcabinets.com":{c:"1652624",s:"26401",f:"201803261348550"},"leafgutterpros.com":{c:"1685217",s:"3086",f:"202403271348130"},"lifemedicalalerts.com":{c:"1647427",s:"26393",f:"201711071755260"},"m.lifemedicalalerts.com":{c:"1647407",s:"26401",f:"201711071755200"},"go.medicalguardian.com":{c:"1654232",s:"26393",f:"201805101622250"},"mysolarcost.com":{c:"1645537",s:"3086",f:"201709221027450"},"m.mysolarcost.com":{c:"1645592",s:"16479",f:"201709221044340"},"roofingcosts.org":{c:"1673843",s:"3086",f:"202010191645200"},"m.roofingcosts.org":{c:"1673843",s:"3086",f:"202010191645200"},"securitypricer.com":{c:"1673856",s:"3086",f:"202010191645230"},"m.securitypricer.com":{c:"1673856",s:"3086",f:"202010191645230"},"walkinbathtubs.org":{c:"1673846",s:"3086",f:"202010191645210"},"m.walkinbathtubs.org":{c:"1673846",s:"3086",f:"202010191645210"},"walkintubprices.org":{c:"1673842",s:"3086",f:"202010191645200"},"m.walkintubprices.org":{c:"1673842",s:"3086",f:"202010191645200"},"walkintubforseniors.com":{c:"1647590",s:"26393",f:"201711081408540"},"m.walkintubforseniors.com":{c:"1647566",s:"26401",f:"201711081408470"},"plans.selecthomewarranty.com":{c:"1674075",s:"3086",f:"202011031614490"},"plumbingservicecosts.com":{c:"1684673",s:"3086",f:"202402061224360"},"m.plans.selecthomewarranty.com":{c:"1674075",s:"3086",f:"202011031614490"},"powerhomesolarpanels.com":{c:"1676761",s:"3086",f:"202105251631450"},"hvacpros.org":{c:"1670084",s:"26393",f:"202002181631370"},"m.hvacpros.org":{c:"1670076",s:"26401",f:"202002181625140"},"homewarrantyplans.org":{c:"1668109",s:"26393",f:"201910231539300"},"m.homewarrantyplans.org":{c:"1667462",s:"26401",f:"201910011622030"},"gutterguardcovers.com":{c:"1679714",s:"3086",f:"202205131023370"},"windowreplacementcost.org":{c:"1679716",s:"3086",f:"202205131023370"},"stairliftchairs.org":{c:"1679715",s:"3086",f:"202205131023370"},"roofingreplacementcost.com":{c:"1680434",s:"3086",f:"202208031707470"},"furnacereplacementcosts.org":{c:"1680996",s:"3086",f:"202209290958330"},"solarpanelpricing.com":{c:"1682247",s:"3086",f:"202302031201300"},"kitchencabinetrefacing.org":{c:"1680433",s:"3086",f:"202208031707460"},"airconditioningpros.org":{c:"1682333",s:"3086",f:"202302141453580"},"treetrimmingservicepros.com":{c:"1682327",s:"3086",f:"202302141447090"},"compareflooringprices.com":{c:"1683170",s:"3086",f:"202306161210090"},"sidingreplacementcost.com":{c:"1683497",s:"3086",f:"202308211539090"},"adt-savings.com":{c:"1683323",s:"31135",f:"202307211631550"},"topgutterpros.com":{c:"1683689",s:"3086",f:"202309251220170"},"topremodelingpros.com":{c:"1683689",s:"3086",f:"202309251220170"},"powerhomedeals.com":{roofing:{c:"1683681",s:"3086",f:"202309251210110"},windows:{c:"1683686",s:"3086",f:"202309251219100"},siding:{c:"1683683",s:"3086",f:"202309251214450"}},"bestcompany.modernize.com":{homewarranty:{c:"1684628",s:"34486",f:"202401301751220"},medicalalertsystems:{c:"1684826",s:"34486",f:"202402151655050"},homesecurity:{c:"1684824",s:"34486",f:"202402151653100"},solar:{c:"1684620",s:"34486",f:"202401301731070"},watersofteners:{c:"1684830",s:"34486",f:"202402141206230"},plumbing:{c:"1684766",s:"34486",f:"202402141115530"},treeservices:{c:"1684764",s:"34486",f:"202402141113540"},newwindows:{c:"1684828",s:"34486",f:"202402151656490"},walkintubs:{c:"1684760",s:"34486",f:"202402141109100"},stairlifts:{c:"1684758",s:"34486",f:"202402141106430"},siding:{c:"1684756",s:"34486",f:"202402141103210"},roofing:{c:"1684754",s:"34486",f:"202402141059590"},hvac:{c:"1684752",s:"34486",f:"202402141057220"},hottubs:{c:"1684750",s:"34486",f:"202402141054450"},gutters:{c:"1684748",s:"34486",f:"202402141051430"},flooring:{c:"1684746",s:"34486",f:"202402141049110"},doors:{c:"1684744",s:"34486",f:"202402141046440"},cabinets:{c:"1684822",s:"34486",f:"202402151651120"},bathroomremodel:{c:"1684820",s:"34486",f:"202402151646230"},findapro:{c:"1684895",s:"3086",f:"202402231339130"}},"bestcompany.com":{homewarranty:{c:"1684628",s:"34486",f:"202401301751220"},medicalalertsystems:{c:"1684826",s:"34486",f:"202402151655050"},homesecurity:{c:"1684824",s:"34486",f:"202402151653100"},solar:{c:"1684620",s:"34486",f:"202401301731070"},watersofteners:{c:"1684830",s:"34486",f:"202402141206230"},plumbing:{c:"1684766",s:"34486",f:"202402141115530"},treeservices:{c:"1684764",s:"34486",f:"202402141113540"},newwindows:{c:"1684828",s:"34486",f:"202402151656490"},walkintubs:{c:"1684760",s:"34486",f:"202402141109100"},stairlifts:{c:"1684758",s:"34486",f:"202402141106430"},siding:{c:"1684756",s:"34486",f:"202402141103210"},roofing:{c:"1684754",s:"34486",f:"202402141059590"},hvac:{c:"1684752",s:"34486",f:"202402141057220"},hottubs:{c:"1684750",s:"34486",f:"202402141054450"},gutters:{c:"1684748",s:"34486",f:"202402141051430"},flooring:{c:"1684746",s:"34486",f:"202402141049110"},doors:{c:"1684744",s:"34486",f:"202402141046440"},cabinets:{c:"1684822",s:"34486",f:"202402151651120"},bathroomremodel:{c:"1684820",s:"34486",f:"202402151646230"},findapro:{c:"1684895",s:"3086",f:"202402231339130"}},"topsolarcompanies.com":{c:"1684497",s:"34399",f:"202401241741100"},"besthomesecuritycompanys.com":{c:"1684495",s:"34399",f:"202401241738220"},"homewatersystemspros.com":{c:"1684679",s:"3086",f:"202402061238410"},"foundationandbasements.com":{c:"1685478",s:"3086",f:"202405021159440"},"topinsulationpros.com":{c:"1686466",s:"3086",f:"202408211814210"},"getwaterdamagehelp.com":{c:"1686734",s:"3086",f:"202409231230430"},"callrestorationpro.com":{"mold-damage":{c:"1687036",s:"3086",f:"202410171155570"},"water-damage":{c:"1687043",s:"3086",f:"202410171202560"},sewage:{c:"1687040",s:"3086",f:"202410171201130"},"fire-smoke-damage":{c:"1687033",s:"3086",f:"202410171150310"}},"localgaragedoorpros.org":{c:"1687046",s:"3086",f:"202410171204190"},"dabellaroofers.com":{c:"1687219",s:"35730",f:"202411010712090"},"callplumber247.com":{c:"1687378",s:"3086",f:"202411151459290"},"localbathremodelcost.com":{c:"1687744",s:"3086",f:"202501071443360"},"arsairconditioning.com":{c:"1687884",s:"35730",f:"202501171139360"},"leafguardpros.com":{c:"1687885",s:"35730",f:"202501171141140"},"homepromobilitystairlifts.com":{c:"1688047",s:"35730",f:"202502061236280"},"wholehomewatersystems.org":{c:"1688120",s:"3086",f:"202502181424190"},"basementsystemspros.com":{c:"1688318",s:"35730",f:"202503022357110"},"homefoundationrepairpros.com":{c:"1685483",s:"3086",f:"202405021205360"}};function b(e){let o,t,n,s="";const i=y();return"object"==typeof e&&null!==e?({c:o,s:t,f:n}=e):i&&(o="object"==typeof i.c?i.c[e]:i.c,({s:t,f:n}=i)),s=`http://o1.qnsr.com/cgi/r?;n=203;c=${o};s=${t};x=7936;f=${n};u=j;z=TIMESTAMP;&default=yes;`,s}function y(){const e=window.modForm.opts.websiteName.replace(/(qa\.?|staging\.?|www\.?)/g,"");if(e.includes("bestcompany")){let o=window.modForm.opts.landingPage.split("/");return o=o[2].replace(/-/g,""),h[e][o]}if(e.indexOf("quotes.improvementcenter.com")>-1||e.indexOf("callrestorationpro.com")>-1||e.indexOf("modernize.com")>-1||e.indexOf("powerhomedeals.com")>-1){let o=window.modForm.opts.landingPage.replace(/\/$/g,"").replace(/^(?:[^/]*\/)+/g,"");return o=void 0!==h[e][o]?o:"default",h[e][o]}return h[e]}function v(){let e="https://hsleadpost1.quinstage.com/";return"production"===window.modUtils.getEnv()&&(e="https://hs.leadpost.net/"),e}function F(){window.heap?void 0!==window.modForm.opts.quadLinkParams.CLK&&("production"===window.modUtils.getEnv()?"heap"in window&&null===window.heap.identity?window.Modalytics.heap("identify",[window.modForm.opts.quadLinkParams.CLK]):window.heapListenerInitialized||(window.addEventListener("heapCookieResolved",(function(){window.Modalytics.heap("identify",[window.modForm.opts.quadLinkParams.CLK])}),{once:!0}),window.heapListenerInitialized=!0):window.Modalytics.heap("identify",[window.modForm.opts.quadLinkParams.CLK])):document.addEventListener("heap.loaded",(function(){F()}))}var k=t(3898);const S=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const o=function(e){e&&Array.isArray(e)&&e.length&&e.forEach((function(e){e&&(window.Modalytics.heap("addEventProperties",e),window.Modalytics.heap("addUserProperties",e))}))};window.heap?o(e):document.addEventListener("heap.loaded",(function(){o(e)}))}},7632:function(e,o,t){t.r(o),t.d(o,{opts:function(){return n}});const n={vertical:null,form:document.getElementById("form"),formId:"form",formLoadingCls:"form--loading",formSubmittingCls:"form--submitting",formSubmittedCls:"form--submit-done",formSubmitErrorCls:"form--submit-error",formInProgressCls:"form-in-progress",stepsSelector:'[data-bind="step"]',stepActiveCls:"step--active",backButtons:document.querySelectorAll('.back-btn, .btn-back, [data-btn="back"]'),progressBar:document.querySelectorAll(".progress-bar"),modQuoteButtonWrapper:document.querySelectorAll(".form-btns"),isFormLoading:!1,formElemsSelectors:{},formElemsSelectorsDefaults:{tcpaCopy:"#tcpa-copy",maskedPhoneFields:'input[name="homePhone"]',maskedEinFields:'input[name="ein"]',numericsOnlyFields:'input[name="zip"], input[name="zip1"], input[name="companyZip"]',addressField:'input[name="address"]',stateField:'input[name="state"]',cityField:'input[name="city"]',zip1Field:'input[name="zip1"]',zipField:'input[name="zip"]',repairField:'input[name="repair"]',hvacWouldReplaceBlock:"#hvac-would-replace-block",hvacSystemTypeField:'input[name="hvacSystemType"]',hvacFuelTypeBlock:"#hvac-fuel-type-block",utilityProviderWrapper:"#utility-provider-wrapper"},hvacSystemTypesWithFuel:["Central Heating","Boiler"],activeInputs:".step.swiper-slide-active input[type=text], .step.swiper-slide-active input[type=tel], .step.swiper-slide-active input[type=email], .step.swiper-slide-active textarea, .step.swiper-slide-active input[type=radio]",fieldErrorCls:"has-error",errorParentCls:"parent-error",gaTracker:"main",thankyouPage:"/thankyou/",landingPage:window.location.protocol+"//"+window.location.host+window.location.pathname+(window.location.search?window.location.search:""),hashStepTracking:!1,useModApi:!1,useQSApi:!1,useFormsServiceApi:!1,userObj:{},formSwiperInstance:"",prepopulateUserInfo:!1,useGetMotivationParam:!0,useAutofill:!1,useSmoothScrolling:!1,hasZipChange:!1,trackZip1ChangeDynamically:!1,trackZipChangeDynamically:!1,useTooltips:!1,showSecureText:!1,useObserveVWOVariation:!1,observedTargetNode:document.body,observerConfig:{attributes:!0},vwoVariationDataAttribute:"data-vwo-test",observeVWOVariationCallback:function(){},vwoVariationDataAttributeValue:"",secureTextStepsSelector:[".step--personalInfo",".step--contactInfo"],secureTextPosition:"below-cta",useEncryptedSecureText:!1,isLoaderLoaded:!1,isLoaderAssetsLoaded:!1,showLoadingOverlay:!1,showRedirectOverlay:!1,appendOverlayToElem:document.getElementById("form"),ignoreDuplicateSubmissionBlocker:!1,hvacVerticalName:"hvac",hvacRepairFieldValue:"yes",addAccessibilityUpdates:!1,useGlobalInitCarousel:!1,isOrganicPreferredMatch:!1,widgetHashStepTracking:!1,formSubmittingCallback:null,formSubmitSuccessCallback:null,formSubmitErrorCallback:null,stepChangingCallback:null,stepChangedCallback:null,zipCodeValidated:null,zip1FieldValidated:null,getConsentListingCallback:null,shouldSuppressConversionPixel:!1,suppressConversionPixelParam:"cnvrsnpxl=n",useStepNameHash:!1,delayQuadTransformation:!1,isFirePixelTrue:!1,firePixelParam:"firepxl=y",isSharedMatch:!1,eCommerceVendorKeys:{shared:{frontdoor:"33097210"},exclusive:{airo:"31194410",angi:"31816410",cove:"33788010",frontdoor:"33097210",networx:"11968410"},consent:{adopt:"31096410"}},eCommerceExclusiveLoaders:{frontdoor:[`${window.modUtils?window.modUtils.getModernizeDomain():"https://modernize.com"}/quote/resources/assets/images/logos/partners/american-home-shield.svg`,"Congrats! You&rsquo;re eligible to see pricing from American Home Shield now.","#004B98","#ED1C24","#004B98","#F9F9F6"],angi:[`${window.modUtils?window.modUtils.getModernizeDomain():"https://modernize.com"}/quote/resources/assets/images/logos/partners/angi.svg`,"Transferring to Angi","#A03027","#FF6153","#A03027","#F9F9F6"],cove:[`${window.modUtils?window.modUtils.getModernizeDomain():"https://modernize.com"}/quote/resources/assets/images/logos/partners/cove.svg`,"Transferring to Cove","#002334","#3EBEB0","#002334","#F9F9F6"],networx:[`${window.modUtils?window.modUtils.getModernizeDomain():"https://modernize.com"}/quote/resources/assets/images/logos/partners/networx.svg`,"Transferring to Networx","#344054","#0088FF","#344054","#F9F9F6"]},sharedParam:"shared=",isExclusiveMatch:!1,isBrandedExclusiveMatch:!1,exclusiveMatchResultsPage:"",exclusiveMatchVendor:"",resultsPageAdditionalParams:{},prefVendorKeys:[],prefVendorParam:"prefVendor=",landingPageSubdirectory:"",isCrossSellForm:!1,shouldUpdateTCPACompanyNameToModernize:!0,validateRecaptcha:!1,recaptchaVersion:3,isVite:!1,scrollTopOnStepChange:!0,ignoreQueryParams:[],ignoreQueryParamsInSessionStorage:!1,autoRedirectToTyOrSorryPage:!0,phoneAssignmentConfig:{showPhoneAssignmentNumber:!1,phoneNumberLinksSelector:"[class*=call-link],[class*=call-button]",phoneNumbersTextSelector:"[class*=call-number]",phoneNumberContainerSelector:".call-tracking-controls",questQuadTagId:{staging:"",prod:""},matchVendors:[],response:null,useHsEndpoint:!1,formatNumberWithBracketsAndDash:!1,skipMatching:!1,getPhoneAssignmentDataCallback:null,customPhoneNumber:""},fetchAndFormatConsentListings:!1,consentCaptureDetails:"",ignoreSendingUserTcpaToHeap:!1,sendConsentCaptureTcpaToLead:!1,formatConsentCaptureVendors:!1,originalTcpa:"",consentRequestId:"",consentCaptureVendors:[],consentCaptureLabels:{wasPreChecked:!0,wasOfferedSelectAll:!1,wasPreSubmit:!0},rerunConsentSearchesOnInputChange:!1,consentCaptureInputChangeSelector:"input",serviceSpecificAttributes:{},showBrandedResultPage:!1,useGlobalSkipSteps:!1,skipStepVertical:null,skipStepsConfig:{},disableRecaptcha:!1,formSubmittingCallbackBeforeFormPost:null}},8352:function(e,o,t){t.d(o,{_t:function(){return s.additionalOptions},p7:function(){return n}});var n=t(7632),s=t(3389)},8357:function(e,o,t){t.d(o,{getPhoneAssignmentData:function(){return s}});let n=null;const s=function(e){let o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];n&&n.abort("Current pending request has been aborted. Initiating a new request.");const t=modUtils.getUrlParamsToObject(),s=["ad","gclid","msclkid","vmcid","tbcid","fb_ad_id","fb_campaign_id","fbclid","fb_adset_id"],{CCID:i,CLK:r,QTR:a,tagId:c}=e,{phoneNumberContainerSelector:d,phoneNumberLinksSelector:m,useHsEndpoint:l,phoneNumbersTextSelector:u,matchVendors:p,formatNumberWithBracketsAndDash:f,skipMatching:w,getPhoneAssignmentDataCallback:g,customPhoneNumber:h}=modForm.opts.phoneAssignmentConfig,{vendorKey:b,PartnerSourceID:y}=t,v={},F="production"===modUtils.getEnv(),k="local"===modUtils.getEnv(),S=new RegExp(/(\d{3})(\d{3})(\d{4})/g),C=document.querySelectorAll(d),P=document.querySelectorAll(m);let A="",T={},L=T;const q="https://"+(F?"form-service-hs.qnst.com":"hsapiservice.quinstage.com"),x="https://"+(F?"ivr.quinstreet.com":"ivr.quinstage.com"),O=new Headers;O.append("Accept","application/json");const z=()=>{window.fetchedPhoneNumber=null,document.body.classList.remove("call-tracking"),Modalytics.heap("track",["Phone Assignment",{phoneNumber:!1,updatedExistingPhoneAssignment:o}])},E=(e,t,n)=>{window.fetchedPhoneNumber=`${e}${t?`,${t}`:""}`;if(P&&P.length&&C&&C.length&&e){document.body.classList.add("call-tracking");const s=e.replace(S,""+(f?"($1) $2-$3":"$1-$2-$3")),i=`${s}${t?` <span class="call-extension">Ext: ${t}</span>`:""}`;modForm.opts.phoneAssignmentConfig.response={displayNumber:i,hrefPhoneNumber:`${e}${t?`,${t}`:""}`,extension:t,phoneNumber:e,formattedPhoneNumber:s,phoneAssignmentKey:n},P.forEach((o=>{o.setAttribute("href",`tel:${e}${t?`,${t}`:""}`);const n=o.querySelector(u);n&&(n.innerHTML=i)})),Modalytics.heap("track",["Phone Assignment",{phoneNumber:!0,extension:!!t,updatedExistingPhoneAssignment:o}])}},D=modForm.opts?.zipCode||null;let V=null;D||(V=window.geolocation?.currentLocation?.zipcode||null),l?(O.append("Content-Type","application/json"),A=`${q}/calls/matches`,T={ccid:i||null,clk:r||null,qtr:a||null,zipForLocalizedAssignment:V,zip:D,service:modForm.opts.vertical,landingPageURL:window.location.href,matchVendors:Array.isArray(p)&&p.length?p:[-1],skipMatching:w,site:modForm?.opts?.websiteName||null},!T.zip&&k&&(T.zip="94404"),h&&(T.assignPhoneNumber=!1),window._vwo_campaignData&&0!==Object.keys(window._vwo_campaignData).length&&(T.trackingInfo={VWOID:Object.keys(window._vwo_campaignData)[0],VWOVariationName:Object.values(window._vwo_campaignData)[0].n}),o&&modForm.opts.phoneAssignmentConfig.response&&modForm.opts.phoneAssignmentConfig.response.phoneAssignmentKey&&(T.vendorPhoneAssignmentKeys={[T.matchVendors[0]]:modForm.opts.phoneAssignmentConfig.response.phoneAssignmentKey}),L=JSON.stringify(T)):(O.append("Content-Type","application/x-www-form-urlencoded"),A=`${x}/number`,T={SourceClickKey:r||"",LandingQuadTagID:c||"",PC:D,pcforlocalized:V,PortalServiceCode:modForm.opts.vertical,service:"assign",BusinessUnit:"FC",QS_CATEGORY:"Home Services",TradingPlatformTrackingInfo:"",vendorKeys:b||"-1",quadTagId:F?modForm.opts.phoneAssignmentConfig.questQuadTagId.prod:modForm.opts.phoneAssignmentConfig.questQuadTagId.staging,AffiliateSubID:y||""},t&&Object.keys(t).length&&Object.keys(t).forEach((function(e){s.includes(e)&&(v[e]=t[e])})),T.TradingPlatformTrackingInfo=JSON.stringify(v),L=new URLSearchParams(T).toString()),n=new AbortController;const I=n.signal;fetch(A,{method:"POST",headers:O,redirect:"follow",mode:"cors",body:L,signal:I}).then((e=>e.json())).then((e=>{if(l)if(e&&"success"===e.status){const{data:o}=e,{phoneDetails:t,matches:n}=o;let s;t?s=t[T.matchVendors[0]]:(s=modForm.opts.phoneAssignmentConfig.response,h&&n&&n.length&&(s={phoneNumber:h}));const{phoneNumber:i,extension:r,phoneAssignmentKey:a}=s;E(i,r,a)}else z();else if(e&&Object.keys(e).length){const o=e[T.vendorKeys];if(!o||o.constructor!==Object)return void z();const{ccPhoneNum:t,extn:n}=o;E(t,n)}else z()})).catch((e=>{I.aborted?(console.log(I.reason),Modalytics.heap("track",["Phone Assignment",{isRequestAborted:!0}])):(z(),console.log("Something went wrong!",e))})).finally((()=>{g&&g()}))}},9693:function(e,o,t){t.d(o,{isZipCodeValid:function(){return s}});var n=t(6306);function s(e,o){const t=window.modForm.opts.getVars&&window.modForm.opts.getVars.timeout&&"production"!==window.modUtils.getEnv()?Number(window.modForm.opts.getVars.timeout):3e3,s="https://"+("production"===window.modUtils.getEnv()?"hs.leadpost.net/":"hsleadpost1.quinstage.com/"),i=document.querySelectorAll(window.modForm.zipEditInput)[0],r=window.modUtils.getUrlParamsToObject(),{phoneAssignmentConfig:a,quadLinkParams:c}=window.modForm.opts,d=a.showPhoneAssignmentNumber&&a.useHsEndpoint&&!r.startStep&&c&&Object.keys(c).length,m=new XMLHttpRequest;let l={};m.open("GET",`${s}api/PostalCordinateInfo/${e}/get`),m.timeout=t,m.send(),m.addEventListener("load",(function(){this.response&&(l={...l,...JSON.parse(this.response)},4===this.readyState&&200===this.status?(l.success=!0,l.data=JSON.parse(this.response),l.data.zip=e,i&&"hidden"===i.style.display&&(document.querySelector(window.modForm.zipEditControlCls).style.display="block"),window.modForm.retryZipValidation=!1,"function"==typeof o&&o(l),d&&(0,n.getPhoneAssignmentData)(window.modForm.opts.quadLinkParams,!0)):"function"==typeof o&&(400===l.status?o({error:!0,message:l.error_message}):o({})))})),m.addEventListener("error",(function(){console.error("Something went wrong");const e=(0,n.getHeapSessionIdCookieData)();(0,n.initDuplicateSubmissionExperience)(e),window.modUtils.heap("track",["API Error | Showing Fallback Experience",{function:"isZipCodeValid"}])})),m.addEventListener("timeout",(function(){window.modForm.retryZipValidation=!0,window.modForm.opts.cityField[0]&&(window.modForm.opts.cityField[0].value=""),window.modForm.opts.stateField[0]&&(window.modForm.opts.stateField[0].value=""),document.querySelector(window.modForm.zipEditControlCls)&&(document.querySelector(window.modForm.zipEditControlCls).style.display="none"),o({success:!0,data:{zip:e}})}))}}},o={};function t(n){var s=o[n];if(void 0!==s)return s.exports;var i=o[n]={exports:{}};return e[n](i,i.exports,t),i.exports}t.d=function(e,o){for(var n in o)t.o(o,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:o[n]})},t.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};t.r(n),t.d(n,{modForm:function(){return r}});var s=t(8352),i=t(6306);const r={addVWOTestQueryParam:i.addVWOTestQueryParam,observeVWOVariation:i.observeVWOVariation,getPhoneAssignmentData:i.getPhoneAssignmentData,initQuadTransform:i.initQuadTransform,...s._t,...s.p7};var a=window;for(var c in n)a[c]=n[c];n.__esModule&&Object.defineProperty(a,"__esModule",{value:!0})}();
2
+ //# sourceMappingURL=calls-only.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calls-only.min.js","mappings":"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","sources":["webpack://mod-form/./lib/helpers/observers/observeVWOVariation.js","webpack://mod-form/./lib/config/additionalOpts.js","webpack://mod-form/./lib/helpers/trackers/addVWOTestQueryParam.js","webpack://mod-form/./lib/helpers/trackers/initQuadTransform.js","webpack://mod-form/./lib/helpers/components/form/initDuplicateSubmissionExperience.js","webpack://mod-form/./lib/helpers/components/form/populateFormWithZipData.js","webpack://mod-form/./lib/helpers/components/form/populateLocationFieldsDynamically.js","webpack://mod-form/./lib/helpers/components/form/prepopFormFromURL.js","webpack://mod-form/./lib/helpers/components/input/appendFormInput.js","webpack://mod-form/./lib/helpers/components/input/populateInput.js","webpack://mod-form/./lib/helpers/requests/transformQuadlink.js","webpack://mod-form/./lib/helpers/storage/saveUserInfoToCookie.js","webpack://mod-form/./lib/helpers/storage/getHeapSessionIdCookieData.js","webpack://mod-form/./lib/helpers/storage/getQueryParamsFromSessionStorage.js","webpack://mod-form/./lib/helpers/trackers/defaultQuadLinkValues.js","webpack://mod-form/./lib/helpers/trackers/getDefaultQuad.js","webpack://mod-form/./lib/helpers/trackers/getDefaultQuadByDomain.js","webpack://mod-form/./lib/helpers/trackers/getQSApiDomain.js","webpack://mod-form/./lib/helpers/trackers/heapIdentify.js","webpack://mod-form/./lib/helpers/trackers/addToHeapEventAndUserProperties.js","webpack://mod-form/./lib/config/opts.js","webpack://mod-form/./lib/helpers/requests/getPhoneAssignmentData.js","webpack://mod-form/./lib/validators/isZipCodeValid.js","webpack://mod-form/webpack/bootstrap","webpack://mod-form/webpack/runtime/define property getters","webpack://mod-form/webpack/runtime/hasOwnProperty shorthand","webpack://mod-form/webpack/runtime/make namespace object","webpack://mod-form/./lib/public/calls-only.js"],"sourcesContent":["/**\n * Mutation observer for A/B testing\n * @param {string} callback the callback function\n */\nexport function observeVWOVariation(callback) {\n\tconst targetNode = window.modForm.opts.observedTargetNode;\n\tconst config = window.modForm.opts.observerConfig;\n\n\tconst mutationCallback = function(mutations, observer) {\n\t\tfor (const mutation of mutations) {\n\t\t\tif (\n\t\t\t\tmutation.type === 'attributes'\n\t\t\t\t&& mutation.target.hasAttribute(window.modForm.opts.vwoVariationDataAttribute)\n\t\t\t\t&& mutation.target\n\t\t\t\t\t.getAttribute(window.modForm.opts.vwoVariationDataAttribute)\n\t\t\t\t\t.indexOf(window.modForm.opts.vwoVariationDataAttributeValue) > -1\n\t\t\t) {\n\t\t\t\tcallback();\n\t\t\t\tobserver.disconnect();\n\t\t\t}\n\t\t}\n\t};\n\n\tconst observer = new MutationObserver(mutationCallback);\n\tobserver.observe(targetNode, config);\n}\n","export const additionalOptions = {\n\t// set true before sending data to server and back to false when response is returned from server\n\tisSubmitting: false,\n\tisPhoneValid: false,\n\tisZipValid: false,\n\tareLeadTokenScriptsLoaded: false,\n\tloadedScripts: [],\n\toptedIn: false,\n\t// set true if you want inline validation on input with zip. be warned this causes many edge cases you will need to fix\n\tinlineZip: false,\n\tmutationObserverTarget: document.body,\n\tmutationObserverConfig: {\n\t\tattributes: true\n\t},\n\tprojexURL: null,\n\tredirectStart: null,\n\tzipEditControlCls: '.zip-control__edit, .change-zip-control, .step__city-state, .form__city-state, .zip-control, .form-group__city-state',\n\tzipEditInput: 'input[name=\"zip1\"], input[name=\"inertZip\"]',\n\tzipControlButton: document.querySelector('.zip-control__button'),\n\tretryZipValidation: false,\n\tpreventDuplicateSubmission: false,\n\tgetTime: new Date().getTime(),\n\tradioButtonClickedByMouse: false,\n\tincludeDuplicateSubmissionExperience: true,\n\thomeownerLeadConversionProps: {}\n};\n","/**\n* Adding vwo-test parameter value (HSMERCH-XXXX) to the body\n* Adding vwo-test parameter value (HSMERCH-XXXX) with version to the sections for multi-variate test\n*/\nexport function addVWOTestQueryParam() {\n\tconst vwoTestParam = Object.keys(window.modForm.opts.getVars).filter(param => param.startsWith('vwo-test'));\n\tconst vwoTestParamValue = window.modForm.opts.getVars[vwoTestParam];\n\n\tif (!(vwoTestParam && vwoTestParamValue)) {\n\t\treturn;\n\t}\n\n\tconst testVersions = Object.keys(window.modForm.opts.getVars).filter(param => param.match(/v[1-9]{1,}/g));\n\n\t// Multivariate Test\n\tif (testVersions.length > 0) {\n\t\ttestVersions.forEach(version => {\n\t\t\tconst classLists = window.modForm.opts.getVars[version];\n\t\t\tconst elementAttributeVal = `${vwoTestParamValue}-${version}`;\n\n\t\t\tif (classLists) {\n\t\t\t\tclassLists.split(',').forEach(className => {\n\t\t\t\t\tconst element = document.getElementsByClassName(className)[0];\n\n\t\t\t\t\tif (element) {\n\t\t\t\t\t\telement.setAttribute(window.modForm.opts.vwoVariationDataAttribute, elementAttributeVal);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsetTimeout(() => {\n\t\t\tdocument.body.setAttribute(window.modForm.opts.vwoVariationDataAttribute, vwoTestParamValue);\n\t\t}, 500);\n\t}\n}\n","import { heapIdentify, getDefaultQuad, transformQuadlink, getQueryParamsFromSessionStorage, defaultQuadLinkValues, getPhoneAssignmentData, addToHeapEventAndUserProperties } from '../../helpers';\n\n/**\n * function to extract the required values from a quad link\n * @param {boolean} useIdlizeQueueInternally if true it will Idlize the ajaxQuadlinkTransform() call inside this function. Useful when calling `initQuadTransform()` immediately in the `initQSForm()`\n */\nexport async function initQuadTransform(useIdlizeQueueInternally = false) {\n\t// We check if there's a quad link on the query string\n\t// If not we get the default link\n\tlet hasMarketingParams = false;\n\tconst currentParams = getQueryParamsFromSessionStorage() || window.modUtils.getUrlParamsToObject(),\n\t\thasQuadLink = currentParams.hasOwnProperty('quadlink'), // eslint-disable-line no-prototype-builtins\n\t\thastagID = currentParams.hasOwnProperty('tagID'), // eslint-disable-line no-prototype-builtins\n\t\theapMsg = { message: '' },\n\t\tmarketingParams = [\n\t\t\t'ad',\n\t\t\t'sp',\n\t\t\t'fb',\n\t\t\t'mt',\n\t\t\t'adposition',\n\t\t\t'dev',\n\t\t\t'gclid',\n\t\t\t'ki',\n\t\t\t'sq',\n\t\t\t'fb_ad_id',\n\t\t\t'fb_adset_id',\n\t\t\t'fb_campaign_id',\n\t\t\t'placement',\n\t\t\t'PartnerSourceID',\n\t\t\t'sub2_id',\n\t\t\t'PublisherSubID'\n\t\t],\n\t\thasQsParams = Object.keys(currentParams).some(function(param) {\n\t\t\treturn window.modForm.opts.qsParams.includes(param.toUpperCase());\n\t\t});\n\n\tif (hasQsParams) {\n\t\tfor (const param in currentParams) {\n\t\t\tif (window.modForm.opts.qsParams.includes(param.toUpperCase()) && typeof currentParams[param] !== 'undefined') {\n\t\t\t\twindow.modForm.opts.quadLinkParams[param.toUpperCase()] = currentParams[param];\n\t\t\t}\n\t\t}\n\n\t\theapIdentify();\n\n\t\tconst eventPropertiesToAdd = [window.modForm.opts.quadLinkParams];\n\t\tif (currentParams && currentParams.AffiliateKey) {\n\t\t\teventPropertiesToAdd.push({ 'AffiliateKey': currentParams.AffiliateKey });\n\t\t}\n\t\taddToHeapEventAndUserProperties(eventPropertiesToAdd);\n\n\t\tif (window.modForm.opts.phoneAssignmentConfig.showPhoneAssignmentNumber) {\n\t\t\tgetPhoneAssignmentData(window.modForm.opts.quadLinkParams);\n\t\t}\n\t} else {\n\t\tlet quadLinkUrl = '',\n\t\t\tquadLinkType = '';\n\t\tif (hastagID) {\n\t\t\tquadLinkUrl = currentParams.tagID;\n\t\t\tquadLinkType = 'tagID';\n\t\t} else {\n\t\t\tquadLinkUrl = hasQuadLink ? currentParams.quadlink : getDefaultQuad(window.modForm.opts.vertical);\n\t\t\tquadLinkType = hasQuadLink ? 'quadlink' : 'defaultQuad';\n\t\t}\n\n\t\twindow.modForm.opts.quadLinkData[quadLinkType] = quadLinkUrl;\n\n\t\tfor (const param in currentParams) {\n\t\t\tif (marketingParams.includes(param)) {\n\t\t\t\twindow.modForm.opts.quadLinkData[param] = currentParams[param];\n\t\t\t\thasMarketingParams = true;\n\t\t\t}\n\t\t}\n\n\t\tif (quadLinkUrl !== '') {\n\t\t\t// update source used for Best Company Blind Match forms (if user is coming in with existing params)\n\t\t\tif (window.modUtils.getLandingPage().includes('bestcompany') && window.modUtils.getLandingPage().includes('find-a-pro')) {\n\t\t\t\tconst quadlinkInput = document.querySelector('input[name=\"quadlink\"]');\n\t\t\t\tconst blindMatchDefaultQuad = getDefaultQuad(defaultQuadLinkValues['bestcompany.com'].findapro);\n\t\t\t\tconst blindMatchQuad = blindMatchDefaultQuad.replace('&default=yes;', '');\n\t\t\t\t// update quad value being sent through to LeadAnalyzer (so there is no confusion)\n\t\t\t\tif (quadlinkInput) {\n\t\t\t\t\tquadlinkInput.value = blindMatchQuad;\n\t\t\t\t}\n\t\t\t\t// transform the quadlink using this blind match specific one\n\t\t\t\tif (window.modForm.opts.quadLinkData.quadlink) {\n\t\t\t\t\twindow.modForm.opts.quadLinkData.quadlink = blindMatchQuad;\n\t\t\t\t} else if (hasMarketingParams) {\n\t\t\t\t\twindow.modForm.opts.quadLinkData.defaultQuad = blindMatchQuad;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (useIdlizeQueueInternally) {\n\t\t\t\tif ('IdlizeQueue' in window) {\n\t\t\t\t\theapMsg.message = 'initQuadTransform() called on DOMContentLoaded with IdlizeQueue';\n\t\t\t\t\twindow.IdlizeQueue.pushTask(() => {\n\t\t\t\t\t\ttransformQuadlink();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\ttransformQuadlink();\n\t\t\t\t\theapMsg.message = 'initQuadTransform() called on DOMContentLoaded without IdlizeQueue';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttransformQuadlink();\n\t\t\t\theapMsg.message = 'initQuadTransform() called on window.onload';\n\t\t\t}\n\t\t}\n\t\twindow.modUtils.heap('track', ['Quad Transform', heapMsg]);\n\t}\n}\n","export function initDuplicateSubmissionExperience(heapSessionIdCookieData, activeStep = '.swiper-slide-active .step-inner') {\n\tconst activeStepInner = window.modForm.opts.form.querySelector(activeStep),\n\t\tformButtons = document.querySelectorAll('.form-btns, .form-bts, .controls, .findpros-form__btns'),\n\t\tformTcpa = document.querySelector('.form-tcpa'),\n\t\tdefaultResultsPage = window.modForm.opts.landingPage.includes('bestcompany') ? 'https://bestcompany.com/' : 'https://modernize.com/';\n\tlet resultsPageUrl = !heapSessionIdCookieData.resultsPage ? defaultResultsPage : heapSessionIdCookieData.resultsPage;\n\n\tif (resultsPageUrl.indexOf(window.modForm.opts.suppressConversionPixelParam) <= -1) {\n\t\t// suppress conversion pixels in HRC link & fire them from the page instead\n\t\tresultsPageUrl += (resultsPageUrl.indexOf('?') < 0 ? '?' : '&') + window.modForm.opts.suppressConversionPixelParam;\n\t}\n\n\twindow.modForm.opts.form.classList.add(window.modForm.opts.formLoadingCls);\n\n\tconst duplicateSubmitFireCnvrsnPxlCookie = window.modUtils.getCookie('duplicateSubmitFireCnvrsnPxl');\n\tif (!duplicateSubmitFireCnvrsnPxlCookie) {\n\t\tif (resultsPageUrl.indexOf('ThankYou') > -1) {\n\t\t\t// fire conversion pixels in case user does not redirect to HRC\n\t\t\tif (typeof window.dataLayer !== 'undefined') {\n\t\t\t\twindow.dataLayer.push({\n\t\t\t\t\tevent: 'Lead Conversion Failed Redirects'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\twindow.modUtils.setCookie('duplicateSubmitFireCnvrsnPxl', true);\n\twindow.modForm.preventDuplicateSubmission = true;\n\n\t// Giving the page a chance to redirect before showing fallback\n\tsetTimeout(function() {\n\t\tif (window.modForm.opts.backButtons) {\n\t\t\twindow.modForm.opts.backButtons.forEach(function(backButton) {\n\t\t\t\tbackButton.style.display = 'none';\n\t\t\t});\n\t\t}\n\t\tif (window.modForm.opts.progressBar) {\n\t\t\twindow.modForm.opts.progressBar.forEach(function(bar) {\n\t\t\t\tbar.style.display = 'none';\n\t\t\t});\n\t\t}\n\t\tif (formButtons) {\n\t\t\tformButtons.forEach(function(formButton) {\n\t\t\t\tformButton.style.display = 'none';\n\t\t\t});\n\t\t}\n\t\tif (formTcpa) {\n\t\t\tformTcpa.style.display = 'none';\n\t\t}\n\n\t\twindow.modForm.opts.form.querySelector('.swiper-wrapper').style.alignItems = 'center';\n\n\t\twindow.modForm.opts.form.classList.remove(window.modForm.opts.formLoadingCls);\n\n\t\tconst target = window.modForm.opts.isLeadWidget ? '_blank' : '_self';\n\n\t\tactiveStepInner.innerHTML = '<div class=\"duplicate-submission\" style=\"background-color:#fff;display:flex; flex-direction:column;justify-content:center;align-items:center;min-height:390px;padding:40px 10px;text-align:center;\"><h3 style=\"color:#545253;font-size:22px;font-weight:bold;margin:30px auto 0;\">Welcome Back!</h3><p style=\"color:#545253;display:block;font-size:15px;font-weight:400;line-height:1.5;margin:20px auto 30px;\">It looks like you just submitted your <br>information a moment ago.</p><a class=\"btn ' + (window.modForm.opts.addAccessibilityUpdates ? 'btn--primary' : 'btn-primary') + '\" id=\"double-submission-fallback-button\" href=\"' + resultsPageUrl + '\" target=\"' + target + '\" style=\"max-width:280px;line-height: normal;width:100%;display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 14px 0px 15px;margin:0 auto 30px;min-width:unset\"><span class=\"btn__text\" style=\"visibility:visible;font-size: 18px\">See Your Matches</span></a></div>';\n\n\t\twindow.modUtils.heap('track', ['Showing Duplicate Submission Experience - on Step One', {\n\t\t\tresultsPage: resultsPageUrl\n\t\t}]);\n\t}, 300);\n}\n","import { populateInput } from '../../../helpers';\n/**\n * Populate form with zip data\n * @param {Object} zipData - zip data\n */\nexport function populateFormWithZipData(zipData) {\n\t['city', 'state'].forEach(function(name) {\n\t\tif (zipData[name]) {\n\t\t\tpopulateInput(name, zipData[name]);\n\t\t}\n\t});\n\tdocument.querySelectorAll('input[name=\"zip\"], input[name=\"zip1\"]').forEach(function(field) {\n\t\tfield.value = zipData.zip;\n\t});\n}\n","/**\n * Update all possible location displayed elements on page based on updated zipcde, except for user-location elements inside reviews\n * @param {Object} geoData - The user's geographical data\n */\nexport function populateLocationFieldsDynamically(geoData) {\n\twindow.modForm.opts.userLocation = geoData.city + ', ' + geoData.state;\n\tconst userLocation = document.querySelectorAll('.user-location:not(.reviews-block .user-location)');\n\tif (userLocation.length) {\n\t\tuserLocation.forEach(function($userLocation) {\n\t\t\tif ($userLocation) {\n\t\t\t\t$userLocation.innerHTML = window.modForm.opts.userLocation;\n\t\t\t}\n\t\t});\n\t}\n\n\tif (document.querySelector('.user-city')) {\n\t\tdocument.querySelector('.user-city').innerHTML = geoData.city;\n\t}\n}\n","import { appendFormInput, saveUserInfoToCookie, populateFormWithZipData, populateLocationFieldsDynamically } from '../../../helpers';\nimport { isZipCodeValid } from '../../../validators';\n/**\n * Pre-populate any fields with matching query string keys with their values.\n * Info on our Pre-Population Rules:\n * https://confluence.modernize.com/display/ENG/Microsite+Forms%3A+Pre-Population+Rules\n */\nexport function prepopFormFromURL() {\n\tObject.keys(window.modForm.opts.getVars).forEach(function(key) {\n\t\tif (!window.modForm.opts.ignoreQueryParams.includes(key)) {\n\t\t\tappendFormInput(key, window.modForm.opts.getVars[key]);\n\t\t}\n\t\tif ('zip' === key) {\n\t\t\tappendFormInput('zip1', window.modForm.opts.getVars[key]);\n\t\t\tappendFormInput('inertZip', window.modForm.opts.getVars[key]);\n\t\t}\n\n\t\tif (window.modForm.opts.prepopulateUserInfo) {\n\t\t\tsaveUserInfoToCookie(key, window.modForm.opts.getVars[key]);\n\t\t}\n\t});\n\n\t// Process zip\n\tif ('undefined' !== typeof window.modForm.opts.getVars.zip) {\n\t\t// TODO: Remove\n\t\tif (!window.modForm.opts.prepopulateUserInfo) {\n\t\t\tisZipCodeValid(window.modForm.opts.getVars.zip, function(response) {\n\t\t\t\t// If success..\n\t\t\t\tif (response.success) {\n\t\t\t\t\t// Populate city & state\n\t\t\t\t\tif (response.data) {\n\t\t\t\t\t\tpopulateFormWithZipData(response.data);\n\t\t\t\t\t\tpopulateLocationFieldsDynamically(response.data);\n\n\t\t\t\t\t\t// Fire callback\n\t\t\t\t\t\tif ('function' === typeof window.modForm.opts.zipCodeValidated) {\n\t\t\t\t\t\t\twindow.modForm.opts.zipCodeValidated(response.data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n}\n","import { populateInput } from '../../../helpers';\n/**\n * If input exists, populate it; if not - create hidden\n * @param {String} name - name of a field\n * @param {String} value - value of a field\n * @param {Bool} noPopulate - set to true if you only want to create input if it doesn't exist, and don't want to update existing input\n */\nexport function appendFormInput(name, value, noPopulate) {\n\tif (!window.modForm.opts.form.querySelector('input[name=\"' + name + '\"]')) {\n\t\tconst input = document.createElement('input');\n\t\tinput.type = 'hidden';\n\t\tinput.id = name;\n\t\tinput.name = name;\n\t\tinput.value = value;\n\t\twindow.modForm.opts.form.appendChild(input);\n\t} else if (!noPopulate) {\n\t\tpopulateInput(name, value);\n\t}\n}\n","/**\n * Populate form input\n * @param {String} name - name of a field\n * @param {String} value - value of a field\n */\nexport function populateInput(name, value) {\n\tconst $input = window.modForm.opts.form.querySelector('input[name=\"' + name + '\"]');\n\tif ($input) {\n\t\tif ('INPUT' === $input.tagName && 'radio' === $input.type && $input.value === value) {\n\t\t\t$input.setAttribute('checked', true);\n\t\t} else if ('INPUT' === $input.tagName && 'checkbox' === $input.type) {\n\t\t\t$input.setAttribute('checked', true);\n\t\t} else if ('SELECT' === $input.tagName) {\n\t\t\t$input.querySelector('option[value=\"' + value + '\"]').setAttribute('selected', true); // this doesn't break a select if such value is not among its options\n\t\t} else {\n\t\t\t$input.value = value;\n\t\t\t// zip1 field will be populated with zip or zip1 query\n\t\t\tif (name === 'zip') {\n\t\t\t\tconst zip1 = window.modForm.opts.form.querySelector('input[name=\"zip1\"]');\n\t\t\t\tif (zip1) {\n\t\t\t\t\tzip1.value = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import { getQSApiDomain, heapIdentify, getPhoneAssignmentData, addToHeapEventAndUserProperties } from '../../helpers';\n/**\n * Transform Quadlink\n */\nexport function transformQuadlink() {\n\tlet response = {};\n\tconst request = new XMLHttpRequest(),\n\t\tapiUrl = getQSApiDomain() + window.modForm.opts.trafficDetailsApi;\n\n\trequest.open('POST', apiUrl);\n\trequest.setRequestHeader('Content-Type', 'application/json');\n\trequest.send(JSON.stringify(window.modForm.opts.quadLinkData));\n\trequest.addEventListener('load', async function() {\n\t\tif (this.response) {\n\t\t\tresponse = { ...response, ...JSON.parse(this.response) };\n\t\t\tif (this.readyState === 4 && this.status === 200) {\n\t\t\t\tfor (const value in response) {\n\t\t\t\t\tif (window.modForm.opts.qsParams.includes(value) && response.hasOwnProperty(value)) { // eslint-disable-line no-prototype-builtins\n\t\t\t\t\t\twindow.modForm.opts.quadLinkParams[value] = response[value];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (window.modForm.opts.phoneAssignmentConfig.showPhoneAssignmentNumber) {\n\t\t\t\t\tgetPhoneAssignmentData(response);\n\t\t\t\t}\n\n\t\t\t\theapIdentify();\n\t\t\t\twindow.modForm.opts.quadLinkHasBeenTransformed = true;\n\t\t\t\taddToHeapEventAndUserProperties([\n\t\t\t\t\twindow.modForm.opts.quadLinkParams,\n\t\t\t\t\t{'AffiliateKey': response.AffiliateKey}\n\t\t\t\t]);\n\t\t\t}\n\t\t}\n\t});\n\trequest.addEventListener('error', function() {\n\t\tconsole.error('Something went wrong');\n\t});\n}\n","/**\n * Saves user information to cookie\n * @param {String} name - key name for the object being stored on the cookie\n * @param {String} value - value for the object being stored on the cookie\n */\nexport function saveUserInfoToCookie(name, value) {\n\tif (name.toLowerCase().includes('zip')) {\n\t\twindow.modForm.userObj.zip = value;\n\t} else {\n\t\twindow.modForm.userObj[name] = value;\n\t}\n\n\twindow.modUtils.setCookie('userInfo', JSON.stringify(window.modForm.userObj), 526740);\n}\n","export function getHeapSessionIdCookieData() {\n\tlet heapSessionSubmitCookie = null;\n\tlet heapSessionId = null;\n\tlet initialTimestamp;\n\tlet expireInOneHour;\n\tlet resultsPage = '';\n\n\tif (window.modUtils.heapCookie) {\n\t\theapSessionId = window.modUtils.heapCookieData.sessionId;\n\t\theapSessionSubmitCookie = window.modUtils.getCookie(heapSessionId);\n\t}\n\n\tif (heapSessionSubmitCookie !== null) {\n\t\tconst cookieValue = JSON.parse(decodeURIComponent(heapSessionSubmitCookie));\n\t\tinitialTimestamp = cookieValue.initialTimestamp;\n\t\texpireInOneHour = initialTimestamp + 1 * 60 * 60 * 1000;\n\t\tif (window.modForm.opts.isFrontdoorExclusiveMatch) {\n\t\t\tresultsPage = decodeURIComponent(cookieValue.resultsPage);\n\t\t} else {\n\t\t\tresultsPage = cookieValue.resultsPage;\n\t\t}\n\t}\n\n\treturn { heapSessionSubmitCookie, heapSessionId, initialTimestamp, expireInOneHour, resultsPage};\n}\n","import { prepopFormFromURL } from '../../helpers';\n/**\n * function to get the saved query string values from the session storage\n * @returns {Object} - query string values\n */\nexport function getQueryParamsFromSessionStorage() {\n\tconst queryParams = window.sessionStorage ? window.sessionStorage.getItem('queryParams') : null;\n\tconst parsedQueryParams = queryParams ? JSON.parse(queryParams) : null;\n\tif (parsedQueryParams) {\n\t\twindow.modForm.opts.getVars = parsedQueryParams;\n\t\tprepopFormFromURL();\n\t}\n\treturn parsedQueryParams;\n}\n","/**\n * Default quad values based on page domain\n * @type {Object}\n */\nexport const defaultQuadLinkValues = {\n\t// TODO: Remove m. values since we only use the desktop url\n\t'modernize.com': {\n\t\tmedicalalerts: {\n\t\t\tc: '1677934',\n\t\t\ts: '31135',\n\t\t\tf: '202109081618210'\n\t\t},\n\t\tshowers: {\n\t\t\tc: '1683621',\n\t\t\ts: '3086',\n\t\t\tf: '202309141602090'\n\t\t},\n\t\tdefault: {\n\t\t\tc: '1679227',\n\t\t\ts: '29914',\n\t\t\tf: '202202161521310'\n\t\t}\n\t},\n\t'modernizesolar.com': {\n\t\tc: '1679227',\n\t\ts: '29914',\n\t\tf: '202202161521310'\n\t},\n\t'modernize-solar.com': {\n\t\tc: '1679227',\n\t\ts: '29914',\n\t\tf: '202202161521310'\n\t},\n\t'go.jacuzzi.com': {\n\t\tc: '1674074',\n\t\ts: '3086',\n\t\tf: '202011031614490'\n\t},\n\t'm.go.jacuzzi.com': {\n\t\tc: '1674074',\n\t\ts: '3086',\n\t\tf: '202011031614490'\n\t},\n\t'americanhomewarranty.org': {\n\t\tc: '1673835',\n\t\ts: '3086',\n\t\tf: '202010191645170'\n\t},\n\t'm.americanhomewarranty.org': {\n\t\tc: '1673835',\n\t\ts: '3086',\n\t\tf: '202010191645170'\n\t},\n\t'homewindowprices.org': {\n\t\tc: '1673838',\n\t\ts: '3086',\n\t\tf: '202010191645180'\n\t},\n\t'm.homewindowprices.org': {\n\t\tc: '1673838',\n\t\ts: '3086',\n\t\tf: '202010191645180'\n\t},\n\t'mygutterguards.com': {\n\t\tc: '1673836',\n\t\ts: '3086',\n\t\tf: '202010191645180'\n\t},\n\t'm.mygutterguards.com': {\n\t\tc: '1673836',\n\t\ts: '3086',\n\t\tf: '202010191645180'\n\t},\n\t'tophottubs.org': {\n\t\tc: '1673840',\n\t\ts: '3086',\n\t\tf: '202010191645190'\n\t},\n\t'm.tophottubs.org': {\n\t\tc: '1673840',\n\t\ts: '3086',\n\t\tf: '202010191645190'\n\t},\n\t'americanstandardwalkinbaths.com': {\n\t\tc: '1665214',\n\t\ts: '28354',\n\t\tf: '201906181327550'\n\t},\n\t'm.americanstandardwalkinbaths.com': {\n\t\tc: '1665215',\n\t\ts: '28354',\n\t\tf: '201906181327560'\n\t},\n\t'bathandshower.org': {\n\t\tc: '1667476',\n\t\ts: '26393',\n\t\tf: '201910011622070'\n\t},\n\t'm.bathandshower.org': {\n\t\tc: '1667460',\n\t\ts: '26401',\n\t\tf: '201910011622030'\n\t},\n\t'bathandshowerpros.com': {\n\t\tc: '1658267',\n\t\ts: '26393',\n\t\tf: '201809211357520'\n\t},\n\t'm.bathandshowerpros.com': {\n\t\tc: '1658263',\n\t\ts: '26401',\n\t\tf: '201809211352160'\n\t},\n\t'quotes.bathwraps.com': {\n\t\tc: '1660429',\n\t\ts: '26393',\n\t\tf: '201812121510250'\n\t},\n\t'm.bathwraps.com': {\n\t\tc: '1660426',\n\t\ts: '26401',\n\t\tf: '201812121509080'\n\t},\n\t'craftmaticbeds.com': {\n\t\tc: '655234',\n\t\ts: '3086',\n\t\tf: '201008201638230'\n\t},\n\t'emedicalalerts.com': {\n\t\tc: '1647425',\n\t\ts: '26393',\n\t\tf: '201711071755250'\n\t},\n\t'm.emedicalalerts.com': {\n\t\tc: '1647405',\n\t\ts: '26401',\n\t\tf: '201711071755190'\n\t},\n\t'flooringpricer.com': {\n\t\tc: '1668109',\n\t\ts: '26393',\n\t\tf: '201910231539300'\n\t},\n\t'm.flooringpricer.com': {\n\t\tc: '1668101',\n\t\ts: '26401',\n\t\tf: '201910231539280'\n\t},\n\t'findyourwindows.com': {\n\t\tc: '1654347',\n\t\ts: '26393',\n\t\tf: '201805111614390'\n\t},\n\t'm.findyourwindows.com': {\n\t\tc: '1654331',\n\t\ts: '26401',\n\t\tf: '201805111612300'\n\t},\n\t'homesecurityprices.org': {\n\t\tc: '1658310',\n\t\ts: '26393',\n\t\tf: '201809211526510'\n\t},\n\t'm.homesecurityprices.org': {\n\t\tc: '1658305',\n\t\ts: '26401',\n\t\tf: '201809211509250'\n\t},\n\t'quotes.improvementcenter.com': {\n\t\tbathrooms: {\n\t\t\tc: '1652517',\n\t\t\ts: '26393',\n\t\t\tf: '201803221337450'\n\t\t},\n\t\tgutters: {\n\t\t\tc: '1614214',\n\t\t\ts: '3086',\n\t\t\tf: '201608311104250'\n\t\t},\n\t\tstairlifts: {\n\t\t\tc: '1658469',\n\t\t\ts: '26393',\n\t\t\tf: '201809260926260'\n\t\t},\n\t\twalkintubs: {\n\t\t\tc: '1647588',\n\t\t\ts: '26393',\n\t\t\tf: '201711081408530'\n\t\t}\n\t},\n\t'bathrooms.improvementcenter.com': {\n\t\tc: '1652509',\n\t\ts: '26401',\n\t\tf: '201803221337420'\n\t},\n\t'gutters.improvementcenter.com': {\n\t\tc: '1635550',\n\t\ts: '16479',\n\t\tf: '201703010604120'\n\t},\n\t'stairlifts.improvementcenter.com': {\n\t\tc: '1658465',\n\t\ts: '26401',\n\t\tf: '201809260926240'\n\t},\n\t'walkintubs.improvementcenter.com': {\n\t\tc: '1647564',\n\t\ts: '26401',\n\t\tf: '201711081408460'\n\t},\n\t'kitchensandcabinets.com': {\n\t\tc: '1652648',\n\t\ts: '26393',\n\t\tf: '201803261349020'\n\t},\n\t'm.kitchensandcabinets.com': {\n\t\tc: '1652624',\n\t\ts: '26401',\n\t\tf: '201803261348550'\n\t},\n\t'leafgutterpros.com': {\n\t\tc: '1685217',\n\t\ts: '3086',\n\t\tf: '202403271348130'\n\t},\n\t'lifemedicalalerts.com': {\n\t\tc: '1647427',\n\t\ts: '26393',\n\t\tf: '201711071755260'\n\t},\n\t'm.lifemedicalalerts.com': {\n\t\tc: '1647407',\n\t\ts: '26401',\n\t\tf: '201711071755200'\n\t},\n\t'go.medicalguardian.com': {\n\t\tc: '1654232',\n\t\ts: '26393',\n\t\tf: '201805101622250'\n\t},\n\t'mysolarcost.com': {\n\t\tc: '1645537',\n\t\ts: '3086',\n\t\tf: '201709221027450'\n\t},\n\t'm.mysolarcost.com': {\n\t\tc: '1645592',\n\t\ts: '16479',\n\t\tf: '201709221044340'\n\t},\n\t'roofingcosts.org': {\n\t\tc: '1673843',\n\t\ts: '3086',\n\t\tf: '202010191645200'\n\t},\n\t'm.roofingcosts.org': {\n\t\tc: '1673843',\n\t\ts: '3086',\n\t\tf: '202010191645200'\n\t},\n\t'securitypricer.com': {\n\t\tc: '1673856',\n\t\ts: '3086',\n\t\tf: '202010191645230'\n\t},\n\t'm.securitypricer.com': {\n\t\tc: '1673856',\n\t\ts: '3086',\n\t\tf: '202010191645230'\n\t},\n\t'walkinbathtubs.org': {\n\t\tc: '1673846',\n\t\ts: '3086',\n\t\tf: '202010191645210'\n\t},\n\t'm.walkinbathtubs.org': {\n\t\tc: '1673846',\n\t\ts: '3086',\n\t\tf: '202010191645210'\n\t},\n\t'walkintubprices.org': {\n\t\tc: '1673842',\n\t\ts: '3086',\n\t\tf: '202010191645200'\n\t},\n\t'm.walkintubprices.org': {\n\t\tc: '1673842',\n\t\ts: '3086',\n\t\tf: '202010191645200'\n\t},\n\t'walkintubforseniors.com': {\n\t\tc: '1647590',\n\t\ts: '26393',\n\t\tf: '201711081408540'\n\t},\n\t'm.walkintubforseniors.com': {\n\t\tc: '1647566',\n\t\ts: '26401',\n\t\tf: '201711081408470'\n\t},\n\t'plans.selecthomewarranty.com': {\n\t\tc: '1674075',\n\t\ts: '3086',\n\t\tf: '202011031614490'\n\t},\n\t'plumbingservicecosts.com': {\n\t\tc: '1684673',\n\t\ts: '3086',\n\t\tf: '202402061224360'\n\t},\n\t'm.plans.selecthomewarranty.com': {\n\t\tc: '1674075',\n\t\ts: '3086',\n\t\tf: '202011031614490'\n\t},\n\t'powerhomesolarpanels.com': {\n\t\tc: '1676761',\n\t\ts: '3086',\n\t\tf: '202105251631450'\n\t},\n\t'hvacpros.org': {\n\t\tc: '1670084',\n\t\ts: '26393',\n\t\tf: '202002181631370'\n\t},\n\t'm.hvacpros.org': {\n\t\tc: '1670076',\n\t\ts: '26401',\n\t\tf: '202002181625140'\n\t},\n\t'homewarrantyplans.org': {\n\t\tc: '1668109',\n\t\ts: '26393',\n\t\tf: '201910231539300'\n\t},\n\t'm.homewarrantyplans.org': {\n\t\tc: '1667462',\n\t\ts: '26401',\n\t\tf: '201910011622030'\n\t},\n\t'gutterguardcovers.com': {\n\t\tc: '1679714',\n\t\ts: '3086',\n\t\tf: '202205131023370'\n\t},\n\t'windowreplacementcost.org': {\n\t\tc: '1679716',\n\t\ts: '3086',\n\t\tf: '202205131023370'\n\t},\n\t'stairliftchairs.org': {\n\t\tc: '1679715',\n\t\ts: '3086',\n\t\tf: '202205131023370'\n\t},\n\t'roofingreplacementcost.com': {\n\t\tc: '1680434',\n\t\ts: '3086',\n\t\tf: '202208031707470'\n\t},\n\t'furnacereplacementcosts.org': {\n\t\tc: '1680996',\n\t\ts: '3086',\n\t\tf: '202209290958330'\n\t},\n\t'solarpanelpricing.com': {\n\t\tc: '1682247',\n\t\ts: '3086',\n\t\tf: '202302031201300'\n\t},\n\t'kitchencabinetrefacing.org': {\n\t\tc: '1680433',\n\t\ts: '3086',\n\t\tf: '202208031707460'\n\t},\n\t'airconditioningpros.org': {\n\t\tc: '1682333',\n\t\ts: '3086',\n\t\tf: '202302141453580'\n\t},\n\t'treetrimmingservicepros.com': {\n\t\tc: '1682327',\n\t\ts: '3086',\n\t\tf: '202302141447090'\n\t},\n\t'compareflooringprices.com': {\n\t\tc: '1683170',\n\t\ts: '3086',\n\t\tf: '202306161210090'\n\t},\n\t'sidingreplacementcost.com': {\n\t\tc: '1683497',\n\t\ts: '3086',\n\t\tf: '202308211539090'\n\t},\n\t'adt-savings.com': {\n\t\tc: '1683323',\n\t\ts: '31135',\n\t\tf: '202307211631550'\n\t},\n\t'topgutterpros.com': {\n\t\tc: '1683689',\n\t\ts: '3086',\n\t\tf: '202309251220170'\n\t},\n\t'topremodelingpros.com': {\n\t\tc: '1683689',\n\t\ts: '3086',\n\t\tf: '202309251220170'\n\t},\n\t'powerhomedeals.com': {\n\t\troofing: {\n\t\t\tc: '1683681',\n\t\t\ts: '3086',\n\t\t\tf: '202309251210110'\n\t\t},\n\t\twindows: {\n\t\t\tc: '1683686',\n\t\t\ts: '3086',\n\t\t\tf: '202309251219100'\n\t\t},\n\t\tsiding: {\n\t\t\tc: '1683683',\n\t\t\ts: '3086',\n\t\t\tf: '202309251214450'\n\t\t}\n\t},\n\t'bestcompany.modernize.com': {\n\t\thomewarranty: {\n\t\t\tc: '1684628',\n\t\t\ts: '34486',\n\t\t\tf: '202401301751220'\n\t\t},\n\t\tmedicalalertsystems: {\n\t\t\tc: '1684826',\n\t\t\ts: '34486',\n\t\t\tf: '202402151655050'\n\t\t},\n\t\thomesecurity: {\n\t\t\tc: '1684824',\n\t\t\ts: '34486',\n\t\t\tf: '202402151653100'\n\t\t},\n\t\tsolar: {\n\t\t\tc: '1684620',\n\t\t\ts: '34486',\n\t\t\tf: '202401301731070'\n\t\t},\n\t\twatersofteners: {\n\t\t\tc: '1684830',\n\t\t\ts: '34486',\n\t\t\tf: '202402141206230'\n\t\t},\n\t\tplumbing: {\n\t\t\tc: '1684766',\n\t\t\ts: '34486',\n\t\t\tf: '202402141115530'\n\t\t},\n\t\ttreeservices: {\n\t\t\tc: '1684764',\n\t\t\ts: '34486',\n\t\t\tf: '202402141113540'\n\t\t},\n\t\tnewwindows: {\n\t\t\tc: '1684828',\n\t\t\ts: '34486',\n\t\t\tf: '202402151656490'\n\t\t},\n\t\twalkintubs: {\n\t\t\tc: '1684760',\n\t\t\ts: '34486',\n\t\t\tf: '202402141109100'\n\t\t},\n\t\tstairlifts: {\n\t\t\tc: '1684758',\n\t\t\ts: '34486',\n\t\t\tf: '202402141106430'\n\t\t},\n\t\tsiding: {\n\t\t\tc: '1684756',\n\t\t\ts: '34486',\n\t\t\tf: '202402141103210'\n\t\t},\n\t\troofing: {\n\t\t\tc: '1684754',\n\t\t\ts: '34486',\n\t\t\tf: '202402141059590'\n\t\t},\n\t\thvac: {\n\t\t\tc: '1684752',\n\t\t\ts: '34486',\n\t\t\tf: '202402141057220'\n\t\t},\n\t\thottubs: {\n\t\t\tc: '1684750',\n\t\t\ts: '34486',\n\t\t\tf: '202402141054450'\n\t\t},\n\t\tgutters: {\n\t\t\tc: '1684748',\n\t\t\ts: '34486',\n\t\t\tf: '202402141051430'\n\t\t},\n\t\tflooring: {\n\t\t\tc: '1684746',\n\t\t\ts: '34486',\n\t\t\tf: '202402141049110'\n\t\t},\n\t\tdoors: {\n\t\t\tc: '1684744',\n\t\t\ts: '34486',\n\t\t\tf: '202402141046440'\n\t\t},\n\t\tcabinets: {\n\t\t\tc: '1684822',\n\t\t\ts: '34486',\n\t\t\tf: '202402151651120'\n\t\t},\n\t\tbathroomremodel: {\n\t\t\tc: '1684820',\n\t\t\ts: '34486',\n\t\t\tf: '202402151646230'\n\t\t},\n\t\tfindapro: {\n\t\t\tc: '1684895',\n\t\t\ts: '3086',\n\t\t\tf: '202402231339130'\n\t\t}\n\t},\n\t'bestcompany.com': {\n\t\thomewarranty: {\n\t\t\tc: '1684628',\n\t\t\ts: '34486',\n\t\t\tf: '202401301751220'\n\t\t},\n\t\tmedicalalertsystems: {\n\t\t\tc: '1684826',\n\t\t\ts: '34486',\n\t\t\tf: '202402151655050'\n\t\t},\n\t\thomesecurity: {\n\t\t\tc: '1684824',\n\t\t\ts: '34486',\n\t\t\tf: '202402151653100'\n\t\t},\n\t\tsolar: {\n\t\t\tc: '1684620',\n\t\t\ts: '34486',\n\t\t\tf: '202401301731070'\n\t\t},\n\t\twatersofteners: {\n\t\t\tc: '1684830',\n\t\t\ts: '34486',\n\t\t\tf: '202402141206230'\n\t\t},\n\t\tplumbing: {\n\t\t\tc: '1684766',\n\t\t\ts: '34486',\n\t\t\tf: '202402141115530'\n\t\t},\n\t\ttreeservices: {\n\t\t\tc: '1684764',\n\t\t\ts: '34486',\n\t\t\tf: '202402141113540'\n\t\t},\n\t\tnewwindows: {\n\t\t\tc: '1684828',\n\t\t\ts: '34486',\n\t\t\tf: '202402151656490'\n\t\t},\n\t\twalkintubs: {\n\t\t\tc: '1684760',\n\t\t\ts: '34486',\n\t\t\tf: '202402141109100'\n\t\t},\n\t\tstairlifts: {\n\t\t\tc: '1684758',\n\t\t\ts: '34486',\n\t\t\tf: '202402141106430'\n\t\t},\n\t\tsiding: {\n\t\t\tc: '1684756',\n\t\t\ts: '34486',\n\t\t\tf: '202402141103210'\n\t\t},\n\t\troofing: {\n\t\t\tc: '1684754',\n\t\t\ts: '34486',\n\t\t\tf: '202402141059590'\n\t\t},\n\t\thvac: {\n\t\t\tc: '1684752',\n\t\t\ts: '34486',\n\t\t\tf: '202402141057220'\n\t\t},\n\t\thottubs: {\n\t\t\tc: '1684750',\n\t\t\ts: '34486',\n\t\t\tf: '202402141054450'\n\t\t},\n\t\tgutters: {\n\t\t\tc: '1684748',\n\t\t\ts: '34486',\n\t\t\tf: '202402141051430'\n\t\t},\n\t\tflooring: {\n\t\t\tc: '1684746',\n\t\t\ts: '34486',\n\t\t\tf: '202402141049110'\n\t\t},\n\t\tdoors: {\n\t\t\tc: '1684744',\n\t\t\ts: '34486',\n\t\t\tf: '202402141046440'\n\t\t},\n\t\tcabinets: {\n\t\t\tc: '1684822',\n\t\t\ts: '34486',\n\t\t\tf: '202402151651120'\n\t\t},\n\t\tbathroomremodel: {\n\t\t\tc: '1684820',\n\t\t\ts: '34486',\n\t\t\tf: '202402151646230'\n\t\t},\n\t\tfindapro: {\n\t\t\tc: '1684895',\n\t\t\ts: '3086',\n\t\t\tf: '202402231339130'\n\t\t}\n\t},\n\t'topsolarcompanies.com': {\n\t\tc: '1684497',\n\t\ts: '34399',\n\t\tf: '202401241741100'\n\t},\n\t'besthomesecuritycompanys.com': {\n\t\tc: '1684495',\n\t\ts: '34399',\n\t\tf: '202401241738220'\n\t},\n\t'homewatersystemspros.com': {\n\t\tc: '1684679',\n\t\ts: '3086',\n\t\tf: '202402061238410'\n\t},\n\t'foundationandbasements.com': {\n\t\tc: '1685478',\n\t\ts: '3086',\n\t\tf: '202405021159440'\n\t},\n\t'topinsulationpros.com': {\n\t\tc: '1686466',\n\t\ts: '3086',\n\t\tf: '202408211814210'\n\t},\n\t'getwaterdamagehelp.com': {\n\t\tc: '1686734',\n\t\ts: '3086',\n\t\tf: '202409231230430'\n\t},\n\t'callrestorationpro.com': {\n\t\t'mold-damage': {\n\t\t\tc: '1687036',\n\t\t\ts: '3086',\n\t\t\tf: '202410171155570'\n\t\t},\n\t\t'water-damage': {\n\t\t\tc: '1687043',\n\t\t\ts: '3086',\n\t\t\tf: '202410171202560'\n\t\t},\n\t\tsewage: {\n\t\t\tc: '1687040',\n\t\t\ts: '3086',\n\t\t\tf: '202410171201130'\n\t\t},\n\t\t'fire-smoke-damage': {\n\t\t\tc: '1687033',\n\t\t\ts: '3086',\n\t\t\tf: '202410171150310'\n\t\t}\n\t},\n\t'localgaragedoorpros.org': {\n\t\tc: '1687046',\n\t\ts: '3086',\n\t\tf: '202410171204190'\n\t},\n\t'dabellaroofers.com': {\n\t\tc: '1687219',\n\t\ts: '35730',\n\t\tf: '202411010712090'\n\t},\n\t'callplumber247.com': {\n\t\tc: '1687378',\n\t\ts: '3086',\n\t\tf: '202411151459290'\n\t},\n\t'localbathremodelcost.com': {\n\t\tc: '1687744',\n\t\ts: '3086',\n\t\tf: '202501071443360'\n\t},\n\t'arsairconditioning.com': {\n\t\tc: '1687884',\n\t\ts: '35730',\n\t\tf: '202501171139360'\n\t},\n\t'leafguardpros.com': {\n\t\tc: '1687885',\n\t\ts: '35730',\n\t\tf: '202501171141140'\n\t},\n\t'homepromobilitystairlifts.com': {\n\t\tc: '1688047',\n\t\ts: '35730',\n\t\tf: '202502061236280'\n\t},\n\t'wholehomewatersystems.org': {\n\t\tc: '1688120',\n\t\ts: '3086',\n\t\tf: '202502181424190'\n\t},\n\t'basementsystemspros.com': {\n\t\tc: '1688318',\n\t\ts: '35730',\n\t\tf: '202503022357110'\n\t},\n\t'homefoundationrepairpros.com': {\n\t\tc: '1685483',\n\t\ts: '3086',\n\t\tf: '202405021205360'\n\t}\n};","import { getDefaultQuadByDomain } from '../../helpers';\n/**\n * Get default quad link based on service\n * @param {String} service - Landing Page service (vertical)\n * @returns {String} Quad Link\n */\nexport function getDefaultQuad(service) {\n\tlet c, s, f, finalLink = '';\n\tconst valuesByDomain = getDefaultQuadByDomain();\n\n\t// allows us to pass in a custom object to create the default quadlink\n\tif (typeof service === 'object' && service !== null) {\n\t\t({ c, s, f } = service);\n\t} else if (valuesByDomain) {\n\t\tc = typeof valuesByDomain.c === 'object' ? valuesByDomain.c[service] : valuesByDomain.c;\n\t\t({ s, f } = valuesByDomain);\n\t}\n\n\tfinalLink = `http://o1.qnsr.com/cgi/r?;n=203;c=${c};s=${s};x=7936;f=${f};u=j;z=TIMESTAMP;&default=yes;`;\n\n\treturn finalLink;\n}\n","import { defaultQuadLinkValues } from './defaultQuadLinkValues';\n\n/**\n * Get default quad link based on page domain\n * @returns {Object} Quad Link object value\n */\n\nexport function getDefaultQuadByDomain() {\n\tconst page = window.modForm.opts.websiteName.replace(/(qa\\.?|staging\\.?|www\\.?)/g, '');\n\n\tif (page.includes('bestcompany')) {\n\t\tlet service = window.modForm.opts.landingPage.split('/');\n\t\tservice = service[2].replace(/-/g, '');\n\t\treturn defaultQuadLinkValues[page][service];\n\t} else if (page.indexOf('quotes.improvementcenter.com') > -1 || page.indexOf('callrestorationpro.com') > -1 || page.indexOf('modernize.com') > -1 || page.indexOf('powerhomedeals.com') > -1) {\n\t\tlet service = window.modForm.opts.landingPage.replace(/\\/$/g, '').replace(/^(?:[^/]*\\/)+/g, '');\n\t\tservice = (typeof defaultQuadLinkValues[page][service] !== 'undefined') ? service : 'default';\n\t\treturn defaultQuadLinkValues[page][service];\n\t}\n\n\treturn defaultQuadLinkValues[page];\n}\n","/**\n * Get API domain based on whether this is testing or production env\n * @returns {String} QS domain to use\n */\nexport function getQSApiDomain() {\n\tlet domain = 'https://hsleadpost1.quinstage.com/';\n\tconst env = window.modUtils.getEnv();\n\n\tif (env === 'production') {\n\t\tdomain = 'https://hs.leadpost.net/';\n\t}\n\n\treturn domain;\n}\n","export function heapIdentify() {\n\tif (window.heap) {\n\t\t// Heap Identify only if we have a click key value available\n\t\tif (typeof window.modForm.opts.quadLinkParams.CLK !== 'undefined') {\n\t\t\tif (window.modUtils.getEnv() === 'production') {\n\t\t\t\tif ('heap' in window && window.heap.identity === null) {\n\t\t\t\t\twindow.Modalytics.heap('identify', [window.modForm.opts.quadLinkParams.CLK]);\n\t\t\t\t} else if (!window.heapListenerInitialized) {\n\t\t\t\t\twindow.addEventListener('heapCookieResolved', function() {\n\t\t\t\t\t\twindow.Modalytics.heap('identify', [window.modForm.opts.quadLinkParams.CLK]);\n\t\t\t\t\t}, { once: true });\n\n\t\t\t\t\twindow.heapListenerInitialized = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twindow.Modalytics.heap('identify', [window.modForm.opts.quadLinkParams.CLK]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tdocument.addEventListener('heap.loaded', function() {\n\t\t\theapIdentify();\n\t\t});\n\t}\n}\n","\n/**\n * Function to add heap event properties\n *\n * @param {[]} [properties=[]] - Array of properties\n * @returns {void}\n */\nexport const addToHeapEventAndUserProperties = function(properties = []) {\n\tconst _fn = function(props) {\n\t\tif (props && Array.isArray(props) && props.length) {\n\t\t\tprops.forEach(function(prop) {\n\t\t\t\tif (prop) {\n\t\t\t\t\twindow.Modalytics.heap('addEventProperties', prop);\n\t\t\t\t\twindow.Modalytics.heap('addUserProperties', prop);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\tif (window.heap) {\n\t\t_fn(properties);\n\t} else {\n\t\tdocument.addEventListener('heap.loaded', function() {\n\t\t\t_fn(properties);\n\t\t});\n\t}\n};\n","export const opts = {\n\tvertical: null, // trade of a form; possible values: solar, windows, hvac, roofing, siding\n\tform: document.getElementById('form'),\n\tformId: 'form',\n\tformLoadingCls: 'form--loading',\n\tformSubmittingCls: 'form--submitting',\n\tformSubmittedCls: 'form--submit-done',\n\tformSubmitErrorCls: 'form--submit-error',\n\tformInProgressCls: 'form-in-progress',\n\tstepsSelector: '[data-bind=\"step\"]', // steps selector\n\tstepActiveCls: 'step--active', // step active class\n\tbackButtons: document.querySelectorAll('.back-btn, .btn-back, [data-btn=\"back\"]'),\n\tprogressBar: document.querySelectorAll('.progress-bar'),\n\tmodQuoteButtonWrapper: document.querySelectorAll('.form-btns'),\n\tisFormLoading: false,\n\tformElemsSelectors: {},\n\tformElemsSelectorsDefaults: {\n\t\ttcpaCopy: '#tcpa-copy', // TCPA visible copy; text version for API will be pulled from it\n\t\tmaskedPhoneFields: 'input[name=\"homePhone\"]',\n\t\tmaskedEinFields: 'input[name=\"ein\"]',\n\t\tnumericsOnlyFields: 'input[name=\"zip\"], input[name=\"zip1\"], input[name=\"companyZip\"]',\n\t\taddressField: 'input[name=\"address\"]',\n\t\tstateField: 'input[name=\"state\"]',\n\t\tcityField: 'input[name=\"city\"]',\n\t\tzip1Field: 'input[name=\"zip1\"]',\n\t\tzipField: 'input[name=\"zip\"]',\n\t\trepairField: 'input[name=\"repair\"]',\n\t\thvacWouldReplaceBlock: '#hvac-would-replace-block', // block that contains wouldReplace control,\n\t\thvacSystemTypeField: 'input[name=\"hvacSystemType\"]',\n\t\thvacFuelTypeBlock: '#hvac-fuel-type-block', // block that contains hvacFuelType control\n\t\tutilityProviderWrapper: '#utility-provider-wrapper'\n\t},\n\thvacSystemTypesWithFuel: ['Central Heating', 'Boiler'], // Array of hvac system types (lowercase) that require fuel type selection\n\tactiveInputs:\n\t\t'.step.swiper-slide-active input[type=text], .step.swiper-slide-active input[type=tel], .step.swiper-slide-active input[type=email], .step.swiper-slide-active textarea, .step.swiper-slide-active input[type=radio]',\n\tfieldErrorCls: 'has-error',\n\terrorParentCls: 'parent-error',\n\tgaTracker: 'main', // GA tracker to use\n\tthankyouPage: '/thankyou/',\n\tlandingPage: window.location.protocol + '//' + window.location.host + window.location.pathname + (window.location.search ? window.location.search : ''),\n\thashStepTracking: false,\n\tuseModApi: false,\n\tuseQSApi: false,\n\tuseFormsServiceApi: false,\n\tuserObj: {},\n\tformSwiperInstance: '',\n\tprepopulateUserInfo: false,\n\tuseGetMotivationParam: true,\n\tuseAutofill: false,\n\tuseSmoothScrolling: false,\n\thasZipChange: false,\n\ttrackZip1ChangeDynamically: false,\n\ttrackZipChangeDynamically: false,\n\tuseTooltips: false,\n\tshowSecureText: false,\n\tuseObserveVWOVariation: false,\n\tobservedTargetNode: document.body, // Select the node that will be observed for mutations\n\tobserverConfig: { attributes: true }, // Options for the observer which mutations to observe\n\tvwoVariationDataAttribute: 'data-vwo-test',\n\tobserveVWOVariationCallback: function() { },\n\tvwoVariationDataAttributeValue: '', // Should be the JIRA ticket number of that test\n\tsecureTextStepsSelector: ['.step--personalInfo', '.step--contactInfo'],\n\tsecureTextPosition: 'below-cta', // Options are 'below-cta' & 'above-cta'\n\tuseEncryptedSecureText: false, // Making this true will change the secure text copy to \"Encryted form...\"\n\tisLoaderLoaded: false,\n\tisLoaderAssetsLoaded: false,\n\tshowLoadingOverlay: false,\n\tshowRedirectOverlay: false,\n\tappendOverlayToElem: document.getElementById('form'),\n\tignoreDuplicateSubmissionBlocker: false,\n\thvacVerticalName: 'hvac', // To trigger initHvacWouldReplaceBlock function for both Mod & QS\n\thvacRepairFieldValue: 'yes',\n\taddAccessibilityUpdates: false,\n\tuseGlobalInitCarousel: false,\n\tisOrganicPreferredMatch: false, // use for preferred match\n\twidgetHashStepTracking: false, // receive messages from child iframes\n\t/**\n\t * this fires before form is submitted;\n\t * @param {Object} formData - form data in key/value form\n\t * @returns {Object} - formData to submit to server or false to stop submitting\n\t */\n\tformSubmittingCallback: null,\n\n\t/**\n\t * this fires when submitting form data to server was successful\n\t * @param {Object} response - server response\n\t */\n\tformSubmitSuccessCallback: null,\n\n\t/**\n\t * this fires when submitting form data to server returned an error\n\t * @param {Object} response - server response\n\t */\n\tformSubmitErrorCallback: null,\n\n\t/**\n\t * this fires before step is changed;\n\t * @param {String} oldStepId - current step ID\n\t * @param {String} stepId - new step ID\n\t * @returns {Mixed} - step ID to switch to or false to stop switching\n\t */\n\tstepChangingCallback: null,\n\n\t/**\n\t * this fires after step is changed\n\t * @param {String} oldStepId - current step ID\n\t * @param {String} stepId - new step ID\n\t */\n\tstepChangedCallback: null,\n\n\t/**\n\t * this fires after zip code is validated on the server\n\t * @param {Object} geoData - city and state object\n\t */\n\tzipCodeValidated: null,\n\n\t/**\n\t * this fires after the zip control field is validated on the server\n\t * @param {Object} geoData - city and state object\n\t */\n\tzip1FieldValidated: null,\n\n\t/**\n\t * this fires after the getConsentListing() function is called\n\t */\n\tgetConsentListingCallback: null,\n\n\tshouldSuppressConversionPixel: false,\n\tsuppressConversionPixelParam: 'cnvrsnpxl=n',\n\tuseStepNameHash: false,\n\tdelayQuadTransformation: false,\n\tisFirePixelTrue: false,\n\tfirePixelParam: 'firepxl=y',\n\tisSharedMatch: false,\n\teCommerceVendorKeys: {\n\t\tshared: { // these will get a shared= param added to their HRC results page (to add a secondary button for their E-Commerce flow)\n\t\t\tfrontdoor: '33097210'\n\t\t},\n\t\texclusive: { // these will trigger an exclusive experience if solely matched with one of these vendors\n\t\t\tairo: '31194410',\n\t\t\tangi: '31816410',\n\t\t\tcove: '33788010',\n\t\t\tfrontdoor: '33097210',\n\t\t\tnetworx: '11968410'\n\t\t},\n\t\tconsent: {\n\t\t\tadopt: '31096410'\n\t\t}\n\t},\n\teCommerceExclusiveLoaders: {\n\t\tfrontdoor: [\n\t\t\t`${window.modUtils ? window.modUtils.getModernizeDomain() : 'https://modernize.com'}/quote/resources/assets/images/logos/partners/american-home-shield.svg`,\n\t\t\t'Congrats! You&rsquo;re eligible to see pricing from American Home Shield now.',\n\t\t\t'#004B98',\n\t\t\t'#ED1C24',\n\t\t\t'#004B98',\n\t\t\t'#F9F9F6'\n\t\t],\n\t\tangi: [\n\t\t\t`${window.modUtils ? window.modUtils.getModernizeDomain() : 'https://modernize.com'}/quote/resources/assets/images/logos/partners/angi.svg`,\n\t\t\t'Transferring to Angi',\n\t\t\t'#A03027',\n\t\t\t'#FF6153',\n\t\t\t'#A03027',\n\t\t\t'#F9F9F6'\n\t\t],\n\t\tcove: [\n\t\t\t`${window.modUtils ? window.modUtils.getModernizeDomain() : 'https://modernize.com'}/quote/resources/assets/images/logos/partners/cove.svg`,\n\t\t\t'Transferring to Cove',\n\t\t\t'#002334',\n\t\t\t'#3EBEB0',\n\t\t\t'#002334',\n\t\t\t'#F9F9F6'\n\t\t],\n\t\tnetworx: [\n\t\t\t`${window.modUtils ? window.modUtils.getModernizeDomain() : 'https://modernize.com'}/quote/resources/assets/images/logos/partners/networx.svg`,\n\t\t\t'Transferring to Networx',\n\t\t\t'#344054',\n\t\t\t'#0088FF',\n\t\t\t'#344054',\n\t\t\t'#F9F9F6'\n\t\t]\n\t},\n\tsharedParam: 'shared=',\n\tisExclusiveMatch: false,\n\tisBrandedExclusiveMatch: false,\n\texclusiveMatchResultsPage: '',\n\texclusiveMatchVendor: '',\n\tresultsPageAdditionalParams: {},\n\tprefVendorKeys: [],\n\tprefVendorParam: 'prefVendor=',\n\tlandingPageSubdirectory: '',\n\tisCrossSellForm: false,\n\tshouldUpdateTCPACompanyNameToModernize: true,\n\tvalidateRecaptcha: false,\n\trecaptchaVersion: 3,\n\tisVite: false,\n\tscrollTopOnStepChange: true,\n\tignoreQueryParams: [],\n\tignoreQueryParamsInSessionStorage: false,\n\tautoRedirectToTyOrSorryPage: true,\n\tphoneAssignmentConfig: {\n\t\tshowPhoneAssignmentNumber: false,\n\t\tphoneNumberLinksSelector: '[class*=call-link],[class*=call-button]',\n\t\tphoneNumbersTextSelector: '[class*=call-number]',\n\t\tphoneNumberContainerSelector: '.call-tracking-controls',\n\t\tquestQuadTagId: {\n\t\t\tstaging: '',\n\t\t\tprod: ''\n\t\t},\n\t\tmatchVendors: [],\n\t\tresponse: null,\n\t\tuseHsEndpoint: false,\n\t\tformatNumberWithBracketsAndDash: false,\n\t\tskipMatching: false,\n\t\tgetPhoneAssignmentDataCallback: null,\n\t\tcustomPhoneNumber: '' // We will show the number passed here in the UI, when user's zip is in call coverage\n\t},\n\tfetchAndFormatConsentListings: false, // This Fetches consent listing tcpa vendors, sends the updated tcpa to the lead and formats the list of vendors\n\tconsentCaptureDetails: '',\n\tignoreSendingUserTcpaToHeap: false, // This should be true for wholesale implementations\n\tsendConsentCaptureTcpaToLead: false, // This is purely for tcpa a/b tests where we don't want to fetch consent listings globally but want to send updated tcpa in the lead\n\tformatConsentCaptureVendors: false, // This is purely for tcpa a/b tests where we don't want to fetch consent listings globally but want to format the list of vendors in the tcpa,\n\toriginalTcpa: '',\n\tconsentRequestId: '',\n\tconsentCaptureVendors: [],\n\tconsentCaptureLabels: {\n\t\twasPreChecked: true,\n\t\twasOfferedSelectAll: false,\n\t\twasPreSubmit: true\n\t},\n\trerunConsentSearchesOnInputChange: false,\n\tconsentCaptureInputChangeSelector: 'input',\n\tserviceSpecificAttributes: {},\n\tshowBrandedResultPage: false,\n\tuseGlobalSkipSteps: false,\n\tskipStepVertical: null,\n\tskipStepsConfig: {},\n\tdisableRecaptcha: false,\n\tformSubmittingCallbackBeforeFormPost: null\n};\n","/* globals modForm modUtils Modalytics */\n/**\n * HS Endpoints:\n * Dev: https://hsapiservice.dev.quinstreet.net/calls/matches\n * Stage: https://hsapiservice.quinstage.com/calls/matches\n * Prod: https://form-service-hs.qnst.com/calls/matches\n *\n * Quest Endpoints:\n * Dev: ivr.dev.quinstreet.net/number\n * Stage: ivr.quinstage.com/number\n * Prod: ivr.quinstreet.com/number\n */\n/**\n * This function gets the phone assignment data from the quest api.\n * @param {object} trafficDetails - Accepts response object of `TrafficDetails` api.\n * @param {boolean} shouldUpdateExistingPhoneAssignment - Pass `true` if this function is being called multiple times\n * @returns {void}\n */\nlet abortController = null;\nexport const getPhoneAssignmentData = function(trafficDetails, shouldUpdateExistingPhoneAssignment = false) {\n\tif (abortController) {\n\t\tabortController.abort('Current pending request has been aborted. Initiating a new request.');\n\t}\n\tconst currentParams = modUtils.getUrlParamsToObject();\n\tconst campaignAttributes = ['ad', 'gclid', 'msclkid', 'vmcid', 'tbcid', 'fb_ad_id', 'fb_campaign_id', 'fbclid', 'fb_adset_id'];\n\tconst { CCID, CLK, QTR, tagId } = trafficDetails;\n\tconst { phoneNumberContainerSelector, phoneNumberLinksSelector, useHsEndpoint, phoneNumbersTextSelector, matchVendors, formatNumberWithBracketsAndDash, skipMatching, getPhoneAssignmentDataCallback, customPhoneNumber } = modForm.opts.phoneAssignmentConfig;\n\tconst { vendorKey, PartnerSourceID } = currentParams;\n\tconst TradingPlatformTrackingInfo = {};\n\tconst isProductionEnv = modUtils.getEnv() === 'production';\n\tconst isLocalEnv = modUtils.getEnv() === 'local';\n\tconst phoneNumberRegex = new RegExp(/(\\d{3})(\\d{3})(\\d{4})/g);\n\tconst phoneNumberContainers = document.querySelectorAll(phoneNumberContainerSelector);\n\tconst phoneNumberLinks = document.querySelectorAll(phoneNumberLinksSelector);\n\tlet url = '';\n\tlet payload = {};\n\tlet requestBody = payload;\n\n\tconst hsApiDomain = `https://${isProductionEnv ? 'form-service-hs.qnst.com' : 'hsapiservice.quinstage.com'}`;\n\tconst questApiDomain = `https://${isProductionEnv ? 'ivr.quinstreet.com' : 'ivr.quinstage.com'}`;\n\tconst requestHeaders = new Headers();\n\trequestHeaders.append('Accept', 'application/json');\n\n\tconst hidePhoneNumberContainers = () => {\n\t\twindow.fetchedPhoneNumber = null;\n\t\tdocument.body.classList.remove('call-tracking');\n\t\tModalytics.heap('track', ['Phone Assignment', {\n\t\t\tphoneNumber: false,\n\t\t\tupdatedExistingPhoneAssignment: shouldUpdateExistingPhoneAssignment\n\t\t}]);\n\t};\n\n\tconst showPhoneNumber = (phoneNumber, extension, phoneAssignmentKey) => {\n\t\twindow.fetchedPhoneNumber = `${phoneNumber}${extension ? `,${extension}` : ''}`;\n\t\tconst shouldDisplayPhoneNumber = (phoneNumberLinks && phoneNumberLinks.length) && (phoneNumberContainers && phoneNumberContainers.length) && phoneNumber;\n\n\t\tif (shouldDisplayPhoneNumber) {\n\t\t\tdocument.body.classList.add('call-tracking');\n\t\t\tconst formattedPhoneNumber = phoneNumber.replace(phoneNumberRegex, `${formatNumberWithBracketsAndDash ? '($1) $2-$3' : '$1-$2-$3'}`);\n\t\t\tconst formattedPhoneNumberWithExtension = `${formattedPhoneNumber}${extension ? ` <span class=\"call-extension\">Ext: ${extension}</span>` : ''}`;\n\t\t\tmodForm.opts.phoneAssignmentConfig.response = {\n\t\t\t\tdisplayNumber: formattedPhoneNumberWithExtension,\n\t\t\t\threfPhoneNumber: `${phoneNumber}${extension ? `,${extension}` : ''}`,\n\t\t\t\textension,\n\t\t\t\tphoneNumber,\n\t\t\t\tformattedPhoneNumber,\n\t\t\t\tphoneAssignmentKey\n\t\t\t};\n\t\t\tphoneNumberLinks.forEach((phoneNumberLink) => {\n\t\t\t\tphoneNumberLink.setAttribute('href', `tel:${phoneNumber}${extension ? `,${extension}` : ''}`);\n\t\t\t\tconst phoneNumberTextNode = phoneNumberLink.querySelector(phoneNumbersTextSelector);\n\t\t\t\tif (phoneNumberTextNode) {\n\t\t\t\t\tphoneNumberTextNode.innerHTML = formattedPhoneNumberWithExtension;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tModalytics.heap('track', ['Phone Assignment', {\n\t\t\t\tphoneNumber: true,\n\t\t\t\textension: extension ? true : false,\n\t\t\t\tupdatedExistingPhoneAssignment: shouldUpdateExistingPhoneAssignment\n\t\t\t}]);\n\t\t}\n\t};\n\n\tconst zip = modForm.opts?.zipCode || null;\n\tlet zipForLocalizedAssignment = null;\n\tif (!zip) {\n\t\tzipForLocalizedAssignment = window.geolocation?.currentLocation?.zipcode || null;\n\t}\n\n\tif (useHsEndpoint) {\n\t\trequestHeaders.append('Content-Type', 'application/json');\n\t\turl = `${hsApiDomain}/calls/matches`;\n\n\t\tpayload = {\n\t\t\tccid: CCID || null,\n\t\t\tclk: CLK || null,\n\t\t\tqtr: QTR || null,\n\t\t\tzipForLocalizedAssignment,\n\t\t\tzip,\n\t\t\tservice: modForm.opts.vertical,\n\t\t\tlandingPageURL: window.location.href,\n\t\t\tmatchVendors: (Array.isArray(matchVendors) && matchVendors.length) ? matchVendors : [-1],\n\t\t\tskipMatching: skipMatching,\n\t\t\tsite: modForm?.opts?.websiteName || null\n\t\t};\n\n\t\tif (!payload.zip && isLocalEnv) {\n\t\t\tpayload.zip = '94404';\n\t\t}\n\n\t\tif (customPhoneNumber) {\n\t\t\tpayload.assignPhoneNumber = false;\n\t\t}\n\n\t\t// If VWO is loaded and there's an active campaign\n\t\tif (window._vwo_campaignData && Object.keys(window._vwo_campaignData).length !== 0) {\n\t\t\tpayload.trackingInfo = {\n\t\t\t\t'VWOID': Object.keys(window._vwo_campaignData)[0],\n\t\t\t\t'VWOVariationName': Object.values(window._vwo_campaignData)[0].n\n\t\t\t};\n\t\t}\n\n\t\tif (shouldUpdateExistingPhoneAssignment && modForm.opts.phoneAssignmentConfig.response && modForm.opts.phoneAssignmentConfig.response.phoneAssignmentKey) {\n\t\t\tpayload.vendorPhoneAssignmentKeys = {\n\t\t\t\t[payload.matchVendors[0]]: modForm.opts.phoneAssignmentConfig.response.phoneAssignmentKey\n\t\t\t};\n\t\t}\n\n\t\trequestBody = JSON.stringify(payload);\n\t} else {\n\t\trequestHeaders.append('Content-Type', 'application/x-www-form-urlencoded');\n\t\turl = `${questApiDomain}/number`;\n\t\tpayload = {\n\t\t\tSourceClickKey: CLK || '',\n\t\t\tLandingQuadTagID: tagId || '',\n\t\t\tPC: zip,\n\t\t\tpcforlocalized: zipForLocalizedAssignment,\n\t\t\tPortalServiceCode: modForm.opts.vertical,\n\t\t\tservice: 'assign',\n\t\t\tBusinessUnit: 'FC',\n\t\t\tQS_CATEGORY: 'Home Services',\n\t\t\tTradingPlatformTrackingInfo: '',\n\t\t\tvendorKeys: vendorKey ? vendorKey : '-1',\n\t\t\tquadTagId: isProductionEnv ? modForm.opts.phoneAssignmentConfig.questQuadTagId.prod : modForm.opts.phoneAssignmentConfig.questQuadTagId.staging,\n\t\t\tAffiliateSubID: PartnerSourceID || ''\n\t\t};\n\n\t\tif (currentParams && Object.keys(currentParams).length) {\n\t\t\tObject.keys(currentParams).forEach(function(key) {\n\t\t\t\tif (campaignAttributes.includes(key)) {\n\t\t\t\t\tTradingPlatformTrackingInfo[key] = currentParams[key];\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tpayload.TradingPlatformTrackingInfo = JSON.stringify(TradingPlatformTrackingInfo);\n\n\t\trequestBody = new URLSearchParams(payload).toString();\n\t}\n\n\tabortController = new AbortController();\n\tconst signal = abortController.signal;\n\n\tconst requestOptions = {\n\t\tmethod: 'POST',\n\t\theaders: requestHeaders,\n\t\tredirect: 'follow',\n\t\tmode: 'cors',\n\t\tbody: requestBody,\n\t\tsignal\n\t};\n\n\tfetch(url, requestOptions)\n\t\t.then(response => response.json())\n\t\t.then(jsonResponse => {\n\t\t\tif (useHsEndpoint) {\n\t\t\t\tif (jsonResponse && jsonResponse.status === 'success') {\n\t\t\t\t\tconst { data } = jsonResponse;\n\t\t\t\t\tconst { phoneDetails, matches } = data;\n\t\t\t\t\tlet phoneNumberData;\n\t\t\t\t\tif (!phoneDetails) {\n\t\t\t\t\t\tphoneNumberData = modForm.opts.phoneAssignmentConfig.response;\n\t\t\t\t\t\tif (customPhoneNumber && matches && matches.length) {\n\t\t\t\t\t\t\tphoneNumberData = {\n\t\t\t\t\t\t\t\tphoneNumber: customPhoneNumber\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tphoneNumberData = phoneDetails[payload.matchVendors[0]];\n\t\t\t\t\t}\n\t\t\t\t\tconst { phoneNumber, extension, phoneAssignmentKey } = phoneNumberData;\n\t\t\t\t\tshowPhoneNumber(phoneNumber, extension, phoneAssignmentKey);\n\t\t\t\t} else {\n\t\t\t\t\thidePhoneNumberContainers();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (jsonResponse && Object.keys(jsonResponse).length) {\n\t\t\t\t\tconst phoneNumberData = jsonResponse[payload.vendorKeys];\n\n\t\t\t\t\tif (!phoneNumberData || phoneNumberData.constructor !== Object) {\n\t\t\t\t\t\thidePhoneNumberContainers();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { ccPhoneNum, extn } = phoneNumberData;\n\t\t\t\t\tshowPhoneNumber(ccPhoneNum, extn);\n\t\t\t\t} else {\n\t\t\t\t\thidePhoneNumberContainers();\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\t.catch(error => {\n\t\t\tif (signal.aborted) {\n\t\t\t\tconsole.log(signal.reason);\n\t\t\t\tModalytics.heap('track', ['Phone Assignment', {\n\t\t\t\t\tisRequestAborted: true\n\t\t\t\t}]);\n\t\t\t} else {\n\t\t\t\thidePhoneNumberContainers();\n\t\t\t\tconsole.log('Something went wrong!', error);\n\t\t\t}\n\t\t}).finally(() => {\n\t\t\tif (getPhoneAssignmentDataCallback) {\n\t\t\t\tgetPhoneAssignmentDataCallback();\n\t\t\t}\n\t\t});\n};\n","import { getHeapSessionIdCookieData, initDuplicateSubmissionExperience, getPhoneAssignmentData } from '../helpers';\n/**\n * Validate Zip Code\n * @param {String} zip - zip code to validate\n * @param {Function} callback - callback function after server response\n *\n */\nexport function isZipCodeValid(zip, callback) {\n\tconst timeOut = window.modForm.opts.getVars && window.modForm.opts.getVars.timeout && window.modUtils.getEnv() !== 'production' ? Number(window.modForm.opts.getVars.timeout) : 3000,\n\t\tapiDomain = `https://${window.modUtils.getEnv() === 'production' ? 'hs.leadpost.net/' : 'hsleadpost1.quinstage.com/'}`,\n\t\tzipEditInput = document.querySelectorAll(window.modForm.zipEditInput)[0];\n\tconst currentParams = window.modUtils.getUrlParamsToObject();\n\tconst { phoneAssignmentConfig, quadLinkParams } = window.modForm.opts;\n\tconst shouldCallPhoneAssignmentApi = phoneAssignmentConfig.showPhoneAssignmentNumber && phoneAssignmentConfig.useHsEndpoint && !currentParams.startStep && (quadLinkParams && Object.keys(quadLinkParams).length);\n\tconst request = new XMLHttpRequest();\n\tlet response = {};\n\trequest.open('GET', `${apiDomain}api/PostalCordinateInfo/${zip}/get`);\n\trequest.timeout = timeOut;\n\trequest.send();\n\trequest.addEventListener('load', function() {\n\t\tif (this.response) {\n\t\t\tresponse = { ...response, ...JSON.parse(this.response) };\n\t\t\tif (this.readyState === 4 && this.status === 200) {\n\t\t\t\tresponse.success = true;\n\t\t\t\tresponse.data = JSON.parse(this.response);\n\t\t\t\tresponse.data.zip = zip;\n\n\t\t\t\tif (zipEditInput && zipEditInput.style.display === 'hidden') {\n\t\t\t\t\tdocument.querySelector(window.modForm.zipEditControlCls).style.display = 'block';\n\t\t\t\t}\n\t\t\t\twindow.modForm.retryZipValidation = false;\n\n\t\t\t\tif ('function' === typeof callback) {\n\t\t\t\t\tcallback(response);\n\t\t\t\t}\n\n\t\t\t\tif (shouldCallPhoneAssignmentApi) {\n\t\t\t\t\tgetPhoneAssignmentData(window.modForm.opts.quadLinkParams, true);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ('function' === typeof callback) {\n\t\t\t\t\tif (response.status === 400) {\n\t\t\t\t\t\tcallback({\n\t\t\t\t\t\t\terror: true,\n\t\t\t\t\t\t\tmessage: response.error_message\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcallback({});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\trequest.addEventListener('error', function() {\n\t\tconsole.error('Something went wrong');\n\n\t\t// Show duplicate submission fallback experience if API encounters network issues\n\t\tconst heapSessionIdCookieData = getHeapSessionIdCookieData();\n\t\tinitDuplicateSubmissionExperience(heapSessionIdCookieData);\n\t\twindow.modUtils.heap('track', ['API Error | Showing Fallback Experience', { function: 'isZipCodeValid' }]);\n\t});\n\trequest.addEventListener('timeout', function() {\n\t\twindow.modForm.retryZipValidation = true;\n\t\tif (window.modForm.opts.cityField[0]) {\n\t\t\twindow.modForm.opts.cityField[0].value = '';\n\t\t}\n\t\tif (window.modForm.opts.stateField[0]) {\n\t\t\twindow.modForm.opts.stateField[0].value = '';\n\t\t}\n\t\tif (document.querySelector(window.modForm.zipEditControlCls)) {\n\t\t\tdocument.querySelector(window.modForm.zipEditControlCls).style.display = 'none';\n\t\t}\n\t\tcallback({ success: true, data: { zip: zip } });\n\t});\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { opts, additionalOptions } from '../config';\nimport { addVWOTestQueryParam, observeVWOVariation, getPhoneAssignmentData, initQuadTransform } from '../helpers';\n\nexport const modForm = {\n\taddVWOTestQueryParam,\n\tobserveVWOVariation,\n\tgetPhoneAssignmentData,\n\tinitQuadTransform,\n\t...additionalOptions,\n\t...opts\n};"],"names":["observeVWOVariation","callback","targetNode","window","modForm","opts","observedTargetNode","config","observerConfig","MutationObserver","mutations","observer","mutation","type","target","hasAttribute","vwoVariationDataAttribute","getAttribute","indexOf","vwoVariationDataAttributeValue","disconnect","observe","additionalOptions","isSubmitting","isPhoneValid","isZipValid","areLeadTokenScriptsLoaded","loadedScripts","optedIn","inlineZip","mutationObserverTarget","document","body","mutationObserverConfig","attributes","projexURL","redirectStart","zipEditControlCls","zipEditInput","zipControlButton","querySelector","retryZipValidation","preventDuplicateSubmission","getTime","Date","radioButtonClickedByMouse","includeDuplicateSubmissionExperience","homeownerLeadConversionProps","addVWOTestQueryParam","vwoTestParam","Object","keys","getVars","filter","param","startsWith","vwoTestParamValue","testVersions","match","length","forEach","version","classLists","elementAttributeVal","split","className","element","getElementsByClassName","setAttribute","setTimeout","async","initQuadTransform","useIdlizeQueueInternally","arguments","undefined","hasMarketingParams","currentParams","getQueryParamsFromSessionStorage","modUtils","getUrlParamsToObject","hasQuadLink","hasOwnProperty","hastagID","heapMsg","message","marketingParams","some","qsParams","includes","toUpperCase","quadLinkParams","heapIdentify","eventPropertiesToAdd","AffiliateKey","push","addToHeapEventAndUserProperties","phoneAssignmentConfig","showPhoneAssignmentNumber","getPhoneAssignmentData","quadLinkUrl","quadLinkType","tagID","quadlink","getDefaultQuad","vertical","quadLinkData","getLandingPage","quadlinkInput","blindMatchQuad","defaultQuadLinkValues","findapro","replace","value","defaultQuad","IdlizeQueue","pushTask","transformQuadlink","heap","initDuplicateSubmissionExperience","heapSessionIdCookieData","activeStep","activeStepInner","form","formButtons","querySelectorAll","formTcpa","defaultResultsPage","landingPage","resultsPageUrl","resultsPage","suppressConversionPixelParam","classList","add","formLoadingCls","getCookie","dataLayer","event","setCookie","backButtons","backButton","style","display","progressBar","bar","formButton","alignItems","remove","isLeadWidget","innerHTML","addAccessibilityUpdates","populateFormWithZipData","zipData","name","populateInput","field","zip","populateLocationFieldsDynamically","geoData","userLocation","city","state","$userLocation","prepopFormFromURL","key","ignoreQueryParams","appendFormInput","prepopulateUserInfo","saveUserInfoToCookie","isZipCodeValid","response","success","data","zipCodeValidated","noPopulate","input","createElement","id","appendChild","$input","tagName","zip1","request","XMLHttpRequest","apiUrl","getQSApiDomain","trafficDetailsApi","open","setRequestHeader","send","JSON","stringify","addEventListener","this","parse","readyState","status","quadLinkHasBeenTransformed","console","error","toLowerCase","userObj","getHeapSessionIdCookieData","initialTimestamp","expireInOneHour","heapSessionSubmitCookie","heapSessionId","heapCookie","heapCookieData","sessionId","cookieValue","decodeURIComponent","isFrontdoorExclusiveMatch","queryParams","sessionStorage","getItem","parsedQueryParams","medicalalerts","c","s","f","showers","default","bathrooms","gutters","stairlifts","walkintubs","roofing","windows","siding","homewarranty","medicalalertsystems","homesecurity","solar","watersofteners","plumbing","treeservices","newwindows","hvac","hottubs","flooring","doors","cabinets","bathroomremodel","sewage","service","finalLink","valuesByDomain","getDefaultQuadByDomain","page","websiteName","domain","getEnv","CLK","identity","Modalytics","heapListenerInitialized","once","properties","_fn","props","Array","isArray","prop","getElementById","formId","formSubmittingCls","formSubmittedCls","formSubmitErrorCls","formInProgressCls","stepsSelector","stepActiveCls","modQuoteButtonWrapper","isFormLoading","formElemsSelectors","formElemsSelectorsDefaults","tcpaCopy","maskedPhoneFields","maskedEinFields","numericsOnlyFields","addressField","stateField","cityField","zip1Field","zipField","repairField","hvacWouldReplaceBlock","hvacSystemTypeField","hvacFuelTypeBlock","utilityProviderWrapper","hvacSystemTypesWithFuel","activeInputs","fieldErrorCls","errorParentCls","gaTracker","thankyouPage","location","protocol","host","pathname","search","hashStepTracking","useModApi","useQSApi","useFormsServiceApi","formSwiperInstance","useGetMotivationParam","useAutofill","useSmoothScrolling","hasZipChange","trackZip1ChangeDynamically","trackZipChangeDynamically","useTooltips","showSecureText","useObserveVWOVariation","observeVWOVariationCallback","secureTextStepsSelector","secureTextPosition","useEncryptedSecureText","isLoaderLoaded","isLoaderAssetsLoaded","showLoadingOverlay","showRedirectOverlay","appendOverlayToElem","ignoreDuplicateSubmissionBlocker","hvacVerticalName","hvacRepairFieldValue","useGlobalInitCarousel","isOrganicPreferredMatch","widgetHashStepTracking","formSubmittingCallback","formSubmitSuccessCallback","formSubmitErrorCallback","stepChangingCallback","stepChangedCallback","zip1FieldValidated","getConsentListingCallback","shouldSuppressConversionPixel","useStepNameHash","delayQuadTransformation","isFirePixelTrue","firePixelParam","isSharedMatch","eCommerceVendorKeys","shared","frontdoor","exclusive","airo","angi","cove","networx","consent","adopt","eCommerceExclusiveLoaders","getModernizeDomain","sharedParam","isExclusiveMatch","isBrandedExclusiveMatch","exclusiveMatchResultsPage","exclusiveMatchVendor","resultsPageAdditionalParams","prefVendorKeys","prefVendorParam","landingPageSubdirectory","isCrossSellForm","shouldUpdateTCPACompanyNameToModernize","validateRecaptcha","recaptchaVersion","isVite","scrollTopOnStepChange","ignoreQueryParamsInSessionStorage","autoRedirectToTyOrSorryPage","phoneNumberLinksSelector","phoneNumbersTextSelector","phoneNumberContainerSelector","questQuadTagId","staging","prod","matchVendors","useHsEndpoint","formatNumberWithBracketsAndDash","skipMatching","getPhoneAssignmentDataCallback","customPhoneNumber","fetchAndFormatConsentListings","consentCaptureDetails","ignoreSendingUserTcpaToHeap","sendConsentCaptureTcpaToLead","formatConsentCaptureVendors","originalTcpa","consentRequestId","consentCaptureVendors","consentCaptureLabels","wasPreChecked","wasOfferedSelectAll","wasPreSubmit","rerunConsentSearchesOnInputChange","consentCaptureInputChangeSelector","serviceSpecificAttributes","showBrandedResultPage","useGlobalSkipSteps","skipStepVertical","skipStepsConfig","disableRecaptcha","formSubmittingCallbackBeforeFormPost","abortController","trafficDetails","shouldUpdateExistingPhoneAssignment","abort","campaignAttributes","CCID","QTR","tagId","vendorKey","PartnerSourceID","TradingPlatformTrackingInfo","isProductionEnv","isLocalEnv","phoneNumberRegex","RegExp","phoneNumberContainers","phoneNumberLinks","url","payload","requestBody","hsApiDomain","questApiDomain","requestHeaders","Headers","append","hidePhoneNumberContainers","fetchedPhoneNumber","phoneNumber","updatedExistingPhoneAssignment","showPhoneNumber","extension","phoneAssignmentKey","formattedPhoneNumber","formattedPhoneNumberWithExtension","displayNumber","hrefPhoneNumber","phoneNumberLink","phoneNumberTextNode","zipCode","zipForLocalizedAssignment","geolocation","currentLocation","zipcode","ccid","clk","qtr","landingPageURL","href","site","assignPhoneNumber","_vwo_campaignData","trackingInfo","values","n","vendorPhoneAssignmentKeys","SourceClickKey","LandingQuadTagID","PC","pcforlocalized","PortalServiceCode","BusinessUnit","QS_CATEGORY","vendorKeys","quadTagId","AffiliateSubID","URLSearchParams","toString","AbortController","signal","fetch","method","headers","redirect","mode","then","json","jsonResponse","phoneDetails","matches","phoneNumberData","constructor","ccPhoneNum","extn","catch","aborted","log","reason","isRequestAborted","finally","timeOut","timeout","Number","apiDomain","shouldCallPhoneAssignmentApi","startStep","error_message","function","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","d","definition","o","defineProperty","enumerable","get","obj","prototype","call","r","Symbol","toStringTag"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ !function(){"use strict";var e={d:function(n,o){for(var t in o)e.o(o,t)&&!e.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:o[t]})},o:function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},r:function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},n={};e.r(n),e.d(n,{getPhoneAssignmentData:function(){return t}});let o=null;const t=function(e){let n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];o&&o.abort("Current pending request has been aborted. Initiating a new request.");const t=modUtils.getUrlParamsToObject(),s=["ad","gclid","msclkid","vmcid","tbcid","fb_ad_id","fb_campaign_id","fbclid","fb_adset_id"],{CCID:i,CLK:r,QTR:a,tagId:c}=e,{phoneNumberContainerSelector:d,phoneNumberLinksSelector:l,useHsEndpoint:m,phoneNumbersTextSelector:p,matchVendors:g,formatNumberWithBracketsAndDash:u,skipMatching:h}=modForm.opts.phoneAssignmentConfig,{vendorKey:f,PartnerSourceID:b}=t,y={},v="production"===modUtils.getEnv(),w="local"===modUtils.getEnv(),A=new RegExp(/(\d{3})(\d{3})(\d{4})/g),P=document.querySelectorAll(d),S=document.querySelectorAll(l);let C="",_={},k=_;const O="https://"+(v?"form-service-hs.qnst.com":"hsapiservice.quinstage.com"),T="https://"+(v?"ivr.quinstreet.com":"ivr.quinstage.com"),$=new Headers;$.append("Accept","application/json");const j=()=>{document.body.classList.remove("call-tracking"),Modalytics.heap("track",["Phone Assignment",{phoneNumber:!1,updatedExistingPhoneAssignment:n}])},N=(e,o,t)=>{if(S&&S.length&&P&&P.length&&e){document.body.classList.add("call-tracking");const s=e.replace(A,""+(u?"($1) $2-$3":"$1-$2-$3")),i=`${s}${o?` <span class="call-extension">Ext: ${o}</span>`:""}`;modForm.opts.phoneAssignmentConfig.response={displayNumber:i,hrefPhoneNumber:`${e}${o?`,${o}`:""}`,extension:o,phoneNumber:e,formattedPhoneNumber:s,phoneAssignmentKey:t},S.forEach((n=>{n.setAttribute("href",`tel:${e}${o?`,${o}`:""}`);const t=n.querySelector(p);t&&(t.innerHTML=i)})),Modalytics.heap("track",["Phone Assignment",{phoneNumber:!0,extension:!!o,updatedExistingPhoneAssignment:n}])}},q=modForm.opts?.zipCode||null;let F=null;q||(F=window.geolocation?.currentLocation?.zipcode||null),m?($.append("Content-Type","application/json"),C=`${O}/calls/matches`,_={ccid:i||null,clk:r||null,qtr:a||null,zipForLocalizedAssignment:F,zip:q,service:modForm.opts.vertical,landingPageURL:window.location.href,matchVendors:Array.isArray(g)&&g.length?g:[-1],skipMatching:h,site:modForm?.opts?.websiteName||null},!_.zip&&w&&(_.zip="94404"),window._vwo_campaignData&&0!==Object.keys(window._vwo_campaignData).length&&(_.trackingInfo={VWOID:Object.keys(window._vwo_campaignData)[0],VWOVariationName:Object.values(window._vwo_campaignData)[0].n}),n&&modForm.opts.phoneAssignmentConfig.response&&modForm.opts.phoneAssignmentConfig.response.phoneAssignmentKey&&(_.vendorPhoneAssignmentKeys={[_.matchVendors[0]]:modForm.opts.phoneAssignmentConfig.response.phoneAssignmentKey}),k=JSON.stringify(_)):($.append("Content-Type","application/x-www-form-urlencoded"),C=`${T}/number`,_={SourceClickKey:r||"",LandingQuadTagID:c||"",PC:q,pcforlocalized:F,PortalServiceCode:modForm.opts.vertical,service:"assign",BusinessUnit:"FC",QS_CATEGORY:"Home Services",TradingPlatformTrackingInfo:"",vendorKeys:f||"-1",quadTagId:v?modForm.opts.phoneAssignmentConfig.questQuadTagId.prod:modForm.opts.phoneAssignmentConfig.questQuadTagId.staging,AffiliateSubID:b||""},t&&Object.keys(t).length&&Object.keys(t).forEach((function(e){s.includes(e)&&(y[e]=t[e])})),_.TradingPlatformTrackingInfo=JSON.stringify(y),k=new URLSearchParams(_).toString()),o=new AbortController;const I=o.signal;fetch(C,{method:"POST",headers:$,redirect:"follow",mode:"cors",body:k,signal:I}).then((e=>e.json())).then((e=>{if(m)if(e&&"success"===e.status){const{data:n}=e,{phoneDetails:o}=n;let t;t=o?o[_.matchVendors[0]]:modForm.opts.phoneAssignmentConfig.response;const{phoneNumber:s,extension:i,phoneAssignmentKey:r}=t;N(s,i,r)}else j();else if(e&&Object.keys(e).length){const n=e[_.vendorKeys];if(!n||n.constructor!==Object)return void j();const{ccPhoneNum:o,extn:t}=n;N(o,t)}else j()})).catch((e=>{I.aborted?(console.log(I.reason),Modalytics.heap("track",["Phone Assignment",{isRequestAborted:!0}])):(j(),console.log("Something went wrong!",e))}))};var s=window;for(var i in n)s[i]=n[i];n.__esModule&&Object.defineProperty(s,"__esModule",{value:!0})}();
2
+ //# sourceMappingURL=getPhoneAssignmentData.min.js.map