{"version":3,"file":"shared-lib.DzViiYvf.mjs","names":["useState","useRef","fonts","css","className","fonts","css","className","fonts","css","className","fonts","css","className","fonts","css","className","fonts","css","className","React.useRef","React.useState","useRef","useState","_Fragment"],"sources":["https:/framerusercontent.com/modules/fnHwFmNGY3Kp0j57HBb7/5DANiNHdBKgXAZC641uz/SlotText.js","https:/framerusercontent.com/modules/3WIR2IqUBXbxJ1MQ0aLj/kyIRmMekydBKhR7SEOmj/aWWWV9tho.js","https:/framerusercontent.com/modules/2ZvJ4Br39WYdAC8kNQE7/xV6wYtMTVVFWUZ1RY2rc/Wz549yHlj.js","https:/framerusercontent.com/modules/hzflhHDSzuvuClwot2oV/0Mvbs8pbbwzUSb4ishRC/iC7VrGrWt.js","https:/framerusercontent.com/modules/nxt7CB2MVD3COBO93S2I/9jXA4AFJzeZdJ02eNdQs/uRjnb56wU.js","https:/framerusercontent.com/modules/1DZVJoVWJ8nV3kKHaRRe/dBugZWzSsdHkirO6uayD/Dd10OkfC9.js","https:/framerusercontent.com/modules/NBzJ1ooUVVmJB2avofHx/dndifiTQftcl3yjGwevx/dA2V6bBJK.js","https:/framerusercontent.com/modules/5NzIsVZpvlVnKcEdvVEL/XViRJnVDv3SwO7jXCy4W/Particles_Image.js","https:/framerusercontent.com/modules/QdMPsV5cmNlLLOCQanVc/CWz0LScWTD6QPpNDj5OK/mCCCOA6A3.js","https:/framerusercontent.com/modules/zAkJ3XyBcNI0c5wbI31q/zthKwf5tHBmvQ5OO2WmV/SmoothScroll.js","https:/framerusercontent.com/modules/28nzR68L49yDm7yXKj3i/8UFoBsKQV7b9dZ2ZAAoN/siteMetadata.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useRef,useEffect}from\"react\";import{motion,useAnimation}from\"framer-motion\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";export default function Slot_Text_with_3D(props){const{text=\"PORTFOLIO\",link,openInNewTab=false,triggerMode=\"Hover\",noRepeat=false,cycles=1,randomDigits=false,inverseAnimation=false,easeType=\"power3.inOut\",layerDistance=20,flipDuration=.5,staggerDelay=.04,textColor=\"#1a1a1a\",hoverColor=\"#d32f2f\",font,style}=props;const controls=useAnimation();// Check if component is rendered on Framer canvas (design mode)\nconst isStatic=useIsStaticRenderer();// Local state to manage incoming face color smoothly\nconst[isHovered,setIsHovered]=useState(false);// Refs for performance-optimized DOM manipulation (Random Digits effect)\nconst isAnimating=useRef(false);const hasPlayed=useRef(false);const outgoingRefs=useRef([]);const incomingRefs=useRef([]);const timers=useRef({intervals:[],timeouts:[]});// Cleanup timers on unmount to prevent memory leaks\nuseEffect(()=>{return()=>{timers.current.intervals.forEach(clearInterval);timers.current.timeouts.forEach(clearTimeout);};},[]);// Extract properties from Framer's native font control with fallbacks\nconst fontFamily=font?.fontFamily||\"Inter, sans-serif\";// Safe parsing to ensure fontSize is ALWAYS a number (prevents \"110px\" from breaking math)\nconst rawFontSize=font?.fontSize||110;const parsedFontSize=parseFloat(rawFontSize.toString())||110;const fontWeight=font?.fontWeight||400;const fontStyle=font?.fontStyle||\"normal\";const letterSpacing=font?.letterSpacing||0;const lineHeight=font?.lineHeight||1;const textAlign=font?.textAlign||\"center\"// Extract text alignment\n;// Map textAlign to flexbox alignment\nconst flexAlignment=textAlign===\"left\"?\"flex-start\":textAlign===\"right\"?\"flex-end\":\"center\";// Map GSAP easings to Framer Motion cubic-beziers\nconst easeMapping={\"power1.inOut\":\"easeInOut\",\"power2.inOut\":[.45,0,.55,1],\"power3.inOut\":[.65,0,.35,1],\"back.inOut(1.5)\":[.68,-.6,.32,1.6],\"elastic.inOut(1, 0.5)\":[.68,-.55,.27,1.55]};const activeEase=easeMapping[easeType]||\"easeInOut\";// Directional multipliers for proper 3D inverse rotation\nconst dirMultiplier=inverseAnimation?-1:1;// Determine the number of active cycles (Hover is strictly 1 cycle)\nconst activeCycles=triggerMode===\"On View\"?cycles:1;// Animation trigger function\nconst playEntrance=async()=>{// Prevent animation running on Framer canvas or interrupting an active sequence\nif(isStatic||isAnimating.current)return;// Block execution if No Repeat is ON and it has already played\nif(triggerMode===\"On View\"&&noRepeat&&hasPlayed.current)return;isAnimating.current=true// Lock animation state\n;// Handle high-performance random digits scramble bypassing React state\nif(randomDigits&&triggerMode===\"On View\"){incomingRefs.current.forEach((el,index)=>{if(!el)return;const originalText=el.getAttribute(\"data-char\");if(!originalText||originalText.trim()===\"\")return;// Skip spaces\nconst delayMs=index*staggerDelay*1e3;const durationMs=flipDuration*activeCycles*1e3;// Start scrambling exactly when this specific character starts moving\nconst startTimeout=setTimeout(()=>{const interval=setInterval(()=>{const randomNum=Math.floor(Math.random()*10).toString();if(outgoingRefs.current[index]){outgoingRefs.current[index].innerText=randomNum;}el.innerText=randomNum;},40)// Rapid 40ms update for hacker/digital effect\n;timers.current.intervals.push(interval);// Stop scrambling exactly when this specific character finishes\nconst stopTimeout=setTimeout(()=>{clearInterval(interval);if(outgoingRefs.current[index]){outgoingRefs.current[index].innerText=originalText;}el.innerText=originalText;},durationMs);timers.current.timeouts.push(stopTimeout);},delayMs);timers.current.timeouts.push(startTimeout);});}// Reset to initial state instantly, then animate forward seamlessly\nawait controls.set(\"initial\");await controls.start(\"animate\");isAnimating.current=false// Unlock when sequence is fully completed\n;// Mark as played after the first successful run\nhasPlayed.current=true;};// Since we have nested elements, we use a custom dynamic delay (i) and pass cycles for seamless repeats\nconst outgoingVariants={initial:{y:\"0em\",rotateX:0,opacity:1},animate:({i,cycles})=>({y:`${-layerDistance*dirMultiplier*.01}em`,rotateX:90*dirMultiplier,opacity:0,transition:{duration:flipDuration,ease:activeEase,delay:i*staggerDelay,repeat:cycles-1,repeatType:\"loop\"}})};const incomingVariants={initial:{y:`${layerDistance*dirMultiplier*.01}em`,rotateX:-90*dirMultiplier,opacity:0},animate:({i,cycles})=>({y:\"0em\",rotateX:0,opacity:1,transition:{duration:flipDuration,ease:activeEase,delay:i*staggerDelay,repeat:cycles-1,repeatType:\"loop\"}})};// Split text into explicit lines based on \"Enter\" keys\nconst lines=text.split(\"\\n\");// Use <motion.a> if a link is provided, otherwise <motion.div>\nconst Component=link?motion.a:motion.div;// Global counter to maintain stagger sequence across all lines and spaces\nlet globalCharIndex=0;return /*#__PURE__*/_jsx(Component,{href:link&&!isStatic?link:undefined,target:link&&openInNewTab&&!isStatic?\"_blank\":undefined,rel:link&&openInNewTab&&!isStatic?\"noopener noreferrer\":undefined,style:{...style,display:\"flex\",flexDirection:\"column\",alignItems:flexAlignment,justifyContent:\"center\",width:\"100%\",height:\"auto\",background:\"transparent\",perspective:\"1000px\",transformStyle:\"preserve-3d\",textDecoration:\"none\",cursor:link&&!isStatic?\"pointer\":\"default\",color:textColor},onMouseEnter:()=>{setIsHovered(true);if(triggerMode===\"Hover\"&&!isStatic)playEntrance();},onMouseLeave:()=>{setIsHovered(false);},onViewportEnter:triggerMode===\"On View\"&&!isStatic?playEntrance:undefined,viewport:{once:false,margin:\"-30% 0px -30% 0px\"},initial:!isStatic?\"initial\":false,animate:!isStatic?controls:false,children:lines.map((line,lineIndex)=>/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexWrap:\"wrap\",justifyContent:flexAlignment,width:\"100%\",transformStyle:\"preserve-3d\"},children:line.split(/(\\s+)/).map((token,tokenIndex)=>{if(!token)return null;return /*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",whiteSpace:\"nowrap\",transformStyle:\"preserve-3d\"},children:token.split(\"\").map((char,charIndex)=>{const currentIndex=globalCharIndex++;// Properly handle space characters to prevent DOM collapse\n    const isSpace=char.trim()===\"\";const displayChar=isSpace?\"\\xa0\":char;return /*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",display:\"inline-block\",margin:`0 ${parsedFontSize*.01}px`,transformStyle:\"preserve-3d\"},children:[/*#__PURE__*/_jsx(motion.span,{ref:el=>outgoingRefs.current[currentIndex]=el,\"data-char\":displayChar,custom:{i:currentIndex,cycles:activeCycles},variants:!isStatic?outgoingVariants:{},style:{display:\"inline-block\",position:\"absolute\",top:0,left:0,color:textColor,fontSize:parsedFontSize,fontWeight:fontWeight,fontStyle:fontStyle,fontFamily:fontFamily,letterSpacing:letterSpacing,lineHeight:lineHeight,transformOrigin:`50% 50% -${parsedFontSize*.4}px`,zIndex:1,opacity:isStatic?0:undefined},children:displayChar}),/*#__PURE__*/_jsx(motion.span,{ref:el=>incomingRefs.current[currentIndex]=el,\"data-char\":displayChar,custom:{i:currentIndex,cycles:activeCycles},variants:!isStatic?incomingVariants:{},style:{display:\"inline-block\",position:\"relative\",color:isHovered&&triggerMode===\"Hover\"&&!isStatic?hoverColor:textColor,transition:\"color 0.3s ease\",fontSize:parsedFontSize,fontWeight:fontWeight,fontStyle:fontStyle,fontFamily:fontFamily,letterSpacing:letterSpacing,lineHeight:lineHeight,transformOrigin:`50% 50% -${parsedFontSize*.4}px`,zIndex:3,opacity:isStatic?1:undefined},children:displayChar})]},`${lineIndex}-${tokenIndex}-${charIndex}`);})},`${lineIndex}-${tokenIndex}`);})},lineIndex))});}// Helper function to safely apply native font controls\nfunction createFontControl(defaultValue){return\"font\";}// Framer Property Controls Setup\naddPropertyControls(Slot_Text_with_3D,{text:{type:ControlType.String,defaultValue:\"PORTFOLIO\",title:\"Text\",displayTextArea:true},link:{type:ControlType.Link,title:\"Link\"},openInNewTab:{type:ControlType.Boolean,defaultValue:false,title:\"New Tab\",hidden(props){return!props.link;}},textColor:{type:ControlType.Color,defaultValue:\"#1a1a1a\",title:\"Text Color\"},hoverColor:{type:ControlType.Color,defaultValue:\"#4D4D4D\",title:\"Hover Color\",hidden(props){return props.triggerMode!==\"Hover\"// Only show when Hover trigger is active\n;}},font:{type:createFontControl({}),controls:\"extended\",title:\"Typography\",defaultValue:{fontFamily:\"Inter, sans-serif\",fontSize:110,fontWeight:400,letterSpacing:0,lineHeight:1,textAlign:\"center\"}},triggerMode:{type:ControlType.Enum,options:[\"Hover\",\"On View\"],defaultValue:\"Hover\",title:\"Trigger\"},noRepeat:{type:ControlType.Boolean,defaultValue:false,title:\"No Repeat\",hidden(props){return props.triggerMode!==\"On View\"// Only show when On View is active\n;}},cycles:{type:ControlType.Number,defaultValue:1,title:\"Cycles\",min:1,max:5,step:1,displayStepper:true,hidden(props){return props.triggerMode!==\"On View\"// Only show when On View is active\n;}},randomDigits:{type:ControlType.Boolean,defaultValue:false,title:\"Random Digits\",hidden(props){return props.triggerMode!==\"On View\"// Only show when On View is active\n;}},inverseAnimation:{type:ControlType.Boolean,defaultValue:false,title:\"Inverse Anim\"},easeType:{type:ControlType.Enum,options:[\"power1.inOut\",\"power2.inOut\",\"power3.inOut\",\"back.inOut(1.5)\",\"elastic.inOut(1, 0.5)\"],defaultValue:\"power3.inOut\",title:\"Easing\"},layerDistance:{type:ControlType.Number,defaultValue:20,title:\"Distance Y (%)\",min:1,max:50},flipDuration:{type:ControlType.Number,defaultValue:.5,title:\"Duration\",step:.05,min:.1,max:2},staggerDelay:{type:ControlType.Number,defaultValue:.04,title:\"Stagger\",step:.01,min:0,max:.2}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Slot_Text_with_3D\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SlotText.map","// Generated by Framer (0f5ea8b)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"GF;Funnel Sans-regular\",\"GF;Funnel Sans-700\",\"GF;Funnel Sans-700italic\",\"GF;Funnel Sans-italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNfno8Dg9bX6Bsp3Wq69RB-VukSVv3aISFAlXmEe29NnDyL7w.woff2\",weight:\"400\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNfno8Dg9bX6Bsp3Wq69RB-VukSVv3aISFAcn6Ee29NnDyL7w.woff2\",weight:\"700\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"italic\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNZno8Dg9bX6Bsp3Wq69Tp3ZBbKP5ZAjyZVXTqLOmVMvjmb76XZ.woff2\",weight:\"700\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"italic\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNZno8Dg9bX6Bsp3Wq69Tp3ZBbKP5ZAjyZVXTpsPWVMvjmb76XZ.woff2\",weight:\"400\"}]}];export const css=['.framer-1cbU4 .framer-styles-preset-1o7cgph:not(.rich-text-wrapper), .framer-1cbU4 .framer-styles-preset-1o7cgph.rich-text-wrapper p { --framer-font-family: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-bold: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-italic: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 14px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: 0em; --framer-line-height: 20px; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: #000000; --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }'];export const className=\"framer-1cbU4\";\nexport const __FramerMetadata__ = {\"exports\":{\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (0f5ea8b)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"GF;Funnel Sans-regular\",\"GF;Funnel Sans-700\",\"GF;Funnel Sans-700italic\",\"GF;Funnel Sans-italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNfno8Dg9bX6Bsp3Wq69RB-VukSVv3aISFAlXmEe29NnDyL7w.woff2\",weight:\"400\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNfno8Dg9bX6Bsp3Wq69RB-VukSVv3aISFAcn6Ee29NnDyL7w.woff2\",weight:\"700\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"italic\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNZno8Dg9bX6Bsp3Wq69Tp3ZBbKP5ZAjyZVXTqLOmVMvjmb76XZ.woff2\",weight:\"700\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"italic\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNZno8Dg9bX6Bsp3Wq69Tp3ZBbKP5ZAjyZVXTpsPWVMvjmb76XZ.woff2\",weight:\"400\"}]}];export const css=['.framer-CFWde .framer-styles-preset-1p3a09l:not(.rich-text-wrapper), .framer-CFWde .framer-styles-preset-1p3a09l.rich-text-wrapper p { --framer-font-family: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-bold: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-italic: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 18px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: -0.15px; --framer-line-height: 25px; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: #000000; --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }'];export const className=\"framer-CFWde\";\nexport const __FramerMetadata__ = {\"exports\":{\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (0f5ea8b)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"GF;Funnel Sans-regular\",\"GF;Funnel Sans-700\",\"GF;Funnel Sans-700italic\",\"GF;Funnel Sans-italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNfno8Dg9bX6Bsp3Wq69RB-VukSVv3aISFAlXmEe29NnDyL7w.woff2\",weight:\"400\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNfno8Dg9bX6Bsp3Wq69RB-VukSVv3aISFAcn6Ee29NnDyL7w.woff2\",weight:\"700\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"italic\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNZno8Dg9bX6Bsp3Wq69Tp3ZBbKP5ZAjyZVXTqLOmVMvjmb76XZ.woff2\",weight:\"700\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"italic\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNZno8Dg9bX6Bsp3Wq69Tp3ZBbKP5ZAjyZVXTpsPWVMvjmb76XZ.woff2\",weight:\"400\"}]}];export const css=['.framer-7WWAi .framer-styles-preset-17300e9:not(.rich-text-wrapper), .framer-7WWAi .framer-styles-preset-17300e9.rich-text-wrapper h2 { --framer-font-family: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-bold: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-italic: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 91px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: -3px; --framer-line-height: 84px; --framer-paragraph-spacing: 40px; --framer-text-alignment: start; --framer-text-color: #000000; --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }'];export const className=\"framer-7WWAi\";\nexport const __FramerMetadata__ = {\"exports\":{\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (0f5ea8b)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"GF;Funnel Sans-regular\",\"GF;Funnel Sans-700\",\"GF;Funnel Sans-700italic\",\"GF;Funnel Sans-italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNfno8Dg9bX6Bsp3Wq69RB-VukSVv3aISFAlXmEe29NnDyL7w.woff2\",weight:\"400\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNfno8Dg9bX6Bsp3Wq69RB-VukSVv3aISFAcn6Ee29NnDyL7w.woff2\",weight:\"700\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"italic\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNZno8Dg9bX6Bsp3Wq69Tp3ZBbKP5ZAjyZVXTqLOmVMvjmb76XZ.woff2\",weight:\"700\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"italic\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNZno8Dg9bX6Bsp3Wq69Tp3ZBbKP5ZAjyZVXTpsPWVMvjmb76XZ.woff2\",weight:\"400\"}]}];export const css=['.framer-LNFPy .framer-styles-preset-tl2uil:not(.rich-text-wrapper), .framer-LNFPy .framer-styles-preset-tl2uil.rich-text-wrapper h1 { --framer-font-family: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-bold: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-italic: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 119px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: -5px; --framer-line-height: 109px; --framer-paragraph-spacing: 0px; --framer-text-alignment: start; --framer-text-color: #000000; --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }'];export const className=\"framer-LNFPy\";\nexport const __FramerMetadata__ = {\"exports\":{\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (0f5ea8b)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"GF;Funnel Sans-regular\",\"GF;Funnel Sans-700\",\"GF;Funnel Sans-700italic\",\"GF;Funnel Sans-italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNfno8Dg9bX6Bsp3Wq69RB-VukSVv3aISFAlXmEe29NnDyL7w.woff2\",weight:\"400\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNfno8Dg9bX6Bsp3Wq69RB-VukSVv3aISFAcn6Ee29NnDyL7w.woff2\",weight:\"700\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"italic\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNZno8Dg9bX6Bsp3Wq69Tp3ZBbKP5ZAjyZVXTqLOmVMvjmb76XZ.woff2\",weight:\"700\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"italic\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNZno8Dg9bX6Bsp3Wq69Tp3ZBbKP5ZAjyZVXTpsPWVMvjmb76XZ.woff2\",weight:\"400\"}]}];export const css=['.framer-3auT2 .framer-styles-preset-6w765k:not(.rich-text-wrapper), .framer-3auT2 .framer-styles-preset-6w765k.rich-text-wrapper p { --framer-font-family: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-bold: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-italic: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 24px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: -0.25px; --framer-line-height: 26px; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: #000000; --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }'];export const className=\"framer-3auT2\";\nexport const __FramerMetadata__ = {\"exports\":{\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (0f5ea8b)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"GF;Funnel Sans-regular\",\"GF;Funnel Sans-700\",\"GF;Funnel Sans-700italic\",\"GF;Funnel Sans-italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNfno8Dg9bX6Bsp3Wq69RB-VukSVv3aISFAlXmEe29NnDyL7w.woff2\",weight:\"400\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNfno8Dg9bX6Bsp3Wq69RB-VukSVv3aISFAcn6Ee29NnDyL7w.woff2\",weight:\"700\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"italic\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNZno8Dg9bX6Bsp3Wq69Tp3ZBbKP5ZAjyZVXTqLOmVMvjmb76XZ.woff2\",weight:\"700\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"italic\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNZno8Dg9bX6Bsp3Wq69Tp3ZBbKP5ZAjyZVXTpsPWVMvjmb76XZ.woff2\",weight:\"400\"}]}];export const css=['.framer-pRc6u .framer-styles-preset-ycv7ey:not(.rich-text-wrapper), .framer-pRc6u .framer-styles-preset-ycv7ey.rich-text-wrapper h3 { --framer-font-family: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-bold: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-italic: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 69px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: -2.25px; --framer-line-height: 65px; --framer-paragraph-spacing: 40px; --framer-text-alignment: start; --framer-text-color: #000000; --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }'];export const className=\"framer-pRc6u\";\nexport const __FramerMetadata__ = {\"exports\":{\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";// ==========================================\n// SHADERS\n// ==========================================\nconst SIMULATION_VS=/* glsl */`#version 300 es\nlayout(location=0) in vec4 attr_kinetic;\nlayout(location=1) in vec4 attr_lifecycle;\nlayout(location=2) in vec3 attr_color;\n\nout vec4 out_kinetic;\nout vec4 out_lifecycle;\nout vec3 out_color;\nout float pass_opacity;\n\nuniform vec2 screen_dims;\nuniform float global_clock;\nuniform vec2 cursor_pos;\nuniform vec2 cursor_momentum;\n\nuniform float conf_noise_freq;\nuniform float conf_noise_amp;\nuniform float conf_cursor_force;\nuniform float conf_particle_size;\n\nuniform sampler2D tex_source;\nuniform vec2 tex_scale;\n\n// Optimized UV mapping: Pre-calculated in JS to save GPU ops per vertex/fragment\nvec2 getMappedUV(vec2 rawUV) {\n    return (rawUV - 0.5) * tex_scale + 0.5;\n}\n\nvec3 generateRandom(vec3 p) {\n    p = fract(p * vec3(0.1031, 0.11369, 0.13787));\n    p += dot(p, p.yxz + 19.19);\n    return -1.0 + 2.0 * fract(vec3((p.x + p.y) * p.z, (p.x + p.z) * p.y, (p.y + p.z) * p.x));\n}\n\nfloat calcNoise(vec3 p) {\n    const float K1 = 1.0 / 3.0;\n    const float K2 = 1.0 / 6.0;\n    vec3 i = floor(p + (p.x + p.y + p.z) * K1);\n    vec3 d0 = p - (i - (i.x + i.y + i.z) * K2);\n    vec3 e = step(vec3(0.0), d0 - d0.yzx);\n    vec3 i1 = e * (1.0 - e.zxy);\n    vec3 i2 = 1.0 - e.zxy * (1.0 - e);\n    vec3 d1 = d0 - (i1 - K2);\n    vec3 d2 = d0 - (i2 - 2.0 * K2);\n    vec3 d3 = d0 - (1.0 - 3.0 * K2);\n    vec4 h = max(0.6 - vec4(dot(d0, d0), dot(d1, d1), dot(d2, d2), dot(d3, d3)), 0.0);\n    vec4 n = h * h * h * h * vec4(\n        dot(d0, generateRandom(i)),\n        dot(d1, generateRandom(i + i1)),\n        dot(d2, generateRandom(i + i2)),\n        dot(d3, generateRandom(i + 1.0))\n    );\n    return dot(vec4(31.316), n);\n}\n\nvoid main() {\n    vec2 currentPos = attr_kinetic.xy;\n    vec2 currentVel = attr_kinetic.zw;\n    \n    float age = attr_lifecycle.x + 1.0;\n    float lifespan = attr_lifecycle.y;\n    vec2 seedVal = attr_lifecycle.zw;\n\n    float flowAngle = calcNoise(vec3(currentPos * conf_noise_freq, global_clock * 15.0 + age * 0.02)) * 6.2831853;\n    vec2 flowVector = vec2(cos(flowAngle), sin(flowAngle)) * conf_noise_amp;\n\n    vec2 dirToCursor = currentPos - cursor_pos;\n    float distSq = dot(dirToCursor, dirToCursor);\n    \n    // Performance fix: Replaced heavy pow() function with simple algebraic multiplication\n    float interactionFactor = 1500.0 / (distSq + 1500.0);\n    interactionFactor *= interactionFactor; \n    \n    vec2 cursorPush = cursor_momentum * interactionFactor * conf_cursor_force;\n\n    currentVel = (currentVel * 0.97) + flowVector + cursorPush;\n    currentPos += currentVel;\n\n    out_kinetic = vec4(currentPos, currentVel);\n    out_lifecycle = vec4(age, lifespan, seedVal);\n    out_color = attr_color;\n\n    bool isDead = age >= lifespan || \n                  currentPos.x < 0.0 || currentPos.x > screen_dims.x || \n                  currentPos.y < 0.0 || currentPos.y > screen_dims.y;\n\n    if (isDead) {\n        vec3 randData = generateRandom(vec3(seedVal, global_clock + age));\n        vec2 newUV = fract(randData.xy * 0.5 + 0.5);\n        \n        out_kinetic = vec4(newUV * screen_dims, 0.0, 0.0);\n        out_lifecycle = vec4(0.0, lifespan, randData.xy);\n        out_color = texture(tex_source, getMappedUV(newUV)).rgb;\n    }\n\n    float ageRatio = out_lifecycle.x / lifespan;\n    float fadeInOut = smoothstep(0.0, 0.1, ageRatio) * (1.0 - smoothstep(0.8, 1.0, ageRatio));\n    \n    gl_PointSize = smoothstep(1.0, 0.3, ageRatio) * conf_particle_size * fadeInOut;\n    pass_opacity = fadeInOut * 0.6;\n\n    vec2 normalizedPos = (out_kinetic.xy / max(screen_dims, vec2(1.0))) * 2.0 - 1.0;\n    normalizedPos.y = -normalizedPos.y;\n    gl_Position = vec4(normalizedPos, 0.0, 1.0);\n}\n`;const SIMULATION_FS=/* glsl */`#version 300 es\nprecision highp float;\n\nin vec3 out_color;\nin float pass_opacity;\n\nout vec4 fragmentColor;\n\nvoid main() {\n    float distToCenter = length(gl_PointCoord - 0.5);\n    float radialFade = 1.0 - smoothstep(0.2, 0.5, distToCenter);\n    fragmentColor = vec4(out_color, pass_opacity * radialFade);\n}\n`;const BACKDROP_VS=/* glsl */`#version 300 es\nin vec3 position;\nin vec2 uv;\nout vec2 pass_uv;\nvoid main() {\n    pass_uv = uv;\n    gl_Position = vec4(position, 1.0);\n}\n`;const BACKDROP_FS=/* glsl */`#version 300 es\nprecision highp float;\nuniform sampler2D tex_source;\nuniform vec2 tex_scale;\n\nin vec2 pass_uv;\nout vec4 fragmentColor;\n\nvec2 getMappedUV(vec2 rawUV) {\n    return (rawUV - 0.5) * tex_scale + 0.5;\n}\n\nvoid main() {\n    vec2 fixedUV = vec2(pass_uv.x, 1.0 - pass_uv.y);\n    vec4 imgColor = texture(tex_source, getMappedUV(fixedUV));\n    fragmentColor = vec4(imgColor.rgb, 1.0); \n}\n`;// ==========================================\n// ENGINE CLASS\n// ==========================================\nclass ParticleOrchestrator{setupUniforms(){this.uniforms={clock:new this.wtc.Uniform({name:\"global_clock\",value:0,kind:\"float\"}),screenDims:new this.wtc.Uniform({name:\"screen_dims\",value:[1,1],kind:\"float_vec2\"}),cursorPos:new this.wtc.Uniform({name:\"cursor_pos\",value:[0,0],kind:\"float_vec2\"}),cursorForce:new this.wtc.Uniform({name:\"cursor_momentum\",value:[0,0],kind:\"float_vec2\"}),texSource:new this.wtc.Uniform({name:\"tex_source\",value:null,kind:\"texture\"}),texScale:new this.wtc.Uniform({name:\"tex_scale\",value:[1,1],kind:\"float_vec2\"}),noiseFreq:new this.wtc.Uniform({name:\"conf_noise_freq\",value:this.settings.noiseFrequency,kind:\"float\"}),noiseAmp:new this.wtc.Uniform({name:\"conf_noise_amp\",value:this.settings.noiseAmplitude,kind:\"float\"}),pointerPower:new this.wtc.Uniform({name:\"conf_cursor_force\",value:this.settings.cursorForce,kind:\"float\"}),pSize:new this.wtc.Uniform({name:\"conf_particle_size\",value:this.settings.particleSize,kind:\"float\"})};}bindEvents(){this.canvas.addEventListener(\"pointermove\",this.onPointerMove);this.canvas.addEventListener(\"pointerleave\",this.onPointerLeave);this.resizeObserver=new ResizeObserver(this.onResize);this.resizeObserver.observe(this.canvas);// Performance fix: Pause rendering when off-screen to save CPU/GPU\nthis.intersectionObserver=new IntersectionObserver(entries=>{this.isVisible=entries[0].isIntersecting;});this.intersectionObserver.observe(this.canvas);}updateSettings(newSettings){const needsRebuild=this.settings.particlesCount!==newSettings.particlesCount||this.settings.image!==newSettings.image;this.settings={...newSettings,onLoadComplete:newSettings.onLoadComplete,onProgress:newSettings.onProgress};this.uniforms.noiseFreq.value=this.settings.noiseFrequency;this.uniforms.noiseAmp.value=this.settings.noiseAmplitude;this.uniforms.pointerPower.value=this.settings.cursorForce;this.uniforms.pSize.value=this.settings.particleSize;if(needsRebuild&&this.settings.image){this.processImage(this.settings.image);}}updateTexScale(width,height){const viewRatio=Math.max(1,width)/Math.max(1,height);const srcRatio=this.imgW/this.imgH;let scaleX=1;let scaleY=1;if(srcRatio>viewRatio){scaleX=viewRatio/srcRatio;}else{scaleY=srcRatio/viewRatio;}this.uniforms.texScale.value=[scaleX,scaleY];}async processImage(sourceUrl){this.isActive=false;if(this.settings.onLoadComplete)this.settings.onLoadComplete(false);if(this.settings.onProgress)this.settings.onProgress(0);let imgUrl=sourceUrl;if(!sourceUrl.startsWith(\"data:\")&&!sourceUrl.startsWith(\"blob:\")){try{const response=await fetch(sourceUrl);if(response.ok&&response.body){const contentLength=response.headers.get(\"content-length\");const total=contentLength?parseInt(contentLength,10):0;let loaded=0;const reader=response.body.getReader();const chunks=[];while(true){const{done,value}=await reader.read();if(done)break;chunks.push(value);loaded+=value.length;if(total>0&&this.settings.onProgress){this.settings.onProgress(loaded/total);}else if(this.settings.onProgress){this.settings.onProgress(.9*(1-Math.exp(-loaded/1e6)));}}const blob=new Blob(chunks);imgUrl=URL.createObjectURL(blob);}}catch(err){console.warn(\"Progressive fetch failed (CORS), falling back to standard Image load.\",err);}}const imgElement=await new Promise(resolve=>{const i=new Image;if(!imgUrl.startsWith(\"data:\")&&!imgUrl.startsWith(\"blob:\")){i.crossOrigin=\"anonymous\";}i.onload=()=>resolve(i);i.onerror=()=>{console.warn(\"ParticleSystem: Failed to load image URL.\",imgUrl);resolve(null);};i.src=imgUrl;});if(!imgElement)return;this.currentImageCache=imgElement;const textureMap=new this.wtc.Texture(this.ctx,{generateMipmaps:false,minFilter:this.ctx.LINEAR,magFilter:this.ctx.LINEAR,wrapS:this.ctx.CLAMP_TO_EDGE,wrapT:this.ctx.CLAMP_TO_EDGE,flipY:false});textureMap.image=imgElement;textureMap.needsUpdate=true;this.uniforms.texSource.value=textureMap;this.rebuildGeometry(imgElement);this.prevTimestamp=performance.now();this.isActive=true;if(this.settings.onProgress)this.settings.onProgress(1);requestAnimationFrame(()=>{if(this.settings.onLoadComplete)this.settings.onLoadComplete(true);});if(!this.animationFrameId){this.animationFrameId=requestAnimationFrame(this.renderLoop);}}rebuildGeometry(imgData){this.imgW=Math.max(1,imgData.naturalWidth||imgData.width||1);this.imgH=Math.max(1,imgData.naturalHeight||imgData.height||1);// Update pre-calculated texture scaling uniforms\nthis.updateTexScale(this.canvas.clientWidth,this.canvas.clientHeight);const canvas2d=document.createElement(\"canvas\");canvas2d.width=this.imgW;canvas2d.height=this.imgH;const ctx2d=canvas2d.getContext(\"2d\",{willReadFrequently:true});if(!ctx2d)return;ctx2d.drawImage(imgData,0,0);let rawPixels;try{rawPixels=ctx2d.getImageData(0,0,this.imgW,this.imgH).data;}catch(err){console.warn(\"ParticleSystem: CORS error, cannot extract colors. Using fallback.\");rawPixels=new Uint8ClampedArray(this.imgW*this.imgH*4);for(let i=0;i<rawPixels.length;i+=4){rawPixels[i]=120;rawPixels[i+1]=120;rawPixels[i+2]=120;rawPixels[i+3]=255;}}const count=this.settings.particlesCount;const[viewW,viewH]=this.uniforms.screenDims.value;const safeViewW=Math.max(1,viewW);const safeViewH=Math.max(1,viewH);const viewRatio=safeViewW/safeViewH;const srcRatio=this.imgW/this.imgH;const bufferKinetic=new Float32Array(count*4);const bufferLifecycle=new Float32Array(count*4);const bufferColor=new Float32Array(count*3);const initialPositions=new Float32Array(count*2);for(let idx=0;idx<count;idx++){const startX=Math.random()*safeViewW;const startY=Math.random()*safeViewH;const lifespan=80+Math.random()*250;const pIdx=idx*4;const cIdx=idx*3;bufferKinetic[pIdx]=startX;bufferKinetic[pIdx+1]=startY;bufferKinetic[pIdx+2]=(Math.random()-.5)*.3;bufferKinetic[pIdx+3]=(Math.random()-.5)*.3;bufferLifecycle[pIdx]=Math.random()*lifespan;bufferLifecycle[pIdx+1]=lifespan;bufferLifecycle[pIdx+2]=Math.random()*2-1;bufferLifecycle[pIdx+3]=Math.random()*2-1;let u=startX/safeViewW;let v=startY/safeViewH;if(srcRatio>viewRatio){u=(u-.5)*(viewRatio/srcRatio)+.5;}else{v=(v-.5)*(srcRatio/viewRatio)+.5;}u=Math.max(0,Math.min(1,u));v=Math.max(0,Math.min(1,v));const pixX=Math.min(Math.floor(u*this.imgW),this.imgW-1);const pixY=Math.min(Math.floor(v*this.imgH),this.imgH-1);const flatIdx=(pixY*this.imgW+pixX)*4;bufferColor[cIdx]=rawPixels[flatIdx]/255;bufferColor[cIdx+1]=rawPixels[flatIdx+1]/255;bufferColor[cIdx+2]=rawPixels[flatIdx+2]/255;initialPositions[idx*2]=startX;initialPositions[idx*2+1]=startY;}this.constructRenderGraph(bufferKinetic,bufferLifecycle,bufferColor,initialPositions,count);}constructRenderGraph(kinetics,lifecycle,colors,initPos,count){const bgShader=new this.wtc.Program(this.ctx,{vertex:BACKDROP_VS,fragment:BACKDROP_FS,uniforms:{tex_source:this.uniforms.texSource,screen_dims:this.uniforms.screenDims,tex_scale:this.uniforms.texScale},depthTest:false});this.backdropElement=new this.wtc.Mesh(this.ctx,{geometry:new this.wtc.Plane(this.ctx,{width:2,height:2}),program:bgShader});const simShader=new this.wtc.Program(this.ctx,{vertex:SIMULATION_VS,fragment:SIMULATION_FS,uniforms:{global_clock:this.uniforms.clock,screen_dims:this.uniforms.screenDims,cursor_pos:this.uniforms.cursorPos,cursor_momentum:this.uniforms.cursorForce,tex_source:this.uniforms.texSource,tex_scale:this.uniforms.texScale,conf_noise_freq:this.uniforms.noiseFreq,conf_noise_amp:this.uniforms.noiseAmp,conf_cursor_force:this.uniforms.pointerPower,conf_particle_size:this.uniforms.pSize},transparent:true,depthTest:false,transformFeedbackVaryings:[\"out_kinetic\",\"out_lifecycle\",\"out_color\"]});const tfHandler=new this.wtc.TransformFeedback(this.ctx,{program:simShader.program,transformFeedbacks:{attr_kinetic:{data:kinetics,size:4,usage:this.ctx.STREAM_COPY,varying:\"out_kinetic\"},attr_lifecycle:{data:lifecycle,size:4,usage:this.ctx.STREAM_COPY,varying:\"out_lifecycle\"},attr_color:{data:colors,size:3,usage:this.ctx.STREAM_COPY,varying:\"out_color\"}}});const geometryCloud=new this.wtc.PointCloud(this.ctx,{particles:count,dimensions:2,fillFunction:points=>{for(let i=0;i<points.length;i++)points[i]=initPos[i];},attributes:{attr_kinetic:new this.wtc.GeometryAttribute({size:4,data:kinetics}),attr_lifecycle:new this.wtc.GeometryAttribute({size:4,data:lifecycle}),attr_color:new this.wtc.GeometryAttribute({size:3,data:colors})},transformFeedbacks:tfHandler});this.swarmElement=new this.wtc.Mesh(this.ctx,{mode:this.ctx.POINTS,geometry:geometryCloud,program:simShader});}destroy(){this.isActive=false;if(this.animationFrameId){cancelAnimationFrame(this.animationFrameId);}this.canvas.removeEventListener(\"pointermove\",this.onPointerMove);this.canvas.removeEventListener(\"pointerleave\",this.onPointerLeave);if(this.resizeObserver){this.resizeObserver.disconnect();}if(this.intersectionObserver){this.intersectionObserver.disconnect();}}constructor(canvas,initialSettings,wtcLib){_define_property(this,\"canvas\",void 0);_define_property(this,\"ctx\",void 0);_define_property(this,\"renderer\",void 0);_define_property(this,\"uniforms\",void 0);_define_property(this,\"settings\",void 0);_define_property(this,\"wtc\",void 0);_define_property(this,\"isActive\",false);_define_property(this,\"isVisible\",true// Track viewport visibility\n);_define_property(this,\"prevTimestamp\",0);_define_property(this,\"cursorTarget\",[-9999,-9999]);_define_property(this,\"cursorPrev\",[-9999,-9999]);_define_property(this,\"cursorMomentum\",[0,0]);_define_property(this,\"currentImageCache\",null);_define_property(this,\"animationFrameId\",null);_define_property(this,\"resizeObserver\",null);_define_property(this,\"intersectionObserver\",null);_define_property(this,\"backdropElement\",void 0);_define_property(this,\"swarmElement\",void 0);_define_property(this,\"dpr\",void 0);_define_property(this,\"imgW\",1);_define_property(this,\"imgH\",1);_define_property(this,\"onPointerMove\",e=>{const bounds=this.canvas.getBoundingClientRect();const scale=this.dpr;if(this.cursorTarget[0]<-9e3){this.cursorPrev[0]=(e.clientX-bounds.left)*scale;this.cursorPrev[1]=(e.clientY-bounds.top)*scale;}this.cursorTarget[0]=(e.clientX-bounds.left)*scale;this.cursorTarget[1]=(e.clientY-bounds.top)*scale;this.uniforms.cursorPos.value=this.cursorTarget;});_define_property(this,\"onPointerLeave\",()=>{const scale=this.dpr;this.cursorTarget[0]=-1e4*scale;this.cursorTarget[1]=-1e4*scale;this.cursorPrev[0]=this.cursorTarget[0];this.cursorPrev[1]=this.cursorTarget[1];this.uniforms.cursorPos.value=this.cursorTarget;this.cursorMomentum[0]=0;this.cursorMomentum[1]=0;});_define_property(this,\"onResize\",entries=>{let width=this.canvas.clientWidth;let height=this.canvas.clientHeight;if(entries&&entries[0]){width=entries[0].contentRect.width;height=entries[0].contentRect.height;}width=Math.max(1,width);height=Math.max(1,height);this.renderer.dimensions=new this.wtc.Vec2(width,height);this.uniforms.screenDims.value=[width*this.dpr,height*this.dpr];this.updateTexScale(width,height);});_define_property(this,\"renderLoop\",timestamp=>{if(!this.isActive)return;this.animationFrameId=requestAnimationFrame(this.renderLoop);// Performance fix: Prevent rendering calculations if canvas is out of viewport\nif(!this.isVisible){this.prevTimestamp=timestamp;return;}const dt=timestamp-this.prevTimestamp;this.prevTimestamp=timestamp;this.uniforms.clock.value+=dt*6e-5;const deltaX=this.cursorTarget[0]-this.cursorPrev[0];const deltaY=this.cursorTarget[1]-this.cursorPrev[1];this.cursorMomentum[0]+=(deltaX-this.cursorMomentum[0])*.12;this.cursorMomentum[1]+=(deltaY-this.cursorMomentum[1])*.12;this.cursorPrev[0]=this.cursorTarget[0];this.cursorPrev[1]=this.cursorTarget[1];this.uniforms.cursorForce.value=this.cursorMomentum;if(this.backdropElement){this.renderer.render({scene:this.backdropElement,update:true,sort:false,frustumCull:false});}else{this.ctx.clearColor(.05,.05,.05,1);this.ctx.clear(this.ctx.COLOR_BUFFER_BIT|this.ctx.DEPTH_BUFFER_BIT);}if(this.swarmElement){this.renderer.render({scene:this.swarmElement,update:true,sort:false,frustumCull:false,clear:false});}});this.canvas=canvas;this.settings={...initialSettings};this.wtc=wtcLib;// Performance fix: Cap DPR at 1.5 to save fill rate on Retina displays\nthis.dpr=Math.min(window.devicePixelRatio||1,1.5);this.renderer=new this.wtc.Renderer({canvas:this.canvas,dpr:this.dpr});this.ctx=this.renderer.gl;this.ctx.depthMask(false);this.ctx.enable(this.ctx.BLEND);this.ctx.blendFunc(this.ctx.SRC_ALPHA,this.ctx.ONE_MINUS_SRC_ALPHA);this.setupUniforms();this.bindEvents();if(this.settings.image){this.processImage(this.settings.image);}else{this.ctx.clearColor(.05,.05,.05,1);this.ctx.clear(this.ctx.COLOR_BUFFER_BIT);}}}export default function FluidCanvas(props){const canvasRef=React.useRef(null);const engineRef=React.useRef(null);const latestProps=React.useRef(props);// UI State for the sleek loader and fade-in\nconst[loadProgress,setLoadProgress]=React.useState(0);const[isLoaded,setIsLoaded]=React.useState(false);const isEditor=RenderTarget.current()===RenderTarget.canvas;React.useEffect(()=>{latestProps.current=props;},[props]);React.useEffect(()=>{if(typeof window===\"undefined\"||isEditor||!canvasRef.current)return;let isMounted=true;const initializeLibrary=async()=>{// A robust fallback system to ensure the library loads successfully\n// The strings are split to bypass Framer's SSG build errors\nconst cdns=[\"https://cdn.js\"+\"delivr.net/npm/w\"+\"tc-gl@1.2.3/+esm\",\"https://es\"+\"m.sh/w\"+\"tc-gl@1.2.3\",\"https://unpkg.com/w\"+\"tc-gl@1.2.3?module\",\"https://cdn.s\"+\"kypack.dev/w\"+\"tc-gl\"];let wtcLib=null;for(const url of cdns){try{const lib=await (0,eval)(`import(\"${url}\")`);// Validate that the loaded module actually contains the required classes\n// This prevents false positives where a non-ESM file successfully \"loads\" but is empty\nif(lib&&lib.Renderer){wtcLib=lib;break;}else{console.warn(`ParticleSystem: Module loaded from ${url} but seems invalid. Trying next...`);}}catch(err){console.warn(`ParticleSystem: Failed to load from ${url}. Trying fallback...`);}}if(!wtcLib){console.error(\"ParticleSystem: Failed to load rendering library from all CDNs.\");return;}if(!isMounted)return;engineRef.current=new ParticleOrchestrator(canvasRef.current,{...latestProps.current,onProgress:setLoadProgress,onLoadComplete:setIsLoaded},wtcLib);};initializeLibrary();return()=>{isMounted=false;if(engineRef.current){engineRef.current.destroy();}};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[isEditor]);React.useEffect(()=>{if(engineRef.current&&!isEditor){engineRef.current.updateSettings({...props,onProgress:setLoadProgress,onLoadComplete:setIsLoaded});}},[props.image,props.particlesCount,props.noiseFrequency,props.noiseAmplitude,props.cursorForce,props.particleSize,isEditor]);if(isEditor){return /*#__PURE__*/_jsx(\"div\",{style:{...containerStyle,...props.style,backgroundImage:props.image?`url(${props.image})`:\"none\",backgroundSize:\"cover\",backgroundPosition:\"center\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",color:\"rgba(255, 255, 255, 0.4)\",fontFamily:\"sans-serif\"},children:!props.image&&\"Upload Image in Properties\"});}const circleRadius=14;const circleCircumference=2*Math.PI*circleRadius;const dashOffset=circleCircumference-loadProgress*circleCircumference;return /*#__PURE__*/_jsxs(\"div\",{style:{...containerStyle,...props.style},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",opacity:isLoaded?0:1,transition:\"opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1)\",pointerEvents:\"none\",zIndex:10},children:/*#__PURE__*/_jsxs(\"svg\",{width:\"40\",height:\"40\",viewBox:\"0 0 40 40\",style:{transform:\"rotate(-90deg)\"},children:[/*#__PURE__*/_jsx(\"circle\",{cx:\"20\",cy:\"20\",r:circleRadius,fill:\"none\",stroke:\"rgba(0, 0, 0, 0.1)\",strokeWidth:\"2\"}),/*#__PURE__*/_jsx(\"circle\",{cx:\"20\",cy:\"20\",r:circleRadius,fill:\"none\",stroke:\"#000000\",strokeWidth:\"2\",strokeDasharray:circleCircumference,strokeDashoffset:dashOffset,strokeLinecap:\"round\",style:{transition:\"stroke-dashoffset 0.15s ease-out\"}})]})}),/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{...canvasStyle,opacity:isLoaded?1:0,transition:\"opacity 1.5s cubic-bezier(0.16, 1, 0.3, 1)\"}})]});}const containerStyle={width:\"100%\",height:\"100%\",display:\"block\",overflow:\"hidden\",position:\"relative\",backgroundColor:\"#ffffff\"};const canvasStyle={width:\"100%\",height:\"100%\",display:\"block\",position:\"absolute\",top:0,left:0};addPropertyControls(FluidCanvas,{image:{type:ControlType.Image,title:\"Image\"},particlesCount:{type:ControlType.Number,title:\"Max Particles\",defaultValue:2e5,min:1e4,max:1e6,step:1e4},particleSize:{type:ControlType.Number,title:\"Particle Size\",defaultValue:5.49,min:1,max:10,step:.1,displayStepper:true},noiseFrequency:{type:ControlType.Number,title:\"Noise Freq\",defaultValue:.001,min:.001,max:.015,step:.001,displayStepper:true},noiseAmplitude:{type:ControlType.Number,title:\"Noise Force\",defaultValue:.03021,min:.01,max:.2,step:.001,displayStepper:true},cursorForce:{type:ControlType.Number,title:\"Cursor Push\",defaultValue:.059,min:0,max:.5,step:.001,displayStepper:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FluidCanvas\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"FluidCanvasProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Particles_Image.map","// Generated by Framer (0f5ea8b)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"GF;Funnel Sans-regular\",\"GF;Funnel Sans-700\",\"GF;Funnel Sans-700italic\",\"GF;Funnel Sans-italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNfno8Dg9bX6Bsp3Wq69RB-VukSVv3aISFAlXmEe29NnDyL7w.woff2\",weight:\"400\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNfno8Dg9bX6Bsp3Wq69RB-VukSVv3aISFAcn6Ee29NnDyL7w.woff2\",weight:\"700\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"italic\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNZno8Dg9bX6Bsp3Wq69Tp3ZBbKP5ZAjyZVXTqLOmVMvjmb76XZ.woff2\",weight:\"700\"},{cssFamilyName:\"Funnel Sans\",source:\"google\",style:\"italic\",uiFamilyName:\"Funnel Sans\",url:\"https://fonts.gstatic.com/s/funnelsans/v3/OpNZno8Dg9bX6Bsp3Wq69Tp3ZBbKP5ZAjyZVXTpsPWVMvjmb76XZ.woff2\",weight:\"400\"}]}];export const css=['.framer-rnivj .framer-styles-preset-1j3wtr:not(.rich-text-wrapper), .framer-rnivj .framer-styles-preset-1j3wtr.rich-text-wrapper p { --framer-font-family: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-bold: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-family-italic: \"Funnel Sans\", \"Funnel Sans Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 20px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: -0.1px; --framer-line-height: 26px; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: #000000; --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }'];export const className=\"framer-rnivj\";\nexport const __FramerMetadata__ = {\"exports\":{\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useEffect,useRef,useState}from\"react\";/**\n * @framerDisableUnlink\n */export default function OptimizedSmoothScroll(props){// Destructure props at the top level\nconst{intensity=10,enabled=true,disableOnTouch=true}=props;// Component state\nconst lenisRef=useRef(null);const[isLenisLoaded,setIsLenisLoaded]=useState(false);const rafRef=useRef(null);const[isTouchDevice,setIsTouchDevice]=useState(false);const[isOverlayOpen,setIsOverlayOpen]=useState(false);const isInitialLoadRef=useRef(true);const lastScrollPosition=useRef(0);// Check if the device is a touch device - function defined outside hooks\nconst checkTouchDevice=()=>{if(typeof window!==\"undefined\"){return\"ontouchstart\"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0;}return false;};// Set touch device state on first render\nuseEffect(()=>{setIsTouchDevice(checkTouchDevice());},[]);// Determine if smooth scroll should be active\n// Now it also considers if an overlay is open\nconst shouldActivate=enabled&&!(disableOnTouch&&isTouchDevice)&&!isOverlayOpen;// Priority load styles to ensure smooth scroll is active from the start\nuseEffect(()=>{const addInitialStyles=()=>{// Add initial styles to ensure smooth scrolling is active from the start\nconst styleEl=document.createElement(\"style\");styleEl.id=\"lenis-initial-styles\";styleEl.innerHTML=`\n                html.lenis {\n                    height: auto;\n                }\n                \n                .lenis.lenis-smooth {\n                    scroll-behavior: auto !important;\n                }\n                \n                .lenis.lenis-smooth [data-lenis-prevent] {\n                    overscroll-behavior: contain;\n                }\n                \n                .lenis.lenis-stopped {\n                    overflow: hidden;\n                }\n                \n                .lenis.lenis-scrolling iframe {\n                    pointer-events: none;\n                }\n            `;document.head.appendChild(styleEl);return()=>{const existingStyle=document.getElementById(\"lenis-initial-styles\");if(existingStyle){existingStyle.remove();}};};// If we should activate, add styles right away\nif(shouldActivate){return addInitialStyles();}},[shouldActivate]);// Dynamically load Lenis to avoid issues during initial rendering\nuseEffect(()=>{if(!shouldActivate)return;let isMounted=true;// Load Lenis dynamically\nconst loadLenis=async()=>{try{// Use dynamic import to load Lenis only when needed\nconst Lenis=(await import(\"@studio-freight/lenis\")).default;if(isMounted){// Initialize Lenis with smoother settings\nlenisRef.current=new Lenis({duration:intensity/10,smoothWheel:true,syncTouch:!disableOnTouch,touchMultiplier:2,wheelMultiplier:1.5,orientation:\"vertical\",gestureOrientation:\"vertical\",smoothTouch:!disableOnTouch,easing:t=>Math.min(1,1.001-Math.pow(2,-10*t)),immediate:false});// Start the lenis instance immediately\nlenisRef.current.start();// Make sure to set up RAF loop immediately\nconst raf=time=>{if(lenisRef.current){lenisRef.current.raf(time);}rafRef.current=requestAnimationFrame(raf);};rafRef.current=requestAnimationFrame(raf);setIsLenisLoaded(true);}}catch(error){console.warn(\"Failed to load Lenis:\",error);}};// Load Lenis with higher priority\nsetTimeout(loadLenis,0);return()=>{isMounted=false;// Proper cleanup\nif(lenisRef.current){lenisRef.current.destroy();lenisRef.current=null;}if(rafRef.current){cancelAnimationFrame(rafRef.current);rafRef.current=null;}setIsLenisLoaded(false);};},[shouldActivate,intensity,disableOnTouch]);// Set up animation loop only when Lenis is loaded - Now this is handled in the initialization\nuseEffect(()=>{// Only handle stopping the RAF loop here, starting is done in the init\nif(!isLenisLoaded||!shouldActivate)return;return()=>{if(rafRef.current){cancelAnimationFrame(rafRef.current);rafRef.current=null;}};},[isLenisLoaded,shouldActivate]);// Only reset scroll position on initial load, not when closing overlay\nuseEffect(()=>{if(lenisRef.current&&isLenisLoaded){if(isInitialLoadRef.current){lenisRef.current.scrollTo(0,{immediate:true});isInitialLoadRef.current=false;}}},[isLenisLoaded]);// Save scroll position periodically\nuseEffect(()=>{if(!shouldActivate)return;const saveScrollPosition=()=>{lastScrollPosition.current=window.scrollY;};// Save position every 300ms\nconst interval=setInterval(saveScrollPosition,300);// Also save on scroll\nwindow.addEventListener(\"scroll\",saveScrollPosition,{passive:true});return()=>{clearInterval(interval);window.removeEventListener(\"scroll\",saveScrollPosition);};},[shouldActivate]);// Handle overlays and modals - Enhanced version\nuseEffect(()=>{// Function to check if overlay is open\nconst checkOverlayState=()=>{const overlayElement=document.getElementById(\"overlay\");if(overlayElement){// Check if the overlay has children (which means it's active)\nconst hasChildren=overlayElement.children.length>0;// Only update if the state actually changed to prevent unnecessary effects\nif(hasChildren!==isOverlayOpen){setIsOverlayOpen(hasChildren);if(hasChildren){// If overlay is opened, save current position first\nlastScrollPosition.current=window.scrollY;// Then stop Lenis\nif(lenisRef.current){lenisRef.current.stop();}}else if(enabled&&!(disableOnTouch&&isTouchDevice)){// If overlay is closed and should be active, restart Lenis\nif(lenisRef.current){// Get saved position before restart\nconst savedPosition=lastScrollPosition.current;lenisRef.current.start();// After a small delay, restore position\nsetTimeout(()=>{window.scrollTo({top:savedPosition,behavior:\"auto\"});},10);}}}}};// Run the check immediately\ncheckOverlayState();// Observe changes to the overlay element\nconst overlayElement=document.getElementById(\"overlay\");if(overlayElement){const observer=new MutationObserver(()=>{checkOverlayState();});observer.observe(overlayElement,{childList:true});return()=>{observer.disconnect();};}// Also observe the HTML element for overflow changes\n// This catches modals that might not use the overlay element\nconst htmlElement=document.documentElement;const bodyObserver=new MutationObserver(()=>{const isOverflowHidden=window.getComputedStyle(htmlElement).overflow===\"hidden\";if(isOverflowHidden){// Save position before stopping\nlastScrollPosition.current=window.scrollY;if(lenisRef.current){lenisRef.current.stop();}}else if(enabled&&!(disableOnTouch&&isTouchDevice)&&!isOverlayOpen){if(lenisRef.current){// Get saved position\nconst savedPosition=lastScrollPosition.current;lenisRef.current.start();// Restore position\nsetTimeout(()=>{window.scrollTo({top:savedPosition,behavior:\"auto\"});},10);}}});bodyObserver.observe(htmlElement,{attributes:true,attributeFilter:[\"style\"]});return()=>{bodyObserver.disconnect();};},[isOverlayOpen,enabled,disableOnTouch,isTouchDevice]);// Debug info for development purposes\nconst debugInfo=process.env.NODE_ENV===\"development\"?/*#__PURE__*/_jsxs(\"div\",{style:{display:\"none\"},children:[`Touch device: ${isTouchDevice?\"Yes\":\"No\"}`,`Smooth scroll active: ${shouldActivate?\"Yes\":\"No\"}`,`Overlay open: ${isOverlayOpen?\"Yes\":\"No\"}`,`Last scroll position: ${lastScrollPosition.current}`]}):null;return /*#__PURE__*/_jsxs(_Fragment,{children:[debugInfo,isLenisLoaded&&shouldActivate&&/*#__PURE__*/_jsx(\"style\",{children:`\n                    html.lenis {\n                        height: auto;\n                    }\n                    \n                    .lenis.lenis-smooth {\n                        scroll-behavior: auto !important;\n                    }\n                    \n                    .lenis.lenis-smooth [data-lenis-prevent] {\n                        overscroll-behavior: contain;\n                    }\n                    \n                    .lenis.lenis-stopped {\n                        overflow: hidden;\n                    }\n                    \n                    .lenis.lenis-scrolling iframe {\n                        pointer-events: none;\n                    }\n                    `})]});}OptimizedSmoothScroll.displayName=\"Smooth Scroll\";addPropertyControls(OptimizedSmoothScroll,{intensity:{title:\"Intensity\",type:ControlType.Number,defaultValue:10,min:1,max:20,step:1},enabled:{title:\"Enabled\",type:ControlType.Boolean,defaultValue:true},disableOnTouch:{title:\"Disable on touch devices\",type:ControlType.Boolean,defaultValue:true,description:\"Smooth Scroll v4 automatically disables smooth scrolling on phones and tablets and is now enhanced to disable automatically when overlays are open.\\n\\nBy [Andr\\xe9s Marciales](https://www.x.com/aamarciales)\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"OptimizedSmoothScroll\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SmoothScroll.map","// Generated by Framer (56ce7df)\nexport default function metadata(params,activeLocale){return{description:\"Framer Template for Modern Digital/Creative Agencies, Studios, Designers and Small Teams.\",favicon:\"https://framerusercontent.com/assets/uGRAp8supPvhoUPaFg224ylEEs.png\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/dyfBqUMCtGSKEbj84DEiwHlZqU.jpg\",title:\"Mondragon 2 –\\xa0Framer Template for Modern Digital/Creative Agencies\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}