{"version":3,"file":"SignUpForm.B8S4Z95I.mjs","names":["useState","useMemo","auth","useCallback"],"sources":["https:/framerusercontent.com/modules/0ian5FEz7IgQEXM49lDW/t1qa2kmI8G3xgbMjLln1/SignUpForm.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useCallback,useEffect,useMemo,useState}from\"react\";// @ts-ignore\nimport{addPropertyControls,ControlType,withCSS,inferInitialRouteFromPath,useRouter}from\"framer\";// @ts-ignore\nimport{auth}from\"https://cdn.framerauth.com/packages/sdk/live/latest/framerauth.esm.js\";import BaseForm,{basePropertyControls}from\"https://framerusercontent.com/modules/ExV5oOjPmSTY0gHEjmby/NpqywsqBSPokrP5l2Kmw/BaseForm.js\";//////////////////////////////////\n/////// FORM CONFIGURATION ///////\n//////////////////////////////////\n// Define inputs\nconst baseInputs=[{label:\"License key\",name:\"license_key\",type:\"text\",required:true,extra:false,placeholder:\"License key\"},{label:\"First name\",name:\"first_name\",type:\"text\",required:true,extra:false,placeholder:\"First name\",hidden:true},{label:\"Last name\",name:\"last_name\",type:\"text\",required:false,extra:true,placeholder:\"Last name\",hidden:true},{label:\"Email\",name:\"email\",type:\"email\",required:true,extra:false,placeholder:\"Email\",hidden:true},{label:\"Password\",name:\"password\",type:\"password\",required:true,extra:false,placeholder:\"Password\",hidden:true}];const defaultButtonLabelValidateLicenseKey=\"Continue\"// Default submit button label on this form.\n;const defaultButtonLabelStepSignUp=\"Sign Up\"// Default submit button label on this form.\n;const exposePasswordVisibilityToggle=true// Expose password visibility toggle property for password inputs.\n;const exposePasswordValidator=true// Expose password validator property for password inputs.\n;/**\n * Sign Up Form\n * By Joel Whitaker\n *\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 300\n * @framerIntrinsicHeight 40\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight any\n */const SignUpForm=withCSS(function SignUpForm({...baseProps}){const passwordValidationShadowStyles=baseProps.passwordValidator.shadowObject?`${baseProps.passwordValidator.shadowObject.shadowX}px ${baseProps.passwordValidator.shadowObject.shadowY}px ${baseProps.passwordValidator.shadowObject.shadowBlur}px ${baseProps.passwordValidator.shadowObject.shadowColor}`:null;// We can override inputs with property controls.\nconst[inputs,setInputs]=useState(baseInputs.filter(input=>{var _baseProps_inputFields_inputControlName;const inputControlName=snakeToCamel(input.name);return!(((_baseProps_inputFields_inputControlName=baseProps.inputFields[inputControlName])===null||_baseProps_inputFields_inputControlName===void 0?void 0:_baseProps_inputFields_inputControlName.display)===false);}));const[passwordValidation,setPasswordValidation]=useState({uppercase:false,lowercase:false,digit:false,special:false,length:false});const[initializing,setInitializing]=useState(true);const[licenseKey,setLicenseKey]=useState(null);const[validLicenseKey,setValidLicenseKey]=useState(false);const router=useRouter();const licenseKeyStepCompleted=useMemo(()=>{// Check if license key step (step 1 of step 2) is completed.\nreturn baseProps.displayLicenseKey===false||validLicenseKey===true&&licenseKey!==null;},[validLicenseKey,licenseKey,baseProps.displayLicenseKey]);useEffect(()=>{const defaultLicenseKey=getParamValue(\"license_key\");setLicenseKey(defaultLicenseKey);},[]);useEffect(()=>{// Map input labels to inputs\nif(baseProps.inputFields){const newInputs=[];baseInputs.forEach((input,_idx)=>{const inputControlName=snakeToCamel(input.name);if(!(inputControlName in baseProps.inputFields)){// If the input is not in the inputFields object, skip it.\nconsole.log(`Input ${inputControlName} not found in inputFields object.`);return;}const inputField=baseProps.inputFields[inputControlName];const display=inputField.display;const label=inputField.label;const placeholder=label;if(display===true||display===undefined){newInputs.push({...input,label,placeholder});}});setInputs(newInputs);}},[undefined,baseProps.inputFields]);useEffect(()=>{const checkAuthStatus=async()=>{setInitializing(true);try{if(isBrowser()){var _site_links;const{data:{site}}=await auth.getSite({cache:true});const accountPage=(site===null||site===void 0?void 0:(_site_links=site.links)===null||_site_links===void 0?void 0:_site_links.account)||\"/account\";const licenseKey=getParamValue(\"license_key\");const{data:_,error}=await auth.getUser();if(!error){if(licenseKey){navigateTo(`${accountPage}#license_key=${licenseKey}`);}else{if(baseProps.link){navigateTo(baseProps.link);}}}}}finally{setInitializing(false);}};checkAuthStatus();},[]);const navigateTo=link=>{const[path,hash]=link.split(\"#\");const{routeId,pathVariables}=inferInitialRouteFromPath(router.routes,path);if(routeId){router.navigate(routeId,hash,pathVariables);}};const renderValidationMessage=(message,isValid)=>{var _baseProps_passwordValidator_font,_baseProps_label_font;return /*#__PURE__*/_jsxs(\"div\",{style:{color:baseProps.passwordValidator.color||baseProps.label.color,...baseProps.passwordValidator.font||baseProps.label.font,opacity:isValid?1:.5,display:\"flex\",alignItems:\"center\"},children:[isValid?/*#__PURE__*/_jsx(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"16\",height:\"16\",fill:\"currentColor\",viewBox:\"0 0 16 16\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z\"})}):/*#__PURE__*/_jsx(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"16\",height:\"16\",fill:\"currentColor\",viewBox:\"0 0 16 16\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M7.47 6.97L4.22 3.72a.75.75 0 00-1.06 1.06L6.38 8l-3.22 3.22a.75.75 0 101.06 1.06L7.47 9.06l3.25 3.25a.75.75 0 001.06-1.06L8.53 8l3.25-3.25a.75.75 0 00-1.06-1.06L7.47 6.94v.03z\"})}),\" \",/*#__PURE__*/_jsx(\"span\",{style:{flex:1,marginLeft:\"5px\",textAlign:((_baseProps_passwordValidator_font=baseProps.passwordValidator.font)===null||_baseProps_passwordValidator_font===void 0?void 0:_baseProps_passwordValidator_font.textAlign)||((_baseProps_label_font=baseProps.label.font)===null||_baseProps_label_font===void 0?void 0:_baseProps_label_font.textAlign)},children:message})]});};const onSubmitValidateLicenseKey=useCallback(async formData=>{const submittedLicenseKey=formData.license_key;// Prevent submitting while submitting\nconst{data:_,error}=await auth.validateLicenseKey({license_key:submittedLicenseKey});if(error){return{ok:false,message:error.message};}setLicenseKey(submittedLicenseKey);setValidLicenseKey(true);// Reset password validation.\n// On some browsers, the password validation may not reset when the input is hidden.\nsetPasswordValidation({uppercase:false,lowercase:false,digit:false,special:false,length:false});return{ok:true,message:null};},[]);const handleOnChange=field=>{if(field.type===\"password\"){// Validate password whenever the input value is changed, eg when user is typing\nsetPasswordValidation(validatePassword(field.value));}};const onSubmitSignUp=useCallback(async formData=>{// Test password validation\nconst validateResult=validatePassword(formData.password);if(Object.values(validateResult).some(v=>v===false)){setPasswordValidation(validateResult);return{ok:false,message:\"Password does not meet requirements.\"};}const{data:_,error}=await auth.signUp({email:formData.email,password:formData.password,options:{data:{first_name:formData.first_name,last_name:formData.last_name,license_key:licenseKey}}});if(error){return{ok:false,message:error.message};}// const event = new Event('framerAuthRefetchUser');\n// window.dispatchEvent(event);\nreturn{ok:true,message:\"Account created successfully.\"};},[licenseKey]);const formMarkup=useMemo(()=>{// Here we determine what to show in the form based on the current step.\n// Define the base props for the step\nconst stepBaseProps={...baseProps,link:licenseKeyStepCompleted?baseProps.link:undefined,button:{...baseProps.button,// Set the button label based on the current step\nlabel:licenseKeyStepCompleted?baseProps.button.labelSignUpStep:baseProps.button.labelValidateLicenseKeyStep}};// Determine which onSubmit function to use based on the current step\nconst onSubmit=licenseKeyStepCompleted?onSubmitSignUp:onSubmitValidateLicenseKey;// The trick below hides/shows inputs based on the current step.\n// This is a hack to avoid issues with different numbers of hooks.\n// This can be be made more dynamic. Would require the passwordInput sub-component\n// in AuthBaseForm to be a controlled component with no hook to toggle visibility inside the component\nconst refinedInputs=inputs.map(input=>{if(input.name===\"license_key\"){return{// licenseKey input; the input in Step 1\n...input,hidden:licenseKeyStepCompleted===true,required:licenseKeyStepCompleted===false};}return{// All inputs except licenseKey; the inputs in Step 2\n...input,hidden:licenseKeyStepCompleted===false,required:licenseKeyStepCompleted===true};});return /*#__PURE__*/_jsx(BaseForm,{...stepBaseProps,isInitializing:initializing,inputs:refinedInputs,onSubmit:onSubmit,onInputChange:handleOnChange,defaultValues:{license_key:licenseKey}});},[validLicenseKey,licenseKey,baseProps,inputs])// Only re-compute the form when the step changes.\n;return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",height:\"auto\",display:\"flex\",flexDirection:\"column\",position:\"relative\",gap:baseProps.gap},children:[formMarkup,!initializing&&licenseKeyStepCompleted&&baseProps.displayPasswordValidator&&/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",borderRadius:baseProps.passwordValidator.borderRadius,background:baseProps.passwordValidator.fill,paddingTop:baseProps.passwordValidator.paddingTop,paddingRight:baseProps.passwordValidator.paddingRight,paddingBottom:baseProps.passwordValidator.paddingBottom,paddingLeft:baseProps.passwordValidator.paddingLeft,gap:baseProps.passwordValidator.gap,border:baseProps.passwordValidator.borderObject?`${baseProps.passwordValidator.borderObject.borderWidth}px solid ${baseProps.passwordValidator.borderObject.borderColor}`:undefined,boxShadow:passwordValidationShadowStyles||\"none\"},children:[renderValidationMessage(// \"At least 8 characters\",\nbaseProps.passwordValidator.labels.length,passwordValidation.length),renderValidationMessage(// \"At least one uppercase letter\",\nbaseProps.passwordValidator.labels.uppercase,passwordValidation.uppercase),renderValidationMessage(// \"At least one lowercase letter\",\nbaseProps.passwordValidator.labels.lowercase,passwordValidation.lowercase),renderValidationMessage(// \"At least one digit\",\nbaseProps.passwordValidator.labels.digit,passwordValidation.digit),renderValidationMessage(// \"At least one special character\",\nbaseProps.passwordValidator.labels.special,passwordValidation.special)]})]});},[]);const isBrowser=()=>{return typeof window!==\"undefined\";};const getParamValue=paramName=>{if(!isBrowser()){return null;}const urlParams=new URLSearchParams(window.location.search);if(urlParams.has(paramName)){return urlParams.get(paramName);}const hashParams=new URLSearchParams(window.location.hash.substring(1))// Remove the '#' part\n;if(hashParams.has(paramName)){return hashParams.get(paramName);}return null;};const validatePassword=password=>{const regex={uppercase:/[A-Z]/,lowercase:/[a-z]/,digit:/\\d/,special:/\\W|_/,length:/.{8,}/};return{uppercase:regex.uppercase.test(password),lowercase:regex.lowercase.test(password),digit:regex.digit.test(password),special:regex.special.test(password),length:regex.length.test(password)};};const snakeToCamel=str=>{return str.split(\"_\").map((word,index)=>{if(index===0){return word;}return word.charAt(0).toUpperCase()+word.slice(1);}).join(\"\");};// Here we can override property controls if we don't want to expose them to the user.\n// We generate the inputs property controls dynamically based on the inputs array.\nconst inputsPropertyControls={};baseInputs.forEach((input,_idx)=>{const inputControlName=snakeToCamel(input.name);inputsPropertyControls[inputControlName]={title:`${input.label}`,type:ControlType.Object,controls:{display:input.extra===true?{title:\"Display\",type:ControlType.Boolean,defaultValue:false}:undefined,label:{title:\"Label\",type:ControlType.String,defaultValue:input.label}}};});const exportBasePropertyControls={displayLicenseKey:{title:\"License Key\",type:ControlType.Boolean,defaultValue:false},...basePropertyControls,link:{title:\"Redirect\",type:ControlType.Link},inputFields:{title:\"Inputs\",type:ControlType.Object,controls:inputsPropertyControls},input:{...basePropertyControls.input,controls:{...basePropertyControls.input.controls,icon:exposePasswordVisibilityToggle?{type:ControlType.Object,title:\"Icon\",controls:{showPasswordVisibilityIcon:{title:\"Activated\",type:ControlType.Boolean,defaultValue:true},color:{title:\"Color\",type:ControlType.Color,defaultValue:\"#000\",hidden:props=>!props.showPasswordVisibilityIcon}}}:undefined}},button:{// Inject default button label\n...basePropertyControls.button,controls:{...basePropertyControls.button.controls,label:undefined,labelValidateLicenseKeyStep:{...basePropertyControls.button.controls.label,title:\"Step 1 Label\",defaultValue:defaultButtonLabelValidateLicenseKey},labelSignUpStep:{...basePropertyControls.button.controls.label,title:\"Step 2 Label\",defaultValue:defaultButtonLabelStepSignUp}}},displayPasswordValidator:{title:\"Password Validator\",type:ControlType.Boolean,defaultValue:true,hidden:!exposePasswordValidator},passwordValidator:{title:\"Password Validator\",type:ControlType.Object,hidden:props=>!exposePasswordValidator||!props.displayPasswordValidator,controls:{font:{type:ControlType.Font,title:\"Font\",controls:\"extended\"},fill:{title:\"Fill\",type:ControlType.Color,defaultValue:\"transparent\"},color:{title:\"Text\",type:ControlType.Color,defaultValue:\"#000\"},padding:{title:\"Padding\",type:ControlType.FusedNumber,toggleKey:\"paddingPerSide\",toggleTitles:[\"Padding\",\"Padding per side\"],valueKeys:[\"paddingTop\",\"paddingRight\",\"paddingBottom\",\"paddingLeft\"],valueLabels:[\"T\",\"R\",\"B\",\"L\"],min:0},gap:{title:\"Gap\",type:ControlType.Number,defaultValue:10,min:0},borderRadius:{title:\"Radius\",type:ControlType.Number,displayStepper:true,min:0},labels:{type:ControlType.Object,title:\"Labels\",controls:{length:{title:\"Length\",type:ControlType.String,defaultValue:\"At least 8 characters\"},uppercase:{title:\"Uppercase\",type:ControlType.String,defaultValue:\"At least one uppercase letter\"},lowercase:{title:\"Lowercase\",type:ControlType.String,defaultValue:\"At least one lowercase letter\"},digit:{title:\"Digit\",type:ControlType.String,defaultValue:\"At least one digit\"},special:{title:\"Special\",type:ControlType.String,defaultValue:\"At least one special character\"}}},borderObject:{type:ControlType.Object,title:\"Border\",optional:true,controls:{borderWidth:{title:\"Width\",type:ControlType.Number,displayStepper:true,defaultValue:1},borderColor:{title:\"Color\",type:ControlType.Color,defaultValue:\"rgba(200,200,200,0.5)\"}}},shadowObject:{type:ControlType.Object,title:\"Shadow\",optional:true,controls:{shadowColor:{title:\"Color\",type:ControlType.Color},shadowX:{title:\"X\",type:ControlType.Number,min:-100,max:100},shadowY:{title:\"Y\",type:ControlType.Number,min:-100,max:100},shadowBlur:{title:\"Blur\",type:ControlType.Number,min:0,max:100}}}}}};// @ts-ignore - TS doesn't like our basePropertyControls type.\naddPropertyControls(SignUpForm,exportBasePropertyControls);SignUpForm.defaultProps={...BaseForm.defaultProps,...SignUpForm.defaultProps};export default SignUpForm;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SignUpForm\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"*\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"300\",\"framerSupportedLayoutHeight\":\"any\",\"framerIntrinsicHeight\":\"40\",\"framerSupportedLayoutWidth\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SignUpForm.map"],"mappings":"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"}