{"version":3,"file":"AbstractIntentExitModal.cbS4Pd3F.mjs","names":["React.useRef","React.useCallback","p","React.useState","React.useMemo","_Fragment"],"sources":["https:/framerusercontent.com/modules/4ozxQjaxyD75yLAoabbd/LLVPqznW3ccnrNI16a8f/AbstractIntentExitModal.js"],"sourcesContent":["// AbstractIntentExitModal.tsx\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{createPortal}from\"react-dom\";const OPEN_EVENT=\"intent:open\";const CLOSE_EVENT=\"intent:close\";const FIRE_EVENT=\"engage:trigger\";const BACKDROP_OPACITY=.5;const ANIM_MS=220;const ANIM_EASING=\"cubic-bezier(.2,.8,.2,1)\";const CLOSE_ON_BACKDROP=true;const CLOSE_ON_ESC=true;const CLOSE_BUTTON_LABEL=\"\\xd7\";const now=()=>Date.now();const isMobileUA=()=>/Mobi|Android|iPhone|iPad|Tablet|Windows Phone/i.test(navigator.userAgent);function getSessionId(prefix){const key=`${prefix}.sessionId`;let id=sessionStorage.getItem(key);if(!id){id=Math.random().toString(36).slice(2);sessionStorage.setItem(key,id);}return id;}function readState(prefix,sid){try{const raw=localStorage.getItem(`${prefix}.state.${sid}`);if(!raw)return{siteMs:0,pages:[]};const obj=JSON.parse(raw);return{siteMs:Number(obj.siteMs||0),pages:Array.isArray(obj.pages)?obj.pages:[],lastPath:obj.lastPath};}catch{return{siteMs:0,pages:[]};}}function writeState(prefix,sid,data){try{localStorage.setItem(`${prefix}.state.${sid}`,JSON.stringify(data));}catch{}}const readLastShown=prefix=>{return Number(localStorage.getItem(`${prefix}.lastShownAt`)||0);};function writeLastShown(prefix,ts){try{localStorage.setItem(`${prefix}.lastShownAt`,String(ts));}catch{}}function isInExitZone(x,y,exitTopPx,sideHeightPx){const w=window.innerWidth;const top=y<=exitTopPx||y<0;const left=(x<=exitTopPx||x<0)&&y>=0&&y<=sideHeightPx;const right=(x>=w-exitTopPx||x>w)&&y>=0&&y<=sideHeightPx;return top||left||right;}const readShownThisSession=prefix=>{return sessionStorage.getItem(`${prefix}.shown`)===\"1\";};const writeShownThisSession=(prefix,v)=>{sessionStorage.setItem(`${prefix}.shown`,v?\"1\":\"0\");};function installLocationChangeListener(handle){const fire=()=>window.dispatchEvent(new Event(\"locationchange\"));const _push=history.pushState;const _replace=history.replaceState;history.pushState=function(...args){const r=_push.apply(this,args);fire();return r;};history.replaceState=function(...args){const r=_replace.apply(this,args);fire();return r;};window.addEventListener(\"popstate\",fire);window.addEventListener(\"locationchange\",handle);return()=>{window.removeEventListener(\"locationchange\",handle);window.removeEventListener(\"popstate\",fire);history.pushState=_push;history.replaceState=_replace;};}/** Keep latest value without changing callback identity */function useLatest(value){const ref=React.useRef(value);ref.current=value;return ref;}/** Stable callback that always sees latest closures */function useEvent(fn){const fnRef=useLatest(fn);// eslint-disable-next-line react-hooks/exhaustive-deps\nreturn React.useCallback((...args)=>fnRef.current(...args),[]);}export default function AbstractIntentExitModal(props){const p={...defaultProps,...props};const pRef=useLatest(p);const[visible,setVisible]=React.useState(false);const[mounted,setMounted]=React.useState(false);const[tick,setTick]=React.useState(0);const sessionIdRef=React.useRef(\"\");const stateRef=React.useRef({siteMs:0,pages:[]});const lastTsRef=React.useRef(now());const closeBtnRef=React.useRef(null);const siteSec=Math.floor(stateRef.current.siteMs/1e3);const pageCount=stateRef.current.pages.length;// freeze writes to localStorage once minSeconds is reached, but keep listeners alive\nconst storageFrozenRef=React.useRef(false);// when true, no more cache/counter updates AND listeners removed (after show)\nconst trackingStoppedRef=React.useRef(false);const stopAllTrackingRef=React.useRef(null);// debug mouse state\nconst[mouse,setMouse]=React.useState({x:-1,y:-1,inExit:false});const recordPageView=useEvent(()=>{if(trackingStoppedRef.current)return;const path=window.location.pathname+window.location.search;const set=new Set(stateRef.current.pages);set.add(path);stateRef.current.pages=Array.from(set);stateRef.current.lastPath=path;if(!storageFrozenRef.current){writeState(pRef.current.prefix,sessionIdRef.current,stateRef.current);}});const throttledByDays=useEvent(()=>{if(trackingStoppedRef.current)return false;const days=pRef.current.showOnceDays;if(days<=0)return false;const diff=now()-readLastShown(pRef.current.prefix);return diff<days*24*60*60*1e3;});const alreadyShownThisSession=useEvent(()=>{if(trackingStoppedRef.current)return true;return pRef.current.showOncePerSession&&readShownThisSession(pRef.current.prefix);});const markShown=useEvent(()=>{writeShownThisSession(pRef.current.prefix,true);writeLastShown(pRef.current.prefix,now());});const dispatchTrigger=useEvent(source=>{const detail={source,siteSec:Math.floor(stateRef.current.siteMs/1e3),pages:stateRef.current.pages.length,path:window.location.pathname+window.location.search};window.dispatchEvent(new CustomEvent(FIRE_EVENT,{detail}));});const stopAllTracking=useEvent(()=>{if(trackingStoppedRef.current)return;trackingStoppedRef.current=true;stopAllTrackingRef.current?.();stopAllTrackingRef.current=null;});const show=useEvent(source=>{if(!mounted)setMounted(true);requestAnimationFrame(()=>setVisible(true));markShown();dispatchTrigger(source);// after showing, shut everything down\nstopAllTracking();});const hide=useEvent(()=>{setVisible(false);window.setTimeout(()=>setMounted(false),ANIM_MS);});const maybeTrigger=useEvent(source=>{if(trackingStoppedRef.current)return;const currentSiteSec=Math.floor(stateRef.current.siteMs/1e3);const currentPageCount=stateRef.current.pages.length;if(mounted||visible)return;if(alreadyShownThisSession())return;if(throttledByDays())return;const enoughPages=currentPageCount>=pRef.current.pagesThreshold;if(source===\"exit\"){if(currentSiteSec>=pRef.current.minSeconds||enoughPages){show(source);}return;}// timer/page sources can also trigger if you want; keeping your original intent focused on exit\n});React.useEffect(()=>{sessionIdRef.current=getSessionId(p.prefix);stateRef.current=readState(p.prefix,sessionIdRef.current);recordPageView();const int=window.setInterval(()=>{if(trackingStoppedRef.current)return;const t=now();const delta=Math.min(t-lastTsRef.current,4e3);lastTsRef.current=t;// always advance in-memory counters so logic can evaluate,\n// but freeze localStorage writes after minSeconds\nstateRef.current.siteMs+=delta;if(!storageFrozenRef.current){if(Math.floor(stateRef.current.siteMs/1e3)>=pRef.current.minSeconds){storageFrozenRef.current=true;}// only persist while not frozen\nwriteState(pRef.current.prefix,sessionIdRef.current,stateRef.current);}maybeTrigger(\"timer\");if(pRef.current.debug)setTick(x=>x+1);},1e3);const onVis=()=>{if(trackingStoppedRef.current)return;lastTsRef.current=now();};document.addEventListener(\"visibilitychange\",onVis);const offNav=installLocationChangeListener(()=>{if(trackingStoppedRef.current)return;recordPageView();if(pRef.current.debug)setTick(x=>x+1);maybeTrigger(\"page\");});// Watch pointer inside the viewport. If it enters an exit zone, consider it exit-intent.\nconst onDocMouseMove=e=>{if(trackingStoppedRef.current)return;if(isMobileUA())return;const inExit=isInExitZone(e.clientX,e.clientY,pRef.current.exitTopPx,pRef.current.sideEdgeHeightPx);if(pRef.current.debug){setMouse({x:e.clientX,y:e.clientY,inExit});}if(inExit){maybeTrigger(\"exit\");}};// Keep mouseleave to catch true viewport exits as a fallback\nconst onDocMouseLeave=e=>{if(trackingStoppedRef.current)return;if(!isMobileUA()&&isInExitZone(e.clientX,e.clientY,pRef.current.exitTopPx,pRef.current.sideEdgeHeightPx)){maybeTrigger(\"exit\");}};document.addEventListener(\"mousemove\",onDocMouseMove);document.addEventListener(\"mouseleave\",onDocMouseLeave);const onKey=e=>{if(CLOSE_ON_ESC&&e.key===\"Escape\")hide();};window.addEventListener(\"keydown\",onKey);const onOpen=()=>show(\"external\");window.addEventListener(OPEN_EVENT,onOpen);const onClose=()=>hide();window.addEventListener(CLOSE_EVENT,onClose);// one place to stop everything\nstopAllTrackingRef.current=()=>{window.clearInterval(int);document.removeEventListener(\"visibilitychange\",onVis);offNav();document.removeEventListener(\"mousemove\",onDocMouseMove);document.removeEventListener(\"mouseleave\",onDocMouseLeave);window.removeEventListener(\"keydown\",onKey);window.removeEventListener(OPEN_EVENT,onOpen);window.removeEventListener(CLOSE_EVENT,onClose);};return()=>{stopAllTracking();};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[p.prefix]);React.useEffect(()=>{if(mounted&&visible){const t=window.setTimeout(()=>closeBtnRef.current?.focus(),30);return()=>window.clearTimeout(t);}},[mounted,visible]);const wrapper=React.useMemo(()=>/*#__PURE__*/_jsx(\"div\",{style:{...p.style}}),[p.style]);const portal=mounted?/*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(\"div\",{style:{position:\"fixed\",inset:0,display:\"grid\",placeItems:\"center\",zIndex:2147483647},\"aria-hidden\":!visible,children:[/*#__PURE__*/_jsx(\"div\",{onClick:()=>CLOSE_ON_BACKDROP&&hide(),style:{position:\"absolute\",inset:0,background:\"rgba(0,0,0,1)\",opacity:visible?BACKDROP_OPACITY:0,transition:`opacity ${ANIM_MS}ms ${ANIM_EASING}`}}),/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",transform:visible?\"translateY(0) scale(1)\":\"translateY(8px) scale(0.98)\",opacity:visible?1:0,width:800,transition:`transform ${ANIM_MS}ms ${ANIM_EASING}, opacity ${ANIM_MS}ms ${ANIM_EASING}`},children:[/*#__PURE__*/_jsx(\"button\",{ref:closeBtnRef,\"aria-label\":\"Close\",onClick:hide,style:{position:\"absolute\",top:0,right:0,width:40,height:40,cursor:\"pointer\",background:\"transparent\",border:\"transparent\",fontSize:\"24px\",zIndex:1,outline:\"none\"},children:CLOSE_BUTTON_LABEL}),p.children??null]})]}),document.body):null;// compute debug flags without mutating anything\nconst pastMin=siteSec>=p.minSeconds;const enoughPages=pageCount>=p.pagesThreshold;const throttled=throttledByDays();const shownThisSession=alreadyShownThisSession();const canShowOnExit=!mounted&&!visible&&!shownThisSession&&!throttled&&(pastMin||enoughPages);return /*#__PURE__*/_jsxs(_Fragment,{children:[wrapper,p.debug&&/*#__PURE__*/_jsxs(\"div\",{style:{position:\"fixed\",left:8,bottom:8,padding:\"8px 10px\",background:\"rgba(0,0,0,.7)\",color:\"#fff\",borderRadius:8,fontSize:12,zIndex:2147483646,fontFamily:\"ui-monospace, SFMono-Regular, Menlo, monospace\",maxWidth:360},children:[/*#__PURE__*/_jsxs(\"div\",{children:[\"site: \",siteSec,\"s\"]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"pages: \",pageCount]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"lastPath: \",stateRef.current.lastPath||\"/\"]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"shownThisSession: \",String(shownThisSession)]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"throttledDays: \",String(throttled)]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"pastMinSeconds: \",String(pastMin)]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"enoughPages: \",String(enoughPages)]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"canShowOnExit: \",String(canShowOnExit)]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"storageFrozen: \",String(storageFrozenRef.current)]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"trackingStopped: \",String(trackingStoppedRef.current)]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"mounted: \",String(mounted),\" | visible: \",String(visible)]}),/*#__PURE__*/_jsxs(\"div\",{children:[\"mouse: x=\",mouse.x,\", y=\",mouse.y,\", inExit=\",String(mouse.inExit)]}),/*#__PURE__*/_jsx(\"div\",{style:{marginTop:6,borderTop:\"1px dashed rgba(255,255,255,.3)\"}})]}),portal]});}AbstractIntentExitModal.displayName=\"AbstractIntentExitModal\";const defaultProps={prefix:\"intentPortal\",minSeconds:30,pagesThreshold:2,exitTopPx:10,sideEdgeHeightPx:120,showOncePerSession:true,showOnceDays:7,children:undefined,debug:false,style:{}};addPropertyControls(AbstractIntentExitModal,{prefix:{type:ControlType.String,title:\"Widget Prefix\"},minSeconds:{type:ControlType.Number,title:\"Min seconds\",min:0,max:600,step:1},pagesThreshold:{type:ControlType.Number,title:\"Min pages\",min:1,max:20,step:1},exitTopPx:{type:ControlType.Number,title:\"Exit top (px)\",min:0,max:200,step:1},sideEdgeHeightPx:{type:ControlType.Number,title:\"Side height\",min:0,max:1e3,step:1},showOncePerSession:{type:ControlType.Boolean,title:\"Once per session\"},showOnceDays:{type:ControlType.Number,title:\"Once per N days\",min:0,max:365,step:1},children:{type:ControlType.ComponentInstance,title:\"Children\"},debug:{type:ControlType.Boolean,title:\"Debug\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AbstractIntentExitModal\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AbstractIntentExitModal.map"],"mappings":"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"}