{"version":3,"file":"UpdatePasswordForm.CQGf_5n9.mjs","names":["useState","useMemo","auth"],"sources":["https:/framerusercontent.com/modules/1KQjADGrXUlQpFMSAUnR/mVDrdUfPnFAzpIxnUn3I/UpdatePasswordForm.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useMemo,useState}from\"react\";// @ts-ignore\nimport{addPropertyControls,ControlType,withCSS}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:\"Email\",name:\"email\",type:\"email\",required:true,extra:false,placeholder:\"Email\"},{label:\"Password\",name:\"password\",type:\"password\",required:true,extra:false,placeholder:\"Password\"},{label:\"Confirm Password\",name:\"confirm_password\",type:\"password\",required:true,extra:false,placeholder:\"Password\"}];const formId=\"change_password\"// Unique form ID for this form.\n;const defaultButtonLabel=\"Update password\"// 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;const buttonLabelKey=`${formId}_button_label`// Key for button label property control.\n;/**\n * Change Password Form\n * By Joel Whitaker\n *\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 300\n * @framerIntrinsicHeight 40\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight any\n */const UpdatePasswordForm=withCSS(function UpdatePasswordForm({...baseProps}){var _window_location,_window;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;const[inputs,setInputs]=useState(baseInputs)// We can override inputs with property controls.\n;const[passwordValidation,setPasswordValidation]=useState({uppercase:false,lowercase:false,digit:false,special:false,length:false});const queryString=(_window=window)===null||_window===void 0?void 0:(_window_location=_window.location)===null||_window_location===void 0?void 0:_window_location.search;const urlParams=new URLSearchParams(queryString);const code=urlParams.get(\"code\");const buttonProps=useMemo(()=>{// Map button label to button\n// This is to avoid style copy-pasting of the button label.\nreturn{...baseProps.button,label:baseProps.button[buttonLabelKey]};},[baseProps.button,baseProps.button[buttonLabelKey]]);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);}},[baseProps.inputFields]);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 onSubmit=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.\"};}// Check if passwords match\nif(formData.password!==formData.confirm_password){return{ok:false,message:\"Passwords must match.\"};}// Update user's password with API\nconst{data:_,error}=await auth.updatePasswordForEmail({code:code,email:formData.email,password:formData.password});if(error){return{ok:false,message:error.message};}return{ok:true,message:\"Your password has been changed.\"};};const handleOnChange=field=>{if(field.name===\"password\"){// Validate password whenever the input value is changed, eg when user is typing\nsetPasswordValidation(validatePassword(field.value));}};return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",height:\"auto\",display:\"flex\",flexDirection:\"column\",position:\"relative\",gap:baseProps.gap},children:[/*#__PURE__*/_jsx(BaseForm,{...baseProps,button:buttonProps,inputs:inputs,onSubmit:onSubmit,onInputChange:handleOnChange}),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 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:true}:undefined,label:{title:\"Label\",type:ControlType.String,defaultValue:input.label}}};});const exportBasePropertyControls={...basePropertyControls,inputFields:{title:\"Inputs\",type:ControlType.Object,controls:inputsPropertyControls},link:{title:\"Redirect\",type:ControlType.Link},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,[buttonLabelKey]:{...basePropertyControls.button.controls.label,defaultValue:defaultButtonLabel}}},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(UpdatePasswordForm,exportBasePropertyControls);UpdatePasswordForm.defaultProps={...BaseForm.defaultProps,...UpdatePasswordForm.defaultProps};export default UpdatePasswordForm;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"UpdatePasswordForm\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerDisableUnlink\":\"*\",\"framerIntrinsicHeight\":\"40\",\"framerIntrinsicWidth\":\"300\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./UpdatePasswordForm.map"],"mappings":"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"}