{"version":3,"file":"Preloader.DEXQshU3.mjs","names":["useState","useRef","useCallback","useMemo","_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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"}