{"version":3,"file":"TableOfContent.BBsJCC4T.mjs","names":["useState","useMemo"],"sources":["https:/framerusercontent.com/modules/xNEHz4J8k21ol7bFho7R/vu1CZwE385gj29Pqa1I4/TableOfContent.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useEffect,useMemo,useState}from\"react\";/**\n * Table of Content\n *\n * Reads H1–H6 headings inside the element with id === `sectionId`\n * and renders an auto-highlighting, click-to-scroll table of contents.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerIntrinsicWidth 240\n * @framerIntrinsicHeight 300\n */export default function TableOfContent(props){const{sectionId,fontColor,activeColor,hoverColor,spacing,indentation,yOffset,activeFontWeight,showH1,showH2,showH3,showH4,showH5,showH6,h1Font,h2Font,h3Font,h4Font,h5Font,h6Font,style}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const[headings,setHeadings]=useState([]);const[activeId,setActiveId]=useState(null);const[hoverId,setHoverId]=useState(null);const enabledLevels=useMemo(()=>{const s=new Set;if(showH1)s.add(1);if(showH2)s.add(2);if(showH3)s.add(3);if(showH4)s.add(4);if(showH5)s.add(5);if(showH6)s.add(6);return s;},[showH1,showH2,showH3,showH4,showH5,showH6]);const fontStyleFor=lvl=>{const f=[null,h1Font,h2Font,h3Font,h4Font,h5Font,h6Font][lvl];if(!f)return{};// ControlType.Font returns an object like { fontFamily, fontSize, ... }\nreturn typeof f===\"string\"?{fontFamily:f}:f;};useEffect(()=>{if(isCanvas){setHeadings([{id:\"_p1\",level:2,text:\"Section heading\"},{id:\"_p2\",level:3,text:\"Subsection\"},{id:\"_p3\",level:3,text:\"Subsection\"},{id:\"_p4\",level:2,text:\"Section heading\"}]);return;}const root=sectionId&&document.getElementById(sectionId)||document.body;if(!root)return;const selector=[...enabledLevels].map(l=>`h${l}`).join(\",\");if(!selector){setHeadings([]);return;}const collect=()=>{const nodes=Array.from(root.querySelectorAll(selector));const list=nodes.map((el,i)=>{if(!el.id){const slug=(el.textContent||`heading-${i}`).toLowerCase().trim().replace(/[^\\w\\s-]/g,\"\").replace(/\\s+/g,\"-\").slice(0,60)||`heading-${i}`;let unique=slug;let n=1;while(document.getElementById(unique)){unique=`${slug}-${n++}`;}el.id=unique;}return{id:el.id,level:Number(el.tagName.substring(1)),text:el.textContent||\"\",el};});setHeadings(list);return list;};const list=collect();const mo=new MutationObserver(()=>collect());mo.observe(root,{childList:true,subtree:true,characterData:true});const io=new IntersectionObserver(entries=>{const visible=entries.filter(e=>e.isIntersecting).sort((a,b)=>a.target.getBoundingClientRect().top-b.target.getBoundingClientRect().top);if(visible[0]){setActiveId(visible[0].target.id);}},{rootMargin:`-${Math.max(0,yOffset)}px 0px -70% 0px`,threshold:0});list.forEach(h=>h.el&&io.observe(h.el));return()=>{io.disconnect();mo.disconnect();};},[sectionId,enabledLevels,yOffset,isCanvas]);const handleClick=(e,h)=>{if(isCanvas)return;e.preventDefault();const el=document.getElementById(h.id);if(!el)return;const top=el.getBoundingClientRect().top+window.scrollY-(yOffset||0);window.scrollTo({top,behavior:\"smooth\"});setActiveId(h.id);if(history.replaceState){history.replaceState(null,\"\",`#${h.id}`);}};return /*#__PURE__*/_jsxs(\"nav\",{style:{display:\"flex\",flexDirection:\"column\",gap:spacing,width:\"100%\",...style},children:[headings.map(h=>{const isActive=h.id===activeId;const isHover=h.id===hoverId;const color=isActive?activeColor:isHover?hoverColor:fontColor;return /*#__PURE__*/_jsx(\"a\",{href:`#${h.id}`,onClick:e=>handleClick(e,h),onMouseEnter:()=>setHoverId(h.id),onMouseLeave:()=>setHoverId(null),style:{display:\"block\",paddingLeft:(h.level-1)*(indentation||0),color,fontWeight:isActive?activeFontWeight:\"normal\",textDecoration:\"none\",transition:\"color 200ms ease, font-weight 200ms ease\",cursor:\"pointer\",lineHeight:1.4,...fontStyleFor(h.level)},children:h.text},h.id);}),headings.length===0&&isCanvas&&/*#__PURE__*/_jsx(\"span\",{style:{color:fontColor,opacity:.6,fontSize:12},children:\"Preview to see it in effect\"})]});}TableOfContent.defaultProps={sectionId:\"post\",fontColor:\"#A0A4B1\",activeColor:\"#4166C5\",hoverColor:\"#4166C5\",spacing:12,indentation:0,yOffset:0,activeFontWeight:\"normal\",showH1:false,showH2:true,showH3:false,showH4:false,showH5:false,showH6:false};addPropertyControls(TableOfContent,{sectionId:{type:ControlType.String,title:\"Section ID\",defaultValue:\"post\",placeholder:\"post\"},fontColor:{type:ControlType.Color,title:\"Font Color\",defaultValue:\"#A0A4B1\"},activeColor:{type:ControlType.Color,title:\"Active Color\",defaultValue:\"#4166C5\"},hoverColor:{type:ControlType.Color,title:\"On Hover Color\",defaultValue:\"#4166C5\"},spacing:{type:ControlType.Number,title:\"Spacing\",defaultValue:12,min:0,max:80,step:1,displayStepper:true},indentation:{type:ControlType.Number,title:\"Indentation\",defaultValue:0,min:0,max:60,step:1,displayStepper:true},yOffset:{type:ControlType.Number,title:\"Y Offset\",defaultValue:0,min:0,max:400,step:1,displayStepper:true},activeFontWeight:{type:ControlType.Enum,title:\"Active Font\",options:[\"normal\",\"500\",\"600\",\"bold\",\"800\"],optionTitles:[\"Normal\",\"Medium\",\"Semibold\",\"Bold\",\"Extrabold\"],defaultValue:\"normal\"},showH1:{type:ControlType.Boolean,title:\"Show H1\",defaultValue:false,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:false,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:\"basic\"},h2Font:{type:ControlType.Font,title:\"H2 Font\",controls:\"basic\"},h3Font:{type:ControlType.Font,title:\"H3 Font\",controls:\"basic\"},h4Font:{type:ControlType.Font,title:\"H4 Font\",controls:\"basic\"},h5Font:{type:ControlType.Font,title:\"H5 Font\",controls:\"basic\"},h6Font:{type:ControlType.Font,title:\"H6 Font\",controls:\"basic\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TableOfContent\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"240\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"300\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TableOfContent.map"],"mappings":"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"}