{"version":3,"sources":["shared/components/AddButton.jsx","shared/components/Accordion.jsx","shared/components/Alert.jsx","shared/components/ArrowIndicator.jsx","shared/components/Button.jsx","shared/components/ChartTooltip.jsx","shared/components/DataBadge.jsx","shared/components/DataFilterBar.jsx","shared/components/DataFilterLayout.jsx","shared/components/DataSet.jsx","shared/components/DateInput.jsx","shared/components/deprecated/DateRangeSelector.jsx","shared/components/DateRangeSlider/DateRangeSlider.jsx","shared/components/DateRangePicker.jsx","shared/components/DeleteConfirmation.jsx","shared/components/DraggableDetail.jsx","shared/components/ExportOptions.jsx","shared/components/EmailBox.jsx","shared/components/ErrorBoundary.jsx","shared/components/FilterDropdown.jsx","shared/components/LoadingAnimation.jsx","shared/components/FullScreenLoading.jsx","shared/components/IconButton.jsx","shared/components/IndeterminateCheckbox.jsx","shared/components/InputMask.jsx","shared/components/Loader.jsx","shared/components/LogoBox.jsx","shared/components/MinMaxSlider.jsx","shared/components/NavigationButton.jsx","shared/components/NewShadowBox.jsx","shared/components/OptionsIndicator.jsx","shared/components/Panel.jsx","shared/components/PanelBody.jsx","shared/components/PanelFooter.jsx","shared/components/PanelHeader.jsx","shared/components/PasswordBox.jsx","shared/components/PivotTable.jsx","shared/components/QSelect.jsx","shared/components/ReachTooltip/ReachTooltip.jsx","shared/components/ResultBox.jsx","shared/components/ScreenAlertContainer.jsx","shared/components/Scrollbars.jsx","shared/components/ShadowBox.jsx","shared/components/DropdownMenu.jsx","shared/components/Table.jsx","shared/components/Tabs.jsx","shared/components/TextArea.jsx","shared/components/TextInput.jsx","shared/components/Toggle.jsx","shared/components/Tooltip.jsx","shared/components/UploadZone.jsx","shared/components/NotFound.jsx","shared/customHooks/useCanSubmitForm.js","shared/customHooks/usePasswordValidation.js","shared/customHooks/useTheme.js","shared/theme/globalStyles.js","shared/theme/themes.js","shared/utils.js","authentication/AuthHooks.jsx","navigation/menuObj.js","navigation/NavigationProvider.jsx","services/fetchService.js","AppInsightsConfig.js","ThemeProvider.jsx","assets/images/logo_black_bg.svg","authentication/authUtils.js","authentication/legacyAuthentication/LegacyAuthProvider.jsx","assets/images/icon_admin.svg","assets/images/icon_reporting.svg","authentication/AuthLayout.jsx","shared/components/Pill.jsx","shared/components/GlobalTableFilter.jsx","shared/components/ColumnTableFilter.jsx","shared/components/Pagination.jsx","shared/components/QTable.jsx","assets/images/hfa-logos/BlueWhite_HousingAuthoritylogo.svg","assets/images/hfa-logos/Half_White_ADFA-logo.svg","assets/images/hfa-logos/Mississippi_FullWhite.svg","assets/images/hfa-logos/MissouriHousing_WhiteType-07.svg","assets/images/hfa-logos/NorthCarolina_TypeWhite.svg","shared/assets/images/logo_black_bg.svg","assets/images/icon_scorecard.svg","assets/images/icon_pipeline.svg","assets/images/dragon.png","assets/images/icon_module_etl.svg","services/api-client.js","AppVersion.jsx","navigation/QHeader.jsx","navigation/SidebarIcon.jsx","modules/moduleObj.jsx","navigation/SidebarExpander.jsx","navigation/SidebarMenuHeader.jsx","navigation/SidebarMenuPage.jsx","navigation/SidebarMenu.jsx","navigation/QSidebar.jsx","modules/LandingPage/LandingPage.jsx","authentication/AuthenticatedRoutes.jsx","authentication/AuthenticatedApp.jsx","authentication/enterpriseObject.js","authentication/LoginForm.jsx","authentication/LoginRoutes.jsx","UnauthenticatedApp.jsx","App.jsx","serviceWorker.js","index.js"],"names":["AddButton","className","children","size","otherProps","appendClassName","style","fontSize","defaultProps","Accordion","header","noCollapsedTiers","noBorder","useState","extended","setExtended","ArrowIndicator","direction","onClick","aria-label","data-testid","Alert","multipleAlerts","multipleAlertsMessage","dismissible","hidden","onCloseAlert","type","fill","icon","showMore","setShowMore","supportMessage","css","generateClassName","aria-hidden","length","map","message","i","key","color","borderColor","padding","determineSize","Button","disabled","ChartTooltip","headerClassName","data","table","border","noPadding","Table","defaultStyle","striped","highlight","DataBadge","name","description","primaryData","secondaryData","isLoading","formatUnit","unit","value","unitSingular","formatData","format","DataFilterBar","isExpanded","useNavigation","DataFilterLayout","DataSet","label","htmlFor","Component","DateRangeSelecter","startDate","endDate","changeDateRange","noButton","hideLabel","onSubmit","e","preventDefault","target","elements","isValidDateRange","alert","InputMask","mask","placeholder","defaultValue","required","DateRangeSlider","minDate","maxDate","defaults","split","minMonth","minDay","minYear","maxMonth","maxDay","maxYear","start","defaultStartMonth","defaultStartDay","defaultStartYear","end","defaultEndMonth","defaultEndDay","defaultEndYear","domain","parseInt","React","sliderValues","setSliderValues","inputs","setInputs","convertDateFormat","date","dateArr","year","startMonth","startDay","startYear","endMonth","endDay","endYear","selectedStartDate","join","selectedEndDate","DateRangePicker","values","onChange","MinMaxSlider","startArr","endArr","fullStart","fullEnd","id","min","max","DeleteConfirmation","onCancel","onDelete","itemToDelete","headerText","DraggableDetail","insertRows","rowCounter","dots","push","ExportOptions","exportToPDF","exportToCSV","initialState","options","setOptions","useEffect","filter","option","DropdownMenu","buttonDisplay","EmailBox","title","alertMessage","domainCheck","emailType","footer","canSubmit","resetAlert","emailInput","setEmailInput","isEmailValid","setIsEmailValid","handleOnSubmit","a","LogoBox","email","ErrorBoundary","props","state","hasError","error","info","appInsights","trackException","exception","severityLevel","SeverityLevel","Error","properties","prevProps","prevState","snapshot","component","this","setState","ErrorInfo","FilterDropdown","keepDarkTheme","noArrow","width","menuWidth","height","buttonClassName","menuOpenText","menuClosedText","menuPosition","showFilters","setShowFilters","minWidth","top","LoadingAnimation","background","FullScreenLoading","IconButton","IndeterminateCheckbox","forwardRef","ref","indeterminate","rest","defaultRef","useRef","resolvedRef","current","Loader","logo","src","qlogo","alt","ticksCount","Handle","handle","percent","getHandleProps","left","Track","source","getTrackProps","Tick","tick","count","position","marginTop","marginLeft","backgroundColor","textAlign","step","mode","getRailProps","handles","right","tracks","ticks","NavigationButton","rounded","text","NewShadowBox","visible","modal","OptionsIndicator","Panel","PanelBody","PanelFooter","PanelHeader","PasswordBox","requestPrevious","password","retypedPassword","oldPassword","passwordInputs","setPasswordInputs","usePasswordValidation","passwordError","isPasswordConfirmed","useCanSubmitForm","handleOnChange","PivotTable","tableRef","renderColumnData","pivotKeys","tablePivotKeys","loading","setIsExpanded","colsToShow","setColsToShow","setNewColumns","rowsExpanded","newCols","forEach","pk","isTopLevelRowExpanded","isSubLevelRowExpanded","newExpandedObj","expanded","Object","v","sv","resolveData","columns","loadingText","pivotBy","onExpandedChange","newExpanded","index","event","animatedComponents","makeAnimated","QSelect","customColors","noHoverEffect","isMulti","isSearchable","defaultInputValue","customStyles","customStyleFunctions","includeSeparator","colors","outline","themes","dark","boxShadowDark","light","backgroundDark","hover","textMuted","styles","container","provided","isFocused","isSelected","boxShadow","control","borderRadius","minHeight","backgrond","valueContainer","indicatorsContainer","alignSelf","paddingTop","indicatorSeparator","display","input","clearIndicator","cursor","dropdownIndicator","transform","selectProps","menuIsOpen","menu","zIndex","menuList","whiteSpace","overflow","textOverflow","alignItems","marginRight","multiValue","multiValueLabel","singleValue","multiValueRemove","components","Option","hideSelectedOptions","ReachTooltip","ResultBox","heading","body","boxType","testId","renderIcon","ScreenAlertContainer","Scrollbars","ShadowBox","rootRef","createRef","boxHeight","boxWidth","resizeTimeout","updateDimensions","bind","getChildHeight","getChildWidth","setTimeout","el","c","window","getComputedStyle","childNodes","parseFloat","offsetHeight","marginBottom","paddingBottom","borderTopWidth","borderBottomWidth","offsetWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","addEventListener","initDimensions","removeEventListener","divStyle","chooseModal","rows","handleRowClick","set","unshift","column","Tabs","tabData","inHeader","accentColor","tab","Tab","selectedValue","borderBottomColor","getClassName","TextArea","TextInput","autoFocus","inputEl","focus","Toggle","selected","handleChange","Tooltip","showOnHover","inline","showTip","setShowTip","showIcon","setShowIcon","onMouseEnter","onMouseLeave","UploadZone","fileTypes","multiple","onAddFiles","uploadBtn","isDraggingOver","setIsDraggingOver","handleDragIn","stopPropagation","handleDragOver","handleDrop","dataTransfer","files","onDragEnter","onDragLeave","handleDragOut","onDragOver","onDrop","click","accept","Array","from","NotFound","margin","href","formObj","additionalCondition","setCanSubmit","includes","formInputs","setPasswordError","isPasswordValid","setIsPasswordValid","setIsPasswordConfirmed","validatePassword","confirmPassword","useTheme","theme","useLayoutEffect","document","documentElement","setProperty","globals","rem","n","red","orange","green","blue","purple","black","white","gray","primary","secondary","danger","success","scrollbar","startObj","Date","endObj","isStartBeforeEnd","isValidStart","Boolean","getDate","isValidEnd","round","numberWithCommas","intToCurrency","convertToPercent","getLastWeekdayDate","daysToSubtract","dayOfWeek","getCurrentDate","formatDate","setDate","month","day","getYTD","num","result","Math","toFixed","parentClassName","slugify","string","p","RegExp","toString","toLowerCase","replace","charAt","indexOf","handleErrorMessage","code","newCheckForErrors","resp","customMessage","alertObj","serverError","displayMessage","failed","optionsObj","toLocaleDateString","parseURL","path","location","params","_m","token","decodeURIComponent","Intl","NumberFormat","currency","minimumFractionDigits","capitalize","word","toUpperCase","slice","currentDate","getFullYear","getMonth","m","getDay","monthString","dateString","getExtensionFromType","states","groupBy","dataArray","property","removeProperty","reduce","acc","obj","period","param","getFirstDayOfYear","getFirstOfPreviousYear","previousYear","getLastOfPreviousYear","getFirstOfQuarter","d","getFirstOfPreviousQuarter","getLastOfPreviousQuarter","getTrailing6Months","getTrailing12Months","useAuth","context","useContext","AuthContext","undefined","useAuthenticateUser","authService","FetchServiceWithApi","checkForErrors","authSuccess","logout","loadingFn","enterpriseKey","localStorage","getItem","post","successResp","navigate","user","settings","homepath","useSendPasswordReset","useEmailCheck","setUserEmail","emailCheck","useCheckToken","setServerAlert","useResendVerification","userType","useRegisterAccount","userEmail","useAuthorization","permissionString","userObj","isAuthorized","setIsAuthorized","hasPermission","claims","find","useLenderUser","lenderName","portalLenderId","lenderId","companyName","useAlerts","setAlertObj","displayError","menuArray","order","moduleKey","items","route","permission","enabled","NavContext","createContext","NavigationProvider","filteredModules","setFilteredModules","moduleKeys","setModuleKeys","moduleSelected","setModuleSelected","currentModule","setCurrentModule","pageSelected","setPageSelected","isOverlaid","setIsOverlaid","filtered","filterModules","keys","mSelected","pSelected","modules","pathname","module","isModuleEnabled","subscriptions","handleExpanderClick","handleModuleIconClick","currentTarget","handlePageClick","page","handleOverlayShow","handleOverlayHide","Provider","api","catchErrorFromServer","fn","catch","endpoint","console","determineContentType","contentType","headers","get","json","callToGet","fetch","baseApi","fetchParams","handleHttpError","log","callToPost","method","JSON","stringify","callToDelete","callToPut","callToUpload","credentials","callToExport","fileName","ok","blob","extension","url","URL","createObjectURL","tempLink","createElement","setAttribute","appendChild","Cypress","removeChild","open","env","status","safePost","safeGet","safePut","safeDelete","safeUpload","safeExport","delete","response","authorized","deleteCookieAndRedirectToLogin","FetchService","ApplicationInsights","config","instrumentationKey","ThemeContext","ThemeProvider","isAuthenticated","setTheme","settingsJson","updateTheme","put","useUpdateTheme","exports","addSubscriptions","isLender","mod","LegacyAuthProvider","setIsAuthenticated","setIsLoading","setServerError","setUserObj","setLenderName","setItem","enterprise","legacyAuthSuccess","legacyRefreshAuth","setDisplayAlert","getCompanyName","setAuthenticatedUserContext","authenticatedUserId","userId","accountId","portedUserObj","sessionId","lastName","floor","random","userGuid","emailAddress","firstName","failedLoginCount","enterpriseId","enterpriseGuid","permissions","environment","portUserObj","errorMessage","resetPassword","changePassword","sessionStorage","clear","clearAuthenticatedUserContext","setAlerts","errorResp","errors","errorString","AuthLayout","Pill","GlobalTableFilter","preGlobalFilteredRows","globalFilter","setGlobalFilter","setValue","useAsyncDebounce","Filter","canFilter","render","DefaultColumnFilter","filterValue","setFilter","preFilteredRows","sessionStorageUsed","onInputChange","Pagination","gotoPage","previousPage","nextPage","canPreviousPage","canNextPage","pageCount","pageIndex","pageSize","setPageSize","pageOptions","Number","QTable","tableClassName","tableFilterable","tablePagination","columnFilterable","onRowClick","rowSelection","tableResizing","setSelectedRows","initialPageIndex","initialPageSize","defaultColumn","useMemo","useTable","useFilters","useGlobalFilter","useResizeColumns","useFlexLayout","useSortBy","usePagination","useRowSelect","hooks","allColumns","Header","getToggleAllPageRowsSelectedProps","Cell","row","getToggleRowSelectedProps","useInstanceBeforeDimensions","headerGroups","canResize","getTableProps","getTableBodyProps","prepareRow","selectedFlatRows","selectedRowIds","original","headerGroup","getHeaderGroupProps","getHeaderProps","getSortByToggleProps","getResizerProps","isResizing","isSorted","isSortedDesc","getRowProps","cells","cell","getCellProps","devApiUrl","client","customURL","customConfig","apiUrl","then","parse","Promise","reject","downloadOrOpenFile","filename","exportServerData","revokeObjectURL","query","create","update","remove","AppVersion","checkVersion","userVersion","updateAndRefresh","setInterval","clearInterval","version","reload","QHeader","showPasswordModal","setShowPasswordModal","passwordChangeSuccess","setPasswordChangeSuccess","onPasswordChange","newPassword","userOptions","SidebarIcon","ScorecardModule","lazy","PortalAdminModule","SystemAdminModule","PipelineModule","ReportingModule","EnterpriseAdminModule","ETLModule","LpmModule","getModuleObj","image","scorecard","admin","pipeline","dragon","reporting","etl","SidebarExpander","SidebarMenuHeader","SidebarMenuPage","SidebarMenu","checkPagePermission","pagePermissionObj","onlyVisible","item","QSidebar","LandingPage","AuthenticatedRoutes","subscribedModules","default","AuthentictedApp","setSubscribedModules","subscribed","selectModules","getMainClassName","fallback","enterpriseObject","ahfaLogo","adfaLogo","mhdcLogo","mshcLogo","nchfaLogo","Footer","lenderUser","to","LoginForm","authenticateUser","setLenderUser","host","hostname","removeItem","LoginRoutes","trackPageView","RegistrationRoutes","VerificationRoutes","PasswordRoutes","MainContent","loginLink","resendLink","App","match","ReactDOM","getElementById","navigator","serviceWorker","ready","registration","unregister","loadAppInsights"],"mappings":"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","file":"static/js/main.bbb53196.chunk.js","sourcesContent":["import React from 'react'\r\nimport { appendClassName } from '../utils'\r\nimport { Button } from '../exports'\r\nimport './add-button.scss'\r\n\r\nexport default function AddButton({\r\n\tclassName,\r\n\tchildren,\r\n\tsize,\r\n\t...otherProps\r\n}) {\r\n\treturn (\r\n\t\t\r\n\t)\r\n}\r\n\r\nAddButton.defaultProps = {\r\n\tsize: 'default',\r\n}\r\n","import React, { useState } from 'react'\r\nimport { appendClassName } from '../utils'\r\nimport { ArrowIndicator } from '../exports'\r\nimport './accordion.scss'\r\n\r\nexport default function Accordion({\r\n\tclassName,\r\n\tchildren,\r\n\theader,\r\n\tnoCollapsedTiers,\r\n\tnoBorder,\r\n\t...otherProps\r\n}) {\r\n\tconst [extended, setExtended] = useState(true)\r\n\r\n\tconst renderCollapsedState = () => {\r\n\t\tif (extended) {\r\n\t\t\treturn
{children}
\r\n\t\t} else if (noCollapsedTiers) {\r\n\t\t\treturn null\r\n\t\t} else {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t)\r\n\t\t}\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{header}\r\n\t\t\t\t setExtended(!extended)}\r\n\t\t\t\t\taria-label={extended ? 'close' : 'open'}\r\n\t\t\t\t/>\r\n\t\t\t
\r\n\t\t\t{renderCollapsedState()}\r\n\t\t\r\n\t)\r\n}\r\n","import React, { useState } from 'react'\r\nimport './alert.scss'\r\n\r\nexport default function Alert({\r\n\tmultipleAlerts,\r\n\tmultipleAlertsMessage,\r\n\tdismissible,\r\n\thidden,\r\n\tonCloseAlert,\r\n\tclassName,\r\n\ttype,\r\n\tfill,\r\n\ticon,\r\n\tchildren,\r\n\t...otherProps\r\n}) {\r\n\tconst [showMore, setShowMore] = useState(false)\r\n\tconst supportMessage =\r\n\t\ttype === 'danger'\r\n\t\t\t? ' If you continue to experience problems, please email support@quantalytix.com.'\r\n\t\t\t: ''\r\n\r\n\tconst renderCollapseButton = () => {\r\n\t\treturn (\r\n\t\t\t onCloseAlert()}\r\n\t\t\t>\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n\r\n\tconst generateClassName = () => {\r\n\t\tlet css = 'alert'\r\n\t\tif (type) css += ` alert-${type}`\r\n\t\tif (hidden) css += ' alert-hidden'\r\n\t\tif (!fill) css += ' no-fill'\r\n\t\tif (className) css += ` ${className}`\r\n\t\treturn css\r\n\t}\r\n\r\n\tconst handleMultipleAlerts = () => {\r\n\t\tif (multipleAlerts.length > 1) {\r\n\t\t\treturn (\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{multipleAlertsMessage + supportMessage ||\r\n\t\t\t\t\t\t\t'There were multiple errors.' + supportMessage}\r\n\t\t\t\t\t\t setShowMore(!showMore)}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{showMore ? 'Hide' : 'Details'}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t{showMore\r\n\t\t\t\t\t\t? multipleAlerts.map((message, i) =>
{message}
)\r\n\t\t\t\t\t\t: null}\r\n\t\t\t\t
\r\n\t\t\t)\r\n\t\t}\r\n\t\treturn multipleAlerts[0] + supportMessage\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{icon ? : null}\r\n\t\t\t\r\n\t\t\t\t{multipleAlerts ? handleMultipleAlerts() : children + supportMessage}\r\n\t\t\t\r\n\t\t\t{dismissible ? renderCollapseButton() : null}\r\n\t\t\r\n\t)\r\n}\r\n\r\nAlert.defaultProps = {\r\n\tdismissible: true,\r\n\tonCloseAlert: () => {},\r\n\tfill: true,\r\n}\r\n","import React from 'react'\r\nimport './arrow-indicator.scss'\r\n\r\nexport default function ArrowIndicator({\r\n\tclassName,\r\n\tcolor,\r\n\tdirection,\r\n\tsize,\r\n\t...otherProps\r\n}) {\r\n\tconst determineSize = () => {\r\n\t\tswitch (size) {\r\n\t\t\tcase 'large':\r\n\t\t\t\treturn '4px'\r\n\t\t\tcase 'xl':\r\n\t\t\t\treturn '5px'\r\n\t\t\tdefault:\r\n\t\t\t\treturn '3px'\r\n\t\t}\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport './button.scss'\r\n\r\nconst Button = ({\r\n\tcolor,\r\n\ttype,\r\n\tdisabled,\r\n\tchildren,\r\n\tclassName,\r\n\t...otherProps\r\n}) => {\r\n\tconst generateClassName = () => {\r\n\t\tlet css = 'btn'\r\n\t\tif (color) {\r\n\t\t\tcss += ` btn-${color}`\r\n\t\t}\r\n\t\t// if (disabled === true) {\r\n\t\t// css += ' btn-disabled';\r\n\t\t// }\r\n\t\tif (className) {\r\n\t\t\tcss += ` ${className}`\r\n\t\t}\r\n\t\treturn css\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default Button\r\n","import React from 'react'\r\nimport { Panel, PanelHeader, PanelBody, Table } from '../exports'\r\nimport './chart-tooltip.scss'\r\n\r\nexport default function ChartTooltip({\r\n\tclassName,\r\n\theader,\r\n\theaderClassName,\r\n\tdata,\r\n\ttable,\r\n}) {\r\n\treturn (\r\n\t\t\r\n\t\t\t{header ? (\r\n\t\t\t\t\r\n\t\t\t\t\t{header}\r\n\t\t\t\t\r\n\t\t\t) : null}\r\n\t\t\t\r\n\t\t\t\t{table || (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport { Button } from '../exports'\r\nimport { formatData } from '../utils'\r\nimport './data-badge.scss'\r\n\r\nexport default function DataBadge({\r\n\tname,\r\n\tdescription,\r\n\tprimaryData,\r\n\tsecondaryData,\r\n\tisLoading,\r\n\tonClick,\r\n\t...otherProps\r\n}) {\r\n\tconst formatUnit = ({ unit, value, unitSingular }) => {\r\n\t\tif (unit) {\r\n\t\t\treturn {value !== 1 ? unit : unitSingular}\r\n\t\t}\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t
{name}
\r\n\t\t\t
{description}
\r\n\t\t\t
\r\n\t\t\t\t{isLoading ? (\r\n\t\t\t\t\t
...
\r\n\t\t\t\t) : (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{formatData(primaryData.value, primaryData.format, true)}{' '}\r\n\t\t\t\t\t\t{formatUnit(primaryData)}\r\n\t\t\t\t\t
\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t{isLoading ? (\r\n\t\t\t\t\t
...
\r\n\t\t\t\t) : (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{formatData(secondaryData.value, secondaryData.format, true)}{' '}\r\n\t\t\t\t\t\t{formatUnit(secondaryData)}\r\n\t\t\t\t\t
\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport './data-filter-bar.scss'\r\nimport { useNavigation } from '../../navigation/NavigationProvider'\r\n\r\nexport default function DataFilterBar({ className, children }) {\r\n\tconst { isExpanded } = useNavigation()\r\n\r\n\tconst generateClassName = () => {\r\n\t\tlet css = 'data-filter-bar'\r\n\t\tif (isExpanded) css += ' expanded'\r\n\t\tif (className) {\r\n\t\t\tcss += ` ${className}`\r\n\t\t}\r\n\t\treturn css\r\n\t}\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t
{children}
\r\n\t\t
\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport './data-filter-layout.scss'\r\n\r\nexport default function DataFilterLayout({ className, children }) {\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport './data-set.scss'\r\n\r\nexport default function DataSet({ label, name, children, ...otherProps }) {\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t{children}\r\n\t\t
\r\n\t)\r\n}\r\n","import React, { Component } from 'react'\r\n\r\nexport default class DateInput extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props)\r\n\r\n\t\tthis.state = {\r\n\t\t\tvalue: '',\r\n\t\t}\r\n\r\n\t\tthis.validate = this.validate.bind(this)\r\n\t}\r\n\r\n\tvalidate(e) {\r\n\t\tlet v = e.target.value.replace(/\\D/g, '').slice(0, 10)\r\n\t\tif (v.length >= 5) {\r\n\t\t\tv = `${v.slice(0, 2)}/${v.slice(2, 4)}/${v.slice(4)}`\r\n\t\t} else if (v.length >= 3) {\r\n\t\t\tv = `${v.slice(0, 2)}/${v.slice(2)}/`\r\n\t\t}\r\n\t\t/*\r\n else if (v.length === 2) {\r\n v = `${v.slice(0, 2)}/`;\r\n }*/\r\n\r\n\t\tthis.setState({ value: v })\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n}\r\n\r\n//https://stackoverflow.com/questions/31108620/how-to-do-date-masking-using-javascript-without-jquery\r\n","import React from 'react'\r\nimport { InputMask, Button } from 'shared/exports'\r\nimport { isValidDateRange } from 'shared/utils'\r\nimport './date-range-selector.scss'\r\n\r\nexport default function DateRangeSelecter({\r\n\tstartDate,\r\n\tendDate,\r\n\tchangeDateRange,\r\n\tclassName,\r\n\tnoButton,\r\n\thideLabel,\r\n\t...otherProps\r\n}) {\r\n\tconst onSubmit = e => {\r\n\t\te.preventDefault()\r\n\t\tlet { startDate, endDate } = e.target.elements\r\n\t\tif (isValidDateRange(startDate.value, endDate.value)) {\r\n\t\t\tchangeDateRange(startDate.value, endDate.value)\r\n\t\t} else {\r\n\t\t\talert('Invalid date range.')\r\n\t\t}\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\tSet\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport { Button, DateRangePicker, MinMaxSlider } from 'shared/exports'\r\nimport './date-range-slider.scss'\r\n\r\nexport default function DateRangeSlider({\r\n\tminDate,\r\n\tmaxDate,\r\n\tonSubmit,\r\n\tdefaults,\r\n}) {\r\n\tconst [minMonth, minDay, minYear] = minDate.split('/')\r\n\tconst [maxMonth, maxDay, maxYear] = maxDate.split('/')\r\n\tconst [\r\n\t\tdefaultStartMonth,\r\n\t\tdefaultStartDay,\r\n\t\tdefaultStartYear,\r\n\t] = defaults.start.split('/')\r\n\tconst [defaultEndMonth, defaultEndDay, defaultEndYear] = defaults.end.split(\r\n\t\t'/'\r\n\t)\r\n\tconst domain = [parseInt(minYear), parseInt(maxYear)]\r\n\r\n\tconst [sliderValues, setSliderValues] = React.useState([\r\n\t\tdefaultStartYear,\r\n\t\tdefaultEndYear,\r\n\t])\r\n\tconst [inputs, setInputs] = React.useState({\r\n\t\tstart: `${defaultStartYear}-${defaultStartMonth}-${defaultStartDay}`,\r\n\t\tend: `${defaultEndYear}-${defaultEndMonth}-${defaultEndDay}`,\r\n\t})\r\n\r\n\tconst convertDateFormat = date => {\r\n\t\tlet dateArr = date.split('-')\r\n\t\tlet year = dateArr[0]\r\n\t\tlet month = dateArr[1]\r\n\t\tlet day = dateArr[2]\r\n\t\treturn [month, day, year]\r\n\t}\r\n\r\n\tconst handleInputSelection = e => {\r\n\t\te.preventDefault()\r\n\t\tlet [startMonth, startDay, startYear] = convertDateFormat(inputs.start)\r\n\t\tlet [endMonth, endDay, endYear] = convertDateFormat(inputs.end)\r\n\t\tonSubmit({\r\n\t\t\tselectedStartDate: [startMonth, startDay, startYear].join('/'),\r\n\t\t\tselectedEndDate: [endMonth, endDay, endYear].join('/'),\r\n\t\t})\r\n\t\tsetSliderValues([startYear, endYear])\r\n\t}\r\n\r\n\tconst handleSliderSelection = ([start, end]) => {\r\n\t\tlet startArr = inputs.start.split('-')\r\n\t\tlet endArr = inputs.end.split('-')\r\n\t\tlet fullStart = `${start}-${startArr[1]}-${startArr[2]}`\r\n\t\tlet fullEnd = `${end}-${endArr[1]}-${endArr[2]}`\r\n\t\tsetInputs({ start: fullStart, end: fullEnd })\r\n\t}\r\n\r\n\tconst handleOnInputChange = ({ name, value }) => {\r\n\t\tsetInputs({\r\n\t\t\t...inputs,\r\n\t\t\t[name]: value,\r\n\t\t})\r\n\t}\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\tDate Range\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport { TextInput } from 'shared/exports'\r\nimport './date-range-picker.scss'\r\n\r\nexport default function DateRangePicker({\r\n\tminDate,\r\n\tmaxDate,\r\n\tvalues,\r\n\tonChange,\r\n}) {\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\tonChange({ name: e.target.name, value: e.target.value })\r\n\t\t\t\t\t}\r\n\t\t\t\t/>\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\tonChange({ name: e.target.name, value: e.target.value })\r\n\t\t\t\t\t}\r\n\t\t\t\t/>\r\n\t\t\t
\r\n\t\t
\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport { Button } from '../exports'\r\nimport './delete-confirmation.scss'\r\n\r\nexport default function DeleteConfirmation({ onCancel, onDelete, itemToDelete, headerText }) {\r\n\r\n return (\r\n \t\t
\r\n
\r\n

\r\n {headerText}\r\n

\r\n \r\n
\r\n \t\t\t
\r\n {`Are you sure you want to delete ${itemToDelete}? You cannnot undo this once it has been deleted.`}\r\n \t\t\t
\r\n \t\t\t
\r\n \t\t\t\t\r\n \t\t\t\t\r\n \t\t\t
\r\n \t\t
\r\n \t)\r\n}\r\n\r\nDeleteConfirmation.defaultProps = {\r\n itemToDelete: 'this item',\r\n headerText: 'Delete Confirmation:'\r\n}","import React from 'react'\r\nimport './draggable-detail.scss'\r\n\r\nexport default function DraggableDetail() {\r\n\tconst rows = 13\r\n\r\n\tconst insertRows = () => {\r\n\t\tlet rowCounter = rows\r\n\t\tlet dots = []\r\n\t\twhile (rowCounter > 0) {\r\n\t\t\tdots.push(
)\r\n\t\t\trowCounter--\r\n\t\t}\r\n\t\treturn dots\r\n\t}\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
{insertRows()}
\r\n\t\t\t
{insertRows()}
\r\n\t\t\t
{insertRows()}
\r\n\t\t
\r\n\t)\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport { DropdownMenu } from '../exports'\r\n\r\nexport default function ExportOptions({\r\n\texportToPDF,\r\n\texportToCSV,\r\n\tclassName,\r\n\t...otherProps\r\n}) {\r\n\tconst initialState = [\r\n\t\t{\r\n\t\t\tlabel: 'Excel',\r\n\t\t\tvalue: 'csv',\r\n\t\t\tonClick: exportToCSV,\r\n\t\t\ticon: 'icon-csv-file-format-extension',\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: 'PDF',\r\n\t\t\tvalue: 'pdf',\r\n\t\t\tonClick: exportToPDF,\r\n\t\t\ticon: 'icon-pdf-file-format-symbol',\r\n\t\t},\r\n\t]\r\n\tconst [options, setOptions] = useState(initialState)\r\n\r\n\tuseEffect(() => {\r\n\t\tconst filterOptions = () => options.filter(option => option.onClick)\r\n\t\tsetOptions(filterOptions())\r\n\t}, [])\r\n\r\n\tconst handleExport = ({ label, value }) => {\r\n\t\tif (value === 'csv') {\r\n\t\t\texportToCSV()\r\n\t\t}\r\n\t\tif (value === 'pdf') {\r\n\t\t\texportToPDF()\r\n\t\t}\r\n\t}\r\n\r\n\t// const customStyles = {\r\n\t// menu: {\r\n\t// width: \"100px\",\r\n\t// right: 0\r\n\t// },\r\n\t// valueContainer: {\r\n\t// fontSize: \"var(--font-size-large)\"\r\n\t// },\r\n\t// dropdownIndicator: {\r\n\t// display: \"none\"\r\n\t// },\r\n\t// singleValue: {\r\n\t// top: \"56%\",\r\n\t// right: \"17%\"\r\n\t// }\r\n\t// }\r\n\r\n\treturn (\r\n\t\t}\r\n\t\t\tbuttonDisplay='Export'\r\n\t\t\tonChange={handleExport}\r\n\t\t\toptions={options}\r\n\t\t\t// width='40px'\r\n\t\t\t// customStyles={customStyles}\r\n\t\t/>\r\n\t)\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport { LogoBox, Alert, Button, TextInput } from '../exports'\r\n\r\nEmailBox.propTypes = {\r\n\talertMessage: PropTypes.string,\r\n\ttitle: PropTypes.string,\r\n\tcanSubmit: PropTypes.bool,\r\n\t// Get error from React saying these are undefined if I make them required. They are clearly working, however...\r\n\tdomainCheck: PropTypes.func,\r\n\tonSubmit: PropTypes.func,\r\n}\r\n\r\nexport default function EmailBox({\r\n\tonSubmit,\r\n\ttitle,\r\n\talertMessage,\r\n\temailType,\r\n\tdomainCheck,\r\n\tfooter,\r\n\tcanSubmit,\r\n\tresetAlert,\r\n}) {\r\n\tconst [emailInput, setEmailInput] = useState('')\r\n\tconst [isEmailValid, setIsEmailValid] = useState(true)\r\n\r\n\tuseEffect(() => {\r\n\t\tresetAlert()\r\n\t}, [])\r\n\r\n\tconst handleOnChange = e => {\r\n\t\tlet email = e.target.value\r\n\t\tsetEmailInput(email)\r\n\t\t// removes alert messages from global alert component\r\n\t\tresetAlert()\r\n\t}\r\n\r\n\tconst handleOnSubmit = async e => {\r\n\t\te.preventDefault()\r\n\t\tif (domainCheck) {\r\n\t\t\tdomainCheck(emailInput)\r\n\t\t} else {\r\n\t\t\tonSubmit(emailInput)\r\n\t\t}\r\n\t}\r\n\r\n\tif (domainCheck && canSubmit) {\r\n\t\tonSubmit(emailInput)\r\n\t\treturn null\r\n\t} else {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{alertMessage}\r\n\t\t\t\t\r\n\t\t\t\t setIsEmailValid(true)}\r\n\t\t\t\t\tdata-testid='alert-msg2'\r\n\t\t\t\t>\r\n\t\t\t\t\tPlease enter a valid email address.\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t

{title}

\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tSubmit\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t)\r\n\t}\r\n}\r\n","import React from 'react'\r\nimport appInsights from '../../AppInsightsConfig'\r\nimport { SeverityLevel } from '@microsoft/applicationinsights-web'\r\nimport './error-boundary.scss'\r\n\r\nexport default class ErrorBoundary extends React.Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props)\r\n\t\tthis.state = {\r\n\t\t\thasError: false,\r\n\t\t}\r\n\t}\r\n\r\n\tstatic getDerivedStateFromError(error) {\r\n\t\treturn {\r\n\t\t\thasError: true,\r\n\t\t}\r\n\t}\r\n\r\n\tcomponentDidCatch(error, info) {\r\n\t\tappInsights.trackException({\r\n\t\t\terror: error,\r\n\t\t\texception: error,\r\n\t\t\tseverityLevel: SeverityLevel.Error,\r\n\t\t\tproperties: { ...info },\r\n\t\t})\r\n\t}\r\n\r\n\tcomponentDidUpdate(prevProps, prevState, snapshot) {\r\n\t\tif (prevProps.component !== this.props.component) {\r\n\t\t\tthis.setState({ hasError: false })\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tif (this.state.hasError) {\r\n\t\t\treturn \r\n\t\t} else {\r\n\t\t\treturn this.props.children\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction ErrorInfo() {\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t

Oops! An error occurred.

\r\n\t\t\t\t

\r\n\t\t\t\t\tIf this problem persists, please contact us at\r\n\t\t\t\t\tsupport@quantalytix.com.\r\n\t\t\t\t

\r\n\t\t\t
\r\n\t\t
\r\n\t)\r\n}\r\n","import React, { useState } from 'react'\r\nimport { Button, ArrowIndicator } from '../exports'\r\nimport { appendClassName } from '../utils'\r\nimport './filter-dropdown.scss'\r\n\r\nexport default function FilterDropdown({\r\n\tkeepDarkTheme,\r\n\tnoArrow,\r\n\twidth,\r\n\tmenuWidth,\r\n\theight,\r\n\tclassName,\r\n\tbuttonClassName,\r\n\tmenuOpenText,\r\n\tmenuClosedText,\r\n\tchildren,\r\n\tmenuPosition,\r\n\t...otherProps\r\n}) {\r\n\tconst [showFilters, setShowFilters] = useState(false)\r\n\r\n\tconst generateClassName = () => {\r\n\t\tlet css = 'filter-btn '\r\n\t\tif (keepDarkTheme) {\r\n\t\t\tcss += 'dark '\r\n\t\t}\r\n\t\tif (showFilters) {\r\n\t\t\tcss += 'active '\r\n\t\t}\r\n\t\tif (buttonClassName) {\r\n\t\t\tcss += buttonClassName\r\n\t\t}\r\n\t\treturn css\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t setShowFilters(!showFilters)}\r\n\t\t\t>\r\n\t\t\t\t{showFilters\r\n\t\t\t\t\t? menuOpenText || 'Hide Filters'\r\n\t\t\t\t\t: menuClosedText || 'Show Filters'}\r\n\t\t\t\t{noArrow ? null : (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{children}\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nFilterDropdown.defaultProps = {\r\n\theight: '44px',\r\n}\r\n","import React from 'react'\r\nimport './loading-animation.scss'\r\n\r\nexport default function LoadingAnimation({\r\n\tclassName,\r\n\tcolor,\r\n\tsize,\r\n\t...otherProps\r\n}) {\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport LoadingAnimation from './LoadingAnimation'\r\nimport './full-screen-loading.scss'\r\n\r\nexport default function FullScreenLoading() {\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport { appendClassName } from '../utils'\r\nimport './icon-button.scss'\r\n\r\nexport default function IconButton({ icon, className, ...otherProps }) {\r\n\treturn (\r\n\t\t\r\n\t\t\t{icon}\r\n\t\t\r\n\t)\r\n}\r\n","import React, { forwardRef, useRef, useEffect } from 'react'\r\nimport './indeterminate-checkbox.scss'\r\n\r\nexport const IndeterminateCheckbox = forwardRef(\r\n\t({ indeterminate, ...rest }, ref) => {\r\n\t\tconst defaultRef = useRef()\r\n\t\tconst resolvedRef = ref || defaultRef\r\n\r\n\t\tuseEffect(() => {\r\n\t\t\tresolvedRef.current.indeterminate = indeterminate\r\n\t\t}, [resolvedRef, indeterminate])\r\n\r\n\t\treturn (\r\n\t\t\t<>\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n)\r\n","import React from 'react'\r\nimport InputMask from 'react-input-mask'\r\nimport './textinput.scss'\r\n\r\nexport default function ({ mask, className, ...otherProps }) {\r\n\treturn (\r\n\t\t\r\n\t)\r\n}\r\n\r\n//https://github.com/sanniassin/react-input-mask\r\n","import React from 'react'\r\nimport { LoadingAnimation } from '../exports'\r\nimport './loader.scss'\r\n\r\nexport default function Loader({ isLoading, ...otherProps }) {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport { Panel, PanelHeader, PanelBody, PanelFooter } from '../exports'\r\nimport qlogo from '../assets/images/logo_black_bg.svg'\r\nimport './logo-box.scss'\r\n\r\nexport default function LogoBox({ className, children, logo, footer }) {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{logo ? (\r\n\t\t\t\t\tlogo\r\n\t\t\t\t) : (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\t{children}\r\n\t\t\t{footer ? {footer} : null}\r\n\t\t\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport { Slider, Handles, Tracks, Rail, Ticks } from 'react-compound-slider'\r\nimport './minmaxslider.scss'\r\n\r\nexport default function MinMaxSlider({\r\n\tdomain,\r\n\tvalues,\r\n\tonChange,\r\n\tticksCount = 5,\r\n}) {\r\n\tfunction Handle({ handle: { id, value, percent }, getHandleProps }) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n\tfunction Track({ source, target, getTrackProps }) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n\r\n\tfunction Tick({ tick, count }) {\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{tick.value}\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{({ getRailProps }) => (\r\n\t\t\t\t\t
\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{({ handles, getHandleProps }) => (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{handles.map(handle => {\r\n\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t})}\r\n\t\t\t\t\t
\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t{({ tracks, getTrackProps }) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{tracks.map(({ id, source, target }) => (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)\r\n\t\t\t\t}}\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\t{({ ticks }) => (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{ticks.map(tick => (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t
\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport { Button } from '../exports'\r\nimport './navigation-button.scss'\r\n\r\nexport default function NavigationButton({\r\n\tclassName,\r\n\trounded,\r\n\tdirection,\r\n\ttext,\r\n\tcolor,\r\n\t...otherProps\r\n}) {\r\n\tconst generateClassName = () => {\r\n\t\tlet css = 'navigation-btn'\r\n\t\tif (className) {\r\n\t\t\tcss += ` ${className}`\r\n\t\t}\r\n\t\tif (rounded) {\r\n\t\t\tcss += ' rounded'\r\n\t\t}\r\n\t\treturn css\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t)\r\n}\r\n\r\nNavigationButton.defaultProps = {\r\n\tdirection: 'back',\r\n}\r\n","import React from 'react'\r\nimport './new-shadow-box.scss'\r\n\r\nexport default function NewShadowBox({ visible, modal, children, className }) {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t{visible ?
{modal}
: null}\r\n\t\t\t{children}\r\n\t\t
\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport './options-indicator.scss'\r\n\r\nexport default function OptionsIndicator({ className }) {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport './panel.scss'\r\n\r\nconst Panel = ({ className, children, ...otherProps }) => {\r\n\tconst generateClassName = () => {\r\n\t\tlet css = 'panel'\r\n\t\tif (className) css += ` ${className}`\r\n\t\treturn css\r\n\t}\r\n\treturn (\r\n\t\t
\r\n\t\t\t{children}\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default Panel\r\n","import React from 'react'\r\n\r\nconst PanelBody = ({ noPadding, defaultStyle, className, children }) => {\r\n\tconst generateClassName = () => {\r\n\t\tlet css = 'panel-body'\r\n\t\tif (defaultStyle === false) css = ''\r\n\t\tif (noPadding === true) css += ' no-padding'\r\n\t\tif (className != null) css += ` ${className}`\r\n\t\treturn css\r\n\t}\r\n\treturn
{children}
\r\n}\r\n\r\nexport default PanelBody\r\n","import React from 'react'\r\n\r\nconst PanelFooter = ({ noPadding, defaultStyle, className, children }) => {\r\n\tconst generateClassName = () => {\r\n\t\tlet css = 'panel-footer'\r\n\t\tif (defaultStyle === false) css = ''\r\n\t\tif (noPadding === true) css += ' no-padding'\r\n\t\tif (className != null) css += ` ${className}`\r\n\t\treturn css\r\n\t}\r\n\treturn
{children}
\r\n}\r\n\r\nexport default PanelFooter\r\n","import React from 'react'\r\nimport './panel.scss'\r\n\r\nconst PanelHeader = ({\r\n\tnoPadding,\r\n\tdefaultStyle,\r\n\tborder,\r\n\tclassName,\r\n\tchildren,\r\n\t...otherProps\r\n}) => {\r\n\tconst generateClassName = () => {\r\n\t\tlet css = 'panel-header'\r\n\t\tif (defaultStyle === false) css = ''\r\n\t\tif (!border) {\r\n\t\t\tcss += ' no-border'\r\n\t\t}\r\n\t\tif (noPadding === true) css += ' no-padding'\r\n\t\tif (className != null) css += ` ${className}`\r\n\t\treturn css\r\n\t}\r\n\treturn (\r\n\t\t
\r\n\t\t\t{children}\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default PanelHeader\r\n\r\nPanelHeader.defaultProps = {\r\n\tborder: true,\r\n}\r\n","import React, { useState } from 'react'\r\nimport {\r\n\tLogoBox,\r\n\tAlert,\r\n\tButton,\r\n\tTextInput,\r\n\tusePasswordValidation,\r\n\tuseCanSubmitForm,\r\n} from '../exports'\r\n\r\nexport default function PasswordBox({\r\n\tonSubmit,\r\n\tresetAlert,\r\n\ttitle,\r\n\talertMessage,\r\n\trequestPrevious,\r\n\tfooter,\r\n}) {\r\n\tconst [passwordInputs, setPasswordInputs] = useState({\r\n\t\tpassword: '',\r\n\t\tretypedPassword: '',\r\n\t\toldPassword: '',\r\n\t})\r\n\tconst { passwordError, isPasswordConfirmed } = usePasswordValidation(\r\n\t\tpasswordInputs\r\n\t)\r\n\tconst canSubmit = useCanSubmitForm(\r\n\t\trequestPrevious\r\n\t\t\t? passwordInputs\r\n\t\t\t: {\r\n\t\t\t\t\tpassword: passwordInputs.password,\r\n\t\t\t\t\tretypedPassword: passwordInputs.retypedPassword,\r\n\t\t\t },\r\n\t\tisPasswordConfirmed\r\n\t)\r\n\r\n\tconst handleOnChange = e => {\r\n\t\tresetAlert()\r\n\t\tsetPasswordInputs({\r\n\t\t\t...passwordInputs,\r\n\t\t\t[e.target.name]: e.target.value,\r\n\t\t})\r\n\t}\r\n\r\n\tconst handleOnSubmit = e => {\r\n\t\te.preventDefault()\r\n\t\tonSubmit(passwordInputs)\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{alertMessage}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t

{title}

\r\n\t\t\t\t{requestPrevious ? (\r\n\t\t\t\t\t\r\n\t\t\t\t) : null}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tSubmit\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport ReactTable from 'react-table-6'\r\nimport { LoadingAnimation } from '../exports'\r\nimport './pivot-table.scss'\r\n\r\nexport default function PivotTable({\r\n\ttableRef,\r\n\tclassName,\r\n\trenderColumnData,\r\n\tpivotKeys,\r\n\ttablePivotKeys,\r\n\tdata,\r\n\tloading,\r\n\t...otherProps\r\n}) {\r\n\tconst [isExpanded, setIsExpanded] = useState({})\r\n\tconst [colsToShow, setColsToShow] = useState([])\r\n\r\n\tuseEffect(() => {\r\n\t\tsetNewColumns(isExpanded)\r\n\t}, [pivotKeys])\r\n\r\n\tconst onExpandedChange = newExpanded => {\r\n\t\tsetNewColumns(newExpanded)\r\n\t}\r\n\r\n\tconst setNewColumns = rowsExpanded => {\r\n\t\tlet newCols = []\r\n\t\tif (tablePivotKeys.length < 1) newCols.push(pivotKeys[0])\r\n\t\telse {\r\n\t\t\tnewCols.push(pivotKeys[0])\r\n\t\t\tpivotKeys.forEach((pk, i) => {\r\n\t\t\t\tif (i === 1) {\r\n\t\t\t\t\t//check top level\r\n\t\t\t\t\tif (isTopLevelRowExpanded(rowsExpanded)) {\r\n\t\t\t\t\t\tnewCols.push(pk)\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (i === 2) {\r\n\t\t\t\t\t// check sub level\r\n\t\t\t\t\tif (isSubLevelRowExpanded(rowsExpanded)) {\r\n\t\t\t\t\t\tnewCols.push(pk)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t\tsetIsExpanded(rowsExpanded)\r\n\t\tsetColsToShow(newCols)\r\n\t}\r\n\r\n\tconst isTopLevelRowExpanded = newExpandedObj => {\r\n\t\tlet expanded = false\r\n\t\tlet values = Object.values(newExpandedObj) // if row is expanded, newExpanded === { [rowNumber]: {} }\r\n\t\tvalues.forEach(v => {\r\n\t\t\tif (typeof v === 'object') {\r\n\t\t\t\texpanded = true\r\n\t\t\t}\r\n\t\t})\r\n\t\treturn expanded\r\n\t}\r\n\r\n\tconst isSubLevelRowExpanded = newExpandedObj => {\r\n\t\tlet expanded = false\r\n\t\tlet values = Object.values(newExpandedObj)\r\n\t\tvalues.forEach(v => {\r\n\t\t\tif (typeof v === 'object') {\r\n\t\t\t\tlet subValues = Object.values(v)\r\n\t\t\t\tsubValues.forEach(sv => {\r\n\t\t\t\t\tif (typeof sv === 'object') {\r\n\t\t\t\t\t\texpanded = true\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t})\r\n\t\treturn expanded\r\n\t}\r\n\r\n\treturn (\r\n\t\t data}\r\n\t\t\tcolumns={renderColumnData(colsToShow)}\r\n\t\t\tclassName={`-striped -highlight pivot-table ${className}`}\r\n\t\t\tloading={loading}\r\n\t\t\tloadingText={}\r\n\t\t\texpanded={isExpanded}\r\n\t\t\tpivotBy={tablePivotKeys}\r\n\t\t\tonExpandedChange={(newExpanded, index, event) => {\r\n\t\t\t\tonExpandedChange(newExpanded)\r\n\t\t\t}}\r\n\t\t\t{...otherProps}\r\n\t\t/>\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport Select, { components } from 'react-select'\r\nimport makeAnimated from 'react-select/animated'\r\nimport PropTypes from 'prop-types'\r\nimport { getDarkThemeColor } from '../utils'\r\nimport { themes } from '../exports'\r\n\r\nQSelect.propTypes = {\r\n\tonChange: PropTypes.func.isRequired,\r\n\toptions: PropTypes.arrayOf(PropTypes.object).isRequired,\r\n\tisMulti: PropTypes.bool,\r\n\tisSearchable: PropTypes.bool,\r\n\tplaceholder: PropTypes.string,\r\n\tdefaultInputValue: PropTypes.string,\r\n\tcustomStyles: PropTypes.object,\r\n\tstaticDisplay: PropTypes.string,\r\n}\r\n\r\n// To create grouped options, options prop should be structured like this:\r\n// const options = [\r\n// { label: \"A root option\", value: \"value_3\" },\r\n// {\r\n// label: \"Group 1\",\r\n// options: [\r\n// { label: \"option 1\", value: \"value_1\" },\r\n// { label: \"option 2\", value: \"value_2\" }\r\n// ]\r\n// },\r\n// {\r\n// label: \"Group 2\",\r\n// options: [\r\n// { label: \"option 1\", value: \"value_1\" },\r\n// { label: \"option 2\", value: \"value_2\" }\r\n// ]\r\n// },\r\n// ];\r\n\r\nconst animatedComponents = makeAnimated()\r\n\r\nexport default function QSelect({\r\n\tcustomColors,\r\n\tkeepDarkTheme,\r\n\tnoHoverEffect,\r\n\twidth,\r\n\theight,\r\n\toptions,\r\n\tplaceholder,\r\n\tisMulti,\r\n\tisSearchable,\r\n\tdefaultInputValue,\r\n\tcustomStyles,\r\n\tcustomStyleFunctions,\r\n\tincludeSeparator,\r\n\t...otherProps\r\n}) {\r\n\tconst colors = {\r\n\t\toutline: keepDarkTheme\r\n\t\t\t? themes.dark['border-color']\r\n\t\t\t: 'var(--border-color)',\r\n\t\tboxShadowDark: keepDarkTheme ? 'transparent' : 'var(--box-shadow-color)',\r\n\t\tbackground: keepDarkTheme ? themes.light['header-panel-bg'] : `var(--bg-2)`,\r\n\t\tbackgroundDark: keepDarkTheme ? themes.dark['bg-2'] : 'var(--bg-2)',\r\n\t\thover: keepDarkTheme\r\n\t\t\t? themes.dark['header-panel-hover']\r\n\t\t\t: 'var(--gray-hover)',\r\n\t\tborder: keepDarkTheme\r\n\t\t\t? 'var(--header-btn-border-color)'\r\n\t\t\t: 'var(--border-color)',\r\n\t\ttext: keepDarkTheme ? themes.dark.text : 'var(--text)',\r\n\t\ttextMuted: keepDarkTheme ? themes.dark['text-muted'] : 'var(--text-muted)',\r\n\t\t...customColors,\r\n\t}\r\n\r\n\tconst styles = {\r\n\t\tcontainer: (provided, state) => ({\r\n\t\t\t...provided,\r\n\t\t\toutline: noHoverEffect\r\n\t\t\t\t? 'none'\r\n\t\t\t\t: state.isFocused || state.isSelected\r\n\t\t\t\t? `2px solid ${colors.outline}`\r\n\t\t\t\t: 'none',\r\n\t\t\tboxShadow:\r\n\t\t\t\tstate.isFocused && noHoverEffect\r\n\t\t\t\t\t? `0 0 3px 3px ${colors.boxShadowDark}`\r\n\t\t\t\t\t: 'none',\r\n\t\t\t...customStyles.container,\r\n\t\t}),\r\n\t\tcontrol: (provided, state) => ({\r\n\t\t\t...provided,\r\n\t\t\tbackgroundColor: 'transparent',\r\n\t\t\tborderColor: noHoverEffect\r\n\t\t\t\t? colors.background\r\n\t\t\t\t: state.isFocused\r\n\t\t\t\t? colors.border\r\n\t\t\t\t: colors.border,\r\n\t\t\tboxShadow: 'none',\r\n\t\t\tborderRadius: `1px`,\r\n\t\t\tminHeight: height || '44px',\r\n\t\t\twidth: width,\r\n\t\t\tminWidth: width || '125px',\r\n\t\t\tcolor: colors.text,\r\n\t\t\t'&:hover': {\r\n\t\t\t\tborderColor: state.isMulti\r\n\t\t\t\t\t? colors.border\r\n\t\t\t\t\t: noHoverEffect\r\n\t\t\t\t\t? colors.backgrond\r\n\t\t\t\t\t: colors.border,\r\n\t\t\t\tboxShadow: `0 0 5px 5px ${colors.boxShadowDark}`,\r\n\t\t\t\tbackgroundColor: noHoverEffect ? colors.background : colors.hover,\r\n\t\t\t},\r\n\t\t\t...customStyles.control,\r\n\t\t}),\r\n\t\tvalueContainer: (provided, state) => ({\r\n\t\t\t...provided,\r\n\t\t\tpadding: `var(--padding-default)`,\r\n\t\t\tcolor: colors.text,\r\n\t\t\t...customStyles.valueContainer,\r\n\t\t}),\r\n\t\tindicatorsContainer: (provided, state) => ({\r\n\t\t\t...provided,\r\n\t\t\talignSelf: state.isMulti ? 'start' : 'center',\r\n\t\t\tpaddingTop: state.isMulti ? '7px' : '0',\r\n\t\t}),\r\n\t\tindicatorSeparator: (provided, state) => ({\r\n\t\t\t...provided,\r\n\t\t\tbackgroundColor: colors.border,\r\n\t\t\tdisplay: includeSeparator ? 'block' : 'none',\r\n\t\t}),\r\n\t\tinput: (provided, state) => ({\r\n\t\t\t...provided,\r\n\t\t\tcolor: colors.text,\r\n\t\t\t...customStyles.input,\r\n\t\t}),\r\n\t\tclearIndicator: (provided, state) => ({\r\n\t\t\t...provided,\r\n\t\t\tcolor: colors.textMuted,\r\n\t\t\t'&:hover': {\r\n\t\t\t\tcursor: 'pointer',\r\n\t\t\t\tcolor: colors.text,\r\n\t\t\t},\r\n\t\t\t...customStyles.clearIndicator,\r\n\t\t}),\r\n\t\tdropdownIndicator: (provided, state) => ({\r\n\t\t\t...provided,\r\n\t\t\ttransform: state.selectProps.menuIsOpen ? 'rotate(180deg)' : null,\r\n\t\t\tcolor: colors.text,\r\n\t\t\t'&:hover': {\r\n\t\t\t\tcolor: colors.text,\r\n\t\t\t\tcursor: 'pointer',\r\n\t\t\t},\r\n\t\t\t...customStyles.dropdownIndicator,\r\n\t\t}),\r\n\t\tmenu: (provided, state) => ({\r\n\t\t\t...provided,\r\n\t\t\tbackground: colors.background,\r\n\t\t\tzIndex: '4',\r\n\t\t\t...customStyles.menu,\r\n\t\t}),\r\n\t\tmenuList: (provided, state) => ({\r\n\t\t\t...provided,\r\n\t\t\tboxShadow: `0 0 2px 2px ${colors.boxShadowDark}`,\r\n\t\t\tpadding: '0',\r\n\t\t\t...customStyles.menuList,\r\n\t\t}),\r\n\t\toption: (provided, state) => ({\r\n\t\t\t...provided,\r\n\t\t\tbackground: state.isFocused ? colors.hover : colors.background,\r\n\t\t\twhiteSpace: 'nowrap',\r\n\t\t\toverflow: 'hidden',\r\n\t\t\ttextOverflow: 'ellipsis',\r\n\t\t\tcolor: colors.text,\r\n\t\t\t'&:hover': {\r\n\t\t\t\tcursor: 'pointer',\r\n\t\t\t},\r\n\t\t\t'.item-icon': {\r\n\t\t\t\tdisplay: 'flex',\r\n\t\t\t\talignItems: 'center',\r\n\t\t\t\ti: {\r\n\t\t\t\t\tfontSize: 'larger',\r\n\t\t\t\t\tmarginRight: '10px',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t...customStyles.option,\r\n\t\t}),\r\n\t\tmultiValue: (provided, state) => ({\r\n\t\t\t...provided,\r\n\t\t\tbackgroundColor: colors.backgroundDark,\r\n\t\t\tborder: `1px solid ${colors.border}`,\r\n\t\t\t...customStyles.multiValue,\r\n\t\t}),\r\n\t\tmultiValueLabel: (provided, state) => ({\r\n\t\t\t...provided,\r\n\t\t\tcolor: colors.text,\r\n\t\t\t...customStyles.multiValueLabel,\r\n\t\t}),\r\n\t\tsingleValue: (provided, state) => ({\r\n\t\t\t...provided,\r\n\t\t\tcolor: colors.text,\r\n\t\t\t...customStyles.singleValue,\r\n\t\t}),\r\n\t\tmultiValueRemove: (provided, state) => ({\r\n\t\t\t...provided,\r\n\t\t\tcolor: colors.textMuted,\r\n\t\t\t'&:hover': {\r\n\t\t\t\tcursor: 'pointer',\r\n\t\t\t\tbackgroundColor: colors.background,\r\n\t\t\t\tcolor: colors.text,\r\n\t\t\t},\r\n\t\t\t...customStyles.multiValueRemove,\r\n\t\t}),\r\n\t}\r\n\r\n\tconst IconOption = ({ ...props }) => {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{props.data.icon ? (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{props.data.label}\r\n\t\t\t\t\t\r\n\t\t\t\t) : (\r\n\t\t\t\t\tprops.data.label\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t)\r\n}\r\n\r\nQSelect.defaultProps = {\r\n\tcustomStyles: {},\r\n}\r\n","import React from 'react'\r\nimport Tooltip from '@reach/tooltip'\r\nimport '@reach/tooltip/styles.css'\r\nimport './reach-tooltip.scss'\r\n\r\nexport default function ReachTooltip({ children, text, ...otherProps }) {\r\n\tif (text) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{children ? (\r\n\t\t\t\t\tchildren\r\n\t\t\t\t) : (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n\treturn null\r\n}\r\n","import React from 'react'\r\nimport { LogoBox } from '../exports'\r\nimport './result-box.scss'\r\n\r\nexport default function ResultBox({\r\n\theading,\r\n\tbody,\r\n\tboxType,\r\n\tfooter,\r\n\ttestId,\r\n\t...otherProps\r\n}) {\r\n\tconst renderIcon = () => {\r\n\t\tswitch (boxType) {\r\n\t\t\tcase 'success':\r\n\t\t\t\treturn (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t)\r\n\t\t\tcase 'failure':\r\n\t\t\t\treturn (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
!
\r\n\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t
\r\n\t\t\t\t)\r\n\t\t\tdefault:\r\n\t\t\t\treturn (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t)\r\n\t\t}\r\n\t}\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t{/*
*/}\r\n\t\t\t\t

{heading}

\r\n\t\t\t\t{/*
*/}\r\n\t\t\t\t{renderIcon()}\r\n\t\t\t\t{/*
*/}\r\n\t\t\t\t
{body}
\r\n\t\t\t
\r\n\t\t
\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport './screen-alert-container.scss'\r\n\r\nexport default function ScreenAlertContainer({ children, ...otherProps }) {\r\n\treturn (\r\n\t\t
\r\n\t\t\t{children}\r\n\t\t
\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport './scrollbars.scss'\r\n\r\nexport default function Scrollbars({ children, className, ...otherProps }) {\r\n\treturn (\r\n\t\t
\r\n\t\t\t{children}\r\n\t\t
\r\n\t)\r\n}\r\n","import React, { Component } from 'react'\r\nimport PropTypes from 'prop-types'\r\nimport './shadowbox.scss'\r\nimport { LoadingAnimation } from '../exports'\r\n\r\nclass ShadowBox extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props)\r\n\r\n\t\tthis.rootRef = React.createRef()\r\n\r\n\t\tthis.state = {\r\n\t\t\tboxHeight: 0,\r\n\t\t\tboxWidth: 0,\r\n\t\t\tresizeTimeout: null,\r\n\t\t}\r\n\r\n\t\tthis.updateDimensions = this.updateDimensions.bind(this)\r\n\t}\r\n\r\n\tinitDimensions() {\r\n\t\tthis.setState({\r\n\t\t\tboxHeight: this.getChildHeight(),\r\n\t\t\tboxWidth: this.getChildWidth(),\r\n\t\t\tresizeTimeout: null,\r\n\t\t})\r\n\r\n\t\tthis.updateDimensions()\r\n\t}\r\n\r\n\t// see: https://developer.mozilla.org/en-US/docs/Web/Events/resize\r\n\tupdateDimensions() {\r\n\t\tif (!this.state.resizeTimeout) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tresizeTimeout: setTimeout(\r\n\t\t\t\t\t() =>\r\n\t\t\t\t\t\tthis.setState({\r\n\t\t\t\t\t\t\tboxHeight: this.getChildHeight(),\r\n\t\t\t\t\t\t\tboxWidth: this.getChildWidth(),\r\n\t\t\t\t\t\t\tresizeTimeout: null,\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t200\r\n\t\t\t\t),\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tgetChildHeight() {\r\n\t\tif (this.rootRef.current) {\r\n\t\t\tlet el = this.rootRef.current\r\n\t\t\tlet c = window.getComputedStyle(el.childNodes[0])\r\n\r\n\t\t\tlet height = parseFloat(c.height) || el.offsetHeight\r\n\r\n\t\t\tlet margin = parseFloat(c.marginTop) + parseFloat(c.marginBottom)\r\n\t\t\tlet padding = parseFloat(c.paddingTop) + parseFloat(c.paddingBottom)\r\n\t\t\tlet border =\r\n\t\t\t\tparseFloat(c.borderTopWidth) + parseFloat(c.borderBottomWidth)\r\n\r\n\t\t\tlet result = height + margin + padding + border\r\n\t\t\t//console.log(`height: ${height} margin: ${margin} padding: ${padding} border: ${border}`);\r\n\r\n\t\t\treturn result //this.rootRef.current.offsetHeight;\r\n\t\t}\r\n\t\treturn 0\r\n\t}\r\n\r\n\tgetChildWidth() {\r\n\t\tif (this.rootRef.current) {\r\n\t\t\tlet el = this.rootRef.current //|| window.getComputedStyle(element);\r\n\t\t\tlet c = window.getComputedStyle(el.childNodes[0])\r\n\r\n\t\t\tlet width = parseFloat(c.width) || el.offsetWidth\r\n\r\n\t\t\tlet margin = parseFloat(c.marginLeft) + parseFloat(c.marginRight)\r\n\t\t\tlet padding = parseFloat(c.paddingLeft) + parseFloat(c.paddingRight)\r\n\t\t\tlet border =\r\n\t\t\t\tparseFloat(c.borderLeftWidth) + parseFloat(c.borderRightWidth)\r\n\r\n\t\t\treturn width + margin + padding + border\r\n\t\t}\r\n\t\treturn 0\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\twindow.addEventListener('resize', this.updateDimensions)\r\n\t\tthis.initDimensions()\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\twindow.removeEventListener('resize', this.updateDimensions)\r\n\t}\r\n\r\n\tgenerateClassName() {\r\n\t\tconst { visible, className } = this.props\r\n\t\tlet css = 'container'\r\n\t\tif (visible) {\r\n\t\t\tcss += ' visible'\r\n\t\t}\r\n\t\tif (className) {\r\n\t\t\tcss += ` ${className}`\r\n\t\t}\r\n\t\treturn css\r\n\t}\r\n\r\n\tchooseModal() {\r\n\t\tswitch (this.props.modal) {\r\n\t\t\tcase 'loading':\r\n\t\t\t\treturn \r\n\t\t\tdefault:\r\n\t\t\t\treturn this.props.modal\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst divStyle = {\r\n\t\t\theight: this.state.boxHeight,\r\n\t\t\ttop: -1 * this.state.boxHeight,\r\n\t\t\twidth: this.state.boxWidth,\r\n\t\t}\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t{this.props.children}\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{this.chooseModal()}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t)\r\n\t}\r\n}\r\n\r\nShadowBox.propTypes = {\r\n\tchildren: PropTypes.element.isRequired,\r\n}\r\n\r\nexport default ShadowBox\r\n\r\n/*\r\nhttps://stackoverflow.com/questions/19014250/reactjs-rerender-on-browser-resize\r\n*/\r\n","import React from 'react'\r\nimport { appendClassName } from '../utils'\r\nimport { QSelect } from '../exports'\r\n\r\nexport default function DropdownMenu({\r\n\tclassName,\r\n\tbuttonDisplay,\r\n\tonChange,\r\n\toptions,\r\n\t...otherProps\r\n}) {\r\n\treturn (\r\n\t\t props.onClick()}\r\n\t\t\t{...otherProps}\r\n\t\t/>\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport './table.scss'\r\n\r\nexport default function Table({\r\n\tchildren,\r\n\tclassName,\r\n\tdata,\r\n\tcolumns,\r\n\trows,\r\n\tdefaultStyle,\r\n\tstriped,\r\n\thighlight,\r\n\thandleRowClick,\r\n}) {\r\n\tconst generateClassName = () => {\r\n\t\tlet css = 'basic-table'\r\n\t\tif (defaultStyle) css += ' default'\r\n\t\tif (striped) css += ' -striped'\r\n\t\tif (highlight) css += ' -highlight'\r\n\t\tif (className) css += ` ${className}`\r\n\t\treturn css\r\n\t}\r\n\r\n\tif (rows && data.length === rows.length)\r\n\t\tdata.forEach((set, i) => set.unshift(rows[i]))\r\n\r\n\tif (data)\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{columns ? (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{rows ? : null}\r\n\t\t\t\t\t\t\t{columns.map((column, i) => (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t) : null}\r\n\t\t\t\t\r\n\t\t\t\t\t{rows\r\n\t\t\t\t\t\t? data.map((set, index) => (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{set.map((value, i) =>\r\n\t\t\t\t\t\t\t\t\t\ti === 0 ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t ))\r\n\t\t\t\t\t\t: data.map((set, index) => (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{set.map((value, i) => (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t ))}\r\n\t\t\t\t\r\n\t\t\t
{column}
{value}{value}
{value}
\r\n\t\t)\r\n\r\n\treturn {children}
\r\n}\r\n\r\nTable.defaultProps = {\r\n\tdefaultStyle: true,\r\n\tstriped: true,\r\n\thighlight: true,\r\n}\r\n","import React from 'react'\r\nimport './tabs.scss'\r\n\r\n// [\r\n// {\r\n// onClick: updateStagesAndGraph,\r\n// text: \"Hightest Stage Only\",\r\n// value: true,\r\n// selectedValue: dataFilters.maxStageOnly\r\n// },\r\n// {\r\n// onClick: updateStagesAndGraph,\r\n// text: \"Full Loan History\",\r\n// value: false,\r\n// selectedValue: dataFilters.maxStageOnly\r\n// }\r\n// ]\r\n\r\nexport default function Tabs({\r\n\ttabData,\r\n\tinHeader,\r\n\taccentColor,\r\n\t...otherProps\r\n}) {\r\n\treturn (\r\n\t\t
\r\n\t\t\t{tabData.map((tab, i) => (\r\n\t\t\t\t\r\n\t\t\t))}\r\n\t\t
\r\n\t)\r\n}\r\nTabs.defaultProps = {\r\n\taccentColor: 'var(--blue)',\r\n}\r\n\r\nconst Tab = ({\r\n\tonClick,\r\n\ttext,\r\n\tvalue,\r\n\tinHeader,\r\n\tselectedValue,\r\n\taccentColor,\r\n}) => {\r\n\tconst getClassName = () => {\r\n\t\tlet css = 'tab'\r\n\t\tif (inHeader) {\r\n\t\t\tcss += ' header-tab'\r\n\t\t}\r\n\t\treturn css\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{text}\r\n\t\t\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport './textarea.scss'\r\n\r\nconst TextArea = ({ className, required, ...otherProps }) => (\r\n\t
\r\n\t\t\r\n\t\t{required ? : null}\r\n\t
\r\n)\r\n\r\nexport default TextArea\r\n\r\nTextArea.defaultProps = {\r\n\tclassName: '',\r\n}\r\n","import React, { useRef, useEffect } from 'react'\r\nimport './textinput.scss'\r\n\r\nconst TextInput = ({ className, type, autoFocus, required, ...otherProps }) => {\r\n\tconst inputEl = useRef(null)\r\n\r\n\tuseEffect(() => {\r\n\t\tif (autoFocus && inputEl.current) {\r\n\t\t\tinputEl.current.focus()\r\n\t\t}\r\n\t})\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t{required ? : null}\r\n\t\t
\r\n\t)\r\n}\r\n\r\nTextInput.defaultProps = {\r\n\ttype: 'text',\r\n\tclassName: '',\r\n}\r\n\r\nexport default TextInput\r\n","import React from 'react'\r\nimport './toggle.scss'\r\n\r\nexport default function Toggle({\r\n\tclassName,\r\n\tselected,\r\n\thandleChange,\r\n\t...otherProps\r\n}) {\r\n\tconst generateClassName = () => {\r\n\t\tlet name = 'toggle'\r\n\t\tif (className) name += ` ${className}`\r\n\t\tif (selected) name += ' selected'\r\n\t\treturn name\r\n\t}\r\n\r\n\treturn (\r\n\t\t handleChange()}\r\n\t\t\t{...otherProps}\r\n\t\t>\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n","import React, { useState } from 'react'\r\nimport './tooltip.scss'\r\n\r\nexport default function Tooltip({\r\n\tchildren,\r\n\ttext,\r\n\tshowOnHover,\r\n\tinline,\r\n\t...otherProps\r\n}) {\r\n\tconst [showTip, setShowTip] = useState(false)\r\n\tconst [showIcon, setShowIcon] = useState(false)\r\n\r\n\tconst generateClassName = () => {\r\n\t\tlet css = 'tooltip'\r\n\t\tif (showOnHover) {\r\n\t\t\tcss += ' hoverable'\r\n\t\t} else if (showTip) {\r\n\t\t\tcss += ' show'\r\n\t\t}\r\n\t\treturn css\r\n\t}\r\n\tif (!text) {\r\n\t\treturn children\r\n\t}\r\n\treturn (\r\n\t\t setShowIcon(true)}\r\n\t\t\tonMouseLeave={() => setShowIcon(false)}\r\n\t\t>\r\n\t\t\t
\r\n\t\t\t\t{text}\r\n\t\t\t
\r\n\t\t\t{children}\r\n\t\t\t{showOnHover ? null : (\r\n\t\t\t\t setShowTip(true)}\r\n\t\t\t\t\tonMouseLeave={() => setShowTip(false)}\r\n\t\t\t\t>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\r\n\t)\r\n}\r\n\r\nTooltip.defaultProps = {\r\n\tshowOnHover: true,\r\n\tinline: false,\r\n}\r\n","import React from 'react'\r\nimport { useState } from 'react'\r\nimport './upload-zone.scss'\r\n\r\nexport default function UploadZone({\r\n\tfileTypes,\r\n\tmultiple,\r\n\tonAddFiles,\r\n\tclassName,\r\n\t...otherProps\r\n}) {\r\n\tconst uploadBtn = React.createRef()\r\n\tconst [isDraggingOver, setIsDraggingOver] = useState(false)\r\n\r\n\tconst handleDragIn = e => {\r\n\t\te.preventDefault()\r\n\t\te.stopPropagation()\r\n\t\tsetIsDraggingOver(true)\r\n\t}\r\n\r\n\tconst handleDragOut = e => {\r\n\t\te.preventDefault()\r\n\t\te.stopPropagation()\r\n\t\tsetIsDraggingOver(false)\r\n\t}\r\n\r\n\tconst handleDragOver = e => {\r\n\t\te.preventDefault()\r\n\t\te.stopPropagation()\r\n\t}\r\n\r\n\tconst handleDrop = e => {\r\n\t\te.preventDefault()\r\n\t\te.stopPropagation()\r\n\t\tonAddFiles(e.dataTransfer.files)\r\n\t\tsetIsDraggingOver(false)\r\n\t}\r\n\r\n\treturn (\r\n\t\t handleDragIn(e)}\r\n\t\t\tonDragLeave={e => handleDragOut(e)}\r\n\t\t\tonDragOver={e => handleDragOver(e)}\r\n\t\t\tonDrop={e => handleDrop(e)}\r\n\t\t\tonClick={() => uploadBtn.current.click()}\r\n\t\t\t{...otherProps}\r\n\t\t>\r\n\t\t\t{isDraggingOver ? (\r\n\t\t\t\t handleDragOver(e)}\r\n\t\t\t\t\tonDragEnter={e => handleDragIn(e)}\r\n\t\t\t\t\tonDragLeave={e => handleDragIn(e)}\r\n\t\t\t\t\tonDrop={e => handleDrop(e)}\r\n\t\t\t\t>\r\n\t\t\t\t\tDrop here to upload!\r\n\t\t\t\t\r\n\t\t\t) : (\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tDrag to Upload Files\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
or
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tSelect Files to Upload\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t{fileTypes ?
({fileTypes})
: null}\r\n\t\t\t\t
\r\n\t\t\t)}\r\n\t\t\t onAddFiles(Array.from(uploadBtn.current.files))}\r\n\t\t\t/>\r\n\t\t\r\n\t)\r\n}\r\n","import React from 'react'\r\n\r\nexport default function NotFound() {\r\n\treturn (\r\n\t\t
\r\n\t\t\t

\r\n\t\t\t\tOops! It looks like there is nothing at this address or you are not\r\n\t\t\t\tauthorized to view this screen.\r\n\t\t\t

\r\n\t\t\t

\r\n\t\t\t\tIf you think this is an error, please contact{' '}\r\n\t\t\t\tsupport@quantalytix.com.\r\n\t\t\t

\r\n\t\t
\r\n\t)\r\n}\r\n","import { useState, useEffect } from 'react'\r\n\r\nexport default function useCanSubmitForm(formObj, additionalCondition = true) {\r\n\tconst [canSubmit, setCanSubmit] = useState(false)\r\n\r\n\tuseEffect(() => {\r\n\t\tconst isFormComplete = () => {\r\n\t\t\tlet result = !Object.values(formObj).includes('')\r\n\t\t\treturn result\r\n\t\t}\r\n\t\tif (isFormComplete() && additionalCondition) {\r\n\t\t\tsetCanSubmit(true)\r\n\t\t} else {\r\n\t\t\tsetCanSubmit(false)\r\n\t\t}\r\n\t}, [formObj, additionalCondition])\r\n\r\n\treturn canSubmit\r\n}\r\n","import { useState, useEffect } from 'react'\r\n\r\nexport default function usePasswordValidation(formInputs) {\r\n\tconst [passwordError, setPasswordError] = useState('')\r\n\tconst [isPasswordValid, setIsPasswordValid] = useState(false)\r\n\tconst [isPasswordConfirmed, setIsPasswordConfirmed] = useState(false)\r\n\r\n\tuseEffect(() => {\r\n\t\tif (formInputs.password) {\r\n\t\t\tvalidatePassword()\r\n\t\t} else {\r\n\t\t\tsetPasswordError('')\r\n\t\t}\r\n\t}, [formInputs.password])\r\n\r\n\tuseEffect(() => {\r\n\t\tif (formInputs.retypedPassword) {\r\n\t\t\tconfirmPassword()\r\n\t\t}\r\n\t}, [formInputs.retypedPassword, formInputs.password])\r\n\r\n\tconst validatePassword = () => {\r\n\t\tif (formInputs.password.length < 8) {\r\n\t\t\tsetPasswordError('Password must be at least 8 characters.')\r\n\t\t\tsetIsPasswordValid(false)\r\n\t\t} else {\r\n\t\t\tsetPasswordError('')\r\n\t\t\tsetIsPasswordValid(true)\r\n\t\t}\r\n\t}\r\n\r\n\tconst confirmPassword = () => {\r\n\t\tif (formInputs.password === formInputs.retypedPassword) {\r\n\t\t\tif (isPasswordValid) {\r\n\t\t\t\tsetIsPasswordConfirmed(true)\r\n\t\t\t\tsetPasswordError('')\r\n\t\t\t} else {\r\n\t\t\t\tsetPasswordError('Password must be at least 8 characters.')\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tsetIsPasswordConfirmed(false)\r\n\t\t\tsetPasswordError('Passwords must match.')\r\n\t\t}\r\n\t}\r\n\r\n\treturn { passwordError, isPasswordConfirmed }\r\n}\r\n","import { useLayoutEffect } from 'react'\r\nimport { globals } from '../exports'\r\n\r\nexport default function useTheme(theme) {\r\n\tuseLayoutEffect(() => {\r\n\t\tfor (const key in theme) {\r\n\t\t\tdocument.documentElement.style.setProperty(`--${key}`, theme[key])\r\n\t\t}\r\n\t\tfor (const key in globals) {\r\n\t\t\tdocument.documentElement.style.setProperty(`--${key}`, globals[key])\r\n\t\t}\r\n\t}, [theme])\r\n}\r\n","const baseFontSize = 10\r\n\r\nconst globals = {\r\n\t'font-color-base': '#aaaaaa',\r\n\r\n\t// theme colors\r\n\tred: '#e94144',\r\n\torange: '#f2a34e',\r\n\tgreen: '#2ddb6d',\r\n\tblue: '#029be7',\r\n\t'blue-dark': '#0063c3',\r\n\tpurple: '#a96aff',\r\n\t'purple-dark': '#7143af',\r\n\r\n\t// dark-theme grayscale\r\n\tblack: '#0b0b0b',\r\n\t'gray-darkest': '#16171b',\r\n\t'gray-darker': '#1d1e22',\r\n\t'gray-dark': '#212226',\r\n\t'gray-light': '#26272b',\r\n\t'gray-lighter': '#34363c',\r\n\t'gray-lightest': '#7b7f88',\r\n\twhite: '#e9e9e9',\r\n\t//Does not exist is DS\r\n\tgray: '#39393d',\r\n\t//\r\n\r\n\t// light-theme colors\r\n\t'lt-white': '#FFFFFF',\r\n\t'lt-off-white': '#fafdff',\r\n\t//\r\n\t'lt-gray-lightest': '#f0f4ff',\r\n\t'lt-gray-lighter': '#dadcec',\r\n\t'lt-gray-light': '#b6b8ca',\r\n\t'lt-gray-dark': '#33343d',\r\n\t'lt-gray-darkest': '#25252a',\r\n\t// does not exist in DS\r\n\t'lt-gray-darker': '#858EA6',\r\n\t//\r\n\r\n\t// gradients\r\n\t'admin-gradient': 'linear-gradient(90deg, #220707 0%, #492f13 100%)',\r\n\t'scorecard-gradient': 'linear-gradient(-90deg, #00412e 0%, #042544 100%)',\r\n\t'pipeline-gradient': 'linear-gradient(90deg, #210034 0%, #46003b 100%)',\r\n\t'reporting-gradient': 'linear-gradient(90deg, #061d0f 0%, #092c19 100%)',\r\n\t'valuation-gradient': 'linear-gradient(-90deg, #310d0d 0%, #0c081f 100%)',\r\n\t'system-admin-gradient':\r\n\t\t'linear-gradient(90deg, rgba(4,2,2,1) 7%, rgba(92,6,6,1) 83%)',\r\n\r\n\t// typography\r\n\t'default-font': `'Nunito Sans', sans-serif`,\r\n\t'number-font': `'Roboto Mono', monospace`,\r\n\t'font-size-xxl': rem(84.5),\r\n\t'font-size-xl': rem(42.25),\r\n\t'font-size-largest': rem(28),\r\n\t'font-size-larger': rem(21.5),\r\n\t'font-size-large': rem(18.5),\r\n\t'font-size-default': rem(16),\r\n\t'fonst-size-smallish': rem(15),\r\n\t'font-size-small': rem(14),\r\n\t'font-size-smaller': rem(12),\r\n\t'font-size-smallest': rem(10),\r\n\t'base-font-size': baseFontSize,\r\n\t// 'font-size-xl': '3.5vw',\r\n\t// 'font-size-largest': '3vw',\r\n\t// 'font-size-larger': '2.5vw',\r\n\t// 'font-size-large': '2vw',\r\n\t// 'font-size-default': '1.5vw',\r\n\t// 'font-size-small': '1.25vw',\r\n\r\n\t// dimensions\r\n\t'padding-default': '1rem',\r\n\t'header-height': '62px',\r\n\t'sidebar-width': '62px',\r\n\t'sidebar-expander-width': '15px',\r\n\t'expanded-sidebar-width': '275px',\r\n\t'data-filter-height': '64px',\r\n\t'content-height': `calc(100vh - var(--header-height))`,\r\n\t'content-width': `calc(100vw - var(--sidebar-width) - var(--sidebar-expander-width) - 20px)`,\r\n\t'loading-animation-height': '64px',\r\n\r\n\t// special effects\r\n\t'white-shadow': 'drop-shadow(2px 4px 6px #E7EBF4)',\r\n}\r\n\r\nfunction rem(n) {\r\n\treturn n / baseFontSize + 'rem'\r\n}\r\n\r\nexport default globals\r\n","import { globals } from '../exports'\r\n\r\nconst themes = {\r\n\tdark: {\r\n\t\tprimary: globals.blue,\r\n\t\t'primary-dark': globals['blue-dark'],\r\n\t\tsecondary: globals.purple,\r\n\t\t'secondary-dark': globals['purple-dark'],\r\n\t\t'bg-1': globals.black,\r\n\t\t'bg-2': globals['gray-darker'],\r\n\t\t'bg-3': globals['white'],\r\n\t\t'header-bg': globals['gray-darkest'],\r\n\t\t'header-btn-border-color': globals['gray-lighter'],\r\n\t\t'sidebar-bg': globals['gray-darkest'],\r\n\t\t'sidebar-menu': globals['gray-darker'],\r\n\t\t'navigation-text': globals['white'],\r\n\t\t'navigation-text-muted': globals['gray-lightest'],\r\n\t\ttext: globals['white'],\r\n\t\t'text-muted': globals['gray-lightest'],\r\n\t\t'panel-border': `1px solid ${globals['gray-darkest']}`,\r\n\t\t'header-panel-bg': globals['gray-dark'],\r\n\t\t'header-panel-hover': globals['gray-light'],\r\n\t\t'header-panel-text': globals['white'],\r\n\t\t'panel-body': globals['gray-darkest'],\r\n\t\t'footer-panel-bg': globals['gray-dark'],\r\n\t\t'data-table-text': globals['font-color-base'],\r\n\t\t'data-table-header-text': globals['white'],\r\n\t\t'data-table-bg-dark': globals['gray-darkest'],\r\n\t\t'data-table-bg-light': globals['gray-darker'],\r\n\t\t'data-table-accent': globals.black,\r\n\t\t'data-table-border': globals['gray-darker'],\r\n\t\t'data-table-filter': globals['gray-darker'],\r\n\t\t'gray-hover': globals['gray-light'],\r\n\t\t'alert-bg': globals.blue,\r\n\t\t'button-bg': globals['gray-dark'],\r\n\t\t'button-bg-2': globals['gray-darker'],\r\n\t\t'button-bg-3': globals['black'],\r\n\t\t'button-disabled': globals['gray-lighter'],\r\n\t\t'button-text': globals['white'],\r\n\t\t'border-color': globals['gray-light'],\r\n\t\tdanger: globals.red,\r\n\t\tsuccess: globals.green,\r\n\t\t'toggle-bg': globals['gray-light'],\r\n\t\t'expander-bg': globals.black,\r\n\t\t'expander-arrow': globals['white'],\r\n\t\t'expander-circle': globals['white'],\r\n\t\t'expander-bg-hover': globals.blue,\r\n\t\t'expander-arrow-hover': globals['white'],\r\n\t\t'expander-circle-hover': globals.blue,\r\n\t\t'icon-color': globals['white'],\r\n\t\tscrollbar: globals['gray-light'],\r\n\t\t'scrollbar-hover': globals['gray-lighter'],\r\n\t\t'box-shadow-color': 'rgba(0, 0, 0, 0.4)',\r\n\t\t'loading-color': 'rgba(29, 29, 29, 0.8)',\r\n\t},\r\n\tlight: {\r\n\t\tprimary: globals.blue,\r\n\t\t'primary-dark': globals['blue-dark'],\r\n\t\tsecondary: globals.purple,\r\n\t\t'secondary-dark': globals['purple-dark'],\r\n\t\t'bg-1': globals['lt-off-white'],\r\n\t\t'bg-2': globals['lt-off-white'],\r\n\t\t'bg-3': globals['lt-light'],\r\n\t\t'header-bg': globals['lt-gray-darkest'],\r\n\t\t'header-btn-border-color': globals['lt-gray-dark'],\r\n\t\t'sidebar-bg': globals['lt-gray-darkest'],\r\n\t\t'sidebar-menu': globals['lt-gray-darkest'],\r\n\t\t'navigation-text': globals['lt-white'],\r\n\t\t'navigation-text-muted': globals['lt-gray-light'],\r\n\t\ttext: globals['lt-gray-darkest'],\r\n\t\t'text-muted': globals['lt-gray-dark'],\r\n\t\t'data-table-text': globals['lt-gray-darkest'],\r\n\t\t'panel-border': `1px solid ${globals['lt-gray-lightest']}`,\r\n\t\t'header-panel-bg': globals['lt-gray-darkest'],\r\n\t\t'header-panel-text': globals['white'],\r\n\t\t'header-panel-hover': globals['lt-gray-dark'],\r\n\t\t'panel-body': globals['lt-off-white'],\r\n\t\t'footer-panel-bg': globals['lt-off-white'],\r\n\t\t'data-table-header-text': globals['lt-gray-darkest'],\r\n\t\t'data-table-bg-dark': globals['lt-off-white'],\r\n\t\t'data-table-bg-light': globals['lt-off-white'],\r\n\t\t'data-table-accent': globals['lt-gray-lighter'],\r\n\t\t'data-table-border': globals['lt-gray-lighter'],\r\n\t\t'data-table-filter': globals['lt-gray-lightest'],\r\n\t\t'gray-hover': globals['lt-gray-lightest'],\r\n\t\t'alert-bg': globals.blue,\r\n\t\t'button-bg': globals['lt-gray-lighter'],\r\n\t\t'button-bg-2': globals['lt-gray-light'],\r\n\t\t'button-bg-3': globals['lt-gray-dark'],\r\n\t\t'button-disabled': globals['lt-gray-light'],\r\n\t\t'button-text': globals['lt-white'],\r\n\t\t'border-color': globals['lt-gray-lighter'],\r\n\t\tdanger: globals.red,\r\n\t\tsuccess: globals.green,\r\n\t\t'toggle-bg': globals['lt-gray-light'],\r\n\t\t'expander-bg': globals.black,\r\n\t\t'expander-arrow': globals['lt-white'],\r\n\t\t'expander-circle': globals['lt-white'],\r\n\t\t'expander-bg-hover': globals.blue,\r\n\t\t'expander-arrow-hover': globals['lt-white'],\r\n\t\t'expander-circle-hover': globals.blue,\r\n\t\t'icon-color': globals['lt-white'],\r\n\t\tscrollbar: globals['lt-gray-lighter'],\r\n\t\t'scrollbar-hover': globals['lt-gray-light'],\r\n\t\t'box-shadow-color': 'rgba(0, 0, 0, 0.2)',\r\n\t\t'loading-color': 'rgba(249, 250, 252, 0.8)',\r\n\t},\r\n}\r\n\r\nexport default themes\r\n","import { themes } from './exports'\r\n\r\nconst isValidDateRange = (start, end) => {\r\n\tlet startObj = new Date(start)\r\n\tlet endObj = new Date(end)\r\n\tlet isStartBeforeEnd = startObj <= endObj\r\n\tlet startDay = start.split('/')[1]\r\n\tlet endDay = end.split('/')[1]\r\n\tlet isValidStart =\r\n\t\tBoolean(+startObj) && startObj.getDate() === parseInt(startDay, 10)\r\n\tlet isValidEnd = Boolean(+endObj) && endObj.getDate() === parseInt(endDay, 10)\r\n\treturn isStartBeforeEnd && isValidStart && isValidEnd\r\n}\r\n\r\nconst getDarkThemeColor = colorString => {\r\n\tlet match = colorString.match(/(?<=--)(.*?)(?=\\))/gm)\r\n\tlet color = themes.dark[match]\r\n\tif (!match || !color) {\r\n\t\tconsole.error(`no dark theme color match for ${colorString}.`)\r\n\t\treturn colorString\r\n\t}\r\n\treturn color\r\n}\r\n\r\nconst formatData = (data, format, round = false) => {\r\n\tswitch (format) {\r\n\t\tcase 'number':\r\n\t\t\treturn numberWithCommas(data)\r\n\t\tcase 'currency':\r\n\t\t\treturn intToCurrency.format(data)\r\n\t\tcase 'percent':\r\n\t\t\treturn convertToPercent(data, round)\r\n\t\tdefault:\r\n\t\t\treturn data\r\n\t}\r\n}\r\n\r\nconst getLastWeekdayDate = () => {\r\n\tlet dayOfWeek = getCurrentDate('D')\r\n\tlet daysToSubtract\r\n\tif (dayOfWeek === 'Sunday') {\r\n\t\tdaysToSubtract = 2\r\n\t} else if (dayOfWeek === 'Monday') {\r\n\t\tdaysToSubtract = 3\r\n\t} else {\r\n\t\tdaysToSubtract = 1\r\n\t}\r\n\treturn formatDate(new Date().setDate(new Date().getDate() - daysToSubtract), {\r\n\t\tmonth: '2-digit',\r\n\t\tday: '2-digit',\r\n\t\tyear: 'numeric',\r\n\t})\r\n}\r\n\r\nconst getYTD = () => {\r\n\tlet month = getCurrentDate('m')\r\n\tlet day = getCurrentDate('dd')\r\n\tif (month === '02' && day === '29') {\r\n\t\tday = '28'\r\n\t}\r\n\r\n\tlet year = getCurrentDate('yyyy') - 1\r\n\treturn `${month}/${day}/${year}`\r\n}\r\n\r\nconst convertToPercent = (num, round = false) => {\r\n\tlet result\r\n\tif (round) {\r\n\t\tresult = Math.round(num * 100)\r\n\t} else {\r\n\t\tresult = (num * 100).toFixed(2)\r\n\t}\r\n\treturn num === 0 ? '0%' : `${result}%`\r\n}\r\n\r\nconst appendClassName = (parentClassName, className = null) => {\r\n\tlet css = parentClassName\r\n\tif (className) {\r\n\t\tcss += ` ${className}`\r\n\t}\r\n\treturn css\r\n}\r\n\r\nconst slugify = string => {\r\n\tconst a =\r\n\t\t'àáäâãåăæąçćčđďèéěėëêęǵḧìíïîįłḿǹńňñòóöôœøṕŕřßśšșťțùúüûǘůűūųẃẍÿýźžż·/_,:;'\r\n\tconst b =\r\n\t\t'aaaaaaaaacccddeeeeeeeghiiiiilmnnnnooooooprrssssttuuuuuuuuuwxyyzzz------'\r\n\tconst p = new RegExp(a.split('').join('|'), 'g')\r\n\r\n\treturn string\r\n\t\t.toString()\r\n\t\t.toLowerCase()\r\n\t\t.replace(/\\s+/g, '-') // Replace spaces with -\r\n\t\t.replace(p, c => b.charAt(a.indexOf(c))) // Replace special characters\r\n\t\t.replace(/&/g, '-and-') // Replace & with 'and'\r\n\t\t.replace(/[^\\w-]+/g, '') // Remove all non-word characters\r\n\t\t.replace(/--+/g, '-') // Replace multiple - with single -\r\n\t\t.replace(/^-+/, '') // Trim - from start of text\r\n\t\t.replace(/-+$/, '') // Trim - from end of text\r\n}\r\n\r\nconst sleep = ms => {\r\n\treturn new Promise(resolve => setTimeout(resolve, ms))\r\n}\r\n\r\nconst handleErrorMessage = code => {\r\n\tswitch (code) {\r\n\t\tcase 1:\r\n\t\t\treturn 'There is not an account associated with that email address.'\r\n\t\tcase 2:\r\n\t\t\treturn 'Incorrect password. Try again!'\r\n\t\tcase 3:\r\n\t\t\treturn 'This link has expired.'\r\n\t\tcase 4:\r\n\t\t\treturn 'An account with this email address already exists.'\r\n\t\tcase 5:\r\n\t\t\treturn 'Another user already updated this information. Try again!'\r\n\t\tcase 6:\r\n\t\t\treturn 'This account has not been confirmed. Please check your email for a confirmation link.'\r\n\t\tcase 7:\r\n\t\t\treturn 'Account is currently locked.'\r\n\t\tcase 8:\r\n\t\t\treturn 'Account has been disabled.'\r\n\t\tcase 9:\r\n\t\t\treturn 'We do not recognize this email domain. Only current clients of Quantalytix are able to create an account.'\r\n\t\tcase 10:\r\n\t\t\treturn 'You need to log in before being able to access this screen.'\r\n\t\tcase 11:\r\n\t\t\treturn 'This account has already been confirmed.'\r\n\t\tdefault:\r\n\t\t\treturn 'Oops! Something went wrong.'\r\n\t}\r\n}\r\n\r\nconst newCheckForErrors = (resp, customMessage) => {\r\n\tlet alertObj = {\r\n\t\tserverError: '',\r\n\t\tdisplayMessage: '',\r\n\t}\r\n\tif (resp.failed) {\r\n\t\talertObj.serverError =\r\n\t\t\tcustomMessage ||\r\n\t\t\t'We are unable to process your request right now. Please try again later.'\r\n\t} else if (resp.error) {\r\n\t\talertObj.displayMessage = handleErrorMessage(resp.error.code)\r\n\t}\r\n\treturn alertObj\r\n}\r\n\r\nconst formatDate = (date, optionsObj) => {\r\n\tif (date) {\r\n\t\tlet d = new Date(date)\r\n\t\treturn d.toLocaleDateString('en-US', optionsObj)\r\n\t} else {\r\n\t\treturn null\r\n\t}\r\n}\r\n\r\nconst parseURL = (path = window.location.href) => {\r\n\tlet params = {}\r\n\tpath.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (_m, key, value) {\r\n\t\tparams[key] = value === 'null' ? null : value\r\n\t})\r\n\tparams.token = decodeURIComponent(params.token)\r\n\tparams.code = decodeURIComponent(params.code)\r\n\treturn params\r\n}\r\n\r\nconst intToCurrency = new Intl.NumberFormat('en-US', {\r\n\tstyle: 'currency',\r\n\tcurrency: 'USD',\r\n\tminimumFractionDigits: 0,\r\n\r\n\t// intToCurrency.format(1000) // \"$1,000.00\"\r\n})\r\n\r\nconst numberWithCommas = num => {\r\n\tif (typeof num === 'number') {\r\n\t\treturn num.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\r\n\t} else {\r\n\t\treturn 'missing data'\r\n\t}\r\n}\r\n\r\nconst capitalize = word => word.charAt(0).toUpperCase() + word.slice(1)\r\n\r\nconst compareObjStrings = (a, b, order = 'asc') => {\r\n\tif (order === 'asc') {\r\n\t\treturn a.value > b.value ? -1 : a.value < b.value ? 1 : 0\r\n\t} else {\r\n\t\treturn a.value < b.value ? -1 : a.value > b.value ? 1 : 0\r\n\t}\r\n}\r\n\r\nconst getCurrentDate = format => {\r\n\tconst currentDate = new Date()\r\n\tconst months = [\r\n\t\t'January',\r\n\t\t'February',\r\n\t\t'March',\r\n\t\t'April',\r\n\t\t'May',\r\n\t\t'June',\r\n\t\t'July',\r\n\t\t'August',\r\n\t\t'September',\r\n\t\t'October',\r\n\t\t'November',\r\n\t\t'December',\r\n\t]\r\n\tconst days = [\r\n\t\t'Sunday',\r\n\t\t'Monday',\r\n\t\t'Tuesday',\r\n\t\t'Wednesday',\r\n\t\t'Thursday',\r\n\t\t'Friday',\r\n\t\t'Saturday',\r\n\t]\r\n\r\n\tswitch (format) {\r\n\t\tcase 'yyyy':\r\n\t\t\treturn currentDate.getFullYear()\r\n\t\tcase 'M':\r\n\t\t\treturn months[currentDate.getMonth()]\r\n\t\tcase 'm':\r\n\t\t\tlet m = (currentDate.getMonth() + 1).toString()\r\n\t\t\treturn m.length === 1 ? `0${m}` : m\r\n\t\tcase 'd':\r\n\t\t\treturn currentDate.getDate()\r\n\t\tcase 'dd':\r\n\t\t\tlet day = currentDate.getDate().toString()\r\n\t\t\treturn day.length === 1 ? `0${day}` : day\r\n\t\tcase 'D':\r\n\t\t\treturn days[currentDate.getDay()]\r\n\t\tcase 'yyyymmdd':\r\n\t\t\tlet month = currentDate.getMonth()\r\n\t\t\tlet monthString =\r\n\t\t\t\tmonth < 9 ? '0' + (month + 1).toString() : (month + 1).toString()\r\n\t\t\tlet date = currentDate.getDate()\r\n\t\t\tlet dateString = date < 9 ? '0' + date.toString() : date.toString()\r\n\t\t\treturn currentDate.getFullYear() + monthString + dateString\r\n\t\tdefault:\r\n\t\t\treturn currentDate.toLocaleDateString('en-US', {\r\n\t\t\t\tyear: 'numeric',\r\n\t\t\t\tday: '2-digit',\r\n\t\t\t\tmonth: '2-digit',\r\n\t\t\t})\r\n\t}\r\n}\r\n\r\nconst getExtensionFromType = type => {\r\n\tswitch (type) {\r\n\t\tcase 'application/pdf':\r\n\t\t\treturn 'pdf'\r\n\t\tcase 'image/jpeg':\r\n\t\t\treturn 'jpg'\r\n\t\tcase 'image/png':\r\n\t\t\treturn 'png'\r\n\t\tcase 'text/plain':\r\n\t\t\treturn 'txt'\r\n\t\tcase 'text/csv':\r\n\t\t\treturn 'csv'\r\n\t\tcase 'text/html':\r\n\t\t\treturn 'html'\r\n\t\tdefault:\r\n\t\t\treturn 'csv'\r\n\t}\r\n}\r\n\r\nconst formatFileSize = size => {\r\n\tif (size < 1024) return size + ' bytes'\r\n\telse if (size > 1024 && size < 1048576)\r\n\t\treturn (size / 1024).toFixed(1) + ' KB'\r\n\telse return (size / 1048576).toFixed(1) + ' MB'\r\n}\r\n\r\nconst states = [\r\n\t{ value: 'AL', label: 'Alabama' },\r\n\t{ value: 'AK', label: 'Alaska' },\r\n\t{ value: 'AZ', label: 'Arizona' },\r\n\t{ value: 'AR', label: 'Arkansas' },\r\n\t{ value: 'CA', label: 'California' },\r\n\t{ value: 'CO', label: 'Colorado' },\r\n\t{ value: 'CT', label: 'Connecticut' },\r\n\t{ value: 'DE', label: 'Delaware' },\r\n\t{ value: 'FL', label: 'Florida' },\r\n\t{ value: 'GA', label: 'Georgia' },\r\n\t{ value: 'HI', label: 'Hawaii' },\r\n\t{ value: 'ID', label: 'Idaho' },\r\n\t{ value: 'IL', label: 'Illinois' },\r\n\t{ value: 'IN', label: 'Indiana' },\r\n\t{ value: 'IA', label: 'Iowa' },\r\n\t{ value: 'KS', label: 'Kansas' },\r\n\t{ value: 'KY', label: 'Kentucky' },\r\n\t{ value: 'LA', label: 'Louisiana' },\r\n\t{ value: 'ME', label: 'Maine' },\r\n\t{ value: 'MD', label: 'Maryland' },\r\n\t{ value: 'MA', label: 'Massachusetts' },\r\n\t{ value: 'MI', label: 'Michigan' },\r\n\t{ value: 'MN', label: 'Minnesota' },\r\n\t{ value: 'MS', label: 'Missisippi' },\r\n\t{ value: 'MO', label: 'Missouri' },\r\n\t{ value: 'MT', label: 'Montana' },\r\n\t{ value: 'NE', label: 'Nebraska' },\r\n\t{ value: 'NV', label: 'Nevada' },\r\n\t{ value: 'NH', label: 'New Hampshire' },\r\n\t{ value: 'NJ', label: 'New Jersey' },\r\n\t{ value: 'NM', label: 'New Mexico' },\r\n\t{ value: 'NY', label: 'New York' },\r\n\t{ value: 'NC', label: 'North Carolina' },\r\n\t{ value: 'ND', label: 'North Dakota' },\r\n\t{ value: 'OH', label: 'Ohio' },\r\n\t{ value: 'OK', label: 'Oklahoma' },\r\n\t{ value: 'OR', label: 'Oregon' },\r\n\t{ value: 'PA', label: 'Pennsylvania' },\r\n\t{ value: 'RI', label: 'Rhode Island' },\r\n\t{ value: 'SC', label: 'South Carolina' },\r\n\t{ value: 'SD', label: 'South Dakota' },\r\n\t{ value: 'TN', label: 'Tennessee' },\r\n\t{ value: 'TX', label: 'Texas' },\r\n\t{ value: 'UT', label: 'Utah' },\r\n\t{ value: 'VT', label: 'Vermont' },\r\n\t{ value: 'WA', label: 'Washington' },\r\n\t{ value: 'WV', label: 'West Virginia' },\r\n\t{ value: 'WI', label: 'Wisconsin' },\r\n\t{ value: 'WY', label: 'Wyoming' },\r\n\t{ value: 'DC', label: 'District of Columbia' },\r\n\t{ value: 'AS', label: 'American Samoa' },\r\n\t{ value: 'GU', label: 'Guam' },\r\n\t{ value: 'MP', label: 'Northern Mariana Islands' },\r\n\t{ value: 'PR', label: 'Puerto Rico' },\r\n\t{ value: 'VI', label: 'Virgin Islands' },\r\n]\r\n\r\nconst groupBy = (dataArray, property, options = { removeProperty: true }) => {\r\n\treturn dataArray.reduce((acc, obj) => {\r\n\t\tlet key = obj[property]\r\n\t\tif (!acc[key]) {\r\n\t\t\tacc[key] = []\r\n\t\t}\r\n\t\tif (options.removeProperty === false) {\r\n\t\t\tlet { period, ...rest } = obj\r\n\t\t\tacc[key].push({ ...rest })\r\n\t\t}\r\n\t\tfor (let param in obj) {\r\n\t\t\tif (obj[param] === key) {\r\n\t\t\t\tdelete obj[param]\r\n\t\t\t}\r\n\t\t}\r\n\t\tlet { period, ...rest } = obj\r\n\t\tacc[key].push({ ...rest })\r\n\t\treturn acc\r\n\t}, {})\r\n}\r\n\r\nconst getFirstDayOfYear = () => {\r\n\tlet d = new Date()\r\n\tlet year = d.getFullYear()\r\n\treturn `1/1/${year}`\r\n}\r\n\r\nconst getFirstOfPreviousYear = () => {\r\n\tlet d = new Date()\r\n\tlet previousYear = d.getFullYear() - 1\r\n\treturn `1/1/${previousYear}`\r\n}\r\n\r\nconst getLastOfPreviousYear = () => {\r\n\tlet d = new Date()\r\n\tlet previousYear = d.getFullYear() - 1\r\n\treturn `12/31/${previousYear}`\r\n}\r\n\r\nconst getFirstOfQuarter = () => {\r\n\tlet d = new Date()\r\n\tlet year = d.getFullYear()\r\n\tlet month = d.getMonth()\r\n\tif (month === 0 || month === 1 || month === 2) {\r\n\t\treturn `01/01/${year}`\r\n\t} else if (month === 3 || month === 4 || month === 5) {\r\n\t\treturn `04/01/${year}`\r\n\t} else if (month === 6 || month === 7 || month === 8) {\r\n\t\treturn `07/01/${year}`\r\n\t} else {\r\n\t\treturn `10/01/${year}`\r\n\t}\r\n}\r\nconst getLastOfQuarter = () => {\r\n\tlet d = new Date()\r\n\tlet year = d.getFullYear()\r\n\tlet month = d.getMonth()\r\n\tif (month === 0 || month === 1 || month === 2) {\r\n\t\treturn `03/31/${year}`\r\n\t} else if (month === 3 || month === 4 || month === 5) {\r\n\t\treturn `06/30/${year}`\r\n\t} else if (month === 6 || month === 7 || month === 8) {\r\n\t\treturn `09/30/${year}`\r\n\t} else {\r\n\t\treturn `12/31/${year}`\r\n\t}\r\n}\r\n\r\nconst getFirstOfPreviousQuarter = () => {\r\n\tlet d = new Date()\r\n\tlet year = d.getFullYear()\r\n\tlet previousYear = d.getFullYear() - 1\r\n\tlet month = d.getMonth()\r\n\tif (month === 0 || month === 1 || month === 2) {\r\n\t\treturn `10/01/${previousYear}`\r\n\t} else if (month === 3 || month === 4 || month === 5) {\r\n\t\treturn `01/01/${year}`\r\n\t} else if (month === 6 || month === 7 || month === 8) {\r\n\t\treturn `04/01/${year}`\r\n\t} else {\r\n\t\treturn `07/01/${year}`\r\n\t}\r\n}\r\n\r\nconst getLastOfPreviousQuarter = () => {\r\n\tlet d = new Date()\r\n\tlet year = d.getFullYear()\r\n\tlet previousYear = d.getFullYear() - 1\r\n\tlet month = d.getMonth()\r\n\tif (month === 0 || month === 1 || month === 2) {\r\n\t\treturn `12/31/${previousYear}`\r\n\t} else if (month === 3 || month === 4 || month === 5) {\r\n\t\treturn `03/30/${year}`\r\n\t} else if (month === 6 || month === 7 || month === 8) {\r\n\t\treturn `07/30/${year}`\r\n\t} else {\r\n\t\treturn `10/31/${year}`\r\n\t}\r\n}\r\n\r\nconst getTrailing6Months = () => {\r\n\tlet sixMonthDate = new Date(\r\n\t\tnew Date().getFullYear(),\r\n\t\tnew Date().getMonth() - 6,\r\n\t\tnew Date().getDate()\r\n\t)\r\n\treturn sixMonthDate.toLocaleDateString()\r\n}\r\n\r\nconst getTrailing12Months = () => {\r\n\tlet twelveMonthDate = new Date(\r\n\t\tnew Date().getFullYear(),\r\n\t\tnew Date().getMonth() - 12,\r\n\t\tnew Date().getDate()\r\n\t)\r\n\treturn twelveMonthDate.toLocaleDateString()\r\n}\r\n\r\nexport {\r\n\tappendClassName,\r\n\tcapitalize,\r\n\tnewCheckForErrors,\r\n\tcompareObjStrings,\r\n\tconvertToPercent,\r\n\tformatDate,\r\n\tformatData,\r\n\tformatFileSize,\r\n\tgetCurrentDate,\r\n\tgetDarkThemeColor,\r\n\tgetExtensionFromType,\r\n\tgetLastWeekdayDate,\r\n\tgetYTD,\r\n\thandleErrorMessage,\r\n\tintToCurrency,\r\n\tisValidDateRange,\r\n\tnumberWithCommas,\r\n\tparseURL,\r\n\tsleep,\r\n\tstates,\r\n\tslugify,\r\n\tgroupBy,\r\n\tgetFirstDayOfYear,\r\n\tgetFirstOfPreviousYear,\r\n\tgetLastOfPreviousYear,\r\n\tgetFirstOfQuarter,\r\n\tgetLastOfQuarter,\r\n\tgetFirstOfPreviousQuarter,\r\n\tgetLastOfPreviousQuarter,\r\n\tgetTrailing6Months,\r\n\tgetTrailing12Months,\r\n}\r\n","import { useContext, useState, useEffect } from 'react'\r\nimport { navigate } from '@reach/router'\r\nimport { FetchServiceWithApi } from 'services/fetchService'\r\nimport { parseURL } from '../shared/utils'\r\nimport { create } from 'services/api-client'\r\n\r\n// import { AuthContext } from './AuthProvider'\r\nimport { AuthContext } from './legacyAuthentication/LegacyAuthProvider'\r\n\r\nexport function useAuth() {\r\n\tconst context = useContext(AuthContext)\r\n\tif (context === undefined) {\r\n\t\tthrow new Error(`useAuth must be used within a AuthProvider`)\r\n\t}\r\n\treturn context\r\n}\r\n\r\nexport function useAuthenticateUser() {\r\n\tconst authService = new FetchServiceWithApi('https://app.quantalytix.com')\r\n\tconst { checkForErrors, authSuccess, logout } = useAuth()\r\n\r\n\tconst legacyAuthenticateUser = async (email, password, loadingFn) => {\r\n\t\tloadingFn(true)\r\n\t\tlet enterpriseKey = localStorage.getItem('key')\r\n\t\tlet params = {\r\n\t\t\temail: email.toLowerCase(),\r\n\t\t\tpassword: password,\r\n\t\t\tenterpriseKey,\r\n\t\t}\r\n\t\tlet resp = await authService.post('/login', params)\r\n\t\tlet customMessage = \"I'm sorry! I am not able to log you in right now.\"\r\n\t\tlet successResp = checkForErrors(resp, customMessage)\r\n\t\tif (successResp) {\r\n\t\t\tauthSuccess(successResp)\r\n\t\t\tnavigate(`/${successResp.user.settings.homepath}`)\r\n\t\t} else {\r\n\t\t\tlogout()\r\n\t\t}\r\n\t\tloadingFn(false)\r\n\t}\r\n\treturn legacyAuthenticateUser\r\n}\r\n\r\nexport function useSendPasswordReset() {\r\n\tconst authService = new FetchServiceWithApi('https://app.quantalytix.com')\r\n\r\n\tconst { checkForErrors } = useAuth()\r\n\r\n\tconst sendPasswordReset = async email => {\r\n\t\tlet enterpriseKey = localStorage.getItem('key')\r\n\t\tlet resp = await authService.post('/login/recover', {\r\n\t\t\temail: email,\r\n\t\t\tenterpriseKey,\r\n\t\t})\r\n\t\tlet successResp = checkForErrors(resp)\r\n\t\tif (successResp) {\r\n\t\t\tnavigate('/password/email-sent')\r\n\t\t}\r\n\t}\r\n\treturn sendPasswordReset\r\n}\r\n\r\nexport function useEmailCheck() {\r\n\tconst authService = new FetchServiceWithApi('https://app.quantalytix.com')\r\n\r\n\tconst { setUserEmail, checkForErrors } = useAuth()\r\n\tconst [canSubmit, setCanSubmit] = useState(false)\r\n\r\n\tconst emailCheck = async email => {\r\n\t\tlet resp = await authService.post('/registration/check', {\r\n\t\t\temail: email.toLowerCase(),\r\n\t\t})\r\n\t\tlet successResp = checkForErrors(resp)\r\n\t\tif (successResp) {\r\n\t\t\tsetUserEmail(email)\r\n\t\t\tsetCanSubmit(true)\r\n\t\t} else {\r\n\t\t\tsetUserEmail('')\r\n\t\t\tsetCanSubmit(false)\r\n\t\t}\r\n\t}\r\n\treturn { emailCheck, canSubmit }\r\n}\r\n\r\nexport function useCheckToken() {\r\n\tconst authService = new FetchServiceWithApi('https://app.quantalytix.com')\r\n\r\n\tconst { setServerAlert } = useAuth()\r\n\r\n\tconst checkToken = async () => {\r\n\t\tlet body = parseURL()\r\n\t\tif (body.token !== 'undefined') {\r\n\t\t\tlet resp = await authService.post('/registration/confirm', body)\r\n\t\t\tif (resp.failed) {\r\n\t\t\t\tsetServerAlert()\r\n\t\t\t} else if (resp.error) {\r\n\t\t\t\tif (resp.error.code === 11) {\r\n\t\t\t\t\tnavigate('/login')\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnavigate('/verify/error')\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tnavigate('/verify/confirmed')\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn checkToken\r\n}\r\n\r\nexport function useResendVerification() {\r\n\tconst authService = new FetchServiceWithApi('https://app.quantalytix.com')\r\n\r\n\tconst { checkForErrors } = useAuth()\r\n\r\n\tconst resendVerification = async email => {\r\n\t\tlet key = localStorage.getItem('key')\r\n\t\tlet body = {\r\n\t\t\tuserType: key ? 'lender' : 'enterprise',\r\n\t\t\temail,\r\n\t\t}\r\n\t\tlet resp = await authService.post('/registration/resend', body)\r\n\t\tlet successResp = checkForErrors(resp)\r\n\t\tif (successResp) {\r\n\t\t\tnavigate('/register/email-sent')\r\n\t\t}\r\n\t}\r\n\r\n\treturn resendVerification\r\n}\r\n\r\nexport function useRegisterAccount() {\r\n\tconst authService = new FetchServiceWithApi('https://app.quantalytix.com')\r\n\r\n\tconst { checkForErrors, userEmail } = useAuth()\r\n\r\n\tconst registerAccount = async formInputs => {\r\n\t\tlet key = localStorage.getItem('key')\r\n\t\tlet body = {\r\n\t\t\t...formInputs,\r\n\t\t\temail: userEmail,\r\n\t\t\tuserType: key ? 'lender' : 'enterprise',\r\n\t\t\tenterpriseKey: key,\r\n\t\t}\r\n\t\tlet resp = await authService.post('/registration', body)\r\n\t\tlet successResp = checkForErrors(resp)\r\n\t\tif (successResp) {\r\n\t\t\tnavigate('email-sent')\r\n\t\t}\r\n\t}\r\n\treturn registerAccount\r\n}\r\n\r\nexport function useAuthorization(permissionString) {\r\n\tconst { userObj } = useAuth()\r\n\tconst [isAuthorized, setIsAuthorized] = useState(false)\r\n\r\n\tuseEffect(() => {\r\n\t\tif (userObj) {\r\n\t\t\tif (permissionString) {\r\n\t\t\t\tlet hasPermission = userObj.claims.find(p => p === permissionString)\r\n\t\t\t\tsetIsAuthorized(hasPermission ? true : false)\r\n\t\t\t}\r\n\t\t}\r\n\t}, [userObj])\r\n\r\n\treturn isAuthorized\r\n}\r\n\r\nexport function useLenderUser() {\r\n\tconst { userObj, lenderName } = useAuth()\r\n\r\n\treturn { portalLenderId: userObj.user.lenderId, companyName: lenderName }\r\n}\r\n\r\n// All of these should probably be replaced by useAuth()\r\nexport function useUserPermissions() {\r\n\tconst { userObj } = useAuth()\r\n\tconst [permissions, setPermissions] = useState(null)\r\n\r\n\tuseEffect(() => {\r\n\t\tif (userObj) {\r\n\t\t\tsetPermissions(userObj.permissions)\r\n\t\t}\r\n\t}, [userObj])\r\n\r\n\treturn permissions\r\n}\r\n\r\nexport function useAlerts() {\r\n\tconst { setAlertObj, alertObj } = useAuth()\r\n\r\n\treturn {\r\n\t\talertObj,\r\n\t\tserverError: alertObj.serverError,\r\n\t\tdisplayError: alertObj.displayError,\r\n\t\tsetAlertObj,\r\n\t}\r\n}\r\n\r\n// NEW HOOKS for Updated Authentication\r\n\r\n// export function useAuthenticateUser() {\r\n// \tconst { setIsLoading, authSuccess, logout, setAlerts } = useAuth()\r\n\r\n// \tconst authenticateUser = async e => {\r\n// \t\te.preventDefault()\r\n// \t\tsetIsLoading(true)\r\n// \t\tlet params = {\r\n// \t\t\temail: e.target.email.value.toLowerCase(),\r\n// \t\t\tpasswordHash: e.target.password.value,\r\n// \t\t}\r\n// \t\tcreate('/session', params).then(\r\n// \t\t\tsession => {\r\n// \t\t\t\tsetIsLoading(false)\r\n// \t\t\t\tauthSuccess(session)\r\n// \t\t\t\tnavigate(`/${session.user.settingsJson?.homepath || 'home'}`)\r\n// \t\t\t},\r\n// \t\t\terror => {\r\n// \t\t\t\tsetIsLoading(false)\r\n// \t\t\t\tlet customMessage = \"I'm sorry! I am not able to log you in right now.\"\r\n// \t\t\t\tsetAlerts(error, customMessage)\r\n// \t\t\t\tlogout()\r\n// \t\t\t}\r\n// \t\t)\r\n// \t}\r\n// \treturn authenticateUser\r\n// }\r\n","const menuArray = [\r\n\t{\r\n\t\tid: 1,\r\n\t\torder: 100,\r\n\t\tname: 'Scorecard',\r\n\t\tmoduleKey: 'Quantalytix.Scorecards',\r\n\t\titems: [\r\n\t\t\t{\r\n\t\t\t\tid: 1,\r\n\t\t\t\tname: 'Lender Scorecard',\r\n\t\t\t\troute: '/scorecard/lender',\r\n\t\t\t\ticon: 'icon-address-card-regular',\r\n\t\t\t\torder: 100,\r\n\t\t\t\tpermission: {\r\n\t\t\t\t\tenabled: 'scorecard.enabled',\r\n\t\t\t\t\tvisible: 'scorecard.menuItem.visible',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: 2,\r\n\t\t\t\tname: 'Portfolio',\r\n\t\t\t\troute: '/scorecard/portfolio',\r\n\t\t\t\ticon: 'icon-folder-open-solid',\r\n\t\t\t\torder: 200,\r\n\t\t\t\tpermission: {\r\n\t\t\t\t\tenabled: 'portfolio.enabled',\r\n\t\t\t\t\tvisible: 'portfolio.menuItem.visible',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: 3,\r\n\t\t\t\tname: 'Production',\r\n\t\t\t\troute: '/scorecard/production',\r\n\t\t\t\ticon: 'icon-trophy1',\r\n\t\t\t\torder: 300,\r\n\t\t\t\tpermission: {\r\n\t\t\t\t\tenabled: 'production.enabled',\r\n\t\t\t\t\tvisible: 'production.menuItem.visible',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: 4,\r\n\t\t\t\tname: 'Audit',\r\n\t\t\t\troute: '/scorecard/audit',\r\n\t\t\t\ticon: 'icon-clipboard1',\r\n\t\t\t\torder: 400,\r\n\t\t\t\tpermission: {\r\n\t\t\t\t\tenabled: 'audit.enabled',\r\n\t\t\t\t\tvisible: 'audit.menuItem.visible',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\tid: 2,\r\n\t\torder: 900,\r\n\t\tname: 'Administration',\r\n\t\tmoduleKey: 'Quantalytix.Lender.Admin',\r\n\t\tpermission: {\r\n\t\t\tenabled: 'admin',\r\n\t\t\tvisible: 'lender.admin.menuItem.visible',\r\n\t\t},\r\n\t\titems: [\r\n\t\t\t{\r\n\t\t\t\tid: 1,\r\n\t\t\t\tname: 'Manage Users',\r\n\t\t\t\troute: '/portal/admin',\r\n\t\t\t\ticon: 'icon-address-card-regular',\r\n\t\t\t\torder: 100,\r\n\t\t\t\tpermission: {\r\n\t\t\t\t\tenabled: 'admin',\r\n\t\t\t\t\tvisible: 'lender.admin.menuItem.visible',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\tid: 3,\r\n\t\torder: 920,\r\n\t\tname: 'System Admin',\r\n\t\tmoduleKey: 'Quantalytix.System.Admin',\r\n\t\tpermission: {\r\n\t\t\tenabled: 'system.admin.enabled',\r\n\t\t\tvisible: 'system.admin.menuItem.visible',\r\n\t\t},\r\n\t\titems: [\r\n\t\t\t{\r\n\t\t\t\tid: 1,\r\n\t\t\t\tname: 'App Version',\r\n\t\t\t\troute: '/system-admin/app',\r\n\t\t\t\ticon: 'icon-address-card-regular',\r\n\t\t\t\torder: 100,\r\n\t\t\t\tpermission: {\r\n\t\t\t\t\tenabled: 'system.admin.enabled',\r\n\t\t\t\t\tvisible: 'system.admin.menuItem.visible',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: 2,\r\n\t\t\t\tname: 'Enterprises',\r\n\t\t\t\troute: '/system-admin/enterprises',\r\n\t\t\t\ticon: 'icon-address-card-regular',\r\n\t\t\t\torder: 200,\r\n\t\t\t\tpermission: {\r\n\t\t\t\t\tenabled: 'system.admin.enabled',\r\n\t\t\t\t\tvisible: 'system.admin.menuItem.visible',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: 3,\r\n\t\t\t\tname: 'Modules',\r\n\t\t\t\troute: '/system-admin/modules',\r\n\t\t\t\ticon: 'icon-address-card-regular',\r\n\t\t\t\torder: 300,\r\n\t\t\t\tpermission: {\r\n\t\t\t\t\tenabled: 'system.admin.enabled',\r\n\t\t\t\t\tvisible: 'system.admin.menuItem.visible',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: 4,\r\n\t\t\t\tname: 'Data Transfer Log',\r\n\t\t\t\troute: '/system-admin/data-transfer-log',\r\n\t\t\t\ticon: 'icon-address-card-regular',\r\n\t\t\t\torder: 400,\r\n\t\t\t\tpermission: {\r\n\t\t\t\t\tenabled: 'system.admin.enabled',\r\n\t\t\t\t\tvisible: 'system.admin.menuItem.visible',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: 5,\r\n\t\t\t\tname: 'Data Commands',\r\n\t\t\t\troute: '/system-admin/data-commands',\r\n\t\t\t\ticon: 'icon-address-card-regular',\r\n\t\t\t\torder: 500,\r\n\t\t\t\tpermission: {\r\n\t\t\t\t\tenabled: 'system.admin.enabled',\r\n\t\t\t\t\tvisible: 'system.admin.menuItem.visible',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: 6,\r\n\t\t\t\tname: 'Domains',\r\n\t\t\t\troute: '/system-admin/domains',\r\n\t\t\t\ticon: 'icon-address-card-regular',\r\n\t\t\t\torder: 600,\r\n\t\t\t\tpermission: {\r\n\t\t\t\t\tenabled: 'system.admin.enabled',\r\n\t\t\t\t\tvisible: 'system.admin.menuItem.visible',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: 7,\r\n\t\t\t\tname: 'Keys',\r\n\t\t\t\troute: '/system-admin/keys',\r\n\t\t\t\ticon: 'icon-address-card-regular',\r\n\t\t\t\torder: 700,\r\n\t\t\t\tpermission: {\r\n\t\t\t\t\tenabled: 'system.admin.enabled',\r\n\t\t\t\t\tvisible: 'system.admin.menuItem.visible',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: 8,\r\n\t\t\t\tname: 'Subscriptions',\r\n\t\t\t\troute: '/system-admin/subscriptions',\r\n\t\t\t\ticon: 'icon-address-card-regular',\r\n\t\t\t\torder: 800,\r\n\t\t\t\tpermission: {\r\n\t\t\t\t\tenabled: 'system.admin.enabled',\r\n\t\t\t\t\tvisible: 'system.admin.menuItem.visible',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: 9,\r\n\t\t\t\tname: 'Users',\r\n\t\t\t\troute: '/system-admin/users',\r\n\t\t\t\ticon: 'icon-address-card-regular',\r\n\t\t\t\torder: 900,\r\n\t\t\t\tpermission: {\r\n\t\t\t\t\tenabled: 'system.admin.enabled',\r\n\t\t\t\t\tvisible: 'system.admin.menuItem.visible',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: 10,\r\n\t\t\t\tname: 'Emails',\r\n\t\t\t\troute: '/system-admin/emails',\r\n\t\t\t\ticon: 'icon-address-card-regular',\r\n\t\t\t\torder: 1000,\r\n\t\t\t\tpermission: {\r\n\t\t\t\t\tenabled: 'system.admin.enabled',\r\n\t\t\t\t\tvisible: 'system.admin.menuItem.visible',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\tid: 4,\r\n\t\torder: 910,\r\n\t\tname: 'Administration',\r\n\t\tmoduleKey: 'Quantalytix.Enterprise.Admin',\r\n\t\tpermission: {\r\n\t\t\tenabled: 'enterprise.admin.enabled',\r\n\t\t\tvisible: 'enterprise.admin.menuItem.visible',\r\n\t\t},\r\n\t\titems: [\r\n\t\t\t{\r\n\t\t\t\tid: 1,\r\n\t\t\t\tname: 'Lender Accounts',\r\n\t\t\t\troute: '/enterprise/admin/lender-accounts',\r\n\t\t\t\ticon: 'icon-address-card-regular',\r\n\t\t\t\torder: 100,\r\n\t\t\t\tpermission: {\r\n\t\t\t\t\tenabled: 'enterprise.admin.enabled',\r\n\t\t\t\t\tvisible: 'enterprise.admin.menuItem.visible',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\tid: 5,\r\n\t\torder: 200,\r\n\t\tname: 'Pipeline',\r\n\t\tmoduleKey: 'Quantalytix.Pipeline',\r\n\t\tpermission: {\r\n\t\t\tenabled: 'pipeline.enabled',\r\n\t\t\tvisible: 'pipeline.menuItem.visible',\r\n\t\t},\r\n\t\titems: [\r\n\t\t\t{\r\n\t\t\t\tid: 1,\r\n\t\t\t\tname: 'Pipeline Dashboard',\r\n\t\t\t\troute: '/pipeline/dashboard',\r\n\t\t\t\ticon: 'icon-address-card-regular',\r\n\t\t\t\torder: 100,\r\n\t\t\t\tpermission: {\r\n\t\t\t\t\tenabled: 'pipeline.enabled',\r\n\t\t\t\t\tvisible: 'pipeline.menuItem.visible',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\tid: 6,\r\n\t\torder: 300,\r\n\t\tname: 'Reporting',\r\n\t\tmoduleKey: 'Quantalytix.Reporting',\r\n\t\tpermission: {\r\n\t\t\tenabled: 'reporting.enabled',\r\n\t\t\tvisible: 'reporting.menuItem.visible',\r\n\t\t},\r\n\t\titems: [\r\n\t\t\t{\r\n\t\t\t\tid: 1,\r\n\t\t\t\tname: 'Settlement Files',\r\n\t\t\t\troute: '/reporting/settlement',\r\n\t\t\t\ticon: 'icon-address-card-regular',\r\n\t\t\t\torder: 100,\r\n\t\t\t\tpermission: {\r\n\t\t\t\t\tenabled: 'settlement.enabled',\r\n\t\t\t\t\tvisible: 'settlement.menuItem.visible',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: 2,\r\n\t\t\t\tname: 'VirPack Reporting',\r\n\t\t\t\troute: '/reporting/virpack',\r\n\t\t\t\tpermission: {\r\n\t\t\t\t\tenabled: 'virpack.enabled',\r\n\t\t\t\t\tvisible: 'virpack.menuItem.visible',\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\tid: 10,\r\n\t\torder: 400,\r\n\t\tname: 'ETL',\r\n\t\tmoduleKey: 'Quantalytix.Etl',\r\n\t\titems: [\r\n\t\t\t{\r\n\t\t\t\tid: 1,\r\n\t\t\t\tname: 'Data Connections',\r\n\t\t\t\troute: '/etl/connections',\r\n\t\t\t\ticon: '',\r\n\t\t\t\torder: 100,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: 2,\r\n\t\t\t\tname: 'Data Tables',\r\n\t\t\t\troute: '/etl/datatables',\r\n\t\t\t\ticon: '',\r\n\t\t\t\torder: 200,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: 3,\r\n\t\t\t\tname: 'Mappings',\r\n\t\t\t\troute: '/etl/mappings',\r\n\t\t\t\ticon: '',\r\n\t\t\t\torder: 300,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: 4,\r\n\t\t\t\tname: 'Transformations',\r\n\t\t\t\troute: '/etl/transformations',\r\n\t\t\t\ticon: '',\r\n\t\t\t\torder: 400,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: 5,\r\n\t\t\t\tname: 'Quality Assurances',\r\n\t\t\t\troute: '/etl/qa',\r\n\t\t\t\ticon: '',\r\n\t\t\t\torder: 500,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: 6,\r\n\t\t\t\tname: 'Load Routines',\r\n\t\t\t\troute: '/etl/load',\r\n\t\t\t\ticon: '',\r\n\t\t\t\torder: 600,\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\tid: 11,\r\n\t\torder: 500,\r\n\t\tname: 'Loan Portfolio Monitoring',\r\n\t\tmoduleKey: 'Quantalytix.Lpm',\r\n\t\t// permission: {\r\n\t\t// \tenabled: 'lpm.enabled',\r\n\t\t// \tvisible: 'lpm.visible',\r\n\t\t// },\r\n\t\titems: [\r\n\t\t\t{\r\n\t\t\t\tid: 1,\r\n\t\t\t\tname: 'Delinquency Reporting',\r\n\t\t\t\troute: '/lpm/delinquencies',\r\n\t\t\t\t// permission: {\r\n\t\t\t\t// \tenabled: 'delinquency.enabled',\r\n\t\t\t\t// \tvisible: 'delinquency.menuItem.visible',\r\n\t\t\t\t// },\r\n\t\t\t},\r\n\t\t],\r\n\t},\r\n]\r\n\r\nexport default menuArray\r\n","import React, { useState, useEffect } from 'react'\r\nimport { navigate } from '@reach/router'\r\nimport { useAuth } from '../authentication/AuthHooks'\r\nimport menuArray from './menuObj'\r\n\r\nconst NavContext = React.createContext()\r\n\r\nexport default function NavigationProvider({ children, location }) {\r\n\tconst { userObj } = useAuth()\r\n\tconst [filteredModules, setFilteredModules] = useState({})\r\n\tconst [moduleKeys, setModuleKeys] = useState([])\r\n\tconst [moduleSelected, setModuleSelected] = useState(null)\r\n\tconst [currentModule, setCurrentModule] = useState(null)\r\n\tconst [pageSelected, setPageSelected] = useState({})\r\n\tconst [isExpanded, setIsExpanded] = useState(false)\r\n\tconst [isOverlaid, setIsOverlaid] = useState(false)\r\n\r\n\tuseEffect(() => {\r\n\t\tif (userObj) {\r\n\t\t\t// let menuArray = userObj.menu\r\n\t\t\tlet filtered = filterModules(menuArray)\r\n\t\t\tlet keys = Object.keys(filtered)\r\n\t\t\tsetFilteredModules(filtered)\r\n\t\t\tsetModuleKeys(keys)\r\n\t\t}\r\n\t}, [userObj])\r\n\r\n\tuseEffect(() => {\r\n\t\tlet modules = Object.values(filteredModules)\r\n\t\tif (modules.length) {\r\n\t\t\tlet mSelected\r\n\t\t\tlet pSelected\r\n\t\t\tmodules.forEach(m => {\r\n\t\t\t\tif (m.items) {\r\n\t\t\t\t\tm.items.forEach(i => {\r\n\t\t\t\t\t\tif (location.pathname.includes(i.route)) {\r\n\t\t\t\t\t\t\tmSelected = m\r\n\t\t\t\t\t\t\tpSelected = i\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\tsetCurrentModule(mSelected)\r\n\t\t\tsetPageSelected(pSelected)\r\n\t\t\tif (!moduleSelected) {\r\n\t\t\t\tsetModuleSelected(currentModule)\r\n\t\t\t}\r\n\t\t}\r\n\t}, [currentModule, filteredModules, location.pathname, moduleSelected])\r\n\r\n\tconst isModuleEnabled = module => {\r\n\t\tif (module.permission) {\r\n\t\t\t// return if enabled or visible\r\n\t\t\t// moduleItem dropdown will handle if visible\r\n\t\t\tlet enabled = userObj.claims.includes(module.permission.enabled)\r\n\t\t\tlet visible = userObj.claims.includes(module.permission.visible)\r\n\t\t\treturn enabled || visible ? true : false\r\n\t\t}\r\n\t\treturn true\r\n\t}\r\n\r\n\tconst filterModules = menuArray => {\r\n\t\tlet filtered = {}\r\n\t\tmenuArray.forEach(module => {\r\n\t\t\tif (isModuleEnabled(module)) {\r\n\t\t\t\tlet subscriptions = userObj.subscriptions\r\n\t\t\t\tif (subscriptions.includes(module.moduleKey)) {\r\n\t\t\t\t\tfiltered[module.moduleKey] = module\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t\treturn filtered\r\n\t}\r\n\r\n\tconst handleExpanderClick = () => {\r\n\t\tif (isOverlaid) {\r\n\t\t\tsetIsOverlaid(false)\r\n\t\t} else {\r\n\t\t\tsetModuleSelected(currentModule)\r\n\t\t}\r\n\t\tsetIsExpanded(!isExpanded)\r\n\t}\r\n\r\n\tconst handleOverlayShow = e => {\r\n\t\tlet key = e.currentTarget.id\r\n\t\tsetModuleSelected(filteredModules[key])\r\n\t\tif (!isExpanded) {\r\n\t\t\tif (!isOverlaid) {\r\n\t\t\t\tsetIsOverlaid(true)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst handleOverlayHide = e => {\r\n\t\tif (isOverlaid) {\r\n\t\t\tsetIsOverlaid(false)\r\n\t\t}\r\n\t}\r\n\r\n\tconst handleModuleIconClick = e => {\r\n\t\tlet key = e.currentTarget.id\r\n\t\tif (moduleSelected === filteredModules[key]) {\r\n\t\t\t// if user clicks on the icon of the module they are currently in\r\n\t\t\t// the sidebar will open if it is closed, and close if it is open\r\n\t\t\tif (!isExpanded || isOverlaid) {\r\n\t\t\t\tsetIsExpanded(true)\r\n\t\t\t} else {\r\n\t\t\t\tsetIsExpanded(false)\r\n\t\t\t}\r\n\t\t\t// if the user clicks on a different icon\r\n\t\t\t// the sidebar menu will open or remain open, showing the new module menu\r\n\t\t} else {\r\n\t\t\tsetModuleSelected(filteredModules[key])\r\n\t\t\tsetIsExpanded(true)\r\n\t\t}\r\n\t}\r\n\r\n\tconst handlePageClick = page => {\r\n\t\tsetPageSelected(page)\r\n\t\tnavigate(page.route)\r\n\t}\r\n\r\n\tconst context = {\r\n\t\tfilteredModules,\r\n\t\tmoduleKeys,\r\n\t\tmoduleSelected,\r\n\t\tpageSelected,\r\n\t\tisExpanded,\r\n\t\tsetIsExpanded,\r\n\t\tcurrentModule,\r\n\t\tsetCurrentModule,\r\n\t\t//\r\n\t\thandleExpanderClick,\r\n\t\thandleModuleIconClick,\r\n\t\thandlePageClick,\r\n\t\tisOverlaid,\r\n\t\tsetIsOverlaid,\r\n\t\thandleOverlayShow,\r\n\t\thandleOverlayHide,\r\n\t}\r\n\r\n\treturn {children}\r\n}\r\n\r\nexport function useNavigation() {\r\n\tlet context = React.useContext(NavContext)\r\n\tif (context === undefined) {\r\n\t\t// for MainContent logged out state\r\n\t\tcontext = {\r\n\t\t\tmoduleKeys: [],\r\n\t\t\tisExpanded: false,\r\n\t\t}\r\n\t\t// throw new Error(`useNavigation must be used within a NavigationProvider`)\r\n\t}\r\n\treturn context\r\n}\r\n","import { getExtensionFromType, getCurrentDate } from '../shared/utils'\r\n\r\nclass FetchServiceWithApi {\r\n\tconstructor(api) {\r\n\t\tlet env = document.location.href\r\n\t\tif (env.includes('local') || env.includes('dev')) {\r\n\t\t\tthis.baseApi = api + '/api'\r\n\t\t} else {\r\n\t\t\tthis.baseApi = '/api'\r\n\t\t}\r\n\t\tthis.fetchParams = {\r\n\t\t\tmethod: 'GET',\r\n\t\t\theaders: {\r\n\t\t\t\t'Content-type': 'application/json',\r\n\t\t\t},\r\n\t\t\tcredentials: 'include',\r\n\t\t}\r\n\t}\r\n\r\n\tauthorized(resp) {\r\n\t\treturn resp.status !== 401\r\n\t}\r\n\r\n\tpost(endpoint, body = null) {\r\n\t\tconst safePost = this.catchErrorFromServer(this.callToPost)\r\n\t\treturn safePost(endpoint, body)\r\n\t}\r\n\r\n\tget(endpoint) {\r\n\t\tconst safeGet = this.catchErrorFromServer(this.callToGet)\r\n\t\treturn safeGet(endpoint)\r\n\t}\r\n\r\n\tput(endpoint, body) {\r\n\t\tconst safePut = this.catchErrorFromServer(this.callToPut)\r\n\t\treturn safePut(endpoint, body)\r\n\t}\r\n\r\n\tdelete(endpoint, body) {\r\n\t\tconst safeDelete = this.catchErrorFromServer(this.callToDelete)\r\n\t\treturn safeDelete(endpoint, body)\r\n\t}\r\n\r\n\tupload(endpoint, body) {\r\n\t\tconst safeUpload = this.catchErrorFromServer(this.callToUpload)\r\n\t\treturn safeUpload(endpoint, body)\r\n\t}\r\n\r\n\texport(endpoint, body, fileName = 'export') {\r\n\t\tconst safeExport = this.catchErrorFromServer(this.callToExport)\r\n\t\treturn safeExport(endpoint, body, fileName)\r\n\t}\r\n\r\n\tdeleteCookieAndRedirectToLogin() {\r\n\t\tlet key = localStorage.getItem('key')\r\n\t\tlet path = document.location.href\r\n\t\tlet env = document.location.pathname\r\n\t\tlet domain = path.replace(env, '')\r\n\t\tthis.delete('/login')\r\n\t\tlet onLoginScreen = env.includes('login')\r\n\t\tif (!onLoginScreen) {\r\n\t\t\t// redirect to login screen\r\n\t\t\twindow.location.href = key ? `${domain}/portal/${key}` : `${domain}/login`\r\n\t\t}\r\n\t}\r\n\r\n\thandleHttpError(response) {\r\n\t\tif (!response.ok) {\r\n\t\t\tif (!this.authorized(response)) {\r\n\t\t\t\tthis.deleteCookieAndRedirectToLogin()\r\n\t\t\t}\r\n\t\t\tthrow Error(response.status)\r\n\t\t}\r\n\t\treturn response\r\n\t}\r\n\r\n\t// WILL ALSO CATCH PARSING ERRORS\r\n\tcatchErrorFromServer = fn => (...params) =>\r\n\t\tfn(...params).catch(error => {\r\n\t\t\tconst endpoint = params[0]\r\n\t\t\tconsole.error(`Unsuccessful call to ${endpoint}: ${error}`)\r\n\t\t\treturn { failed: error.message }\r\n\t\t})\r\n\r\n\tdetermineContentType = async resp => {\r\n\t\tconst contentType = resp.headers.get('content-type')\r\n\t\tif (contentType && contentType.includes('json')) {\r\n\t\t\tconst json = await resp.json()\r\n\t\t\treturn json\r\n\t\t} else {\r\n\t\t\treturn resp\r\n\t\t}\r\n\t}\r\n\r\n\tcallToGet = async endpoint => {\r\n\t\tconst resp = await fetch(this.baseApi + endpoint, this.fetchParams)\r\n\t\tthis.handleHttpError(resp)\r\n\t\tconsole.log(`successful call to GET ${endpoint}`)\r\n\t\treturn await this.determineContentType(resp)\r\n\t}\r\n\r\n\tcallToPost = async (endpoint, body) => {\r\n\t\tlet resp = await fetch(this.baseApi + endpoint, {\r\n\t\t\t...this.fetchParams,\r\n\t\t\tmethod: 'POST',\r\n\t\t\tbody: JSON.stringify(body),\r\n\t\t})\r\n\t\tthis.handleHttpError(resp)\r\n\t\tconsole.log(`successful call to POST ${endpoint}`)\r\n\t\treturn await this.determineContentType(resp)\r\n\t}\r\n\r\n\tcallToDelete = async (endpoint, body = null) => {\r\n\t\tconst resp = await fetch(this.baseApi + endpoint, {\r\n\t\t\t...this.fetchParams,\r\n\t\t\tmethod: 'DELETE',\r\n\t\t\tbody: JSON.stringify(body),\r\n\t\t})\r\n\t\tthis.handleHttpError(resp)\r\n\t\tconsole.log(`successful call to DELETE ${endpoint}`)\r\n\t\treturn await this.determineContentType(resp)\r\n\t}\r\n\r\n\tcallToPut = async (endpoint, body, params) => {\r\n\t\tconst resp = await fetch(this.baseApi + endpoint, {\r\n\t\t\t...this.fetchParams,\r\n\t\t\tmethod: 'PUT',\r\n\t\t\tbody: JSON.stringify(body),\r\n\t\t})\r\n\t\tthis.handleHttpError(resp)\r\n\t\tconsole.log(`successful call to PUT ${endpoint}`)\r\n\t\treturn await this.determineContentType(resp)\r\n\t}\r\n\r\n\tcallToUpload = async (endpoint, body) => {\r\n\t\tconst resp = await fetch(this.baseApi + endpoint, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\tcredentials: 'include',\r\n\t\t\tbody: body,\r\n\t\t})\r\n\t\tthis.handleHttpError(resp)\r\n\t\tconsole.log(`successful call to POST ${endpoint}`)\r\n\t\treturn await this.determineContentType(resp)\r\n\t}\r\n\r\n\tcallToExport = async (endpoint, body, fileName = 'export') => {\r\n\t\tlet resp = body ? await this.post(endpoint, body) : await this.get(endpoint)\r\n\t\tif (resp.ok) {\r\n\t\t\tlet blob = await resp.blob()\r\n\t\t\tlet extension = getExtensionFromType(blob.type)\r\n\t\t\tlet url = URL.createObjectURL(blob)\r\n\t\t\tlet dateString = getCurrentDate()\r\n\t\t\tif (extension === 'csv') {\r\n\t\t\t\tconst tempLink = document.createElement('a')\r\n\t\t\t\ttempLink.style.display = 'none'\r\n\t\t\t\ttempLink.href = url\r\n\t\t\t\ttempLink.setAttribute(\r\n\t\t\t\t\t'download',\r\n\t\t\t\t\t`${fileName}_${dateString}.${extension}`\r\n\t\t\t\t)\r\n\t\t\t\tdocument.body.appendChild(tempLink)\r\n\t\t\t\tif (window.Cypress) return // note: added this so the temp link isn't clicked and removed during test.\r\n\t\t\t\ttempLink.click()\r\n\t\t\t\tdocument.body.removeChild(tempLink)\r\n\t\t\t} else {\r\n\t\t\t\twindow.open(url, '_blank')\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resp\r\n\t}\r\n}\r\n\r\nconst FetchService = new FetchServiceWithApi(\r\n\t'https://dev-quantalytix.azurewebsites.net'\r\n)\r\nexport default FetchService\r\n\r\nexport { FetchServiceWithApi }\r\n","import { ApplicationInsights } from '@microsoft/applicationinsights-web'\r\n\r\n// const customPlugin = new CustomPlugin();\r\nconst appInsights = new ApplicationInsights({\r\n\tconfig: {\r\n\t\tinstrumentationKey: '0244b3a5-5a47-4e85-8aa3-3bca9432fa70',\r\n\t\t// extensions: [customPlugin],\r\n\t\t/* ...Other Configuration Options... */\r\n\t},\r\n})\r\n\r\nexport default appInsights\r\n","import React, { useState } from 'react'\r\nimport { themes, useTheme } from './shared/exports'\r\nimport { useAuth } from './authentication/AuthHooks'\r\nimport FetchService from './services/fetchService'\r\n\r\nconst ThemeContext = React.createContext()\r\n\r\nexport default function ThemeProvider({ children, isAuthenticated }) {\r\n\tconst { userObj, checkForErrors } = useAuth()\r\n\tconst [theme, setTheme] = useState('dark')\r\n\r\n\tuseTheme(themes[theme])\r\n\r\n\tReact.useEffect(() => {\r\n\t\tif (userObj?.user?.settingsJson?.theme) {\r\n\t\t\tsetTheme(userObj.user.settingsJson.theme)\r\n\t\t}\r\n\t\tif (!isAuthenticated) {\r\n\t\t\tsetTheme('dark')\r\n\t\t}\r\n\t}, [userObj, isAuthenticated])\r\n\r\n\tconst updateTheme = async theme => {\r\n\t\t// console.error('User theme cannot be updated. Endpoint no longer exists.')\r\n\t\t//endpoint no longer exists\r\n\t\tlet body = {\r\n\t\t\tsettings: { ...userObj.user.settingsJson, theme },\r\n\t\t}\r\n\t\tlet resp = await FetchService.put('/user/settings', body)\r\n\t\tconst success = checkForErrors(resp)\r\n\t\tif (success) {\r\n\t\t\tsetTheme(theme)\r\n\t\t}\r\n\t}\r\n\r\n\tconst context = {\r\n\t\ttheme,\r\n\t\tsetTheme,\r\n\t\tupdateTheme,\r\n\t}\r\n\r\n\treturn (\r\n\t\t{children}\r\n\t)\r\n}\r\n\r\nexport const useUpdateTheme = () => {\r\n\tconst context = React.useContext(ThemeContext)\r\n\tif (context === undefined) {\r\n\t\tthrow new Error(`useAuth must be used within a AuthProvider`)\r\n\t}\r\n\treturn context\r\n}\r\n","module.exports = __webpack_public_path__ + \"static/media/logo_black_bg.2e8f2cd3.svg\";","const addSubscriptions = (modules, isLender) => {\r\n\tlet subscriptions = modules.map(mod => mod.moduleKey)\r\n\tif (isLender) {\r\n\t\tsubscriptions.push('Quantalytix.Lender.Admin')\r\n\t}\r\n\treturn subscriptions\r\n}\r\n\r\nconst portUserObj = resp => {\r\n\tlet userObj = {\r\n\t\tsessionId: `${resp.userId}-${resp.lastName}-${Math.floor(\r\n\t\t\tMath.random() * 101\r\n\t\t)}`,\r\n\t\tuser: {\r\n\t\t\tuserGuid: resp.userId,\r\n\t\t\t// accountTypeId: null,\r\n\t\t\temailAddress: resp.user.email,\r\n\t\t\t// isEmailVerified: null,\r\n\t\t\t// isLocked: null,\r\n\t\t\tfirstName: resp.user.firstName,\r\n\t\t\tlastName: resp.user.lastName,\r\n\t\t\tfailedLoginCount: 0,\r\n\t\t\tsettingsJson: resp.settings,\r\n\t\t\t// lastLoginDate: null,\r\n\t\t},\r\n\t\tenterprise: {\r\n\t\t\tenterpriseId: resp.enterprise.enterpriseId,\r\n\t\t\tenterpriseGuid: resp.enterprise.enterpriseId,\r\n\t\t\tcompanyName: resp.enterprise.companyName,\r\n\t\t},\r\n\t\tsubscriptions: addSubscriptions(\r\n\t\t\tresp.enterprise.modules,\r\n\t\t\tresp.user.lenderId\r\n\t\t),\r\n\t\tclaims: resp.permissions,\r\n\t\tmenu: resp.environment,\r\n\t}\r\n\treturn userObj\r\n}\r\n\r\nexport { portUserObj }\r\n","import React, { useState, useEffect } from 'react'\r\nimport { navigate } from '@reach/router'\r\nimport { FetchServiceWithApi } from 'services/fetchService'\r\nimport { handleErrorMessage } from 'shared/utils'\r\nimport appInsights from 'AppInsightsConfig'\r\nimport { portUserObj } from 'authentication/authUtils'\r\n\r\nexport const AuthContext = React.createContext()\r\n\r\nexport default function LegacyAuthProvider({ children }) {\r\n\tconst [isAuthenticated, setIsAuthenticated] = useState(false)\r\n\tconst [isLoading, setIsLoading] = useState(true)\r\n\tconst [alertObj, setAlertObj] = useState({\r\n\t\tserverError: '',\r\n\t\tdisplayError: '',\r\n\t})\r\n\tconst [serverError, setServerError] = useState('')\r\n\tconst [userObj, setUserObj] = useState(null)\r\n\tconst [userEmail, setUserEmail] = useState('')\r\n\tconst [lenderName, setLenderName] = useState('')\r\n\tconst authService = new FetchServiceWithApi('https://app.quantalytix.com')\r\n\tconsole.log(alertObj.displayError)\r\n\r\n\tuseEffect(() => {\r\n\t\tconst legacyRefreshAuth = async () => {\r\n\t\t\tconst authService = new FetchServiceWithApi('https://app.quantalytix.com')\r\n\t\t\tawait setIsLoading(true)\r\n\r\n\t\t\tlet resp = await authService.get('/user/refresh')\r\n\t\t\tif (!resp.failed && !resp.error) {\r\n\t\t\t\tif (resp.user.lenderId) {\r\n\t\t\t\t\tlocalStorage.setItem('key', resp.enterprise.enterpriseKey)\r\n\t\t\t\t}\r\n\t\t\t\tawait legacyAuthSuccess(resp)\r\n\t\t\t}\r\n\t\t\tsetIsLoading(false)\r\n\t\t}\r\n\t\tlegacyRefreshAuth()\r\n\t}, [])\r\n\r\n\tuseEffect(() => {\r\n\t\tconst checkForErrors = (resp, customMessage) => {\r\n\t\t\tif (resp.failed) {\r\n\t\t\t\tsetServerAlert(customMessage)\r\n\t\t\t} else if (resp.error) {\r\n\t\t\t\tsetDisplayAlert(handleErrorMessage(resp.error.code))\r\n\t\t\t} else {\r\n\t\t\t\treturn resp\r\n\t\t\t}\r\n\t\t}\r\n\t\tconst getCompanyName = async () => {\r\n\t\t\tif (userObj.user.lenderId) {\r\n\t\t\t\tconst authService = new FetchServiceWithApi(\r\n\t\t\t\t\t'https://app.quantalytix.com'\r\n\t\t\t\t)\r\n\r\n\t\t\t\tlet resp = await authService.get('/lender/contact')\r\n\t\t\t\tlet successResp = checkForErrors(\r\n\t\t\t\t\tresp,\r\n\t\t\t\t\t'I am not able to access your information right now. Please refresh your browser.'\r\n\t\t\t\t)\r\n\t\t\t\tif (successResp) {\r\n\t\t\t\t\tsetLenderName(successResp.companyName)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (userObj) getCompanyName()\r\n\t}, [userObj])\r\n\r\n\tconst legacyAuthSuccess = resp => {\r\n\t\tappInsights.setAuthenticatedUserContext(\r\n\t\t\t{\r\n\t\t\t\tauthenticatedUserId: resp.user.userId,\r\n\t\t\t\taccountId: resp.enterprise.enterpriseKey,\r\n\t\t\t},\r\n\t\t\ttrue\r\n\t\t)\r\n\t\tsetIsAuthenticated(true)\r\n\t\tlet portedUserObj = portUserObj(resp)\r\n\t\tsetUserObj(portedUserObj)\r\n\t}\r\n\r\n\tconst checkForErrors = (resp, customMessage) => {\r\n\t\tif (resp.failed) {\r\n\t\t\tsetServerAlert(customMessage)\r\n\t\t} else if (resp.error) {\r\n\t\t\tlet errorMessage = handleErrorMessage(resp.error.code)\r\n\t\t\tsetDisplayAlert(errorMessage)\r\n\t\t} else {\r\n\t\t\treturn resp\r\n\t\t}\r\n\t}\r\n\r\n\tconst setAlerts = (errorResp, customMessage) => {\r\n\t\tif (errorResp.errors) {\r\n\t\t\tlet errorString = Object.values(errorResp.errors).join(' ')\r\n\t\t\tsetDisplayAlert(errorString)\r\n\t\t} else {\r\n\t\t\tsetServerAlert(customMessage)\r\n\t\t}\r\n\t}\r\n\r\n\tconst setDisplayAlert = message => {\r\n\t\tsetAlertObj({\r\n\t\t\tserverError: '',\r\n\t\t\tdisplayError: message,\r\n\t\t})\r\n\t}\r\n\r\n\tconst setServerAlert = (\r\n\t\tcustomMessage = 'We are unable to process your request right now. Please try again later. '\r\n\t) => {\r\n\t\tsetAlertObj({\r\n\t\t\tdisplayError: '',\r\n\t\t\tserverError: customMessage,\r\n\t\t})\r\n\t}\r\n\r\n\tconst legacyLogout = () => {\r\n\t\tlet key = localStorage.getItem('key')\r\n\t\tauthService.delete('/login')\r\n\t\tsetIsAuthenticated(false)\r\n\t\tnavigate(key ? `/portal/${key}` : '/login')\r\n\t\tsessionStorage.clear()\r\n\t\tappInsights.clearAuthenticatedUserContext()\r\n\t}\r\n\r\n\tconst resetPassword = async body => {\r\n\t\tlet resp = await authService.post('/login/reset', body)\r\n\t\tlet successResp = checkForErrors(resp)\r\n\t\tif (successResp) {\r\n\t\t\tnavigate('/password/changed')\r\n\t\t}\r\n\t}\r\n\r\n\tconst changePassword = async body => {\r\n\t\tlet resp = await authService.put('/user/password', body)\r\n\t\tlet successResp = checkForErrors(resp)\r\n\t\tif (successResp) {\r\n\t\t\treturn true\r\n\t\t} else {\r\n\t\t\treturn false\r\n\t\t}\r\n\t}\r\n\r\n\tconst context = {\r\n\t\tisAuthenticated,\r\n\t\tisLoading,\r\n\t\talertObj,\r\n\t\tuserObj,\r\n\t\tuserEmail,\r\n\t\tserverError,\r\n\t\tlenderName,\r\n\t\t// fn\r\n\t\tauthSuccess: legacyAuthSuccess,\r\n\t\tchangePassword,\r\n\t\tcheckForErrors,\r\n\t\tresetPassword,\r\n\t\tsetUserEmail,\r\n\t\tsetIsAuthenticated,\r\n\t\tsetServerError,\r\n\t\tsetAlertObj,\r\n\t\tsetServerAlert,\r\n\t\tsetDisplayAlert,\r\n\t\tsetIsLoading,\r\n\t\tlogout: legacyLogout,\r\n\t\tsetAlerts,\r\n\t}\r\n\r\n\treturn {children}\r\n}\r\n","module.exports = __webpack_public_path__ + \"static/media/icon_admin.1b992bf7.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_reporting.5e0c9f81.svg\";","import React from 'react'\r\nimport { useAuth } from './AuthHooks'\r\nimport { FullScreenLoading } from '../shared/exports'\r\n\r\nimport './auth-layout.scss'\r\n\r\nexport default function AuthLayout({ children }) {\r\n\tconst { isLoading } = useAuth()\r\n\r\n\tif (isLoading) {\r\n\t\treturn \r\n\t}\r\n\treturn (\r\n\t\t
\r\n\t\t\t
{children}
\r\n\t\t
\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport './pill.scss'\r\n\r\nconst Pill = ({ onCancel, label }) => {\r\n\treturn (\r\n\t\t
\r\n\t\t\t

{label}

\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default Pill\r\n","import React, { useState } from 'react'\r\nimport { TextInput } from '../exports'\r\nimport { useAsyncDebounce } from 'react-table'\r\nimport './GlobalTableFilter.scss'\r\n\r\nexport default function GlobalTableFilter({\r\n\tpreGlobalFilteredRows,\r\n\tglobalFilter,\r\n\tsetGlobalFilter,\r\n\tplaceholder,\r\n}) {\r\n\tconst count = preGlobalFilteredRows.length\r\n\tconst [value, setValue] = useState(globalFilter)\r\n\tconst onChange = useAsyncDebounce(value => {\r\n\t\tsetGlobalFilter(value || undefined)\r\n\t}, 200)\r\n\r\n\treturn (\r\n\t\t {\r\n\t\t\t\tsetValue(e.target.value)\r\n\t\t\t\tonChange(e.target.value)\r\n\t\t\t}}\r\n\t\t\tplaceholder={placeholder || `Search ${count} rows...`}\r\n\t\t/>\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport { TextInput } from '../exports'\r\nimport './column-table-filter.scss'\r\n\r\nexport const Filter = ({ column }) => {\r\n\treturn (\r\n\t\t
{column.canFilter && column.render('Filter')}
\r\n\t)\r\n}\r\n\r\nexport const DefaultColumnFilter = ({\r\n\tcolumn: {\r\n\t\tfilterValue,\r\n\t\tsetFilter,\r\n\t\tpreFilteredRows: { length },\r\n\t},\r\n}) => {\r\n\tlet sessionStorageUsed = sessionStorage.getItem('table page index')\r\n\tconst onInputChange = e => {\r\n\t\tif (sessionStorageUsed) {\r\n\t\t\tsetFilter(e.target.value || undefined)\r\n\t\t\tsessionStorage.clear('table page index')\r\n\t\t} else {\r\n\t\t\tsetFilter(e.target.value || undefined)\r\n\t\t}\r\n\t}\r\n\treturn (\r\n\t\t onInputChange(e)}\r\n\t\t\tplaceholder={`search ${length} items`}\r\n\t\t/>\r\n\t)\r\n}\r\n\r\nDefaultColumnFilter.defaultProps = {\r\n\tsessionStorageUsed: false,\r\n}\r\n","/* eslint-disable jsx-a11y/no-onchange */\r\nimport React from 'react'\r\nimport { Button, TextInput } from '../exports'\r\nimport './pagination.scss'\r\n\r\nexport default function Pagination({\r\n\tgotoPage,\r\n\tpreviousPage,\r\n\tnextPage,\r\n\tcanPreviousPage,\r\n\tcanNextPage,\r\n\tpageCount,\r\n\tpageIndex,\r\n\tpageSize,\r\n\tsetPageSize,\r\n\tpageOptions,\r\n}) {\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\tPage:\r\n\t\t\t\t{pageIndex + 1} of{' '}\r\n\t\t\t\t{pageOptions.length}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t
| Go to page:
\r\n\t\t\t\t {\r\n\t\t\t\t\t\tconst page = e.target.value ? Number(e.target.value) - 1 : 0\r\n\t\t\t\t\t\tgotoPage(page)\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t
{' '}\r\n\t\t\t {\r\n\t\t\t\t\tsetPageSize(Number(e.target.value))\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t{[10, 20, 30, 40, 50].map(pageSize => (\r\n\t\t\t\t\t\r\n\t\t\t\t))}\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n","import React, { useEffect, useMemo } from 'react'\r\nimport {\r\n\tuseTable,\r\n\tusePagination,\r\n\tuseSortBy,\r\n\tuseFilters,\r\n\tuseRowSelect,\r\n\tuseGlobalFilter,\r\n\tuseResizeColumns,\r\n\tuseFlexLayout,\r\n} from 'react-table'\r\nimport GlobalTableFilter from './GlobalTableFilter'\r\nimport { Filter, DefaultColumnFilter } from './ColumnTableFilter'\r\nimport { IndeterminateCheckbox } from '../exports'\r\nimport './q-table.scss'\r\nimport Pagination from './Pagination'\r\n\r\nexport default function QTable({\r\n\tdata,\r\n\tcolumns,\r\n\tstriped,\r\n\thighlight,\r\n\tclassName,\r\n\ttableClassName,\r\n\tdefaultStyle,\r\n\ttableFilterable,\r\n\tcolumnFilterable,\r\n\tonRowClick,\r\n\ttablePagination,\r\n\trowSelection,\r\n\ttableResizing,\r\n\tsetSelectedRows,\r\n\tinitialPageIndex,\r\n\tinitialPageSize,\r\n\tsessionStorageUsed,\r\n\t...props\r\n}) {\r\n\tconst generateClassName = () => {\r\n\t\tlet css = 'q-table'\r\n\t\tif (defaultStyle) css += ' default'\r\n\t\tif (striped) css += ' -striped'\r\n\t\tif (highlight) css += ' -highlight'\r\n\t\tif (tableClassName) css += ` ${tableClassName}`\r\n\t\treturn css\r\n\t}\r\n\r\n\tconst defaultColumn = useMemo(\r\n\t\t() => ({\r\n\t\t\t// Let's set up our default Filter UI\r\n\t\t\tFilter: DefaultColumnFilter,\r\n\t\t}),\r\n\t\t[]\r\n\t)\r\n\r\n\tconst {\r\n\t\tgetTableProps,\r\n\t\tgetTableBodyProps,\r\n\t\theaderGroups,\r\n\t\tpage,\r\n\t\tprepareRow,\r\n\t\tcanPreviousPage,\r\n\t\tcanNextPage,\r\n\t\tpageOptions,\r\n\t\tpageCount,\r\n\t\tgotoPage,\r\n\t\tnextPage,\r\n\t\tpreviousPage,\r\n\t\tsetPageSize,\r\n\t\tselectedFlatRows,\r\n\t\tpreGlobalFilteredRows,\r\n\t\tsetGlobalFilter,\r\n\t\tstate: { pageIndex, pageSize, selectedRowIds },\r\n\t} = useTable(\r\n\t\t{\r\n\t\t\tcolumns,\r\n\t\t\tdata,\r\n\t\t\tdefaultColumn,\r\n\t\t\tinitialState: {\r\n\t\t\t\tpageIndex: initialPageIndex || 0,\r\n\t\t\t\tpageSize: initialPageSize || 10,\r\n\t\t\t},\r\n\t\t\t// autoResetPage: false,\r\n\t\t\t// autoResetSortBy: false,\r\n\t\t},\r\n\t\tuseFilters,\r\n\t\tuseGlobalFilter,\r\n\t\tuseResizeColumns,\r\n\t\tuseFlexLayout,\r\n\t\tuseSortBy,\r\n\t\tusePagination,\r\n\t\tuseRowSelect,\r\n\t\thooks => {\r\n\t\t\tif (rowSelection) {\r\n\t\t\t\treturn hooks.allColumns.push(columns => [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\twidth: 50,\r\n\t\t\t\t\t\tid: 'selection',\r\n\t\t\t\t\t\tHeader: ({ getToggleAllPageRowsSelectedProps }) => (\r\n\t\t\t\t\t\t\t
e.stopPropagation()}>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\tCell: ({ row }) => (\r\n\t\t\t\t\t\t\t
e.stopPropagation()}>\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t},\r\n\t\t\t\t\t...columns,\r\n\t\t\t\t])\r\n\t\t\t}\r\n\t\t\thooks.useInstanceBeforeDimensions.push(({ headerGroups }) => {\r\n\t\t\t\t// fix the parent group of the selection button to not be resizable\r\n\t\t\t\tconst selectionGroupHeader = headerGroups[0].headers[0]\r\n\t\t\t\tselectionGroupHeader.canResize = rowSelection ? false : true\r\n\t\t\t})\r\n\t\t}\r\n\t)\r\n\r\n\tuseEffect(() => {\r\n\t\tif (rowSelection) {\r\n\t\t\tconst data = selectedFlatRows.map(d => d.original)\r\n\t\t\tsetSelectedRows(data)\r\n\t\t}\r\n\t}, [setSelectedRows, selectedRowIds, selectedFlatRows, rowSelection])\r\n\r\n\t//this is to track the page number and size the user selects\r\n\tuseEffect(() => {\r\n\t\tif (sessionStorageUsed) {\r\n\t\t\tsessionStorage.setItem('table page index', pageIndex)\r\n\t\t\tsessionStorage.setItem('table page size', pageSize)\r\n\t\t}\r\n\t}, [pageIndex, pageSize, sessionStorageUsed])\r\n\r\n\t// const handleOnRowClick = row => {\r\n\t// \tif (rowSelection) {\r\n\t// \t}\r\n\t// }\r\n\treturn (\r\n\t\t\r\n\t\t\t{tableFilterable ? (\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t) : null}\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{headerGroups.map(headerGroup => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{headerGroup.headers.map(column => (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t{column.render('Header')}\r\n\t\t\t\t\t\t\t\t\t\t{tableResizing\r\n\t\t\t\t\t\t\t\t\t\t\t? column.canResize && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t )\r\n\t\t\t\t\t\t\t\t\t\t\t: null}\r\n\t\t\t\t\t\t\t\t\t\t{sessionStorageUsed ? (\r\n\t\t\t\t\t\t\t\t\t\t\t sessionStorage.clear('table page index')}\r\n\t\t\t\t\t\t\t\t\t\t\t\tclassName='sorting-button'\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{column.isSorted\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? column.isSortedDesc\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? ' 🔽'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ' 🔼'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: ''}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{column.isSorted\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t? column.isSortedDesc\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? ' 🔽'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ' 🔼'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t: ''}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t))}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{page.map((row, i) => {\r\n\t\t\t\t\t\tprepareRow(row)\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t handleOnRowClick(row)}\r\n\t\t\t\t\t\t\t\tclassName='qtable-full-row'\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t{row.cells.map(cell => {\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{cell.render('Cell')}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t})}\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t{data.length ? null : (\r\n\t\t\t\t
No data to display
\r\n\t\t\t)}\r\n\t\t\t{tablePagination ? (\r\n\t\t\t\t\r\n\t\t\t) : null}\r\n\t\t\r\n\t)\r\n}\r\n\r\nQTable.defaultProps = {\r\n\tdefaultStyle: true,\r\n\tstriped: true,\r\n\ttableFilterable: true,\r\n\tcolumnFilterable: true,\r\n\ttablePagination: true,\r\n\trowSelection: true,\r\n\ttableResizing: true,\r\n\tsessionStorageUsed: false,\r\n}\r\n","module.exports = __webpack_public_path__ + \"static/media/BlueWhite_HousingAuthoritylogo.9903c7fb.svg\";","module.exports = __webpack_public_path__ + \"static/media/Half_White_ADFA-logo.ba6cdd9d.svg\";","module.exports = __webpack_public_path__ + \"static/media/Mississippi_FullWhite.88185dd9.svg\";","module.exports = __webpack_public_path__ + \"static/media/MissouriHousing_WhiteType-07.6ffde9aa.svg\";","module.exports = __webpack_public_path__ + \"static/media/NorthCarolina_TypeWhite.27d4271c.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo_black_bg.2e8f2cd3.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_scorecard.6807a46e.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_pipeline.18c92bc9.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/icon_module_etl.24a01c0f.svg\";","import { navigate } from '@reach/router'\r\nimport { getExtensionFromType } from 'shared/utils'\r\n\r\nconst devApiUrl = 'https://dev-quantalytix.azurewebsites.net/api'\r\n\r\nfunction client(\r\n\tendpoint,\r\n\tcustomURL = devApiUrl,\r\n\t{ body, ...customConfig } = {}\r\n) {\r\n\tconst apiUrl =\r\n\t\tprocess.env.NODE_ENV === 'development' || 'test' ? customURL : '/api'\r\n\tconst headers = { 'Content-Type': body ? 'application/json' : 'html/text' }\r\n\tconst config = {\r\n\t\tmethod: body ? 'POST' : 'GET',\r\n\t\t...customConfig,\r\n\t\theaders: {\r\n\t\t\t...headers,\r\n\t\t\t...customConfig.headers,\r\n\t\t},\r\n\t}\r\n\r\n\tif (body) {\r\n\t\tconfig.body = JSON.stringify(body)\r\n\t}\r\n\treturn window.fetch(`${apiUrl}${endpoint}`, config).then(async response => {\r\n\t\t// if (response.status === 401) {\r\n\t\t// \tnavigate('/login')\r\n\t\t// \treturn Promise.reject({ message: 'Please re-authenticate.' })\r\n\t\t// }\r\n\t\tconst text = await response.text()\r\n\t\ttry {\r\n\t\t\tconst data = await JSON.parse(text)\r\n\t\t\tif (response.ok) {\r\n\t\t\t\treturn data\r\n\t\t\t} else {\r\n\t\t\t\treturn Promise.reject(data)\r\n\t\t\t}\r\n\t\t} catch (parsingError) {\r\n\t\t\tif (response.ok) {\r\n\t\t\t\treturn text\r\n\t\t\t} else {\r\n\t\t\t\treturn Promise.reject(text)\r\n\t\t\t}\r\n\t\t}\r\n\t})\r\n}\r\n\r\nconst downloadOrOpenFile = (filename, extension, url) => {\r\n\tif (extension === 'csv') {\r\n\t\tconst tempLink = document.createElement('a')\r\n\t\ttempLink.style.display = 'none'\r\n\t\ttempLink.href = url\r\n\t\ttempLink.setAttribute('download', `${filename}.${extension}`)\r\n\t\tdocument.body.appendChild(tempLink)\r\n\t\tif (window.Cypress) return // note: added this so the temp link isn't clicked and removed during test.\r\n\t\ttempLink.click()\r\n\t\tdocument.body.removeChild(tempLink)\r\n\t} else {\r\n\t\twindow.open(url, '_blank')\r\n\t}\r\n}\r\n\r\nasync function exportServerData(\r\n\turl,\r\n\tfilename,\r\n\t{ body = null, ...customConfig } = {}\r\n) {\r\n\treturn window\r\n\t\t.fetch(url, { method: body ? 'POST' : 'GET', ...customConfig })\r\n\t\t.then(async response => {\r\n\t\t\tif (response.status === 401) {\r\n\t\t\t\tnavigate('/login')\r\n\t\t\t\treturn Promise.reject({ message: 'Please re-authenticate.' })\r\n\t\t\t}\r\n\t\t\tif (response.ok) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tlet blob = await response.blob()\r\n\t\t\t\t\tlet extension = getExtensionFromType(blob.type)\r\n\t\t\t\t\tlet url = URL.createObjectURL(blob)\r\n\t\t\t\t\tdownloadOrOpenFile(filename, extension, url)\r\n\t\t\t\t\tURL.revokeObjectURL(blob)\r\n\t\t\t\t\treturn { success: 'The call was successful' }\r\n\t\t\t\t} catch (error) {\r\n\t\t\t\t\treturn Promise.reject({\r\n\t\t\t\t\t\terror: error,\r\n\t\t\t\t\t\tmessage: 'There was an error downloading the file.',\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\treturn Promise.reject({\r\n\t\t\t\t\terror: 'server error',\r\n\t\t\t\t\tmessage: 'There was an error downloading the file.',\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t})\r\n}\r\n\r\nfunction query(endpoint, body) {\r\n\treturn client(`${endpoint}`, devApiUrl, {\r\n\t\tbody: body,\r\n\t})\r\n}\r\nfunction create(endpoint, body) {\r\n\treturn client(`${endpoint}`, devApiUrl, {\r\n\t\tbody: body,\r\n\t})\r\n}\r\nfunction get(endpoint) {\r\n\treturn client(`${endpoint}`, devApiUrl)\r\n}\r\nfunction update(endpoint, body) {\r\n\treturn client(`${endpoint}`, devApiUrl, {\r\n\t\tmethod: 'PUT',\r\n\t\tbody: body,\r\n\t})\r\n}\r\nfunction remove(endpoint) {\r\n\treturn client(`${endpoint}`, devApiUrl, { method: 'DELETE' })\r\n}\r\n\r\nfunction download(endpoint, filename, body) {\r\n\treturn exportServerData(endpoint + devApiUrl, filename, body)\r\n}\r\n\r\nexport {\r\n\texportServerData,\r\n\tdownload,\r\n\tcreate,\r\n\tget,\r\n\tremove,\r\n\tupdate,\r\n\tquery,\r\n\tclient,\r\n}\r\n","import React, { useEffect } from 'react'\r\n\r\nexport default function AppVersion() {\r\n\tconst version = '21.02.10'\r\n\r\n\tuseEffect(() => {\r\n\t\tconst checkVersion = async () => {\r\n\t\t\tlet userVersion = localStorage.getItem('version')\r\n\t\t\tif (!userVersion) {\r\n\t\t\t\tupdateAndRefresh(version)\r\n\t\t\t} else {\r\n\t\t\t\tif (userVersion !== version) {\r\n\t\t\t\t\tupdateAndRefresh(version)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tcheckVersion()\r\n\t\tsetInterval(checkVersion, 300000)\r\n\t\treturn function cleanup() {\r\n\t\t\tclearInterval()\r\n\t\t}\r\n\t}, [])\r\n\r\n\tconst updateAndRefresh = version => {\r\n\t\tlocalStorage.setItem('version', version)\r\n\t\twindow.location.reload()\r\n\t}\r\n\treturn
{localStorage.getItem('version')}
\r\n}\r\n","import React, { useState } from 'react'\r\nimport {\r\n\tDropdownMenu,\r\n\tToggle,\r\n\tPasswordBox,\r\n\tResultBox,\r\n\tButton,\r\n} from '../shared/exports'\r\nimport { useAuth, useAlerts } from '../authentication/AuthHooks'\r\nimport { useUpdateTheme } from '../ThemeProvider'\r\nimport AppVersion from 'AppVersion'\r\nimport qlogo from '../assets/images/logo_black_bg.svg'\r\nimport './q-header.scss'\r\n\r\nexport default function QHeader() {\r\n\tconst { isAuthenticated, logout, changePassword } = useAuth()\r\n\tconst { alertObj, setAlertObj, displayError } = useAlerts()\r\n\tconst { updateTheme, theme } = useUpdateTheme()\r\n\tconst [showPasswordModal, setShowPasswordModal] = useState(false)\r\n\tconst [passwordChangeSuccess, setPasswordChangeSuccess] = useState(false)\r\n\r\n\tconst onPasswordChange = async formInputs => {\r\n\t\tlet body = {\r\n\t\t\toldPassword: formInputs.oldPassword,\r\n\t\t\tnewPassword: formInputs.password,\r\n\t\t}\r\n\t\tlet success = await changePassword(body)\r\n\t\tif (success) {\r\n\t\t\tsetPasswordChangeSuccess(true)\r\n\t\t}\r\n\t}\r\n\r\n\tconst onPasswordModalClose = () => {\r\n\t\tsetShowPasswordModal(false)\r\n\t\tsetPasswordChangeSuccess(false)\r\n\t}\r\n\r\n\tconst userOptions = [\r\n\t\t{\r\n\t\t\tlabel: 'Logout',\r\n\t\t\tvalue: 'logout',\r\n\t\t\ticon: 'icon-logout',\r\n\t\t\tonClick: logout,\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: 'Change Password',\r\n\t\t\tvalue: 'changePassword',\r\n\t\t\ticon: 'icon-password',\r\n\t\t\tonClick: () => setShowPasswordModal(true),\r\n\t\t},\r\n\t]\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t{isAuthenticated && (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tupdateTheme(theme === 'dark' ? 'light' : 'dark')\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tdata-testid='theme_toggle'\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\twidth='65px'\r\n\t\t\t\t\t\tnoHoverEffect={true}\r\n\t\t\t\t\t\tkeepDarkTheme={true}\r\n\t\t\t\t\t\tcustomColors={{ background: 'var(--header-bg)' }}\r\n\t\t\t\t\t\tcustomStyles={{ menu: { width: 'fit-content', right: 0 } }}\r\n\t\t\t\t\t\toptions={userOptions}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t{showPasswordModal ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{passwordChangeSuccess ? (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\tClose\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tboxType='success'\r\n\t\t\t\t\t\t\t\t\theading='Password Changed!'\r\n\t\t\t\t\t\t\t\t\tbody='You will be able to use your new password the next time you log in.'\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t setShowPasswordModal(false)}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\tCancel\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\ttitle='Change Password'\r\n\t\t\t\t\t\t\t\t\tonSubmit={onPasswordChange}\r\n\t\t\t\t\t\t\t\t\talertMessage={displayError}\r\n\t\t\t\t\t\t\t\t\tresetAlert={() =>\r\n\t\t\t\t\t\t\t\t\t\tsetAlertObj({ ...alertObj, displayError: '' })\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\trequestPrevious={true}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t) : null}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t{isAuthenticated ? null : }\r\n\t\t\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport './sidebar-icon.scss'\r\n\r\nexport default function SidebarIcon({\r\n\tmodule,\r\n\tcurrentModule,\r\n\ticon,\r\n\tonClick,\r\n\t...otherProps\r\n}) {\r\n\treturn (\r\n\t\t\r\n\t\t\t{icon}\r\n\t\t\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport scorecard from '../assets/images/icon_scorecard.svg'\r\nimport pipeline from '../assets/images/icon_pipeline.svg'\r\nimport admin from '../assets/images/icon_admin.svg'\r\nimport dragon from '../assets/images/dragon.png'\r\nimport reporting from '../assets/images/icon_reporting.svg'\r\nimport etl from '../assets/images/icon_module_etl.svg'\r\n\r\nconst ScorecardModule = React.lazy(() => import('./scorecard/ScorecardModule'))\r\nconst PortalAdminModule = React.lazy(() =>\r\n\timport('./portal-admin/PortalAdminModule')\r\n)\r\nconst SystemAdminModule = React.lazy(() =>\r\n\timport('./system-admin/SystemAdminModule')\r\n)\r\nconst PipelineModule = React.lazy(() => import('./pipeline/PipelineModule'))\r\nconst ReportingModule = React.lazy(() => import('./reporting/ReportingModule'))\r\nconst EnterpriseAdminModule = React.lazy(() =>\r\n\timport('./enterprise-admin/EnterpriseAdminModule')\r\n)\r\nconst ETLModule = React.lazy(() => import('./etl/ETLModule'))\r\nconst LpmModule = React.lazy(() => import('./lpm/LpmModule'))\r\n\r\nconst getModuleObj = key => {\r\n\tswitch (key) {\r\n\t\tcase 'Quantalytix.Scorecards':\r\n\t\t\treturn {\r\n\t\t\t\tcomponent: ,\r\n\t\t\t\timage: scorecard module,\r\n\t\t\t}\r\n\t\tcase 'Quantalytix.Lender.Admin':\r\n\t\t\treturn {\r\n\t\t\t\tcomponent: ,\r\n\t\t\t\timage: admin module,\r\n\t\t\t}\r\n\t\tcase 'Quantalytix.Pipeline':\r\n\t\t\treturn {\r\n\t\t\t\tcomponent: ,\r\n\t\t\t\timage: pipeline module,\r\n\t\t\t}\r\n\t\tcase 'Quantalytix.System.Admin':\r\n\t\t\treturn {\r\n\t\t\t\tcomponent: ,\r\n\t\t\t\timage: (\r\n\t\t\t\t\t\r\n\t\t\t\t),\r\n\t\t\t}\r\n\t\tcase 'Quantalytix.Reporting':\r\n\t\t\treturn {\r\n\t\t\t\tcomponent: ,\r\n\t\t\t\timage: reporting module,\r\n\t\t\t}\r\n\t\tcase 'Quantalytix.Enterprise.Admin':\r\n\t\t\treturn {\r\n\t\t\t\tcomponent: ,\r\n\t\t\t\timage: admin module,\r\n\t\t\t}\r\n\t\tcase 'Quantalytix.Etl':\r\n\t\t\treturn {\r\n\t\t\t\tcomponent: ,\r\n\t\t\t\timage: etl module,\r\n\t\t\t}\r\n\t\tcase 'Quantalytix.Lpm':\r\n\t\t\treturn {\r\n\t\t\t\tcomponent: ,\r\n\t\t\t\timage: LPM Module,\r\n\t\t\t}\r\n\t\tdefault:\r\n\t\t\treturn {\r\n\t\t\t\tcomponent:
,\r\n\t\t\t\timage: ,\r\n\t\t\t}\r\n\t}\r\n}\r\n\r\nexport default getModuleObj\r\n","import React from 'react'\r\nimport './sidebar-expander.scss'\r\n\r\nexport default function SidebarExpander({\r\n\tisExpanded,\r\n\tonClick,\r\n\t...otherProps\r\n}) {\r\n\treturn (\r\n\t\t\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport { useNavigation } from './NavigationProvider'\r\n\r\nexport default function SidebarMenuHeader({ name }) {\r\n\tconst { isExpanded, isOverlaid } = useNavigation()\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{name}\r\n\t\t
\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport { useNavigation } from './NavigationProvider'\r\n\r\nexport default function SidebarMenuPage({ page, isSelected, permission }) {\r\n\tconst { isExpanded, isOverlaid, handlePageClick } = useNavigation()\r\n\r\n\tconst getClassName = () => {\r\n\t\tlet css = 'module-page'\r\n\t\tif (isExpanded || isOverlaid) {\r\n\t\t\tcss += ' show'\r\n\t\t}\r\n\t\tif (isSelected) {\r\n\t\t\tcss += ' selected'\r\n\t\t}\r\n\t\tif (permission === 'visible') {\r\n\t\t\tcss += ' disabled'\r\n\t\t}\r\n\t\tif (!permission) {\r\n\t\t\tcss += ' unauthorized'\r\n\t\t}\r\n\t\treturn css\r\n\t}\r\n\r\n\treturn (\r\n\t\t handlePageClick(page)}\r\n\t\t\tclassName={getClassName()}\r\n\t\t\tdata-testid={page.name}\r\n\t\t>\r\n\t\t\t{page.name}\r\n\t\t\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport './sidebar-menu.scss'\r\nimport { useAuth } from '../authentication/AuthHooks'\r\nimport SidebarExpander from './SidebarExpander'\r\nimport SidebarMenuHeader from './SidebarMenuHeader'\r\nimport SidebarMenuPage from './SidebarMenuPage'\r\nimport { useNavigation } from './NavigationProvider'\r\n\r\nexport default function SidebarMenu() {\r\n\tconst { userObj } = useAuth()\r\n\tconst {\r\n\t\tisExpanded,\r\n\t\tisOverlaid,\r\n\t\thandleExpanderClick,\r\n\t\tmoduleSelected,\r\n\t\tpageSelected,\r\n\t} = useNavigation()\r\n\r\n\tconst getClassName = () => {\r\n\t\tlet css = 'expandable-menu'\r\n\t\tif (isExpanded) {\r\n\t\t\tcss += ' expanded'\r\n\t\t}\r\n\r\n\t\tif (isOverlaid) {\r\n\t\t\tcss += ' overlay'\r\n\t\t}\r\n\t\treturn css\r\n\t}\r\n\r\n\tconst checkPagePermission = pagePermissionObj => {\r\n\t\tif (pagePermissionObj) {\r\n\t\t\tlet enabled = userObj.claims.includes(pagePermissionObj.enabled)\r\n\t\t\tlet onlyVisible = userObj.claims.includes(pagePermissionObj.visible)\r\n\t\t\tif (enabled) {\r\n\t\t\t\treturn true\r\n\t\t\t} else if (onlyVisible) {\r\n\t\t\t\treturn 'visible'\r\n\t\t\t} else {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t{moduleSelected ? (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{moduleSelected.items\r\n\t\t\t\t\t\t\t\t? moduleSelected.items.map(item => (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t\t\t: null}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t) : null}\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport SidebarIcon from './SidebarIcon'\r\nimport getModuleObj from '../modules/moduleObj'\r\nimport SidebarMenu from './SidebarMenu'\r\nimport AppVersion from 'AppVersion'\r\nimport { useNavigation } from './NavigationProvider'\r\nimport './q-sidebar.scss'\r\n\r\nexport default function QSidebar() {\r\n\tconst {\r\n\t\thandleModuleIconClick,\r\n\t\tcurrentModule,\r\n\t\thandleOverlayShow,\r\n\t\thandleOverlayHide,\r\n\t} = useNavigation()\r\n\tconst { filteredModules } = useNavigation()\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t{Object.values(filteredModules).map(m => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)\r\n\t\t\t\t})}\r\n\t\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport './landing-page.scss'\r\nimport qlogo from '../../assets/images/logo_black_bg.svg'\r\n\r\nexport default function LandingPage() {\r\n\treturn (\r\n\t\t
\r\n\t\t\t

Welcome to

\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React from 'react'\r\nimport { Router } from '@reach/router'\r\nimport { useAuth } from './AuthHooks'\r\nimport { NotFound } from '../shared/exports'\r\nimport LandingPage from '../modules/LandingPage/LandingPage'\r\n\r\nexport default function AuthenticatedRoutes({ subscribedModules }) {\r\n\tconst { isLoading, isAuthenticated } = useAuth()\r\n\r\n\tif (!isLoading && isAuthenticated) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{subscribedModules}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n\treturn null\r\n}\r\n","import React, { Suspense } from 'react'\r\nimport QHeader from 'navigation/QHeader'\r\nimport QSidebar from 'navigation/QSidebar'\r\nimport AuthenticatedRoutes from 'authentication/AuthenticatedRoutes'\r\nimport { useAlerts } from 'authentication/AuthHooks'\r\nimport { useNavigation } from 'navigation/NavigationProvider'\r\nimport {\r\n\tLoader,\r\n\tScreenAlertContainer,\r\n\tAlert,\r\n\tErrorBoundary,\r\n} from 'shared/exports'\r\nimport getModuleObj from 'modules/moduleObj'\r\nimport { Router, navigate } from '@reach/router'\r\n\r\nexport default function AuthentictedApp({ className, location }) {\r\n\tconst { alertObj, serverError, setAlertObj } = useAlerts()\r\n\tconst { moduleKeys, isExpanded } = useNavigation()\r\n\tconst [subscribedModules, setSubscribedModules] = React.useState([])\r\n\r\n\tReact.useEffect(() => {\r\n\t\tconst selectModules = () => {\r\n\t\t\tlet subscribed = moduleKeys.map(key => getModuleObj(key).component)\r\n\t\t\tsetSubscribedModules(subscribed)\r\n\t\t}\r\n\t\tselectModules()\r\n\t}, [moduleKeys])\r\n\r\n\tconst getMainClassName = () => {\r\n\t\tlet css = 'main-container'\r\n\t\tif (isExpanded) {\r\n\t\t\tcss += ' push-content'\r\n\t\t}\r\n\t\treturn css\r\n\t}\r\n\r\n\tif (location.pathname === '/') {\r\n\t\tnavigate('/home')\r\n\t}\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t setAlertObj({ ...alertObj, serverError: '' })}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{serverError}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t}>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport {\r\n\tahfaLogo,\r\n\tadfaLogo,\r\n\tmhdcLogo,\r\n\tmshcLogo,\r\n\tnchfaLogo,\r\n} from '../assets/images/hfa-logos/_hfa_logos'\r\n\r\nconst enterpriseObject = {\r\n\t'ahfa.quantalytix.com': {\r\n\t\timage: (\r\n\t\t\t\r\n\t\t),\r\n\t},\r\n\t'scorecard.ahfa.com': {\r\n\t\timage: (\r\n\t\t\t\r\n\t\t),\r\n\t},\r\n\t'adfa.quantalytix.com': {\r\n\t\timage: (\r\n\t\t\t\r\n\t\t),\r\n\t},\r\n\t'mhdc.quantalytix.com': {\r\n\t\timage: (\r\n\t\t\t\r\n\t\t),\r\n\t},\r\n\t'mshc.quantalytix.com': {\r\n\t\timage: (\r\n\t\t\t\r\n\t\t),\r\n\t},\r\n\t'nchfa.quantalytix.com': {\r\n\t\timage: (\r\n\t\t\t\r\n\t\t),\r\n\t},\r\n}\r\n\r\nexport default enterpriseObject\r\n","import React, { useEffect } from 'react'\r\nimport {\r\n\tTextInput,\r\n\tLogoBox,\r\n\tButton,\r\n\tAlert,\r\n\tLoadingAnimation,\r\n} from '../shared/exports'\r\nimport { useAlerts, useAuthenticateUser, useAuth } from './AuthHooks'\r\nimport { Link, navigate } from '@reach/router'\r\nimport enterpriseObject from './enterpriseObject'\r\nimport './login-form.scss'\r\n\r\nfunction Footer({ lenderUser }) {\r\n\treturn (\r\n\t\t
\r\n\t\t\t{lenderUser ? null : (\r\n\t\t\t\t\r\n\t\t\t\t\tResend Verification Email\r\n\t\t\t\t\r\n\t\t\t)}\r\n\t\t\t\r\n\t\t\t\tReset Password\r\n\t\t\t\r\n\t\t
\r\n\t)\r\n}\r\n\r\nfunction LoginForm({ enterpriseId, location }) {\r\n\tconst authenticateUser = useAuthenticateUser()\r\n\tconst { alertObj, displayError, setAlertObj } = useAlerts()\r\n\tconst { isAuthenticated, homepath } = useAuth()\r\n\tconst [lenderUser, setLenderUser] = React.useState(false)\r\n\tconst [isLoading, setIsLoading] = React.useState(false)\r\n\tconst logo = enterpriseObject[location.host]\r\n\t\t? enterpriseObject[location.host].image\r\n\t\t: null\r\n\r\n\tuseEffect(() => {\r\n\t\tlet isLenderUser =\r\n\t\t\tlocation &&\r\n\t\t\t!location.href.includes('quantalytix') &&\r\n\t\t\tlocation.hostname !== 'localhost'\r\n\t\tif (isLenderUser) {\r\n\t\t\tlocalStorage.setItem('key', location.host)\r\n\t\t\tsetLenderUser(true)\r\n\t\t} else if (enterpriseId) {\r\n\t\t\tlocalStorage.setItem('key', enterpriseId)\r\n\t\t\tsetLenderUser(true)\r\n\t\t} else {\r\n\t\t\tlocalStorage.removeItem('key')\r\n\t\t\tsetLenderUser(false)\r\n\t\t}\r\n\t}, [enterpriseId, location])\r\n\r\n\tif (isAuthenticated) {\r\n\t\tnavigate(homepath || '/home')\r\n\t\treturn null\r\n\t}\r\n\r\n\tconst handleOnSubmit = e => {\r\n\t\te.preventDefault()\r\n\t\tlet email = e.target.email.value\r\n\t\tlet password = e.target.password.value\r\n\t\tauthenticateUser(email, password, setIsLoading)\r\n\t}\r\n\r\n\treturn (\r\n\t\t}\r\n\t\t>\r\n\t\t\t setAlertObj({ ...alertObj, displayError: '' })}\r\n\t\t\t\tdata-testid='loginform-alert'\r\n\t\t\t>\r\n\t\t\t\t{displayError}\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t{lenderUser ? null : (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default LoginForm\r\n","import React, { useEffect } from 'react'\r\nimport AuthLayout from './AuthLayout'\r\nimport LoginForm from './LoginForm'\r\nimport { Router } from '@reach/router'\r\nimport appInsights from '../AppInsightsConfig'\r\n\r\nexport default function LoginRoutes() {\r\n\tuseEffect(() => {\r\n\t\tappInsights.trackPageView({ name: 'Login Screen' })\r\n\t}, [])\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n","import React, { Suspense } from 'react'\r\nimport { Router, Link } from '@reach/router'\r\nimport LoginRoutes from 'authentication/LoginRoutes'\r\nimport { useAlerts } from 'authentication/AuthHooks'\r\nimport QHeader from 'navigation/QHeader'\r\n\r\nimport {\r\n\tLoader,\r\n\tScreenAlertContainer,\r\n\tAlert,\r\n\tErrorBoundary,\r\n} from './shared/exports'\r\n\r\nconst RegistrationRoutes = React.lazy(() =>\r\n\timport('./authentication/RegistrationRoutes')\r\n)\r\nconst VerificationRoutes = React.lazy(() =>\r\n\timport('./authentication/VerificationRoutes')\r\n)\r\nconst PasswordRoutes = React.lazy(() =>\r\n\timport('./authentication/PasswordRoutes')\r\n)\r\n\r\nexport default function MainContent({ className }) {\r\n\tconst { alertObj, serverError, setAlertObj } = useAlerts()\r\n\r\n\tconst loginLink = (text, key) => (\r\n\t\t\r\n\t\t\t{text}\r\n\t\t\r\n\t)\r\n\tconst resendLink = text => (\r\n\t\t\r\n\t\t\t{text}\r\n\t\t\r\n\t)\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t setAlertObj({ ...alertObj, serverError: '' })}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{serverError}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t}>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t)\r\n}\r\n","import React from 'react'\r\nimport ThemeProvider from 'ThemeProvider'\r\nimport NavigationProvider from 'navigation/NavigationProvider'\r\nimport { useAuth } from 'authentication/AuthHooks'\r\nimport { Location } from '@reach/router'\r\nimport AuthenticatedApp from 'authentication/AuthenticatedApp'\r\nimport UnauthenticatedApp from 'UnauthenticatedApp'\r\nimport { LoadingAnimation } from 'shared/exports'\r\nimport './app.scss'\r\n\r\nimport './shared/theme/q-ui.scss'\r\nimport './shared/theme/q-helpers.scss'\r\nimport './shared/theme/q-icons.scss'\r\n// to test out shared component library in node_modules\r\n// import {Button, Alert, TextInput} from 'zeeCompTest'\r\n\r\nexport default function App(params) {\r\n\tconst { isAuthenticated, isLoading } = useAuth()\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{!isLoading ? (\r\n\t\t\t\t<>\r\n\t\t\t\t\t{isAuthenticated ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{({ location }) => (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\r\n\t\t\t) : (\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t)}\r\n\t\t
\r\n\t)\r\n}\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://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n\twindow.location.hostname === 'localhost' ||\r\n\t\t// [::1] is the IPv6 localhost address.\r\n\t\twindow.location.hostname === '[::1]' ||\r\n\t\t// 127.0.0.1/8 is considered localhost for IPv4.\r\n\t\twindow.location.hostname.match(\r\n\t\t\t/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n\t\t)\r\n)\r\n\r\nexport function register(config) {\r\n\tif (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n\t\t// The URL constructor is available in all browsers that support SW.\r\n\t\tconst publicUrl = new URL(process.env.PUBLIC_URL, window.location.href)\r\n\t\tif (publicUrl.origin !== window.location.origin) {\r\n\t\t\t// Our service worker won't work if PUBLIC_URL is on a different origin\r\n\t\t\t// from what our page is served on. This might happen if a CDN is used to\r\n\t\t\t// serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\twindow.addEventListener('load', () => {\r\n\t\t\tconst swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\r\n\r\n\t\t\tif (isLocalhost) {\r\n\t\t\t\t// This is running on localhost. Let's check if a service worker still exists or not.\r\n\t\t\t\tcheckValidServiceWorker(swUrl, config)\r\n\r\n\t\t\t\t// Add some additional logging to localhost, pointing developers to the\r\n\t\t\t\t// service worker/PWA documentation.\r\n\t\t\t\tnavigator.serviceWorker.ready.then(() => {\r\n\t\t\t\t\tconsole.log(\r\n\t\t\t\t\t\t'This web app is being served cache-first by a service ' +\r\n\t\t\t\t\t\t\t'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n\t\t\t\t\t)\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\t// Is not localhost. Just register service worker\r\n\t\t\t\tregisterValidSW(swUrl, config)\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n\tnavigator.serviceWorker\r\n\t\t.register(swUrl)\r\n\t\t.then(registration => {\r\n\t\t\tregistration.onupdatefound = () => {\r\n\t\t\t\tconst installingWorker = registration.installing\r\n\t\t\t\tif (installingWorker == null) {\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\t\t\t\tinstallingWorker.onstatechange = () => {\r\n\t\t\t\t\tif (installingWorker.state === 'installed') {\r\n\t\t\t\t\t\tif (navigator.serviceWorker.controller) {\r\n\t\t\t\t\t\t\t// At this point, the updated precached content has been fetched,\r\n\t\t\t\t\t\t\t// but the previous service worker will still serve the older\r\n\t\t\t\t\t\t\t// content until all client tabs are closed.\r\n\t\t\t\t\t\t\tconsole.log(\r\n\t\t\t\t\t\t\t\t'New content is available and will be used when all ' +\r\n\t\t\t\t\t\t\t\t\t'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n\t\t\t\t\t\t\t)\r\n\r\n\t\t\t\t\t\t\t// Execute callback\r\n\t\t\t\t\t\t\tif (config && config.onUpdate) {\r\n\t\t\t\t\t\t\t\tconfig.onUpdate(registration)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// At this point, everything has been precached.\r\n\t\t\t\t\t\t\t// It's the perfect time to display a\r\n\t\t\t\t\t\t\t// \"Content is cached for offline use.\" message.\r\n\t\t\t\t\t\t\tconsole.log('Content is cached for offline use.')\r\n\r\n\t\t\t\t\t\t\t// Execute callback\r\n\t\t\t\t\t\t\tif (config && config.onSuccess) {\r\n\t\t\t\t\t\t\t\tconfig.onSuccess(registration)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch(error => {\r\n\t\t\tconsole.error('Error during service worker registration:', error)\r\n\t\t})\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n\t// Check if the service worker can be found. If it can't reload the page.\r\n\tfetch(swUrl)\r\n\t\t.then(response => {\r\n\t\t\t// Ensure service worker exists, and that we really are getting a JS file.\r\n\t\t\tconst contentType = response.headers.get('content-type')\r\n\t\t\tif (\r\n\t\t\t\tresponse.status === 404 ||\r\n\t\t\t\t(contentType != null && contentType.indexOf('javascript') === -1)\r\n\t\t\t) {\r\n\t\t\t\t// No service worker found. Probably a different app. Reload the page.\r\n\t\t\t\tnavigator.serviceWorker.ready.then(registration => {\r\n\t\t\t\t\tregistration.unregister().then(() => {\r\n\t\t\t\t\t\twindow.location.reload()\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\t// Service worker found. Proceed as normal.\r\n\t\t\t\tregisterValidSW(swUrl, config)\r\n\t\t\t}\r\n\t\t})\r\n\t\t.catch(() => {\r\n\t\t\tconsole.log(\r\n\t\t\t\t'No internet connection found. App is running in offline mode.'\r\n\t\t\t)\r\n\t\t})\r\n}\r\n\r\nexport function unregister() {\r\n\tif ('serviceWorker' in navigator) {\r\n\t\tnavigator.serviceWorker.ready.then(registration => {\r\n\t\t\tregistration.unregister()\r\n\t\t})\r\n\t}\r\n}\r\n","import React from 'react'\r\nimport ReactDOM from 'react-dom'\r\n// import './index.css';\r\nimport appInsights from './AppInsightsConfig'\r\nimport LegacyAuthProvider from 'authentication/legacyAuthentication/LegacyAuthProvider'\r\nimport App from './App'\r\nimport * as craServiceWorker from './serviceWorker'\r\n\r\nif (process.env.NODE_ENV === 'development') {\r\n\timport('react-axe').then(axe => {\r\n\t\taxe.default(React, ReactDOM, 1000)\r\n\t})\r\n\tconst { worker } = require('./mocks/browser')\r\n\tworker.start()\r\n}\r\n\r\nReactDOM.render(\r\n\t\r\n\t\t\r\n\t,\r\n\tdocument.getElementById('root')\r\n)\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\ncraServiceWorker.unregister()\r\nappInsights.loadAppInsights()\r\n"],"sourceRoot":""}