{"version":3,"sources":["enquirySummary/board/BoardCardDraggable.tsx","enquirySummary/common/EmailContentDialog.tsx","enquirySummary/common/HistoryActivity.tsx","enquirySummary/cellRenderer/DueDateRenderer.tsx","enquirySummary/common/HistoryFile.tsx"],"names":["useStyles","theme","root","userSelect","padding","margin","color","display","position","option","top","right","contentContainer","flexFlow","flex","content","paddingBottom","fontStyle","fontSize","fontWeight","otherDetails","justifyContent","alignItems","backgroundColor","textTransform","borderRadius","userContainer","cursor","userSelector","avatar","width","height","areaOfLaw","status","textField","minWidth","Colors","hashString","input","i","hash","length","charCodeAt","BoardCardDraggable","props","classes","assignedTo","groupBy","state","setState","prevState","isAreaOfLawSelected","setIsAreaOfLawSelected","isAssignedToSelected","setIsAssignedToSelected","refAreaOfLaw","useRef","refAssignedTo","bColor","label","stringInitials","split","map","n","join","slice","className","style","handleClickAssignedTo","handleChangeAssignedTo","data","name","key","Math","random","ref","draggableProvided","innerRef","draggableProps","dragHandleProps","draggableSnapshot","isDragging","enquiryGuid","item","guid","positionAtOrganisation","organisation","onClick","value","onSelection","disablePortal","visible","role","dueDates","dueDate","toLowerCase","diff","fromNow","reason","createdDate","date","format","formattedDate","makeStyles","createStyles","overflowY","marginBottom","historyContainer","borderLeft","bottom","left","historyIcon","taskDetails","minHeight","BrandColors","TemplatePrimary","createClient","assignedEnquiry","followUp","enquiryCreated","contentDetails","marginTop","chips","flexWrap","chip","marginLeft","detailsContainer","dialogRoot","header","dialogPaper","emailContentButton","textAlign","emailDetails","paddingRight","divider","loaderWrapper","EmailContentDialog","showEmailContent","emailContent","files","isLoading","taskGuid","fetchTaskDetails","taskDetailsParams","onTaskDetailsRetrieved","task","detail","onCloseEmailContent","onFileClicked","file","url","win","window","open","focus","Dialog","onClose","maxWidth","fullWidth","scroll","paper","DialogTitle","Button","DialogContent","dividers","filteredFiles","filter","Typography","variant","index","Chip","Divider","getFileItems","dangerouslySetInnerHTML","__html","HistoryActivityWidth","loadingRoot","notes","assignButton","HistoryActivity","t","messagesEndRef","convertMentionInCommentToHtml","comment","regex","displayRegex","idRegex","matches","match","arr","output","forEach","m","id","replace","push","newComment","c","console","log","isDateDue","currentDate","stringToColour","str","showDateEndOfFromNow","formatDate","getWidth","NORMAL","FULL_WIDTH","LightTooltip","withStyles","arrow","palette","common","white","boxShadow","shadows","tooltip","Tooltip","getDescription","actionedDescription","undefined","taskTypeDescription","followUpAction","completedDate","enquiryText","isKeyOpportunity","enquiryLinkedMatter","enquiryDetail","isMatterCreated","isContactCreated","canCreateMatter","onAssign","getDetailContent","assignedToGuidID","Paper","elevation","assignedToName","assignedByName","followUpNotes","ownerName","linkedMatterClient","linkedMatterTitle","taskTypeInternalDescription","taskGuidID","uiUtcOffset","Date","getTimezoneOffset","uiTimeZoneDescription","Intl","DateTimeFormat","resolvedOptions","timeZone","timezone","uiTimeZone","find","baseUtcOffset","timezoneValue","isAssignedToTeam","firmOffice","bookMeetingStartDateUTC","convertToLocalTimeZone","toString","staff","getAssignedTo","meetingNotes","sendConfirmation","feeApplicable","currency","canAssignMeeting","size","outcomeNotes","systemAction","emailTemplateName","emailSubject","fromEmailAddress","toEmailAddresses","ccEmailAddresses","taskUpdateInProgress","isIntegrationFailed","ListItem","ListItemText","primary","ListItemIcon","integrationContactId","green","integrationClientId","otherPartyFirstName","otherPartyLastName","integrationOtherPartyId","integrationMatterId","integrationMatterDocumentId","activityContent","showDetails","outcome","sortDirection","notProceeding","Avatar","followUpActionSystemName","getHistoryAvatar","title","dueDateUTC","getHistoryDate","source","trim","natureOfEnquiry","createdByName","updatedDate","referredToFirmName","notProceedingNotes","taskList","JSON","parse","stringify","leadDetailsHistory","tasks","taskCreateClient","taskStatusDescription","newTasks","indexOf","splice","oldDate","newDate","setMinutes","getMinutes","autoScroll","setTimeout","current","scrollIntoView","behavior","DueDateRenderer","displayStyle","ShortDate","DisplayInUTC","setTitle","historyHtml","customFieldByHierarchy","firstName","lastName","email","phone","mobile","referrerName","isClosed","outcomeDate","office","dateAssigned","sourceNotes","internalNotes","eventAndCampaignName","eventAndCampaignNotes","getOrganizationDetails","getEnquiryValue","getClientDetails","getOtherPartyDetails","getResponseTextDetails","getDocumentDetails","getCustomFieldDetails","getDigitalTrackingFields","getHistoryContent","historyContent","getHistoryActivity","createHistory","getCreatedContent","areaOfLawTitle","KeyOpportunity","Enquiry","ed","responseText","estimatedFees","enquiryQuality","isEstimatedFeesIncludesTax","estimatedDisbursements","likelihoodToProceed","isEstimatedDisbursementsIncludesTax","clientFirstName","clientLastName","clientTitle","clientRelationshipToEnquirer","dOB","gender","clientEmail","clientPhone","clientMobile","isMarketingConsent","isTermsAndConditionsApproved","isPrivacyStatementProvided","isConflictCheckPerformed","isNoConflict","isIdentityCheckPerformed","addressName","floor","number","street","clientAddressStreet2","suburb","postcode","country","pOBox","postalSuburb","postalState","postalPostCode","postalCountry","secondClientFirstName","secondClientLastName","secondClientTitle","secondClientRelationshipToEnquirer","secondClientDOB","secondClientGender","secondClientEmail","secondClientPhone","secondClientMobile","secondClientIsTermsAndConditionsApproved","secondClientIsPrivacyStatementProvided","secondClientIsConflictCheckPerformed","secondClientIsNoConflict","secondClientIsIdentityCheckPerformed","secondClientAddressName","secondClientFloor","secondClientNumber","secondClientStreet1","secondClientStreet2","secondClientSuburb","secondClientState","secondClientPostCode","secondClientCountry","secondClientPOBox","secondClientPostalSuburb","secondClientPostalState","secondClientPostalPostCode","secondClientPostalCountry","secondClientPOBoxType","isRiskAssessed","riskLevel","riskNotes","otherPartyTitle","otherPartyEmail","otherPartyPhone","otherPartyDOB","otherPartyMobile","otherPartyNotes","otherPartyAddressName","otherPartyFloor","otherPartyNumber","otherPartyStreet","otherPartyStreet2","otherPartySuburb","otherPartyState","otherPartyPostcode","otherPartyCountry","otherPartyPostalPostCode","otherPartyPOBoxType","otherPartyPOBox","otherPartyPostalSuburb","otherPartyPostalCountry","otherPartyPostalState","tags","e","enquiry","customFieldItem","group","filteredFields","customField","filteredDetail","customFields","customFieldGuid","customFieldGroupName","customFieldAnswer","isActive","answer","matchingDetail","boolValue","currencyValue","dateTimeValue","dateValue","integerValue","multiLineTextValue","numberValue","textValue","lookupListName","getAnswer","description","clickThroughUrl","utmSource","utmMedium","utmCampaign","utmContent","utmKeyword","googleClickIdentifier","facebookClickIdentifier","historyTitle","getHistoryDetailContent","HistoryFile","onSuccess","html","parser","DOMParser","htmlDocument","parseFromString","htmlElement","body","element","document","createElement","setAttribute","visibility","appendChild","allowTaint","then","canvas","getContext","getPdf","orientation","unit","autoPaging","callback","currentDoc","pageCount","getNumberOfPages","deletePage","documentBlob","remove","x","y"],"mappings":"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","file":"static/js/main~c78470c9.5e975e38.chunk.js","sourcesContent":["import React, { useState, useEffect } from 'react';\r\nimport { makeStyles, Theme, createStyles } from '@material-ui/core/styles';\r\nimport { DraggableProvided, DraggableStateSnapshot } from 'react-beautiful-dnd';\r\nimport { SemanticCOLORS } from 'semantic-ui-react';\r\nimport { GroupByType } from '../EnquirySummaryRepository';\r\nimport { UserAutocompleteSelector } from '../../components/UserAutocompleteSelector';\r\nimport useOnClickOutside from 'use-onclickoutside';\r\nimport { IAutoCompleteItem } from '../../typings/autoComplete';\r\nimport { Avatar } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport { AreaOfLawSelector } from '../selectors/AreaOfLawSelector';\r\n// import MoreHorizOutlinedIcon from '@material-ui/icons/MoreHorizOutlined'; \r\n// import { UserFeature, UserFeatureEnum } from '../../types/UserFeature';\r\nimport { EnquirySummary } from '../models/Enquiry';\r\n// import { useHistory } from 'react-router-dom';\r\n// import { EnquirySummaryContext } from '../EnquirySummaryContext';\r\nimport { EnquiryTaskAction } from '../EnquiryTaskAction';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n userSelect: 'none',\r\n padding: 8,\r\n margin: '0 0 8px 0',\r\n color: '#000',\r\n display: 'flex',\r\n position: 'relative',\r\n },\r\n option: {\r\n position: 'absolute',\r\n top: 0,\r\n right: 0\r\n },\r\n contentContainer: {\r\n // padding: '0 10px',\r\n display: 'flex',\r\n flexFlow: 'column',\r\n flex: 1,\r\n },\r\n content: {\r\n paddingBottom: '10px',\r\n flex: 1,\r\n '& .posOrg': {\r\n fontStyle: 'italic',\r\n color: '#989393',\r\n fontSize: '12px',\r\n },\r\n '& .org': {\r\n fontWeight: 600,\r\n color: '#6d6c6c'\r\n }\r\n },\r\n otherDetails: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n fontSize: '12px',\r\n '& > div': {\r\n flex: 1,\r\n },\r\n '& .session': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n },\r\n '& .user': {\r\n backgroundColor: 'yellow',\r\n padding: '3px 5px',\r\n textTransform: 'capitalize',\r\n borderRadius: '3px',\r\n }\r\n },\r\n userContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n fontSize: '12px',\r\n padding: '10px 0',\r\n cursor: 'pointer',\r\n '& .name': {\r\n fontWeight: 600,\r\n },\r\n '& .category': {\r\n padding: '0 5px',\r\n fontWeight: 600,\r\n }\r\n },\r\n userSelector: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '0 5px',\r\n margin: '0 -5px',\r\n '& > div': {\r\n padding: '0 5px',\r\n }\r\n },\r\n avatar: {\r\n width: '20px',\r\n height: '20px',\r\n fontSize: '10px',\r\n },\r\n areaOfLaw: {\r\n cursor: 'pointer'\r\n },\r\n status: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n cursor: 'pointer',\r\n },\r\n textField: {\r\n width: '100%',\r\n minWidth: '150px',\r\n }\r\n })\r\n);\r\n\r\nexport const Colors: SemanticCOLORS[] = ['red', 'orange', 'olive', 'green', 'teal', 'blue',\r\n 'purple', 'pink', 'brown', 'grey'];\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\ninterface BoardCardDraggableProps {\r\n draggableProvided: DraggableProvided;\r\n draggableSnapshot: DraggableStateSnapshot;\r\n // tslint:disable-next-line: no-any\r\n item: EnquirySummary;\r\n areaOfLaw: IAutoCompleteItem;\r\n status: string;\r\n assignedTo: IAutoCompleteItem;\r\n dueDate: Date | null;\r\n groupBy: GroupByType;\r\n reason: string;\r\n}\r\n\r\ninterface BoardCardDraggableState {\r\n groupBy: GroupByType;\r\n areaOfLaw: IAutoCompleteItem;\r\n assignedTo: IAutoCompleteItem;\r\n}\r\n\r\nexport const BoardCardDraggable: React.FC = props => {\r\n\r\n const classes = useStyles();\r\n\r\n const [state, setState] = useState({\r\n areaOfLaw: props.areaOfLaw,\r\n assignedTo: props.assignedTo,\r\n groupBy: props.groupBy\r\n });\r\n\r\n // const [open, setOpen] = React.useState(false);\r\n // const anchorRef = React.useRef(null);\r\n // const history = useHistory();\r\n\r\n useEffect(() => {\r\n\r\n // tslint:disable-next-line: no-console\r\n // console.log('state', state);\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n groupBy: props.groupBy\r\n };\r\n });\r\n\r\n // tslint:disable-next-line: align\r\n }, [props.groupBy]);\r\n\r\n const [isAreaOfLawSelected, setIsAreaOfLawSelected] = useState(false);\r\n const [isAssignedToSelected, setIsAssignedToSelected] = useState(false);\r\n\r\n const refAreaOfLaw = React.useRef(null);\r\n\r\n const refAssignedTo = React.useRef(null);\r\n\r\n// const {\r\n// onFormAction,\r\n// onEnquiryFormOpen,\r\n// onFollowUpOpen,\r\n// onAssignOpen,\r\n// onCreateClientOpen,\r\n// onSetGuid\r\n// // tslint:disable-next-line: no-any\r\n// }: any = useContext(EnquirySummaryContext);\r\n\r\n // click outside hide the selector\r\n useOnClickOutside(refAreaOfLaw, () => setIsAreaOfLawSelected(false));\r\n\r\n // click outside hide the selector\r\n useOnClickOutside(refAssignedTo, () => setIsAssignedToSelected(false));\r\n\r\n // const handleToggle = () => {\r\n // // tslint:disable-next-line: no-shadowed-variable\r\n // setOpen(prevOpen => !prevOpen);\r\n // };\r\n\r\n const avatar = () => {\r\n\r\n let bColor: SemanticCOLORS = Colors[(state.assignedTo.label === '' || state.assignedTo.label === null) ? \r\n Colors[Colors.length] : (hashString(state.assignedTo.label) % Colors.length) - 1];\r\n // tslint:disable-next-line: no-any\r\n let stringSplit = state.assignedTo.label.split(' ').map((n: any) => n[0]).join('');\r\n\r\n let stringInitials = stringSplit.slice(0, 2);\r\n\r\n return (\r\n \r\n {stringInitials}\r\n \r\n );\r\n\r\n };\r\n\r\n // .endOf('day').fromNow()\r\n const dueDate = () => {\r\n return `Due ${moment(props.dueDate, 'YYYY-MM-DD HH:mm:ss').fromNow()}`; \r\n };\r\n\r\n const handleClickAreaOfLaw = () => {\r\n setIsAreaOfLawSelected(true);\r\n };\r\n\r\n const handleClickAssignedTo = () => {\r\n setIsAssignedToSelected(true);\r\n };\r\n\r\n const handleChangeAreaOfLaw = (data: IAutoCompleteItem, name: string) => {\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n areaOfLaw: data\r\n };\r\n });\r\n\r\n };\r\n\r\n const handleChangeAssignedTo = (data: IAutoCompleteItem, name: string) => {\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n assignedTo: data\r\n };\r\n });\r\n\r\n };\r\n\r\n // const handleClose = (event: React.MouseEvent) => {\r\n // // tslint:disable-next-line\r\n // console.log('Close Clicked');\r\n // if (anchorRef.current &&\r\n // anchorRef.current.contains(event.target as HTMLElement)\r\n // ) {\r\n // return;\r\n // }\r\n\r\n // setOpen(false);\r\n // };\r\n\r\n // const handleView = (event: React.MouseEvent) => {\r\n // if (\r\n // anchorRef.current &&\r\n // anchorRef.current.contains(event.target as HTMLElement)\r\n // ) {\r\n // return;\r\n // }\r\n // setOpen(false);\r\n // history.push({\r\n // pathname: `/enquiriesDetail/${props.item.guid}`\r\n // });\r\n // };\r\n\r\n // const handleListKeyDown = (event: React.KeyboardEvent) => {\r\n // if (event.key === 'Tab') {\r\n // event.preventDefault();\r\n // setOpen(false);\r\n // }\r\n // };\r\n\r\n // const handleFollowUp = (event: React.MouseEvent) => {\r\n // if (anchorRef.current &&\r\n // anchorRef.current.contains(event.target as HTMLElement)\r\n // ) {\r\n // return;\r\n // }\r\n // onSetGuid(props.item.guid);\r\n // setOpen(false);\r\n // onFollowUpOpen();\r\n // };\r\n\r\n // const handleCreateClient = (event: React.MouseEvent) => {\r\n // if (\r\n // anchorRef.current &&\r\n // anchorRef.current.contains(event.target as HTMLElement)\r\n // ) {\r\n // return;\r\n // }\r\n // onSetGuid(props.item.guid);\r\n // setOpen(false);\r\n // onCreateClientOpen(props.item);\r\n // };\r\n\r\n // const handleModify = (event: React.MouseEvent, guid: string) => {\r\n // if (anchorRef.current &&\r\n // anchorRef.current.contains(event.target as HTMLElement)) {\r\n // return;\r\n // }\r\n\r\n // onFormAction('edit', guid);\r\n // setOpen(false);\r\n // onEnquiryFormOpen();\r\n // };\r\n\r\n // const handleAssign = (event: React.MouseEvent) => {\r\n // if (\r\n // anchorRef.current &&\r\n // anchorRef.current.contains(event.target as HTMLElement)\r\n // ) {\r\n // return;\r\n // }\r\n\r\n // onSetGuid(props.item.guid);\r\n // setOpen(false);\r\n // onAssignOpen();\r\n // };\r\n\r\n // const handleEmailAssignee = (event: React.MouseEvent) => {\r\n // if (\r\n // anchorRef.current &&\r\n // anchorRef.current.contains(event.target as HTMLElement)\r\n // ) {\r\n // return;\r\n // }\r\n // setOpen(false);\r\n\r\n // var mail = document.createElement('a');\r\n // // tslint:disable-next-line:max-line-length\r\n // mail.href = `mailto:${props.item.assignedToEmailAddress}?subject=\r\n // RE ${props.item.firstName} ${props.item.lastName}, new business enquiry received \r\n // ${moment(props.item.initialEnquiryDate).format('DD MMM YYYY')}`;\r\n // mail.click();\r\n\r\n // };\r\n\r\n const isOverDue = () => {\r\n return moment().diff(props.dueDate, 'days');\r\n };\r\n\r\n const formattedDate = (date: Date | null, format: string) => {\r\n if (date) {\r\n return moment(date).format(format);\r\n }\r\n return undefined;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {props.item.name && (
{props.item.name}
)}\r\n {props.item.positionAtOrganisation && (
{props.item.positionAtOrganisation}
)}\r\n {props.item.organisation && (
{props.item.organisation}
)}\r\n
\r\n
\r\n {!!(state.groupBy !== GroupByType.areaOfLaw) && (\r\n
\r\n {\r\n isAreaOfLawSelected ? \r\n (\r\n \r\n ) \r\n : \r\n (\r\n
{state.areaOfLaw.label}
\r\n )\r\n }\r\n
\r\n )}\r\n {!!(state.groupBy === GroupByType.areaOfLaw) && (\r\n
\r\n {\r\n isAssignedToSelected ? \r\n (\r\n \r\n )\r\n :\r\n (\r\n <>\r\n {\r\n state.assignedTo.label && state.assignedTo.value && (\r\n
\r\n {avatar()}\r\n
{state.assignedTo.label}
\r\n
\r\n )\r\n }\r\n \r\n )\r\n }\r\n
\r\n )}\r\n {!!(state.groupBy === GroupByType.dueDates) && (\r\n
\r\n
{props.status}
\r\n
\r\n )}\r\n
\r\n
\r\n {!!(state.groupBy !== GroupByType.status && state.groupBy !== GroupByType.dueDates) && (\r\n
\r\n
{props.status}
\r\n
\r\n )}\r\n {!!(state.groupBy === GroupByType.status || state.groupBy === GroupByType.dueDates) && (\r\n
\r\n {\r\n isAssignedToSelected ? \r\n (\r\n \r\n )\r\n :\r\n (\r\n <>\r\n {\r\n state.assignedTo.label && state.assignedTo.value && (\r\n
\r\n {avatar()}\r\n
{state.assignedTo.label}
\r\n
\r\n )\r\n }\r\n \r\n )\r\n }\r\n
\r\n )\r\n }\r\n {props.dueDate && props.status !== null && props.status.toLowerCase() !== 'lost' && \r\n props.status.toLowerCase() !== 'client created' && props.status.toLowerCase() !== 'matter created' &&\r\n props.status.toLowerCase() !== 'client already exists' && (\r\n
0 ? 'red' : '#000'}}\r\n >\r\n {dueDate()}\r\n
\r\n )}\r\n {props.dueDate && props.status !== null && props.status.toLowerCase() === 'lost' && \r\n props.status.toLowerCase() !== 'client created' && props.status.toLowerCase() !== 'matter created' &&\r\n props.status.toLowerCase() !== 'client already exists' && (\r\n
0 ? 'red' : '#000'}}\r\n >\r\n {props.reason}\r\n
\r\n )}\r\n {props.item.createdDate && props.status !== null && \r\n (props.status.toLowerCase() === 'client created' || props.status.toLowerCase() === 'matter created' || props.status.toLowerCase() === 'client already exists') && (\r\n
0 ? 'red' : '#000'}}\r\n >\r\n {formattedDate(props.item.createdDate, 'DD MMM YYYY')}\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useEffect, useState } from 'react';\r\nimport { makeStyles, Theme, createStyles, Button, Dialog, DialogTitle, DialogContent, Typography, Chip, Divider } from '@material-ui/core';\r\nimport { mainTheme } from '../../Theme';\r\nimport { showNotification } from '../../App';\r\nimport { DocumentFile } from '../../types/DocumentFile';\r\nimport { retrieveTaskDetailsData, TaskDetailsData, TaskDetailsParam } from '../../tasksSummary/TasksSummaryRepository';\r\nimport { RvLoader } from '../../components/Loader';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n padding: '20px 0',\r\n flex: 1,\r\n display: 'flex',\r\n flexFlow: 'column',\r\n overflowY: 'auto',\r\n marginBottom: '10px',\r\n // maxWidth: '500px',\r\n position: 'relative',\r\n },\r\n historyContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n margin: '0 -10px',\r\n width: '100%',\r\n padding: '10px 0',\r\n position: 'relative',\r\n '& > div': {\r\n padding: '0 10px',\r\n },\r\n '& .connector': {\r\n borderLeft: '1px solid #bdbdbd',\r\n position: 'absolute',\r\n top: 0,\r\n bottom: 0,\r\n left: '30px',\r\n }\r\n },\r\n historyIcon: {\r\n \r\n },\r\n taskDetails: {\r\n // flex: 1,\r\n // maxWidth: '150px',\r\n minWidth: '130px',\r\n minHeight: '100%',\r\n display: 'flex',\r\n flexFlow: 'column',\r\n justifyContent: 'center',\r\n '& .description': {\r\n fontWeight: 600,\r\n marginBottom: '3px',\r\n color: mainTheme.BrandColors.TemplatePrimary\r\n },\r\n '& .date': {\r\n fontStyle: 'italic',\r\n color: '#a7a7a7'\r\n },\r\n '& .due-date': {\r\n color: '#fcba03'\r\n },\r\n '& .overdue': {\r\n color: 'red',\r\n },\r\n '& .status': {\r\n fontStyle: 'italic',\r\n color: '#a7a7a7'\r\n }\r\n },\r\n createClient: {\r\n // backgroundColor: mainTheme.UtilityColors.Positive\r\n backgroundColor: '#cfa2a1'\r\n },\r\n assignedEnquiry: {\r\n // backgroundColor: mainTheme.UtilityColors.Neutral\r\n backgroundColor: '#a8dda8'\r\n },\r\n followUp: {\r\n // backgroundColor: mainTheme.UtilityColors.Negative\r\n backgroundColor: '#bdb2d1'\r\n },\r\n enquiryCreated: {\r\n backgroundColor: 'orange'\r\n },\r\n contentDetails: {\r\n flex: 1,\r\n '& .title': {\r\n fontSize: 14,\r\n fontWeight: 300,\r\n color: '#000',\r\n marginBottom: 5,\r\n },\r\n '& .description': {\r\n marginTop: 10,\r\n fontSize: 14,\r\n color: '#000'\r\n },\r\n '& .author': {\r\n fontStyle: 'italic',\r\n fontSize: 12,\r\n '& span': {\r\n fontWeight: 600\r\n }\r\n }\r\n },\r\n chips: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n },\r\n chip: {\r\n marginLeft: '8px'\r\n },\r\n detailsContainer: {\r\n padding: '10px !important',\r\n width: '100%',\r\n position: 'relative',\r\n // '& span': {\r\n // fontWeight: 600,\r\n // fontStyle: 'italic'\r\n // }\r\n },\r\n dialogRoot: {\r\n '& .downshift-wrapper': {\r\n flex: 1,\r\n padding: 0,\r\n }\r\n },\r\n header: {\r\n textTransform: 'capitalize',\r\n '& .MuiTypography-root': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n }\r\n },\r\n dialogPaper: {\r\n height: '100%',\r\n },\r\n emailContentButton: {\r\n textAlign: 'end',\r\n position: 'absolute',\r\n right: 10,\r\n top: 10,\r\n },\r\n emailDetails: {\r\n textAlign: 'start',\r\n paddingRight: 80,\r\n '& .emailDescription': {\r\n color: '#000',\r\n fontSize: 14\r\n }\r\n },\r\n divider: {\r\n margin: 10,\r\n width: '100%',\r\n },\r\n loaderWrapper: {\r\n position: 'absolute',\r\n top: 0,\r\n bottom: 0,\r\n right: 0,\r\n left: 0,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n })\r\n);\r\n\r\ninterface EmailContentDialogProps {\r\n className?: string;\r\n enquiryGuid?: string;\r\n taskGuid?: string;\r\n onCloseEmailContent?: () => void;\r\n}\r\n\r\ninterface EmailContentDialogState {\r\n showEmailContent: boolean;\r\n emailContent: string;\r\n files: DocumentFile[];\r\n isLoading: boolean;\r\n}\r\n\r\n// tslint:disable-next-line: no-anyW\r\nexport const EmailContentDialog: React.FC = props => {\r\n \r\n const classes = useStyles();\r\n\r\n const [state, setState] = useState({\r\n showEmailContent: true,\r\n emailContent: '',\r\n files: [],\r\n isLoading: true\r\n });\r\n\r\n useEffect(() => {\r\n if (props.taskGuid) {\r\n fetchTaskDetails(props.taskGuid);\r\n }\r\n // tslint:disable-next-line: align\r\n }, []);\r\n\r\n const fetchTaskDetails = (guid: string) => {\r\n const taskDetailsParams: TaskDetailsParam = {\r\n guid: guid\r\n };\r\n\r\n retrieveTaskDetailsData(\r\n taskDetailsParams,\r\n true,\r\n // tslint:disable-next-line: no-console\r\n (data: TaskDetailsData) => onTaskDetailsRetrieved(data),\r\n // tslint:disable-next-line: no-any\r\n function (reason: any): void {\r\n showNotification(null, reason, 'error');\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isLoading: false\r\n };\r\n });\r\n }\r\n );\r\n };\r\n\r\n const onTaskDetailsRetrieved = (data: TaskDetailsData) => {\r\n // tslint:disable-next-line: no-console\r\n\r\n if (data && data.task && data.task.detail) {\r\n const taskDetails = data.task.detail;\r\n\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isLoading: false,\r\n files: taskDetails.files ? taskDetails.files : [],\r\n emailContent: taskDetails.emailContent\r\n };\r\n });\r\n } else {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n isLoading: false\r\n };\r\n });\r\n }\r\n };\r\n\r\n const onCloseEmailContent = () => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n emailContent: '',\r\n showEmailContent: false,\r\n files: [],\r\n isLoading: false\r\n };\r\n });\r\n\r\n if (props.onCloseEmailContent) {\r\n props.onCloseEmailContent();\r\n } \r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const getFileItems = (files?: DocumentFile[]) => {\r\n if (files) {\r\n const filteredFiles = files.filter((file: DocumentFile) => {\r\n return file.status !== 2 && file.url;\r\n });\r\n\r\n if (filteredFiles) {\r\n const chip = (\r\n
\r\n {\r\n filteredFiles.length > 0 \r\n ? (\r\n <>\r\n {'Attachments'} \r\n {'Click on the following to open the attached files'} \r\n \r\n )\r\n : null\r\n }\r\n
\r\n {\r\n filteredFiles.map((file: DocumentFile, index: number) => {\r\n return (\r\n onFileClicked(file)}\r\n />\r\n );\r\n }) \r\n }\r\n
\r\n {filteredFiles.length > 0 && (\r\n \r\n )} \r\n
\r\n );\r\n\r\n return chip;\r\n } else {\r\n return (
);\r\n }\r\n } else {\r\n return (
);\r\n }\r\n };\r\n\r\n const onFileClicked = (file: DocumentFile) => {\r\n if (file && file.url) {\r\n var win = window.open(file.url, '_blank');\r\n if (win) {\r\n win.focus();\r\n } \r\n }\r\n };\r\n\r\n const getLoader = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n Email Content\r\n \r\n \r\n \r\n <>\r\n {\r\n state.isLoading \r\n ? getLoader()\r\n : (\r\n <> \r\n {getFileItems(state.files)} \r\n \r\n \r\n )\r\n }\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n","/* eslint-disable react-hooks/exhaustive-deps */\r\nimport React, { useRef, useState } from 'react';\r\nimport { makeStyles, Theme, createStyles, Avatar, Tooltip, withStyles, Paper, Button, ListItem, ListItemText, ListItemIcon } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport { mainTheme } from '../../Theme';\r\nimport { TaskDetails, TaskSummaryList } from '../../leadsDetail/LeadsDetailRepository';\r\nimport { EnquiryDetail } from '../models/Enquiry';\r\nimport CheckOutlinedIcon from '@material-ui/icons/CheckOutlined';\r\nimport AssignmentIndOutlinedIcon from '@material-ui/icons/AssignmentIndOutlined';\r\nimport PeopleOutlineOutlinedIcon from '@material-ui/icons/PeopleOutlineOutlined';\r\nimport CallOutlinedIcon from '@material-ui/icons/CallOutlined';\r\nimport SmsOutlinedIcon from '@material-ui/icons/SmsOutlined';\r\nimport NotesOutlinedIcon from '@material-ui/icons/NotesOutlined';\r\nimport MailOutlinedIcon from '@material-ui/icons/MailOutlined';\r\nimport PermContactCalendarOutlinedIcon from '@material-ui/icons/PermContactCalendarOutlined';\r\nimport NotListedLocationOutlinedIcon from '@material-ui/icons/NotListedLocationOutlined';\r\nimport DraftsOutlinedIcon from '@material-ui/icons/DraftsOutlined';\r\nimport { Colors, hashString } from '../board/BoardCardDraggable';\r\nimport NotInterestedOutlinedIcon from '@material-ui/icons/NotInterestedOutlined';\r\nimport EventOutlinedIcon from '@material-ui/icons/EventOutlined';\r\nimport SupervisorAccountOutlinedIcon from '@material-ui/icons/SupervisorAccountOutlined';\r\n// import { MatterTerminology } from '../../MatterTerminology';\r\nimport { formatNumber } from '../../helpers/ChartHelper';\r\n// import { CurrencySymbolData, retrieveCurrencySymbolData } from '../../ClientAndContactDetails/referrals/ReferralsDetailsRepository';\r\nimport { EmailContentDialog } from './EmailContentDialog';\r\nimport { TimezoneOption, } from '../../lookupConfiguration/selectors/TimezoneSelector';\r\nimport LinkOffOutlinedIcon from '@material-ui/icons/LinkOffOutlined';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport RemoveCircleOutlinedIcon from '@material-ui/icons/RemoveCircleOutlined';\r\nimport { green } from '@material-ui/core/colors';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { TranslationTextList } from '../../locales/common';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n padding: '20px 0',\r\n flex: 1,\r\n display: 'flex',\r\n flexFlow: 'column',\r\n overflowY: 'auto',\r\n marginBottom: '10px',\r\n // maxWidth: '500px',\r\n position: 'relative',\r\n },\r\n loadingRoot: {\r\n padding: '20px 0',\r\n flex: 1,\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n justifyContent: 'center',\r\n position: 'relative',\r\n marginBottom: '10px',\r\n },\r\n historyContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n margin: '0 -10px',\r\n width: '100%',\r\n padding: '10px 0',\r\n position: 'relative',\r\n '& > div': {\r\n padding: '0 10px',\r\n },\r\n '& .connector': {\r\n borderLeft: '1px solid #bdbdbd',\r\n position: 'absolute',\r\n top: 0,\r\n bottom: 0,\r\n left: '30px',\r\n }\r\n },\r\n historyIcon: {\r\n \r\n },\r\n taskDetails: {\r\n // flex: 1,\r\n // maxWidth: '150px',\r\n minWidth: '130px',\r\n minHeight: '100%',\r\n display: 'flex',\r\n flexFlow: 'column',\r\n justifyContent: 'center',\r\n '& .description': {\r\n fontWeight: 600,\r\n marginBottom: '3px',\r\n color: mainTheme.BrandColors.TemplatePrimary\r\n },\r\n '& .date': {\r\n fontStyle: 'italic',\r\n color: '#a7a7a7'\r\n },\r\n '& .due-date': {\r\n color: '#fcba03'\r\n },\r\n '& .overdue': {\r\n color: 'red',\r\n },\r\n '& .status': {\r\n fontStyle: 'italic',\r\n color: '#a7a7a7'\r\n }\r\n },\r\n createClient: {\r\n // backgroundColor: mainTheme.UtilityColors.Positive\r\n backgroundColor: '#cfa2a1'\r\n },\r\n assignedEnquiry: {\r\n // backgroundColor: mainTheme.UtilityColors.Neutral\r\n backgroundColor: '#a8dda8'\r\n },\r\n followUp: {\r\n // backgroundColor: mainTheme.UtilityColors.Negative\r\n backgroundColor: '#bdb2d1'\r\n },\r\n enquiryCreated: {\r\n backgroundColor: 'orange'\r\n },\r\n contentDetails: {\r\n flex: 1,\r\n '& .title': {\r\n fontSize: 14,\r\n fontWeight: 300,\r\n color: '#000',\r\n marginBottom: 5,\r\n },\r\n '& .description': {\r\n marginTop: 10,\r\n fontSize: 14,\r\n color: '#000',\r\n maxWidth: '340px', \r\n },\r\n '& .wordBreak': {\r\n 'word-break': 'break-all' \r\n },\r\n '& .author': {\r\n fontStyle: 'italic',\r\n fontSize: 12,\r\n '& span': {\r\n fontWeight: 600\r\n }\r\n }\r\n },\r\n chips: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n },\r\n chip: {\r\n marginLeft: '8px'\r\n },\r\n detailsContainer: {\r\n padding: '10px !important',\r\n width: '100%',\r\n position: 'relative',\r\n // '& span': {\r\n // fontWeight: 600,\r\n // fontStyle: 'italic'\r\n // } \r\n '& .due-date': {\r\n color: '#fcba03'\r\n },\r\n },\r\n dialogRoot: {\r\n '& .downshift-wrapper': {\r\n flex: 1,\r\n padding: 0,\r\n }\r\n },\r\n header: {\r\n textTransform: 'capitalize',\r\n '& .MuiTypography-root': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n }\r\n },\r\n dialogPaper: {\r\n height: '100%',\r\n },\r\n emailContentButton: {\r\n textAlign: 'end',\r\n position: 'absolute',\r\n right: 10,\r\n top: 10,\r\n },\r\n emailDetails: {\r\n textAlign: 'start',\r\n paddingRight: 80,\r\n '& .emailDescription': {\r\n color: '#000',\r\n fontSize: 14\r\n }\r\n },\r\n divider: {\r\n margin: 10,\r\n width: '100%',\r\n },\r\n notes: {\r\n backgroundColor: 'rgba(243, 243, 158, 0.29)',\r\n padding: '10px',\r\n },\r\n assignButton: {\r\n position: 'absolute',\r\n right: 10,\r\n bottom: 10,\r\n textTransform: 'none'\r\n }\r\n })\r\n);\r\n\r\nexport enum HistoryActivityWidth {\r\n FULL_WIDTH = 0,\r\n NORMAL\r\n}\r\ninterface HistoryActivityProps {\r\n className?: string;\r\n guid?: string;\r\n enquiryDetail: EnquiryDetail;\r\n // sortColumn: string | null;\r\n sortDirection: string | null;\r\n // isRefreshData?: boolean;\r\n width?: HistoryActivityWidth;\r\n onCreateClient?: (isCreateClient: boolean) => void;\r\n autoScroll?: boolean;\r\n currency: string;\r\n timezone: TimezoneOption[];\r\n leadDetailsHistory: TaskSummaryList;\r\n onAssign?: (task: TaskDetails) => void;\r\n canCreateMatter: boolean;\r\n}\r\n\r\ninterface HistoryActivityState {\r\n showEmailContent: boolean;\r\n taskGuid?: string | null;\r\n // isLoading: boolean;\r\n}\r\n\r\n// tslint:disable-next-line: no-anyW\r\nexport const HistoryActivity: React.FC = props => {\r\n \r\n const { t } = useTranslation() as {\r\n t: (key: keyof TranslationTextList) => string;\r\n };\r\n \r\n const classes = useStyles();\r\n\r\n // const [leadDetailsHistory, setLeadDetailsHistory] = useState({\r\n // tasks: [],\r\n // actualRowCountForSearch: 0,\r\n // recordCount: 0\r\n // });\r\n\r\n const [state, setState] = useState({\r\n showEmailContent: false\r\n // isLoading: true\r\n });\r\n\r\n // const [currency, setCurrency] = useState('');\r\n // const [timezone, setTimezone] = useState();\r\n\r\n // tslint:disable-next-line: no-any\r\n const messagesEndRef = useRef(null);\r\n\r\n const scrollToBottom = () => {\r\n if (messagesEndRef && messagesEndRef.current) {\r\n messagesEndRef.current.scrollIntoView({ \r\n behavior: 'smooth',\r\n });\r\n }\r\n };\r\n\r\n // useEffect(() => {\r\n // if (props.guid) {\r\n // fetchCurrency();\r\n // fetchLeadDetailsHistory(props.guid);\r\n // fetchTimezone();\r\n // }\r\n // tslint:disable-next-line: align\r\n // }, [props.isRefreshData, props.guid]);\r\n\r\n // const fetchCurrency = () => {\r\n // retrieveCurrencySymbolData(\r\n // false,\r\n // // tslint:disable-next-line: no-any\r\n // (data: any) => onDataCurrency(data),\r\n // // tslint:disable-next-line:no-any\r\n // function (reason: any): void {\r\n // showNotification(null, reason, 'error');\r\n // });\r\n // };\r\n\r\n // const onDataCurrency = (data: CurrencySymbolData) => {\r\n // setCurrency(data.options.currencySymbol.symbol);\r\n // };\r\n\r\n // const fetchTimezone = () => {\r\n // retrieveTimezoneOptionData(\r\n // false,\r\n // // tslint:disable-next-line: no-console\r\n // (data) => onRetrieveTimezoneData(data),\r\n // // tslint:disable-next-line:no-any\r\n // function (reason: any): void {\r\n // showNotification(null, reason, 'error');\r\n // }\r\n // );\r\n // };\r\n\r\n // const onRetrieveTimezoneData = (data: TimezoneOptionData) => {\r\n // setTimezone(data.options.timezoneOption);\r\n // };\r\n \r\n // const fetchLeadDetailsHistory = (guid: string) => {\r\n // var leadQueryParams: LeadDetailsHistoryQueryParams = {\r\n // offset: null,\r\n // first: null,\r\n // filter: null,\r\n // sortColumn: props.sortColumn,\r\n // sortDirection: props.sortDirection,\r\n // entityGuidID: guid\r\n // };\r\n\r\n // retrieveLeadDetailsHistoryData(\r\n // leadQueryParams,\r\n // true,\r\n // // tslint:disable-next-line: no-any\r\n // (data: any) => onDataRetrieved(data),\r\n // // tslint:disable-next-line\r\n // function (reason: any): void {\r\n // showNotification(null, reason, 'error');\r\n // }\r\n // );\r\n // };\r\n\r\n // const onDataRetrieved = (data: LeadDetailsHistoryData) => {\r\n \r\n // setLeadDetailsHistory(data.task.summaryList);\r\n \r\n // const summaryList = data.task.summaryList;\r\n\r\n // // const task = summaryList.tasks[summaryList.tasks.length - 1];\r\n // const createClientTask = summaryList.tasks.find((task: TaskDetails) => {\r\n // return (task.taskTypeDescription.toLowerCase() === 'create client' || task.taskTypeDescription.toLowerCase() === 'create matter' ) \r\n // && task.taskStatusDescription.toLowerCase() === 'not started';\r\n // });\r\n\r\n // if (createClientTask) {\r\n // if (props.onCreateClient) {\r\n // props.onCreateClient(true);\r\n // }\r\n // } else {\r\n // if (props.onCreateClient) {\r\n // props.onCreateClient(false);\r\n // }\r\n // }\r\n\r\n // // const createContactTask = summaryList.tasks.find((task: TaskDetails) => {\r\n // // return task && task.outcome && task.outcome.toLowerCase() === 'not proceeding';\r\n // // });\r\n\r\n // // if (props.onCreateContact) {\r\n // // props.onCreateContact(createContactTask ? true : false);\r\n // // }\r\n\r\n // setState((prevState) => {\r\n // return {\r\n // ...prevState,\r\n // isLoading: false\r\n // };\r\n // });\r\n\r\n // if (props.autoScroll !== undefined && props.autoScroll === true) {\r\n // setTimeout(scrollToBottom, 1000);\r\n // } \r\n // };\r\n\r\n const convertMentionInCommentToHtml = (comment: string, label?: string) => {\r\n let regex = /@\\[.+?\\]\\(.+?\\)/gm;\r\n let displayRegex = /@\\[.+?\\]/g;\r\n let idRegex = /\\(.+?\\)/g;\r\n let matches = comment.match(regex);\r\n // tslint:disable-next-line: no-any\r\n let arr: any = [];\r\n let output = label ? label + ': ' : '';\r\n \r\n // tslint:disable-next-line: no-unused-expression\r\n if (matches) {\r\n // tslint:disable-next-line: no-any\r\n matches.forEach((m: any) => {\r\n let id = m.match(idRegex)[0].replace('(', '').replace(')', '');\r\n let display = m.match(displayRegex)[0].replace('@[', '').replace(']', '');\r\n\r\n arr.push({ id: id, display: display });\r\n });\r\n\r\n let newComment = comment.split(regex);\r\n \r\n for (let i = 0; i < newComment.length; i++) {\r\n const c = newComment[i];\r\n if (i === newComment.length - 1) {\r\n output += c;\r\n } else {\r\n output += c + `${arr[i].display.split('|')[0]}`;\r\n }\r\n }\r\n } else {\r\n output = comment.replace(/\\n/g, '
');\r\n }\r\n\r\n // tslint:disable-next-line: no-console\r\n console.log('output', output);\r\n\r\n return output;\r\n }; \r\n\r\n // const stringToColour = (str: string | null) => {\r\n // if (str) {\r\n // var hash = 0;\r\n // for (var i = 0; i < str.length; i++) {\r\n // // tslint:disable-next-line: no-bitwise\r\n // hash = str.charCodeAt(i) + ((hash << 5) - hash);\r\n // }\r\n // var colour = '#';\r\n // // tslint:disable-next-line: no-duplicate-variable\r\n // for (var i = 0; i < 3; i++) {\r\n // // tslint:disable-next-line: no-bitwise\r\n // var value = (hash >> (i * 8)) & 0xFF;\r\n // colour += ('00' + value.toString(16)).substr(-2);\r\n // }\r\n // return colour;\r\n // }\r\n // return '#808080';\r\n // };\r\n\r\n const isDateDue = (value: Date) => {\r\n const currentDate = moment();\r\n const diff = moment(value).diff(currentDate, 'days');\r\n\r\n return diff < 0;\r\n };\r\n \r\n const stringToColour = (str: string | null) => {\r\n return Colors[(str === '' || str === null) ? Colors[Colors.length] : (hashString(str) % Colors.length) - 1];\r\n };\r\n\r\n const showDateEndOfFromNow = (value: Date | string) => {\r\n // const utc = moment.utc(value).format();\r\n // return moment.utc(value).endOf('day').fromNow();\r\n return moment(value).fromNow();\r\n\r\n };\r\n\r\n const formatDate = (date: Date | string, format: string) => {\r\n // return moment.utc(date).format(format);\r\n return moment(date).format(format);\r\n };\r\n\r\n // const isDateDue = (value: Date) => {\r\n // const currentDate = moment();\r\n // const diff = moment(value).diff(currentDate, 'days');\r\n\r\n // return diff < 0;\r\n // };\r\n\r\n const getWidth = () => {\r\n if (props.width === HistoryActivityWidth.NORMAL) {\r\n return 'initial';\r\n } else if (props.width === HistoryActivityWidth.FULL_WIDTH) {\r\n return 'auto';\r\n } else {\r\n return 'initial';\r\n }\r\n };\r\n\r\n 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: 11,\r\n },\r\n }))(Tooltip);\r\n \r\n const getHistoryAvatar = (task: TaskDetails) => {\r\n \r\n if (task.taskTypeDescription && \r\n (task.taskTypeDescription.toLowerCase() === 'create client' || task.taskTypeDescription.toLowerCase() === 'create matter')) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (task.taskTypeDescription && task.taskTypeDescription.toLowerCase() === 'assign enquiry') {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (task.taskTypeInternalDescription && task.taskTypeInternalDescription === 'BookMeeting') {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (task.followUpActionSystemName && task.followUpActionSystemName === 'HadMeeting') {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else { // enquiry follow up\r\n if (task.followUpAction \r\n && (task.followUpAction.toLowerCase() === 'email' || task.followUpAction.toLowerCase() === 'emailed' )) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (task.followUpActionSystemName && task.followUpActionSystemName.toLowerCase() === 'sendemail') {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (task.followUpAction && \r\n (task.followUpAction.toLowerCase() === 'phone call' || task.followUpAction.toLowerCase() === 'phoned' )) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (task.followUpAction && task.followUpAction.toLowerCase() === 'sms') {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (task.followUpAction && task.followUpAction.toLowerCase() === 'internal note') {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (task.followUpAction && task.followUpAction.toLowerCase() === 'book a meeting') { // meeting task\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (task.followUpAction && task.followUpAction.toLowerCase() === 're-open enquiry') {\r\n return (\r\n \r\n \r\n \r\n ); \r\n } else if (task.followUpAction && task.followUpAction.toLowerCase() === 'unlink matter') {\r\n return (\r\n \r\n \r\n \r\n );\r\n \r\n } else { // Meeting\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n };\r\n\r\n const getHistoryDate = (task: TaskDetails) => {\r\n\r\n // if (task.taskTypeDescription.toLocaleLowerCase() === 'book meeting') {\r\n // return (\r\n // \r\n //
\r\n // {task.completedDate \r\n // ? showDateEndOfFromNow(task.dueDate ? task.dueDate : task.createdDate)\r\n // : {showDateEndOfFromNow(task.dueDate ? task.dueDate : task.createdDate)} \r\n // }\r\n //
\r\n //
\r\n // );\r\n // } else \r\n if (task.taskTypeInternalDescription === 'BookMeeting' && task.createdDate) {\r\n return (\r\n \r\n
\r\n {showDateEndOfFromNow(task.createdDate)}\r\n
\r\n
\r\n );\r\n }\r\n if (task.completedDate) {\r\n return (\r\n \r\n
\r\n {showDateEndOfFromNow(task.completedDate)}\r\n
\r\n
\r\n );\r\n } else if (task.dueDateUTC) {\r\n return (\r\n \r\n
\r\n {showDateEndOfFromNow(convertToLocalTimeZone(task.dueDateUTC.toString()))}\r\n
\r\n
\r\n );\r\n } else {\r\n return (\r\n
\r\n Due\r\n
\r\n );\r\n }\r\n };\r\n\r\n const getDescription = (task: TaskDetails) => {\r\n let actionedDescription = task.actionedDescription && task.actionedDescription.length > 0 \r\n ? task.actionedDescription \r\n : undefined;\r\n\r\n if (task.taskTypeDescription.toLowerCase() === 'enquiry follow up' || task.taskTypeDescription.toLowerCase() === 'book a meeting') {\r\n if (task.followUpAction && task.followUpAction.toLowerCase() === 're-open enquiry') {\r\n return actionedDescription ? actionedDescription : 'Re-Opened';\r\n } else if (task.completedDate) {\r\n return actionedDescription ? actionedDescription : task.followUpAction;\r\n } else if (task.dueDate) {\r\n return actionedDescription ? actionedDescription : 'Follow Up Due';\r\n } else {\r\n return actionedDescription ? actionedDescription : task.followUpAction;\r\n }\r\n } else {\r\n const enquiryText = task.isKeyOpportunity ? t('KeyOpportunity') : t('Enquiry');\r\n\r\n if (task.enquiryLinkedMatter) {\r\n return 'Link Matter';\r\n }\r\n\r\n let taskTypeDescription = task.taskTypeDescription.replace('Enquiry', enquiryText);\r\n\r\n if (taskTypeDescription === 'Create Matter' && props.enquiryDetail.isMatterCreated === false && props.enquiryDetail.isContactCreated === true && \r\n props.canCreateMatter === false) {\r\n taskTypeDescription = 'Create Contact';\r\n }\r\n\r\n return taskTypeDescription;\r\n }\r\n }; \r\n\r\n const onAssign = (task: TaskDetails) => () => {\r\n if (props.onAssign) {\r\n props.onAssign(task);\r\n }\r\n };\r\n\r\n const getAssignedTo = (task: TaskDetails) => {\r\n\r\n let uiUtcOffset = new Date().getTimezoneOffset() * -1;\r\n\r\n let uiTimeZoneDescription = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n\r\n if (props.timezone) {\r\n let uiTimeZone = props.timezone.find((item: TimezoneOption) => {\r\n return item.baseUtcOffset === uiUtcOffset;\r\n });\r\n\r\n if (uiTimeZone) {\r\n uiTimeZoneDescription = uiTimeZone.timezoneValue;\r\n }\r\n }\r\n\r\n if (task.isAssignedToTeam && task.assignedToName) {\r\n return (\r\n

\r\n {`Meeting scheduled at ${task.firmOffice} ${task.bookMeetingStartDateUTC ? `on ${moment(convertToLocalTimeZone(task.bookMeetingStartDateUTC.toString())).format('DD MMM YYYY hh:mm a')}` : ''} (${task.timezone ? uiTimeZoneDescription : ''})`}\r\n

\r\n );\r\n }\r\n\r\n if (!task.isAssignedToTeam && task.staff) {\r\n return (\r\n

\r\n {'Meeting with ' + task.staff + \r\n (task.firmOffice ? (' at ' + task.firmOffice + '' ) : '' ) +\r\n (task.bookMeetingStartDateUTC \r\n ? (' on ' + moment(convertToLocalTimeZone(task.bookMeetingStartDateUTC.toString())).format('DD MMM YYYY hh:mm a') ) \r\n : '' ) +\r\n (task.timezone ? ' (' + uiTimeZoneDescription + ')' : '')\r\n }\r\n

\r\n );\r\n }\r\n\r\n return undefined;\r\n \r\n };\r\n\r\n const getDetailContent = (task: TaskDetails) => {\r\n\r\n if (task.taskTypeDescription.toLowerCase() === 'assign enquiry' && task.assignedToGuidID) {\r\n return (\r\n \r\n
\r\n Assigned to {task.assignedToName} by {task.assignedByName}\r\n
\r\n {task.followUpNotes && (\r\n

\r\n )}\r\n \r\n );\r\n } else if (task.enquiryLinkedMatter || task.taskTypeDescription.toLowerCase() === 'link matter') {\r\n return (\r\n \r\n {task.ownerName && (\r\n

\r\n {task.ownerName}\r\n
\r\n )}\r\n {task.enquiryLinkedMatter \r\n ? (\r\n
\r\n {`${task.linkedMatterClient ? task.linkedMatterClient : '' } - ${task.linkedMatterTitle } (${task.enquiryLinkedMatter})`}\r\n
\r\n )\r\n : (\r\n

\r\n Matter synching is in progress. Please check again after a short while.\r\n

\r\n )\r\n }\r\n
\r\n );\r\n } else if (task.taskTypeInternalDescription === 'BookMeeting') {\r\n return (\r\n \r\n {task.emailContent && (\r\n
\r\n \r\n
\r\n \r\n )}\r\n {/* get the assign to for team and user */}\r\n {getAssignedTo(task)}\r\n\r\n {task.meetingNotes && (\r\n

{'Meeting Notes: ' + task.meetingNotes}

\r\n )}\r\n {task.sendConfirmation !== undefined && !task.isAssignedToTeam && (\r\n

{'Confirmation Sent: ' + (task.sendConfirmation ? 'Yes' : 'No')}

\r\n )}\r\n {task.feeApplicable && (\r\n

{'Fee Applicable: ' + props.currency + formatNumber(task.feeApplicable)}

\r\n )}\r\n {task.assignedToName && task.isAssignedToTeam && (\r\n

{`Assigned To: ${task.assignedToName}`}

\r\n )}\r\n {task.followUpNotes && (\r\n

\r\n )}\r\n

Created by: {task.assignedByName}
\r\n {task.canAssignMeeting && (\r\n \r\n )}\r\n
\r\n );\r\n } else if (task.taskTypeInternalDescription === 'MeetingTask' &&\r\n (task.followUpNotes || task.outcomeNotes)) {\r\n return (\r\n \r\n {task.assignedByName && (\r\n
\r\n {task.assignedByName}\r\n
\r\n )}\r\n {task.followUpNotes && (\r\n

\r\n )}\r\n {task.outcomeNotes && (\r\n

\r\n {'Previous Notes: ' + task.outcomeNotes +\r\n (task.createdDate ? ' (' + moment(task.createdDate).format('DD MMM YYYY') + ') ' : '')\r\n }\r\n

\r\n )}\r\n
\r\n );\r\n } else if (task.systemAction === 'CreateEmail') {\r\n return (\r\n \r\n {task.emailContent && (\r\n
\r\n \r\n
\r\n \r\n )}\r\n
\r\n {task.emailTemplateName && (\r\n

{'Template Name: ' + task.emailTemplateName}

\r\n )}\r\n {task.emailSubject !== undefined && (\r\n

{'Subject: ' + task.emailSubject}

\r\n )}\r\n {task.fromEmailAddress && (\r\n

{'From: ' + task.fromEmailAddress}

\r\n )}\r\n {task.toEmailAddresses && (\r\n

{'To: ' + task.toEmailAddresses}

\r\n )}\r\n {task.ccEmailAddresses && (\r\n

{'Cc: ' + task.ccEmailAddresses}

\r\n )} \r\n
Sent by: {task.assignedByName}
\r\n {task.outcomeNotes && (\r\n

\r\n {'Previous Notes: ' + task.outcomeNotes +\r\n (task.createdDate ? ' (' + moment(task.createdDate).format('DD MMM YYYY') + ') ' : '')\r\n }\r\n

\r\n )}\r\n
\r\n
\r\n );\r\n } else if ((task.dueDate && task.completedDate) && getDescription(task) !== 'Follow Up Due') {\r\n return (\r\n \r\n {task.assignedByName && (\r\n
\r\n {task.assignedByName}\r\n
\r\n )}\r\n {task.enquiryLinkedMatter && (\r\n
\r\n Filenumber: {task.enquiryLinkedMatter}\r\n
\r\n ) }\r\n {task.followUpNotes && (\r\n

\r\n )}\r\n {task.outcomeNotes && (\r\n

\r\n {'Previous Notes: ' + task.outcomeNotes +\r\n (task.createdDate ? ' (' + moment(task.createdDate).format('DD MMM YYYY') + ') ' : '')\r\n }\r\n

\r\n )} \r\n
\r\n );\r\n } else if (task.followUpNotes) {\r\n return (\r\n \r\n {task.assignedByName && (\r\n
\r\n {task.assignedByName}\r\n
\r\n )}\r\n

\r\n \r\n );\r\n } else if (getDescription(task) === 'Follow Up Due' && task.outcomeNotes) {\r\n return (\r\n \r\n {task.assignedByName && (\r\n

\r\n {task.assignedByName}\r\n
\r\n )} \r\n {task.outcomeNotes && (\r\n

{task.outcomeNotes}

\r\n )} \r\n
\r\n );\r\n } else if (task.assignedByName && task.completedDate) {\r\n return (\r\n \r\n {task.assignedByName && (\r\n
\r\n {task.assignedByName}\r\n
\r\n )}\r\n
\r\n );\r\n } else if (task.taskUpdateInProgress && task.isIntegrationFailed === false) {\r\n return (\r\n \r\n {task.assignedByName && (\r\n
\r\n In Progress\r\n
\r\n )}\r\n
\r\n );\r\n } else if (task.isIntegrationFailed) {\r\n return (\r\n \r\n {task.assignedByName && (\r\n <>\r\n
\r\n There was an issue with the integration. \r\n The following items marked with the tick have been created. \r\n Please try again by selecting the Create {props.canCreateMatter ? 'Matter' : 'Client'} button. \r\n Alternatively, if you have created the matter already, \r\n select the Mark as {props.canCreateMatter ? 'Matter' : 'Client'} Created button to link the matter to the enquiry.\r\n
\r\n \r\n \r\n \r\n {props.enquiryDetail.integrationContactId \r\n ? \r\n : \r\n } \r\n \r\n \r\n \r\n \r\n \r\n {props.enquiryDetail.integrationClientId \r\n ? \r\n : \r\n } \r\n \r\n \r\n {props.enquiryDetail.otherPartyFirstName && props.enquiryDetail.otherPartyLastName && \r\n \r\n \r\n \r\n {props.enquiryDetail.integrationOtherPartyId\r\n ? \r\n : \r\n } \r\n \r\n \r\n }\r\n {props.canCreateMatter &&\r\n <> \r\n \r\n \r\n \r\n {props.enquiryDetail.integrationMatterId \r\n ? \r\n : \r\n } \r\n \r\n \r\n \r\n \r\n \r\n {props.enquiryDetail.integrationMatterDocumentId \r\n ? \r\n : \r\n } \r\n \r\n \r\n \r\n }\r\n \r\n )}\r\n
\r\n );\r\n } else {\r\n return undefined;\r\n }\r\n };\r\n\r\n const activityContent = (task: TaskDetails) => {\r\n const showDetails = task.outcome && task.outcome.toLowerCase() === 'not proceeding' ? false : true;\r\n \r\n return (\r\n <>\r\n {props.sortDirection === 'DESC' && task.outcome && task.outcome.toLowerCase() === 'not proceeding' && notProceeding(task)}\r\n\r\n {showDetails === true && (\r\n
\r\n
\r\n
\r\n {getHistoryAvatar(task)}\r\n
\r\n
\r\n
\r\n {getDescription(task)}\r\n
\r\n {getHistoryDate(task)}\r\n
\r\n
\r\n {getDetailContent(task)}\r\n
\r\n
\r\n )}\r\n\r\n {props.sortDirection === 'ASC' && task.outcome && task.outcome.toLowerCase() === 'not proceeding' && notProceeding(task)}\r\n \r\n );\r\n };\r\n\r\n const enquiryCreated = () => {\r\n return (\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n Created\r\n
\r\n {props.enquiryDetail && props.enquiryDetail.createdDate && (\r\n \r\n
\r\n {showDateEndOfFromNow(props.enquiryDetail.createdDate)}\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n \r\n {props.enquiryDetail.areaOfLaw && (\r\n
\r\n {props.enquiryDetail.source \r\n ? props.enquiryDetail.areaOfLaw + ' (' + props.enquiryDetail.source.trim() + ')'\r\n : props.enquiryDetail.areaOfLaw\r\n }\r\n
\r\n )}\r\n {props.enquiryDetail.natureOfEnquiry && (\r\n

{props.enquiryDetail.natureOfEnquiry}

\r\n )}\r\n {/* TODO: Show Created by as well. We don't have CreatedBy Value yet */}\r\n
Created by: {props.enquiryDetail.createdByName}
\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n const notProceeding = (task: TaskDetails) => {\r\n return (\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n Not Proceeding\r\n
\r\n {task.updatedDate && (\r\n \r\n
\r\n {showDateEndOfFromNow(task.updatedDate)}\r\n
\r\n
\r\n \r\n )}\r\n
\r\n
\r\n \r\n {task.assignedByName && (\r\n
{task.assignedByName}
\r\n )}\r\n {task.followUpNotes && (\r\n

\r\n )}\r\n {task.reason && (\r\n

{task.reason}

\r\n )} \r\n {task.referredToFirmName && (\r\n

Referred To: {task.referredToFirmName}

\r\n )}\r\n {task.notProceedingNotes && (\r\n

{task.notProceedingNotes}

\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n const taskList = JSON.parse(JSON.stringify(props.leadDetailsHistory.tasks));\r\n\r\n const taskCreateClient = taskList.find((task: TaskDetails) => {\r\n return (task.taskTypeDescription.toLowerCase() === 'create client' || task.taskTypeDescription.toLowerCase() === 'create matter') \r\n && task.taskStatusDescription.toLowerCase() === 'not started';\r\n });\r\n\r\n let newTasks = taskList;\r\n\r\n if (taskCreateClient) {\r\n const index = taskList.indexOf(taskCreateClient);\r\n newTasks.splice(index, 1);\r\n }\r\n\r\n const onCloseEmailContent = () => {\r\n setState((prevState) => {\r\n return {\r\n ...prevState,\r\n showEmailContent: false,\r\n taskGuid: undefined\r\n };\r\n });\r\n };\r\n\r\n // tslint:disable-next-line: no-any\r\n // const convertToTimeZoneByOffSet = (date: Date | null, offset: any) => {\r\n // const momentDate = moment(date);\r\n // let uiDate = null;\r\n // if (momentDate.isValid() && date) {\r\n // uiDate = momentDate.utc().add(offset, 'minutes').toDate();\r\n // }\r\n // return uiDate;\r\n // }; \r\n \r\n const convertToLocalTimeZone = (date: string) => {\r\n var oldDate = new Date(date);\r\n var newDate = new Date(date);\r\n newDate.setMinutes(oldDate.getMinutes() - oldDate.getTimezoneOffset());\r\n // console.log('newDate', newDate);\r\n return newDate;\r\n }; \r\n\r\n // if (state.isLoading) {\r\n // return (\r\n //
\r\n // \r\n //
\r\n // );\r\n // }\r\n\r\n if (props.autoScroll !== undefined && props.autoScroll === true) {\r\n setTimeout(scrollToBottom, 1000);\r\n } \r\n\r\n return (\r\n
\r\n {\r\n (state.showEmailContent && state.taskGuid) && (\r\n \r\n // \r\n // \r\n // Email Content\r\n // \r\n // \r\n // \r\n // <>\r\n // {'Attachments'} \r\n // {getFileItems(state.files)}\r\n // \r\n // \r\n // \r\n // \r\n // \r\n )\r\n }\r\n {props.sortDirection === 'ASC' && enquiryCreated()}\r\n \r\n {newTasks.map((task: TaskDetails) => activityContent(task))}\r\n\r\n {taskCreateClient && \r\n activityContent(taskCreateClient)\r\n }\r\n\r\n {props.sortDirection === 'DESC' && enquiryCreated()}\r\n
\r\n
\r\n );\r\n};\r\n","import React from 'react';\r\nimport { makeStyles, Theme, createStyles } from '@material-ui/core/styles';\r\nimport { ICellRendererParams } from '@ag-grid-community/core';\r\nimport { DateTimeDisplayStyle, FormattedDateTime } from '../../components/DataDisplay/FormattedDateTime';\r\nimport moment from 'moment';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n root: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center'\r\n }\r\n })\r\n);\r\n\r\ninterface CellProps extends ICellRendererParams {}\r\n\r\n// tslint:disable-next-line: no-any\r\nexport const DueDateRenderer: React.FC = (props) => {\r\n const classes = useStyles();\r\n\r\n const isDateDue = (value: Date) => {\r\n const currentDate = moment();\r\n const diff = moment(value).diff(currentDate, 'days');\r\n\r\n return diff < 0;\r\n };\r\n \r\n if (props.value === undefined || props.value === null) {\r\n return
;\r\n }\r\n \r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n","import { TaskDetails, TaskSummaryList } from '../../leadsDetail/LeadsDetailRepository';\r\nimport { EnquiryDetail, EnquiryDetailCustomField } from '../models/Enquiry';\r\nimport '../../App.css';\r\nimport { TimezoneOption, } from '../../lookupConfiguration/selectors/TimezoneSelector';\r\nimport { jsPDF } from 'jspdf';\r\nimport moment from 'moment';\r\nimport { MatterTerminology } from '../../MatterTerminology';\r\nimport { formatNumber } from '../../helpers/ChartHelper';\r\nimport html2canvas from 'html2canvas';\r\nimport { CustomFieldByHierarchy } from '../../enquiryCustomFields/CustomFieldRepositores';\r\n\r\nconst formatDate = (value: Date, format: string) => {\r\n return moment(value).format(format);\r\n};\r\n\r\nconst setTitle = (title: string | null) => {\r\n if (title !== null && title !== '' && title !== 'None') {\r\n return '' + title + ' ';\r\n }\r\n\r\n return '';\r\n};\r\n\r\nconst convertDate = (date: Date | null) => {\r\n if (date) {\r\n return moment(date).format('DD-MMM-YYYY');\r\n }\r\n return null;\r\n};\r\n\r\nconst convertToLocalTimeZone = (date: string) => {\r\n var oldDate = new Date(date);\r\n var newDate = new Date(date);\r\n newDate.setMinutes(oldDate.getMinutes() - oldDate.getTimezoneOffset());\r\n return newDate;\r\n};\r\n\r\nconst convertMentionInCommentToHtml = (comment: string, label?: string) => {\r\n let regex = /@\\[.+?\\]\\(.+?\\)/gm;\r\n let displayRegex = /@\\[.+?\\]/g;\r\n let idRegex = /\\(.+?\\)/g;\r\n let matches = comment.match(regex);\r\n // tslint:disable-next-line: no-any\r\n let arr: any = [];\r\n \r\n // tslint:disable-next-line: no-unused-expression\r\n matches &&\r\n // tslint:disable-next-line: no-any\r\n matches.forEach((m: any) => {\r\n let id = m.match(idRegex)[0].replace('(', '').replace(')', '');\r\n let display = m.match(displayRegex)[0].replace('@[', '').replace(']', '');\r\n\r\n arr.push({ id: id, display: display });\r\n });\r\n let newComment = comment.split(regex);\r\n let output = label ? label + ': ' : '';\r\n for (let i = 0; i < newComment.length; i++) {\r\n const c = newComment[i];\r\n if (i === newComment.length - 1) {\r\n output += c;\r\n } else {\r\n output += c + `${arr[i].display.split('|')[0]}`;\r\n }\r\n }\r\n\r\n return output;\r\n}; \r\n const historyHtml = (enquiryDetail: EnquiryDetail, currency: string, timezone: TimezoneOption[], leadDetailsHistory: TaskSummaryList, customFieldByHierarchy?: CustomFieldByHierarchy[]) => {\r\n const styles = `\r\n .history-body {\r\n margin: 0;\r\n display: flex;\r\n flex-flow: column;\r\n font-family: 'Nunito', Arial, Helvetica, sans-serif;\r\n font-size: 10px;\r\n }\r\n .history-header {\r\n display: flex;\r\n align-items: center;\r\n flex-shrink: 1;\r\n padding: 15px 15px 0px 15px;\r\n }\r\n .history-header .divider {\r\n width: 1px;\r\n height: 100%;\r\n border-left: 1px solid #D9DFF7;\r\n margin: 0 20px;\r\n }\r\n .history-main {\r\n flex: 1;\r\n padding: 0 15px;\r\n }\r\n .logo {\r\n max-width: 200px;\r\n width: 100%;\r\n height: auto;\r\n }\r\n .logo-title {\r\n font-size: 22px;\r\n font-weight: 300;\r\n }\r\n .section {\r\n padding: 10px 0;\r\n max-width: 500px;\r\n }\r\n .section .details {\r\n display: flex;\r\n }\r\n .section-enquiry .details > div {\r\n display: flex;\r\n }\r\n .section-enquiry .detail {\r\n display: flex;\r\n flex-flow: column;\r\n flex: 1;\r\n }\r\n .section-enquiry .detail > div {\r\n display: flex;\r\n }\r\n .section-enquiry .detail-1 > div svg {\r\n width: 17px;\r\n height: 17px;\r\n margin-right: 5px;\r\n }\r\n .section-enquiry .detail-2 {\r\n align-items: flex-end;\r\n }\r\n .section-enquiry .detail-3 {\r\n align-items: flex;\r\n }\r\n .section-enquiry .detail > div {\r\n padding: 2.5px 0;\r\n }\r\n .section-title {\r\n font-size: 16px;\r\n font-weight: 400;\r\n color: #5173FF;\r\n margin: 0;\r\n }\r\n .subsection-title {\r\n font-size: 12px;\r\n font-weight: 400;\r\n color: #5173FF;\r\n margin: 5px 0;\r\n }\r\n .subsection-subtitle {\r\n font-size: 10px;\r\n font-weight: 400;\r\n color: #5173FF;\r\n margin: 5px 0;\r\n }\r\n .section-summary-content {\r\n display: flex;\r\n margin: 0 -10px;\r\n }\r\n .section-summary-content .summary-col {\r\n flex: 1;\r\n padding: 0 10px;\r\n }\r\n .section-summary-content .detail-form {\r\n display: flex;\r\n padding: 2.5px 0;\r\n margin: 0 -5px;\r\n }\r\n .section-summary-content .detail-form .detail-label {\r\n font-weight: 600;\r\n padding: 0 5px;\r\n /* flex: 1 */\r\n }\r\n .section-summary-content .detail-form .detail-value {\r\n font-weight: 400;\r\n padding: 0 5px;\r\n /* flex: 2; */\r\n }\r\n .section-history-content .history {\r\n padding: 0;\r\n }\r\n .section-history-content .history-header {\r\n margin: 0 -10px;\r\n display: flex;\r\n }\r\n .section-history-content .history-header > div {\r\n padding: 0 10px;\r\n }\r\n .section-history-content .history-title {\r\n font-weight: 600;\r\n }\r\n .history-content-description {\r\n color: #000000;\r\n }\r\n .detail-text {\r\n display: 'flex',\r\n }\r\n .detail-text-label {\r\n margin-right: 5px;\r\n font-weight: 600;\r\n }\r\n .lists {\r\n margin-bottom: 0;\r\n }\r\n .page-Break {\r\n page-break-after: always;\r\n }\r\n input[type='checkbox'] {\r\n margin: 0 !important;\r\n width: 16px;\r\n }\r\n .checkbox-group {\r\n justify-content: space-between;\r\n }\r\n .checkbox-group div {\r\n width: 200px;\r\n }\r\n .custom-field-item {\r\n margin-left: -20px;\r\n }\r\n `;\r\n\r\n const htmlElememnt = `\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n

Enquiry Details

\r\n
\r\n
\r\n
${setTitle(enquiryDetail.title)}${enquiryDetail.firstName} ${enquiryDetail.lastName}
\r\n ${ enquiryDetail.email && enquiryDetail.email !== '' ?\r\n `
\r\n Email:\r\n ${enquiryDetail.email.trim()}\r\n
` : ''}\r\n ${enquiryDetail.phone && enquiryDetail.phone !== '' ? (\r\n `\r\n
\r\n Phone: \r\n ${enquiryDetail.phone}\r\n
\r\n `) : ''}\r\n ${enquiryDetail.mobile && enquiryDetail.mobile !== '' ? (\r\n `\r\n
\r\n Mobile:\r\n ${enquiryDetail.mobile}\r\n
\r\n `) : ''}\r\n
\r\n
Source:
\r\n
${enquiryDetail.source}
\r\n
\r\n ${enquiryDetail.referrerName && enquiryDetail.referrerName !== '' ? (\r\n `\r\n
\r\n Referrer:\r\n ${enquiryDetail.referrerName}\r\n
\r\n `) : ''}\r\n \r\n ${enquiryDetail.areaOfLaw && enquiryDetail.areaOfLaw !== '' ? (\r\n `\r\n
\r\n
Area of Law:
\r\n
${enquiryDetail.areaOfLaw}
\r\n
\r\n `\r\n ) : '' }\r\n ${enquiryDetail.isClosed && enquiryDetail.outcomeDate ? (\r\n `\r\n
\r\n
Date Closed:
\r\n
${convertDate(enquiryDetail.outcomeDate)}
\r\n
\r\n `\r\n ) : '' }\r\n ${enquiryDetail.office && enquiryDetail.office !== '' ? (\r\n `\r\n
\r\n
Location:
\r\n
${enquiryDetail.office}
\r\n
\r\n `\r\n ) : '' }\r\n
\r\n
\r\n
Created ${formatDate(enquiryDetail.createdDate, 'DD MMM YYYY hh:mm a')}
\r\n ${enquiryDetail.dateAssigned ? (\r\n `
Assigned ${formatDate(enquiryDetail.dateAssigned, 'DD MMM YYYY hh:mm a')}
`\r\n ) : ''}\r\n
\r\n
\r\n
\r\n
\r\n ${enquiryDetail.natureOfEnquiry && enquiryDetail.natureOfEnquiry !== '' ? (\r\n `\r\n
\r\n
Nature of Enquiry:
\r\n
${enquiryDetail.natureOfEnquiry}
\r\n
\r\n `\r\n ) : '' }\r\n
\r\n
\r\n
\r\n
\r\n ${enquiryDetail.sourceNotes && enquiryDetail.sourceNotes !== '' ?\r\n `
\r\n Source Notes:\r\n ${enquiryDetail.sourceNotes || 0}\r\n
` : '' }\r\n ${enquiryDetail.internalNotes && enquiryDetail.internalNotes !== '' ?\r\n `
\r\n Internal Notes:\r\n ${enquiryDetail.internalNotes || 0}\r\n
` : '' }\r\n
\r\n
\r\n
\r\n
\r\n ${enquiryDetail.eventAndCampaignName && enquiryDetail.eventAndCampaignName !== '' ?\r\n `
\r\n Event and Campaign:\r\n ${enquiryDetail.eventAndCampaignName || 0}\r\n
` : '' }\r\n ${enquiryDetail.eventAndCampaignNotes && enquiryDetail.eventAndCampaignNotes !== '' ?\r\n `
\r\n Event and Campaign Notes:\r\n ${enquiryDetail.eventAndCampaignNotes || 0}\r\n
` : '' }\r\n
\r\n
\r\n
\r\n ${getOrganizationDetails(enquiryDetail)}\r\n ${getEnquiryValue(enquiryDetail)}\r\n ${getClientDetails(enquiryDetail)}\r\n ${getOtherPartyDetails(enquiryDetail)}\r\n ${getResponseTextDetails(enquiryDetail)}\r\n ${getDocumentDetails(enquiryDetail, '')}\r\n ${getCustomFieldDetails(enquiryDetail, currency, customFieldByHierarchy)}\r\n ${getDigitalTrackingFields(enquiryDetail)}\r\n
\r\n

History

\r\n
\r\n ${getHistoryContent(enquiryDetail, currency, timezone, leadDetailsHistory)}\r\n
\r\n
\r\n
\r\n \r\n \r\n `;\r\n\r\n // return <>{htmlElememnt};\r\n return htmlElememnt;\r\n};\r\n\r\nconst getHistoryContent = (enquiryDetail: EnquiryDetail, currency: string, timezone: TimezoneOption[], leadDetailsHistory: TaskSummaryList) => {\r\n let historyContent = '';\r\n\r\n const taskList = JSON.parse(JSON.stringify(leadDetailsHistory.tasks));\r\n\r\n const taskCreateClient = taskList.find((task: TaskDetails) => {\r\n return (task.taskTypeDescription.toLowerCase() === 'create client' || task.taskTypeDescription.toLowerCase() === 'create matter') \r\n && task.taskStatusDescription.toLowerCase() === 'not started';\r\n });\r\n\r\n let newTasks = taskList;\r\n\r\n if (taskCreateClient) {\r\n const index = taskList.indexOf(taskCreateClient);\r\n newTasks.splice(index, 1);\r\n }\r\n\r\n if (taskCreateClient) {\r\n historyContent = historyContent + getHistoryActivity(taskCreateClient, timezone, currency, 0);\r\n }\r\n\r\n newTasks.map((task: TaskDetails, index: number) => \r\n historyContent = historyContent + getHistoryActivity(task, timezone, currency, index)\r\n );\r\n\r\n let createHistory = getCreatedContent(enquiryDetail);\r\n\r\n return historyContent + createHistory;\r\n};\r\n\r\nconst getCreatedContent = (enquiryDetail: EnquiryDetail) => {\r\n let areaOfLawTitle = enquiryDetail.areaOfLaw \r\n ? enquiryDetail.source \r\n ? enquiryDetail.areaOfLaw + ' (' + enquiryDetail.source.trim() + ')'\r\n : enquiryDetail.areaOfLaw\r\n : '';\r\n\r\n return `\r\n
\r\n
\r\n ${enquiryDetail.createdDate ? (\r\n `
${formatDate(enquiryDetail.createdDate, 'Do MMM YYYY hh:mm a')}
`\r\n ) : '' }\r\n
Created
\r\n
\r\n
\r\n
    \r\n ${areaOfLawTitle \r\n ? \r\n (\r\n `
  • ${areaOfLawTitle}
  • `\r\n )\r\n : ''\r\n }\r\n ${enquiryDetail.natureOfEnquiry \r\n ? \r\n (\r\n `
  • ${enquiryDetail.natureOfEnquiry}
  • `\r\n )\r\n : ''\r\n }\r\n ${enquiryDetail.createdByName \r\n ?\r\n (\r\n `
  • Created by: ${enquiryDetail.createdByName}
  • `\r\n )\r\n : ''\r\n }\r\n
\r\n
\r\n
\r\n `;\r\n};\r\n\r\nconst getDescription = (task: TaskDetails) => {\r\n let actionedDescription = task.actionedDescription && task.actionedDescription.length > 0 \r\n ? task.actionedDescription \r\n : undefined;\r\n\r\n if (task.taskTypeDescription.toLowerCase() === 'enquiry follow up') {\r\n if (task.followUpAction && task.followUpAction.toLowerCase() === 're-open enquiry') {\r\n return actionedDescription ? actionedDescription : 'Re-Opened';\r\n } else if (task.completedDate) {\r\n return actionedDescription ? actionedDescription : task.followUpAction;\r\n } else if (task.dueDate) {\r\n return actionedDescription ? actionedDescription : 'Follow Up Due';\r\n } else {\r\n return actionedDescription ? actionedDescription : task.followUpAction;\r\n }\r\n } else {\r\n const enquiryText = task.isKeyOpportunity ? MatterTerminology.KeyOpportunity : MatterTerminology.Enquiry;\r\n\r\n if (task.enquiryLinkedMatter) {\r\n return 'Link Matter';\r\n }\r\n\r\n const taskTypeDescription = task.taskTypeDescription.replace('Enquiry', enquiryText);\r\n return taskTypeDescription;\r\n }\r\n};\r\n\r\nconst getHistoryDate = (task: TaskDetails) => {\r\n if (task.taskTypeInternalDescription === 'BookMeeting' && task.updatedDate) {\r\n return formatDate(task.updatedDate, 'Do MMM YYYY hh:mm a');\r\n }\r\n\r\n if (task.updatedDate) {\r\n return formatDate(task.updatedDate, 'Do MMM YYYY hh:mm a');\r\n } else if (task.dueDateUTC) {\r\n return formatDate(convertToLocalTimeZone(task.dueDateUTC.toString()), 'Do MMM YYYY hh:mm a');\r\n } else {\r\n // this is Due before not current date\r\n return formatDate(new Date(), 'Do MMM YYYY hh:mm a');\r\n }\r\n\r\n};\r\n\r\nconst getOrganizationDetails = (ed: EnquiryDetail) => {\r\n return (`\r\n ${(ed.organisation || ed.positionAtOrganisation) ? \r\n `
\r\n
\r\n
\r\n

Organization

\r\n ${ed.organisation && ed.organisation !== '' ? \r\n `
\r\n Organization Name:\r\n ${ed.organisation}\r\n
` : ''}\r\n ${ed.positionAtOrganisation && ed.positionAtOrganisation !== '' ? \r\n `
\r\n Position:\r\n ${ed.positionAtOrganisation}\r\n
` : ''}\r\n
\r\n
\r\n
` : ''}\r\n `);\r\n};\r\n\r\nconst getResponseTextDetails = (ed: EnquiryDetail) => {\r\n return (`\r\n ${(ed.responseText) ? \r\n `
\r\n
\r\n
\r\n

Detailed Enquiry Notes

\r\n ${ed.responseText && ed.responseText !== '' ?\r\n `
\r\n Notes:\r\n ${ed.responseText}\r\n
` : '' }\r\n
\r\n
\r\n
` : ''}\r\n `);\r\n};\r\n\r\nconst getEnquiryValue = (enquiryDetail: EnquiryDetail) => {\r\n return (`\r\n
\r\n
\r\n ${(enquiryDetail.estimatedFees || enquiryDetail.enquiryQuality) ? \r\n `
\r\n

Enquiry Value

\r\n
\r\n Estimated Fees:\r\n ${enquiryDetail.estimatedFees || 0}\r\n
\r\n
\r\n Includes Taxes:\r\n \r\n \r\n \r\n
\r\n
\r\n Enquiry Quality:\r\n ${enquiryDetail.enquiryQuality || 0}\r\n
\r\n
` : ''}\r\n ${(enquiryDetail.estimatedDisbursements || enquiryDetail.likelihoodToProceed) ? \r\n `
\r\n

 

\r\n
\r\n Estimated Disbs:\r\n ${enquiryDetail.estimatedDisbursements || 0}\r\n
\r\n
\r\n Includes Taxes:\r\n \r\n \r\n \r\n
\r\n
\r\n Likelihood to Proceed:\r\n ${enquiryDetail.likelihoodToProceed || 0}\r\n
\r\n
` : ''} \r\n
\r\n
\r\n `);\r\n};\r\n\r\nconst getClientDetails = (ed: EnquiryDetail) => {\r\n return (`\r\n
\r\n
\\\r\n
\r\n
\r\n

Client Details

\r\n ${(ed.clientFirstName && ed.clientLastName) && (ed.clientFirstName !== '' && ed.clientLastName !== '') ?\r\n `
\r\n Client Name:\r\n ${setTitle(ed.clientTitle)}${ed.clientFirstName} ${ed.clientLastName}\r\n
` : '' }\r\n ${ed.clientRelationshipToEnquirer && ed.clientRelationshipToEnquirer !== '' ?\r\n `
\r\n Relationship to the Enquirer:\r\n ${ed.clientRelationshipToEnquirer}\r\n
` : '' }\r\n ${ed.dOB ? \r\n `
\r\n Birthday:\r\n ${formatDate(ed.dOB, 'DD-MMM-YYYY')}\r\n
` : '' }\r\n ${ed.gender ?\r\n `
\r\n Gender of Client:\r\n ${ed.gender}\r\n
` : '' }\r\n ${ed.clientEmail ?\r\n `
\r\n Email:\r\n ${ed.clientEmail}\r\n
` : ''}\r\n ${ed.clientPhone ?\r\n `
\r\n Telephone:\r\n ${ed.clientPhone}\r\n
` : ''}\r\n ${ed.clientMobile ?\r\n `
\r\n Mobile:\r\n ${ed.clientMobile}\r\n
` : ''}\r\n
\r\n ${ed.isMarketingConsent ?\r\n `
\r\n \r\n \r\n
` : '' }\r\n ${ed.isTermsAndConditionsApproved ?\r\n `
\r\n \r\n \r\n
` : '' }\r\n ${ed.isPrivacyStatementProvided ?\r\n `
\r\n \r\n \r\n
` : '' }\r\n
\r\n
\r\n ${ed.isConflictCheckPerformed ?\r\n `
\r\n \r\n \r\n
` : '' }\r\n ${ed.isNoConflict ?\r\n `
\r\n \r\n \r\n
` : '' }\r\n ${ed.isIdentityCheckPerformed ?\r\n `
\r\n \r\n \r\n
` : '' }\r\n
\r\n
\r\n
\r\n
\r\n ${(ed.addressName || ed.floor || ed.number || ed.street || ed.clientAddressStreet2 || ed.suburb || ed.state || ed.postcode || ed.country) ?\r\n `
\r\n

Main Address

\r\n ${ed.addressName && ed.addressName !== '' ?\r\n `
\r\n Building Name:\r\n ${ed.addressName}\r\n
` : '' }\r\n ${ed.floor && ed.floor !== '' ?\r\n `
\r\n Unit Level:\r\n ${ed.floor}\r\n
` : '' }\r\n ${ed.number && ed.number !== '' ? \r\n `
\r\n Number:\r\n ${ed.number}\r\n
` : '' }\r\n ${ed.street && ed.street !== '' ?\r\n `
\r\n Street 1:\r\n ${ed.street}\r\n
` : '' }\r\n ${ed.clientAddressStreet2 && ed.clientAddressStreet2 !== '' ?\r\n `
\r\n Street 2:\r\n ${ed.clientAddressStreet2}\r\n
` : '' }\r\n ${ed.suburb && ed.suburb !== '' ? \r\n `
\r\n City/Suburb:\r\n ${ed.suburb}\r\n
` : '' }\r\n ${ed.state && ed.state !== '' ? \r\n `
\r\n State:\r\n ${ed.state}\r\n
` : '' }\r\n ${ed.postcode && ed.postcode !== '' ? \r\n `
\r\n Postal Code:\r\n ${ed.postcode}\r\n
` : '' }\r\n ${ed.country && ed.country !== '' ?\r\n `
\r\n Country:\r\n ${ed.country}\r\n
` : '' }\r\n
` : '' }\r\n ${(ed.pOBox || ed.postalSuburb || ed.postalState || ed.postalPostCode || ed.postalCountry) ?\r\n `
\r\n

Postal Address

\r\n ${ed.pOBox && ed.pOBox !== '' ? \r\n `
\r\n PO Box Type:\r\n ${ed.pOBox}\r\n
` : ''}\r\n ${ed.postalSuburb && ed.postalSuburb !== '' ? \r\n `
\r\n Suburb:\r\n ${ed.postalSuburb}\r\n
` : '' }\r\n ${ed.postalState && ed.postalState !== '' ? \r\n `
\r\n State:\r\n ${ed.postalState}\r\n
` : '' }\r\n ${ed.postalPostCode && ed.postalPostCode !== '' ?\r\n `
\r\n Postal Code:\r\n ${ed.postalPostCode}\r\n
` : '' }\r\n ${ed.postalCountry && ed.postalCountry !== '' ? \r\n `
\r\n Country:\r\n ${ed.postalCountry}\r\n
` : '' }\r\n
` : '' }\r\n
\r\n
\r\n
\\\r\n
\r\n
\r\n

Client 2 Details

\r\n ${(ed.secondClientFirstName && ed.secondClientLastName) && (ed.secondClientFirstName !== '' && ed.secondClientLastName !== '') ?\r\n `
\r\n Client Name:\r\n ${setTitle(ed.secondClientTitle)}${ed.secondClientFirstName} ${ed.secondClientLastName}\r\n
` : '' }\r\n ${ed.secondClientRelationshipToEnquirer && ed.secondClientRelationshipToEnquirer !== '' ?\r\n `
\r\n Relationship to the Enquirer:\r\n ${ed.secondClientRelationshipToEnquirer}\r\n
` : '' }\r\n ${ed.secondClientDOB ? \r\n `
\r\n Birthday:\r\n ${formatDate(ed.secondClientDOB, 'DD-MMM-YYYY')}\r\n
` : '' }\r\n ${ed.secondClientGender ?\r\n `
\r\n Gender of Client:\r\n ${ed.secondClientGender}\r\n
` : '' }\r\n ${ed.secondClientEmail ?\r\n `
\r\n Email:\r\n ${ed.secondClientEmail}\r\n
` : ''}\r\n ${ed.secondClientPhone ?\r\n `
\r\n Telephone:\r\n ${ed.secondClientPhone}\r\n
` : ''}\r\n ${ed.secondClientMobile ?\r\n `
\r\n Mobile:\r\n ${ed.secondClientMobile}\r\n
` : ''}\r\n
\r\n ${ed.isMarketingConsent ?\r\n `
\r\n \r\n \r\n
` : '' }\r\n ${ed.secondClientIsTermsAndConditionsApproved ?\r\n `
\r\n \r\n \r\n
` : '' }\r\n ${ed.secondClientIsPrivacyStatementProvided ?\r\n `
\r\n \r\n \r\n
` : '' }\r\n
\r\n
\r\n ${ed.secondClientIsConflictCheckPerformed ?\r\n `
\r\n \r\n \r\n
` : '' }\r\n ${ed.secondClientIsNoConflict ?\r\n `
\r\n \r\n \r\n
` : '' }\r\n ${ed.secondClientIsIdentityCheckPerformed ?\r\n `
\r\n \r\n \r\n
` : '' }\r\n
\r\n
\r\n
\r\n
\r\n ${(ed.secondClientAddressName || ed.secondClientFloor || ed.secondClientNumber || ed.secondClientStreet1 || ed.secondClientStreet2 || ed.secondClientSuburb || ed.secondClientState || ed.secondClientPostCode || ed.secondClientCountry) ?\r\n `
\r\n

Main Address

\r\n ${ed.secondClientAddressName && ed.secondClientAddressName !== '' ?\r\n `
\r\n Building Name:\r\n ${ed.secondClientAddressName}\r\n
` : '' }\r\n ${ed.secondClientFloor && ed.secondClientFloor !== '' ?\r\n `
\r\n Unit Level:\r\n ${ed.secondClientFloor}\r\n
` : '' }\r\n ${ed.secondClientNumber && ed.secondClientNumber !== '' ? \r\n `
\r\n Number:\r\n ${ed.secondClientNumber}\r\n
` : '' }\r\n ${ed.secondClientStreet1 && ed.secondClientStreet1 !== '' ?\r\n `
\r\n Street 1:\r\n ${ed.secondClientStreet1}\r\n
` : '' }\r\n ${ed.secondClientStreet2 && ed.secondClientStreet2 !== '' ?\r\n `
\r\n Street 2:\r\n ${ed.secondClientStreet2}\r\n
` : '' }\r\n ${ed.secondClientSuburb && ed.secondClientSuburb !== '' ? \r\n `
\r\n City/Suburb:\r\n ${ed.secondClientSuburb}\r\n
` : '' }\r\n ${ed.secondClientState && ed.secondClientState !== '' ? \r\n `
\r\n State:\r\n ${ed.secondClientState}\r\n
` : '' }\r\n ${ed.secondClientPostCode && ed.secondClientPostCode !== '' ? \r\n `
\r\n Postal Code:\r\n ${ed.secondClientPostCode}\r\n
` : '' }\r\n ${ed.secondClientCountry && ed.secondClientCountry !== '' ?\r\n `
\r\n Country:\r\n ${ed.secondClientCountry}\r\n
` : '' }\r\n
` : '' }\r\n ${(ed.secondClientPOBox || ed.secondClientPostalSuburb || ed.secondClientPostalState || ed.secondClientPostalPostCode || ed.secondClientPostalCountry) ?\r\n `
\r\n

Postal Address

\r\n ${ed.secondClientPOBoxType && ed.secondClientPOBoxType !== '' ? \r\n `
\r\n PO Box Type:\r\n ${ed.secondClientPOBoxType}\r\n
` : ''}\r\n ${ed.secondClientPostalSuburb && ed.secondClientPostalSuburb !== '' ? \r\n `
\r\n Suburb:\r\n ${ed.secondClientPostalSuburb}\r\n
` : '' }\r\n ${ed.secondClientPostalState && ed.secondClientPostalState !== '' ? \r\n `
\r\n State:\r\n ${ed.secondClientPostalState}\r\n
` : '' }\r\n ${ed.secondClientPostalPostCode && ed.secondClientPostalPostCode !== '' ?\r\n `
\r\n Postal Code:\r\n ${ed.secondClientPostalPostCode}\r\n
` : '' }\r\n ${ed.secondClientPostalCountry && ed.secondClientPostalCountry !== '' ? \r\n `
\r\n Country:\r\n ${ed.secondClientPostalCountry}\r\n
` : '' }\r\n
` : '' }\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Risk Details

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n ${ed.isRiskAssessed ? `\r\n
\r\n Risk Level:\r\n ${ed.riskLevel || ''}\r\n
\r\n
\r\n Risk Notes:\r\n ${ed.riskNotes || ''}\r\n
\r\n ` : ''}\r\n
\r\n
\r\n
\r\n
\r\n `);\r\n};\r\n\r\nconst getOtherPartyDetails = (ed: EnquiryDetail) => {\r\n if ((!ed.otherPartyFirstName && !ed.otherPartyLastName) || (ed.otherPartyFirstName === '' && ed.otherPartyLastName === '')) {\r\n return '';\r\n }\r\n\r\n return (`\r\n
\r\n
\r\n
\r\n

Other Party

\r\n ${(ed.otherPartyFirstName && ed.otherPartyLastName) && (ed.otherPartyFirstName !== '' && ed.otherPartyLastName !== '') ?\r\n `
\r\n Name:\r\n ${setTitle(ed.otherPartyTitle)}${ed.otherPartyFirstName} ${ed.otherPartyLastName}\r\n
` : '' }\r\n ${ed.otherPartyEmail && ed.otherPartyEmail !== '' ?\r\n `
\r\n Email:\r\n ${ed.otherPartyEmail}\r\n
` : '' }\r\n ${ed.otherPartyPhone && ed.otherPartyPhone !== '' ?\r\n `
\r\n Telephone:\r\n ${ed.otherPartyPhone}\r\n
` : '' }\r\n ${ed.otherPartyDOB ?\r\n `
\r\n Birthday:\r\n ${ed.otherPartyDOB}\r\n
` : '' }\r\n ${ed.otherPartyMobile && ed.otherPartyMobile !== '' ?\r\n `
\r\n Mobile:\r\n ${ed.otherPartyMobile}\r\n
` : '' }\r\n ${ed.otherPartyNotes && ed.otherPartyNotes !== '' ?\r\n `
\r\n Notes:\r\n ${ed.otherPartyNotes}.\r\n
` : '' }\r\n
\r\n
\r\n
\r\n ${(ed.otherPartyAddressName || ed.otherPartyFloor || ed.otherPartyNumber || ed.otherPartyStreet || ed.otherPartyStreet2 || ed.otherPartySuburb || ed.otherPartyState || ed.otherPartyPostcode || ed.otherPartyCountry) ?\r\n `
\r\n

Main Address

\r\n ${ed.otherPartyAddressName && ed.otherPartyAddressName !== '' ?\r\n `
\r\n Building Name:\r\n ${ed.otherPartyAddressName}\r\n
` : '' }\r\n ${ed.otherPartyFloor && ed.otherPartyFloor !== '' ?\r\n `
\r\n Unit Level:\r\n ${ed.otherPartyFloor}\r\n
` : '' }\r\n ${ed.otherPartyNumber && ed.otherPartyNumber !== '' ?\r\n `
\r\n Number:\r\n ${ed.otherPartyNumber}\r\n
` : '' }\r\n ${ed.otherPartyStreet ?\r\n `
\r\n Street 1:\r\n ${ed.otherPartyStreet}\r\n
` : '' }\r\n ${ed.otherPartyStreet2 && ed.otherPartyStreet2 !== '' ?\r\n `
\r\n Street 2:\r\n ${ed.otherPartyStreet2}\r\n
` : '' }\r\n ${ed.otherPartySuburb && ed.otherPartySuburb !== '' ?\r\n `
\r\n City/Suburb:\r\n ${ed.otherPartySuburb}\r\n
` : '' }\r\n ${ed.otherPartyState && ed.otherPartyState !== '' ?\r\n `
\r\n State:\r\n ${ed.otherPartyState}\r\n
` : '' }\r\n ${ed.otherPartyPostalPostCode && ed.otherPartyPostcode !== '' ?\r\n `
\r\n Postal Code:\r\n ${ed.otherPartyPostalPostCode}\r\n
` : '' }\r\n ${ed.otherPartyCountry && ed.otherPartyCountry !== '' ?\r\n `
\r\n Country:\r\n ${ed.otherPartyCountry}\r\n
` : '' }\r\n
` : '' }\r\n ${(ed.otherPartyPOBoxType || ed.otherPartyPOBox || ed.otherPartyPostalSuburb || ed.otherPartyPostalPostCode || ed.otherPartyPostalCountry) ?\r\n `
\r\n

Postal Address

\r\n ${ed.otherPartyPOBoxType && ed.otherPartyPOBoxType !== '' ?\r\n `
\r\n PO Box Type:\r\n ${ed.otherPartyPOBoxType}\r\n
` : '' }\r\n ${ed.otherPartyPOBox && ed.otherPartyPOBox !== '' ?\r\n `
\r\n Number:\r\n ${ed.otherPartyPOBox}\r\n
` : '' }\r\n ${ed.otherPartyPostalSuburb && ed.otherPartyPostalSuburb !== '' ?\r\n `
\r\n Suburb:\r\n ${ed.otherPartyPostalSuburb}\r\n
` : '' }\r\n ${ed.otherPartyPostalState && ed.otherPartyPostalState !== '' ?\r\n `
\r\n State:\r\n ${ed.otherPartyPostalState}\r\n
` : '' }\r\n ${ed.otherPartyPostalPostCode && ed.otherPartyPostalPostCode !== '' ?\r\n `
\r\n Postal Code:\r\n ${ed.otherPartyPostalPostCode}\r\n
` : '' }\r\n ${ed.otherPartyPostalCountry && ed.otherPartyPostalCountry !== '' ?\r\n `
\r\n Country:\r\n ${ed.otherPartyPostalCountry}\r\n
` : '' }\r\n
` : '' }\r\n
\r\n
\r\n `);\r\n};\r\n\r\nconst getDocumentDetails = (ed: EnquiryDetail, tags: string) => {\r\n if (ed.files && ed.files.length > 0) {\r\n ed.files.forEach(e => {\r\n tags += `
  • ${e.name}
  • `;\r\n });\r\n\r\n if (!tags || tags === '') {\r\n return '';\r\n }\r\n\r\n return (`\r\n
    \r\n
    \r\n
    \r\n

    Documents

    \r\n
    \r\n
      \r\n ${tags}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `);\r\n } else {\r\n return '';\r\n }\r\n};\r\n\r\nfunction getAnswer(matchingDetail : EnquiryDetailCustomField | undefined, currency: string) {\r\n let answer = null;\r\n\r\n if (typeof matchingDetail?.boolValue === 'boolean') {\r\n answer = matchingDetail.boolValue ? 'Yes' : 'No';\r\n } \r\n else if (matchingDetail?.currencyValue !== null) {\r\n answer = currency + formatNumber(matchingDetail?.currencyValue ?? 0);\r\n } \r\n else if (matchingDetail?.dateTimeValue !== null) {\r\n answer = formatDate(matchingDetail?.dateTimeValue, 'DD MMM YYYY hh:mm a')\r\n } \r\n else if (matchingDetail?.dateValue !== null) {\r\n answer = formatDate(matchingDetail?.dateValue, 'DD MMM YYYY')\r\n } \r\n else if (matchingDetail?.integerValue !== null) {\r\n answer = matchingDetail?.integerValue\r\n } \r\n else if (matchingDetail?.multiLineTextValue !== null) {\r\n answer = matchingDetail?.multiLineTextValue;\r\n } \r\n else if (matchingDetail?.numberValue !== null) {\r\n answer = matchingDetail?.numberValue\r\n } \r\n else if (matchingDetail?.textValue !== null) {\r\n answer = matchingDetail?.textValue;\r\n } \r\n else if (matchingDetail?.lookupListName !== null) {\r\n answer = matchingDetail?.lookupListName;\r\n }\r\n\r\n return answer;\r\n};\r\n\r\nconst getCustomFieldDetails = (enquiry: EnquiryDetail, currency: string, customFieldByHierarchy?: CustomFieldByHierarchy[]) => {\r\n let customFieldItem = '';\r\n \r\n if (customFieldByHierarchy && customFieldByHierarchy?.length > 0) {\r\n customFieldByHierarchy?.forEach(group => {\r\n const filteredFields = group.customField.filter(filteredDetail => {\r\n const matchingDetail = enquiry.customFields.find(enquiry => enquiry.customFieldGuid === filteredDetail.guid);\r\n return matchingDetail;\r\n });\r\n\r\n if (filteredFields.length > 0) {\r\n customFieldItem += \r\n `\r\n

    ${group.customFieldGroupName}

    \r\n
      \r\n ${filteredFields.map(customFieldAnswer => {\r\n if (customFieldAnswer?.isActive) {\r\n const matchingDetail = enquiry.customFields.find(detail => detail.customFieldGuid === customFieldAnswer.guid);\r\n const answer = getAnswer(matchingDetail, currency)\r\n return `
    • ${customFieldAnswer.description} : ${answer}
    • `;\r\n }\r\n return '';\r\n }).join('')}\r\n
    \r\n `;\r\n }\r\n });\r\n }\r\n\r\n return (`\r\n ${customFieldItem}\r\n `);\r\n};\r\n\r\nconst getDigitalTrackingFields = (ed: EnquiryDetail) => {\r\n return (`\r\n ${(ed.organisation || ed.positionAtOrganisation) ? \r\n `
    \r\n
    \r\n
    \r\n

    Digital Tracking

    \r\n ${ed.clickThroughUrl && ed.clickThroughUrl !== '' ? \r\n `
    \r\n Click Through Url:\r\n ${ed.clickThroughUrl}\r\n
    ` : ''}\r\n ${ed.utmSource && ed.utmSource !== '' ? \r\n `
    \r\n UTM Source:\r\n ${ed.utmSource}\r\n
    ` : ''}\r\n ${ed.utmMedium && ed.utmMedium !== '' ? \r\n `
    \r\n UTM Medium:\r\n ${ed.utmMedium}\r\n
    ` : ''}\r\n ${ed.utmCampaign && ed.utmCampaign !== '' ? \r\n `
    \r\n UTM Campaign:\r\n ${ed.utmCampaign}\r\n
    ` : ''}\r\n ${ed.utmContent && ed.utmContent !== '' ? \r\n `
    \r\n UTM utmContent:\r\n ${ed.utmSource}\r\n
    ` : ''}\r\n ${ed.utmKeyword && ed.utmKeyword !== '' ? \r\n `
    \r\n UTM Keyword:\r\n ${ed.utmKeyword}\r\n
    ` : ''}\r\n ${ed.googleClickIdentifier && ed.googleClickIdentifier !== '' ? \r\n `
    \r\n GCLID:\r\n ${ed.googleClickIdentifier}\r\n
    ` : ''}\r\n ${ed.facebookClickIdentifier && ed.facebookClickIdentifier !== '' ? \r\n `
    \r\n FBCLID:\r\n ${ed.facebookClickIdentifier}\r\n
    ` : ''}\r\n
    \r\n
    \r\n
    ` : ''}\r\n `);\r\n};\r\n\r\nconst getHistoryDetailContent = (task: TaskDetails, timezone: TimezoneOption[], currency: string) => {\r\n let uiUtcOffset = new Date().getTimezoneOffset() * -1;\r\n\r\n let uiTimeZoneDescription = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n\r\n if (timezone) {\r\n let uiTimeZone = timezone.find((item: TimezoneOption) => {\r\n return item.baseUtcOffset === uiUtcOffset;\r\n });\r\n\r\n if (uiTimeZone) {\r\n uiTimeZoneDescription = uiTimeZone.timezoneValue;\r\n }\r\n }\r\n\r\n if (task.taskTypeDescription.toLowerCase() === 'assign enquiry' && task.assignedToGuidID) {\r\n return (\r\n `\r\n
      \r\n
    • Assigned to ${task.assignedToName} by ${task.assignedByName}
    • \r\n ${task.followUpNotes\r\n ? (\r\n `
    • \r\n ${convertMentionInCommentToHtml(task.followUpNotes)}\r\n
    • `\r\n ) \r\n : ''\r\n } \r\n
    \r\n `\r\n );\r\n } else if (task.enquiryLinkedMatter || task.taskTypeDescription.toLowerCase() === 'link matter') {\r\n return (\r\n `\r\n
      \r\n
    • ${task.assignedByName}
    • \r\n ${task.enquiryLinkedMatter\r\n ? (\r\n `
    • \r\n ${task.linkedMatterClient ? task.linkedMatterClient : '' } - ${task.linkedMatterTitle } (${task.enquiryLinkedMatter})\r\n
    • `\r\n )\r\n :\r\n `Matter synching is in progress. Please check again after a short while.`\r\n } \r\n
    \r\n `\r\n );\r\n } else if (task.taskTypeInternalDescription === 'BookMeeting') {\r\n return (\r\n `\r\n
      \r\n ${task.isAssignedToTeam && task.assignedToName ? (\r\n `
    • \r\n ${`Meeting scheduled at ${task.firmOffice} ${task.bookMeetingStartDateUTC ? `on ${moment(convertToLocalTimeZone(task.bookMeetingStartDateUTC.toString())).format('DD MMM YYYY hh:mm a')}` : ''} (${task.timezone ? uiTimeZoneDescription : ''})`}\r\n
    • `\r\n ) : ''}\r\n ${!task.isAssignedToTeam && task.staff\r\n ? (\r\n `
    • \r\n Meeting with ${task.staff} \r\n ${(task.firmOffice !== null ? (' at ' + task.firmOffice + '' ) : '' )}\r\n ${(task.bookMeetingStartDateUTC !== null\r\n ? (' on ' + moment(convertToLocalTimeZone(task.bookMeetingStartDateUTC.toString())).format('DD MMM YYYY hh:mm a') ) \r\n : '' )}\r\n ${(task.timezone !== null ? ' (' + uiTimeZoneDescription + ')' : '')}\r\n
    • `\r\n )\r\n : ''\r\n }\r\n ${task.meetingNotes \r\n ? \r\n (\r\n `
    • Meeting Notes: ${task.meetingNotes}
    • `\r\n )\r\n : ''\r\n }\r\n ${task.sendConfirmation && !task.isAssignedToTeam\r\n ?\r\n (\r\n `
    • Confirmation Sent: ${task.sendConfirmation === true ? 'Yes' : 'No'}
    • `\r\n )\r\n : ''\r\n }\r\n ${task.feeApplicable \r\n ?\r\n (\r\n `
    • Fee Applicable: ${currency}${formatNumber(task.feeApplicable)}
    • `\r\n )\r\n : ''\r\n }\r\n ${task.assignedToName && task.isAssignedToTeam \r\n ?\r\n (\r\n `
    • Assigned To: ${task.assignedToName}
    • `\r\n )\r\n : ''\r\n }\r\n ${task.followUpNotes\r\n ? \r\n (\r\n `
    • \r\n ${convertMentionInCommentToHtml(task.followUpNotes, 'Follow Up Notes')}\r\n
    • `\r\n )\r\n : ''\r\n } \r\n
    \r\n `\r\n );\r\n } else if (task.taskTypeInternalDescription === 'MeetingTask' && (task.followUpNotes || task.outcomeNotes)) {\r\n return (\r\n `\r\n
      \r\n
    • ${task.assignedByName}
    • \r\n ${task.followUpNotes !== null && task.followUpNotes\r\n ? ( \r\n `
    • \r\n ${convertMentionInCommentToHtml(task.followUpNotes)}\r\n
    • `\r\n )\r\n : ''\r\n } \r\n ${task.outcomeNotes !== null && task.outcomeNotes\r\n ? \r\n (\r\n `
    • Previous Notes: ${task.outcomeNotes} \r\n ${(task.createdDate ? ' (' + moment(task.createdDate).format('DD MMM YYYY') + ') ' : '')}\r\n
    • `\r\n )\r\n : ''\r\n } \r\n
    \r\n `\r\n );\r\n } else if (task.systemAction === 'CreateEmail') { \r\n return (\r\n `\r\n
      \r\n
    • ${task.assignedByName}
    • \r\n ${task.emailTemplateName\r\n ? \r\n (\r\n `
    • Template Name: ${task.emailTemplateName}
    • `\r\n )\r\n : ''\r\n } \r\n ${task.emailSubject\r\n ?\r\n (\r\n `
    • Subject: ${task.emailSubject}
    • `\r\n )\r\n : ''\r\n } \r\n ${task.fromEmailAddress\r\n ? \r\n (\r\n `
    • From: ${task.fromEmailAddress}
    • `\r\n )\r\n : ''\r\n } \r\n ${task.toEmailAddresses\r\n ? \r\n (\r\n `
    • To: ${task.toEmailAddresses}
    • `\r\n )\r\n : ''\r\n } \r\n ${task.ccEmailAddresses\r\n ? \r\n (\r\n `
    • Cc: ${task.ccEmailAddresses}
    • `\r\n )\r\n : ''\r\n } \r\n ${task.assignedByName\r\n ? \r\n (\r\n `
    • Sent by: ${task.assignedByName}
    • `\r\n )\r\n : ''\r\n }\r\n ${task.outcomeNotes\r\n ? \r\n (\r\n `
    • Previous Notes: '${task.outcomeNotes} \r\n ${(task.createdDate !== null ? ' (' + moment(task.createdDate).format('DD MMM YYYY') + ') ' : '')}\r\n
    • `\r\n )\r\n : ''\r\n }\r\n
    \r\n `\r\n );\r\n } else if ((task.dueDate && task.completedDate) && getDescription(task) !== 'Follow Up Due') {\r\n return (\r\n `\r\n
      \r\n
    • ${task.assignedByName}
    • \r\n ${task.enquiryLinkedMatter\r\n ? \r\n (\r\n `
    • Filenumber: ${task.enquiryLinkedMatter}
    • `\r\n )\r\n : ''\r\n } \r\n ${task.followUpNotes\r\n ? \r\n (\r\n `
    • \r\n ${convertMentionInCommentToHtml(task.followUpNotes, 'Follow Up Notes')}\r\n
    • `\r\n )\r\n : ''\r\n }\r\n ${task.outcomeNotes\r\n ? \r\n (\r\n `
    • Previous Notes: '${task.outcomeNotes} \r\n ${(task.createdDate !== null ? ' (' + moment(task.createdDate).format('DD MMM YYYY') + ') ' : '')}\r\n
    • `\r\n )\r\n : ''\r\n }\r\n
    \r\n `\r\n );\r\n } else if (task.followUpNotes) {\r\n return (\r\n `\r\n
      \r\n
    • ${task.assignedByName}
    • \r\n ${task.enquiryLinkedMatter\r\n ? \r\n (\r\n `
    • Filenumber: ${task.enquiryLinkedMatter}
    • `\r\n )\r\n : ''\r\n } \r\n ${task.followUpNotes\r\n ? \r\n (\r\n `
    • \r\n ${convertMentionInCommentToHtml(task.followUpNotes)}\r\n
    • `\r\n )\r\n : ''\r\n }\r\n
    \r\n ` \r\n );\r\n } else if (getDescription(task) === 'Follow Up Due' && task.outcomeNotes) {\r\n return (\r\n `\r\n
      \r\n
    • ${task.assignedByName}
    • \r\n ${task.enquiryLinkedMatter\r\n ? \r\n (\r\n `
    • Filenumber: ${task.enquiryLinkedMatter}
    • `\r\n )\r\n : ''\r\n } \r\n ${task.outcomeNotes\r\n ? (\r\n `
    • Sent by: ${task.outcomeNotes}
    • `\r\n )\r\n : ''\r\n }\r\n
    \r\n `\r\n );\r\n } else if (task.assignedByName && task.completedDate) {\r\n return (\r\n `\r\n
      \r\n
    • ${task.assignedByName}
    • \r\n
    \r\n `\r\n );\r\n } else {\r\n return ``;\r\n }\r\n};\r\n\r\nconst getHistoryActivity = (task: TaskDetails, timezone: TimezoneOption[], currency: string, index: number) => {\r\n let historyTitle = getDescription(task);\r\n let historyTitleDate = getHistoryDate(task);\r\n let historyDetailsContent = getHistoryDetailContent(task, timezone, currency);\r\n\r\n return `\r\n
    \r\n
    \r\n
    ${historyTitleDate}
    \r\n
    ${historyTitle}
    \r\n
    \r\n
    \r\n ${historyDetailsContent}\r\n
    \r\n
    \r\n `;\r\n};\r\n\r\nexport const getPdf = (htmlElement: HTMLElement, element: HTMLDivElement) => {\r\n // console.log('htmlElement', htmlElement);\r\n\r\n // var element = document.createElement('div');\r\n // element.setAttribute('id', 'historyDiv');\r\n // element.style.visibility = 'hidden'; \r\n // element.appendChild(htmlElement); \r\n // document.body.appendChild(element);\r\n\r\n // var htmlWidth = element.offsetWidth;\r\n // var htmlHeight = 1000; // element.offsetHeight;\r\n\r\n // var topLeftMargin = 15;\r\n // var pdfWidth = 210; // htmlWidth + (topLeftMargin * 2);\r\n // var pdfHeight = 297;// (pdfWidth * 1.5) + (topLeftMargin * 2);\r\n // var pdfWidth = (topLeftMargin * 2);\r\n // var pdfHeight =(topLeftMargin * 2);\r\n // var canvasImageWidth = 210;\r\n // var canvasImageHeight = 297;\r\n\r\n // var totalPDFPages = Math.ceil(htmlHeight / pdfHeight) - 1;\r\n\r\n // console.log('htmlHeight', htmlHeight)\r\n // console.log('pdfHeight', pdfHeight)\r\n // console.log('totalPDFPages', totalPDFPages)\r\n\r\n // console.log('element 0', element);\r\n\r\n // tslint:disable-next-line: typedef\r\n html2canvas(element[0], { allowTaint: true }).then(function(canvas) {\r\n // console.log('Inside Canvas');\r\n canvas.getContext('2d');\r\n \r\n // console.log(canvas.height + ' ' + canvas.width); \r\n \r\n // var imgData = canvas.toDataURL('image/jpeg', 1.0);\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n // var pdf = new jsPDF('portrait', 'pt', [pdfWidth, pdfHeight]);\r\n // pdf.addImage(imgData, 'JPEG', topLeftMargin, topLeftMargin, canvasImageWidth, canvasImageHeight);\r\n \r\n // for (var i = 1; i <= totalPDFPages; i++) { \r\n // // console.log('AddPage', i);\r\n // pdf.addPage([pdfWidth , pdfHeight], 'portrait');\r\n // pdf.addImage(imgData, 'JPEG', topLeftMargin, - (pdfHeight * i) + (topLeftMargin * 4), canvasImageWidth, canvasImageHeight);\r\n // }\r\n\r\n // pdf.save(\"HTML-Document.pdf\");\r\n });\r\n\r\n // element.remove();\r\n};\r\n\r\n// tslint:disable-next-line: no-anyW\r\nexport const HistoryFile = async (enquiryDetail: EnquiryDetail, sortDirection: string | null, currency: string, timezone: TimezoneOption[], \r\n // tslint:disable-next-line: no-any\r\n leadDetailsHistory: TaskSummaryList,\r\n // tslint:disable-next-line: no-any\r\n onSuccess: (data: any) => void,\r\n customFieldByHierarchy: CustomFieldByHierarchy[]) => {\r\n\r\n // tslint:disable-next-line: no-console\r\n // console.log(enquiryCreatedString); \r\n let documentBlob: Blob | undefined;\r\n const html = historyHtml(enquiryDetail, currency, timezone, leadDetailsHistory, customFieldByHierarchy);\r\n // // tslint:disable-next-line: no-console\r\n // console.log('html', html);\r\n\r\n var parser = new DOMParser();\r\n var htmlDocument = parser.parseFromString(html, 'text/html');\r\n let htmlElement = htmlDocument.body;\r\n\r\n var element = document.createElement('div');\r\n element.setAttribute('id', 'historyDiv');\r\n element.style.visibility = 'hidden'; \r\n element.appendChild(htmlElement); \r\n document.body.appendChild(element); \r\n\r\n // Without this the pages will break.\r\n getPdf(htmlElement, element);\r\n \r\n const doc = new jsPDF({\r\n orientation: 'p',\r\n format: 'a4',\r\n unit: 'pt'\r\n });\r\n\r\n doc.html(htmlElement, {\r\n margin: [15, 0, 15, 0],\r\n autoPaging: 'text',\r\n callback: function (currentDoc: jsPDF) { \r\n // currentDoc.save();\r\n var pageCount = currentDoc.getNumberOfPages();\r\n currentDoc.deletePage(pageCount); // delete blank last pages.\r\n \r\n documentBlob = currentDoc.output('blob');\r\n\r\n // Following is for testing only\r\n // var blobPDF = new Blob([documentBlob ], { type : 'application/pdf'});\r\n // var blobUrl = URL.createObjectURL(blobPDF);\r\n // window.open(blobUrl);\r\n\r\n // tslint:disable-next-line: no-console\r\n // console.log('documentBlob', documentBlob);\r\n onSuccess(documentBlob);\r\n\r\n element.remove();\r\n // return documentBlob;\r\n // currentDoc.saveGraphicsState\r\n // currentDoc.output('blob');\r\n }, \r\n x: 10,\r\n y: 10,\r\n });\r\n\r\n // return results;\r\n};\r\n"],"sourceRoot":""}