{"version":3,"file":"RedirectGoogleOfferAfterSuccess.Cv1iUGFX.mjs","names":["useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/IKzPK2ULglYtdB2lT0Rs/T2uIz8nuTQKCLAobsCV4/RedirectGoogleOfferAfterSuccess.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef,useCallback,useEffect,useRef}from\"react\";const GOOGLE_OFFER_SUBMISSION_TOKEN_KEY=\"google_offer_submission_token_v1\";const GOOGLE_OFFER_SUBMISSION_TOKEN_TTL_MS=10*60*1e3;const GOOGLE_OFFER_CONVERSION_GUARD_KEY=\"google_offer_conversion_fired_v1\";const GOOGLE_OFFER_CONVERSION_SEND_TO=\"AW-830514399/DrsfCISNuNocEN_JgowD\";const GOOGLE_OFFER_FORM_NAME=\"google_offer\";const GOOGLE_OFFER_SUCCESS_REDIRECT_PATH=\"/google-offer-thank-you\";function createGoogleOfferSubmissionToken(){const now=Date.now();return{token:`${now}-${Math.random().toString(36).slice(2)}`,createdAt:now,expiresAt:now+GOOGLE_OFFER_SUBMISSION_TOKEN_TTL_MS};}function storeGoogleOfferSubmissionToken(payload){if(typeof window===\"undefined\")return;try{window.sessionStorage.setItem(GOOGLE_OFFER_SUBMISSION_TOKEN_KEY,JSON.stringify(payload));}catch{// Ignore storage failures so form success flow still redirects.\n}}function getGoogleOfferConversionGuardToken(){if(typeof window===\"undefined\")return null;try{return window.sessionStorage.getItem(GOOGLE_OFFER_CONVERSION_GUARD_KEY);}catch{return null;}}function setGoogleOfferConversionGuard(token){if(typeof window===\"undefined\")return;try{window.sessionStorage.setItem(GOOGLE_OFFER_CONVERSION_GUARD_KEY,token);}catch{// Ignore storage failures so redirects can still continue.\n}}function normalizeUsPhoneToE164(value){const digits=value.replace(/\\D/g,\"\");if(digits.length===10)return`+1${digits}`;if(digits.length===11&&digits.startsWith(\"1\"))return`+1${digits.slice(1)}`;return null;}function readNormalizedGoogleOfferPhone(form){const phoneSelectors=[\"input[type='tel']\",\"input[name*='phone' i]\",\"input[id*='phone' i]\",\"input[autocomplete='tel']\",\"input[name*='mobile' i]\",\"input[id*='mobile' i]\"].join(\", \");const phoneInput=form.querySelector(phoneSelectors);if(!phoneInput)return null;return normalizeUsPhoneToE164(phoneInput.value||\"\");}function createOpaqueTransactionId(){if(typeof window!==\"undefined\"&&window.crypto&&typeof window.crypto.randomUUID===\"function\"){return window.crypto.randomUUID();}return`${Date.now()}-${Math.random().toString(36).slice(2)}-${Math.random().toString(36).slice(2)}`;}function fireGoogleOfferSubmitTrackingAtSuccess(submissionToken,transactionId,normalizedPhone){if(typeof window===\"undefined\")return;if(getGoogleOfferConversionGuardToken()===submissionToken)return;setGoogleOfferConversionGuard(submissionToken);const gtagFn=window.gtag;if(typeof gtagFn===\"function\"){if(normalizedPhone){try{gtagFn(\"set\",\"user_data\",{phone_number:normalizedPhone});}catch{// Ignore unavailable runtime tracking so navigation can still proceed.\n}}try{gtagFn(\"event\",\"conversion\",{send_to:GOOGLE_OFFER_CONVERSION_SEND_TO,transaction_id:transactionId});}catch{// Ignore unavailable runtime tracking so navigation can still proceed.\n}try{gtagFn(\"event\",\"generate_lead\",{form_name:GOOGLE_OFFER_FORM_NAME});}catch{// Ignore unavailable runtime tracking so navigation can still proceed.\n}return;}const dataLayer=window.dataLayer;if(Array.isArray(dataLayer)){if(normalizedPhone){try{dataLayer.push({event:\"gtag_set_user_data\",user_data:{phone_number:normalizedPhone}});}catch{// Ignore unavailable runtime tracking so navigation can still proceed.\n}}try{dataLayer.push({event:\"conversion\",send_to:GOOGLE_OFFER_CONVERSION_SEND_TO,transaction_id:transactionId});}catch{// Ignore unavailable runtime tracking so navigation can still proceed.\n}try{dataLayer.push({event:\"generate_lead\",form_name:GOOGLE_OFFER_FORM_NAME});}catch{// Ignore unavailable runtime tracking so navigation can still proceed.\n}}}function setForwardedRef(ref,value){if(typeof ref===\"function\"){ref(value);return;}if(ref&&typeof ref===\"object\"){ref.current=value;}}export function RedirectGoogleOfferAfterSuccess(Component){return /*#__PURE__*/forwardRef(function RedirectGoogleOfferAfterSuccessOverride(props,ref){const rootRef=useRef(null);const observerRef=useRef(null);const attachTimerRef=useRef(null);const submitCheckTimerRef=useRef(null);const didAttemptSubmitRef=useRef(false);const didRedirectRef=useRef(false);const didReceiveInvalidRef=useRef(false);const activeSubmissionTokenRef=useRef(null);const activeSubmissionTrackingRef=useRef(null);const observedFormRef=useRef(null);const detachSubmitListenerRef=useRef(null);const detachInvalidListenerRef=useRef(null);const isVisible=useCallback(element=>{if(!(element instanceof HTMLElement))return false;return element.getClientRects().length>0;},[]);const getElementText=useCallback(element=>{if(element instanceof HTMLInputElement)return(element.value||\"\").trim();return(element.textContent||\"\").replace(/\\s+/g,\" \").trim();},[]);const isGoogleOfferPage=useCallback(()=>{if(typeof window===\"undefined\")return false;const normalizedPath=window.location.pathname.replace(/\\/+$/,\"\")||\"/\";return normalizedPath===\"/google-offer\";},[]);const resolveFormElement=useCallback(()=>{const root=rootRef.current;if(!root)return null;if(root instanceof HTMLFormElement)return root;const found=root.querySelector(\"form\");return found instanceof HTMLFormElement?found:null;},[]);const cleanupObserver=useCallback(()=>{if(observerRef.current){observerRef.current.disconnect();observerRef.current=null;}},[]);const hasNativeSuccessState=useCallback(form=>{const isSuccessFlag=value=>{const normalized=(value||\"\").trim().toLowerCase();return normalized===\"success\"||normalized===\"submitted\"||normalized===\"complete\";};if(isSuccessFlag(form.getAttribute(\"data-framer-form-state\")))return true;if(isSuccessFlag(form.getAttribute(\"data-form-state\")))return true;if(isSuccessFlag(form.getAttribute(\"data-state\")))return true;if(isSuccessFlag(form.getAttribute(\"data-status\")))return true;if(isSuccessFlag(form.getAttribute(\"aria-label\")))return true;const successNode=form.querySelector(\"[data-framer-form-state='success'], [data-form-state='success'], [data-state='success'], [data-status='success']\");return successNode instanceof HTMLElement;},[]);const hasNativeValidationError=useCallback(form=>{if(didReceiveInvalidRef.current)return true;if(typeof form.checkValidity===\"function\"&&!form.checkValidity())return true;const invalidField=form.querySelector(\":invalid\");return invalidField instanceof HTMLElement;},[]);const maybeRedirectOnSuccess=useCallback(()=>{if(!didAttemptSubmitRef.current||didRedirectRef.current)return;if(typeof window===\"undefined\")return;if(!isGoogleOfferPage())return;const form=observedFormRef.current??resolveFormElement();if(!form)return;if(hasNativeValidationError(form))return;const errorVisible=Array.from(form.querySelectorAll(\"button, [role='button'], p, span, div\")).some(node=>{if(!isVisible(node))return false;const text=getElementText(node).toLowerCase();return text===\"something went wrong\"||text.includes(\"error\");});if(errorVisible)return;const nativeSuccess=hasNativeSuccessState(form);const successVisible=Array.from(form.querySelectorAll(\"button, input[type='submit'], input[type='button']\")).some(node=>{if(!isVisible(node))return false;const normalizedText=getElementText(node).toLowerCase();return normalizedText.includes(\"thank\")||normalizedText.includes(\"submitted\");});if(nativeSuccess||successVisible){const activeSubmissionToken=activeSubmissionTokenRef.current;if(activeSubmissionToken){const previousTracking=activeSubmissionTrackingRef.current;const trackingForSubmission=previousTracking&&previousTracking.token===activeSubmissionToken?previousTracking:{token:activeSubmissionToken,transactionId:createOpaqueTransactionId(),didFireTracking:false};activeSubmissionTrackingRef.current=trackingForSubmission;if(!trackingForSubmission.didFireTracking){const normalizedPhone=readNormalizedGoogleOfferPhone(form);fireGoogleOfferSubmitTrackingAtSuccess(trackingForSubmission.token,trackingForSubmission.transactionId,normalizedPhone);trackingForSubmission.didFireTracking=true;}}didRedirectRef.current=true;cleanupObserver();window.location.assign(GOOGLE_OFFER_SUCCESS_REDIRECT_PATH);}},[cleanupObserver,getElementText,hasNativeSuccessState,hasNativeValidationError,isGoogleOfferPage,isVisible,resolveFormElement]);const startObservingForm=useCallback(()=>{if(!didAttemptSubmitRef.current||didRedirectRef.current)return;const form=resolveFormElement();if(!form)return;observedFormRef.current=form;maybeRedirectOnSuccess();if(didRedirectRef.current)return;cleanupObserver();const observer=new MutationObserver(()=>{maybeRedirectOnSuccess();});if(form instanceof Node&&form instanceof HTMLElement){observer.observe(form,{childList:true,subtree:true,characterData:true,attributes:true});observerRef.current=observer;}},[cleanupObserver,maybeRedirectOnSuccess,resolveFormElement]);useEffect(()=>{if(typeof window===\"undefined\")return;if(!isGoogleOfferPage())return;const tryAttachSubmitListener=()=>{const form=resolveFormElement();if(!form)return false;if(observedFormRef.current===form&&detachSubmitListenerRef.current&&detachInvalidListenerRef.current)return true;observedFormRef.current=form;const onSubmitAttempt=()=>{didAttemptSubmitRef.current=true;didReceiveInvalidRef.current=false;const isNativeValid=typeof form.checkValidity===\"function\"?form.checkValidity():true;if(isNativeValid){const submissionTokenPayload=createGoogleOfferSubmissionToken();activeSubmissionTokenRef.current=submissionTokenPayload.token;activeSubmissionTrackingRef.current={token:submissionTokenPayload.token,transactionId:createOpaqueTransactionId(),didFireTracking:false};storeGoogleOfferSubmissionToken(submissionTokenPayload);}startObservingForm();if(submitCheckTimerRef.current){window.clearTimeout(submitCheckTimerRef.current);}submitCheckTimerRef.current=window.setTimeout(()=>{maybeRedirectOnSuccess();},300);};const onInvalid=()=>{didReceiveInvalidRef.current=true;};form.addEventListener(\"submit\",onSubmitAttempt);form.addEventListener(\"invalid\",onInvalid,true);detachSubmitListenerRef.current=()=>{form.removeEventListener(\"submit\",onSubmitAttempt);};detachInvalidListenerRef.current=()=>{form.removeEventListener(\"invalid\",onInvalid,true);};return true;};if(!tryAttachSubmitListener()){attachTimerRef.current=window.setInterval(()=>{if(tryAttachSubmitListener()&&attachTimerRef.current){window.clearInterval(attachTimerRef.current);attachTimerRef.current=null;}},250);}return()=>{cleanupObserver();if(detachSubmitListenerRef.current){detachSubmitListenerRef.current();detachSubmitListenerRef.current=null;}if(detachInvalidListenerRef.current){detachInvalidListenerRef.current();detachInvalidListenerRef.current=null;}if(attachTimerRef.current){window.clearInterval(attachTimerRef.current);attachTimerRef.current=null;}if(submitCheckTimerRef.current){window.clearTimeout(submitCheckTimerRef.current);submitCheckTimerRef.current=null;}};},[cleanupObserver,isGoogleOfferPage,maybeRedirectOnSuccess,resolveFormElement,startObservingForm]);return /*#__PURE__*/_jsx(Component,{ref:node=>{rootRef.current=node instanceof HTMLElement?node:null;setForwardedRef(ref,node);},...props});});}function sendGtagEvent(eventName){if(typeof window===\"undefined\")return;const gtagFn=window.gtag;if(typeof gtagFn!==\"function\")return;gtagFn(\"event\",eventName);}function createSingleFireClickHandler(eventName,userOnClick){let lastClickTimestamp=-1;return event=>{userOnClick?.(event);if(event.defaultPrevented)return;if(event.timeStamp===lastClickTimestamp)return;lastClickTimestamp=event.timeStamp;sendGtagEvent(eventName);};}function getClickedNavigationUrl(event){const target=event.target;if(!(target instanceof Element))return null;const clickable=target.closest(\"a,button\");if(clickable instanceof HTMLAnchorElement){return clickable.href||clickable.getAttribute(\"href\");}if(clickable instanceof HTMLButtonElement){return clickable.formAction||clickable.getAttribute(\"formaction\")||clickable.getAttribute(\"data-href\");}return null;}function isGoogleMapsUrl(urlValue){if(!urlValue||typeof window===\"undefined\")return false;try{const parsed=new URL(urlValue,window.location.href);const host=parsed.hostname.toLowerCase();const path=parsed.pathname.toLowerCase();if(host===\"maps.app.goo.gl\")return true;if(host===\"maps.google.com\")return true;if((host===\"google.com\"||host.endsWith(\".google.com\"))&&path.startsWith(\"/maps\"))return true;return false;}catch{return false;}}export function TrackContactUsClick(Component){return /*#__PURE__*/forwardRef(function TrackContactUsClickOverride(props,ref){const clickHandlerRef=useRef(null);if(!clickHandlerRef.current||props.onClick!==clickHandlerRef.current.__sourceOnClick){const nextHandler=createSingleFireClickHandler(\"contact_us\",props.onClick);nextHandler.__sourceOnClick=props.onClick;clickHandlerRef.current=nextHandler;}return /*#__PURE__*/_jsx(Component,{ref:ref,...props,onClick:clickHandlerRef.current??props.onClick});});}export function TrackFindALocationClick(Component){return /*#__PURE__*/forwardRef(function TrackFindALocationClickOverride(props,ref){const clickHandlerRef=useRef(null);if(!clickHandlerRef.current||props.onClick!==clickHandlerRef.current.__sourceOnClick){let lastClickTimestamp=-1;const nextHandler=event=>{props.onClick?.(event);if(event.defaultPrevented)return;if(event.timeStamp===lastClickTimestamp)return;const clickedUrl=getClickedNavigationUrl(event);if(!isGoogleMapsUrl(clickedUrl))return;lastClickTimestamp=event.timeStamp;sendGtagEvent(\"find_a_location\");};nextHandler.__sourceOnClick=props.onClick;clickHandlerRef.current=nextHandler;}return /*#__PURE__*/_jsx(Component,{ref:ref,...props,onClick:clickHandlerRef.current??props.onClick});});}export function RedirectCouponAfterSuccess(Component){return /*#__PURE__*/forwardRef(function RedirectCouponAfterSuccessOverride(props,ref){const rootRef=useRef(null);const observerRef=useRef(null);const attachTimerRef=useRef(null);const submitCheckTimerRef=useRef(null);const didAttemptSubmitRef=useRef(false);const didRedirectRef=useRef(false);const didTrackSuccessRef=useRef(false);const didReceiveInvalidRef=useRef(false);const observedFormRef=useRef(null);const detachSubmitListenerRef=useRef(null);const detachInvalidListenerRef=useRef(null);const isVisible=useCallback(element=>{if(!(element instanceof HTMLElement))return false;return element.getClientRects().length>0;},[]);const getElementText=useCallback(element=>{if(element instanceof HTMLInputElement)return(element.value||\"\").trim();return(element.textContent||\"\").replace(/\\s+/g,\" \").trim();},[]);const isCouponPage=useCallback(()=>{if(typeof window===\"undefined\")return false;const normalizedPath=window.location.pathname.replace(/\\/+$/,\"\")||\"/\";return normalizedPath===\"/coupon\";},[]);const resolveFormElement=useCallback(()=>{const root=rootRef.current;if(!root)return null;if(root instanceof HTMLFormElement)return root;const found=root.querySelector(\"form\");return found instanceof HTMLFormElement?found:null;},[]);const cleanupObserver=useCallback(()=>{if(observerRef.current){observerRef.current.disconnect();observerRef.current=null;}},[]);const hasNativeSuccessState=useCallback(form=>{const isSuccessFlag=value=>{const normalized=(value||\"\").trim().toLowerCase();return normalized===\"success\"||normalized===\"submitted\"||normalized===\"complete\";};if(isSuccessFlag(form.getAttribute(\"data-framer-form-state\")))return true;if(isSuccessFlag(form.getAttribute(\"data-form-state\")))return true;if(isSuccessFlag(form.getAttribute(\"data-state\")))return true;if(isSuccessFlag(form.getAttribute(\"data-status\")))return true;if(isSuccessFlag(form.getAttribute(\"aria-label\")))return true;const successNode=form.querySelector(\"[data-framer-form-state='success'], [data-form-state='success'], [data-state='success'], [data-status='success']\");return successNode instanceof HTMLElement;},[]);const hasNativeValidationError=useCallback(form=>{if(didReceiveInvalidRef.current)return true;if(typeof form.checkValidity===\"function\"&&!form.checkValidity())return true;const invalidField=form.querySelector(\":invalid\");return invalidField instanceof HTMLElement;},[]);const maybeRedirectOnSuccess=useCallback(()=>{if(!didAttemptSubmitRef.current||didRedirectRef.current)return;if(typeof window===\"undefined\")return;if(!isCouponPage())return;const form=observedFormRef.current??resolveFormElement();if(!form)return;if(hasNativeValidationError(form))return;const errorVisible=Array.from(form.querySelectorAll(\"button, [role='button'], p, span, div\")).some(node=>{if(!isVisible(node))return false;const text=getElementText(node).toLowerCase();return text===\"something went wrong\"||text.includes(\"error\");});if(errorVisible)return;const nativeSuccess=hasNativeSuccessState(form);const successVisible=Array.from(form.querySelectorAll(\"button, input[type='submit'], input[type='button']\")).some(node=>isVisible(node)&&getElementText(node)===\"Thank you\");if(nativeSuccess||successVisible){didRedirectRef.current=true;if(!didTrackSuccessRef.current){sendGtagEvent(\"sign_up_form_submit_button\");didTrackSuccessRef.current=true;}cleanupObserver();window.location.assign(\"/thank-you\");}},[cleanupObserver,getElementText,hasNativeSuccessState,hasNativeValidationError,isCouponPage,isVisible,resolveFormElement]);const startObservingForm=useCallback(()=>{if(!didAttemptSubmitRef.current||didRedirectRef.current)return;const form=resolveFormElement();if(!form)return;observedFormRef.current=form;maybeRedirectOnSuccess();if(didRedirectRef.current)return;cleanupObserver();const observer=new MutationObserver(()=>{maybeRedirectOnSuccess();});if(form instanceof Node&&form instanceof HTMLElement){observer.observe(form,{childList:true,subtree:true,characterData:true,attributes:true});observerRef.current=observer;}},[cleanupObserver,maybeRedirectOnSuccess,resolveFormElement]);useEffect(()=>{if(typeof window===\"undefined\")return;if(!isCouponPage())return;const tryAttachSubmitListener=()=>{const form=resolveFormElement();if(!form)return false;if(observedFormRef.current===form&&detachSubmitListenerRef.current&&detachInvalidListenerRef.current)return true;observedFormRef.current=form;const onSubmitAttempt=()=>{didAttemptSubmitRef.current=true;didReceiveInvalidRef.current=false;startObservingForm();if(submitCheckTimerRef.current){window.clearTimeout(submitCheckTimerRef.current);}submitCheckTimerRef.current=window.setTimeout(()=>{maybeRedirectOnSuccess();},300);};const onInvalid=()=>{didReceiveInvalidRef.current=true;};form.addEventListener(\"submit\",onSubmitAttempt);form.addEventListener(\"invalid\",onInvalid,true);detachSubmitListenerRef.current=()=>{form.removeEventListener(\"submit\",onSubmitAttempt);};detachInvalidListenerRef.current=()=>{form.removeEventListener(\"invalid\",onInvalid,true);};return true;};if(!tryAttachSubmitListener()){attachTimerRef.current=window.setInterval(()=>{if(tryAttachSubmitListener()&&attachTimerRef.current){window.clearInterval(attachTimerRef.current);attachTimerRef.current=null;}},250);}return()=>{cleanupObserver();if(detachSubmitListenerRef.current){detachSubmitListenerRef.current();detachSubmitListenerRef.current=null;}if(detachInvalidListenerRef.current){detachInvalidListenerRef.current();detachInvalidListenerRef.current=null;}if(attachTimerRef.current){window.clearInterval(attachTimerRef.current);attachTimerRef.current=null;}if(submitCheckTimerRef.current){window.clearTimeout(submitCheckTimerRef.current);submitCheckTimerRef.current=null;}};},[cleanupObserver,isCouponPage,maybeRedirectOnSuccess,resolveFormElement,startObservingForm]);return /*#__PURE__*/_jsx(Component,{ref:node=>{rootRef.current=node instanceof HTMLElement?node:null;setForwardedRef(ref,node);},...props});});}\nexport const __FramerMetadata__ = {\"exports\":{\"TrackFindALocationClick\":{\"type\":\"reactHoc\",\"name\":\"TrackFindALocationClick\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TrackContactUsClick\":{\"type\":\"reactHoc\",\"name\":\"TrackContactUsClick\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"RedirectCouponAfterSuccess\":{\"type\":\"reactHoc\",\"name\":\"RedirectCouponAfterSuccess\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"RedirectGoogleOfferAfterSuccess\":{\"type\":\"reactHoc\",\"name\":\"RedirectGoogleOfferAfterSuccess\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./RedirectGoogleOfferAfterSuccess.map"],"mappings":"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"}