{"version":3,"file":"ReturnIntent.CSkci4Gh.mjs","names":["useState","__legacyOverrideHOC_DataObserverContext","_jsx"],"sources":["https:/framerusercontent.com/modules/KZhMYIv9pAg2OCqPychH/86GR1Ti7b71n4ChNp5VX/ReturnIntent.js"],"sourcesContent":["//@ts-ignore\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useRouter}from\"framer\";//@ts-ignore\nimport{useEffect,useState}from\"react\";const RETURN_KEY=\"ara:returnAfterAuth\";const EXPIRY_MS=15*60*1e3;function deriveFallbackLabel(path){if(!path)return\"\";const clean=path.split(\"#\")[0].split(\"?\")[0];const segments=clean.split(\"/\").filter(Boolean);const slug=segments[segments.length-1]||clean;return slug.replace(/[-_]/g,\" \").replace(/\\s+/g,\" \").replace(/\\b\\w/g,char=>char.toUpperCase()).trim();}function storeReturnIntent(path,label){if(typeof window===\"undefined\")return;const normalizedPath=normalizeNavigationTarget(path);if(!normalizedPath)return;const payload={path:normalizedPath,label:label&&label.trim().length>0?label:deriveFallbackLabel(normalizedPath),ts:Date.now()};try{sessionStorage.setItem(RETURN_KEY,JSON.stringify(payload));}catch{// ignore storage failures\n}}function readReturnIntent(){if(typeof window===\"undefined\")return null;const raw=sessionStorage.getItem(RETURN_KEY);if(!raw)return null;try{const parsed=JSON.parse(raw);if(!parsed?.path)return null;if(Date.now()-(parsed.ts??0)>EXPIRY_MS){sessionStorage.removeItem(RETURN_KEY);return null;}return parsed;}catch{sessionStorage.removeItem(RETURN_KEY);return null;}}function clearReturnIntent(){if(typeof window===\"undefined\")return;sessionStorage.removeItem(RETURN_KEY);}export function getReturnIntent(){return readReturnIntent();}export function getReturnIntentPath(){return readReturnIntent()?.path??null;}function normalizeNavigationTarget(raw){if(!raw)return\"\";const trimmed=raw.trim();if(trimmed.length===0)return\"\";if(/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.test(trimmed)){return trimmed;}if(trimmed.startsWith(\"//\")){const protocol=typeof window!==\"undefined\"?window.location.protocol:\"https:\";return`${protocol}${trimmed}`;}if(trimmed.startsWith(\"#\"))return trimmed;const withoutLeadingDots=trimmed.replace(/^\\.?\\//,\"\");return`/${withoutLeadingDots}`;}export function consumeReturnIntent(){const payload=readReturnIntent();if(payload?.path){clearReturnIntent();return payload;}return null;}if(typeof window!==\"undefined\"){const existing=window.__araReturnIntent||{};existing.get=()=>readReturnIntent();existing.consume=()=>{const payload=readReturnIntent();if(payload?.path){clearReturnIntent();}return payload;};window.__araReturnIntent=existing;}function getCurrentUserSync(){if(typeof window===\"undefined\")return null;const module=window.__outsetaFramerModule;if(module?.getUser){try{const user=module.getUser()||null;return user;}catch{// ignore\n}}const cached=window.__outsetaCurrentUser;return cached||null;}function hasPreferredPlan(user){if(!user)return false;return Boolean(user.HasMotorsportsPlan||user.HasGoldPlan);}function redirectToPath(router,targetPath,label){if(!navigateViaRouter(router,targetPath)&&typeof window!==\"undefined\"){window.location.assign(targetPath);}}function resolvePreferredHomePath(path){if(path!==\"/\")return path;const user=getCurrentUserSync();if(!user)return path;const mapped=user.HasMotorsportsPlan?\"/motorsports/learn\":user.HasGoldPlan?\"/sim-racing/learn\":path;return mapped;}function tryDirectRouterNavigation(routerNavigate,targetPath){if(typeof routerNavigate!==\"function\"||!targetPath)return false;try{const result=routerNavigate(targetPath);if(result===false)return false;if(result&&typeof result.then===\"function\"){result.then(undefined,()=>{});}return true;}catch{return false;}}function navigateViaRouter(router,targetPath){if(!router||typeof targetPath!==\"string\"||targetPath.length===0)return false;if(/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.test(targetPath)||targetPath.startsWith(\"//\"))return false;const normalizedWithQuery=targetPath.startsWith(\"/\")||targetPath.startsWith(\"#\")?targetPath:`/${targetPath}`;const{navigate,routes}=router;if(typeof navigate!==\"function\")return false;if(!routes||Object.keys(routes).length===0){return tryDirectRouterNavigation(navigate,normalizedWithQuery);}const cleanTarget=normalizedWithQuery.split(\"#\")[0]?.split(\"?\")[0]||normalizedWithQuery;const normalized=cleanTarget.startsWith(\"/\")?cleanTarget:`/${cleanTarget}`;for(const[routeId,routeInfo]of Object.entries(routes)){const pattern=routeInfo?.path;if(!pattern)continue;if(pattern===normalized){try{navigate(routeId,\"\",{});return true;}catch{return false;}}const paramNames=[];const regexPattern=pattern.replace(/:(\\w+)/g,(_,paramName)=>{paramNames.push(paramName);return\"([^/]+)\";});const regex=new RegExp(`^${regexPattern}$`);const match=normalized.match(regex);if(match){const params=paramNames.reduce((acc,name,index)=>{acc[name]=decodeURIComponent(match[index+1]||\"\");return acc;},{});try{navigate(routeId,\"\",params);return true;}catch{return false;}}}return tryDirectRouterNavigation(navigate,normalizedWithQuery);}function resolveHref(candidate){if(!candidate)return undefined;if(typeof candidate===\"string\")return candidate;return candidate.href||candidate.url||candidate.path||candidate.linkUrl||undefined;}function resolveHrefFromEvent(target,event){const direct=resolveHref(target?.props?.href)||resolveHref(target?.props?.link)||resolveHref(target?.props?.url)||resolveHref(target?.props?.target);if(direct)return direct;const domHref=event?.currentTarget&&event.currentTarget.getAttribute?.(\"href\")||event?.target&&event.target.getAttribute?.(\"href\");if(domHref)return domHref;if(typeof window!==\"undefined\"&&event?.target instanceof Element){const anchor=event.target.closest(\"a[href]\");if(anchor?.href){try{const url=new URL(anchor.href);return url.origin===window.location.origin?url.pathname+url.search+url.hash:url.href;}catch{return anchor.getAttribute(\"href\")||undefined;}}}return undefined;}const SSO_TOKEN_PARAMS=[\"discord_token\",\"google_token\",\"garage61_token\"];async function waitForOutsetaSetter(timeoutMs=2500,pollInterval=50){if(typeof window===\"undefined\")return null;const started=Date.now();while(Date.now()-started<timeoutMs){const setter=window.Outseta?.setAccessToken;if(typeof setter===\"function\"){return setter;}await new Promise(resolve=>setTimeout(resolve,pollInterval));}return null;}async function applySsoTokenFromHash(){if(typeof window===\"undefined\")return false;const hash=window.location.hash;if(!hash||hash.length<=1)return false;const params=new URLSearchParams(hash.replace(/^#/,\"\"));for(const param of SSO_TOKEN_PARAMS){if(!params.has(param))continue;const token=params.get(param);if(!token)continue;const setter=await waitForOutsetaSetter();if(!setter){console.warn(\"[ReturnIntent] Unable to apply SSO token; Outseta not ready.\");return false;}try{await setter(token);}catch(err){console.error(\"[ReturnIntent] Failed to set Outseta access token\",err);return false;}params.delete(param);const remaining=params.toString();const nextUrl=window.location.pathname+window.location.search+(remaining.length>0?`#${remaining}`:\"\");window.history.replaceState(null,\"\",nextUrl);return true;}return false;}/**\n * Override: attach to any CTA/link that should remember\n * the current page before sending a user into authentication\n * or an upgrade flow.\n */export function returnIntentLink(){const router=useRouter();const storeAndNavigate=(event,target)=>{const href=resolveHrefFromEvent(target,event);if(!href)return;const resolvedHref=normalizeNavigationTarget(href);if(!resolvedHref)return;if(event?.preventDefault){event.preventDefault();}const label=(target?.props?.[\"data-return-label\"])||(target?.props?.[\"data-return-name\"])||(typeof target?.props?.children===\"string\"?target.props.children:undefined);const explicitPath=(target?.props?.[\"data-return-path\"])||(target?.props?.[\"data-return-slug\"]);const currentPath=typeof window!==\"undefined\"?window.location.pathname+window.location.search+window.location.hash:href;const desiredPath=explicitPath&&explicitPath.length>0?explicitPath:currentPath;const normalizedReturnPath=normalizeNavigationTarget(desiredPath);storeReturnIntent(normalizedReturnPath,label);const mappedDestination=resolvePreferredHomePath(resolvedHref);redirectToPath(router,mappedDestination,\"returnIntentLink\");};return{onTap:storeAndNavigate,onTapStart:storeAndNavigate,onClick:storeAndNavigate,href:undefined};}/**\n * Override: apply to a text layer to show a message like\n * “You'll return to X after this step”. Automatically hides\n * itself when no return intent is stored.\n */export function returnIntentNotice(){const[payload,setPayload]=useState(null);useEffect(()=>{const refresh=()=>setPayload(readReturnIntent());refresh();if(typeof window!==\"undefined\"){window.addEventListener(\"storage\",refresh);window.addEventListener(\"focus\",refresh);}return()=>{if(typeof window!==\"undefined\"){window.removeEventListener(\"storage\",refresh);window.removeEventListener(\"focus\",refresh);}};},[]);const label=payload?.label||deriveFallbackLabel(payload?.path??\"\");return{text:label,visible:Boolean(label),style:{display:label?undefined:\"none\"}};}/**\n * Override: apply to a button for a “Continue to lesson” call-to-action.\n * Redirects to the stored return intent when available, otherwise falls back\n * to the button's built-in navigation.\n */export function returnIntentButton(props={}){const router=useRouter();const[target,setTarget]=useState(null);useEffect(()=>{const refresh=()=>setTarget(readReturnIntent());refresh();if(typeof window!==\"undefined\"){window.addEventListener(\"storage\",refresh);window.addEventListener(\"focus\",refresh);}return()=>{if(typeof window!==\"undefined\"){window.removeEventListener(\"storage\",refresh);window.removeEventListener(\"focus\",refresh);}};},[]);return{onTap(event){if(!target?.path){if(typeof props?.onTap===\"function\"){try{props.onTap(event);}catch{// ignore handler errors\n}}return;}if(event?.preventDefault){event.preventDefault();}if(typeof props?.onTap===\"function\"){try{props.onTap(event);}catch{// ignore handler errors\n}}clearReturnIntent();const destination=normalizeNavigationTarget(target.path);if(!destination)return;const mappedDestination=resolvePreferredHomePath(destination);redirectToPath(router,mappedDestination,\"returnIntentButton\");}};}/**\n * Override: apply to a container/section that should only be visible\n * when a return intent is present.\n */export function showWhenReturnIntent(){const[hasIntent,setHasIntent]=useState(false);useEffect(()=>{const refresh=()=>setHasIntent(Boolean(readReturnIntent()));refresh();if(typeof window!==\"undefined\"){window.addEventListener(\"storage\",refresh);window.addEventListener(\"focus\",refresh);}return()=>{if(typeof window!==\"undefined\"){window.removeEventListener(\"storage\",refresh);window.removeEventListener(\"focus\",refresh);}};},[]);return{visible:hasIntent,style:{display:hasIntent?undefined:\"none\"}};}/**\n * Override: apply to a page/section that should immediately redirect\n * to the stored return intent if one exists (e.g. a post-auth success page).\n */export function redirectToReturnIntent(){const router=useRouter();useEffect(()=>{let isUnmounted=false;let unsubscribe=null;let fallbackTimer=null;const cleanup=()=>{unsubscribe?.();if(fallbackTimer!=null&&typeof window!==\"undefined\"){window.clearTimeout(fallbackTimer);}};const process=async()=>{await applySsoTokenFromHash();if(isUnmounted)return;const payload=consumeReturnIntent();if(!payload?.path){const fallbackDestination=resolvePreferredHomePath(\"/\");redirectToPath(router,fallbackDestination,\"redirectToReturnIntent:fallbackHome\");return;}const destination=normalizeNavigationTarget(payload.path);if(!destination)return;const mappedDestination=resolvePreferredHomePath(destination);const mappedIsHome=mappedDestination===\"/\";const user=getCurrentUserSync();const needsUser=destination===\"/\"&&mappedIsHome&&!hasPreferredPlan(user);const attemptRedirect=label=>{const refreshed=resolvePreferredHomePath(destination);redirectToPath(router,refreshed,label);};if(needsUser){if(typeof window!==\"undefined\"){const module=window.__outsetaFramerModule;if(module?.subscribe){unsubscribe=module.subscribe(newUser=>{if(hasPreferredPlan(newUser)){unsubscribe?.();unsubscribe=null;attemptRedirect(\"redirectToReturnIntent:userReady\");}});fallbackTimer=window.setTimeout(()=>{unsubscribe?.();unsubscribe=null;attemptRedirect(\"redirectToReturnIntent:fallback\");},1500);return;}}}attemptRedirect(\"redirectToReturnIntent:immediate\");};process();return()=>{isUnmounted=true;cleanup();};},[router]);return{};}import{useContext as __legacyOverrideHOC_useContext}from\"react\";import{DataObserverContext as __legacyOverrideHOC_DataObserverContext}from\"framer\";export function withreturnIntentLink(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...returnIntentLink(props)});};}withreturnIntentLink.displayName=\"returnIntentLink\";export function withreturnIntentNotice(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...returnIntentNotice(props)});};}withreturnIntentNotice.displayName=\"returnIntentNotice\";export function withreturnIntentButton(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...returnIntentButton(props)});};}withreturnIntentButton.displayName=\"returnIntentButton\";export function withshowWhenReturnIntent(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...showWhenReturnIntent(props)});};}withshowWhenReturnIntent.displayName=\"showWhenReturnIntent\";export function withredirectToReturnIntent(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...redirectToReturnIntent(props)});};}withredirectToReturnIntent.displayName=\"redirectToReturnIntent\";\nexport const __FramerMetadata__ = {\"exports\":{\"showWhenReturnIntent\":{\"type\":\"override\",\"name\":\"showWhenReturnIntent\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"consumeReturnIntent\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withshowWhenReturnIntent\":{\"type\":\"reactHoc\",\"name\":\"withshowWhenReturnIntent\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withreturnIntentLink\":{\"type\":\"reactHoc\",\"name\":\"withreturnIntentLink\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withreturnIntentNotice\":{\"type\":\"reactHoc\",\"name\":\"withreturnIntentNotice\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"returnIntentNotice\":{\"type\":\"override\",\"name\":\"returnIntentNotice\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getReturnIntentPath\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withreturnIntentButton\":{\"type\":\"reactHoc\",\"name\":\"withreturnIntentButton\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"returnIntentButton\":{\"type\":\"override\",\"name\":\"returnIntentButton\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getReturnIntent\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withredirectToReturnIntent\":{\"type\":\"reactHoc\",\"name\":\"withredirectToReturnIntent\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"redirectToReturnIntent\":{\"type\":\"override\",\"name\":\"redirectToReturnIntent\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"returnIntentLink\":{\"type\":\"override\",\"name\":\"returnIntentLink\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ReturnIntent.map"],"mappings":"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"}