{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/vPEZuCLXY6pSsXDd3rC9/sh4nv2zmvDnYXn4fIhyd/NEW_TOC.js"],
  "sourcesContent": ["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useState,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";export default function TableOfContents({headingTags,stickyTop,containerStyle,offset}){const[headings,setHeadings]=useState([]);const[activeId,setActiveId]=useState(\"\");const observerRef=useRef(null);const tocRef=useRef(null);// Extract all headings from the document (ignoring those in footer)\nuseEffect(()=>{const foundHeadings=Array.from(document.querySelectorAll(headingTags.join(\",\"))).filter(heading=>!heading.closest(\"footer\")).map((heading,index)=>{const id=heading.id||`heading-${index}`;heading.id=id;return{id,text:heading.textContent||\"\"};});setHeadings(foundHeadings);},[headingTags]);// Set up the IntersectionObserver (note: activeId is removed from dependencies)\nuseEffect(()=>{// Clean up any previous observer.\nif(observerRef.current){observerRef.current.disconnect();}// Intersection callback to detect which heading is visible.\nconst handleIntersections=entries=>{// Filter out entries that are not intersecting.\nconst visibleEntries=entries.filter(entry=>entry.isIntersecting);if(visibleEntries.length>0){// Sort visible entries based on the top offset.\nvisibleEntries.sort((a,b)=>a.boundingClientRect.top-b.boundingClientRect.top);const newActiveId=visibleEntries[0].target.id;// Use functional update to work around stale closure issues.\nsetActiveId(prevActiveId=>prevActiveId!==newActiveId?newActiveId:prevActiveId);}};// Use the offset for the rootMargin to adjust when a heading is considered \"visible\".\nconst observerOptions={root:null,threshold:.25,rootMargin:`-${offset}px 0px 0px 0px`};observerRef.current=new IntersectionObserver(handleIntersections,observerOptions);// Observe each heading element.\nheadings.forEach(heading=>{const el=document.getElementById(heading.id);if(el){observerRef.current.observe(el);}});// Cleanup the observer on unmount or when headings/offset change.\nreturn()=>{if(observerRef.current){observerRef.current.disconnect();}};},[headings,offset])// Notice activeId is no longer a dependency.\n;// Smooth scroll handler for link clicks.\nconst handleSmoothScroll=(e,id)=>{e.preventDefault();const element=document.getElementById(id);if(element){const elementPosition=element.getBoundingClientRect().top+window.pageYOffset;const offsetPosition=elementPosition-parseInt(offset);window.scrollTo({top:offsetPosition,behavior:\"smooth\"});// Update activeId immediately on click.\nsetActiveId(id);}};return /*#__PURE__*/_jsxs(\"div\",{ref:tocRef,style:{position:\"sticky\",top:stickyTop,backgroundColor:\"#F5EFE4\",padding:\"16px\",borderRadius:\"14px\",fontFamily:\"Geist, sans-serif\",...containerStyle},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:\"12px\",textTransform:\"uppercase\",fontWeight:600,color:\"#363126\",marginBottom:\"8px\",letterSpacing:\"0.05em\"},children:\"Table of Contents\"}),/*#__PURE__*/_jsx(\"hr\",{style:{border:\"none\",borderTop:\"1px solid #E0D9CE\",margin:\"8px 0 16px\"}}),/*#__PURE__*/_jsx(\"ul\",{style:{listStyle:\"none\",padding:0,margin:0},children:headings.map(heading=>/*#__PURE__*/_jsx(\"li\",{style:{marginBottom:\"8px\"},children:/*#__PURE__*/_jsx(\"a\",{href:`#${heading.id}`,onClick:e=>handleSmoothScroll(e,heading.id),style:{display:\"block\",fontSize:\"14px\",textDecoration:\"none\",color:\"#363126\",fontWeight:activeId===heading.id?\"500\":\"400\",backgroundColor:activeId===heading.id?\"#E0D9CE\":\"transparent\",padding:\"8px\",borderRadius:\"4px\",transition:\"background-color 0.2s ease\"},children:heading.text})},heading.id))})]});}TableOfContents.defaultProps={headingTags:[\"h2\",\"h3\"],stickyTop:\"20px\",containerStyle:{},offset:\"100\"};addPropertyControls(TableOfContents,{headingTags:{type:ControlType.Array,title:\"Heading Tags\",control:{type:ControlType.String},defaultValue:[\"h2\",\"h3\"]},stickyTop:{type:ControlType.String,title:\"Sticky Top\",defaultValue:\"20px\"},containerStyle:{type:ControlType.Object,title:\"Container Style\",defaultValue:{}},offset:{type:ControlType.Number,title:\"Scroll Offset\",defaultValue:100}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TableOfContents\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./NEW_TOC.map"],
  "mappings": "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",
  "names": ["TableOfContents", "headingTags", "stickyTop", "containerStyle", "offset", "headings", "setHeadings", "ye", "activeId", "setActiveId", "observerRef", "pe", "tocRef", "ue", "foundHeadings", "heading", "index", "id", "handleIntersections", "entries", "visibleEntries", "entry", "b", "newActiveId", "prevActiveId", "observerOptions", "el", "handleSmoothScroll", "e", "element", "offsetPosition", "window", "u", "p", "addPropertyControls", "ControlType"]
}
