{"version":3,"file":"shared-lib.BC12tvkV.mjs","names":["useRef","Fragment","useRef","useState","overlayElement","_Fragment"],"sources":["https:/framerusercontent.com/modules/a1J1kubo7chY0ckqeTmc/y9cjCxGZjxTer9nMbW73/vFXhi0SXd.js","https:/framerusercontent.com/modules/D75h9oxNgJByzSe5UfeV/uTDdtr6in7NWbmAEyfbn/TextScrollReveal.js","https:/framerusercontent.com/modules/ntjOMWq8fq4aggcR8NwN/AB1wYHA1oRikaNcIdyXd/Smooth_scroll.js","https:/framerusercontent.com/modules/3B23Qe6uzJeL0IsxT0qT/vI0qavcRzDf93WPBmw4d/siteMetadata.js"],"sourcesContent":["// Generated by Framer (808fccf)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"CUSTOM;Acid Grotesk Regular\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Acid Grotesk Regular\",source:\"custom\",style:\"normal\",uiFamilyName:\"Acid Grotesk\",url:\"https://framerusercontent.com/assets/tNxXc5M9GmHxgSLPeZZ0G88EWU.woff2\",weight:\"400\"}]}];export const css=[\".framer-PN8Ge .framer-styles-preset-1kuba1m:not(.rich-text-wrapper), .framer-PN8Ge .framer-styles-preset-1kuba1m.rich-text-wrapper p { --framer-font-family: \\\"Acid Grotesk Regular\\\", \\\"Acid Grotesk Regular Placeholder\\\", sans-serif; --framer-font-open-type-features: 'blwf' on, 'cv09' on, 'cv03' on, 'cv04' on, 'cv11' on; --framer-font-size: 16px; --framer-font-style: normal; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-letter-spacing: 0em; --framer-line-height: 1.5em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-5833eca8-39c5-453d-9cae-84944e6b8604, #e1e0e0); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; --framer-text-wrap: balance; }\"];export const className=\"framer-PN8Ge\";\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\"}}}","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{motion,useScroll,useTransform,useSpring}from\"framer-motion\";import{useRef,Fragment}from\"react\";/**\n * @framerDisableUnlink\n *\n * @framerSupportedLayoutWidth any-prefer\n * @framerIntrinsicWidth 600\n * @framerSupportedLayoutHeight any-prefer\n * @framerIntrinsicHeight 300\n */export default function TextScrollReveal({text,type,font,color,htmlTag,opacity:{minOpacity,maxOpacity},style,appear:{start,end,transition}}){const container=useRef(null);const{scrollYProgress}=useScroll({target:container,offset:[`0 ${start}`,`0 ${end}`]});const words=text.split(\" \");const Tag=htmlTag;return /*#__PURE__*/_jsx(Tag,{ref:container,style:{...style,textAlign:font.textAlign},children:words.map((word,wordIndex)=>{return /*#__PURE__*/_jsx(Fragment,{children:type===\"word\"?/*#__PURE__*/_jsx(Word,{word:word,wordIndex:wordIndex,numberOfWords:words.length,scrollYProgress:scrollYProgress,minOpacity:minOpacity,maxOpacity:maxOpacity,style:{color,fontWeight:\"normal\",...font},transition:transition}):/*#__PURE__*/_jsx(Character,{word:word,wordIndex:wordIndex,numberOfWords:words.length,scrollYProgress:scrollYProgress,minOpacity:minOpacity,maxOpacity:maxOpacity,style:{color,fontWeight:\"normal\",...font},transition:transition})},word+wordIndex);})});}const Character=({word,wordIndex,numberOfWords,scrollYProgress,minOpacity,maxOpacity,style,transition})=>{const wordStart=wordIndex/numberOfWords;const wordEnd=wordStart+1/numberOfWords;return /*#__PURE__*/_jsxs(motion.span,{style:style,children:[word.split(\"\").map((char,charIndex)=>{const charStart=wordStart+charIndex/word.length*(wordEnd-wordStart);const charEnd=wordStart+(charIndex+1)/word.length*(wordEnd-wordStart);const scaleY=useSpring(scrollYProgress,transition);const opacity=useTransform(scaleY,[charStart,charEnd],[minOpacity,maxOpacity]);return /*#__PURE__*/_jsx(motion.span,{style:{opacity,...style},children:char},`${wordIndex}-${charIndex}`);}),wordIndex<numberOfWords-1&&\" \"]},word+wordIndex);};const Word=({word,wordIndex,numberOfWords,scrollYProgress,minOpacity,maxOpacity,style,transition})=>{const wordStart=wordIndex/numberOfWords;const wordEnd=wordStart+1/numberOfWords;const scaleY=useSpring(scrollYProgress,transition);const opacity=useTransform(scaleY,[wordStart,wordEnd],[minOpacity,maxOpacity]);return /*#__PURE__*/_jsxs(motion.span,{style:{opacity,...style},children:[word,wordIndex<numberOfWords-1&&\" \"]},word+wordIndex);};TextScrollReveal.displayName=\"Text Scroll Reveal\";addPropertyControls(TextScrollReveal,{text:{title:\"Text\",type:ControlType.String,displayTextArea:true,defaultValue:\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\"},htmlTag:{type:ControlType.Enum,title:\"Tag\",defaultValue:\"h1\",options:[\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"span\",\"p\"],optionTitles:[\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"span\",\"p\"]},type:{title:\"Type\",type:ControlType.Enum,defaultValue:\"word\",options:[\"word\",\"character\"],optionTitles:[\"Word\",\"Character\"]},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\"},color:{title:\"Color\",type:ControlType.Color,defaultValue:\"#000\"},opacity:{title:\"Opacity\",type:ControlType.Object,controls:{minOpacity:{title:\"Min\",type:ControlType.Number,defaultValue:.2,min:0,max:1,step:.1,displayStepper:true},maxOpacity:{title:\"Max\",type:ControlType.Number,defaultValue:1,min:0,max:1,step:.1,displayStepper:true}}},appear:{title:\"Appear\",type:ControlType.Object,controls:{start:{title:\"Start\",type:ControlType.Enum,defaultValue:\"1\",options:[\"1\",\"0.75\",\"0.5\"],optionTitles:[\"Bottom\",\"Bottom/Center\",\"Center\"]},end:{title:\"End\",type:ControlType.Enum,defaultValue:\"0\",options:[\"0\",\"0.25\",\"0.5\"],optionTitles:[\"Top\",\"Top/Center\",\"Center\"]},transition:{title:\"Transition\",type:ControlType.Transition}},description:\"Full tutorial on [FramerMart](https://framermart.com)\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TextScrollReveal\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer\",\"framerIntrinsicWidth\":\"600\",\"framerDisableUnlink\":\"*\",\"framerSupportedLayoutHeight\":\"any-prefer\",\"framerIntrinsicHeight\":\"300\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TextScrollReveal.map","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\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"OptimizedSmoothScroll\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Smooth_scroll.map","// Generated by Framer (cd22f02)\nexport default function metadata(params,activeLocale){return{description:\"Always Connected\",favicon:\"https://framerusercontent.com/assets/ka7ZaCc6VqQdc24hfT5COuOzrSc.png\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/eWV8BzXZllp7CWBEvidVtBI8.png\",title:\"Hoplynk\"};}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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"}