{"version":3,"file":"shared-lib.DnJS0E-m.mjs","names":["fonts","css","className","useRef","useState","overlayElement","_Fragment"],"sources":["https:/framerusercontent.com/modules/1R6tXJPSILhvWdyoDfrH/4mib3oawHhFsANtQl3YW/diqAQm8b4.js","https:/framerusercontent.com/modules/6LkykHNU4s7lRP4Zdltt/G4qgxhptiYl9FIgzzTtx/SXxpl9onw.js","https:/framerusercontent.com/modules/d1dpbpF7eWnaDMhbXZFR/hsIceIG7b82ewTahN4HO/Smooth_Scroll.js","https:/framerusercontent.com/modules/uJKRDHpM57ynjnXarLdv/VZVL6wnRLxkreSYqZVie/siteMetadata.js"],"sourcesContent":["// Generated by Framer (3bdc3c5)\nimport{fontStore}from\"framer\";fontStore.loadFonts([]);export const fonts=[{explicitInter:true,fonts:[]}];export const css=[\".framer-aAits .framer-styles-preset-1k8uo92:not(.rich-text-wrapper), .framer-aAits .framer-styles-preset-1k8uo92.rich-text-wrapper a { --framer-link-current-text-color: var(--token-8e40c9bb-798b-4b01-b44f-6ce860eedadb, #ffffff); --framer-link-current-text-decoration: none; --framer-link-hover-text-color: var(--token-8e40c9bb-798b-4b01-b44f-6ce860eedadb, #ffffff); --framer-link-hover-text-decoration: none; --framer-link-text-color: var(--token-8e40c9bb-798b-4b01-b44f-6ce860eedadb, #ffffff); --framer-link-text-decoration: none; transition-delay: 0s; transition-duration: 0.6s; transition-property: color; transition-timing-function: cubic-bezier(0.34, 0, 0, 1); }\"];export const className=\"framer-aAits\";\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 (c126521)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"GF;Onest-500\",\"GF;Onest-700\"]);export const fonts=[{explicitInter:true,fonts:[{family:\"Onest\",source:\"google\",style:\"normal\",url:\"https://fonts.gstatic.com/s/onest/v6/gNMZW3F-SZuj7zOT0IfSjTS16cPhxx-ZtxFMQWXgSQ.woff2\",weight:\"500\"},{family:\"Onest\",source:\"google\",style:\"normal\",url:\"https://fonts.gstatic.com/s/onest/v6/gNMZW3F-SZuj7zOT0IfSjTS16cPhEhiZtxFMQWXgSQ.woff2\",weight:\"700\"}]}];export const css=['.framer-DbkKh .framer-styles-preset-dzur94:not(.rich-text-wrapper), .framer-DbkKh .framer-styles-preset-dzur94.rich-text-wrapper h2 { --framer-font-family: \"Onest\", \"Onest Placeholder\", sans-serif; --framer-font-family-bold: \"Onest\", \"Onest Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 72px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-variation-axes: normal; --framer-font-weight: 500; --framer-font-weight-bold: 700; --framer-letter-spacing: -0.07em; --framer-line-height: 1.1em; --framer-paragraph-spacing: 40px; --framer-text-alignment: start; --framer-text-color: var(--token-bb407a59-7892-4758-ae44-34831ff9d303, #0c120c); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }','@media (max-width: 1799px) and (min-width: 1440px) { .framer-DbkKh .framer-styles-preset-dzur94:not(.rich-text-wrapper), .framer-DbkKh .framer-styles-preset-dzur94.rich-text-wrapper h2 { --framer-font-family: \"Onest\", \"Onest Placeholder\", sans-serif; --framer-font-family-bold: \"Onest\", \"Onest Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 60px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-variation-axes: normal; --framer-font-weight: 500; --framer-font-weight-bold: 700; --framer-letter-spacing: -0.07em; --framer-line-height: 1.1em; --framer-paragraph-spacing: 40px; --framer-text-alignment: start; --framer-text-color: var(--token-bb407a59-7892-4758-ae44-34831ff9d303, #0c120c); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }','@media (max-width: 1439px) and (min-width: 700px) { .framer-DbkKh .framer-styles-preset-dzur94:not(.rich-text-wrapper), .framer-DbkKh .framer-styles-preset-dzur94.rich-text-wrapper h2 { --framer-font-family: \"Onest\", \"Onest Placeholder\", sans-serif; --framer-font-family-bold: \"Onest\", \"Onest Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 52px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-variation-axes: normal; --framer-font-weight: 500; --framer-font-weight-bold: 700; --framer-letter-spacing: -0.07em; --framer-line-height: 1.1em; --framer-paragraph-spacing: 40px; --framer-text-alignment: start; --framer-text-color: var(--token-bb407a59-7892-4758-ae44-34831ff9d303, #0c120c); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }','@media (max-width: 699px) and (min-width: 0px) { .framer-DbkKh .framer-styles-preset-dzur94:not(.rich-text-wrapper), .framer-DbkKh .framer-styles-preset-dzur94.rich-text-wrapper h2 { --framer-font-family: \"Onest\", \"Onest Placeholder\", sans-serif; --framer-font-family-bold: \"Onest\", \"Onest Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 44px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-variation-axes: normal; --framer-font-weight: 500; --framer-font-weight-bold: 700; --framer-letter-spacing: -0.07em; --framer-line-height: 1.1em; --framer-paragraph-spacing: 40px; --framer-text-alignment: start; --framer-text-color: var(--token-bb407a59-7892-4758-ae44-34831ff9d303, #0c120c); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }'];export const className=\"framer-DbkKh\";\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\"}}}","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\":{\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Smooth_Scroll.map","// Generated by Framer (c99c261)\nexport default function metadata(params,activeLocale){return{description:\"Fyris AI - Vi hj\\xe4lper f\\xf6retag implementera AI-l\\xf6sningar som ger verkliga resultat. Experter p\\xe5 praktisk AI-integration, processoptimering och datadriven utveckling.\",favicon:\"https://framerusercontent.com/assets/j9P10odRqKpiGxQYq6gHp9UIOw.svg\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/5l9eolXRZHNSLJXAPbty3ecZ8.png\",title:\"Fyris AI Consulting\"};}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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"}