{"version":3,"sources":["webpack:///./Content/javascripts/base/local-storage.js","webpack:///./Content/javascripts/react/estimateBuilder/analytics/constants.js","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/estimateBuilder/analytics/commonAnalytics.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/modules/cart-count/cart-count.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/components/colorbox-confirm/colorbox-confirm.js?3b1e","webpack:///./Content/javascripts/components/colorbox-confirm/colorbox-confirm-civic.js","webpack:///./Content/javascripts/components/colorbox-confirm/colorbox-confirm-foodtruck.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/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/common/digitalDataBuilder.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/estimateBuilder/analytics/analyticsFunctions.js","webpack:///./Content/javascripts/react/site-bdc/modules/previous-products/previousProductsReducer.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/base/internal-user-sticky.js","webpack:///./Content/javascripts/modules/header/view-models/header-view-model.js","webpack:///./Content/javascripts/binding-handlers/ko-autocomplete.js","webpack:///./Content/javascripts/modules/autocomplete/autocomplete.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/header-modal/app/reducers.js","webpack:///./Content/javascripts/react/site-bdc/createestimate/estimateReducer.js","webpack:///./Content/javascripts/react/site-bdc/common/index.js","webpack:///./Content/javascripts/react/site-bdc/api/Axios.js","webpack:///./Content/javascripts/react/site-bdc/header-modal/index.js","webpack:///./Content/javascripts/react/site-bdc/header-modal/app/App.js","webpack:///./Content/javascripts/react/site-bdc/login-register/modal/AppModalContainer.js","webpack:///./Content/javascripts/react/site-bdc/login-register/modal/AppModal.js","webpack:///./Content/javascripts/react/site-bdc/createestimate/EstimateModalContainer.js","webpack:///./Content/javascripts/react/site-bdc/createestimate/EstimateModal.js","webpack:///./Content/javascripts/react/site-bdc/createestimate/estimateModalActions.js"],"names":["define","$","store","LocalStorage","extend","prototype","getFromLocalStorage","key","defaultValue","value","get","persist","set","remove","EventNames","DesignAddProduct","DesignCopyStyle","DesignDuplicate","DesignItemConfigUpdate","DesignRemoveProduct","DesignSave","DesignShopProducts","DesignSwapProducts","InstallationSummaryModal","CartAdd","PageNames","CustomBlindsDIYEstimatesPLP","DesignSummary","IQCustomBlindsPLP","IQMyEstimates","MyAccountMyEstimates","MyEstimates","PageTypes","DIYEstimatesPLP","Estimates","IQPLP","InterconnectedQuotes","MyAccount","PrimaryCategories","CustomBlinds","Overlay","ButtonSubmission","SubCategories1","CustomBlindsDIYEstimates","SubCategories2","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","window","digitalData","event","push","ddoEventInit","setTimeout","module","exports","BACK_TO_SIGN_IN","FORGOT_YOUR_PASSWORD","CHECK_YOUR_IN_BOX","CHANGE_YOUR_PASSWORD","YOURE_ALL_SET","buildBaseEventData","primaryCategory","eventName","category","eventInfo","createProductInfoProperty","buildBcomAnalyticsEvent","sku","eventData","item","productInfo","createItemPropertyForContainer","items","containerId","allIds","filter","id","byId","itemProduct","map","skuNumber","getProductToBeSwappedKey","designId","getSkuOfProductToBeSwapped","productToBeSwappedKey","localStorage","getItem","createAndSendButtonSubmissionAnalyticsEventForSingleSku","getAppropriateProductIdForSite","autobahnProductId","partnerProductId","analyticsContext","AnalyticsContext","buttonSubmissionAnalyticsEvent","createButtonSubmissionEventWithEventNameAndItem","createAndSendButtonSubmissionAnalyticsEventForMultipleSkus","createAndSendProductRemovedAnalyticsEventIfSwappingProduct","skuOfProductToBeSwapped","AnalyticsConstants","removeItem","createAndSendButtonSubmissionEventWithEventName","createButtonSubmissionEventWithEventName","createAndSendPageLoadEvent","pageName","pageType","subCategory1","subCategory2","pageObject","createPageObject","experienceType","device","type","siteObject","createSiteObject","sendPageLoadEvent","required","undefined","validEmail","includes","split","trim","length","checkAfterDot","validPassword","strength","TextBox","input","dataTestId","label","meta","touched","error","readOnly","style","hidden","hasError","inputStyle","border","height","margin","className","name","data-test-id","htmlFor","defaultProps","propTypes","shape","isRequired","string","bool","localSt","currentCartCount","newCartCount","addToCartCount","$cartObj","attr","removeFromCartCount","updateCartCount","cartCount","closeModal","history","pushState","title","openModal","e","changeDefaultTab","newDefaultTab","default","tab","existy","x","truthy","PasswordContainer","props","showHidePassword","bind","updateInputValue","origOnChange","onChange","state","inputType","this","setState","target","forgotPasswordPath","message","text","criteriaList","messageColor","color","showRequirements","Component","func","CivicColorBox","FoodtruckColorBox","settings","okCallback","cancelCallback","closedCallback","_settings","html","cssClass","buttonSettings","buttons","okId","okText","ok","cancelText","cancel","msg","okElementId","cancelElementId","okHandler","elementId","callback","cancelHandler","colorbox","transition","maxWidth","maxHeight","onComplete","resize","getElementById","onclick","call","close","registerCallbacks","onClosed","constructor","apply","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","createStore","compose","applyMiddleware","thunk","devToolsExtension","f","loggingIn","logInFailure","loginSuccess","logOut","loginStatusChange","logIn","values","onSigninSuccess","getState","LoginApi","login","then","response","resp","data","ObjectException","JSON","user","profile","authenticationStatus","profileInfo","profileID","modal","loginCompletedEvent","CustomEvent","detail","dispatchEvent","mergedDetail","taskName","loginStatusChangeEvent","catch","exception","register","api","post","checkUniqueEmail","email","createAccount","creatingAccount","forgotPassword","onTextChanged","registrationSuccess","registrationFailure","onRegistrationSuccess","RegisterApi","validateUniqueEmail","tryInitialize","page","pageInfo","ddoInit","setPage","setPageInfo","pageLoadEvent","setAdditionalPageInfo","propertyName","additionalData","setAuthenticationStatus","Title","submitPasswordReset","submitPerformPasswordReset","newPassword","forUserId","passwordResetToken","token","myEstimatesPageLoaded","howItWorksEstimatesModalLoaded","isLoading","pageSize","currentPage","products","pageNumber","ForgotPasswordLink","path","href","onClick","PasswordPresentation","data-strength","backgroundColor","RenderMessage","role","tabIndex","RenderPasswordFunctionality","display","width","RenderCriteria","arrayOf","number","LogInContainer","ownProps","initialValues","customer","onSubmit","signUp","LogInForm","handleSubmit","disabled","Field","component","emailInputStyles","Password","selectorName","displayRegisterLink","displaySitePolicyLinks","rel","reduxForm","form","ForgotYourPasswordContainer","step","instructions","errorMessage","ResetPasswordApi","console","log","status","React","_","defaultCustomerEmail","ForgotYourPassword","ForgotYourPasswordForm","makeOnClick","goBack","americanBlinds","blindsCa","blinds","justBlinds","itemTypes","unknown","doorLock","garageDoor","itemSources","autobahn","containerTypes","room","garage","ko","cookiesFactory","ColorboxConfirm","isInternalUser","removeClass","addClass","jQuerySelectorResult","show","dateAsOfText","dateAsOf","showDateAsOfSticky","shouldShowOnBehalfOfDropdown","observable","on","vm","cartOnBehalfOf","logoutOnBehalfOf","globalPaths","logOutURI","username","userNameWithoutDomainPrefix","emptyCart","reload","visible","logout","ajax","done","d","applyBindings","postal","CartCount","jsCookie","AppModal","self","searchValue","cartItemCount","channel","computed","showName","internalName","showTime","showSurefit","viewModel","preventDefault","dispatchLoginStatusChangeEvent","getAuthStatus","isAuthenticated","handleAuthStatus","authData","cartCountObject","ItemCount","IsAuthenticated","body","HasMandiMeasureLineItem","removeAttr","trigger","updateHeaderWithLoginStatus","cartwithloginstatus","getCartWithLoginStatus","fail","subscribe","addEventListener","click","loginEvent","indexOf","estimateModalEvent","exitEstimateModalEvent","Autocomplete","bindingHandlers","koAutocomplete","init","element","valueAccessor","isMobile","ssm","states","active","autocomplete","when","getData","autoCompleteData","jsonData","prefix","typeahead","hint","highlight","minLength","classNames","wrapper","menu","dataset","suggestion","selectable","empty","open","cursor","displayKey","source","substringMatcher","limit","templates","queryItem","clickedOptionValue","objFound","find","obj","focus","offset","top","animate","scrollTop","strs","q","cb","matches","substrRegex","RegExp","each","i","str","test","SignInSignUpContainer","switchTab","showSignIn","showSignUp","signInLabel","signUpLabel","signInLabelClassNameOverride","signUpLabelClassNameOverride","signInLabelDivClassNameOverride","signUpLabelDivClassNameOverride","showAlreadyHaveAccount","finishCreatingAccount","accountInvitationGuid","showAccountBenefitsText","showSignUpBorderBottom","signUpTitleElementType","app","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","transitionViaEmail","errors","isUnique","redirect","redirectAfterCreate","RegisterConfirmation","strengths","1","2","3","4","reducers","previousProducts","formReducer","resetPassword","estimateModal","newBaseUrl","replace","baseUrl","axios","defaults","baseURL","headers","create","Accept","credentials","mountSite","render","Provider","AppModalContainer","resetPasswordStep","onCloseModal","setLoginStatus","hash","ariaHideApp","contentLabel","onRequestClose","closeTimeoutMS","overlayClassName","content","HashRouter","hashType","Route","toLowerCase","endsWith","origin","EstimateModalContainer","onCloseEstimateModal","closeEstimateModal","openEstimateModal","EstimateModal","styles","estimateModalContent","padding","marginLeft","marginRight","estimateModalClose","float","textDecoration","estimateModalTitleAndSteps","paddingTop","paddingBottom","estimateModalTitle","fontFamily","fontSize","fontWeight","lineHeight","textAlign","estimateModalLine","boxSizing","marginTop","marginBottom","estimateModalContentStepContainer","estimateModalContentStep","estimateModalContentStepImage","verticalAlign","estimateModalContentStepName","estimateModalContentStepDescription","estimateModalBtnGetStarted","borderRadius","src","alt"],"mappings":"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","file":"2-24a5fb6b3055a409cf31.js","sourcesContent":["define([\r\n \"jquery\", \"store\"],\r\nfunction ($, store) {\r\n var LocalStorage = function () { };\r\n\r\n $.extend(LocalStorage.prototype, {\r\n\r\n getFromLocalStorage: function (key, defaultValue) {\r\n var value = store.get(key)\r\n if (value) {\r\n return value;\r\n }\r\n return defaultValue;\r\n },\r\n\r\n persist: function (key, value) {\r\n store.set(key, value);\r\n },\r\n\r\n remove: function(key) {\r\n store.remove(key);\r\n }\r\n\r\n });\r\n\r\n return LocalStorage;\r\n\r\n});\r\n","const AnalyticsConstants = {\r\n EventNames: {\r\n DesignAddProduct: 'design add product',\r\n DesignCopyStyle: 'design copy style',\r\n DesignDuplicate: 'design duplicate',\r\n DesignItemConfigUpdate: 'design item config update',\r\n DesignRemoveProduct: 'design remove product',\r\n DesignSave: 'design save',\r\n DesignShopProducts: 'design shop products',\r\n DesignSwapProducts: 'design swap products',\r\n InstallationSummaryModal: 'installation summary modal',\r\n CartAdd: 'cart add',\r\n },\r\n PageNames: {\r\n CustomBlindsDIYEstimatesPLP: 'custom blinds>diy estimates>plp',\r\n DesignSummary: 'interconnected quotes>design summary',\r\n IQCustomBlindsPLP: 'interconnected quotes>custom blinds>diy estimates>plp',\r\n IQMyEstimates: 'interconnected quotes>my estimates',\r\n MyAccountMyEstimates: 'my account>my estimates',\r\n MyEstimates: 'my estimates',\r\n },\r\n PageTypes: {\r\n DIYEstimatesPLP: 'tool:diy estimates:plp',\r\n Estimates: 'estimates',\r\n IQPLP: 'tool:interconnected quotes:plp',\r\n InterconnectedQuotes: 'tool:interconnected quotes:content',\r\n MyAccount: 'my account',\r\n },\r\n PrimaryCategories: {\r\n InterconnectedQuotes: 'interconnected quotes',\r\n CustomBlinds: 'custom blinds',\r\n Overlay: 'overlay',\r\n ButtonSubmission: 'button submission',\r\n },\r\n SubCategories1: {\r\n CustomBlindsDIYEstimates: 'custom blinds>diy estimates',\r\n },\r\n SubCategories2: {\r\n CustomBlindsDIYEstimatesPLP: 'custom blinds>diy estimates>plp',\r\n },\r\n};\r\n\r\nexport default AnalyticsConstants;\r\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","/* eslint-disable no-useless-escape */\r\n/* eslint-disable max-len */\r\nimport {\r\n AnalyticsContext,\r\n} from '@gcc/adobe-analytics';\r\nimport AnalyticsConstants from './constants';\r\nimport { sites } from '../helpers/globalVariables';\r\n\r\n// TODO: delete this function and utilize the new GCC.NPM.AdobeAnalytics package\r\nexport const buildBaseEventData = (primaryCategory, eventName) => {\r\n const baseObject = {\r\n category: { primaryCategory },\r\n eventInfo: { eventName },\r\n };\r\n\r\n return baseObject;\r\n};\r\n\r\n// TODO: delete this function and utilize the new GCC.NPM.AdobeAnalytics package\r\nexport const buildBcomAnalyticsEvent = (primaryCategory, eventName, sku = null) => {\r\n const eventData = buildBaseEventData(primaryCategory, eventName);\r\n\r\n if (sku) {\r\n eventData.item = [{ productInfo: { sku } }];\r\n }\r\n\r\n return eventData;\r\n};\r\n\r\nexport const createProductInfoProperty = (sku) => {\r\n const productInfo = {\r\n sku,\r\n };\r\n return productInfo;\r\n};\r\n\r\nexport const createItemPropertyForContainer = (items, containerId) => {\r\n const itemsInContainer = items.allIds\r\n .filter(id => items.byId[id].containerId === containerId && items.byId[id].itemProduct);\r\n\r\n const item = itemsInContainer.map((id) => {\r\n const productInfo = createProductInfoProperty(items.byId[id].itemProduct.skuNumber);\r\n return { productInfo };\r\n });\r\n\r\n return item;\r\n};\r\n\r\nexport const getProductToBeSwappedKey = designId => `productToBeSwapped-${designId}`;\r\n\r\nexport const getSkuOfProductToBeSwapped = (designId) => {\r\n const productToBeSwappedKey = getProductToBeSwappedKey(designId);\r\n const productToBeSwapped = localStorage.getItem(productToBeSwappedKey);\r\n return productToBeSwapped;\r\n};\r\n\r\nexport const getAppropriateProductIdForSite = (siteId, autobahnProductId, partnerProductId) => (siteId === sites.theHomeDepot ? partnerProductId : autobahnProductId);\r\n\r\nexport const createAndSendButtonSubmissionAnalyticsEventForSingleSku = (siteId, sku, eventName) => {\r\n const analyticsContext = new AnalyticsContext(siteId);\r\n const productInfo = createProductInfoProperty(sku);\r\n const item = [{ productInfo }];\r\n const buttonSubmissionAnalyticsEvent = analyticsContext.createButtonSubmissionEventWithEventNameAndItem(eventName, item);\r\n analyticsContext.sendAnalyticsEvent(buttonSubmissionAnalyticsEvent);\r\n};\r\n\r\nexport const createAndSendButtonSubmissionAnalyticsEventForMultipleSkus = (\r\n items,\r\n containerId,\r\n siteId,\r\n eventName,\r\n) => {\r\n const analyticsContext = new AnalyticsContext(siteId);\r\n const item = createItemPropertyForContainer(items, containerId);\r\n const buttonSubmissionAnalyticsEvent = analyticsContext.createButtonSubmissionEventWithEventNameAndItem(eventName, item);\r\n analyticsContext.sendAnalyticsEvent(buttonSubmissionAnalyticsEvent);\r\n};\r\n\r\nexport const createAndSendProductRemovedAnalyticsEventIfSwappingProduct = (designId, siteId) => {\r\n const skuOfProductToBeSwapped = getSkuOfProductToBeSwapped(designId);\r\n if (skuOfProductToBeSwapped) {\r\n createAndSendButtonSubmissionAnalyticsEventForSingleSku(\r\n siteId,\r\n skuOfProductToBeSwapped,\r\n AnalyticsConstants.EventNames.DesignRemoveProduct,\r\n );\r\n localStorage.removeItem(getProductToBeSwappedKey(designId));\r\n }\r\n};\r\n\r\nexport const createAndSendButtonSubmissionEventWithEventName = (siteId, eventName) => {\r\n const analyticsContext = new AnalyticsContext(siteId);\r\n const buttonSubmissionAnalyticsEvent = analyticsContext.createButtonSubmissionEventWithEventName(eventName);\r\n analyticsContext.sendAnalyticsEvent(buttonSubmissionAnalyticsEvent);\r\n};\r\n\r\nexport const createAndSendPageLoadEvent = (\r\n siteId,\r\n pageName,\r\n pageType,\r\n primaryCategory,\r\n subCategory1,\r\n subCategory2,\r\n) => {\r\n const analyticsContext = new AnalyticsContext(siteId);\r\n const pageObject = analyticsContext.createPageObject(\r\n pageName,\r\n pageType,\r\n primaryCategory,\r\n subCategory1,\r\n subCategory2,\r\n );\r\n\r\n const betaSite = '';\r\n const experienceType = window.device.type;\r\n const siteObject = analyticsContext.createSiteObject(betaSite, experienceType, siteId);\r\n analyticsContext.sendPageLoadEvent(pageObject, siteObject);\r\n};\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","define([\r\n \"globals\",\r\n \"jquery\",\r\n \"local-storage\"],\r\nfunction(globals, $, LocalStorage) {\r\n\r\n \"use strict\";\r\n\r\n var CartCount = function() {\r\n\r\n var localSt = new LocalStorage();\r\n var currentCartCount = 0;\r\n var newCartCount = 0;\r\n\r\n var add = function($cartObj) {\r\n currentCartCount = localSt.getFromLocalStorage(\"cart-count\", 0);\r\n newCartCount = currentCartCount + 1;\r\n localSt.persist(\"cart-count\", newCartCount);\r\n $cartObj.attr(\"data-cart-count\", newCartCount);\r\n };\r\n\r\n var remove = function($cartObj) {\r\n currentCartCount = localSt.getFromLocalStorage(\"cart-count\", 0);\r\n newCartCount = currentCartCount - 1;\r\n localSt.persist(\"cart-count\", newCartCount);\r\n $cartObj.attr(\"data-cart-count\", newCartCount);\r\n };\r\n\r\n var update = function(cartCount, $cartObj) {\r\n localSt.persist(\"cart-count\", cartCount);\r\n $cartObj.attr(\"data-cart-count\", cartCount);\r\n };\r\n\r\n return {\r\n addToCartCount: add,\r\n removeFromCartCount: remove,\r\n updateCartCount: update\r\n };\r\n\r\n };\r\n\r\n return CartCount;\r\n\r\n});\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","\"use strict\";\n\nvar CivicColorBox = require(\"./colorbox-confirm-civic\");\nvar FoodtruckColorBox = require(\"./colorbox-confirm-foodtruck\");\nvar globals = require(\"globals\");\n\nmodule.exports = function (settings, okCallback, cancelCallback, closedCallback) {\n if (globals.siteId === 5) {\n return new FoodtruckColorBox(settings, okCallback, cancelCallback, closedCallback);\n }\n settings.siteId = globals.siteId;\n return new CivicColorBox(settings, okCallback, cancelCallback, closedCallback);\n};","define([\r\n \"jquery\",\r\n \"colorbox\"],\r\nfunction($) {\r\n\r\n var colorboxConfirm = function(settings, okCallback, cancelCallback,closedCallback) {\r\n\r\n var _settings = settings || {};\r\n /*\r\n Example of settings\r\n {\r\n title: \"Remove Item\",\r\n msg: \"Are you sure you would like to remove this item?\",\r\n buttons: { ok: { text: \"Yes\"}, cancel: { text: \"No\" } }\r\n cssClass: \"error\"\r\n }\r\n Example of settings\r\n {\r\n html: \"
Hello world
\"\r\n }\r\n Example of settings\r\n {\r\n html: \"
Click ok
\",\r\n okElementId: \"btn-ok\",\r\n }\r\n Example of settings\r\n {\r\n html: \"
Click ok
\",\r\n okElementId: \"btn-ok\",\r\n cancelElementId: \"btn-cancel\"\r\n }\r\n */\r\n\r\n var html = \"\";\r\n if (_settings.html) {\r\n html = _settings.html;\r\n } else {\r\n var cssClass = _settings.cssClass || \"\";\r\n var buttonSettings = _settings.buttons || {};\r\n var okId = \"colorbox-ok\";\r\n var okText = (buttonSettings.ok && buttonSettings.ok.text) || \"Ok\";\r\n var cancelId = \"colorbox-cancel\";\r\n var cancelText = ( buttonSettings.cancel && buttonSettings.cancel.text ) || \"Cancel\";\r\n\r\n // Blinds.com\r\n if (_settings.siteId === 3) {\r\n html = \r\n \"
\" +\r\n \"
\" +\r\n \"

\" + _settings.title + \"

\" +\r\n \"

\" + settings.msg + \"

\" +\r\n \"
\" +\r\n \" \" +\r\n \" \" +\r\n \"
\" +\r\n \"
\" +\r\n \"
\";\r\n } else {\r\n html = \"
\" +\r\n \"
\" +\r\n \"

\" + _settings.title + \"

\" +\r\n \"

\" + settings.msg + \"

\" +\r\n \"
\" +\r\n \"\" +\r\n \"\" +\r\n \"
\" +\r\n \"
\" +\r\n \"
\";\r\n }\r\n _settings.okElementId = okId;\r\n _settings.cancelElementId = cancelId;\r\n }\r\n\r\n var registerCallbacks = function (okHandler, cancelHandler) {\r\n\r\n if (okHandler && okHandler.elementId) {\r\n var ok = document.getElementById(okHandler.elementId);\r\n if (ok) {\r\n ok.onclick = function () {\r\n okHandler.callback && okHandler.callback.call(this);\r\n $.colorbox.close();\r\n };\r\n }\r\n }\r\n\r\n if (cancelHandler && cancelHandler.elementId) {\r\n var cancel = document.getElementById(cancelHandler.elementId);\r\n if (cancel) {\r\n cancel.onclick = function () {\r\n cancelHandler.callback && cancelHandler.callback.call(this);\r\n $.colorbox.close();\r\n };\r\n }\r\n }\r\n }\r\n\r\n var okHandler = { elementId: _settings.okElementId, callback: okCallback };\r\n var cancelHandler = { elementId: _settings.cancelElementId, callback: cancelCallback };\r\n\r\n $.colorbox({\r\n html: html,\r\n transition: \"none\",\r\n maxWidth: \"95%\",\r\n maxHeight: \"95%\",\r\n onComplete: function () {\r\n $.colorbox.resize();\r\n registerCallbacks(okHandler, cancelHandler);\r\n },\r\n onClosed: function () {\r\n if (closedCallback && !!( closedCallback && closedCallback.constructor && closedCallback.call && closedCallback.apply )) {\r\n closedCallback();\r\n }\r\n }\r\n });\r\n\r\n };\r\n\r\n return colorboxConfirm;\r\n\r\n});\r\n","define([\r\n \"jquery\",\r\n \"colorbox\"],\r\nfunction($) {\r\n\r\n var colorboxConfirm = function(settings, okCallback, cancelCallback,closedCallback) {\r\n\r\n var _settings = settings || {};\r\n /*\r\n Example of settings\r\n {\r\n title: \"Remove Item\",\r\n msg: \"Are you sure you would like to remove this item?\",\r\n buttons: { ok: { text: \"Yes\"}, cancel: { text: \"No\" } }\r\n cssClass: \"error\"\r\n }\r\n Example of settings\r\n {\r\n html: \"
Hello world
\"\r\n }\r\n Example of settings\r\n {\r\n html: \"
Click ok
\",\r\n okElementId: \"btn-ok\",\r\n }\r\n Example of settings\r\n {\r\n html: \"
Click ok
\",\r\n okElementId: \"btn-ok\",\r\n cancelElementId: \"btn-cancel\"\r\n }\r\n */\r\n\r\n var html = \"\";\r\n if (_settings.html) {\r\n html = _settings.html;\r\n } else {\r\n var cssClass = _settings.cssClass || \"\";\r\n var buttonSettings = _settings.buttons || {};\r\n var okId = \"colorbox-ok\";\r\n var okText = (buttonSettings.ok && buttonSettings.ok.text) || \"Ok\";\r\n var cancelId = \"colorbox-cancel\";\r\n var cancelText = ( buttonSettings.cancel && buttonSettings.cancel.text ) || \"Cancel\";\r\n\r\n html = \"
\" +\r\n \"
\" +\r\n \"

\" + _settings.title + \"

\" +\r\n \"

\" + settings.msg + \"

\" +\r\n \"
\" +\r\n \"\" +\r\n \"\" +\r\n \"
\" +\r\n \"
\" +\r\n \"
\";\r\n _settings.okElementId = okId;\r\n _settings.cancelElementId = cancelId;\r\n }\r\n\r\n var registerCallbacks = function (okHandler, cancelHandler) {\r\n\r\n if (okHandler && okHandler.elementId) {\r\n var ok = document.getElementById(okHandler.elementId);\r\n if (ok) {\r\n ok.onclick = function () {\r\n okHandler.callback && okHandler.callback.call(this);\r\n $.colorbox.close();\r\n };\r\n }\r\n }\r\n\r\n if (cancelHandler && cancelHandler.elementId) {\r\n var cancel = document.getElementById(cancelHandler.elementId);\r\n if (cancel) {\r\n cancel.onclick = function () {\r\n cancelHandler.callback && cancelHandler.callback.call(this);\r\n $.colorbox.close();\r\n };\r\n }\r\n }\r\n }\r\n\r\n var okHandler = { elementId: _settings.okElementId, callback: okCallback };\r\n var cancelHandler = { elementId: _settings.cancelElementId, callback: cancelCallback };\r\n\r\n $.colorbox({\r\n html: html,\r\n transition: \"none\",\r\n maxWidth: \"95%\",\r\n maxHeight: \"95%\",\r\n onComplete: function () {\r\n $.colorbox.resize();\r\n registerCallbacks(okHandler, cancelHandler);\r\n },\r\n onClosed: function () {\r\n if (closedCallback && !!( closedCallback && closedCallback.constructor && closedCallback.call && closedCallback.apply )) {\r\n closedCallback();\r\n }\r\n }\r\n });\r\n\r\n };\r\n\r\n return colorboxConfirm;\r\n\r\n});\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 { 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","const validatePage = () => {\r\n if (window.digitalData &&\r\n window.digitalData.page &&\r\n window.digitalData.page.pageInfo &&\r\n window.digitalData.page.pageInfo.pageName &&\r\n window.digitalData.page.pageInfo.pageType) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nconst validateUser = () => {\r\n if (window.digitalData &&\r\n window.digitalData.user &&\r\n window.digitalData.user.profile &&\r\n window.digitalData.user.profile.authenticationStatus) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nconst tryInitialize = () => {\r\n if (validatePage() && validateUser()) {\r\n window.ddoInit(window.digitalData);\r\n }\r\n};\r\n\r\nexport const setPage = (page) => {\r\n if (window.digitalData) {\r\n window.digitalData.page = page;\r\n }\r\n tryInitialize();\r\n};\r\n\r\nexport const setPageInfo = (pageName, pageType, pageLoadEvent) => {\r\n const pageInfo = { pageName, pageType };\r\n\r\n if (pageLoadEvent !== undefined && pageLoadEvent !== null && pageLoadEvent !== '') {\r\n pageInfo.pageLoadEvent = pageLoadEvent;\r\n }\r\n\r\n if (window.digitalData !== undefined && !window.digitalData.page) {\r\n window.digitalData.page = {};\r\n window.digitalData.page.pageInfo = pageInfo;\r\n }\r\n\r\n tryInitialize();\r\n};\r\n\r\nexport const setAdditionalPageInfo = (propertyName, additionalData) => {\r\n if (window.digitalData !== undefined && !window.digitalData.page) {\r\n window.digitalData.page = {};\r\n window.digitalData.page.category = { ...additionalData };\r\n }\r\n};\r\n\r\nexport const setAuthenticationStatus = (authenticationStatus) => {\r\n window.digitalData.user = window.digitalData.user || {};\r\n window.digitalData.user.profile = window.digitalData.user.profile || {};\r\n\r\n window.digitalData.user.profile.authenticationStatus = authenticationStatus;\r\n tryInitialize();\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst Title = ({ text }) => (\r\n

{text}

\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 \r\n Submit\r\n \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 {\r\n setPageInfo,\r\n} from '../../common/digitalDataBuilder';\r\n\r\nimport { Utils } from '../../site-bdc/common';\r\nimport { buildBcomAnalyticsEvent } from './commonAnalytics';\r\n\r\n// TODO: delete this whole file and utilize the new GCC.NPM.AdobeAnalytics package\r\n\r\nexport const myEstimatesPageLoaded = () => {\r\n setPageInfo('my account>my estimates', 'my account');\r\n};\r\n\r\nexport const howItWorksEstimatesModalLoaded = () => {\r\n Utils.sendAnalyticsEvent(buildBcomAnalyticsEvent('overlay', 'DIY estimate intro'));\r\n};\r\n","\r\nconst defaultState = {\r\n isLoading: true,\r\n pageSize: 5,\r\n currentPage: 1,\r\n products: [],\r\n};\r\n\r\nconst products = (state = defaultState, action) => {\r\n switch (action.type) {\r\n case 'RECEIVE_PRODUCTS':\r\n return Object.assign({}, state, {\r\n isLoading: false,\r\n products: [...state.products, ...action.products],\r\n });\r\n case 'REQUEST_PRODUCTS':\r\n return Object.assign({}, state, {\r\n isLoading: true,\r\n products: [...state.products],\r\n });\r\n case 'UPDATE_PAGE':\r\n return Object.assign({}, state, {\r\n currentPage: action.pageNumber,\r\n products: [...state.products],\r\n });\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default products;\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
\r\n
\r\n Password Strength: {message} \r\n
\r\n \r\n
\r\n );\r\n } else if (showRequirements) {\r\n return (\r\n
\r\n
\r\n Password Strength: \r\n
\r\n
\r\n
\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
\r\n

Create a strong password by:

\r\n
\r\n {criteriaList.map(val => (\r\n
\r\n
{val.match ? '✔' : '●'}
\r\n {val.message}\r\n
\r\n ))}\r\n
\r\n
\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 { history.push('/reset'); }} >\r\n Forgot your password?\r\n \r\n );\r\n }\r\n return (\r\n \r\n Forgot your password?\r\n \r\n );\r\n});\r\n\r\nconst RenderPasswordFunctionality = (type, showHidePassword, forgotPasswordPath) => {\r\n if (forgotPasswordPath) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return (\r\n
\r\n \r\n {type === 'password' ? 'Show' : 'Hide'}\r\n \r\n
\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
\r\n
\r\n \r\n \r\n {RenderMessage(input.value, message, messageColor, showRequirements)}\r\n {RenderPasswordFunctionality(inputType, showHidePassword, forgotPasswordPath)}\r\n
\r\n {RenderCriteria(showRequirements, criteriaList)}\r\n
\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
\r\n
\r\n
\r\n {initialValues['login-email'] && (\r\n
\r\n Email: \r\n {initialValues['login-email']}\r\n
\r\n )}\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n {\r\n serverMessage &&\r\n (\r\n
\r\n
\r\n \r\n {serverMessage}\r\n \r\n
\r\n
\r\n )\r\n }\r\n \r\n {\r\n this.props.isSubmitting &&\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n }\r\n
Login to My Account
\r\n \r\n
\r\n {\r\n this.props.displayRegisterLink &&\r\n (

Don’t have an account? Create one now.

)\r\n }\r\n {\r\n this.props.displaySitePolicyLinks &&\r\n (\r\n

\r\n Terms & Conditions\r\n |\r\n Privacy Policy\r\n

\r\n )\r\n }\r\n
\r\n \r\n
\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 \r\n );\r\n }\r\n return (\r\n \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
\r\n
\r\n
\r\n
\r\n \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","define([\r\n \"globals\",\r\n \"jquery\",\r\n \"knockout\",\r\n \"underscore\",\r\n \"cookies-factory\",\r\n \"feature!colorbox-confirm\"],\r\nfunction (globals, $, ko, _, cookiesFactory, ColorboxConfirm) {\r\n\r\n const isTHD = globals.siteId === 11\r\n if (isTHD) {\r\n if (!cookiesFactory.isInternalUser()) {\r\n $('body').removeClass('mt5 is-internal-user');\r\n $('#mounted-header').removeClass('mt5');\r\n return {}\r\n } else {\r\n $('body').addClass('mt5');\r\n $('body').addClass('mt5 is-internal-user');\r\n $('#mounted-header').addClass('mt5');\r\n $('#summary').addClass('pt5 pt0-ns');\r\n }\r\n }\r\n\r\n var jQuerySelectorResult = $(\"#internal-user-sticky\");\r\n if (jQuerySelectorResult.length !== 1) {\r\n return {}\r\n }\r\n \r\n if (cookiesFactory.isInternalUser()) {\r\n $(\".bdc-header-spacer-for-stickies\").show(); \r\n }\r\n\r\n var dateAsOfText = cookiesFactory.dateAsOf();\r\n var showDateAsOfSticky = true;\r\n if (!dateAsOfText) {\r\n dateAsOfText = \"TODAY\";\r\n showDateAsOfSticky = false;\r\n }\r\n\r\n var shouldShowOnBehalfOfDropdown = ko.observable(false);\r\n $(document).on(\"click\", function() {\r\n shouldShowOnBehalfOfDropdown(false);\r\n });\r\n\r\n var emptyCart = function() {\r\n $.post('/Cart/Empty', function(response) {\r\n if (response) {\r\n window.location.reload();\r\n }\r\n });\r\n };\r\n\r\n var logoutOnBehalfOf = function() {\r\n new ColorboxConfirm({\r\n title: \"Log off\",\r\n msg: \"Do you want to stop navigating on behalf of the customer?<br/>This leaves your login and cart unchanged.\",\r\n buttons: {\r\n ok: {\r\n text: \"Ok\"\r\n },\r\n cancel: {\r\n text: \"Cancel\"\r\n }\r\n }\r\n }, function() {\r\n window.location = globals.globalPaths.logOutURI;\r\n });\r\n };\r\n\r\n var logout = () => {\r\n $.ajax({\r\n url: \"/InternalUser/LogoutAndRemoveCookie\",\r\n }).done((d) => {\r\n window.location = \"/\";\r\n });\r\n };\r\n\r\n var vm = {\r\n cartOnBehalfOf: cookiesFactory.cartOnBehalfOf(),\r\n dateAsOfText: dateAsOfText,\r\n logoutOnBehalfOf: logoutOnBehalfOf,\r\n shouldShowOnBehalfOfDropdown: shouldShowOnBehalfOfDropdown,\r\n showDateAsOfSticky: showDateAsOfSticky,\r\n username: cookiesFactory.userNameWithoutDomainPrefix(),\r\n emptyCart: emptyCart,\r\n visible: cookiesFactory.isInternalUser(),\r\n logout: logout,\r\n }\r\n\r\n ko.applyBindings(vm, jQuerySelectorResult[0]);\r\n\r\n return {}\r\n\r\n});\r\n","/*eslint-disable*/\r\ndefine([\r\n \"globals\",\r\n \"underscore\",\r\n \"knockout\",\r\n \"jquery\",\r\n \"postal\",\r\n \"cookies-factory\",\r\n \"cart-count\",\r\n \"js-cookie\",\r\n \"../../../react/site-bdc/header-modal/index\",\r\n \"ko-autocomplete\",\r\n \"colorbox\"\r\n], function(\r\n globals,\r\n _,\r\n ko,\r\n $,\r\n postal,\r\n cookiesFactory,\r\n CartCount,\r\n jsCookie,\r\n AppModal,\r\n) {\r\n \"use strict\";\r\n\r\n AppModal.default();\r\n\r\n return function HeaderViewModel() {\r\n var self = this;\r\n var cartCount = new CartCount();\r\n\r\n var useDelorean = globals.siteId === 3;\r\n self.searchValue = ko.observable();\r\n self.cartItemCount = ko.observable(0);\r\n self.channel = postal.channel(\"cart\");\r\n\r\n self.name = ko.computed(function() {\r\n if (cookiesFactory.userName() === undefined) {\r\n return \"\";\r\n }\r\n return cookiesFactory.userName();\r\n });\r\n\r\n self.showName = ko.computed(function() {\r\n return self.name() !== \"\";\r\n });\r\n\r\n self.internalName = ko.computed(function() {\r\n if (cookiesFactory.userName() === undefined) {\r\n return \"\";\r\n }\r\n return \"logged in as: \" + cookiesFactory.userName();\r\n });\r\n\r\n self.dateAsOf = ko.computed(function() {\r\n if (cookiesFactory.dateAsOf() === undefined) {\r\n return \"\";\r\n }\r\n return cookiesFactory.dateAsOf();\r\n });\r\n\r\n self.showTime = ko.computed(function() {\r\n return self.dateAsOf() !== \"\";\r\n });\r\n\r\n self.showSurefit = function(viewModel, event) {\r\n event.preventDefault();\r\n $.colorbox({\r\n href: event.target.href,\r\n transition: \"none\",\r\n width: \"600px\",\r\n maxWidth: \"95%\",\r\n maxHeight: \"95%\"\r\n });\r\n };\r\n\r\n self.dispatchLoginStatusChangeEvent = function(isLoggedIn) {\r\n const loginStatusChangeEvent = new CustomEvent(\"loginStatusChange\", {\r\n detail: {\r\n taskName: \"loginStatusChange\",\r\n isLoggedIn\r\n }\r\n });\r\n\r\n document.dispatchEvent(loginStatusChangeEvent);\r\n };\r\n\r\n self.getAuthStatus = function(isAuthenticated) {\r\n if (jsCookie.get(\"internalUser\")) {\r\n return \"rep\";\r\n } else if (isAuthenticated) {\r\n return \"consumer\";\r\n }\r\n return \"guest\";\r\n };\r\n\r\n self.handleAuthStatus = function(authData) {\r\n var cartCountObject = $(\"[data-cart-count]\");\r\n cartCount.updateCartCount(authData.ItemCount, cartCountObject);\r\n self.cartItemCount(authData.ItemCount);\r\n cartCountObject.attr(\"data-cart-count\", authData.ItemCount);\r\n self.dispatchLoginStatusChangeEvent(authData.IsAuthenticated);\r\n var body = $(document.body);\r\n if (authData.HasMandiMeasureLineItem) {\r\n body.attr(\r\n \"data-has-mandi-measure-line-item\",\r\n authData.HasMandiMeasureLineItem\r\n );\r\n } else {\r\n body.removeAttr(\"data-has-mandi-measure-line-item\");\r\n }\r\n\r\n if (authData.IsAuthenticated) {\r\n body.attr(\"data-is-authenticated\", authData.IsAuthenticated);\r\n } else {\r\n body.removeAttr(\"data-is-authenticated\");\r\n }\r\n\r\n $(document).trigger({\r\n type: \"cartUpdated\"\r\n });\r\n };\r\n\r\n self.updateHeaderWithLoginStatus = function() {\r\n if (window.cartwithloginstatus) {\r\n self.handleAuthStatus(window.cartwithloginstatus);\r\n } else {\r\n $.ajax(globals.globalPaths.getCartWithLoginStatus)\r\n .done(function(response) {\r\n self.handleAuthStatus(response);\r\n })\r\n .fail(function() {\r\n self.cartItemCount(0);\r\n $(document).trigger({\r\n type: \"cartUpdated\"\r\n });\r\n });\r\n }\r\n };\r\n\r\n self.channel.subscribe(\"cart.list.updated\", function() {\r\n self.updateHeaderWithLoginStatus();\r\n });\r\n\r\n document.addEventListener(\"cart.list.updated\", function() {\r\n self.updateHeaderWithLoginStatus();\r\n });\r\n\r\n self.channel.subscribe(\"new.cart\", function() {\r\n self.updateHeaderWithLoginStatus();\r\n });\r\n self.updateHeaderWithLoginStatus();\r\n\r\n $(\"#gcc-header-topnav-myaccount-sign-in\").click(e => {\r\n const loginEvent = new CustomEvent(\"loginRequested\", {\r\n detail: {\r\n taskName: \"open modal\"\r\n }\r\n });\r\n\r\n var blockSignIn = window.location.href,\r\n preCheckout = \"/Ordering/Checkout/Signin\";\r\n if (blockSignIn.indexOf(preCheckout) === -1) {\r\n document.dispatchEvent(loginEvent);\r\n }\r\n });\r\n\r\n $(\"#gcc-header-topnav-create-estimate\").click(e => {\r\n const estimateModalEvent = new CustomEvent(\"createEstimate\", {\r\n detail: {\r\n taskName: \"open modal\"\r\n }\r\n });\r\n\r\n document.dispatchEvent(estimateModalEvent);\r\n });\r\n\r\n $(\"#exitEstimateModeLink\").click(e => {\r\n const exitEstimateModalEvent = new CustomEvent(\"exitEstimate\", {\r\n detail: {\r\n taskName: \"open modal\"\r\n }\r\n });\r\n\r\n document.dispatchEvent(exitEstimateModalEvent);\r\n });\r\n };\r\n});\r\n","define([\r\n \"globals\",\r\n \"jquery\",\r\n \"knockout\",\r\n \"underscore\",\r\n \"autocomplete\",\r\n \"typeahead.js\",],\r\nfunction(globals, $, ko, _, Autocomplete) {\r\n\r\n \"use strict\";\r\n\r\n ko.bindingHandlers.koAutocomplete = {\r\n\r\n init: function(element, valueAccessor) {\r\n\r\n var siteId = globals !== undefined ? globals.siteId : window.siteId;\r\n var isMobile = globals.ssm.states[0].active;\r\n if (siteId !== 11) {\r\n\r\n var autocomplete = new Autocomplete();\r\n $.when(autocomplete.getData()).done(function(autoCompleteData) {\r\n\r\n var jsonData = JSON.parse(autoCompleteData);\r\n\r\n var prefix = (globals.siteId === 1) ? \"ab\" : \"bdc\";\r\n $(element).typeahead({\r\n hint: true,\r\n highlight: true,\r\n minLength: 1,\r\n classNames: {\r\n wrapper: prefix + \"-typeahead-wrapper\",\r\n input: prefix + \"-typeahead-input\",\r\n hint: prefix + \"-typeahead-hint\",\r\n menu: prefix + \"-typeahead-menu\",\r\n dataset: prefix + \"-typeahead-dataset\",\r\n suggestion: prefix + \"-typeahead-suggestion\",\r\n selectable: prefix + \"-typeahead-selectable\",\r\n empty: prefix + \"-typeahead-empty\",\r\n open: prefix + \"-typeahead-open\",\r\n cursor: prefix + \"-typeahead-cursor\",\r\n highlight: prefix + \"-typeahead-highlight\"\r\n }\r\n },\r\n {\r\n name: \"label\",\r\n displayKey: \"label\",\r\n source: autocomplete.substringMatcher(jsonData),\r\n limit: 6,\r\n templates: {\r\n suggestion: function (queryItem) {\r\n\r\n if ($(\".bdc-captive-header-autocomplete\").length > 0) {\r\n return \"<div><a href='#'>\" + queryItem.label + \"</a></div>\";\r\n }\r\n else {\r\n return \"<div>\" + queryItem.label + \"</div>\";\r\n }\r\n }\r\n }\r\n });\r\n\r\n // Goes to URL when item is selected\r\n $(\"input\").on(\"typeahead:selected\", function(x) {\r\n var clickedOptionValue = this.value;\r\n\r\n var objFound = _.find(jsonData, function(obj) {\r\n return obj.label === clickedOptionValue;\r\n });\r\n if ($(\".bdc-captive-header-autocomplete\").length > 0) {\r\n search();\r\n }\r\n else {\r\n if (objFound.url.indexOf('?') != -1) {\r\n objFound.url += \"&searchType=redirect\";\r\n } else {\r\n objFound.url += \"?searchType=redirect\";\r\n }\r\n window.location.href = objFound.url;\r\n }\r\n });\r\n\r\n // Scroll page to Inline Search when mobile menu is open\r\n if (isMobile) {\r\n $(\"#gcc-inline-search\").focus(function() {\r\n if ($(this).offset().top > 120) {\r\n $(\"html, body\").animate({\r\n scrollTop: $(this).offset().top - 10\r\n }, 500);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n});\r\n","define([\r\n \"jquery\",\r\n \"globals\"],\r\nfunction($, globals) {\r\n\r\n \"use strict\";\r\n\r\n var Autocomplete = function() {\r\n\r\n var substringMatcher = function(strs) {\r\n return function findMatches(q, cb) {\r\n var matches, substrRegex;\r\n\r\n // an array that will be populated with substring matches\r\n matches = [];\r\n\r\n // regex used to determine if a string contains the substring `q`\r\n substrRegex = new RegExp(q, \"i\");\r\n\r\n // iterate through the pool of strings and for any string that\r\n // contains the substring `q`, add it to the `matches` array\r\n $.each(strs, function (i, str) {\r\n if (substrRegex.test(str.label)) {\r\n matches.push(str);\r\n }\r\n });\r\n\r\n cb(matches);\r\n };\r\n };\r\n\r\n var getData = function() {\r\n return $.ajax(\"/infopage/_autocomplete.js\").done(function(data) {\r\n return JSON.parse(data);\r\n });\r\n }\r\n\r\n return {\r\n getData: getData,\r\n substringMatcher: substringMatcher\r\n }\r\n\r\n };\r\n\r\n return Autocomplete;\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 { combineReducers } from 'redux';\r\nimport { reducer as formReducer } from 'redux-form';\r\nimport previousProducts from '../../modules/previous-products/previousProductsReducer';\r\nimport login from '../../login-register/login/LoginReducer';\r\nimport register from '../../login-register/register/reducer';\r\nimport modal from '../../login-register/modal/reducer';\r\nimport app from '../../login-register/app/reducer';\r\nimport resetPassword from '../../login-register/reset-password/ResetPasswordReducer';\r\nimport estimateModal from '../../createestimate/estimateReducer';\r\n\r\nconst reducers = combineReducers({\r\n\r\n previousProducts,\r\n login,\r\n register,\r\n app,\r\n form: formReducer,\r\n modal,\r\n resetPassword,\r\n estimateModal,\r\n});\r\n\r\nexport default reducers;\r\n","\r\nconst defaultState = {\r\n isOpen: false,\r\n event: null,\r\n};\r\n\r\n\r\nconst estimateModal = (state = defaultState, action) => {\r\n switch (action.type) {\r\n case 'OPEN_ESTIMATE_MODAL':\r\n return Object.assign({}, state, { isOpen: true, event: action.event });\r\n case 'CLOSE_ESTIMATE_MODAL':\r\n return Object.assign({}, state, { isOpen: false });\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default estimateModal;\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","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\n\r\nimport configureStore from '../store/configureStore';\r\n\r\nexport default function boostrapReact() {\r\n const mountSite = document.getElementById('gcc-header-react-boot-strap');\r\n if (mountSite) {\r\n const store = configureStore(reducers);\r\n\r\n render(\r\n <Provider store={store}>\r\n <App />\r\n </Provider>,\r\n mountSite,\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport LoginModal from '../../login-register/modal/AppModalContainer';\r\nimport EstimateModal from '../../createestimate/EstimateModalContainer';\r\n\r\nconst App = () => (\r\n <div>\r\n <LoginModal />\r\n <EstimateModal />\r\n </div>\r\n);\r\n\r\nexport default App;\r\n","import { connect } from 'react-redux';\r\nimport AppModal from './AppModal';\r\nimport { closeModal, openModal } from './modalActions';\r\nimport { setLoginStatus } from '../login/LogInActions';\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n isOpen: state.modal.isOpen,\r\n resetPasswordStep: state.resetPassword.step,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n onCloseModal: () => dispatch(closeModal()),\r\n openModal: e => dispatch(openModal(e)),\r\n setLoginStatus: isLoggedIn => dispatch(setLoginStatus(isLoggedIn)),\r\n };\r\n}\r\n\r\n\r\nconst AppModalContainer = connect(mapStateToProps, mapDispatchToProps)(AppModal);\r\nexport default AppModalContainer;\r\n","/* eslint-disable no-restricted-globals */\r\nimport Modal from 'react-modal';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\nimport { HashRouter, Route } from 'react-router-dom';\r\nimport SignInSignUpContainer from '../app/SignInSignUpContainer';\r\nimport { changeDefaultTab } from './modalActions';\r\nimport ForgotYourPasswordContainer from '../reset-password/ForgotYourPasswordContainer';\r\nimport CheckYourInBoxContainer from '../reset-password/CheckYourInBoxContainer';\r\nimport { registrationSuccess } from '../register/RegisterActions';\r\n\r\nclass AppModal extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.customer = {};\r\n }\r\n\r\n componentDidMount() {\r\n document.addEventListener('loginRequested', (e) => {\r\n this.customer = (e.detail && e.detail.customer) || {};\r\n this.props.openModal(e);\r\n window.location.hash = 'sign-in';\r\n });\r\n\r\n document.addEventListener('loginClose', () => {\r\n this.props.onCloseModal();\r\n });\r\n\r\n document.addEventListener('setLoginStatus', (e) => {\r\n this.props.setLoginStatus(e.detail.isLoggedIn);\r\n });\r\n\r\n document.addEventListener('signInSignUpModalRequested', (e) => {\r\n if (e.detail.selectedTab === 'signIn') {\r\n this.props.changeDefaultTab('signIn');\r\n } else if (e.detail.selectedTab === 'signUp') {\r\n this.props.changeDefaultTab('signUp');\r\n }\r\n\r\n this.props.openModal(e);\r\n\r\n window.location.hash = 'sign-in';\r\n });\r\n }\r\n\r\n static onSigninSuccess() {\r\n document.body.setAttribute('data-is-authenticated', true);\r\n if (window.location.href.toLowerCase().endsWith('orderstatus')) {\r\n window.location.href = `${window.location.origin}/myaccount/dashboard`;\r\n return;\r\n }\r\n if (location.hash) {\r\n window.location.href = window.location.href.replace(location.hash, '');\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <Modal\r\n isOpen={this.props.isOpen}\r\n ariaHideApp={false}\r\n contentLabel=\"Modal\"\r\n onRequestClose={this.props.onCloseModal}\r\n closeTimeoutMS={200}\r\n className=\"gcc-modal external-close\"\r\n overlayClassName=\"gcc-modal-overlay\"\r\n style={{\r\n content: {\r\n width: 'calc(100% - 20px)',\r\n maxWidth: 315,\r\n },\r\n }}\r\n >\r\n <i\r\n role=\"button\"\r\n tabIndex={0}\r\n className=\"material-icons white pointer modal-close absolute right-0 top--2 z-max f2 f1-m nt2 nt3-m nr2\"\r\n onClick={this.props.onCloseModal}\r\n >\r\n close\r\n </i>\r\n <HashRouter hashType=\"noslash\">\r\n <div>\r\n <Route\r\n path=\"/sign-in\"\r\n render={() => (\r\n <SignInSignUpContainer\r\n forgotPasswordPath=\"reset\"\r\n customer={this.customer}\r\n defaultTab={this.props.defaultTab}\r\n onSigninSuccess={() => AppModal.onSigninSuccess()}\r\n onRegistrationSuccess={(dispatch) => {\r\n dispatch(registrationSuccess());\r\n AppModal.onSigninSuccess();\r\n }}\r\n />\r\n )}\r\n />\r\n <Route path=\"/reset\" render={() => <ForgotYourPasswordContainer />} />\r\n <Route path=\"/check\" component={CheckYourInBoxContainer} />\r\n </div>\r\n </HashRouter>\r\n </Modal>\r\n );\r\n }\r\n}\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n defaultTab: state.modal.defaultTab,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n changeDefaultTab: newDefaultTab => dispatch(changeDefaultTab(newDefaultTab)),\r\n };\r\n}\r\n\r\nAppModal.propTypes = {\r\n isOpen: PropTypes.bool.isRequired,\r\n onCloseModal: PropTypes.func.isRequired,\r\n openModal: PropTypes.func.isRequired,\r\n setLoginStatus: PropTypes.func.isRequired,\r\n changeDefaultTab: PropTypes.func.isRequired,\r\n defaultTab: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(AppModal);\r\n","import { connect } from 'react-redux';\r\nimport EstimateModal from './EstimateModal';\r\nimport { closeEstimateModal, openEstimateModal } from './estimateModalActions';\r\n\r\nfunction mapStateToProps(state) {\r\n return {\r\n isOpen: state.estimateModal.isOpen,\r\n };\r\n}\r\n\r\nfunction mapDispatchToProps(dispatch) {\r\n return {\r\n onCloseEstimateModal: () => dispatch(closeEstimateModal()),\r\n openEstimateModal: e => dispatch(openEstimateModal(e)),\r\n };\r\n}\r\n\r\n\r\nconst EstimateModalContainer = connect(mapStateToProps, mapDispatchToProps)(EstimateModal);\r\nexport default EstimateModalContainer;\r\n","import Modal from 'react-modal';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport cookiesFactory from '../../../base/cookies-factory';\r\nimport { howItWorksEstimatesModalLoaded } from '../../estimateBuilder/analytics/analyticsFunctions';\r\n\r\nclass EstimateModal extends React.Component {\r\n componentDidMount() {\r\n document.addEventListener('createEstimate', (e) => {\r\n howItWorksEstimatesModalLoaded();\r\n\r\n if (cookiesFactory.isInternalUser()) {\r\n window.location = '/estimatebuilder/new';\r\n } else {\r\n this.props.openEstimateModal(e);\r\n }\r\n });\r\n }\r\n\r\n styles =\r\n {\r\n estimateModalContent: {\r\n padding: 20,\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n width: 1025,\r\n },\r\n\r\n estimateModalClose: {\r\n float: 'right',\r\n textDecoration: 'none',\r\n cursor: 'pointer',\r\n },\r\n\r\n estimateModalTitleAndSteps: {\r\n paddingTop: 50,\r\n paddingBottom: 50,\r\n },\r\n\r\n estimateModalTitle: {\r\n height: 38,\r\n width: 300,\r\n color: '#333333',\r\n fontFamily: 'Helvetica Neue, Helvetica, Arial, sans-serif',\r\n fontSize: 32,\r\n fontWeight: 300,\r\n lineHeight: 39,\r\n textAlign: 'center',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n },\r\n\r\n estimateModalLine: {\r\n boxSizing: 'border-box',\r\n height: '0.2%',\r\n width: '70%',\r\n border: '1px solid #CCCCCC',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n marginTop: 30,\r\n marginBottom: 30,\r\n },\r\n\r\n estimateModalContentStepContainer: {\r\n display: 'block',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n textAlign: 'center',\r\n paddingBottom: 50,\r\n },\r\n\r\n estimateModalContentStep: {\r\n display: 'inline-block',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n padding: 10,\r\n },\r\n\r\n estimateModalContentStepImage: {\r\n display: 'block',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n verticalAlign: 'top',\r\n height: 62,\r\n },\r\n\r\n estimateModalContentStepName: {\r\n color: '#405FAF',\r\n fontFamily: 'Helvetica Neue\", Helvetica, Arial, sans-serif',\r\n fontSize: 18,\r\n textAlign: 'center',\r\n paddingTop: 20,\r\n margin: 5,\r\n },\r\n\r\n estimateModalContentStepDescription: {\r\n textAlign: 'center',\r\n fontFamily: 'Helvetica Neue, Helvetica, Arial, sans-serif',\r\n fontSize: 14,\r\n margin: 0,\r\n },\r\n\r\n estimateModalBtnGetStarted: {\r\n display: 'block',\r\n height: 42,\r\n width: 263,\r\n borderRadius: 4,\r\n backgroundColor: '#405FAF',\r\n color: 'white',\r\n fontFamily: 'Helvetica Neue, Helvetica, Arial, sans-serif',\r\n fontSize: 16,\r\n fontWeight: 500,\r\n lineHeight: 19,\r\n textAlign: 'center',\r\n textDecoration: 'none',\r\n cursor: 'pointer',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n paddingTop: 10,\r\n },\r\n }\r\n\r\n render() {\r\n return (\r\n <div>\r\n <Modal\r\n isOpen={this.props.isOpen}\r\n ariaHideApp={false}\r\n contentLabel=\"Modal\"\r\n onRequestClose={this.props.onCloseEstimateModal}\r\n closeTimeoutMS={200}\r\n className=\"gcc-modal\"\r\n overlayClassName=\"gcc-modal-overlay\"\r\n style={{\r\n content: {\r\n height: 500,\r\n width: 1025,\r\n },\r\n }}\r\n >\r\n <div className=\"estimateModalContent\" style={this.styles.estimateModalContent}>\r\n <div id=\"estimateModalClose\" className=\"estimateModalClose\" style={this.styles.estimateModalClose} onClick={this.props.onCloseEstimateModal} role=\"button\" tabIndex={0}>\r\n <img src=\"/Content/Images/Blinds.com/icon_close_x.svg\" alt=\"\" />\r\n </div>\r\n <div className=\"estimateModalTitleAndSteps\" style={this.styles.estimateModalTitleAndSteps}>\r\n <div className=\"estimateModalTitle\" style={this.styles.estimateModalTitle}><p>How it Works</p></div>\r\n <div className=\"estimateModalLine\" style={this.styles.estimateModalLine} />\r\n <div className=\"estimateModalContentStepContainer\" style={this.styles.estimateModalContentStepContainer}>\r\n <div className=\"estimateModalContentStep\" style={this.styles.estimateModalContentStep}>\r\n <img className=\"estimateModalContentStepImage\" style={this.styles.estimateModalContentStepImage} src=\"/Content/Images/Blinds.com/Icon_Window.svg\" alt=\"\" />\r\n <p className=\"estimateModalContentStepName\" style={this.styles.estimateModalContentStepName}>Shop</p>\r\n <p className=\"estimateModalContentStepDescription\" style={this.styles.estimateModalContentStepDescription}>Browse our selection to find just\r\n <br /> what you're looking for.\r\n </p>\r\n </div>\r\n <div className=\"estimateModalContentStep\" style={this.styles.estimateModalContentStep}>\r\n <img className=\"estimateModalContentStepImage\" style={this.styles.estimateModalContentStepImage} src=\"/Content/Images/Blinds.com/Icon_MeasureTape.svg\" alt=\"\" />\r\n <p className=\"estimateModalContentStepName\" style={this.styles.estimateModalContentStepName}>Measure</p>\r\n <p className=\"estimateModalContentStepDescription\" style={this.styles.estimateModalContentStepDescription}>DIY measure your windows or\r\n <br />book a pro-measure appointment.\r\n </p>\r\n </div>\r\n <div className=\"estimateModalContentStep\" style={this.styles.estimateModalContentStep}>\r\n <img className=\"estimateModalContentStepImage\" style={this.styles.estimateModalContentStepImage} src=\"/Content/Images/Blinds.com/Icon_Truck.svg\" alt=\"\" />\r\n <p className=\"estimateModalContentStepName\" style={this.styles.estimateModalContentStepName}>Order</p>\r\n <p className=\"estimateModalContentStepDescription\" style={this.styles.estimateModalContentStepDescription}>Customize and order the perfect fit\r\n <br />for your window coverings.\r\n </p>\r\n </div>\r\n <div className=\"estimateModalContentStep\" style={this.styles.estimateModalContentStep}>\r\n <img className=\"estimateModalContentStepImage\" style={this.styles.estimateModalContentStepImage} src=\"/Content/Images/Blinds.com/Icon_Wrench.svg\" alt=\"\" />\r\n <p className=\"estimateModalContentStepName\" style={this.styles.estimateModalContentStepName}>Install</p>\r\n <p className=\"estimateModalContentStepDescription\" style={this.styles.estimateModalContentStepDescription}>DIY install or book an installation\r\n <br />appointment once products arrive.\r\n </p>\r\n </div>\r\n </div>\r\n <div>\r\n <a className=\"estimateModalBtnGetStarted\" style={this.styles.estimateModalBtnGetStarted} onClick={this.props.onCloseEstimateModal} href=\"/estimatebuilder/new\">\r\n <p>Get Started</p>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </Modal>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nEstimateModal.propTypes = {\r\n isOpen: PropTypes.bool.isRequired,\r\n onCloseEstimateModal: PropTypes.func.isRequired,\r\n openEstimateModal: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default EstimateModal;\r\n","/* eslint-disable no-restricted-globals */\r\nfunction openEstimateModal(e) {\r\n return {\r\n type: 'OPEN_ESTIMATE_MODAL',\r\n event: e,\r\n };\r\n}\r\n\r\nfunction closeEstimateModal() {\r\n history.pushState('', document.title, window.location.pathname + window.location.search);\r\n return {\r\n type: 'CLOSE_ESTIMATE_MODAL',\r\n };\r\n}\r\nexport { closeEstimateModal, openEstimateModal };\r\n"],"sourceRoot":""}