{"version":3,"sources":["utils/history.js","utils/storage.js","config/variables.js","utils/notifications.js","api/axios/errorsNomenclature.js","api/axios/interceptors.js","api/axios/index.js","api/index.js","redux/utils/index.js","redux/tokens/constants.js","redux/tokens/actions.js","utils/sagas.js","redux/electronicMsgSubscription/constants.js","redux/electronicMsgSubscription/actions.js","redux/electronicMsgSubscription/sagas.js","redux/resources/constants.js","redux/resources/actions.js","theme/variables.js","redux/resources/sagas.js","consts/routes.js","redux/app/constants.js","redux/tokens/reducer.js","redux/electronicMsgSubscription/reducer.js","redux/resources/reducer.js","redux/reducers.js","redux/store.js","theme/global-styles.js","serviceWorkerRegistration.js","components/services/ServiceWorker/index.js","components/services/ServiceWorker/NewVersion.js","theme/index.js","components/common/NotFound/index.js","components/common/Typography/index.js","components/common/Content/index.js","hooks/responsive/index.js","images/mobile_variant.svg","components/common/Logo/index.js","images/logo.89e95883.png","components/layouts/AppLayout/AppHeader/index.js","components/common/Pages/ExceptionPage/index.js","components/common/Pages/NotFound/index.js","components/layouts/AppLayout/AppContent/index.js","redux/electronicMsgSubscription/selectors.js","components/views/ElectronicMsgSubscription/SubscriptionForm.js","redux/tokens/selectors.js","components/common/LoadingPage/index.js","components/views/ElectronicMsgSubscription/index.js","config/routes/ElectronicMessage/index.js","images/apple.svg","images/android.svg","components/views/Resources/App/index.js","config/routes/Resources/Apps/index.js","redux/resources/selectors.js","images/error.svg","images/success.svg","components/common/Message/index.js","components/views/Resources/LoanDocuments/LoanDocumentView/index.js","components/views/Resources/LoanDocuments/index.js","config/routes/Resources/LoanDocuments/index.js","config/routes/index.js","components/layouts/AppLayout/AppRoutes/index.js","components/common/CopyRight/index.js","components/layouts/AppLayout/AppFooter/index.js","components/layouts/AppLayout/index.js","components/App.js","index.js"],"names":["history","createBrowserHistory","STATE_KEY","OsTypes","APP_RESOURCE","WARNING_NOTIFICATION_TYPE","notification","config","placement","duration","showSuccessNotification","description","message","success","className","showErrorNotification","error","showInfoNotification","key","uuidv4","info","showErrorNotificationFromResponse","errorData","isNotAuthorized","notFound","showToUser","title","HTTP_STATUS","responseOk","response","isSuccess","formatError","errorInfoSummary","url","baseURL","payload","data","type","fromResponse","createCancelableAxios","cancel","instance","axios","create","cancelToken","CancelToken","c","defaults","timeoutErrorMessage","headers","post","regularAxios","process","timeout","tokenAxios","common","interceptors","request","use","currentToken","store","getState","getIn","Authorization","isCancelledRequestException","isCancel","getEmailUnsubscribeData","get","handleElectronicMessageRequest","subscription","functionToCall","delete","getLoanDocumentRequest","responseType","makeActionCreator","argNames","args","action","forEach","arg","index","SAVE_ENTRY_TOKEN","RESET_CURRENT_TOKEN","saveEntryToken","resetCurrentToken","apiRequest","requestFunction","requestData","Error","Array","isArray","options","Object","assign","showSuccessMessage","showErrorMessage","retryOnErrorCount","actionTitle","successMessageDescription","errorMessageDescription","latestError","call","status","hasOwnProperty","GET_SUBSCRIPTION_TOKEN_DATA","GET_SUBSCRIPTION_TOKEN_DATA_SUCCESS","GET_SUBSCRIPTION_TOKEN_DATA_FAILED","HANDLE_ELECTRONIC_MSG_SUBSCRIPTION","HANDLE_ELECTRONIC_MSG_SUBSCRIPTION_SUCCESS","HANDLE_ELECTRONIC_MSG_SUBSCRIPTION_FAILED","getSubscriptionTokenData","getSubscriptionTokenDataSuccess","getSubscriptionTokenDataFailed","handleElectronicMessageSubscription","handleElectronicMessageSubscriptionSuccess","handleElectronicMessageSubscriptionFailed","getUnsubscribeTokenSaga","handleSubscriptionSaga","takeLatest","put","sagas","FAILED_STATUS","SUCCESSFUL_STATUS","IS_FETCHING_STATUS","GET_LOAN_DOCUMENT_BY_TOKEN","GET_LOAN_DOCUMENT_BY_TOKEN_SUCCESS","GET_LOAN_DOCUMENT_BY_TOKEN_FAILED","getLoanDocumentByToken","getLoanDocumentByTokenSuccess","getLoanDocumentByTokenFailed","XXS","SM","MD","LG","XL","XXL","RESPONSIVE_BREAKPOINTS","WIDTH_BREAKPOINT_XXS","WIDTH_BREAKPOINT_XS","WIDTH_BREAKPOINT_SM","WIDTH_BREAKPOINT_MD","WIDTH_BREAKPOINT_LG","WIDTH_BREAKPOINT_XL","WIDTH_BREAKPOINT_XXL","MAIN_COLOR","FONT_COLOR","FONT_COLOR_LIGHT","BACKGROUND_DARK","BORDER_DEFAULT","getLoanDocumentByTokenSaga","filename","getResponseHeader","filenameMatch","match","documentName","name","blob","Blob","FileSaver","saveAs","moment","format","ROUTES","HOME","STATEMENT","DISCLOSURES","COPPA_DISCLOSURE","PRIVACY_POLICY","NOT_AUTHORIZED","NOT_FOUND","UNSUBSCRIBE","BASE","WITH_TK","RESOURCES","LOAN","DOCUMENTS","APPS","WITH_TYPE","RESET_APP","combineReducers","state","fromJS","token","subscriptionTokenVerified","LOCATION_CHANGE","subscriptionTokenVerifiedIsFetching","handleElectronicMsgSubscriptionIsFetching","getLoanDocumentByTokenState","createRootReducer","asyncReducers","router","connectRouter","tokens","tokensReducer","electronicMsgSubscription","electronicMsgSubscriptionReducer","resources","resourcesReducer","sagaMiddleware","createSagaMiddleware","initialState","middlewares","routerMiddleware","enhancers","applyMiddleware","composeEnhancers","compose","createStore","createReducer","runSaga","run","asyncSagas","map","configureStore","serializedState","sessionStorage","getItem","JSON","parse","loadState","subscribe","storeState","toJS","stringify","setItem","saveState","pick","GlobalStyles","createGlobalStyle","isLocalhost","Boolean","window","location","hostname","register","navigator","URL","href","origin","addEventListener","swUrl","fetch","then","contentType","indexOf","serviceWorker","ready","registration","unregister","reload","registerValidSW","catch","console","log","checkValidServiceWorker","waiting","onWaiting","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","onSuccess","setInterval","a","update","ServiceWorkerContext","React","createContext","displayName","ServiceWorkerProvider","children","useState","waitingServiceWorker","setWaitingServiceWorker","isUpdateAvailable","setUpdateAvailable","useEffect","event","target","value","useMemo","updateAssets","postMessage","Provider","NewVersion","dispatch","useDispatch","useContext","loading","setLoading","updateNow","useCallback","e","log_type","style_by_type","logMessageInConsole","SVC_THEME","colorPrimary","colorLink","fontSizeHeading1","colorText","colorIcon","styled","div","Title","Text","SubTitle","LogoContainer","span","Content","OFFSET_MAX_WIDTH","useIsMobile","useMediaQuery","maxDeviceWidth","Logo","subtitle","isMobile","width","rel","alt","src","logoImgMobile","style","isEmpty","margin","Header","AppHeader","display","background","padding","justifyContent","height","memo","ExceptionPage","titlePage","icon","subTitle","NotFound","ContentWrapper","component","useRouteMatch","ComponentToRender","AppContent","route","selectEMSubscription","createSelector","emSubscriptionDomain","selectSubscriptionTokenVerified","emSubscription","selectSubscriptionTokenVerifiedIsFetching","selectSubscriptionEmail","email","selectSubscriptionId","subscriptionId","selectSubscriptionState","flags","Subscription","selectHandleElectronicMsgSubscriptionIsFetching","SubscriptionForm","useSelector","alignItems","spinning","direction","size","strong","onClick","values","selectTokens","tk","selectCurrentToken","antIcon","LoadingOutlined","fontSize","spin","LoadingPage","indicator","alignSelf","ErrorPage","extra","InitUnsubscribe","subscriptionEmail","subscriptionState","MailOutlined","color","fill","level","marginTop","ElectronicMsgManagement","useParams","replace","unSubscribeRoutes","path","exact","ElectronicMsgSubscription","AppListByType","border","IOS","linkProps","linkStyles","appleImg","Android","androidImg","AppResource","unknownDevice","setUnknownDevice","clientType","OS","isIOS","isAndroid","resourcesAppRoutes","selectResources","selectLoanDocumentByTokenIsFetching","selectLoanDocumentByTokenFailed","selectLoanDocumentByTokenSuccess","MOBILE_WIDTH","DEFAULT_WIDTH","SuccessMessage","successImg","ErrorMessage","errorImg","LoanDocumentView","loanDocumentByTokenIsFetching","isFailed","LoanDocumentLandingResource","resourcesRoutes","routes","buildRoutesToRender","moduleRoutesConfig","routesToRender","external","push","redirectTo","Component","render","to","RenderRoute","AppRoutes","props","pageTitle","CopyRight","year","Date","getFullYear","Footer","textAlign","AppLayout","minHeight","AppFooter","isFromResponse","getLocation","Promise","reject","errorMessage","responseError","App","locale","defaultLocale","enUS","theme","ReactDOM","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.b24ab9cb.chunk.js","sourcesContent":["import { createBrowserHistory } from 'history';\r\n\r\n// configure, create, and export the project's history instance\r\nconst history = createBrowserHistory();\r\n\r\nexport default history;\r\n","const STATE_KEY = 'state';\r\nconst TOKEN_KEY = 'token';\r\n\r\nexport const loadState = () => {\r\n try {\r\n const serializedState = sessionStorage.getItem(STATE_KEY);\r\n\r\n if (serializedState === null) {\r\n return undefined;\r\n }\r\n\r\n return JSON.parse(serializedState);\r\n } catch (error) {\r\n return undefined;\r\n }\r\n};\r\n\r\nexport const saveState = state => {\r\n try {\r\n const serializedState = JSON.stringify(state);\r\n sessionStorage.setItem(STATE_KEY, serializedState);\r\n } catch (error) {\r\n // Ignore errors\r\n }\r\n};\r\n\r\nexport function saveLoginData(token) {\r\n sessionStorage.setItem(TOKEN_KEY, token);\r\n}\r\n\r\nexport function clearLoginData() {\r\n sessionStorage.removeItem(TOKEN_KEY);\r\n}\r\n\r\nexport function getAuthToken() {\r\n return sessionStorage.getItem(TOKEN_KEY);\r\n}\r\n","export const BASE_URL = process.env.REACT_APP_API_SFC_PATH;\r\nexport const BASE_API_URL = process.env.REACT_APP_API_HEIMDAL_PATH;\r\nexport const GOOGLE_API_KEY = process.env.REACT_APP_GOOGLE_API_KEY;\r\n//export const BASE_URL = 'https://sfcapitest.svcfin.com/api';\r\n\r\nexport const CLIENT_TYPE_BORROWER_NOMENCLATURE = 'borrower';\r\nexport const CLIENT_TYPE_DEALER_NOMENCLATURE = 'dealer';\r\n\r\nexport const BORROWER_ANDROID_APP_URL =\r\n 'https://play.google.com/store/apps/details?id=com.svcfin.customerapp';\r\nexport const BORROWER_IOS_APP_URL =\r\n 'https://apps.apple.com/us/app/service-finance-borrower-app/id1572527871';\r\nexport const DEALER_ANDROID_APP_URL =\r\n 'https://play.google.com/store/apps/details?id=com.msi.servicefinance';\r\nexport const DEALER_IOS_APP_URL =\r\n 'https://apps.apple.com/us/app/service-finance-dealer-app/id962933342';\r\n\r\nexport const OsTypes = {\r\n IOS: 'iOS',\r\n Android: 'Android',\r\n WindowsPhone: 'Windows Phone',\r\n Windows: 'Windows',\r\n MAC_OS: 'Mac OS'\r\n};\r\n\r\nexport const APP_RESOURCE = {\r\n [CLIENT_TYPE_BORROWER_NOMENCLATURE]: {\r\n [OsTypes.IOS]: BORROWER_IOS_APP_URL,\r\n [OsTypes.Android]: BORROWER_ANDROID_APP_URL\r\n },\r\n [CLIENT_TYPE_DEALER_NOMENCLATURE]: {\r\n [OsTypes.IOS]: DEALER_IOS_APP_URL,\r\n [OsTypes.Android]: DEALER_ANDROID_APP_URL\r\n }\r\n};\r\n","import React from 'react';\r\nimport { notification } from 'antd';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { Modal } from 'antd';\r\n\r\nexport const ALERT_NOTIFICATION_TYPE = 'ALERT';\r\nexport const WARNING_NOTIFICATION_TYPE = 'WARNING';\r\nexport const SUCCESS_NOTIFICATION_TYPE = 'SUCCESS';\r\nexport const INFO_NOTIFICATION_TYPE = 'INFO';\r\n\r\nconst ALERT_STYLE =\r\n 'color: #e09999; background:#5f1d1d; border:1px solid #e09999; padding-left: 10px; padding-right: 10px;';\r\nconst WARNING_STYLE =\r\n 'color: #292925; background:orange; border:1px solid #292925; padding-left: 10px; padding-right: 10px;';\r\nconst SUCCESS_STYLE =\r\n 'color: white; background:green; border:1px solid white; padding-left: 10px; padding-right: 10px;';\r\nconst INFO_STYLE = 'padding-left: 10px; padding-right: 10px;';\r\n\r\nnotification.config({\r\n placement: 'topRight',\r\n duration: 5\r\n});\r\n\r\nexport const showAlertWithConfirm = description => {\r\n Modal.info({\r\n title: 'A problem has occurred.',\r\n content: (\r\n
\r\n {description ?

{description}

: null}\r\n

For more information contact us.

\r\n
\r\n ),\r\n onOk() {}\r\n });\r\n};\r\n\r\n/**\r\n * Shows success notification\r\n * @param {string} description\r\n * @param {string} message\r\n * @param {Number} duration\r\n */\r\nexport const showSuccessNotification = (\r\n description = 'Operation performed successfully.',\r\n message = 'Success',\r\n duration = 5\r\n) => {\r\n notification.success({\r\n className: 'notification-success',\r\n message,\r\n description,\r\n duration\r\n });\r\n};\r\n\r\n/**\r\n * Shows error notification\r\n * @param {string} description\r\n * @param {string} message\r\n * @param {Number} duration\r\n */\r\nexport const showErrorNotification = (\r\n description = 'Failed operation.',\r\n message = 'Error',\r\n duration = 5\r\n) => {\r\n notification.error({\r\n className: 'notification-error',\r\n message,\r\n description,\r\n duration\r\n });\r\n};\r\n\r\n/**\r\n * Shows info notification\r\n * @param {string} description\r\n * @param {string} message\r\n * @param {Number} duration\r\n * @param {string} key\r\n */\r\nexport const showInfoNotification = (\r\n description = 'Info message.',\r\n message = 'Info',\r\n duration = 15,\r\n key = uuidv4()\r\n) => {\r\n notification.info({\r\n className: 'notification-info',\r\n key,\r\n message,\r\n description,\r\n duration\r\n });\r\n};\r\n\r\n/**\r\n * Shows an error notification from response data\r\n * @param {Object} data\r\n */\r\nexport const showErrorNotificationFromResponse = (\r\n errorData,\r\n message = 'For more information contact us.'\r\n) => {\r\n if (!errorData) {\r\n showErrorNotification();\r\n return;\r\n }\r\n // Do not show for not authorized or not found errors\r\n if (errorData.isNotAuthorized || errorData.notFound) {\r\n // showErrorNotification(message, 'Sorry, an error has occurred', '');\r\n return;\r\n }\r\n if (errorData.showToUser) {\r\n showErrorNotification(errorData.message, errorData.title, '');\r\n return;\r\n } else {\r\n showErrorNotification(message, 'Sorry, an error has occurred', '');\r\n return;\r\n }\r\n};\r\n\r\nexport function logMessageInConsole(message, log_type) {\r\n let style_by_type = {};\r\n switch (log_type) {\r\n case ALERT_NOTIFICATION_TYPE:\r\n style_by_type = ALERT_STYLE;\r\n break;\r\n case WARNING_NOTIFICATION_TYPE:\r\n style_by_type = WARNING_STYLE;\r\n break;\r\n case SUCCESS_NOTIFICATION_TYPE:\r\n style_by_type = SUCCESS_STYLE;\r\n break;\r\n default:\r\n style_by_type = INFO_STYLE;\r\n break;\r\n }\r\n\r\n console.log(`%c${message}`, `${style_by_type}`);\r\n}\r\n","/// When an exception is thrown\r\nexport const EXCEPTION_NOMENCLATURE = 0;\r\n\r\n/// When a validation error is thrown\r\nexport const VALIDATION_NOMENCLATURE = 1;\r\n\r\n/// When there is an error in the data; but not detected in the validation; and the action cannot run correctly.\r\nexport const WRONG_DATA_NOMENCLATURE = 2;\r\n\r\n/// When the action cannot be executed because the data is locked.\r\nexport const LOCKING_NOMENCLATURE = 3;\r\n\r\n/// When any property of an object make impossible the execution of an action\r\nexport const WRONG_PROPERTIES_NOMENCLATURE = 4;\r\n\r\nexport const DUPLICATE_FOUND_NOMENCLATURE = 5;\r\n\r\n/// Error\r\nexport const TEXT_ERROR_NOMENCLATURE = 6;\r\n\r\n/// Unknown Error\r\nexport const UNKNOWN_ERROR_NOMENCLATURE = 7;\r\n\r\n/// Not Found\r\nexport const NOT_FOUND_NOMENCLATURE = 8;\r\n\r\n/// File lost\r\nexport const FILE_LOST_NOMENCLATURE = 9;\r\n\r\n/// Status Not Allowed\r\nexport const STATUS_NOT_ALLOWED_NOMENCLATURE = 10;\r\n\r\n/// Unstable Status\r\nexport const UNSTABLE_STATUS_NOMENCLATURE = 11;\r\n\r\n/// Unstable Status\r\nexport const FILE_ERROR_NOMENCLATURE = 12;\r\n\r\n/// Unstable Status\r\nexport const DATA_BASE_ERROR_NOMENCLATURE = 13;\r\n\r\n/// Unstable Status\r\nexport const NO_CONTENT_NOMENCLATURE = 14;\r\n\r\n/// Unstable Status\r\nexport const PROPERTIES_MISMATCH_NOMENCLATURE = 15;\r\n","import { push, getLocation } from 'connected-react-router';\r\n\r\nimport { showInfoNotification } from 'utils/notifications';\r\nimport {\r\n NOT_FOUND_NOMENCLATURE,\r\n UNKNOWN_ERROR_NOMENCLATURE\r\n} from './errorsNomenclature';\r\n\r\nexport const HTTP_STATUS = {\r\n NOT_AUTHORIZED: 401,\r\n ACCESS_DENIED: 403,\r\n NOT_FOUND: 404,\r\n WRONG_DATA: 400,\r\n BAD_GATEWAY: 502,\r\n OK: 200,\r\n NO_CONTENT: 204\r\n};\r\n\r\n/**\r\n * Request interceptor\r\n * @param {Object} config\r\n */\r\n\r\nexport const requestInterceptor = user => config => {\r\n const newConfig = Object.assign({}, config);\r\n\r\n newConfig.headers.Authorization = `Bearer ${user.access_token}`;\r\n return newConfig;\r\n};\r\n\r\n/**\r\n * Success response interceptor\r\n * @param {Object} response\r\n */\r\nexport function responseOk(response) {\r\n response.isSuccess = true;\r\n return response; // No logic here\r\n}\r\n\r\nconst formatError = error => {\r\n const { config, response } = error;\r\n const errorInfoSummary = {\r\n url: `${config.baseURL}${config.url}`,\r\n payload: config.data\r\n };\r\n\r\n if (response?.data?.type) {\r\n return {\r\n ...response.data,\r\n fromResponse: true\r\n };\r\n }\r\n return {\r\n ...errorInfoSummary,\r\n type: UNKNOWN_ERROR_NOMENCLATURE,\r\n fromResponse: false\r\n };\r\n};\r\n/**\r\n * Error response interceptor\r\n * @param {Object} store\r\n */\r\nexport const responseError = store => error => {\r\n const { response } = error;\r\n\r\n let errorInfoSummary = {};\r\n if (response) {\r\n errorInfoSummary = formatError(error);\r\n }\r\n\r\n if (response?.status) {\r\n let message = {\r\n title: 'An error occured',\r\n description: 'The operation could not be performed.',\r\n isFromResponse: true\r\n };\r\n\r\n switch (response.status) {\r\n case HTTP_STATUS.NOT_AUTHORIZED:\r\n const state = store.getState().toJS();\r\n const location = getLocation(state);\r\n store.dispatch(push('/', location));\r\n showInfoNotification(\r\n 'You are not authorized to access this page or your session has expired.',\r\n 'Info',\r\n 'unauthorized'\r\n );\r\n\r\n return Promise.reject({\r\n ...response,\r\n isNotAuthorized: true,\r\n errorInfoSummary\r\n });\r\n\r\n case HTTP_STATUS.ACCESS_DENIED:\r\n showInfoNotification(\r\n 'Sorry, you do not have access to this action.',\r\n 'Info',\r\n 'unauthorized'\r\n );\r\n // store.dispatch(push('/', location));\r\n return Promise.reject({\r\n ...response,\r\n isNotAuthorized: true,\r\n errorInfoSummary\r\n });\r\n\r\n case HTTP_STATUS.WRONG_DATA:\r\n if (response.data.showToUser) {\r\n message.title = response.data.title;\r\n message.description = response.data.message;\r\n }\r\n\r\n const errorData = JSON.stringify(response.data);\r\n return Promise.reject({\r\n ...response.data,\r\n errorData,\r\n errorMessage: message,\r\n errorInfoSummary\r\n });\r\n\r\n case HTTP_STATUS.NOT_FOUND:\r\n if (!response?.data) {\r\n return Promise.reject({\r\n ...response,\r\n notFound: true,\r\n errorInfoSummary\r\n });\r\n }\r\n\r\n if (response.data.type === NOT_FOUND_NOMENCLATURE) {\r\n response.data.notFound = true;\r\n }\r\n\r\n return Promise.reject({\r\n ...response.data,\r\n notFound: true,\r\n errorInfoSummary\r\n });\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n return Promise.reject({ ...error, errorInfoSummary: formatError(error) });\r\n};\r\n","import axios from 'axios';\r\nimport store from 'redux/store';\r\nimport { BASE_URL, BASE_API_URL } from 'config/variables';\r\nimport { responseOk, responseError } from './interceptors';\r\n\r\nconst TIME_OUT = 60000;\r\nexport const TIME_OUT_MESSAGE = 'timeout';\r\n\r\n/**\r\n * Creates a cancellable axios instance\r\n * @param {object} config\r\n */\r\nfunction createCancelableAxios(config) {\r\n let cancel;\r\n const instance = axios.create({\r\n ...config,\r\n cancelToken: new axios.CancelToken(c => {\r\n cancel = c;\r\n })\r\n });\r\n\r\n instance.cancel = message => {\r\n cancel(message);\r\n instance.defaults.cancelToken = new axios.CancelToken(c => {\r\n cancel = c;\r\n });\r\n };\r\n\r\n return instance;\r\n}\r\n\r\naxios.defaults.timeoutErrorMessage = TIME_OUT_MESSAGE;\r\n\r\naxios.defaults.headers.post['Content-Type'] = 'application/json';\r\n\r\nconst regularAxios = createCancelableAxios({\r\n baseURL: BASE_URL,\r\n timeout: TIME_OUT\r\n});\r\n\r\nconst tokenAxios = createCancelableAxios({\r\n baseURL: BASE_API_URL,\r\n timeout: TIME_OUT\r\n});\r\n\r\nregularAxios.defaults.headers.common['Content-Type'] = 'application/json';\r\n\r\ntokenAxios.defaults.headers.common['Content-Type'] = 'application/json';\r\n\r\ntokenAxios.interceptors.request.use(config => {\r\n const currentToken = store.getState().getIn(['tokens', 'currentToken']);\r\n\r\n if (currentToken) {\r\n config.headers.Authorization = `Bearer ${currentToken}`;\r\n }\r\n\r\n return config;\r\n});\r\n\r\nexport const configAxiosInstances = store => {\r\n // Axios interceptors for all API request as an unauthenticated user\r\n regularAxios.interceptors.response.use(responseOk, responseError(store));\r\n\r\n tokenAxios.interceptors.response.use(responseOk);\r\n};\r\n\r\nconst isCancelledRequestException = axios.isCancel;\r\n\r\nexport { regularAxios, tokenAxios, isCancelledRequestException };\r\n","import { tokenAxios, regularAxios } from './axios';\r\n\r\n/**\r\n * Get subscription token data\r\n *\r\n * @returns {Promise}\r\n */\r\nexport function getEmailUnsubscribeData() {\r\n return tokenAxios.get(`/v1/EmailUnsubscribe`);\r\n}\r\n\r\n/**\r\n * Handle subscription decision\r\n *\r\n * @param {boolean} subscription\r\n * @param {object} data\r\n * @returns {Promise}\r\n */\r\nexport function handleElectronicMessageRequest(subscription, data) {\r\n let functionToCall = tokenAxios.delete;\r\n\r\n if (!subscription) {\r\n functionToCall = tokenAxios.post;\r\n }\r\n\r\n return functionToCall(`/v1/EmailUnsubscribe`, data);\r\n}\r\n\r\nexport function getLoanDocumentRequest() {\r\n return tokenAxios.get(`/v1/LoanDocuments/PDF`, {\r\n responseType: 'blob'\r\n });\r\n}\r\n","export function makeActionCreator(type, ...argNames) {\r\n return (...args) => {\r\n const action = { type };\r\n argNames.forEach((arg, index) => {\r\n action[argNames[index]] = args[index];\r\n });\r\n return action;\r\n };\r\n}\r\n","export const SAVE_ENTRY_TOKEN = 'balder/Token/SAVE_ENTRY_TOKEN';\r\nexport const RESET_CURRENT_TOKEN = 'balder/Token/RESET_CURRENT_TOKEN';\r\n","import { makeActionCreator } from 'redux/utils';\r\nimport { RESET_CURRENT_TOKEN, SAVE_ENTRY_TOKEN } from './constants';\r\n\r\nexport const saveEntryToken = makeActionCreator(SAVE_ENTRY_TOKEN, 'token');\r\nexport const resetCurrentToken = makeActionCreator(RESET_CURRENT_TOKEN);\r\n","import { call } from '@redux-saga/core/effects';\r\nimport { isCancelledRequestException } from 'api/axios';\r\nimport { HTTP_STATUS } from 'api/axios/interceptors';\r\nimport { fork, take } from 'redux-saga/effects';\r\nimport {\r\n showSuccessNotification,\r\n showErrorNotificationFromResponse\r\n} from './notifications';\r\n\r\n/**\r\n * Saga to perform an API request\r\n *\r\n * @param {function} requestFunction\r\n * @param {Array} requestData\r\n * @param {object} config\r\n * @param {String} config.actionTitle\r\n * @param {boolean} config.showErrorMessage\r\n * @param {boolean} config.showSuccessMessage\r\n * @param {Number} config.retryOnErrorCount\r\n *\r\n * @returns {object}\r\n */\r\nexport function* apiRequest(requestFunction, requestData, config = {}) {\r\n if (typeof requestFunction !== 'function') {\r\n throw new Error('requestFunction must be a function');\r\n }\r\n\r\n if (!Array.isArray(requestData)) {\r\n throw new Error('requestData must be an Array');\r\n }\r\n\r\n if (typeof config !== 'object') {\r\n throw new Error('config must be an object');\r\n }\r\n\r\n const options = Object.assign(\r\n {\r\n showSuccessMessage: false,\r\n showErrorMessage: false,\r\n retryOnErrorCount: 0\r\n },\r\n config\r\n );\r\n\r\n let {\r\n actionTitle,\r\n showSuccessMessage,\r\n showErrorMessage,\r\n retryOnErrorCount,\r\n successMessageDescription,\r\n errorMessageDescription\r\n } = options;\r\n\r\n if (retryOnErrorCount < 0) {\r\n retryOnErrorCount = 0;\r\n }\r\n\r\n let latestError = null;\r\n let response = {};\r\n do {\r\n try {\r\n response = yield call(requestFunction, ...requestData);\r\n\r\n if (response?.isSuccess && showSuccessMessage) {\r\n showSuccessNotification({ successMessageDescription });\r\n }\r\n return response;\r\n } catch (error) {\r\n latestError = error;\r\n if (error.response) {\r\n switch (error.response.status) {\r\n case HTTP_STATUS.BAD_GATEWAY:\r\n retryOnErrorCount--;\r\n break;\r\n case HTTP_STATUS.NOT_FOUND:\r\n retryOnErrorCount = 0;\r\n showErrorMessage = false;\r\n break;\r\n default:\r\n retryOnErrorCount = 0;\r\n break;\r\n }\r\n } else {\r\n retryOnErrorCount = 0;\r\n if (error.hasOwnProperty('notFound')) {\r\n showErrorMessage = !error.notFound;\r\n }\r\n }\r\n }\r\n retryOnErrorCount = 0;\r\n } while (retryOnErrorCount > 0);\r\n\r\n if (\r\n latestError &&\r\n showErrorMessage &&\r\n !isCancelledRequestException(latestError)\r\n ) {\r\n let title = actionTitle || latestError.title || 'An error occurred';\r\n let message =\r\n (latestError.showToUser && latestError.message) ||\r\n errorMessageDescription ||\r\n `The operation ${actionTitle || ''} could not be performed.`;\r\n\r\n if (actionTitle && latestError.title) {\r\n title = `${actionTitle} (${latestError.title})`;\r\n }\r\n\r\n latestError.title = title;\r\n latestError.message = message;\r\n showErrorNotificationFromResponse(latestError);\r\n }\r\n\r\n return latestError;\r\n}\r\n\r\nexport const customTakeLatest = (pattern, saga, ...args) =>\r\n fork(function* () {\r\n const patterns = [];\r\n let timer;\r\n while (true) {\r\n const action = yield take(pattern);\r\n if (!patterns.includes(action.type)) {\r\n patterns.push(action.type);\r\n yield fork(saga, ...args.concat(action));\r\n\r\n clearTimeout(timer);\r\n timer = setTimeout(() => {\r\n patterns.length = 0;\r\n }, 1000);\r\n }\r\n }\r\n });\r\n","export const GET_SUBSCRIPTION_TOKEN_DATA =\r\n 'balder/ElectronicMessages/GET_SUBSCRIPTION_TOKEN_DATA';\r\nexport const GET_SUBSCRIPTION_TOKEN_DATA_SUCCESS =\r\n 'balder/ElectronicMessages/GET_SUBSCRIPTION_TOKEN_DATA_SUCCESS';\r\nexport const GET_SUBSCRIPTION_TOKEN_DATA_FAILED =\r\n 'balder/ElectronicMessages/GET_SUBSCRIPTION_TOKEN_DATA_FAILED';\r\n\r\nexport const HANDLE_ELECTRONIC_MSG_SUBSCRIPTION =\r\n 'balder/ElectronicMessages/HANDLE_ELECTRONIC_MSG_SUBSCRIPTION';\r\nexport const HANDLE_ELECTRONIC_MSG_SUBSCRIPTION_SUCCESS =\r\n 'balder/ElectronicMessages/HANDLE_ELECTRONIC_MSG_SUBSCRIPTION_SUCCESS';\r\nexport const HANDLE_ELECTRONIC_MSG_SUBSCRIPTION_FAILED =\r\n 'balder/ElectronicMessages/HANDLE_ELECTRONIC_MSG_SUBSCRIPTION_FAILED';\r\n","import { makeActionCreator } from 'redux/utils';\r\nimport {\r\n GET_SUBSCRIPTION_TOKEN_DATA,\r\n GET_SUBSCRIPTION_TOKEN_DATA_FAILED,\r\n GET_SUBSCRIPTION_TOKEN_DATA_SUCCESS,\r\n HANDLE_ELECTRONIC_MSG_SUBSCRIPTION,\r\n HANDLE_ELECTRONIC_MSG_SUBSCRIPTION_FAILED,\r\n HANDLE_ELECTRONIC_MSG_SUBSCRIPTION_SUCCESS\r\n} from './constants';\r\n\r\nexport const getSubscriptionTokenData = makeActionCreator(\r\n GET_SUBSCRIPTION_TOKEN_DATA\r\n);\r\nexport const getSubscriptionTokenDataSuccess = makeActionCreator(\r\n GET_SUBSCRIPTION_TOKEN_DATA_SUCCESS,\r\n 'payload'\r\n);\r\nexport const getSubscriptionTokenDataFailed = makeActionCreator(\r\n GET_SUBSCRIPTION_TOKEN_DATA_FAILED,\r\n 'error'\r\n);\r\n\r\nexport const handleElectronicMessageSubscription = makeActionCreator(\r\n HANDLE_ELECTRONIC_MSG_SUBSCRIPTION,\r\n 'payload'\r\n);\r\nexport const handleElectronicMessageSubscriptionSuccess = makeActionCreator(\r\n HANDLE_ELECTRONIC_MSG_SUBSCRIPTION_SUCCESS,\r\n 'payload'\r\n);\r\nexport const handleElectronicMessageSubscriptionFailed = makeActionCreator(\r\n HANDLE_ELECTRONIC_MSG_SUBSCRIPTION_FAILED,\r\n 'error'\r\n);\r\n","import { getEmailUnsubscribeData, handleElectronicMessageRequest } from 'api';\r\nimport { call, put, takeLatest } from 'redux-saga/effects';\r\nimport { resetCurrentToken } from 'redux/tokens/actions';\r\nimport { showSuccessNotification } from 'utils/notifications';\r\nimport { apiRequest } from 'utils/sagas';\r\nimport {\r\n getSubscriptionTokenData,\r\n getSubscriptionTokenDataFailed,\r\n getSubscriptionTokenDataSuccess,\r\n handleElectronicMessageSubscriptionFailed,\r\n handleElectronicMessageSubscriptionSuccess\r\n} from './actions';\r\nimport {\r\n GET_SUBSCRIPTION_TOKEN_DATA,\r\n HANDLE_ELECTRONIC_MSG_SUBSCRIPTION\r\n} from './constants';\r\n\r\nfunction* getUnsubscribeTokenSaga() {\r\n yield takeLatest(GET_SUBSCRIPTION_TOKEN_DATA, function* () {\r\n const response = yield call(apiRequest, getEmailUnsubscribeData, []);\r\n\r\n if (!response.isSuccess) {\r\n yield put(getSubscriptionTokenDataFailed(response));\r\n yield put(resetCurrentToken());\r\n return;\r\n }\r\n\r\n yield put(getSubscriptionTokenDataSuccess(response.data));\r\n });\r\n}\r\n\r\nfunction* handleSubscriptionSaga() {\r\n yield takeLatest(HANDLE_ELECTRONIC_MSG_SUBSCRIPTION, function* ({ payload }) {\r\n const response = yield call(apiRequest, handleElectronicMessageRequest, [\r\n payload.subscription,\r\n payload.data\r\n ]);\r\n\r\n if (!response.isSuccess) {\r\n yield put(handleElectronicMessageSubscriptionFailed(response));\r\n return;\r\n }\r\n\r\n yield put(handleElectronicMessageSubscriptionSuccess(response.data));\r\n // Option for only unsubscribe\r\n yield put(getSubscriptionTokenData());\r\n\r\n // Option for subscribe/unsubscribe\r\n // showSuccessNotification(\r\n // 'The subscription has been updated.',\r\n // 'Update successfully'\r\n // );\r\n });\r\n}\r\n\r\nconst sagas = [getUnsubscribeTokenSaga, handleSubscriptionSaga];\r\n\r\nexport default sagas;\r\n","export const FAILED_STATUS = 'FAILED';\r\nexport const SUCCESSFUL_STATUS = 'SUCCESSFUL';\r\nexport const IS_FETCHING_STATUS = 'IS_FETCHING';\r\n\r\nexport const GET_LOAN_DOCUMENT_BY_TOKEN =\r\n 'balder/resources/GET_LOAN_DOCUMENT_BY_TOKEN';\r\nexport const GET_LOAN_DOCUMENT_BY_TOKEN_SUCCESS =\r\n 'balder/resources/GET_LOAN_DOCUMENT_BY_TOKEN_SUCCESS';\r\nexport const GET_LOAN_DOCUMENT_BY_TOKEN_FAILED =\r\n 'balder/resources/GET_LOAN_DOCUMENT_BY_TOKEN_FAILED';\r\n","import { makeActionCreator } from 'redux/utils';\r\nimport {\r\n GET_LOAN_DOCUMENT_BY_TOKEN,\r\n GET_LOAN_DOCUMENT_BY_TOKEN_SUCCESS,\r\n GET_LOAN_DOCUMENT_BY_TOKEN_FAILED\r\n} from './constants';\r\n\r\nexport const getLoanDocumentByToken = makeActionCreator(\r\n GET_LOAN_DOCUMENT_BY_TOKEN,\r\n 'payload'\r\n);\r\nexport const getLoanDocumentByTokenSuccess = makeActionCreator(\r\n GET_LOAN_DOCUMENT_BY_TOKEN_SUCCESS,\r\n 'payload'\r\n);\r\nexport const getLoanDocumentByTokenFailed = makeActionCreator(\r\n GET_LOAN_DOCUMENT_BY_TOKEN_FAILED,\r\n 'error'\r\n);\r\n","export const XXS = 'xxs';\r\nexport const XS = 'xs';\r\nexport const SM = 'sm';\r\nexport const MD = 'md';\r\nexport const LG = 'lg';\r\nexport const XL = 'xl';\r\nexport const XXL = 'xxl';\r\n\r\nexport const BREAKPOINT_XXS = 370;\r\nexport const BREAKPOINT_XS = 480;\r\nexport const BREAKPOINT_SM = 576;\r\nexport const BREAKPOINT_MD = 768;\r\nexport const BREAKPOINT_LG = 992;\r\nexport const BREAKPOINT_XL = 1200;\r\nexport const BREAKPOINT_XXL = 1600;\r\n\r\nexport const RESPONSIVE_BREAKPOINTS = {\r\n [XXS]: BREAKPOINT_XXS,\r\n [XS]: BREAKPOINT_XS,\r\n [SM]: BREAKPOINT_SM,\r\n [MD]: BREAKPOINT_MD,\r\n [LG]: BREAKPOINT_LG,\r\n [XL]: BREAKPOINT_XL,\r\n [XXL]: BREAKPOINT_XXL\r\n};\r\n\r\nexport const WIDTH_BREAKPOINT_XXS = `${BREAKPOINT_XXS}px`;\r\nexport const WIDTH_BREAKPOINT_XS = `${BREAKPOINT_XS}px`;\r\nexport const WIDTH_BREAKPOINT_SM = `${BREAKPOINT_SM}px`;\r\nexport const WIDTH_BREAKPOINT_MD = `${BREAKPOINT_MD}px`;\r\nexport const WIDTH_BREAKPOINT_LG = `${BREAKPOINT_LG}px`;\r\nexport const WIDTH_BREAKPOINT_XL = `${BREAKPOINT_XL}px`;\r\nexport const WIDTH_BREAKPOINT_XXL = `${BREAKPOINT_XXL}px`;\r\n\r\nexport const RESPONSIVE_BREAKPOINT_WIDTHS = {\r\n [XXS]: WIDTH_BREAKPOINT_XXS,\r\n [XS]: WIDTH_BREAKPOINT_XS,\r\n [SM]: WIDTH_BREAKPOINT_SM,\r\n [MD]: WIDTH_BREAKPOINT_MD,\r\n [LG]: WIDTH_BREAKPOINT_LG,\r\n [XL]: WIDTH_BREAKPOINT_XL,\r\n [XXL]: WIDTH_BREAKPOINT_XXL\r\n};\r\n\r\nexport const MAIN_COLOR = '#007F45';\r\nexport const BACKGROUND_COLOR_LIGHT = '#008C59';\r\nexport const BACKGROUND_COLOR_DARK = MAIN_COLOR;\r\nexport const ACTION_COLOR = 'rgba(218,61,29,1)';\r\nexport const ACTION_COLOR_HOVER = 'rgba(195,76,23,1)';\r\n\r\nexport const GRAY_BACKGROUND = '#fafafa';\r\nexport const BACKGROUND_DEFAULT = '#FFFFFF';\r\nexport const BACKGROUND_AREA = 'rgba(250,250,250,1)';\r\nexport const BACKGROUND_INFO = '#fffbe6';\r\nexport const COLOR_ICON_INFO = '#faad14';\r\nexport const TRANSITION_DEFAULT =\r\n 'all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1)';\r\n\r\n// FONTS\r\nexport const FONT_FAMILY = `Roboto,'Open sans',sans-serif`;\r\nexport const FONT_BASE = '16px';\r\nexport const FONT_BIG_SIZE = '1rem';\r\nexport const FONT_SIZE = '16px';\r\nexport const FONT_SIZE_BUTTON = '0.9em';\r\nexport const FONT_SIZE_SMALL = '0.9em';\r\nexport const FONT_SIZE_SMALLEST = '0.7em';\r\nexport const LINE_HEIGHT = '1.5';\r\n\r\nexport const FONT_CLASSIC = 'Yellowtail';\r\nexport const FONT_ELEGANT = 'Great Vibes';\r\nexport const FONT_FORMAL = 'Dancing Script';\r\n\r\n// ----FONT COLORS\r\nexport const PEN_COLOR = 'blue';\r\nexport const FONT_COLOR_GRAY = '#878787';\r\nexport const FONT_COLOR = '#1C1E20';\r\nexport const FONT_COLOR_LIGHT = '#485963';\r\nexport const LABEL_FONT_COLOR = '#737373';\r\nexport const FONT_IN_DARK = 'rgba(255, 255, 255, 0.8)';\r\n\r\nexport const LABEL_COLOR = 'rgba(255, 255, 255, 0.8)';\r\n\r\nexport const LOGO_COLOR_GRAY = 'rgb(31,25,26)';\r\nexport const FONT_HEADER_COLOR = 'rgba(77,77,77,.8)';\r\nexport const FONT_HEADER_LIGHT_COLOR = 'rgba(255,255,255,.8)';\r\nexport const FONT_TITLE_COLOR = 'rgba(0, 0, 0, .5)';\r\nexport const LABEL_DARK_THEME = '#9EB5B3';\r\nexport const VALUE_DARK_THEME = '#D3DEDD';\r\n\r\nexport const COMPANY_NAME_GREEN = '#007F45';\r\nexport const COMPANY_NAME_BLACK = '#231f20';\r\n\r\nexport const MOBILE_BREAKPOINT_TO_SIZE = '900';\r\nexport const SIGNER_AREA_HEIGHT = 'calc(100vh - 335px)';\r\nexport const SIGNER_AREA_HEIGHT_MOBILE = 'calc(100vh - 210px)';\r\nexport const WIDTH_CENTER_CONTENT = '75%';\r\n\r\n// LAYER\r\n\r\n// ADA COMPLIANCE COLOR FOCUS;\r\nexport const BORDER_BLACK = 'rgba(0, 0, 0, 1)';\r\n\r\nexport const LAYER_1 = '1000';\r\nexport const LAYER_2 = '100';\r\nexport const LAYER_3 = '10';\r\nexport const LAYER_4 = '600';\r\n\r\n//DISABLE STYLE\r\nexport const DISABLE_COLOR = '#F5F5F5';\r\nexport const DISABLE_BORDER = '1px solid #D9DEE4';\r\n\r\n// Backgrounds\r\n\r\nexport const BACKGROUND_LIGHT = 'rgba(243, 243, 243, 1);';\r\nexport const BACKGROUND_DARK = '#231f20';\r\nexport const BACKGROUND_SOLID = 'rgba(248,248,248,1)';\r\n// export const BACKGROUND_DARK = 'rgb(50, 54, 57)';\r\nexport const HEADER_LIGHT = '#f9f9f9';\r\nexport const HEADER_DARK = BACKGROUND_DARK;\r\nexport const READ_BACKGROUND = '#f9f9f9';\r\nexport const BACKGROUND_PDF = '#F4F4F4';\r\n\r\nexport const bg_grad_document = `repeating-linear-gradient( 130deg, rgba(166,157,160,0.1), rgba(166,157,160,0.1) 0, rgba(166,157,160,0.1) 4px, rgba(255,255,255,0.1) 0, rgba(255,255,255,0.1) 8px ), linear-gradient( 273deg, ${BACKGROUND_DARK} 13%, ${BACKGROUND_DARK} 100% )`;\r\n\r\n// BORDERS\r\nexport const BORDER_COLOR = '#D9DEE4';\r\nexport const BORDER_DEFAULT = `1px solid ${BORDER_COLOR}`;\r\nexport const BORDER_LIGHT = `1px solid #ededed`;\r\nexport const BORDER_RADIUS = `4px`;\r\nexport const BORDER_ACTION = `1.5px solid rgba(255,94,0,.5)`;\r\n\r\nexport const AREA_BORDERED = `1px dashed ${MAIN_COLOR}`;\r\nexport const BORDER_STRONG = '2px solid rgba(5, 29, 18, 0.87)';\r\n\r\nexport const HOVER_COLOR = 'rgba(0,127,69,.1)';\r\nexport const PLACEHOLDER_COLOR = 'rgba(77, 77,77, 0.6)';\r\nexport const FONT_COLOR_SOFT = 'rgba(77,77,77,.8)';\r\nexport const FONT_COLOR_DISABLED = 'rgba(77,77,77,.6)';\r\nexport const FONT_SIZE_TABLE = '12px';\r\nexport const FONT_WEIGHT = '600';\r\n\r\n//PADDINGS\r\nexport const PADDING_DESKTOP = '40px';\r\nexport const PADDING_MOBILE = '20px';\r\n\r\n// SHADOWS\r\nexport const BOX_SHADOW =\r\n '0 3px 6px -4px rgba(0,0,0,.12), 0 6px 16px 0 rgba(0,0,0,.08), 0 9px 28px 8px rgba(0,0,0,.05)';\r\n\r\n// ICONS\r\nexport const ICON_SIZE = '26px';\r\n\r\n// BUTTONS\r\nexport const BUTTON_DISABLED_COLOR = 'rgba(123,123,123,.5)';\r\n\r\n// SPACE\r\nexport const SIZE_BETWEEN_ELEMENTS = 8;\r\nexport const GUTTER_DEFAULT = [\r\n { xs: 0, sm: 16 },\r\n { sm: 1, xs: 0 }\r\n];\r\n\r\n// DATE\r\nexport const DATE_TIME_FORMAT = 'MM/DD/YYYY hh:mm a';\r\nexport const DATE_FORMAT = 'MM/DD/YYYY';\r\nexport const DATE_FORMAT_TO_SAVE = 'MMDDYYYY';\r\n\r\n// STATE COLORS\r\nexport const SUCCESS_COLOR = '#1A9768';\r\nexport const WARNING_COLOR = '#FFC15E';\r\n// export const ERROR_COLOR = '#B3001B';\r\nexport const ERROR_COLOR = 'red';\r\nexport const INFO_COLOR = '#231F20';\r\n","import { call, put, takeLatest } from 'redux-saga/effects';\r\nimport FileSaver from 'file-saver';\r\nimport moment from 'moment';\r\nimport { apiRequest } from 'utils/sagas';\r\n\r\nimport { getLoanDocumentRequest } from 'api';\r\n\r\nimport {\r\n getLoanDocumentByTokenFailed,\r\n getLoanDocumentByTokenSuccess\r\n} from './actions';\r\nimport { resetCurrentToken } from 'redux/tokens/actions';\r\n\r\nimport { GET_LOAN_DOCUMENT_BY_TOKEN } from './constants';\r\nimport { DATE_FORMAT_TO_SAVE } from 'theme/variables';\r\n\r\nfunction* getLoanDocumentByTokenSaga() {\r\n yield takeLatest(GET_LOAN_DOCUMENT_BY_TOKEN, function* ({ payload }) {\r\n const response = yield call(apiRequest, getLoanDocumentRequest, []);\r\n\r\n if (!response.isSuccess) {\r\n yield put(getLoanDocumentByTokenFailed(response));\r\n yield put(resetCurrentToken());\r\n return;\r\n }\r\n\r\n const filename = response.request?.getResponseHeader('Content-Disposition');\r\n const filenameMatch = filename.match(/filename\\*?=['\"]?([^'\";]+)\\.pdf['\"]?/); // prettier-ignore\r\n let documentName = payload.name;\r\n\r\n if (filenameMatch) {\r\n documentName = filenameMatch[1];\r\n }\r\n\r\n var blob = new Blob([response.data], {\r\n type: 'application/pdf;charset=utf-8'\r\n });\r\n\r\n FileSaver.saveAs(\r\n blob,\r\n `${documentName}_${moment().format(DATE_FORMAT_TO_SAVE)}.pdf`\r\n );\r\n\r\n yield put(getLoanDocumentByTokenSuccess());\r\n yield put(resetCurrentToken());\r\n });\r\n}\r\n\r\nconst sagas = [getLoanDocumentByTokenSaga];\r\nexport default sagas;\r\n","const resourceBase = '/rs';\r\nconst appsBase = '/app/download';\r\n\r\nexport const ROUTES = {\r\n HOME: '/',\r\n STATEMENT: '/statement',\r\n DISCLOSURES: '/disclosures',\r\n COPPA_DISCLOSURE: '/coppa_disclosure',\r\n PRIVACY_POLICY: '/privacy_policy',\r\n NOT_AUTHORIZED: '/403',\r\n NOT_FOUND: '/404',\r\n UNSUBSCRIBE: {\r\n BASE: '/unsubscribe',\r\n WITH_TK: '/unsubscribe/:token'\r\n },\r\n RESOURCES: {\r\n LOAN: {\r\n DOCUMENTS: {\r\n BASE: `${resourceBase}/loan/document/view`,\r\n WITH_TK: `${resourceBase}/loan/document/view/:token`\r\n }\r\n },\r\n APPS: {\r\n WITH_TYPE: `${appsBase}/:clientType`\r\n }\r\n }\r\n};\r\n","import { ROUTES } from 'consts/routes';\r\nexport const PRIVACY_POLICY_URL = process.env.REACT_APP_PRIVACY_POLICY_URL;\r\n\r\nexport const APP_NAME = 'eSIGN';\r\n\r\nexport const TIMES = {\r\n MINUTE: '60000',\r\n HALF_MINUTE: '30000',\r\n QUARTER_MINUTE: '15000',\r\n SECOND: '1000',\r\n FIVE_MINUTES: '300000',\r\n MINUTES_2: '120000'\r\n};\r\n\r\nexport const UNKNOWN_ALERT_NOMENCLATURE = 0;\r\nexport const ERROR_ALERT_NOMENCLATURE = 1;\r\nexport const WARNING_ALERT_NOMENCLATURE = 2;\r\nexport const INFORMATION_ALERT_NOMENCLATURE = 3;\r\nexport const SUCCESS_ALERT_NOMENCLATURE = 4;\r\n\r\nexport const APPLICANT_PREFIX = 'applicant';\r\nexport const CO_APPLICANT_PREFIX = 'coApplicant';\r\nexport const SALES_REP_PREFIX = 'salesRep';\r\nexport const APPLICATION_DETAILS_PREFIX = 'applicationDetails';\r\n\r\nexport const BORROWER_NOMENCLATURE = '18';\r\nexport const COBORROWER_NOMENCLATURE = '28';\r\n\r\nexport const APPLICANT_TITLE = {\r\n [BORROWER_NOMENCLATURE]: 'Applicant Information',\r\n [COBORROWER_NOMENCLATURE]: 'Co-Applicant Information'\r\n};\r\n\r\nexport const APPLICANT_NOMENCLATURE_PREFIX_MAP = {\r\n [BORROWER_NOMENCLATURE]: APPLICANT_PREFIX,\r\n [COBORROWER_NOMENCLATURE]: CO_APPLICANT_PREFIX\r\n};\r\n\r\nexport const legalLinks = [\r\n ROUTES.STATEMENT,\r\n ROUTES.DISCLOSURES,\r\n ROUTES.COPPA_DISCLOSURE,\r\n ROUTES.PRIVACY_POLICY\r\n];\r\n\r\nexport const legalLinksName = {\r\n [ROUTES.STATEMENT]: 'Statement on Use of Electronic Records',\r\n [ROUTES.DISCLOSURES]: 'General Application Disclosures',\r\n [ROUTES.COPPA_DISCLOSURE]: 'COPPA Disclosure',\r\n [ROUTES.PRIVACY_POLICY]: 'Privacy Policy'\r\n};\r\n\r\nexport const RESET_APP = 'balder/App/RESET_APP';\r\n","import { combineReducers } from 'redux-immutable';\r\nimport { fromJS } from 'immutable';\r\n\r\nimport { RESET_CURRENT_TOKEN, SAVE_ENTRY_TOKEN } from './constants';\r\nimport { RESET_APP } from 'redux/app/constants';\r\n\r\nconst currentTokenReducer = (state = null, action) => {\r\n switch (action.type) {\r\n case SAVE_ENTRY_TOKEN:\r\n return fromJS(action.token);\r\n case RESET_CURRENT_TOKEN:\r\n case RESET_APP:\r\n return null;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default combineReducers({\r\n currentToken: currentTokenReducer\r\n});\r\n","import { LOCATION_CHANGE } from 'connected-react-router';\r\nimport { fromJS } from 'immutable';\r\nimport { combineReducers } from 'redux-immutable';\r\nimport {\r\n GET_SUBSCRIPTION_TOKEN_DATA,\r\n GET_SUBSCRIPTION_TOKEN_DATA_FAILED,\r\n GET_SUBSCRIPTION_TOKEN_DATA_SUCCESS,\r\n HANDLE_ELECTRONIC_MSG_SUBSCRIPTION,\r\n HANDLE_ELECTRONIC_MSG_SUBSCRIPTION_FAILED,\r\n HANDLE_ELECTRONIC_MSG_SUBSCRIPTION_SUCCESS\r\n} from './constants';\r\nimport { RESET_APP } from 'redux/app/constants';\r\n\r\nconst subscriptionTokenVerifiedReducer = (state = null, action) => {\r\n switch (action.type) {\r\n case GET_SUBSCRIPTION_TOKEN_DATA_SUCCESS:\r\n return fromJS(action.payload);\r\n case GET_SUBSCRIPTION_TOKEN_DATA:\r\n case GET_SUBSCRIPTION_TOKEN_DATA_FAILED:\r\n case LOCATION_CHANGE:\r\n case RESET_APP:\r\n return null;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nconst subscriptionTokenVerifiedIsFetchingReducer = (state = false, action) => {\r\n switch (action.type) {\r\n case GET_SUBSCRIPTION_TOKEN_DATA:\r\n return true;\r\n case GET_SUBSCRIPTION_TOKEN_DATA_FAILED:\r\n case GET_SUBSCRIPTION_TOKEN_DATA_SUCCESS:\r\n case RESET_APP:\r\n return false;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nconst handleElectronicMsgSubscriptionIsFetchingReducer = (\r\n state = false,\r\n action\r\n) => {\r\n switch (action.type) {\r\n case HANDLE_ELECTRONIC_MSG_SUBSCRIPTION:\r\n return true;\r\n case HANDLE_ELECTRONIC_MSG_SUBSCRIPTION_SUCCESS:\r\n case HANDLE_ELECTRONIC_MSG_SUBSCRIPTION_FAILED:\r\n case RESET_APP:\r\n return false;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default combineReducers({\r\n subscriptionTokenVerified: subscriptionTokenVerifiedReducer,\r\n subscriptionTokenVerifiedIsFetching:\r\n subscriptionTokenVerifiedIsFetchingReducer,\r\n handleElectronicMsgSubscriptionIsFetching:\r\n handleElectronicMsgSubscriptionIsFetchingReducer\r\n});\r\n","import { combineReducers } from 'redux-immutable';\r\nimport {\r\n FAILED_STATUS,\r\n GET_LOAN_DOCUMENT_BY_TOKEN,\r\n GET_LOAN_DOCUMENT_BY_TOKEN_FAILED,\r\n GET_LOAN_DOCUMENT_BY_TOKEN_SUCCESS,\r\n IS_FETCHING_STATUS,\r\n SUCCESSFUL_STATUS\r\n} from './constants';\r\nimport { SAVE_ENTRY_TOKEN } from 'redux/tokens/constants';\r\nimport { RESET_APP } from 'redux/app/constants';\r\n\r\nconst getLoanDocumentByTokenStateReducer = (state = null, action) => {\r\n switch (action.type) {\r\n case GET_LOAN_DOCUMENT_BY_TOKEN:\r\n return IS_FETCHING_STATUS;\r\n case GET_LOAN_DOCUMENT_BY_TOKEN_FAILED:\r\n return FAILED_STATUS;\r\n case GET_LOAN_DOCUMENT_BY_TOKEN_SUCCESS:\r\n return SUCCESSFUL_STATUS;\r\n case SAVE_ENTRY_TOKEN:\r\n case RESET_APP:\r\n return null;\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default combineReducers({\r\n getLoanDocumentByTokenState: getLoanDocumentByTokenStateReducer\r\n});\r\n","/**\r\n * Combine all reducers in this file and export the combined reducers.\r\n * If we were to do this in store.js, reducers wouldn't be hot reloadable.\r\n */\r\n\r\nimport { combineReducers } from 'redux-immutable';\r\nimport { connectRouter } from 'connected-react-router/immutable';\r\n\r\nimport tokensReducer from './tokens/reducer';\r\nimport electronicMsgSubscriptionReducer from './electronicMsgSubscription/reducer';\r\nimport resourcesReducer from './resources/reducer';\r\n\r\n/**\r\n * Creates the main reducer with the asynchronously loaded ones\r\n */\r\nconst createRootReducer = (history, asyncReducers) => {\r\n return combineReducers({\r\n router: connectRouter(history),\r\n tokens: tokensReducer,\r\n electronicMsgSubscription: electronicMsgSubscriptionReducer,\r\n resources: resourcesReducer,\r\n ...asyncReducers\r\n });\r\n};\r\n\r\nexport default createRootReducer;\r\n","/**\r\n * Create the store with asynchronously loaded reducers\r\n */\r\n\r\nimport { createStore, applyMiddleware, compose } from 'redux';\r\nimport { fromJS } from 'immutable';\r\nimport { routerMiddleware } from 'connected-react-router/immutable';\r\nimport createSagaMiddleware from 'redux-saga';\r\n\r\nimport pick from 'lodash/pick';\r\nimport history from 'utils/history';\r\n\r\n// Import state persistance utilities\r\nimport { loadState, saveState } from 'utils/storage';\r\nimport electronicMsgSubscription from './electronicMsgSubscription/sagas';\r\nimport resources from './resources/sagas';\r\nimport createReducer from './reducers';\r\n\r\nconst sagaMiddleware = createSagaMiddleware();\r\n\r\nconst configureStore = (initialState = {}, history) => {\r\n // Create the store with two middlewares\r\n // 1. sagaMiddleware: Makes redux-sagas work\r\n // 2. routerMiddleware: Syncs the location/URL path to the state\r\n const middlewares = [sagaMiddleware, routerMiddleware(history)];\r\n\r\n const enhancers = [applyMiddleware(...middlewares)];\r\n\r\n // If Redux DevTools Extension is installed use it, otherwise use Redux compose\r\n /* eslint-disable no-underscore-dangle */\r\n const composeEnhancers =\r\n process.env.NODE_ENV !== 'production' &&\r\n typeof window === 'object' &&\r\n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n : compose;\r\n /* eslint-enable */\r\n\r\n const store = createStore(\r\n createReducer(history),\r\n fromJS(initialState),\r\n composeEnhancers(...enhancers)\r\n );\r\n\r\n // Extensions\r\n store.runSaga = sagaMiddleware.run;\r\n\r\n // Async reducer registry\r\n store.asyncReducers = {};\r\n // Saga registry\r\n store.asyncSagas = {\r\n // appSaga,\r\n electronicMsgSubscription,\r\n resources\r\n };\r\n\r\n // appSaga.map(store.runSaga);\r\n electronicMsgSubscription.map(store.runSaga);\r\n resources.map(store.runSaga);\r\n\r\n // Make reducers hot reloadable, see http://mxs.is/googmo\r\n /* istanbul ignore next */\r\n if (module.hot) {\r\n module.hot.accept('./reducers', () => {\r\n import('./reducers').then(reducerModule => {\r\n const createReducers = reducerModule.default;\r\n const nextReducers = createReducers(history, store.asyncReducers);\r\n\r\n store.replaceReducer(nextReducers);\r\n });\r\n });\r\n }\r\n\r\n return store;\r\n};\r\n\r\n// Create redux store with history\r\nconst initialState = loadState();\r\n\r\nconst store = configureStore(initialState, history);\r\n\r\n// Sync state and session storage\r\nstore.subscribe(() => {\r\n const storeState = store.getState().toJS();\r\n\r\n saveState(\r\n pick(storeState, [\r\n 'router',\r\n 'tokens',\r\n 'electronicMsgSubscription',\r\n 'resources'\r\n ])\r\n );\r\n});\r\n\r\nexport default store;\r\n","import { createGlobalStyle } from 'styled-components';\r\n\r\n/* eslint no-unused-expressions: 0 */\r\nconst GlobalStyles = createGlobalStyle`\r\n html, body {\r\n width: 100%;\r\n min-height: 100%;\r\n margin: 0;\r\n padding: 0;\r\n}\r\n`;\r\n\r\nexport default GlobalStyles;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://cra.link/PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\n// Update poll time in milliseconds\r\nconst updateLoopTime = process.env.REACT_APP_NEW_VERSION_POLLING_LOOP_MS;\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://cra.link/PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n if (registration.waiting) {\r\n if (config && config.onWaiting) {\r\n config.onWaiting(registration.waiting);\r\n }\r\n }\r\n\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://cra.link/PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n\r\n // Poll for live updates to the serviceWorker\r\n setInterval(async () => {\r\n await registration.update();\r\n }, updateLoopTime);\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' }\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then(registration => {\r\n registration.unregister();\r\n })\r\n .catch(error => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import React, { useState, useEffect, useMemo, useContext } from 'react';\r\nimport * as serviceWorker from 'serviceWorkerRegistration';\r\n\r\nconst ServiceWorkerContext = React.createContext();\r\nServiceWorkerContext.displayName = 'ServiceWorker';\r\n\r\nconst MESSAGE_TYPE_SKIP_WAITING = 'SKIP_WAITING';\r\n\r\nexport const ServiceWorkerProvider = ({ children }) => {\r\n const [waitingServiceWorker, setWaitingServiceWorker] = useState(null);\r\n const [isUpdateAvailable, setUpdateAvailable] = useState(false);\r\n\r\n useEffect(() => {\r\n serviceWorker.register({\r\n onUpdate: registration => {\r\n setWaitingServiceWorker(registration.waiting);\r\n setUpdateAvailable(true);\r\n },\r\n onWaiting: waiting => {\r\n setWaitingServiceWorker(waiting);\r\n setUpdateAvailable(true);\r\n }\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n // We setup an event listener to automatically reload the page\r\n // after the Service Worker has been updated, this will trigger\r\n // on all the open tabs of our application, so that we don't leave\r\n // any tab in an incosistent state\r\n if (waitingServiceWorker) {\r\n waitingServiceWorker.addEventListener('statechange', event => {\r\n if (event.target.state === 'activated') {\r\n window.location.reload();\r\n }\r\n });\r\n }\r\n }, [waitingServiceWorker]);\r\n\r\n const value = useMemo(\r\n () => ({\r\n isUpdateAvailable,\r\n updateAssets: () => {\r\n if (waitingServiceWorker) {\r\n // We send the SKIP_WAITING message to tell the Service Worker\r\n // to update its cache and flush the old one\r\n waitingServiceWorker.postMessage({ type: MESSAGE_TYPE_SKIP_WAITING });\r\n }\r\n }\r\n }),\r\n [isUpdateAvailable, waitingServiceWorker]\r\n );\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\n// With this React Hook we'll be able to access `isUpdateAvailable` and `updateAssets`\r\nexport const useServiceWorker = () => {\r\n return useContext(ServiceWorkerContext);\r\n};\r\n","import { useCallback, useEffect, useState } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\n\r\nimport { useServiceWorker } from 'components/services/ServiceWorker';\r\nimport {\r\n logMessageInConsole,\r\n WARNING_NOTIFICATION_TYPE\r\n} from 'utils/notifications';\r\n\r\nconst NewVersion = () => {\r\n const dispatch = useDispatch();\r\n\r\n const { isUpdateAvailable, updateAssets } = useServiceWorker();\r\n const [loading, setLoading] = useState(false);\r\n\r\n const updateNow = useCallback(\r\n e => {\r\n // Feedback to user when the app is updating.\r\n logMessageInConsole(\r\n 'The application is updating...',\r\n WARNING_NOTIFICATION_TYPE\r\n );\r\n setLoading(true);\r\n updateAssets();\r\n },\r\n [dispatch, updateAssets]\r\n );\r\n\r\n const handleClick = e => {\r\n updateNow();\r\n };\r\n\r\n useEffect(() => {\r\n if (isUpdateAvailable && !loading) {\r\n updateNow();\r\n }\r\n }, [isUpdateAvailable, loading, updateNow]);\r\n\r\n return null;\r\n};\r\n\r\nexport default NewVersion;\r\n","import { ACTION_COLOR, FONT_COLOR, MAIN_COLOR } from './variables';\r\n\r\nexport const SVC_THEME = {\r\n token: {\r\n colorPrimary: MAIN_COLOR,\r\n colorLink: ACTION_COLOR,\r\n fontSizeHeading1: '1rem',\r\n colorText: FONT_COLOR,\r\n colorIcon: FONT_COLOR\r\n }\r\n};\r\n","import styled from 'styled-components';\r\n\r\nconst NotFound = styled.div`\r\n background: repeating-linear-gradient(\r\n 130deg,\r\n rgba(166, 157, 160, 0.1),\r\n rgba(166, 157, 160, 0.1) 0,\r\n rgba(166, 157, 160, 0.01) 5px,\r\n rgba(255, 255, 255, 0.05) 0,\r\n rgba(255, 255, 255, 0.05) 5px\r\n ),\r\n linear-gradient(\r\n 273deg,\r\n rgba(255, 255, 255, 0.6) 13%,\r\n rgba(255, 255, 255, 0.6) 100%\r\n );\r\n border: 1px solid rgba(77, 77, 77, 0.15);\r\n font-size: 11pt;\r\n font-weight: normal;\r\n padding: 200px;\r\n text-align: center;\r\n color: rgba(77, 77, 77, 0.5);\r\n\r\n & > i {\r\n color: rgba(77, 77, 77, 0.5);\r\n font-size: 36px;\r\n text-align: center;\r\n display: block;\r\n }\r\n\r\n .anticon svg {\r\n display: inline;\r\n }\r\n\r\n @media (max-width: 575px) {\r\n padding: 50px;\r\n }\r\n`;\r\n\r\nexport default NotFound;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport { Typography } from 'antd';\r\n\r\nimport {\r\n FONT_COLOR,\r\n FONT_COLOR_LIGHT,\r\n FONT_SIZE,\r\n FONT_SIZE_SMALL,\r\n FONT_SIZE_SMALLEST\r\n} from 'theme/variables';\r\n\r\nconst TextAnt = styled(Typography.Text)`\r\n color: ${FONT_COLOR};\r\n`;\r\n\r\nexport const Title = styled(Typography.Title)`\r\n &.ant-typography {\r\n color: ${FONT_COLOR};\r\n font-size: ${FONT_SIZE};\r\n }\r\n`;\r\n\r\nexport const SubTitle = styled(Typography.Title)`\r\n &.ant-typography {\r\n color: ${FONT_COLOR_LIGHT};\r\n font-weight: normal;\r\n font-size: ${FONT_SIZE_SMALL};\r\n }\r\n`;\r\n\r\nexport const BigTitle = ({ children, ...props }) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport const BigSubtitle = ({ children, ...props }) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport const Text = ({ children, ...props }) => {\r\n return {children};\r\n};\r\n\r\nexport const Copyright = styled.span`\r\n font-size: ${FONT_SIZE_SMALLEST};\r\n text-align: center;\r\n color: ${FONT_COLOR_LIGHT};\r\n display: block;\r\n`;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport { Card } from 'antd';\r\nimport NotFound from 'components/common/NotFound';\r\nimport Icon from '@ant-design/icons';\r\n\r\nimport { WIDTH_BREAKPOINT_MD } from 'theme/variables';\r\nimport classNames from 'classnames';\r\nimport { Title } from '../Typography';\r\n\r\nconst ContentCard = styled(Card)`\r\n .ant-card-head {\r\n padding: 0;\r\n min-height: auto;\r\n }\r\n\r\n .ant-card-head-title {\r\n padding: 10px 0;\r\n }\r\n\r\n .ant-card-body {\r\n padding: 10px 0;\r\n }\r\n`;\r\n\r\nexport const Container = styled.div`\r\n padding: 20px;\r\n border: 1px solid #f0f0f0;\r\n`;\r\n\r\nexport const LogoContainer = styled.div`\r\n &:hover img {\r\n cursor: pointer;\r\n }\r\n\r\n @media only screen and (max-width: ${WIDTH_BREAKPOINT_MD}) {\r\n & {\r\n align-self: flex-start;\r\n }\r\n }\r\n`;\r\n\r\nexport const Actions = styled.div`\r\n width: auto;\r\n text-align: right;\r\n display: inline-block;\r\n\r\n .ant-btn + .ant-btn {\r\n margin-left: 10px;\r\n }\r\n`;\r\n\r\nexport const UserListContainer = styled.div``;\r\n\r\nfunction Content({ title, actions, className, children, ...props }) {\r\n const classes = classNames({ className });\r\n // renderTitle = () => {\r\n // const { title, subtitle, actions, content } = this.props;\r\n // return (\r\n // \r\n // \r\n // <span>{title}</span>\r\n // {subtitle ? <span className=\"subtitle\">{subtitle}</span> : null}\r\n // \r\n // {actions ? {actions} : null}\r\n // \r\n // );\r\n // };\r\n\r\n return (\r\n {title} : null}\r\n extra={actions ? actions : null}\r\n {...props}\r\n >\r\n {children}\r\n \r\n );\r\n}\r\n\r\nexport function ContentNotFound({ text, icon }) {\r\n return (\r\n \r\n {icon ? : null}\r\n {text}\r\n {this.props.children}\r\n \r\n );\r\n}\r\n\r\nexport default Content;\r\n","import { useMediaQuery } from 'react-responsive';\r\nimport {\r\n RESPONSIVE_BREAKPOINTS,\r\n XXS,\r\n SM,\r\n MD,\r\n LG,\r\n XL,\r\n XXL\r\n} from 'theme/variables';\r\n\r\nconst OFFSET_MAX_WIDTH = 0.02;\r\nexport const useIsExtraSmallDevice = () =>\r\n useMediaQuery({\r\n maxDeviceWidth: RESPONSIVE_BREAKPOINTS[XXS] - OFFSET_MAX_WIDTH\r\n });\r\n\r\nexport const useIsVerySmallDevice = () =>\r\n useMediaQuery({\r\n maxDeviceWidth: RESPONSIVE_BREAKPOINTS[SM] - OFFSET_MAX_WIDTH\r\n });\r\n\r\nexport const useIsMobile = () =>\r\n useMediaQuery({\r\n maxDeviceWidth: RESPONSIVE_BREAKPOINTS[MD] - OFFSET_MAX_WIDTH\r\n });\r\nexport const useIsTablet = () =>\r\n useMediaQuery({\r\n minDeviceWidth: RESPONSIVE_BREAKPOINTS[MD]\r\n });\r\nexport const useIsDesktop = () =>\r\n useMediaQuery({\r\n minDeviceWidth: RESPONSIVE_BREAKPOINTS[LG]\r\n });\r\nexport const useIsExtraLargeDesktop = () =>\r\n useMediaQuery({\r\n minDeviceWidth: RESPONSIVE_BREAKPOINTS[XL]\r\n });\r\n\r\nexport const useIsVeryLargeDesktop = () =>\r\n useMediaQuery({\r\n minDeviceWidth: RESPONSIVE_BREAKPOINTS[XXL]\r\n });\r\nexport const useIsPortrait = () => useMediaQuery({ orientation: 'portrait' });\r\nexport const useIsLandscape = () => useMediaQuery({ orientation: 'landscape' });\r\n","export default __webpack_public_path__ + \"static/media/mobile_variant.10a86d2b.svg\";","import React from 'react';\r\n\r\nimport { LogoContainer } from 'components/common/Content';\r\n\r\nimport { useIsMobile } from 'hooks/responsive';\r\n\r\nimport logoImg from 'images/logo.89e95883.png';\r\nimport logoImgMobile from 'images/mobile_variant.svg';\r\nimport { SubTitle, Title } from '../Typography';\r\nimport isEmpty from 'lodash/isEmpty';\r\n\r\nconst Logo = ({ title = false, subtitle = false }) => {\r\n const isMobile = useIsMobile();\r\n const SERVICE_FINANCE_URL = `https://www.svcfin.com/`;\r\n\r\n const width = isMobile ? '160px' : '440px';\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {!isEmpty(title) ? (\r\n {title}\r\n ) : null}\r\n {!isEmpty(subtitle) ? (\r\n {subtitle}\r\n ) : null}\r\n \r\n );\r\n};\r\n\r\nexport default Logo;\r\n","export default \"data:image/png;base64,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\"","import React, { memo } from 'react';\r\n\r\nimport { Layout } from 'antd';\r\n\r\n// import Navigation from './Navigation';\r\nimport Logo from 'components/common/Logo';\r\n\r\nconst { Header } = Layout;\r\n\r\nfunction AppHeader() {\r\n return (\r\n \r\n \r\n {/* */}\r\n \r\n );\r\n}\r\n\r\nexport default memo(AppHeader);\r\n","import React from 'react';\r\n\r\nimport { Button, Result } from 'antd';\r\n\r\nconst ExceptionPage = ({ titlePage, icon, message, action = null }) => {\r\n return (\r\n Back Home}\r\n />\r\n );\r\n};\r\n\r\nexport default ExceptionPage;\r\n","import React from 'react';\r\n\r\nimport ExceptionPage from '../ExceptionPage';\r\n\r\nconst NotFound = () => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default NotFound;\r\n","import React, { memo } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { useRouteMatch } from 'react-router-dom';\r\nimport { Layout } from 'antd';\r\n\r\nconst { Content } = Layout;\r\n\r\nfunction ContentWrapper({ component }) {\r\n const match = useRouteMatch();\r\n\r\n const ComponentToRender = component;\r\n return ;\r\n}\r\n\r\nconst AppContent = ({ route: { component } }) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nAppContent.propTypes = {\r\n pageTitle: PropTypes.string,\r\n showToggleIcon: PropTypes.bool,\r\n toggleIconClick: PropTypes.func\r\n};\r\n\r\nexport default memo(AppContent);\r\n","import { createSelector } from 'reselect';\r\n\r\nconst selectEMSubscriptionDomain = () => state =>\r\n state.get('electronicMsgSubscription');\r\n\r\nconst selectEMSubscription = createSelector(\r\n selectEMSubscriptionDomain(),\r\n emSubscriptionDomain => emSubscriptionDomain.toJS()\r\n);\r\n\r\nconst selectSubscriptionTokenVerified = createSelector(\r\n selectEMSubscription,\r\n emSubscription => emSubscription.subscriptionTokenVerified\r\n);\r\n\r\nconst selectSubscriptionTokenVerifiedIsFetching = createSelector(\r\n selectEMSubscription,\r\n emSubscription => emSubscription.subscriptionTokenVerifiedIsFetching\r\n);\r\n\r\nconst selectSubscriptionEmail = createSelector(\r\n selectSubscriptionTokenVerified,\r\n subscriptionTokenVerified => subscriptionTokenVerified?.email\r\n);\r\n\r\nconst selectSubscriptionId = createSelector(\r\n selectSubscriptionTokenVerified,\r\n subscriptionTokenVerified => subscriptionTokenVerified?.subscriptionId\r\n);\r\n\r\nconst selectSubscriptionState = createSelector(\r\n selectSubscriptionTokenVerified,\r\n subscriptionTokenVerified => subscriptionTokenVerified?.flags?.Subscription\r\n);\r\n\r\nconst selectHandleElectronicMsgSubscriptionIsFetching = createSelector(\r\n selectEMSubscription,\r\n emSubscription => emSubscription.handleElectronicMsgSubscriptionIsFetching\r\n);\r\n\r\nexport default selectEMSubscription;\r\nexport {\r\n selectSubscriptionTokenVerified,\r\n selectSubscriptionTokenVerifiedIsFetching,\r\n selectSubscriptionEmail,\r\n selectSubscriptionId,\r\n selectSubscriptionState,\r\n selectHandleElectronicMsgSubscriptionIsFetching\r\n};\r\n","import React from 'react';\r\nimport { Button, Checkbox, Divider, Form, Space, Spin, Typography } from 'antd';\r\nimport { handleElectronicMessageSubscription } from 'redux/electronicMsgSubscription/actions';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n selectHandleElectronicMsgSubscriptionIsFetching,\r\n selectSubscriptionEmail,\r\n selectSubscriptionId,\r\n selectSubscriptionState\r\n} from 'redux/electronicMsgSubscription/selectors';\r\nconst { Text } = Typography;\r\n\r\n// ------ Option for subscribe/unsubscribe\r\n\r\n// export default function SubscriptionForm({ ...props }) {\r\n// const handleElectronicMsgSubscriptionIsFetching = useSelector(\r\n// selectHandleElectronicMsgSubscriptionIsFetching\r\n// );\r\n// const subscriptionState = useSelector(selectSubscriptionState);\r\n// const subscriptionId = useSelector(selectSubscriptionId);\r\n// const email = useSelector(selectSubscriptionEmail);\r\n\r\n// const dispatch = useDispatch();\r\n\r\n// const handleOnFinish = values => {\r\n// dispatch(\r\n// handleElectronicMessageSubscription({\r\n// subscription: values.subscription,\r\n// data: { email, subscriptionId }\r\n// })\r\n// );\r\n// };\r\n\r\n// return (\r\n//
\r\n// \r\n// {/* \r\n// If you wish to change your electronic message subscription you can\r\n// modify the following option:\r\n// */}\r\n// \r\n// \r\n// Continue to send me electronic messages.\r\n// \r\n// \r\n\r\n// \r\n// \r\n// Update\r\n// \r\n// \r\n// \r\n// \r\n//
\r\n// );\r\n// }\r\n\r\n// ------ Option for only unsubscribe\r\nexport default function SubscriptionForm({ style, ...props }) {\r\n const handleElectronicMsgSubscriptionIsFetching = useSelector(\r\n selectHandleElectronicMsgSubscriptionIsFetching\r\n );\r\n const subscriptionId = useSelector(selectSubscriptionId);\r\n const email = useSelector(selectSubscriptionEmail);\r\n\r\n const dispatch = useDispatch();\r\n\r\n const handleUnsubscribe = values => {\r\n dispatch(\r\n handleElectronicMessageSubscription({\r\n subscription: false,\r\n data: { email, subscriptionId }\r\n })\r\n );\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n If you wish to unsubscribe from our electronic messages, please\r\n click the action below:\r\n \r\n \r\n Unsubscribe\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import { createSelector } from 'reselect';\r\n\r\nconst selectTokensDomain = () => state => state.get('tokens');\r\nconst selectTokens = createSelector(selectTokensDomain(), tk => tk.toJS());\r\n\r\nconst selectCurrentToken = createSelector(selectTokens, tk => tk.currentToken);\r\n\r\nexport default selectTokens;\r\nexport { selectCurrentToken };\r\n","import React from 'react';\r\n\r\nimport { Spin } from 'antd';\r\n\r\nimport { LoadingOutlined } from '@ant-design/icons';\r\n\r\nexport const antIcon = (\r\n \r\n);\r\n\r\nfunction LoadingPage() {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default LoadingPage;\r\n","import React, { memo, useEffect } from 'react';\r\nimport { replace } from 'connected-react-router';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useParams } from 'react-router-dom';\r\n\r\nimport { Card, Result, Spin, Typography } from 'antd';\r\nimport { MailOutlined } from '@ant-design/icons';\r\n\r\nimport SubscriptionForm from './SubscriptionForm';\r\nimport NotFound from 'components/common/Pages/NotFound';\r\n\r\nimport {\r\n selectSubscriptionEmail,\r\n selectSubscriptionState,\r\n selectSubscriptionTokenVerified,\r\n selectSubscriptionTokenVerifiedIsFetching\r\n} from 'redux/electronicMsgSubscription/selectors';\r\n\r\nimport { getSubscriptionTokenData } from 'redux/electronicMsgSubscription/actions';\r\nimport { saveEntryToken } from 'redux/tokens/actions';\r\n\r\nimport { ROUTES } from 'consts/routes';\r\nimport { MAIN_COLOR } from 'theme/variables';\r\nimport { selectCurrentToken } from 'redux/tokens/selectors';\r\nimport LoadingPage, { antIcon } from 'components/common/LoadingPage';\r\n\r\nconst { Title, Text } = Typography;\r\n\r\nconst ErrorPage = () => {\r\n return (\r\n \r\n \r\n \r\n We're sorry. The token used is wrong or is expired. Try again or\r\n contact us.\r\n \r\n \r\n \r\n If you feel that the email was sent to you in error, please ignore\r\n this page.\r\n \r\n \r\n }\r\n />\r\n );\r\n};\r\n\r\nfunction InitUnsubscribe() {\r\n const subscriptionTokenVerifiedIsFetching = useSelector(\r\n selectSubscriptionTokenVerifiedIsFetching\r\n );\r\n const subscriptionEmail = useSelector(selectSubscriptionEmail);\r\n const subscriptionState = useSelector(selectSubscriptionState);\r\n\r\n return (\r\n \r\n }\r\n title={subscriptionState ? 'Manage your email subscription' : null}\r\n extra={\r\n <>\r\n \r\n {subscriptionTokenVerifiedIsFetching ? (\r\n \r\n ) : (\r\n <>\r\n \r\n {subscriptionState\r\n ? 'Email subscription for'\r\n : 'You are successfully unsubscribed for'}{' '}\r\n {subscriptionEmail}.\r\n \r\n

\r\n If your email address is not {subscriptionEmail}, then this\r\n email was most likely forwarded to you.\r\n

\r\n\r\n {subscriptionState ? (\r\n \r\n ) : null}\r\n \r\n )}\r\n
\r\n {subscriptionState ? (\r\n \r\n Please allow up to 10 business days for your request to take\r\n effect.\r\n
\r\n If you feel that the email was sent to you in error, please ignore\r\n this page.\r\n
\r\n ) : null}\r\n \r\n }\r\n />\r\n );\r\n}\r\n\r\nfunction ElectronicMsgManagement() {\r\n const dispatch = useDispatch();\r\n const { token } = useParams();\r\n const subscriptionTokenVerified = useSelector(\r\n selectSubscriptionTokenVerified\r\n );\r\n const subscriptionTokenVerifiedIsFetching = useSelector(\r\n selectSubscriptionTokenVerifiedIsFetching\r\n );\r\n const currentToken = useSelector(selectCurrentToken);\r\n\r\n useEffect(() => {\r\n if (token) {\r\n dispatch(replace(ROUTES.UNSUBSCRIBE.BASE));\r\n dispatch(saveEntryToken(token));\r\n dispatch(getSubscriptionTokenData());\r\n }\r\n }, []);\r\n\r\n if (token) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return !subscriptionTokenVerified ? (\r\n subscriptionTokenVerifiedIsFetching ? (\r\n \r\n ) : currentToken ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : (\r\n \r\n );\r\n}\r\n\r\nexport default memo(ElectronicMsgManagement);\r\n","import ElectronicMsgSubscription from 'components/views/ElectronicMsgSubscription';\r\nimport { ROUTES } from 'consts/routes';\r\n\r\nexport const unSubscribeBaseRoute = {\r\n key: 'unsubscribe_electronic_messages_route',\r\n path: ROUTES.UNSUBSCRIBE.BASE,\r\n title: 'Electronic messages management',\r\n exact: true,\r\n component: ElectronicMsgSubscription\r\n};\r\n\r\nexport const unSubscribeWithTokenRoute = {\r\n key: 'unsubscribe_electronic_messages_route',\r\n path: ROUTES.UNSUBSCRIBE.WITH_TK,\r\n title: 'Electronic messages management',\r\n exact: true,\r\n component: ElectronicMsgSubscription\r\n};\r\n\r\nexport const unSubscribeRoutes = [\r\n unSubscribeBaseRoute,\r\n unSubscribeWithTokenRoute\r\n];\r\n","export default __webpack_public_path__ + \"static/media/apple.ae18d708.svg\";","export default __webpack_public_path__ + \"static/media/android.10235037.svg\";","import React, { memo, useEffect, useState } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport MobileStoreButton from 'react-mobile-store-button';\r\nimport appleImg from 'images/apple.svg';\r\nimport androidImg from 'images/android.svg';\r\n\r\nimport LoadingPage from 'components/common/LoadingPage';\r\n\r\nimport { isAndroid, isIOS, OsTypes } from 'react-device-detect';\r\nimport { APP_RESOURCE } from 'config/variables';\r\nimport { Result } from 'antd';\r\nimport { BORDER_DEFAULT } from 'theme/variables';\r\n\r\nfunction AppListByType({ type }) {\r\n return (\r\n }\r\n title=\"Download our apps today\"\r\n extra={\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n );\r\n}\r\n\r\nfunction AppResource() {\r\n const [unknownDevice, setUnknownDevice] = useState(false);\r\n const { clientType } = useParams();\r\n\r\n const OS = {\r\n [isIOS]: OsTypes.IOS,\r\n [isAndroid]: OsTypes.Android\r\n };\r\n\r\n useEffect(() => {\r\n if (!OS[true]) {\r\n setUnknownDevice(true);\r\n } else {\r\n window.location.replace(APP_RESOURCE[clientType][OS[true]]);\r\n }\r\n }, []);\r\n\r\n return unknownDevice ? : ;\r\n}\r\n\r\nexport default memo(AppResource);\r\n","import { ROUTES } from 'consts/routes';\r\n\r\nimport AppResource from 'components/views/Resources/App';\r\n\r\nexport const resourceAppBaseRoute = {\r\n key: 'app_download',\r\n path: ROUTES.RESOURCES.APPS.WITH_TYPE,\r\n title: 'Download app',\r\n exact: true,\r\n component: AppResource\r\n};\r\n\r\nexport const resourcesAppRoutes = [resourceAppBaseRoute];\r\n","import { createSelector } from 'reselect';\r\nimport {\r\n FAILED_STATUS,\r\n IS_FETCHING_STATUS,\r\n SUCCESSFUL_STATUS\r\n} from './constants';\r\n\r\nconst selectResourcesDomain = () => state => state.get('resources');\r\n\r\nconst selectResources = createSelector(selectResourcesDomain(), resources =>\r\n resources.toJS()\r\n);\r\n\r\nconst selectLoanDocumentByTokenIsFetching = createSelector(\r\n selectResources,\r\n resources => resources.getLoanDocumentByTokenState === IS_FETCHING_STATUS\r\n);\r\n\r\nconst selectLoanDocumentByTokenFailed = createSelector(\r\n selectResources,\r\n resources => {\r\n return resources.getLoanDocumentByTokenState === FAILED_STATUS;\r\n }\r\n);\r\n\r\nconst selectLoanDocumentByTokenSuccess = createSelector(\r\n selectResources,\r\n resources => resources.getLoanDocumentByTokenState === SUCCESSFUL_STATUS\r\n);\r\n\r\nexport default selectResources;\r\n\r\nexport {\r\n selectLoanDocumentByTokenIsFetching,\r\n selectLoanDocumentByTokenFailed,\r\n selectLoanDocumentByTokenSuccess\r\n};\r\n","export default __webpack_public_path__ + \"static/media/error.f77785ab.svg\";","export default __webpack_public_path__ + \"static/media/success.276562da.svg\";","import { Result } from 'antd';\r\nimport React from 'react';\r\n\r\nimport errorImg from 'images/error.svg';\r\nimport successImg from 'images/success.svg';\r\nimport { useIsMobile } from 'hooks/responsive';\r\n\r\nconst MOBILE_WIDTH = '160px';\r\nconst DEFAULT_WIDTH = '400px';\r\n\r\nfunction ErrorMessage({\r\n title = `We're sorry, an error has occured`,\r\n message = 'Something happend. Please try again or contact us.'\r\n}) {\r\n const isMobile = useIsMobile();\r\n const width = isMobile ? MOBILE_WIDTH : DEFAULT_WIDTH;\r\n return (\r\n }\r\n />\r\n );\r\n}\r\n\r\nexport function SuccessMessage({\r\n title = 'Success!',\r\n message = 'Thank you for choosing us.'\r\n}) {\r\n const isMobile = useIsMobile();\r\n const width = isMobile ? MOBILE_WIDTH : DEFAULT_WIDTH;\r\n return (\r\n }\r\n />\r\n );\r\n}\r\n\r\nexport default ErrorMessage;\r\n","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport LoadingPage from 'components/common/LoadingPage';\r\nimport {\r\n selectLoanDocumentByTokenFailed,\r\n selectLoanDocumentByTokenIsFetching,\r\n selectLoanDocumentByTokenSuccess\r\n} from 'redux/resources/selectors';\r\nimport { selectCurrentToken } from 'redux/tokens/selectors';\r\nimport NotFound from 'components/common/Pages/NotFound';\r\nimport ErrorMessage, { SuccessMessage } from 'components/common/Message';\r\n\r\nfunction LoanDocumentView() {\r\n const loanDocumentByTokenIsFetching = useSelector(\r\n selectLoanDocumentByTokenIsFetching\r\n );\r\n const isFailed = useSelector(selectLoanDocumentByTokenFailed);\r\n const isSuccess = useSelector(selectLoanDocumentByTokenSuccess);\r\n\r\n const currentToken = useSelector(selectCurrentToken);\r\n const isFetching = loanDocumentByTokenIsFetching || currentToken;\r\n\r\n if (isFetching) {\r\n return ;\r\n }\r\n\r\n if (isFailed) {\r\n return ;\r\n }\r\n\r\n if (isSuccess) {\r\n return ;\r\n }\r\n\r\n return ;\r\n}\r\n\r\nexport default LoanDocumentView;\r\n","import React, { useEffect } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { useParams } from 'react-router-dom';\r\n\r\nimport LoadingPage from 'components/common/LoadingPage';\r\n\r\nimport { getLoanDocumentByToken } from 'redux/resources/actions';\r\nimport { saveEntryToken } from 'redux/tokens/actions';\r\nimport { replace } from 'connected-react-router';\r\nimport { ROUTES } from 'consts/routes';\r\n\r\nfunction LoanDocumentLandingResource() {\r\n const dispatch = useDispatch();\r\n const { token } = useParams();\r\n\r\n useEffect(() => {\r\n if (token) {\r\n dispatch(replace(ROUTES.RESOURCES.LOAN.DOCUMENTS.BASE));\r\n dispatch(saveEntryToken(token));\r\n dispatch(getLoanDocumentByToken({ name: 'svcfindoc' }));\r\n }\r\n }, []);\r\n\r\n return ;\r\n}\r\n\r\nexport default LoanDocumentLandingResource;\r\n","import { ROUTES } from 'consts/routes';\r\n\r\nimport LoanDocumentView from 'components/views/Resources/LoanDocuments/LoanDocumentView';\r\nimport LoanDocumentLandingResource from 'components/views/Resources/LoanDocuments';\r\n\r\nexport const loanDocumentsResourcesBaseRoute = {\r\n key: 'loan_document_base',\r\n path: ROUTES.RESOURCES.LOAN.DOCUMENTS.BASE,\r\n title: 'Loan Document view',\r\n exact: true,\r\n component: LoanDocumentView\r\n};\r\n\r\nexport const loanDocumentsResourcesWithTokenRoute = {\r\n key: 'loan_document_wtk',\r\n path: ROUTES.RESOURCES.LOAN.DOCUMENTS.WITH_TK,\r\n title: 'Loan Document view',\r\n exact: true,\r\n component: LoanDocumentLandingResource\r\n};\r\n\r\nexport const resourcesRoutes = [\r\n loanDocumentsResourcesBaseRoute,\r\n loanDocumentsResourcesWithTokenRoute\r\n];\r\n","import { unSubscribeRoutes } from './ElectronicMessage';\r\nimport { resourcesAppRoutes } from './Resources/Apps';\r\nimport { resourcesRoutes } from './Resources/LoanDocuments';\r\n\r\nconst routes = [\r\n // {\r\n // key: 'home_route',\r\n // path: ROUTES.HOME,\r\n // title: 'SVC',\r\n // pageTitle: 'Home',\r\n // exact: true,\r\n // component: Home\r\n // },\r\n ...unSubscribeRoutes,\r\n ...resourcesRoutes,\r\n ...resourcesAppRoutes\r\n];\r\nexport default routes;\r\n","import React from 'react';\r\nimport { Switch, Route, Redirect } from 'react-router-dom';\r\n\r\nimport NotFound from 'components/common/Pages/NotFound';\r\nimport AppContent from '../AppContent';\r\nimport routes from 'config/routes';\r\n\r\nfunction RenderRoute(route, key, Component) {\r\n if (route.redirectTo) {\r\n return (\r\n }\r\n >\r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nfunction buildRoutesToRender(moduleRoutesConfig, component) {\r\n let routesToRender = [];\r\n\r\n moduleRoutesConfig.forEach((route, index) => {\r\n if (!route.external) {\r\n if (route.children) {\r\n routesToRender.push(...buildRoutesToRender(route.children, component));\r\n } else if (route.path && (route.component || route.redirectTo)) {\r\n routesToRender.push(\r\n RenderRoute(route, `route-${route.key}`, component)\r\n );\r\n }\r\n }\r\n });\r\n\r\n return routesToRender;\r\n}\r\n\r\nfunction AppRoutes({ component }) {\r\n const routesToRender = buildRoutesToRender(routes, component);\r\n\r\n return (\r\n \r\n {[...routesToRender]}\r\n (\r\n \r\n )}\r\n />\r\n \r\n );\r\n}\r\n\r\nexport default AppRoutes;\r\n","import React from 'react';\r\n\r\nexport default function CopyRight() {\r\n const year = new Date().getFullYear();\r\n\r\n return `Copyright © ${year}`;\r\n}\r\n","import React, { memo } from 'react';\r\n\r\nimport { Layout } from 'antd';\r\nimport Navigation from './Navigation';\r\nimport CopyRight from 'components/common/CopyRight';\r\nconst { Footer } = Layout;\r\n\r\nexport default memo(function index() {\r\n return (\r\n \r\n Service Finance Company, LLC | | NMLS 140908\r\n {/*

\r\n In New Hampshire: dba Service Finance Enterprises Of Boca Raton In\r\n Texas: dba Service Finance Enterprises of Texas, LLC In New York: dba\r\n Finance Service Company In Arizona: dba Service Finance Enterprises of\r\n Boca Raton, LLC (FN)\r\n

*/}\r\n {/* */}\r\n \r\n );\r\n});\r\n","import React, { memo } from 'react';\r\n\r\nimport { Layout } from 'antd';\r\n\r\nimport AppHeader from './AppHeader';\r\nimport AppRoutes from './AppRoutes';\r\nimport AppFooter from './AppFooter';\r\nimport AppContent from './AppContent';\r\n\r\nfunction AppLayout() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default memo(AppLayout);\r\n","import React from 'react';\r\nimport { Provider } from 'react-redux';\r\nimport { Switch, Route, Redirect } from 'react-router-dom';\r\nimport { ConnectedRouter } from 'connected-react-router/immutable';\r\nimport history from 'utils/history';\r\nimport store from 'redux/store';\r\nimport enUS from 'antd/es/locale/en_US';\r\nimport { IntlProvider } from 'react-intl';\r\nimport { configAxiosInstances } from 'api/axios';\r\n\r\nimport GlobalStyles from 'theme/global-styles';\r\n\r\nimport { ConfigProvider } from 'antd';\r\n\r\nimport { ServiceWorkerProvider } from 'components/services/ServiceWorker';\r\nimport NewVersion from 'components/services/ServiceWorker/NewVersion';\r\n\r\nimport { SVC_THEME } from 'theme';\r\nimport AppLayout from './layouts/AppLayout';\r\n\r\nconfigAxiosInstances(store);\r\n\r\nfunction App() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","import 'react-app-polyfill/ie9';\r\nimport 'react-app-polyfill/stable';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from 'components/App';\r\nimport '@formatjs/intl-numberformat/polyfill';\r\nimport '@formatjs/intl-numberformat/locale-data/en'; // locale-data for en\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\n"],"sourceRoot":""}