{"version":3,"file":"LessonProgress.CdQKJjV2.mjs","names":["G61_API_BASE","G61_TEAM_SLUG","useState","useRef","useMemo","__legacyOverrideHOC_DataObserverContext","_jsx"],"sources":["https:/framerusercontent.com/modules/oHUSTrqX38kEUt9yIMTz/5UL7bZp13HZRWWuvr1MY/LessonProgress.js"],"sourcesContent":["//@ts-ignore\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useCallback,useEffect,useMemo,useRef,useState}from\"react\";//@ts-ignore\nimport{addPropertyControls,ControlType}from\"framer\";import{getOutsetaUserSnapshot,subscribeOutsetaUserSnapshot,useOutsetaUserSnapshot}from\"https://framerusercontent.com/modules/XsIXfInWYK7u1C1TRJrL/J81N4zU5hcb9rCM1PdGZ/OutsetaUserStore.js\";import{API_BASE as G61_API_BASE,waitForOutsetaToken,TEAM_SLUG as G61_TEAM_SLUG,sharedG61Fetch,earnedTier,getTargetTimes,isTier,TIERS}from\"https://framerusercontent.com/modules/OczZMZlcVUGGSQ01k7Z8/FasLG7K4kyBvE4ebTs4f/Garage61.js\";import{fetchWithTimeout}from\"https://framerusercontent.com/modules/CY0ecX6YcPUipjkfK23O/gV93dxhoKrLXVku5LjYr/Http.js\";const CONFIG_DEFAULTS={markButtonCompleteVariant:\"Finished\",markButtonCompleteLabel:\"Completed\",markButtonIncompleteLabel:\"Mark as Complete\",indicatorCompleteVariant:\"Complete\"};let globalConfig={...CONFIG_DEFAULTS};const FALLBACK_STRINGS={markButtonCompleteVariant:CONFIG_DEFAULTS.markButtonCompleteVariant??\"Finished\",markButtonCompleteLabel:CONFIG_DEFAULTS.markButtonCompleteLabel??\"Completed\",markButtonIncompleteLabel:CONFIG_DEFAULTS.markButtonIncompleteLabel??\"Mark as Complete\",indicatorCompleteVariant:CONFIG_DEFAULTS.indicatorCompleteVariant??\"Complete\"};let configVersion=0;// How many LessonProgressConfig components are mounted. Should be 0 or 1.\nlet mountedConfigCount=0;const lessonStates=new Map;const lessonListeners=new Map;const OUTSETA_DOMAIN=\"almeidaracingacademy.outseta.com\";const OUTSETA_CUSTOM_ACTIVITY_URL=`https://${OUTSETA_DOMAIN}/api/v1/activities/customactivity`;const OUTSETA_ENTITY_TYPE_ACCOUNT=1;const OUTSETA_ACTIVITY_TITLES={lessonCompleted:\"Lesson Completed\",lessonMedal:\"Lesson Medal\"};let userState={user:null,isReady:false,isLoading:true,error:null};let userInitialized=false;const userListeners=new Set;// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n// Config Helpers\n// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\nfunction sanitizeConfig(config){const next={};Object.entries(config).forEach(([key,value])=>{if(typeof value===\"string\"){const trimmed=value.trim();if(trimmed.length>0){next[key]=trimmed;}else{next[key]=undefined;}}else if(value!==undefined){next[key]=value;}});return next;}function updateGlobalConfig(partial){const cleaned=sanitizeConfig(partial);const keys=Object.keys(cleaned);const changed=keys.some(k=>globalConfig[k]!==cleaned[k]);if(!changed){// Still make sure a fetch happens if trainingPlanId was already set\nensureG61MedalsLoaded();return;}const previousTrainingPlanId=globalConfig.trainingPlanId;globalConfig={...globalConfig,...cleaned};configVersion+=1;// Reset cached medals if the training plan identity changed\nif(globalConfig.trainingPlanId!==previousTrainingPlanId){g61MedalsBySlug={};g61MedalsKey=null;}notifyAllLessons();ensureG61MedalsLoaded();}// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n// Outseta User Store\n// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\nfunction ensureOutsetaUserLoaded(){if(typeof window===\"undefined\"||userInitialized)return;userInitialized=true;const syncFromSharedSnapshot=()=>{const shared=getOutsetaUserSnapshot();userState={user:shared.user??null,isReady:shared.resolved,isLoading:!shared.resolved,error:null};notifyUserListeners();};syncFromSharedSnapshot();subscribeOutsetaUserSnapshot(syncFromSharedSnapshot);setupVideoCompletionListener();}// Listen for video completion events from VideoPlayer component\nlet hasVideoCompletionListener=false;function setupVideoCompletionListener(){if(typeof window===\"undefined\")return;if(hasVideoCompletionListener)return;hasVideoCompletionListener=true;const handleVideoComplete=event=>{const{lessonId}=event.detail;if(!lessonId)return;// Mark the lesson as complete (no toggle - video should only mark, never unmark)\nmarkLessonComplete(lessonId,false,\"video\");};window.addEventListener(\"markLessonComplete\",handleVideoComplete);}function subscribeUser(listener){userListeners.add(listener);return()=>userListeners.delete(listener);}function notifyUserListeners(){userListeners.forEach(listener=>listener());notifyAllLessons();ensureG61MedalsLoaded();}// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n// Lesson Store Helpers\n// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\nfunction ensureLessonEntry(lessonId){if(!lessonStates.has(lessonId)){lessonStates.set(lessonId,{isSaving:false,error:null});}if(!lessonListeners.has(lessonId)){lessonListeners.set(lessonId,new Set);}return lessonStates.get(lessonId);}function subscribeLesson(lessonId,listener){ensureLessonEntry(lessonId);const set=lessonListeners.get(lessonId);set.add(listener);return()=>set.delete(listener);}function notifyLesson(lessonId){const listeners=lessonListeners.get(lessonId);if(listeners){listeners.forEach(listener=>listener());}}function notifyAllLessons(){lessonListeners.forEach(listeners=>{listeners.forEach(listener=>listener());});}function updateLessonState(lessonId,partial){const state=ensureLessonEntry(lessonId);Object.assign(state,partial);notifyLesson(lessonId);}function parseCompletedLessons(raw){if(!raw)return[];if(Array.isArray(raw)){return raw.filter(item=>typeof item===\"string\");}if(typeof raw===\"string\"){try{const parsed=JSON.parse(raw);if(Array.isArray(parsed)){return parsed.filter(item=>typeof item===\"string\");}}catch(error){}}return[];}// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n// Outseta Custom Activity Helpers\n// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\nasync function recordLessonCompletionActivity(lessonId,source){if(typeof window===\"undefined\")return;if(typeof lessonId!==\"string\"||lessonId.trim().length===0)return;const trimmedLessonId=lessonId.trim();await postOutsetaActivity({lessonId:trimmedLessonId,title:OUTSETA_ACTIVITY_TITLES.lessonCompleted,description:`Lesson \"${trimmedLessonId}\" marked complete via ${source}`,activityData:{type:\"lesson-complete\",lessonId:trimmedLessonId,source}});}function queueLessonCompletionActivity(lessonId,source){recordLessonCompletionActivity(lessonId,source).catch(error=>{console.warn(\"[LessonProgress] Activity logging error\",error);});}async function recordLessonMedalActivity(lessonId,medal){if(typeof window===\"undefined\")return;if(typeof lessonId!==\"string\"||lessonId.trim().length===0)return;const trimmedLessonId=lessonId.trim();const label=medal.charAt(0).toUpperCase()+medal.slice(1);await postOutsetaActivity({lessonId:trimmedLessonId,title:`${OUTSETA_ACTIVITY_TITLES.lessonMedal} – ${label}`,description:`Awarded ${label} medal for lesson \"${trimmedLessonId}\"`,activityData:{type:\"lesson-medal\",lessonId:trimmedLessonId,medal}});}function queueLessonMedalActivity(lessonId,medal){recordLessonMedalActivity(lessonId,medal).catch(error=>{console.warn(\"[LessonProgress] Medal activity logging error\",error);});}async function postOutsetaActivity(payload){const user=userState.user;if(!user)return;const accountUid=extractAccountUid(user);if(!accountUid){return;}const accessToken=await getOutsetaAccessTokenForActivities();if(!accessToken){return;}try{const response=await fetchWithTimeout(OUTSETA_CUSTOM_ACTIVITY_URL,{method:\"POST\",headers:{Authorization:`Bearer ${accessToken}`,\"Content-Type\":\"application/json\"},body:JSON.stringify({Title:payload.title,Description:payload.description,ActivityData:JSON.stringify({...payload.activityData,recordedAt:new Date().toISOString()}),EntityType:OUTSETA_ENTITY_TYPE_ACCOUNT,EntityUid:accountUid})});if(!response.ok){throw new Error(`Outseta activity failed with status ${response.status}`);}}catch(error){console.warn(\"[LessonProgress] Failed to record Outseta activity\",error);}}function extractAccountUid(user){if(!user)return null;const candidates=[user.Account?.Uid,user.AccountUid,user[\"Account.Uid\"],user.PrimaryAccount?.Uid];if(Array.isArray(user.PersonAccount)){user.PersonAccount.forEach(membership=>{candidates.push(membership?.Account?.Uid);});}if(Array.isArray(user[\"PersonAccount\"])){user[\"PersonAccount\"].forEach(membership=>{candidates.push(membership?.Account?.Uid);});}for(const candidate of candidates){if(typeof candidate===\"string\"){const trimmed=candidate.trim();if(trimmed.length>0){return trimmed;}}}return null;}async function getOutsetaAccessTokenForActivities(){if(typeof window===\"undefined\"){return null;}const module=window.__outsetaFramerModule;if(module?.getAccessTokenAsync){try{const tokenResult=await module.getAccessTokenAsync(\"lessonProgress:activity\");if(typeof tokenResult===\"string\"&&tokenResult.trim().length>0){return tokenResult;}if(tokenResult&&typeof tokenResult===\"object\"&&typeof tokenResult.access_token===\"string\"){return tokenResult.access_token;}}catch(error){console.warn(\"[LessonProgress] Unable to fetch Outseta token via module\",error);}}const directToken=window.Outseta?.accessToken?.access_token;if(typeof directToken===\"string\"&&directToken.trim().length>0){return directToken;}return null;}function parseLessonMedals(raw){if(typeof raw===\"string\"){try{return parseLessonMedals(JSON.parse(raw));}catch{return{};}}if(!raw||typeof raw!==\"object\"||Array.isArray(raw))return{};return Object.fromEntries(Object.entries(raw).filter(([,value])=>isTier(value)));}// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n// G61 Auto-Medal Computation\n// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n// Medals are derived from the Garage61 training plan: compare the\n// user's fastest lap for each content item against bronze/silver/gold/platinum\n// targets and store the highest achieved tier keyed by lesson slug.\nconst G61_CACHE_PREFIX=\"ara:lessonProgress:g61medals:v2\";const G61_CACHE_TTL_MS=2*60*1e3;let g61MedalsBySlug={};let g61MedalsKey=null;let g61Fetching=false;// Last time we fetched fresh data for the current cacheKey. Used to throttle\n// repeated `ensureG61MedalsLoaded` calls from overlapping lifecycle events\n// (config mount, user profile updates, etc.) that would otherwise each fire\n// an identical /training-plan request.\nlet g61LastFetchedAt=0;let g61LastFetchedKey=null;const G61_REFRESH_MIN_MS=90*1e3;function extractSlugFromUrl(value){if(typeof value!==\"string\")return undefined;const trimmed=value.trim();if(!trimmed)return undefined;try{const url=/^[a-z]+:/i.test(trimmed)?new URL(trimmed):new URL(trimmed,\"https://placeholder.invalid\");return extractSlugFromPath(url.pathname);}catch{return extractSlugFromPath(trimmed);}}function computeMedalFromTargets(fastest,targets){const{bronze,silver,gold,platinum}=getTargetTimes(targets);return earnedTier(fastest??undefined,bronze,silver,gold,platinum);}function buildG61MedalsFromPayload(payload){const medals={};const content=Array.isArray(payload?.trainingPlan?.content)?payload.trainingPlan.content:[];const resultsByContent=payload?.resultsByContent&&typeof payload.resultsByContent===\"object\"?payload.resultsByContent:{};for(const item of content){const slug=extractSlugFromUrl(item?.link);if(!slug)continue;const laps=Array.isArray(resultsByContent[item?.id])?resultsByContent[item.id]:[];let fastest=null;for(const lap of laps){if(typeof lap?.lapTime===\"number\"&&lap.lapTime>0){if(fastest===null||lap.lapTime<fastest)fastest=lap.lapTime;}}if(fastest===null&&typeof item?.result?.lapTime===\"number\"){fastest=item.result.lapTime;}const medal=computeMedalFromTargets(fastest,item?.targets);if(medal)medals[slug]=medal;}return medals;}function readG61Cache(key){if(typeof window===\"undefined\")return null;try{const raw=window.sessionStorage?.getItem(key);if(!raw)return null;const parsed=JSON.parse(raw);if(!parsed||typeof parsed!==\"object\")return null;if(typeof parsed.ts!==\"number\"||Date.now()-parsed.ts>G61_CACHE_TTL_MS)return null;return parsed.medals&&typeof parsed.medals===\"object\"?parsed.medals:null;}catch{return null;}}function writeG61Cache(key,medals){if(typeof window===\"undefined\")return;try{window.sessionStorage?.setItem(key,JSON.stringify({ts:Date.now(),medals}));}catch{// storage unavailable — ignore\n}}function extractUidFromUser(user){if(!user)return null;const candidates=[user.Uid,user.uid,user.PersonUid,user.Person?.Uid];for(const candidate of candidates){if(typeof candidate===\"string\"&&candidate.trim().length>0){return candidate.trim();}}return null;}async function ensureG61MedalsLoaded(){if(typeof window===\"undefined\")return;if(g61Fetching)return;const trainingPlanId=globalConfig.trainingPlanId?.trim();if(!trainingPlanId)return;const user=userState.user;if(!user)return;const uid=extractUidFromUser(user)??\"anon\";const cacheKey=`${G61_CACHE_PREFIX}:${uid}:${trainingPlanId}`;// Warm paint from cache on first access for this key. If the cache is\n// still within TTL we skip the network entirely -- the client TTL matches\n// the server Redis TTL (2min), so revalidating within that window would\n// just return the same payload.\nif(g61MedalsKey!==cacheKey){const cached=readG61Cache(cacheKey);g61MedalsBySlug=cached??{};g61MedalsKey=cacheKey;if(cached){notifyAllLessons();g61LastFetchedAt=Date.now();g61LastFetchedKey=cacheKey;return;}}// Skip network if we already fetched this same key recently. The cache\n// TTL is 2min and we don't want each mount/user-update event to re-fire.\nif(g61LastFetchedKey===cacheKey&&Date.now()-g61LastFetchedAt<G61_REFRESH_MIN_MS){return;}// getAccessToken() is synchronous and returns null until Outseta's SDK has\n// resolved, so reading it here skipped the medal fetch on every cold load.\nconst token=await waitForOutsetaToken();if(!token)return;g61Fetching=true;try{const url=new URL(G61_API_BASE);url.searchParams.set(\"trainingPlanId\",trainingPlanId);url.searchParams.set(\"team\",G61_TEAM_SLUG);url.searchParams.set(\"mode\",\"full\");const result=await sharedG61Fetch(url.toString(),token);if(!result.ok||!result.json)return;const medals=buildG61MedalsFromPayload(result.json);// Only update if still on the same cache key (user/plan hasn't changed)\nif(g61MedalsKey===cacheKey){g61MedalsBySlug=medals;writeG61Cache(cacheKey,medals);g61LastFetchedAt=Date.now();g61LastFetchedKey=cacheKey;notifyAllLessons();}}catch{// silent — fall back to manual medals\n}finally{g61Fetching=false;}}function getG61Medal(lessonId){return g61MedalsBySlug[lessonId]??null;}function getLessonMedal(lessonId){// Show the highest award from either source, including manual Platinum.\nconst earned=getG61Medal(lessonId);const manual=parseLessonMedals(userState.user?.LessonMedals)[lessonId]??null;return[...TIERS].reverse().find(tier=>tier===earned||tier===manual)??null;}async function setLessonMedal(lessonId,medal){const user=userState.user;const lessonState=ensureLessonEntry(lessonId);if(!user){updateLessonState(lessonId,{error:\"Sign in to save progress\"});return;}if(lessonState.isSaving){return;}const currentMedals=parseLessonMedals(user.LessonMedals);const currentMedal=currentMedals[lessonId]??null;// Toggle: if clicking the same medal, remove it\nconst newMedal=currentMedal===medal?null:medal;// Update medals object\nconst updatedMedals={...currentMedals};if(newMedal===null){delete updatedMedals[lessonId];}else{updatedMedals[lessonId]=newMedal;}// Determine completion updates based on medal presence\nconst shouldBeComplete=newMedal!==null;const completedLessons=parseCompletedLessons(user.CompletedLessons);const isCurrentlyComplete=completedLessons.includes(lessonId);let updatedCompletedLessons=completedLessons;if(shouldBeComplete&&!isCurrentlyComplete){updatedCompletedLessons=[...completedLessons,lessonId];}else if(!shouldBeComplete&&isCurrentlyComplete){updatedCompletedLessons=completedLessons.filter(id=>id!==lessonId);}const shouldUpdateCompletedLessons=shouldBeComplete!==isCurrentlyComplete;const becameCompleteViaMedal=shouldBeComplete&&!isCurrentlyComplete;// OPTIMISTIC UPDATE\nconst previousMedalsValue=user.LessonMedals;const previousCompletedValue=user.CompletedLessons;user.LessonMedals=JSON.stringify(updatedMedals);if(shouldUpdateCompletedLessons){user.CompletedLessons=JSON.stringify(updatedCompletedLessons);}updateLessonState(lessonId,{isSaving:true,error:null});notifyUserListeners();// Sync with Outseta\ntry{if(typeof user.update!==\"function\"){throw new Error(\"Outseta user object is missing update()\");}const updatePayload={LessonMedals:JSON.stringify(updatedMedals)};if(shouldUpdateCompletedLessons){updatePayload.CompletedLessons=JSON.stringify(updatedCompletedLessons);}await user.update(updatePayload);updateLessonState(lessonId,{isSaving:false,error:null});if(becameCompleteViaMedal){queueLessonCompletionActivity(lessonId,\"medal\");}if(newMedal!==null){queueLessonMedalActivity(lessonId,newMedal);}}catch(error){// Rollback on failure\nuser.LessonMedals=previousMedalsValue;user.CompletedLessons=previousCompletedValue;updateLessonState(lessonId,{isSaving:false,error:\"Failed to save medal\"});notifyUserListeners();}}function getLessonSnapshot(lessonId){const lessonState=ensureLessonEntry(lessonId);const{user,isReady,isLoading,error:userError}=userState;const completedLessons=parseCompletedLessons(user?.CompletedLessons);// A G61-earned medal also counts as complete so lesson-list overrides\n// (ShowWhenComplete, LessonProgressMedal, MedalSelector) switch to the\n// medal variant. Users without a G61 link have no G61 medals, so this\n// cleanly degrades to pure Outseta completion for them.\nconst isComplete=completedLessons.includes(lessonId)||getG61Medal(lessonId)!==null;return{lessonId,isComplete,isSaving:lessonState.isSaving,error:lessonState.error??userError,isReady,isLoading,hasUser:!!user};}async function markLessonComplete(lessonId,allowToggle=true,source=\"manual\"){const user=userState.user;const lessonState=ensureLessonEntry(lessonId);if(!user){updateLessonState(lessonId,{error:\"Sign in to save progress\"});return;}if(lessonState.isSaving){return;}const completedLessons=parseCompletedLessons(user.CompletedLessons);const isCurrentlyComplete=completedLessons.includes(lessonId);const becameComplete=!isCurrentlyComplete;// If already complete and toggling is disabled, do nothing\nif(isCurrentlyComplete&&!allowToggle){return;}// Toggle: add if not complete, remove if complete (only if allowToggle is true)\nconst updatedLessons=isCurrentlyComplete&&allowToggle?completedLessons.filter(id=>id!==lessonId):[...completedLessons,lessonId];const action=isCurrentlyComplete?\"unmarked\":\"marked\";// OPTIMISTIC UPDATE: Update UI immediately!\nconst previousValue=user.CompletedLessons;user.CompletedLessons=JSON.stringify(updatedLessons);updateLessonState(lessonId,{isSaving:true,error:null});notifyUserListeners()// UI updates instantly ⚡\n;// Now sync with Outseta in the background\ntry{if(typeof user.update!==\"function\"){throw new Error(\"Outseta user object is missing update()\");}await user.update({CompletedLessons:JSON.stringify(updatedLessons)});updateLessonState(lessonId,{isSaving:false,error:null});if(becameComplete){queueLessonCompletionActivity(lessonId,source);}}catch(error){// Rollback on failure\nuser.CompletedLessons=previousValue;updateLessonState(lessonId,{isSaving:false,error:\"Failed to save progress\"});notifyUserListeners();}}// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n// Lesson ID Resolution\n// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\nfunction extractLessonIdFromHref(element){if(!element)return null;// 1. Check parent container for data-lesson-id\nconst container=element.closest(\"[data-lesson-id]\");if(container?.dataset.lessonId){return container.dataset.lessonId;}// 2. Look for a link - search up the tree to find the nearest container with a link\nlet currentParent=element.parentElement;let attempts=0;while(currentParent&&attempts<10){const link=currentParent.querySelector(\"a[href]\");if(link?.href){try{const url=new URL(link.href);const pathSegments=url.pathname.split(\"/\").filter(Boolean);const slug=pathSegments[pathSegments.length-1];if(slug&&slug!==\"_preview\"&&!slug.startsWith(\"#\")){return slug;}}catch(e){// Invalid URL, continue searching\n}}currentParent=currentParent.parentElement;attempts++;}return null;}// Read lesson ID from props. Accepts either a raw slug\n// (lessonId / lesson_id / slug) or a URL field from a CMS\n// (link / href / path / url) whose last path segment is the slug.\nfunction resolveLessonIdFromProps(props){if(!props||typeof props!==\"object\")return null;const slugCandidates=[props.lessonId,props.lesson_id,props.slug];for(const candidate of slugCandidates){if(typeof candidate===\"string\"&&candidate.trim().length>0){return candidate.trim();}}const urlCandidates=[props.link,props.href,props.path,props.url];for(const candidate of urlCandidates){const slug=extractSlugFromUrl(candidate);if(slug&&slug!==\"_preview\")return slug;}return null;}function resolveLessonId(explicitId){if(explicitId&&explicitId.trim().length>0){return explicitId.trim();}if(globalConfig.lessonId&&globalConfig.lessonId.trim().length>0){return globalConfig.lessonId.trim();}if(typeof window!==\"undefined\"){const globalSlug=window.__lessonId||window.__lessonSlug||window.__lessonProgress?.lessonId;if(typeof globalSlug===\"string\"&&globalSlug.trim().length>0){return globalSlug.trim();}const dataNode=document.querySelector(\"[data-lesson-id]\");if(dataNode?.textContent?.trim()){return dataNode.textContent.trim();}const pathSegments=window.location.pathname.split(\"/\").map(segment=>segment.trim()).filter(Boolean);if(pathSegments.length>0){let candidate=pathSegments[pathSegments.length-1];if(candidate===\"_preview\"&&pathSegments.length>1){candidate=pathSegments[pathSegments.length-2];}if(candidate&&candidate!==\"_preview\"){return candidate;}}}return\"lesson-1\";}// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n// Public Hooks\n// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\nexport function useLessonProgress(lessonIdOverride){// Use simpler state management to avoid hook ordering issues\nconst[,forceUpdate]=useState(0);useEffect(()=>{ensureOutsetaUserLoaded();},[]);const resolvedLessonId=useMemo(()=>resolveLessonId(lessonIdOverride),[lessonIdOverride]);// Subscribe to updates\nuseEffect(()=>{const unsubUser=subscribeUser(()=>forceUpdate(n=>n+1));const unsubLesson=subscribeLesson(resolvedLessonId,()=>forceUpdate(n=>n+1));return()=>{unsubUser();unsubLesson();};},[resolvedLessonId]);// Get current state directly from global stores\nconst snapshot=getLessonSnapshot(resolvedLessonId);const markCompleteCallback=useCallback(()=>{return markLessonComplete(resolvedLessonId,true)// Allow toggle for hook usage\n;},[resolvedLessonId]);return useMemo(()=>({...snapshot,lessonId:resolvedLessonId,markComplete:markCompleteCallback}),[snapshot,resolvedLessonId,markCompleteCallback]);}export function useIsLessonComplete(lessonId){const{isComplete}=useLessonProgress(lessonId);return isComplete;}export function LessonProgressConfig(props){// Settings live in one module-level object, so this component is a\n// page singleton. A second one silently wins on whichever mounts last,\n// and since it renders nothing there is nothing on the canvas to see.\n// Say so rather than letting labels change for no visible reason.\nuseEffect(()=>{mountedConfigCount+=1;if(mountedConfigCount>1){console.warn(`[LessonProgress] ${mountedConfigCount} LessonProgressConfig components are on this page. `+\"It is meant to be placed once — the last one to mount wins, \"+\"so settings from the others are ignored.\");}return()=>{mountedConfigCount-=1;};},[]);useEffect(()=>{updateGlobalConfig(props);},[props.lessonId,props.trainingPlanId,props.markButtonCompleteVariant,props.markButtonIncompleteVariant,props.markButtonCompleteLabel,props.markButtonIncompleteLabel,props.indicatorCompleteVariant,props.indicatorIncompleteVariant]);return null;}addPropertyControls(LessonProgressConfig,{lessonId:{type:ControlType.String,title:\"Lesson ID\",placeholder:\"auto from slug\"},trainingPlanId:{type:ControlType.String,title:\"Training Plan ID\",placeholder:\"enables G61 auto-medals\"},markButtonCompleteVariant:{type:ControlType.String,title:\"Button: Complete\",placeholder:FALLBACK_STRINGS.markButtonCompleteVariant},markButtonIncompleteVariant:{type:ControlType.String,title:\"Button: Incomplete\",placeholder:\"auto (initial variant)\"},markButtonCompleteLabel:{type:ControlType.String,title:\"Label: Complete\",placeholder:FALLBACK_STRINGS.markButtonCompleteLabel},markButtonIncompleteLabel:{type:ControlType.String,title:\"Label: Incomplete\",placeholder:FALLBACK_STRINGS.markButtonIncompleteLabel},indicatorCompleteVariant:{type:ControlType.String,title:\"Indicator: Complete\",placeholder:FALLBACK_STRINGS.indicatorCompleteVariant},indicatorIncompleteVariant:{type:ControlType.String,title:\"Indicator: Incomplete\",placeholder:\"auto (initial variant)\"}});// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n// Overrides – attach these to Framer layers\n// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\nexport function LessonProgressMarkButton(props){// Use simpler state management to avoid hook ordering issues\nconst[,forceUpdate]=useState(0);const initialText=useRef(undefined);const initialVariant=useRef(undefined);// Initialize Outseta\nuseEffect(()=>{ensureOutsetaUserLoaded();},[]);// Subscribe to updates\nuseEffect(()=>{const unsubUser=subscribeUser(()=>forceUpdate(n=>n+1));const lessonId=resolveLessonId();const unsubLesson=subscribeLesson(lessonId,()=>forceUpdate(n=>n+1));return()=>{unsubUser();unsubLesson();};},[]);// Get current state directly from global stores\nconst lessonId=resolveLessonId();const snapshot=getLessonSnapshot(lessonId);const{isComplete,isSaving,hasUser,isReady}=snapshot;// Initialize refs\nif(initialText.current===undefined&&typeof props.text===\"string\"){initialText.current=props.text;}if(initialVariant.current===undefined&&typeof props.variant===\"string\"){initialVariant.current=props.variant;}const completeVariant=globalConfig.markButtonCompleteVariant||FALLBACK_STRINGS.markButtonCompleteVariant;const incompleteVariant=globalConfig.markButtonIncompleteVariant||initialVariant.current;const completeLabel=globalConfig.markButtonCompleteLabel||FALLBACK_STRINGS.markButtonCompleteLabel;const incompleteLabel=globalConfig.markButtonIncompleteLabel||initialText.current||FALLBACK_STRINGS.markButtonIncompleteLabel;const disabled=isSaving||!hasUser&&isReady;const tooltip=!hasUser&&isReady?\"Sign in to save progress\":props.tooltip??props.title;return{variant:isComplete?completeVariant:incompleteVariant||props.variant,text:isComplete?completeLabel:incompleteLabel,disabled,tooltip,onTap:async()=>{if(isSaving)return;// Allow clicking when complete for toggle\nif(!hasUser){updateLessonState(lessonId,{error:\"Sign in to save progress\"});return;}await markLessonComplete(lessonId,true)// Allow toggle for manual button\n;}};}export function LessonProgressVariant(props){// Use simpler state management to avoid hook ordering issues\nconst[,forceUpdate]=useState(0);const initialVariant=useRef(undefined);// Initialize Outseta\nuseEffect(()=>{ensureOutsetaUserLoaded();},[]);// Get lesson ID\nconst lessonId=resolveLessonId();// Subscribe to updates\nuseEffect(()=>{const unsubUser=subscribeUser(()=>forceUpdate(n=>n+1));const unsubLesson=subscribeLesson(lessonId,()=>forceUpdate(n=>n+1));return()=>{unsubUser();unsubLesson();};},[lessonId]);// Get current state directly from global stores\nconst snapshot=getLessonSnapshot(lessonId);const{isComplete}=snapshot;if(initialVariant.current===undefined&&typeof props.variant===\"string\"){initialVariant.current=props.variant;}const completeVariant=globalConfig.indicatorCompleteVariant||FALLBACK_STRINGS.indicatorCompleteVariant;const incompleteVariant=globalConfig.indicatorIncompleteVariant||initialVariant.current;return{variant:isComplete?completeVariant:incompleteVariant||props.variant};}export function LessonProgressShowWhenComplete(props){// Use simpler state management to avoid hook ordering issues\nconst[,forceUpdate]=useState(0);const[lessonId,setLessonId]=useState(\"\");const elementRef=useRef(null);const initialVariant=useRef(undefined);// Initialize Outseta\nuseEffect(()=>{ensureOutsetaUserLoaded();},[]);// Try to find lesson ID from various sources\nuseEffect(()=>{// 1. Check props (slug or CMS URL field)\nconst propId=resolveLessonIdFromProps(props);if(propId){setLessonId(propId);return;}// 2. Fall back to DOM detection (data attr or sibling <a href>)\nconst fromDom=extractLessonIdFromHref(elementRef.current);if(fromDom){setLessonId(fromDom);return;}setLessonId(\"\");},[props]);// Subscribe to updates\nuseEffect(()=>{if(!lessonId)return;const unsubUser=subscribeUser(()=>forceUpdate(n=>n+1));const unsubLesson=subscribeLesson(lessonId,()=>forceUpdate(n=>n+1));return()=>{unsubUser();unsubLesson();};},[lessonId]);// Get current state directly from global stores\nconst snapshot=lessonId?getLessonSnapshot(lessonId):{isComplete:false,isReady:false,isLoading:true};const{isComplete,isReady,isLoading}=snapshot;const currentMedal=lessonId?getLessonMedal(lessonId):null;if(initialVariant.current===undefined&&typeof props?.variant===\"string\"){initialVariant.current=props.variant;}const completeVariant=currentMedal?currentMedal.charAt(0).toUpperCase()+currentMedal.slice(1):globalConfig.indicatorCompleteVariant||initialVariant.current||props?.variant;const visible=isComplete&&(isReady||!isLoading);const baseStyle=props?.style??{};const displayValue=visible?baseStyle?.display??undefined:\"none\";return{ref:elementRef,visible,variant:visible?completeVariant:props?.variant,style:{...baseStyle,display:displayValue}};}export function LessonProgressMedal(props){const[,forceUpdate]=useState(0);const[lessonId,setLessonId]=useState(\"\");const elementRef=useRef(null);const initialVariant=useRef(undefined);useEffect(()=>{ensureOutsetaUserLoaded();},[]);useEffect(()=>{const propId=resolveLessonIdFromProps(props);if(propId){setLessonId(propId);return;}const fromDom=extractLessonIdFromHref(elementRef.current);if(fromDom){setLessonId(fromDom);return;}setLessonId(\"\");},[props]);useEffect(()=>{if(!lessonId)return;const unsubUser=subscribeUser(()=>forceUpdate(n=>n+1));const unsubLesson=subscribeLesson(lessonId,()=>forceUpdate(n=>n+1));return()=>{unsubUser();unsubLesson();};},[lessonId]);const snapshot=lessonId?getLessonSnapshot(lessonId):{isComplete:false,isReady:false,isLoading:true};const{isComplete}=snapshot;const currentMedal=lessonId?getLessonMedal(lessonId):null;if(initialVariant.current===undefined&&typeof props?.variant===\"string\"){initialVariant.current=props.variant;}const medalVariant=currentMedal?currentMedal.charAt(0).toUpperCase()+currentMedal.slice(1):globalConfig.indicatorCompleteVariant||initialVariant.current||props?.variant;const fallbackVariant=initialVariant.current||props?.variant;const variant=isComplete?medalVariant:fallbackVariant;return{ref:elementRef,variant,style:props?.style};}export function LessonProgressShowWhenIncomplete(props){// Use simpler state management to avoid hook ordering issues\nconst[,forceUpdate]=useState(0);const[lessonId,setLessonId]=useState(\"\");const elementRef=useRef(null);// Initialize Outseta\nuseEffect(()=>{ensureOutsetaUserLoaded();},[]);// Try to find lesson ID from various sources\nuseEffect(()=>{// 1. Check props (slug or CMS URL field)\nconst propId=resolveLessonIdFromProps(props);if(propId){setLessonId(propId);return;}// 2. Fall back to DOM detection (data attr or sibling <a href>)\nconst fromDom=extractLessonIdFromHref(elementRef.current);if(fromDom){setLessonId(fromDom);return;}setLessonId(\"\");},[props]);// Subscribe to updates\nuseEffect(()=>{if(!lessonId)return;const unsubUser=subscribeUser(()=>forceUpdate(n=>n+1));const unsubLesson=subscribeLesson(lessonId,()=>forceUpdate(n=>n+1));return()=>{unsubUser();unsubLesson();};},[lessonId]);// Get current state directly from global stores\nconst snapshot=lessonId?getLessonSnapshot(lessonId):{isComplete:false,isReady:false,isLoading:true};const{isComplete,isReady,isLoading}=snapshot;const visible=!isComplete&&(isReady||!isLoading);const baseStyle=props?.style??{};const displayValue=visible?baseStyle?.display??undefined:\"none\";return{ref:elementRef,visible,style:{...baseStyle,display:displayValue}};}function normalizeLessonPath(value){if(!value)return undefined;const trimmed=value.trim();if(!trimmed)return undefined;if(/^[a-z]+:/i.test(trimmed))return trimmed;if(trimmed.startsWith(\"/\"))return trimmed;return`/${trimmed}`;}function extractSlugFromPath(path){if(!path)return undefined;const clean=path.split(\"#\")[0].split(\"?\")[0];const segments=clean.split(\"/\").filter(Boolean);const slug=segments[segments.length-1]||\"\";return slug||undefined;}function coerceLessonMeta(user,prefix){if(!user)return null;const rawSlug=typeof user?.[`${prefix}Slug`]===\"string\"?user[`${prefix}Slug`].trim():\"\";const rawPath=typeof user?.[`${prefix}Path`]===\"string\"?user[`${prefix}Path`].trim():\"\";const rawTitle=typeof user?.[`${prefix}Title`]===\"string\"?user[`${prefix}Title`].trim():\"\";const normalizedPath=normalizeLessonPath(rawPath||rawSlug);const derivedSlug=rawSlug||extractSlugFromPath(normalizedPath);if(!normalizedPath&&!rawTitle&&!derivedSlug){return null;}return{path:normalizedPath||undefined,title:rawTitle||undefined,slug:derivedSlug||undefined};}function getSimpleResumeLessonMeta(){const user=userState.user;if(!user)return null;const rawPath=typeof user?.LastLessonPath===\"string\"?user.LastLessonPath.trim():\"\";const rawTitle=typeof user?.LastLessonTitle===\"string\"?user.LastLessonTitle.trim():\"\";const path=normalizeLessonPath(rawPath);const title=rawTitle||undefined;if(!path||!title)return null;return{path,title};}function getLastLessonMeta(){const simple=getSimpleResumeLessonMeta();if(!simple)return null;return{path:simple.path,title:simple.title};}function getLastLockedLessonMeta(){return coerceLessonMeta(userState.user,\"LastLockedLesson\");}function visibilityStyle(props,visible){const style={...props?.style??{}};if(visible){// Don't inherit a previous override's display:none after auth resolves.\nif(style.display===\"none\")delete style.display;}else{style.display=\"none\";}return style;}function useLessonMeta(getter){const snapshot=useOutsetaUserSnapshot();useEffect(()=>{ensureOutsetaUserLoaded();},[]);userState={user:snapshot.user??null,isReady:snapshot.resolved,isLoading:!snapshot.resolved,error:null};return{meta:getter(),resolved:snapshot.resolved};}export function LastLessonLink(props){const{meta,resolved}=useLessonMeta(getLastLessonMeta);const href=normalizeLessonPath(meta?.path);const visible=resolved&&Boolean(meta?.path&&meta?.title);return{href:href??props?.href,visible,style:visibilityStyle(props,visible)};}export function withResumeLastLessonButton(props){const{meta,resolved}=useLessonMeta(getLastLessonMeta);const href=getValidLastLessonInternalHref(meta);const visible=resolved&&Boolean(href);const navigateToLesson=event=>{if(!href||typeof window===\"undefined\")return;if(event?.preventDefault){event.preventDefault();}const openInNewTab=Boolean(event?.metaKey||event?.ctrlKey);if(openInNewTab){window.open(href,\"_blank\",\"noopener,noreferrer\");return;}window.location.assign(href);};const onKeyDown=event=>{if(event?.key===\"Enter\"){navigateToLesson(event);}};return{href:visible?href:props?.href,visible,role:\"link\",tabIndex:0,onClick:navigateToLesson,onTap:navigateToLesson,onKeyDown,style:{...visibilityStyle(props,visible),cursor:visible?\"pointer\":props?.style?.cursor??\"default\"}};}const ACADEMY_WELCOME_FALLBACK_PATH=\"/sim-racing/learn/lessons/welcome-to-the-academy\";function normalizeInternalLessonPath(value){const normalized=normalizeLessonPath(value);if(!normalized)return undefined;if(normalized.startsWith(\"//\")){return undefined;}if(/^[a-z]+:/i.test(normalized)){try{const parsed=new URL(normalized);const isHttp=parsed.protocol===\"http:\"||parsed.protocol===\"https:\";if(!isHttp)return undefined;// Accept absolute URLs for internal lesson/workshop links by\n// normalizing them to path form, which keeps Framer routing on-site.\n// If running in the browser and this URL is clearly external, ignore it.\nif(typeof window!==\"undefined\"&&parsed.origin!==window.location.origin){return undefined;}const internalPath=`${parsed.pathname}${parsed.search}${parsed.hash}`;return internalPath.startsWith(\"/\")?internalPath:`/${internalPath}`;}catch{return undefined;}}return normalized.startsWith(\"/\")?normalized:`/${normalized}`;}function getValidLastLessonInternalHref(meta){const hasTitle=typeof meta?.title===\"string\"&&meta.title.trim().length>0;if(!hasTitle)return undefined;return normalizeInternalLessonPath(meta?.path);}export function withAcademyResumeLink(props){const{meta}=useLessonMeta(getLastLessonMeta);const hasValidLastLesson=Boolean(meta?.path&&meta?.title);const lastLessonHref=hasValidLastLesson?normalizeInternalLessonPath(meta?.path):undefined;return{href:lastLessonHref??ACADEMY_WELCOME_FALLBACK_PATH};}export function useResumeLessonHref(){const{meta}=useLessonMeta(getLastLessonMeta);const hasValidLastLesson=Boolean(meta?.path&&meta?.title);if(!hasValidLastLesson)return undefined;return normalizeInternalLessonPath(meta?.path);}export function LastLessonTitle(props){const{meta,resolved}=useLessonMeta(getLastLessonMeta);const text=meta?.title||props?.text||\"\";const visible=resolved&&Boolean(meta?.path&&meta?.title);return{text,visible,style:visibilityStyle(props,visible)};}const LESSON_IMAGE_FILES={\"about-learning-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"academy-trial-1\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"academy-trial-10\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"academy-trial-11\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"academy-trial-12\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"academy-trial-13\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"academy-trial-14\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"academy-trial-15\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"academy-trial-16\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"academy-trial-17\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"academy-trial-18\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"academy-trial-19\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"academy-trial-2\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"academy-trial-20\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"academy-trial-3\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"academy-trial-4\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"academy-trial-5\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"academy-trial-6\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"academy-trial-7\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"academy-trial-8\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"academy-trial-9\":\"5T74POY3EGP9AOuvaXH9dvCBYuc.png\",\"active-vs-passive-countersteer\":\"KDXnHAKNSrp6UOVPcl7q8gcoq0M.png\",\"active-vs-passive-driving\":\"6RpMcipXya7BsiqJv4b4uTDeoU.png\",\"active-vs-passive-driving-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"adapting-to-the-track\":\"cxP3Zror57jzb2yDiB01pCKeTg.png\",\"advanced-mrp-tips\":\"1tbez0xpj8z0TyZHDR97kToI8b8.png\",\"advanced-stages-of-a-corner\":\"1tbez0xpj8z0TyZHDR97kToI8b8.png\",\"advanced-steering\":\"KDXnHAKNSrp6UOVPcl7q8gcoq0M.png\",\"advanced-steering-tips\":\"KDXnHAKNSrp6UOVPcl7q8gcoq0M.png\",\"advanced-string-theory-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"aerodynamic-vs-mechanical-grip-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"aggressiveness-or-assertiveness\":\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"autodromo-jose-carlos-pace-stf\":\"3P4RDJ5c5fvyalwDIPuMyL0vUFQ.png\",\"barber-motorsports-park-srf\":\"3P4RDJ5c5fvyalwDIPuMyL0vUFQ.png\",\"battle-dynamics\":\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"battle-dynamics-examples\":\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"before-you-get-on-a-new-track\":\"WFaVjT0NE0nQ9qVZIlFZfgDdWI.png\",\"blind-corners\":\"1tbez0xpj8z0TyZHDR97kToI8b8.png\",\"brake-bias\":\"6RpMcipXya7BsiqJv4b4uTDeoU.png\",\"brake-bias-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"braking-entry-speed-control\":\"Elb4hKHL8eWSTGdFd5KEUlgUr3I.png\",\"braking-functions-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"braking-in-racecraft\":\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"braking-mastery-1\":\"gZZO0E7fIBLDJyk8zXPh4LKQQ.png\",\"braking-mastery-2-trail-braking\":\"gZZO0E7fIBLDJyk8zXPh4LKQQ.png\",\"braking-vs-elevation-changes-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"camber-and-elevation-changes-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"car-control-101\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",\"car-control-101-2\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",\"car-ergonomics-and-posture\":\"WFaVjT0NE0nQ9qVZIlFZfgDdWI.png\",\"chaining-corners\":\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"chicago-street-circuit-s6-srf\":\"3P4RDJ5c5fvyalwDIPuMyL0vUFQ.png\",\"circuit-de-barcelona-catalunya-srf\":\"3P4RDJ5c5fvyalwDIPuMyL0vUFQ.png\",\"circuit-de-ledenon-srf\":\"3P4RDJ5c5fvyalwDIPuMyL0vUFQ.png\",\"circuit-gilles-villenueve-srf\":\"3P4RDJ5c5fvyalwDIPuMyL0vUFQ.png\",\"circuito-de-jerez-srf\":\"3P4RDJ5c5fvyalwDIPuMyL0vUFQ.png\",\"coaching-3-tools-of-rotation\":\"TUKDusa7cN5qK2Pkg9qPrB8oVDU.webp\",\"coaching-ara-chief-operating-officer\":\"TUKDusa7cN5qK2Pkg9qPrB8oVDU.webp\",\"coaching-beginner-logitech-g29-student\":\"TUKDusa7cN5qK2Pkg9qPrB8oVDU.webp\",\"coaching-f1-engineer\":\"TUKDusa7cN5qK2Pkg9qPrB8oVDU.webp\",\"coaching-foundational-cues-of-limit\":\"TUKDusa7cN5qK2Pkg9qPrB8oVDU.webp\",\"coaching-gran-turismo-7-champion\":\"TUKDusa7cN5qK2Pkg9qPrB8oVDU.webp\",\"coaching-light-hands-technique\":\"TUKDusa7cN5qK2Pkg9qPrB8oVDU.webp\",\"coaching-long-dangerous-corners\":\"TUKDusa7cN5qK2Pkg9qPrB8oVDU.webp\",\"coaching-maximum-rotation-point-(mrp)\":\"TUKDusa7cN5qK2Pkg9qPrB8oVDU.webp\",\"coaching-nascar-pro-in-sim-road\":\"TUKDusa7cN5qK2Pkg9qPrB8oVDU.webp\",\"coaching-professional-race-car-driver\":\"TUKDusa7cN5qK2Pkg9qPrB8oVDU.webp\",\"coaching-sim-settings-vision\":\"TUKDusa7cN5qK2Pkg9qPrB8oVDU.webp\",\"coaching-tire-temperatures\":\"TUKDusa7cN5qK2Pkg9qPrB8oVDU.webp\",\"coaching-top-oval-sim-driver\":\"TUKDusa7cN5qK2Pkg9qPrB8oVDU.webp\",\"coaching-vision-technique\":\"TUKDusa7cN5qK2Pkg9qPrB8oVDU.webp\",\"cold-tires\":\"6RpMcipXya7BsiqJv4b4uTDeoU.png\",\"cold-tires-in-iracing-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",commitment:\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"common-causes-of-spins-off-tracks-and-crashes\":\"lGJIxjPlzQnSaLum5rhIq8ckYBs.png\",\"compound-corners\":\"1tbez0xpj8z0TyZHDR97kToI8b8.png\",\"compound-corners-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"consistency-challenge-1\":\"6cItlKRRh1ON6XX4n5JI3WrjXss.png\",\"consistency-challenge-2\":\"6cItlKRRh1ON6XX4n5JI3WrjXss.png\",\"corner-exit-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"corner-exits\":\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"corner-exits-sim-racing\":\"6cItlKRRh1ON6XX4n5JI3WrjXss.png\",\"corner-structure\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",\"course-introduction\":\"WFaVjT0NE0nQ9qVZIlFZfgDdWI.png\",\"deceiving-corners\":\"1tbez0xpj8z0TyZHDR97kToI8b8.png\",\"deceiving-corners-and-checkpoints-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"demo-how-to-learn-a-new-track-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"demo-learning-new-track-advanced\":\"KDXnHAKNSrp6UOVPcl7q8gcoq0M.png\",\"direction-of-traction-forces-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"double-apex-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"double-apexes\":\"1tbez0xpj8z0TyZHDR97kToI8b8.png\",\"double-corners\":\"1tbez0xpj8z0TyZHDR97kToI8b8.png\",\"double-lefts-and-double-rights-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"drafting-slipstream-and-dirty-air\":\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"driving-the-line-vs-car\":\"1tbez0xpj8z0TyZHDR97kToI8b8.png\",\"driving-the-line-vs-driving-the-car-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"dynamic-brake-bias-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"early-lap-management\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",\"elevation-changes\":\"1tbez0xpj8z0TyZHDR97kToI8b8.png\",\"elevation-changes-101\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",\"elevation-changes-motorsports\":\"siCpcLgt8dD10Ij4smclmj55so.png\",\"engine-braking\":\"6RpMcipXya7BsiqJv4b4uTDeoU.png\",\"entry-consistency-pt-1\":\"6cItlKRRh1ON6XX4n5JI3WrjXss.png\",\"entry-consistency-pt-2\":\"6cItlKRRh1ON6XX4n5JI3WrjXss.png\",\"entry-consistency-pt-3\":\"6cItlKRRh1ON6XX4n5JI3WrjXss.png\",\"entry-speeds-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"episode-2\":\"BQVR00hG7lwQdAuYNvCdezjrmkk.webp\",\"exercise-braking-to-full-stop\":\"KDXnHAKNSrp6UOVPcl7q8gcoq0M.png\",\"exercise-neutral-steer\":\"KDXnHAKNSrp6UOVPcl7q8gcoq0M.png\",\"f3-challenge-1\":\"K3lWujGJMSwqxHpcJubfX2ql3w.png\",\"f3-challenge-2\":\"K3lWujGJMSwqxHpcJubfX2ql3w.png\",\"f3-challenge-3\":\"K3lWujGJMSwqxHpcJubfX2ql3w.png\",\"f3-challenge-4\":\"K3lWujGJMSwqxHpcJubfX2ql3w.png\",\"f3-challenge-5\":\"K3lWujGJMSwqxHpcJubfX2ql3w.png\",\"f3-challenge-6\":\"K3lWujGJMSwqxHpcJubfX2ql3w.png\",\"f3-challenge-7\":\"K3lWujGJMSwqxHpcJubfX2ql3w.png\",\"fast-direction-changes\":\"siCpcLgt8dD10Ij4smclmj55so.png\",\"ff1600-brands-hatch-circuit\":\"4IefDml2wt9MY5b547oUwhEoE.webp\",\"ff1600-canadian-tire-motorsports-park\":\"4IefDml2wt9MY5b547oUwhEoE.webp\",\"ff1600-challenge-1\":\"8Zj0GMXRYH7IRQAj2vCYhfa66A.png\",\"ff1600-challenge-2\":\"8Zj0GMXRYH7IRQAj2vCYhfa66A.png\",\"ff1600-challenge-3\":\"8Zj0GMXRYH7IRQAj2vCYhfa66A.png\",\"ff1600-challenge-4\":\"8Zj0GMXRYH7IRQAj2vCYhfa66A.png\",\"ff1600-challenge-5\":\"8Zj0GMXRYH7IRQAj2vCYhfa66A.png\",\"ff1600-challenge-6\":\"8Zj0GMXRYH7IRQAj2vCYhfa66A.png\",\"ff1600-circuit-de-ledenon\":\"4IefDml2wt9MY5b547oUwhEoE.webp\",\"ff1600-circuit-gilles-villeneuve\":\"4IefDml2wt9MY5b547oUwhEoE.webp\",\"ff1600-circuito-de-navarra\":\"4IefDml2wt9MY5b547oUwhEoE.webp\",\"ff1600-lime-rock-park\":\"4IefDml2wt9MY5b547oUwhEoE.webp\",\"ff1600-motorsport-arena-oschersleben\":\"4IefDml2wt9MY5b547oUwhEoE.webp\",\"ff1600-okayama\":\"4IefDml2wt9MY5b547oUwhEoE.webp\",\"ff1600-pq-okayama\":\"4IefDml2wt9MY5b547oUwhEoE.webp\",\"ff1600-rudskogen-motorsenter\":\"4IefDml2wt9MY5b547oUwhEoE.webp\",\"ff1600-tsukuba-circuit\":\"4IefDml2wt9MY5b547oUwhEoE.webp\",\"ff1600-virginia-international-raceway\":\"4IefDml2wt9MY5b547oUwhEoE.webp\",\"fights-with-more-than-one-car\":\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"final-thoughts\":\"siCpcLgt8dD10Ij4smclmj55so.png\",\"final-video\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"handling-mistakes\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",\"high-speed-confidence\":\"gZZO0E7fIBLDJyk8zXPh4LKQQ.png\",\"high-speed-corners-building-confidence\":\"lGJIxjPlzQnSaLum5rhIq8ckYBs.png\",\"how-to-deal-with-frustration-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"how-to-learn-a-new-track-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"how-to-learn-a-track-efficiently\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",\"how-to-master-braking-precision-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"how-to-overcome-fear-and-hesitation\":\"WFaVjT0NE0nQ9qVZIlFZfgDdWI.png\",\"how-to-plan-your-lines\":\"lGJIxjPlzQnSaLum5rhIq8ckYBs.png\",\"how-to-quickly-learn-a-new-track\":\"6cItlKRRh1ON6XX4n5JI3WrjXss.png\",\"imola-s6-srf\":\"3P4RDJ5c5fvyalwDIPuMyL0vUFQ.png\",\"important-skills-in-racecraft\":\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"inducing-oversteer-sim-racing\":\"6cItlKRRh1ON6XX4n5JI3WrjXss.png\",\"inducing-understeer\":\"JjLHfC8GRiTows0rsNnNlRYs.png\",\"inducing-understeer-sim-racing\":\"6cItlKRRh1ON6XX4n5JI3WrjXss.png\",\"initial-turn-in-advanced\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",\"initial-turn-in-mastery\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",\"inputs-that-make-the-mx-5-fast\":\"oqsRVGmLfXJth4DymcA8ngYwS1Q.png\",\"introduction-of-balance-module-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"introduction-to-racecraft\":\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"knowledge-is-power\":\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"lift-and-coast-fuel-saving\":\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"light-hands-technique-1\":\"gZZO0E7fIBLDJyk8zXPh4LKQQ.png\",\"light-hands-technique-2\":\"gZZO0E7fIBLDJyk8zXPh4LKQQ.png\",\"linear-vs-exponential-steering\":\"6RpMcipXya7BsiqJv4b4uTDeoU.png\",\"loading-bmw-m2-session\":\"siCpcLgt8dD10Ij4smclmj55so.png\",\"loading-radical-sr8-session\":\"gZZO0E7fIBLDJyk8zXPh4LKQQ.png\",\"m2-challenge-1\":\"Q246T4NE10ClMO3SlJpLSLCrfwc.png\",\"m2-challenge-2\":\"Q246T4NE10ClMO3SlJpLSLCrfwc.png\",\"m2-challenge-3\":\"Q246T4NE10ClMO3SlJpLSLCrfwc.png\",\"m2-challenge-4\":\"Q246T4NE10ClMO3SlJpLSLCrfwc.png\",\"m2-challenge-5\":\"Q246T4NE10ClMO3SlJpLSLCrfwc.png\",\"m2-challenge-6\":\"Q246T4NE10ClMO3SlJpLSLCrfwc.png\",\"m2-challenge-7\":\"Q246T4NE10ClMO3SlJpLSLCrfwc.png\",\"m2-challenge-8\":\"Q246T4NE10ClMO3SlJpLSLCrfwc.png\",\"master-brake-precision\":\"KDXnHAKNSrp6UOVPcl7q8gcoq0M.png\",\"master-keys\":\"oqsRVGmLfXJth4DymcA8ngYwS1Q.png\",\"maximizing-front-tires\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",\"maximum-rotation-point\":\"1tbez0xpj8z0TyZHDR97kToI8b8.png\",\"mid-corner-mastery\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",\"momentum-mastery\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",\"motorland-aragon-srf\":\"3P4RDJ5c5fvyalwDIPuMyL0vUFQ.png\",\"motorsport-arena-oschersleben-srf\":\"3P4RDJ5c5fvyalwDIPuMyL0vUFQ.png\",\"motorsports-is-about-cornering-not-about-top-speeds\":\"Elb4hKHL8eWSTGdFd5KEUlgUr3I.png\",\"mrp-mistakes-problems-and-solutions-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"mx-5-charlotte\":\"oqsRVGmLfXJth4DymcA8ngYwS1Q.png\",\"mx-5-le-mans\":\"oqsRVGmLfXJth4DymcA8ngYwS1Q.png\",\"mx-5-navarra\":\"oqsRVGmLfXJth4DymcA8ngYwS1Q.png\",\"mx-5-okayama\":\"oqsRVGmLfXJth4DymcA8ngYwS1Q.png\",\"mx-5-oschersleben\":\"oqsRVGmLfXJth4DymcA8ngYwS1Q.png\",\"mx-5-oulton\":\"oqsRVGmLfXJth4DymcA8ngYwS1Q.png\",\"mx-5-road-atlanta\":\"oqsRVGmLfXJth4DymcA8ngYwS1Q.png\",\"mx-5-summit-point\":\"oqsRVGmLfXJth4DymcA8ngYwS1Q.png\",\"mx-5-suzuka\":\"oqsRVGmLfXJth4DymcA8ngYwS1Q.png\",\"mx-5-tsukuba\":\"oqsRVGmLfXJth4DymcA8ngYwS1Q.png\",\"mx-5-virginia\":\"oqsRVGmLfXJth4DymcA8ngYwS1Q.png\",\"mx-5-willow-springs\":\"oqsRVGmLfXJth4DymcA8ngYwS1Q.png\",\"neutral-steer\":\"KDXnHAKNSrp6UOVPcl7q8gcoq0M.png\",\"offensive-racing-psychology\":\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"oulton-park-srf-s6\":\"3P4RDJ5c5fvyalwDIPuMyL0vUFQ.png\",\"oversteer-1\":\"UwEyttSlFvfgah4pcvOwUSZvo.png\",\"oversteer-2\":\"gZZO0E7fIBLDJyk8zXPh4LKQQ.png\",\"phoenix-raceway-2008-srf\":\"3P4RDJ5c5fvyalwDIPuMyL0vUFQ.png\",\"porsche-gt3-r-mount-panarama\":\"j7OKriF3kp9iKZVHYaoKk1vsGc.png\",\"positioning-and-angle-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"posture-tips-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",racecraft:\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",\"racecraft-101\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",racestarts:\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"rain-racing-masterclass\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",\"ready-to-test-yourself\":\"6cItlKRRh1ON6XX4n5JI3WrjXss.png\",\"real-life-driving-analysis\":\"TUKDusa7cN5qK2Pkg9qPrB8oVDU.webp\",\"rear-vs-fronts\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",\"reducing-cognitive-load\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",\"road-america-srf\":\"3P4RDJ5c5fvyalwDIPuMyL0vUFQ.png\",\"roast-my-laps\":\"BQVR00hG7lwQdAuYNvCdezjrmkk.webp\",\"rotation-to-speed-vs-speed-to-rotation-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"rudskogen-motorsenter-srf\":\"3P4RDJ5c5fvyalwDIPuMyL0vUFQ.png\",\"setting-up-your-simulator\":\"UwEyttSlFvfgah4pcvOwUSZvo.png\",\"should-you-be-a-smooth-driver\":\"WFaVjT0NE0nQ9qVZIlFZfgDdWI.png\",\"side-by-side\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",\"slip-angle\":\"KDXnHAKNSrp6UOVPcl7q8gcoq0M.png\",\"smooth-is-fast-ch\":\"6RpMcipXya7BsiqJv4b4uTDeoU.png\",\"smooth-is-fast-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"software-settings-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"speed-control-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",spirals:\"JjLHfC8GRiTows0rsNnNlRYs.png\",\"spirals-sim\":\"1tbez0xpj8z0TyZHDR97kToI8b8.png\",\"srf-winton-motor-raceway\":\"3P4RDJ5c5fvyalwDIPuMyL0vUFQ.png\",\"stages-of-a-corner-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"steering-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"string-theory\":\"KDXnHAKNSrp6UOVPcl7q8gcoq0M.png\",\"structuring-our-corners\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",switchbacks:\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"the-divebomb\":\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"the-internal-coach\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",\"the-light-hands-technique\":\"JjLHfC8GRiTows0rsNnNlRYs.png\",\"the-light-hands-technique-sim\":\"KDXnHAKNSrp6UOVPcl7q8gcoq0M.png\",\"the-maximum-rotation-point-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"the-perfect-corner\":\"oqsRVGmLfXJth4DymcA8ngYwS1Q.png\",\"the-red-line\":\"6RpMcipXya7BsiqJv4b4uTDeoU.png\",\"the-rules-of-racing\":\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"the-squeeze\":\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"the-stages-of-braking\":\"KDXnHAKNSrp6UOVPcl7q8gcoq0M.png\",\"the-stages-of-braking-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"the-ultimate-guide-to-multiclass-racing\":\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"things-to-do\":\"cyzKphq7H2eGWcbW3PB5jkBRysg.png\",\"three-tools-for-rotation-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"three-tools-of-rotation\":\"6RpMcipXya7BsiqJv4b4uTDeoU.png\",\"throttle-applications\":\"6RpMcipXya7BsiqJv4b4uTDeoU.png\",\"tire-surface-temparture-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"tire-surface-temperatures\":\"6RpMcipXya7BsiqJv4b4uTDeoU.png\",\"track-overview-1-barber-motorsports-park\":\"cxP3Zror57jzb2yDiB01pCKeTg.png\",\"track-overview-2-sonoma-raceway\":\"cxP3Zror57jzb2yDiB01pCKeTg.png\",\"trail-braking\":\"KDXnHAKNSrp6UOVPcl7q8gcoq0M.png\",\"trail-braking-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"train-like-a-pilot\":\"WFaVjT0NE0nQ9qVZIlFZfgDdWI.png\",\"tsukuba-circuit-stf\":\"3P4RDJ5c5fvyalwDIPuMyL0vUFQ.png\",\"understeer-1\":\"UwEyttSlFvfgah4pcvOwUSZvo.png\",\"understeer-2\":\"gZZO0E7fIBLDJyk8zXPh4LKQQ.png\",\"upcoming-workshop-april-27\":\"LtSqhwlM1kKJVaiq06nPq1aMp8M.png\",\"virginia-international-raceway-srf\":\"3P4RDJ5c5fvyalwDIPuMyL0vUFQ.png\",\"vision-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"vision-technique\":\"Elb4hKHL8eWSTGdFd5KEUlgUr3I.png\",\"vision-x-mrp-mistake-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"visual-references-with-kane-halliburton-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"walkins-glen-international-srf\":\"3P4RDJ5c5fvyalwDIPuMyL0vUFQ.png\",\"warming-up-your-cold-tires\":\"lGJIxjPlzQnSaLum5rhIq8ckYBs.png\",\"weight-transfer\":\"JjLHfC8GRiTows0rsNnNlRYs.png\",\"weight-transfers\":\"KDXnHAKNSrp6UOVPcl7q8gcoq0M.png\",\"welcome-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"welcome-to-the-academy\":\"6cItlKRRh1ON6XX4n5JI3WrjXss.png\",\"what-is-the-limit\":\"6cItlKRRh1ON6XX4n5JI3WrjXss.png\",\"what-is-the-limit-motorsports\":\"Elb4hKHL8eWSTGdFd5KEUlgUr3I.png\",\"what-makes-you-a-fast-driver\":\"6cItlKRRh1ON6XX4n5JI3WrjXss.png\",\"what-makes-you-fast-in-racing\":\"6cItlKRRh1ON6XX4n5JI3WrjXss.png\",\"what-to-do-when-too-fast-for-the-intended-line-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"when-to-late-apex-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"when-to-turn-in-building-and-adjusting-your-racing-line-mrc\":\"6GCm4W0kJhDT9Nojr7Oob3JX8Es.png\",\"where-the-lap-time-is\":\"oqsRVGmLfXJth4DymcA8ngYwS1Q.png\"};function imageUrlForLesson(meta){const slug=meta?.slug||extractSlugFromPath(meta?.path);if(!slug)return undefined;const file=LESSON_IMAGE_FILES[slug];if(!file)return undefined;if(file.startsWith(\"http\"))return file;return`https://framerusercontent.com/images/${file}`;}export function LastLessonImage(props){const{meta,resolved}=useLessonMeta(getLastLessonMeta);const src=imageUrlForLesson(meta);if(!resolved||!src)return{};return{background:{src,fit:\"fill\"}};}export function LastLockedLessonLink(props){const{meta,resolved}=useLessonMeta(getLastLockedLessonMeta);const href=normalizeLessonPath(meta?.path||meta?.slug);const visible=resolved&&Boolean(href);return{href:href??props?.href,visible,style:visibilityStyle(props,visible)};}export function LastLockedLessonTitle(props){const{meta,resolved}=useLessonMeta(getLastLockedLessonMeta);const text=meta?.title||meta?.slug||props?.text||\"\";const visible=resolved&&Boolean(meta&&(meta.title||meta.slug));return{text,visible,style:visibilityStyle(props,visible)};}export function ShowWithLastLesson(props){const{meta,resolved}=useLessonMeta(getLastLessonMeta);const visible=resolved&&Boolean(getValidLastLessonInternalHref(meta));return{visible,style:visibilityStyle(props,visible)};}export function ShowWithoutLastLesson(props){const{meta,resolved}=useLessonMeta(getLastLessonMeta);const visible=resolved&&!Boolean(getValidLastLessonInternalHref(meta));return{visible,style:visibilityStyle(props,visible)};}export function ShowWithLastLockedLesson(props){const{meta,resolved}=useLessonMeta(getLastLockedLessonMeta);const visible=resolved&&Boolean(meta&&(meta.path||meta.slug||meta.title));return{visible,style:visibilityStyle(props,visible)};}export function useLastLessonMeta(){const snapshot=useOutsetaUserSnapshot();useEffect(()=>{ensureOutsetaUserLoaded();},[]);userState={user:snapshot.user??null,isReady:snapshot.resolved,isLoading:!snapshot.resolved,error:null};return{lastLesson:getLastLessonMeta(),lastLockedLesson:getLastLockedLessonMeta()};}export function LessonProgressErrorText(props){// Use simpler state management\nconst[,forceUpdate]=useState(0);const initialText=useRef(undefined);useEffect(()=>{ensureOutsetaUserLoaded();},[]);const lessonId=resolveLessonId();// Subscribe to updates\nuseEffect(()=>{const unsubUser=subscribeUser(()=>forceUpdate(n=>n+1));const unsubLesson=subscribeLesson(lessonId,()=>forceUpdate(n=>n+1));return()=>{unsubUser();unsubLesson();};},[lessonId]);// Get current state\nconst snapshot=getLessonSnapshot(lessonId);if(initialText.current===undefined&&typeof props.text===\"string\"){initialText.current=props.text;}return{text:snapshot.error??initialText.current??\"\",visible:Boolean(snapshot.error),style:{display:snapshot.error?undefined:\"none\"}};}// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n// Medal System Overrides\n// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n// Container override - sets variant based on active medal\nexport function MedalSelector(props){const[,forceUpdate]=useState(0);const[lessonId,setLessonId]=useState(\"\");const elementRef=useRef(null);const initialVariant=useRef(undefined);useEffect(()=>{ensureOutsetaUserLoaded();},[]);// Try to find lesson ID from props or href\nuseEffect(()=>{// 1. Check props (slug or CMS URL field)\nconst propId=resolveLessonIdFromProps(props);if(propId){setLessonId(propId);return;}// 2. Try to resolve from page context\nconst resolvedId=resolveLessonId();if(resolvedId&&resolvedId!==\"lesson-1\"){setLessonId(resolvedId);return;}// 3. Try to extract from href (for lesson list usage)\nconst extractedId=extractLessonIdFromHref(elementRef.current);if(extractedId){setLessonId(extractedId);return;}// Fallback to resolved ID even if it's the default\nsetLessonId(resolvedId);},[props]);// Subscribe to updates\nuseEffect(()=>{if(!lessonId)return;const unsubUser=subscribeUser(()=>forceUpdate(n=>n+1));const unsubLesson=subscribeLesson(lessonId,()=>forceUpdate(n=>n+1));return()=>{unsubUser();unsubLesson();};},[lessonId]);// Get current medal + completion\nconst currentMedal=lessonId?getLessonMedal(lessonId):null;const isComplete=lessonId?getLessonSnapshot(lessonId).isComplete:false;// Store initial variant\nif(initialVariant.current===undefined&&typeof props.variant===\"string\"){initialVariant.current=props.variant;}// Priority: medal (Bronze/Silver/Gold/Platinum) → complete checkmark → initial/default\nconst completeVariant=globalConfig.indicatorCompleteVariant||FALLBACK_STRINGS.indicatorCompleteVariant;const variant=currentMedal?currentMedal.charAt(0).toUpperCase()+currentMedal.slice(1):isComplete?completeVariant:initialVariant.current||props.variant;return{ref:elementRef,variant};}// Shared medal button logic - just handles clicking\nfunction useMedalButton(medalType,props){const[,forceUpdate]=useState(0);const[lessonId,setLessonId]=useState(\"\");const elementRef=useRef(null);useEffect(()=>{ensureOutsetaUserLoaded();},[]);// Try to find lesson ID from props or href\nuseEffect(()=>{// 1. Check props (slug or CMS URL field)\nconst propId=resolveLessonIdFromProps(props);if(propId){setLessonId(propId);return;}// 2. Try to resolve from page context\nconst resolvedId=resolveLessonId();if(resolvedId&&resolvedId!==\"lesson-1\"){setLessonId(resolvedId);return;}// 3. Try to extract from href (for lesson list usage)\nconst extractedId=extractLessonIdFromHref(elementRef.current);if(extractedId){setLessonId(extractedId);return;}// Fallback to resolved ID even if it's the default\nsetLessonId(resolvedId);},[props]);// Subscribe to updates\nuseEffect(()=>{if(!lessonId)return;const unsubUser=subscribeUser(()=>forceUpdate(n=>n+1));const unsubLesson=subscribeLesson(lessonId,()=>forceUpdate(n=>n+1));return()=>{unsubUser();unsubLesson();};},[lessonId]);// Get current state\nconst snapshot=lessonId?getLessonSnapshot(lessonId):{isSaving:false,hasUser:false,isReady:false};const{isSaving,hasUser,isReady}=snapshot;const disabled=isSaving||!hasUser&&isReady;const handleTap=async()=>{if(isSaving||!lessonId)return;if(!hasUser){updateLessonState(lessonId,{error:\"Sign in to save progress\"});return;}await setLessonMedal(lessonId,medalType);};return{elementRef,disabled,handleTap};}export function MedalButtonBronze(props){const{elementRef,disabled,handleTap}=useMedalButton(\"bronze\",props);return{ref:elementRef,disabled,onTap:handleTap};}export function MedalButtonSilver(props){const{elementRef,disabled,handleTap}=useMedalButton(\"silver\",props);return{ref:elementRef,disabled,onTap:handleTap};}export function MedalButtonGold(props){const{elementRef,disabled,handleTap}=useMedalButton(\"gold\",props);return{ref:elementRef,disabled,onTap:handleTap};}export function MedalButtonPlatinum(props){const{elementRef,disabled,handleTap}=useMedalButton(\"platinum\",props);return{ref:elementRef,disabled,onTap:handleTap};}// Phosphor Icons \"star-fill\" path (viewBox 0 0 256 256)\nconst STAR_PATH=\"M234.29,114.85l-45,38.83L203,211.75a16.4,16.4,0,0,1-24.5,17.82L128,198.49,77.47,229.57A16.4,16.4,0,0,1,53,211.75l13.76-58.07-45-38.83A16.46,16.46,0,0,1,31.08,86l59-4.76,22.76-55.08a16.36,16.36,0,0,1,30.27,0l22.75,55.08,59,4.76a16.46,16.46,0,0,1,9.37,28.86Z\";// Phosphor Icons \"check-bold\" path (viewBox 0 0 256 256)\nconst CHECK_PATH=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\";function MedalSvg({size,color}){return /*#__PURE__*/_jsx(\"svg\",{width:size,height:size,viewBox:\"0 0 256 256\",xmlns:\"http://www.w3.org/2000/svg\",\"aria-label\":\"Medal\",role:\"img\",children:/*#__PURE__*/_jsx(\"path\",{d:STAR_PATH,fill:color})});}function CheckSvg({size,color}){return /*#__PURE__*/_jsx(\"svg\",{width:size,height:size,viewBox:\"0 0 256 256\",xmlns:\"http://www.w3.org/2000/svg\",\"aria-label\":\"Completed\",role:\"img\",children:/*#__PURE__*/_jsx(\"path\",{d:CHECK_PATH,fill:color})});}export function LessonMedal(props){const{link,trainingPlanId,size,completeColor,bronzeColor,silverColor,goldColor,platinumColor=\"#a6e7ff\",showWhenIncomplete,style}=props;const[,forceUpdate]=useState(0);// Bootstrap user state + register trainingPlanId with the global config\nuseEffect(()=>{ensureOutsetaUserLoaded();},[]);useEffect(()=>{if(trainingPlanId&&trainingPlanId.trim().length>0){updateGlobalConfig({trainingPlanId:trainingPlanId.trim()});}},[trainingPlanId]);// Resolve the lesson slug from the link prop, or fall back to the page URL\nconst resolvedLessonId=useMemo(()=>{const fromLink=extractSlugFromUrl(link);if(fromLink&&fromLink!==\"_preview\")return fromLink;const fromPage=resolveLessonId();return fromPage&&fromPage!==\"lesson-1\"?fromPage:\"\";},[link]);// Subscribe to user + lesson changes\nuseEffect(()=>{if(!resolvedLessonId)return;const unsubUser=subscribeUser(()=>forceUpdate(n=>n+1));const unsubLesson=subscribeLesson(resolvedLessonId,()=>forceUpdate(n=>n+1));return()=>{unsubUser();unsubLesson();};},[resolvedLessonId]);const medal=resolvedLessonId?getLessonMedal(resolvedLessonId):null;const snapshot=resolvedLessonId?getLessonSnapshot(resolvedLessonId):{isComplete:false,isReady:false};const isComplete=snapshot.isComplete;// Decide what (if anything) to render\nconst medalColor=medal===\"platinum\"?platinumColor:medal===\"gold\"?goldColor:medal===\"silver\"?silverColor:bronzeColor;const content=medal?/*#__PURE__*/_jsx(MedalSvg,{size:size,color:medalColor}):isComplete?/*#__PURE__*/_jsx(CheckSvg,{size:size,color:completeColor}):null;const visible=Boolean(content)||showWhenIncomplete;return /*#__PURE__*/_jsx(\"div\",{style:{display:visible?\"inline-flex\":\"none\",alignItems:\"center\",justifyContent:\"center\",width:size,height:size,lineHeight:0,...style},children:content});}LessonMedal.defaultProps={size:20,completeColor:\"#22c55e\",bronzeColor:\"#cd7f32\",silverColor:\"#c6ccd3\",goldColor:\"#f5c23e\",platinumColor:\"#a6e7ff\",showWhenIncomplete:false};addPropertyControls(LessonMedal,{link:{type:ControlType.Link,title:\"Link\"},trainingPlanId:{type:ControlType.String,title:\"Training Plan ID\",placeholder:\"01K... (ULID)\"},size:{type:ControlType.Number,title:\"Size\",defaultValue:20,min:8,max:128,step:1,unit:\"px\"},completeColor:{type:ControlType.Color,title:\"Check Color\",defaultValue:\"#22c55e\"},bronzeColor:{type:ControlType.Color,title:\"Bronze\",defaultValue:\"#cd7f32\"},silverColor:{type:ControlType.Color,title:\"Silver\",defaultValue:\"#c6ccd3\"},goldColor:{type:ControlType.Color,title:\"Gold\",defaultValue:\"#f5c23e\"},platinumColor:{type:ControlType.Color,title:\"Platinum\",defaultValue:\"#a6e7ff\"},showWhenIncomplete:{type:ControlType.Boolean,title:\"Show Empty\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"}});import{useContext as __legacyOverrideHOC_useContext}from\"react\";import{DataObserverContext as __legacyOverrideHOC_DataObserverContext}from\"framer\";export function withLessonProgressMarkButton(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...LessonProgressMarkButton(props)});};}withLessonProgressMarkButton.displayName=\"LessonProgressMarkButton\";export function withLessonProgressVariant(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...LessonProgressVariant(props)});};}withLessonProgressVariant.displayName=\"LessonProgressVariant\";export function withLessonProgressShowWhenComplete(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...LessonProgressShowWhenComplete(props)});};}withLessonProgressShowWhenComplete.displayName=\"LessonProgressShowWhenComplete\";export function withLessonProgressMedal(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...LessonProgressMedal(props)});};}withLessonProgressMedal.displayName=\"LessonProgressMedal\";export function withLessonProgressShowWhenIncomplete(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...LessonProgressShowWhenIncomplete(props)});};}withLessonProgressShowWhenIncomplete.displayName=\"LessonProgressShowWhenIncomplete\";export function withLastLessonLink(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...LastLessonLink(props)});};}withLastLessonLink.displayName=\"LastLessonLink\";export function withwithResumeLastLessonButton(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...withResumeLastLessonButton(props)});};}withwithResumeLastLessonButton.displayName=\"withResumeLastLessonButton\";export function withwithAcademyResumeLink(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...withAcademyResumeLink(props)});};}withwithAcademyResumeLink.displayName=\"withAcademyResumeLink\";export function withLastLessonTitle(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...LastLessonTitle(props)});};}withLastLessonTitle.displayName=\"LastLessonTitle\";export function withLastLessonImage(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...LastLessonImage(props)});};}withLastLessonImage.displayName=\"LastLessonImage\";export function withLastLockedLessonLink(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...LastLockedLessonLink(props)});};}withLastLockedLessonLink.displayName=\"LastLockedLessonLink\";export function withLastLockedLessonTitle(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...LastLockedLessonTitle(props)});};}withLastLockedLessonTitle.displayName=\"LastLockedLessonTitle\";export function withShowWithLastLesson(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...ShowWithLastLesson(props)});};}withShowWithLastLesson.displayName=\"ShowWithLastLesson\";export function withShowWithoutLastLesson(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...ShowWithoutLastLesson(props)});};}withShowWithoutLastLesson.displayName=\"ShowWithoutLastLesson\";export function withShowWithLastLockedLesson(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...ShowWithLastLockedLesson(props)});};}withShowWithLastLockedLesson.displayName=\"ShowWithLastLockedLesson\";export function withLessonProgressErrorText(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...LessonProgressErrorText(props)});};}withLessonProgressErrorText.displayName=\"LessonProgressErrorText\";export function withMedalSelector(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...MedalSelector(props)});};}withMedalSelector.displayName=\"MedalSelector\";export function withMedalButtonBronze(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...MedalButtonBronze(props)});};}withMedalButtonBronze.displayName=\"MedalButtonBronze\";export function withMedalButtonSilver(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...MedalButtonSilver(props)});};}withMedalButtonSilver.displayName=\"MedalButtonSilver\";export function withMedalButtonGold(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...MedalButtonGold(props)});};}withMedalButtonGold.displayName=\"MedalButtonGold\";export function withMedalButtonPlatinum(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...MedalButtonPlatinum(props)});};}withMedalButtonPlatinum.displayName=\"MedalButtonPlatinum\";\nexport const __FramerMetadata__ = {\"exports\":{\"withMedalButtonPlatinum\":{\"type\":\"reactHoc\",\"name\":\"withMedalButtonPlatinum\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withShowWithLastLesson\":{\"type\":\"reactHoc\",\"name\":\"withShowWithLastLesson\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withMedalButtonSilver\":{\"type\":\"reactHoc\",\"name\":\"withMedalButtonSilver\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ShowWithLastLockedLesson\":{\"type\":\"override\",\"name\":\"ShowWithLastLockedLesson\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLessonProgressMarkButton\":{\"type\":\"reactHoc\",\"name\":\"withLessonProgressMarkButton\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LastLockedLessonTitle\":{\"type\":\"override\",\"name\":\"LastLockedLessonTitle\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LessonProgressVariant\":{\"type\":\"override\",\"name\":\"LessonProgressVariant\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LessonProgressMarkButton\":{\"type\":\"override\",\"name\":\"LessonProgressMarkButton\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsLessonComplete\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLastLessonImage\":{\"type\":\"reactHoc\",\"name\":\"withLastLessonImage\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withResumeLastLessonButton\":{\"type\":\"override\",\"name\":\"withResumeLastLessonButton\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useLessonProgress\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LastLessonImage\":{\"type\":\"override\",\"name\":\"LastLessonImage\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LessonProgressShowWhenIncomplete\":{\"type\":\"override\",\"name\":\"LessonProgressShowWhenIncomplete\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withShowWithLastLockedLesson\":{\"type\":\"reactHoc\",\"name\":\"withShowWithLastLockedLesson\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LastLessonTitle\":{\"type\":\"override\",\"name\":\"LastLessonTitle\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MedalButtonBronze\":{\"type\":\"override\",\"name\":\"MedalButtonBronze\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withwithResumeLastLessonButton\":{\"type\":\"reactHoc\",\"name\":\"withwithResumeLastLessonButton\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withMedalButtonGold\":{\"type\":\"reactHoc\",\"name\":\"withMedalButtonGold\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LastLessonLink\":{\"type\":\"override\",\"name\":\"LastLessonLink\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLessonProgressMedal\":{\"type\":\"reactHoc\",\"name\":\"withLessonProgressMedal\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LessonProgressErrorText\":{\"type\":\"override\",\"name\":\"LessonProgressErrorText\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLastLockedLessonTitle\":{\"type\":\"reactHoc\",\"name\":\"withLastLockedLessonTitle\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLessonProgressVariant\":{\"type\":\"reactHoc\",\"name\":\"withLessonProgressVariant\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LessonProgressShowWhenComplete\":{\"type\":\"override\",\"name\":\"LessonProgressShowWhenComplete\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withMedalSelector\":{\"type\":\"reactHoc\",\"name\":\"withMedalSelector\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MedalButtonSilver\":{\"type\":\"override\",\"name\":\"MedalButtonSilver\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withShowWithoutLastLesson\":{\"type\":\"reactHoc\",\"name\":\"withShowWithoutLastLesson\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MedalButtonGold\":{\"type\":\"override\",\"name\":\"MedalButtonGold\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MedalSelector\":{\"type\":\"override\",\"name\":\"MedalSelector\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withAcademyResumeLink\":{\"type\":\"override\",\"name\":\"withAcademyResumeLink\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ShowWithLastLesson\":{\"type\":\"override\",\"name\":\"ShowWithLastLesson\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLessonProgressShowWhenIncomplete\":{\"type\":\"reactHoc\",\"name\":\"withLessonProgressShowWhenIncomplete\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLastLessonTitle\":{\"type\":\"reactHoc\",\"name\":\"withLastLessonTitle\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useLastLessonMeta\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLessonProgressShowWhenComplete\":{\"type\":\"reactHoc\",\"name\":\"withLessonProgressShowWhenComplete\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ShowWithoutLastLesson\":{\"type\":\"override\",\"name\":\"ShowWithoutLastLesson\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LessonMedal\":{\"type\":\"reactComponent\",\"name\":\"LessonMedal\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"MedalButtonPlatinum\":{\"type\":\"override\",\"name\":\"MedalButtonPlatinum\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LessonProgressConfig\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useResumeLessonHref\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LessonProgressMedal\":{\"type\":\"override\",\"name\":\"LessonProgressMedal\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LastLockedLessonLink\":{\"type\":\"override\",\"name\":\"LastLockedLessonLink\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLastLessonLink\":{\"type\":\"reactHoc\",\"name\":\"withLastLessonLink\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLessonProgressErrorText\":{\"type\":\"reactHoc\",\"name\":\"withLessonProgressErrorText\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLastLockedLessonLink\":{\"type\":\"reactHoc\",\"name\":\"withLastLockedLessonLink\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withMedalButtonBronze\":{\"type\":\"reactHoc\",\"name\":\"withMedalButtonBronze\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withwithAcademyResumeLink\":{\"type\":\"reactHoc\",\"name\":\"withwithAcademyResumeLink\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./LessonProgress.map"],"mappings":"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"}