{"version":3,"file":"WithFormSpamProtection.CDgHWrHb.mjs","names":["useRef"],"sources":["https:/framerusercontent.com/modules/5f7TGQIkEk4rzyXc6gsc/XT986KbcBlU78Ah706kJ/WithFormSpamProtection.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef,useEffect,useRef}from\"react\";/**\n * Request summary:\n * - Rewrite withFormSpamProtection to be substantially more aggressive against bot spam on Framer native forms.\n * - Keep export name and override HOC shape; preserve SSR safety, cleanup, no external dependencies, and TypeScript.\n * - Add layered protections: two honeypots, trusted human interaction gating, gibberish heuristics, field sanity checks,\n *   stricter timing/speed checks, localStorage rolling rate limits, and weak focus/scroll risk signals.\n * - Block silently via capture-phase submit listener (preventDefault + stopPropagation + stopImmediatePropagation).\n * - Add DEBUG_LOG toggle to report blocked reasons in console.warn when enabled.\n */// Toggle console diagnostics for blocked submissions.\nexport const DEBUG_LOG=false;// Minimum elapsed time (seconds) from mount before any submit is allowed.\nexport const MIN_FILL_SECONDS=6;// Block rapid repeat submits from this same mounted form within this window (seconds).\nexport const DUPLICATE_SUBMIT_WINDOW_SECONDS=10;// Honeypot names are stable and plausible on purpose.\nexport const HONEYPOT_FIELD_NAME=\"website_url\";export const HONEYPOT_CHECKBOX_FIELD_NAME=\"subscribe_newsletter_optin\";// Human interaction gating.\nexport const MIN_DISTINCT_TRUSTED_KEYSTROKES=8;export const MAX_CHARS_PER_SECOND=25;// Rolling browser-session rate limiting (localStorage-backed).\nexport const SESSION_RATE_LIMIT_MAX_ALLOWED=2;export const SESSION_RATE_LIMIT_WINDOW_SECONDS=3600;export const SESSION_RATE_LIMIT_STORAGE_KEY=\"hotel_site_spam_protection_allowed_submit_timestamps_v1\";// Field sanity tunables.\nexport const NAME_FIELD_MAX_LENGTH=60;export const BLOCK_CYRILLIC_OR_CJK=true;// Weak-signal scoring (never block on weak signals alone).\nexport const WEAK_SIGNAL_BLOCK_THRESHOLD=3;export function withFormSpamProtection(Component){return /*#__PURE__*/forwardRef(function WithFormSpamProtection(props,ref){const hostRef=useRef(null);const mountTimeRef=useRef(Date.now());const lastAllowedSubmitTimeRef=useRef(0);useEffect(()=>{if(typeof window===\"undefined\"||typeof document===\"undefined\")return;const host=hostRef.current;if(!host)return;let isDisposed=false;let frameId=null;let formEl=null;let honeypotEl=null;let honeypotCheckboxEl=null;let submitHandler=null;let keydownHandler=null;let pointerHandler=null;let inputHandler=null;let focusHandler=null;let scrollHandler=null;const trustedKeySet=new Set;const fieldLengthMap=new WeakMap;let hasTrustedKeydown=false;let hasTrustedPointerOrTouch=false;let hasWindowFocus=typeof document!==\"undefined\"?document.hasFocus():false;let hasAnyScroll=false;let totalTypedChars=0;const blockEvent=event=>{event.preventDefault();event.stopPropagation();if(typeof event.stopImmediatePropagation===\"function\"){event.stopImmediatePropagation();}};const logBlockReason=reason=>{if(!DEBUG_LOG)return;console.warn(`[withFormSpamProtection] Blocked submit: ${reason}`);};const isVisibleTextField=node=>{if(node instanceof HTMLInputElement){if(node.type===\"hidden\")return false;if(node.type===\"checkbox\"||node.type===\"radio\")return false;}const style=window.getComputedStyle(node);if(style.display===\"none\"||style.visibility===\"hidden\")return false;if(node.hasAttribute(\"hidden\"))return false;return true;};const getSanitizedTextValue=node=>node.value.trim();const containsUrlOrLinkSyntax=value=>{if(!value)return false;const urlLike=/\\b(?:https?:\\/\\/|www\\.|[a-z0-9-]+\\.[a-z]{2,})(?:[\\/\\?#]|$)/i.test(value);const bbCodeOrMarkdown=/\\[(?:url|link)=/i.test(value)||/\\[[^\\]]+\\]\\([^)]+\\)/.test(value);return urlLike||bbCodeOrMarkdown;};const hasDisallowedScriptChars=value=>{if(!BLOCK_CYRILLIC_OR_CJK)return false;return/[\\u0400-\\u04FF\\u3040-\\u30FF\\u3400-\\u4DBF\\u4E00-\\u9FFF\\uF900-\\uFAFF]/.test(value);};const analyzeGibberish=(rawValue,options)=>{const value=rawValue.trim();if(value.length===0)return{flagged:false,signalCount:0};if(/^\\S{15,}$/.test(value)){return{flagged:true,signalCount:99};}const lettersOnly=value.replace(/[^a-z]/gi,\"\");const hasNoWhitespace=!/\\s/.test(value);const longEnough=value.length>=8;const lower=lettersOnly.toLowerCase();const vowelMatches=lower.match(/[aeiou]/g)??[];const vowelCount=vowelMatches.length;const letterCount=lettersOnly.length;const vowelRatio=letterCount>0?vowelCount/letterCount:1;let caseTransitions=0;for(let i=1;i<value.length;i+=1){const prev=value[i-1];const curr=value[i];const prevIsLetter=/[a-z]/i.test(prev);const currIsLetter=/[a-z]/i.test(curr);if(!prevIsLetter||!currIsLetter)continue;const changedCase=prev===prev.toLowerCase()&&curr===curr.toUpperCase()||prev===prev.toUpperCase()&&curr===curr.toLowerCase();if(changedCase)caseTransitions+=1;}const hasMixedCase=/[a-z]/.test(value)&&/[A-Z]/.test(value);const nonNameLikeCasePattern=longEnough&&hasNoWhitespace&&hasMixedCase&&caseTransitions>2;const lowVowelRatio=letterCount>=6&&vowelRatio<.2;const consonantRun=/[bcdfghjklmnpqrstvwxyz]{4,}/i.test(lettersOnly);const noVowels=letterCount>=6&&vowelCount===0;const uniqueRatio=value.length>0?new Set(value.split(\"\")).size/value.length:0;const highUniqueNoSpaces=hasNoWhitespace&&value.length>=12&&uniqueRatio>.8;let signalCount=0;if(nonNameLikeCasePattern)signalCount+=1;if(!options?.skipVowelSignals&&lowVowelRatio)signalCount+=1;if(consonantRun)signalCount+=1;if(!options?.skipVowelSignals&&noVowels)signalCount+=1;if(highUniqueNoSpaces)signalCount+=1;return{flagged:signalCount>=2,signalCount};};const looksLikeGibberish=(value,options)=>analyzeGibberish(value,options).flagged;const getAllowedSubmitTimestamps=()=>{try{const raw=window.localStorage.getItem(SESSION_RATE_LIMIT_STORAGE_KEY);if(!raw)return[];const parsed=JSON.parse(raw);if(!Array.isArray(parsed))return[];return parsed.filter(item=>typeof item===\"number\"&&Number.isFinite(item));}catch{return[];}};const setAllowedSubmitTimestamps=timestamps=>{try{window.localStorage.setItem(SESSION_RATE_LIMIT_STORAGE_KEY,JSON.stringify(timestamps));}catch{// Ignore localStorage write failures (private mode, quota, etc.).\n}};const installProtection=form=>{if(isDisposed)return;formEl=form;const input=document.createElement(\"input\");input.type=\"text\";input.name=HONEYPOT_FIELD_NAME;input.setAttribute(\"autocomplete\",\"off\");input.setAttribute(\"tabindex\",\"-1\");input.setAttribute(\"aria-hidden\",\"true\");input.style.position=\"absolute\";input.style.left=\"-10000px\";input.style.top=\"0\";input.style.width=\"1px\";input.style.height=\"1px\";input.style.opacity=\"0\";input.style.pointerEvents=\"none\";input.style.zIndex=\"-1\";form.appendChild(input);honeypotEl=input;const checkboxHoneypot=document.createElement(\"input\");checkboxHoneypot.type=\"checkbox\";checkboxHoneypot.name=HONEYPOT_CHECKBOX_FIELD_NAME;checkboxHoneypot.setAttribute(\"tabindex\",\"-1\");checkboxHoneypot.setAttribute(\"aria-hidden\",\"true\");checkboxHoneypot.style.position=\"absolute\";checkboxHoneypot.style.left=\"-10000px\";checkboxHoneypot.style.top=\"0\";checkboxHoneypot.style.width=\"1px\";checkboxHoneypot.style.height=\"1px\";checkboxHoneypot.style.opacity=\"0\";checkboxHoneypot.style.pointerEvents=\"none\";checkboxHoneypot.style.zIndex=\"-1\";form.appendChild(checkboxHoneypot);honeypotCheckboxEl=checkboxHoneypot;keydownHandler=event=>{if(!event.isTrusted)return;hasTrustedKeydown=true;trustedKeySet.add(event.key);};pointerHandler=event=>{const isTrustedEvent=\"isTrusted\"in event&&event.isTrusted;if(!isTrustedEvent)return;hasTrustedPointerOrTouch=true;};inputHandler=event=>{const target=event.target;const isTrustedEvent=\"isTrusted\"in event&&event.isTrusted;if(!isTrustedEvent)return;if(!(target instanceof HTMLInputElement)&&!(target instanceof HTMLTextAreaElement)){return;}if(!isVisibleTextField(target))return;if(target.name===HONEYPOT_FIELD_NAME)return;if(target.name===HONEYPOT_CHECKBOX_FIELD_NAME)return;const previous=fieldLengthMap.get(target)??0;const current=target.value.length;const delta=current-previous;if(delta>0)totalTypedChars+=delta;fieldLengthMap.set(target,current);};focusHandler=()=>{hasWindowFocus=true;};scrollHandler=()=>{hasAnyScroll=true;};form.addEventListener(\"keydown\",keydownHandler,true);form.addEventListener(\"pointerdown\",pointerHandler,true);form.addEventListener(\"mousedown\",pointerHandler,true);form.addEventListener(\"touchstart\",pointerHandler,true);form.addEventListener(\"input\",inputHandler,true);window.addEventListener(\"focus\",focusHandler,{passive:true});window.addEventListener(\"scroll\",scrollHandler,{passive:true});submitHandler=event=>{const now=Date.now();const elapsedMs=now-mountTimeRef.current;const minFillMs=MIN_FILL_SECONDS*1e3;const duplicateWindowMs=DUPLICATE_SUBMIT_WINDOW_SECONDS*1e3;const honeypotValue=honeypotEl?.value?.trim()??\"\";const honeypotCheckboxChecked=Boolean(honeypotCheckboxEl?.checked);const submittedTooFast=elapsedMs<minFillMs;const submittedTooSoonAgain=lastAllowedSubmitTimeRef.current>0&&now-lastAllowedSubmitTimeRef.current<duplicateWindowMs;const honeypotTriggered=honeypotValue.length>0;const missingTrustedGating=!hasTrustedKeydown||!hasTrustedPointerOrTouch||trustedKeySet.size<MIN_DISTINCT_TRUSTED_KEYSTROKES;if(honeypotTriggered){logBlockReason(\"text honeypot filled\");blockEvent(event);return;}if(honeypotCheckboxChecked){logBlockReason(\"checkbox honeypot checked\");blockEvent(event);return;}if(submittedTooFast){logBlockReason(\"submitted before minimum fill time\");blockEvent(event);return;}if(submittedTooSoonAgain){logBlockReason(\"duplicate submit inside cooldown window\");blockEvent(event);return;}if(missingTrustedGating){logBlockReason(\"missing trusted interaction requirements\");blockEvent(event);return;}const elapsedSeconds=Math.max(elapsedMs/1e3,.001);const charsPerSecond=totalTypedChars/elapsedSeconds;if(charsPerSecond>MAX_CHARS_PER_SECOND){logBlockReason(\"typing speed exceeded threshold\");blockEvent(event);return;}const textFields=Array.from(form.querySelectorAll(\"input, textarea\")).filter(node=>{if(!(node instanceof HTMLInputElement)&&!(node instanceof HTMLTextAreaElement)){return false;}return isVisibleTextField(node);});let weakSignalScore=0;if(!hasWindowFocus)weakSignalScore+=1;if(!hasAnyScroll)weakSignalScore+=1;let softSuspiciousScore=0;for(const field of textFields){const nameLower=(field.getAttribute(\"name\")??\"\").toLowerCase();const idLower=(field.getAttribute(\"id\")??\"\").toLowerCase();const typeLower=field instanceof HTMLInputElement?field.type.toLowerCase():\"textarea\";const value=getSanitizedTextValue(field);if(!value)continue;if(nameLower===HONEYPOT_FIELD_NAME||nameLower===HONEYPOT_CHECKBOX_FIELD_NAME){continue;}const isEmailField=typeLower===\"email\"||/email|e-mail/.test(nameLower)||/email|e-mail/.test(idLower);const isNameField=/(^|[_\\-\\s])name($|[_\\-\\s])|fullname|full_name|guestname/.test(nameLower)||/(^|[_\\-\\s])name($|[_\\-\\s])|fullname|full_name|guestname/.test(idLower);if(containsUrlOrLinkSyntax(value)){logBlockReason(`URL/link syntax detected in field \"${nameLower||idLower||typeLower}\"`);blockEvent(event);return;}if(hasDisallowedScriptChars(value)){logBlockReason(`Cyrillic/CJK characters detected in field \"${nameLower||idLower||typeLower}\"`);blockEvent(event);return;}if(isNameField){if(/\\d/.test(value)){logBlockReason(\"name field contains digits\");blockEvent(event);return;}if(/https?:\\/\\//i.test(value)||/\\bwww\\./i.test(value)){logBlockReason(\"name field contains URL text\");blockEvent(event);return;}if(value.length>NAME_FIELD_MAX_LENGTH){logBlockReason(\"name field exceeds max length\");blockEvent(event);return;}}if(isEmailField){const strictEmailRegex=/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)+$/i;if(!strictEmailRegex.test(value)){logBlockReason(\"email failed strict regex\");blockEvent(event);return;}const localPart=value.split(\"@\")[0]??\"\";if(looksLikeGibberish(localPart,{skipVowelSignals:true})){logBlockReason(\"email local-part looks gibberish\");blockEvent(event);return;}continue;}const gibberishResult=analyzeGibberish(value,{skipVowelSignals:false});if(gibberishResult.flagged){logBlockReason(`gibberish-like content detected in field \"${nameLower||idLower||typeLower}\"`);blockEvent(event);return;}if(gibberishResult.signalCount===1){softSuspiciousScore+=1;}}const rateWindowMs=SESSION_RATE_LIMIT_WINDOW_SECONDS*1e3;const recentAllowed=getAllowedSubmitTimestamps().filter(timestamp=>now-timestamp<=rateWindowMs);if(recentAllowed.length>=SESSION_RATE_LIMIT_MAX_ALLOWED){logBlockReason(\"session-level rate limit reached\");blockEvent(event);return;}if(weakSignalScore+softSuspiciousScore>=WEAK_SIGNAL_BLOCK_THRESHOLD){logBlockReason(\"combined weak-signal score exceeded threshold\");blockEvent(event);return;}recentAllowed.push(now);setAllowedSubmitTimestamps(recentAllowed);lastAllowedSubmitTimeRef.current=now;};form.addEventListener(\"submit\",submitHandler,true);};let attempts=0;const maxAttempts=120;const findAndInstall=()=>{if(isDisposed)return;const candidate=host.querySelector(\"form\");if(candidate instanceof HTMLFormElement){installProtection(candidate);return;}attempts+=1;if(attempts<maxAttempts){frameId=window.requestAnimationFrame(findAndInstall);}};findAndInstall();return()=>{isDisposed=true;if(frameId!==null){window.cancelAnimationFrame(frameId);}if(formEl&&submitHandler){formEl.removeEventListener(\"submit\",submitHandler,true);}if(formEl&&keydownHandler){formEl.removeEventListener(\"keydown\",keydownHandler,true);}if(formEl&&pointerHandler){formEl.removeEventListener(\"pointerdown\",pointerHandler,true);formEl.removeEventListener(\"mousedown\",pointerHandler,true);formEl.removeEventListener(\"touchstart\",pointerHandler,true);}if(formEl&&inputHandler){formEl.removeEventListener(\"input\",inputHandler,true);}if(focusHandler){window.removeEventListener(\"focus\",focusHandler);}if(scrollHandler){window.removeEventListener(\"scroll\",scrollHandler);}if(formEl&&honeypotEl&&honeypotEl.parentNode===formEl){formEl.removeChild(honeypotEl);}if(formEl&&honeypotCheckboxEl&&honeypotCheckboxEl.parentNode===formEl){formEl.removeChild(honeypotCheckboxEl);}};},[]);return /*#__PURE__*/_jsx(\"div\",{ref:hostRef,style:{position:\"relative\",display:\"contents\"},children:/*#__PURE__*/_jsx(Component,{ref:ref,...props})});});}\nexport const __FramerMetadata__ = {\"exports\":{\"MAX_CHARS_PER_SECOND\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withFormSpamProtection\":{\"type\":\"reactHoc\",\"name\":\"withFormSpamProtection\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MIN_FILL_SECONDS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SESSION_RATE_LIMIT_STORAGE_KEY\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"WEAK_SIGNAL_BLOCK_THRESHOLD\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEBUG_LOG\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NAME_FIELD_MAX_LENGTH\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HONEYPOT_CHECKBOX_FIELD_NAME\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"BLOCK_CYRILLIC_OR_CJK\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HONEYPOT_FIELD_NAME\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DUPLICATE_SUBMIT_WINDOW_SECONDS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SESSION_RATE_LIMIT_MAX_ALLOWED\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SESSION_RATE_LIMIT_WINDOW_SECONDS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MIN_DISTINCT_TRUSTED_KEYSTROKES\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./WithFormSpamProtection.map"],"mappings":"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"}