{"version":3,"file":"TooltipParagraphs.BUI2UIxP.mjs","names":["React.useRef","React.useState","React.useCallback","React.useMemo"],"sources":["https:/framerusercontent.com/modules/iJeuzQKsAyB5F2oIEL9G/chks5VP8yuTQuecwxZ7l/TooltipParagraphs.js"],"sourcesContent":["// Instructions: Create a Framer component that follows the Framer component rules and achieves the user's goal.\n// Goal: A text component with paragraph blocks where specific words/phrases show a tooltip on hover/tap, with fully adjustable text styling and an optional scroll-based text effect.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{createPortal}from\"react-dom\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{motion,useInView,useScroll,useTransform}from\"framer-motion\";function escapeRegExp(input){return input.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\");}function normalizeTooltips(tooltips){const cleaned=(tooltips||[]).map(t=>({target:(t?.target??\"\").trim(),tooltip:(t?.tooltip??\"\").trim()})).filter(t=>t.target.length>0&&t.tooltip.length>0);// Avoid duplicates by target, keep first\nconst seen=new Set;const unique=[];for(const t of cleaned){const key=t.target;if(seen.has(key))continue;seen.add(key);unique.push(t);}// Prefer longer targets first to reduce partial overlaps (e.g. \"New York\" before \"New\")\nunique.sort((a,b)=>b.target.length-a.target.length);return unique;}function buildRegex(tooltips){if(!tooltips.length)return null;const parts=tooltips.map(t=>escapeRegExp(t.target)).filter(Boolean);if(!parts.length)return null;// Match phrases anywhere (case-sensitive). If you need case-insensitive, change to /gi and map by lowercasing.\nreturn new RegExp(`(${parts.join(\"|\")})`,\"g\");}function findTooltipByTarget(tooltips,matched){// tooltips sorted by length desc; exact match expected from regex alternation\nfor(const t of tooltips){if(t.target===matched)return t;}return null;}function TooltipWord(props){const{id,text,tooltip,trigger,isOpen,onOpen,onClose,onToggle,highlightColor,targetTextColor,tooltipBackground,tooltipTextColor,tooltipMaxWidth,tooltipOffset,tooltipRadius,tooltipPaddingV,tooltipPaddingH,tooltipShadow,tooltipFont}=props;const isHover=trigger===\"hover\";const anchorRef=React.useRef(null);const[tip,setTip]=React.useState(null);const updateTipPosition=React.useCallback(()=>{if(typeof window===\"undefined\"||typeof document===\"undefined\")return;const el=anchorRef.current;if(!el)return;const rect=el.getBoundingClientRect();const left=rect.left+rect.width/2;const top=rect.top;React.startTransition(()=>setTip({left,top}));},[]);React.useEffect(()=>{if(!isOpen)return;updateTipPosition();if(typeof window===\"undefined\")return;const onScroll=()=>updateTipPosition();const onResize=()=>updateTipPosition();window.addEventListener(\"scroll\",onScroll,true);window.addEventListener(\"resize\",onResize);return()=>{window.removeEventListener(\"scroll\",onScroll,true);window.removeEventListener(\"resize\",onResize);};},[isOpen,updateTipPosition]);const a11yProps=trigger===\"hover\"?{tabIndex:0,role:\"button\",\"aria-haspopup\":\"dialog\",\"aria-expanded\":isOpen,\"aria-label\":`${text}. Tooltip available.`}:{tabIndex:0,role:\"button\",\"aria-haspopup\":\"dialog\",\"aria-expanded\":isOpen,\"aria-label\":`${text}. Tap to toggle tooltip.`};return /*#__PURE__*/_jsxs(\"span\",{ref:anchorRef,style:{position:\"relative\",display:\"inline\",cursor:\"help\",color:targetTextColor,outline:\"none\",borderBottom:`1px dashed ${highlightColor}`,lineHeight:\"inherit\"},onMouseEnter:isHover?()=>{onOpen(id);}:undefined,onMouseLeave:isHover?()=>{onClose();}:undefined,onFocus:isHover?()=>{onOpen(id);}:undefined,onBlur:isHover?()=>{onClose();}:undefined,onClick:!isHover?e=>{e.preventDefault();e.stopPropagation();onToggle(id);}:undefined,onKeyDown:e=>{if(e.key===\"Enter\"||e.key===\" \"){e.preventDefault();e.stopPropagation();onToggle(id);}if(e.key===\"Escape\"){e.preventDefault();e.stopPropagation();onClose();}},...a11yProps,children:[text,typeof document!==\"undefined\"&&/*#__PURE__*/createPortal(/*#__PURE__*/_jsx(\"span\",{role:\"dialog\",\"aria-hidden\":!isOpen,style:{position:\"fixed\",left:tip?tip.left:-9999,top:tip?tip.top:-9999,transform:`translate(-50%, calc(-100% - ${tooltipOffset}px))`,width:\"max-content\",maxWidth:tooltipMaxWidth,background:tooltipBackground,color:tooltipTextColor,borderRadius:tooltipRadius,padding:`${tooltipPaddingV}px ${tooltipPaddingH}px`,boxShadow:tooltipShadow,whiteSpace:\"normal\",pointerEvents:isHover?\"none\":\"auto\",opacity:isOpen?1:0,visibility:isOpen?\"visible\":\"hidden\",transition:\"opacity 0.12s ease, visibility 0.12s ease\",zIndex:999999,...tooltipFont},children:tooltip}),document.body)]});}function parseBoldMarkdown(input){const text=input??\"\";const segments=[];let i=0;let bold=false;while(i<text.length){const next=text.indexOf(\"**\",i);if(next===-1){const tail=text.slice(i);if(tail)segments.push({text:tail,bold});break;}const chunk=text.slice(i,next);if(chunk)segments.push({text:chunk,bold});// Toggle bold and move past delimiter\nbold=!bold;i=next+2;}return segments;}/**\n * @framerIntrinsicWidth 600\n * @framerIntrinsicHeight 240\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function TooltipParagraphs(props){const{paragraphs=[\"Add paragraph blocks here. Hover over certain words to see tooltips.\",\"Example: Put a tooltip on **Framer** or **React** by configuring the tooltips array.\"],tooltips:tooltipsRaw=[{target:\"Framer\",tooltip:\"A no-code website builder with React components.\"}],textColor,tooltipBackground,tooltipTextColor,highlightColor,targetTextColor,font,maxWidth,lineGap,tooltipTrigger,tooltipMaxWidth,tooltipOffset,tooltipRadius,tooltipPaddingV,tooltipPaddingH,tooltipShadow,tooltipFont={fontSize:\"13px\",variant:\"Medium\",letterSpacing:\"-0.01em\",lineHeight:\"1.2em\"},scrollEffect,effectAmount,style}=props;const isStatic=useIsStaticRenderer();const rootRef=React.useRef(null);const inView=useInView(rootRef,{amount:.2,margin:\"0px 0px -10% 0px\"});const normalizedTooltips=React.useMemo(()=>normalizeTooltips(tooltipsRaw),[tooltipsRaw]);const regex=React.useMemo(()=>buildRegex(normalizedTooltips),[normalizedTooltips]);const[openId,setOpenId]=React.useState(null);const close=React.useCallback(()=>{React.startTransition(()=>setOpenId(null));},[]);const open=React.useCallback(id=>{React.startTransition(()=>setOpenId(id));},[]);const toggle=React.useCallback(id=>{React.startTransition(()=>setOpenId(prev=>prev===id?null:id));},[]);React.useEffect(()=>{if(typeof window===\"undefined\")return;if(tooltipTrigger!==\"click\")return;const onDocPointerDown=e=>{const el=rootRef.current;if(!el)return;if(el.contains(e.target))return;close();};window.addEventListener(\"pointerdown\",onDocPointerDown);return()=>window.removeEventListener(\"pointerdown\",onDocPointerDown);},[tooltipTrigger,close]);const{scrollYProgress}=useScroll({target:rootRef,offset:[\"start 0.92\",\"end 0.25\"]});const yFadeUp=useTransform(scrollYProgress,[0,1],[Math.max(0,effectAmount),0]);const opacityFadeUp=useTransform(scrollYProgress,[0,1],[0,1]);const opacityFade=useTransform(scrollYProgress,[0,1],[0,1]);const motionStyle=React.useMemo(()=>{if(isStatic)return undefined;if(!inView)return undefined;if(scrollEffect===\"fadeUp\")return{y:yFadeUp,opacity:opacityFadeUp};if(scrollEffect===\"fade\")return{opacity:opacityFade};return undefined;},[isStatic,inView,scrollEffect,yFadeUp,opacityFadeUp,opacityFade]);const renderedParagraphs=React.useMemo(()=>{const paras=(paragraphs||[]).filter(p=>(p??\"\").length>0);const renderTextWithTooltips=(text,pIndex,segIndex)=>{if(!regex||!normalizedTooltips.length)return[text];const parts=text.split(regex);return parts.map((part,i)=>{const hit=findTooltipByTarget(normalizedTooltips,part);if(!hit)return part;const id=`p${pIndex}-s${segIndex}-i${i}-${hit.target}`;return /*#__PURE__*/_jsx(TooltipWord,{id:id,text:part,tooltip:hit.tooltip,trigger:tooltipTrigger,isOpen:openId===id,onOpen:open,onClose:close,onToggle:toggle,highlightColor:highlightColor,targetTextColor:targetTextColor,tooltipBackground:tooltipBackground,tooltipTextColor:tooltipTextColor,tooltipMaxWidth:tooltipMaxWidth,tooltipOffset:tooltipOffset,tooltipRadius:tooltipRadius,tooltipPaddingV:tooltipPaddingV,tooltipPaddingH:tooltipPaddingH,tooltipShadow:tooltipShadow,tooltipFont:tooltipFont},id);});};return paras.map((paragraph,pIndex)=>{const segments=parseBoldMarkdown(paragraph);return segments.flatMap((seg,segIndex)=>{const nodes=renderTextWithTooltips(seg.text,pIndex,segIndex);if(!seg.bold)return nodes;return[/*#__PURE__*/_jsx(\"span\",{style:{fontWeight:700},children:nodes},`p${pIndex}-b${segIndex}`)];});});},[paragraphs,regex,normalizedTooltips,tooltipTrigger,openId,open,close,toggle,highlightColor,targetTextColor,tooltipBackground,tooltipTextColor,tooltipMaxWidth,tooltipOffset,tooltipRadius,tooltipPaddingV,tooltipPaddingH,tooltipShadow,tooltipFont,font]);const Container=isStatic?\"div\":motion.div;return /*#__PURE__*/_jsx(Container,{ref:rootRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"flex-start\",justifyContent:\"flex-start\",overflow:\"visible\",color:textColor,...font,...style||{},...motionStyle||{}},children:/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",maxWidth:maxWidth>0?maxWidth:undefined,display:\"flex\",flexDirection:\"column\",gap:Math.max(0,lineGap)},children:renderedParagraphs.map((nodes,idx)=>/*#__PURE__*/_jsx(\"p\",{style:{margin:0,color:\"inherit\",width:\"100%\",whiteSpace:\"pre-wrap\",overflowWrap:\"anywhere\"},children:nodes},idx))})});}addPropertyControls(TooltipParagraphs,{paragraphs:{type:ControlType.Array,title:\"Paragraphs\",control:{type:ControlType.String,title:\"Text\",defaultValue:\"Write your paragraph here.\",displayTextArea:true},defaultValue:[\"Add paragraph blocks here. Hover over certain words to see tooltips.\",\"Example: Put a tooltip on **Framer** by adding a tooltip target with target = Framer.\"]},tooltips:{type:ControlType.Array,title:\"Tooltips\",control:{type:ControlType.Object,title:\"Item\",controls:{target:{type:ControlType.String,title:\"Target\",defaultValue:\"Framer\"},tooltip:{type:ControlType.String,title:\"Tooltip\",defaultValue:\"A no-code website builder with React components.\",displayTextArea:true}}},defaultValue:[{target:\"Framer\",tooltip:\"A no-code website builder with React components.\"}]},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"15px\",variant:\"Medium\",letterSpacing:\"-0.01em\",lineHeight:\"1.5em\"}},tooltipFont:{type:ControlType.Font,title:\"Tooltip Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:\"13px\",variant:\"Medium\",letterSpacing:\"-0.01em\",lineHeight:\"1.2em\"}},textColor:{type:ControlType.Color,title:\"Text\",defaultValue:\"#000000\"},highlightColor:{type:ControlType.Color,title:\"Highlight\",defaultValue:\"#000000\"},targetTextColor:{type:ControlType.Color,title:\"Target Text\",defaultValue:\"#000000\"},tooltipBackground:{type:ControlType.Color,title:\"Tip BG\",defaultValue:\"#000000\"},tooltipTextColor:{type:ControlType.Color,title:\"Tip Text\",defaultValue:\"#FFFFFF\"},maxWidth:{type:ControlType.Number,title:\"Max Width\",defaultValue:0,min:0,max:1600,step:10,unit:\"px\"},lineGap:{type:ControlType.Number,title:\"Para Gap\",defaultValue:10,min:0,max:80,step:1,unit:\"px\"},tooltipTrigger:{type:ControlType.Enum,title:\"Trigger\",options:[\"hover\",\"click\"],optionTitles:[\"Hover/Focus\",\"Click/Tap\"],defaultValue:\"hover\",displaySegmentedControl:true},tooltipMaxWidth:{type:ControlType.Number,title:\"Tip Max W\",defaultValue:260,min:120,max:600,step:10,unit:\"px\"},tooltipOffset:{type:ControlType.Number,title:\"Tip Offset\",defaultValue:10,min:0,max:40,step:1,unit:\"px\"},tooltipRadius:{type:ControlType.Number,title:\"Tip Radius\",defaultValue:10,min:0,max:40,step:1,unit:\"px\"},tooltipPaddingV:{type:ControlType.Number,title:\"Tip Pad V\",defaultValue:8,min:4,max:24,step:1,unit:\"px\"},tooltipPaddingH:{type:ControlType.Number,title:\"Tip Pad H\",defaultValue:10,min:4,max:32,step:1,unit:\"px\"},tooltipShadow:{type:ControlType.BoxShadow,title:\"Tip Shadow\",defaultValue:\"0px 12px 30px rgba(0,0,0,0.22)\"},scrollEffect:{type:ControlType.Enum,title:\"Scroll FX\",options:[\"none\",\"fadeUp\",\"fade\"],optionTitles:[\"None\",\"Fade Up\",\"Fade\"],defaultValue:\"none\",displaySegmentedControl:true},effectAmount:{type:ControlType.Number,title:\"FX Amount\",defaultValue:16,min:0,max:120,step:1,unit:\"px\",hidden:p=>p.scrollEffect!==\"fadeUp\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TooltipParagraphs\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"240\",\"framerIntrinsicWidth\":\"600\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TooltipParagraphs.map"],"mappings":"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"}