{"version":3,"file":"PostContentTree.CDH2lyCT.mjs","names":["useState","useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/N1JsBuu68t1CQi1cOwEx/asnpi3jI8olYCLFS6x0C/PostContentTree.js"],"sourcesContent":["// Post Content Tree - A sticky table-of-contents sidebar component for CMS blog posts\n// Dynamically extracts H4 headings from CMS rich text content field \"Conteúdo\"\n// Displays clickable section links that smoothly scroll to article sections\n// Tracks active section while scrolling and highlights the current item\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useEffect,useState,useCallback,useRef,startTransition}from\"react\";/**\n * Post Content Tree\n *\n * @framerIntrinsicWidth 280\n * @framerIntrinsicHeight 400\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight auto\n */export default function PostContentTree(props){const{titleLabel=\"Neste Artigo\",showTitle=true,headingSelector=\"h4\",contentRootSelector=\"\",labelColor=\"#000000\",itemTextColor=\"#666666\",activeItemTextColor=\"#000000\",hoverItemTextColor=\"#000000\",dividerColor=\"#EEEEEE\",labelFont,itemFont,itemSpacing=16,sectionPaddingTop=24,sectionPaddingBottom=24,borderOpacity=1,activeIndicatorOpacity=1,stickyTop=100,scrollOffset=100,smoothScroll=true,showDividers=true,maxWidth=280,mobileDisplay=\"collapsible\",debugMode=false,uppercaseItems=false}=props;const[activeId,setActiveId]=useState(null);const[isMobile,setIsMobile]=useState(false);const[items,setItems]=useState([]);const[debugInfo,setDebugInfo]=useState(\"\");const observerRef=useRef(null);const sectionsRef=useRef(new Map);const mutationObserverRef=useRef(null);const componentRef=useRef(null);const headingsFoundRef=useRef(false);const assignedIdsRef=useRef(new Set);const isClickScrollingRef=useRef(false);// Generate slug from text\nconst generateSlug=useCallback(text=>{return text.toLowerCase().normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g,\"\")// Remove accents\n.replace(/[^\\w\\s-]/g,\"\")// Remove special characters\n.replace(/\\s+/g,\"-\")// Replace spaces with hyphens\n.replace(/-+/g,\"-\")// Replace multiple hyphens with single\n.trim();},[]);// Extract H4 headings from CMS rich text content\nconst extractHeadings=useCallback(()=>{if(typeof window===\"undefined\")return;// Stop scanning if we've already found headings successfully\nif(headingsFoundRef.current&&items.length>0)return;let headingElements=null;let contentRoot=null;let detectionMethod=\"\";// Strategy 1: Use provided contentRootSelector\nif(contentRootSelector&&contentRootSelector.trim()!==\"\"){try{contentRoot=document.querySelector(contentRootSelector);if(contentRoot){headingElements=contentRoot.querySelectorAll(headingSelector);detectionMethod=`Custom selector: ${contentRootSelector}`;}}catch(e){// Invalid selector, continue to fallback\n}}// Strategy 2: Automatic detection - find nearest article content container\nif(!headingElements||headingElements.length===0){// Try to find the component's position in the DOM\nif(componentRef.current){// Look for sibling or nearby content containers\nlet current=componentRef.current.parentElement;// Walk up the DOM tree to find a common container\nwhile(current&&!contentRoot){// Look for article content containers within this level\nconst candidates=[current.querySelector(\"article\"),current.querySelector(\"main\"),current.querySelector(\"[role='main']\"),current.querySelector(\".post-content\"),current.querySelector(\".article-content\"),current.querySelector(\".content\"),// Look for rich text containers (Framer CMS often uses these)\n...Array.from(current.querySelectorAll(\"[data-framer-component-type]\")).filter(el=>{// Filter for elements that look like rich text content\nconst text=el.textContent||\"\";return text.length>200// Likely article content if substantial text\n;})];for(const candidate of candidates){if(candidate&&candidate!==componentRef.current&&!componentRef.current.contains(candidate)){const foundHeadings=candidate.querySelectorAll(headingSelector);if(foundHeadings.length>0){contentRoot=candidate;headingElements=foundHeadings;detectionMethod=`Auto-detected: ${candidate.tagName}${candidate.className?\".\"+candidate.className.split(\" \")[0]:\"\"}`;break;}}}if(!contentRoot){current=current.parentElement;}}}}// Strategy 3: Fallback - search entire document but exclude sidebar\nif(!headingElements||headingElements.length===0){const allHeadings=document.querySelectorAll(headingSelector);const filteredHeadings=[];allHeadings.forEach(heading=>{// Exclude headings inside this component\nif(componentRef.current&&!componentRef.current.contains(heading)){filteredHeadings.push(heading);}});if(filteredHeadings.length>0){headingElements=filteredHeadings;detectionMethod=`Fallback: all ${headingSelector} elements on page`;}}const extractedItems=[];if(headingElements&&headingElements.length>0){headingElements.forEach(heading=>{const text=heading.textContent?.trim()||\"\";if(!text)return;// Use existing id or generate one\nlet id=heading.id;if(!id){id=generateSlug(text);// Only assign id if we haven't already done so\nif(!assignedIdsRef.current.has(id)){heading.id=id;assignedIdsRef.current.add(id);}}else{assignedIdsRef.current.add(id);}extractedItems.push({label:text,targetId:id});});}// Only update state if items have changed\nif(extractedItems.length>0){const itemsChanged=extractedItems.length!==items.length||extractedItems.some((item,index)=>!items[index]||item.label!==items[index].label||item.targetId!==items[index].targetId);if(itemsChanged){startTransition(()=>setItems(extractedItems));headingsFoundRef.current=true;// Disconnect MutationObserver once we've found headings\nif(mutationObserverRef.current){mutationObserverRef.current.disconnect();mutationObserverRef.current=null;}}}if(debugMode){const debugMessage=`Detection: ${detectionMethod||\"none\"}\nFound: ${extractedItems.length} ${headingSelector} elements\nHeadings: ${extractedItems.map(item=>item.label).join(\", \")||\"none\"}`;startTransition(()=>setDebugInfo(debugMessage));}},[headingSelector,contentRootSelector,generateSlug,debugMode,items]);// Extract headings on mount with retry logic for async CMS content\nuseEffect(()=>{if(typeof window===\"undefined\")return;// Initial extraction after a brief delay\nconst initialTimeout=setTimeout(()=>{extractHeadings();},100);// Retry a few times to catch async-loaded content\nconst retryTimeouts=[];const retryDelays=[500,1e3,2e3];retryDelays.forEach(delay=>{const timeout=window.setTimeout(()=>{// Only retry if we haven't found headings yet\nif(!headingsFoundRef.current){extractHeadings();}},delay);retryTimeouts.push(timeout);});// Set up MutationObserver to watch for content changes\n// Only if we haven't found headings yet\nif(!headingsFoundRef.current){mutationObserverRef.current=new MutationObserver(()=>{if(!headingsFoundRef.current){extractHeadings();}});mutationObserverRef.current.observe(document.body,{childList:true,subtree:true});}return()=>{clearTimeout(initialTimeout);retryTimeouts.forEach(timeout=>clearTimeout(timeout));if(mutationObserverRef.current){mutationObserverRef.current.disconnect();}};},[extractHeadings]);// Detect mobile viewport\nuseEffect(()=>{if(typeof window===\"undefined\")return;const checkMobile=()=>{startTransition(()=>setIsMobile(window.innerWidth<768));};checkMobile();window.addEventListener(\"resize\",checkMobile);return()=>window.removeEventListener(\"resize\",checkMobile);},[]);// Handle smooth scroll to section\nconst handleClick=useCallback(targetId=>{if(typeof window===\"undefined\")return;// Normalize targetId (remove leading # if present)\nconst cleanId=targetId.startsWith(\"#\")?targetId.slice(1):targetId;const targetElement=document.getElementById(cleanId);if(!targetElement)return;// Set flag to prevent IntersectionObserver from interfering\nisClickScrollingRef.current=true;// Update active state immediately\nstartTransition(()=>setActiveId(cleanId));// Manual scroll calculation to account for fixed header\n// Apply additional 50px correction to ensure content is fully visible\nconst finalOffset=scrollOffset+50;const elementTop=targetElement.getBoundingClientRect().top+window.scrollY;const finalPosition=elementTop-finalOffset;if(smoothScroll){window.scrollTo({top:finalPosition,behavior:\"smooth\"});}else{window.scrollTo({top:finalPosition,behavior:\"auto\"});}// Re-enable IntersectionObserver after scroll completes\n// Use longer timeout for smooth scroll to ensure it's finished\nsetTimeout(()=>{isClickScrollingRef.current=false;},smoothScroll?1e3:100);},[scrollOffset,smoothScroll]);// Set up IntersectionObserver to track active section\nuseEffect(()=>{if(typeof window===\"undefined\")return;if(items.length===0)return;// Clean up previous observer\nif(observerRef.current){observerRef.current.disconnect();}// Clear sections map\nsectionsRef.current.clear();// Find all target sections\nitems.forEach(item=>{const cleanId=item.targetId.startsWith(\"#\")?item.targetId.slice(1):item.targetId;const element=document.getElementById(cleanId);if(element){sectionsRef.current.set(cleanId,element);}});if(sectionsRef.current.size===0)return;// Create intersection observer with passive observation\nconst observerOptions={rootMargin:`-${scrollOffset}px 0px -50% 0px`,threshold:[0,.25,.5,.75,1]};observerRef.current=new IntersectionObserver(entries=>{// Skip updates if user just clicked a link\nif(isClickScrollingRef.current)return;// Use requestAnimationFrame to avoid layout thrashing\nrequestAnimationFrame(()=>{// Find the most visible section near the top\nlet topMostEntry=null;let topMostPosition=Number.POSITIVE_INFINITY;entries.forEach(entry=>{if(entry.isIntersecting){const rect=entry.boundingClientRect;const distanceFromTop=Math.abs(rect.top-scrollOffset);if(distanceFromTop<topMostPosition){topMostPosition=distanceFromTop;topMostEntry=entry;}}});if(topMostEntry){const id=topMostEntry.target.id;// Only update if changed\nsetActiveId(prevId=>prevId===id?prevId:id);}});},observerOptions);// Observe all sections\nsectionsRef.current.forEach(element=>{observerRef.current?.observe(element);});return()=>{if(observerRef.current){observerRef.current.disconnect();}};},[items,scrollOffset]);// Filter enabled items\nconst enabledItems=items;// If no items found, show minimal empty state or debug info\nif(enabledItems.length===0){if(debugMode){return /*#__PURE__*/_jsx(\"div\",{ref:componentRef,style:{width:\"100%\",maxWidth:`${maxWidth}px`,minHeight:\"100px\",backgroundColor:\"#FFF9E6\",border:\"1px solid #FFD700\",borderRadius:\"4px\",position:\"relative\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",padding:\"24px\"},children:/*#__PURE__*/_jsx(\"span\",{style:{...itemFont,color:\"#000\",fontSize:\"12px\",whiteSpace:\"pre-wrap\",textAlign:\"left\"},children:debugInfo||\"Searching for h3 elements...\"})});}// Neutral empty state - just render nothing visible\nreturn /*#__PURE__*/_jsx(\"div\",{ref:componentRef,style:{width:\"100%\",maxWidth:`${maxWidth}px`,minHeight:\"1px\",backgroundColor:\"transparent\",position:\"relative\"}});}// Handle mobile display\nif(isMobile){if(mobileDisplay===\"hidden\"){return null;}// Mobile: always show full list, no collapsible behavior\nreturn /*#__PURE__*/_jsxs(\"nav\",{ref:componentRef,style:{width:\"100%\",backgroundColor:\"transparent\",position:\"relative\",paddingLeft:\"16px\",paddingRight:\"16px\"},\"aria-label\":\"Table of contents\",children:[debugMode&&debugInfo&&/*#__PURE__*/_jsx(\"div\",{style:{backgroundColor:\"#FFF9E6\",border:\"1px solid #FFD700\",borderRadius:\"4px\",padding:\"8px\",marginBottom:\"16px\",fontSize:\"11px\",whiteSpace:\"pre-wrap\",color:\"#000\"},children:debugInfo}),showTitle&&/*#__PURE__*/_jsx(\"div\",{style:{...labelFont,color:labelColor,paddingTop:`${Math.max(16,sectionPaddingTop)}px`,paddingBottom:`${Math.max(12,sectionPaddingBottom)}px`},children:titleLabel}),/*#__PURE__*/_jsx(\"div\",{style:{paddingBottom:`${Math.max(16,sectionPaddingBottom)}px`},children:enabledItems.map((item,index)=>{const cleanId=item.targetId.startsWith(\"#\")?item.targetId.slice(1):item.targetId;const isActive=activeId===cleanId;return /*#__PURE__*/_jsxs(\"div\",{children:[showDividers&&index>0&&/*#__PURE__*/_jsx(\"div\",{style:{height:\"1px\",backgroundColor:dividerColor,opacity:borderOpacity,marginTop:`${Math.max(12,itemSpacing)}px`,marginBottom:`${Math.max(12,itemSpacing)}px`}}),/*#__PURE__*/_jsx(\"a\",{href:`#${cleanId}`,onClick:e=>{e.preventDefault();handleClick(item.targetId);},style:{display:\"block\",textDecoration:\"none\",cursor:\"pointer\",padding:\"8px 0\",minHeight:\"44px\",alignItems:\"center\",...itemFont,color:isActive?activeItemTextColor:itemTextColor,opacity:isActive?activeIndicatorOpacity:1,transition:\"color 0.2s ease, opacity 0.2s ease\",textTransform:uppercaseItems?\"uppercase\":\"none\"},\"aria-current\":isActive?\"location\":undefined,children:item.label})]},index);})})]});}// Desktop display\nconst containerStyle={width:\"100%\",maxWidth:`${maxWidth}px`,backgroundColor:\"transparent\",position:\"sticky\",top:`${stickyTop}px`};return /*#__PURE__*/_jsxs(\"nav\",{ref:componentRef,style:containerStyle,\"aria-label\":\"Table of contents\",children:[debugMode&&debugInfo&&/*#__PURE__*/_jsx(\"div\",{style:{backgroundColor:\"#FFF9E6\",border:\"1px solid #FFD700\",borderRadius:\"4px\",padding:\"8px\",marginBottom:\"16px\",fontSize:\"11px\",whiteSpace:\"pre-wrap\",color:\"#000\"},children:debugInfo}),showTitle&&/*#__PURE__*/_jsx(\"div\",{style:{...labelFont,color:labelColor,paddingTop:`${sectionPaddingTop}px`,paddingBottom:`${sectionPaddingBottom}px`},children:titleLabel}),/*#__PURE__*/_jsx(\"div\",{children:enabledItems.map((item,index)=>{const cleanId=item.targetId.startsWith(\"#\")?item.targetId.slice(1):item.targetId;const isActive=activeId===cleanId;return /*#__PURE__*/_jsxs(\"div\",{children:[showDividers&&index>0&&/*#__PURE__*/_jsx(\"div\",{style:{height:\"1px\",backgroundColor:dividerColor,opacity:borderOpacity,marginBottom:`${itemSpacing}px`}}),/*#__PURE__*/_jsx(\"a\",{href:`#${cleanId}`,onClick:e=>{e.preventDefault();handleClick(item.targetId);},style:{display:\"block\",textDecoration:\"none\",cursor:\"pointer\",marginBottom:index<enabledItems.length-1?`${itemSpacing}px`:0,...itemFont,color:isActive?activeItemTextColor:itemTextColor,opacity:isActive?activeIndicatorOpacity:1,transition:\"color 0.2s ease, opacity 0.2s ease\",textTransform:uppercaseItems?\"uppercase\":\"none\"},\"aria-current\":isActive?\"location\":undefined,onMouseEnter:e=>{if(!isActive){e.currentTarget.style.color=hoverItemTextColor;e.currentTarget.style.opacity=\"0.7\";}},onMouseLeave:e=>{if(!isActive){e.currentTarget.style.color=itemTextColor;e.currentTarget.style.opacity=\"1\";}},children:item.label})]},index);})})]});}addPropertyControls(PostContentTree,{titleLabel:{type:ControlType.String,title:\"Title Label\",defaultValue:\"Neste Artigo\"},showTitle:{type:ControlType.Boolean,title:\"Show Title\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},headingSelector:{type:ControlType.String,title:\"Heading Selector\",defaultValue:\"h4\",description:\"HTML heading tag to extract (e.g., h4)\"},contentRootSelector:{type:ControlType.String,title:\"Content Root Selector\",defaultValue:\"\",description:\"Optional CSS selector for article container (leave empty for auto-detect)\"},debugMode:{type:ControlType.Boolean,title:\"Debug Mode\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},labelColor:{type:ControlType.Color,title:\"Label Color\",defaultValue:\"#000000\"},itemTextColor:{type:ControlType.Color,title:\"Item Text Color\",defaultValue:\"#666666\"},activeItemTextColor:{type:ControlType.Color,title:\"Active Item Color\",defaultValue:\"#000000\"},hoverItemTextColor:{type:ControlType.Color,title:\"Hover Item Color\",defaultValue:\"#000000\"},dividerColor:{type:ControlType.Color,title:\"Divider Color\",defaultValue:\"#EEEEEE\"},labelFont:{type:ControlType.Font,title:\"Label Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"12px\",variant:\"Semibold\",letterSpacing:\"0.05em\",lineHeight:\"1.2em\"}},itemFont:{type:ControlType.Font,title:\"Item Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"14px\",variant:\"Regular\",letterSpacing:\"-0.01em\",lineHeight:\"1.4em\"}},itemSpacing:{type:ControlType.Number,title:\"Item Spacing\",defaultValue:16,min:0,max:48,step:1,unit:\"px\"},sectionPaddingTop:{type:ControlType.Number,title:\"Padding Top\",defaultValue:24,min:0,max:64,step:1,unit:\"px\"},sectionPaddingBottom:{type:ControlType.Number,title:\"Padding Bottom\",defaultValue:24,min:0,max:64,step:1,unit:\"px\"},borderOpacity:{type:ControlType.Number,title:\"Border Opacity\",defaultValue:1,min:0,max:1,step:.1},activeIndicatorOpacity:{type:ControlType.Number,title:\"Active Opacity\",defaultValue:1,min:0,max:1,step:.1},stickyTop:{type:ControlType.Number,title:\"Sticky Top\",defaultValue:100,min:0,max:500,step:10,unit:\"px\"},scrollOffset:{type:ControlType.Number,title:\"Scroll Offset\",defaultValue:100,min:0,max:500,step:10,unit:\"px\"},smoothScroll:{type:ControlType.Boolean,title:\"Smooth Scroll\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},showDividers:{type:ControlType.Boolean,title:\"Show Dividers\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},maxWidth:{type:ControlType.Number,title:\"Max Width\",defaultValue:280,min:200,max:500,step:10,unit:\"px\"},mobileDisplay:{type:ControlType.Enum,title:\"Mobile Display\",options:[\"hidden\",\"collapsible\",\"normal\"],optionTitles:[\"Hidden\",\"Collapsible\",\"Normal\"],defaultValue:\"collapsible\"},uppercaseItems:{type:ControlType.Boolean,title:\"Uppercase Items\",defaultValue:false,enabledTitle:\"Uppercase\",disabledTitle:\"Normal\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"PostContentTree\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"400\",\"framerIntrinsicWidth\":\"280\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./PostContentTree.map"],"mappings":"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"}