{"version":3,"file":"WithDynamicUTM.CUIpPiQi.mjs","names":["useState","_Fragment","useState","useRef","_Fragment"],"sources":["https:/framerusercontent.com/modules/uLQsn6DKDHPtBPfjIJsD/gMc7ez1DneOtsYQVkMqV/ReadTime.js","https:/framerusercontent.com/modules/H3DgrBRoIEmGr9SIVmWj/hBKWwZuA6wtYJyN7wUpB/MenuLink.js","https:/framerusercontent.com/modules/BOJqIZwGYL8YND1gm0Hc/onKEG6o5RTz9tESHoGGe/WithDynamicUTM.js"],"sourcesContent":["// Get Started: https://www.framer.com/developers\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useLocaleInfo}from\"framer\";import{motion}from\"framer-motion\";import{useEffect,useState}from\"react\";/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */// In-memory cache for current session\nconst readingTimeCache=new Map;// Translations for different locales\nconst translations={en:{readText:\"Min Read\",unit:\"Words\",loadingText:\"Loading...\",errorText:\"Error loading content\"},\"zh-Hans\":{readText:\"分钟阅读\",unit:\"字\",loadingText:\"加载中...\",errorText:\"加载内容出错\"},\"zh-Hant\":{readText:\"分鐘閱讀\",unit:\"字\",loadingText:\"載入中...\",errorText:\"載入內容出錯\"},ja:{readText:\"分で読めます\",unit:\"文字\",loadingText:\"読み込み中...\",errorText:\"コンテンツの読み込みエラー\"},ko:{readText:\"분 읽기\",unit:\"단어\",loadingText:\"로딩 중...\",errorText:\"콘텐츠 로드 오류\"},es:{readText:\"Min de Lectura\",unit:\"Palabras\",loadingText:\"Cargando...\",errorText:\"Error al cargar contenido\"},fr:{readText:\"Min de Lecture\",unit:\"Mots\",loadingText:\"Chargement...\",errorText:\"Erreur de chargement du contenu\"},de:{readText:\"Min Lesezeit\",unit:\"W\\xf6rter\",loadingText:\"L\\xe4dt...\",errorText:\"Fehler beim Laden des Inhalts\"},ru:{readText:\"Мин Чтения\",unit:\"Слов\",loadingText:\"Загрузка...\",errorText:\"Ошибка загрузки контента\"},vi:{readText:\"Ph\\xfat Đọc\",unit:\"Từ\",loadingText:\"Đang tải...\",errorText:\"Lỗi tải nội dung\"},pt:{readText:\"Min de Leitura\",unit:\"Palavras\",loadingText:\"Carregando...\",errorText:\"Erro ao carregar conte\\xfado\"}};// CJK languages that use character counting\nconst cjkLocales=[\"zh-Hans\",\"zh-Hant\",\"ja\",\"ko\"];// Language detection and content analysis\nfunction analyzeContent(text){// Remove HTML tags first\nconst cleanedText=text.replace(/<[^>]*>/g,\"\");// Count CJK characters (Chinese, Japanese, Korean)\nconst cjkRegex=/[\\u4e00-\\u9fff\\u3400-\\u4dbf\\uf900-\\ufaff\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af]/g;const cjkMatches=cleanedText.match(cjkRegex)||[];const cjkChars=cjkMatches.length;// Count words by splitting on whitespace\n// Remove all CJK characters first, then split by spaces\nconst textWithoutCJK=cleanedText.replace(/[\\u4e00-\\u9fff\\u3400-\\u4dbf\\uf900-\\ufaff\\u3040-\\u309f\\u30a0-\\u30ff\\uac00-\\ud7af]/g,\" \").replace(/\\s+/g,\" \").trim();// Split by space and filter out empty strings\nconst wordCount=textWithoutCJK.split(\" \").filter(word=>word.length>0).length;return{cjkChars,wordCount};}// Cache management functions\nfunction getCacheKey(text,cjkCharsPerMin,wordsPerMin){const hash=text.split(\"\").reduce((acc,char)=>{return(acc<<5)-acc+char.charCodeAt(0);},0);return`rt_${Math.abs(hash)}_${cjkCharsPerMin}_${wordsPerMin}`;}function getCachedData(cacheKey){return readingTimeCache.get(cacheKey)||null;}function setCachedData(cacheKey,data){readingTimeCache.set(cacheKey,data);}// Function to calculate reading time with multi-language support\nfunction calculateReadingTime(text,cjkCharsPerMin=400,wordsPerMin=200){if(!text)return{readingTime:0,count:0,cjkChars:0,wordCount:0};// Create cache key\nconst cacheKey=getCacheKey(text,cjkCharsPerMin,wordsPerMin);// Check cache first\nconst cached=getCachedData(cacheKey);if(cached){return cached;}// Analyze content\nconst{cjkChars,wordCount}=analyzeContent(text);// Calculate reading time for mixed content\nconst cjkTime=cjkChars/cjkCharsPerMin;const wordTime=wordCount/wordsPerMin;const readingTime=Math.max(1,Math.ceil(cjkTime+wordTime));const count=cjkChars+wordCount;const result={readingTime,count,cjkChars,wordCount};// Cache the result\nsetCachedData(cacheKey,result);return result;}export default function ReadTime(props){const{cjkCharsPerMin,wordsPerMin,backgroundColor,textColor,showCount,fontSize,showIcon}=props;// Get current locale from Framer\nconst{activeLocale}=useLocaleInfo();const{code:locale=\"en\"}=activeLocale||{};// Get translations for current locale, fallback to English\nconst currentTranslations=translations[locale]||translations.en;const isCJKLocale=cjkLocales.includes(locale);const[readingTime,setReadingTime]=useState(0);const[count,setCount]=useState(0);const[cjkChars,setCjkChars]=useState(0);const[wordCount,setWordCount]=useState(0);const[isLoading,setIsLoading]=useState(true);const[error,setError]=useState(\"\");const[dynamicContent,setDynamicContent]=useState(\"\");// Function to extract content from DOM element\nconst extractContentFromDOM=()=>{const contentElement=document?.querySelector('[data-framer-name=\"Content\"]');if(!contentElement){throw new Error('Content element with data-framer-name=\"Content\" not found');}const textContent=contentElement.textContent||contentElement.innerText||\"\";console.log(\"Extracted content length:\",textContent.length,\"characters\");return textContent.trim();};// Effect to handle dynamic content loading\nuseEffect(()=>{const loadContent=()=>{setIsLoading(true);setError(\"\");try{const textToAnalyze=extractContentFromDOM();setDynamicContent(textToAnalyze);setTimeout(()=>{try{const result=calculateReadingTime(textToAnalyze,cjkCharsPerMin,wordsPerMin);setReadingTime(result.readingTime);setCount(result.count);setCjkChars(result.cjkChars);setWordCount(result.wordCount);setIsLoading(false);console.log(\"Reading time calculated:\",result.readingTime,\"min,\",result.cjkChars,\"CJK chars,\",result.wordCount,\"words\",\"Locale:\",locale);}catch(calcError){setError(\"Error calculating reading time\");setIsLoading(false);}},10);}catch(extractError){setError(extractError instanceof Error?extractError.message:\"Content element not found\");setIsLoading(false);}};loadContent();},[cjkCharsPerMin,wordsPerMin,locale]);// DOM observer for dynamic content changes\nuseEffect(()=>{let observer=null;const setupDOMObserver=()=>{const contentElement=document?.querySelector('[data-framer-name=\"Content\"]');console.log(\"Setting up DOM observer...\");console.log(\"Content element found:\",!!contentElement);if(contentElement){observer=new MutationObserver(()=>{console.log(\"DOM mutation detected!\");try{const newContent=extractContentFromDOM();if(newContent!==dynamicContent&&newContent.length>0){setDynamicContent(newContent);const result=calculateReadingTime(newContent,cjkCharsPerMin,wordsPerMin);setReadingTime(result.readingTime);setCount(result.count);setCjkChars(result.cjkChars);setWordCount(result.wordCount);console.log(\"Content updated:\",result.readingTime,\"min,\",result.cjkChars,\"CJK chars,\",result.wordCount,\"words\");}}catch(err){console.warn(\"DOM content change detection failed:\",err);}});observer.observe(contentElement,{childList:true,subtree:true,characterData:true});console.log(\"Observing content element for changes\");}};const timeoutId=setTimeout(()=>{setupDOMObserver();},100);return()=>{if(timeoutId)clearTimeout(timeoutId);if(observer)observer.disconnect();};},[dynamicContent,cjkCharsPerMin,wordsPerMin]);const textStyle={fontFamily:\"NeverMind Medium\"};// Get display text based on Framer locale\nconst getDisplayText=()=>{// Determine which count to show based on locale\nlet displayCount;if(isCJKLocale){// CJK locales: show character count\ndisplayCount=cjkChars;}else{// Other locales: show word count\ndisplayCount=wordCount;}return{readText:currentTranslations.readText,countText:`${displayCount.toLocaleString()} ${currentTranslations.unit}`,loadingText:currentTranslations.loadingText,errorText:currentTranslations.errorText};};const{readText,countText,loadingText,errorText}=getDisplayText();if(error){return /*#__PURE__*/_jsxs(motion.div,{style:{display:\"inline-flex\",alignItems:\"center\",gap:8,color:\"#e74c3c\",fontSize:fontSize,fontFamily:\"system-ui, -apple-system, sans-serif\",backgroundColor:\"#fee\",padding:\"8px 16px\",borderRadius:\"20px\"},initial:{opacity:0},animate:{opacity:1},children:[/*#__PURE__*/_jsxs(\"svg\",{width:\"16\",height:\"16\",viewBox:\"0 0 24 24\",fill:\"currentColor\",children:[/*#__PURE__*/_jsx(\"circle\",{cx:\"12\",cy:\"12\",r:\"10\",stroke:\"currentColor\",strokeWidth:\"2\",fill:\"none\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"12\",y1:\"8\",x2:\"12\",y2:\"12\",stroke:\"currentColor\",strokeWidth:\"2\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"12\",y1:\"16\",x2:\"12.01\",y2:\"16\",stroke:\"currentColor\",strokeWidth:\"2\"})]}),/*#__PURE__*/_jsx(\"span\",{style:textStyle,children:errorText})]});}if(isLoading){return /*#__PURE__*/_jsxs(motion.div,{style:{display:\"inline-flex\",alignItems:\"center\",gap:8,color:textColor,fontSize:fontSize,fontFamily:\"system-ui, -apple-system, sans-serif\",backgroundColor:backgroundColor,padding:\"8px 16px\",borderRadius:\"20px\"},initial:{opacity:0},animate:{opacity:.7},children:[showIcon&&/*#__PURE__*/_jsxs(motion.svg,{width:\"16\",height:\"16\",viewBox:\"0 0 24 24\",fill:\"currentColor\",animate:{rotate:360},transition:{duration:1,repeat:Infinity,ease:\"linear\"},children:[/*#__PURE__*/_jsx(\"circle\",{cx:\"12\",cy:\"12\",r:\"10\",stroke:\"currentColor\",strokeWidth:\"2\",fill:\"none\"}),/*#__PURE__*/_jsx(\"polyline\",{points:\"12,6 12,12 16,14\",stroke:\"currentColor\",strokeWidth:\"2\",fill:\"none\"})]}),/*#__PURE__*/_jsx(\"span\",{style:textStyle,children:loadingText})]});}return /*#__PURE__*/_jsxs(motion.div,{style:{display:\"inline-flex\",alignItems:\"center\",gap:8,color:textColor,fontSize:fontSize,fontWeight:\"500\",backgroundColor:backgroundColor,padding:\"8px 16px\",borderRadius:\"20px\",whiteSpace:\"nowrap\"},initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.3},children:[showIcon&&/*#__PURE__*/_jsxs(motion.svg,{width:\"16\",height:\"16\",viewBox:\"0 0 24 24\",fill:\"currentColor\",whileHover:{rotate:360},transition:{duration:.5},children:[/*#__PURE__*/_jsx(\"circle\",{cx:\"12\",cy:\"12\",r:\"10\",stroke:\"currentColor\",strokeWidth:\"2\",fill:\"none\"}),/*#__PURE__*/_jsx(\"polyline\",{points:\"12,6 12,12 16,14\",stroke:\"currentColor\",strokeWidth:\"2\",fill:\"none\"})]}),/*#__PURE__*/_jsxs(\"span\",{style:textStyle,children:[/*#__PURE__*/_jsxs(\"span\",{children:[readingTime,\" \",readText]}),showCount&&(isCJKLocale?cjkChars>0:wordCount>0)&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{style:{opacity:.6,margin:\"0 4px\"},children:\"-\"}),/*#__PURE__*/_jsx(\"span\",{children:countText})]})]})]});}addPropertyControls(ReadTime,{cjkCharsPerMin:{title:\"CJK Chars/Min\",type:ControlType.Number,defaultValue:400,min:200,max:600,step:50,description:\"Characters per minute for Chinese/Japanese/Korean\"},wordsPerMin:{title:\"Words/Min\",type:ControlType.Number,defaultValue:200,min:100,max:400,step:25,description:\"Words per minute for other languages\"},showCount:{title:\"Show Count\",type:ControlType.Boolean,defaultValue:true,description:\"Display character/word count\"},showIcon:{title:\"Show Clock Icon\",type:ControlType.Boolean,defaultValue:true},backgroundColor:{title:\"Background Color\",type:ControlType.Color,defaultValue:\"#333333\"},textColor:{title:\"Text Color\",type:ControlType.Color,defaultValue:\"#ffffff\"},fontSize:{title:\"Font Size\",type:ControlType.Number,defaultValue:14,min:10,max:24,step:1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ReadTime\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ReadTime.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{forwardRef,useEffect,useState,useRef}from\"react\";const CONTENT_SUBTITLE_SUFFIX=\"blog_content_subtitle_\";// 添加特定的blog menu作用域，避免样式冲突\nconst menuWrapperStyle=`\n        ._blog_menu_wrapper {\n            overflow: hidden;\n            transition: all 0.3s ease-in-out;\n        }\n        ._blog_menu_wrapper:hover {\n            overflow-y: auto;\n        }\n        ._blog_menu_disappear {\n            opacity: 0;\n            transform: translateY(20px);\n        }\n        ._blog_menu_appear {\n            opacity: 1;\n            transform: translateY(0);\n        }\n        ._blog_menu_item {\n            color: #6e757c !important;\n            transition: all 0.15s ease-out;\n        }\n        ._blog_menu_item:hover, \n        ._blog_menu_item_active {\n            color: #000 !important;\n        }\n    `;let originalTemplate=null;// Custom scroll function with fixed duration and completion detection\nconst smoothScrollTo=(targetPosition,duration=800)=>{return new Promise(resolve=>{const startPosition=window?.pageYOffset||document?.documentElement?.scrollTop||0;const distance=targetPosition-startPosition;const startTime=performance.now();// If we're already at the target, resolve immediately\nif(Math.abs(distance)<1){resolve();return;}const easeInOutCubic=t=>{return t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1;};const animateScroll=currentTime=>{const elapsed=currentTime-startTime;const progress=Math.min(elapsed/duration,1);const easedProgress=easeInOutCubic(progress);const currentPosition=startPosition+distance*easedProgress;window?.scrollTo(0,currentPosition);if(progress<1){requestAnimationFrame(animateScroll);}else{// Ensure we end up exactly at the target\nwindow?.scrollTo(0,targetPosition);resolve();}};requestAnimationFrame(animateScroll);});};export function setLink2Title(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[state,setState]=useState({children:[]});const[activeIndex,setActiveIndex]=useState(0);const contentSectionsRef=useRef({});const lastActiveIndexRef=useRef(0);const animationFrameRef=useRef();const lastScrollPositionRef=useRef(0);const scrollDirectionRef=useRef(\"none\");const userClickedIndexRef=useRef(null);const isScrollingFromClickRef=useRef(false);const scrollTimeoutRef=useRef();const currentScrollPromiseRef=useRef(null);// New ref for additional delay after scroll animation completes\nconst scrollLockTimeoutRef=useRef();useEffect(()=>{let timer=setTimeout(()=>{const contentElement=document?.querySelector('[data-framer-name=\"Content\"]');let h2List=[];if(contentElement){h2List=Array.from(contentElement?.querySelectorAll(\"h2\")||[]);if(h2List.length===0){h2List=Array.from(contentElement?.querySelectorAll(\"h3\")||[]);}}if(h2List.length===0){h2List=Array.from(document?.querySelectorAll(\"h2\")||[]);if(h2List.length===0){h2List=Array.from(document?.querySelectorAll(\"h3\")||[]);}}const children=h2List.map((item,index)=>{item.setAttribute(\"id\",CONTENT_SUBTITLE_SUFFIX+index);return item;});setState({children});},100);return()=>clearTimeout(timer);},[]);// Calculate section offset ranges based on actual positions\nconst calculateSectionsOffset=()=>{if(state.children.length===0)return;const newSections={};const sections=state.children;const scrollTop=window?.pageYOffset||document?.documentElement?.scrollTop||0;for(let i=0;i<sections.length;i++){const section=sections[i];const rect=section.getBoundingClientRect();// Current section top position (absolute in document)\nconst top=rect.top+scrollTop;// Set current section boundaries\nnewSections[i.toString()]={top:top,bottom:0};// If not the last section, bottom is the start of next section\nif(i<sections.length-1){const nextSectionRect=sections[i+1].getBoundingClientRect();const nextSectionTop=nextSectionRect.top+scrollTop;newSections[i.toString()].bottom=nextSectionTop;}else{// Last section goes to document end\nnewSections[i.toString()].bottom=document?.documentElement?.scrollHeight||0;}}contentSectionsRef.current=newSections;};const handleScrollImmediate=()=>{if(state.children.length===0)return;const scrollPosition=window?.pageYOffset||document?.documentElement?.scrollTop||0;const viewportHeight=window?.innerHeight||0;const sections=contentSectionsRef.current;// Detect scroll direction\nconst lastScrollPosition=lastScrollPositionRef.current;if(scrollPosition>lastScrollPosition){scrollDirectionRef.current=\"down\";}else if(scrollPosition<lastScrollPosition){scrollDirectionRef.current=\"up\";}// Small movements (< 5px) don't change direction to avoid jitter\nlastScrollPositionRef.current=scrollPosition;let newActiveIndex=lastActiveIndexRef.current;// If we're currently scrolling from a user click, maintain that selection\nif(isScrollingFromClickRef.current&&userClickedIndexRef.current!==null){newActiveIndex=userClickedIndexRef.current;}else{// Find the best section based on visibility, position, and scroll direction\nlet bestMatch={index:0,score:0};for(const[index,{top,bottom}]of Object.entries(sections)){const numIndex=parseInt(index);const sectionHeight=bottom-top;// Calculate how much of this section is visible\nconst visibleTop=Math.max(top,scrollPosition);const visibleBottom=Math.min(bottom,scrollPosition+viewportHeight);const visibleHeight=Math.max(0,visibleBottom-visibleTop);const visibilityRatio=visibleHeight/Math.min(sectionHeight,viewportHeight);let score=visibilityRatio;// For very short sections (less than 200px), apply direction-based logic\nif(sectionHeight<200){const sectionMiddle=top+sectionHeight/2;const viewportMiddle=scrollPosition+viewportHeight/2;if(scrollDirectionRef.current===\"down\"){// When scrolling down, prefer sections that are entering from the top\nif(top<=scrollPosition+100&&bottom>scrollPosition){score+=.5;}}else if(scrollDirectionRef.current===\"up\"){// When scrolling up, prefer sections whose middle is above viewport middle\n// and give extra weight to sections that are well-positioned\nif(sectionMiddle<=viewportMiddle&&bottom>scrollPosition+50){score+=.5;}// Additional boost for sections that are clearly in the upper part\nif(top>=scrollPosition&&top<=scrollPosition+viewportHeight*.3){score+=.3;}}else{// No clear direction, use original logic\nif(top<=scrollPosition+100){score+=.5;}}}// Give slight preference to sections that contain the top 1/3 of viewport\n// but adjust based on scroll direction\nconst topThird=scrollPosition+viewportHeight/3;if(top<=topThird&&bottom>topThird){if(scrollDirectionRef.current===\"up\"){// When scrolling up, be more selective about this bonus\nif(top<=scrollPosition+viewportHeight*.2){score+=.2;}}else{score+=.2;}}// Stability bonus: slight preference for the current active section\n// to reduce flickering between close scores\nif(numIndex===lastActiveIndexRef.current&&visibilityRatio>.1){score+=.1;}if(score>bestMatch.score){bestMatch={index:numIndex,score};}}newActiveIndex=bestMatch.index;}if(newActiveIndex!==lastActiveIndexRef.current){lastActiveIndexRef.current=newActiveIndex;setActiveIndex(newActiveIndex);}};const handleScroll=()=>{if(animationFrameRef.current){cancelAnimationFrame(animationFrameRef.current);}animationFrameRef.current=requestAnimationFrame(handleScrollImmediate);};useEffect(()=>{calculateSectionsOffset();lastScrollPositionRef.current=window?.pageYOffset||document?.documentElement?.scrollTop||0;window?.addEventListener(\"scroll\",handleScroll,{passive:true});window?.addEventListener(\"resize\",calculateSectionsOffset);return()=>{window?.removeEventListener(\"scroll\",handleScroll);window?.removeEventListener(\"resize\",calculateSectionsOffset);if(animationFrameRef.current){cancelAnimationFrame(animationFrameRef.current);}if(scrollTimeoutRef.current){clearTimeout(scrollTimeoutRef.current);}if(scrollLockTimeoutRef.current){clearTimeout(scrollLockTimeoutRef.current);}};},[state.children]);useEffect(()=>{if(state.children.length>0){calculateSectionsOffset();}},[state.children]);const newTemplates=[];if(state.children.length>0){if(!originalTemplate){originalTemplate=props.children?.[0]||props.children;}let template=originalTemplate||{};for(let i=0;i<state.children.length;i++){const isActive=i===activeIndex;const activeItemProps=isActive?{style:{borderLeft:\"2px solid #000\",paddingLeft:\"8px\",marginLeft:\"-2px\",opacity:\"1\"}}:{style:{paddingLeft:\"8px\"}};const item={...template,props:{...template?.props,...activeItemProps,onClick:async(...args)=>{const target=state.children[i];// Cancel any existing scroll animation\nif(currentScrollPromiseRef.current){// Note: We can't actually cancel the promise, but we can ignore its completion\ncurrentScrollPromiseRef.current=null;}// Clear any existing timeouts\nif(scrollTimeoutRef.current){clearTimeout(scrollTimeoutRef.current);}if(scrollLockTimeoutRef.current){clearTimeout(scrollLockTimeoutRef.current);}// Mark that user clicked on this item\nuserClickedIndexRef.current=i;isScrollingFromClickRef.current=true;setActiveIndex(i)// Immediately update active state\n;const rect=target.getBoundingClientRect();const scrollTop=window?.pageYOffset||document?.documentElement?.scrollTop||0;const viewportHeight=window?.innerHeight||0;const targetTop=rect.top+scrollTop;// For short sections, scroll to show them at the top with some padding\nconst sectionHeight=rect.height;let scrollToPosition;if(sectionHeight<viewportHeight*.5){// Short section: position near top of viewport\nscrollToPosition=targetTop-80// 80px padding from top\n;}else{// Longer section: center it\nscrollToPosition=targetTop-viewportHeight/2+rect.height/2;}const finalPosition=Math.max(0,scrollToPosition);try{// Use custom scroll with fixed duration and completion detection\nconst scrollPromise=smoothScrollTo(finalPosition,1e3);currentScrollPromiseRef.current=scrollPromise;await scrollPromise;// Only proceed if this scroll completed successfully\nif(currentScrollPromiseRef.current===scrollPromise){currentScrollPromiseRef.current=null;// Add brief delay before releasing the scroll lock\n// This ensures the scroll has fully settled\nscrollLockTimeoutRef.current=setTimeout(()=>{isScrollingFromClickRef.current=false;userClickedIndexRef.current=null;},100)// Brief 100ms delay\n;}}catch(error){// Fallback: clear tracking after a reasonable time\nscrollTimeoutRef.current=setTimeout(()=>{isScrollingFromClickRef.current=false;userClickedIndexRef.current=null;currentScrollPromiseRef.current=null;},1100)// Match scroll duration + brief delay\n;}if(template.props?.onClick){template.props.onClick(...args);}},children:{...template?.props?.children,props:{...template?.props?.children?.props,children:{...template.props?.children?.props?.children,props:{...template.props?.children?.props?.children?.props,className:`${template.props?.children?.props?.children?.props?.className||\"\"} _blog_menu_item ${isActive?\"_blog_menu_item_active\":\"\"}`,children:`${state.children[i].innerText}`}}}}}};newTemplates.push(item);}}if(newTemplates.length>0){props.children=newTemplates;props.className=props.className.replace(\"_blog_menu_disappear\",\"_blog_menu_appear\");}else{originalTemplate=null;contentSectionsRef.current={};props.className=`${props.className||\"\"} _blog_menu_disappear _blog_menu_wrapper`;}return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:menuWrapperStyle}),/*#__PURE__*/_jsx(Component,{ref:ref,...props})]});});}\nexport const __FramerMetadata__ = {\"exports\":{\"setLink2Title\":{\"type\":\"reactHoc\",\"name\":\"setLink2Title\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MenuLink.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef}from\"react\";export function withDynamicUTM(Component){return /*#__PURE__*/forwardRef((props,ref)=>{let newLink=props.link;if(typeof window!==\"undefined\"){const slug=window.location.pathname.split(\"/\").pop();if(slug){newLink=`https://app.xmind.com/login?utm_source=blog&utm_content=${slug}`;}}return /*#__PURE__*/_jsx(Component,{ref:ref,...props,link:newLink});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withDynamicUTM\":{\"type\":\"reactHoc\",\"name\":\"withDynamicUTM\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./WithDynamicUTM.map"],"mappings":"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"}