{"version":3,"file":"TableOfContent.C7XW8VCM.mjs","names":["useState","useRef","__esmMin","init_npm_react_18_3_1","window","init_ssg_sandbox_shims","ce","init_jsx_runtime","c","_e","de","init_framer_CaDWdxiz","addPropertyControls","ControlType","RenderTarget","Table_of_Content","headers","setHeaders","activeId","setActiveId","firstHeadingLevel","setFirstHeadingLevel","ignoreNextScrollEvent","scrollTimeoutRef","isCanvas","mockHeaders","sectionElement","props","headingElements","mapped","element","index","onScroll","currentSectionId","header","getStyle","visible","h","baseLevel","indentPx","headerFont","handleClick","headerId","y","checkIfScrollFinished","isScrolled","rect","checkScroll","init_TableOfContent"],"sources":["https:/framerusercontent.com/modules/q6TPcm1rVRPb4ymPsf0M/E8qdfSg7caQS5GXaZ2Za/TableOfContent.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useState,useRef}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * @framerDisableUnlink\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerIntrinsicWidth 600\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicHeight 400\n */export default function Table_of_Content(props){const[headers,setHeaders]=useState([]);const[activeId,setActiveId]=useState(\"\");const[firstHeadingLevel,setFirstHeadingLevel]=useState(null);const ignoreNextScrollEvent=useRef(false);const scrollTimeoutRef=useRef(null);const isCanvas=RenderTarget.current()===RenderTarget.canvas;const mockHeaders=[{id:\"h1-sample\",text:\"This is h1\",level:1},{id:\"h2-sample-1\",text:\"This is h2\",level:2},{id:\"h3-sample-1\",text:\"This is h3\",level:3},{id:\"h3-sample-2\",text:\"This is h3\",level:3},{id:\"h2-sample-2\",text:\"This is h2\",level:2},{id:\"h4-sample\",text:\"This is h4\",level:4},{id:\"h5-sample\",text:\"This is h5\",level:5},{id:\"h6-sample\",text:\"This is h6\",level:6}];useEffect(()=>{if(isCanvas){setHeaders(mockHeaders);setFirstHeadingLevel(1);setActiveId(\"h2-sample-1\");return;}const sectionElement=document.getElementById(props.section_id)||document.body;const headingElements=Array.from(sectionElement.querySelectorAll(\"h1, h2, h3, h4, h5, h6\"));if(headingElements.length>0&&firstHeadingLevel===null){setFirstHeadingLevel(parseInt(headingElements[0].tagName[1],10));}const mapped=headingElements.map((element,index)=>{if(!element.id){element.id=`header-${index}`;}return{id:element.id,text:element.innerText,level:parseInt(element.tagName[1],10)};});setHeaders(mapped);},[props.section_id,firstHeadingLevel,isCanvas]);useEffect(()=>{if(isCanvas)return;const onScroll=()=>{if(ignoreNextScrollEvent.current){ignoreNextScrollEvent.current=false;return;}let currentSectionId=\"\";headers.filter(header=>props[`showH${header.level}`]!==false).forEach(header=>{const element=document.getElementById(header.id);if(!element)return;const scrollPosition=element.getBoundingClientRect().top+window.scrollY;if(scrollPosition<window.scrollY+props.yOffset+5){currentSectionId=header.id;}});setActiveId(currentSectionId);};window.addEventListener(\"scroll\",onScroll);return()=>window.removeEventListener(\"scroll\",onScroll);},[headers,props.yOffset,props,isCanvas]);useEffect(()=>{return()=>{if(scrollTimeoutRef.current)clearTimeout(scrollTimeoutRef.current);};},[]);const getStyle=header=>{// compute base level from visible headers to avoid negative indentation\nconst visible=headers.filter(h=>props[`showH${h.level}`]!==false);const baseLevel=visible.length>0?Math.min(...visible.map(h=>h.level)):firstHeadingLevel??1;const depth=Math.max(0,header.level-baseLevel)// never negative\n;const indentPx=depth*props.indentation;const headerFont=props[`h${header.level}Font`]||{};return{display:\"block\",boxSizing:\"border-box\",width:\"100%\",maxWidth:\"100%\",// padding instead of margin to keep anchors inside the container box\npaddingLeft:`${indentPx}px`,...headerFont,color:header.id===activeId?props.activeColor:props.fontColor,fontWeight:header.id===activeId?props.activeFontWeight:headerFont.fontWeight||\"normal\",textDecoration:\"none\",marginBottom:`${props.spacing}px`,// overflow guards: wrap instead of spilling\noverflow:\"hidden\",overflowWrap:\"anywhere\",wordBreak:\"break-word\",whiteSpace:\"normal\"};};const handleClick=headerId=>{if(isCanvas)return;ignoreNextScrollEvent.current=true;const element=document.getElementById(headerId);if(element){const y=element.getBoundingClientRect().top+window.pageYOffset-props.yOffset;window.scrollTo({top:y,behavior:\"smooth\"});checkIfScrollFinished(headerId);}};const checkIfScrollFinished=headerId=>{if(scrollTimeoutRef.current){clearTimeout(scrollTimeoutRef.current);}const isScrolled=()=>{const element=document.getElementById(headerId);if(element){const rect=element.getBoundingClientRect();return Math.abs(rect.top-props.yOffset)<=1;}return false;};const checkScroll=()=>{if(isScrolled()){setActiveId(headerId);}else{scrollTimeoutRef.current=setTimeout(()=>{requestAnimationFrame(checkScroll);},10);}};checkScroll();};return /*#__PURE__*/_jsx(\"div\",{style:{overflowX:\"hidden\",width:\"100%\"},children:headers.filter(header=>props[`showH${header.level}`]!==false).map(header=>/*#__PURE__*/_jsx(\"a\",{href:`#${header.id}`,style:getStyle(header),onMouseOver:e=>e.currentTarget.style.color=props.onHoverColor,onMouseOut:e=>{e.currentTarget.style.color=header.id===activeId?props.activeColor:props.fontColor;e.currentTarget.style.fontWeight=header.id===activeId?props.activeFontWeight:props[`h${header.level}Font`]?.fontWeight||\"normal\";},onClick:e=>{e.preventDefault();handleClick(header.id);},children:header.text},header.id))});}Table_of_Content.defaultProps={section_id:\"\",fontColor:\"#000000\",activeColor:\"#FF0000\",onHoverColor:\"#00FF00\",spacing:8,indentation:10,yOffset:0,activeFontWeight:\"bold\"};addPropertyControls(Table_of_Content,{section_id:{type:ControlType.String,title:\"Section ID\"},fontColor:{type:ControlType.Color,title:\"Font Color\"},activeColor:{type:ControlType.Color,title:\"Active Color\"},onHoverColor:{type:ControlType.Color,title:\"On Hover Color\"},spacing:{type:ControlType.Number,title:\"Spacing\"},indentation:{type:ControlType.Number,title:\"Indentation\"},yOffset:{type:ControlType.Number,title:\"Y Offset\",min:0,max:200,step:1},activeFontWeight:{type:ControlType.Enum,title:\"Active Font Weight\",options:[\"normal\",\"bold\",\"bolder\",\"lighter\",\"100\",\"200\",\"300\",\"400\",\"500\",\"600\",\"700\",\"800\",\"900\"],defaultValue:\"bold\"},showH1:{type:ControlType.Boolean,title:\"Show H1\",defaultValue:true},showH2:{type:ControlType.Boolean,title:\"Show H2\",defaultValue:true},showH3:{type:ControlType.Boolean,title:\"Show H3\",defaultValue:true},showH4:{type:ControlType.Boolean,title:\"Show H4\",defaultValue:true},showH5:{type:ControlType.Boolean,title:\"Show H5\",defaultValue:true},showH6:{type:ControlType.Boolean,title:\"Show H6\",defaultValue:true},h1Font:{type:ControlType.Font,controls:\"extended\",title:\"H1 Font\"},h2Font:{type:ControlType.Font,controls:\"extended\",title:\"H2 Font\"},h3Font:{type:ControlType.Font,controls:\"extended\",title:\"H3 Font\"},h4Font:{type:ControlType.Font,controls:\"extended\",title:\"H4 Font\"},h5Font:{type:ControlType.Font,controls:\"extended\",title:\"H5 Font\"},h6Font:{type:ControlType.Font,controls:\"extended\",title:\"H6 Font\",description:\"Preview to see it in effect \\n\\nv1.8 \\n[via SegmentUI](https://www.segmentUI.com)\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Table_of_Content\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"600\",\"framerIntrinsicHeight\":\"400\",\"framerDisableUnlink\":\"*\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TableOfContent.map"],"mappings":"A,8MAOG,SAAwBe,EAAiB,EAAM,CAAC,GAAK,CAACC,EAAQC,GAAYjB,EAAS,CAAC,CAAC,EAAO,CAACkB,EAASC,GAAanB,EAAS,EAAE,EAAO,CAACoB,EAAkBC,GAAsBrB,EAAS,IAAI,EAAQsB,EAAsBrB,EAAO,EAAK,EAAQsB,EAAiBtB,EAAO,IAAI,EAAQuB,EAASV,EAAa,QAAQ,IAAIA,EAAa,OAAaW,EAAY,CAAC,CAAC,GAAG,YAAY,KAAK,aAAa,MAAM,CAAC,EAAE,CAAC,GAAG,cAAc,KAAK,aAAa,MAAM,CAAC,EAAE,CAAC,GAAG,cAAc,KAAK,aAAa,MAAM,CAAC,EAAE,CAAC,GAAG,cAAc,KAAK,aAAa,MAAM,CAAC,EAAE,CAAC,GAAG,cAAc,KAAK,aAAa,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,KAAK,aAAa,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,KAAK,aAAa,MAAM,CAAC,EAAE,CAAC,GAAG,YAAY,KAAK,aAAa,MAAM,CAAC,CAAC,EAAEnB,MAAc,CAAC,GAAGkB,EAAS,CAACP,EAAWQ,CAAW,EAAEJ,EAAqB,CAAC,EAAEF,EAAY,aAAa,EAAE,MAAO,CAAC,IAAMO,EAAe,SAAS,eAAeC,EAAM,UAAU,GAAG,SAAS,KAAWC,EAAgB,MAAM,KAAKF,EAAe,iBAAiB,wBAAwB,CAAC,EAAKE,EAAgB,OAAO,GAAGR,IAAoB,MAAMC,EAAqB,SAASO,EAAgB,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAG,IAAMC,EAAOD,EAAgB,KAAK,EAAQ,KAAS,AAAgBE,EAAQ,KAAG,UAAUC,IAAe,CAAC,GAAGD,EAAQ,GAAG,KAAKA,EAAQ,UAAU,MAAM,SAASA,EAAQ,QAAQ,GAAG,EAAE,CAAC,EAAG,EAAEb,EAAWY,CAAM,CAAE,EAAE,CAACF,EAAM,WAAWP,EAAkBI,CAAQ,CAAC,EAAElB,MAAc,CAAC,GAAGkB,EAAS,OAAO,IAAMQ,MAAa,CAAC,GAAGV,EAAsB,QAAQ,CAAC,EAAsB,QAAQ,GAAM,MAAO,CAAC,IAAIW,EAAiB,GAAGjB,EAAQ,OAAO,GAAQW,EAAM,QAAQO,EAAO,WAAW,EAAK,CAAC,CAAC,QAAQ,GAAQ,CAAC,IAAMJ,EAAQ,SAAS,eAAeI,EAAO,EAAE,EAAMJ,GAAoCA,EAAQ,sBAAsB,CAAC,CAAC,IAAI1B,EAAO,QAA0BA,EAAO,QAAQuB,EAAM,QAAQ,IAAG,EAAiBO,EAAO,GAAI,CAAC,EAAEf,EAAYc,CAAgB,CAAE,EAA6C,OAA3C7B,EAAO,iBAAiB,SAAS4B,CAAQ,MAAY5B,EAAO,oBAAoB,SAAS4B,CAAQ,CAAE,EAAE,CAAChB,EAAQW,EAAM,QAAQA,EAAMH,CAAQ,CAAC,EAAElB,UAAyB,CAAIiB,EAAiB,SAAQ,aAAaA,EAAiB,OAAO,CAAE,EAAI,CAAC,CAAC,EAAE,IAAMY,EAAS,GAAQ,CAC5jE,IAAMC,EAAQpB,EAAQ,OAAO,GAAGW,EAAM,QAAQU,EAAE,WAAW,EAAK,EAAQC,EAAUF,EAAQ,OAAO,EAAE,KAAK,IAAI,GAAGA,EAAQ,IAAI,GAAGC,EAAE,KAAK,CAAC,EAAEjB,GAAmB,EACpJmB,EADkK,KAAK,IAAI,EAAEL,EAAO,MAAMI,CAC7K,EAAEX,EAAM,YAAkBa,EAAWb,EAAM,IAAIO,EAAO,MAAM,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,QAAQ,UAAU,aAAa,MAAM,OAAO,SAAS,OAC/J,YAAY,GAAGK,EAAS,IAAI,GAAGC,EAAW,MAAMN,EAAO,KAAKhB,EAASS,EAAM,YAAYA,EAAM,UAAU,WAAWO,EAAO,KAAKhB,EAASS,EAAM,iBAAiBa,EAAW,YAAY,SAAS,eAAe,OAAO,aAAa,GAAGb,EAAM,QAAQ,IAClP,SAAS,SAAS,aAAa,WAAW,UAAU,aAAa,WAAW,QAAQ,CAAE,EAAQc,EAAY,GAAU,CAAC,GAAGjB,EAAS,OAAO,EAAsB,QAAQ,GAAK,IAAMM,EAAQ,SAAS,eAAeY,CAAQ,EAAE,GAAGZ,EAAQ,CAAC,IAAMa,EAAEb,EAAQ,sBAAsB,CAAC,CAAC,IAAI1B,EAAO,YAAYuB,EAAM,QAAQvB,EAAO,SAAS,CAAC,IAAIuC,EAAE,SAAS,QAAQ,CAAC,EAAEC,EAAsBF,CAAQ,CAAE,CAAC,EAAQE,EAAsB,GAAU,CAAIrB,EAAiB,SAAS,aAAaA,EAAiB,OAAO,EAAG,IAAMsB,MAAe,CAAC,IAAMf,EAAQ,SAAS,eAAeY,CAAQ,EAAE,GAAGZ,EAAQ,CAAC,IAAMgB,EAAKhB,EAAQ,sBAAsB,EAAE,OAAO,KAAK,IAAIgB,EAAK,IAAInB,EAAM,OAAO,GAAG,CAAE,CAAC,MAAO,EAAM,EAAQoB,MAAgB,CAAIF,EAAW,EAAG1B,EAAYuB,CAAQ,EAAQ,EAAiB,QAAQ,eAAe,CAAC,sBAAsBK,CAAW,CAAE,EAAE,EAAE,CAAG,EAAEA,EAAY,CAAE,EAAE,MAAoB,gBAAK,MAAM,CAAC,MAAM,CAAC,UAAU,SAAS,MAAM,MAAM,EAAE,SAAS/B,EAAQ,OAAO,GAAQW,EAAM,QAAQO,EAAO,WAAW,EAAK,CAAC,CAAC,IAAI,GAAqB,gBAAK,IAAI,CAAC,KAAK,IAAIA,EAAO,KAAK,MAAMC,EAASD,CAAM,EAAE,YAAY,GAAG,EAAE,cAAc,MAAM,MAAMP,EAAM,aAAa,WAAW,GAAG,CAAC,EAAE,cAAc,MAAM,MAAMO,EAAO,KAAKhB,EAASS,EAAM,YAAYA,EAAM,UAAU,EAAE,cAAc,MAAM,WAAWO,EAAO,KAAKhB,EAASS,EAAM,iBAAiBA,EAAM,IAAIO,EAAO,MAAM,MAAM,EAAE,YAAY,QAAS,EAAE,QAAQ,GAAG,CAAC,EAAE,eAAe,EAAEO,EAAYP,EAAO,EAAE,CAAE,EAAE,SAASA,EAAO,IAAI,EAAEA,EAAO,EAAE,CAAC,CAAC,CAAC,CAAE,C,8CAAC,EAAiB,aAAa,CAAC,WAAW,GAAG,UAAU,UAAU,YAAY,UAAU,aAAa,UAAU,QAAQ,EAAE,YAAY,GAAG,QAAQ,EAAE,iBAAiB,MAAM,EAAEtB,EAAoBG,EAAiB,CAAC,WAAW,CAAC,KAAKF,EAAY,OAAO,MAAM,YAAY,EAAE,UAAU,CAAC,KAAKA,EAAY,MAAM,MAAM,YAAY,EAAE,YAAY,CAAC,KAAKA,EAAY,MAAM,MAAM,cAAc,EAAE,aAAa,CAAC,KAAKA,EAAY,MAAM,MAAM,gBAAgB,EAAE,QAAQ,CAAC,KAAKA,EAAY,OAAO,MAAM,SAAS,EAAE,YAAY,CAAC,KAAKA,EAAY,OAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,KAAKA,EAAY,OAAO,MAAM,WAAW,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC,EAAE,iBAAiB,CAAC,KAAKA,EAAY,KAAK,MAAM,qBAAqB,QAAQ,CAAC,SAAS,OAAO,SAAS,UAAU,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,EAAE,aAAa,MAAM,EAAE,OAAO,CAAC,KAAKA,EAAY,QAAQ,MAAM,UAAU,aAAa,EAAI,EAAE,OAAO,CAAC,KAAKA,EAAY,QAAQ,MAAM,UAAU,aAAa,EAAI,EAAE,OAAO,CAAC,KAAKA,EAAY,QAAQ,MAAM,UAAU,aAAa,EAAI,EAAE,OAAO,CAAC,KAAKA,EAAY,QAAQ,MAAM,UAAU,aAAa,EAAI,EAAE,OAAO,CAAC,KAAKA,EAAY,QAAQ,MAAM,UAAU,aAAa,EAAI,EAAE,OAAO,CAAC,KAAKA,EAAY,QAAQ,MAAM,UAAU,aAAa,EAAI,EAAE,OAAO,CAAC,KAAKA,EAAY,KAAK,SAAS,WAAW,MAAM,SAAS,EAAE,OAAO,CAAC,KAAKA,EAAY,KAAK,SAAS,WAAW,MAAM,SAAS,EAAE,OAAO,CAAC,KAAKA,EAAY,KAAK,SAAS,WAAW,MAAM,SAAS,EAAE,OAAO,CAAC,KAAKA,EAAY,KAAK,SAAS,WAAW,MAAM,SAAS,EAAE,OAAO,CAAC,KAAKA,EAAY,KAAK,SAAS,WAAW,MAAM,SAAS,EAAE,OAAO,CAAC,KAAKA,EAAY,KAAK,SAAS,WAAW,MAAM,UAAU,YAAY;;;2CAAmF,CAAC,CAAC,C"}