{"version":3,"file":"static/chunks/1158-e3659f3105d50d13.js","mappings":"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","sources":["webpack://_N_E/./components/blocks/ServiceCheckForm/index.js","webpack://_N_E/./hooks/usePredictiveSearch.js","webpack://_N_E/./js/config/state.js","webpack://_N_E/./js/helpers/cart.js","webpack://_N_E/./js/utils/filters.js","webpack://_N_E/./js/utils/validators.js","webpack://_N_E/./components/blocks/ServiceCheckForm/index.module.css"],"sourcesContent":["/**\n * @module ServiceCheckForm\n * @description Service Check Form\n */\nimport {\n useState, useRef, useEffect, useContext\n} from 'react';\nimport debounce from 'lodash/debounce';\nimport { usePredictiveSearch } from '@/hooks/usePredictiveSearch';\nimport { isValidAddressInput } from '@/js/utils/validators';\nimport { stringify } from '@/js/utils/filters';\nimport { trackEvent } from '@/js/helpers/tracking';\nimport state from '@/js/config/state';\nimport { v4 as uuidv4 } from 'uuid';\nimport styles from './index.module.css';\nimport { FuelContext } from '@/providers/fuel-provider';\n\nconst formContext = {\n formType: 'SERVICE CHECK - SINGLE LINE',\n formName: 'SERVICE CHECK - SINGLE LINE'\n};\n\n/**\n * @function Component\n * @description\n */\nconst Component = ( { ...props } ) => {\n const { theme, isHero, isGdtCta = false } = props;\n const [ addressValid, setAddressValid ] = useState( false );\n const [ addressError, setAddressError ] = useState( false );\n const [ suggestions, setSuggestions ] = useState( [ ] );\n const [ addressObject, setAddressObject ] = useState( { } );\n const [ formStarted, setFormStarted ] = useState( false );\n const [ addressKey, setAddressKey ] = useState( false );\n const [ placeholderText, setPlaceholderText ] = useState( 'Enter your address.' );\n const id = uuidv4();\n\n const addressField = useRef( null );\n const honeyPotField = useRef( null );\n\n const predictive = usePredictiveSearch( { addressField, honeyPotField }, setSuggestions, formContext );\n\n const { setFormInputted } = useContext( FuelContext );\n\n /**\n * @function setSuggestionValue\n * @description Set suggestion value on address and zip\n */\n const setSuggestionValue = async ( event ) => {\n const { address, addressData } = await predictive.setSuggestionValue( event );\n\n setAddressValid( isValidAddressInput( address ) );\n setAddressError( ! isValidAddressInput( address ) );\n setAddressObject( addressData );\n setAddressKey( true );\n };\n\n /**\n * @function fetchAddress\n * @description Fetch our address suggestions\n */\n const fetchAddress = async ( event ) => {\n if ( ! formStarted ) {\n trackEvent( { action: 'formStarted', data: formContext } );\n setFormStarted( true );\n }\n\n predictive.fetchAddress( event );\n setFormInputted( true );\n };\n\n /**\n * @function handleResize\n * @description Update placeholder text if viewport changes\n */\n const handleResize = () => {\n if ( state.is_desktop ) {\n return setPlaceholderText( 'Enter your address to view plans in your area.' );\n }\n\n setPlaceholderText( 'Enter your address.' );\n };\n\n /**\n * @function useEffect\n * @description Set our placeholder, then attach viewport resize event\n */\n useEffect( () => {\n handleResize();\n document.addEventListener( 'redventures/resize_executed', handleResize );\n }, [] );\n\n return (\n
\n
predictive.handleSubmit( e, isGdtCta ) } data-address-object={ stringify( addressObject ) } data-cypress=\"service-check-form\">\n \n
\n \n \n Invalid Address\n
0 ? styles.component__suggestionsActive : '' }` }>\n { suggestions && suggestions.length > 0 &&\n <>\n
    \n { suggestions.map( ( suggestion, index ) => (\n
  • \n { suggestion.value }\n
  • \n ) ) }\n
\n
\n setSuggestions( [ ] ) }\n >Close address suggestions\n
\n \n }\n
{ /* */ }\n
{ /* */ }\n\n
\n \n \n
{ /* */ }\n\n Check availability\n \n
\n );\n};\n\nexport default Component;\n","/**\n * @module Predictive Search API\n * @description Our zipcode / address API\n */\nimport { useContext } from 'react';\nimport { useGoogleReCaptcha } from 'react-google-recaptcha-v3';\n\nimport { FuelContext } from '@/providers/fuel-provider';\nimport { onlySpaces } from '@/js/utils/filters';\nimport { trackEvent } from '@/js/helpers/tracking';\nimport { setCookie } from '@/js/utils/cookie';\nimport { addPageAction } from '@/js/utils/new-relic';\nimport useCartState from './useCartState';\nimport { persistData } from '@/js/utils/session-storage';\nimport { stripClickThrough } from '@/js/helpers/cart';\n\n/**\n * @function usePredictiveSearch\n * @description\n */\nexport const usePredictiveSearch = ( refs, setSuggestions, formContext ) => {\n const { clickThrough, olVersion, gdtVersion } = useContext( FuelContext );\n const { cartStore, submitDifferentAddress } = useCartState();\n\n /**\n * @function buildAddress\n * @description Build the address\n */\n const buildAddress = ( suggestion ) => {\n let whiteSpace = ' ';\n if ( suggestion.secondary ) {\n if ( suggestion.entries > 1 ) {\n suggestion.secondary += ` (${ suggestion.entries } entries)`;\n }\n whiteSpace = ' ';\n }\n return `${ suggestion?.address?.addressLine1 }${ whiteSpace }${ suggestion?.address?.addressLine2 } ${ suggestion?.address?.city }, ${ suggestion?.address?.stateProvince } ${ suggestion?.parsedAddress?.zipCodeBase }`;\n };\n\n /**\n * @function handleInput\n * @description track our events\n */\n const handleInput = ( event ) => {\n const { target } = event;\n const { fieldName, fieldType, fieldValue } = JSON.parse( target.getAttribute( 'data-payload' ) );\n\n const data = {\n formContext,\n fieldName,\n fieldType,\n fieldValue\n };\n\n // need to wait for formstarted to run\n setTimeout( () => {\n trackEvent( { action: 'fieldInputted', data, event } );\n }, 100 );\n };\n\n /**\n * @function handleKeyDown\n * @description Handle a keydown event\n */\n const handleKeyDownEvent = ( event ) => {\n // handle escape key\n if ( event.key === 'Escape' ) {\n setSuggestions( [ ] );\n return refs.addressField.current.removeEventListener( 'keydown', handleKeyDownEvent );\n }\n };\n\n /**\n * @function handleClickEvent\n * @description Handle a keydown event\n */\n const handleClickEvent = ( event ) => {\n const { target } = event;\n\n if ( target.hasAttribute( 'data-address' ) ) {\n return;\n }\n\n setSuggestions( [ ] );\n };\n\n /**\n * @function fetchAddressSuggestions\n * @description Fetch the address\n */\n const fetchAddressSuggestions = async ( value, selected ) => {\n if ( ! value || onlySpaces( value ) ) {\n return;\n }\n\n const url = new URL( `${ process.env.predictiveSearchUrl }/api/${ olVersion }/serviceability/predictive` );\n const params = url.searchParams;\n\n params.set( 'inFootPrint', false );\n params.set( 'serviceAddressRecord', false );\n params.set( 'excludeChildren', false );\n\n if ( selected !== '' ) {\n params.set( 'selected', selected );\n } else if ( params.has( 'selected' ) ) {\n params.delete( 'selected' );\n }\n\n params.set( 'address', value );\n\n const addresses = await fetch( url )\n .then( ( res ) => res.json() )\n .then( ( data ) => {\n if ( ! data ) {\n return [];\n }\n\n const suggestions = [];\n\n if ( ! data.length ) {\n return suggestions;\n }\n\n if ( data === null || typeof data === 'undefined' ) {\n suggestions.push( { } );\n return suggestions;\n }\n\n Object.values( data ).forEach( ( suggestion ) => {\n const address = {\n value: buildAddress( suggestion ),\n addressKey: suggestion?.addressKey,\n parentKey: suggestion?.parentKey || '',\n addressLine1: suggestion?.address?.addressLine1,\n addressLine2: suggestion?.address?.addressLine2,\n city: suggestion?.address?.city,\n stateProvince: suggestion?.address?.stateProvince,\n postalCode: suggestion?.address?.zipCode,\n zipCode: suggestion?.parsedAddress?.zipCodeBase,\n zipCode4: suggestion?.parsedAddress?.zipCodePlus4,\n latitude: suggestion?.latitude,\n longitude: suggestion?.longitude,\n parsedAddress: suggestion?.parsedAddress,\n env: suggestion?.environment || '',\n controlNumber: suggestion?.controlNumber || '',\n inFootprint: suggestion?.inFootprint,\n isParent: suggestion?.isParent,\n rawUserString: value\n };\n\n suggestions.push( address );\n } );\n\n return suggestions;\n } );\n\n return addresses;\n };\n\n /**\n * @function fetchAddress\n * @description Fetch our address suggestions\n */\n const fetchAddress = async ( event ) => {\n const { target } = event;\n const { value } = target;\n\n handleInput( event );\n\n if ( ! value || value.length < 3 ) {\n setSuggestions( [ ] );\n return;\n }\n\n const suggestionValues = await fetchAddressSuggestions( value, '' );\n\n setSuggestions( suggestionValues || [ ] );\n\n // register keydown listeners once address suggestions populate\n refs.addressField.current.addEventListener( 'keydown', handleKeyDownEvent );\n document.addEventListener( 'click', handleClickEvent );\n };\n\n /**\n * @function setSuggestionValue\n * @description Set suggestion value on address and zip\n */\n const setSuggestionValue = async ( event ) => {\n const { target } = event;\n\n const address = target.getAttribute( 'data-address' );\n const zip = target.getAttribute( 'data-zip' );\n const addressData = JSON.parse( target.getAttribute( 'data-object' ) );\n\n if ( address.includes( 'entries' ) ) {\n const value = address.replace( ' entries', '' );\n const suggestionValues = await fetchAddressSuggestions( address, value );\n\n return setSuggestions( suggestionValues );\n }\n\n refs.addressField.current.value = address.replace( ` ${ zip }`, '' );\n\n if ( refs.zipField ) {\n refs.zipField.current.value = zip;\n\n const { fieldName, fieldType, fieldValue } = JSON.parse( refs.zipField.current.getAttribute( 'data-payload' ) );\n\n const data = {\n formContext,\n fieldName,\n fieldType,\n fieldValue,\n autofilled: true\n };\n trackEvent( { action: 'fieldInputted', data, event } );\n }\n\n setSuggestions( [ ] );\n\n return { address, zip, addressData };\n };\n\n // ReCaptcha\n const { executeRecaptcha } = useGoogleReCaptcha();\n\n /**\n * @function handleSubmit\n * @description Handle submission of form\n */\n const handleSubmit = async ( event, enterGdt = false ) => {\n event.preventDefault();\n\n if ( refs.honeyPotField.current.value !== '' ) {\n return;\n }\n\n const token = await executeRecaptcha();\n\n const addressObject = JSON.parse( event.target.getAttribute( 'data-address-object' ) );\n const userData = {\n address: {\n value: addressObject.value,\n addressKey: addressObject.addressKey,\n addressLine1: addressObject.addressLine1,\n addressLine2: addressObject.addressLine2,\n city: addressObject.city,\n stateProvince: addressObject.stateProvince,\n zipCode: addressObject.zipCode,\n zipCode4: addressObject.zipCode4,\n latitude: addressObject.latitude,\n longitude: addressObject.longitude,\n parsedAddress: addressObject.parsedAddress,\n env: addressObject.env,\n controlNumber: addressObject.controlNumber,\n inFootprint: addressObject.inFootprint,\n isParent: addressObject.isParent,\n rawUserString: addressObject.rawUserString\n },\n plansDrop: true, // TODO: what do these do?\n showCTA: true, // TODO: what do these do?\n token\n };\n\n trackEvent( { action: 'formSubmitted', data: formContext, event } );\n addPageAction( 'cartEntrance', { method: 'ADDRESS FORM' } );\n\n // Set our cookie and redirect to the cart\n setCookie( 'frontierSiteDetailPredictive', JSON.stringify( userData ), 30 );\n persistData( 'frontierSiteDetailPredictive', JSON.stringify( userData ) );\n setTimeout( () => {\n // Check for persisted cart state and that addresses match\n if ( cartStore?.address?.install?.addressKey && cartStore?.address?.install?.addressKey !== addressObject.addressKey ) {\n submitDifferentAddress();\n return;\n }\n\n if ( enterGdt ) {\n window.location.href = `${ stripClickThrough( clickThrough ) }${ gdtVersion }/`;\n } else {\n window.location.href = clickThrough;\n }\n }, 100 );\n };\n\n return {\n fetchAddress, fetchAddressSuggestions, handleInput, executeRecaptcha, handleSubmit, handleClickEvent, handleKeyDownEvent, setSuggestionValue\n };\n};\n\nexport default usePredictiveSearch;\n","/**\n * @module Viewport State\n * @description Device screen\n */\nexport const state = {\n desktop_initialized: false,\n is_desktop: false,\n is_small_desktop: false,\n is_tablet: false,\n is_mobile: false,\n mobile_initialized: false,\n v_height: 0,\n v_width: 0\n};\n\nexport default state;\n","import { getCookie, setCookie } from '@/js/utils/cookie';\nimport { deleteStored } from '@/js/utils/session-storage';\nimport { v4 as uuid } from 'uuid';\n\n/*\n When beginning cart flow on LPs (ex: Resume Quote), tracking IDs\n need to be generated to ensure proper eventing\n */\nexport const getClientSideTrackingIds = () => {\n // Check if tracking IDs already exist\n const clientSideTrackingIds = getCookie( 'clientSideTrackingIds' );\n if ( clientSideTrackingIds ) return JSON.parse( clientSideTrackingIds );\n\n // Create new IDs if they don't exist\n const clientSessionId = uuid();\n const orderId = uuid();\n const correlationId = uuid();\n\n // Wipe out persisted cart state if starting a new session\n deleteStored( 'persist:fuel' );\n\n const trackingIds = { clientSessionId, orderId, correlationId };\n setCookie( 'clientSideTrackingIds', JSON.stringify( trackingIds ), 60 ); // Cookie expires in 60 minutes\n return trackingIds;\n};\n\n/*\n When user enters LP via cart with persisted serviceability,\n we may need to strip /plan-package off of the clickThrough\n to send them to a different page (ex. /my-custom-quote)\n*/\nexport const stripClickThrough = ( url ) => {\n const stripped = url.replace( '/plan-package', '' );\n return stripped;\n};\n","/**\n * @module Filters\n * @description Some handy filters\n */\n\n/**\n * @function stringify\n * @description Filter for Tagular Payload Object\n */\nexport const stringify = ( str ) => JSON.stringify( str );\n\n/**\n * @function onlySpaces\n * @description Check if string is only spaces\n */\nexport const onlySpaces = ( str ) => str.trim().length === 0;\n\nexport default stringify;\n","/**\n * @module Validators\n * @description Some handy validators\n */\n\n/**\n * @function isValidZipInput\n * @description Check for zip 5 and numeric input, Does not allow for Zip9\n * @param { number } value zip input\n */\nexport const isValidZipInput = ( value ) => value.length === 5 && ! Number.isNaN( value );\n\n/**\n * @function isValidAddressInput\n * @description Check if address contains street name and suffix (street, avenue, etc)\n * Number is optional i.e. 7th Street & 123 7th Street are both acceptable\n * @param { string } value address input\n */\nexport const isValidAddressInput = ( value ) => {\n const regex = /^(?:(\\d+\\s))?[A-z0-9]+\\s[A-z]+/;\n\n if ( ! value ) {\n return false;\n }\n\n return regex.test( value );\n};\n\n/**\n * @function isValidEmail\n * @description Check if email address contains @ and . surrounded by non-whitespace characters\n * @param { string } value email input\n */\nexport const isValidEmail = ( value ) => {\n const regex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\n if ( ! value ) {\n return false;\n }\n\n return regex.test( value );\n};\n\n/**\n * @function standardRegex\n * @description\n * Regex strings\n * Base: letter, number, & backspace\n * Name: letter, space, & backspace\n * Email: letter, number, @, period(.), & backspace\n * Date: number only\n * Address: letter, number, space, period(.), and backspace\n */\nexport const standardRegex = {\n base: /^[a-zA-Z0-9\\b]/,\n name: /[a-zA-Z\\s\\b]/,\n email: /[a-zA-Z0-9@.\\b]/,\n date: /[0-9]/,\n address: /^[a-zA-Z0-9\\s.\\b]/\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"u-color-white\":\"ServiceCheckForm_u-color-white__AU6qw\",\"u-color-midnight\":\"ServiceCheckForm_u-color-midnight__WCx5x\",\"u-color-blue\":\"ServiceCheckForm_u-color-blue___6lPE\",\"u-color-red\":\"ServiceCheckForm_u-color-red__M_7Ai\",\"u-text-bold\":\"ServiceCheckForm_u-text-bold__foWfJ\",\"u-textdecoration-color-white\":\"ServiceCheckForm_u-textdecoration-color-white__Cc9Qw\",\"u-textdecoration-color-midnight\":\"ServiceCheckForm_u-textdecoration-color-midnight__vMWk5\",\"u-textdecoration-color-blue\":\"ServiceCheckForm_u-textdecoration-color-blue__kOk_K\",\"u-textdecoration-color-red\":\"ServiceCheckForm_u-textdecoration-color-red__aJr31\",\"u-theme-white\":\"ServiceCheckForm_u-theme-white__FecFr\",\"u-theme-light\":\"ServiceCheckForm_u-theme-light__Er7eI\",\"u-theme-black\":\"ServiceCheckForm_u-theme-black__S_VDO\",\"u-theme-dark\":\"ServiceCheckForm_u-theme-dark__sediG\",\"u-theme-light-blue\":\"ServiceCheckForm_u-theme-light-blue__WLW7x\",\"u-theme-blue\":\"ServiceCheckForm_u-theme-blue__Y87oA\",\"u-theme-red\":\"ServiceCheckForm_u-theme-red__2rgSC\",\"u-theme-holiday\":\"ServiceCheckForm_u-theme-holiday__fGKC5\",\"u-theme-neutral-light\":\"ServiceCheckForm_u-theme-neutral-light__dUWLk\",\"hide-for-small-only\":\"ServiceCheckForm_hide-for-small-only__uSbm0\",\"show-for-small-only\":\"ServiceCheckForm_show-for-small-only__2BFGV\",\"hide-for-medium\":\"ServiceCheckForm_hide-for-medium__lEAKw\",\"show-for-medium\":\"ServiceCheckForm_show-for-medium__hxa0X\",\"hide-for-medium-only\":\"ServiceCheckForm_hide-for-medium-only__e_ytm\",\"show-for-medium-only\":\"ServiceCheckForm_show-for-medium-only__fJJ_v\",\"hide-for-large\":\"ServiceCheckForm_hide-for-large__40ZkS\",\"show-for-large\":\"ServiceCheckForm_show-for-large__Wdaez\",\"hide-for-large-only\":\"ServiceCheckForm_hide-for-large-only__8mw5L\",\"show-for-large-only\":\"ServiceCheckForm_show-for-large-only__wENgW\",\"component\":\"ServiceCheckForm_component__317l8\",\"component__dark\":\"ServiceCheckForm_component__dark___eeQB\",\"component__isHero\":\"ServiceCheckForm_component__isHero__PM2LS\",\"component__form\":\"ServiceCheckForm_component__form__NfQX_\",\"component__icon\":\"ServiceCheckForm_component__icon__dBGDw\",\"component__formField\":\"ServiceCheckForm_component__formField__aU3Fs\",\"component__suggestions\":\"ServiceCheckForm_component__suggestions__XJVN8\",\"component__suggestionsActive\":\"ServiceCheckForm_component__suggestionsActive__mzHc6\",\"component__suggestionsList\":\"ServiceCheckForm_component__suggestionsList__sypy3\",\"component__manual\":\"ServiceCheckForm_component__manual__KrOSD\",\"component__compact-gdt\":\"ServiceCheckForm_component__compact-gdt__0CGyn\"};"],"names":["formContext","formType","formName","__webpack_exports__","Z","props","param","theme","isHero","isGdtCta","addressValid","setAddressValid","useState","addressError","setAddressError","suggestions","setSuggestions","addressObject","setAddressObject","formStarted","setFormStarted","addressKey","setAddressKey","placeholderText","setPlaceholderText","id","uuidv4","addressField","useRef","honeyPotField","predictive","usePredictiveSearch","setFormInputted","useContext","FuelContext","setSuggestionValue","event","address","addressData","isValidAddressInput","fetchAddress","trackEvent","action","data","handleResize","state","is_desktop","useEffect","document","addEventListener","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","div","className","styles","jsxs","form","name","autoComplete","onSubmit","handleSubmit","e","data-address-object","stringify","data-cypress","span","label","htmlFor","input","ref","type","data-test-id","onInput","debounce","placeholder","data-payload","fieldName","fieldType","fieldValue","length","Fragment","ul","map","suggestion","index","li","button","role","data-address","value","data-zip","zipCode","data-object","onClick","data-hidden-input","handleInput","ctaTheme","disabled","aria-disabled","refs","clickThrough","olVersion","gdtVersion","cartStore","submitDifferentAddress","useCartState","buildAddress","whiteSpace","secondary","entries","addressLine1","addressLine2","city","stateProvince","parsedAddress","zipCodeBase","target","JSON","parse","getAttribute","setTimeout","handleKeyDownEvent","key","current","removeEventListener","handleClickEvent","hasAttribute","fetchAddressSuggestions","selected","onlySpaces","url","URL","params","searchParams","set","has","delete","fetch","then","res","json","push","Object","values","forEach","parentKey","postalCode","zipCode4","zipCodePlus4","latitude","longitude","env","environment","controlNumber","inFootprint","isParent","rawUserString","suggestionValues","zip","includes","replace","zipField","autofilled","executeRecaptcha","useGoogleReCaptcha","enterGdt","preventDefault","token","userData","plansDrop","showCTA","addPageAction","method","setCookie","persistData","install","window","location","href","stripClickThrough","desktop_initialized","is_small_desktop","is_tablet","is_mobile","mobile_initialized","v_height","v_width","getClientSideTrackingIds","clientSideTrackingIds","getCookie","clientSessionId","uuid","orderId","correlationId","deleteStored","trackingIds","str","trim","regex","test","isValidEmail","module","exports"],"sourceRoot":""}