{"version":3,"file":"Highlight.CFSilfoS.mjs","names":["useState","useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/WgnNHqRsIBlLSeJJUTL9/pmsjnf1JGjNW93rsWoY6/Highlight.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState,useCallback}from\"react\";import{addPropertyControls,ControlType}from\"framer\";// Generate rough/sketchy path with seeded randomness for consistency\nfunction generateRoughPath(startX,startY,endX,endY,roughness=1,seed=1){const length=Math.abs(endX-startX);// Keep paths mostly horizontal for highlights\nconst avgY=(startY+endY)/2;// Number of segments based on length\nconst segments=Math.max(2,Math.floor(length/40));const pathData=[];// Use seeded random for consistent paths\nconst seededRandom=index=>{const x=Math.sin(seed*9999+index*1337)*1e4;return x-Math.floor(x);};// Starting point with minimal vertical randomness\nconst startOffsetX=(seededRandom(0)-.5)*roughness*1;const startOffsetY=(seededRandom(1)-.5)*roughness*.5;pathData.push(`M${startX+startOffsetX} ${avgY+startOffsetY}`);// Generate rough segments - keep mostly horizontal\nfor(let i=1;i<=segments;i++){const progress=i/segments;const targetX=startX+(endX-startX)*progress;// Very minimal vertical variation to keep it looking like a highlight\nconst roughnessX=(seededRandom(i*2)-.5)*roughness*2;const roughnessY=(seededRandom(i*2+1)-.5)*roughness*.8;const x=targetX+roughnessX;const y=avgY+roughnessY;// Use lines for more consistent highlights\npathData.push(`L${x} ${y}`);}return pathData.join(\" \");}// Detect text lines and their bounding boxes (using rough-notation approach)\nfunction getTextLineBoxes(element,svgElement){if(!element||!svgElement)return[];// Get all client rects (one for each line) - this is exactly how rough-notation does it\nconst elementRects=element.getClientRects();const svgRect=svgElement.getBoundingClientRect();const boxes=[];for(let i=0;i<elementRects.length;i++){const rect=elementRects[i];// Convert to SVG coordinate space (like rough-notation's svgRect function)\nboxes.push({x:(rect.x||rect.left)-(svgRect.x||svgRect.left),y:(rect.y||rect.top)-(svgRect.y||svgRect.top),w:rect.width,h:rect.height});}return boxes;}// Main Highlight Component\nexport default function RoughHighlight(props){const{text,textColor,highlightColor,strokeWidth,roughness,fontSize,fontWeight,fontFamily,letterSpacing,lineHeight,width,height,animationDuration,animationDelay,padding,heightOffset,heightPadding,roundedCaps,textTransform,textAlign}=props;const[isVisible,setIsVisible]=useState(false);const[isAnimated,setIsAnimated]=useState(false);const[lineBoxes,setLineBoxes]=useState([]);const[highlightPaths,setHighlightPaths]=useState([]);const[isResizing,setIsResizing]=useState(false);const elementRef=useRef(null);const textRef=useRef(null);const[pathSeed]=useState(()=>Math.random()*1e4)// Generate once and keep stable\n;const svgRef=useRef(null);// Resize handler with debouncing (like rough-notation)\nconst handleResize=useCallback(()=>{if(!isResizing){setIsResizing(true);setTimeout(()=>{setIsResizing(false);if(textRef.current&&isAnimated){updateHighlights();}},400);}},[isResizing,isAnimated]);// Update highlights function\nconst updateHighlights=useCallback(()=>{if(textRef.current&&svgRef.current){const boxes=getTextLineBoxes(textRef.current,svgRef.current);setLineBoxes(boxes);// Generate paths for each line\nconst paths=boxes.map((box,index)=>{// Position highlight properly - more centered like rough-notation\nconst highlightY=box.y+box.h*.4// Higher up, like rough-notation positioning\n;const path1=generateRoughPath(box.x-padding,highlightY,box.x+box.w+padding,highlightY,roughness);const path2=generateRoughPath(box.x+box.w+padding,highlightY,box.x-padding,highlightY,roughness);const pathLength1=(box.w+padding*2)*1.1;const pathLength2=(box.w+padding*2)*1.1;return{path1,path2,pathLength1,pathLength2,delay:index*.4};});setHighlightPaths(paths);}},[padding,roughness]);// Measure text and generate paths\nuseEffect(()=>{if(textRef.current&&svgRef.current){// Small delay to ensure text is rendered\nsetTimeout(()=>{updateHighlights();},100);}},[text,fontSize,fontFamily,fontWeight,letterSpacing,lineHeight,updateHighlights]);// Resize observer (like rough-notation)\nuseEffect(()=>{let resizeObserver;if(textRef.current){// Window resize listener\nwindow.addEventListener(\"resize\",handleResize,{passive:true});// ResizeObserver if available\nif(\"ResizeObserver\"in window){resizeObserver=new ResizeObserver(entries=>{for(const entry of entries){if(entry.contentRect){handleResize();}}});resizeObserver.observe(textRef.current);}}return()=>{window.removeEventListener(\"resize\",handleResize);if(resizeObserver){resizeObserver.disconnect();}};},[handleResize]);// Intersection Observer for scroll-triggered animation\nuseEffect(()=>{const observer=new IntersectionObserver(([entry])=>{if(entry.isIntersecting&&!isAnimated){setTimeout(()=>{setIsVisible(true);setIsAnimated(true);},animationDelay*1e3);}},{threshold:.1,rootMargin:\"-50px 0px\"});if(elementRef.current){observer.observe(elementRef.current);}return()=>observer.disconnect();},[animationDelay,isAnimated]);const containerStyle={width:width||\"auto\",height:height||\"auto\",display:\"block\",position:\"relative\",textAlign:textAlign};const textStyle={color:textColor,fontSize:fontSize,fontWeight:fontWeight,fontFamily:fontFamily,letterSpacing:letterSpacing,lineHeight:lineHeight,textTransform:textTransform,margin:0,padding:0,display:\"inline\",position:\"relative\",zIndex:2};const svgStyle={position:\"absolute\",top:0,left:0,width:\"100px\",height:\"100px\",overflow:\"visible\",pointerEvents:\"none\",zIndex:1};return /*#__PURE__*/_jsxs(\"div\",{ref:elementRef,style:containerStyle,children:[/*#__PURE__*/_jsx(\"svg\",{ref:svgRef,style:svgStyle,children:highlightPaths.map((pathData,index)=>/*#__PURE__*/_jsxs(\"g\",{children:[/*#__PURE__*/_jsx(\"path\",{d:pathData.path1,fill:\"none\",stroke:highlightColor,strokeWidth:strokeWidth,strokeLinecap:roundedCaps?\"round\":\"butt\",strokeLinejoin:roundedCaps?\"round\":\"miter\",strokeDasharray:pathData.pathLength1,strokeDashoffset:isVisible?0:pathData.pathLength1,style:{transition:`stroke-dashoffset ${animationDuration}s ease-out ${pathData.delay}s`}}),/*#__PURE__*/_jsx(\"path\",{d:pathData.path2,fill:\"none\",stroke:highlightColor,strokeWidth:strokeWidth,strokeLinecap:roundedCaps?\"round\":\"butt\",strokeLinejoin:roundedCaps?\"round\":\"miter\",strokeDasharray:pathData.pathLength2,strokeDashoffset:isVisible?0:pathData.pathLength2,style:{transition:`stroke-dashoffset ${animationDuration}s ease-out ${pathData.delay+animationDuration}s`}})]},index))}),/*#__PURE__*/_jsx(\"span\",{ref:textRef,style:textStyle,children:text})]});}// Framer Property Controls\naddPropertyControls(RoughHighlight,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"Highlight this text\",placeholder:\"Enter your text...\",displayTextArea:true},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#000000\"},highlightColor:{type:ControlType.Color,title:\"Highlight Color\",defaultValue:\"#FFD54F\"},strokeWidth:{type:ControlType.Number,title:\"Highlight Thickness\",defaultValue:20,min:5,max:50,step:1,unit:\"px\",displayStepper:true},roughness:{type:ControlType.Number,title:\"Roughness\",defaultValue:1.5,min:.5,max:4,step:.1},padding:{type:ControlType.Number,title:\"Horizontal Padding\",defaultValue:4,min:0,max:20,step:1,unit:\"px\",displayStepper:true},heightOffset:{type:ControlType.Number,title:\"Height Offset\",defaultValue:.4,min:0,max:1,step:.05,description:\"Vertical position (0 = top, 1 = bottom)\"},heightPadding:{type:ControlType.Number,title:\"Height Padding\",defaultValue:0,min:0,max:20,step:1,unit:\"px\",displayStepper:true,description:\"Extends highlight vertically\"},roundedCaps:{type:ControlType.Boolean,title:\"Rounded Caps\",defaultValue:true,enabledTitle:\"Rounded\",disabledTitle:\"Square\"},textTransform:{type:ControlType.Enum,title:\"Text Transform\",options:[\"none\",\"uppercase\",\"lowercase\",\"capitalize\"],optionTitles:[\"None\",\"ALL CAPS\",\"lowercase\",\"Capitalize\"],defaultValue:\"none\"},textAlign:{type:ControlType.Enum,title:\"Text Alignment\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"left\"},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:18,min:8,max:200,step:1,unit:\"px\",displayStepper:true},fontWeight:{type:ControlType.Enum,title:\"Font Weight\",options:[\"100\",\"200\",\"300\",\"400\",\"500\",\"600\",\"700\",\"800\",\"900\"],optionTitles:[\"Thin\",\"Extra Light\",\"Light\",\"Regular\",\"Medium\",\"Semi Bold\",\"Bold\",\"Extra Bold\",\"Black\"],defaultValue:\"400\"},fontFamily:{type:ControlType.String,title:\"Font Family\",defaultValue:\"Inter, system-ui, sans-serif\",placeholder:\"Font family...\"},letterSpacing:{type:ControlType.Number,title:\"Letter Spacing\",defaultValue:0,min:-2,max:10,step:.1,unit:\"px\"},lineHeight:{type:ControlType.Number,title:\"Line Height\",defaultValue:1.4,min:.8,max:3,step:.1},animationDuration:{type:ControlType.Number,title:\"Animation Duration\",defaultValue:.6,min:.1,max:3,step:.1,unit:\"s\"},animationDelay:{type:ControlType.Number,title:\"Animation Delay\",defaultValue:0,min:0,max:5,step:.1,unit:\"s\"}});// Default Props\nRoughHighlight.defaultProps={text:\"Highlight this text\",textColor:\"#000000\",highlightColor:\"#FFD54F\",strokeWidth:20,roughness:1.5,padding:4,heightOffset:.4,heightPadding:0,roundedCaps:true,textTransform:\"none\",textAlign:\"left\",fontSize:18,fontWeight:\"400\",fontFamily:\"Inter, system-ui, sans-serif\",letterSpacing:0,lineHeight:1.4,width:\"auto\",height:\"auto\",animationDuration:.6,animationDelay:0};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"RoughHighlight\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Highlight.map"],"mappings":"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"}