{"version":3,"file":"SignUpForm.Ca50HmBT.mjs","names":["SignUpForm","licenseKey","BaseForm"],"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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"}