{"version":3,"file":"LessonProgress.Dvbubpzc.mjs","names":["useState","useRef","useMemo","__legacyOverrideHOC_DataObserverContext","_jsx"],"sources":["https:/framerusercontent.com/modules/oHUSTrqX38kEUt9yIMTz/DQ4TeeVvcoVM32An34Ra/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\";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;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:false,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;// Try to use the Outseta.tsx module's user state first (instant!)\nconst outsetaModule=window.__outsetaFramerModule;if(outsetaModule){// Use the existing Outseta module\nconst existingUser=outsetaModule.getUser();userState={user:existingUser,isReady:true,isLoading:false,error:null};// Subscribe to updates from the Outseta module\noutsetaModule.subscribe(newUser=>{userState={user:newUser,isReady:true,isLoading:false,error:null};notifyUserListeners();});notifyUserListeners();// Set up video completion listener\nsetupVideoCompletionListener();return;}// Fallback: bootstrap our own if Outseta module isn't available\nconst bootstrap=()=>{const outseta=window?.Outseta;if(!outseta){window.setTimeout(bootstrap,100)// Reduced from 500ms to 100ms\n;return;}const refetchEvents=[\"accessToken.set\",\"profile.update\",\"account.update\"];refetchEvents.forEach(event=>outseta.on(event,()=>loadUser(outseta,event)));outseta.on(\"logout\",()=>clearUser(\"logout\"));loadUser(outseta,\"initial\");// Set up video completion listener\nsetupVideoCompletionListener();};bootstrap();}// Listen for video completion events from VideoPlayer component\nfunction setupVideoCompletionListener(){if(typeof window===\"undefined\")return;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);}async function loadUser(outseta,reason){userState={...userState,isLoading:true,error:null};notifyUserListeners();try{const result=await outseta.getUser();userState={user:result??null,isReady:true,isLoading:false,error:null};}catch(error){const message=error instanceof Error?error.message:\"Failed to load user profile\";userState={user:null,isReady:true,isLoading:false,error:message};}notifyUserListeners();}function clearUser(reason){userState={user:null,isReady:true,isLoading:false,error:null};g61MedalsBySlug={};g61MedalsKey=null;notifyUserListeners();}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 fetch(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(!raw)return{};if(typeof raw===\"object\"&&!Array.isArray(raw)){const result={};Object.entries(raw).forEach(([key,value])=>{if(typeof key===\"string\"&&(value===\"bronze\"||value===\"silver\"||value===\"gold\")){result[key]=value;}});return result;}if(typeof raw===\"string\"){try{const parsed=JSON.parse(raw);if(typeof parsed===\"object\"&&!Array.isArray(parsed)){const result={};Object.entries(parsed).forEach(([key,value])=>{if(typeof key===\"string\"&&(value===\"bronze\"||value===\"silver\"||value===\"gold\")){result[key]=value;}});return result;}}catch(error){}}return{};}// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\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\n// targets and store the highest achieved tier keyed by lesson slug.\nconst G61_API_BASE=\"https://garage61endpoints.almeidaracingacademy.com/api/training-plan\";const G61_TEAM_SLUG=\"almeida-racing-academy\";const G61_CACHE_PREFIX=\"ara:lessonProgress:g61medals\";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;if(typeof window!==\"undefined\"&&!window.__araG61Fetch){const store=new Map;window.__araG61Fetch=(url,token)=>{const key=`${url}|${token.slice(-16)}`;const existing=store.get(key);if(existing)return existing;const p=(async()=>{try{const res=await fetch(url,{headers:{Authorization:`Bearer ${token}`}});const json=res.ok?await res.json().catch(()=>null):null;return{status:res.status,ok:res.ok,json};}catch(err){return{status:0,ok:false,json:null,error:err?.message??\"Network error\"};}})();store.set(key,p);p.finally(()=>{setTimeout(()=>{if(store.get(key)===p)store.delete(key);},100);});return p;};}function sharedG61Fetch(url,token){if(typeof window!==\"undefined\"&&window.__araG61Fetch){return window.__araG61Fetch(url,token);}return fetch(url,{headers:{Authorization:`Bearer ${token}`}}).then(async r=>({status:r.status,ok:r.ok,json:r.ok?await r.json().catch(()=>null):null}),err=>({status:0,ok:false,json:null,error:err?.message??\"Network error\"}));}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){if(typeof fastest!==\"number\"||!Array.isArray(targets))return null;const byTier={};targets.forEach((target,index)=>{const tier=typeof target?.tier===\"string\"&&[\"bronze\",\"silver\",\"gold\"].includes(target.tier.toLowerCase())?target.tier.toLowerCase():[\"bronze\",\"silver\",\"gold\"][index]??null;if(!tier)return;if(typeof target?.lapTime===\"number\"&&target.lapTime>0){byTier[tier]=target.lapTime;}});if(typeof byTier.gold===\"number\"&&fastest<=byTier.gold)return\"gold\";if(typeof byTier.silver===\"number\"&&fastest<=byTier.silver)return\"silver\";if(typeof byTier.bronze===\"number\"&&fastest<=byTier.bronze)return\"bronze\";return null;}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;}const module=window.__outsetaFramerModule;const token=module?.getAccessToken?.();if(typeof token!==\"string\"||token.length===0)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){// G61-earned medal always wins; falls back to manually-set medal\nconst earned=getG61Medal(lessonId);if(earned)return earned;const medals=parseLessonMedals(userState.user?.LessonMedals);return medals[lessonId]??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){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 getLastLessonMeta(){return coerceLessonMeta(userState.user,\"LastLesson\");}function getLastLockedLessonMeta(){return coerceLessonMeta(userState.user,\"LastLockedLesson\");}function useLessonMeta(getter){const[,forceUpdate]=useState(0);useEffect(()=>{ensureOutsetaUserLoaded();const unsub=subscribeUser(()=>forceUpdate(n=>n+1));return()=>{unsub();};},[]);return getter();}export function LastLessonLink(props){const meta=useLessonMeta(getLastLessonMeta);const href=normalizeLessonPath(meta?.path||meta?.slug);const visible=Boolean(href);return{href:href??props.href,visible,style:{...props.style??{},display:visible?props.style?.display??undefined:\"none\"}};}export function LastLessonTitle(props){const meta=useLessonMeta(getLastLessonMeta);const text=meta?.title||meta?.slug||props.text||\"\";const visible=Boolean(meta&&(meta.title||meta.slug));return{text,visible,style:{...props.style??{},display:visible?props.style?.display??undefined:\"none\"}};}export function LastLockedLessonLink(props){const meta=useLessonMeta(getLastLockedLessonMeta);const href=normalizeLessonPath(meta?.path||meta?.slug);const visible=Boolean(href);return{href:href??props.href,visible,style:{...props.style??{},display:visible?props.style?.display??undefined:\"none\"}};}export function LastLockedLessonTitle(props){const meta=useLessonMeta(getLastLockedLessonMeta);const text=meta?.title||meta?.slug||props.text||\"\";const visible=Boolean(meta&&(meta.title||meta.slug));return{text,visible,style:{...props.style??{},display:visible?props.style?.display??undefined:\"none\"}};}export function ShowWithLastLesson(props){const meta=useLessonMeta(getLastLessonMeta);const visible=Boolean(meta&&(meta.path||meta.slug||meta.title));return{visible,style:{...props?.style??{},display:visible?props?.style?.display??undefined:\"none\"}};}export function ShowWithLastLockedLesson(props){const meta=useLessonMeta(getLastLockedLessonMeta);const visible=Boolean(meta&&(meta.path||meta.slug||meta.title));return{visible,style:{...props?.style??{},display:visible?props?.style?.display??undefined:\"none\"}};}export function useLastLessonMeta(){const[,forceUpdate]=useState(0);useEffect(()=>{ensureOutsetaUserLoaded();const unsub=subscribeUser(()=>forceUpdate(n=>n+1));return()=>{unsub();};},[]);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) → 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};}// 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,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===\"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\",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\"},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 withLastLessonTitle(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...LastLessonTitle(props)});};}withLastLessonTitle.displayName=\"LastLessonTitle\";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 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\";\nexport const __FramerMetadata__ = {\"exports\":{\"withLastLessonTitle\":{\"type\":\"reactHoc\",\"name\":\"withLastLessonTitle\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLastLockedLessonLink\":{\"type\":\"reactHoc\",\"name\":\"withLastLockedLessonLink\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LessonProgressShowWhenIncomplete\":{\"type\":\"override\",\"name\":\"LessonProgressShowWhenIncomplete\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LessonProgressMarkButton\":{\"type\":\"override\",\"name\":\"LessonProgressMarkButton\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withShowWithLastLesson\":{\"type\":\"reactHoc\",\"name\":\"withShowWithLastLesson\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LastLockedLessonLink\":{\"type\":\"override\",\"name\":\"LastLockedLessonLink\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withMedalButtonGold\":{\"type\":\"reactHoc\",\"name\":\"withMedalButtonGold\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LessonProgressErrorText\":{\"type\":\"override\",\"name\":\"LessonProgressErrorText\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLessonProgressShowWhenIncomplete\":{\"type\":\"reactHoc\",\"name\":\"withLessonProgressShowWhenIncomplete\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LastLessonTitle\":{\"type\":\"override\",\"name\":\"LastLessonTitle\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLessonProgressShowWhenComplete\":{\"type\":\"reactHoc\",\"name\":\"withLessonProgressShowWhenComplete\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LessonProgressConfig\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LessonProgressMedal\":{\"type\":\"override\",\"name\":\"LessonProgressMedal\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLessonProgressVariant\":{\"type\":\"reactHoc\",\"name\":\"withLessonProgressVariant\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withMedalButtonSilver\":{\"type\":\"reactHoc\",\"name\":\"withMedalButtonSilver\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LessonProgressShowWhenComplete\":{\"type\":\"override\",\"name\":\"LessonProgressShowWhenComplete\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MedalSelector\":{\"type\":\"override\",\"name\":\"MedalSelector\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MedalButtonGold\":{\"type\":\"override\",\"name\":\"MedalButtonGold\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ShowWithLastLesson\":{\"type\":\"override\",\"name\":\"ShowWithLastLesson\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MedalButtonSilver\":{\"type\":\"override\",\"name\":\"MedalButtonSilver\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useLastLessonMeta\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LastLessonLink\":{\"type\":\"override\",\"name\":\"LastLessonLink\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withMedalSelector\":{\"type\":\"reactHoc\",\"name\":\"withMedalSelector\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withShowWithLastLockedLesson\":{\"type\":\"reactHoc\",\"name\":\"withShowWithLastLockedLesson\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LastLockedLessonTitle\":{\"type\":\"override\",\"name\":\"LastLockedLessonTitle\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MedalButtonBronze\":{\"type\":\"override\",\"name\":\"MedalButtonBronze\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsLessonComplete\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLessonProgressMarkButton\":{\"type\":\"reactHoc\",\"name\":\"withLessonProgressMarkButton\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLastLockedLessonTitle\":{\"type\":\"reactHoc\",\"name\":\"withLastLockedLessonTitle\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLessonProgressErrorText\":{\"type\":\"reactHoc\",\"name\":\"withLessonProgressErrorText\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ShowWithLastLockedLesson\":{\"type\":\"override\",\"name\":\"ShowWithLastLockedLesson\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LessonMedal\":{\"type\":\"reactComponent\",\"name\":\"LessonMedal\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLessonProgressMedal\":{\"type\":\"reactHoc\",\"name\":\"withLessonProgressMedal\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLastLessonLink\":{\"type\":\"reactHoc\",\"name\":\"withLastLessonLink\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LessonProgressVariant\":{\"type\":\"override\",\"name\":\"LessonProgressVariant\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useLessonProgress\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withMedalButtonBronze\":{\"type\":\"reactHoc\",\"name\":\"withMedalButtonBronze\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./LessonProgress.map"],"mappings":"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"}