{"version":3,"sources":["store/initialState.js","store/guarantors/actions.js","store/applicationError/actions.js","store/application/actions.js","store/errors/actions.js","store/required/actions.js","store/results/actions.js","store/questions/actions.js","store/loading/actions.js","store/modals/actions.js","store/warnings/actions.js","store/loanData/actions.js","store/loanData/reducers.js","store/estimator/actions.js","store/viewport/actions.js","store/speakWithRep/actions.js","store/reducers.js","store/applicationError/reducers.js","store/application/reducers.js","store/questions/reducers.js","store/guarantors/reducers.js","store/errors/reducers.js","store/required/reducers.js","store/results/reducers.js","store/loading/reducers.js","store/modals/reducers.js","store/warnings/reducers.js","store/estimator/reducers.js","store/viewport/reducers.js","store/speakWithRep/reducers.js","store/index.js","APIClient/index.js","APIClient/config/index.js","APIClient/config/routes/index.js","common/data/inputTypes.js","common/utils/estimator.js","common/data/loanTypes.js","APIClient/estimator.js","APIClient/questions.js","common/hooks/previous.js","app/components/main/Styles.js","common/components/input/Styles.js","common/components/input/CheckboxInput.js","common/components/Required.js","common/utils/conditionals.js","common/utils/validation/validations.js","common/data/minValues.js","common/utils/validation/index.js","common/utils/email/index.js","APIClient/email.js","common/hooks/estimator.js","common/data/estimator/actions.js","common/utils/questions.js","app/components/main/ShareEstimateButton.js","app/components/main/ShareEstimate.js","app/components/main/Footer.js","app/components/results/Styles.js","app/components/results/Progress.js","common/utils/view.js","app/components/results/Detail.js","app/components/results/Footer.js","app/components/results/NotSubmitted.js","app/components/results/RentalResults.js","app/components/results/ResultsSection.js","app/components/results/ConstructionResults.js","app/components/results/Submitted.js","app/components/results/SubmittedMobile.js","app/components/results/index.js","common/components/loading/Styles.js","common/components/loading/index.js","common/components/modals/error/Styles.js","common/components/modals/error/index.js","common/components/modals/error/static.js","common/components/modals/download/Styles.js","common/components/modals/download/index.js","common/components/modals/shared/Styles.js","common/components/modals/shared/index.js","common/components/modals/previous/Styles.js","common/components/modals/previous/index.js","app/components/main/index.js","common/hooks/initialize.js","app/components/download/index.js","app/components/construction/Styles.js","common/components/Tooltip.js","common/components/input/DateInput.js","common/components/input/PercentInput.js","common/components/input/NumberInput.js","common/components/input/MoneyInput.js","common/components/input/TextInput.js","common/components/input/EmailInput.js","common/components/input/PhoneInput.js","common/data/construction/lists.js","common/data/rental/lists.js","common/components/input/SelectInput.js","common/components/InputComponent.js","common/components/ErrorText.js","common/components/RequiredText.js","common/components/LabelRow.js","common/components/QuestionRow.js","common/components/Section.js","common/utils/guarantors.js","app/components/construction/guarantors/MultiQuestionRow.js","app/components/construction/guarantors/index.js","common/components/HasErrors.js","common/components/QuestionTable.js","common/hooks/guarantors.js","common/hooks/questions.js","app/components/construction/index.js","app/components/rental/Styles.js","app/components/rental/index.js","AppInsights.js","app/routes/index.js","index.js"],"names":["modals","download","status","url","previousEstimate","estimateId","loanType","shared","message","applicationError","static","loading","loanData","construction","acknowledged","rental","stub","resetCounter","loanQuestions","application","valid","guarantors","errors","required","initial","current","results","submitted","data","submitting","collapsed","warnings","estimator","ready","file","viewport","width","scrollFromTop","speakWithRepresentative","flags","addGuarantor","id","dispatch","type","removeGuarantor","setError","initialState","setStaticError","addError","question","removeError","addToRequired","removeFromRequired","setSubmitted","setResultsData","setResultsLoading","setResultsPaneCollapsed","setConstructionQuestions","questions","setRentalQuestions","setQuestionSeen","setLoading","setDownloadModal","setPreviousEstimateModal","setPreviousEstimateId","setPreviousEstimateLoanType","setSharedModal","addDownloadWarning","changeLoanType","setLoanData","resetLoanDataFields","fields","initializeGuarantorFields","state","action","_state","actions","forEach","field","setConstructionFileInfo","info","setRentalFileInfo","setEstimatorReady","setEstimatorFile","setViewportWidth","setScrollFromTop","fromTop","combineReducers","initalState","loanDataReducer","index","findIndex","q","seen","add","remove","el","splice","push","flag","f","name","store","createStore","rootReducer","composeWithDevTools","applyMiddleware","thunk","APIClient","instance","axios","create","baseURL","process","method","headers","interceptors","request","use","config","a","response","error","Promise","reject","_APIClient","DRIVE_ID","CREATE_COPY_OF_SPREADSHEET","itemId","reduxStore","subscribe","composeDestinationData","getState","destinations","initialCellNumber","destination","column","substring","value","inputTypes","parseFloat","Object","keys","length","cellNumberNoColumn","key","cellRange","getCellRange","size","getRequiredRowSize","normalized","normalizeDataToFitRange","toApi","r","row","v","toString","filter","d","range","max","min","sort","cellColumn","cell","substr","val","parseInt","noColon","split","_data","i","howManyNeeded","j","isEmptyRow","_row","removeEmptyRowsFromResults","_results","composeEstimatorResultsData","x","createCopyOfMasterEstimate","createCopyOfSpreadsheet","req","fileName","estimatorUpdateDisabled","sendDataToEstimator","values","_values","post","session","persistChanges","then","catch","err","obj","uuidv4","_name","parentReference","driveId","findSpreadsheetByName","get","FIND_SPREADSHEET_BY_NAME","getEstimatorResults","GET_ESTIMATOR_RESULTS","downloadEstimate","DOWNLOAD_ESTIMATE","responseType","getConstructionQuestions","getRentalQuestions","getMasterQuestionsByLoanType","GET_MASTER_QUESTIONS_BY_LOAN_TYPE","getQuestionsFromSpreadsheet","GET_QUESTIONS_FROM_SPREADSHEET","usePreviousEstimate","useSelector","useDispatch","handleFind","result","masterQuestions","isEqual","findAndDownloadEstimate","spreadsheet","performEstimateDownload","FileDownload","styles","theme","root","fullWidthContainer","margin","fullWidthContainerWithPane","flexSpaceBetween","display","flexDirection","justifyContent","header","lineHeight","marginBottom","padding","spacing","textAlign","headerWithSubmitted","maxWidth","marginTop","headerWithCollapsed","breakpoints","up","headerText","fontSize","fontWeight","color","covidWarning","backgroundColor","covidWarningWithCollapsed","covidWarningText","footer","alignItems","footerMobile","footerItem","footerText","sectionHeader","letterSpacing","border","sectionQuestionText","paddingRight","down","sectionQuestionTextChild","textJustify","paddingLeft","navBar","tableWithCollapsed","tableMobile","input","labelText","paddingTop","labelTextEnd","paddingBottom","tableCellText","flexWrap","tableCellField","tableCellStacked","tableRow","tableRowMobile","tableHeader","multiQuestionCell","multiQuestionCellMobile","cellStack","quarterWidth","addGuarantorBtn","textDecoration","borderColor","whiteSpace","verticalAlign","borderRadius","minWidth","shareEstimateBtn","shareEstimateContainer","shareEstimateBtnDisabled","removeGuarantorBtn","userSelect","marginLeft","requiredText","errorText","errorIcon","errorRow","loadingBtnContainer","textInput","height","backgroundClip","transition","thirdWidth","innerFooterContainer","withStyles","Styles","classes","checked","onChange","label","sharedRow","disabled","FormGroup","FormControlLabel","control","Checkbox","e","persist","target","inputProps","className","Typography","List","dense","map","ListItem","ListItemIcon","Error","ListItemText","primary","compareConditional","parent","conditional","conditionalComparison","includes","compareDate","moment","subtract","isValidEmail","email","test","isValidValue","minValues","validateValueByType","find","generateEmailListFromLoanData","sendUserEstimateEmail","emailOptions","useEstimator","handleEstimatorUpdate","_loanData","userResponse","bfiResponse","currentLoanQuestions","getConcerns","concerns","infoPopups","slice","rows","answers","_a","loanTypes","emails","loanId","resultId","estimates","getSections","sections","s","section","isHidden","guarNumber","undefined","child","findParent","isFirstSubItem","getQuestionNumber","subItem","findQuestionsOnSameRow","getQuestionsWithLabel","_question","composeQuestionsFromApi","_questions","order","list","listName","listValues","helperText","warning","warningSpecific","warningConditional","warningConditionalComparison","parentQuestion","options","onClick","GetButton","Button","CircularProgress","variant","resultsPane","right","top","resultsPaneSticky","resultsPaneMobile","position","bottom","left","zIndex","alignContent","resultsPaneCollapsed","resultsPaneCollapsedMobile","modalColumn","progress","progressUpdating","resultsPaneContainer","resultsPaneContainerMobile","resultsPaneProgressFooterContainerMobile","resultsPaneContainerCollapsed","resultsPaneContainerCollapsedMobile","resultsPaneLink","cursor","resultsPaneLoading","resultsPaneLoadingMobile","resultsLinksContainer","resultsLinksContainerCollapsed","collapsedResultsSections","resultsSectionsMobile","estimateDetailProgress","estimateDetail","paddintBottom","estimateDetailHeader","estimateDetailItem","progressContainer","transform","expandArrow","animation","transitions","easing","easeInOut","animationIterationCount","animationDirection","concernText","resultsText","visibleInitial","visibleCurrent","getOnlyVisibleValidQuestions","Box","component","smallViewport","window","innerWidth","Link","preventDefault","NotSubmitted","props","Detail","concern","IconButton","k","_formatter","Intl","NumberFormat","style","currency","maximumFractionDigits","isNaN","format","resultsSections","o","main","mainRow","content","marginRight","open","isOpen","contentLabel","errorButton","handleClose","location","reload","downloadIcon","downloadWarningArea","warningIcon","noButton","yesButton","downloadInfoArea","downloadMessage","warningMessage","w","Warning","okButton","searchIcon","findButton","previousRadioGroup","Search","TextField","placeholder","FormControl","FormLabel","RadioGroup","aria-label","Radio","validate","children","resizeListener","scrollListener","scrollY","useEffect","Modal","setAppElement","addEventListener","removeEventListener","useInitialization","Grid","container","item","xs","direction","justify","md","DownloadEstimate","history","match","params","tabHeaderText","HtmlTooltip","tooltip","typography","pxToRem","Tooltip","CommonTooltip","title","Fragment","aria-describedby","allowNegative","decimalSeparator","decimalScale","onValueChange","thousandSeparator","suffix","_value","prefix","mask","aria-labelledby","formattedValue","YesNo","States","Population","Affordability","whichList","constructionLists","rentalLists","interval","timeElapsed","InputComponent","useState","usingLocalValue","setUsingLocalValue","localValue","setLocalValue","clearInterval","textInputOptions","setInterval","selectInputOptions","isError","hasBeenSeen","getInputTypeValidationMessage","questionNumber","TableRow","TableCell","labeledQuestionIndex","hidden","setHidden","setupQuestion","useCallback","_hidden","TableBody","findAvailableGuarantorId","available","g","getGuarantorDataFields","firstId","lastId","_ids","showRemoveButton","guarantorQuestions","setGuarantorQuestions","setupGuarantorQuestions","_g","isFirstQuestionInRow","isFirstQuestionInLabel","findQuestionsInLabel","MultiQuestionRow","colSpan","onSubmit","Table","Section","useQuestionInitializer","createCopyOfMaster","pollForCreatedSpreadsheet","pollRequest","setTimeout","useEstimatorFileService","initializeFirstGuarantor","initializeFirstGuarantorData","useGuarantors","fetchQuestions","opt","set","initializeQuestions","browserHistory","createBrowserHistory","basename","reactPlugin","ReactPlugin","ApplicationInsights","instrumentationKey","extensions","extensionConfig","identifier","loadAppInsights","withAITracking","exact","path","render","createMuiTheme","lg","start","upTo","customBreakpointSizes","fontFamily","ReactDOM","StrictMode","estimatorStore","document","getElementById"],"mappings":"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","file":"static/js/main.ca1b5fda.chunk.js","sourcesContent":["export default {\n modals: {\n download: { status: false, url: \"\" },\n previousEstimate: {\n status: false,\n estimateId: \"\",\n loanType: \"construction\",\n },\n shared: {\n status: false,\n message: \"You have submitted the form\"\n }\n },\n applicationError: {\n status: false,\n message: \"There was an error!\",\n static: {\n status: false,\n message: \"The application had an error, please try again\",\n },\n },\n loading: {\n status: false,\n message: \"Loading...\",\n },\n loanType: \"construction\",\n loanData: {\n construction: { acknowledged: false },\n rental: { acknowledged: false },\n stub: false,\n resetCounter: 1,\n },\n loanQuestions: { construction: [], rental: [] },\n application: {\n valid: false,\n },\n guarantors: [],\n errors: [],\n required: {\n construction: {\n initial: [],\n current: [],\n },\n rental: {\n initial: [],\n current: [],\n },\n },\n results: {\n construction: { submitted: false, data: {} },\n rental: { submitted: false, data: {} },\n submitted: false,\n submitting: false, //submitting to API or not\n loading: false,\n collapsed: false,\n },\n warnings: {\n download: [],\n },\n estimator: {\n construction: {\n //uncomment to use static values to speed up the testing process\n //fileName: \"construction-e994a375-78f9-4e18-8be7-7489a2394cc8\",\n //id: \"e994a375-78f9-4e18-8be7-7489a2394cc8\",\n },\n rental: {\n //fileName: \"rental-dac1db54-dbfa-473d-ab4f-1f4cc352f0b2\",\n //id: \"dac1db54-dbfa-473d-ab4f-1f4cc352f0b2\",\n },\n ready: false,\n file: \"\",\n },\n viewport: {\n width: 1000,\n scrollFromTop: 0\n },\n speakWithRepresentative: {\n flags: [],\n },\n};\n","export const REMOVE_GUARANTOR = \"REMOVE_GUARANTOR\";\nexport const ADD_GUARANTOR = \"ADD_GUARANTOR\";\n\nexport const addGuarantor = (id) => (dispatch) => {\n dispatch({ type: ADD_GUARANTOR, id: id });\n};\n\nexport const removeGuarantor = (id) => (dispatch) => {\n dispatch({ type: REMOVE_GUARANTOR, id: id });\n};\n\n\nexport default {\n ADD_GUARANTOR,\n addGuarantor,\n REMOVE_GUARANTOR,\n removeGuarantor,\n};\n","import initialState from \"../initialState\";\n\nexport const SET_ERROR = \"SET_ERROR\";\nexport const SET_STATIC_ERROR = \"SET_STATIC_ERROR\";\n\nexport const setError = (\n status,\n message = initialState.applicationError.message\n) => (dispatch) => {\n dispatch({ type: SET_ERROR, status, message });\n};\n\n//versus a regular error, this persists across the app\n//so the app will have to be reloaded\nexport const setStaticError = (\n status,\n message = initialState.applicationError.static.message\n) => (dispatch) => {\n dispatch({ type: SET_STATIC_ERROR, status, message });\n};\n\nexport default {\n SET_ERROR,\n setError,\n SET_STATIC_ERROR,\n setStaticError\n};\n","export const SET_APPLICATION_DATA = \"SET_APPLICATION_DATA\";\n\n/**\n * \n * @param {object} data \n * @summary Sets the loan application state through redux\n * @example (sets application field 'valid' to false) setApplicationData({valid: false})\n */\nexport const setApplicationData = (data) => (dispatch) => {\n dispatch({ type: SET_APPLICATION_DATA, data });\n};\n\nexport default { setApplicationData, SET_APPLICATION_DATA };\n","export const ADD_ERROR = \"ADD_ERROR\";\nexport const REMOVE_ERROR = \"REMOVE_ERROR\";\nexport const RESET_ERRORS = \"RESET_ERRORS\";\n\nexport const addError = (question) => (dispatch) => {\n dispatch({ type: ADD_ERROR, question });\n };\n \n export const removeError = (question) => (dispatch) => {\n dispatch({ type: REMOVE_ERROR, question });\n };\n \n export const resetErrors = () => (dispatch) => {\n dispatch({ type: RESET_ERRORS });\n };\n\n export default {ADD_ERROR, addError, REMOVE_ERROR, removeError, RESET_ERRORS, resetErrors}","export const REMOVE_FROM_REQUIRED = 'REMOVE_FROM_REQUIRED';\nexport const ADD_TO_REQUIRED = 'ADD_TO_REQUIRED';\nexport const RESET_REQUIRED = 'RESET_REQUIRED';\n\nexport const addToRequired = (loanType, question) => (dispatch) => {\n dispatch({type: ADD_TO_REQUIRED, loanType, question})\n};\n\nexport const removeFromRequired = (loanType, question) => (dispatch) => {\n dispatch({type: REMOVE_FROM_REQUIRED, loanType, question})\n};\n\nexport const resetRequired = () => (dispatch) => {\n dispatch({type: RESET_REQUIRED})\n}\n\n\nexport default {\n REMOVE_FROM_REQUIRED,\n removeFromRequired,\n ADD_TO_REQUIRED,\n addToRequired,\n RESET_REQUIRED,\n resetRequired\n}\n\n","export const SET_SUBMITTED = \"SET_SUBMITTED\";\nexport const SET_SUBMITTING = \"SET_SUBMITTING\";\nexport const SET_RESULTS_DATA = \"SET_RESULTS_DATA\";\nexport const SET_RESULTS_STATE = \"SET_RESULTS_STATE\";\nexport const SET_RESULTS_LOADING = \"SET_RESULTS_LOADING\";\nexport const SET_RESULTS_PANE_COLLAPSED = \"SET_RESULTS_PANE_COLLAPSED\"\n\nexport const setSubmitted = (loanType, submitted) => (dispatch) => {\n dispatch({ type: SET_SUBMITTED, loanType, submitted });\n};\nexport const setSubmitting = (loanType, submitting) => (dispatch) => {\n dispatch({ type: SET_SUBMITTING, loanType, submitting });\n};\nexport const setResultsData = (loanType, data) => (dispatch) => {\n dispatch({ type: SET_RESULTS_DATA, loanType, data });\n};\n\nexport const setResultsState = (state) => (dispatch) => {\n dispatch({ type: SET_RESULTS_STATE, state });\n};\n\nexport const setResultsLoading = (loading) => (dispatch) => {\n dispatch({ type: SET_RESULTS_LOADING, loading });\n};\n\n\nexport const setResultsPaneCollapsed= (collapsed) => (dispatch) => {\n dispatch({ type: SET_RESULTS_PANE_COLLAPSED, collapsed });\n};\n\nexport default {\n SET_SUBMITTED,\n setSubmitted,\n SET_SUBMITTING,\n setSubmitting,\n SET_RESULTS_DATA,\n setResultsData,\n SET_RESULTS_STATE,\n setResultsState,\n SET_RESULTS_LOADING,\n setResultsPaneCollapsed,\n SET_RESULTS_PANE_COLLAPSED\n};\n","export const SET_LOAN_QUESTIONS = \"SET_LOAN_QUESTIONS\";\nexport const SET_CONSTRUCTION_QUESTIONS = \"SET_CONSTRUCTION_QUESTIONS\";\nexport const SET_RENTAL_QUESTIONS = \"SET_RENTAL_QUESTIONS\";\nexport const SET_QUESTION_SEEN = \"SET_QUESTION_SEEN\";\n\nexport const setLoanQuestions = (questions) => (dispatch) => {\n dispatch({ type: SET_LOAN_QUESTIONS, loanQuestions: questions });\n};\nexport const setConstructionQuestions = (questions) => (dispatch) => {\n dispatch({ type: SET_CONSTRUCTION_QUESTIONS, questions });\n};\nexport const setRentalQuestions = (questions) => (dispatch) => {\n dispatch({ type: SET_RENTAL_QUESTIONS, questions });\n};\n\nexport const setQuestionSeen = (loanType, id) => (dispatch) => {\n dispatch({ type: SET_QUESTION_SEEN, loanType, id });\n};\n\nexport default {\n SET_LOAN_QUESTIONS,\n setLoanQuestions,\n SET_CONSTRUCTION_QUESTIONS,\n setConstructionQuestions,\n SET_RENTAL_QUESTIONS,\n setRentalQuestions,\n SET_QUESTION_SEEN,\n setQuestionSeen,\n};\n","export const SET_LOADING = \"SET_LOADING\";\n\nexport const setLoading = (status, message=\"Loading...\") => dispatch => {\n dispatch({ type: SET_LOADING, status, message });\n};\nexport default {\n SET_LOADING,\n setLoading\n};\n","import initialState from \"../initialState\";\n\nexport const SET_DOWNLOAD_MODAL = \"SET_DOWNLOAD_MODAL\";\nexport const SET_PREVIOUS_ESTIMATE_MODAL = \"SET_PREVIOUS_ESTIMATE_MODAL\";\nexport const SET_PREVIOUS_ESTIMATE_ID = 'SET_PREVIOUS_ESTIMATE_ID';\nexport const SET_PREVIOUS_ESTIMATE_LOAN_TYPE = 'SET_PREVIOUS_LOAN_TYPE';\nexport const SET_PREVIOUS_ESTIMATE = 'SET_PREVIOUS_ESTIMATE';\nexport const SET_SHARED_MODAL = \"SET_SHARED_MODAL\";\n\n\nexport const setDownloadModal = (status, url = \"\") => (dispatch) => {\n dispatch({ type: SET_DOWNLOAD_MODAL, status, url });\n};\n\nexport const setPreviousEstimateModal = (status) => (dispatch) => {\n dispatch({ type: SET_PREVIOUS_ESTIMATE_MODAL, status});\n};\n\nexport const setPreviousEstimateId = (estimateId) => (dispatch) => {\n dispatch({ type: SET_PREVIOUS_ESTIMATE_ID, estimateId });\n};\n\nexport const setPreviousEstimateLoanType = (loanType) => (dispatch) => {\n dispatch({ type: SET_PREVIOUS_ESTIMATE_LOAN_TYPE, loanType });\n};\n\nexport const setPreviousEstimate = (data) => (dispatch) => {\n dispatch({ type: SET_PREVIOUS_ESTIMATE, data });\n};\n\nexport const setSharedModal = (\n status,\n message = initialState.modals.shared.message\n) => (dispatch) => {\n dispatch({ type: SET_SHARED_MODAL, status, message });\n};\n\nexport default {\n SET_DOWNLOAD_MODAL,\n setDownloadModal,\n SET_PREVIOUS_ESTIMATE_MODAL,\n setPreviousEstimateModal,\n SET_PREVIOUS_ESTIMATE_ID,\n setPreviousEstimateId,\n SET_PREVIOUS_ESTIMATE_LOAN_TYPE,\n setPreviousEstimateLoanType,\n SET_PREVIOUS_ESTIMATE,\n setPreviousEstimate, \n SET_SHARED_MODAL,\n setSharedModal\n};\n","export const ADD_DOWNLOAD_WARNING = \"ADD_DOWNLOAD_WARNING\";\nexport const CLEAR_DOWNLOAD_WARNINGS = \"CLEAR_DOWNLOAD_WARNINGS\";\n\nexport const addDownloadWarning = (message) => (dispatch) => {\n dispatch({ type: ADD_DOWNLOAD_WARNING, message });\n};\n\nexport const clearDownloadWarnings = () => (dispatch) => {\n dispatch({ type: CLEAR_DOWNLOAD_WARNINGS });\n};\n\nexport default {\n ADD_DOWNLOAD_WARNING,\n addDownloadWarning,\n CLEAR_DOWNLOAD_WARNINGS,\n clearDownloadWarnings,\n};\n","export const CHANGE_LOAN_TYPE = \"CHANGE_LOAN_TYPE\";\nexport const SET_LOAN_DATA = \"SET_LOAN_DATA\";\nexport const RESET_LOAN_DATA = \"RESET_LOAN_DATA\";\nexport const RESET_LOAN_DATA_FIELDS = \"RESET_LOAN_DATA_FIELDS\";\nexport const INITIALIZE_GUARANTOR_FIELDS = \"INITIALIZE_GUARANTOR_FIELDS\";\nexport const INCREMENT_RESET_COUNTER = \"INCREMENT_RESET_COUNTER\";\n\nexport const changeLoanType = (type) => (dispatch) => {\n dispatch({ type: CHANGE_LOAN_TYPE, loanType: type });\n};\n\nexport const setLoanData = (data) => (dispatch) => {\n dispatch({ type: SET_LOAN_DATA, loanData: data });\n};\n\nexport const resetLoanData = () => (dispatch) => {\n dispatch({ type: RESET_LOAN_DATA });\n};\n\nexport const resetLoanDataFields = (loanType, fields) => (dispatch) => {\n dispatch({ type: RESET_LOAN_DATA_FIELDS, loanType, fields });\n};\n\nexport const initializeGuarantorFields = (loanType, fields) => (dispatch) => {\n dispatch({ type: INITIALIZE_GUARANTOR_FIELDS, fields, loanType });\n};\n\nexport const incrementResetCounter = () => (dispatch) => {\n dispatch({ type: INCREMENT_RESET_COUNTER});\n};\n\nexport default {\n CHANGE_LOAN_TYPE,\n SET_LOAN_DATA,\n RESET_LOAN_DATA,\n RESET_LOAN_DATA_FIELDS,\n INITIALIZE_GUARANTOR_FIELDS,\n INCREMENT_RESET_COUNTER,\n changeLoanType,\n setLoanData,\n resetLoanData,\n resetLoanDataFields,\n initializeGuarantorFields,\n incrementResetCounter,\n};\n","import actions from \"./actions\";\nimport initialState from \"../initialState\";\n\nexport const loanDataReducer = (state = initialState.loanData, action) => {\n let _state = { ...state };\n\n switch (action.type) {\n case actions.SET_LOAN_DATA:\n return { ...state, ...action.loanData };\n case actions.RESET_LOAN_DATA:\n return { acknowledged: false };\n case actions.RESET_LOAN_DATA_FIELDS:\n action.fields.forEach((field) => {\n delete _state[action.loanType][field];\n });\n return _state;\n case actions.INITIALIZE_GUARANTOR_FIELDS:\n action.fields.forEach((field) => {\n _state[action.loanType][field] = null;\n });\n return _state;\n case actions.INCREMENT_RESET_COUNTER:\n return {...state, resetCounter: state.resetCounter + 1}\n default:\n return state;\n }\n};\n\nexport const loanTypeReducer = (state = initialState.loanType, action) => {\n switch (action.type) {\n case actions.CHANGE_LOAN_TYPE:\n return action.loanType;\n default:\n return state;\n }\n};\n\nexport default {\n data: loanDataReducer,\n type: loanTypeReducer,\n};\n","const SET_CONSTRUCTION_FILE_INFO = \"SET_CONSTRUCTION_FILE_ID\";\nconst SET_RENTAL_FILE_INFO = \"SET_RENTAL_FILE_ID\";\nconst SET_ESTIMATOR_READY = \"SET_ESTIMATOR_READY\";\nconst SET_ESTIMATOR_FILE = \"SET_ESTIMATOR_FILE\";\n\nexport const setConstructionFileInfo = (info) => (dispatch) => {\n dispatch({ type: SET_CONSTRUCTION_FILE_INFO, info });\n};\n\nexport const setRentalFileInfo = (info) => (dispatch) => {\n dispatch({ type: SET_RENTAL_FILE_INFO, info });\n};\n\nexport const setEstimatorReady = (ready) => (dispatch) => {\n dispatch({type: SET_ESTIMATOR_READY, ready})\n}\n\nexport const setEstimatorFile = (file) => (dispatch) => {\n dispatch({type: SET_ESTIMATOR_FILE, file})\n}\n\nexport default {\n SET_CONSTRUCTION_FILE_INFO,\n SET_RENTAL_FILE_INFO,\n SET_ESTIMATOR_READY,\n SET_ESTIMATOR_FILE,\n setConstructionFileInfo,\n setRentalFileInfo,\n setEstimatorReady,\n setEstimatorFile\n};\n","export const SET_VIEWPORT_WIDTH = \"SET_VIEWPORT_WIDTH\";\nexport const SET_SCROLL_FROM_TOP = \"SET_SCROLL_FROM_TOP\";\n\nexport const setViewportWidth = (width) => (dispatch) => {\n dispatch({ type: SET_VIEWPORT_WIDTH, width });\n};\n\nexport const setScrollFromTop = (fromTop) => (dispatch) => {\n dispatch({ type: SET_SCROLL_FROM_TOP, fromTop });\n};\n\nexport default {\n SET_VIEWPORT_WIDTH,\n setViewportWidth,\n SET_SCROLL_FROM_TOP,\n setScrollFromTop,\n};\n","export const ADD_SPEAK_WITH_REP_FLAG = 'ADD_SPEAK_WITH_REP_FLAG';\nexport const REMOVE_SPEAK_WITH_REP_FLAG = 'REMOVE_SPEAK_WITH_REP_FLAG';\n\nexport const addSpeakWithRepFlag = (flag) => (dispatch) => {\n dispatch({type: ADD_SPEAK_WITH_REP_FLAG, flag})\n}\n\nexport const removeSpeakWithRepFlag = (flag) => (dispatch) => {\n dispatch({type: REMOVE_SPEAK_WITH_REP_FLAG, flag})\n}\n\nexport default {\n ADD_SPEAK_WITH_REP_FLAG,\n addSpeakWithRepFlag,\n REMOVE_SPEAK_WITH_REP_FLAG,\n removeSpeakWithRepFlag\n}","\nimport guarantorReducer from \"./guarantors/reducers\";\nimport applicationErrorReducer from './applicationError/reducers';\nimport applicationReducer from './application/reducers';\nimport errorReducer from './errors/reducers';\nimport requiredReducer from './required/reducers';\nimport resultsReducer from './results/reducers';\nimport loanQuestionsReducer from './questions/reducers';\nimport loadingReducer from './loading/reducers';\nimport modalsReducer from './modals/reducers';\nimport warningsReducer from './warnings/reducers';\nimport loanDataReducer from './loanData/reducers';\nimport estimatorReducer from './estimator/reducers';\nimport viewportReducer from \"./viewport/reducers\";\nimport speakWithRepReducer from './speakWithRep/reducers';\n\nimport { combineReducers } from \"redux\";\n\n\nexport default combineReducers({\n applicationError: applicationErrorReducer,\n application: applicationReducer,\n loanType: loanDataReducer.type,\n loanData: loanDataReducer.data,\n loanQuestions: loanQuestionsReducer,\n guarantors: guarantorReducer,\n errors: errorReducer,\n required: requiredReducer,\n results: resultsReducer,\n loading: loadingReducer,\n modals: modalsReducer,\n warnings: warningsReducer,\n estimator: estimatorReducer,\n viewport: viewportReducer,\n speakWithRepresentative: speakWithRepReducer\n});\n","import initalState from \"../initialState\";\nimport actions from \"./actions\";\n\nexport default (state = initalState.applicationError, action) => {\n let { type, status, message } = action;\n let _state = { ...state };\n\n switch (type) {\n case actions.SET_ERROR:\n _state.status = status;\n _state.message = message;\n return _state;\n case actions.SET_STATIC_ERROR:\n _state.static.status = status;\n _state.static.message = message;\n return _state;\n default:\n return _state;\n }\n};\n","import actions from \"./actions\";\nimport initialState from \"../initialState\";\n\nexport default function applicationReducers(\n state = initialState.application,\n action\n) {\n switch (action.type) {\n case actions.SET_APPLICATION_DATA:\n return { ...state, ...action.data };\n default:\n return { ...state };\n }\n}\n","import actions from \"./actions\";\nimport initialState from \"../initialState\";\n\nexport default function loanQuestionsReducer(\n state = initialState.loanQuestions,\n action\n) {\n let _state = { ...state };\n const { id, loanType } = action;\n\n switch (action.type) {\n case actions.SET_LOAN_QUESTIONS:\n return { ...action.loanQuestions };\n case actions.SET_CONSTRUCTION_QUESTIONS:\n _state.construction = [...action.questions];\n return _state;\n case actions.SET_RENTAL_QUESTIONS:\n _state.rental = [...action.questions];\n return _state;\n case actions.SET_QUESTION_SEEN:\n let index = _state[loanType].findIndex((q) => q.id === id);\n if (index !== -1) {\n _state[loanType][index].seen = true;\n }\n return _state;\n default:\n return _state;\n }\n}\n","import initialState from \"../initialState\";\nimport actions from \"./actions\";\n\nexport default function guarantorReducers(\n state = initialState.guarantors,\n action\n) {\n \n switch (action.type) {\n case actions.ADD_GUARANTOR:\n const add = [...state, action.id];\n return add;\n case actions.REMOVE_GUARANTOR:\n const remove = [...state];\n const index = remove.findIndex((el) => el === action.id);\n index !== -1 && remove.splice(index, 1);\n return remove;\n default:\n return state;\n }\n}\n","import actions from \"./actions\";\nimport initialState from \"../initialState\";\n\nexport default function errorReducer(state = initialState.errors, action) {\n let _state = [...state];\n let index = action.question\n ? _state.findIndex((q) => q.id === action.question.id)\n : null;\n\n switch (action.type) {\n case actions.ADD_ERROR:\n index === -1 && _state.push(action.question);\n return _state;\n case actions.REMOVE_ERROR:\n index !== -1 && _state.splice(index, 1);\n return _state;\n case actions.RESET_ERRORS:\n return [];\n default:\n return _state;\n }\n}\n","import initialState from \"../initialState\";\nimport actions from \"./actions\";\n\nexport default function (state = initialState.required, action) {\n let _state = {...state};\n let {loanType} = action;\n let index;\n\n switch (action.type) {\n case actions.ADD_TO_REQUIRED:\n //add to current required (this will change)\n index = _state[loanType].current.findIndex((q) => q.id === action.question.id);\n index === -1 && _state[loanType].current.push(action.question) \n //add to initial required (this should not change)\n index = _state[loanType].initial.findIndex((q) => q.id === action.question.id);\n index === -1 && _state[loanType].initial.push(action.question);\n return _state;\n case actions.REMOVE_FROM_REQUIRED:\n index = _state[loanType].current.findIndex((q) => q.id === action.question.id);\n index !== -1 && _state[loanType].current.splice(index, 1);\n return _state;\n case actions.RESET_REQUIRED:\n return {...initialState.required};\n default:\n return state;\n }\n}\n","import initialState from \"../initialState\";\nimport actions from \"./actions\";\n\nexport default function resultsReducer(state = initialState.results, action) {\n let _state = { ...state };\n let { collapsed, loanType } = action;\n\n switch (action.type) {\n case actions.SET_RESULTS_STATE:\n return { ..._state, ...action.state };\n case actions.SET_RESULTS_DATA:\n _state[loanType].data = { ...action.data };\n return _state;\n case actions.SET_SUBMITTING:\n return { ..._state, submitting: action.submitting };\n case actions.SET_SUBMITTED:\n _state[loanType].submitted = action.submitted;\n return _state;\n case actions.SET_RESULTS_LOADING:\n _state.loading = action.loading;\n return _state;\n case actions.SET_RESULTS_PANE_COLLAPSED:\n _state.collapsed = collapsed;\n return _state;\n default:\n return { ..._state };\n }\n}\n","import actions from \"./actions\";\nimport initialState from \"../initialState\";\n\nexport default function loadingReducer(state = initialState.loading, action) {\n const { type, message, status } = action;\n let _state = { ...state };\n\n switch (type) {\n case actions.SET_LOADING:\n _state = { message, status };\n return _state;\n default:\n return state;\n }\n}\n","import actions from \"./actions\";\nimport initialState from \"../initialState\";\n\nexport default function modalsReducer(state = initialState.modals, action) {\n let { type, status, url, estimateId, loanType, data, message } = action;\n let _state = { ...state };\n switch (type) {\n case actions.SET_DOWNLOAD_MODAL:\n _state.download.status = status;\n _state.download.url = url;\n return _state;\n case actions.SET_PREVIOUS_ESTIMATE_MODAL:\n _state.previousEstimate.status = status;\n return _state;\n case actions.SET_PREVIOUS_ESTIMATE_ID:\n _state.previousEstimate.estimateId = estimateId;\n return _state;\n case actions.SET_PREVIOUS_ESTIMATE_LOAN_TYPE:\n _state.previousEstimate.loanType = loanType;\n return _state;\n case actions.SET_PREVIOUS_ESTIMATE:\n _state.previousEstimate = {...data};\n return _state;\n case actions.SET_SHARED_MODAL:\n _state.shared.status = status;\n _state.shared.message = message;\n return _state;\n default:\n return _state;\n }\n}\n","import initialState from \"../initialState\";\nimport actions from \"./actions\";\n\nexport default function warningReducers(state = initialState.warnings, action) {\n let { type, message } = action;\n let _state = { ...state };\n\n switch (type) {\n case actions.ADD_DOWNLOAD_WARNING:\n _state.download.push(message);\n return _state;\n case actions.CLEAR_DOWNLOAD_WARNINGS:\n _state.download = [];\n return _state;\n default:\n return _state;\n }\n}\n","import initialState from \"../initialState\";\nimport actions from \"./actions\";\n\nexport default function estimatorReducer(\n state = initialState.estimator,\n action\n) {\n let { info, type, ready, file } = action;\n let _state = { ...state };\n\n switch (type) {\n case actions.SET_CONSTRUCTION_FILE_INFO:\n _state.construction = { ...info };\n return _state;\n case actions.SET_RENTAL_FILE_INFO:\n _state.rental = { ...info };\n return _state;\n case actions.SET_ESTIMATOR_READY:\n _state.ready = ready;\n return _state;\n case actions.SET_ESTIMATOR_FILE:\n _state.file = file;\n return _state;\n default:\n return _state;\n }\n}\n","import initialState from \"../initialState\";\nimport actions from \"./actions\";\n\nexport default function viewportReducer(state = initialState.viewport, action) {\n let _state = { ...state };\n let { fromTop } = action;\n switch (action.type) {\n case actions.SET_VIEWPORT_WIDTH:\n _state.width = action.width;\n return _state;\n case actions.SET_SCROLL_FROM_TOP:\n _state.scrollFromTop = fromTop;\n return _state;\n default:\n return _state;\n }\n}\n","import initialState from \"../initialState\";\nimport actions from \"./actions\";\n\nexport default function speakWithRepReducer(\n state = initialState.speakWithRepresentative,\n action\n) {\n const { type, flag } = action;\n let _state = { ...state };\n let index = flag && _state.flags.findIndex((f) => f.name === flag.name);\n\n switch (type) {\n case actions.ADD_SPEAK_WITH_REP_FLAG:\n index === -1 && _state.flags.push(flag);\n return _state;\n case actions.REMOVE_SPEAK_WITH_REP_FLAG:\n index !== -1 && _state.flags.splice(index, 1);\n return _state;\n default:\n return _state;\n }\n}\n","import { createStore, applyMiddleware } from \"redux\";\nimport thunk from 'redux-thunk';\nimport { composeWithDevTools } from 'redux-devtools-extension';\nimport rootReducer from \"./reducers\";\nimport initialState from './initialState';\n \nconst store = createStore(rootReducer, initialState, composeWithDevTools(\n applyMiddleware(thunk),\n));\nexport default store;","import axios from \"axios\";\n\nconst _APIClient = () => {\n const options = {\n baseURL: process.env.REACT_APP_BASE_URL,\n method: \"get\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n };\n\n const instance = axios.create(options);\n\n instance.interceptors.request.use(async (config) => {\n return config;\n });\n\n instance.interceptors.response.use(\n function (response) {\n return response;\n },\n function (error) {\n return Promise.reject(error);\n }\n );\n\n return instance;\n};\n\nexport const APIClient = _APIClient();\n","export const DRIVE_ID = process.env.REACT_APP_DRIVE_ID;\nexport const ESTIMATOR_DIRECTORY_ID = process.env.REACT_APP_ESTIMATOR_DIRECTORY_ID;\n ","export const TEST_API_ROUTE = \"/questions/test\";\n\nexport const CONSTRUCTION_MASTER_ID = process.env.REACT_APP_CONSTRUCTION_MASTER_ID;\nexport const GET_CONSTRUCTION_QUESTIONS = `/questions/construction`;\nexport const CONSTRUCTION_RESULTS_CELL_RANGE = process.env.REACT_APP_CONSTRUCTION_RESULTS_CELL_RANGE;\nexport const CONSTRUCTION_QUESTIONS_CELL_RANGE = process.env.REACT_APP_CONSTRUCTION_QUESTIONS_CELL_RANGE;\n\nexport const RENTAL_MASTER_ID = process.env.REACT_APP_RENTAL_MASTER_ID;\nexport const GET_RENTAL_QUESTIONS = `/questions/rental`;\nexport const RENTAL_RESULTS_CELL_RANGE = process.env.REACT_APP_RENTAL_RESULTS_CELL_RANGE;\nexport const RENTAL_QUESTIONS_CELL_RANGE = process.env.REACT_APP_RENTAL_QUESTIONS_CELL_RANGE;\n\n//methods that return routes\nexport const SEND_TO_ESTIMATOR = () => {\n return `/estimator/send`;\n};\n\nexport const CREATE_COPY_OF_SPREADSHEET = (itemId) => {\n return `/estimator/copy/${itemId}`;\n};\n\nexport const FIND_SPREADSHEET_BY_NAME = (name) => {\n return `/estimator/search/${name}`;\n};\n\nexport const GET_ESTIMATOR_RESULTS = (itemId, loanType) => {\n return `/estimator/results/${itemId}/${loanType}`;\n};\n\n//files\nexport const GET_ESTIMATES = `/estimator/estimates`;\nexport const DOWNLOAD_ESTIMATE = (itemId) => {\n return `/estimator/download/${itemId}`;\n}\n\n\n//cleanup\nexport const DELETE_ESTIMATE = (itemId) => {\n return `/estimator/delete/${itemId}`;\n};\n\nexport const GET_MASTER_QUESTIONS_BY_LOAN_TYPE = (loanType) => {\n return `/questions/master/${loanType}`;\n};\n\nexport const GET_QUESTIONS_FROM_SPREADSHEET = (itemId, loanType) => {\n return `/questions/spreadsheet/${itemId}/${loanType}`;\n};\n\n\n//email routes\nexport const SEND_ADMIN_ESTIMATE_EMAIL = '/email/send/adminestimate';\nexport const SEND_USER_ESTIMATE_EMAIL = '/email/send/userestimate';\n\n","export const EMAIL = \"email\";\nexport const SELECT = \"select\";\nexport const DATE = \"date\";\nexport const PERCENT = \"percent\";\nexport const NUMBER = \"number\";\nexport const TEXT = \"text\";\nexport const CURRENCY = \"currency\";\nexport const CHECKBOX = \"checkbox\";\nexport const PHONE = \"phone\";\n\nexport default {\n EMAIL,\n SELECT,\n DATE,\n PERCENT,\n NUMBER,\n TEXT,\n CURRENCY,\n CHECKBOX,\n PHONE\n};\n","import moment from \"moment\";\nimport reduxStore from \"../../store/index\";\nimport {\n MAX_ESTIMATE_LIFE_IN_DAYS,\n RENTAL,\n CONSTRUCTION,\n} from \"../../common/data/values\";\nimport {\n getEstimates,\n deleteEstimate,\n createCopyOfSpreadsheet,\n} from \"../../APIClient/estimator\";\nimport inputTypes from \"../data/inputTypes\";\nreduxStore.subscribe(() => {});\n\n/****************************************\n * DATA BEFORE SENDING TO API\n ****************************************/\n\n/**\n *\n * @param {Array} questions\n * @description Manicures data a certain way in which the API needs it\n * @returns [[a],[b], [c], ...]\n */\nexport const composeDestinationData = (questions) => {\n const { loanData, loanType } = reduxStore.getState();\n\n let destinations = {};\n let initialCellNumber = null;\n\n questions.forEach((question) => {\n if (question.destination && question.destination !== \"\") {\n let column = question.destination.substring(0, 1);\n let value =\n question.type === inputTypes.PERCENT\n ? parseFloat(loanData[loanType][question.id]) / 100\n : loanData[loanType][question.id];\n\n if (Object.keys(destinations).length === 0) {\n initialCellNumber = cellNumberNoColumn(question.destination);\n destinations[column] = [value];\n } else {\n if (!destinations[column]) {\n destinations[column] = [];\n }\n /**\n * If our cell range is B3:C6, the initialCellNumber will be 3\n * So, to make sure the correct values fill the spreadsheet, we use that as the beginning index to place elements\n *\n * For Example, when we pass a range of B3:C6, the value going to B3 will be [[, ..., ...],[]] as the first value\n * in the range.\n *\n * But B4-B6 may not be expecting values while B7 is. so 7-initialCellNumber(3) places the value going into B7 into index (4)\n * [[, null, null, null, ], [C-values]]\n */\n destinations[column][\n cellNumberNoColumn(question.destination) - initialCellNumber\n ] = value;\n }\n }\n });\n\n let data = [];\n Object.keys(destinations).forEach((key) => {\n data.push([...destinations[key]]);\n });\n\n let cellRange = getCellRange(questions);\n let size = getRequiredRowSize(cellRange);\n let normalized = normalizeDataToFitRange(data, size);\n //what we will eventually return\n let toApi = [];\n\n //create the number of rows we need\n for (let r = 0; r < size; r++) {\n let row = [];\n for (let v = 0; v < normalized.length; v++) {\n let value = normalized[v][r] ? normalized[v][r].toString() : null;\n row.push(value);\n }\n toApi.push(row);\n }\n\n return toApi;\n};\n\n/**\n *\n * @param {Array} questions\n * @returns String\n * @description Returns cell range to send in the PATCH request to the API\n * Example: 'A1:B3'\n */\nexport const getCellRange = (questions) => {\n questions = questions.filter((q) => q.destination && q.destination !== \"\");\n\n let destinations = {};\n questions.forEach((question) => {\n let d = question.destination;\n let column = d.substring(0, 1);\n\n if (!destinations[column]) {\n destinations[column] = [d];\n } else {\n destinations[column].push(d);\n }\n });\n\n let range = [];\n let max = 1;\n let min = 100;\n\n Object.keys(destinations)\n .sort()\n .forEach((key) => {\n destinations[key].forEach((el) => {\n range.push(el);\n if (cellNumberNoColumn(el) > max) {\n max = cellNumberNoColumn(el);\n }\n if (cellNumberNoColumn(el) < min) {\n min = cellNumberNoColumn(el);\n }\n });\n });\n //relies on first value to start ascension\n\n return range[0] + \":\" + cellColumn(range[range.length - 1]) + max;\n};\n\nconst cellColumn = (cell) => {\n return cell.substr(0, 1);\n};\n\nconst cellNumberNoColumn = (cell) => {\n let val = cell.length > 2 ? 2 : 1;\n return parseInt(cell.substr(cell.length - val));\n};\n\nconst getRequiredRowSize = (cellRange) => {\n let noColon = cellRange.split(\":\");\n\n let size =\n cellNumberNoColumn(noColon[1]) - cellNumberNoColumn(noColon[0]) + 1;\n return size;\n};\n\n/**\n *\n * @param {Array} data - [[value,value], [value, value]]\n * @param {Number} size - size each inner array has to be, 'A15:B17'\n * @description - Normalizes the data for a successful PATCH request\n * @returns {Array} - normalized data so each inner array is same size as required\n *\n */\nconst normalizeDataToFitRange = (data, size) => {\n let _data = [...data];\n\n for (let i = 0; i < _data.length; i++) {\n let howManyNeeded = size - _data[i].length;\n if (howManyNeeded > 0) {\n for (let j = 0; j < howManyNeeded; j++) {\n _data[i].push(null);\n }\n }\n }\n\n return _data;\n};\n\n/****************************************\n * DATA ONCE WE GET IT BACK FROM THE API\n ****************************************/\n\n/**\n *\n * @param {Array} row - array of cell values from API [a,b,c,d,...]\n * @returns {Boolean} - whether the array looks like this: [\"\",\"\",\"\",\"\"] (true) or not (false)\n */\nconst isEmptyRow = (row) => {\n let _row = [];\n for (let i = 0; i < row.length; i++) {\n if (row[i] !== \"\" && row[i] !== null) {\n _row.push(row[i]);\n }\n }\n return _row.length === 0;\n};\n\n/**\n * @param {Array} results - results array from API [[],[],[]...]\n * @returns {Array} - only non-empty rows\n */\n\nexport const removeEmptyRowsFromResults = (results) => {\n let _results = [];\n for (let row = 0; row < results.length; row++) {\n let r = results[row];\n if (!isEmptyRow(r)) {\n _results.push(r);\n }\n }\n\n return _results;\n};\n\nexport const composeEstimatorResultsData = (data) => {\n let results = {};\n\n let key = \"\";\n\n for (let i = 0; i < data.length; i++) {\n let val = data[i][0];\n if (val !== \"\") {\n key = val;\n results[key] = [];\n } else {\n for (let x = 1; x < data[i].length; x++) {\n if (data[i][x] !== \"\") {\n results[key] && results[key].push(data[i][x].toString());\n }\n }\n }\n }\n\n return results;\n};\n\n/****************************************\n * MAINTENANCE\n ****************************************/\n\nexport const convertLastModifiedDateToDays = (lastModifiedDateTime) => {\n return Math.floor(\n parseInt(\n new Date().getTime() -\n new Date(moment.utc(lastModifiedDateTime).utcOffset(-400)).getTime()\n ) /\n 3600000 /\n 24\n );\n};\n\nexport const getEstimatesOlderThan = (days, estimates) => {\n let _estimates = estimates.filter(\n (estimate) =>\n convertLastModifiedDateToDays(estimate.lastModifiedDateTime) > days\n );\n return _estimates;\n};\n\nexport const deleteEstimates = async (estimates) => {\n estimates.forEach(async (estimate) => {\n await deleteEstimate(estimate.id);\n });\n};\n\nexport const checkForExpiredEstimates = async () => {\n let estimates = await getEstimates();\n estimates = getEstimatesOlderThan(\n MAX_ESTIMATE_LIFE_IN_DAYS,\n estimates.value || []\n );\n\n if (estimates.length > 0) {\n deleteEstimates(estimates);\n }\n};\n\nexport const createCopyOfMasterEstimate = async (type) => {\n let req = await createCopyOfSpreadsheet(type);\n return {\n [type]: {\n id: req.id,\n fileName: `${type}-${req.id}`,\n },\n };\n};\n\nexport const createCopiesOfMasterEstimates = async () => {\n let rental = await createCopyOfSpreadsheet(RENTAL);\n let construction = await createCopyOfSpreadsheet(CONSTRUCTION);\n\n return {\n rental: {\n id: rental.id,\n fileName: `${RENTAL}-${rental.id}`,\n },\n construction: {\n id: construction.id,\n fileName: `${CONSTRUCTION}-${construction.id}`,\n },\n };\n};\n\n/****************************************\n * GENERAL ESTIMATOR FUNCTIONS\n ****************************************/\n\nexport const estimatorUpdateDisabled = () => {\n const {\n estimator: { ready },\n required,\n /*loanData,*/\n loanType,\n applicationError,\n } = reduxStore.getState();\n\n return (\n required[loanType].current.length > 0 ||\n applicationError.static.status === true ||\n ready !== true\n );\n};\n","export const RENTAL = \"rental\";\nexport const CONSTRUCTION = \"construction\";\n\nexport default { RENTAL, CONSTRUCTION };\n","import reduxStore from \"../store/index\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { APIClient } from \"./index\";\nimport { DRIVE_ID, ESTIMATOR_DIRECTORY_ID } from \"./config/index\";\nimport {\n CREATE_COPY_OF_SPREADSHEET,\n GET_ESTIMATES,\n GET_ESTIMATOR_RESULTS,\n FIND_SPREADSHEET_BY_NAME,\n SEND_TO_ESTIMATOR,\n CONSTRUCTION_MASTER_ID,\n RENTAL_MASTER_ID,\n DELETE_ESTIMATE,\n DOWNLOAD_ESTIMATE,\n} from \"./config/routes/index\";\n\nimport {\n getCellRange,\n composeDestinationData,\n} from \"../common/utils/estimator\";\nimport loanTypes from \"../common/data/loanTypes\";\n\nreduxStore.subscribe(() => {});\n\nexport const sendDataToEstimator = (values = null, itemId) => {\n const { loanType, loanQuestions } = reduxStore.getState();\n\n let questions = loanQuestions[loanType];\n\n let range = getCellRange(questions);\n let _values = values ? values : composeDestinationData(questions);\n\n return APIClient.post(SEND_TO_ESTIMATOR(), {\n session: { persistChanges: true },\n itemId,\n range,\n values: _values,\n })\n .then(({ data }) => data)\n .catch((err) => err.response.data);\n};\n\nexport const createCopyOfSpreadsheet = (type = null) => {\n let obj =\n type === loanTypes.CONSTRUCTION\n ? {\n itemId: CONSTRUCTION_MASTER_ID,\n }\n : { itemId: RENTAL_MASTER_ID };\n\n let { itemId } = obj;\n\n let id = uuidv4();\n let _name = `${type}-${id}.xlsx`;\n\n return APIClient.post(CREATE_COPY_OF_SPREADSHEET(itemId), {\n parentReference: {\n driveId: DRIVE_ID,\n id: ESTIMATOR_DIRECTORY_ID,\n },\n name: _name,\n })\n .then((data) => ({ data, id: id, fileName: _name }))\n .catch((err) => err.response.data);\n};\n\nexport const getEstimates = () => {\n return APIClient.get(GET_ESTIMATES)\n .then(({ data }) => data)\n .catch((err) => err.response.data);\n};\n\nexport const findSpreadsheetByName = (name) => {\n return APIClient.get(FIND_SPREADSHEET_BY_NAME(name))\n .then(({ data }) => data)\n .catch((err) => err.response.data);\n};\n\nexport const getEstimatorResults = (itemId) => {\n const { loanType } = reduxStore.getState();\n return APIClient.get(GET_ESTIMATOR_RESULTS(itemId, loanType))\n .then(({ data }) => data)\n .catch((err) => err.response.data);\n};\n\nexport const deleteEstimate = (id) => {\n return APIClient.delete(DELETE_ESTIMATE(id))\n .then(({ data }) => data)\n .catch((err) => err.response.data);\n};\n\nexport const downloadEstimate = (itemId) => {\n return APIClient.get(DOWNLOAD_ESTIMATE(itemId), { responseType: \"blob\" })\n .then(({ data }) => data)\n .catch((err) => err.response.data);\n};\n","import { APIClient } from \"./index\";\nimport {\n TEST_API_ROUTE,\n GET_CONSTRUCTION_QUESTIONS,\n GET_RENTAL_QUESTIONS,\n GET_MASTER_QUESTIONS_BY_LOAN_TYPE,\n GET_QUESTIONS_FROM_SPREADSHEET,\n} from \"./config/routes/index\";\n\nexport const testApiRoute = () => {\n return APIClient.get(TEST_API_ROUTE)\n .then(({ data }) => data)\n .catch((err) => err);\n};\n\nexport const getConstructionQuestions = () => {\n return APIClient.get(GET_CONSTRUCTION_QUESTIONS)\n .then(({ data }) => data)\n .catch((err) => err.response.data);\n};\n\nexport const getRentalQuestions = () => {\n return APIClient.get(GET_RENTAL_QUESTIONS)\n .then(({ data }) => data)\n .catch((err) => err.response.data);\n};\n\nexport const getMasterQuestionsByLoanType = (loanType) => {\n return APIClient.get(GET_MASTER_QUESTIONS_BY_LOAN_TYPE(loanType))\n .then(({ data }) => data)\n .catch((err) => err.response.data);\n};\n\nexport const getQuestionsFromSpreadsheet = (itemId, loanType) => {\n return APIClient.get(GET_QUESTIONS_FROM_SPREADSHEET(itemId, loanType))\n .then(({ data }) => data)\n .catch((err) => err.response.data);\n};\n","import isEqual from \"lodash/isEqual\";\nimport FileDownload from \"js-file-download\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { setError } from \"../../store/applicationError/actions\";\nimport { setLoading } from \"../../store/loading/actions\";\nimport {\n setDownloadModal,\n setPreviousEstimateModal,\n} from \"../../store/modals/actions\";\nimport {\n addDownloadWarning,\n clearDownloadWarnings,\n} from \"../../store/warnings/actions\";\nimport { setResultsData, setSubmitted } from \"../../store/results/actions\";\nimport { setEstimatorFile } from \"../../store/estimator/actions\";\nimport {\n findSpreadsheetByName,\n getEstimatorResults,\n downloadEstimate,\n} from \"../../APIClient/estimator\";\nimport {\n getQuestionsFromSpreadsheet,\n getMasterQuestionsByLoanType,\n} from \"../../APIClient/questions\";\nimport {\n composeEstimatorResultsData,\n removeEmptyRowsFromResults,\n} from \"../../common/utils/estimator\";\nimport reduxStore from \"../../store/index\";\nreduxStore.subscribe(() => {});\n\nexport const usePreviousEstimate = () => {\n const {\n loanType,\n modals: { previousEstimate },\n } = useSelector((state) => state);\n\n const dispatch = useDispatch();\n \n const handleFind = async () => {\n dispatch(setLoading(true, \"Finding Estimate...\"));\n\n //find the spreadsheet by name\n dispatch(setPreviousEstimateModal(false));\n let name = `${previousEstimate.loanType}-${previousEstimate.estimateId}.xlsx`;\n let result = await findSpreadsheetByName(name);\n\n if (!result || !result.value[0]) {\n dispatch(setLoading(false));\n dispatch(setError(true, \"Could not find that estimate\"));\n } else {\n dispatch(setEstimatorFile(name));\n //results from finding spreadsheet\n let { id } = result.value[0];\n //compare to see if questions have changed\n let questions = await getQuestionsFromSpreadsheet(\n id,\n previousEstimate.loanType\n );\n let masterQuestions = await getMasterQuestionsByLoanType(\n previousEstimate.loanType\n );\n let questionsHaveChanged = !isEqual(\n questions.values,\n masterQuestions.values\n );\n\n if (questionsHaveChanged) {\n dispatch(\n addDownloadWarning(\n \"The estimator questions have changed since you submitted this estimate\"\n )\n );\n }\n\n let results = await getEstimatorResults(id);\n\n results = composeEstimatorResultsData(\n removeEmptyRowsFromResults(results.values)\n );\n\n dispatch(setResultsData(loanType, results));\n dispatch(setSubmitted(loanType, true));\n dispatch(setLoading(false));\n //dispatch(setDownloadModal(true, url));\n }\n };\n\n const findAndDownloadEstimate = async (type, id) => {\n let spreadsheet = await findSpreadsheetByName(`${type}-${id}`);\n if (\n (spreadsheet.value && spreadsheet.value.length === 0) ||\n spreadsheet.error\n ) {\n dispatch(setLoading(false));\n dispatch(setError(true, \"Could not find estimate!\"));\n } else {\n let itemId = spreadsheet.value[0].id;\n await downloadEstimate(itemId);\n\n //window.open(url, \"_blank\");\n dispatch(setLoading(false));\n //history.push(\"/\");\n }\n };\n\n const performEstimateDownload = async () => {\n dispatch(setDownloadModal(false, \"\"));\n const {\n estimator: { file },\n } = reduxStore.getState();\n\n let spreadsheet = await findSpreadsheetByName(file);\n if (\n (spreadsheet.value && spreadsheet.value.length === 0) ||\n spreadsheet.error\n ) {\n dispatch(setError(true, `Could not find ${file}`));\n } else {\n let itemId = spreadsheet.value[0].id;\n let data = await downloadEstimate(itemId);\n dispatch(setDownloadModal(false, \"\"));\n FileDownload(data, file);\n }\n\n dispatch(clearDownloadWarnings());\n };\n\n return {\n handleFind,\n findAndDownloadEstimate,\n performEstimateDownload,\n };\n};\n","const styles = (theme) => ({\n root: {\n width: \"100%\",\n },\n fullWidthContainer: {\n margin: \"10px auto\",\n width: \"100%\",\n },\n fullWidthContainerWithPane: {\n width: \"70%\",\n margin: \"10px 9% 10px 0\",\n },\n flexSpaceBetween: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n },\n header: {\n width: \"100%\",\n margin: \"auto\",\n lineHeight: \"1.2 !important\",\n marginBottom: \"25px\",\n padding: theme.spacing(2),\n textAlign: \"center\",\n },\n headerWithSubmitted: {\n width: \"100%\",\n maxWidth: \"914px\",\n margin: \"auto\",\n lineHeight: \"1.2 !important\",\n marginBottom: \"25px\",\n marginTop: \"125px\",\n padding: theme.spacing(2),\n textAlign: \"center\",\n },\n headerWithCollapsed: {\n width: \"100%\",\n maxWidth: \"914px\",\n margin: \"auto\",\n lineHeight: \"1.2 !important\",\n marginBottom: \"25px\",\n [theme.breakpoints.up(\"md\")]: {\n marginTop: \"25px\",\n },\n padding: theme.spacing(2),\n textAlign: \"center\",\n },\n headerText: {\n fontSize: \"1.1rem\",\n fontWeight: \"400\",\n lineHeight: \"1.5\",\n color: \"#232323\",\n },\n covidWarning: {\n backgroundColor: \"red\",\n width: \"70%\",\n margin: \"auto\",\n lineHeight: \"1.2 !important\",\n marginBottom: \"25px\",\n padding: theme.spacing(2),\n textAlign: \"center\",\n },\n\n covidWarningWithCollapsed: {\n backgroundColor: \"red\",\n width: \"50%\",\n margin: \"auto\",\n lineHeight: \"1.2 !important\",\n marginBottom: \"25px\",\n padding: theme.spacing(2),\n textAlign: \"center\",\n },\n covidWarningText: {\n fontSize: \"1.1rem\",\n fontWeight: \"400\",\n lineHeight: \"1.5\",\n color: \"#232323\",\n },\n footer: {\n width: \"100%\",\n maxWidth: \"914px\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n margin: \"5px auto\",\n },\n footerMobile: {\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n margin: \"auto\",\n },\n footerItem: {\n margin: \"10px auto\",\n maxWidth: \"100%\",\n },\n footerText: {\n fontSize: \"1.1rem\",\n fontWeight: \"400\",\n lineHeight: \"1.5\",\n color: \"#232323\",\n width: \"100%\",\n margin: \"auto\",\n },\n sectionHeader: {\n margin: \"0 auto\",\n fontSize: \" 24px\",\n letterSpacing: \" 1px\",\n fontWeight: \" 600\",\n lineHeight: \" 32px\",\n backgroundColor: \" #f5f5f5\",\n border: \" 0\",\n padding: \" 10px 30px\",\n display: \" block\",\n width: \" 100%\",\n },\n sectionQuestionText: {\n border: \"1px solid #fff\",\n paddingRight: \" 15px\",\n color: \" #7b7b7b\",\n fontSize: \"calc(100vw/58)\",\n lineHeight: \"23px\",\n fontWeight: \"300\",\n [theme.breakpoints.down(\"sm\")]: {\n fontSize: \"14px\",\n },\n [theme.breakpoints.up(\"lg\")]: {\n fontSize: \"18px\",\n },\n },\n sectionQuestionTextChild: {\n textAlign: \"justify\",\n textJustify: \"inter-word\",\n border: \"1px solid #fff\",\n paddingRight: \"15px\",\n paddingLeft: \"15px\",\n color: \"#424b75\",\n fontSize: \"calc(100vw/58)\",\n lineHeight: \"23px\",\n fontWeight: \"300\",\n [theme.breakpoints.down(\"sm\")]: {\n fontSize: \"14px\",\n },\n [theme.breakpoints.up(\"lg\")]: {\n fontSize: \"18px\",\n },\n },\n\n navBar: {\n width: \"100%\",\n margin: \"5px 10px\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n },\n\n tableWithCollapsed: {\n maxWidth: \"100%\",\n margin: \"auto\",\n },\n\n tableMobile: {\n maxWidth: \"100%\",\n margin: \"5px\",\n },\n input: {\n width: \"30% !important\",\n },\n labelText: {\n width: '100%',\n paddingTop: '20px'\n },\n labelTextEnd: {\n width: '100%',\n paddingBottom: '20px'\n },\n tableCellText: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n alignItems: \"flex-baseline\",\n width: \"100%\",\n flexWrap: \"wrap\",\n },\n tableCellField: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-end\",\n width: \"20%\",\n },\n tableCellStacked: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n alignItems: \"flex-end\",\n width: \"100%\",\n },\n tableRow: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n width: \"100%\",\n },\n tableRowMobile: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n width: \"100%\",\n },\n tableHeader: {\n backgroundColor: \"#f5f5f5\",\n },\n multiQuestionCell: {\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n },\n multiQuestionCellMobile: {\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n },\n cellStack: {\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n },\n\n quarterWidth: {\n width: \"25%\",\n },\n addGuarantorBtn: {\n \"&:hover\": {\n textDecoration: \"none\",\n color: \"#fff\",\n backgroundColor: \"#ee2623\",\n borderColor: \"#ed1a18\",\n },\n display: \" inline-block\",\n fontWeight: \" 400\",\n textAlign: \" center\",\n whiteSpace: \" nowrap\",\n verticalAlign: \" middle\",\n border: \" 1px solid transparent\",\n margin: \" 10px 0 10px 45px\",\n padding: \" 8px 8px\",\n fontSize: \" 1rem\",\n lineHeight: \" 1.5\",\n textDecoration: \" none\",\n borderRadius: \" .25rem\",\n color: \" #fff\",\n backgroundColor: \" #f14947\",\n borderColor: \" #f14947\",\n minWidth: \" 170px\",\n },\n shareEstimateBtn: {\n \"&:hover\": {\n textDecoration: \"none\",\n color: \"#fff\",\n backgroundColor: \"#ee2623\",\n borderColor: \"#ed1a18\",\n },\n display: \" inline-block\",\n fontWeight: \" 400\",\n textAlign: \" center\",\n whiteSpace: \" nowrap\",\n border: \" 1px solid transparent\",\n padding: \" 8px 8px\",\n fontSize: \" 1rem\",\n lineHeight: \" 1.5\",\n textDecoration: \" none\",\n borderRadius: \" .25rem\",\n color: \" #fff\",\n backgroundColor: \" #f14947\",\n borderColor: \" #f14947\",\n minWidth: \" 170px\",\n },\n shareEstimateContainer: {\n display: \"flex\",\n width: \"100%\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n alignItems: \"flex-start\",\n margin: \"auto\",\n },\n shareEstimateBtnDisabled: {\n color: \"#fff\",\n backgroundColor: \"gray\",\n },\n\n removeGuarantorBtn: {\n display: \" inline-block\",\n fontWeight: \" 400\",\n textAlign: \" center\",\n whiteSpace: \" nowrap\",\n verticalAlign: \" middle\",\n userSelect: \" none\",\n border: \" 1px solid transparent\",\n marginLeft: \" 45px\",\n padding: \" 5px 8px\",\n fontSize: \" .75rem\",\n lineHeight: \" 1.25\",\n textDecoration: \" none\",\n borderRadius: \" .25rem\",\n borderColor: \" #f14947\",\n maxWidth: \" 170px\",\n color: \" #f14947\",\n backgroundColor: \" #fff\",\n },\n requiredText: {\n color: \"red\",\n fontWeight: \"300\",\n width: '100%'\n },\n errorText: {\n color: \"red\",\n fontWeight: \"300\",\n },\n errorIcon: {\n color: \"red\",\n },\n errorRow: {\n backgroundColor: \"#ff6961\",\n },\n loadingBtnContainer: {\n display: \"flex\",\n justifyContent: \"space-around\",\n flexDirection: \"row\",\n },\n});\n\nexport default styles;\n","const styles = () => ({\n textInput: {\n width: \"50vw !important\",\n padding: \".375rem .75rem !important\",\n fontSize: \"1rem !important\",\n lineHeight: \"1.5 !important\",\n height: \"1.5 !important\",\n color: \"#495057 !important\",\n backgroundColor: \"#fff !important\",\n backgroundClip: \"padding-box !important\",\n border: \"1px solid #c3d4da !important\",\n borderRadius: \".25rem !important\",\n transition:\n \"border-color .15s ease-in-out, box-shadow .15s ease-in-out !important\",\n display: \"block !important\",\n },\n thirdWidth: {\n width: \"200px\",\n },\n footer: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-start',\n width: '40%',\n },\n innerFooterContainer: {\n width: '75%'\n }\n});\n\nexport default styles;\n","import React from \"react\";\nimport {\n Checkbox,\n FormGroup,\n FormControlLabel,\n withStyles,\n} from \"@material-ui/core\";\nimport Styles from \"./Styles\";\nimport reduxStore from '../../../store/index';\n\n\nfunction CheckboxInput({\n classes,\n checked,\n onChange,\n label,\n id,\n sharedRow,\n disabled,\n}) {\n\n const {loanType} = reduxStore.getState();\n return (\n \n {\n e.persist();\n onChange(id)(e.target.checked);\n }}\n color=\"primary\"\n inputProps={{\n \"aria-label\": label,\n }}\n className={sharedRow && classes.thirdWidth}\n />\n }\n label={label}\n />\n \n );\n}\n\nexport default withStyles(Styles)(CheckboxInput);\n","import React from \"react\";\nimport PropTypes from \"prop-types\"; //eslint-disable-line\nimport { useSelector } from \"react-redux\";\nimport {\n Typography,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n withStyles,\n} from \"@material-ui/core\";\nimport { Error as ErrorIcon } from \"@material-ui/icons\";\nimport Styles from \"../../app/components/main/Styles\";\n\nfunction RequiredQuestions({ classes }) {\n const { required, loanType } = useSelector((state) => state);\n return (\n <>\n \n The following questions are required:\n \n \n {required[loanType].current.map((r, index) => {\n return (\n \n \n \n \n \n \n );\n })}\n \n \n );\n}\n\nexport default withStyles(Styles)(RequiredQuestions);\n","import reduxStore from \"../../store/index\";\nimport moment from 'moment'\nreduxStore.subscribe(() => {});\n\nexport const findParent = (id, questions) => {\n let child = questions.find((q) => q.id === id);\n\n if (child && child.parent) {\n let parent = questions.find((q) => q.id === child.parent);\n return parent;\n } else {\n return null;\n }\n};\n\nexport const compareConditional = (\n parent,\n conditional,\n conditionalComparison\n) => {\n const { loanData, loanType } = reduxStore.getState();\n let value = loanData[loanType][parent.id];\n\n switch (conditional) {\n case \"equals\":\n return parent !== null && value === conditionalComparison;\n case \"greater\":\n return (\n parent !== null && parseFloat(value) > parseFloat(conditionalComparison)\n );\n case \"less\":\n return (\n parent !== null && parseFloat(value) < parseFloat(conditionalComparison)\n );\n case \"not\":\n return parent !== null && value !== conditionalComparison;\n case \"in\":\n return parent !== null && conditionalComparison.includes(value);\n case \"notin\":\n return parent !== null && !conditionalComparison.includes(value);\n case \"dateolder\":\n let compareDate = moment().subtract(conditionalComparison, 'months') \n return parent !=null && moment(value) < compareDate\n default:\n return false;\n }\n};\n","import * as v from './values';\n\nlet validations = {};\n\nvalidations[v.PHONE_REQUIRED] = (value) => {\n if (!value) return false;\n return isValidPhone(value);\n};\n\nvalidations[v.PHONE_NOT_REQUIRED] = (phone) => {\n if (!phone) return true;\n let value = phone.replace(/[^0-9.]/g, '');\n if (value.length === 0) return true;\n return isValidPhone(value);\n};\n\nvalidations[v.EMAIL_REQUIRED] = (value) => {\n if (!value) return false;\n return isValidEmail(value);\n};\n\nvalidations[v.EMAIL_NOT_REQUIRED] = (value) => {\n if (!value || value.length === 0) return true;\n return isValidEmail(value);\n};\n\nvalidations[v.TEXTFIELD_REQUIRED] = (value) => {\n if (!value || value.length === 0 || (value.length >= 1 && value.length < 3)) return false;\n\n return true;\n};\n\nvalidations[v.FIRST_NAME_REQUIRED] = (value) => {\n if (!value || value.length < 1) return false;\n return true;\n\n}\n\nvalidations[v.FIRST_NAME_NOT_REQUIRED] = (value) => {\n if (!value || value.length === 0) return true;\n if (value.length >= 1 && value.length < 2) return false;\n return true;\n\n}\nvalidations[v.LAST_NAME_REQUIRED] = (value) => {\n if (!value || value.length < 1) return false;\n return true;\n\n}\n\nvalidations[v.LAST_NAME_NOT_REQUIRED] = (value) => {\n if (!value || value.length === 0) return true;\n if (value.length >= 1 && value.length < 1) return false;\n return true;\n\n}\n\n\nvalidations[v.TEXTFIELD_NOT_REQUIRED] = (value) => {\n if (!value || value.length === 0) return true;\n if (value.length >= 1 && value.length < 5) return false;\n return true;\n};\n\nvalidations[v.PASSWORD_REQUIRED] = (value) => {\n if (!value || value.length === 0 || (value.length >= 1 && value.length < 5)) return false;\n return true;\n};\n\nvalidations[v.PASSWORD_NOT_REQUIRED] = (value) => {\n if (!value || value.length === 0) return true;\n if (value.length >= 1 && value.length < 5) return false;\n return true;\n};\n\n\n\nvalidations[v.TITLE_REQUIRED] = (value) => {\n if (!value || (value.length >= 1 && value.length < 3)) return false;\n return true;\n};\n\nvalidations[v.TITLE_NOT_REQUIRED] = (value) => {\n if (!value || value.length === 0) return true;\n if (value.length >= 1 && value.length < 3) return false;\n return true;\n};\n\nvalidations[v.ZIPCODE_REQUIRED] = (value) => {\n if (!value) return false;\n return isValidZip(value);\n};\n\nvalidations[v.ZIPCODE_NOT_REQUIRED] = (value) => {\n if (!value || value.length === 0) return true;\n return isValidZip(value);\n};\n\nvalidations[v.UPLOAD_EXISTS] = (value) => {\n return value !== null && value !== undefined;\n};\n\nvalidations[v.IS_TRUTHY] = (value) => {\n return value !== null && value !== undefined;\n};\n\nvalidations[v.IS_NUMBER_REQUIRED] = (value) => {\n if (!value) return false;\n return !isNaN(value)\n}\n\nvalidations[v.IS_NUMBER_NOT_REQUIRED] = (value) => {\n if (!value || value.length === 0) return true;\n return !isNaN(value)\n}\n\nvalidations[v.ADMIN_TITLE_REQUIRED] = (value) => {\n if (!value || (value.length < 3)) return false;\n return true;\n};\nconst isValidZip = (zip) => {\n let regex = new RegExp('^\\\\d{5}(-\\\\d{4})?$');\n return regex.test(zip);\n};\n\nexport const isValidEmail = (email) => {\n // eslint-disable-next-line\n const regex = /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/;\n return regex.test(email);\n};\n\nconst isValidPhone = (phone) => {\n let value = phone.replace(/[^0-9.]/g, '');\n return value.length === 10;\n};\n\nexport default validations;\n","export const SELECT = \"Choose Answer...\";\nexport const DATE = \"0000-00-00\";\nexport const PERCENT = 0.0;\nexport const NUMBER = 0.0;\nexport const TEXT = \"\";\nexport const CURRENCY = 0.0;\n\nexport default {\n SELECT,\n DATE,\n PERCENT,\n NUMBER,\n TEXT,\n CURRENCY,\n};\n","import messages from \"./messages\";\nimport validations, { isValidEmail } from \"./validations\";\nimport values from \"./values\";\nimport inputTypes from \"../../data/inputTypes\";\nimport reduxStore from \"../../../store/index\";\nimport minValues from \"../../data/minValues\";\n\nreduxStore.subscribe(() => {});\n\n/**\n * @param {values} arguments\n * @returns object containing validators and error messages to apply to input fields\n * Takes in as many validations as you want to apply to an input element\n * Each argument should be a known constant from values\n * Example:\n * \n */\nfunction getValidationOptions() {\n let a = Array.from(arguments);\n if (!a || a.length < 1) return;\n let errorMessages = a.map((m, i) => messages[m]);\n let validators = a.map((v, i) => a[i]);\n return {\n validators,\n errorMessages,\n };\n}\n\n/**\n *\n * @param {ValidatorForm} form\n *\n * Adds validation rules to a ValidationForm\n * Each additional arugment after form should be a known constant\n * Example: addValidators(ValidatorForm, value.PHONE_REQUIRED, value.TEXTFIELD_REQUIRED)\n */\n\nfunction addValidators(form) {\n let a = Array.from(arguments);\n if (!a || a.length < 2) return;\n\n if (a.length === 2 && Array.isArray(a[1])) {\n for (let v = 0; v < a[1].length; v++) {\n form.addValidationRule(a[1][v], validations[a[1][v]]);\n }\n } else {\n for (let i = 1; i < a.length; i++) {\n form.addValidationRule(a[i], validations[a[i]]);\n }\n }\n}\n\nfunction removeValidators(form) {\n let a = Array.from(arguments);\n if (!a || a.length < 2) return;\n\n if (a.length === 2 && Array.isArray(a[1])) {\n for (let v = 0; v < a[1].length; v++) {\n form.removeValidationRule(a[1][v]);\n }\n } else {\n for (let i = 1; i < a.length; i++) {\n if (typeof a[i] === \"string\") {\n form.removeValidationRule(a[i]);\n }\n }\n }\n}\n\nexport const convertValuesToArray = () => {\n return Object.keys(values).map((v) => values[v]);\n};\n\nexport const validateValueByType = (type, question) => {\n switch (type) {\n case inputTypes.TEXT:\n return question && question.length >= 1;\n case inputTypes.EMAIL:\n return isValidEmail(question);\n case inputTypes.DATE:\n return question && question.toString().length === 10;\n case inputTypes.PERCENT:\n return question && parseFloat(question) >= minValues.PERCENT;\n case inputTypes.NUMBER:\n return question && parseFloat(question) >= minValues.NUMBER;\n case inputTypes.CURRENCY:\n return question && parseFloat(question) >= minValues.CURRENCY;\n case inputTypes.SELECT:\n return question && question !== minValues.SELECT;\n default:\n return true;\n }\n};\n\nexport const isValidValue = (id, questions) => {\n const { loanData, loanType } = reduxStore.getState();\n let _question = questions.find((q) => q.id === id);\n let _valid = validateValueByType(_question.type, loanData[loanType][id]);\n return _valid;\n};\n\nexport const getInputTypeValidationMessage = (type) => {\n switch (type) {\n case inputTypes.TEXT:\n return \"Field must be at least 1 character\"\n case inputTypes.EMAIL:\n return \"Field must be a valid email\"\n case inputTypes.DATE:\n return \"Field must contain a valid date\"\n case inputTypes.PERCENT:\n return \"Field must be a valid percentage\"\n case inputTypes.NUMBER:\n return \"Field must be greater than 0\"\n case inputTypes.CURRENCY:\n return \"Field must be greater than 0\"\n case inputTypes.SELECT:\n return \"Please choose an option\"\n default:\n return true;\n }\n};\n\nexport const hasBeenSeen = (id, questions) => {\n let _question = questions.find((q) => q.id === id);\n return _question && _question.seen === true;\n};\n\nexport {\n values,\n validations,\n messages,\n getValidationOptions,\n addValidators,\n removeValidators,\n};\n\nexport default {\n messages,\n validations,\n values,\n getValidationOptions,\n addValidators,\n removeValidators,\n convertValuesToArray,\n};\n","/* eslint no-useless-escape: 0 */\nimport reduxStore from \"../../../store/index\";\nimport inputTypes from \"../../data/inputTypes\";\nreduxStore.subscribe(() => {});\n\nexport const getEmailFields = (questions) => {\n return questions.filter((q) => q.type === inputTypes.EMAIL).map((q) => q.id);\n};\n\nexport const generateEmailListFromLoanData = (fields) => {\n const { loanData, loanType } = reduxStore.getState();\n return fields.map((f) => loanData[loanType][f]);\n};\n","import { APIClient } from \"./index\";\nimport {\n SEND_ADMIN_ESTIMATE_EMAIL,\n SEND_USER_ESTIMATE_EMAIL\n} from \"./config/routes/index\";\n\nexport const sendAdminEstimateEmail = (emailOptions) => {\n return APIClient.post(SEND_ADMIN_ESTIMATE_EMAIL, emailOptions)\n .then(({ data }) => data)\n .catch((err) => err);\n};\n\nexport const sendUserEstimateEmail = (emailOptions) => {\n return APIClient.post(SEND_USER_ESTIMATE_EMAIL, emailOptions)\n .then(({ data }) => data)\n .catch((err) => err);\n};\n","import reduxStore from \"../../store/index\";\n\nimport { createCopyOfMasterEstimate } from \"../utils/estimator\";\nimport {\n setConstructionFileInfo,\n setRentalFileInfo,\n setEstimatorReady,\n} from \"../../store/estimator/actions\";\nimport {\n removeEmptyRowsFromResults,\n composeEstimatorResultsData,\n} from \"../../common/utils/estimator\";\nimport {\n SUBMITTING,\n UPDATING,\n SHARING,\n} from \"../../common/data/estimator/actions\";\nimport loanTypes from \"../../common/data/loanTypes\";\nimport {\n setSubmitted,\n setResultsData,\n setResultsLoading,\n} from \"../../store/results/actions\";\nimport { setError } from \"../../store/applicationError/actions\";\nimport { setSharedModal } from \"../../store/modals/actions\";\nimport { setLoading } from \"../../store/loading/actions\";\nimport { setStaticError } from \"../../store/applicationError/actions\";\nimport { setEstimatorFile } from \"../../store/estimator/actions\";\nimport {\n sendDataToEstimator,\n findSpreadsheetByName,\n getEstimatorResults,\n} from \"../../APIClient/estimator\";\nimport {\n getEmailFields,\n generateEmailListFromLoanData,\n} from \"../../common/utils/email/index\";\nimport { sendAdminEstimateEmail, sendUserEstimateEmail } from \"../../APIClient/email\";\n\nreduxStore.subscribe(() => {});\n\nexport const useEstimatorFileService = () => {\n const { dispatch } = reduxStore;\n const createCopyOfMaster = async (type) => {\n let results = await createCopyOfMasterEstimate(type);\n let set =\n type === loanTypes.CONSTRUCTION\n ? setConstructionFileInfo\n : setRentalFileInfo;\n\n dispatch(set({ ...results[type] }));\n };\n\n const pollForCreatedSpreadsheet = async (type) => {\n const { estimator } = reduxStore.getState();\n const { dispatch } = reduxStore;\n\n if (estimator[type].fileName && !estimator.ready) {\n let pollRequest = await findSpreadsheetByName(estimator[type].fileName);\n\n if (!pollRequest.id) {\n dispatch(\n setStaticError(\n true,\n \"A communication error occured. Please refresh the application and try again\"\n )\n );\n }\n if (pollRequest.id) {\n dispatch(setEstimatorReady(true));\n }\n } else {\n setTimeout(() => pollForCreatedSpreadsheet(type), 1000);\n }\n \n };\n\n return {\n createCopyOfMaster,\n pollForCreatedSpreadsheet,\n };\n};\n\nexport const useEstimator = () => {\n const { dispatch } = reduxStore;\n\n const handleEstimatorUpdate = async (action) => {\n let {\n estimator,\n loanType,\n loanData,\n errors,\n loanQuestions,\n } = reduxStore.getState();\n let _loanData = { ...loanData };\n let userResponse = \"\";\n let bfiResponse = \"\";\n\n let fileName = estimator[loanType].fileName;\n let result = await findSpreadsheetByName(fileName);\n\n let currentLoanQuestions = loanQuestions[loanType];\n\n /**\n * Returns a list of concerns mapped to their question\n * @param {string[]} concerns - A list of concerns\n * @returns {Object[]} A list of objects containing concern data and the related question id.\n */\n const getConcerns = (concerns) => {\n return concerns.map((value) => {\n // Get the id of the of the question related to the concern.\n let { id } = currentLoanQuestions.find(({ infoPopups=null }) => infoPopups === value) || {};\n return {\n value,\n id,\n }\n });\n }\n\n if (result.id) {\n dispatch(setEstimatorFile(fileName));\n\n action === SUBMITTING &&\n dispatch(setLoading(true, \"Sending to estimator for first time\"));\n action === SHARING && dispatch(setLoading(true, \"Sharing Estimate\"));\n action === UPDATING &&\n dispatch(setResultsLoading(true, \"Updating Results\"));\n\n let { id } = result;\n\n let estimateRequest = await sendDataToEstimator(null, id);\n if (estimateRequest.values) {\n let results = await getEstimatorResults(id);\n //compose rental data\n let display = results.values[1].slice(2);\n let _data = { concerns: [], rows: [], display, answers: [] };\n //address concerns\n results.values.forEach((r, i) => {\n if (i > 1) {\n if (r[0] && r[0] !== \" \" && r[0] !== \"#N/A\") {\n _data.concerns.push(r[0]);\n }\n if (r[1] && r[1] !== \" \") {\n _data.rows.push(r[1]);\n }\n }\n });\n _data.concerns = getConcerns(_data.concerns)\n _data.answers = results.values\n .slice(2)\n .map((a) => a.filter((_a, i) => i > 1));\n\n results =\n loanType === loanTypes.CONSTRUCTION\n ? composeEstimatorResultsData(\n removeEmptyRowsFromResults(results.values)\n )\n : _data;\n\n dispatch(setResultsData(loanType, results));\n\n if (action === SHARING) {\n let emails = generateEmailListFromLoanData(\n getEmailFields(currentLoanQuestions)\n );\n\n bfiResponse = await sendAdminEstimateEmail({\n loanId: estimator[loanType].id,\n resultId: result.id,\n flags: errors,\n estimates: results,\n name: _loanData[loanType][\"initial-1\"],\n email: _loanData[loanType][\"initial-2\"]\n })\n userResponse = await sendUserEstimateEmail({\n flags: errors,\n estimates: results,\n name: _loanData[loanType][\"initial-1\"],\n emails: emails\n });\n }\n }\n dispatch(setSubmitted(loanType, true));\n action === SUBMITTING || action === SHARING\n ? dispatch(setLoading(false))\n : dispatch(setResultsLoading(false));\n dispatch(setLoading(false));\n if (action === SHARING && (bfiResponse && userResponse === \"Email Sent!\")) {\n dispatch(\n setSharedModal(\n true,\n \"Congratulations! Your form was submitted! You should have received a copy in your email. We will be in touch soon. Thank you!\"\n )\n );\n } else if (action === SHARING && (bfiResponse && userResponse !== \"Email Sent!\")){\n dispatch(\n setError(\n true,\n \"There was a communication error, please try again in just a few seconds\"\n )\n );\n }\n } else {\n dispatch(\n setError(\n true,\n \"There was a communication error, please try again in just a few seconds\"\n )\n );\n }\n };\n\n return {\n handleEstimatorUpdate,\n };\n};\n","export const SHARING = 'sharing';\nexport const UPDATING = 'updating';\nexport const SUBMITTING = 'submitting';\n\n\nexport default {\n SHARING,\n UPDATING,\n SUBMITTING\n}","import { findParent, compareConditional } from \"./conditionals\";\nimport { isValidValue } from \"./validation/index\";\nimport reduxStore from \"../../store/index\";\nimport {\n addToRequired,\n removeFromRequired,\n} from \"../../store/required/actions\";\nimport { setLoanData } from \"../../store/loanData/actions\";\nimport { useEstimator } from \"../hooks/estimator\";\nimport { setQuestionSeen } from \"../../store/questions/actions\";\nimport { estimatorUpdateDisabled } from \"./estimator\";\nimport { UPDATING, SUBMITTING } from '../data/estimator/actions';\n\nreduxStore.subscribe(() => { });\n\nexport const getSections = (questions) => {\n let sections = [];\n questions.forEach((question) => {\n let index = sections.findIndex((s) => s === question.section);\n if (index === -1) {\n sections.push(question.section);\n }\n });\n return sections;\n};\n\n/****************************\n *\n * Individual question methods\n *\n * ************************** */\n\nexport const isHidden = (question) => {\n const { loanData, loanType, loanQuestions } = reduxStore.getState();\n\n if (question.id.includes(\"guar\")) {\n let START_GUARANTOR_SUMMARY = 16;\n let guarNumber = parseInt(question.id.split(\"-\")[1]);\n let val = loanData[loanType][question.id];\n if (guarNumber < START_GUARANTOR_SUMMARY) return val === undefined;\n }\n\n let parent = findParent(question.id, loanQuestions[loanType]);\n\n if (parent) {\n //if that field does not exist yet, hide the child\n if (!loanData[loanType][parent.id]) return true;\n return !compareConditional(\n parent,\n question.conditional,\n question.conditionalComparison\n );\n } else {\n return false;\n }\n};\n\nexport const isFirstSubItem = (question, questions) => {\n const relatedQuestions = questions.filter(q => q.label === question.label);\n const questionIndex = relatedQuestions.findIndex((q) => q.id === question.id);\n // If question is first in list of subitems, count it.\n return questionIndex === 0;\n};\n\nexport const getQuestionNumber = (id, questions) => {\n //do not number questions that are children or guarantor questions\n let index = questions\n // Only count a subitem grouping once\n .filter((q) => !q.parent && (!q.id.includes(\"guar\") || isFirstSubItem(q, questions)) && (!q.subItem || isFirstSubItem(q, questions)))\n .findIndex((q) => q.id === id);\n return index !== -1 ? index + 1 : 0;\n};\n\n/****************************\n *\n * Question list based on criteria\n *\n * ************************** */\n\nexport const getRequiredQuestions = (questions) => {\n return questions.filter((question) => question.required);\n};\n\nexport const getValidRequiredQuestions = (questions) => {\n return getRequiredQuestions(questions).filter(\n (question) => !isHidden(question) && isValidValue(question.id, questions)\n );\n};\n\nexport const getInValidRequiredQuestions = (questions) => {\n return getRequiredQuestions(questions).filter(\n (question) => !isHidden(question) && !isValidValue(question.id, questions)\n );\n};\n\nexport const getOnlyVisibleValidQuestions = (questions) => {\n return questions.filter(\n // TODO: Change this to be configurable instead of hard coded to point to guar\n (question) => !isHidden(question) && isValidValue(question.id, questions) && !question.subItem && !question.id.includes('guar') && !question.parent\n );\n};\n\nexport const getOnlyVisibleInValidQuestions = (questions) => {\n return questions.filter(\n (question) => !isHidden(question) && !isValidValue(question.id, questions)\n );\n};\n\nexport const getOnlyVisibleQuestions = (questions) => {\n // TODO: Change this to be configurable instead of hard coded to point to guar\n return questions.filter((question) => !isHidden(question) && !question.subItem && !question.id.includes('guar') && !question.parent);\n};\n\nexport const findQuestionsOnSameRow = (row, questions) => {\n return questions.filter((q) => q.row === row);\n};\n\nexport const findQuestionsInLabel = (label, questions) => {\n return questions.filter((q) => q.label === label);\n};\n\nexport const getQuestionsWithLabel = (label, questions) => {\n return questions.filter((q) => q.label === label);\n};\n\nexport const getQuestionsInSection = (section, questions) => {\n return questions.filter((q) => q.section === section);\n};\n\n/****************************\n *\n * Ordinal position methods\n *\n * ************************** */\n\nexport const firstQuestionWithLabel = (question, label, questions) => {\n let _questions = getQuestionsWithLabel(label, questions);\n let index = _questions.findIndex((q) => q.id === question.id);\n return index === 0;\n};\n\nexport const lastQuestionWithLabel = (question, questions) => {\n let _questions = getQuestionsWithLabel(question.label, questions);\n let index = _questions.findIndex((q) => q.id === question.id);\n return index === _questions.length - 1;\n};\n\nexport const lastQuestionInSection = (question, questions) => {\n let _questions = questions.filter((q) => q.section === question.section);\n let index = _questions.findIndex((q) => q.id === question.id);\n return index === _questions.length - 1;\n};\n\n/****************************\n *\n * Question utilities\n *\n * ************************** */\n\nexport const onChange = (id) => (value) => {\n const {\n loanData,\n loanType,\n loanQuestions,\n estimator,\n results,\n } = reduxStore.getState();\n const dispatch = reduxStore.dispatch;\n const { handleEstimatorUpdate } = useEstimator(dispatch);\n const masterQuestions = loanQuestions[loanType];\n let _data = { ...loanData };\n _data[loanType][id] = value;\n dispatch(setQuestionSeen(loanType, id));\n //if the estimator has already been submitted OR\n //\n if (\n estimator.ready &&\n results[loanType].submitted &&\n !estimatorUpdateDisabled()\n ) {\n dispatch(setLoanData(_data));\n handleEstimatorUpdate(UPDATING);\n } else if (\n estimator.ready &&\n !estimatorUpdateDisabled() &&\n !results[loanType].submitted\n ) {\n dispatch(setLoanData(_data));\n handleEstimatorUpdate(SUBMITTING);\n } else {\n dispatch(setLoanData(_data));\n }\n\n //check to see if question is valid based on requirement\n let _question = masterQuestions.find((q) => q.id === id);\n if (_question && _question.required) {\n if (!isValidValue(_question.id, masterQuestions)) {\n dispatch(addToRequired(loanType, _question));\n } else {\n dispatch(removeFromRequired(loanType, _question));\n }\n }\n};\n\n/**\n * When we get the questions back from the API, arrange them a particluar way so that:\n * [{id: '1', question: '', section: 'Initial info'},{id: '2', question: '', section: 'Initial info'}, ...]\n * @param {Array} values - values field destructured from API request\n */\nexport const composeQuestionsFromApi = (values) => {\n if (!values || !values.length || values.length === 0) return [];\n let _questions = [];\n\n for (let i = 1; i < values.length; i++) {\n const [\n id,\n row,\n required,\n section,\n question,\n type,\n order,\n label,\n parent,\n conditional,\n conditionalComparison,\n list,\n listName,\n listValues,\n destination,\n infoPopups,\n helperText,\n warning,\n warningSpecific,\n warningConditional,\n warningConditionalComparison,\n subItem,\n parentQuestion\n ] = values[i];\n let q = {\n id,\n row,\n required,\n section,\n question,\n type,\n order,\n label,\n parent,\n conditional,\n conditionalComparison,\n list,\n listName,\n listValues,\n destination,\n infoPopups,\n helperText,\n warning,\n warningSpecific,\n warningConditional,\n warningConditionalComparison,\n seen: false,\n subItem,\n parentQuestion\n };\n _questions.push(q);\n }\n\n return _questions;\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Button, CircularProgress, withStyles } from \"@material-ui/core\";\nimport { useEstimator } from \"../../../common/hooks/estimator\";\nimport Styles from \"./Styles\";\nimport { estimatorUpdateDisabled } from \"../../../common/utils/estimator\";\nimport { SHARING } from \"../../../common/data/estimator/actions\";\n\n/**\n *\n * Share Estimate Button component that handles the disabled and text logic\n */\n\nfunction ShareEstimateButton({ classes }) {\n const {\n estimator: { ready },\n loanData,\n loanType\n } = useSelector((state) => state);\n const dispatch = useDispatch();\n const { handleEstimatorUpdate } = useEstimator(dispatch);\n\n const options = {\n disabled: estimatorUpdateDisabled() || !loanData[loanType].acknowledged,\n className: (!estimatorUpdateDisabled() && loanData[loanType].acknowledged)\n ? classes.shareEstimateBtn\n : classes.shareEstimateBtnDisabled,\n onClick: async () => {\n handleEstimatorUpdate(SHARING);\n },\n };\n\n const GetButton = () => {\n return ready === false ? (\n \n ) : (\n \n );\n };\n\n return (\n <>\n \n \n );\n}\n\nShareEstimateButton.propTypes = {\n /* style classes from withStyles */\n classes: PropTypes.object.isRequired,\n};\n\nexport default withStyles(Styles)(ShareEstimateButton);\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport Styles from \"./Styles\";\nimport { Typography, withStyles } from \"@material-ui/core\";\nimport CommonCheckbox from \"../../../common/components/input/CheckboxInput\";\nimport HasRequired from \"../../../common/components/Required\";\nimport { onChange } from \"../../../common/utils/questions\";\nimport ShareEstimateButton from \"./ShareEstimateButton\";\n\nfunction ShareEstimate({ classes }) {\n const { required, loanData, loanType } = useSelector((state) => state);\n\n return (\n <>\n <>\n \n Share this estimate with a BFI representative to see if our financing\n is right for you.\n \n \n \n {required[loanType].current.length > 0 && }\n \n \n );\n}\n\nexport default withStyles(Styles)(ShareEstimate);\n","import React from \"react\";\nimport PropTypes from \"prop-types\"; //eslint-disable-line\nimport Styles from \"./Styles\";\nimport { withStyles, Typography } from \"@material-ui/core\";\nimport ShareEstimate from \"./ShareEstimate\";\n\nfunction Footer({ classes }) {\n return (\n <>\n
\n
\n
\n {\" \"}\n \n
\n
\n *IMPORTANT NOTICE\n
\n
\n {\" \"}\n \n Information in this loan estimator is made available to you for\n our independent use and does not constitute a commitment to lend.\n We cannot and do not guarantee the applicability or accuracy in\n regards to your individual cicumstances. All examples are\n hypothetical and are for illustrative purposes only.\n \n
\n
\n
\n \n );\n}\n\nexport default withStyles(Styles)(Footer);\n","export default (theme) => ({\n resultsPane: {\n [theme.breakpoints.up(\"md\")]: {\n right: \"8%\",\n },\n [theme.breakpoints.up(\"cs-1300\")]: {\n right: \"12%\",\n top: \"75px\",\n },\n [theme.breakpoints.up(\"cs-1400\")]: {\n right: \"13%\",\n top: \"75px\",\n },\n [theme.breakpoints.up(\"cs-1500\")]: {\n right: \"14%\",\n top: \"75px\",\n },\n [theme.breakpoints.up(\"cs-1600\")]: {\n right: \"15%\",\n top: \"75px\",\n },\n [theme.breakpoints.up(\"cs-1700\")]: {\n right: \"17%\",\n top: \"75px\",\n },\n [theme.breakpoints.up(\"cs-1800\")]: {\n right: \"20%\",\n top: \"75px\",\n },\n [theme.breakpoints.up(\"cs-2200\")]: {\n right: \"30%\",\n top: \"75px\",\n },\n\n position: \"fixed\",\n width: \"20%\",\n maxWidth: \"250px\",\n padding: \"20px 30px\",\n backgroundColor: \"#424b75\",\n color: \"#fff\",\n fontSize: \"14px\",\n top: \"50px\",\n zIndex: \"999\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n transition: \"top 0.5s ease-in-out\",\n },\n resultsPaneSticky: {\n [theme.breakpoints.up(\"md\")]: {\n right: \"8%\",\n },\n [theme.breakpoints.up(\"cs-1300\")]: {\n right: \"12%\",\n },\n [theme.breakpoints.up(\"cs-1400\")]: {\n right: \"13%\",\n },\n [theme.breakpoints.up(\"cs-1500\")]: {\n right: \"14%\",\n },\n [theme.breakpoints.up(\"cs-1600\")]: {\n right: \"15%\",\n },\n [theme.breakpoints.up(\"cs-1700\")]: {\n right: \"17%\",\n },\n [theme.breakpoints.up(\"cs-1800\")]: {\n right: \"20%\",\n },\n [theme.breakpoints.up(\"cs-2200\")]: {\n right: \"30%\",\n },\n position: \"fixed\",\n width: \"20%\",\n maxWidth: \"250px\",\n padding: \"20px 30px\",\n backgroundColor: \"#424b75\",\n color: \"#fff\",\n fontSize: \"14px\",\n top: \"0px\",\n zIndex: \"999\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n transition: \"top 0.5s\",\n },\n resultsPaneMobile: {\n position: \"fixed\",\n width: \"100%\",\n bottom: \"0px\",\n left: \"0px\",\n right: \"0px\",\n padding: \"20px 10px\",\n backgroundColor: \"#424b75\",\n color: \"#fff\",\n fontSize: \"14px\",\n zIndex: \"999\",\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignContent: \"center\",\n },\n resultsPaneCollapsed: {\n width: \"100%\",\n margin: \"0 auto 25px auto\",\n maxWidth: \"914px\",\n padding: \"5px\",\n backgroundColor: \"#424b75\",\n color: \"#fff\",\n fontSize: \"14px\",\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n resultsPaneCollapsedMobile: {\n position: \"fixed\",\n width: \"100%\",\n left: \"0\",\n bottom: \"0\",\n padding: \"5px\",\n backgroundColor: \"#424b75\",\n color: \"#fff\",\n fontSize: \"14px\",\n zIndex: \"999\",\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n modalColumn: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignContent: \"center\",\n },\n progress: {\n width: \"50%\",\n margin: \"0 auto\",\n },\n progressUpdating: {\n width: \"100%\",\n margin: \"0 auto\",\n },\n resultsPaneContainer: {\n width: \"90%\",\n },\n resultsPaneContainerMobile: {\n width: \"90%\",\n display: \"flex\",\n },\n resultsPaneProgressFooterContainerMobile: {\n display: \"flex\",\n flexDirection: \"column\",\n paddingRight: \"10px\",\n },\n resultsPaneContainerCollapsed: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-around\",\n width: \"100%\",\n },\n resultsPaneContainerCollapsedMobile: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n width: \"100%\",\n },\n resultsPaneLink: {\n color: \"#fff\",\n textDecoration: \"underline\",\n cursor: \"pointer\",\n \"&:hover\": {\n color: \"#f14947\",\n },\n padding: \"2px\",\n },\n resultsPaneLoading: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-start',\n alignItems: 'center'\n\n },\n resultsPaneLoadingMobile: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n\n },\n resultsLinksContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n },\n resultsLinksContainerCollapsed: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n },\n collapsedResultsSections: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n width: \"100%\",\n },\n resultsSectionsMobile: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n width: \"100%\",\n },\n estimateDetailProgress: {\n color: \"#fff\",\n fontSize: \"16px\",\n fontWeight: \"100\",\n margin: \"5px auto\",\n },\n estimateDetail: {\n margin: \"5px auto\",\n paddingTop: \"10px\",\n paddintBottom: \"10px\",\n },\n estimateDetailHeader: {\n color: \"#fff\",\n fontSize: \"16px\",\n fontWeight: \"100\",\n textAlign: \"center\",\n textDecoration: \"underline\",\n },\n estimateDetailItem: {\n color: \"#fff\",\n fontSize: \"15px\",\n },\n progressContainer: { display: \"flex\", justifyContent: \"center\" },\n \"@keyframes expand-arrow-animation\": {\n \"0%\": {\n transform: \"translateY(0)\",\n },\n \"100%\": {\n transform: \"translateY(-10px)\",\n },\n },\n expandArrow: {\n color: \"#fff\",\n animation: `$expand-arrow-animation 1000ms ${theme.transitions.easing.easeInOut}`,\n animationIterationCount: \"infinite\",\n animationDirection: \"alternate\",\n },\n concerns: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n },\n concernText: {\n color: \"red\",\n\n lineHeight: \"23px\",\n fontWeight: \"400\",\n [theme.breakpoints.down(\"sm\")]: {\n fontSize: \"14px\",\n },\n [theme.breakpoints.up(\"sm\")]: {\n fontSize: \"16px\",\n },\n [theme.breakpoints.up(\"md\")]: {\n fontSize: \"17px\",\n },\n [theme.breakpoints.up(\"cs-1200\")]: {\n fontSize: \"18px\",\n },\n },\n resultsText: {\n color: \"#fff\",\n lineHeight: \"23px\",\n fontWeight: \"400\",\n [theme.breakpoints.down(\"sm\")]: {\n fontSize: \"14px\",\n paddingRight: '15px',\n },\n [theme.breakpoints.up(\"sm\")]: {\n fontSize: \"16px\",\n },\n [theme.breakpoints.up(\"md\")]: {\n fontSize: \"17px\",\n },\n [theme.breakpoints.up(\"cs-1200\")]: {\n fontSize: \"18px\",\n },\n },\n});\n","import React from \"react\";\nimport PropTypes from \"prop-types\"; //eslint-disable-line\nimport { useSelector } from \"react-redux\";\nimport {\n CircularProgress,\n Box,\n Typography,\n withStyles,\n} from \"@material-ui/core\";\nimport Styles from \"./Styles\";\nimport {\n getOnlyVisibleQuestions,\n getOnlyVisibleValidQuestions,\n} from \"../../../common/utils/questions\";\n\n/**\n *\n * Progress indicator component for required fields that are filled out\n */\n\nfunction Progress({ classes }) {\n const { loanType, loanQuestions } = useSelector((state) => state);\n const visibleInitial = getOnlyVisibleQuestions(loanQuestions[loanType]);\n const visibleCurrent = getOnlyVisibleValidQuestions(loanQuestions[loanType]);\n\n return (\n <>\n
\n \n \n \n \n \n \n \n {visibleCurrent.length} / {visibleInitial.length}\n \n \n \n
\n \n );\n}\n\nexport default withStyles(Styles)(Progress);\n","\n\nexport const smallViewport = () => {\n return window.innerWidth < 920\n}\n\nexport const shouldStackMultiCellRow = () => {\n return window.innerWidth < 768\n}","import React from \"react\";\n// import PropTypes from \"prop-types\"; //eslint-disable-line\nimport {useSelector} from 'react-redux';\nimport { Typography, withStyles } from \"@material-ui/core\"; // Link,\nimport Styles from \"./Styles\";\nimport { smallViewport } from \"../../../common/utils/view\";\n\nfunction EstimateDetail({ classes }) {\n const {results} = useSelector(state => state);\n \n if (results.collapsed) return <>\n if (smallViewport()) return <>\n \n return (\n <>\n
\n
\n \n Please continue completing the form to begin seeing your loan estimates.\n \n
\n \n );\n}\n\nexport default withStyles(Styles)(EstimateDetail);\n","import React from \"react\";\nimport PropTypes from \"prop-types\"; //eslint-disable-line\nimport { useDispatch, useSelector } from \"react-redux\";\nimport Styles from \"./Styles\";\nimport { Link, withStyles } from \"@material-ui/core\";\nimport { setLoanData, incrementResetCounter } from \"../../../store/loanData/actions\";\nimport {\n setResultsData,\n setResultsPaneCollapsed,\n setSubmitted,\n} from \"../../../store/results/actions\";\nimport { usePreviousEstimate } from \"../../../common/hooks/previous\";\nimport { smallViewport } from \"../../../common/utils/view\";\n\nfunction ResultsPaneFooter({ classes }) {\n const dispatch = useDispatch();\n const { results, loanType } = useSelector((state) => state);\n\n const { performEstimateDownload } = usePreviousEstimate({ dispatch });\n\n return (\n <>\n {!results.collapsed && !smallViewport() &&
}\n \n {\n e.preventDefault();\n dispatch(\n setLoanData({ [loanType]: { acknowledged: false }, stub: false })\n );\n dispatch(setSubmitted(loanType, false));\n dispatch(setResultsData(loanType, {}));\n dispatch(incrementResetCounter());\n }}\n >\n Clear Answers\n \n\n {results.submitted && (\n {\n e.preventDefault();\n performEstimateDownload();\n }}\n >\n Download Estimate\n \n )}\n\n {(smallViewport() && results[loanType].submitted) ? (\n {\n e.preventDefault();\n dispatch(setResultsPaneCollapsed(!results.collapsed));\n }}\n >\n {results.collapsed ? \"Expand\" : \"Collapse\"}\n \n ) : !smallViewport() ? (\n {\n e.preventDefault();\n dispatch(setResultsPaneCollapsed(!results.collapsed));\n }}\n >\n {results.collapsed ? \"Expand\" : \"Collapse\"}\n \n ) : null } \n \n \n );\n}\nexport default withStyles(Styles)(ResultsPaneFooter);\n","import React from \"react\";\nimport Progress from \"./Progress\";\nimport Detail from \"./Detail\";\nimport Footer from \"./Footer\";\n\n/**\n *\n * Results pane displayed if it is not submitted\n */\nexport default function NotSubmitted(props) {\n return (\n <>\n \n \n