{"version":3,"file":"MessengerAnimationPanel.DH3Uizus.mjs","names":["useRef","useState","useCallback","element"],"sources":["https:/framerusercontent.com/modules/p4IkzRXdYR1ALys11oUN/dhVvO6j8YJBfrvRgRS4c/MessengerAnimationPanel.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{forwardRef,useCallback,useEffect,useMemo,useRef,useState}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/* =========================================================\n   EXISTING OVERRIDES\n   ========================================================= */export function withRotate(Component){return /*#__PURE__*/forwardRef((props,ref)=>{return /*#__PURE__*/_jsx(Component,{ref:ref,...props,animate:{rotate:90},transition:{duration:2}});});}export function withHover(Component){return /*#__PURE__*/forwardRef((props,ref)=>{return /*#__PURE__*/_jsx(Component,{ref:ref,...props,whileHover:{scale:1.05}});});}export function withRandomColor(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[background,setBackground]=useState(\"#0099FF\");return /*#__PURE__*/_jsx(Component,{ref:ref,...props,onContextMenu:event=>event.preventDefault(),animate:{background},onClick:()=>{setBackground(\"#\"+Math.floor(Math.random()*16777215).toString(16).padStart(6,\"0\"));}});});}export function InvertEditionHover(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const className=useMemo(()=>`invert-edition-hover-${Math.random().toString(36).slice(2,10)}`,[]);return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                    .${className} {\n                        transition:\n                            background-color 0.16s ease,\n                            color 0.16s ease,\n                            opacity 0.16s ease;\n                    }\n\n                    .${className} * {\n                        transition:\n                            color 0.16s ease,\n                            opacity 0.16s ease;\n                    }\n\n                    .${className}:hover {\n                        background-color: #4F593B !important;\n                    }\n\n                    .${className}:hover,\n                    .${className}:hover * {\n                        color: #FBF8EC !important;\n                        fill: #FBF8EC !important;\n                        stroke: #FBF8EC !important;\n                    }\n                `}),/*#__PURE__*/_jsx(Component,{ref:ref,...props,className:[props.className,className].filter(Boolean).join(\" \")})]});});}export function withLazydogFormInput(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const className=useMemo(()=>`lazydog-form-input-${Math.random().toString(36).slice(2,10)}`,[]);return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                    .${className},\n                    .${className} input,\n                    .${className} textarea,\n                    .${className} select,\n                    .${className} button {\n                        font-family: \"Lazydog\", sans-serif !important;\n                    }\n\n                    .${className} input::placeholder,\n                    .${className} textarea::placeholder {\n                        font-family: \"Lazydog\", sans-serif !important;\n                    }\n                `}),/*#__PURE__*/_jsx(Component,{ref:ref,...props,className:[props.className,className].filter(Boolean).join(\" \")})]});});}/* =========================================================\n   VIDEO PLAYBACK OVERRIDE\n   ========================================================= */export function withHoverPlayVideo(Component){return /*#__PURE__*/forwardRef((props,forwardedRef)=>{const containerRef=useRef(null);const currentVideoRef=useRef(null);const[isTouchDevice,setIsTouchDevice]=useState(false);/* -----------------------------------------\n               Block video context menu\n            ----------------------------------------- */useEffect(()=>{const blockVideoMenu=event=>{const target=event.target;if(target?.closest(\"video\")){event.preventDefault();event.stopPropagation();}};document.addEventListener(\"contextmenu\",blockVideoMenu,true);return()=>{document.removeEventListener(\"contextmenu\",blockVideoMenu,true);};},[]);/* -----------------------------------------\n               Detect desktop vs touch\n            ----------------------------------------- */useEffect(()=>{if(typeof window===\"undefined\")return;const mediaQuery=window.matchMedia(\"(hover: hover) and (pointer: fine)\");const update=()=>{setIsTouchDevice(!mediaQuery.matches);};update();mediaQuery.addEventListener(\"change\",update);return()=>{mediaQuery.removeEventListener(\"change\",update);};},[]);/* -----------------------------------------\n               Find video inside element\n            ----------------------------------------- */const findVideoInside=useCallback(element=>{if(!element)return null;if(element instanceof HTMLVideoElement){return element;}const video=element.querySelector(\"video\");if(video instanceof HTMLVideoElement){return video;}return null;},[]);/* -----------------------------------------\n               Find video underneath pointer\n            ----------------------------------------- */const findVideoAtPosition=useCallback((x,y)=>{if(typeof document===\"undefined\"){return null;}const elements=document.elementsFromPoint(x,y);for(const element of elements){const directVideo=findVideoInside(element);if(directVideo){return directVideo;}}const videos=document.querySelectorAll(\"video\");for(const video of videos){const rect=video.getBoundingClientRect();if(x>=rect.left&&x<=rect.right&&y>=rect.top&&y<=rect.bottom){return video;}}return null;},[findVideoInside]);/* -----------------------------------------\n               Stop + reset\n            ----------------------------------------- */const stopVideo=useCallback(video=>{if(!video)return;video.pause();try{video.currentTime=0;}catch{}if(currentVideoRef.current===video){currentVideoRef.current=null;}},[]);/* -----------------------------------------\n               Play\n            ----------------------------------------- */const playVideo=useCallback(video=>{if(!video)return;if(currentVideoRef.current&&currentVideoRef.current!==video){stopVideo(currentVideoRef.current);}video.muted=true;video.defaultMuted=true;video.playsInline=true;video.autoplay=false;currentVideoRef.current=video;const promise=video.play();if(promise){promise.catch(()=>{});}},[stopVideo]);/* -----------------------------------------\n               Desktop hover\n            ----------------------------------------- */const handleMouseEnter=useCallback(event=>{if(isTouchDevice)return;const video=findVideoAtPosition(event.clientX,event.clientY);if(!video)return;playVideo(video);},[findVideoAtPosition,isTouchDevice,playVideo]);/* -----------------------------------------\n               Desktop mouse leave\n            ----------------------------------------- */const handleMouseLeave=useCallback(()=>{if(isTouchDevice)return;if(currentVideoRef.current){stopVideo(currentVideoRef.current);}},[isTouchDevice,stopVideo]);/* -----------------------------------------\n               Mobile / tablet tap\n            ----------------------------------------- */const handleTouch=useCallback(event=>{if(!isTouchDevice)return;if(event.pointerType!==\"touch\"&&event.pointerType!==\"pen\"){return;}const video=findVideoAtPosition(event.clientX,event.clientY);if(!video)return;if(video.paused){playVideo(video);}else{stopVideo(video);}},[findVideoAtPosition,isTouchDevice,playVideo,stopVideo]);/* -----------------------------------------\n               Make sure video starts paused\n            ----------------------------------------- */useEffect(()=>{const container=containerRef.current;if(!container)return;const prepare=()=>{const video=findVideoInside(container);if(!video)return;video.autoplay=false;video.muted=true;video.playsInline=true;video.pause();};prepare();const observer=new MutationObserver(()=>{prepare();});observer.observe(container,{childList:true,subtree:true});return()=>observer.disconnect();},[findVideoInside]);/* -----------------------------------------\n               Cleanup\n            ----------------------------------------- */useEffect(()=>{return()=>{if(currentVideoRef.current){stopVideo(currentVideoRef.current);}};},[stopVideo]);/* -----------------------------------------\n               Forward ref\n            ----------------------------------------- */const setRefs=useCallback(node=>{containerRef.current=node;if(typeof forwardedRef===\"function\"){forwardedRef(node);}else if(forwardedRef){forwardedRef.current=node;}},[forwardedRef]);return /*#__PURE__*/_jsx(Component,{...props,ref:setRefs,onMouseEnter:handleMouseEnter,onMouseLeave:handleMouseLeave,onPointerUp:handleTouch,style:{...props.style,cursor:isTouchDevice?\"pointer\":\"default\"}});});}export function MessengerAnimationPanel(props){const{videoURL}=props;return /*#__PURE__*/_jsx(\"video\",{src:videoURL,muted:true,playsInline:true,preload:\"metadata\",style:{width:\"100%\",height:\"100%\",display:\"block\",objectFit:\"cover\"}});}addPropertyControls(MessengerAnimationPanel,{videoURL:{type:ControlType.String,title:\"Video URL\",defaultValue:\"\",placeholder:\"https://framerusercontent.com/...\"}});/* =========================================================\n   SUBSCRIPTION SUCCESS TOAST\n   ========================================================= */export function withSubscriptionToast(Component){return /*#__PURE__*/forwardRef((props,forwardedRef)=>{const timerRef=useRef(null);useEffect(()=>{/* -----------------------------------------\n               FIND A REAL LAZYDOG ELEMENT\n            ----------------------------------------- */const findLazydogElement=()=>{const elements=Array.from(document.querySelectorAll(\"body *\"));for(const element of elements){if(!element.textContent?.trim())continue;const rect=element.getBoundingClientRect();if(rect.width<=0||rect.height<=0){continue;}const computed=window.getComputedStyle(element);const fontFamily=computed.fontFamily.toLowerCase();if(fontFamily.includes(\"lazydog\")){return element;}}return null;};/* -----------------------------------------\n               CREATE TOAST\n            ----------------------------------------- */const createToast=()=>{let toast=document.getElementById(\"messenger-subscription-toast\");if(toast){return toast;}const source=findLazydogElement();/* -----------------------------------------\n                   If Framer has not rendered a Lazydog\n                   element yet, wait until it has.\n                ----------------------------------------- */if(!source){return null;}toast=document.createElement(\"div\");toast.id=\"messenger-subscription-toast\";/* -----------------------------------------\n                   Copy the actual Framer Lazydog\n                   element twice.\n                ----------------------------------------- */const title=source.cloneNode(false);const message=source.cloneNode(false);title.textContent=\"SUBSCRIBED\";message.textContent=\"Please check your spam inbox for confirmation.\";title.className=source.className;message.className=source.className;/* -----------------------------------------\n                   IMPORTANT:\n                   Copy the actual computed font\n                   from the real Framer element.\n                ----------------------------------------- */const computed=window.getComputedStyle(source);const actualFont=computed.fontFamily;const actualWeight=computed.fontWeight;const actualStyle=computed.fontStyle;/* -----------------------------------------\n                   Title styling\n                ----------------------------------------- */Object.assign(title.style,{fontFamily:actualFont,fontWeight:actualWeight,fontStyle:actualStyle,fontSize:\"18px\",lineHeight:\"1.1\",margin:\"0 0 8px 0\",display:\"block\",width:\"100%\"});/* -----------------------------------------\n                   Message styling\n                ----------------------------------------- */Object.assign(message.style,{fontFamily:actualFont,fontWeight:actualWeight,fontStyle:actualStyle,fontSize:\"13px\",lineHeight:\"1.4\",margin:\"0\",display:\"block\",width:\"100%\"});/* -----------------------------------------\n                   Toast styling\n                ----------------------------------------- */Object.assign(toast.style,{position:\"fixed\",left:\"50%\",bottom:\"30px\",transform:\"translate(-50%, 10px)\",zIndex:\"999999\",width:\"min(90vw, 420px)\",padding:\"22px 24px\",boxSizing:\"border-box\",background:\"#FBF8EC\",color:\"#4F593B\",border:\"1px solid #4F593B\",opacity:\"0\",transition:\"opacity 220ms ease, transform 220ms ease\",pointerEvents:\"none\"});toast.appendChild(title);toast.appendChild(message);document.body.appendChild(toast);return toast;};/* -----------------------------------------\n               FIND EMAIL INPUT\n            ----------------------------------------- */const findEmailInput=button=>{let input=null;const form=button.closest(\"form\");if(form){input=form.querySelector(\"input[type='email'], input[name='email']\");}if(input)return input;/* Search nearby */let parent=button.parentElement;for(let i=0;i<8&&parent;i++){input=parent.querySelector(\"input[type='email'], input[name='email']\");if(input)return input;parent=parent.parentElement;}/* Search visible inputs */const inputs=Array.from(document.querySelectorAll(\"input[type='email'], input[name='email']\")).filter(item=>{const element=item;const rect=element.getBoundingClientRect();return rect.width>0&&rect.height>0;});if(inputs.length===0){return null;}const buttonRect=button.getBoundingClientRect();const buttonX=buttonRect.left+buttonRect.width/2;const buttonY=buttonRect.top+buttonRect.height/2;return inputs.reduce((closest,current)=>{const a=current.getBoundingClientRect();const b=closest.getBoundingClientRect();const currentDistance=Math.hypot(a.left+a.width/2-buttonX,a.top+a.height/2-buttonY);const closestDistance=Math.hypot(b.left+b.width/2-buttonX,b.top+b.height/2-buttonY);return currentDistance<closestDistance?current:closest;});};/* -----------------------------------------\n               HANDLE SUBSCRIPTION CLICK\n            ----------------------------------------- */const handleClick=event=>{const target=event.target;if(!target)return;const button=target.closest(\"button, input[type='submit'], [role='button']\");if(!button)return;const text=button.textContent?.trim().toLowerCase()||button.value?.trim().toLowerCase()||\"\";if(!text.includes(\"subscribe\")&&!text.includes(\"notify me\")){return;}/* -----------------------------------------\n                   CHECK EMAIL\n                ----------------------------------------- */const emailInput=findEmailInput(button);if(!emailInput)return;const email=emailInput.value.trim();if(!email)return;if(!emailInput.checkValidity()){return;}const emailPattern=/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;if(!emailPattern.test(email)){return;}/* -----------------------------------------\n                   Wait briefly so Framer has finished\n                   rendering its Lazydog text.\n                ----------------------------------------- */window.setTimeout(()=>{const toast=createToast();if(!toast)return;if(timerRef.current){window.clearTimeout(timerRef.current);}requestAnimationFrame(()=>{toast.style.opacity=\"1\";toast.style.transform=\"translate(-50%, 0)\";});timerRef.current=window.setTimeout(()=>{toast.style.opacity=\"0\";toast.style.transform=\"translate(-50%, 10px)\";},5e3);},150);};document.addEventListener(\"click\",handleClick,true);return()=>{document.removeEventListener(\"click\",handleClick,true);if(timerRef.current){window.clearTimeout(timerRef.current);}};},[]);/* -----------------------------------------\n           FORWARD REF\n        ----------------------------------------- */const setRef=useCallback(node=>{if(typeof forwardedRef===\"function\"){forwardedRef(node);}else if(forwardedRef){forwardedRef.current=node;}},[forwardedRef]);return /*#__PURE__*/_jsx(Component,{...props,ref:setRef});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withRotate\":{\"type\":\"reactHoc\",\"name\":\"withRotate\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MessengerAnimationPanel\":{\"type\":\"reactComponent\",\"name\":\"MessengerAnimationPanel\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"InvertEditionHover\":{\"type\":\"reactHoc\",\"name\":\"InvertEditionHover\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHoverPlayVideo\":{\"type\":\"reactHoc\",\"name\":\"withHoverPlayVideo\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLazydogFormInput\":{\"type\":\"reactHoc\",\"name\":\"withLazydogFormInput\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withRandomColor\":{\"type\":\"reactHoc\",\"name\":\"withRandomColor\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHover\":{\"type\":\"reactHoc\",\"name\":\"withHover\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withSubscriptionToast\":{\"type\":\"reactHoc\",\"name\":\"withSubscriptionToast\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MessengerAnimationPanel.map"],"mappings":"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"}