{"version":3,"file":"static/chunks/8602-23ca1fa41c8628f8.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","webpack://_N_E/"],"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';\nimport DOMPurify from 'isomorphic-dompurify';\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.addressLine1 }${ whiteSpace }${ suggestion.addressLine2 } ${ suggestion.city }, ${ suggestion.stateProvince } ${ suggestion.zipCode }`;\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 addressLine1: suggestion.addressLine1,\n addressLine2: suggestion.addressLine2,\n city: suggestion.city,\n stateProvince: suggestion.stateProvince,\n zipCode: suggestion.zipCode,\n zipCode4: suggestion.zipCode4,\n latitude: suggestion.latitude,\n longitude: suggestion.longitude,\n parsedAddress: suggestion.parsedAddress\n };\n\n suggestions.push( address );\n } );\n\n return suggestions;\n } );\n\n return addresses;\n };\n\n /**\n * @function addressAsciiSanitization\n * @description Remove non-ascii characters and replace special characters with their regular counterpart\n */\n const addressAsciiSanitization = ( address ) => address.normalize( 'NFD' ).replace( /\\u00A0/g, ' ' ).replace( /([\\u0300-\\u036f]|[^0-9a-zA-Z\\s])/g, '' );\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( addressAsciiSanitization( DOMPurify.sanitize( 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 },\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__x1lQ_\",\"u-color-midnight\":\"ServiceCheckForm_u-color-midnight__eGX_K\",\"u-color-blue\":\"ServiceCheckForm_u-color-blue__k4jgv\",\"u-color-red\":\"ServiceCheckForm_u-color-red__gX_s1\",\"u-text-bold\":\"ServiceCheckForm_u-text-bold__SrC7B\",\"u-textdecoration-color-white\":\"ServiceCheckForm_u-textdecoration-color-white__mFPux\",\"u-textdecoration-color-midnight\":\"ServiceCheckForm_u-textdecoration-color-midnight__kJY_5\",\"u-textdecoration-color-blue\":\"ServiceCheckForm_u-textdecoration-color-blue__5jRYr\",\"u-textdecoration-color-red\":\"ServiceCheckForm_u-textdecoration-color-red__6lqlN\",\"u-theme-white\":\"ServiceCheckForm_u-theme-white__Al61d\",\"u-theme-light\":\"ServiceCheckForm_u-theme-light__R6AYA\",\"u-theme-black\":\"ServiceCheckForm_u-theme-black__v_mZS\",\"u-theme-dark\":\"ServiceCheckForm_u-theme-dark__ns5hI\",\"u-theme-light-blue\":\"ServiceCheckForm_u-theme-light-blue__2aRUB\",\"u-theme-blue\":\"ServiceCheckForm_u-theme-blue__xrgWa\",\"u-theme-red\":\"ServiceCheckForm_u-theme-red__wzLpe\",\"u-theme-holiday\":\"ServiceCheckForm_u-theme-holiday__VNzJh\",\"u-theme-neutral-light\":\"ServiceCheckForm_u-theme-neutral-light__oXH2p\",\"hide-for-small-only\":\"ServiceCheckForm_hide-for-small-only__oZr_J\",\"show-for-small-only\":\"ServiceCheckForm_show-for-small-only__TC1t7\",\"hide-for-medium\":\"ServiceCheckForm_hide-for-medium__rW5K4\",\"show-for-medium\":\"ServiceCheckForm_show-for-medium__Mzpfz\",\"hide-for-medium-only\":\"ServiceCheckForm_hide-for-medium-only__HhUE_\",\"show-for-medium-only\":\"ServiceCheckForm_show-for-medium-only__JIJBR\",\"hide-for-large\":\"ServiceCheckForm_hide-for-large__OrETd\",\"show-for-large\":\"ServiceCheckForm_show-for-large__bwtMr\",\"hide-for-large-only\":\"ServiceCheckForm_hide-for-large-only__AyuD1\",\"show-for-large-only\":\"ServiceCheckForm_show-for-large-only__uiUbW\",\"component\":\"ServiceCheckForm_component__b2nMn\",\"component__dark\":\"ServiceCheckForm_component__dark__LE7fC\",\"component__isHero\":\"ServiceCheckForm_component__isHero__fex1T\",\"component__form\":\"ServiceCheckForm_component__form__cXSK1\",\"component__icon\":\"ServiceCheckForm_component__icon___Xzza\",\"component__formField\":\"ServiceCheckForm_component__formField__4CpZr\",\"component__suggestions\":\"ServiceCheckForm_component__suggestions__6P8Aq\",\"component__suggestionsActive\":\"ServiceCheckForm_component__suggestionsActive__XlJPP\",\"component__suggestionsList\":\"ServiceCheckForm_component__suggestionsList__xEZfH\",\"component__manual\":\"ServiceCheckForm_component__manual__cYaqW\",\"component__compact-gdt\":\"ServiceCheckForm_component__compact-gdt__ChYcz\"};"],"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","target","JSON","parse","getAttribute","setTimeout","handleKeyDownEvent","key","current","removeEventListener","handleClickEvent","hasAttribute","fetchAddressSuggestions","selected","onlySpaces","url","URL","params","searchParams","set","has","delete","addresses","fetch","then","res","json","push","Object","values","forEach","zipCode4","latitude","longitude","parsedAddress","addressAsciiSanitization","normalize","replace","suggestionValues","DOMPurify","zip","includes","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","stripped","str","trim","regex","test","isValidEmail","module","exports"],"sourceRoot":""}