{"version":3,"file":"Highlight.DR69GhQB.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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"}