mod-build 4.0.49 → 4.0.50-beta.2
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.
- package/CHANGELOG.md +4 -0
- package/package.json +1 -1
- package/tasks/serve.js +2 -0
- package/tasks/setupDevOpsTrackingId.js +28 -0
- package/public/resources/scripts/abandonment/abandonment-a4bbb36fbc8ed64042b8.min.js +0 -2
- package/public/resources/scripts/abandonment/abandonment.min.js +0 -2
- package/public/resources/scripts/callrail/callrail-14011d73b50a928de4b4.min.js +0 -2
- package/public/resources/scripts/callrail/callrail.min.js +0 -2
- package/public/resources/scripts/footer/footer-component-46dc0d7ca6af4fc3b76b.min.js +0 -2
- package/public/resources/scripts/footer/footer-component.min.js +0 -2
- package/public/resources/scripts/geolocation/geolocation.min.js +0 -2
- package/public/resources/scripts/helpers/addVWOTestQueryParam.min.js +0 -2
- package/public/resources/scripts/helpers/addVWOTestQueryParam.min.js.map +0 -1
- package/public/resources/scripts/helpers/additionalOpts.min.js +0 -2
- package/public/resources/scripts/helpers/additionalOpts.min.js.map +0 -1
- package/public/resources/scripts/helpers/calls-only.min.js +0 -2
- package/public/resources/scripts/helpers/calls-only.min.js.map +0 -1
- package/public/resources/scripts/helpers/getPhoneAssignmentData.min.js +0 -2
- package/public/resources/scripts/helpers/getPhoneAssignmentData.min.js.map +0 -1
- package/public/resources/scripts/helpers/initNumericOnlyFields.min.js +0 -2
- package/public/resources/scripts/helpers/initNumericOnlyFields.min.js.map +0 -1
- package/public/resources/scripts/helpers/initQSForm.min.js +0 -2
- package/public/resources/scripts/helpers/initQSForm.min.js.map +0 -1
- package/public/resources/scripts/helpers/initQuadTransform.min.js +0 -2
- package/public/resources/scripts/helpers/initQuadTransform.min.js.map +0 -1
- package/public/resources/scripts/helpers/isZipCodeValid.min.js +0 -2
- package/public/resources/scripts/helpers/isZipCodeValid.min.js.map +0 -1
- package/public/resources/scripts/helpers/observeVWOVariation.min.js +0 -2
- package/public/resources/scripts/helpers/observeVWOVariation.min.js.map +0 -1
- package/public/resources/scripts/helpers/opts.min.js +0 -2
- package/public/resources/scripts/helpers/opts.min.js.map +0 -1
- package/public/resources/scripts/jornaya.hbs +0 -35
- package/public/resources/scripts/jornaya.html +0 -35
- package/public/resources/scripts/mod-alytics/modalytics-be44027508c0438f6709.min.js +0 -2
- package/public/resources/scripts/mod-alytics/modalytics.min.js +0 -2
- package/public/resources/scripts/mod-form/form/contractor-0918337caf3dfede1609.min.js +0 -2
- package/public/resources/scripts/mod-form/form/contractor.min.js +0 -2
- package/public/resources/scripts/mod-form/form/homeowner-19a121b0e596042326f4.min.js +0 -2
- package/public/resources/scripts/mod-form/form/homeowner.min.js +0 -2
- package/public/resources/scripts/mod-utils/modutils-bc275eb41af515f626ef.min.js +0 -2
- package/public/resources/scripts/mod-utils/modutils.min.js +0 -2
- package/public/resources/scripts/trusted-form.hbs +0 -38
- package/public/resources/scripts/trusted-form.html +0 -38
- package/public/resources/styles/components/abandonment/abandonment-8a673f060817db6cb7dc.min.css +0 -1
- package/public/resources/styles/components/abandonment/abandonment.min.css +0 -1
- package/public/resources/styles/components/footer/mod-footer-d233fa64b6c8297c70ec.min.css +0 -1
- package/public/resources/styles/components/footer/mod-footer.min.css +0 -1
- package/public/resources/styles/components/footer/qs-footer-926e67c28d10c729db46.min.css +0 -1
- package/public/resources/styles/components/footer/qs-footer.min.css +0 -1
- package/src/resources/data/tcpa.json +0 -4
- package/src/resources/templates/modals/about/index.hbs +0 -9
- package/src/resources/templates/modals/about/index.html +0 -9
- package/src/resources/templates/modals/contact-us/index.hbs +0 -348
- package/src/resources/templates/modals/contact-us/index.html +0 -348
- package/src/resources/templates/modals/e-sign-consent/index.hbs +0 -35
- package/src/resources/templates/modals/e-sign-consent/index.html +0 -35
- package/src/resources/templates/modals/faq/index.hbs +0 -9
- package/src/resources/templates/modals/faq/index.html +0 -9
- package/src/resources/templates/modals/privacy/index.hbs +0 -237
- package/src/resources/templates/modals/privacy/index.html +0 -237
- package/src/resources/templates/modals/terms/index.hbs +0 -167
- package/src/resources/templates/modals/terms/index.html +0 -167
- package/src/shared-components/call-tracking/_call-tracking.scss +0 -311
- package/src/shared-components/call-tracking/call-tracking-icon.html +0 -8
- package/src/shared-components/call-tracking/call-tracking.html +0 -81
- package/src/shared-components/call-tracking/phone.svg +0 -6
- package/src/shared-components/card-button/_card-button.scss +0 -49
- package/src/shared-components/card-button/card-button.html +0 -9
- package/src/shared-components/carousel/_carousel.scss +0 -106
- package/src/shared-components/carousel/carousel.html +0 -23
- package/src/shared-components/carousel/carousel.js +0 -3573
- package/src/shared-components/carousel/carousel.js.map +0 -1
- package/src/shared-components/carousel/carousel.min.js +0 -2
- package/src/shared-components/carousel/carousel.min.js.map +0 -1
- package/src/shared-components/carousel/carousel.min.min.js +0 -2
- package/src/shared-components/carousel/carousel.min.min.js.map +0 -1
- package/src/shared-components/checkbox/_checkbox.scss +0 -130
- package/src/shared-components/checkbox/checkbox.html +0 -10
- package/src/shared-components/consent-capture/tcpa.html +0 -12
- package/src/shared-components/expand-collapse/_expand-collapse.scss +0 -93
- package/src/shared-components/expand-collapse/expand-collapse.html +0 -8
- package/src/shared-components/expand-collapse/expand-collapse.js +0 -40
- package/src/shared-components/expand-collapse/expand-collapse.min.js +0 -2
- package/src/shared-components/expand-collapse/expand-collapse.min.js.map +0 -1
- package/src/shared-components/featured-block/_featured-block.scss +0 -191
- package/src/shared-components/featured-block/featured-block.html +0 -80
- package/src/shared-components/foot-assets/foot-assets.html +0 -107
- package/src/shared-components/form-tcpa/form-tcpa-spanish.html +0 -61
- package/src/shared-components/form-tcpa/form-tcpa.html +0 -55
- package/src/shared-components/gtm-body/gtm-body.html +0 -4
- package/src/shared-components/head/head.html +0 -195
- package/src/shared-components/header/_header.scss +0 -200
- package/src/shared-components/header/header.html +0 -79
- package/src/shared-components/hero/_hero.scss +0 -276
- package/src/shared-components/hero/hero.html +0 -136
- package/src/shared-components/how-it-works/_how-it-works.scss +0 -138
- package/src/shared-components/how-it-works/how-it-works.html +0 -19
- package/src/shared-components/input/_input.scss +0 -242
- package/src/shared-components/input/input.html +0 -30
- package/src/shared-components/preloader/_preloader.scss +0 -61
- package/src/shared-components/preloader/preloader.html +0 -49
- package/src/shared-components/progress-bar/_progress-bar.scss +0 -142
- package/src/shared-components/progress-bar/progress-bar.html +0 -20
- package/src/shared-components/progress-bar/progress-bar.js +0 -26
- package/src/shared-components/progress-bar/progress-bar.min.js +0 -2
- package/src/shared-components/progress-bar/progress-bar.min.js.map +0 -1
- package/src/shared-components/radio-button/_radio-button.scss +0 -577
- package/src/shared-components/radio-button/radio-button.html +0 -25
- package/src/shared-components/reviews/_reviews.scss +0 -79
- package/src/shared-components/reviews/reviews.html +0 -27
- package/src/shared-components/section-deals/sitemap.xml +0 -9
- package/src/shared-components/select/_select.scss +0 -61
- package/src/shared-components/select/select.html +0 -8
- package/src/shared-components/steps/_steps.scss +0 -431
- package/src/shared-components/steps/defaultFormFieldConfig.json +0 -64
- package/src/shared-components/steps/step-fields.html +0 -36
- package/src/shared-components/steps/steps.html +0 -136
- package/src/shared-components/textarea/_textarea.scss +0 -96
- package/src/shared-components/textarea/textarea.html +0 -13
- package/src/shared-components/theme-toggle/_theme-toggle.scss +0 -68
- package/src/shared-components/theme-toggle/theme-toggle.html +0 -34
- package/src/shared-components/tile/_tile.scss +0 -117
- package/src/shared-components/tile/tile.html +0 -27
- package/src/shared-components/value-props/_value-props.scss +0 -99
- package/src/shared-components/value-props/value-props.html +0 -17
- package/src/shared-components/zip-control/_zip-control.scss +0 -42
- package/src/shared-components/zip-control/zip-control.html +0 -21
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"initQSForm.min.js","mappings":"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","sources":["webpack://mod-form/./lib/config/additionalOpts.js","webpack://mod-form/./lib/config/opts.js","webpack://mod-form/./lib/helpers/components/form/initQSForm.js","webpack://mod-form/./lib/helpers/components/input/addInvocaFallbackToDataLayer.js","webpack://mod-form/./lib/helpers/components/form/populateFormWithZipData.js","webpack://mod-form/./lib/helpers/components/form/prepopFormFromURL.js","webpack://mod-form/./lib/helpers/components/form/initDuplicateSubmissionExperience.js","webpack://mod-form/./lib/helpers/components/input/appendFormInput.js","webpack://mod-form/./lib/helpers/components/input/populateInput.js","webpack://mod-form/./lib/helpers/components/input/addRequiredQSFieldsToForm.js","webpack://mod-form/./lib/helpers/requests/getPhoneAssignmentData.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/initQuadTransformRetry.js","webpack://mod-form/./lib/helpers/processors/getTcpaElementContent.js","webpack://mod-form/./lib/helpers/trackers/initQuadTransform.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/webpack/startup"],"sourcesContent":["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","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\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\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: '.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\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\tisLoaderLoaded: 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\tisOrganicPreferredMatch: false, // use for preferred match\n\twidgetHashStepTracking: false, // receive messages from child iframes\n\tabandonmentHtmlPath: 'abandonment/index.html',\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\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\tadt: '9634310',\n\t\t\tadtHealth: '30772410',\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\tfrontdoor: '33097210',\n\t\t\tnetworx: '11968410'\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’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\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\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: '.callNowControls',\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},\n\tconsentCaptureDetails: '',\n\tconsentRequestId: '',\n\tconsentCaptureVendors: [],\n\tserviceSpecificAttributes: {}\n};\n\n","import {addInvocaFallbackToDataLayer, addRequiredQSFieldsToForm, initQuadTransform, initQuadTransformRetry } from '../../../helpers';\n/**\n * Init Quinstreet form opts\n */\nexport function initQSForm() {\n\tconst myResultsPage = window.modUtils.getModernizeDomain() + '/my/results/';\n\n\twindow.modForm.opts.tagIDTest = '203838617'; // Use this if there is no quadlink params\n\twindow.modForm.opts.tagIDLive = '204673056'; // Use this if there is no quadlink params\n\twindow.modForm.opts.leadSubmitApi = 'hs/tyPage/matches.jsp';\n\twindow.modForm.opts.trafficDetailsApi = 'api/TrafficDetails/get';\n\twindow.modForm.opts.isWirelesssApi = 'api/isWireless';\n\twindow.modForm.opts.websiteName = window.location.host;\n\twindow.modForm.opts.resultsPage = window.modForm.opts.resultsPage ? window.modForm.opts.resultsPage : myResultsPage;\n\twindow.modForm.opts.errorRedirectPath = window.modForm.opts.errorRedirectPath ? window.modForm.opts.errorRedirectPath : myResultsPage;\n\twindow.modForm.opts.landingPage = window.location.hostname + window.location.pathname;\n\twindow.modForm.opts.quadLinkParams = {};\n\twindow.modForm.opts.qsParams = window.modForm.opts.qsParams ? window.modForm.opts.qsParams : ['CCID', 'CLK', 'QTR'];\n\twindow.modForm.opts.quadLinkHasBeenTransformed = false;\n\twindow.modForm.opts.quadLinkData = {\n\t\tWebSiteName: window.modForm.opts.websiteName,\n\t\tquadlink: '',\n\t\tdefaultQuad: '',\n\t\ttagID: ''\n\t};\n\n\t// We check if there's a quad link on the query string\n\t// If not we get the default link\n\tif (!window.modForm.opts.delayQuadTransformation) {\n\t\tinitQuadTransform(true);\n\t}\n\n\tinitQuadTransformRetry();\n\n\taddRequiredQSFieldsToForm();\n\n\tif (window.modUtils.getLandingPage().includes('bestcompany')) {\n\t\taddInvocaFallbackToDataLayer();\n\t}\n}\n","/**\n * Add Fallback Invoca Tags for BestCompany\n */\nexport function addInvocaFallbackToDataLayer() {\n\tconst intervalId = setInterval(() => {\n\t\tif (window.dataLayer) {\n\t\t\tclearInterval(intervalId);\n\n\t\t\tconst matchInput = document.querySelector('input[name=\"Match\"]'),\n\t\t\t\tvendorKey = matchInput ? matchInput.value : null,\n\t\t\t\tserviceCode = window.modForm.opts.vertical,\n\t\t\t\tdefaultQuad = window.modForm.getDefaultQuad();\n\n\t\t\tconst tags = [\n\t\t\t\t{ vendorKey },\n\t\t\t\t{ serviceCode },\n\t\t\t\t{ defaultQuad }\n\t\t\t];\n\t\t\ttags.forEach(tag => window.dataLayer.push(tag));\n\t\t}\n\t}, 100);\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","import { appendFormInput, saveUserInfoToCookie, populateFormWithZipData } 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\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","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 * 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 { appendFormInput, getTcpaElementContent } from '../../../helpers';\n/**\n * Add predefined data to the form\n */\nexport function addRequiredQSFieldsToForm() {\n\tconst requiredFields = {\n\t\tHomePhoneConsentLanguage: window.modForm.opts.tcpaCopy && window.modForm.opts.tcpaCopy.length ? Array.from(window.modForm.opts.tcpaCopy).map((tcpa) => getTcpaElementContent(tcpa).trim().replace(/(<([^>]+)>)/ig, '').replace(/\\n/g, '')) : ''\n\t};\n\n\tObject.keys(requiredFields).forEach((key) => {\n\t\tappendFormInput(key, requiredFields[key]);\n\t});\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 { 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(modForm.opts.phoneAssignmentConfig.phoneNumberContainerSelector);\n\tconst phoneNumberLinks = document.querySelectorAll(modForm.opts.phoneAssignmentConfig.phoneNumberLinksSelector);\n\tconst useHsEndpoint = modForm.opts.phoneAssignmentConfig.useHsEndpoint;\n\tlet url = '';\n\tlet payload = {};\n\tlet requestBody = payload;\n\n\tconst hsApiDomain = `https://${isProductionEnv ? 'form-service-hs.qnst.com' : 'hsapiservice.dev.quinstreet.net'}`;\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\tdocument.body.classList.remove('invoca', 'callrail');\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\tconst shouldDisplayPhoneNumber = (phoneNumberLinks && phoneNumberLinks.length) && (phoneNumberContainers && phoneNumberContainers.length) && phoneNumber;\n\n\t\tif (shouldDisplayPhoneNumber) {\n\t\t\tdocument.body.classList.add('invoca', 'callrail');\n\t\t\tconst formattedPhoneNumber = phoneNumber.replace(phoneNumberRegex, '$1-$2-$3');\n\t\t\tconst formattedPhoneNumberWithExtension = `${formattedPhoneNumber}${extension ? ` Ext: ${extension}` : ''}`;\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(modForm.opts.phoneAssignmentConfig.phoneNumbersTextSelector);\n\t\t\t\tif (phoneNumberTextNode) {\n\t\t\t\t\tphoneNumberTextNode.textContent = 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\tif (useHsEndpoint) {\n\t\trequestHeaders.append('Content-Type', 'application/json');\n\t\turl = `${hsApiDomain}/calls/matches`;\n\t\tconst matchVendors = Array.isArray(modForm.opts.phoneAssignmentConfig.matchVendors) && modForm.opts.phoneAssignmentConfig.matchVendors.length ? modForm.opts.phoneAssignmentConfig.matchVendors : [-1];\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\tzip: modForm?.getFormData()?.zip || null,\n\t\t\tservice: modForm.opts.vertical,\n\t\t\tlandingPageURL: window.location.href,\n\t\t\tmatchVendors: matchVendors\n\t\t};\n\n\t\tif (!payload.zip && isLocalEnv) {\n\t\t\tpayload.zip = '94404';\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: modForm?.getFormData()?.zip,\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 } = 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} 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});\n};\n","import { getQSApiDomain, heapIdentify, getPhoneAssignmentData } 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\t\t\t\tif (window.modForm.opts.phoneAssignmentConfig.showPhoneAssignmentNumber) {\n\t\t\t\t\tgetPhoneAssignmentData(response);\n\t\t\t\t}\n\t\t\t\theapIdentify();\n\t\t\t\twindow.modForm.opts.quadLinkHasBeenTransformed = true;\n\t\t\t\tif (window.heap) {\n\t\t\t\t\twindow.heap.addEventProperties(window.modForm.opts.quadLinkParams);\n\t\t\t\t} else {\n\t\t\t\t\tawait new Promise(resolve => { // eslint-disable-line no-undef\n\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\tif (window.heap) {\n\t\t\t\t\t\t\t\twindow.heap.addEventProperties(window.modForm.opts.quadLinkParams);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t}, 250);\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\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: '1686735',\n\t\ts: '3086',\n\t\tf: '202409231230440'\n\t}\n};\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\n\t\treturn defaultQuadLinkValues[page][service];\n\t} else if (page.indexOf('quotes.improvementcenter.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\t// Heap Identify once we get a click key value\n\tif (typeof window.modForm.opts.quadLinkParams.CLK !== 'undefined') {\n\t\tif ('heap' in window) {\n\t\t\twindow.Modalytics.heap('identify', [window.modForm.opts.quadLinkParams.CLK]);\n\t\t} else {\n\t\t\twindow.addEventListener('heapCookieResolved', function() {\n\t\t\t\twindow.Modalytics.heap('identify', [window.modForm.opts.quadLinkParams.CLK]);\n\t\t\t});\n\t\t}\n\t}\n}\n","import { transformQuadlink } from '../../helpers';\n/**\n * If quadlink wasn't transformed, retry via radio and CTA clicks\n */\nexport function initQuadTransformRetry() {\n\twindow.modForm.opts.form.querySelectorAll('.btn-primary, input[type=\"radio\"]').forEach(function(element) {\n\t\tif (!element) {\n\t\t\treturn;\n\t\t}\n\n\t\telement.addEventListener('click', function(e) {\n\t\t\tif (window.modForm.opts.quadLinkHasBeenTransformed === false && Object.keys(window.modForm.opts.quadLinkParams).length === 0) {\n\t\t\t\te.stopPropagation();\n\t\t\t\ttransformQuadlink();\n\t\t\t\twindow.modUtils.heap('track', ['Quad Transform Retry']);\n\t\t\t}\n\t\t});\n\t});\n}\n","export function getTcpaElementContent($element) {\n\tif ($element) {\n\t\tif ($element.innerText) {\n\t\t\treturn $element.innerText;\n\t\t} else if ($element.textContent) {\n\t\t\treturn $element.textContent;\n\t\t} else if ($element.innerHTML) {\n\t\t\treturn $element.innerHTML;\n\t\t}\n\t}\n\treturn '';\n}\n","import { heapIdentify, getDefaultQuad, transformQuadlink, getQueryParamsFromSessionStorage, defaultQuadLinkValues, getPhoneAssignmentData } 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 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\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","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 shouldCallPhoneAssignmentApi = window.modForm.opts.phoneAssignmentConfig.showPhoneAssignmentNumber && window.modForm.opts.phoneAssignmentConfig.useHsEndpoint && !currentParams.\n\t\tstartStep;\n\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};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(5895);\n"],"names":["document","body","querySelector","Date","getTime","getElementById","querySelectorAll","window","location","protocol","host","pathname","search","modUtils","getModernizeDomain","initQSForm","myResultsPage","modForm","opts","tagIDTest","tagIDLive","leadSubmitApi","trafficDetailsApi","isWirelesssApi","websiteName","resultsPage","errorRedirectPath","landingPage","hostname","quadLinkParams","qsParams","quadLinkHasBeenTransformed","quadLinkData","WebSiteName","quadlink","defaultQuad","tagID","delayQuadTransformation","initQuadTransform","initQuadTransformRetry","addRequiredQSFieldsToForm","getLandingPage","includes","addInvocaFallbackToDataLayer","intervalId","setInterval","dataLayer","clearInterval","matchInput","vendorKey","value","serviceCode","vertical","getDefaultQuad","forEach","tag","push","populateFormWithZipData","zipData","name","populateInput","field","zip","prepopFormFromURL","Object","keys","getVars","key","ignoreQueryParams","appendFormInput","prepopulateUserInfo","saveUserInfoToCookie","isZipCodeValid","response","success","data","zipCodeValidated","initDuplicateSubmissionExperience","heapSessionIdCookieData","activeStep","arguments","length","undefined","activeStepInner","form","formButtons","formTcpa","defaultResultsPage","resultsPageUrl","indexOf","suppressConversionPixelParam","classList","add","formLoadingCls","getCookie","event","setCookie","preventDuplicateSubmission","setTimeout","backButtons","backButton","style","display","progressBar","bar","formButton","alignItems","remove","target","isLeadWidget","innerHTML","addAccessibilityUpdates","heap","noPopulate","input","createElement","type","id","appendChild","$input","tagName","setAttribute","zip1","requiredFields","HomePhoneConsentLanguage","tcpaCopy","Array","from","map","tcpa","getTcpaElementContent","trim","replace","abortController","getPhoneAssignmentData","trafficDetails","shouldUpdateExistingPhoneAssignment","abort","currentParams","getUrlParamsToObject","campaignAttributes","CCID","CLK","QTR","tagId","PartnerSourceID","TradingPlatformTrackingInfo","isProductionEnv","getEnv","isLocalEnv","phoneNumberRegex","RegExp","phoneNumberContainers","phoneAssignmentConfig","phoneNumberContainerSelector","phoneNumberLinks","phoneNumberLinksSelector","useHsEndpoint","url","payload","requestBody","hsApiDomain","questApiDomain","requestHeaders","Headers","append","hidePhoneNumberContainers","Modalytics","phoneNumber","updatedExistingPhoneAssignment","showPhoneNumber","extension","phoneAssignmentKey","formattedPhoneNumber","formattedPhoneNumberWithExtension","displayNumber","hrefPhoneNumber","phoneNumberLink","phoneNumberTextNode","phoneNumbersTextSelector","textContent","matchVendors","isArray","ccid","clk","qtr","getFormData","service","landingPageURL","href","vendorPhoneAssignmentKeys","JSON","stringify","SourceClickKey","LandingQuadTagID","PC","PortalServiceCode","BusinessUnit","QS_CATEGORY","vendorKeys","quadTagId","questQuadTagId","prod","staging","AffiliateSubID","URLSearchParams","toString","AbortController","signal","fetch","method","headers","redirect","mode","then","json","jsonResponse","status","phoneDetails","phoneNumberData","constructor","ccPhoneNum","extn","catch","error","aborted","console","log","reason","isRequestAborted","transformQuadlink","request","XMLHttpRequest","apiUrl","getQSApiDomain","open","setRequestHeader","send","addEventListener","async","this","parse","readyState","hasOwnProperty","showPhoneAssignmentNumber","heapIdentify","addEventProperties","Promise","resolve","toLowerCase","userObj","getHeapSessionIdCookieData","initialTimestamp","expireInOneHour","heapSessionSubmitCookie","heapSessionId","heapCookie","heapCookieData","sessionId","cookieValue","decodeURIComponent","isFrontdoorExclusiveMatch","getQueryParamsFromSessionStorage","queryParams","sessionStorage","getItem","parsedQueryParams","defaultQuadLinkValues","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","findapro","finalLink","valuesByDomain","getDefaultQuadByDomain","page","split","domain","element","e","stopPropagation","$element","innerText","useIdlizeQueueInternally","hasMarketingParams","hasQuadLink","hastagID","heapMsg","message","marketingParams","some","param","toUpperCase","quadLinkUrl","quadLinkType","quadlinkInput","blindMatchQuad","IdlizeQueue","pushTask","callback","timeOut","timeout","Number","apiDomain","zipEditInput","shouldCallPhoneAssignmentApi","startStep","zipEditControlCls","retryZipValidation","error_message","function","cityField","stateField","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","d","definition","o","defineProperty","enumerable","get","obj","prop","prototype","call","r","Symbol","toStringTag","__webpack_exports__"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
!function(){"use strict";var o={3389:function(o,e,t){document.body,document.querySelector(".zip-control__button"),(new Date).getTime()},8352:function(o,e,t){t(7632),t(3389)},7632:function(o,e,t){document.getElementById("form"),document.querySelectorAll('.back-btn, .btn-back, [data-btn="back"]'),document.querySelectorAll(".progress-bar"),window.location.protocol,window.location.host,window.location.pathname,window.location.search&&window.location.search,document.body,document.getElementById("form"),window.modUtils&&window.modUtils.getModernizeDomain(),window.modUtils&&window.modUtils.getModernizeDomain(),window.modUtils&&window.modUtils.getModernizeDomain()},5895:function(o,e,t){t(2562)},2562:function(o,e,t){t.d(e,{appendFormInput:function(){return a},defaultQuadLinkValues:function(){return w},getDefaultQuad:function(){return g},getDefaultQuadByDomain:function(){return h},getHeapSessionIdCookieData:function(){return u},getPhoneAssignmentData:function(){return m},getQSApiDomain:function(){return y},getQueryParamsFromSessionStorage:function(){return f},heapIdentify:function(){return b},initDuplicateSubmissionExperience:function(){return r},populateFormWithZipData:function(){return n},populateInput:function(){return d},prepopFormFromURL:function(){return i},saveUserInfoToCookie:function(){return p},transformQuadlink:function(){return l}});function n(o){["city","state"].forEach((function(e){o[e]&&d(e,o[e])})),document.querySelectorAll('input[name="zip"], input[name="zip1"]').forEach((function(e){e.value=o.zip}))}var s=t(3014);function i(){Object.keys(window.modForm.opts.getVars).forEach((function(o){window.modForm.opts.ignoreQueryParams.includes(o)||a(o,window.modForm.opts.getVars[o]),"zip"===o&&(a("zip1",window.modForm.opts.getVars[o]),a("inertZip",window.modForm.opts.getVars[o])),window.modForm.opts.prepopulateUserInfo&&p(o,window.modForm.opts.getVars[o])})),void 0!==window.modForm.opts.getVars.zip&&(window.modForm.opts.prepopulateUserInfo||(0,s.isZipCodeValid)(window.modForm.opts.getVars.zip,(function(o){o.success&&o.data&&(n(o.data),"function"==typeof window.modForm.opts.zipCodeValidated&&window.modForm.opts.zipCodeValidated(o.data))})))}t(5895);function r(o){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:".swiper-slide-active .step-inner";const t=window.modForm.opts.form.querySelector(e),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=o.resultsPage?o.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(o){o.style.display="none"})),window.modForm.opts.progressBar&&window.modForm.opts.progressBar.forEach((function(o){o.style.display="none"})),n&&n.forEach((function(o){o.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 o=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="'+o+'" 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(8352);function a(o,e,t){if(window.modForm.opts.form.querySelector('input[name="'+o+'"]'))t||d(o,e);else{const t=document.createElement("input");t.type="hidden",t.id=o,t.name=o,t.value=e,window.modForm.opts.form.appendChild(t)}}function d(o,e){const t=window.modForm.opts.form.querySelector('input[name="'+o+'"]');if(t)if("INPUT"===t.tagName&&"radio"===t.type&&t.value===e)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="'+e+'"]').setAttribute("selected",!0);else if(t.value=e,"zip"===o){const o=window.modForm.opts.form.querySelector('input[name="zip1"]');o&&(o.value=e)}}let c=null;const m=function(o){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];c&&c.abort("Current pending request has been aborted. Initiating a new request.");const t=modUtils.getUrlParamsToObject(),n=["ad","gclid","msclkid","vmcid","tbcid","fb_ad_id","fb_campaign_id","fbclid","fb_adset_id"],{CCID:s,CLK:i,QTR:r,tagId:a}=o,{vendorKey:d,PartnerSourceID:m}=t,l={},p="production"===modUtils.getEnv(),u="local"===modUtils.getEnv(),f=new RegExp(/(\d{3})(\d{3})(\d{4})/g),w=document.querySelectorAll(modForm.opts.phoneAssignmentConfig.phoneNumberContainerSelector),g=document.querySelectorAll(modForm.opts.phoneAssignmentConfig.phoneNumberLinksSelector),h=modForm.opts.phoneAssignmentConfig.useHsEndpoint;let y="",b={},F=b;const v="https://"+(p?"form-service-hs.qnst.com":"hsapiservice.dev.quinstreet.net"),k="https://"+(p?"ivr.quinstreet.com":"ivr.quinstage.com"),S=new Headers;S.append("Accept","application/json");const P=()=>{document.body.classList.remove("invoca","callrail"),Modalytics.heap("track",["Phone Assignment",{phoneNumber:!1,updatedExistingPhoneAssignment:e}])},C=(o,t,n)=>{if(g&&g.length&&w&&w.length&&o){document.body.classList.add("invoca","callrail");const s=o.replace(f,"$1-$2-$3"),i=`${s}${t?` Ext: ${t}`:""}`;modForm.opts.phoneAssignmentConfig.response={displayNumber:i,hrefPhoneNumber:`${o}${t?`,${t}`:""}`,extension:t,phoneNumber:o,formattedPhoneNumber:s,phoneAssignmentKey:n},g.forEach((e=>{e.setAttribute("href",`tel:${o}${t?`,${t}`:""}`);const n=e.querySelector(modForm.opts.phoneAssignmentConfig.phoneNumbersTextSelector);n&&(n.textContent=i)})),Modalytics.heap("track",["Phone Assignment",{phoneNumber:!0,extension:!!t,updatedExistingPhoneAssignment:e}])}};if(h){S.append("Content-Type","application/json"),y=`${v}/calls/matches`;const o=Array.isArray(modForm.opts.phoneAssignmentConfig.matchVendors)&&modForm.opts.phoneAssignmentConfig.matchVendors.length?modForm.opts.phoneAssignmentConfig.matchVendors:[-1];b={ccid:s||null,clk:i||null,qtr:r||null,zip:modForm?.getFormData()?.zip||null,service:modForm.opts.vertical,landingPageURL:window.location.href,matchVendors:o},!b.zip&&u&&(b.zip="94404"),e&&modForm.opts.phoneAssignmentConfig.response&&modForm.opts.phoneAssignmentConfig.response.phoneAssignmentKey&&(b.vendorPhoneAssignmentKeys={[b.matchVendors[0]]:modForm.opts.phoneAssignmentConfig.response.phoneAssignmentKey}),F=JSON.stringify(b)}else S.append("Content-Type","application/x-www-form-urlencoded"),y=`${k}/number`,b={SourceClickKey:i||"",LandingQuadTagID:a||"",PC:modForm?.getFormData()?.zip,PortalServiceCode:modForm.opts.vertical,service:"assign",BusinessUnit:"FC",QS_CATEGORY:"Home Services",TradingPlatformTrackingInfo:"",vendorKeys:d||"-1",quadTagId:p?modForm.opts.phoneAssignmentConfig.questQuadTagId.prod:modForm.opts.phoneAssignmentConfig.questQuadTagId.staging,AffiliateSubID:m||""},t&&Object.keys(t).length&&Object.keys(t).forEach((function(o){n.includes(o)&&(l[o]=t[o])})),b.TradingPlatformTrackingInfo=JSON.stringify(l),F=new URLSearchParams(b).toString();c=new AbortController;const q=c.signal;fetch(y,{method:"POST",headers:S,redirect:"follow",mode:"cors",body:F,signal:q}).then((o=>o.json())).then((o=>{if(h)if(o&&"success"===o.status){const{data:e}=o,{phoneDetails:t}=e;let n;n=t?t[b.matchVendors[0]]:modForm.opts.phoneAssignmentConfig.response;const{phoneNumber:s,extension:i,phoneAssignmentKey:r}=n;C(s,i,r)}else P();else if(o&&Object.keys(o).length){const e=o[b.vendorKeys];if(!e||e.constructor!==Object)return void P();const{ccPhoneNum:t,extn:n}=e;C(t,n)}else P()})).catch((o=>{q.aborted?(console.log(q.reason),Modalytics.heap("track",["Phone Assignment",{isRequestAborted:!0}])):(P(),console.log("Something went wrong!",o))}))};function l(){let o={};const e=new XMLHttpRequest,t=y()+window.modForm.opts.trafficDetailsApi;e.open("POST",t),e.setRequestHeader("Content-Type","application/json"),e.send(JSON.stringify(window.modForm.opts.quadLinkData)),e.addEventListener("load",(async function(){if(this.response&&(o={...o,...JSON.parse(this.response)},4===this.readyState&&200===this.status)){for(const e in o)window.modForm.opts.qsParams.includes(e)&&o.hasOwnProperty(e)&&(window.modForm.opts.quadLinkParams[e]=o[e]);window.modForm.opts.phoneAssignmentConfig.showPhoneAssignmentNumber&&m(o),b(),window.modForm.opts.quadLinkHasBeenTransformed=!0,window.heap?window.heap.addEventProperties(window.modForm.opts.quadLinkParams):await new Promise((o=>{setTimeout((function(){window.heap&&window.heap.addEventProperties(window.modForm.opts.quadLinkParams),o()}),250)}))}})),e.addEventListener("error",(function(){console.error("Something went wrong")}))}function p(o,e){o.toLowerCase().includes("zip")?window.modForm.userObj.zip=e:window.modForm.userObj[o]=e,window.modUtils.setCookie("userInfo",JSON.stringify(window.modForm.userObj),526740)}function u(){let o,e,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));o=n.initialTimestamp,e=o+36e5,s=window.modForm.opts.isFrontdoorExclusiveMatch?decodeURIComponent(n.resultsPage):n.resultsPage}return{heapSessionSubmitCookie:t,heapSessionId:n,initialTimestamp:o,expireInOneHour:e,resultsPage:s}}function f(){const o=window.sessionStorage?window.sessionStorage.getItem("queryParams"):null,e=o?JSON.parse(o):null;return e&&(window.modForm.opts.getVars=e,i()),e}const w={"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:"1686735",s:"3086",f:"202409231230440"}};function g(o){let e,t,n,s="";const i=h();return"object"==typeof o&&null!==o?({c:e,s:t,f:n}=o):i&&(e="object"==typeof i.c?i.c[o]:i.c,({s:t,f:n}=i)),s=`http://o1.qnsr.com/cgi/r?;n=203;c=${e};s=${t};x=7936;f=${n};u=j;z=TIMESTAMP;&default=yes;`,s}function h(){const o=window.modForm.opts.websiteName.replace(/(qa\.?|staging\.?|www\.?)/g,"");if(o.includes("bestcompany")){let e=window.modForm.opts.landingPage.split("/");return e=e[2].replace(/-/g,""),w[o][e]}if(o.indexOf("quotes.improvementcenter.com")>-1||o.indexOf("modernize.com")>-1||o.indexOf("powerhomedeals.com")>-1){let e=window.modForm.opts.landingPage.replace(/\/$/g,"").replace(/^(?:[^/]*\/)+/g,"");return e=void 0!==w[o][e]?e:"default",w[o][e]}return w[o]}function y(){let o="https://hsleadpost1.quinstage.com/";return"production"===window.modUtils.getEnv()&&(o="https://hs.leadpost.net/"),o}function b(){void 0!==window.modForm.opts.quadLinkParams.CLK&&("heap"in window?window.Modalytics.heap("identify",[window.modForm.opts.quadLinkParams.CLK]):window.addEventListener("heapCookieResolved",(function(){window.Modalytics.heap("identify",[window.modForm.opts.quadLinkParams.CLK])})))}t(3898)},3898:function(o,e,t){t.r(e),t.d(e,{initQuadTransform:function(){return s}});var n=t(2562);function s(){let o=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=!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(o){return window.modForm.opts.qsParams.includes(o.toUpperCase())}))){for(const o in t)window.modForm.opts.qsParams.includes(o.toUpperCase())&&void 0!==t[o]&&(window.modForm.opts.quadLinkParams[o.toUpperCase()]=t[o]);(0,n.heapIdentify)(),window.modForm.opts.phoneAssignmentConfig.showPhoneAssignmentNumber&&(0,n.getPhoneAssignmentData)(window.modForm.opts.quadLinkParams)}else{let d="",c="";i?(d=t.tagID,c="tagID"):(d=s?t.quadlink:(0,n.getDefaultQuad)(window.modForm.opts.vertical),c=s?"quadlink":"defaultQuad"),window.modForm.opts.quadLinkData[c]=d;for(const o in t)a.includes(o)&&(window.modForm.opts.quadLinkData[o]=t[o],e=!0);if(""!==d){if(window.modUtils.getLandingPage().includes("bestcompany")&&window.modUtils.getLandingPage().includes("find-a-pro")){const o=document.querySelector('input[name="quadlink"]'),t=(0,n.getDefaultQuad)(n.defaultQuadLinkValues["bestcompany.com"].findapro).replace("&default=yes;","");o&&(o.value=t),window.modForm.opts.quadLinkData.quadlink?window.modForm.opts.quadLinkData.quadlink=t:e&&(window.modForm.opts.quadLinkData.defaultQuad=t)}o?"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])}}},3014:function(o,e,t){t.d(e,{isZipCodeValid:function(){return s}});var n=t(2562);function s(o,e){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(),a=window.modForm.opts.phoneAssignmentConfig.showPhoneAssignmentNumber&&window.modForm.opts.phoneAssignmentConfig.useHsEndpoint&&!r.startStep,d=new XMLHttpRequest;let c={};d.open("GET",`${s}api/PostalCordinateInfo/${o}/get`),d.timeout=t,d.send(),d.addEventListener("load",(function(){this.response&&(c={...c,...JSON.parse(this.response)},4===this.readyState&&200===this.status?(c.success=!0,c.data=JSON.parse(this.response),c.data.zip=o,i&&"hidden"===i.style.display&&(document.querySelector(window.modForm.zipEditControlCls).style.display="block"),window.modForm.retryZipValidation=!1,"function"==typeof e&&e(c),a&&(0,n.getPhoneAssignmentData)(window.modForm.opts.quadLinkParams,!0)):"function"==typeof e&&(400===c.status?e({error:!0,message:c.error_message}):e({})))})),d.addEventListener("error",(function(){console.error("Something went wrong");const o=(0,n.getHeapSessionIdCookieData)();(0,n.initDuplicateSubmissionExperience)(o),window.modUtils.heap("track",["API Error | Showing Fallback Experience",{function:"isZipCodeValid"}])})),d.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"),e({success:!0,data:{zip:o}})}))}}},e={};function t(n){var s=e[n];if(void 0!==s)return s.exports;var i=e[n]={exports:{}};return o[n](i,i.exports,t),i.exports}t.d=function(o,e){for(var n in e)t.o(e,n)&&!t.o(o,n)&&Object.defineProperty(o,n,{enumerable:!0,get:e[n]})},t.o=function(o,e){return Object.prototype.hasOwnProperty.call(o,e)},t.r=function(o){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})};var n=t(3898),s=window;for(var i in n)s[i]=n[i];n.__esModule&&Object.defineProperty(s,"__esModule",{value:!0})}();
|
|
2
|
-
//# sourceMappingURL=initQuadTransform.min.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"initQuadTransform.min.js","mappings":"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","sources":["webpack://mod-form/./lib/config/additionalOpts.js","webpack://mod-form/./lib/config/opts.js","webpack://mod-form/./lib/helpers/components/form/populateFormWithZipData.js","webpack://mod-form/./lib/helpers/components/form/prepopFormFromURL.js","webpack://mod-form/./lib/helpers/components/form/initDuplicateSubmissionExperience.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/getPhoneAssignmentData.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/initQuadTransform.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/webpack/startup"],"sourcesContent":["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","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\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\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: '.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\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\tisLoaderLoaded: 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\tisOrganicPreferredMatch: false, // use for preferred match\n\twidgetHashStepTracking: false, // receive messages from child iframes\n\tabandonmentHtmlPath: 'abandonment/index.html',\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\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\tadt: '9634310',\n\t\t\tadtHealth: '30772410',\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\tfrontdoor: '33097210',\n\t\t\tnetworx: '11968410'\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’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\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\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: '.callNowControls',\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},\n\tconsentCaptureDetails: '',\n\tconsentRequestId: '',\n\tconsentCaptureVendors: [],\n\tserviceSpecificAttributes: {}\n};\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","import { appendFormInput, saveUserInfoToCookie, populateFormWithZipData } 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\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","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 * 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","/* 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 { 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(modForm.opts.phoneAssignmentConfig.phoneNumberContainerSelector);\n\tconst phoneNumberLinks = document.querySelectorAll(modForm.opts.phoneAssignmentConfig.phoneNumberLinksSelector);\n\tconst useHsEndpoint = modForm.opts.phoneAssignmentConfig.useHsEndpoint;\n\tlet url = '';\n\tlet payload = {};\n\tlet requestBody = payload;\n\n\tconst hsApiDomain = `https://${isProductionEnv ? 'form-service-hs.qnst.com' : 'hsapiservice.dev.quinstreet.net'}`;\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\tdocument.body.classList.remove('invoca', 'callrail');\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\tconst shouldDisplayPhoneNumber = (phoneNumberLinks && phoneNumberLinks.length) && (phoneNumberContainers && phoneNumberContainers.length) && phoneNumber;\n\n\t\tif (shouldDisplayPhoneNumber) {\n\t\t\tdocument.body.classList.add('invoca', 'callrail');\n\t\t\tconst formattedPhoneNumber = phoneNumber.replace(phoneNumberRegex, '$1-$2-$3');\n\t\t\tconst formattedPhoneNumberWithExtension = `${formattedPhoneNumber}${extension ? ` Ext: ${extension}` : ''}`;\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(modForm.opts.phoneAssignmentConfig.phoneNumbersTextSelector);\n\t\t\t\tif (phoneNumberTextNode) {\n\t\t\t\t\tphoneNumberTextNode.textContent = 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\tif (useHsEndpoint) {\n\t\trequestHeaders.append('Content-Type', 'application/json');\n\t\turl = `${hsApiDomain}/calls/matches`;\n\t\tconst matchVendors = Array.isArray(modForm.opts.phoneAssignmentConfig.matchVendors) && modForm.opts.phoneAssignmentConfig.matchVendors.length ? modForm.opts.phoneAssignmentConfig.matchVendors : [-1];\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\tzip: modForm?.getFormData()?.zip || null,\n\t\t\tservice: modForm.opts.vertical,\n\t\t\tlandingPageURL: window.location.href,\n\t\t\tmatchVendors: matchVendors\n\t\t};\n\n\t\tif (!payload.zip && isLocalEnv) {\n\t\t\tpayload.zip = '94404';\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: modForm?.getFormData()?.zip,\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 } = 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} 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});\n};\n","import { getQSApiDomain, heapIdentify, getPhoneAssignmentData } 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\t\t\t\tif (window.modForm.opts.phoneAssignmentConfig.showPhoneAssignmentNumber) {\n\t\t\t\t\tgetPhoneAssignmentData(response);\n\t\t\t\t}\n\t\t\t\theapIdentify();\n\t\t\t\twindow.modForm.opts.quadLinkHasBeenTransformed = true;\n\t\t\t\tif (window.heap) {\n\t\t\t\t\twindow.heap.addEventProperties(window.modForm.opts.quadLinkParams);\n\t\t\t\t} else {\n\t\t\t\t\tawait new Promise(resolve => { // eslint-disable-line no-undef\n\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\tif (window.heap) {\n\t\t\t\t\t\t\t\twindow.heap.addEventProperties(window.modForm.opts.quadLinkParams);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t}, 250);\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\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: '1686735',\n\t\ts: '3086',\n\t\tf: '202409231230440'\n\t}\n};\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\n\t\treturn defaultQuadLinkValues[page][service];\n\t} else if (page.indexOf('quotes.improvementcenter.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\t// Heap Identify once we get a click key value\n\tif (typeof window.modForm.opts.quadLinkParams.CLK !== 'undefined') {\n\t\tif ('heap' in window) {\n\t\t\twindow.Modalytics.heap('identify', [window.modForm.opts.quadLinkParams.CLK]);\n\t\t} else {\n\t\t\twindow.addEventListener('heapCookieResolved', function() {\n\t\t\t\twindow.Modalytics.heap('identify', [window.modForm.opts.quadLinkParams.CLK]);\n\t\t\t});\n\t\t}\n\t}\n}\n","import { heapIdentify, getDefaultQuad, transformQuadlink, getQueryParamsFromSessionStorage, defaultQuadLinkValues, getPhoneAssignmentData } 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 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\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","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 shouldCallPhoneAssignmentApi = window.modForm.opts.phoneAssignmentConfig.showPhoneAssignmentNumber && window.modForm.opts.phoneAssignmentConfig.useHsEndpoint && !currentParams.\n\t\tstartStep;\n\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};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(3898);\n"],"names":["document","body","querySelector","Date","getTime","getElementById","querySelectorAll","window","location","protocol","host","pathname","search","modUtils","getModernizeDomain","populateFormWithZipData","zipData","forEach","name","populateInput","field","value","zip","prepopFormFromURL","Object","keys","modForm","opts","getVars","key","ignoreQueryParams","includes","appendFormInput","prepopulateUserInfo","saveUserInfoToCookie","isZipCodeValid","response","success","data","zipCodeValidated","initDuplicateSubmissionExperience","heapSessionIdCookieData","activeStep","arguments","length","undefined","activeStepInner","form","formButtons","formTcpa","defaultResultsPage","landingPage","resultsPageUrl","resultsPage","indexOf","suppressConversionPixelParam","classList","add","formLoadingCls","getCookie","dataLayer","push","event","setCookie","preventDuplicateSubmission","setTimeout","backButtons","backButton","style","display","progressBar","bar","formButton","alignItems","remove","target","isLeadWidget","innerHTML","addAccessibilityUpdates","heap","noPopulate","input","createElement","type","id","appendChild","$input","tagName","setAttribute","zip1","abortController","getPhoneAssignmentData","trafficDetails","shouldUpdateExistingPhoneAssignment","abort","currentParams","getUrlParamsToObject","campaignAttributes","CCID","CLK","QTR","tagId","vendorKey","PartnerSourceID","TradingPlatformTrackingInfo","isProductionEnv","getEnv","isLocalEnv","phoneNumberRegex","RegExp","phoneNumberContainers","phoneAssignmentConfig","phoneNumberContainerSelector","phoneNumberLinks","phoneNumberLinksSelector","useHsEndpoint","url","payload","requestBody","hsApiDomain","questApiDomain","requestHeaders","Headers","append","hidePhoneNumberContainers","Modalytics","phoneNumber","updatedExistingPhoneAssignment","showPhoneNumber","extension","phoneAssignmentKey","formattedPhoneNumber","replace","formattedPhoneNumberWithExtension","displayNumber","hrefPhoneNumber","phoneNumberLink","phoneNumberTextNode","phoneNumbersTextSelector","textContent","matchVendors","Array","isArray","ccid","clk","qtr","getFormData","service","vertical","landingPageURL","href","vendorPhoneAssignmentKeys","JSON","stringify","SourceClickKey","LandingQuadTagID","PC","PortalServiceCode","BusinessUnit","QS_CATEGORY","vendorKeys","quadTagId","questQuadTagId","prod","staging","AffiliateSubID","URLSearchParams","toString","AbortController","signal","fetch","method","headers","redirect","mode","then","json","jsonResponse","status","phoneDetails","phoneNumberData","constructor","ccPhoneNum","extn","catch","error","aborted","console","log","reason","isRequestAborted","transformQuadlink","request","XMLHttpRequest","apiUrl","getQSApiDomain","trafficDetailsApi","open","setRequestHeader","send","quadLinkData","addEventListener","async","this","parse","readyState","qsParams","hasOwnProperty","quadLinkParams","showPhoneAssignmentNumber","heapIdentify","quadLinkHasBeenTransformed","addEventProperties","Promise","resolve","toLowerCase","userObj","getHeapSessionIdCookieData","initialTimestamp","expireInOneHour","heapSessionSubmitCookie","heapSessionId","heapCookie","heapCookieData","sessionId","cookieValue","decodeURIComponent","isFrontdoorExclusiveMatch","getQueryParamsFromSessionStorage","queryParams","sessionStorage","getItem","parsedQueryParams","defaultQuadLinkValues","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","findapro","getDefaultQuad","finalLink","valuesByDomain","getDefaultQuadByDomain","page","websiteName","split","domain","initQuadTransform","useIdlizeQueueInternally","hasMarketingParams","hasQuadLink","hastagID","heapMsg","message","marketingParams","some","param","toUpperCase","quadLinkUrl","quadLinkType","tagID","quadlink","getLandingPage","quadlinkInput","blindMatchQuad","defaultQuad","IdlizeQueue","pushTask","callback","timeOut","timeout","Number","apiDomain","zipEditInput","shouldCallPhoneAssignmentApi","startStep","zipEditControlCls","retryZipValidation","error_message","function","cityField","stateField","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","d","definition","o","defineProperty","enumerable","get","obj","prop","prototype","call","r","Symbol","toStringTag","__webpack_exports__"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
!function(){"use strict";var e={d:function(t,o){for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},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={};function o(e,t){const o="https://"+("production"===window.modUtils.getEnv()?"hs.leadpost.net/":"hsleadpost1.quinstage.com/"),n=new XMLHttpRequest;let r={};n.open("GET",`${o}api/PostalCordinateInfo/${e}/get`),n.send(),n.addEventListener("load",(function(){this.response&&(r={...r,...JSON.parse(this.response)},4===this.readyState&&200===this.status?(r.success=!0,r.data=JSON.parse(this.response),r.data.zip=e,"function"==typeof t&&t(r)):"function"==typeof t&&(400===r.status?t({error:!0,message:r.error_message}):t({})))})),n.addEventListener("error",(function(){console.error("Something went wrong")}))}e.r(t),e.d(t,{isZipCodeValid:function(){return o}});var n=window;for(var r in t)n[r]=t[r];t.__esModule&&Object.defineProperty(n,"__esModule",{value:!0})}();
|
|
2
|
-
//# sourceMappingURL=isZipCodeValid.min.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isZipCodeValid.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,KCAO,SAASC,EAAeC,EAAKC,GACnC,MAAMC,EAAY,YAAwC,eAA7BC,OAAOC,SAASC,SAA4B,mBAAqB,8BACxFC,EAAU,IAAIC,eACpB,IAAIC,EAAW,CAAC,EAChBF,EAAQG,KAAK,MAAO,GAAGP,4BAAoCF,SAC3DM,EAAQI,OACRJ,EAAQK,iBAAiB,QAAQ,WAC5BC,KAAKJ,WACRA,EAAW,IAAKA,KAAaK,KAAKC,MAAMF,KAAKJ,WACrB,IAApBI,KAAKG,YAAoC,MAAhBH,KAAKI,QACjCR,EAASS,SAAU,EACnBT,EAASU,KAAOL,KAAKC,MAAMF,KAAKJ,UAChCA,EAASU,KAAKlB,IAAMA,EAEhB,mBAAsBC,GACzBA,EAASO,IAGN,mBAAsBP,IACD,MAApBO,EAASQ,OACZf,EAAS,CACRkB,OAAO,EACPC,QAASZ,EAASa,gBAGnBpB,EAAS,CAAC,IAKf,IACAK,EAAQK,iBAAiB,SAAS,WACjCW,QAAQH,MAAM,uBACf,GACD,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/validators/isZipCodeValidLite.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 * Validate Zip Code\n * No dependency on mod-form\n * @param {String} zip - zip code to validate\n * @param {Function} callback - callback function after server response\n */\nexport function isZipCodeValid(zip, callback) {\n\tconst apiDomain = `https://${window.modUtils.getEnv() === 'production' ? 'hs.leadpost.net/' : 'hsleadpost1.quinstage.com/'}`;\n\tconst request = new XMLHttpRequest();\n\tlet response = {};\n\trequest.open('GET', `${apiDomain}api/PostalCordinateInfo/${zip}/get`);\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 ('function' === typeof callback) {\n\t\t\t\t\tcallback(response);\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\t});\n}\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","isZipCodeValid","zip","callback","apiDomain","window","modUtils","getEnv","request","XMLHttpRequest","response","open","send","addEventListener","this","JSON","parse","readyState","status","success","data","error","message","error_message","console"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
!function(){"use strict";var t={d:function(o,e){for(var r in e)t.o(e,r)&&!t.o(o,r)&&Object.defineProperty(o,r,{enumerable:!0,get:e[r]})},o:function(t,o){return Object.prototype.hasOwnProperty.call(t,o)},r:function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},o={};function e(t){const o=window.modForm.opts.observedTargetNode,e=window.modForm.opts.observerConfig;new MutationObserver((function(o,e){for(const r of o)"attributes"===r.type&&r.target.hasAttribute(window.modForm.opts.vwoVariationDataAttribute)&&r.target.getAttribute(window.modForm.opts.vwoVariationDataAttribute).indexOf(window.modForm.opts.vwoVariationDataAttributeValue)>-1&&(t(),e.disconnect())})).observe(o,e)}t.r(o),t.d(o,{observeVWOVariation:function(){return e}});var r=window;for(var n in o)r[n]=o[n];o.__esModule&&Object.defineProperty(r,"__esModule",{value:!0})}();
|
|
2
|
-
//# sourceMappingURL=observeVWOVariation.min.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"observeVWOVariation.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,EAAoBC,GACnC,MAAMC,EAAaC,OAAOC,QAAQC,KAAKC,mBACjCC,EAASJ,OAAOC,QAAQC,KAAKG,eAiBlB,IAAIC,kBAfI,SAASC,EAAWC,GAC5C,IAAK,MAAMC,KAAYF,EAEH,eAAlBE,EAASC,MACND,EAASE,OAAOC,aAAaZ,OAAOC,QAAQC,KAAKW,4BACjDJ,EAASE,OACVG,aAAad,OAAOC,QAAQC,KAAKW,2BACjCE,QAAQf,OAAOC,QAAQC,KAAKc,iCAAmC,IAEjElB,IACAU,EAASS,aAGZ,IAGSC,QAAQnB,EAAYK,EAC9B,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/observers/observeVWOVariation.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 * 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"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","observeVWOVariation","callback","targetNode","window","modForm","opts","observedTargetNode","config","observerConfig","MutationObserver","mutations","observer","mutation","type","target","hasAttribute","vwoVariationDataAttribute","getAttribute","indexOf","vwoVariationDataAttributeValue","disconnect","observe"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
!function(){"use strict";var e={d:function(t,o){for(var r in o)e.o(o,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:o[r]})},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,{opts:function(){return o}});const o={vertical:null,form:document.getElementById("form"),formId:"form",formLoadingCls:"form--loading",formSubmittingCls:"form--submitting",formSubmittedCls:"form--submit-done",formSubmitErrorCls:"form--submit-error",stepsSelector:'[data-bind="step"]',stepActiveCls:"step--active",backButtons:document.querySelectorAll('.back-btn, .btn-back, [data-btn="back"]'),progressBar:document.querySelectorAll(".progress-bar"),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,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",isLoaderLoaded:!1,showLoadingOverlay:!1,showRedirectOverlay:!1,appendOverlayToElem:document.getElementById("form"),ignoreDuplicateSubmissionBlocker:!1,hvacVerticalName:"hvac",hvacRepairFieldValue:"yes",addAccessibilityUpdates:!1,isOrganicPreferredMatch:!1,widgetHashStepTracking:!1,abandonmentHtmlPath:"abandonment/index.html",formSubmittingCallback:null,formSubmitSuccessCallback:null,formSubmitErrorCallback:null,stepChangingCallback:null,stepChangedCallback:null,zipCodeValidated:null,shouldSuppressConversionPixel:!1,suppressConversionPixelParam:"cnvrsnpxl=n",useStepNameHash:!1,delayQuadTransformation:!1,isFirePixelTrue:!1,firePixelParam:"firepxl=y",isSharedMatch:!1,eCommerceVendorKeys:{shared:{adt:"9634310",adtHealth:"30772410",frontdoor:"33097210"},exclusive:{airo:"31194410",angi:"31816410",frontdoor:"33097210",networx:"11968410"}},eCommerceExclusiveLoaders:{frontdoor:[`${window.modUtils?window.modUtils.getModernizeDomain():"https://modernize.com"}/quote/resources/assets/images/logos/partners/american-home-shield.svg`,"Congrats! You’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"],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,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:".callNowControls",questQuadTagId:{staging:"",prod:""},matchVendors:[],response:null,useHsEndpoint:!1},consentCaptureDetails:"",consentRequestId:"",consentCaptureVendors:[],serviceSpecificAttributes:{}};var r=window;for(var a in t)r[a]=t[a];t.__esModule&&Object.defineProperty(r,"__esModule",{value:!0})}();
|
|
2
|
-
//# sourceMappingURL=opts.min.js.map
|