{"version":3,"file":"PT_SLForm.BiN0pwOW.mjs","names":["useState","Suspense","_Fragment"],"sources":["https:/framerusercontent.com/modules/PIqgON6hWEB2arF07I6A/FZbUESGBCcyrjx5SPgSj/PT_SLForm.js"],"sourcesContent":["/**\n * PTSLForm.tsx\n *\n * This component handles a serial number form submission and displays the result in a card.\n * It uses a polling mechanism to check the status of a long-running task on the server.\n *\n * Key Points:\n * - On submit, it sends formData to the API via POST.\n * - If the API indicates the task is still \"PROCESSING\", we poll the status in intervals.\n * - We handle three main states: \"loading\", \"submitted\", and \"error\".\n * - The CardDev component displays different UI states based on the status prop.\n */import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import React,{Suspense,useState,useEffect}from\"react\";import{addPropertyControls,ControlType}from\"framer\";// Dynamically import components only on the client side\nconst SLCard=/*#__PURE__*/React.lazy(()=>import(\"https://framer.com/m/SLCard-hOZQ.js@6Vmezv1SUQWycZ9d0Ell\"));const ButtonCopy2=/*#__PURE__*/React.lazy(()=>import(\"https://framer.com/m/Button-idp4gz.js@wUVQ8p1v8ZQz6SmCCVKV\"));const SLInputCheckBox=/*#__PURE__*/React.lazy(()=>import(\"https://framer.com/m/PT-SLInputCheckBox-S1mC.js\"));const SLInputText=/*#__PURE__*/React.lazy(()=>import(\"https://framer.com/m/SLInputText-loCW.js@oIwWul9GqpMO9i4VL7lG\"));/**\n * Main component: FormDev\n * - Manages form data and submission.\n * - Polls for task status if needed.\n * - Displays the CardDev component for loading, submitted, and error states.\n */export default function PTSLForm(props){// API Endpoints\nconst formUrl=\"https://free-tools.macpaw.com/api/serial-lookup/processing/\";const statusUrl=taskId=>`https://free-tools.macpaw.com/api/serial-lookup/processing/status/${taskId}`;const[isClient,setIsClient]=useState(false);// Polling Config\nconst MAX_ATTEMPTS=40;const POLL_INTERVAL=2e3// in ms\n;// State\nconst[formData,setFormData]=useState({email:\"\",serialNumber:\"\",agreePrivacyPolicy:false,subscribeNewsletter:false});const[formStatus,setFormStatus]=useState(\"unsubmitted\");const[responseData,setResponseData]=useState(null);/**\n     * handleInputChange\n     * Updates formData on every keystroke or checkbox toggle.\n     */const handleInputChange=event=>{const{name,value,type,checked}=event.target;setFormData(prev=>({...prev,[name]:type===\"checkbox\"?checked:value}));};/**\n     * pollTaskStatus\n     * Polls the server for task status until completion or error.\n     */const pollTaskStatus=async taskId=>{for(let attempt=1;attempt<=MAX_ATTEMPTS;attempt++){await new Promise(resolve=>setTimeout(resolve,POLL_INTERVAL));try{const res=await fetch(statusUrl(taskId),{mode:\"cors\",headers:{Accept:\"application/json\"}});if(!res.ok)throw new Error(\"Status check failed\");const data=await res.json();if(data.status===\"COMPLETED\"){setResponseData(data);setFormStatus(\"submitted\");return;}if(data.status===\"ERROR\"){setResponseData(null);setFormStatus(\"error\");return;}// If still \"PROCESSING\", continue polling\n}catch(err){setFormStatus(\"error\");return;}}// Exceeded maximum attempts\nsetFormStatus(\"error\");};/**\n     * handleSubmit\n     * Submits the form data to the server for processing.\n     * If processing is long-running, we start polling for status.\n     */const handleSubmit=async event=>{event.preventDefault();setFormStatus(\"loading\");try{const response=await fetch(formUrl,{mode:\"cors\",method:\"POST\",headers:{\"Content-Type\":\"application/json\",Accept:\"application/json\"},body:JSON.stringify({email:formData.email,serial_number:formData.serialNumber,subscribe_newsletter:formData.subscribeNewsletter})});if(!response.ok)throw new Error(\"Network response was not ok\");const data=await response.json();// If the task completed immediately\nif(data.status===\"COMPLETED\"){setResponseData(data);setFormStatus(\"submitted\");return;}// If there's an error\nif(data.status===\"ERROR\"){setFormStatus(\"error\");return;}// If the task is still processing, poll the status endpoint\nif(data.status===\"PROCESSING\"&&data.task_id){await pollTaskStatus(data.task_id);}else{// Unexpected status\nsetFormStatus(\"error\");}}catch(error){setFormStatus(\"error\");}};/**\n     * handleCloseCard\n     * Resets the UI state, hiding the card and clearing response data.\n     */const handleCloseCard=()=>{setFormStatus(\"unsubmitted\");setResponseData(null);};useEffect(()=>{setIsClient(true);},[]);if(!isClient){return null;}// Render\nreturn /*#__PURE__*/_jsx(Suspense,{fallback:/*#__PURE__*/_jsx(\"div\",{style:contentTextStyle,children:\"Loading...\"}),children:/*#__PURE__*/_jsxs(\"div\",{style:formWrapperStyle,children:[/*#__PURE__*/_jsxs(\"form\",{onSubmit:handleSubmit,style:formContainerStyle,children:[/*#__PURE__*/_jsx(SLInputText,{name1:\"email\",type:\"email\",value:formData.email,placeholder:\"Email\",onChange:handleInputChange,style:{width:\"100%\"}}),/*#__PURE__*/_jsx(SLInputText,{name1:\"serialNumber\",placeholder:\"Serial Number\",value:formData.serialNumber,onChange:handleInputChange,style:{width:\"100%\"}}),/*#__PURE__*/_jsx(SLInputCheckBox,{style:{width:\"100%\"},name1:\"agreePrivacyPolicy\",checked:formData.agreePrivacyPolicy,onChange:handleInputChange}),/*#__PURE__*/_jsx(SLInputCheckBox,{style:{width:\"100%\"},name1:\"subscribeNewsletter\",checked:formData.subscribeNewsletter,onChange:handleInputChange,content:\"Inscreva-me para receber atualiza\\xe7\\xf5es e newsletters sobre ferramentas e servi\\xe7os semelhantes.\",required:false}),/*#__PURE__*/_jsx(ButtonCopy2,{title:\"Consultar agora\",style:{width:props.buttonWidth}})]}),formStatus===\"loading\"&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{style:blurredBackgroundStyle}),/*#__PURE__*/_jsx(SLCard,{status:\"loading\",onClose:handleCloseCard})]}),formStatus===\"submitted\"&&responseData&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{style:blurredBackgroundStyle}),/*#__PURE__*/_jsx(SLCard,{rawContent:responseData.result,onClose:handleCloseCard,status:\"submitted\"})]}),formStatus===\"error\"&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{style:blurredBackgroundStyle}),/*#__PURE__*/_jsx(SLCard,{status:\"error\",onClose:handleCloseCard})]})]})});}// =====================\n//      STYLES\n// =====================\nconst formWrapperStyle={maxWidth:\"100%\",margin:\"0 auto\",padding:0};const formContainerStyle={display:\"flex\",flexDirection:\"column\",alignItems:\"flex-start\",gap:20,width:\"100%\"};const blurredBackgroundStyle={position:\"fixed\",top:0,left:0,width:\"100vw\",height:\"100vh\",backgroundColor:\"rgba(0, 0, 0, 0.5)\",backdropFilter:\"blur(5px)\",zIndex:9};const contentTextStyle={whiteSpace:\"pre-wrap\",wordWrap:\"break-word\",wordBreak:\"break-word\",fontFamily:'\"Avenir Next W1G Regular\", \"Avenir Next W1G Regular Placeholder\", sans-serif',color:\"#26262b\",fontSize:20,lineHeight:\"28px\",marginBottom:10};addPropertyControls(PTSLForm,{buttonWidth:{type:ControlType.String}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"PTSLForm\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./PT_SLForm.map"],"mappings":"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"}