{"version":3,"file":"Preloader.DNIrjGfi.mjs","names":["_Fragment"],"sources":["https:/framerusercontent.com/modules/QvwPyLIZt8BSb4Nw52mB/ro7cKAQkTQb3sAQhReES/Preloader.js"],"sourcesContent":["/**\n * Optimized Lottie-based Preloader Component\n *\n * Features:\n * - Instant appearance with no loading delays\n * - Automatic dark/light mode adaptation\n * - Responsive sizing WITHOUT reload on viewport change\n * - Configurable animation speed and duration\n * - Hardware-accelerated animations\n *\n * Performance Strategy:\n * - Size is determined ONCE on initial mount based on viewport\n * - No re-renders or reloads when browser is resized\n * - Uses viewport-relative sizes (vw) for responsive scaling\n * - This ensures smooth, uninterrupted preloader experience\n *\n * @framerSupportedLayoutWidth fill\n * @framerSupportedLayoutHeight fill\n */import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useState,useRef,useCallback,useMemo}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{motion,AnimatePresence}from\"framer-motion\";// ---------------- Intercom helpers (CSS fade + API update) ----------------\nconst injectIntercomFadeStyle=()=>{try{const styleId=\"sc-intercom-fade-style\";if(document.getElementById(styleId))return;const style=document.createElement(\"style\");style.id=styleId;style.textContent=`\n            /* Subtle fade for Intercom launcher */\n            #intercom-container,\n            .intercom-lightweight-app,\n            .intercom-launcher-frame,\n            .intercom-launcher {\n                transition: opacity 220ms cubic-bezier(0.22, 0.61, 0.36, 1) !important;\n            }\n            html.sc-hide-intercom #intercom-container,\n            html.sc-hide-intercom .intercom-lightweight-app,\n            html.sc-hide-intercom .intercom-launcher-frame,\n            html.sc-hide-intercom .intercom-launcher {\n                opacity: 0 !important;\n                pointer-events: none !important;\n            }\n        `;document.head.appendChild(style);}catch{}};const setIntercomLauncherHidden=hidden=>{try{const IntercomFn=window.Intercom;if(typeof IntercomFn===\"function\"){IntercomFn(\"update\",{hide_default_launcher:hidden,hideDefaultLauncher:hidden});}}catch{}};// Global function to unlock scroll (can be called from component)\nif(typeof window!==\"undefined\"){window.__unlockPreloaderScroll=()=>{if(window.__preloaderScrollLocked){const scrollY=window.__preloaderScrollY||0;document.documentElement.style.overflow=\"\";document.body.style.overflow=\"\";document.body.style.position=\"\";document.body.style.width=\"\";document.body.style.top=\"\";document.body.offsetHeight;window.scrollTo(0,scrollY);window.__preloaderScrollLocked=false;window.__preloaderScrollY=undefined;}};}// Immediately lock scroll on page load (but not in Framer canvas)\n// This runs before React renders to prevent any scroll flash\nif(typeof window!==\"undefined\"&&!window.__preloaderScrollLocked&&typeof RenderTarget!==\"undefined\"&&RenderTarget.current()!==RenderTarget.canvas){// Ensure Intercom is hidden from the very first paint while preloader is active\ntry{injectIntercomFadeStyle();document.documentElement.classList.add(\"sc-hide-intercom\");// Also request Intercom to hide its default launcher when available\nsetTimeout(()=>setIntercomLauncherHidden(true),0);}catch{}window.__preloaderScrollLocked=true;const scrollY=window.scrollY;document.documentElement.style.overflow=\"hidden\";document.body.style.overflow=\"hidden\";document.body.style.position=\"fixed\";document.body.style.width=\"100%\";document.body.style.top=`-${scrollY}px`;// Note: No longer setting pointer-events on body - handled by component overlay\nwindow.__preloaderScrollY=scrollY;}// Global flag to persist animation size across potential remounts\nlet globalAnimationSize=null;let globalInitialViewport=null;let globalPreloaderMounted=false;let globalPreloaderKey=null;let globalPropSignature=null;export default function Preloader(props){const{lottieFile=\"\",duration=2e3,fadeOutDuration=500,backgroundColor=\"#000000\",animationSizeLarge=12,animationSizeDesktop=12,animationSizeTablet=12,animationSizeMobile=15}=props;// Check if we're in Framer canvas\nconst isCanvas=RenderTarget.current()===RenderTarget.canvas;// Check if component is hidden via Framer visibility\nconst isHiddenByFramer=props.style?.display===\"none\"||props.style?.visibility===\"hidden\";// Start with preloader visible immediately (but not in canvas or if hidden by Framer)\nconst[isVisible,setIsVisible]=useState(!isCanvas&&!isHiddenByFramer);const[hasUnlockedScroll,setHasUnlockedScroll]=useState(false);const[isFadingOut,setIsFadingOut]=useState(false);const[hasAnimationCompleted,setHasAnimationCompleted]=useState(false);const[isDarkMode,setIsDarkMode]=useState(false);const[intercomHideApplied,setIntercomHideApplied]=useState(true)// hidden from start\n;const lottieContainerRef=useRef(null);const timeoutRef=useRef(null);const lottiePlayerRef=useRef(null);// Create a signature from props to detect changes\nconst propSignature=`${animationSizeLarge}-${animationSizeDesktop}-${animationSizeTablet}-${animationSizeMobile}`;// Determine animation size based on initial viewport - ONCE per page load\nconst getInitialAnimationSize=useCallback(()=>{if(typeof window===\"undefined\")return animationSizeDesktop;const currentWidth=window.innerWidth;// If props have changed, invalidate cache\nif(globalPropSignature!==propSignature){globalAnimationSize=null;globalInitialViewport=null;globalPropSignature=propSignature;}// If we have a stored size and viewport hasn't changed significantly, use it\nif(globalAnimationSize!==null&&globalInitialViewport!==null){const viewportChange=Math.abs(currentWidth-globalInitialViewport);// Only recalculate if viewport changed by more than 100px\nif(viewportChange<100){return globalAnimationSize;}}// Calculate and store the size - fixed to match CSS breakpoints\nlet size;if(currentWidth>=1920){size=animationSizeLarge;}else if(currentWidth>=1201){size=animationSizeDesktop;}else if(currentWidth>=811){size=animationSizeTablet;}else{size=animationSizeMobile;}// Debug logging in development\nif(typeof window!==\"undefined\"&&window.location.hostname===\"localhost\"){console.log(\"Preloader size calculation:\",{currentWidth,selectedSize:size,sizes:{animationSizeLarge,animationSizeDesktop,animationSizeTablet,animationSizeMobile}});}// Store globally to persist across remounts\nglobalAnimationSize=size;globalInitialViewport=currentWidth;return size;},[animationSizeLarge,animationSizeDesktop,animationSizeTablet,animationSizeMobile,propSignature]);// Use the persisted size to prevent changes\nconst animationSize=getInitialAnimationSize();// Detect dark mode changes\nuseEffect(()=>{const checkTheme=()=>{const theme=document.documentElement.getAttribute(\"data-framer-theme\");const isDark=theme===\"dark\"||document.documentElement.classList.contains(\"dark\")||window.matchMedia(\"(prefers-color-scheme: dark)\").matches;setIsDarkMode(isDark);};checkTheme();const observer=new MutationObserver(checkTheme);observer.observe(document.documentElement,{attributes:true,attributeFilter:[\"data-framer-theme\",\"class\"]});const mediaQuery=window.matchMedia(\"(prefers-color-scheme: dark)\");mediaQuery.addEventListener(\"change\",checkTheme);return()=>{observer.disconnect();mediaQuery.removeEventListener(\"change\",checkTheme);};},[]);// Handle visibility changes - unlock scroll if hidden by Framer\nuseEffect(()=>{// If hidden by Framer, unlock immediately\nif(isHiddenByFramer){// Use global unlock function\nwindow.__unlockPreloaderScroll?.();setHasUnlockedScroll(true);setHasAnimationCompleted(true);}},[isHiddenByFramer]);// Initialize Lottie animation\nconst initializeLottie=useCallback(()=>{if(!lottieFile||!lottieContainerRef.current||isCanvas)return;// Clean up any existing content\nlottieContainerRef.current.innerHTML=\"\";// Create a container div for the Lottie animation\nconst animationContainer=document.createElement(\"div\");animationContainer.style.width=\"100%\";animationContainer.style.height=\"100%\";animationContainer.style.display=\"flex\";animationContainer.style.alignItems=\"center\";animationContainer.style.justifyContent=\"center\";lottieContainerRef.current.appendChild(animationContainer);// Load the Lottie player script if not already loaded\nconst loadLottiePlayer=()=>{if(window.DotLottiePlayer){createPlayer();}else{const script=document.createElement(\"script\");script.src=\"https://unpkg.com/@dotlottie/player-component@latest/dist/dotlottie-player.mjs\";script.type=\"module\";script.onload=()=>{createPlayer();};document.head.appendChild(script);}};const createPlayer=()=>{// Create the player element\nconst lottieElement=document.createElement(\"dotlottie-player\");lottieElement.setAttribute(\"src\",lottieFile);lottieElement.setAttribute(\"autoplay\",\"true\");lottieElement.setAttribute(\"loop\",\"false\");lottieElement.setAttribute(\"speed\",\"1\");lottieElement.style.width=\"100%\";lottieElement.style.height=\"100%\";// Wait for player to be ready and calculate speed\nlottieElement.addEventListener(\"ready\",()=>{try{const player=lottieElement;// Try different methods to get animation info\nlet animationDurationMs=0;// Method 1: Get duration directly if available\nif(player.duration){animationDurationMs=player.duration*1e3;}else if(player.getLottie){const lottie=player.getLottie();if(lottie&&lottie.totalFrames&&lottie.frameRate){animationDurationMs=lottie.totalFrames/lottie.frameRate*1e3;}}else if(player._lottie){const totalFrames=player._lottie.totalFrames||player._lottie.op;const frameRate=player._lottie.fr||player._lottie.frameRate||30;if(totalFrames&&frameRate){animationDurationMs=totalFrames/frameRate*1e3;}}if(animationDurationMs>0){// Calculate speed to fit animation into desired duration\nconst speed=animationDurationMs/duration;// Try multiple methods to set speed\nif(player.setSpeed){player.setSpeed(speed);}else{lottieElement.setAttribute(\"speed\",String(speed));}// Force a re-render if needed\nif(player.play){player.pause();player.play();}}else{console.warn(\"Could not determine Lottie animation duration\");}}catch(error){console.error(\"Error calculating Lottie speed:\",error);}});// Also try on load event as fallback\nlottieElement.addEventListener(\"load\",()=>{setTimeout(()=>{const player=lottieElement;if(player.setSpeed&&!player.__speedSet){player.__speedSet=true;// Trigger ready event manually if needed\nconst event=new Event(\"ready\");lottieElement.dispatchEvent(event);}},100);});animationContainer.appendChild(lottieElement);lottiePlayerRef.current=lottieElement;// Use MutationObserver as a fallback to detect when player is ready\nconst observer=new MutationObserver(()=>{const player=lottieElement;if(player.shadowRoot&&!player.__speedAdjusted){player.__speedAdjusted=true;// Give it a moment to fully initialize\nsetTimeout(()=>{const readyEvent=new Event(\"ready\");lottieElement.dispatchEvent(readyEvent);},50);}});observer.observe(lottieElement,{childList:true,subtree:true,attributes:true});// Clean up observer after 5 seconds\nsetTimeout(()=>observer.disconnect(),5e3);};loadLottiePlayer();// Start the duration timer\nif(timeoutRef.current){clearTimeout(timeoutRef.current);}timeoutRef.current=window.setTimeout(()=>{setIsFadingOut(true);setIsVisible(false);},duration);},[lottieFile,isCanvas,duration]);// Enhanced scroll and interaction management - unlock when animation completes\nuseEffect(()=>{if(hasAnimationCompleted&&!hasUnlockedScroll&&!isHiddenByFramer// Don't run this if already hidden by Framer\n){// Unlock scroll and interactions only after fade animation completes\n// Use setTimeout to ensure the browser has finished all rendering\nsetTimeout(()=>{window.__unlockPreloaderScroll?.();setHasUnlockedScroll(true);},50)// Small delay to let browser settle\n;}},[hasAnimationCompleted,hasUnlockedScroll,isHiddenByFramer]);// Keep Intercom hidden while preloader visible; reveal once fully finalized\nuseEffect(()=>{if(isCanvas)return;injectIntercomFadeStyle();if(isVisible){document.documentElement.classList.add(\"sc-hide-intercom\");setIntercomLauncherHidden(true);if(!intercomHideApplied)setIntercomHideApplied(true);}else if(hasAnimationCompleted){// Reveal Intercom again at the end of preloader lifecycle\ndocument.documentElement.classList.remove(\"sc-hide-intercom\");setIntercomLauncherHidden(false);if(intercomHideApplied)setIntercomHideApplied(false);}},[isVisible,hasAnimationCompleted,isCanvas,intercomHideApplied]);// Performance optimization: cleanup on unmount\nuseEffect(()=>{return()=>{if(timeoutRef.current){clearTimeout(timeoutRef.current);}// Ensure scroll is unlocked on unmount\nif(window.__preloaderScrollLocked){document.documentElement.style.overflow=\"\";document.body.style.overflow=\"\";document.body.style.position=\"\";document.body.style.width=\"\";document.body.style.top=\"\";window.__preloaderScrollLocked=false;}};},[]);// Initialize Lottie when component mounts or file changes\nuseEffect(()=>{if(lottieFile){// Add a small delay to ensure DOM is ready after potential remounts\nconst timer=setTimeout(()=>{initializeLottie();},10);return()=>clearTimeout(timer);}},[lottieFile,initializeLottie]);// Handle Framer visibility changes\nuseEffect(()=>{if(isHiddenByFramer){// If hidden by Framer, immediately clean up and mark as completed\nsetIsVisible(false);setHasAnimationCompleted(true);setHasUnlockedScroll(true);// Clean up timeout\nif(timeoutRef.current){clearTimeout(timeoutRef.current);}}},[isHiddenByFramer]);// Precomputed styles for better performance\nconst containerStyle=useMemo(()=>({position:\"fixed\",top:0,left:0,right:0,bottom:0,backgroundColor:backgroundColor,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",zIndex:99998,willChange:\"opacity, transform\",contain:\"layout style paint\",pointerEvents:\"auto\",touchAction:\"none\",userSelect:\"none\",WebkitUserSelect:\"none\",msUserSelect:\"none\",WebkitTouchCallout:\"none\",isolation:\"isolate\",// Hardware acceleration for all browsers\n    transform:\"translateZ(0)\",WebkitTransform:\"translateZ(0)\",backfaceVisibility:\"hidden\",WebkitBackfaceVisibility:\"hidden\",...props.style}),[backgroundColor,props.style]);// Create a stable key based on the initial load\nconst componentKey=useMemo(()=>{// Reuse the same key if component remounts\nif(!globalPreloaderKey){globalPreloaderKey=`preloader-${Date.now()}`;}return globalPreloaderKey;},[]);const lottieContainerStyle=useMemo(()=>({// Use CSS custom properties for responsive sizing\n    width:`var(--preloader-size)`,height:`var(--preloader-size)`,maxWidth:\"90vw\",maxHeight:\"90vh\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",transform:\"translateZ(0)\",backfaceVisibility:\"hidden\",WebkitBackfaceVisibility:\"hidden\",willChange:\"transform, opacity, filter\",// Apply filter based on theme - invert white logo for light mode\n    filter:isDarkMode?\"none\":\"invert(1)\",transition:\"filter 0.3s ease\"}),[isDarkMode]);// Add CSS variables to the container\nconst containerWithCssVars=useMemo(()=>({...containerStyle,\"--large-size\":`${animationSizeLarge}vw`,\"--desktop-size\":`${animationSizeDesktop}vw`,\"--tablet-size\":`${animationSizeTablet}vw`,\"--mobile-size\":`${animationSizeMobile}vw`,\"--preloader-size\":`${animationSize}vw`}),[containerStyle,animationSizeLarge,animationSizeDesktop,animationSizeTablet,animationSizeMobile,animationSize]);// Hide in Framer canvas\nif(isCanvas){return /*#__PURE__*/_jsx(\"div\",{style:{width:0,height:0,overflow:\"hidden\"}});}// Hide when Framer visibility is set to none\nif(isHiddenByFramer){return null;}// Don't render if no Lottie file\nif(!lottieFile){return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",fontSize:16,color:\"#666\"},children:\"Select a Lottie file\"});}return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                /* Base styles */\n                [data-preloader-key=\"${componentKey}\"] .lottie-container {\n                    position: relative !important;\n                    /* Default size as fallback */\n                    width: ${animationSize}vw !important;\n                    height: ${animationSize}vw !important;\n                }\n                \n                /* Mobile: max-width: 810px */\n                @media screen and (max-width: 810px) {\n                    [data-preloader-key=\"${componentKey}\"] .lottie-container {\n                        width: ${animationSizeMobile}vw !important;\n                        height: ${animationSizeMobile}vw !important;\n                    }\n                }\n                \n                /* Tablet: 811px to 1200px */\n                @media screen and (min-width: 811px) and (max-width: 1200px) {\n                    [data-preloader-key=\"${componentKey}\"] .lottie-container {\n                        width: ${animationSizeTablet}vw !important;\n                        height: ${animationSizeTablet}vw !important;\n                    }\n                }\n                \n                /* Desktop: 1201px to 1919px */\n                @media screen and (min-width: 1201px) and (max-width: 1919px) {\n                    [data-preloader-key=\"${componentKey}\"] .lottie-container {\n                        width: ${animationSizeDesktop}vw !important;\n                        height: ${animationSizeDesktop}vw !important;\n                    }\n                }\n                \n                /* Large/Widescreen: 1920px and up */\n                @media screen and (min-width: 1920px) {\n                    [data-preloader-key=\"${componentKey}\"] .lottie-container {\n                        width: ${animationSizeLarge}vw !important;\n                        height: ${animationSizeLarge}vw !important;\n                    }\n                }\n            `}),/*#__PURE__*/_jsx(\"script\",{src:\"https://unpkg.com/@dotlottie/player-component@latest/dist/dotlottie-player.mjs\",type:\"module\",async:true}),/*#__PURE__*/_jsx(\"div\",{id:\"preloader-area\",\"aria-hidden\":\"true\",style:{position:\"absolute\",width:1,height:1,overflow:\"hidden\",clip:\"rect(0,0,0,0)\"}}),/*#__PURE__*/_jsx(AnimatePresence,{mode:\"wait\",onExitComplete:()=>{// Mark animation as fully completed\nsetHasAnimationCompleted(true);},children:isVisible&&/*#__PURE__*/_jsx(motion.div,{initial:{opacity:1},animate:{opacity:1},exit:{opacity:0},transition:{duration:fadeOutDuration/1e3,ease:[.4,0,.2,1]},onAnimationComplete:()=>{if(!isVisible){// Additional cleanup after animation\n}},style:containerWithCssVars,\"data-preloader-key\":componentKey,role:\"progressbar\",\"aria-label\":\"Loading content\",\"aria-live\":\"polite\",\"aria-busy\":\"true\",\"aria-valuemin\":0,\"aria-valuemax\":100,\"aria-valuenow\":50,children:/*#__PURE__*/_jsx(\"div\",{ref:lottieContainerRef,className:\"lottie-container\",style:lottieContainerStyle})})})]});}addPropertyControls(Preloader,{lottieFile:{type:ControlType.File,title:\"Lottie File\",allowedFileTypes:[\"json\",\"lottie\"],description:\"Upload .lottie or .json Lottie animation file\"},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:2e3,min:500,max:1e4,step:100,displayStepper:true,unit:\"ms\",description:\"Total preloader duration (animation speed auto-adjusts)\"},fadeOutDuration:{type:ControlType.Number,title:\"Fade\",defaultValue:500,min:100,max:1e3,step:50,displayStepper:true,unit:\"ms\"},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#000000\"},animationSizeLarge:{type:ControlType.Number,title:\"Large Size\",defaultValue:12,min:5,max:50,step:1,displayStepper:true,unit:\"vw\",description:\"Size for screens ≥ 1920px (% of viewport width)\"},animationSizeDesktop:{type:ControlType.Number,title:\"Desktop Size\",defaultValue:12,min:5,max:50,step:1,displayStepper:true,unit:\"vw\",description:\"Size for screens 1201-1919px (% of viewport width)\"},animationSizeTablet:{type:ControlType.Number,title:\"Tablet Size\",defaultValue:12,min:5,max:50,step:1,displayStepper:true,unit:\"vw\",description:\"Size for screens 810-1200px (% of viewport width)\"},animationSizeMobile:{type:ControlType.Number,title:\"Mobile Size\",defaultValue:15,min:5,max:50,step:1,displayStepper:true,unit:\"vw\",description:\"Size for screens < 810px (% of viewport width)\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Preloader\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Preloader.map"],"mappings":"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"}