{"version":3,"file":"FramerForms.CUAt3CoU.mjs","names":["useRef"],"sources":["https:/framerusercontent.com/modules/7kPMNoFOgtWMOIdWzbl7/fepi7Cr41MluFbDaSM7j/FramerForms.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef,useEffect,useRef}from\"react\";import{createStore}from\"https://framer.com/m/framer/store.js@^1.0.0\";export const formStore=createStore({verificationMode:null,inputValue:\"\",verificationMode2:null,inputValue2:\"\"});/*\nexport function withFormat(Component): ComponentType {\n    return forwardRef((props, ref) => {\n        const componentRef = useRef()\n\n        useEffect(() => {\n            const element = componentRef.current\n            if (element) {\n                const input = element.querySelector(\"input\")\n                if (input) {\n                    input.addEventListener(\"input\", (e) => {\n                        const value = e.target.value.replace(/[^0-9]/g, \"\")\n                        if (value) {\n                            e.target.value = Number(value).toLocaleString()\n                        } else {\n                            e.target.value = \"\"\n                        }\n                    })\n\n                    input.addEventListener(\"keydown\", (e) => {\n                        if (\n                            [8, 9, 27, 13, 46].indexOf(e.keyCode) !== -1 ||\n                            (e.keyCode === 65 && e.ctrlKey === true) ||\n                            (e.keyCode === 67 && e.ctrlKey === true) ||\n                            (e.keyCode === 86 && e.ctrlKey === true) ||\n                            (e.keyCode === 88 && e.ctrlKey === true)\n                        ) {\n                            return\n                        }\n                        if (\n                            (e.shiftKey || e.keyCode < 48 || e.keyCode > 57) &&\n                            (e.keyCode < 96 || e.keyCode > 105)\n                        ) {\n                            e.preventDefault()\n                        }\n                    })\n                }\n            }\n        }, [])\n\n        return (\n            <Component\n                ref={(el) => {\n                    componentRef.current = el\n                    if (ref) ref.current = el\n                }}\n                {...props}\n            />\n        )\n    })\n}\n\n*/export function withEscapeListener(Component){return /*#__PURE__*/forwardRef((props,ref)=>{console.log(props,\"from close button\");const componentRef=useRef(null);const finalRef=ref||componentRef;useEffect(()=>{const handleEscapeKey=event=>{console.log(\"ran key event\");if(event.key===\"Escape\"){setTimeout(()=>{const targetContainer=document.getElementById(\"form-overlay-trigger\");if(targetContainer){const reactKey=Object.keys(targetContainer).find(key=>key.startsWith(\"__reactInternalInstance\")||key.startsWith(\"__reactFiber\"));console.log(\"React key found:\",reactKey);const interactiveElement=targetContainer.querySelector('[tabindex=\"0\"]');if(interactiveElement){interactiveElement.focus();const spaceEvent=new KeyboardEvent(\"keydown\",{key:\" \",code:\"Space\",bubbles:true});interactiveElement.dispatchEvent(spaceEvent);console.log(\"tried space key\");const enterEvent=new KeyboardEvent(\"keydown\",{key:\"Enter\",code:\"Enter\",bubbles:true});interactiveElement.dispatchEvent(enterEvent);console.log(\"tried enter key\");}}},10);}};document.addEventListener(\"keydown\",handleEscapeKey);return()=>document.removeEventListener(\"keydown\",handleEscapeKey);},[]);return /*#__PURE__*/_jsx(Component,{...props,ref:ref});});}export function withSubmission(Component){return /*#__PURE__*/forwardRef((props,ref)=>{console.log(props,\"from close button\");return /*#__PURE__*/_jsx(Component,{...props});});}/*\nexport function VerificationInput(Component): ComponentType {\n    return (props) => {\n        const [store, setStore] = formStore()\n        const containerRef = useRef(null)\n        const storeRef = useRef(store)\n        const inputValueRef = useRef(\"\")\n\n        useEffect(() => {\n            storeRef.current = store\n        }, [store])\n\n        useEffect(() => {\n            const percentageSection = document.getElementById(\"percentage\")\n            if (percentageSection) {\n                const allInputs = percentageSection.querySelectorAll(\"input\")\n                allInputs.forEach((input) => {\n                    if (\n                        input.type === \"number\" ||\n                        input.name?.includes(\"Failed\") ||\n                        input.name?.includes(\"Verification\")\n                    ) {\n                        if (store.verificationMode === \"button\") {\n                            input.removeAttribute(\"required\")\n                            input.setCustomValidity(\"\")\n                        } else {\n                            input.setAttribute(\"required\", \"required\")\n                            input.setCustomValidity(\n                                !store.verificationMode\n                                    ? 'Please enter a percentage or select \"Not Sure\"'\n                                    : \"\"\n                            )\n                        }\n                    }\n                    if (input.name === \"Buttons\") {\n                        if (store.verificationMode === \"button\") {\n                            input.setAttribute(\"required\", \"required\")\n                            input.setCustomValidity(\"\")\n                        } else {\n                            input.removeAttribute(\"required\")\n                        }\n                    }\n                })\n            }\n        }, [store.verificationMode])\n\n        useEffect(() => {\n            const container = containerRef.current\n            if (!container) return\n            const input = container.querySelector(\"input\")\n            if (!input) return\n\n            input.setAttribute(\"step\", \"any\") // add this line\n\n            if (store.verificationMode !== \"button\" && inputValueRef.current) {\n                input.value = inputValueRef.current\n            }\n\n            if (store.verificationMode === \"button\") {\n                input.value = \"\"\n                inputValueRef.current = \"\"\n            }\n\n            const keydownHandler = (e) => {\n                // Allow: backspace, delete, tab, escape, enter, arrow keys\n                if (\n                    [8, 9, 27, 13, 46, 37, 38, 39, 40].indexOf(e.keyCode) !==\n                        -1 ||\n                    (e.keyCode === 65 && e.ctrlKey === true) ||\n                    (e.keyCode === 67 && e.ctrlKey === true) ||\n                    (e.keyCode === 86 && e.ctrlKey === true) ||\n                    (e.keyCode === 88 && e.ctrlKey === true)\n                ) {\n                    return\n                }\n                // Block everything except digits and decimal point\n                if (\n                    (e.shiftKey || e.keyCode < 48 || e.keyCode > 57) &&\n                    (e.keyCode < 96 || e.keyCode > 105) &&\n                    e.keyCode !== 190 &&\n                    e.keyCode !== 110\n                ) {\n                    e.preventDefault()\n                }\n            }\n\n            const inputHandler = (e) => {\n                // Don't reformat while typing - just strip invalid chars but preserve decimal\n                const value = e.target.value.replace(/[^0-9.]/g, \"\")\n                // Prevent multiple dots\n                const parts = value.split(\".\")\n                const sanitized =\n                    parts.length > 2\n                        ? parts[0] + \".\" + parts.slice(1).join(\"\")\n                        : value\n                if (e.target.value !== sanitized) {\n                    const cursor = e.target.selectionStart\n                    e.target.value = sanitized\n                    e.target.setSelectionRange(cursor, cursor)\n                }\n                inputValueRef.current = e.target.value\n            }\n\n            const blurHandler = (e) => {\n                const value = e.target.value\n                inputValueRef.current = value\n                setStore({\n                    verificationMode: value ? \"input\" : null,\n                    inputValue: value,\n                })\n            }\n\n            const focusHandler = () => {\n                if (storeRef.current.verificationMode === \"button\") {\n                    const percentageSection =\n                        document.getElementById(\"percentage\")\n                    if (percentageSection) {\n                        const visibleButton = Array.from(\n                            percentageSection.querySelectorAll(\"button\")\n                        ).find((btn) => {\n                            const styles = window.getComputedStyle(btn)\n                            return (\n                                styles.display !== \"none\" &&\n                                styles.visibility !== \"hidden\" &&\n                                btn.textContent?.includes(\"Not Sure\")\n                            )\n                        })\n                        if (visibleButton) {\n                            visibleButton.click()\n                            return\n                        }\n                    }\n                    setStore({ verificationMode: null, inputValue: \"\" })\n                }\n            }\n\n            input.addEventListener(\"keydown\", keydownHandler)\n            input.addEventListener(\"input\", inputHandler)\n            input.addEventListener(\"blur\", blurHandler)\n            input.addEventListener(\"focus\", focusHandler)\n\n            return () => {\n                input.removeEventListener(\"keydown\", keydownHandler)\n                input.removeEventListener(\"input\", inputHandler)\n                input.removeEventListener(\"blur\", blurHandler)\n                input.removeEventListener(\"focus\", focusHandler)\n            }\n        }, [store.verificationMode])\n\n        return (\n            <div ref={containerRef} style={{ width: \"100%\" }}>\n                <Component {...props} />\n            </div>\n        )\n    }\n}\n\nexport function NotSureButton(Component): ComponentType {\n    return (props) => {\n        const [store, setStore] = formStore()\n\n        const handleClick = (event) => {\n            const button = event.target.closest(\"button\")\n            if (button) {\n                if (store.verificationMode === \"button\") {\n                    setStore({ verificationMode: null, inputValue: \"\" })\n                } else {\n                    setStore({ verificationMode: \"button\", inputValue: \"\" })\n                    const percentageSection =\n                        document.getElementById(\"percentage\")\n                    if (percentageSection) {\n                        const buttonInput = percentageSection.querySelector(\n                            'input[name=\"Buttons\"]'\n                        )\n                        if (buttonInput) buttonInput.value = \"Not Sure\"\n                    }\n                }\n            }\n        }\n\n        return (\n            <div onClick={handleClick}>\n                <Component {...props} />\n            </div>\n        )\n    }\n}\n\nexport function VerificationInput2(Component): ComponentType {\n    return (props) => {\n        const [store, setStore] = formStore()\n        const containerRef = useRef(null)\n        const storeRef = useRef(store)\n        const inputValueRef = useRef(\"\")\n\n        useEffect(() => {\n            storeRef.current = store\n        }, [store])\n\n        useEffect(() => {\n            const loadSection = document.getElementById(\"load\")\n            if (loadSection) {\n                const allInputs = loadSection.querySelectorAll(\"input\")\n                allInputs.forEach((input) => {\n                    if (\n                        input.type === \"number\" ||\n                        input.name?.includes(\"Load\") ||\n                        input.name?.includes(\"Amount\")\n                    ) {\n                        if (store.verificationMode2 === \"button\") {\n                            input.removeAttribute(\"required\")\n                            input.setCustomValidity(\"\")\n                        } else {\n                            input.setAttribute(\"required\", \"required\")\n                            input.setCustomValidity(\n                                !store.verificationMode2\n                                    ? 'Please enter an amount or select \"Not Sure\"'\n                                    : \"\"\n                            )\n                        }\n                    }\n                    if (input.name === \"Buttons\") {\n                        if (store.verificationMode2 === \"button\") {\n                            input.setAttribute(\"required\", \"required\")\n                            input.setCustomValidity(\"\")\n                        } else {\n                            input.removeAttribute(\"required\")\n                        }\n                    }\n                })\n            }\n        }, [store.verificationMode2])\n\n        useEffect(() => {\n            const container = containerRef.current\n            if (!container) return\n            const input = container.querySelector(\"input\")\n            if (!input) return\n\n            if (store.verificationMode2 !== \"button\" && inputValueRef.current) {\n                input.value = inputValueRef.current\n            }\n\n            if (store.verificationMode2 === \"button\") {\n                input.value = \"\"\n                inputValueRef.current = \"\"\n            }\n\n            const keydownHandler = (e) => {\n                if (\n                    [8, 9, 27, 13, 46].indexOf(e.keyCode) !== -1 ||\n                    (e.keyCode === 65 && e.ctrlKey === true) ||\n                    (e.keyCode === 67 && e.ctrlKey === true) ||\n                    (e.keyCode === 86 && e.ctrlKey === true) ||\n                    (e.keyCode === 88 && e.ctrlKey === true)\n                ) {\n                    return\n                }\n                if (\n                    (e.shiftKey || e.keyCode < 48 || e.keyCode > 57) &&\n                    (e.keyCode < 96 || e.keyCode > 105)\n                ) {\n                    e.preventDefault()\n                }\n            }\n\n            const inputHandler = (e) => {\n                const raw = e.target.value.replace(/[^0-9]/g, \"\")\n                const prevLength = e.target.value.length\n                const formatted = raw ? Number(raw).toLocaleString() : \"\"\n                const cursor = e.target.selectionStart\n                e.target.value = formatted\n                inputValueRef.current = formatted\n                const diff = formatted.length - prevLength\n                e.target.setSelectionRange(cursor + diff, cursor + diff)\n            }\n\n            const blurHandler = (e) => {\n                const raw = e.target.value.replace(/[^0-9]/g, \"\")\n                inputValueRef.current = e.target.value\n                setStore({\n                    verificationMode2: raw ? \"input\" : null,\n                    inputValue2: raw,\n                })\n            }\n\n            const focusHandler = () => {\n                if (storeRef.current.verificationMode2 === \"button\") {\n                    const loadSection = document.getElementById(\"load\")\n                    if (loadSection) {\n                        const visibleButton = Array.from(\n                            loadSection.querySelectorAll(\"button\")\n                        ).find((btn) => {\n                            const styles = window.getComputedStyle(btn)\n                            return (\n                                styles.display !== \"none\" &&\n                                styles.visibility !== \"hidden\" &&\n                                btn.textContent?.includes(\"Not Sure\")\n                            )\n                        })\n                        if (visibleButton) {\n                            visibleButton.click()\n                            return\n                        }\n                    }\n                    setStore({ verificationMode2: null, inputValue2: \"\" })\n                }\n            }\n\n            input.addEventListener(\"keydown\", keydownHandler)\n            input.addEventListener(\"input\", inputHandler)\n            input.addEventListener(\"blur\", blurHandler)\n            input.addEventListener(\"focus\", focusHandler)\n\n            return () => {\n                input.removeEventListener(\"keydown\", keydownHandler)\n                input.removeEventListener(\"input\", inputHandler)\n                input.removeEventListener(\"blur\", blurHandler)\n                input.removeEventListener(\"focus\", focusHandler)\n            }\n        }, [store.verificationMode2])\n\n        return (\n            <div ref={containerRef} style={{ width: \"100%\" }}>\n                <Component {...props} />\n            </div>\n        )\n    }\n}\n\nexport function NotSure2(Component): ComponentType {\n    return (props) => {\n        const [store, setStore] = formStore()\n\n        const handleClick = (event) => {\n            const button = event.target.closest(\"button\")\n            if (button) {\n                if (store.verificationMode2 === \"button\") {\n                    setStore({ verificationMode2: null, inputValue2: \"\" })\n                } else {\n                    setStore({ verificationMode2: \"button\", inputValue2: \"\" })\n                    setTimeout(() => {\n                        const loadSection = document.getElementById(\"load\")\n                        if (loadSection) {\n                            const allInputs =\n                                loadSection.querySelectorAll(\"input\")\n                            allInputs.forEach((input) => {\n                                if (\n                                    input.type === \"number\" ||\n                                    input.name?.includes(\"Load\") ||\n                                    input.name?.includes(\"Amount\")\n                                ) {\n                                    input.removeAttribute(\"required\")\n                                    input.setCustomValidity(\"\")\n                                }\n                                if (input.name === \"Buttons\") {\n                                    input.setAttribute(\"required\", \"required\")\n                                    input.setCustomValidity(\"\")\n                                    input.value = \"Not Sure\"\n                                }\n                            })\n                        }\n                    }, 0)\n                    const loadSection = document.getElementById(\"load\")\n                    if (loadSection) {\n                        const buttonInput = loadSection.querySelector(\n                            'input[name=\"Buttons\"]'\n                        )\n                        if (buttonInput) buttonInput.value = \"Not Sure\"\n                    }\n                }\n            }\n        }\n\n        return (\n            <div onClick={handleClick}>\n                <Component {...props} />\n            </div>\n        )\n    }\n}\n*/export function BusinessEmailValidator(Component){return props=>{const containerRef=useRef(null);const debounceTimerRef=useRef(null);const validateEmail=async(email,inputElement)=>{if(!email||!email.includes(\"@\")){inputElement.setCustomValidity(\"\");return;}inputElement.setCustomValidity(\"Validating email...\");const response=await fetch(`https://api.gridverify.com/registration/risk/assessment/${encodeURIComponent(email)}`);const data=await response.json();console.log(\"API response:\",data);if(data.alreadyExists){inputElement.setCustomValidity(\"A report has already been created with this email.\");}else if(!data.alreadyExists&&data.isValid){inputElement.setCustomValidity(\"\");}else{inputElement.setCustomValidity(\"Please use a business email address\");}};useEffect(()=>{const container=containerRef.current;if(!container)return;const input=container.querySelector('input[type=\"email\"]')||container.querySelector('input[name*=\"email\" i]')||container.querySelector('input[placeholder*=\"email\" i]')||container.querySelector(\"input\");if(!input)return;const handleInputChange=event=>{const value=event.target.value;const inputElement=event.target;if(debounceTimerRef.current){clearTimeout(debounceTimerRef.current);}if(!value){inputElement.setCustomValidity(\"\");return;}debounceTimerRef.current=setTimeout(()=>{validateEmail(value,inputElement);},800);};const handleInputBlur=event=>{const value=event.target.value;if(value)validateEmail(value,event.target);};input.addEventListener(\"input\",handleInputChange);input.addEventListener(\"blur\",handleInputBlur);return()=>{input.removeEventListener(\"input\",handleInputChange);input.removeEventListener(\"blur\",handleInputBlur);if(debounceTimerRef.current){clearTimeout(debounceTimerRef.current);}};},[]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{width:\"100%\"},children:/*#__PURE__*/_jsx(Component,{...props})});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withSubmission\":{\"type\":\"reactHoc\",\"name\":\"withSubmission\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"formStore\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"BusinessEmailValidator\":{\"type\":\"reactHoc\",\"name\":\"BusinessEmailValidator\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withEscapeListener\":{\"type\":\"reactHoc\",\"name\":\"withEscapeListener\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FramerForms.map"],"mappings":"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"}