{"version":3,"sources":["webpack:///./src/components/IconCheckmark.vue","webpack:///./src/components/IconCheckmark.vue?984a","webpack:///./src/use/password.js","webpack:///./src/components/PasswordCriteria.vue?e25f","webpack:///./src/components/PasswordCriteria.vue","webpack:///./src/components/PasswordCriteria.vue?b368","webpack:///./src/components/IconCheckmark.vue?6ebd"],"names":["computedStyle","computed","width","props","size","height","computedCheckmarkStyle","stroke","color","strokeDasharray","strokeDashoffset","__exports__","validatePassword","password","isValid","errorMessage","criteria","label","$t","clamp","replace","length","isSatisfied","test","firstInvalidCriteria","find","c","invalidCharactersArray","match","usePassword","class","_createElementBlock","_createElementVNode","_toDisplayString","_ctx","_Fragment","_renderList","$options","requirement","key","_createVNode","_component_IconCheckmark","is-checked","name","components","IconCheckmark","setup","type","String","required","passwordCriteria","this","render"],"mappings":"mUAqCMA,EAAgBC,sBAAS,KAAM,CACnCC,MAAUC,EAAMC,KAAR,KACRC,OAAWF,EAAMC,KAAR,QAGLE,EAAyBL,sBAAS,KAAM,CAC5CM,OAAWJ,EAAMK,MAAR,cACTC,gBAAoBN,EAAMC,KAAR,KAClBM,iBAAqBP,EAAMC,KAAR,Q,6cCvCrB,MAAMO,EAA2B,IAAgB,EAAQ,CAAC,CAAC,YAAY,qBAExD,gB,kCCRf,8DAMA,SAASC,EAAiBC,GACxB,IAAIC,GAAU,EACVC,EAAe,KAEnB,MAAMC,EAAW,CACf,CACEC,MAAQ,GAAEC,eAAG,8BAA8BC,mBAAMN,EAASO,QAAQ,MAAO,IAAIC,OAAQ,EAAG,QACxFC,YAAaT,EAASO,QAAQ,MAAO,IAAIC,OAAS,EAClDN,aAAcG,eAAG,mCAEnB,CACED,MAAOC,eAAG,4BACVI,YAAa,eAAeC,KAAKV,GACjCE,aAAcG,eAAG,qCAEnB,CACED,MAAOC,eAAG,4BACVI,YAAa,eAAeC,KAAKV,GACjCE,aAAcG,eAAG,qCAEnB,CACED,MAAOC,eAAG,yBACVI,YAAa,YAAYC,KAAKV,GAC9BE,aAAcG,eAAG,kCAEnB,CACED,MAAOC,eAAG,0BACVI,YAAa,4CAA4CC,KAAKV,GAC9DE,aAAcG,eAAG,oCAIfM,EAAuBR,EAASS,KAAMC,IAAOA,EAAEJ,aAEjDE,IACFV,GAAU,EACVC,EAAeS,EAAqBT,cAGtC,MAAMY,EAAyBd,EAASe,MAAM,gDAO9C,OALKJ,GAAwBG,IAC3Bb,GAAU,EACVC,EAAgB,uBAAsBY,EAAuB,IAGxD,CACLb,UACAE,WACAD,gBAMW,SAASc,IACtB,MAAO,CACLjB,sB,oCC/DJ,W,gHCEIkB,MAAM,oB,GAEJA,MAAM,W,GASJA,MAAM,U,+GAZZC,gCAqBM,MArBN,EAqBM,CAnBJC,gCAGM,MAHN,EAGMC,6BADDC,KAAE,yCAiBH,2BAfJH,gCAcMI,cAAA,KAAAC,wBAbkBC,mBAAfC,I,yBADTP,gCAcM,OAZJD,MAAK,6BAAC,gBAAe,CAAAR,YACEgB,EAAYhB,eAClCiB,IAAKD,EAAYrB,OAJpB,CAKEe,gCAOM,MAPN,EAOM,CALJQ,yBAIEC,EAAA,CAHAX,MAAM,cACL1B,KAAM,GACNsC,aAAYJ,EAAYhB,aAH3B,yBAFF,6BAOM,IACNW,6BAAGK,EAAYrB,OAAK,IAbtB,a,4BAuBW,GACb0B,KAAM,mBAENC,WAAY,CACVC,4BAGFC,QACE,MAAM,iBACJlC,GACEiB,iBAEJ,MAAO,CACLjB,qBAIJT,MAAO,CACLU,SAAU,CACRkC,KAAMC,OACNC,UAAU,IAIdhD,SAAU,CACRiD,mBACE,MAAM,SAAElC,GAAamC,KAAKvC,iBAAiBuC,KAAKtC,UAChD,OAAOG,K,iCClDb,MAAML,EAA2B,IAAgB,EAAQ,CAAC,CAAC,SAASyC,GAAQ,CAAC,YAAY,qBAE1E,gB,kCCTf","file":"free-assets/js/chunk-7dff2432.98179540.js","sourcesContent":["\n\n\n\n\n\n\n","import script from \"./IconCheckmark.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./IconCheckmark.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./IconCheckmark.vue?vue&type=style&index=0&id=6baf7cb0&lang=scss&scoped=true\"\n\nimport exportComponent from \"/usr/local/app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6baf7cb0\"]])\n\nexport default __exports__","import { clamp } from 'lodash';\nimport { $t } from '@/i18n';\n\n// Reference: https://stackoverflow.com/a/21456918/3000726\n// Special Character List: https://owasp.org/www-community/password-special-characters\n\nfunction validatePassword(password) {\n let isValid = true;\n let errorMessage = null;\n\n const criteria = [\n {\n label: `${$t('shared.passwordMinimum')} (${clamp(password.replace(/\\s/g, '').length, 0, 8)}/8)`,\n isSatisfied: password.replace(/\\s/g, '').length > 7,\n errorMessage: $t('shared.passwordMinimumRequired'),\n },\n {\n label: $t('shared.passwordUppercase'),\n isSatisfied: /^(?=.*[A-Z])/.test(password),\n errorMessage: $t('shared.passwordUppercaseRequired'),\n },\n {\n label: $t('shared.passwordLowercase'),\n isSatisfied: /^(?=.*[a-z])/.test(password),\n errorMessage: $t('shared.passwordLowercaseRequired'),\n },\n {\n label: $t('shared.passwordNumber'),\n isSatisfied: /^(?=.*\\d)/.test(password),\n errorMessage: $t('shared.passwordNumberRequired'),\n },\n {\n label: $t('shared.passwordSpecial'),\n isSatisfied: /^(?=.*[!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~])/.test(password),\n errorMessage: $t('shared.passwordSpecialRequired'),\n },\n ];\n\n const firstInvalidCriteria = criteria.find((c) => !c.isSatisfied);\n\n if (firstInvalidCriteria) {\n isValid = false;\n errorMessage = firstInvalidCriteria.errorMessage;\n }\n\n const invalidCharactersArray = password.match(/[^a-zA-Z\\d!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~]/g);\n\n if (!firstInvalidCriteria && invalidCharactersArray) {\n isValid = false;\n errorMessage = `Invalid character - ${invalidCharactersArray[0]}`;\n }\n\n return {\n isValid,\n criteria,\n errorMessage,\n };\n}\n\n\n// Exports\nexport default function usePassword() {\n return {\n validatePassword,\n };\n}\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./PasswordCriteria.vue?vue&type=style&index=0&id=313cfb67&lang=scss&scoped=true\"","\n\n\n\n\n\n\n","import { render } from \"./PasswordCriteria.vue?vue&type=template&id=313cfb67&scoped=true\"\nimport script from \"./PasswordCriteria.vue?vue&type=script&lang=js\"\nexport * from \"./PasswordCriteria.vue?vue&type=script&lang=js\"\n\nimport \"./PasswordCriteria.vue?vue&type=style&index=0&id=313cfb67&lang=scss&scoped=true\"\n\nimport exportComponent from \"/usr/local/app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-313cfb67\"]])\n\nexport default __exports__","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./IconCheckmark.vue?vue&type=style&index=0&id=6baf7cb0&lang=scss&scoped=true\""],"sourceRoot":""}