{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./Content/javascripts/react/site-bdc/common/Utils.js","webpack:///./Content/javascripts/react/site-bdc/login-register/reset-password/ResetPasswordConstants.js","webpack:///./Content/javascripts/react/site-bdc/login-register/form/validators.js","webpack:///./Content/javascripts/react/site-bdc/login-register/form/TextBox.js","webpack:///./Content/javascripts/react/site-bdc/login-register/modal/modalActions.js","webpack:///./Content/javascripts/react/site-bdc/login-register/app/AppActions.js","webpack:///./Content/javascripts/react/site-bdc/modules/shared/functional.js","webpack:///./Content/javascripts/react/site-bdc/login-register/form/PasswordContainer.js","webpack:///./Content/javascripts/utilities/passwordStrength.js","webpack:///./Content/javascripts/react/site-bdc/login-register/reset-password/ResetPasswordActions.js","webpack:///./Content/javascripts/react/site-bdc/login-register/reset-password/Instructions.js","webpack:///./Content/javascripts/react/site-bdc/login-register/reset-password/BackToSignInContainer.js","webpack:///./Content/javascripts/react/site-bdc/login-register/reset-password/CheckYourInBoxContainer.js","webpack:///./Content/javascripts/react/site-bdc/login-register/login/LoginReducer.js","webpack:///./Content/javascripts/react/site-bdc/login-register/register/reducer.js","webpack:///./Content/javascripts/react/site-bdc/login-register/modal/reducer.js","webpack:///./Content/javascripts/react/site-bdc/login-register/app/reducer.js","webpack:///./Content/javascripts/react/site-bdc/login-register/reset-password/ResetPasswordReducer.js","webpack:///./Content/javascripts/react/site-bdc/store/configureStore.js","webpack:///./Content/javascripts/react/site-bdc/login-register/index.js","webpack:///./Content/javascripts/react/site-bdc/login-register/app/reducers.js","webpack:///./Content/javascripts/react/site-bdc/login-register/app/App.js","webpack:///./Content/javascripts/react/site-bdc/login-register/app/AppContentContainer.js","webpack:///./Content/javascripts/react/site-bdc/login-register/app/AppContent.js","webpack:///./Content/javascripts/react/site-bdc/login-register/reset-password/ChangeYourPasswordContainer.js","webpack:///./Content/javascripts/react/site-bdc/login-register/reset-password/ChangeYourPassword.js","webpack:///./Content/javascripts/react/site-bdc/login-register/reset-password/YoureAllSet.js","webpack:///./Content/javascripts/react/site-bdc/login-register/login/LogInActions.js","webpack:///./Content/javascripts/react/site-bdc/login-register/api/RegisterApi.js","webpack:///./Content/javascripts/react/site-bdc/login-register/register/RegisterActions.js","webpack:///./Content/javascripts/react/site-bdc/login-register/reset-password/Title.js","webpack:///./Content/javascripts/react/site-bdc/login-register/reset-password/SubmitButton.js","webpack:///./Content/javascripts/react/site-bdc/login-register/api/ResetPasswordApi.js","webpack:///./Content/javascripts/react/site-bdc/login-register/form/PasswordPresentation.js","webpack:///./Content/javascripts/react/site-bdc/login-register/login/LogInContainer.js","webpack:///./Content/javascripts/react/site-bdc/login-register/login/LogInForm.js","webpack:///./Content/javascripts/react/site-bdc/login-register/api/LoginApi.js","webpack:///./Content/javascripts/react/site-bdc/login-register/reset-password/ForgotYourPasswordContainer.js","webpack:///./Content/javascripts/react/site-bdc/login-register/reset-password/ForgotYourPasswordForm.js","webpack:///./Content/javascripts/react/site-bdc/login-register/reset-password/BackToSignIn.js","webpack:///./Content/javascripts/react/site-bdc/login-register/reset-password/CheckYourInBox.js","webpack:///./Content/javascripts/react/estimateBuilder/helpers/globalVariables.js","webpack:///./Content/javascripts/react/site-bdc/login-register/app/SignInSignUpContainer.js","webpack:///./Content/javascripts/react/site-bdc/login-register/app/SignInSignUp.js","webpack:///./Content/javascripts/react/site-bdc/login-register/register/RegisterContainer.js","webpack:///./Content/javascripts/react/site-bdc/login-register/register/RegisterForm.js","webpack:///./Content/javascripts/react/site-bdc/login-register/form/EmailTextBox.js","webpack:///./Content/javascripts/react/site-bdc/login-register/register/validate.js","webpack:///./Content/javascripts/react/site-bdc/login-register/register/asyncValidate.js","webpack:///./Content/javascripts/react/site-bdc/login-register/register/RegisterConfirmationContainer.js","webpack:///./Content/javascripts/react/site-bdc/login-register/register/RegisterConfirmation.js","webpack:///./Content/javascripts/react/site-bdc/login-register/form/PasswordStrength.js","webpack:///./Content/javascripts/react/site-bdc/common/index.js","webpack:///./Content/javascripts/react/site-bdc/api/Axios.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","43","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","queryString","require","Utils","parseUrl","url","link","document","createElement","setAttribute","retValue","port","hostname","pathname","protocol","search","getUrlAddress","newUrl","parse","stringify","parsed","getQueryString","param","location","DefaultMessage","sendAnalyticsEvent","thdAnalyticsEvent","timeOut","resolve","globals","siteId","sites","theHomeDepot","digitalData","event","ddoEventInit","setTimeout","BACK_TO_SIGN_IN","FORGOT_YOUR_PASSWORD","CHECK_YOUR_IN_BOX","CHANGE_YOUR_PASSWORD","YOURE_ALL_SET","required","undefined","validEmail","includes","split","trim","checkAfterDot","validPassword","strength","TextBox","input","dataTestId","label","type","meta","touched","error","readOnly","style","hidden","hasError","inputStyle","border","height","margin","className","id","data-test-id","htmlFor","defaultProps","propTypes","shape","isRequired","string","bool","closeModal","history","pushState","title","openModal","e","changeDefaultTab","newDefaultTab","default","tab","existy","x","truthy","PasswordContainer","props","showHidePassword","updateInputValue","origOnChange","onChange","state","inputType","this","setState","target","forgotPasswordPath","message","text","criteriaList","messageColor","color","showRequirements","Component","func","val","validator","PasswordValidator","is","min","has","uppercase","lowercase","digits","symbols","misses","validate","list","digits_symbols","code","match","uppercase_lowercase","password_length","Instructions","PropTypes","BackToSignInContainer","withRouter","connect","BackToSignIn","CheckYourInBoxContainer","dispatch","onBackToSignIn","CheckYourInBox","defaultState","isLoggedIn","isSubmitting","password","serverMessage","userName","action","firstName","lastName","showPasswordStrength","passwordStrength","passwordColor","passwordMessage","hasSuccessfullyCreatedAccount","newState","isOpen","defaultTab","selectedTab","initialState","redux","combineReducers","store","createStore","compose","applyMiddleware","thunk","devToolsExtension","f","reducers","render","Provider","getElementById","pipApp","login","register","app","form","formReducer","modal","resetPassword","AppContentContainer","step","AppContent","renderRoute","routeName","renderFunc","Route","path","renderRouteWithComponent","component","onRegistrationSuccess","params","returnurl","URL","baseURI","origin","href","registrationSuccess","onSigninSuccess","renderSignInSignUp","extraProps","renderSignUpRoute","newProps","pageContext","pageContextJavascript","createAccountCustomer","accountInvitationGuid","customer","showSignIn","showAlreadyHaveAccount","showAccountBenefitsText","showSignUpBorderBottom","signUpTitleElementType","signUpLabel","signUpLabelDivClassNameOverride","isInvitationValid","BrowserRouter","finishCreatingAccount","atob","email","signUpLabelClassNameOverride","ForgotYourPasswordContainer","ChangeYourPasswordContainer","errorMessage","onSubmit","values","ResetPasswordApi","submitPerformPasswordReset","then","catch","console","log","response","status","React","ChangeYourPassword","handleSubmit","Field","selectorName","ChangeYourPasswordForm","reduxForm","loggingIn","logInFailure","loginSuccess","logOut","loginStatusChange","logIn","getState","LoginApi","resp","ObjectException","JSON","user","profile","authenticationStatus","profileInfo","profileID","category","primaryCategory","eventInfo","eventName","loginCompletedEvent","CustomEvent","detail","dispatchEvent","mergedDetail","taskName","loginStatusChangeEvent","exception","api","post","checkUniqueEmail","createAccount","creatingAccount","forgotPassword","onTextChanged","registrationFailure","RegisterApi","validateUniqueEmail","Title","submitPasswordReset","newPassword","forUserId","passwordResetToken","token","ForgotPasswordLink","onClick","PasswordPresentation","data-strength","backgroundColor","RenderMessage","role","tabIndex","RenderPasswordFunctionality","map","display","width","RenderCriteria","arrayOf","number","LogInContainer","ownProps","initialValues","signUp","LogInForm","disabled","emailInputStyles","Password","displayRegisterLink","displaySitePolicyLinks","rel","instructions","_","defaultCustomerEmail","ForgotYourPassword","ForgotYourPasswordForm","makeOnClick","goBack","americanBlinds","blindsCa","blinds","justBlinds","itemTypes","unknown","doorLock","garageDoor","itemSources","autobahn","containerTypes","room","garage","SignInSignUpContainer","switchTab","showSignUp","signInLabel","signInLabelClassNameOverride","signInLabelDivClassNameOverride","SignInSignUp","updateIsUniqueEmail","isUniqueEmail","signInTab","Fragment","checked","signUpTab","SignUpTitleElementType","titleStyle","borderBottom","selector","formValueSelector","RegisterContainer","onForgotPasswordClicked","onEmailBlurred","prefillLoginEmail","change","signIn","RegisterForm","RegistrationForm","EmailTextBox","RegisterComponent","registerFormProps","registrationElement","inviteToRegister","asyncValidate","asyncBlurFields","preventDefault","transitionViaEmail","errors","username","isUnique","redirect","redirectAfterCreate","RegisterConfirmation","strengths","1","msg","2","3","4","newBaseUrl","replace","baseUrl","axios","defaults","baseURL","headers","Accept","credentials"],"mappings":"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","file":"login-register-b78ba52823f3c39e284b.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t43: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/content/build/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([2165,0]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import { sites } from '../../estimateBuilder/helpers/globalVariables';\r\n\r\nconst queryString = require('query-string');\r\n\r\n// Timeout in ms\r\nconst defaultTimeOut = 500;\r\n\r\n/* eslint no-underscore-dangle:0 */\r\nclass Utils {\r\n static parseUrl = (url) => {\r\n let link = document.createElement('a');\r\n\r\n link.setAttribute('href', url);\r\n\r\n const retValue = {\r\n port: link.port,\r\n hostname: link.hostname,\r\n pathname: link.pathname,\r\n protocol: link.protocol,\r\n search: link.search,\r\n };\r\n\r\n link = null;\r\n\r\n return retValue;\r\n };\r\n\r\n static getUrlAddress = (url) => {\r\n const newUrl = Utils.parseUrl(url);\r\n return `${newUrl.protocol}//${newUrl.hostname}:${newUrl.port}`;\r\n };\r\n\r\n static parse = search => queryString.parse(search);\r\n\r\n static stringify = parsed => queryString.stringify(parsed);\r\n\r\n static getQueryString = param => queryString.parse(location.search)[`${param}`];\r\n\r\n static DefaultMessage = () => 'OK';\r\n /* eslint-disable no-undef */\r\n\r\n static sendAnalyticsEvent = (thdAnalyticsEvent, timeOut = defaultTimeOut) =>\r\n new Promise((resolve) => {\r\n if (globals.siteId === sites.theHomeDepot) {\r\n window.digitalData.event.push(thdAnalyticsEvent);\r\n } else {\r\n window.ddoEventInit(thdAnalyticsEvent);\r\n }\r\n\r\n window.setTimeout(resolve(), timeOut);\r\n });\r\n}\r\nconst scrollTillYouReachElement = (elmnt, timeToCheck, numberOfTries) => {\r\n const bounding = elmnt.getBoundingClientRect();\r\n let numTries = numberOfTries || 0;\r\n if (!(bounding.top >= 0 && bounding.top <= 1)) {\r\n elmnt.scrollIntoView();\r\n numTries += 1;\r\n // Check recursively and scroll till the element appears in the view port.\r\n // Check three times and quit.\r\n if (numTries <= 3) {\r\n setTimeout(\r\n (element, time, numberTries) => {\r\n scrollTillYouReachElement(element, time, numberTries);\r\n },\r\n timeToCheck || 800,\r\n elmnt,\r\n timeToCheck,\r\n numTries,\r\n );\r\n }\r\n }\r\n};\r\n\r\nmodule.exports = { Utils };\r\n","// action types\r\nexport const BACK_TO_SIGN_IN = 'BACK_TO_SIGN_IN';\r\n\r\n// steps\r\nexport const FORGOT_YOUR_PASSWORD = 'FORGOT_YOUR_PASSWORD';\r\nexport const CHECK_YOUR_IN_BOX = 'CHECK_YOUR_IN_BOX;';\r\nexport const CHANGE_YOUR_PASSWORD = 'CHANGE_YOUR_PASSWORD';\r\nexport const YOURE_ALL_SET = 'YOURE_ALL_SET';\r\n","/**\r\n * This module contains validators used by redux-form fields.\r\n */\r\nimport getPasswordStrength from './../../../../utilities/passwordStrength';\r\n\r\nexport const required = value => (value ? undefined : 'Required');\r\n\r\nexport const validEmail = (value) => {\r\n if (value.includes('@')) {\r\n const split = value.split('@');\r\n if (split[1].trim() !== '' && split[1].trim().length !== 0) {\r\n if (split[1].includes('.')) {\r\n const checkAfterDot = split[1].split('.');\r\n if (checkAfterDot[1].trim() !== '' && checkAfterDot[1].trim().length !== 0) {\r\n return undefined;\r\n }\r\n return `'.' is used at the wrong position in '${split[1]}'`;\r\n }\r\n return 'Email must contain a \\'.\\' after the \\'@\\'';\r\n }\r\n return 'Email must not be blank after the \\'@\\'';\r\n }\r\n return 'Email must contain \\'@\\'';\r\n};\r\n\r\nexport const validPassword = (value) => {\r\n const isValid = getPasswordStrength(value).strength === 3;\r\n if (isValid) {\r\n return undefined;\r\n }\r\n\r\n return 'password strength';\r\n};\r\n","import React from 'react';\r\nimport {\r\n shape,\r\n string,\r\n bool,\r\n} from 'prop-types';\r\n\r\nconst TextBox = ({\r\n input, dataTestId, label, type, meta: { touched, error }, readOnly, style,\r\n}) => {\r\n const hidden = type === 'hidden';\r\n const hasError = (touched || hidden) && error;\r\n let inputStyle = {};\r\n if (hidden) {\r\n inputStyle.border = 0;\r\n inputStyle.height = 'auto';\r\n if (!hasError) {\r\n inputStyle.margin = 'auto';\r\n }\r\n }\r\n\r\n inputStyle = style || inputStyle;\r\n\r\n return (\r\n
\r\n \r\n {label && }\r\n {hasError &&
{error}
}\r\n
\r\n );\r\n};\r\n\r\n\r\nTextBox.defaultProps = {\r\n dataTestId: '',\r\n style: undefined,\r\n readOnly: false,\r\n};\r\n\r\nTextBox.propTypes = {\r\n input: shape({}).isRequired,\r\n dataTestId: string,\r\n label: string.isRequired,\r\n type: string.isRequired,\r\n meta: shape({}).isRequired,\r\n style: shape({}),\r\n readOnly: bool,\r\n};\r\n\r\nexport default TextBox;\r\n","/* eslint-disable no-restricted-globals */\r\nfunction openModal(e) {\r\n return {\r\n type: 'OPEN_MODAL',\r\n event: e,\r\n };\r\n}\r\n\r\nfunction closeModal() {\r\n history.pushState('', document.title, window.location.pathname + window.location.search);\r\n return {\r\n type: 'CLOSE_MODAL',\r\n };\r\n}\r\n\r\nfunction changeDefaultTab(newDefaultTab) {\r\n history.pushState('', document.title, window.location.pathname + window.location.search);\r\n\r\n return {\r\n type: 'CHANGE_DEFAULT_TAB',\r\n newDefaultTab,\r\n };\r\n}\r\n\r\nexport { closeModal, openModal, changeDefaultTab };\r\n","function switchTab(tab) {\r\n return {\r\n type: 'SWITCH_TAB',\r\n value: tab,\r\n };\r\n}\r\n\r\nexport { switchTab as default };\r\n","/**\r\n * Support for functional programming.\r\n */\r\n\r\nexport function existy(x) {\r\n return x != null;\r\n}\r\n\r\nexport function truthy(x) {\r\n return ((x !== false) && existy(x));\r\n}\r\n\r\n","import React, { Component } from 'react';\r\nimport {\r\n shape,\r\n string,\r\n func,\r\n bool,\r\n} from 'prop-types';\r\nimport Password from './PasswordPresentation';\r\nimport passwordStrength from './../../../../utilities/passwordStrength';\r\n\r\nclass PasswordContainer extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.showHidePassword = this.showHidePassword.bind(this);\r\n this.updateInputValue = this.updateInputValue.bind(this);\r\n\r\n const { input } = this.props;\r\n this.origOnChange = input.onChange;\r\n input.onChange = this.updateInputValue;\r\n\r\n this.state = {\r\n inputType: this.props.type,\r\n input,\r\n };\r\n }\r\n\r\n showHidePassword() {\r\n this.setState({\r\n inputType: this.state.inputType === 'text' ? 'password' : 'text',\r\n });\r\n }\r\n\r\n updateInputValue(event) {\r\n if (this.origOnChange) {\r\n this.origOnChange(event);\r\n }\r\n\r\n if (this.state.input.value !== event.target.value) {\r\n this.setState({\r\n input: {\r\n ...this.state.input,\r\n value: event.target.value,\r\n },\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const strength = passwordStrength(this.state.input.value || '');\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nPasswordContainer.defaultProps = {\r\n forgotPasswordPath: '',\r\n dataTestId: '',\r\n showRequirements: false,\r\n};\r\n\r\nPasswordContainer.propTypes = {\r\n input: shape({ value: string, onChange: func }).isRequired,\r\n dataTestId: string,\r\n label: string.isRequired,\r\n type: string.isRequired,\r\n forgotPasswordPath: string,\r\n meta: shape({}).isRequired,\r\n showRequirements: bool,\r\n};\r\n\r\nexport default PasswordContainer;\r\n","import PasswordValidator from 'password-validator';\r\n\r\nfunction passwordStrength(val) {\r\n const validator = new PasswordValidator();\r\n\r\n validator\r\n .is()\r\n .min(8)\r\n .has()\r\n .uppercase()\r\n .has()\r\n .lowercase()\r\n .has()\r\n .digits()\r\n .has()\r\n .symbols();\r\n\r\n const misses = validator.validate(val, { list: true });\r\n\r\n const criteriaList = {\r\n digits_symbols: { message: 'Including numbers or symbols', code: 'digits_symbols', match: false },\r\n uppercase_lowercase: { message: 'Mixing upper/lowercase', code: 'uppercase_lowercase', match: false },\r\n password_length: { message: 'A password at least 8 characters long', code: 'password_length', match: false },\r\n };\r\n\r\n let message = 'Weak';\r\n let strength = 0;\r\n let color = 'red';\r\n\r\n criteriaList.digits_symbols.match = !misses.includes('digits') || !misses.includes('symbols');\r\n criteriaList.uppercase_lowercase.match = !misses.includes('lowercase') && !misses.includes('uppercase');\r\n criteriaList.password_length.match = !misses.includes('min');\r\n\r\n if (criteriaList.digits_symbols.match) {\r\n strength += 1;\r\n }\r\n if (criteriaList.uppercase_lowercase.match) {\r\n strength += 1;\r\n }\r\n if (criteriaList.password_length.match) {\r\n strength += 1;\r\n }\r\n\r\n if (strength === 1) {\r\n color = 'red';\r\n message = 'Poor';\r\n } else if (strength === 2) {\r\n color = 'gold';\r\n message = 'Almost There';\r\n } else if (strength === 3) {\r\n color = 'green';\r\n message = 'Strong';\r\n }\r\n\r\n return { strength, criteriaList: Object.values(criteriaList), message: { text: message, color } };\r\n}\r\n\r\nexport default passwordStrength;\r\n","import 'isomorphic-fetch'; // This import installs `fetch` globally (to support testing)\r\nimport { BACK_TO_SIGN_IN } from './ResetPasswordConstants';\r\n\r\nexport default function backToSignIn() {\r\n return {\r\n type: BACK_TO_SIGN_IN,\r\n };\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst Instructions = ({ text }) => (\r\n

\r\n {text}\r\n

\r\n);\r\n\r\nInstructions.propTypes = {\r\n text: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default Instructions;\r\n","import { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router-dom';\r\nimport BackToSignIn from './BackToSignIn';\r\n\r\nconst BackToSignInContainer = withRouter(connect(null, null)(BackToSignIn));\r\n\r\nexport default BackToSignInContainer;\r\n","import { connect } from 'react-redux';\r\nimport backToSignIn from './ResetPasswordActions';\r\nimport CheckYourInBox from './CheckYourInBox';\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n onBackToSignIn: () => dispatch(backToSignIn()),\r\n});\r\n\r\nconst CheckYourInBoxContainer = connect(null, mapDispatchToProps)(CheckYourInBox);\r\nexport default CheckYourInBoxContainer;\r\n","const defaultState = {\r\n isLoggedIn: false,\r\n isSubmitting: false,\r\n password: '',\r\n serverMessage: '',\r\n userName: '',\r\n};\r\n\r\nconst login = (state = defaultState, action) => {\r\n switch (action.type) {\r\n case 'LOGGING_IN':\r\n return Object.assign({}, state, {\r\n isSubmitting: true,\r\n });\r\n case 'LOGIN':\r\n return Object.assign({}, state, {\r\n isSubmitting: true,\r\n });\r\n case 'LOGIN_FAILURE':\r\n return Object.assign({}, state, {\r\n isSubmitting: false,\r\n serverMessage: action.value,\r\n isLoggedIn: false,\r\n });\r\n case 'LOGIN_SUCCESS':\r\n return { ...state, isLoggedIn: true };\r\n case 'LOGOUT':\r\n return { ...state, isLoggedIn: false };\r\n case 'LOGIN_STATUS_CHANGE':\r\n return { ...state, isLoggedIn: action.isLoggedIn };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default login;\r\n","const defaultState = {\r\n firstName: '',\r\n isSubmitting: false,\r\n lastName: '',\r\n userName: '',\r\n password: '',\r\n showPasswordStrength: false,\r\n passwordStrength: {\r\n message: '',\r\n strength: '',\r\n color: '',\r\n },\r\n passwordColor: '',\r\n passwordMessage: '',\r\n serverMessage: '',\r\n hasSuccessfullyCreatedAccount: false,\r\n};\r\n\r\nconst register = (state = defaultState, action) => {\r\n switch (action.type) {\r\n case 'CREATING_ACCOUNT':\r\n return Object.assign({}, state, { isSubmitting: true });\r\n case 'REGISTRATION_SUCCESS':\r\n return Object.assign({}, state, {\r\n hasSuccessfullyCreatedAccount: true,\r\n isSubmitting: false,\r\n });\r\n case 'REGISTRATION_FAILURE': {\r\n const newState = Object.assign({}, state, {\r\n isSubmitting: false,\r\n });\r\n newState.serverMessage = action.value;\r\n return newState;\r\n }\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default register;\r\n","\r\nconst defaultState = {\r\n isOpen: false,\r\n event: null,\r\n defaultTab: 'signIn',\r\n};\r\n\r\n\r\nconst modal = (state = defaultState, action) => {\r\n switch (action.type) {\r\n case 'OPEN_MODAL':\r\n return Object.assign({}, state, { isOpen: true, event: action.event });\r\n case 'CLOSE_MODAL':\r\n return Object.assign({}, state, { isOpen: false });\r\n case 'CHANGE_DEFAULT_TAB':\r\n return Object.assign({}, state, { defaultTab: action.newDefaultTab });\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default modal;\r\n","const defaultState = {\r\n selectedTab: 'signIn',\r\n};\r\n\r\nconst app = (state = defaultState, action) => {\r\n switch (action.type) {\r\n case 'SWITCH_TAB':\r\n return Object.assign({}, state, { selectedTab: action.value });\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default app;\r\n","import { BACK_TO_SIGN_IN } from './ResetPasswordConstants';\r\n\r\nconst initialState = {};\r\n\r\nexport default function resetPassword(state = initialState, action) {\r\n switch (action.type) {\r\n case 'CLOSE_MODAL':\r\n case BACK_TO_SIGN_IN:\r\n return Object.assign({}, initialState);\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","import * as redux from 'redux';\r\nimport thunk from 'redux-thunk';\r\n\r\nexport default (combineReducers, initialState = {}) => {\r\n const store = redux.createStore(combineReducers, initialState, redux.compose(\r\n redux.applyMiddleware(thunk),\r\n window.devToolsExtension ? window.devToolsExtension() : f => f,\r\n ));\r\n\r\n return store;\r\n};\r\n","import { render } from 'react-dom';\r\nimport React from 'react';\r\nimport { Provider } from 'react-redux';\r\nimport reducers from './app/reducers';\r\nimport App from './app/App';\r\nimport configureStore from '../store/configureStore';\r\n\r\nconst store = configureStore(reducers);\r\n\r\n/**\r\n * This App is used by AutobahnProjects\\Autobahn\\app\\Eleanor.UI.Web\\Views\\Manage\\Register.cshtml\r\n * (blinds.com/Manage/ResetPassword)\r\n *\r\n * And the component ID is root, so this needs to be root\r\n * */\r\nrender(\r\n \r\n \r\n ,\r\n document.getElementById('root'),\r\n);\r\n","import { combineReducers } from 'redux';\r\nimport { reducer as formReducer } from 'redux-form';\r\nimport login from '../login/LoginReducer';\r\nimport register from '../register/reducer';\r\nimport modal from '../modal/reducer';\r\nimport app from './reducer';\r\nimport resetPassword from '../reset-password/ResetPasswordReducer';\r\n\r\nconst pipApp = combineReducers({\r\n login,\r\n register,\r\n app,\r\n form: formReducer,\r\n modal,\r\n resetPassword,\r\n});\r\n\r\nexport default pipApp;\r\n","import React from 'react';\r\nimport AppContentContainer from './AppContentContainer';\r\n\r\nconst App = () => (\r\n \r\n);\r\n\r\nexport default App;\r\n","import { connect } from 'react-redux';\r\nimport AppContent from './AppContent';\r\n\r\nfunction mapStateToProps(state) {\r\n const result = {\r\n step: state.resetPassword.step,\r\n };\r\n return result;\r\n}\r\n\r\nconst AppContentContainer = connect(mapStateToProps, null)(AppContent);\r\n\r\nexport default AppContentContainer;\r\n","/* eslint-disable no-restricted-globals */\r\nimport React from 'react';\r\nimport { BrowserRouter, Route } from 'react-router-dom';\r\nimport SignInSignUpContainer from './SignInSignUpContainer';\r\nimport ForgotYourPasswordContainer from '../reset-password/ForgotYourPasswordContainer';\r\nimport ChangeYourPasswordContainer from '../reset-password/ChangeYourPasswordContainer';\r\nimport { registrationSuccess } from '../register/RegisterActions';\r\nimport { Utils } from '../../common';\r\n\r\nfunction renderRoute(routeName, renderFunc) {\r\n return ;\r\n}\r\n\r\nfunction renderRouteWithComponent(routeName, component) {\r\n return ;\r\n}\r\n\r\nfunction onRegistrationSuccess(dispatch) {\r\n const params = Utils.parse(window.location.search);\r\n if (params.returnurl &&\r\n new URL(document.baseURI).origin === new URL(params.returnurl, document.baseURI).origin) {\r\n location.href = params.returnurl;\r\n } else {\r\n dispatch(registrationSuccess());\r\n }\r\n}\r\n\r\nfunction onSigninSuccess() {\r\n const params = Utils.parse(window.location.search);\r\n if (params.returnurl &&\r\n new URL(document.baseURI).origin === new URL(params.returnurl, document.baseURI).origin) {\r\n location.href = params.returnurl;\r\n } else {\r\n location.href = '/myaccount/dashboard';\r\n }\r\n}\r\n\r\nfunction renderSignInSignUp(defaultTab, extraProps = {}) {\r\n return () => (\r\n \r\n );\r\n}\r\n\r\nfunction renderSignInRoute() {\r\n return renderRoute('login', renderSignInSignUp('signIn'));\r\n}\r\n\r\nfunction getPropsFromGlobalPageContext(props) {\r\n const newProps = {};\r\n\r\n const pageContext = window.pageContextJavascript;\r\n if (pageContext !== null &&\r\n pageContext !== undefined\r\n ) {\r\n if (pageContext.createAccountCustomer !== null &&\r\n pageContext.createAccountCustomer !== undefined &&\r\n pageContext.accountInvitationGuid !== null &&\r\n pageContext.accountInvitationGuid !== undefined\r\n ) {\r\n newProps.customer = pageContext.createAccountCustomer;\r\n newProps.showSignIn = false;\r\n newProps.showAlreadyHaveAccount = false;\r\n newProps.showAccountBenefitsText = false;\r\n newProps.showSignUpBorderBottom = false;\r\n newProps.signUpTitleElementType = 'h1';\r\n newProps.signUpLabel = 'Create Your Account';\r\n newProps.signUpLabelDivClassNameOverride = 'ph2 mh1 mh2-m mh3-l f3 mt3 dib mb0';\r\n newProps.accountInvitationGuid = pageContext.accountInvitationGuid;\r\n }\r\n\r\n if (pageContext.isInvitationValid === false) {\r\n newProps.defaultTab = 'signIn';\r\n }\r\n }\r\n\r\n return Object.assign({}, props, newProps);\r\n}\r\n\r\nfunction renderSignUpRoute() {\r\n let extraProps = {\r\n defaultTab: 'signUp',\r\n };\r\n extraProps = getPropsFromGlobalPageContext(extraProps);\r\n\r\n return renderRoute('register', renderSignInSignUp(extraProps.defaultTab, extraProps));\r\n}\r\n\r\nfunction renderFinishCreatingRoute() {\r\n return renderRoute('finishcreating/:firstName/:lastName/:email', ({ match }) => {\r\n const firstName = atob(match.params.firstName);\r\n const lastName = atob(match.params.lastName);\r\n const email = atob(match.params.email);\r\n\r\n return renderSignInSignUp('signUp', {\r\n showSignIn: false,\r\n showAlreadyHaveAccount: false,\r\n finishCreatingAccount: true,\r\n customer: {\r\n firstName,\r\n lastName,\r\n email,\r\n },\r\n signUpLabel: 'Finish Creating an Account',\r\n signUpLabelClassNameOverride: 'gcc-tab-label-styles-overridden title f6 f5-ns bb b--light-gray near-black br3 br--top br--left db w-100',\r\n signUpLabelDivClassNameOverride: 'pv3 dib ph1 mh2 mh3-m mh2-l relative-l left-1-l',\r\n })();\r\n });\r\n}\r\n\r\nfunction renderForgotYourPassword() {\r\n return renderRouteWithComponent('forgotpassword', ForgotYourPasswordContainer);\r\n}\r\n\r\nfunction renderChangeYourPassword() {\r\n return renderRouteWithComponent('resetpassword', ChangeYourPasswordContainer);\r\n}\r\n\r\nfunction AppContent() {\r\n return (\r\n \r\n
\r\n {renderSignInRoute()}\r\n {renderSignUpRoute()}\r\n {renderFinishCreatingRoute()}\r\n {renderForgotYourPassword()}\r\n {renderChangeYourPassword()}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default AppContent;\r\n","import React from 'react';\r\nimport { CHANGE_YOUR_PASSWORD, YOURE_ALL_SET } from '../reset-password/ResetPasswordConstants';\r\nimport ChangeYourPasswordForm from './ChangeYourPassword';\r\nimport YoureAllSet from './YoureAllSet';\r\nimport ResetPasswordApi from '../api/ResetPasswordApi';\r\n\r\nclass ChangeYourPasswordContainer extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n step: CHANGE_YOUR_PASSWORD,\r\n errorMessage: '',\r\n };\r\n this.onSubmit = this.onSubmit.bind(this);\r\n }\r\n\r\n onSubmit(values) {\r\n ResetPasswordApi.submitPerformPasswordReset(values.password).then(() => {\r\n this.setState({\r\n step: YOURE_ALL_SET,\r\n });\r\n }).catch((error) => {\r\n console.log('submitPerformPasswordReset-error', error); // eslint-disable-line no-console\r\n if (error.response.status === 400) {\r\n this.setState({\r\n errorMessage: 'We\\'re sorry. Your password reset request is no longer available. Please return to the change password screen and try again.',\r\n });\r\n } else {\r\n this.setState({\r\n errorMessage: 'Unexpected error occurred. Please try again later.',\r\n });\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n if (this.state.step === CHANGE_YOUR_PASSWORD) {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ChangeYourPasswordContainer;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Field, reduxForm } from 'redux-form';\r\nimport Title from './Title';\r\nimport PasswordContainer from '../form/PasswordContainer';\r\nimport SubmitButton from './SubmitButton';\r\nimport { required, validPassword } from '../form/validators';\r\n\r\nexport const ChangeYourPassword = ({ handleSubmit, errorMessage }) => (\r\n
\r\n
\r\n
\r\n
\r\n \r\n <div className=\"cf\" id=\"clear-fix-wrapper\" >\r\n <div className=\"fl w-100\" id=\"layout-wrapper\" >\r\n <Field\r\n name=\"password\"\r\n label=\"Password\"\r\n component={PasswordContainer}\r\n validate={[required, validPassword]}\r\n type=\"password\"\r\n selectorName=\"change-password\"\r\n showRequirements\r\n />\r\n <div id=\"errorMessage\" className=\"red mb3 lh-title\">\r\n { errorMessage }\r\n </div>\r\n </div>\r\n </div>\r\n <SubmitButton />\r\n </form>\r\n </div>\r\n </div>\r\n </article>\r\n);\r\n\r\nChangeYourPassword.propTypes = {\r\n handleSubmit: PropTypes.func.isRequired,\r\n errorMessage: PropTypes.string.isRequired,\r\n};\r\n\r\nfunction ChangeYourPasswordForm({ handleSubmit, errorMessage }) {\r\n return <ChangeYourPassword handleSubmit={handleSubmit} errorMessage={errorMessage} />;\r\n}\r\n\r\nChangeYourPasswordForm.propTypes = {\r\n handleSubmit: PropTypes.func.isRequired,\r\n errorMessage: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default reduxForm({ form: 'change-password' })(ChangeYourPasswordForm);\r\n\r\n","import React from 'react';\r\n\r\nconst YoureAllSet = () => (\r\n <article>\r\n <div className=\"box\">\r\n <div className=\"pa3 cf\">\r\n <h1 className=\"f3 mb4 tc lh-title\">\r\n You're all set!\r\n </h1>\r\n <p className=\"mb4 tc\">You've successfully created a new password.</p>\r\n <div className=\"tc\" id=\"next-steps\">\r\n <a\r\n href=\"/\"\r\n className=\"gcc-btn gcc-btn-primary w-100 pa3 bw0 white mt3 mb3 db tc fw5\"\r\n >\r\n Continue Shopping\r\n </a>\r\n or\r\n <a\r\n href=\"/myaccount/dashboard\"\r\n className=\"gcc-pill w-100 br-pill blue pa3 mt3 mb4 db tc ba b--gray fw5\"\r\n >\r\n Go To Your Account\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </article>\r\n);\r\n\r\nexport default YoureAllSet;\r\n","import { existy } from '../../modules/shared/functional';\r\nimport { closeModal } from '../modal/modalActions';\r\nimport { Utils } from '../../common';\r\nimport LoginApi from '../api/LoginApi';\r\n\r\nexport function loggingIn() {\r\n return {\r\n type: 'LOGGING_IN',\r\n };\r\n}\r\n\r\nexport function logInFailure(error) {\r\n return {\r\n type: 'LOGIN_FAILURE',\r\n value: error,\r\n };\r\n}\r\n\r\nfunction ObjectException(value) {\r\n this.value = value;\r\n}\r\n\r\n\r\nexport function loginSuccess() {\r\n return {\r\n type: 'LOGIN_SUCCESS',\r\n };\r\n}\r\n\r\nexport function logOut() {\r\n return {\r\n type: 'LOGOUT',\r\n };\r\n}\r\n\r\nexport function loginStatusChange(isLoggedIn) {\r\n return {\r\n type: 'LOGIN_STATUS_CHANGE',\r\n isLoggedIn,\r\n };\r\n}\r\n\r\nexport function logIn(values, onSigninSuccess) {\r\n return (dispatch, getState) => {\r\n dispatch(loggingIn());\r\n return LoginApi.login(values['login-email'], values['login-password'])\r\n .then((response) => {\r\n const resp = response.data;\r\n if (resp.error) {\r\n dispatch(logInFailure(resp.error));\r\n throw new ObjectException(JSON.parse(resp.error));\r\n }\r\n\r\n const state = getState();\r\n\r\n window.digitalData.user.profile.authenticationStatus = 'consumer';\r\n window.digitalData.user.profile.profileInfo =\r\n window.digitalData.user.profile.profileInfo || {};\r\n window.digitalData.user.profile.profileInfo.profileID = resp;\r\n\r\n const thdAnalyticsEvent = {\r\n category: {\r\n primaryCategory: 'button submission',\r\n },\r\n eventInfo: {\r\n eventName: 'sign in success',\r\n },\r\n };\r\n\r\n // publish the event triggering *modal* login\r\n if (existy(state.modal.event)) {\r\n const loginCompletedEvent =\r\n new CustomEvent('loginCompleted', { detail: state.modal.event.detail });\r\n document.dispatchEvent(loginCompletedEvent);\r\n\r\n const mergedDetail = Object.assign({}, state.modal.event.detail, { taskName: 'loginStatusChange', isLoggedIn: true });\r\n const loginStatusChangeEvent =\r\n new CustomEvent('loginStatusChange', { detail: mergedDetail });\r\n document.dispatchEvent(loginStatusChangeEvent);\r\n dispatch(loginSuccess());\r\n dispatch(closeModal());\r\n Utils.sendAnalyticsEvent(thdAnalyticsEvent, 0).then(() => {\r\n onSigninSuccess();\r\n });\r\n } else {\r\n Utils.sendAnalyticsEvent(thdAnalyticsEvent).then(() => {\r\n onSigninSuccess();\r\n });\r\n }\r\n })\r\n .catch((exception) => {\r\n dispatch(logInFailure(exception.value.error));\r\n });\r\n };\r\n}\r\n","import { api } from '../../api/Axios';\r\n\r\nconst register = (values) => {\r\n const resource = 'manage/register';\r\n return api.post(resource, values);\r\n};\r\n\r\nconst checkUniqueEmail = (email) => {\r\n const resource = 'manage/checkuniqueemail';\r\n const data = { email };\r\n return api.post(resource, data);\r\n};\r\nexport default { register, checkUniqueEmail };\r\n","import { Utils } from '../../common';\r\nimport RegisterApi from '../api/RegisterApi';\r\nimport { existy } from '../../modules/shared/functional';\r\n\r\nexport function createAccount() {\r\n return {\r\n type: 'CREATE_ACCOUNT',\r\n };\r\n}\r\n\r\nexport function creatingAccount() {\r\n return {\r\n type: 'CREATING_ACCOUNT',\r\n };\r\n}\r\n\r\nexport function forgotPassword() {\r\n return {\r\n type: 'FORGOT_PASSWORD',\r\n };\r\n}\r\n\r\nexport function onTextChanged(name, value) {\r\n return {\r\n type: 'TEXT_CHANGED',\r\n name,\r\n value,\r\n };\r\n}\r\n\r\nexport function registrationSuccess() {\r\n return {\r\n type: 'REGISTRATION_SUCCESS',\r\n };\r\n}\r\n\r\nexport function registrationFailure(value) {\r\n return {\r\n type: 'REGISTRATION_FAILURE',\r\n value,\r\n };\r\n}\r\n\r\nfunction ObjectException(value) {\r\n this.value = value;\r\n}\r\n\r\nexport function register(values, onRegistrationSuccess) {\r\n return (dispatch, getState) => {\r\n dispatch(creatingAccount());\r\n RegisterApi.register(values)\r\n .then((response) => {\r\n const resp = response.data;\r\n if (resp.error) {\r\n dispatch(registrationFailure(resp.error));\r\n throw new ObjectException(JSON.parse(resp.error));\r\n }\r\n\r\n const state = getState();\r\n\r\n if (existy(state.modal.event)) {\r\n const loginCompletedEvent =\r\n new CustomEvent('loginCompleted', { detail: state.modal.event.detail });\r\n document.dispatchEvent(loginCompletedEvent);\r\n\r\n const loginStatusChangeEvent =\r\n new CustomEvent('loginStatusChange', { detail: { taskName: 'loginStatusChange', isLoggedIn: true } });\r\n document.dispatchEvent(loginStatusChangeEvent);\r\n }\r\n\r\n window.digitalData.user.profile.authenticationStatus = 'consumer';\r\n\r\n const thdAnalyticsEvent = {\r\n category: {\r\n primaryCategory: 'button submission',\r\n },\r\n eventInfo: {\r\n eventName: 'registration',\r\n },\r\n };\r\n\r\n Utils.sendAnalyticsEvent(thdAnalyticsEvent).then(() => {\r\n onRegistrationSuccess(dispatch);\r\n });\r\n })\r\n .catch((exception) => {\r\n dispatch(registrationFailure(exception.value.error));\r\n });\r\n };\r\n}\r\n\r\nexport function validateUniqueEmail() {\r\n return {\r\n type: 'VALIDATE_UNIQUE_EMAIL',\r\n };\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst Title = ({ text }) => (\r\n <h1 className=\"ma0 mv3 f4 f3-ns\">{text}</h1>\r\n);\r\n\r\nTitle.propTypes = {\r\n text: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default Title;\r\n","import React from 'react';\r\n\r\nconst SubmitButton = () => (\r\n <button\r\n type=\"submit\"\r\n className=\"gcc-btn gcc-btn-primary w-100 pa3 bw0 white mv2\"\r\n id=\"submit-button\"\r\n >\r\n Submit\r\n </button>\r\n);\r\n\r\nexport default SubmitButton;\r\n","import { Utils } from '../../common';\r\nimport { api } from '../../api/Axios';\r\n\r\nconst submitPasswordReset = (email) => {\r\n const resource = 'Manage/ResetPassword';\r\n const data = { email };\r\n return api.post(resource, data);\r\n};\r\n\r\n\r\nconst submitPerformPasswordReset = (newPassword) => {\r\n const resource = 'Manage/PerformPasswordReset';\r\n\r\n const {\r\n email: forUserId,\r\n token: passwordResetToken,\r\n } = Utils.parse(window.location.search);\r\n\r\n const data = {\r\n passwordResetToken,\r\n forUserId,\r\n newPassword,\r\n };\r\n\r\n return api.post(resource, data);\r\n};\r\n\r\nexport default { submitPasswordReset, submitPerformPasswordReset };\r\n","import React from 'react';\r\nimport {\r\n shape,\r\n string,\r\n func,\r\n arrayOf,\r\n bool,\r\n number,\r\n} from 'prop-types';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nconst RenderMessage = (value, message, messageColor, showRequirements) => {\r\n const hasValue = (value !== '');\r\n if (showRequirements && hasValue) {\r\n return (\r\n <div id=\"password-strength\">\r\n <div className=\"gcc-input-help\" id=\"password-strength-message\">\r\n <span>Password Strength:</span> <span id=\"password-strength-result\" style={{ color: messageColor }}> {message} </span>\r\n </div>\r\n <div\r\n className=\"gcc-pw-strength-bar\"\r\n style={{ backgroundColor: messageColor }}\r\n id=\"password-strength-bar\"\r\n />\r\n </div>\r\n );\r\n } else if (showRequirements) {\r\n return (\r\n <div id=\"password-strength\">\r\n <div className=\"gcc-input-help\" id=\"password-strength-message\">\r\n <span>Password Strength:</span> <span style={{ color: messageColor }} />\r\n </div>\r\n <div className=\"gcc-pw-strength-bar\" style={{ backgroundColor: messageColor }} />\r\n </div>\r\n );\r\n }\r\n return null;\r\n};\r\n\r\nconst RenderCriteria = (showRequirements, criteriaList) => {\r\n if (criteriaList && showRequirements) {\r\n return (\r\n <div className=\"pa2 right-0 f7 mv2 ba br2 b--black-10\">\r\n <p className=\"ma0 mb1 b lh-title f6\">Create a strong password by:</p>\r\n <div>\r\n {criteriaList.map(val => (\r\n <div key={val.code} style={val.match === false ? null : { color: 'green' }}>\r\n <div style={{ display: 'inline-block', width: '15px' }}>{val.match ? '✔' : '●'}</div>\r\n {val.message}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n }\r\n return '';\r\n};\r\n\r\nexport const ForgotPasswordLink = withRouter(({ history, path }) => {\r\n if (path === 'reset') {\r\n return (\r\n <a href={`#${path}`} className=\"black\" onClick={() => { history.push('/reset'); }} >\r\n Forgot your password?\r\n </a>\r\n );\r\n }\r\n return (\r\n <a href={path} className=\"black\">\r\n Forgot your password?\r\n </a>\r\n );\r\n});\r\n\r\nconst RenderPasswordFunctionality = (type, showHidePassword, forgotPasswordPath) => {\r\n if (forgotPasswordPath) {\r\n return (\r\n <div className=\"tr absolute bottom--1 right-0 f7\" id=\"reset-password\">\r\n <ForgotPasswordLink path={forgotPasswordPath} />\r\n </div>\r\n );\r\n }\r\n return (\r\n <div className=\"absolute top-0 bottom-0 z-1 flex right-0 f6 mr3\" id=\"show-hide-toggle-wrapper\" >\r\n <span\r\n className=\"self-center pointer\"\r\n role=\"button\"\r\n tabIndex=\"-1\"\r\n onClick={showHidePassword}\r\n id=\"show-hide-toggle\"\r\n >\r\n {type === 'password' ? 'Show' : 'Hide'}\r\n </span>\r\n </div>\r\n );\r\n};\r\n\r\nconst PasswordPresentation = ({\r\n dataTestId,\r\n input,\r\n label,\r\n inputType,\r\n showHidePassword,\r\n forgotPasswordPath,\r\n message,\r\n criteriaList,\r\n messageColor,\r\n showRequirements,\r\n strength,\r\n meta: {\r\n touched,\r\n },\r\n}) =>\r\n (\r\n <div>\r\n <div className={`gcc-pw ${touched && strength < 3 ? 'has-error' : ''}`} id=\"password-component\" >\r\n <input\r\n {...input}\r\n data-test-id={dataTestId}\r\n id={input.name}\r\n type={inputType}\r\n className={`ba b--black-20 bw1 br3 pa2 pl2 ${input.value ? 'filled' : ''}`}\r\n data-strength={strength}\r\n />\r\n <label htmlFor={input.name} className=\"f5 pa2 pl2\" value={input.value}>{label}</label>\r\n {RenderMessage(input.value, message, messageColor, showRequirements)}\r\n {RenderPasswordFunctionality(inputType, showHidePassword, forgotPasswordPath)}\r\n </div>\r\n {RenderCriteria(showRequirements, criteriaList)}\r\n </div>\r\n );\r\n\r\n\r\nPasswordPresentation.defaultProps = {\r\n dataTestId: '',\r\n forgotPasswordPath: '',\r\n showRequirements: false,\r\n};\r\n\r\nPasswordPresentation.propTypes = {\r\n input: shape({}).isRequired,\r\n dataTestId: string,\r\n label: string.isRequired,\r\n inputType: string.isRequired,\r\n showHidePassword: func.isRequired,\r\n forgotPasswordPath: string,\r\n message: string.isRequired,\r\n criteriaList: arrayOf(shape({})).isRequired,\r\n messageColor: string.isRequired,\r\n meta: shape({}).isRequired,\r\n showRequirements: bool,\r\n strength: number.isRequired,\r\n};\r\n\r\nexport default PasswordPresentation;\r\n","import { connect } from 'react-redux';\r\nimport LogInForm from './LogInForm';\r\nimport { logIn } from './LogInActions';\r\nimport switchTab from '../app/AppActions';\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n onSubmit: values => dispatch(logIn(values, ownProps.onSigninSuccess)),\r\n signUp: () => dispatch(switchTab('signUp')),\r\n };\r\n}\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n initialValues: {\r\n 'login-email': ownProps.customer && ownProps.customer.email,\r\n },\r\n forgotPasswordPath: ownProps.forgotPasswordPath,\r\n isSubmitting: state.login.isSubmitting,\r\n serverMessage: state.login.serverMessage,\r\n };\r\n}\r\n\r\nconst LogInContainer = connect(mapStateToProps, mapDispatchToProps)(LogInForm);\r\nexport default LogInContainer;\r\n","import React, { Component } from 'react';\r\nimport {\r\n string,\r\n func,\r\n bool,\r\n shape,\r\n} from 'prop-types';\r\nimport { Field, reduxForm } from 'redux-form';\r\nimport TextBox from '../form/TextBox';\r\nimport Password from '../form/PasswordContainer';\r\nimport { required } from '../form/validators';\r\n\r\n// eslint-disable-next-line react/prefer-stateless-function\r\nclass LogInForm extends Component {\r\n render() {\r\n const {\r\n forgotPasswordPath,\r\n handleSubmit,\r\n serverMessage,\r\n signUp,\r\n initialValues,\r\n } = this.props;\r\n const disabled = this.props.isSubmitting ? { disabled: 'disabled' } : {};\r\n\r\n return (\r\n <div className=\"mh1 mh2-m mh3-l mv3\">\r\n <form onSubmit={handleSubmit}>\r\n <div>\r\n {initialValues['login-email'] && (\r\n <div className=\"f6 mb2\">\r\n <span className=\"dark-gray\">Email: </span>\r\n <span>{initialValues['login-email']}</span>\r\n </div>\r\n )}\r\n <div className=\"fl w-100\">\r\n <Field\r\n name=\"login-email\"\r\n label={!initialValues['login-email'] ? 'Enter your email' : ''}\r\n dataTestId=\"my-account-login-email\"\r\n component={TextBox}\r\n validate={[required]}\r\n type={initialValues['login-email'] ? 'hidden' : 'text'}\r\n readOnly={initialValues && !!initialValues['login-email']}\r\n style={this.props.emailInputStyles}\r\n />\r\n </div>\r\n <div className=\"fl w-100\">\r\n <Field\r\n name=\"login-password\"\r\n label=\"Password\"\r\n dataTestId=\"my-account-login-password\"\r\n component={Password}\r\n validate={[required]}\r\n type=\"password\"\r\n selectorName=\"login\"\r\n forgotPasswordPath={forgotPasswordPath}\r\n />\r\n </div>\r\n </div>\r\n {\r\n serverMessage &&\r\n (\r\n <div className=\"fl w-100 ph2\">\r\n <div className=\"flex items-center mt2 mb3\">\r\n <span style={{ color: 'red' }}>\r\n {serverMessage}\r\n </span>\r\n </div>\r\n </div>\r\n )\r\n }\r\n <button\r\n type=\"submit\"\r\n data-test-id=\"my-account-login-button\"\r\n className=\"gcc-btn gcc-btn-primary flex justify-center items-center w-100 pa3 bw0 white mv3 f4\"\r\n {...disabled}\r\n >\r\n {\r\n this.props.isSubmitting &&\r\n <div className=\"relative\">\r\n <div className=\"gcc-loading h2 w2 nl5 nt3 absolute left-1\">\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n </div>\r\n </div>\r\n }\r\n <div>Login to My Account</div>\r\n </button>\r\n <div className=\"fl w-100 tc\">\r\n {\r\n this.props.displayRegisterLink &&\r\n (<p className=\"f6\">Don’t have an account? <span data-test-id=\"my-account-register-text-link\" role=\"button\" tabIndex={-3} className=\"blue pointer\" onClick={signUp}>Create one now</span>.</p>)\r\n }\r\n {\r\n this.props.displaySitePolicyLinks &&\r\n (\r\n <p className=\"f7\">\r\n <a href=\"/terms-and-conditions\" target=\"_blank\" rel=\"noopener noreferrer\">Terms & Conditions</a>\r\n <span className=\"dib mh2\">|</span>\r\n <a href=\"/privacy-policy\" target=\"_blank\" rel=\"noopener noreferrer\">Privacy Policy</a>\r\n </p>\r\n )\r\n }\r\n </div>\r\n </form>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nLogInForm.defaultProps = {\r\n forgotPasswordPath: '',\r\n isSubmitting: false,\r\n initialValues: {},\r\n displayRegisterLink: true,\r\n displaySitePolicyLinks: true,\r\n emailInputStyles: undefined,\r\n};\r\n\r\nLogInForm.propTypes = {\r\n forgotPasswordPath: string,\r\n handleSubmit: func.isRequired,\r\n isSubmitting: bool,\r\n serverMessage: string.isRequired,\r\n signUp: func.isRequired,\r\n initialValues: shape({\r\n 'login-email': string,\r\n }),\r\n displayRegisterLink: bool,\r\n displaySitePolicyLinks: bool,\r\n emailInputStyles: shape({}),\r\n};\r\n\r\nexport default reduxForm({\r\n form: 'login',\r\n})(LogInForm);\r\n","import { api } from '../../api/Axios';\r\n\r\nconst login = (email, password) => {\r\n const resource = 'manage/login';\r\n const data = { email, password };\r\n return api.post(resource, data);\r\n};\r\nexport default { login };\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport backToSignIn from './ResetPasswordActions';\r\nimport ForgotYourPasswordForm from './ForgotYourPasswordForm';\r\nimport { FORGOT_YOUR_PASSWORD, CHECK_YOUR_IN_BOX } from '../reset-password/ResetPasswordConstants';\r\nimport CheckYourInBoxContainer from '../reset-password/CheckYourInBoxContainer';\r\nimport ResetPasswordApi from '../api/ResetPasswordApi';\r\n\r\nclass ForgotYourPasswordContainer extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n step: FORGOT_YOUR_PASSWORD,\r\n instructions: {\r\n text: 'Enter your email and we\\'ll send you instructions to reset your password.',\r\n },\r\n errorMessage: '',\r\n };\r\n this.onSubmit = this.onSubmit.bind(this);\r\n }\r\n\r\n onSubmit(values) {\r\n ResetPasswordApi.submitPasswordReset(values.email).then(() => {\r\n this.setState({\r\n step: CHECK_YOUR_IN_BOX,\r\n });\r\n }).catch((error) => {\r\n console.log('submitPasswordReset-error', error); // eslint-disable-line no-console\r\n if (error.response.status === 404) {\r\n this.setState({\r\n errorMessage: 'Email not found: Sorry, we don\\'t recognize that email. Please try again.',\r\n });\r\n } else if (error.response.status === 400 || error.response.status === 406) {\r\n this.setState({\r\n errorMessage: 'Unexpected error occurred. Please try again.',\r\n });\r\n } else {\r\n this.setState({\r\n errorMessage: 'Unexpected error occurred. Please try again later.',\r\n });\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n if (this.state.step === FORGOT_YOUR_PASSWORD) {\r\n return (\r\n <ForgotYourPasswordForm\r\n {...this.props}\r\n onSubmit={this.onSubmit}\r\n instructions={this.state.instructions}\r\n errorMessage={this.state.errorMessage}\r\n />\r\n );\r\n }\r\n return (\r\n <CheckYourInBoxContainer />\r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n onBackToSignIn: () => dispatch(backToSignIn()),\r\n});\r\n\r\nconst mapStateToProps = (_, ownProps) => ({\r\n initialValues: {\r\n email: ownProps.defaultCustomerEmail,\r\n },\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(ForgotYourPasswordContainer);\r\n","import React from 'react';\r\nimport { Field, reduxForm } from 'redux-form';\r\nimport PropTypes from 'prop-types';\r\nimport Title from './Title';\r\nimport Instructions from './Instructions';\r\nimport TextBox from '../form/TextBox';\r\nimport SubmitButton from './SubmitButton';\r\nimport BackToSignInContainer from './BackToSignInContainer';\r\nimport { required, validEmail } from '../form/validators';\r\n\r\nexport const ForgotYourPassword = ({\r\n instructions,\r\n handleSubmit,\r\n errorMessage,\r\n}) => (\r\n <article>\r\n <div className=\"box\">\r\n <div className=\"pa3 cf\">\r\n <form onSubmit={handleSubmit} >\r\n <Title text=\"Forgot your password?\" />\r\n <Instructions {...instructions} />\r\n <Field\r\n name=\"email\"\r\n label=\"Enter your email\"\r\n component={TextBox}\r\n validate={[required, validEmail]}\r\n type=\"text\"\r\n />\r\n <div id=\"errorMessage\" className=\"red mb3 lh-title\">\r\n { errorMessage }\r\n </div>\r\n <SubmitButton />\r\n <BackToSignInContainer />\r\n </form>\r\n </div>\r\n </div>\r\n </article>\r\n);\r\n\r\nForgotYourPassword.propTypes = {\r\n instructions: PropTypes.shape({ text: PropTypes.string.isRequired }).isRequired,\r\n handleSubmit: PropTypes.func.isRequired,\r\n errorMessage: PropTypes.string.isRequired,\r\n};\r\n\r\nfunction ForgotYourPasswordForm({\r\n instructions,\r\n handleSubmit,\r\n errorMessage,\r\n}) {\r\n return (\r\n <ForgotYourPassword\r\n instructions={instructions}\r\n handleSubmit={handleSubmit}\r\n errorMessage={errorMessage}\r\n />);\r\n}\r\n\r\nForgotYourPasswordForm.propTypes = {\r\n instructions: PropTypes.shape({ text: PropTypes.string.isRequired }).isRequired,\r\n handleSubmit: PropTypes.func.isRequired,\r\n errorMessage: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default reduxForm({ form: 'reset-password' })(ForgotYourPasswordForm);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nfunction makeOnClick(history) {\r\n function onLinkClick() {\r\n if (history.location.pathname === '/reset') {\r\n history.goBack();\r\n } else {\r\n history.push('/manage/login');\r\n }\r\n }\r\n return onLinkClick;\r\n}\r\n\r\nconst BackToSignIn = ({ history }) => (\r\n <a\r\n href={history.location.pathname === '/reset' ? '#sign-in' : '/manage/login'}\r\n className=\"w-100 db tc mv4 f6 underline blue\"\r\n onClick={makeOnClick(history)}\r\n >\r\n Back to Sign In\r\n </a>\r\n);\r\n\r\nBackToSignIn.propTypes = {\r\n history: PropTypes.shape({ push: PropTypes.func.isRequired }).isRequired,\r\n};\r\n\r\nexport default BackToSignIn;\r\n","import React from 'react';\r\nimport Instructions from './Instructions';\r\nimport BackToSignInContainer from './BackToSignInContainer';\r\n\r\nconst CheckYourInBox = () => {\r\n const instructionsProps = {\r\n text: `We've sent an email with instructions to reset your password. If you don't see\r\n the email, please be sure to check your spam or junk mail folder.`,\r\n };\r\n return (\r\n <article>\r\n <div className=\"box\">\r\n <div className=\"pa3 cf\">\r\n <h1 className=\"flex f4 f3-ns mb4\" id=\"announcement\">\r\n <i className=\"material-icons green mr1 self-center\" id=\"sizzle\">\r\n check_circle\r\n </i>\r\n Check your inbox.\r\n </h1>\r\n <Instructions {...instructionsProps} />\r\n <BackToSignInContainer />\r\n </div>\r\n </div>\r\n </article>\r\n );\r\n};\r\n\r\nexport default CheckYourInBox;\r\n","export const sites = {\r\n americanBlinds: 1,\r\n blindsCa: 2,\r\n blinds: 3,\r\n justBlinds: 5,\r\n theHomeDepot: 11,\r\n};\r\n\r\nexport const itemTypes = {\r\n unknown: 0,\r\n window: 1,\r\n doorLock: 2,\r\n garageDoor: 3,\r\n};\r\n\r\nexport const itemSources = {\r\n unknown: 0,\r\n autobahn: 1,\r\n theHomeDepot: 2,\r\n};\r\n\r\nexport const containerTypes = {\r\n unknown: 0,\r\n room: 1,\r\n garage: 2,\r\n};\r\n\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport SignInSignUp from './SignInSignUp';\r\nimport appActions from './AppActions';\r\n\r\nclass SignInSignUpContainer extends React.Component {\r\n componentWillMount() {\r\n this.props.switchTab(this.props.defaultTab);\r\n }\r\n\r\n render() {\r\n return (\r\n this.props.selectedTab != null &&\r\n (\r\n <SignInSignUp\r\n selectedTab={this.props.selectedTab}\r\n switchTab={this.props.switchTab}\r\n forgotPasswordPath={this.props.forgotPasswordPath}\r\n customer={this.props.customer}\r\n onSigninSuccess={this.props.onSigninSuccess}\r\n onRegistrationSuccess={this.props.onRegistrationSuccess}\r\n showSignIn={this.props.showSignIn}\r\n showSignUp={this.props.showSignUp}\r\n signInLabel={this.props.signInLabel}\r\n signUpLabel={this.props.signUpLabel}\r\n signInLabelClassNameOverride={this.props.signInLabelClassNameOverride}\r\n signUpLabelClassNameOverride={this.props.signUpLabelClassNameOverride}\r\n signInLabelDivClassNameOverride={this.props.signInLabelDivClassNameOverride}\r\n signUpLabelDivClassNameOverride={this.props.signUpLabelDivClassNameOverride}\r\n showAlreadyHaveAccount={this.props.showAlreadyHaveAccount}\r\n finishCreatingAccount={this.props.finishCreatingAccount}\r\n accountInvitationGuid={this.props.accountInvitationGuid}\r\n showAccountBenefitsText={this.props.showAccountBenefitsText}\r\n showSignUpBorderBottom={this.props.showSignUpBorderBottom}\r\n signUpTitleElementType={this.props.signUpTitleElementType}\r\n />\r\n )\r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n selectedTab: state.app.selectedTab,\r\n forgotPasswordPath: ownProps.forgotPasswordPath,\r\n customer: ownProps.customer,\r\n onSigninSuccess: ownProps.onSigninSuccess,\r\n onRegistrationSuccess: ownProps.onRegistrationSuccess,\r\n showAlreadyHaveAccount: ownProps.showAlreadyHaveAccount,\r\n accountInvitationGuid: ownProps.accountInvitationGuid,\r\n showAccountBenefitsText: ownProps.showAccountBenefitsText,\r\n showSignUpBorderBottom: ownProps.showSignUpBorderBottom,\r\n signUpTitleElementType: ownProps.signUpTitleElementType,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n switchTab: tab => dispatch(appActions(tab)),\r\n };\r\n}\r\n\r\nSignInSignUpContainer.defaultProps = {\r\n forgotPasswordPath: '',\r\n customer: {},\r\n defaultTab: 'signIn',\r\n showSignIn: true,\r\n showSignUp: true,\r\n signInLabel: 'Sign In',\r\n signUpLabel: 'Create an Account',\r\n signInLabelClassNameOverride: undefined,\r\n signUpLabelClassNameOverride: undefined,\r\n signInLabelDivClassNameOverride: undefined,\r\n signUpLabelDivClassNameOverride: undefined,\r\n showAlreadyHaveAccount: true,\r\n finishCreatingAccount: false,\r\n accountInvitationGuid: undefined,\r\n showAccountBenefitsText: true,\r\n showSignUpBorderBottom: true,\r\n signUpTitleElementType: 'div',\r\n};\r\n\r\nSignInSignUpContainer.propTypes = {\r\n selectedTab: PropTypes.string.isRequired,\r\n switchTab: PropTypes.func.isRequired,\r\n defaultTab: PropTypes.string,\r\n forgotPasswordPath: PropTypes.string,\r\n customer: PropTypes.shape({\r\n firstName: PropTypes.string,\r\n lastName: PropTypes.string,\r\n email: PropTypes.string,\r\n }),\r\n onSigninSuccess: PropTypes.func.isRequired,\r\n onRegistrationSuccess: PropTypes.func.isRequired,\r\n showSignIn: PropTypes.bool,\r\n showSignUp: PropTypes.bool,\r\n signInLabel: PropTypes.string,\r\n signUpLabel: PropTypes.string,\r\n signInLabelClassNameOverride: PropTypes.string,\r\n signUpLabelClassNameOverride: PropTypes.string,\r\n signInLabelDivClassNameOverride: PropTypes.string,\r\n signUpLabelDivClassNameOverride: PropTypes.string,\r\n showAlreadyHaveAccount: PropTypes.bool,\r\n finishCreatingAccount: PropTypes.bool,\r\n accountInvitationGuid: PropTypes.string,\r\n showAccountBenefitsText: PropTypes.bool,\r\n showSignUpBorderBottom: PropTypes.bool,\r\n signUpTitleElementType: PropTypes.string,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SignInSignUpContainer);\r\n","import React from 'react';\r\nimport {\r\n string,\r\n func,\r\n shape,\r\n bool,\r\n} from 'prop-types';\r\nimport Register from '../register/RegisterContainer';\r\nimport LogIn from '../login/LogInContainer';\r\n\r\nclass SignInSignUp extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isUniqueEmail: true,\r\n };\r\n\r\n this.updateIsUniqueEmail = this.updateIsUniqueEmail.bind(this);\r\n }\r\n\r\n updateIsUniqueEmail = (isUniqueEmail) => {\r\n this.setState({\r\n isUniqueEmail,\r\n });\r\n }\r\n\r\n render() {\r\n const {\r\n selectedTab,\r\n switchTab,\r\n forgotPasswordPath,\r\n customer,\r\n onSigninSuccess,\r\n onRegistrationSuccess,\r\n showSignIn,\r\n showSignUp,\r\n signInLabel,\r\n signUpLabel,\r\n signInLabelClassNameOverride,\r\n signUpLabelClassNameOverride,\r\n signInLabelDivClassNameOverride,\r\n signUpLabelDivClassNameOverride,\r\n showAlreadyHaveAccount,\r\n finishCreatingAccount,\r\n accountInvitationGuid,\r\n showAccountBenefitsText,\r\n showSignUpBorderBottom,\r\n } = this.props;\r\n\r\n let signInTab;\r\n if (showSignIn) {\r\n signInTab = (\r\n <React.Fragment>\r\n <input id=\"sign-in\" type=\"radio\" name=\"tabs\" checked={selectedTab === 'signIn'} onChange={() => switchTab('signIn')} className=\"dn\" />\r\n <label htmlFor=\"sign-in\" className={signInLabelClassNameOverride || `title f6 f5-ns pointer bb b--light-gray dark-gray br3 br--top br--left ${showSignUp ? 'w-40' : 'w-100'} tc db`}>\r\n <div className={signInLabelDivClassNameOverride || 'center pv3 dib'} data-test-id=\"my-account-login-tab\" id=\"sign-in-label-text\">{signInLabel}</div>\r\n </label>\r\n </React.Fragment>\r\n );\r\n }\r\n\r\n let signUpTab;\r\n if (showSignUp) {\r\n const SignUpTitleElementType = this.props.signUpTitleElementType;\r\n const titleStyle = {};\r\n if (!showSignUpBorderBottom) {\r\n titleStyle.borderBottom = 'none';\r\n }\r\n\r\n signUpTab = (\r\n <React.Fragment>\r\n <input id=\"sign-up\" type=\"radio\" name=\"tabs\" checked={selectedTab === 'signUp'} onChange={() => switchTab('signUp')} className=\"dn\" />\r\n <label htmlFor=\"sign-up\" className={signUpLabelClassNameOverride || `title flex f6 f5-ns pointer bb b--light-gray dark-gray br3 br--top br--right ${signInTab ? 'w-60' : 'w-100'} tc db`}>\r\n <SignUpTitleElementType\r\n className={signUpLabelDivClassNameOverride || 'center pv3 dib ph1'}\r\n data-test-id=\"my-account-register-tab\"\r\n id=\"sign-up-label-text\"\r\n style={titleStyle}\r\n >\r\n {signUpLabel}\r\n </SignUpTitleElementType>\r\n </label>\r\n </React.Fragment>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"gcc-tab h-100 items-start\">\r\n {/* selectedTab(State) and switchTab(Function) should live in this component */}\r\n {signInTab}\r\n {signUpTab}\r\n <div className=\"gcc-tab-content w-100\" id=\"sign-in-sign-up-content-wrapper\">\r\n { /* should conditionally render the component based on selected tab */}\r\n {showSignIn && (\r\n <LogIn\r\n customer={customer}\r\n forgotPasswordPath={forgotPasswordPath}\r\n onSigninSuccess={onSigninSuccess}\r\n />\r\n )}\r\n {showSignUp && (\r\n <Register\r\n customer={customer}\r\n onRegistrationSuccess={onRegistrationSuccess}\r\n updateIsUniqueEmail={this.updateIsUniqueEmail}\r\n isUniqueEmail={this.state.isUniqueEmail}\r\n showAlreadyHaveAccount={showAlreadyHaveAccount}\r\n finishCreatingAccount={finishCreatingAccount}\r\n showSignIn={showSignIn}\r\n accountInvitationGuid={accountInvitationGuid}\r\n showAccountBenefitsText={showAccountBenefitsText}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nSignInSignUp.defaultProps = {\r\n customer: {},\r\n signInLabelClassNameOverride: undefined,\r\n signUpLabelClassNameOverride: undefined,\r\n signInLabelDivClassNameOverride: undefined,\r\n signUpLabelDivClassNameOverride: undefined,\r\n finishCreatingAccount: false,\r\n accountInvitationGuid: undefined,\r\n showAccountBenefitsText: true,\r\n showSignUpBorderBottom: true,\r\n signUpTitleElementType: 'div',\r\n};\r\n\r\nSignInSignUp.propTypes = {\r\n selectedTab: string.isRequired,\r\n switchTab: func.isRequired,\r\n forgotPasswordPath: string.isRequired,\r\n customer: shape({\r\n firstName: string,\r\n lastName: string,\r\n email: string,\r\n }),\r\n onSigninSuccess: func.isRequired,\r\n onRegistrationSuccess: func.isRequired,\r\n showSignIn: bool.isRequired,\r\n showSignUp: bool.isRequired,\r\n signInLabel: string.isRequired,\r\n signUpLabel: string.isRequired,\r\n signInLabelClassNameOverride: string,\r\n signUpLabelClassNameOverride: string,\r\n signInLabelDivClassNameOverride: string,\r\n signUpLabelDivClassNameOverride: string,\r\n showAlreadyHaveAccount: bool.isRequired,\r\n finishCreatingAccount: bool,\r\n accountInvitationGuid: string,\r\n showAccountBenefitsText: bool,\r\n showSignUpBorderBottom: bool,\r\n signUpTitleElementType: string,\r\n};\r\n\r\nexport default SignInSignUp;\r\n","import { connect } from 'react-redux';\r\nimport { formValueSelector, change } from 'redux-form';\r\nimport RegisterForm from './RegisterForm';\r\nimport { register, forgotPassword, validateUniqueEmail } from './RegisterActions';\r\nimport getPasswordStrength from '../form/PasswordStrength';\r\nimport switchTab from '../app/AppActions';\r\n\r\nconst selector = formValueSelector('register');\r\n\r\nfunction mapStateToProps(state, ownProps) {\r\n return {\r\n initialValues: {\r\n firstName: ownProps.customer && ownProps.customer.firstName,\r\n lastName: ownProps.customer && ownProps.customer.lastName,\r\n email: ownProps.customer && ownProps.customer.email,\r\n accountInvitationGuid: ownProps.accountInvitationGuid !== undefined ?\r\n ownProps.accountInvitationGuid : undefined,\r\n },\r\n isSubmitting: state.register.isSubmitting,\r\n passwordStrength: getPasswordStrength(selector(state, 'password')),\r\n updateIsUniqueEmail: ownProps.updateIsUniqueEmail,\r\n isUniqueEmail: ownProps.isUniqueEmail,\r\n serverMessage: state.register.serverMessage,\r\n hasSuccessfullyCreatedAccount: state.register.hasSuccessfullyCreatedAccount,\r\n showAlreadyHaveAccount: ownProps.showAlreadyHaveAccount,\r\n finishCreatingAccount: ownProps.finishCreatingAccount,\r\n showSignIn: ownProps.showSignIn,\r\n showAccountBenefitsText: ownProps.showAccountBenefitsText,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch, ownProps) {\r\n return {\r\n onSubmit: values => dispatch(register(values, ownProps.onRegistrationSuccess)),\r\n onForgotPasswordClicked: () => dispatch(forgotPassword()),\r\n onEmailBlurred: () => dispatch(validateUniqueEmail()),\r\n prefillLoginEmail: email => dispatch(change('login', 'login-email', email)),\r\n signIn: () => dispatch(switchTab('signIn')),\r\n };\r\n}\r\n\r\nconst RegisterContainer = connect(mapStateToProps, mapDispatchToProps)(RegisterForm);\r\nexport default RegisterContainer;\r\n","import React from 'react';\r\nimport {\r\n func,\r\n bool,\r\n string,\r\n shape,\r\n} from 'prop-types';\r\nimport { Field, reduxForm } from 'redux-form';\r\nimport TextBox from '../form/TextBox';\r\nimport EmailTextBox from '../form/EmailTextBox';\r\nimport Password from '../form/PasswordContainer';\r\nimport validate from './validate';\r\nimport asyncValidate from './asyncValidate';\r\nimport { required, validEmail, validPassword } from '../form/validators';\r\nimport RegisterConfirmation from './RegisterConfirmationContainer';\r\n\r\nexport const RegistrationForm = (props) => {\r\n const {\r\n handleSubmit,\r\n serverMessage,\r\n signIn,\r\n isSubmitting,\r\n prefillLoginEmail,\r\n updateIsUniqueEmail,\r\n isUniqueEmail,\r\n initialValues,\r\n showAlreadyHaveAccount,\r\n finishCreatingAccount,\r\n showSignIn,\r\n showAccountBenefitsText,\r\n } = props;\r\n\r\n const disabled = isSubmitting ? { disabled: 'disabled' } : {};\r\n return (\r\n <form onSubmit={handleSubmit}>\r\n <div className=\"cf\">\r\n <div className=\"fl w-100 ph2\">\r\n <Field\r\n name=\"firstName\"\r\n label={!finishCreatingAccount ? 'First Name' : ''}\r\n dataTestId=\"my-account-register-firstName\"\r\n component={TextBox}\r\n validate={[required]}\r\n type={finishCreatingAccount ? 'hidden' : 'text'}\r\n />\r\n </div>\r\n <div className=\"fl w-100 ph2\">\r\n <Field\r\n name=\"lastName\"\r\n label={!finishCreatingAccount ? 'Last Name' : ''}\r\n dataTestId=\"my-account-register-lastName\"\r\n component={TextBox}\r\n validate={[required]}\r\n type={finishCreatingAccount ? 'hidden' : 'text'}\r\n />\r\n </div>\r\n {finishCreatingAccount && (\r\n <div className=\"f6 ph2 mb2\">\r\n <span className=\"dark-gray\">Email: </span>\r\n <span>{initialValues.email}</span>\r\n </div>\r\n )}\r\n <div className=\"fl w-100 ph2\">\r\n <Field\r\n name=\"email\"\r\n label={!finishCreatingAccount ? 'Enter your email' : ''}\r\n updateIsUniqueEmail={updateIsUniqueEmail}\r\n signIn={signIn}\r\n prefillLoginEmail={prefillLoginEmail}\r\n isUniqueEmail={isUniqueEmail}\r\n dataTestId=\"my-account-register-email\"\r\n component={EmailTextBox}\r\n validate={[required, validEmail]}\r\n type={finishCreatingAccount ? 'hidden' : 'text'}\r\n readOnly={initialValues && !!initialValues.email}\r\n showSignIn={showSignIn}\r\n />\r\n </div>\r\n <div className=\"fl w-100 ph2\">\r\n <div className=\"relative gcc-hide-child-ns\">\r\n <Field\r\n name=\"password\"\r\n label=\"Password\"\r\n dataTestId=\"my-account-register-password\"\r\n component={Password}\r\n validate={[required, validPassword]}\r\n type=\"password\"\r\n selectorName=\"register\"\r\n showRequirements\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"fl w-100 ph2\">\r\n <div className=\"flex items-center mt2 mb3\">\r\n <span style={{ color: 'red' }}>\r\n {serverMessage}\r\n </span>\r\n </div>\r\n </div>\r\n <button\r\n type=\"submit\"\r\n data-test-id=\"my-account-register-button\"\r\n className=\"gcc-btn gcc-btn-primary flex justify-center items-center w-100 pa3 bw0 white mv3 f4\"\r\n {...disabled}\r\n >\r\n {\r\n isSubmitting &&\r\n <div className=\"relative\">\r\n <div className=\"gcc-loading h2 w2 nl5 nt3 absolute left-1\">\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n <div className=\"w-100 h-100 absolute left-0 top-0\" />\r\n </div>\r\n </div>\r\n }\r\n <div>Create My Account</div>\r\n </button>\r\n {showAccountBenefitsText && (\r\n <ul className=\"f6 mb0 ml3\">\r\n <li>Track your order</li>\r\n <li>Change delivery information (within 24 hours of ordering)</li>\r\n <li>View past order details</li>\r\n <li>Save carts and favorite products</li>\r\n </ul>\r\n )}\r\n {showAlreadyHaveAccount && (\r\n <div className=\"fl f6 w-100 ph2 tc\">\r\n <p>Already have an account? <span data-test-id=\"my-account-login-text-link\" role=\"button\" tabIndex={-3} className=\"blue pointer\" onClick={signIn}>Sign In</span>.</p>\r\n </div>\r\n )}\r\n </form>\r\n );\r\n};\r\n\r\nRegistrationForm.defaultProps = {\r\n initialValues: {},\r\n finishCreatingAccount: false,\r\n showSignIn: true,\r\n showAccountBenefitsText: false,\r\n};\r\n\r\nRegistrationForm.propTypes = {\r\n handleSubmit: func.isRequired,\r\n isSubmitting: bool.isRequired,\r\n serverMessage: string.isRequired,\r\n signIn: func.isRequired,\r\n prefillLoginEmail: func.isRequired,\r\n updateIsUniqueEmail: func.isRequired,\r\n isUniqueEmail: bool.isRequired,\r\n initialValues: shape({\r\n firstName: string,\r\n lastName: string,\r\n email: string,\r\n accountInvitationGuid: string,\r\n }),\r\n showAlreadyHaveAccount: bool.isRequired,\r\n finishCreatingAccount: bool,\r\n showSignIn: bool,\r\n showAccountBenefitsText: bool,\r\n};\r\n\r\nconst inviteToRegister = hasSuccessfullyCreatedAccount => (!hasSuccessfullyCreatedAccount);\r\n\r\nconst RegisterComponent = (props) => {\r\n const {\r\n isSubmitting,\r\n handleSubmit,\r\n serverMessage,\r\n signIn,\r\n prefillLoginEmail,\r\n updateIsUniqueEmail,\r\n isUniqueEmail,\r\n hasSuccessfullyCreatedAccount,\r\n initialValues,\r\n showAlreadyHaveAccount,\r\n finishCreatingAccount,\r\n showSignIn,\r\n showAccountBenefitsText,\r\n } = props;\r\n\r\n const registerFormProps = {\r\n handleSubmit,\r\n isSubmitting,\r\n prefillLoginEmail,\r\n serverMessage,\r\n signIn,\r\n updateIsUniqueEmail,\r\n isUniqueEmail,\r\n initialValues,\r\n showAlreadyHaveAccount,\r\n finishCreatingAccount,\r\n showSignIn,\r\n showAccountBenefitsText,\r\n };\r\n\r\n const registrationElement =\r\n inviteToRegister(hasSuccessfullyCreatedAccount) ?\r\n <RegistrationForm {...registerFormProps} /> :\r\n <RegisterConfirmation />;\r\n return (\r\n <div className=\"mh1 mh2-m mh3-l mv3\">\r\n {registrationElement}\r\n </div>\r\n );\r\n};\r\n\r\nRegisterComponent.defaultProps = {\r\n initialValues: {},\r\n finishCreatingAccount: false,\r\n showSignIn: true,\r\n showAccountBenefitsText: true,\r\n};\r\n\r\nRegisterComponent.propTypes = {\r\n handleSubmit: func.isRequired,\r\n isSubmitting: bool.isRequired,\r\n signIn: func.isRequired,\r\n prefillLoginEmail: func.isRequired,\r\n updateIsUniqueEmail: func.isRequired,\r\n isUniqueEmail: bool.isRequired,\r\n serverMessage: string.isRequired,\r\n hasSuccessfullyCreatedAccount: bool.isRequired,\r\n initialValues: shape({\r\n firstName: string,\r\n lastName: string,\r\n email: string,\r\n accountInvitationGuid: string,\r\n }),\r\n showAlreadyHaveAccount: bool.isRequired,\r\n finishCreatingAccount: bool,\r\n showSignIn: bool,\r\n showAccountBenefitsText: bool,\r\n};\r\n\r\nexport default reduxForm({\r\n form: 'register',\r\n validate,\r\n asyncValidate,\r\n asyncBlurFields: ['email'],\r\n})(RegisterComponent);\r\n","import React from 'react';\r\nimport {\r\n shape,\r\n string,\r\n bool,\r\n func,\r\n} from 'prop-types';\r\n\r\nconst EmailTextBox = (props) => {\r\n const {\r\n input,\r\n isUniqueEmail,\r\n showSignIn,\r\n dataTestId,\r\n prefillLoginEmail,\r\n signIn,\r\n label,\r\n type,\r\n meta: { touched, error },\r\n readOnly,\r\n } = props;\r\n\r\n const transitionViaEmail = (e) => {\r\n e.preventDefault();\r\n prefillLoginEmail(input.value);\r\n signIn();\r\n };\r\n\r\n const hidden = type === 'hidden';\r\n const hasError = (touched || hidden) && error;\r\n const inputStyle = {};\r\n if (hidden) {\r\n inputStyle.border = 0;\r\n inputStyle.height = 'auto';\r\n if (!hasError) {\r\n inputStyle.margin = 'auto';\r\n }\r\n }\r\n\r\n return (\r\n <div className={`gcc-input ${hasError ? 'has-error' : ''}`} id=\"email-field\" style={inputStyle}>\r\n <input\r\n {...input}\r\n id={input.name}\r\n data-test-id={dataTestId}\r\n type={type}\r\n className={`ba b--black-20 bw1 br3 pa2 pl2 ${input.value ? 'filled' : ''} ${readOnly ? 'read-only-gray' : ''}`}\r\n readOnly={readOnly}\r\n />\r\n {label && <label htmlFor={input.name} className=\"f5 pa2 pl2\">{label}</label>}\r\n {hasError &&\r\n <div className=\"gcc-input-help\">\r\n {isUniqueEmail ?\r\n <span className=\"error\">{error}</span>\r\n :\r\n <span className=\"error\">\r\n Email already registered. {showSignIn && <a href=\"#signIn\" onClick={e => transitionViaEmail(e)}>Want to sign in?</a>}\r\n </span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n );\r\n};\r\n\r\n\r\nEmailTextBox.defaultProps = {\r\n dataTestId: '',\r\n isUniqueEmail: true,\r\n showSignIn: true,\r\n readOnly: false,\r\n};\r\n\r\nEmailTextBox.propTypes = {\r\n input: shape({}).isRequired,\r\n dataTestId: string,\r\n isUniqueEmail: bool,\r\n showSignIn: bool,\r\n prefillLoginEmail: func.isRequired,\r\n label: string.isRequired,\r\n signIn: func.isRequired,\r\n type: string.isRequired,\r\n meta: shape({}).isRequired,\r\n readOnly: bool,\r\n};\r\n\r\nexport default EmailTextBox;\r\n","const validate = (values) => {\r\n const errors = {};\r\n if (!values.username) {\r\n errors.username = 'Required';\r\n }\r\n if (!values.password) {\r\n errors.password = 'Required';\r\n }\r\n return errors;\r\n};\r\n\r\nexport default validate;\r\n","import RegisterApi from '../api/RegisterApi';\r\n\r\nconst asyncValidate = (values, dispatch, props) => (\r\n RegisterApi.checkUniqueEmail(values.email).then((isUnique) => {\r\n if (!isUnique.data) {\r\n props.updateIsUniqueEmail(false);\r\n // eslint-disable-next-line no-throw-literal\r\n throw { email: 'Email already registered. Want to sign in?' };\r\n } else {\r\n props.updateIsUniqueEmail(true);\r\n }\r\n })\r\n);\r\n\r\nexport default asyncValidate;\r\n","import { connect } from 'react-redux';\r\nimport { closeModal } from '../modal/modalActions';\r\nimport RegisterConfirmation from './RegisterConfirmation';\r\n\r\nconst mapStateToProps = state => ({\r\n redirect: state.modal &&\r\n state.modal.event &&\r\n state.modal.event.detail ?\r\n state.modal.event.detail.redirectAfterCreate :\r\n undefined,\r\n});\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n closeModal: () => dispatch(closeModal()),\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(RegisterConfirmation);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst RegisterConfirmation = ({ closeModal, redirect }) => {\r\n const continueShopping = (e) => {\r\n if (!redirect) {\r\n closeModal();\r\n e.preventDefault();\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"tc lh-copy\">\r\n <h2 className=\"flex justify-center mb3\">\r\n <i className=\"material-icons green mr1 self-center\">check_circle</i>\r\n Success!\r\n </h2>\r\n <div className=\"mb4 mt1 f4\">You now have a<br />Blinds.com account.</div>\r\n <p className=\"mb4 mt1 f5\">We’ll send you an email with a link to confirm your account.</p>\r\n <a href=\"/\" onClick={continueShopping} className=\"gcc-btn gcc-btn-primary db mv3 w-100 pa3 bw0 white\" data-test-id=\"continue-shopping-btn\">\r\n Continue Shopping\r\n </a>\r\n </div>\r\n );\r\n};\r\n\r\nRegisterConfirmation.defaultProps = {\r\n redirect: true,\r\n};\r\n\r\nRegisterConfirmation.propTypes = {\r\n closeModal: PropTypes.func.isRequired,\r\n redirect: PropTypes.bool,\r\n};\r\n\r\n\r\nexport default RegisterConfirmation;\r\n","const getPasswordStrength = (val) => {\r\n let strength = 1;\r\n const strengths = {\r\n 1: { color: '#707c80', msg: 'Too Short' },\r\n 2: { color: '#dc2a2a', msg: 'Weak' },\r\n 3: { color: '#fcc300', msg: 'Almost There' },\r\n 4: { color: '#73b93b', msg: 'Strong' },\r\n };\r\n\r\n if (val == null) {\r\n return {\r\n strength,\r\n color: strengths[strength].color,\r\n message: strengths[strength].msg,\r\n };\r\n }\r\n\r\n // If the password length is less than 8\r\n // strength is 1\r\n if (val.length <= 7) strength = 1;\r\n\r\n // If the password length is greater than 6 and contain any\r\n // lowercase alphabet or any number or any special character\r\n // strength is 2\r\n if (val.length > 7 && (val.match(/[a-z]/) || val.match(/\\d+/)\r\n || val.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,),+,=,<,>]/))) strength = 2;\r\n\r\n // If the password length is greater than 6 and contain alphabet,\r\n // number,special character respectively\r\n // strength is 3\r\n if (val.length > 7 && ((val.match(/[a-z]/) && val.match(/\\d+/))\r\n || (val.match(/\\d+/) && val.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,),+,=,<,>]/))\r\n || (val.match(/[a-z]/) && val.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,),+,=,<,>]/)))) strength = 3;\r\n\r\n // If the password length is greater than 6 and must contain uppsercase and lowercase alphabets,\r\n // numbers and special characters\r\n // strength is 4\r\n if (val.length > 7 && val.match(/[a-z]/) && val.match(/[A-Z]/)\r\n && val.match(/\\d+/) && val.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,),+,=,<,>]/)) strength = 4;\r\n\r\n return {\r\n strength,\r\n color: strengths[strength].color,\r\n message: strengths[strength].msg,\r\n };\r\n};\r\n\r\nexport default getPasswordStrength;\r\n","import { Utils } from './Utils';\r\n\r\nmodule.exports = { Utils };\r\n","import axios from 'axios';\r\nimport { Utils } from '../common';\r\n\r\nclass Axios {\r\n constructor() {\r\n const newBaseUrl = Utils.getUrlAddress(window.location.href).replace(/\\/+$/g, '');\r\n this.baseUrl = `${newBaseUrl}/`;\r\n axios.defaults.baseURL = this.baseUrl;\r\n axios.defaults.headers.post['Content-Type'] = 'application/json';\r\n\r\n const axiosConfig = {\r\n headers: { Accept: 'application/json' },\r\n credentials: 'same-origin',\r\n };\r\n\r\n const instance = axios.create(axiosConfig);\r\n\r\n // You can alter axios defaults after instance has been created from the client\r\n // const api = new AxiosInstance();\r\n // api.defaults.headers.common['Authorization'] = AUTH_TOKEN;\r\n return instance;\r\n }\r\n}\r\n\r\nconst api = new Axios();\r\n\r\nmodule.exports = { api };\r\n"],"sourceRoot":""}