{"version":3,"sources":["helpers/ChartHelper.tsx","hooks/useCrmDuplicateCheck.ts","hooks/useCorrespondenceActivity.tsx","hooks/useRiskLevel.tsx","hooks/useTimeRecording.tsx","hooks/useCurrentUser.tsx","hooks/useCurrencySymbol.tsx","home/Common.tsx","helpers/DateHelper.tsx","hooks/useRegionSettings.tsx","helpConfiguration/dialog/UserDefinedDialog.tsx","home/Support/SupportEmailPage.tsx","hooks/useTenant.tsx","hooks/useHomeCountry.tsx","helpers/commonHelper.ts"],"names":["ETimePeriod","GetGroupByPlurals","groupBy","localStorage","getItem","PersonActing","toLocaleLowerCase","PersonResponsible","GetGroupBy","GetLeadsGroupBy","formatNumber","value","decimal","toFixed","toString","replace","formatToDbDate","date","d","Date","month","getMonth","day","getDate","year","getFullYear","length","join","convertStringNumberToNumber","parseFloat","formatPeriod","period","formatPeriodNoSpace","formatToDatePeriod","formatDate","format","FormatHours","GetArrow","value1","value2","className","GetSuggestedMax","FormatDate","getHighestNumberInArray","array","Math","max","getMaxSuggestedTick","suggested","generatedValue","round","getMaxTickLimit","maxTicksLimit","maxNumber","getSuggestedMaxTick","suggestedMax","getLabels","labels","CrmDuplicateCheckQuery","CorrespondenceActivityQuery","useCorrespondenceActivity","variables","fetchPolicy","data","error","loading","riskLevelQuery","useRiskLevel","useTimeRecording","timeRecordingQuery","TIME_RECORDING_QUERY","retrieveTimeRecordingData","refreshData","onSuccess","onError","query","then","results","catch","reason","useCurrentUser","CURRENT_USER_QUERY","useCurrencySymbol","CURRENCY_SYMBOL_QUERY","IconButtonWrapper","div","props","position","right","top","display","alignItems","margin","color","HelpWrapper","theme","TemplateColor","Primary","left","UpIcon","transform","DownIcon","FooterDescription","fontSize","textAlign","formatDateString","dateValue","test","isMoment","Error","useRegionSettings","REGION_SETTINGS_QUERY","useStyles","root","closeButton","spacing","palette","grey","heading","BrandColors","TemplatePrimary","loadingWrapper","UserDefinedDialog","classes","open","template","isLoading","state","setState","prevState","fetchAppUser","AppUserDefinedHelp","tempTemplate","appUser","userDefinedHelp","onClose","fullWidth","maxWidth","disableTypography","variant","onClick","dividers","size","dangerouslySetInnerHTML","__html","autoFocus","width","textField","commendField","dialogTitle","justifyContent","dropzone","paddingTop","paddingBottom","matterLabel","height","textArea","camelCaseButton","textTransform","SupportEmailDialog","note","userName","tenant","supportEmail","isAuthenticated","fetchData","GenerateEmailBody","getUserName","detectBrowser","getTimezoneOffset","navigator","userAgent","indexOf","timeslipContactInfo","userInfoQuery","fetchUserData","tenantId","Fragment","id","window","ServiceLevel","ServiceLevels","item","xs","container","multiline","rows","onChange","event","target","type","body","cc","mailToString","encodeURIComponent","useTenant","TENANT_QUERY","useHomeCountry","HOME_COUNTRY_QUERY","arrayToString","arr","filter","Boolean","arrayToStringWithSeparator","separtor","addEllipsis","text","maxLength","slice","removeTagsAndStyles","htmlString","trim","LightTooltip","arrow","common","white","boxShadow","shadows","tooltip","backgroundColor","fontFamily","padding","finalFormValidateEmail","separateName","name","words","split","firstName","shift","lastName","addBusinessDays","originalDate","numDaysToAdd","daysRemaining","newDate","valueOf","add","convertToDraftWysiwygContent","muiContent","contentBlocks","blocks","map","muiBlock","depth","inlineStyleRanges","entityRanges","entityMap","checkIfIntialValuesIsEqualToValues","initialValues","values","keys","union","every","key","a","b","isUndefined","isNull","isEqual","retrieveQueryData","queryParams","capitalizeFirstLetter","str","charAt","toUpperCase","hashString","input","i","hash","charCodeAt","isDateDue","currentDate","diff","getPrompt","feature","featureStr","startsWith","featureResult","find","childFeatureName","toLowerCase","featureName","prompt"],"mappings":"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","file":"static/js/main~a9db9748.ee4ac7b6.chunk.js","sourcesContent":["import { UpIcon, DownIcon } from '../home/Common';\r\nimport React from 'react';\r\nimport moment from 'moment';\r\nimport { LocalStorageEnum } from '../enums/LocalStorageEnum';\r\n\r\nexport function GetGroupByPlurals(groupBy: string) {\r\n switch (groupBy) {\r\n case 'MatterType':\r\n return 'matter types';\r\n case 'MatterCategory':\r\n return 'matter categories';\r\n case 'MatterCategoryAndType':\r\n return 'matter categories/types';\r\n case 'PersonActing':\r\n return localStorage.getItem(LocalStorageEnum.PersonActing)?.toLocaleLowerCase() || 'person acting';\r\n case 'PersonResponsible':\r\n return localStorage.getItem(LocalStorageEnum.PersonResponsible)?.toLocaleLowerCase() || 'person responsible';\r\n case 'Property':\r\n return 'properties';\r\n case 'PropertyType':\r\n return 'property types';\r\n case 'ReportingGroup':\r\n return 'reporting groups';\r\n case 'AreaOfLaw':\r\n return 'areas of law';\r\n case 'Source':\r\n return 'sources';\r\n default:\r\n return '';\r\n }\r\n}\r\n\r\nexport function GetGroupBy(groupBy: string) {\r\n switch (groupBy) {\r\n case 'MatterType':\r\n return 'Type';\r\n case 'MatterCategory':\r\n return 'Category';\r\n case 'MatterCategoryAndType':\r\n return 'Category/Type';\r\n case 'PersonActing':\r\n return localStorage.getItem(LocalStorageEnum.PersonActing) || 'Person Acting';\r\n case 'PersonResponsible':\r\n return localStorage.getItem(LocalStorageEnum.PersonResponsible) || 'Person Responsible';\r\n case 'Property':\r\n return 'Property';\r\n case 'PropertyType':\r\n return 'Property Type';\r\n case 'ReportingGroup':\r\n return 'Reporting Group';\r\n case 'Client':\r\n return 'Client';\r\n default:\r\n return '';\r\n }\r\n}\r\n\r\nexport function GetLeadsGroupBy(groupBy: string) {\r\n switch (groupBy) {\r\n case 'AreaOfLaw':\r\n return 'Area of Law';\r\n case 'Source':\r\n return 'Lead Source';\r\n case 'Assignee':\r\n return 'Assignee';\r\n case 'Location':\r\n return 'Location';\r\n case 'Quality':\r\n return 'Quality';\r\n case 'LikelihoodToProceed':\r\n return 'Likelihood to Proceed';\r\n default:\r\n return '';\r\n }\r\n}\r\n\r\nexport function formatNumber(value: number, decimal?: number) {\r\n return value\r\n .toFixed(decimal ? decimal : 0)\r\n .toString()\r\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n}\r\n\r\n// returns date format of yyyy-MM-dd from a\r\n// a valid date string\r\nexport function formatToDbDate(date: string) {\r\n var d = new Date(date),\r\n month = '' + (d.getMonth() + 1),\r\n day = '' + d.getDate(),\r\n year = d.getFullYear();\r\n\r\n if (month.length < 2) {\r\n month = '0' + month;\r\n }\r\n if (day.length < 2) {\r\n day = '0' + day;\r\n }\r\n\r\n return [year, month, day].join('-');\r\n}\r\n\r\nexport function convertStringNumberToNumber(value: string) {\r\n return parseFloat(value.replace(/,/g, ''));\r\n}\r\n\r\nexport function formatPeriod(period: string) {\r\n switch (period) {\r\n case 'TwelveMonths':\r\n return '12 Months';\r\n case 'ThirtyDays':\r\n return '30 Days';\r\n case 'NinetyDays':\r\n return '90 Days';\r\n case 'SixtyDays':\r\n return '60 Days';\r\n default:\r\n return '';\r\n }\r\n}\r\n\r\nexport function formatPeriodNoSpace(period: string) {\r\n switch (period) {\r\n case 'TwelveMonths':\r\n return '12Months';\r\n case 'ThirtyDays':\r\n return '30Days';\r\n case 'NinetyDays':\r\n return '90Days';\r\n case 'SixtyDays':\r\n return '60Days';\r\n default:\r\n return '';\r\n }\r\n}\r\n\r\nexport function formatToDatePeriod(\r\n period: 'monthToDate' | 'previousMonth' | 'yearToDate' | 'previousYearToDate' | 'previousMonthYearToDate' | 'yearToDateFees' | 'previousMonthYearToDateFees',\r\n) {\r\n switch (period) {\r\n case 'monthToDate':\r\n return 'Month to Date';\r\n case 'previousMonth':\r\n return 'Previous Month';\r\n case 'yearToDate':\r\n return 'Year to Date';\r\n case 'previousYearToDate':\r\n return 'Previous Financial Year';\r\n case 'previousMonthYearToDate':\r\n return 'Year to Date (Previous Month)';\r\n case 'yearToDateFees':\r\n return 'Year to Date Fees';\r\n case 'previousMonthYearToDateFees':\r\n return 'Year to Date Fees (Previous Month)';\r\n default:\r\n return 'Month to Date';\r\n }\r\n}\r\n\r\nexport function formatDate(date: Date, format: string) {\r\n return moment(date).format(format);\r\n}\r\n\r\nexport function FormatHours(value: number) {\r\n return value > 2 ? 'hours' : 'hour';\r\n}\r\n\r\n// tslint:disable-next-line:no-any\r\nexport function GetArrow(value1: any, value2: any) {\r\n if (value1 > value2) {\r\n return ;\r\n } else if (value1 < value2) {\r\n return ;\r\n }\r\n return '';\r\n}\r\n\r\nexport function GetSuggestedMax(value: number) {\r\n if (value <= 10) {\r\n return value + 1;\r\n }\r\n\r\n return value + value * 0.1;\r\n}\r\n\r\nexport function FormatDate(value: string) {\r\n const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\r\n var date = new Date(value);\r\n return months[date.getMonth()] + ' ' + date.getDate();\r\n}\r\n\r\nexport function checkArrayIfNotAllZero(array: number[], length: number) {\r\n return array.filter((x) => x > 0).length >= length;\r\n}\r\n\r\nexport function getHighestNumberInArray(array: number[]) {\r\n return Math.max(...array);\r\n}\r\n\r\n/*\r\n* getMaxSuggestedTick is Deprecated please use getSuggestedMaxTick\r\n*/\r\nexport function getMaxSuggestedTick(value: number, suggested: number) {\r\n if (value <= suggested) {\r\n const generatedValue = value + Math.round(value * 0.1);\r\n\r\n return generatedValue < 5 ? generatedValue + 1 : generatedValue;\r\n }\r\n return value + value * 0.1;\r\n}\r\n\r\n/*\r\n* get the suggested max tick limit\r\n*/\r\nexport function getMaxTickLimit(array: number[]) {\r\n // 11 is the default max tick limit in chartjs\r\n let maxTicksLimit = 11;\r\n if (array.length > 0) {\r\n const maxNumber = getHighestNumberInArray(array);\r\n\r\n if (maxNumber >= 11) {\r\n maxTicksLimit = maxNumber;\r\n }\r\n }\r\n\r\n return maxTicksLimit;\r\n}\r\n\r\n/*\r\n* get the suggested max tick\r\n*/\r\nexport function getSuggestedMaxTick(array: number[]) {\r\n // 6 is the default max tick in chartjs\r\n let suggestedMax = 6;\r\n if (array.length > 0) {\r\n \r\n const maxNumber = getHighestNumberInArray(array);\r\n\r\n if (maxNumber >= 6) {\r\n suggestedMax = maxNumber + + Math.round(maxNumber * 0.1);\r\n }\r\n }\r\n\r\n return suggestedMax;\r\n}\r\n\r\n/*\r\n* get labels and if lables array are empty automatically return array with empty string\r\n*/\r\nexport function getLabels(labels: string[]) {\r\n if (labels.length > 0) {\r\n return labels;\r\n }\r\n // this use to prevent returning 0 in the chart when has no data\r\n return [''];\r\n}\r\n\r\nexport function convertFirstLetterToUppercase(input: string): string {\r\n return input.charAt(0).toUpperCase() + input.slice(1);\r\n}\r\n\r\nexport enum ETimePeriod {\r\n THIS_MONTH = 'This Month',\r\n PREVIOUS_MONTH = 'Previous Month',\r\n FINANCIAL_YEAR = 'Financial Year',\r\n PREVIOUS_FINANCIAL_YEAR = 'Previous Financial Year',\r\n THIS_WEEK = 'This Week',\r\n LAST_14_DAYS = 'Last 14 Days',\r\n LAST_30_DAYS = 'Last 30 Days',\r\n LAST_12_MONTHS = 'Last 12 Months',\r\n}","import { WatchQueryFetchPolicy } from 'apollo-client';\r\nimport gql from 'graphql-tag';\r\nimport { useQuery } from 'react-apollo';\r\n\r\nexport const useCrmDuplicateCheck = (params: DuplicateCheckParams, fetchPolicy?: WatchQueryFetchPolicy) => {\r\n const { data, error, loading } = useQuery(CrmDuplicateCheckQuery, {\r\n fetchPolicy,\r\n variables: {\r\n email: params.email,\r\n isIncludeParty: params.isIncludeParty,\r\n isIncludeEnquiry: params.isIncludeEnquiry,\r\n }\r\n });\r\n\r\n return {\r\n data,\r\n error,\r\n loading,\r\n };\r\n};\r\n\r\nexport type DuplicateCheckParams = {\r\n email: string | null;\r\n isIncludeParty?: boolean | null\r\n isIncludeEnquiry: boolean | null\r\n};\r\n\r\nexport type DuplicateCheckData = {\r\n crm: CRM;\r\n};\r\n\r\nexport type CRM = {\r\n duplicateCheck: DuplicateCheck;\r\n};\r\n\r\nexport type DuplicateCheck = {\r\n contactName: string;\r\n contactEmailAddress: string;\r\n enquiryName: string;\r\n enquiryEmailAddress: string;\r\n otherSideName: string;\r\n otherSideEmailAddress: string;\r\n partyDuplicateCount: number;\r\n enquiryContactDuplicateCount: number;\r\n mobile: string;\r\n phone: string;\r\n};\r\n\r\nexport const CrmDuplicateCheckQuery = gql`\r\n query CrmDuplicateCheck(\r\n $email: String\r\n $isIncludeParty: Boolean\r\n $isIncludeEnquiry: Boolean\r\n ) {\r\n crm {\r\n duplicateCheck(\r\n email: $email\r\n isIncludeParty: $isIncludeParty\r\n isIncludeEnquiry: $isIncludeEnquiry\r\n ) {\r\n contactName\r\n contactEmailAddress\r\n enquiryName\r\n enquiryEmailAddress\r\n otherSideName\r\n otherSideEmailAddress\r\n partyDuplicateCount\r\n enquiryContactDuplicateCount\r\n mobile\r\n phone\r\n }\r\n }\r\n }\r\n`;","import { WatchQueryFetchPolicy } from 'apollo-client';\r\nimport gql from 'graphql-tag';\r\nimport { useQuery } from 'react-apollo';\r\n\r\nexport interface CorrespondenceActivityData {\r\n lookup: Lookup;\r\n}\r\n\r\nexport interface Lookup {\r\n correspondenceActivity: CorrespondenceActivity[];\r\n}\r\n\r\nexport interface CorrespondenceActivity {\r\n guid: string;\r\n description: string;\r\n sequence: number;\r\n}\r\n\r\nexport interface CorrespondenceActivityParams {\r\n isSystem?: boolean | null;\r\n}\r\n\r\nexport const CorrespondenceActivityQuery = gql`\r\nquery correspondenceActivityLookup($isSystem: Boolean) {\r\n lookup {\r\n correspondenceActivity(isSystem: $isSystem) {\r\n guid\r\n description\r\n sequence\r\n isSystem\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const useCorrespondenceActivity = (variables: CorrespondenceActivityParams, fetchPolicy?: WatchQueryFetchPolicy) => {\r\n\r\n const { data, error, loading} = useQuery(CorrespondenceActivityQuery, {\r\n variables: variables,\r\n fetchPolicy: fetchPolicy\r\n });\r\n\r\n return {\r\n data,\r\n error,\r\n loading\r\n };\r\n\r\n};","import { WatchQueryFetchPolicy } from 'apollo-client';\r\nimport gql from 'graphql-tag';\r\nimport { useQuery } from 'react-apollo';\r\n\r\nexport interface RiskLevelData {\r\n lookup: Lookup;\r\n}\r\n\r\nexport interface Lookup {\r\n riskLevel: RiskLevel[];\r\n}\r\n\r\nexport interface RiskLevel {\r\n guidId: string;\r\n description: string;\r\n level: number;\r\n sequence: number;\r\n}\r\n\r\nconst riskLevelQuery = gql`\r\n query RiskLevel {\r\n lookup {\r\n riskLevel {\r\n guidId\r\n description\r\n level\r\n sequence\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const useRiskLevel = (fetchPolicy: WatchQueryFetchPolicy) => {\r\n\r\n const { data, error, loading} = useQuery(riskLevelQuery, {\r\n fetchPolicy: fetchPolicy\r\n });\r\n\r\n return {\r\n data,\r\n error,\r\n loading\r\n };\r\n\r\n};","import { FetchPolicy } from 'apollo-client';\r\nimport gql from 'graphql-tag';\r\nimport { useQuery } from 'react-apollo';\r\nimport { client } from '..';\r\n\r\nexport const useTimeRecording = () => {\r\n const timeRecordingQuery = useQuery(TIME_RECORDING_QUERY, {\r\n fetchPolicy: 'cache-first',\r\n });\r\n\r\n return {\r\n ...timeRecordingQuery\r\n };\r\n};\r\n\r\nexport type TimeRecordingData = {\r\n settings: Settings;\r\n};\r\n\r\nexport type Settings = {\r\n id: number;\r\n systems: Systems;\r\n};\r\n\r\nexport type Systems = {\r\n timeRecordingDefaults: TimeRecordingDefaults;\r\n timeRecordingSettings: TimeRecordingSettings;\r\n};\r\n\r\nexport type TimeRecordingDefaults = {\r\n id: number;\r\n config: TimeRecordingDefaultsConfig;\r\n};\r\n\r\nexport type TimeRecordingDefaultsConfig = {\r\n id: number;\r\n timeCaptureMode: string;\r\n};\r\n\r\nexport type TimeRecordingSettings = {\r\n id: number;\r\n config: TimeRecordingSettingsConfig;\r\n};\r\n\r\nexport type TimeRecordingSettingsConfig = {\r\n id: number;\r\n thresholdLevel: number;\r\n};\r\n\r\nconst TIME_RECORDING_QUERY = gql`\r\n query TimeRecording {\r\n settings {\r\n id\r\n systems {\r\n timeRecordingDefaults {\r\n id\r\n config {\r\n id\r\n timeCaptureMode\r\n }\r\n }\r\n timeRecordingSettings {\r\n id\r\n config {\r\n id\r\n thresholdLevel\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport function retrieveTimeRecordingData(\r\n refreshData: boolean,\r\n onSuccess: (data: TimeRecordingData) => void,\r\n // tslint:disable-next-line:no-any\r\n onError: (reason: any) => void,\r\n): void {\r\n var fetchPolicy: FetchPolicy = refreshData === true ? 'network-only' : 'cache-first';\r\n client\r\n .query({\r\n query: TIME_RECORDING_QUERY,\r\n fetchPolicy: fetchPolicy,\r\n })\r\n // tslint:disable-next-line:no-any\r\n .then((results: { data: TimeRecordingData }) => {\r\n onSuccess(results.data);\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any) => {\r\n onError(reason);\r\n });\r\n}\r\n","import { WatchQueryFetchPolicy } from 'apollo-client';\r\nimport gql from 'graphql-tag';\r\nimport { useQuery } from 'react-apollo';\r\n\r\nexport const useCurrentUser = (fetchPolicy?: WatchQueryFetchPolicy) => {\r\n\r\n const { data, error, loading} = useQuery(CURRENT_USER_QUERY, {\r\n fetchPolicy: fetchPolicy ?? 'cache-first'\r\n });\r\n\r\n return {\r\n data,\r\n error,\r\n loading\r\n };\r\n\r\n};\r\n\r\nexport interface CurrentUserData {\r\n appUser: AppUser;\r\n}\r\n\r\nexport interface AppUser {\r\n userId: string;\r\n staffGuid: string;\r\n name: string;\r\n userName: string;\r\n isAdministrator: boolean;\r\n role: string;\r\n isInternal: boolean;\r\n isInternalAdmin: boolean;\r\n}\r\n\r\nconst CURRENT_USER_QUERY = gql`\r\n query CurrentUser {\r\n appUser {\r\n userId\r\n staffGuid\r\n name\r\n userName\r\n isAdministrator\r\n role\r\n isInternal\r\n isInternalAdmin\r\n }\r\n }\r\n`;\r\n","import gql from 'graphql-tag';\r\nimport { useQuery } from 'react-apollo';\r\n\r\nexport const useCurrencySymbol = () => {\r\n const { data, error, loading } = useQuery(CURRENCY_SYMBOL_QUERY, {\r\n fetchPolicy: 'cache-first'\r\n });\r\n return {\r\n data,\r\n error,\r\n loading,\r\n };\r\n};\r\n\r\nexport interface CurrencySymbolData {\r\n options: Options;\r\n}\r\n\r\nexport interface Options {\r\n currencySymbol: CurrencySymbol;\r\n localCurrency: LocalCurrency;\r\n}\r\n\r\nexport interface CurrencySymbol {\r\n symbol: string;\r\n}\r\n\r\nexport interface LocalCurrency {\r\n currency: string;\r\n}\r\n\r\nconst CURRENCY_SYMBOL_QUERY = gql`\r\n query CurrencySymbol {\r\n options {\r\n currencySymbol {\r\n symbol\r\n }\r\n localCurrency {\r\n currency\r\n }\r\n }\r\n }\r\n`;\r\n","import glamorous from 'glamorous';\r\nimport ForwardIcon from '@material-ui/icons/Forward';\r\nimport InfoIcon from '@material-ui/icons/InfoOutlined';\r\nimport { DashboardTypeEnum } from './ChartComponents';\r\n\r\nexport const IconButtonWrapper = glamorous.div<{ theme?: object }>((props) => ({\r\n position: 'absolute',\r\n right: '5px',\r\n top: '5px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n margin: '0 -3px',\r\n '& > .MuiIconButton-root': {\r\n margin: '0 3px',\r\n '& .MuiSvgIcon-root': {\r\n color: 'rgb(0, 120, 212) !important'\r\n },\r\n },\r\n '@media print': {\r\n display: 'none !important',\r\n }\r\n}));\r\n\r\n// tslint:disable-next-line:no-any\r\nexport const InfoHoverIcon = glamorous(InfoIcon)<{ theme?: any }>((props) => ({\r\n color: props.theme.TemplateColor.Primary,\r\n position: 'absolute',\r\n left: '5px',\r\n top: '5px',\r\n '@media print': {\r\n display: 'none !important',\r\n }\r\n}));\r\n\r\nexport const HelpWrapper = glamorous.div<{ theme?: object }>((props) => ({\r\n position: 'absolute',\r\n left: '5px',\r\n top: '5px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n margin: '0 -2.5px',\r\n '& > *': {\r\n margin: '0 2.5px',\r\n },\r\n '@media print': {\r\n display: 'none !important',\r\n },\r\n}));\r\n\r\n// tslint:disable-next-line:no-any\r\nexport const UpIcon = glamorous(ForwardIcon)<{ theme?: any }>(props => ({\r\n transform: 'rotate(270deg)',\r\n color: 'green',\r\n}));\r\n\r\n// tslint:disable-next-line:no-any\r\nexport const DownIcon = glamorous(ForwardIcon)<{ theme?: any }>(props => ({\r\n transform: 'rotate(90deg)',\r\n color: 'red'\r\n}));\r\n\r\nexport const FooterDescription = glamorous.div<{ theme?: object }>((props) => ({\r\n fontSize: '1rem',\r\n textAlign: 'center',\r\n}));\r\n\r\nexport interface ChartCommonProps {\r\n index?: number;\r\n onCloseChart?: (category: string) => void;\r\n description?: string;\r\n onMaximize?: (option?: number, additionalOption?: number) => void;\r\n showAllRecords?: boolean;\r\n showScreenshot?: boolean;\r\n maximizeSelected?: {\r\n // tslint:disable-next-line:no-any\r\n [key: string]: any;\r\n }\r\n onMaximizeSelected?: (option: {\r\n // tslint:disable-next-line:no-any\r\n [key: string]: any;\r\n }) => void;\r\n isAIFeatureEnabled?: boolean;\r\n layoutId?: DashboardTypeEnum;\r\n aiPrompt?: string;\r\n}\r\n\r\nexport interface ChartCommonState {\r\n open: boolean;\r\n anchorEl: Element | ((element: Element) => Element) | null | undefined;\r\n}","import { DateType } from '@date-io/type';\r\nimport moment from 'moment';\r\n\r\nexport const isDateStringInFormat = (dateString: string): boolean => {\r\n const regex = /^\\d{4}-\\d{2}-\\d{2}$/;\r\n return regex.test(dateString);\r\n};\r\n \r\nexport const formatDateString = (dateValue: string | Date | DateType | null): string | null => {\r\n if (dateValue === null) {\r\n // Decide on the behavior when null is passed. Returning null here, but you can adjust as needed.\r\n return null;\r\n } else if (typeof dateValue === 'string') {\r\n if (isDateStringInFormat(dateValue)) {\r\n return dateValue; // Return as is if the string is already in YYYY-MM-DD format\r\n } else {\r\n // Assume the string is in a different format and needs conversion\r\n return moment(dateValue).format('YYYY-MM-DD');\r\n }\r\n } else if (moment.isMoment(dateValue)) {\r\n // If it's a Moment object\r\n return dateValue.format('YYYY-MM-DD');\r\n } else if (dateValue instanceof Date) {\r\n // If it's a Date object\r\n return moment(dateValue).format('YYYY-MM-DD');\r\n } else {\r\n throw new Error('Invalid dateValue type');\r\n }\r\n};","import gql from 'graphql-tag';\r\nimport { useQuery } from 'react-apollo';\r\n\r\nexport const useRegionSettings = () => {\r\n const { data, error, loading } = useQuery(REGION_SETTINGS_QUERY, {\r\n fetchPolicy: 'cache-first'\r\n });\r\n\r\n return {\r\n data,\r\n error,\r\n loading,\r\n };\r\n};\r\n\r\nexport interface RegionsSettingsData {\r\n settings: Settings;\r\n}\r\n\r\nexport interface Settings {\r\n id: number;\r\n systems: Systems;\r\n}\r\n\r\nexport interface Systems {\r\n regionSettings: RegionSettings;\r\n}\r\n\r\nexport interface RegionSettings {\r\n id: number;\r\n config: Config;\r\n}\r\n\r\nexport interface Config {\r\n id: number;\r\n currencyCode: string;\r\n currencySymbol: string;\r\n financialYearStart: Date;\r\n homeCountry: string;\r\n timeZone: string;\r\n timeZoneDescription: string;\r\n taxLabel: string;\r\n taxPercentage: number;\r\n baseUtcOffset: number;\r\n}\r\n\r\nconst REGION_SETTINGS_QUERY = gql`\r\n query regionSettings {\r\n settings {\r\n id\r\n systems {\r\n regionSettings {\r\n id\r\n config {\r\n id\r\n currencyCode\r\n currencySymbol\r\n financialYearStart\r\n homeCountry\r\n timeZone\r\n timeZoneDescription\r\n taxLabel\r\n taxPercentage\r\n baseUtcOffset\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { makeStyles, Theme, createStyles } from '@material-ui/core/styles';\r\nimport { Dialog, DialogContent, Button, DialogActions, Typography, IconButton } from '@material-ui/core';\r\nimport MuiDialogTitle from '@material-ui/core/DialogTitle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { showNotification } from '../../App';\r\nimport gql from 'graphql-tag';\r\nimport { client } from '../..';\r\nimport { RvLoader } from '../../components/Loader';\r\nimport { mainTheme } from '../../Theme';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n \r\n },\r\n closeButton: {\r\n position: 'absolute',\r\n right: theme.spacing(1),\r\n top: theme.spacing(1),\r\n color: theme.palette.grey[500],\r\n },\r\n heading: {\r\n color: mainTheme.BrandColors.TemplatePrimary\r\n },\r\n loadingWrapper: {\r\n\r\n }\r\n })\r\n);\r\n\r\ninterface DialogProps {\r\n open: boolean;\r\n onClose?: () => void;\r\n}\r\n\r\ninterface DialogState {\r\n open: boolean;\r\n template: string | null;\r\n isLoading: boolean;\r\n}\r\n\r\nexport const UserDefinedDialog: React.FC = props => {\r\n \r\n const classes = useStyles();\r\n\r\n const [state, setState] = useState({\r\n open: false,\r\n template: null,\r\n isLoading: false,\r\n });\r\n\r\n useEffect(() => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n open: props.open\r\n };\r\n });\r\n\r\n fetchAppUser();\r\n // tslint:disable-next-line: align\r\n }, [props.open]);\r\n\r\n const fetchAppUser = () => {\r\n \r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isLoading: true\r\n };\r\n });\r\n\r\n client.query({\r\n query: AppUserDefinedHelp,\r\n fetchPolicy: 'network-only'\r\n // tslint:disable-next-line:no-any\r\n }).then((results: {\r\n // tslint:disable-next-line:no-any\r\n data: any;\r\n }) => {\r\n\r\n let tempTemplate: string | null = null;\r\n\r\n if (results.data && results.data.appUser && \r\n results.data.appUser.userDefinedHelp &&\r\n results.data.appUser.userDefinedHelp.template !== null ) {\r\n \r\n tempTemplate = results.data.appUser.userDefinedHelp.template;\r\n\r\n } else {\r\n \r\n tempTemplate = null;\r\n\r\n }\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n template: tempTemplate,\r\n isLoading: false\r\n };\r\n });\r\n\r\n // tslint:disable-next-line: no-any\r\n }).catch((reason: any) => {\r\n showNotification(null, reason, 'error');\r\n });\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n\r\n const onClose = () => {\r\n if (props.onClose) {\r\n props.onClose();\r\n }\r\n };\r\n \r\n return (\r\n \r\n );\r\n};\r\n\r\nconst AppUserDefinedHelp = gql`\r\n query AppUserDefinedHelp{\r\n appUser {\r\n userDefinedHelp {\r\n template\r\n }\r\n }\r\n }\r\n`;","/* eslint-disable no-useless-concat */\r\n\r\nimport React, { useState, useEffect } from 'react';\r\nimport {\r\n makeStyles,\r\n Theme,\r\n createStyles,\r\n Grid,\r\n TextField,\r\n Typography,\r\n} from '@material-ui/core';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport { mainTheme } from '../../Theme';\r\nimport { showNotification } from '../../App';\r\nimport { client } from '../..';\r\nimport { FetchPolicy } from 'apollo-client';\r\nimport gql from 'graphql-tag';\r\nimport { fetchTypedUserSettings } from '../../userSettings/UserSettingsRepository';\r\nimport { MatterTerminology } from '../../MatterTerminology';\r\nimport { DocumentListFile } from '../../common/constants';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n width: '100%',\r\n },\r\n textField: {\r\n width: '100%',\r\n },\r\n commendField: {\r\n width: '100%',\r\n },\r\n dialogTitle: {\r\n color: mainTheme.TemplateColor.Primary,\r\n '& .MuiTypography-root': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n }\r\n },\r\n dropzone: {\r\n paddingTop: 10,\r\n paddingBottom: 10,\r\n },\r\n matterLabel: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n height: '100%',\r\n },\r\n textArea: {\r\n paddingBottom: '10px',\r\n width: '100%',\r\n '& textarea': {\r\n fontSize: '16px',\r\n },\r\n '& > div::before': {\r\n // content: 'none',\r\n }\r\n },\r\n camelCaseButton: {\r\n textTransform: 'none'\r\n }\r\n })\r\n);\r\n\r\ninterface SupportEmailState {\r\n \r\n note: string;\r\n userName: string;\r\n tenant: string;\r\n supportEmail: string;\r\n}\r\n\r\nexport interface SupportEmailProps {\r\n isAuthenticated: boolean;\r\n onClose: () => void;\r\n}\r\n\r\n// tslint:disable-next-line: no-anyW\r\nexport const SupportEmailDialog: React.FC = ( props ) => {\r\n const classes = useStyles();\r\n\r\n const [state, setState] = useState({\r\n note: '',\r\n userName: '',\r\n tenant: '',\r\n supportEmail: ''\r\n });\r\n\r\n useEffect(() => {\r\n if (props.isAuthenticated) {\r\n fetchData();\r\n }\r\n // tslint:disable-next-line:align\r\n }, [props.isAuthenticated]);\r\n\r\n // tslint:disable-next-line:no-any\r\n const handleTextChange = (event: any) => {\r\n const note = event.target.value;\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n note: note \r\n };\r\n });\r\n };\r\n const handleSend = () => {\r\n if (state.note !== '') {\r\n var body = GenerateEmailBody();\r\n var subject = 'User Web Issue';\r\n var recipient = 'support@redraincorp.com';\r\n var cc = '';\r\n if (state.supportEmail !== recipient && state.supportEmail) {\r\n cc = '; ' + state.supportEmail;\r\n\r\n }\r\n\r\n var mailToString = 'mailTo:' + recipient + cc + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body); \r\n window.open(mailToString);\r\n }\r\n if (props.onClose) {\r\n return props.onClose();\r\n }\r\n };\r\n\r\n const GenerateEmailBody = () => {\r\n var body = state.note \r\n + '\\n\\n User: ' + getUserName()\r\n + '\\n Tenant: ' + state.tenant\r\n + '\\n App: ' + 'Connect Web'\r\n + '\\n Browser: ' + detectBrowser()\r\n // tslint:disable-next-line:no-string-literal\r\n // + '\\n NetworkType: ' + navigator['connection'].effectiveType\r\n + '\\n TimeZoneOffset: ' + new Date().getTimezoneOffset() / 60.0;\r\n return body;\r\n \r\n };\r\n\r\n const getUserName = () => {\r\n return state.userName ? state.userName : 'Not logged in';\r\n };\r\n\r\n const detectBrowser = () => { \r\n if ((navigator.userAgent.indexOf('Opera') || navigator.userAgent.indexOf('OPR')) !== -1 ) {\r\n return 'Opera';\r\n } else if (navigator.userAgent.indexOf('Chrome') !== -1 ) {\r\n return 'Chrome';\r\n } else if (navigator.userAgent.indexOf('Safari') !== -1) {\r\n return 'Safari';\r\n } else if (navigator.userAgent.indexOf('Firefox') !== -1 ) {\r\n return 'Firefox';\r\n } else if (navigator.userAgent.indexOf('MSIE') !== -1 ) {\r\n return 'IE';\r\n } else {\r\n return 'Unknown';\r\n }\r\n };\r\n\r\n const fetchData = () => {\r\n fetchTypedUserSettings(\r\n true,\r\n // tslint:disable-next-line:no-any\r\n (data: any) => { setState((prevState: SupportEmailState) => {\r\n return {\r\n ...prevState,\r\n supportEmail: data.timeslipContactInfo,\r\n };\r\n });\r\n }, \r\n reason => {\r\n showNotification(\r\n 'Failed to Fetch Layout Configuration',\r\n reason,\r\n 'error'\r\n );\r\n }\r\n );\r\n fetchUserData(false, \r\n // tslint:disable-next-line:no-any\r\n (data: any) => { setState((prevState: SupportEmailState) => {\r\n return {\r\n ...prevState,\r\n userName: data.appUser ? data.appUser.userName : '',\r\n tenant: data.tenant.tenantId\r\n };\r\n });\r\n }, \r\n (reason) => { \r\n showNotification('Failed to Matter Summary New Enabled Lookup value', reason, 'error'); \r\n });\r\n };\r\n\r\n const onServiceLevel = () => {\r\n window.open(DocumentListFile.ServiceLevel, '_blank');\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport function fetchUserData(refreshData: boolean,\r\n // tslint:disable-next-line:no-any\r\n onSuccess: (data?: any) => void,\r\n // tslint:disable-next-line:no-any\r\n onError: (reason: any) => void)\r\n : void {\r\n var fetchPolicy: FetchPolicy = refreshData === true ? 'network-only' : 'cache-first';\r\n\r\n client.query({\r\n query: userInfoQuery,\r\n variables: {},\r\n fetchPolicy: fetchPolicy\r\n })\r\n // tslint:disable-next-line:no-any\r\n .then((results: { data: any; }) => {\r\n onSuccess(results.data);\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason: any ) => { onError(reason); }\r\n );\r\n}\r\n\r\nconst userInfoQuery = gql`query user {\r\n appUser {\r\n userName\r\n }\r\n tenant {\r\n tenantId\r\n }\r\n }\r\n `;\r\n","import gql from 'graphql-tag';\r\nimport { useQuery } from 'react-apollo';\r\n\r\nexport const useTenant = () => {\r\n const { data, error, loading } = useQuery(TENANT_QUERY, {\r\n fetchPolicy: 'cache-first'\r\n });\r\n\r\n return {\r\n data,\r\n error,\r\n loading,\r\n };\r\n};\r\n\r\nexport interface TenantData {\r\n tenant: Tenant;\r\n}\r\n\r\nexport interface Tenant {\r\n companyName: string;\r\n tenantId: string;\r\n sourceSystem: string;\r\n companyUrl: string;\r\n leapProvisioningStatus: string;\r\n showResetLeapAccessCard: boolean;\r\n}\r\n\r\nconst TENANT_QUERY = gql`\r\n query Tenant {\r\n tenant {\r\n companyName\r\n tenantId\r\n sourceSystem\r\n companyUrl\r\n leapProvisioningStatus\r\n showResetLeapAccessCard\r\n }\r\n }\r\n`;\r\n","import gql from 'graphql-tag';\r\nimport { useQuery } from 'react-apollo';\r\n\r\nexport const useHomeCountry = () => {\r\n const { data, error, loading } = useQuery(HOME_COUNTRY_QUERY, {\r\n fetchPolicy: 'cache-first'\r\n });\r\n return {\r\n data,\r\n error,\r\n loading,\r\n };\r\n};\r\n\r\nexport interface HomeCountryData {\r\n options: Options;\r\n}\r\n\r\nexport interface Options {\r\n homeCountry: HomeCountry;\r\n}\r\n\r\nexport interface HomeCountry {\r\n stringValue: string;\r\n}\r\n\r\nconst HOME_COUNTRY_QUERY = gql`\r\n query homeCountry {\r\n options {\r\n homeCountry {\r\n stringValue\r\n }\r\n }\r\n }\r\n`;\r\n","import { Theme, Tooltip, withStyles } from '@material-ui/core';\r\nimport _ from 'lodash';\r\nimport moment from 'moment';\r\nimport { client } from '..';\r\nimport { FetchPolicy } from 'apollo-client';\r\nimport { DocumentNode } from 'graphql';\r\nimport { AIPrompt } from '../hooks/useAIPromptQuery';\r\nimport { UserFeatureEnum } from '../types/UserFeature';\r\n\r\nexport function arrayToString(arr: (string | number | null)[]) {\r\n return arr.filter(Boolean).join(', ');\r\n}\r\n\r\nexport function arrayToStringWithSeparator(arr: (string | number | null)[], separtor: string) {\r\n return arr.filter(Boolean).join(separtor);\r\n}\r\n\r\nexport function addEllipsis(text: string, maxLength: number): string {\r\n return text.length > maxLength ? text.slice(0, maxLength - 3) + '...' : text;\r\n}\r\n\r\nexport function removeTagsAndStyles(htmlString: string): string {\r\n // Remove HTML tags and using regex\r\n const withoutTagsAndNbsp = htmlString.replace(/(<([^>]+)>| )/gi, '');\r\n \r\n // Remove inline styles using regex\r\n const withoutStyles = withoutTagsAndNbsp.replace(/style\\s*=\\s*\".*?\"/gi, '');\r\n \r\n // Remove remaining whitespace and line breaks\r\n const withoutWhitespace = withoutStyles.replace(/\\s+/g, ' ').trim();\r\n \r\n return withoutWhitespace;\r\n }\r\n\r\nexport const LightTooltip = withStyles((theme: Theme) => ({\r\n arrow: {\r\n color: theme.palette.common.white,\r\n '&::before': {\r\n // backgroundColor: 'blue',\r\n boxShadow: theme.shadows[1],\r\n }\r\n },\r\n tooltip: {\r\n backgroundColor: theme.palette.common.white,\r\n color: 'rgba(0, 0, 0, 0.87)',\r\n boxShadow: theme.shadows[1],\r\n fontSize: '14px',\r\n maxWidth: '800px',\r\n fontFamily: 'Nunito, Arial, Helvetica, sans-serif',\r\n padding: '10px',\r\n },\r\n}))(Tooltip);\r\n\r\nexport const finalFormValidateEmail = (value?: string) => {\r\n \r\n const emailRegex = /^(([^<>()\\\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\n let error: string = '';\r\n\r\n if (!value) {\r\n return error;\r\n }\r\n \r\n if (!emailRegex.test(value)) {\r\n error = 'Email is not valid';\r\n }\r\n return error;\r\n};\r\n\r\nexport function separateName(name: string): { firstName: string, lastName: string } {\r\n const words = name.split(' ');\r\n const firstName = words.shift(); // Removes and returns the first element of the array\r\n const lastName = words.join(' ');\r\n \r\n return {\r\n firstName: firstName || '', // If firstName is undefined, set it to an empty string\r\n lastName: lastName || '', // If lastName is undefined, set it to an empty string\r\n };\r\n }\r\n \r\nexport const addBusinessDays = (originalDate: Date, numDaysToAdd: number) => {\r\n const Sunday = 0;\r\n const Saturday = 6;\r\n let daysRemaining = numDaysToAdd;\r\n\r\n const newDate = moment(new Date(originalDate.valueOf()));\r\n\r\n while (daysRemaining > 0) {\r\n newDate.add(1, 'days');\r\n if (newDate.day() !== Sunday && newDate.day() !== Saturday) {\r\n daysRemaining--;\r\n }\r\n }\r\n\r\n return newDate;\r\n};\r\n\r\n// convert muitext editor content that compose using :blocks then convert to react-wysyg\r\n// tslint:disable-next-line: no-any\r\nexport function convertToDraftWysiwygContent(muiContent: any) {\r\n // tslint:disable-next-line: no-any\r\n const contentBlocks = muiContent.blocks.map((muiBlock: any) => ({\r\n text: muiBlock.text,\r\n type: muiBlock.type || 'unstyled', // Use 'unstyled' if type is missing\r\n depth: muiBlock.depth || 0,\r\n inlineStyleRanges: muiBlock.inlineStyleRanges || [],\r\n entityRanges: muiBlock.entityRanges || [],\r\n data: muiBlock.data || {},\r\n }));\r\n \r\n return {\r\n entityMap: muiContent.entityMap || {},\r\n blocks: contentBlocks,\r\n };\r\n}\r\n\r\nexport function checkIfIntialValuesIsEqualToValues(initialValues: T, values: T) {\r\n const keys = _.union(_.keys(initialValues), _.keys(values));\r\n \r\n return _.every(keys, (key) => {\r\n const a = initialValues[key];\r\n const b = values[key];\r\n \r\n if (_.isUndefined(a) || _.isNull(a)) {\r\n return _.isUndefined(b) || _.isNull(b);\r\n }\r\n \r\n return _.isEqual(a, b);\r\n });\r\n}\r\n\r\n// tslint:disable-next-line: no-any\r\nexport function retrieveQueryData(\r\n query: DocumentNode,\r\n queryParams: queryParams,\r\n refreshData: boolean,\r\n onSuccess: (data: queryResult) => void,\r\n onError: (reason: queryError) => void,\r\n) {\r\n var fetchPolicy: FetchPolicy = refreshData === true ? 'network-only' : 'cache-first';\r\n client\r\n .query({\r\n query: query,\r\n variables: { ...queryParams },\r\n fetchPolicy: fetchPolicy,\r\n })\r\n // tslint:disable-next-line:no-any\r\n .then((results) => {\r\n onSuccess(results.data);\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((reason) => {\r\n onError(reason);\r\n });\r\n}\r\n\r\nexport function capitalizeFirstLetter(str: string): string {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\n\r\nexport function hashString(input: string): number {\r\n var hash = 0, i, chr;\r\n if (input.length === 0) {\r\n return hash;\r\n }\r\n for (i = 0; i < input.length; i++) {\r\n chr = input.charCodeAt(i);\r\n // tslint:disable-next-line:no-bitwise\r\n hash = ((hash << 5) - hash) + chr - 1;\r\n // tslint:disable-next-line:no-bitwise\r\n hash |= 0; // Convert to 32bit integer\r\n }\r\n return hash;\r\n}\r\n\r\nexport function isDateDue(value: Date) {\r\n const currentDate = moment();\r\n const dateDiff = moment(value).diff(currentDate, 'days');\r\n\r\n return dateDiff < 0;\r\n}\r\n\r\nexport function getPrompt(data: AIPrompt[], feature: keyof typeof UserFeatureEnum) {\r\n // Get feature name from enum key\r\n const featureStr = feature.startsWith('has') ? feature.slice(3) : feature;\r\n\r\n const featureResult = data.find(\r\n (item) =>\r\n item.childFeatureName?.trim().toLowerCase() === featureStr.trim().toLowerCase() ||\r\n item.featureName?.trim().toLowerCase() === featureStr.trim().toLowerCase()\r\n );\r\n\r\n return featureResult?.prompt;\r\n}"],"sourceRoot":""}