{"version":3,"file":"TableOfContents.TQTjeI2R.mjs","names":["useRef","useState","useCallback"],"sources":["https:/framerusercontent.com/modules/BQbNksai1EKSCfuoOeep/QQucCjlf2UUdgxnMGL2x/TableOfContents.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useEffect,useRef,useCallback,startTransition}from\"react\";import{motion}from\"framer-motion\";import{addPropertyControls,ControlType}from\"framer\";/**\n * Table of Contents with scroll-based animation\n * Line width and text position animate based on scroll progress\n * Automatically detects H1-H6 headings in the scrollable content\n *\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 300\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function TableOfContents(props){const{activeColor=\"#000000\",inactiveColor=\"#666666\",lineColor=\"#000000\",fineLineColor=\"#CCCCCC\",backgroundColor=\"#F5F5F5\",fontSize=18,lineHeight=48,lineWidth=.5,activeLineWidth=40,inactiveLineWidth=12,textOffset=16,showH1=true,showH2=true,showH3=true,showH4=false,showH5=false,showH6=false,h1Font,h2Font,h3Font,h4Font,h5Font,h6Font,scrollContainer,containerPadding=0,disableIndent=false}=props;const containerRef=useRef(null);const[activeIndex,setActiveIndex]=useState(0);const[sectionProgress,setSectionProgress]=useState(0);const[items,setItems]=useState([]);const headingElementsRef=useRef([]);const getHeadingLabel=useCallback(heading=>{const ariaLabel=heading.getAttribute(\"aria-label\")?.trim()||\"\";const textContent=(heading.innerText||heading.textContent||\"\").trim();const label=ariaLabel||textContent;return label.replace(/\\s+/g,\" \").trim();},[]);const isVisibleHeading=useCallback(heading=>{if(!heading.isConnected)return false;if(heading.hidden)return false;if(heading.getAttribute(\"aria-hidden\")===\"true\")return false;const style=window.getComputedStyle(heading);if(style.display===\"none\"||style.visibility===\"hidden\"){return false;}return heading.getClientRects().length>0;},[]);const isPlaceholderLabel=useCallback(label=>{return/^heading\\s+\\d+$/i.test(label.trim());},[]);// Get scroll container\nconst getScrollContainer=useCallback(()=>{if(typeof window===\"undefined\")return null;if(scrollContainer){return document.querySelector(scrollContainer);}return document.documentElement;},[scrollContainer]);// Scan for headings and build TOC items\nuseEffect(()=>{if(typeof window===\"undefined\")return;const levels=[];if(showH1)levels.push(1);if(showH2)levels.push(2);if(showH3)levels.push(3);if(showH4)levels.push(4);if(showH5)levels.push(5);if(showH6)levels.push(6);const selectors=levels.map(l=>`h${l}`).join(\", \");if(!selectors){headingElementsRef.current=[];startTransition(()=>{setItems([]);setActiveIndex(0);setSectionProgress(0);});return;}const seenHeadingNodes=new Set;const seenHeadingSignatures=new Set;const validHeadings=[];const tocItems=[];const allHeadings=Array.from(document.querySelectorAll(selectors));allHeadings.forEach(heading=>{if(seenHeadingNodes.has(heading))return;if(!isVisibleHeading(heading))return;const label=getHeadingLabel(heading);if(!label)return;if(isPlaceholderLabel(label))return;const level=parseInt(heading.tagName.charAt(1),10);if(!levels.includes(level))return;const top=Math.round(heading.getBoundingClientRect().top+window.scrollY);const signature=`${level}-${label.toLowerCase()}-${top}`;if(seenHeadingSignatures.has(signature))return;seenHeadingNodes.add(heading);seenHeadingSignatures.add(signature);validHeadings.push(heading);tocItems.push({id:`toc-heading-${tocItems.length}`,label,level});});headingElementsRef.current=validHeadings;startTransition(()=>{setItems(tocItems);setActiveIndex(0);setSectionProgress(0);});},[showH1,showH2,showH3,showH4,showH5,showH6,getHeadingLabel,isVisibleHeading,isPlaceholderLabel]);// Track scroll position and update active heading\nuseEffect(()=>{if(typeof window===\"undefined\"||items.length===0)return;const handleScroll=()=>{const scrollContainerEl=getScrollContainer();if(!scrollContainerEl)return;const scrollTop=scrollContainerEl===document.documentElement?window.scrollY:scrollContainerEl.scrollTop;const containerRect=scrollContainerEl===document.documentElement?{top:0}:scrollContainerEl.getBoundingClientRect();let currentIndex=0;const offset=100;for(let i=0;i<headingElementsRef.current.length;i++){const heading=headingElementsRef.current[i];const rect=heading.getBoundingClientRect();const headingTop=rect.top-containerRect.top+scrollTop;if(headingTop<=scrollTop+offset){currentIndex=i;}}startTransition(()=>{setActiveIndex(currentIndex);});// Calculate progress within current section\nconst currentHeading=headingElementsRef.current[currentIndex];const nextHeading=headingElementsRef.current[currentIndex+1];if(currentHeading){const currentRect=currentHeading.getBoundingClientRect();const currentTop=currentRect.top-containerRect.top+scrollTop;let sectionHeight;if(nextHeading){const nextRect=nextHeading.getBoundingClientRect();const nextTop=nextRect.top-containerRect.top+scrollTop;sectionHeight=nextTop-currentTop;}else{// Last section - use viewport height or document height\nsectionHeight=window.innerHeight;}const progressInSection=Math.max(0,Math.min(1,(scrollTop+offset-currentTop)/sectionHeight));startTransition(()=>{setSectionProgress(progressInSection);});}};const scrollEl=getScrollContainer();if(scrollEl){scrollEl.addEventListener(\"scroll\",handleScroll,{passive:true});handleScroll();}window.addEventListener(\"scroll\",handleScroll,{passive:true});return()=>{if(scrollEl){scrollEl.removeEventListener(\"scroll\",handleScroll);}window.removeEventListener(\"scroll\",handleScroll);};},[items.length,getScrollContainer]);// Get font for heading level\nconst getFontForLevel=level=>{switch(level){case 1:return h1Font;case 2:return h2Font;case 3:return h3Font;case 4:return h4Font;case 5:return h5Font;case 6:return h6Font;default:return undefined;}};// Calculate indent based on heading level\nconst getIndent=level=>{if(disableIndent)return 0;return(level-1)*12;};const handleClick=index=>{const heading=headingElementsRef.current[index];if(heading){heading.scrollIntoView({behavior:\"smooth\",block:\"start\"});}};return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{position:\"sticky\",top:24,width:\"100%\",height:\"fit-content\",maxHeight:\"100%\",backgroundColor,display:\"flex\",flexDirection:\"column\",justifyContent:\"flex-start\",padding:containerPadding,margin:0,boxSizing:\"border-box\",overflow:\"auto\"},children:items.map((item,index)=>{const isActive=index===activeIndex;const font=getFontForLevel(item.level);const indent=getIndent(item.level);// Calculate line widths based on scroll progress within section\nconst getLineWidth=linePosition=>{// linePosition: 0 = main line, 1-4 = fine lines\nconst totalLines=5// main + 4 fine lines\n;// Determine which segment is currently active based on progress\n// 0-20%: segment 0 (main line)\n// 20-40%: segment 1 (first fine line)\n// 40-60%: segment 2 (second fine line)\n// 60-80%: segment 3 (third fine line)\n// 80-100%: segment 4 (fourth fine line)\nconst activeSegment=Math.min(4,Math.floor(sectionProgress*5));// Calculate distance from active segment\nconst distance=Math.abs(linePosition-activeSegment);// Width decreases by 20% for each position away from active\nconst widthPercentage=Math.max(.2,1-distance*.2);// Use same base width for all lines (main and fine)\nconst baseWidth=isActive?activeLineWidth:inactiveLineWidth;return baseWidth*widthPercentage;};return /*#__PURE__*/_jsxs(motion.div,{style:{display:\"flex\",flexDirection:\"column\",justifyContent:\"center\"},initial:false,children:[/*#__PURE__*/_jsxs(motion.div,{style:{display:\"flex\",alignItems:\"center\",height:lineHeight,cursor:\"pointer\",paddingLeft:indent},onClick:()=>handleClick(index),initial:false,children:[/*#__PURE__*/_jsx(motion.div,{style:{height:lineWidth,backgroundColor:lineColor,borderRadius:lineWidth/2,originX:0,flexShrink:0},animate:{width:isActive?getLineWidth(0):inactiveLineWidth},transition:{type:\"spring\",stiffness:300,damping:30}}),/*#__PURE__*/_jsx(motion.span,{style:{fontSize:font?.fontSize||fontSize,fontFamily:font?.fontFamily||\"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif\",fontWeight:font?.fontWeight||(isActive?500:400),fontStyle:font?.fontStyle||\"normal\",letterSpacing:font?.letterSpacing||\"0\",lineHeight:font?.lineHeight||\"1.2em\",marginLeft:textOffset,whiteSpace:\"nowrap\",overflow:\"hidden\",textOverflow:\"ellipsis\"},animate:{x:isActive?0:-8,color:isActive?activeColor:inactiveColor},transition:{type:\"spring\",stiffness:300,damping:30},children:item.label})]}),index<items.length-1&&/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:6,paddingLeft:indent,justifyContent:\"center\"},children:[1,2,3,4].map(lineIndex=>{const fineWidth=getLineWidth(lineIndex);return /*#__PURE__*/_jsx(motion.div,{style:{height:lineWidth,backgroundColor:fineLineColor,borderRadius:lineWidth/2,originX:0},animate:{width:fineWidth,opacity:isActive?.3+fineWidth/activeLineWidth*.7:.3},transition:{type:\"spring\",stiffness:400,damping:35}},lineIndex);})})]},item.id);})});}addPropertyControls(TableOfContents,{scrollContainer:{type:ControlType.String,title:\"Scroll Container\",placeholder:\"CSS selector (e.g., #main-content)\",description:\"Leave empty to use document scroll\"},showH1:{type:ControlType.Boolean,title:\"Show H1\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},showH2:{type:ControlType.Boolean,title:\"Show H2\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},showH3:{type:ControlType.Boolean,title:\"Show H3\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},showH4:{type:ControlType.Boolean,title:\"Show H4\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"},showH5:{type:ControlType.Boolean,title:\"Show H5\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"},showH6:{type:ControlType.Boolean,title:\"Show H6\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"},h1Font:{type:ControlType.Font,title:\"H1 Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"20px\",variant:\"Bold\",letterSpacing:\"-0.02em\",lineHeight:\"1.2em\"}},h2Font:{type:ControlType.Font,title:\"H2 Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"18px\",variant:\"Semibold\",letterSpacing:\"-0.01em\",lineHeight:\"1.2em\"}},h3Font:{type:ControlType.Font,title:\"H3 Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"16px\",variant:\"Medium\",letterSpacing:\"0\",lineHeight:\"1.2em\"}},h4Font:{type:ControlType.Font,title:\"H4 Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"15px\",variant:\"Medium\",letterSpacing:\"0\",lineHeight:\"1.2em\"}},h5Font:{type:ControlType.Font,title:\"H5 Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"14px\",variant:\"Regular\",letterSpacing:\"0\",lineHeight:\"1.2em\"}},h6Font:{type:ControlType.Font,title:\"H6 Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"13px\",variant:\"Regular\",letterSpacing:\"0\",lineHeight:\"1.2em\"}},activeColor:{type:ControlType.Color,title:\"Active Text\",defaultValue:\"#000000\"},inactiveColor:{type:ControlType.Color,title:\"Inactive Text\",defaultValue:\"#666666\"},lineColor:{type:ControlType.Color,title:\"Line Color\",defaultValue:\"#000000\"},fineLineColor:{type:ControlType.Color,title:\"Fine Line Color\",defaultValue:\"#CCCCCC\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#F5F5F5\"},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:18,min:12,max:32,step:1,unit:\"px\"},lineHeight:{type:ControlType.Number,title:\"Line Height\",defaultValue:48,min:8,max:80,step:4,unit:\"px\"},activeLineWidth:{type:ControlType.Number,title:\"Active Line Width\",defaultValue:40,min:20,max:80,step:4,unit:\"px\"},inactiveLineWidth:{type:ControlType.Number,title:\"Inactive Line Width\",defaultValue:12,min:4,max:30,step:2,unit:\"px\"},textOffset:{type:ControlType.Number,title:\"Text Offset\",defaultValue:16,min:8,max:32,step:2,unit:\"px\"},lineWidth:{type:ControlType.Number,title:\"Line Width\",defaultValue:.5,min:.5,max:4,step:.5,unit:\"px\"},containerPadding:{type:ControlType.Number,title:\"Container Padding\",defaultValue:0,min:0,max:32,step:4,unit:\"px\"},disableIndent:{type:ControlType.Boolean,title:\"Disable Indent\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TableOfContents\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"300\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"200\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TableOfContents.map"],"mappings":"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"}