{"version":3,"sources":["lib/strings.js","lib/resources.js","lib/icons.js","lib/utils.js","lib/data.js","store/login-actions.ts","store/login-reducer.ts","components/Layout.tsx","components/library/card.jsx","components/library/checkbox.tsx","components/library/icons/iconGlobe.jsx","components/library/icons/iconLeftArrow.jsx","components/library/icons/iconAlertCircle.jsx","components/library/textInput.tsx","components/library/doneIcon.tsx","components/library/mainLoader.jsx","components/library/errorIcon.tsx","components/library/lockstepLogo.tsx","components/library/icons/iconCheckCircle.jsx","components/loginView.tsx","components/resetPassword.tsx","components/magicLinkRequest.tsx","App.tsx","registerServiceWorker.ts","index.tsx","store/configureStore.ts"],"names":["getString","languageConstant","defaultValue","result","window","strings","localStorage","getItem","formatString","str","args","delimOpen","delimClose","arguments","length","open","close","key","Object","prototype","hasOwnProperty","call","replace","RegExp","resources","GreatThanks","company","WeAreVerifyingYourEmailReachOutToEmail","email","InvalidCustomerIdMessgae","arEmail","name","toUpperCase","icons","activeConversation","angleDown","angleLeft","angleRight","angleUp","approvers","arrowLeft","arrowRight","arrowUp","assigned","attachment","bell","calendar","check","checkSquare","chevronDoubleRight","clipboardCheck","clipboardList","clock","closed","completed","compose","contacts","copy","customers","document","download","draft","dropdown","elipsisH","emailSettings","elipsisV","exclamationCircle","eye","fileAlt","fileImage","fileInvoiceDollar","filePdf","fileWord","forward","genericCompany","google","hourglass","myCompany","manage","mine","minus","note","notifications","packages","pencil","pendingApproval","plus","profile","questionCircle","reply","reports","save","savedReplies","search","setup","signature","spam","spinner","statusPicker","sync","template","newTemplate","task","times","toggleoff","toggleon","trash","unassigned","user","userFriendsSolid","userFriends","users","usersAndPermissions","vendors","visibility","workflows","warningTriangle","workspaces","onLocalHost","location","hostname","config","require","isLocalHost","getConfig","isEmpty","item","util","isNullOrUndefined","type","isArray","trim","prop","JSON","stringify","authEndpoint","origin","apiEndpoint","emailDomain","appEndpoint","generateUUID","d","Date","getTime","c","r","Math","random","floor","toString","dataAxios","Axios","create","headers","Pragma","Expires","mergeOptions","options","def","AccessToken","defaultOptions","keys","forEach","interceptors","request","use","navigator","onLine","Promise","reject","Error","method","retry","error","response","undefined","err","status","__retryCount","retryDelay","resolve","setTimeout","then","get","url","put","data","post","delete","authAxios","actions","loggedIn","token","dispatch","getState","didLoginFail","loginUser","userName","password","rememberLogin","redirect","queryString","parse","returnUrl","ReturnUrl","includes","formData","FormData","append","body","username","a","defaults","withCredentials","login","identityToken","catch","dispatchToProps","getMagicLink","emailAddr","magicLink","getCompanySpecificMagicLink","accountKey","companyId","endpoint","getCompanyLogo","companyLogo","getCustFromCustId","custId","customer","registerNewEmailAddress","sendResetEmail","defaultNetworkSettings","gettingMagicLink","gotMagicLink","failedGetMagicLink","gettingCompanyLogo","gotCompanyLogo","failedGetCompanyLogo","gettingCustFromId","gotCustFromId","failedGetCustFromId","registeringEmail","registeredEmail","failedRegisterEmail","loggingIn","loginFailed","sendingResetEmail","sentResetEmail","failedSendResetEmail","loginReducer","state","action","props","Container","children","Card","Component","render","this","maxWidth","className","title","headAboveCard","onClickEdit","editing","onCancel","onSave","description","isEditable","cardHeader","Fragment","onClick","Icons","Resources","Edit","style","Cancel","Save","Checkbox","id","substr","preventBubbling","e","stopPropagation","checked","onChange","disabled","viewBox","height","htmlFor","label","defaultProps","IconGlobe","fill","stroke","strokeLinecap","strokeLinejoin","strokeWidth","cx","cy","IconLeftArrow","x1","y1","x2","y2","points","IconAlertCircle","transform","fillRule","TextInput","constructor","super","showPassword","isFocused","toggleVisibility","bind","onBlur","onFocus","setState","isPassword","inputOnChange","onPressEnter","textValue","labelInline","width","inline","inputRef","centerText","placeholder","fsObscure","isValid","invalidText","dollarAmountInput","isNumber","Hide","Show","ref","value","onKeyDown","DoneIcon","x","y","filterUnits","in","operator","radius","dy","stdDeviation","in2","values","rx","fill-rule","opacity","font-family","font-size","font-weight","letter-spacing","filter","href","stroke-linecap","stroke-width","stroke-linejoin","MainLoader","fullScreen","ErrorIcon","version","LockstepLogo","IconCheckCircle","LoginView","submitOnEnter","console","log","submitLogin","preventDefault","rememberMeChecked","magicLinkView","successView","failedView","loginStore","IfYouHaveAccountWeWillSendLink","MagicLinkFailedSend","TryAgain","MagicLinkSent","CheckEmailToGetLink","TiredOfRememberingPasswords","MagicLinkInstructions","EmailAddress","target","SendMeMagicLink","TheUserNameOrPasswordIsIncorrect","Username","Password","Link","to","ForgotPassword","RememberMeFor30Days","SignIn","Or","DontFeelLikeTypingYourPassword","GetMagicLink","flags","authUiCreateAccountButton","CreateAccount","Language","withLDConsumer","withRouter","connect","store","loginDP","useState","setEmailAddr","view","setView","setPassword","confirmPassword","setConfirmPassword","useEffect","match","params","ForgoutYourPassword","WellHelpYouResetAndGetBackOnTrack","history","push","ResetPassword","PleaseEnterNewPassword","NewPassword","ConfirmPassword","SetNewPassword","BackToLogin","MagicLinkRequest","customerId","enterEmailView","apEmailAddress","validCustId","componentDidMount","src","alt","custName","RegisterEmailInfo","APEmailAddress","RegisterEmailAddress","OopsWeDontRecognizeThatAddress","InvalidCustomerId","MagicLinkFailedCompanyMessage","collectorEmail","CustomerId","Next","Success","LookingToViewInvoiceMakePayments","Layout","Switch","Route","path","Redirect","Boolean","baseUrl","getElementsByTagName","getAttribute","createBrowserHistory","basename","initialState","middleware","thunk","routerMiddleware","rootReducer","combineReducers","router","connectRouter","enhancers","windowIfDefined","__REDUX_DEVTOOLS_EXTENSION__","createStore","applyMiddleware","configureStore","clientSideID","split","toLowerCase","asyncWithLDProvider","LDProvider","Userpilot","initialize","ReactDOM","getElementById","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.3209fdae.chunk.js","sourcesContent":["//This function uses the window.strings object that is created populated by the localization reducer when the user switched language preferences\r\n\r\nexport function getString(languageConstant, defaultValue) {\r\n let stringLibrary = window.strings || {};\r\n let result = stringLibrary[languageConstant];\r\n if (window.localStorage && window.localStorage.getItem(\"nolangui\")) {\r\n result = `[${languageConstant}]`;\r\n }\r\n if (!result) {\r\n result = defaultValue;\r\n }\r\n return result;\r\n}\r\n\r\n// \"format {0}, {1} {2}\"\r\n// formatString(getString(), ['thing', 'thinger', 'thinger3']);\r\n// \"format {thinger_1} {thinger_2} {thinger_3} \"\r\n// formatString(getString(...), {thinger_1: 'wat', thinger_2: 'wat2', thinger_3: 'wat3'});\r\n\r\nexport function formatString(str, args, delimOpen, delimClose) {\r\n if (arguments.length) {\r\n const open = delimOpen || \"{\";\r\n const close = delimClose || delimOpen || \"}\";\r\n for (let key in args) {\r\n if (Object.prototype.hasOwnProperty.call(args, key)) {\r\n str = str.replace(new RegExp(`\\\\${open}${key}\\\\${close}`, \"gi\"), args[key]);\r\n }\r\n }\r\n }\r\n return str;\r\n}\r\n","import { getString, formatString } from \"./strings\";\r\n\r\nclass Resources {\r\n get Username() {\r\n return getString(\"USERNAME\", \"Username\");\r\n }\r\n get Password() {\r\n return getString(\"PASSWORD\", \"Password\");\r\n }\r\n\r\n get ForgotPassword() {\r\n return getString(\"FORGOT_PASSWORD\", \"Forgot password?\");\r\n }\r\n\r\n get RememberMeFor30Days() {\r\n return getString(\"REMEMBER_ME_FOR_30_DAYS\", \"Remember me\");\r\n }\r\n\r\n get Or() {\r\n return getString(\"OR\", \"Or\");\r\n }\r\n\r\n get Language() {\r\n return getString(\"LANGUAGE\", \"Language\");\r\n }\r\n\r\n get Edit() {\r\n return getString(\"EDIT\", \"Edit\");\r\n }\r\n\r\n get Cancel() {\r\n return getString(\"CANCEL\", \"Cancel\");\r\n }\r\n\r\n get Delete() {\r\n return getString(\"DELETE\", \"Delete\");\r\n }\r\n\r\n get Hide() {\r\n return getString(\"HIDE\", \"Hide\");\r\n }\r\n\r\n get Show() {\r\n return getString(\"SHOW\", \"Show\");\r\n }\r\n\r\n get Submit() {\r\n return getString(\"SUBMIT\", \"Submit\");\r\n }\r\n\r\n get SignIn() {\r\n return getString(\"SIGN_IN\", \"Sign in\");\r\n }\r\n\r\n get CreateAccount() {\r\n return getString(\"CREATE_ACCOUNT\", \"Create an account\");\r\n }\r\n\r\n get DontFeelLikeTypingYourPassword() {\r\n return getString(\"DONT_FEEL_LIKE_TYPING_YOUR_PASSWORD\", \"Don't feel like typing your password?\");\r\n }\r\n\r\n get GetMagicLink() {\r\n return getString(\"GET_MAGIC_LINK\", \"Get a magic link\");\r\n }\r\n\r\n get TiredOfRememberingPasswords() {\r\n return getString(\"TIRED_OF_REMEMBERING_PASSWORDS\", \"Tired of remembering passwords? So are we.\");\r\n }\r\n\r\n get MagicLinkInstructions() {\r\n return getString(\r\n \"MAGIC_LINK_INSTRUCTIONS\",\r\n \"Just enter your email below, if your email is recognized, we'll send you a link that will automatically log you in.\"\r\n );\r\n }\r\n\r\n get EmailAddress() {\r\n return getString(\"EMAIL_ADDRESS\", \"Email address\");\r\n }\r\n\r\n get SendMeMagicLink() {\r\n return getString(\"SEND_ME_MAGIC_LINK\", \"Send me a magic link\");\r\n }\r\n\r\n get MagicLinkSent() {\r\n return getString(\"MAGIC_LINK_SENT\", \"Magic link sent!\");\r\n }\r\n\r\n get MagicLinkFailedSend() {\r\n return getString(\r\n \"MAGIC_LINK_FAILED_SEND\",\r\n \"We are sorry that email address is invalid, please try another email address\"\r\n );\r\n }\r\n\r\n get TryAgain() {\r\n return getString(\"TRY_AGAIN\", \"Try again\");\r\n }\r\n\r\n get CheckEmailToGetLink() {\r\n return getString(\"CHECK_EMAIL_TO_GET_LINK\", \"Check your email to access the link.\");\r\n }\r\n\r\n get LookingToViewInvoiceMakePayments() {\r\n return getString(\"LOOKING_TO_VIEW_INVOICE_AND_MAKE_PAYMENTS\", \"Looking to view invoices and make payments?\");\r\n }\r\n\r\n get OopsWeDontRecognizeThatAddress() {\r\n return getString(\"OOPS_WE_DONT_RECOGNIZE_THAT_EMAIL\", \"Oops! We don't recognize that email address.\");\r\n }\r\n\r\n get MagicLinkFailedCompanyMessage() {\r\n return getString(\r\n \"MAGIC_LINK_FAILED_SEND_COMPANY\",\r\n \"Go back to retry a new email address or enter your customer ID below to register your email address. You can find this ID on any invoice we’ve sent you. \"\r\n );\r\n }\r\n\r\n get Next() {\r\n return getString(\"NEXT\", \"Next\");\r\n }\r\n\r\n get CustomerId() {\r\n return getString(\"CUSTOMER_ID\", \"Customer ID\");\r\n }\r\n\r\n get RegisterEmailAddress() {\r\n return getString(\"REGISTER_EMAIL_ADDRESS\", \"Register email address\");\r\n }\r\n\r\n get APEmailAddress() {\r\n return getString(\"AP_EMAIL_ADDRESS\", \"AP department email address\");\r\n }\r\n\r\n get RegisterEmailInfo() {\r\n return getString(\r\n \"REGISTER_EMAIL_INFO\",\r\n \"Now enter your AP department’s primary email address below. We will verify the address and then send you an email with a link to access your invoices and payments.\"\r\n );\r\n }\r\n\r\n GreatThanks(company) {\r\n return formatString(getString(\"GREAT_THANKS_COMPANY\", \"Great! Thanks {company}.\"), {\r\n company: company,\r\n });\r\n }\r\n\r\n get Success() {\r\n return getString(\"SUCCESS\", \"Success!\");\r\n }\r\n\r\n WeAreVerifyingYourEmailReachOutToEmail(email) {\r\n return formatString(\r\n getString(\r\n \"WE_ARE_VERIFYING_YOUR_EMAIL\",\r\n \"We are verifying your email address. Keep an eye out for an email with a magic link to access your invoices and payments. In the meantime, if you have questions contact {email}\"\r\n ),\r\n {\r\n email: email,\r\n }\r\n );\r\n}\r\n\r\n InvalidCustomerIdMessgae(arEmail) {\r\n return formatString(\r\n getString(\"OOPS_DONT_RECOGNIZE_CUST_ID_MESSAGE\", \"Retry a new Customer ID or send us an email at {arEmail} and we will help!\"\r\n ),\r\n {\r\n arEmail: arEmail,\r\n }\r\n );\r\n}\r\n\r\n\r\n get InvalidCustomerId() {\r\n return getString(\"OOPS_DONT_RECOGNIZE_CUST_ID\", \"Oops! We don't recognize this customer ID.\");\r\n }\r\n\r\n get TheUserNameOrPasswordIsIncorrect() {\r\n return getString(\"THE_USER_NAME_PASSWORD_IS_INCORRECT\", \"Your username or password is incorrect.\");\r\n }\r\n\r\n get FirstLetsFindYourAccount() {\r\n return getString(\"FIRST_LETS_FIND_YOUR_ACCOUNT\", \"First, let's find your account\");\r\n }\r\n\r\n get FindAccount() {\r\n return getString(\"FIND_ACCOUNT\", \"Find account\");\r\n }\r\n\r\n get ResendLink() {\r\n return getString(\"RESEND_LINK\", \"Resend link\");\r\n }\r\n\r\n get TryAnotherEmail() {\r\n return getString(\"TRY_ANOTHER_EMAIL\", \"Try another email\");\r\n }\r\n\r\n get ForgoutYourPassword() {\r\n return getString(\"FORGOT_YOUR_PASSWORD\", \"Forgot your password?\");\r\n }\r\n\r\n get WellHelpYouResetAndGetBackOnTrack() {\r\n return getString(\"WELL_HELP_YOU_RESET_AND_GET_BACK_ON_TRACK\", \"We'll help you reset it and get back on track.\");\r\n }\r\n\r\n get ResetPassword() {\r\n return getString(\"RESET_PASSWORD\", \"Reset password\");\r\n }\r\n\r\n get PleaseEnterNewPassword() {\r\n return getString(\"PLEASE_ENTER_NEW_PASSWORD\", \"Please enter your new password below.\");\r\n }\r\n\r\n get NewPassword() {\r\n return getString(\"NEW_PASSWORD\", \"New password\");\r\n }\r\n\r\n get ConfirmPassword() {\r\n return getString(\"CONFIRM_PASSWORD\", \"Confirm password\");\r\n }\r\n\r\n get SetNewPassword() {\r\n return getString(\"SET_NEW_PASSWORD\", \"Set new password\");\r\n }\r\n\r\n get BackToLogin() {\r\n return getString(\"BACK_TO_LOGIN\", \"Back to login\");\r\n }\r\n\r\n get IfYouHaveAccountWeWillSendLink() {\r\n return getString(\r\n \"IF_YOU_HAVE_AN_ACCOUNT_WE_WILL_SEND_LINK\",\r\n \"If you have an account, we'll send you a password reset link.\"\r\n );\r\n }\r\n\r\n get CheckYourEmailForSecureLink() {\r\n return getString(\r\n \"CHECK_YOUR_EMAIL_FOR_SECURE_LINK\",\r\n \"Check your email for a secure link to reset your password. If you don't see our email, check your spam folder.\"\r\n );\r\n }\r\n\r\n getString(name) {\r\n return getString(name.toUpperCase(), `[${name}]`);\r\n }\r\n}\r\n\r\nconst resources = new Resources();\r\n\r\nexport default resources;\r\n","const icons = {\r\n activeConversation: \"fas fa-circle\",\r\n angleDown: \"fal fa-angle-down\",\r\n angleLeft: \"fal fa-angle-left\",\r\n angleRight: \"fal fa-angle-right\",\r\n angleUp: \"fal fa-angle-up\",\r\n approvers: \"fa fa-user-check\",\r\n arrowLeft: \"fal fa-arrow-left\",\r\n arrowRight: \"fal fa-arrow-right\",\r\n arrowUp: \"fal fa-arrow-up\",\r\n assigned: \"fal fa-users\",\r\n attachment: \"fal fa-paperclip\",\r\n bell: \"far fa-bell\",\r\n calendar: \"fal fa-calendar-alt\",\r\n check: \"fal fa-check\",\r\n checkSquare: \"fal fa-check-square\",\r\n chevronDoubleRight: \"fal fa-chevron-double-right\",\r\n clipboardCheck: \"fal fa-clipboard-check\",\r\n clipboardList: \"fal fa-clipboard-list\",\r\n clock: \"far fa-clock\",\r\n close: \"fal fa-times\",\r\n closed: \"fal fa-check\",\r\n completed: \"fal fa-check-circle\",\r\n compose: \"fal fa-envelope\",\r\n contacts: \"fal fa-address-book\",\r\n copy: \"fal fa-copy\",\r\n customers: \"fal fa-money-bill\",\r\n document: \"fal fa-folder\",\r\n download: \"fas fa-download\",\r\n draft: \"fal fa-drafting-compass\",\r\n dropdown: \"fas fa-angle-down\",\r\n elipsisH: \"far fa-ellipsis-h\",\r\n emailSettings: \"fal fa-envelope\",\r\n elipsisV: \"far fa-ellipsis-v\",\r\n exclamationCircle: \"fas fa-exclamation-circle\",\r\n eye: \"far fa-eye\",\r\n fileAlt: \"far fa-file-alt\",\r\n fileImage: \"far fa-file-image\",\r\n fileInvoiceDollar: \"fal fa-file-invoice-dollar\",\r\n filePdf: \"far fa-file-pdf\",\r\n fileWord: \"far fa-file-word\",\r\n forward: \"fal fa-share\",\r\n genericCompany: \"fal fa-building\",\r\n google: \"fab fa-google\",\r\n hourglass: \"fal fa-hourglass\",\r\n myCompany: \"fas fa-building\",\r\n manage: \"fal fa-toolbox\",\r\n mine: \"fal fa-user\",\r\n minus: \"far fa-minus\",\r\n note: \"fal fa-sticky-note\",\r\n notifications: \"fal fa-mail-bulk\",\r\n packages: \"fas fa-project-diagram\",\r\n pencil: \"fas fa-pencil\",\r\n pendingApproval: \"fal fa-comment-alt-check\",\r\n plus: \"fas fa-plus-circle\",\r\n profile: \"fal fa-id-badge\",\r\n questionCircle: \"fal fa-question-circle\",\r\n reply: \"fal fa-reply\",\r\n reports: \"fal fa-chart-pie\",\r\n save: \"fal fa-save\",\r\n savedReplies: \"fab fa-replyd\",\r\n search: \"fas fa-search\",\r\n setup: \"fal fa-cog\",\r\n signature: \"fal fa-id-card\",\r\n spam: \"fal fa-ban\",\r\n spinner: \"fas fa-spinner\",\r\n statusPicker: \"fal fa-flag\",\r\n sync: \"fal fa-sync\",\r\n template: \"fal fa-file-alt\",\r\n newTemplate: \"fal fa-file-plus\",\r\n task: \"fal fa-list\",\r\n times: \"fal fa-times\",\r\n toggleoff: \"fal fa-toggle-off\",\r\n toggleon: \"fal fa-toggle-on\",\r\n trash: \"fal fa-trash-alt\",\r\n unassigned: \"fal fa-arrow-to-bottom\",\r\n user: \"fal fa-user\",\r\n userFriendsSolid: \"fas fa-user-friends\",\r\n userFriends: \"far fa-user-friends\",\r\n users: \"fal fa-users\",\r\n usersAndPermissions: \"fal fa-users-cog\",\r\n vendors: \"fal fa-file-invoice-dollar\",\r\n visibility: \"fal fa-eye\",\r\n workflows: \"fal fa-repeat-alt\",\r\n warningTriangle: \"fas fa-exclamation-triangle\",\r\n workspaces: \"fas fa-mail-bulk\"\r\n};\r\n\r\nexport default icons;\r\n","import util from \"util\";\r\nimport validator from \"validator\";\r\nimport moment from \"moment\";\r\nimport $ from \"jquery\";\r\nimport qs from \"qs\";\r\nimport numeral from \"numeral\";\r\nimport \"numeral/locales\";\r\n// import { saveAs } from \"file-saver\";\r\nimport equal from \"fast-deep-equal\";\r\n\r\n// import UBLPaymentTypeResources from \"./ublPaymentTypeResources\";\r\nimport Resources from \"./resources\";\r\nimport Icons from \"./icons\";\r\nconst onLocalHost = window.location.hostname === \"localhost\";\r\n\r\nlet config = require(\"../config/config.json\");\r\nif (!onLocalHost) {\r\n config.authEndpoint = window.location.origin.replace(\"app\", \"auth\"); // https://auth.lockstep.network\r\n config.apiEndpoint = window.location.origin.replace(\"app\", \"api\");\r\n config.emailDomain = window.location.hostname.replace(\"app.\", \"\");\r\n config.appEndpoint = window.location.origin.replace(\"auth\", \"app\");\r\n}\r\n\r\nexport function isLocalHost() {\r\n return onLocalHost;\r\n}\r\n\r\nexport function isStaging() {\r\n return config.apiEndpoint.split(\".\")[1].toLowerCase() === \"stg\";\r\n}\r\n\r\nexport function isQA() {\r\n if (isLocalHost()) {\r\n return false;\r\n }\r\n return config.apiEndpoint.split(\".\")[1].toLowerCase() === \"demo\";\r\n}\r\n\r\nexport function isLeading() {\r\n if (isLocalHost()) {\r\n return false;\r\n }\r\n return config.apiEndpoint.split(\".\")[1].toLowerCase() === \"leading\";\r\n}\r\n\r\nexport function isTrailing() {\r\n if (isLocalHost()) {\r\n return false;\r\n }\r\n return config.apiEndpoint.split(\".\")[1].toLowerCase() === \"trailing\";\r\n}\r\n\r\nexport function isProduction() {\r\n return config.apiEndpoint.split(\".\")[1].toLowerCase() === \"lockstep\";\r\n}\r\n\r\nexport function replaceAt(arr, index, value) {\r\n return [...arr.slice(0, index), value, ...arr.slice(index + 1)];\r\n}\r\n\r\nexport function insertAt(arr, index, value) {\r\n return [...arr.slice(0, index), value, ...arr.slice(index)];\r\n}\r\n\r\nexport function removeAt(arr, index) {\r\n return [...arr.slice(0, index), ...arr.slice(index + 1)];\r\n}\r\n\r\nexport function getConfig() {\r\n return { ...config };\r\n}\r\n\r\nexport function isAdmin() {\r\n return config.isAdminMode;\r\n}\r\n\r\nexport function toggleAdmin() {\r\n if (isLocalHost()) {\r\n config.isAdminMode = !config.isAdminMode;\r\n }\r\n}\r\n\r\nexport function updateConfig(item) {\r\n config = { ...config, ...item };\r\n}\r\n\r\nexport function isEmpty(item) {\r\n if (util.isNullOrUndefined(item) || item === \"undefined\") return true;\r\n let type = typeof item;\r\n if (type === \"object\" && util.isArray(item)) type = \"array\";\r\n switch (type) {\r\n case \"array\":\r\n return item.length === 0;\r\n case \"string\":\r\n return item.trim().length === 0;\r\n case \"object\":\r\n for (let prop in item) {\r\n if (item.hasOwnProperty(prop)) {\r\n return false;\r\n }\r\n }\r\n return JSON.stringify(item) === JSON.stringify({});\r\n default:\r\n return false;\r\n }\r\n}\r\n\r\nexport function getDisplaySize(sizeInBytes) {\r\n let size = sizeInBytes + 0;\r\n let kbSize = sizeInBytes / 1024;\r\n if (kbSize < 1) {\r\n return `${size}bytes`;\r\n }\r\n let mbSize = kbSize / 1024;\r\n if (mbSize < 1) {\r\n return `${kbSize.toFixed(0)}KB`;\r\n }\r\n let gbSize = mbSize / 1024;\r\n if (gbSize < 1) {\r\n return `${mbSize.toFixed(1)}MB`;\r\n }\r\n return `${gbSize.toFixed(2)}GB`;\r\n}\r\n\r\nexport function getConversationSubject(subject) {\r\n let displaySubject = isEmpty(subject) ? \"\" : subject.trim();\r\n return displaySubject;\r\n}\r\n\r\nexport function isGuid(guidText, version) {\r\n if (util.isString(guidText) === false) return false;\r\n if (isEmpty(guidText)) return false;\r\n let ver = version || \"all\";\r\n return validator.isUUID(guidText, ver);\r\n}\r\n\r\nexport function compareDates(a, b) {\r\n let ma = moment(a);\r\n let mb = moment(b);\r\n if (ma.isSame(mb)) {\r\n return 0;\r\n } else if (ma.isBefore(mb)) {\r\n return -1;\r\n } else {\r\n return 1;\r\n }\r\n}\r\n\r\nexport function compareStrings(a, b) {\r\n return a.toLowerCase().localeCompare(b.toLowerCase());\r\n}\r\n\r\nexport function removeLeading(char, from) {\r\n let to = from || \"\";\r\n while (to.length > 0 && to[0] === char) {\r\n to = to.substring(1);\r\n }\r\n return to;\r\n}\r\n\r\nconst validEmailRegExp = new RegExp(\r\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\r\n);\r\nexport function isEmailValid(emailAddress) {\r\n return validEmailRegExp.test(emailAddress);\r\n}\r\n\r\nexport function clone(item) {\r\n return JSON.parse(JSON.stringify(item));\r\n}\r\n\r\nexport function deepCompare(a, b) {\r\n let strA = JSON.stringify(a || {});\r\n let strB = JSON.stringify(b || {});\r\n return compareStrings(strA, strB);\r\n}\r\n\r\nexport function findIndex(array, match) {\r\n if (isEmpty(array)) {\r\n return -1;\r\n }\r\n let found = -1;\r\n for (let index = 0; index < array.length; index++) {\r\n let item = array[index];\r\n if (match(item)) {\r\n found = index;\r\n break;\r\n }\r\n }\r\n return found;\r\n}\r\n\r\nexport function find(array, match) {\r\n if (isEmpty(array)) {\r\n return undefined;\r\n }\r\n let found = undefined;\r\n for (let index = 0; index < array.length; index++) {\r\n let item = array[index];\r\n if (match(item)) {\r\n found = item;\r\n break;\r\n }\r\n }\r\n return found;\r\n}\r\n\r\nexport function parseDomain(email) {\r\n let domain = null;\r\n email.replace(/^(.*)@(.*)$/i, function ($0, $1, $2) {\r\n domain = $2;\r\n });\r\n\r\n return domain;\r\n}\r\n\r\nexport function enableBSTooltips() {\r\n $('[data-toggle=\"tooltip\"]').tooltip();\r\n $('[data-toggle=\"tooltip\"]').on(\"show.bs.dropdown\", function () {\r\n $(this).tooltip(\"hide\");\r\n $(this).tooltip(\"disable\");\r\n });\r\n $('[data-toggle=\"tooltip\"]').on(\"hide.bs.dropdown\", function () {\r\n $(this).tooltip(\"enable\");\r\n });\r\n}\r\n\r\nexport function disableBSTooltips() {\r\n $('[data-toggle=\"tooltip\"]').off();\r\n}\r\n\r\nexport function getQueryParameters(url) {\r\n let u = url;\r\n if (u.startsWith(\"http\")) {\r\n u = url.split(\"?\").splice(1).join(\"?\");\r\n }\r\n return qs.parse(u, { ignoreQueryPrefix: true });\r\n}\r\n\r\nexport function formatCurrency(amount, currency = \"$\") {\r\n if (isNaN(amount)) {\r\n return amount;\r\n }\r\n return `${currency}${numeral(amount).format(\"0,0.00\")}`;\r\n}\r\n\r\nexport function coalesceUserName(user = {}) {\r\n return user.fullName || user.givenName || user.familyName || user.email || \"\";\r\n}\r\n\r\n// 10,000 ticks from C# === one millisecond\r\nexport function ticksToReadableTime(ticks, returnNumber) {\r\n return millisecondsToReadableTime(ticks / 10000, returnNumber);\r\n}\r\n\r\nexport function millisecondsToReadableTime(milliseconds, returnNumber) {\r\n if (milliseconds === 0) {\r\n if (returnNumber) {\r\n return \"0 seconds\";\r\n }\r\n return \"---\";\r\n }\r\n\r\n moment.duration.fn.hackedHumanize = function (thres) {\r\n let save = {};\r\n for (let k in thres) {\r\n save[k] = moment.relativeTimeThreshold(k);\r\n }\r\n for (let k in thres) {\r\n moment.relativeTimeThreshold(k, thres[k]);\r\n }\r\n let res = this.humanize();\r\n for (let k in thres) {\r\n moment.relativeTimeThreshold(k, save[k]);\r\n }\r\n return res;\r\n };\r\n\r\n let duration = new moment.duration(milliseconds);\r\n\r\n return duration.hackedHumanize({ s: 120, m: 120, h: 120, d: 210, M: 1200 });\r\n}\r\n\r\nexport function millisecondsToReadableTimeHardCutoff(milliseconds, returnNumber) {\r\n if (milliseconds === 0) {\r\n if (returnNumber) {\r\n return \"0 seconds\";\r\n }\r\n return \"---\";\r\n }\r\n\r\n moment.duration.fn.hackedHumanize = function (thres) {\r\n let save = {};\r\n for (let k in thres) {\r\n save[k] = moment.relativeTimeThreshold(k);\r\n }\r\n for (let k in thres) {\r\n moment.relativeTimeThreshold(k, thres[k]);\r\n }\r\n let res = this.humanize();\r\n for (let k in thres) {\r\n moment.relativeTimeThreshold(k, save[k]);\r\n }\r\n return res;\r\n };\r\n\r\n let duration = new moment.duration(milliseconds);\r\n\r\n return duration.hackedHumanize({ s: 60, m: 60, h: 24, d: 30, M: 12 });\r\n}\r\n\r\nexport function getInvoiceNum(invoiceId) {\r\n let invoiceNum;\r\n if (isEmpty(invoiceId)) {\r\n return null;\r\n }\r\n if (invoiceId.SchemeID === \"CCLI\") {\r\n invoiceNum = invoiceId.Value.substring(invoiceId.Value.lastIndexOf(\":\") + 1) || \"\";\r\n } else {\r\n invoiceNum = invoiceId.Value;\r\n }\r\n\r\n return invoiceNum;\r\n}\r\n\r\nexport function createKey() {\r\n return [...arguments].join(\":\");\r\n}\r\n\r\nexport function includes(item, value) {\r\n return item.indexOf(value) >= 0;\r\n}\r\n\r\nexport function createNewEvent(eventName) {\r\n let event;\r\n if (typeof Event === \"function\") {\r\n event = new Event(eventName);\r\n } else {\r\n event = document.createEvent(\"Event\");\r\n event.initEvent(eventName, true, true);\r\n }\r\n return event;\r\n}\r\n\r\nexport function uniqueId() {\r\n return Math.random().toString(36).substr(2, 16);\r\n}\r\n\r\nexport function getFileType(fileName) {\r\n let fileType = \"\";\r\n let lastIndex = fileName.lastIndexOf(\".\");\r\n if (lastIndex) {\r\n fileType = fileName.substr(lastIndex + 1).toLowerCase();\r\n }\r\n\r\n const imgTypes = [\"jpeg\", \"jpg\", \"png\", \"apng\", \"gif\", \"svg\", \"bmp\", \"bmp ico\", \"png ico\"];\r\n const txtTypes = [\"txt\", \"rtf\"];\r\n const wordTypes = [\"doc\", \"docx\"];\r\n\r\n if (fileType === \"pdf\") {\r\n return \"pdf\";\r\n } else if (includes(imgTypes, fileType)) {\r\n return \"img\";\r\n } else if (includes(wordTypes, fileType)) {\r\n return \"word\";\r\n } else if (includes(txtTypes, fileType)) {\r\n return \"txt\";\r\n } else {\r\n return \"none\";\r\n }\r\n}\r\n\r\nexport function getFileNameIconClasses(fileName) {\r\n switch (getFileType(fileName)) {\r\n case \"pdf\":\r\n return \"attachment-pdf \" + Icons.filePdf;\r\n case \"txt\":\r\n return \"attachment-text \" + Icons.fileAlt;\r\n case \"word\":\r\n return \"attachment-word \" + Icons.fileWord;\r\n case \"img\":\r\n return \"attachment-image \" + Icons.fileImage;\r\n default:\r\n return \"attachment-text \" + Icons.fileAlt;\r\n }\r\n}\r\n\r\nexport function containsHtml(str) {\r\n return /<[a-z][\\s\\S]*>/i.test(str);\r\n}\r\n\r\nexport function htmlToText(htmlString) {\r\n let doc = new DOMParser().parseFromString(htmlString, \"text/html\");\r\n return doc.body.textContent || \"\";\r\n}\r\n\r\nexport function getReportsTicks(data) {\r\n let max = Math.max(null, ...data);\r\n let maxMoment = moment.duration(max / 10000);\r\n let maxUnit = \"seconds\";\r\n\r\n if (maxMoment.asDays() > 1) {\r\n maxUnit = \"days\";\r\n } else if (maxMoment.asHours() > 1) {\r\n maxUnit = \"hours\";\r\n } else if (maxMoment.asMinutes() > 1) {\r\n maxUnit = \"minutes\";\r\n }\r\n max = Math.ceil(maxMoment.as(maxUnit));\r\n let ticks = [];\r\n for (let i = 0; i <= 1; i += 0.25) {\r\n ticks.push(Math.round(max * i));\r\n }\r\n ticks = [...new Set(ticks)];\r\n ticks = ticks.map((tick) => moment.duration(tick, maxUnit).asMilliseconds() * 10000);\r\n\r\n return ticks;\r\n}\r\n\r\nexport function spliceString(str, index, count, add) {\r\n // We cannot pass negative indexes directly to the 2nd slicing operation.\r\n if (index < 0) {\r\n index = str.length + index;\r\n if (index < 0) {\r\n index = 0;\r\n }\r\n }\r\n\r\n return str.slice(0, index) + (add || \"\") + str.slice(index + count);\r\n}\r\n\r\nexport function formatTaskLabel(date, isCompleted) {\r\n if (isCompleted) {\r\n return {\r\n labelText: Resources.Completed,\r\n labelClassName: \"task-completed\",\r\n };\r\n }\r\n\r\n const daysDiff = moment().diff(moment.utc(date).local(), \"days\").toString();\r\n\r\n let labelClassName = \"overdue\";\r\n\r\n const labelText = moment\r\n .utc(date)\r\n .local()\r\n .calendar(null, {\r\n sameDay: function (now) {\r\n labelClassName = \"due-today\";\r\n return `[${Resources.DueToday}]`;\r\n },\r\n nextDay: function (now) {\r\n labelClassName = \"due-later\";\r\n return `[${Resources.DueTomorrow}]`;\r\n },\r\n nextWeek: function (now) {\r\n labelClassName = \"due-later\";\r\n return `[${Resources.Due}] dddd`;\r\n },\r\n lastDay: `[${Resources.OverdueByOneDay}]`,\r\n lastWeek: function (now) {\r\n return `[${Resources.OverdueBy(daysDiff)}]`;\r\n },\r\n sameElse: function (now) {\r\n if (this.isBefore(now)) {\r\n return `[${Resources.OverdueBy(daysDiff)}]`;\r\n }\r\n labelClassName = \"due-later\";\r\n return `[${Resources.Due}] L`;\r\n },\r\n });\r\n\r\n return { labelText, labelClassName };\r\n}\r\n\r\nexport function formatDimensionalDate(toFormat) {\r\n let date = moment(toFormat);\r\n\r\n if (date.isSame(moment(), \"d\")) {\r\n return date.format(\"LT\");\r\n } else if (date.isSame(moment(), \"year\")) {\r\n return date.format(\"MMM D\");\r\n } else {\r\n return date.format(\"l\");\r\n }\r\n}\r\n\r\nexport function formatDate(dateToFormat, isUTC = false) {\r\n let date = isUTC ? moment.utc(dateToFormat) : moment(dateToFormat);\r\n\r\n return date.format(\"ll\");\r\n}\r\n\r\nexport function getNextBusinessDay(toBusinessDay) {\r\n // If given date is not a business day then it will return the next business day\r\n let date = moment(toBusinessDay);\r\n let dayOfWeek = date.day();\r\n switch (dayOfWeek) {\r\n case 6:\r\n return date.add(2, \"day\").format();\r\n case 0:\r\n return date.add(1, \"day\").format();\r\n default:\r\n return toBusinessDay;\r\n }\r\n}\r\n\r\nexport function capStringAtLength(string, length) {\r\n return string.length > length ? string.substring(0, length - 3) + \"...\" : string.substring(0, length);\r\n}\r\n\r\nexport function stringToSentenceCase(string) {\r\n /*eslint-disable */\r\n return string.toLowerCase().replace(/(^\\s*\\w|[\\.\\!\\?]\\s*\\w)/g, function (c) {\r\n return c.toUpperCase();\r\n });\r\n /*eslint-enable */\r\n}\r\n\r\nexport function updateSelectedRows(index, selectedRows, dataLength) {\r\n let newSelectedRows;\r\n if (Array.isArray(index)) {\r\n newSelectedRows = [...selectedRows];\r\n index.forEach((i) => {\r\n newSelectedRows = updateSelectedRows(i, newSelectedRows, dataLength);\r\n });\r\n return newSelectedRows;\r\n } else if (index === \"all\") {\r\n if (selectedRows.length === dataLength) {\r\n newSelectedRows = [];\r\n } else {\r\n let newArray = [];\r\n for (let i = 0; i < dataLength; i++) {\r\n newArray.push(i);\r\n }\r\n newSelectedRows = newArray;\r\n }\r\n newSelectedRows.sort((a, b) => a > b);\r\n\r\n return newSelectedRows;\r\n } else {\r\n newSelectedRows = [...selectedRows];\r\n let indexInSelectedRows = findIndex(selectedRows, (row) => equal(row, index));\r\n if (indexInSelectedRows > -1) {\r\n newSelectedRows.splice(indexInSelectedRows, 1);\r\n } else {\r\n newSelectedRows.push(index);\r\n }\r\n\r\n newSelectedRows.sort((a, b) => a - b);\r\n return newSelectedRows;\r\n }\r\n}\r\n\r\n// export function getReadableFromUBLPaymentType(paymentType) {\r\n// let values = UBLPaymentTypeResources.CodeList.SimpleCodeList.Row;\r\n// let readableUBL = find(values, ublType => ublType.Value[0].SimpleValue === paymentType) || {};\r\n// return (readableUBL.Value || [{}, {}])[1].SimpleValue;\r\n// }\r\n\r\nexport function updateSort(sortBy, currentSortBy, currentSortDirection, updateFunction) {\r\n if (currentSortBy !== sortBy) {\r\n updateFunction(sortBy, \"desc\");\r\n } else if (currentSortDirection === \"desc\") {\r\n updateFunction(sortBy, \"asc\");\r\n } else {\r\n updateFunction(sortBy, \"desc\");\r\n }\r\n}\r\n\r\nexport function getAttatchedDocumentLedgerContent() {\r\n return `${generateGUID()}`;\r\n}\r\n\r\nexport function generateGUID() {\r\n return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>\r\n (c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16)\r\n );\r\n}\r\n\r\nexport function openUrlForDownload(url, fileName) {\r\n // for non-IE\r\n if (!window.ActiveXObject) {\r\n let save = document.createElement(\"a\");\r\n save.href = url;\r\n save.target = \"_blank\";\r\n let filename = url.substring(url.lastIndexOf(\"/\") + 1);\r\n save.download = fileName || filename;\r\n if (navigator.userAgent.toLowerCase().match(/(ipad|iphone|safari)/) && navigator.userAgent.search(\"Chrome\") < 0) {\r\n document.location = save.href;\r\n // window event not working here\r\n } else {\r\n let evt = new MouseEvent(\"click\", {\r\n view: window,\r\n bubbles: true,\r\n cancelable: false,\r\n });\r\n save.dispatchEvent(evt);\r\n (window.URL || window.webkitURL).revokeObjectURL(save.href);\r\n }\r\n }\r\n\r\n // for IE < 11\r\n else if (!!window.ActiveXObject && document.execCommand) {\r\n let _window = window.open(url, \"_blank\");\r\n _window.document.close();\r\n // _window.document.execCommand(\"SaveAs\", true, fileName || url);\r\n _window.close();\r\n }\r\n}\r\n\r\n// export function saveBlobAsDownload(blob, fileName) {\r\n// saveAs(new Blob([blob]), fileName);\r\n// }\r\n\r\nexport function onBlurCheckFocusable(cb) {\r\n setTimeout(() => {\r\n const activeIsChildOfFocusable = Array.from(document.getElementsByClassName(\"focusable\")).some((el) =>\r\n el.contains(document.activeElement)\r\n );\r\n const activeisFocusable = includes(document.activeElement.getAttribute(\"class\") || \"\", \"focusable\");\r\n if ((activeIsChildOfFocusable || activeisFocusable) && document.hasFocus()) {\r\n return;\r\n }\r\n\r\n cb();\r\n }, 1);\r\n}\r\n\r\nexport function debounce(func, wait) {\r\n let timeout;\r\n return function (...args) {\r\n const context = this;\r\n if (timeout) clearTimeout(timeout);\r\n timeout = setTimeout(() => {\r\n timeout = null;\r\n func.apply(context, args);\r\n }, wait);\r\n };\r\n}\r\n\r\nexport function sortObjects(objects, sortBy, sortDirection, sortByType = \"string\") {\r\n if (sortByType === \"date\") {\r\n return [...objects].sort((a, b) => {\r\n if (a[sortBy] > b[sortBy]) {\r\n return moment().compareDates(a, b);\r\n } else {\r\n return -moment().compareDates(a, b);\r\n }\r\n });\r\n }\r\n return [...objects].sort((a, b) => {\r\n if (a[sortBy] > b[sortBy]) {\r\n if (sortDirection === \"desc\") {\r\n return 1;\r\n }\r\n return -1;\r\n } else {\r\n if (sortDirection === \"desc\") {\r\n return -1;\r\n }\r\n return 1;\r\n }\r\n });\r\n}\r\n\r\nexport function formatPhoneNumber(str) {\r\n //Filter only numbers from the input\r\n let cleaned = (\"\" + str).replace(/\\D/g, \"\");\r\n\r\n //Check if the input is of correct\r\n let match = cleaned.match(/^(1|)?(\\d{3})(\\d{3})(\\d{4})$/);\r\n\r\n if (match) {\r\n //Remove the matched extension code\r\n //Change this to format for any country code.\r\n let intlCode = match[1] ? \"+1 \" : \"\";\r\n return [intlCode, \"(\", match[2], \") \", match[3], \"-\", match[4]].join(\"\");\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport function generateUUID() {\r\n let d = new Date().getTime();\r\n let uuid = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\r\n let r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n return (c === \"x\" ? r : (r & 0x3) | 0x8).toString(16);\r\n });\r\n return uuid;\r\n}\r\n","import Axios from \"axios\";\r\n\r\nimport { getConfig, isEmpty } from \"./utils\";\r\n\r\nexport const dataAxios = Axios.create({\r\n headers: { \"Cache-Control\": \"no-cache\", Pragma: \"no-cache\", Expires: \"-1\" },\r\n});\r\n\r\nfunction defaultOptions() {\r\n let config = getConfig();\r\n let headers = {};\r\n if (config.AccessToken) {\r\n headers[\"Authorization\"] = `Bearer ${config.AccessToken}`;\r\n }\r\n return { headers: headers };\r\n}\r\n\r\nfunction mergeOptions(options) {\r\n let def = defaultOptions();\r\n Object.keys(options || {}).forEach((key) => {\r\n def[key] = def[key] ? { ...(def[key] || {}), ...options[key] } : options[key];\r\n });\r\n return def;\r\n}\r\n\r\ndataAxios.interceptors.request.use(\r\n function (config) {\r\n if (navigator.onLine === false) {\r\n return Promise.reject(new Error(\"Network error\"));\r\n }\r\n if (config.method === \"get\") {\r\n config.retry = 4;\r\n }\r\n return config;\r\n },\r\n function (error) {\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\ndataAxios.interceptors.response.use(undefined, function axiosRetryInterceptor(err) {\r\n const RETRY_DELAYS = [1, 2, 4, 8, 16];\r\n const config = err.config;\r\n\r\n const isRetryable =\r\n !isEmpty(config) && !isEmpty(config.retry) && !isEmpty(err.response) && err.response.status >= 500;\r\n // If config does not exist or the retry option is not set, reject\r\n if (isRetryable !== true) {\r\n return Promise.reject(err);\r\n }\r\n\r\n // Set the variable for keeping track of the retry count\r\n config.__retryCount = config.__retryCount || 0;\r\n\r\n // Check if we've maxed out the total number of retries\r\n if (config.__retryCount >= config.retry) {\r\n // Reject with the error\r\n return Promise.reject(err);\r\n }\r\n\r\n const retryDelay = RETRY_DELAYS[config.__retryCount];\r\n // Increase the retry count\r\n config.__retryCount += 1;\r\n\r\n // Create new promise to handle exponential backoff\r\n const backoff = new Promise(function (resolve) {\r\n setTimeout(function () {\r\n resolve();\r\n }, retryDelay * 1000);\r\n });\r\n\r\n // Return the promise in which recalls axios to retry the request\r\n return backoff.then(function () {\r\n return dataAxios(config);\r\n });\r\n});\r\n\r\nfunction get(url, options) {\r\n return dataAxios.get(\"/\" + url, mergeOptions(options));\r\n}\r\n\r\nfunction deleteItem(url, options) {\r\n return dataAxios.delete(\"/\" + url, mergeOptions(options));\r\n}\r\n\r\nfunction createItem(url, data, options) {\r\n return dataAxios.post(\"/\" + url, data, mergeOptions(options));\r\n}\r\n\r\nfunction editItem(url, data, options) {\r\n return dataAxios.put(\"/\" + url, data, mergeOptions(options));\r\n}\r\n\r\nexport default {\r\n get,\r\n put: editItem,\r\n post: createItem,\r\n delete: deleteItem,\r\n};\r\n","import data from \"../lib/data\";\r\nimport Axios from \"axios\";\r\nimport { updateConfig, getConfig, generateUUID } from \"../lib/utils\"\r\nimport queryString from \"query-string\";\r\nimport { rejects } from \"assert\";\r\n\r\nexport const authAxios = Axios.create({\r\n headers: { \"Cache-Control\": \"no-cache\", Pragma: \"no-cache\", Expires: \"-1\" }\r\n});\r\n\r\nexport const actions = {\r\n LOGGING_IN: \"LOGGING_IN\",\r\n LOGGED_IN: \"LOGGED_IN\",\r\n LOGIN_FAILED: \"LOGIN_FAILED\",\r\n\r\n GETTING_MAGIC_LINK: \"GETTING_MAGIC_LINK\",\r\n GOT_MAGIC_LINK: \"GOT_MAGIC_LINK\",\r\n FAILED_GET_MAGIC_LINK: \"FAILED_GET_MAGIC_LINK\",\r\n\r\n GETTING_COMPANY_LOGO: \"GETTING_COMPANY_LOGO\",\r\n GOT_COMPANY_LOGO: \"GOT_COMPANY_LOGO\",\r\n FAILED_GET_COMPANY_LOGO: \"FAILED_GET_COMPANY_LOGO\",\r\n\r\n GETTING_CUST_FROM_ID: \"GETTING_CUST_FROM_ID\",\r\n GOT_CUST_FROM_ID: \"GOT_CUST_FROM_ID\",\r\n FAILED_GET_CUST_FROM_ID: \"FAILED_GET_CUST_FROM_ID\",\r\n\r\n REGISTERING_NEW_EMAIL: \"REGISTERING_NEW_EMAIL\",\r\n REGISTERED_NEW_EMAIL: \"REGISTERED_NEW_EMAIL\",\r\n FAILED_REGISTER_NEW_EMAIL: \"FAILED_REGISTER_NEW_EMAIL\",\r\n\r\n SENDING_RESET_EMAIL: \"SENDING_RESET_EMAIL\",\r\n SENT_RESET_EMAIL: \"SENT_RESET_EMAIL\",\r\n FAILED_SEND_RESET_EMAIL: \"FAILED_SENT_RESET_EMAIL\"\r\n};\r\n\r\nfunction login(userName: string, password: string, rememberLogin: boolean) {\r\n\r\n let redirect = queryString.parse(window.location.search);\r\n\r\n let returnUrl = `/connect/authorize?client_id=appid&redirect_uri=${redirect.ReturnUrl?.includes(\"callback\") ? getConfig().appEndpoint : redirect.ReturnUrl || getConfig().appEndpoint}&response_type=code+id_token&nonce=${generateUUID()}&scope=openid+profile+api+offline_access`;\r\n\r\n let formData = new FormData();\r\n formData.append('userName', userName);\r\n formData.append('password', password);\r\n formData.append('returnUrl', returnUrl);\r\n formData.append('rememberLogin', rememberLogin.toString());\r\n\r\n let body = {\r\n username: userName,\r\n password: password,\r\n returnUrl: returnUrl,\r\n rememberLogin: rememberLogin\r\n }\r\n\r\n let ok = new Promise(async (resolve, reject) => {\r\n\r\n authAxios.defaults.withCredentials = true;\r\n try {\r\n const response = await authAxios.post(`v1/user/login/authorize`, body);\r\n resolve(response);\r\n } catch (e) {\r\n reject(e);\r\n }\r\n });\r\n\r\n return ok;\r\n}\r\n\r\nexport const loggedIn = (token: string) => (dispatch: any, getState: any) => {\r\n updateConfig({ AccessToken: token });\r\n return dispatch({ type: actions.LOGGING_IN, didLoginFail: false, token: token });\r\n};\r\n\r\nconst loginUser = (userName: string, password: string, rememberLogin: boolean) => (dispatch: any, getState: any) => {\r\n dispatch({ type: actions.LOGGING_IN, didLoginFail: false });\r\n let promise = login(userName, password, rememberLogin)\r\n promise.then((response: any) => {\r\n let redirect = queryString.parse(window.location.search);\r\n let returnUrl = `/connect/authorize?client_id=appid&redirect_uri=${redirect.ReturnUrl?.includes(\"callback\") ? getConfig().appEndpoint : redirect.ReturnUrl || getConfig().appEndpoint}&response_type=code+id_token&nonce=${generateUUID()}&scope=openid+profile+api+offline_access`;\r\n\r\n window.location = returnUrl as unknown as Location;\r\n\r\n dispatch(loggedIn(response.identityToken));\r\n return response.data;\r\n }).catch(response => {\r\n dispatch({ type: actions.LOGIN_FAILED, didLoginFail: true });\r\n });\r\n};\r\n\r\nconst sendResetEmail = (emailAddr: string) => (dispatch: any, getState: any) => {\r\n dispatch({ type: actions.SENDING_RESET_EMAIL });\r\n const body = {\r\n email: emailAddr\r\n }\r\n let endpoint = `v1/user/reset`\r\n return data.post(endpoint, body, {\r\n headers: { \"Content-Type\": \"application/json\" }\r\n })\r\n .then((response: any) => {\r\n dispatch({ type: actions.SENT_RESET_EMAIL })\r\n return response.data;\r\n })\r\n .catch((error: Error) => {\r\n dispatch({ type: actions.FAILED_SEND_RESET_EMAIL })\r\n throw error;\r\n })\r\n}\r\n\r\nconst getMagicLink = (emailAddr: string) => (dispatch: any) => {\r\n dispatch({ type: actions.GETTING_MAGIC_LINK });\r\n let endpoint = `v1/magiclink/get`;\r\n return data\r\n .post(endpoint, `\"${emailAddr}\"`, {\r\n headers: { \"Content-Type\": \"application/json\" },\r\n })\r\n\r\n .then((response: any) => {\r\n dispatch({ type: actions.GOT_MAGIC_LINK, magicLink: response.data });\r\n return response.data;\r\n })\r\n .catch((error: Error) => {\r\n // handlePromiseError(error, \"Error magic link\", \"Error magic link\");\r\n dispatch({ type: actions.FAILED_GET_MAGIC_LINK });\r\n throw error;\r\n });\r\n};\r\n\r\nconst getCompanySpecificMagicLink = (emailAddr: string, accountKey: any, companyId: any) => (dispatch: any) => {\r\n dispatch({ type: actions.GETTING_MAGIC_LINK });\r\n let endpoint = `v1/magiclink/get/${accountKey}/${companyId}`;\r\n return data\r\n .post(endpoint, `\"${emailAddr}\"`, {\r\n headers: { \"Content-Type\": \"application/json\" },\r\n })\r\n\r\n .then((response: any) => {\r\n dispatch({ type: actions.GOT_MAGIC_LINK, magicLink: response.data });\r\n return response.data;\r\n })\r\n .catch((error: Error) => {\r\n dispatch({ type: actions.FAILED_GET_MAGIC_LINK });\r\n throw error;\r\n });\r\n};\r\n\r\nconst getCompanyLogo = (accountKey: any, companyId: any) => (dispatch: any) => {\r\n dispatch({ type: actions.GETTING_COMPANY_LOGO });\r\n let endpoint = `v1/magiclink/getcompanylogo/${accountKey}/${companyId}`;\r\n return data\r\n .get(endpoint, {\r\n headers: { \"Content-Type\": \"application/json\" },\r\n })\r\n\r\n .then((response: any) => {\r\n dispatch({ type: actions.GOT_COMPANY_LOGO, companyLogo: response.data });\r\n return response.data;\r\n })\r\n .catch((error: Error) => {\r\n // handlePromiseError(error, \"Error magic link\", \"Error magic link\");\r\n dispatch({ type: actions.FAILED_GET_COMPANY_LOGO });\r\n throw error;\r\n });\r\n};\r\n\r\nconst getCustFromCustId = (custId: string, accountKey: any, companyId: string) => (dispatch: any) => {\r\n dispatch({ type: actions.GETTING_CUST_FROM_ID });\r\n let endpoint = `v1/magiclink/getcustomer/${custId}/${accountKey}/${companyId}`;\r\n return data\r\n .get(endpoint, {\r\n headers: { \"Content-Type\": \"application/json\" },\r\n })\r\n\r\n .then((response: any) => {\r\n dispatch({ type: actions.GOT_CUST_FROM_ID, customer: response.data });\r\n return response.data;\r\n })\r\n\r\n .catch((error: Error) => {\r\n // handlePromiseError(error, \"Error magic link\", \"Error magic link\");\r\n dispatch({ type: actions.FAILED_GET_CUST_FROM_ID });\r\n throw error;\r\n });\r\n}\r\n\r\nconst registerNewEmailAddress = (emailAddr: string, accountKey: any, companyId: string, custId: string) => (dispatch: any) => {\r\n dispatch({ type: actions.REGISTERING_NEW_EMAIL });\r\n let endpoint = `v1/magiclink/register/${custId}/${accountKey}/${companyId}`;\r\n return data\r\n .post(endpoint, `\"${emailAddr}\"`, {\r\n headers: { \"Content-Type\": \"application/json\" },\r\n })\r\n\r\n .then((response: any) => {\r\n dispatch({ type: actions.REGISTERED_NEW_EMAIL, magicLink: response.data });\r\n return response.data;\r\n })\r\n .catch((error: Error) => {\r\n // handlePromiseError(error, \"Error magic link\", \"Error magic link\");\r\n dispatch({ type: actions.FAILED_REGISTER_NEW_EMAIL });\r\n throw error;\r\n });\r\n};\r\n\r\nexport const dispatchToProps = (dispatch: any) => ({\r\n getMagicLink: (emailAddr: string) => {\r\n return dispatch(getMagicLink(emailAddr));\r\n },\r\n getCompanySpecificMagicLink: (emailAddr: string, accountKey: any, companyId: any) => {\r\n return dispatch(getCompanySpecificMagicLink(emailAddr, accountKey, companyId));\r\n },\r\n getCompanyLogo: (accountKey: any, companyId: any) => {\r\n return dispatch(getCompanyLogo(accountKey, companyId));\r\n },\r\n getCustFromCustId: (custId: string, accountKey: any, companyId: string) => {\r\n return dispatch(getCustFromCustId(custId, accountKey, companyId));\r\n },\r\n registerNewEmailAddress: (emailAddr: string, accountKey: any, companyId: string, custId: string) => {\r\n return dispatch(registerNewEmailAddress(emailAddr, accountKey, companyId, custId));\r\n },\r\n loggedIn: (token: string) => {\r\n dispatch(loggedIn(token));\r\n },\r\n loginUser: (userName: string, password: string, rememberLogin: boolean) => {\r\n return dispatch(loginUser(userName, password, rememberLogin));\r\n },\r\n sendResetEmail: (emailAddr: string) => {\r\n return dispatch(sendResetEmail(emailAddr));\r\n },\r\n});\r\n","import { actions } from \"./login-actions\";\r\n\r\nconst defaultNetworkSettings = {\r\n gettingMagicLink: false,\r\n gotMagicLink: false,\r\n failedGetMagicLink: false,\r\n magicLink: \"\",\r\n\r\n gettingCompanyLogo: false,\r\n gotCompanyLogo: false,\r\n failedGetCompanyLogo: false,\r\n companyLogo: \"\",\r\n\r\n gettingCustFromId: false,\r\n gotCustFromId: false,\r\n failedGetCustFromId: false,\r\n customer: {},\r\n\r\n registeringEmail: false,\r\n registeredEmail: false,\r\n failedRegisterEmail: false,\r\n\r\n loggingIn: false,\r\n loggedIn: false,\r\n loginFailed: false,\r\n\r\n sendingResetEmail: false,\r\n sentResetEmail: false,\r\n failedSendResetEmail: false\r\n};\r\n\r\nfunction loginReducer(state = defaultNetworkSettings, action: any) {\r\n switch (action.type) {\r\n case actions.GETTING_MAGIC_LINK:\r\n return {\r\n ...state,\r\n gettingMagicLink: true,\r\n gotMagicLink: false,\r\n failedGetMagicLink: false,\r\n };\r\n case actions.GOT_MAGIC_LINK:\r\n return {\r\n ...state,\r\n gettingMagicLink: false,\r\n gotMagicLink: true,\r\n failedGetMagicLink: false,\r\n magicLink: action.magicLink,\r\n };\r\n case actions.FAILED_GET_MAGIC_LINK:\r\n return {\r\n ...state,\r\n gettingMagicLink: false,\r\n gotMagicLink: false,\r\n failedGetMagicLink: true,\r\n };\r\n\r\n case actions.GETTING_COMPANY_LOGO:\r\n return {\r\n ...state,\r\n gettingCompanyLogo: true,\r\n gotCompanyLogo: false,\r\n failedGetCompanyLogo: false,\r\n };\r\n case actions.GOT_COMPANY_LOGO:\r\n return {\r\n ...state,\r\n gettingCompanyLogo: false,\r\n gotCompanyLogo: true,\r\n failedGetCompanyLogo: false,\r\n companyLogo: action.companyLogo,\r\n };\r\n case actions.FAILED_GET_COMPANY_LOGO:\r\n return {\r\n ...state,\r\n gettingCompanyLogo: false,\r\n gotCompanyLogo: false,\r\n failedGetCompanyLogo: true,\r\n };\r\n\r\n case actions.GETTING_CUST_FROM_ID:\r\n return {\r\n ...state,\r\n gettingCustFromId: true,\r\n gotCustFromId: false,\r\n failedGetCustFromId: false,\r\n };\r\n case actions.GOT_CUST_FROM_ID:\r\n return {\r\n ...state,\r\n gettingCustFromId: false,\r\n gotCustFromId: true,\r\n failedGetCustFromId: false,\r\n customer: action.customer,\r\n };\r\n case actions.FAILED_GET_CUST_FROM_ID:\r\n return {\r\n ...state,\r\n gettingCustFromId: false,\r\n gotCustFromId: false,\r\n failedGetCustFromId: true,\r\n };\r\n\r\n case actions.REGISTERING_NEW_EMAIL:\r\n return {\r\n ...state,\r\n registeringEmail: true,\r\n registeredEmail: false,\r\n failedRegisterEmail: false\r\n };\r\n case actions.REGISTERED_NEW_EMAIL:\r\n return {\r\n ...state,\r\n registeringEmail: false,\r\n registeredEmail: true,\r\n failedRegisterEmail: false,\r\n magicLink: action.magicLink\r\n };\r\n case actions.FAILED_REGISTER_NEW_EMAIL:\r\n return {\r\n ...state,\r\n registeringEmail: false,\r\n registeredEmail: false,\r\n failedRegisterEmail: true\r\n };\r\n\r\n case actions.LOGGING_IN:\r\n return {\r\n ...state,\r\n loggingIn: true,\r\n loggedIn: false,\r\n loginFailed: false\r\n };\r\n case actions.LOGGED_IN:\r\n return {\r\n ...state,\r\n loggingIn: false,\r\n loggedIn: true,\r\n loginFailed: false\r\n };\r\n case actions.LOGIN_FAILED:\r\n return {\r\n ...state,\r\n loggingIn: false,\r\n loggedIn: false,\r\n loginFailed: true\r\n };\r\n\r\n case actions.SENDING_RESET_EMAIL:\r\n return {\r\n ...state,\r\n sendingResetEmail: true,\r\n sentResetEmail: false,\r\n failedSendResetEmail: false\r\n };\r\n case actions.SENT_RESET_EMAIL:\r\n return {\r\n ...state,\r\n sendingResetEmail: false,\r\n sentResetEmail: true,\r\n failedSendResetEmail: false\r\n };\r\n case actions.FAILED_SEND_RESET_EMAIL:\r\n return {\r\n ...state,\r\n sendingResetEmail: false,\r\n sentResetEmail: false,\r\n failedSendResetEmail: true\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default loginReducer;\r\n","import * as React from 'react';\r\nimport { Container } from 'reactstrap';\r\n\r\nexport default (props: { children?: React.ReactNode }) => (\r\n \r\n \r\n {props.children}\r\n \r\n \r\n);\r\n","import React, { Component } from \"react\";\r\nimport { isEmpty } from \"../../lib/utils\";\r\nimport Icons from \"../../lib/icons\";\r\nimport Resources from \"../../lib/resources\";\r\n\r\nexport default class Card extends Component {\r\n render() {\r\n let {\r\n children,\r\n maxWidth,\r\n className,\r\n title,\r\n headAboveCard,\r\n onClickEdit,\r\n editing,\r\n onCancel,\r\n onSave,\r\n description,\r\n type\r\n } = this.props;\r\n\r\n let isEditable = !isEmpty(onClickEdit) && !isEmpty(onSave);\r\n let cardHeader = () =>\r\n !isEmpty(title) && (\r\n \r\n
\r\n
\r\n

{title}

\r\n
\r\n {isEditable &&\r\n (editing ? null : (\r\n \r\n ))}\r\n
\r\n

{description}

\r\n
\r\n );\r\n return (\r\n \r\n {headAboveCard && cardHeader()}\r\n \r\n {!headAboveCard && cardHeader()}\r\n {children}\r\n {isEditable && editing && (\r\n
\r\n {!isEmpty(onCancel) && (\r\n \r\n )}\r\n \r\n
\r\n )}\r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component, CSSProperties } from \"react\";\r\nimport { uniqueId, isEmpty } from \"../../lib/utils\";\r\n\r\nexport interface CheckBoxProps {\r\n preventBubbling: boolean,\r\n className: string,\r\n checked: boolean,\r\n onChange: any,\r\n disabled: boolean,\r\n label: string,\r\n style: CSSProperties\r\n}\r\n\r\nexport default class Checkbox extends Component {\r\n\r\n static defaultProps = {\r\n preventBubbling: false,\r\n className: \"\",\r\n checked: false,\r\n onChange: null,\r\n disabled: false,\r\n label: \"\",\r\n style: \"\"\r\n }\r\n\r\n render() {\r\n const id = \"checkbox_\" + uniqueId();\r\n const onClick: any = this.props.preventBubbling ? (e: any) => e.stopPropagation() : null;\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","import React, { Component } from \"react\";\r\n\r\nclass IconGlobe extends Component {\r\n render() {\r\n let { className, height, style } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nIconGlobe.defaultProps = {\r\n height: 22,\r\n};\r\n\r\nexport default IconGlobe;\r\n","import React, { Component } from \"react\";\r\n\r\nclass IconLeftArrow extends Component {\r\n render() {\r\n let { className, height } = this.props;\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nIconLeftArrow.defaultProps = {\r\n height: 24,\r\n};\r\n\r\nexport default IconLeftArrow;\r\n","import React, { Component } from \"react\";\r\n\r\nclass IconAlertCircle extends Component {\r\n render() {\r\n let { className, height } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nIconAlertCircle.defaultProps = {\r\n height: 22,\r\n};\r\n\r\nexport default IconAlertCircle;\r\n","import React, { Component } from \"react\";\r\nimport Resources from \"../../lib/resources\";\r\nimport { isEmpty } from \"../../lib/utils\";\r\nimport IconAlertCircle from \"../library/icons/iconAlertCircle\"\r\n\r\nexport interface TextInputProps {\r\n isPassword: boolean,\r\n id: any,\r\n inputOnChange: any,\r\n onPressEnter: any,\r\n textValue: string,\r\n label: string,\r\n labelInline: any,\r\n width: any,\r\n disabled: boolean,\r\n inline: any,\r\n inputRef: any,\r\n className: string,\r\n centerText: any,\r\n placeholder: string,\r\n fsObscure: any,\r\n isValid: boolean,\r\n invalidText: string,\r\n dollarAmountInput: any,\r\n style: any,\r\n onFocus: any,\r\n onBlur: any,\r\n isNumber: boolean\r\n}\r\n\r\nexport interface TextInputState {\r\n showPassword: any,\r\n isFocused: any\r\n}\r\n\r\nexport default class TextInput extends Component {\r\n constructor(props: TextInputProps) {\r\n\r\n super(props);\r\n\r\n this.state = {\r\n showPassword: false,\r\n isFocused: false\r\n };\r\n\r\n this.toggleVisibility = this.toggleVisibility.bind(this);\r\n this.onBlur = this.onBlur.bind(this);\r\n this.onFocus = this.onFocus.bind(this);\r\n }\r\n\r\n toggleVisibility() {\r\n this.setState({ showPassword: !this.state.showPassword });\r\n }\r\n\r\n onFocus(e: any) {\r\n this.setState({ isFocused: true });\r\n if (!isEmpty(this.props.onFocus)) {\r\n this.props.onFocus(e);\r\n }\r\n }\r\n\r\n onBlur(e: any) {\r\n this.setState({ isFocused: false });\r\n if (!isEmpty(this.props.onBlur)) {\r\n this.props.onBlur(e);\r\n }\r\n }\r\n\r\n static defaultProps = {\r\n isPassword: false,\r\n id: \"\",\r\n inputOnChange: null,\r\n onPressEnter: null,\r\n textValue: \"\",\r\n label: \"\",\r\n labelInline: true,\r\n width: \"\",\r\n disabled: false,\r\n inline: false,\r\n inputRef: null,\r\n className: \"\",\r\n centerText: false,\r\n placeholder: \"\",\r\n fsObscure: true,\r\n isValid: true,\r\n invalidText: \"\",\r\n dollarAmountInput: \"\",\r\n style: \"\",\r\n onBlur: null,\r\n onFocus: null,\r\n isNumber: false\r\n };\r\n\r\n render() {\r\n let {\r\n isPassword = false,\r\n id,\r\n inputOnChange,\r\n onPressEnter,\r\n textValue = \"\",\r\n label,\r\n labelInline = true,\r\n width,\r\n disabled,\r\n inline,\r\n inputRef,\r\n className,\r\n centerText,\r\n placeholder,\r\n fsObscure,\r\n isValid = true,\r\n invalidText = \"\",\r\n dollarAmountInput,\r\n style\r\n } = this.props;\r\n\r\n if (dollarAmountInput) {\r\n placeholder = \"0.00\";\r\n }\r\n\r\n let type = \"text\";\r\n\r\n if (this.props.isPassword && this.state.showPassword === false) {\r\n type = \"password\";\r\n }\r\n if (this.props.isNumber) {\r\n type = \"number\";\r\n }\r\n\r\n return (\r\n \r\n
\r\n {textValue && isPassword ? (\r\n \r\n {this.state.showPassword ? Resources.Hide : Resources.Show}\r\n \r\n ) : null}\r\n {label ? (\r\n \r\n ) : null}\r\n {/* {dollarAmountInput && $
}\r\n {\r\n if (e.key === \"Enter\" && typeof onPressEnter === \"function\") {\r\n onPressEnter();\r\n }\r\n }}\r\n placeholder={placeholder}\r\n name={id || \"\"}\r\n />\r\n \r\n {!isValid && !isEmpty(textValue) && (\r\n
\r\n
\r\n \r\n {invalidText}\r\n
\r\n
\r\n )}\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nclass DoneIcon extends Component {\r\n render() {\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\n \r\n CONTACT INFO\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\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default DoneIcon;","import React, { Component } from \"react\";\r\n\r\nexport default class MainLoader extends Component {\r\n render() {\r\n const spinner =
;\r\n if (this.props.fullScreen === true) {\r\n return (\r\n
\r\n {spinner}\r\n
\r\n );\r\n }\r\n\r\n return spinner;\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nclass ErrorIcon extends Component {\r\n render() {\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\n \r\n \r\n \r\n \r\n \r\n
\r\n )\r\n }\r\n}\r\n\r\nexport default ErrorIcon;","import React, { Component } from \"react\";\r\n\r\nfunction LockstepLogo() {\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\nexport default LockstepLogo;","import React, { Component } from \"react\";\r\n\r\nclass IconCheckCircle extends Component {\r\n render() {\r\n let { className, height } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nIconCheckCircle.defaultProps = {\r\n height: 22\r\n};\r\n\r\nexport default IconCheckCircle;\r\n","import React, { Component } from \"react\";\r\nimport { withRouter, Link } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport Card from \"./library/card\";\r\nimport CheckBox from \"./library/checkbox\";\r\nimport IconGlobe from \"./library/icons/iconGlobe\";\r\nimport IconLeftArrow from \"./library/icons/iconLeftArrow\";\r\nimport TextInput from \"./library/textInput\";\r\nimport DoneIcon from \"./library/doneIcon\";\r\nimport MainLoader from \"./library/mainLoader\";\r\nimport ErrorIcon from \"./library/errorIcon\";\r\nimport { dispatchToProps as loginDP } from \"../store/login-actions\";\r\n\r\nimport { withLDConsumer } from \"launchdarkly-react-client-sdk\";\r\n\r\nimport Resources from \"../lib/resources\";\r\nimport IconAlertCircle from \"./library/icons/iconAlertCircle\";\r\nimport { isEmpty } from \"../lib/utils\";\r\nimport LockstepLogo from \"./library/lockstepLogo\";\r\nimport IconCheckCircle from \"./library/icons/iconCheckCircle\";\r\n\r\ntype LoginState = {\r\n username: string,\r\n password: string,\r\n rememberMeChecked: boolean,\r\n magicLinkView: boolean,\r\n email: string,\r\n successView: boolean,\r\n failedView: boolean\r\n}\r\n\r\ntype LoginProps = {\r\n match: any,\r\n history: any,\r\n location: any,\r\n getMagicLink: any,\r\n loginStore: any,\r\n loginUser: any,\r\n flags: any\r\n}\r\n\r\nconst dispatchToProps = (dispatch: any) => ({\r\n ...loginDP(dispatch)\r\n});\r\n\r\nclass LoginView extends Component {\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n username: \"\",\r\n password: \"\",\r\n email: \"\",\r\n rememberMeChecked: false,\r\n magicLinkView: false,\r\n successView: false,\r\n failedView: false\r\n }\r\n }\r\n\r\n submitOnEnter = (e: KeyboardEvent) => {\r\n if (e.key === \"Enter\") {\r\n console.log(\"here\")\r\n this.submitLogin(e);\r\n }\r\n };\r\n\r\n submitLogin = (e: Event) => {\r\n e.preventDefault();\r\n this.props.loginUser(this.state.username, this.state.password, this.state.rememberMeChecked);\r\n };\r\n\r\n\r\n render() {\r\n return (\r\n \r\n
\r\n \r\n {this.props.loginStore.sentResetEmail ?
\r\n \r\n {Resources.IfYouHaveAccountWeWillSendLink}\r\n
: null}\r\n \r\n {this.state.failedView ?\r\n \r\n
\r\n
\r\n \r\n
\r\n

{Resources.MagicLinkFailedSend}

\r\n \r\n
\r\n
:\r\n this.state.successView ?\r\n \r\n
\r\n
\r\n \r\n
\r\n

{Resources.MagicLinkSent}

\r\n

{Resources.CheckEmailToGetLink}

\r\n
\r\n
\r\n :\r\n this.state.magicLinkView ?\r\n this.props.loginStore.gettingMagicLink ?\r\n
\r\n \r\n
:\r\n
\r\n \r\n

{Resources.TiredOfRememberingPasswords}

\r\n

{Resources.MagicLinkInstructions}

\r\n
\r\n {\r\n let value = e.target.value;\r\n this.setState({ email: value });\r\n ;\r\n }}\r\n />\r\n
\r\n
\r\n \r\n
\r\n
:\r\n this.props.loginStore.loggingIn ?
\r\n \r\n
: \r\n {this.props.loginStore.loginFailed ?
\r\n \r\n {Resources.TheUserNameOrPasswordIsIncorrect}\r\n
: null}\r\n
\r\n {\r\n let value = e.target.value;\r\n this.setState({ username: value });\r\n ;\r\n }}\r\n />\r\n
\r\n
\r\n {\r\n let value = e.target.value;\r\n this.setState({ password: value });\r\n ;\r\n }}\r\n />\r\n
\r\n {Resources.ForgotPassword}\r\n
\r\n {\r\n this.setState({ rememberMeChecked: !this.state.rememberMeChecked });\r\n }} />\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n

{Resources.Or}

\r\n
\r\n
\r\n
\r\n

{Resources.DontFeelLikeTypingYourPassword}

\r\n \r\n
\r\n {this.props.flags.authUiCreateAccountButton ?\r\n \r\n
\r\n
\r\n

{Resources.Or}

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n : null}\r\n
\r\n }\r\n
\r\n \r\n {Resources.Language}\r\n
\r\n \r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nconst storeToProps = (store: any) => {\r\n return {\r\n loginStore: store.login,\r\n };\r\n};\r\n\r\nexport default withLDConsumer()(withRouter(connect(storeToProps, dispatchToProps)(LoginView)));","import * as React from 'react';\r\nimport { useState, useEffect } from 'react';\r\nimport Resources from '../lib/resources';\r\nimport Card from \"./library/card\";\r\nimport IconLeftArrow from './library/icons/iconLeftArrow';\r\nimport TextInput from './library/textInput';\r\nimport { Link, withRouter } from 'react-router-dom';\r\nimport { connect } from \"react-redux\";\r\nimport { dispatchToProps as loginDP } from \"../store/login-actions\";\r\nimport MainLoader from './library/mainLoader';\r\nimport LockstepLogo from \"./library/lockstepLogo\";\r\nimport IconGlobe from './library/icons/iconGlobe';\r\nimport { isEmpty } from '../lib/utils';\r\n\r\nconst dispatchToProps = (dispatch: any) => ({\r\n ...loginDP(dispatch)\r\n});\r\n\r\n\r\nfunction ResetPassword(props: any) {\r\n\r\n let [emailAddr, setEmailAddr] = useState(\"\");\r\n let [view, setView] = useState(\"request\");\r\n let [password, setPassword] = useState(\"\");\r\n let [confirmPassword, setConfirmPassword] = useState(\"\");\r\n\r\n useEffect(() => {\r\n console.log(props)\r\n console.log(props.match.params.view)\r\n if (props.match.params.view !== \"request\") {\r\n setView(\"update\");\r\n }\r\n });\r\n\r\n const renderContent = () => {\r\n if (view === \"request\") {\r\n return (\r\n \r\n
\r\n

{Resources.ForgoutYourPassword}

\r\n

{Resources.WellHelpYouResetAndGetBackOnTrack}

\r\n
\r\n {\r\n let value = e.target.value;\r\n setEmailAddr(value);\r\n }}\r\n />\r\n
\r\n \r\n
\r\n
\r\n )\r\n } else {\r\n return (\r\n \r\n
\r\n

{Resources.PleaseEnterNewPassword}

\r\n
\r\n
\r\n {\r\n let value = e.target.value;\r\n setPassword(value);\r\n }}\r\n />\r\n {\r\n let value = e.target.value;\r\n setConfirmPassword(value);\r\n }}\r\n />\r\n
\r\n
\r\n \r\n
\r\n {Resources.BackToLogin}\r\n
\r\n )\r\n }\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n {props.loginStore.sendingResetEmail ?
\r\n \r\n
:\r\n \r\n {view === \"request\" ? : null}\r\n {renderContent()}\r\n \r\n }\r\n
\r\n \r\n {Resources.Language}\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst storeToProps = (store: any) => {\r\n return {\r\n loginStore: store.login,\r\n };\r\n};\r\n\r\nexport default withRouter(connect(storeToProps, dispatchToProps)(ResetPassword));","import React, { Component } from \"react\";\r\nimport Card from \"./library/card\";\r\nimport IconGlobe from \"./library/icons/iconGlobe\";\r\nimport TextInput from \"./library/textInput\";\r\nimport DoneIcon from \"./library/doneIcon\";\r\nimport MainLoader from \"./library/mainLoader\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { connect } from \"react-redux\";\r\nimport IconLeftArrow from \"./library/icons/iconLeftArrow\";\r\nimport ErrorIcon from \"./library/errorIcon\";\r\nimport { isEmpty } from \"../lib/utils\"\r\n\r\nimport { dispatchToProps as loginDP } from \"../store/login-actions\";\r\n\r\nimport Resources from \"../lib/resources\";\r\n\r\ntype LoginState = {\r\n email: string,\r\n companyLogo: string,\r\n successView: boolean,\r\n failedView: boolean,\r\n customerId: string,\r\n enterEmailView: boolean,\r\n apEmailAddress: string,\r\n validCustId: boolean\r\n}\r\n\r\ntype LoginProps = {\r\n match: any,\r\n history: any,\r\n location: any,\r\n getCompanySpecificMagicLink: any,\r\n getCompanyLogo: any,\r\n loginStore: any,\r\n getCustFromCustId: any,\r\n registerNewEmailAddress: any,\r\n}\r\n\r\nconst dispatchToProps = (dispatch: any) => ({\r\n ...loginDP(dispatch)\r\n});\r\n\r\nclass MagicLinkRequest extends Component {\r\n\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n email: \"\",\r\n companyLogo: \"\",\r\n customerId: \"\",\r\n successView: false,\r\n failedView: false,\r\n enterEmailView: false,\r\n apEmailAddress: \"\",\r\n validCustId: true\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.props.getCompanyLogo(this.props.match.params.accountKey, this.props.match.params.companyId).then((response: string) => {\r\n this.setState({ companyLogo: response });\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.loginStore.gettingCompanyLogo ?\r\n
\r\n \r\n
\r\n :\r\n
\r\n
\r\n {!isEmpty(this.state.companyLogo) ? \"logo\"\r\n : null}\r\n
\r\n
\r\n connected by\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {this.props.loginStore.gettingCustFromId || this.props.loginStore.registeringEmail || this.props.loginStore.gettingMagicLink ?\r\n
\r\n \r\n
:\r\n this.state.enterEmailView ?\r\n \r\n
\r\n \r\n
\r\n

{Resources.GreatThanks(this.props.loginStore.customer.custName)}

\r\n

{Resources.RegisterEmailInfo}

\r\n
\r\n
\r\n {\r\n let value = e.target.value;\r\n this.setState({ apEmailAddress: value });\r\n ;\r\n }}\r\n />\r\n
\r\n \r\n
\r\n
:\r\n this.state.failedView ?\r\n \r\n
\r\n \r\n\r\n
\r\n \r\n
\r\n

{this.state.validCustId ? Resources.OopsWeDontRecognizeThatAddress : Resources.InvalidCustomerId}

\r\n

{this.state.validCustId ? Resources.MagicLinkFailedCompanyMessage : Resources.InvalidCustomerIdMessgae(this.props.loginStore.customer.collectorEmail)}

\r\n
\r\n {\r\n let value = e.target.value;\r\n this.setState({ customerId: value, validCustId: true });\r\n ;\r\n }}\r\n />\r\n
\r\n \r\n
\r\n
:\r\n this.state.successView ?\r\n \r\n
\r\n
\r\n \r\n
\r\n {this.state.apEmailAddress != \"\" ?\r\n \r\n

{Resources.Success}

\r\n

{Resources.WeAreVerifyingYourEmailReachOutToEmail(this.props.loginStore.customer.collectorEmail)}

\r\n
:\r\n \r\n

{Resources.MagicLinkSent}

\r\n

{Resources.CheckEmailToGetLink}

\r\n
\r\n }\r\n\r\n
\r\n
\r\n :\r\n \r\n
\r\n

{Resources.LookingToViewInvoiceMakePayments}

\r\n

{Resources.MagicLinkInstructions}

\r\n
\r\n {\r\n let value = e.target.value;\r\n this.setState({ email: value });\r\n ;\r\n }}\r\n />\r\n
\r\n
\r\n \r\n
\r\n
\r\n
}\r\n
\r\n \r\n {Resources.Language}\r\n
\r\n
\r\n
\r\n }\r\n
\r\n\r\n );\r\n }\r\n}\r\n\r\nconst storeToProps = (store: any) => {\r\n return {\r\n loginStore: store.login,\r\n };\r\n};\r\n\r\nexport default withRouter(connect(storeToProps, dispatchToProps)(MagicLinkRequest));\r\n","import * as React from 'react';\r\nimport Layout from './components/Layout';\r\nimport { Route, Switch, Redirect, withRouter } from \"react-router-dom\";\r\nimport LoginView from './components/loginView';\r\nimport ResetPassword from \"./components/resetPassword\";\r\nimport MagicLinkRequest from \"./components/magicLinkRequest\";\r\nimport { withLDConsumer } from 'launchdarkly-react-client-sdk';\r\n\r\nfunction App(props: any) {\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\nexport default withLDConsumer()(withRouter((App)));\r\n","// In production, we register a service worker to serve assets from local cache.\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 the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\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.1/8 is 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\nexport default function register() {\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 url = process.env.PUBLIC_URL as string;\r\n const publicUrl = new URL(url, window.location.toString());\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/facebookincubator/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. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing as ServiceWorker;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\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 }\r\n };\r\n };\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: string) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\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 (response.status === 404 || (contentType && contentType.indexOf('javascript') === -1)) {\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);\r\n }\r\n })\r\n .catch(() => {\r\n console.log('No internet connection found. App is running in offline mode.');\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import 'bootstrap/dist/css/bootstrap.css';\r\n\r\nimport * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { ConnectedRouter } from 'connected-react-router';\r\nimport { createBrowserHistory } from 'history';\r\nimport configureStore from './store/configureStore';\r\nimport App from './App';\r\nimport { unregister } from './registerServiceWorker';\r\n\r\nimport FullStory from \"react-fullstory\";\r\nimport { Userpilot } from \"userpilot\";\r\nimport { asyncWithLDProvider } from \"launchdarkly-react-client-sdk\";\r\n\r\nimport {\r\n isProduction,\r\n isStaging,\r\n isQA,\r\n isLeading,\r\n isTrailing,\r\n getConfig,\r\n isLocalHost\r\n} from \"./lib/utils\";\r\n\r\nimport \"@fortawesome/fontawesome-pro/css/all.css\";\r\n\r\n//import 'bootstrap/dist/css/bootstrap.css'\r\nimport \"./css/index.scss\";\r\n\r\n// Create browser history to use in the Redux store\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href') as string;\r\nconst history = createBrowserHistory({ basename: baseUrl });\r\n\r\n// Get the application-wide store instance, prepopulating with state from the server where available.\r\nconst store = configureStore(history);\r\n\r\nlet clientSideID = \"5fadac306caa1f0a1a58ef95\";\r\nif (isStaging()) {\r\n clientSideID = \"5fadac55bb17700a04240e69\";\r\n}\r\nif (isQA()) {\r\n clientSideID = \"5fadac11c1f7360a5eb20d68\";\r\n}\r\nif (isLeading()) {\r\n clientSideID = \"5fbd944e943b4e09a2297be4\";\r\n}\r\nif (isTrailing()) {\r\n clientSideID = \"5fbd9467b051d70981ba5d4e\";\r\n}\r\nif (isProduction()) {\r\n clientSideID = \"5fadac11c1f7360a5eb20d69\";\r\n}\r\n\r\n//if (isLocalHost() !== true && isProduction()) {\r\n// ReactDOM.render(, document.getElementById(\"fullstory-node\"));\r\n//}\r\n\r\n(async () => {\r\n const LDProvider = await asyncWithLDProvider({\r\n clientSideID: clientSideID,\r\n user: {\r\n key: \"anon\",\r\n name: \"Anonymous\"\r\n }\r\n });\r\n\r\n Userpilot.initialize(\"40fr55f4\");\r\n\r\n ReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root'));\r\n})();\r\n\r\nunregister();\r\n","import { applyMiddleware, combineReducers, compose, createStore } from \"redux\";\r\nimport thunk from \"redux-thunk\";\r\nimport { connectRouter, routerMiddleware } from \"connected-react-router\";\r\nimport { History } from \"history\";\r\nimport { ApplicationState } from \"./\";\r\nimport login from \"./login-reducer\";\r\n\r\nexport default function configureStore(history: History, initialState?: ApplicationState) {\r\n const middleware = [thunk, routerMiddleware(history)];\r\n\r\n const rootReducer = combineReducers({\r\n login,\r\n router: connectRouter(history),\r\n });\r\n\r\n const enhancers = [];\r\n const windowIfDefined = typeof window === \"undefined\" ? null : (window as any);\r\n if (windowIfDefined && windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__) {\r\n enhancers.push(windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__());\r\n }\r\n\r\n return createStore(rootReducer, initialState, compose(applyMiddleware(...middleware), ...enhancers));\r\n}\r\n"],"sourceRoot":""}