{"version":3,"file":"index-f864566b.js","sources":["../../../../src/scripts/coveo/modules/contractor-request-a-quote-form/card.tsx","../../../../src/scripts/coveo/components/request-a-quote-form/autocomplete.tsx","../../../../src/scripts/coveo/components/request-a-quote-form/step1-form.tsx","../../../../src/scripts/coveo/components/request-a-quote-form/stars.tsx","../../../../src/scripts/coveo/components/request-a-quote-form/contractor.tsx","../../../../src/scripts/coveo/components/request-a-quote-form/result-list-contractor.tsx","../../../../src/scripts/coveo/components/request-a-quote-form/step2-reviews.tsx","../../../../src/scripts/coveo/components/request-a-quote-form/step3-terms.tsx","../../../../src/scripts/coveo/components/request-a-quote-form/request-a-quote-form.tsx","../../../../src/scripts/coveo/components/request-a-quote-form/index.tsx"],"sourcesContent":["import React from 'react';\nimport { CardProps } from '../../components/request-a-quote-form/types';\n\nconst Card: React.FC = ({\n heading,\n errorHeading,\n copy,\n phone,\n linksHeading,\n firstLink,\n secondLink,\n submitError,\n errorLabel\n}) => {\n return (\n <>\n {copy && !submitError && (\n <>\n

{heading}

\n \n {copy}\n

\n \n )}\n {errorLabel && submitError && (\n <>\n

\n {errorHeading ? errorHeading : heading}\n

\n \n \n )}\n\n {(firstLink || secondLink) && (\n <>\n {linksHeading && (\n

{linksHeading}

\n )}\n \n \n )}\n\n {phone && (\n \n {phone}\n \n )}\n \n );\n};\n\nexport default Card;\n","import React, { useState, useEffect, useRef } from 'react';\nimport { AutocompleteProp } from './types';\nimport { getLocationDataFromAddress } from '../../../helpers/geolocation';\n\nconst Autocomplete: React.FC = ({\n label,\n name,\n placeholder,\n required,\n type,\n formDataValue,\n setFormData,\n handleValidation,\n onBlur\n}) => {\n const autocompleteRef = useRef(null);\n const autocompleteInput = useRef(null);\n const [localValue, setLocalValue] = useState('');\n const options = {\n componentRestrictions: { country: ['us', 'ca'] },\n fields: ['formatted_address', 'address_components', 'geometry'],\n types: ['postal_code', 'route']\n };\n\n const initGoogleMaps = async () => {\n if (formDataValue) {\n const {\n zip,\n country,\n latitude,\n longitude,\n city,\n state,\n street,\n streetNumber,\n secondStreet\n } = await getLocationDataFromAddress(formDataValue);\n\n if (\n zip &&\n latitude &&\n longitude &&\n street &&\n streetNumber &&\n (country || city || state || secondStreet)\n ) {\n handleValidation('true', name, 'autocomplete');\n } else {\n handleValidation('', name, 'autocomplete');\n onBlur();\n }\n }\n\n if (autocompleteInput.current) {\n autocompleteRef.current = new window.google.maps.places.Autocomplete(\n autocompleteInput.current as HTMLInputElement,\n options\n );\n }\n\n if (autocompleteRef.current) {\n autocompleteRef.current.addListener(\n 'place_changed',\n async function updateAutocomplete() {\n const place = await (\n autocompleteRef.current as google.maps.places.Autocomplete\n ).getPlace();\n\n if (place.formatted_address) {\n setLocalValue(place.formatted_address);\n }\n\n const _place = place.address_components as {\n types: string[];\n long_name: string;\n short_name: string;\n geometry: object;\n }[];\n\n const _location = place.geometry?.location as {\n lat: () => number;\n lng: () => number;\n };\n\n const zipCode = _place.find(item =>\n item.types.includes('postal_code')\n );\n const latitude = _location.lat();\n const longitude = _location.lng();\n const street = _place.find(item => item.types.includes('route'));\n const streetNumber = _place.find(item =>\n item.types.includes('street_number')\n );\n const secondStreet = _place.find(item =>\n item.types.includes('subpremise')\n );\n const city = _place.find(item => item.types.includes('locality'));\n const state = _place.find(item =>\n item.types.includes('administrative_area_level_1')\n );\n const country = _place.find(item => item.types.includes('country'));\n\n setFormData(prevFormData => ({\n ...prevFormData,\n [name]: place.formatted_address ? place.formatted_address : '',\n ['zip']: zipCode ? zipCode.long_name : '',\n ['latitude']: latitude ? latitude : '',\n ['longitude']: longitude ? longitude : '',\n ['street']: `${streetNumber?.short_name || ''} ${\n street?.short_name || ''\n }`,\n ['secondStreet']: secondStreet ? secondStreet.short_name : '',\n ['city']: city ? city.long_name : '',\n ['state']: state ? state.short_name : '',\n ['country']: country ? country.short_name : ''\n }));\n\n if (\n streetNumber &&\n street?.short_name &&\n city &&\n state &&\n zipCode?.long_name\n ) {\n handleValidation('true', name, 'autocomplete');\n } else {\n handleValidation('', name, 'autocomplete');\n }\n }\n );\n }\n };\n\n useEffect(() => {\n if (formDataValue) {\n setLocalValue(formDataValue);\n }\n\n if (window.google?.maps) {\n initGoogleMaps();\n } else {\n const maxAttempts = 20;\n let attempts = 0;\n const interval = setInterval(() => {\n attempts++;\n if (window.google?.maps) {\n clearInterval(interval);\n initGoogleMaps();\n } else if (attempts >= maxAttempts) {\n clearInterval(interval);\n }\n }, 500);\n }\n }, []);\n\n return (\n setLocalValue(e.currentTarget.value)}\n onChange={() => {\n handleValidation('', name, 'autocomplete');\n }}\n onBlur={onBlur}\n />\n );\n};\n\nexport default Autocomplete;\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\nimport { StepFormsProps, FormProp } from './types';\nimport Autocomplete from './autocomplete';\nimport { ExtendedWindowType } from '../../engine';\nimport { DataLayerObject } from '../../../helpers/global-types';\n\nconst StepForms: React.FC = ({\n inputs,\n errorMessage,\n addressErrorMessage,\n formData,\n setFormData,\n setIsFormValid,\n isModal,\n contractorData\n}) => {\n const [firstLoad, setFirstLoad] = useState(true);\n const [scrollable, setScrollable] = useState(false);\n const content = useRef(null);\n const autocompleteInput = useRef(null);\n const [formValidation, setFormValidation] = useState<{\n [key: string]: boolean | string;\n }>({});\n const [fieldTouched, setFieldTouched] = useState<{ [key: string]: boolean }>(\n {}\n );\n\n const [interact, setInteract] = useState(false);\n const requiredValues = useMemo(() => {\n const required = {};\n const numRequired = inputs.reduce((num: number, object: FormProp) => {\n if (object.required === 'true') {\n Object.assign(required, { [object.name]: 'required' });\n num++;\n }\n return num;\n }, 0);\n\n setFormValidation(required);\n\n return numRequired;\n }, []);\n\n useEffect(() => {\n const formValidationArray = Object.entries(formValidation);\n if (!requiredValues) {\n return;\n }\n if (firstLoad) {\n setFirstLoad(false);\n handleValidation('');\n if (formData.address !== '')\n setFormValidation(prevFormValidation => ({\n ...prevFormValidation,\n address: true\n }));\n } else {\n if (\n formValidationArray.findIndex(\n object => object[1] === false || object[1] === 'required'\n ) === -1\n ) {\n setIsFormValid(true);\n } else {\n setIsFormValid(false);\n }\n }\n }, [formValidation]);\n\n const handleAutocomplete = (value: string, name: string, type: string) => {\n if (type === 'autocomplete') {\n setFormValidation(prevFormValidation => ({\n ...prevFormValidation,\n [name]: value ? true : false\n }));\n }\n };\n\n const handleAddressBlur = () => {\n setInteract(true);\n setFieldTouched(prevFieldTouched => ({\n ...prevFieldTouched,\n address: true\n }));\n };\n\n const handleValidation = (name: string) => {\n if (interact) {\n const global = window as ExtendedWindowType;\n if (\n global.dataLayer.findIndex((layer: DataLayerObject) => {\n layer.event === 'request_quote_start';\n }) === -1\n ) {\n global.dataLayer?.push({\n event: 'request_quote_start',\n event_category: 'find a contractor',\n event_action: 'form start',\n ...(contractorData && {\n event_attributes: {\n contractor_id: contractorData?.id,\n contractor_name: contractorData?.contractorName,\n contractor_certificates_count:\n contractorData?.numberOfCertificates,\n contractor_rating: contractorData?.rating,\n contractor_reviews_count: contractorData?.numberOfReviews,\n contractor_type: contractorData?.type,\n form_name: 'request a quote form',\n form_type: 'contractor locator'\n }\n })\n });\n }\n }\n if (!content.current) {\n return;\n }\n\n let _fieldTouched: { [key: string]: boolean } = {};\n\n if (name !== '') {\n _fieldTouched[name] = true;\n }\n let _formValidation = formValidation;\n (content.current as HTMLElement)\n ?.querySelectorAll('.field__input')\n .forEach(input => {\n const type = (input as HTMLInputElement).type;\n const name = (input as HTMLInputElement).name;\n const value = (input as HTMLInputElement).value;\n const textarea = (input as HTMLInputElement).tagName === 'TEXTAREA';\n\n if (value && !fieldTouched[name]) {\n _fieldTouched = { ..._fieldTouched, [name]: true };\n }\n\n if (name === 'address') {\n return;\n }\n if (textarea) {\n _formValidation = {\n ..._formValidation,\n [name]: true\n };\n } else {\n if (!value) {\n _formValidation = {\n ..._formValidation,\n [name]: false\n };\n return;\n } else {\n if (type !== 'tel' && type !== 'email') {\n _formValidation = {\n ..._formValidation,\n [name]: true\n };\n } else {\n if (type === 'tel') {\n _formValidation = {\n ..._formValidation,\n [name]: /^\\(\\d{3}\\) \\d{3}-\\d{4}/g.test(value)\n };\n }\n if (type === 'email') {\n _formValidation = {\n ..._formValidation,\n [name]: /^[\\w-.]+@([\\w-]+\\.)+[\\w-]{2,4}$/g.test(value)\n };\n }\n }\n }\n }\n });\n\n setFieldTouched(prevFieldTouched => ({\n ...prevFieldTouched,\n ..._fieldTouched\n }));\n\n setFormValidation(prevFormValidation => ({\n ...prevFormValidation,\n ..._formValidation\n }));\n };\n\n const checkValidation = (\n value: boolean | string | undefined,\n name: string\n ) => {\n if (value !== undefined && value !== 'required' && fieldTouched[name]) {\n return value ? '' : 'field--error';\n }\n if (fieldTouched[name] && value === 'required' && name === 'address') {\n return 'field--error';\n }\n return '';\n };\n\n const formatPhoneNumber = (value: string) => {\n const cleaned = value.trim().replace(/\\D/g, '');\n const length = cleaned.length;\n const first = cleaned.substring(0, 3);\n const second = cleaned.substring(3, 6);\n const third = cleaned.substring(6, 10);\n\n if (length < 4) return `${first}`;\n if (length < 7 && length >= 4) {\n return `(${first}) ${second}`;\n }\n return `(${first}) ${second}-${third}`;\n };\n\n if (content.current) {\n const contentElement = content.current as HTMLElement;\n if (contentElement.scrollHeight > contentElement.clientHeight) {\n if (!scrollable) {\n setScrollable(true);\n }\n } else {\n if (scrollable) {\n setScrollable(false);\n }\n }\n }\n\n return (\n \n {inputs?.map(input => (\n \n \n {input.label}\n \n {input.type !== 'textarea' ? (\n <>\n {input.google ? (\n \n ) : (\n ) => {\n setInteract(true);\n if (input.type === 'tel') {\n setFormData(prevFormData => ({\n ...prevFormData,\n [input.name]: formatPhoneNumber(e.target.value)\n }));\n } else {\n setFormData(prevFormData => ({\n ...prevFormData,\n [input.name]: e.target.value\n }));\n }\n }}\n onBlur={e => handleValidation(e.target.name)}\n />\n )}\n \n ) : (\n ) => {\n setInteract(true);\n setFormData(prevFormData => ({\n ...prevFormData,\n [input.name]: e.target.value.substring(0, 250)\n }));\n }}\n onBlur={e => handleValidation(e.target.name)}\n >\n )}\n {input.google ? (\n {addressErrorMessage}\n ) : (\n {errorMessage}\n )}\n \n ))}\n \n );\n};\n\nexport default StepForms;\n","import React from 'react';\nimport { StarsProps } from './types';\n\nfunction Stars({ rating, numberOfReviews }: StarsProps) {\n const stars = Array.from(Array(5).keys());\n const starFill = (rating: number, index: number) => {\n const starValue = Number((rating - index).toFixed(2));\n\n if (starValue >= 0.8) {\n return 'rating-star--filled';\n }\n\n if (starValue >= 0.3) {\n return 'rating-star--half-filled';\n }\n\n return '';\n };\n\n return (\n
\n
\n {stars.map(index => (\n
\n ))}\n
\n {rating}\n ({numberOfReviews})\n \n );\n}\nexport default Stars;\n","import React from 'react';\nimport { ContractorCheckboxProps } from './types';\nimport Stars from './stars';\n\nfunction ContractorCheckbox({\n formData,\n handleChange,\n review\n}: ContractorCheckboxProps) {\n return (\n \n 0\n ? (formData[review.name] as string[]).includes(review.id)\n : false\n }\n onChange={e => handleChange(e, review)}\n />\n
\n \n
\n \n );\n}\nexport default ContractorCheckbox;\n","import React, { useEffect, useState } from 'react';\nimport {\n buildResultTemplatesManager,\n ResultTemplate,\n Result,\n SearchEngine\n} from '@coveo/headless';\n\nimport { ExtendedWindowType, headlessEngineModal } from '../../engine';\nimport {\n fieldsToInclude,\n fieldsObjectModal\n} from '../../controllers/controller';\nimport Contractor from './contractor';\nimport { ContractorCheckboxProps, ResultListContractorProps } from './types';\nimport Loader from '../../../react-components/listing-states/loader';\n\ntype ContractorCheckboxResultProps = Result & ContractorCheckboxProps;\n\nfunction ResultListContractor({\n formData,\n handleChange,\n controller,\n copy,\n contractorId,\n reviewName\n}: ResultListContractorProps) {\n const { dataset } = document.getElementsByClassName(\n 'coveo-listing__data-wrapper-modal'\n )[0] as HTMLElement;\n const loaderText = dataset.loaderText as string;\n const [state, setState] = useState(controller.state);\n\n useEffect(() => {\n controller.subscribe(() => setState(controller.state));\n }, []);\n\n const resultTemplatesManager = buildResultTemplatesManager(\n headlessEngineModal as SearchEngine\n );\n\n const RequestAQuoteContractorTemplate: ResultTemplate = {\n conditions: [],\n fields: ['UniqueId', 'Uri', ...fieldsToInclude],\n content: (result: ContractorCheckboxResultProps) => {\n (window as ExtendedWindowType).dataLayer.push({\n event_attributes: {\n contractor_id: result.raw[fieldsObjectModal.contractorId],\n contractor_name: result.raw[fieldsObjectModal.contractorName],\n contractor_certificates_count: (\n result.raw[fieldsObjectModal.contractorCertificates] as string[]\n )?.length,\n contractor_rating: parseFloat(\n result.raw[fieldsObjectModal.rating] as string\n ),\n contractor_reviews_count:\n result.raw[fieldsObjectModal.numberOfReviews],\n contractor_certificate_name: (\n result.raw[fieldsObjectModal.contractorCertificates] as string[]\n )?.[0],\n contractor_type: result.raw[fieldsObjectModal.contractorType]\n },\n event: 'contractor_leads',\n event_category: 'find a contractor',\n event_action: 'contractor leads',\n event_label: ''\n });\n\n return (\n \n );\n }\n };\n\n resultTemplatesManager.registerTemplates(RequestAQuoteContractorTemplate);\n\n if (state.isLoading || !state.firstSearchExecuted) {\n return ;\n }\n\n let contractorNumber = 0;\n return (\n <>\n {state.results?.length > 0 ? (\n <>\n {state.results?.map(result => {\n if (result.raw[fieldsObjectModal.contractorId] === contractorId)\n return null;\n if (contractorNumber === 3) return null;\n contractorNumber++;\n const template = resultTemplatesManager.selectTemplate(\n result\n ) as CallableFunction;\n\n if (!template)\n throw new Error(\n `No result template provided for ${result.title}.`\n );\n\n return template(result);\n })}\n \n ) : (\n

{copy}

\n )}\n \n );\n}\n\nexport default ResultListContractor;\n","import React, { useEffect } from 'react';\nimport { StepReviewsProps, ReviewProp } from './types';\nimport {\n loadSearchActions,\n loadSearchAnalyticsActions,\n ResultList,\n SearchEngine,\n loadAdvancedSearchQueryActions\n} from '@coveo/headless';\nimport { ExtendedWindowType, headlessEngineModal } from '../../engine';\nimport {\n resultListModal,\n fieldsObjectModal\n} from '../../controllers/controller';\nimport ResultListContractor from './result-list-contractor';\nimport { CoveoContextModal } from '../context';\n\nconst StepReviews: React.FC = ({\n heading,\n copy,\n reviewName,\n formData,\n setFormData,\n contractorId\n}) => {\n const { latitude, longitude } = formData;\n\n useEffect(() => {\n if (latitude && longitude) {\n const global = window as ExtendedWindowType;\n\n global.modalPreProcessRequest = (body: string) => {\n const newBody = JSON.parse(body.toString());\n newBody.queryFunctions = [\n {\n fieldName: `@${fieldsObjectModal.distanceInMiles}`,\n function: `dist(@${fieldsObjectModal.latitudeField}, @${fieldsObjectModal.longitudeField}, ${latitude}, ${longitude})*0.000621371`\n }\n ];\n return JSON.stringify(newBody);\n };\n }\n\n const headlessEngine = headlessEngineModal as SearchEngine;\n\n let defaultCountry = 'USA';\n\n if (fieldsObjectModal.defaultCountry) {\n defaultCountry = fieldsObjectModal.defaultCountry;\n }\n\n const advancedQuerySearchActionCreator =\n loadAdvancedSearchQueryActions(headlessEngine);\n headlessEngine?.dispatch(\n advancedQuerySearchActionCreator.registerAdvancedSearchQueries({\n aq: `@${fieldsObjectModal.distanceInMiles} <= ${fieldsObjectModal.maxDistance} AND @${fieldsObjectModal.country} = ${defaultCountry}`\n })\n );\n\n const { logInterfaceLoad } = loadSearchAnalyticsActions(headlessEngine);\n const { executeSearch } = loadSearchActions(headlessEngine);\n headlessEngine.dispatch(executeSearch(logInterfaceLoad()));\n }, [formData?.zipCode]);\n\n const handleChange = (\n e: React.ChangeEvent,\n contractorReview: ReviewProp\n ) => {\n const value = e.target.checked;\n if (value) {\n setFormData(prevFormData => {\n if (prevFormData)\n return {\n ...prevFormData,\n [reviewName]: [\n ...(prevFormData[reviewName] as string[]),\n contractorReview.id\n ]\n };\n return prevFormData;\n });\n } else {\n setFormData(prevFormData => {\n if (prevFormData)\n return {\n ...prevFormData,\n [reviewName]: (prevFormData[reviewName] as string[]).filter(\n (contractor: string) => contractor !== contractorReview.id\n )\n };\n return prevFormData;\n });\n }\n };\n\n return (\n
\n \n

{heading}

\n \n
\n );\n};\n\nexport default StepReviews;\n","import React from 'react';\n\nimport { StepTermsProps } from './types';\n\nconst StepTerms: React.FC = ({\n heading,\n subheading,\n copy,\n checkbox,\n termsConditionsName,\n setFormData,\n formData\n}) => {\n //TODO add google recaptcha\n return (\n
\n

{heading}

\n {subheading && (\n

{subheading}

\n )}\n

\n
\n ) =>\n setFormData(prevFormData => ({\n ...prevFormData,\n [termsConditionsName]: e.target.checked\n }))\n }\n />\n
\n \n {checkbox.label}\n \n
\n
\n
\n );\n};\n\nexport default StepTerms;\n","import React, { useState, useEffect, useRef } from 'react';\nimport Card from '../../modules/contractor-request-a-quote-form/card';\nimport StepForm from './step1-form';\nimport StepReviews from './step2-reviews';\nimport StepTerms from './step3-terms';\nimport Stars from './stars';\nimport {\n RequestAQuoteFormProps,\n CardProps,\n StepTermsProps,\n FormDataProp,\n FormProp,\n ModalProps\n} from './types';\nimport { getStoredGeolocationData } from '../../../helpers/geolocation';\nimport { useGoogleReCaptcha } from 'react-google-recaptcha-v3';\nimport {\n COOKIE_NAMES,\n GeolocationType,\n USER_PROFILE_KEYS,\n USER_PROFILE_OBJECT_KEY,\n secureStorage\n} from '../../../helpers/global-storage';\nimport { ExtendedWindowType } from '../../engine';\n\nconst Form: React.FC = ({\n formLabels,\n thankYouLabels,\n stepForm,\n stepReviews,\n stepTerms,\n reviewsName,\n termsConditionsName,\n endpointPost,\n modal,\n placeholderImg,\n contractorId,\n contractorType,\n contractor\n}) => {\n const {\n heading,\n ofSteps,\n progressBarAria,\n backBtn,\n continueBtn,\n submitBtn,\n errorRequired,\n addressError,\n dividerStates,\n errorLabel\n } = formLabels ? JSON.parse(formLabels) : '';\n const thankYouCardLabels: CardProps = thankYouLabels\n ? JSON.parse(thankYouLabels)\n : '';\n\n const stepFormLabels: FormProp[] = stepForm ? JSON.parse(stepForm) : '';\n const stepReviewsLabels: CardProps = stepReviews\n ? JSON.parse(stepReviews)\n : '';\n const stepTermsLabels: StepTermsProps = stepTerms\n ? JSON.parse(stepTerms)\n : '';\n const contractorObject = contractor as ModalProps;\n\n const userObjectData: string[] = [\n USER_PROFILE_KEYS.userName,\n USER_PROFILE_KEYS.userLastName,\n USER_PROFILE_KEYS.userEmail,\n USER_PROFILE_KEYS.userPhone,\n USER_PROFILE_KEYS.userMessage\n ];\n\n const userGeolocationData = [\n 'zip',\n 'latitude',\n 'longitude',\n 'country',\n 'address',\n 'city',\n 'state',\n 'street',\n 'secondStreet'\n ];\n\n const [step, setStep] = useState(0);\n const [formData, setFormData] = useState();\n const [isFormValid, setIsFormValid] = useState(false);\n const [submitting, setSubmitting] = useState(false);\n const [submitError, setSubmitError] = useState(false);\n const card = useRef(null);\n const [fixedHeight, setFixedHeight] = useState(0);\n\n const styleRequestAQuote: { [key: string]: string } = {\n '--request-a-quote-fixed': `${fixedHeight}px`\n };\n\n const { executeRecaptcha } = useGoogleReCaptcha();\n\n useEffect(() => {\n const geolocationObject: GeolocationType = {\n address: '',\n zip: '',\n latitude: undefined,\n longitude: undefined,\n country: ''\n };\n const geolocation = getStoredGeolocationData();\n if (geolocation?.address) {\n geolocationObject.address = geolocation?.address\n ? geolocation.address\n : '';\n geolocationObject.zip = geolocation?.zip ? geolocation.zip : '';\n geolocationObject.latitude = geolocation?.latitude\n ? geolocation.latitude\n : undefined;\n geolocationObject.longitude = geolocation?.longitude\n ? geolocation.longitude\n : undefined;\n geolocationObject.country = geolocation?.country;\n }\n\n const formDataObj: FormDataProp = stepFormLabels.reduce(\n (obj: object, el: FormProp) => {\n Object.assign(obj, { [el.name]: '' });\n if (el.name === 'address') {\n Object.assign(obj, geolocationObject);\n }\n return obj;\n },\n {}\n );\n\n const userGeolocationDataStored = secureStorage.get(\n COOKIE_NAMES.geolocation\n );\n if (userGeolocationDataStored) {\n const userLocationInfo = JSON.parse(userGeolocationDataStored);\n userGeolocationData.forEach((dataName: string) => {\n if (userLocationInfo[dataName]) {\n formDataObj[dataName] = userLocationInfo[dataName]\n ? userLocationInfo[dataName]\n : '';\n }\n });\n }\n\n const userDataStored = secureStorage.get(USER_PROFILE_OBJECT_KEY);\n\n if (userDataStored) {\n const userDataInfo = JSON.parse(userDataStored);\n userObjectData.forEach((dataName: string) => {\n if (userDataInfo[dataName]) {\n formDataObj[dataName] = userDataInfo[dataName]\n ? userDataInfo[dataName]\n : '';\n }\n });\n }\n\n Object.assign(formDataObj, { [reviewsName]: [] });\n Object.assign(formDataObj, { [termsConditionsName]: false });\n\n setFormData(formDataObj);\n\n window.addEventListener('resize', handleResize);\n handleResize();\n\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n const handleResize = () => {\n const header = (card.current as HTMLElement).querySelector(\n '.request-a-quote__header'\n );\n const footer = (card.current as HTMLElement).querySelector(\n '.request-a-quote__footer'\n );\n setFixedHeight(\n (header as HTMLElement)?.offsetHeight +\n (footer as HTMLElement)?.offsetHeight\n );\n };\n\n useEffect(() => {\n handleResize();\n }, [card.current]);\n\n const handleNextButton = async () => {\n if (step < 2) {\n setStep(step => step + 1);\n } else {\n setSubmitting(true);\n\n const captchaToken = await executeRecaptcha?.('quote');\n\n if (formData) {\n formData.token = captchaToken;\n const formDataArray = Object.entries(formData);\n const sessionUserData = formDataArray.reduce((sessionObj, dataName) => {\n if (userObjectData.includes(dataName[0] as string)) {\n (sessionObj as FormDataProp)[dataName[0]] = dataName[1];\n }\n return sessionObj;\n }, {});\n const sessionUserGeolocation = formDataArray.reduce(\n (sessionObj, dataName) => {\n if (userGeolocationData.includes(dataName[0] as string)) {\n (sessionObj as FormDataProp)[dataName[0]] = dataName[1];\n }\n return sessionObj;\n },\n {}\n );\n\n secureStorage.set(\n USER_PROFILE_OBJECT_KEY,\n JSON.stringify(sessionUserData)\n );\n secureStorage.set(\n COOKIE_NAMES.geolocation,\n JSON.stringify(sessionUserGeolocation)\n );\n }\n\n fetch(endpointPost, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ...formData,\n contractorId: modal ? modal.id : contractorId,\n contractorType: modal ? modal.type : contractorType\n })\n })\n .then(response => response.json())\n .then(data => {\n if (!data.success) {\n setSubmitError(true);\n } else {\n setSubmitError(false);\n (window as ExtendedWindowType).dataLayer.push({\n event: 'contractor_leads',\n event_category: 'find a contractor',\n event_action: 'form success',\n event_attributes: {\n contractor_id: modal ? modal.id : contractorObject?.id,\n contractor_name: modal\n ? modal.contractorName\n : contractorObject?.contractorName,\n contractor_certificates_count: modal\n ? modal.numberOfCertificates\n : contractorObject?.numberOfCertificates,\n contractor_rating: modal\n ? modal.rating\n : contractorObject?.rating,\n contractor_reviews_count: modal\n ? modal.numberOfReviews\n : contractorObject?.numberOfReviews,\n contractor_certificate_name: modal\n ? modal.certificateName\n : contractorObject?.certificateName,\n contractor_type: modal ? modal.type : contractorObject?.type,\n form_name: 'request a quote form'\n }\n });\n }\n })\n .catch(error => {\n setSubmitError(true);\n console.error('Error:', error);\n })\n .finally(() => {\n setSubmitting(false);\n setStep(step => step + 1);\n });\n }\n };\n\n const handleBackButton = () => {\n setStep(step => step - 1);\n };\n\n const renderSteps = () => {\n switch (step) {\n case 0:\n return (\n \n );\n\n case 1:\n return (\n \n );\n\n case 2:\n return (\n \n );\n\n default:\n return <>;\n }\n };\n\n return (\n <>\n {step < 3 ? (\n
\n
\n \n {heading}\n \n\n {modal && (\n
\n \n
\n

\n {modal.contractorDBA\n ? modal.contractorDBA\n : modal.contractorName}\n

\n {modal.rating ? (\n \n ) : null}\n \n {modal.city}\n {modal.city ? ', ' : ''}\n {modal.state}\n {modal.state ? ' - ' : ''}\n {modal.distanceinmiles?.toFixed(1)}\n {modal.distanceinmiles ? ' mi' : ''}\n \n
\n
\n )}\n {`${step + 1}${ofSteps}`}

\n
\n
\n\n {formData && renderSteps()}\n\n
\n {step > 0 ? (\n handleBackButton()}\n >\n {backBtn}\n \n ) : (\n
\n )}\n
\n handleNextButton()}\n >\n {step === 2 ? submitBtn : continueBtn}\n \n {submitError && (\n \n {errorLabel}\n \n )}\n
\n
\n \n ) : (\n \n )}\n \n );\n};\n\nexport default Form;\n","import React, { useEffect } from 'react';\nimport Form from './request-a-quote-form';\nimport { ModalProps, RequestAQuoteFormProps } from './types';\nimport { GoogleReCaptchaProvider } from 'react-google-recaptcha-v3';\nimport { ExtendedWindowType } from '../../../helpers/global-types';\n\nconst RequestAQuoteForm = (props: RequestAQuoteFormProps) => {\n const contractorData = props.contractor as ModalProps;\n\n useEffect(() => {\n const global = window as ExtendedWindowType;\n global.dataLayer?.push({\n event: 'request_quote_form_view',\n event_category: 'find a contractor',\n event_action: 'request a quote form view',\n event_attributes: {\n contractor_id: contractorData?.id,\n contractor_name: contractorData?.contractorName,\n contractor_certificates_count: contractorData?.numberOfCertificates,\n contractor_rating: contractorData?.rating,\n contractor_reviews_count: contractorData?.numberOfReviews,\n contractor_certificate_name: contractorData?.certificateName,\n contractor_type: contractorData?.type,\n form_name: 'request a quote form'\n }\n });\n }, []);\n return (\n \n
\n \n );\n};\n\nexport default RequestAQuoteForm;\n"],"names":["Card","heading","errorHeading","copy","phone","linksHeading","firstLink","secondLink","submitError","errorLabel","React","Autocomplete","label","name","placeholder","required","type","formDataValue","setFormData","handleValidation","onBlur","autocompleteRef","useRef","autocompleteInput","localValue","setLocalValue","useState","options","initGoogleMaps","zip","country","latitude","longitude","city","state","street","streetNumber","secondStreet","getLocationDataFromAddress","place","_place","_location","_a","zipCode","item","prevFormData","useEffect","attempts","interval","e","StepForms","inputs","errorMessage","addressErrorMessage","formData","setIsFormValid","isModal","contractorData","firstLoad","setFirstLoad","scrollable","setScrollable","content","formValidation","setFormValidation","fieldTouched","setFieldTouched","interact","setInteract","requiredValues","useMemo","numRequired","num","object","formValidationArray","prevFormValidation","handleAutocomplete","value","handleAddressBlur","prevFieldTouched","global","layer","_fieldTouched","_formValidation","_b","input","textarea","checkValidation","formatPhoneNumber","cleaned","length","first","second","third","contentElement","Stars","rating","numberOfReviews","stars","starFill","index","starValue","ContractorCheckbox","handleChange","review","ResultListContractor","controller","contractorId","reviewName","dataset","loaderText","setState","resultTemplatesManager","buildResultTemplatesManager","headlessEngineModal","RequestAQuoteContractorTemplate","fieldsToInclude","result","fieldsObjectModal","Contractor","Loader","contractorNumber","template","StepReviews","body","newBody","headlessEngine","defaultCountry","advancedQuerySearchActionCreator","loadAdvancedSearchQueryActions","logInterfaceLoad","loadSearchAnalyticsActions","executeSearch","loadSearchActions","contractorReview","contractor","CoveoContextModal","resultListModal","StepTerms","subheading","checkbox","termsConditionsName","Form","formLabels","thankYouLabels","stepForm","stepReviews","stepTerms","reviewsName","endpointPost","modal","placeholderImg","contractorType","ofSteps","progressBarAria","backBtn","continueBtn","submitBtn","errorRequired","addressError","dividerStates","thankYouCardLabels","stepFormLabels","stepReviewsLabels","stepTermsLabels","contractorObject","userObjectData","USER_PROFILE_KEYS","userGeolocationData","step","setStep","isFormValid","submitting","setSubmitting","setSubmitError","card","fixedHeight","setFixedHeight","styleRequestAQuote","executeRecaptcha","useGoogleReCaptcha","geolocationObject","geolocation","getStoredGeolocationData","formDataObj","obj","el","userGeolocationDataStored","secureStorage","COOKIE_NAMES","userLocationInfo","dataName","userDataStored","USER_PROFILE_OBJECT_KEY","userDataInfo","handleResize","header","footer","handleNextButton","captchaToken","formDataArray","sessionUserData","sessionObj","sessionUserGeolocation","response","data","error","handleBackButton","renderSteps","StepForm","RequestAQuoteForm","props","GoogleReCaptchaProvider"],"mappings":"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"}