{"version":3,"file":"changePasswordForm-DzleGRg9.js","sources":["../../node_modules/.pnpm/check-password-strength@2.0.10/node_modules/check-password-strength/dist/index.mjs","../../src/scripts/modules/passwordStrengthBar.ts","../../src/scripts/modules/changePasswordForm.ts"],"sourcesContent":["function getDefaultExportFromCjs (x) {\r\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\r\n}\r\n\r\nvar src = {exports: {}};\r\n\r\nconst defaultOptions = [\r\n {\r\n id: 0,\r\n value: \"Too weak\",\r\n minDiversity: 0,\r\n minLength: 0\r\n },\r\n {\r\n id: 1,\r\n value: \"Weak\",\r\n minDiversity: 2,\r\n minLength: 6\r\n },\r\n {\r\n id: 2,\r\n value: \"Medium\",\r\n minDiversity: 4,\r\n minLength: 8\r\n },\r\n {\r\n id: 3,\r\n value: \"Strong\",\r\n minDiversity: 4,\r\n minLength: 10\r\n }\r\n];\r\n\r\nconst passwordStrength = (password, options = defaultOptions, allowedSymbols = \"!\\\"#\\$%&'\\(\\)\\*\\+,-\\./:;<=>\\?@\\[\\\\\\\\\\\\]\\^_`\\{|\\}~\") => {\r\n\r\n let passwordCopy = password || '';\r\n\r\n options[0].minDiversity = 0,\r\n options[0].minLength = 0;\r\n\r\n const rules = [\r\n {\r\n regex: \"[a-z]\",\r\n message: 'lowercase'\r\n },\r\n {\r\n regex: '[A-Z]',\r\n message: 'uppercase'\r\n },\r\n {\r\n regex: '[0-9]',\r\n message: 'number'\r\n },\r\n ];\r\n\r\n if (allowedSymbols) {\r\n rules.push({\r\n regex: `[${allowedSymbols}]`,\r\n message: 'symbol'\r\n });\r\n }\r\n\r\n let strength = {};\r\n\r\n strength.contains = rules\r\n .filter(rule => new RegExp(`${rule.regex}`).test(passwordCopy))\r\n .map(rule => rule.message);\r\n\r\n strength.length = passwordCopy.length;\r\n\r\n let fulfilledOptions = options\r\n .filter(option => strength.contains.length >= option.minDiversity)\r\n .filter(option => strength.length >= option.minLength)\r\n .sort((o1, o2) => o2.id - o1.id)\r\n .map(option => ({ id: option.id, value: option.value }));\r\n\r\n Object.assign(strength, fulfilledOptions[0]);\r\n\r\n return strength;\r\n};\r\n\r\nsrc.exports = { passwordStrength, defaultOptions };\r\nvar passwordStrength_1 = src.exports.passwordStrength = passwordStrength;\r\nvar defaultOptions_1 = src.exports.defaultOptions = defaultOptions;\r\n\r\nvar srcExports = src.exports;\r\nvar index = /*@__PURE__*/getDefaultExportFromCjs(srcExports);\r\n\r\nexport { index as default, defaultOptions_1 as defaultOptions, passwordStrength_1 as passwordStrength };\r\n","import { Component } from '@verndale/core';\nimport { passwordStrength } from 'check-password-strength';\n\nclass PasswordStrengthBar extends Component {\n states: {\n [key: string]: {\n status?: string;\n classColor: string;\n progress: number;\n };\n } = {\n Weak: {\n classColor: 'bar-line--weak',\n progress: 0\n },\n Medium: {\n classColor: 'bar-line--medium',\n progress: 1\n },\n Strong: {\n classColor: 'bar-line--strong',\n progress: 2\n }\n };\n\n errorMessages = {\n eightCharacters: '',\n oneUppercase: '',\n oneLowercase: '',\n oneNumber: '',\n oneSpecialCharacter: ''\n };\n\n update: () => void;\n\n constructor(el: HTMLElement) {\n super(el);\n this.update = this.cleanState.bind(this);\n const {\n eightCharacterMessage,\n oneUppercaseMessage,\n oneLowerCaseMessage,\n oneNumberMessage,\n oneSpecialCharacterMessage,\n weakStatus,\n mediumStatus,\n strongStatus\n } = this.el.dataset;\n\n if (this.errorMessages) {\n if (eightCharacterMessage) this.errorMessages.eightCharacters = eightCharacterMessage;\n if (oneUppercaseMessage) this.errorMessages.oneUppercase = oneUppercaseMessage;\n if (oneLowerCaseMessage) this.errorMessages.oneLowercase = oneLowerCaseMessage;\n if (oneNumberMessage) this.errorMessages.oneNumber = oneNumberMessage;\n if (oneSpecialCharacterMessage)\n this.errorMessages.oneSpecialCharacter = oneSpecialCharacterMessage;\n if (weakStatus) this.states.Weak.status = weakStatus;\n if (mediumStatus) this.states.Medium.status = mediumStatus;\n if (strongStatus) this.states.Strong.status = strongStatus;\n }\n }\n\n setupDefaults() {\n this.dom = {\n bars: this.el.querySelectorAll('.password-strength__bar-line'),\n statusContainer: this.el.querySelector('.password-strength__status'),\n message: this.el.querySelector('.password-strength__message'),\n input: this.el.previousElementSibling?.querySelector('input') as HTMLInputElement\n };\n }\n\n addListeners() {\n (this.dom.input as HTMLElement).addEventListener(\n 'input',\n this.updatePasswordStrength.bind(this)\n );\n }\n\n updatePasswordStrength() {\n const password = (this.dom.input as HTMLInputElement).value;\n const strengthValue = passwordStrength(password);\n\n if (strengthValue.length <= 8) {\n (this.dom.message as HTMLElement).textContent = this.errorMessages.eightCharacters;\n } else if (strengthValue.contains && !strengthValue.contains.includes('lowercase')) {\n (this.dom.message as HTMLElement).textContent = this.errorMessages.oneLowercase;\n } else if (strengthValue.contains && !strengthValue.contains.includes('uppercase')) {\n (this.dom.message as HTMLElement).textContent = this.errorMessages.oneUppercase;\n } else if (strengthValue.contains && !strengthValue.contains.includes('number')) {\n (this.dom.message as HTMLElement).textContent = this.errorMessages.oneNumber;\n } else if (strengthValue.contains && !strengthValue.contains.includes('symbol')) {\n (this.dom.message as HTMLElement).textContent = this.errorMessages.oneSpecialCharacter;\n }\n\n this.updateBar(strengthValue.value);\n }\n\n updateBar(strength: string) {\n let currentStatus;\n if (strength === 'Too weak') {\n currentStatus = this.states.Weak;\n } else if (strength === 'Weak') {\n currentStatus = this.states.Medium;\n } else {\n currentStatus = this.states[strength];\n }\n\n if (currentStatus.status)\n (this.dom.statusContainer as HTMLElement).textContent = currentStatus.status;\n (this.dom.bars as NodeList).forEach((bar, i) => {\n (bar as HTMLElement).classList.remove(\n 'bar-line--weak',\n 'bar-line--medium',\n 'bar-line--strong'\n );\n if (i <= currentStatus.progress) {\n (bar as HTMLElement).classList.add(currentStatus.classColor);\n }\n });\n\n if (strength === 'Strong') {\n (this.dom.message as HTMLElement).textContent = '';\n this.el.classList.add('valid');\n } else {\n this.el.classList.remove('valid');\n }\n }\n\n cleanState() {\n (this.dom.message as HTMLElement).textContent = '';\n (this.dom.statusContainer as HTMLElement).textContent = '';\n (this.dom.bars as NodeList).forEach(bar => {\n (bar as HTMLElement).classList.remove(\n 'bar-line--weak',\n 'bar-line--medium',\n 'bar-line--strong'\n );\n });\n }\n}\n\nexport default PasswordStrengthBar;\n","import { Component } from '@verndale/core';\nimport PasswordInput from './passwordInput';\nimport PasswordStrengthBar from './passwordStrengthBar';\nimport { ActionsToCart } from '../helpers/cart';\nimport { ExecuteToastNotification } from '../helpers/toastNotification';\n\nclass ChangePasswordForm extends Component {\n passwordStrengthBar: PasswordStrengthBar | null = null;\n redlandsEmail: boolean;\n\n constructor(el: HTMLElement) {\n super(el);\n\n if (this.dom.passwordStrength) {\n this.passwordStrengthBar = new PasswordStrengthBar(this.dom.passwordStrength as HTMLElement);\n }\n\n if (this.dom.passwordInputs) {\n (this.dom.passwordInputs as NodeList).forEach(input => {\n const inputWrapper = input.parentElement;\n new PasswordInput(inputWrapper as HTMLElement);\n });\n }\n\n this.redlandsEmail = false;\n }\n\n setupDefaults() {\n this.dom = {\n passwordInputs: this.el.querySelectorAll('input[type=\"password\"]'),\n passwordInput: this.el.querySelector('.password-input input'),\n confirmPasswordInput: this.el.querySelector('.confirm-password-input input'),\n passwordStrength: this.el.querySelector('.password-strength'),\n submitButton: this.el.querySelector('.btn--save'),\n matchMessageContainer: this.el.querySelector(\n '.password-strength__match-password-message'\n ),\n emailInput: this.el.querySelector('[data-module=\"emailInput\"]')\n };\n }\n\n addListeners() {\n (this.dom.confirmPasswordInput as HTMLInputElement).addEventListener(\n 'input',\n this.checkMatch.bind(this)\n );\n (this.dom.submitButton as HTMLElement)?.addEventListener('click', this.onSaveClick.bind(this));\n if (this.dom.emailInput) {\n (this.dom.emailInput as HTMLElement).addEventListener(\n 'input',\n this.checkRedlandsEmail.bind(this)\n );\n }\n }\n\n checkRedlandsEmail() {\n if ((this.dom.emailInput as HTMLElement).classList.contains('ValidationFail')) {\n (this.dom.submitButton as HTMLElement).classList.add('btn--disabled');\n this.redlandsEmail = true;\n } else {\n (this.dom.submitButton as HTMLElement).classList.remove('btn--disabled');\n this.redlandsEmail = false;\n }\n }\n\n checkMatch() {\n const password = this.dom.passwordInput as HTMLInputElement;\n const confirmPassword = this.dom.confirmPasswordInput as HTMLInputElement;\n const passwordStrength = this.dom.passwordStrength as HTMLElement;\n\n if (\n password.value &&\n confirmPassword.value &&\n password.value === confirmPassword.value &&\n passwordStrength.classList.contains('valid') &&\n !this.redlandsEmail\n ) {\n (this.dom.submitButton as HTMLElement).classList.remove('btn--disabled');\n (this.dom.matchMessageContainer as HTMLElement).classList.add('hide-visibility');\n } else {\n (this.dom.submitButton as HTMLElement).classList.add('btn--disabled');\n (this.dom.matchMessageContainer as HTMLElement).classList.remove('hide-visibility');\n }\n }\n\n async onSaveClick(event: Event) {\n if (this.el.dataset.endpointSave) {\n event.preventDefault();\n }\n const formData = new FormData(this.el as HTMLFormElement);\n const data = Object.fromEntries(formData);\n\n if (this.el.dataset.endpointSave) {\n this.setPasswordTypes();\n const endpointData = ActionsToCart(\n this.el.dataset.endpointSave,\n data,\n null,\n [\n {\n name: 'RequestVerificationToken',\n value: data.__RequestVerificationToken as string\n }\n ],\n false\n );\n\n const notificationData = await endpointData;\n\n if (notificationData) {\n if (\n notificationData.success &&\n notificationData.redirect &&\n notificationData.redirect !== ''\n ) {\n window.location.href = notificationData.redirect;\n } else {\n ExecuteToastNotification(notificationData, this.dom.submitButton as HTMLButtonElement);\n\n if (notificationData.success) {\n this.cleanForm();\n }\n }\n }\n }\n }\n\n cleanForm() {\n const inputs = this.el.querySelectorAll('input[type=\"password\"]');\n inputs.forEach(input => {\n (input as HTMLInputElement).value = '';\n });\n (this.dom.submitButton as HTMLElement).classList.add('btn--disabled');\n\n this.passwordStrengthBar?.cleanState();\n }\n\n setPasswordTypes() {\n const inputs = this.el.querySelectorAll('input[type=\"text\"]');\n inputs.forEach(input => {\n (input as HTMLInputElement).type = 'password';\n });\n }\n}\n\nexport default ChangePasswordForm;\n"],"names":["src","defaultOptions","passwordStrength","password","options","allowedSymbols","passwordCopy","rules","strength","rule","fulfilledOptions","option","o1","o2","passwordStrength_1","PasswordStrengthBar","Component","el","__publicField","eightCharacterMessage","oneUppercaseMessage","oneLowerCaseMessage","oneNumberMessage","oneSpecialCharacterMessage","weakStatus","mediumStatus","strongStatus","_a","strengthValue","currentStatus","bar","i","ChangePasswordForm","input","inputWrapper","PasswordInput","confirmPassword","event","formData","data","notificationData","ActionsToCart","ExecuteToastNotification"],"mappings":"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","x_google_ignoreList":[0]}