{"version":3,"sources":["newLogo.png","blankPhoto.png","utilities/vCardGenerator.js","utilities/constants.js","components/UserProfile/UserProfile.jsx","views/App.js","index.js"],"names":["module","exports","downloadVCard","username","userInfo","imageData","userVCardInfo","vCard","vCardsJS","firstName","givenName","lastName","surname","organization","companyName","email","workPhone","mobilePhone","title","jobTitle","base64Start","indexOf","photo","embedFromString","substring","url","source","workAddress","street","streetAddress","city","countryRegion","country","postalCode","socialUrls","getFormattedString","generateVCard","downloadEl","document","createElement","file","Blob","type","href","URL","createObjectURL","download","body","appendChild","click","removeChild","useStyles","makeStyles","theme","paper","color","palette","primary","main","loader","textAlign","margin","logoContainer","maxHeight","position","paddingTop","paddingLeft","logo","photoContainer","padding","userPhoto","borderRadius","nameContainer","marginBottom","leftIcon","marginRight","spacing","socialIcons","paddingBottom","getAddress","user","UserProfile","useParams","classes","useState","setErrors","setUserInfo","photoLoaded","setPhotoLoaded","photoBase64","setPhotoBase64","useEffect","a","fetch","process","json","then","res","catch","fetchData","imageUrl","response","blob","Promise","resolve","reject","reader","FileReader","onloadend","result","onerror","readAsDataURL","downloadAndConvertImg","Fragment","Helmet","displayName","className","CircularProgress","Fade","in","Paper","src","alt","BlankPhoto","onLoad","Typography","variant","component","style","fontWeight","ButtonGroup","fullWidth","Button","size","Link","onClick","trim","target","Container","List","ListItem","ListItemIcon","ListItemText","secondary","department","Divider","button","fontSize","createMuiTheme","typography","fontFamily","root","marginTop","UserVCard","maxWidth","ThemeProvider","App","CssBaseline","path","ReactDOM","render","getElementById"],"mappings":"8GAAAA,EAAOC,QAAU,IAA0B,qC,mBCA3CD,EAAOC,QAAU,IAA0B,wC,mQCoC9BC,EAAgB,SAACC,EAAUC,EAAUC,GAChD,IAAIC,EA5BuB,SAACF,EAAUC,EAAWF,GACjD,IAAII,EAAQC,MACZD,EAAME,UAAYL,EAASM,UAC3BH,EAAMI,SAAWP,EAASQ,QAC1BL,EAAMM,aAAeT,EAASU,YAC9BP,EAAMQ,MAAQX,EAASW,MACvBR,EAAMS,UAAYZ,EAASa,YAC3BV,EAAMW,MAAQd,EAASe,SAEvB,IAAIC,EAAcf,EAAUgB,QAAQ,MAepC,OAdAd,EAAMe,MAAMC,gBAAgBlB,EAAUmB,UAAUJ,EAAc,GAAI,cAElEb,EAAMkB,IAAM,mBACZlB,EAAMmB,OAAN,UCLiC,4BDKjC,YAAyCvB,GAEzCI,EAAMoB,YAAYC,OAASxB,EAASyB,cACpCtB,EAAMoB,YAAYG,KAAO1B,EAAS0B,KAClCvB,EAAMoB,YAAYI,cAAgB3B,EAAS4B,QAC3CzB,EAAMoB,YAAYM,WAAa7B,EAAS6B,WAExC1B,EAAM2B,WAAN,SCTA,qDDUA3B,EAAM2B,WAAN,SCRA,+DDSA3B,EAAM2B,WAAN,UCPA,sDDSO3B,EAAM4B,qBAIOC,CAAchC,EAAUC,EAAWF,GACjDkC,EAAaC,SAASC,cAAc,KACpCC,EAAO,IAAIC,KAAK,CAACnC,GAAgB,CAAEoC,KAAM,eAC/CL,EAAWM,KAAOC,IAAIC,gBAAgBL,GACtCH,EAAWS,SAAX,UAAyB3C,EAAzB,QACAmC,SAASS,KAAKC,YAAYX,GAC1BA,EAAWY,QACXX,SAASS,KAAKG,YAAYb,I,wSELtBc,GAAYC,aAAW,SAAAC,GAAK,MAAK,CACrCC,MAAO,CACLC,MAAOF,EAAMG,QAAQC,QAAQC,MAE/BC,OAAQ,CACNC,UAAW,SACXC,OAAQ,OAEVC,cAAe,CACbC,UAAW,QACXH,UAAW,OACXI,SAAU,WACVC,WAAY,MACZC,YAAa,OAEfC,KAAM,CACJJ,UAAW,SAEbK,eAAgB,CACdR,UAAW,SACXS,QAAS,QACTJ,WAAY,SAEdK,UAAW,CACTP,UAAW,QACXQ,aAAc,OAEhBC,cAAe,CACbZ,UAAW,SACXa,aAAc,SAEhBC,SAAU,CACRC,YAAatB,EAAMuB,QAAQ,IAE7BC,YAAa,CACXjB,UAAW,SACXK,WAAY,MACZa,cAAe,YAIbC,GAAa,SAAAC,GACjB,MAAM,GAAN,OAAUA,EAAKnD,cAAgBmD,EAAKnD,cAAgB,GAApD,mBACImD,EAAKlD,KAAOkD,EAAKlD,KAAO,GAD5B,mBAEIkD,EAAKhD,QAAUgD,EAAKhD,QAAU,KAGrB,SAASiD,KAAe,IAC7B9E,EAAa+E,cAAb/E,SACFgF,EAAUhC,KAFoB,EAGdiC,oBAAS,GAAtBC,EAH2B,sBAIJD,mBAAS,IAJL,mBAI7BhF,EAJ6B,KAInBkF,EAJmB,OAKEF,oBAAS,GALX,mBAK7BG,EAL6B,KAKhBC,EALgB,OAMEJ,mBAAS,IANX,mBAM7BK,EAN6B,KAMhBC,EANgB,KAqCpC,OA7BAC,qBAAU,WAAM,4CACd,sBAAAC,EAAA,sEACoBC,MAAM,GAAD,OAClBC,yCADkB,6BACgC3F,IAFzD,cAKK4F,OACAC,MAAK,SAAAC,GAAG,OAAIX,EAAYW,MACxBC,OAAM,kBAAMb,GAAU,MAP3B,4CADc,uBAAC,WAAD,wBAUdc,KACC,CAAChG,IAEJwF,qBAAU,WAAM,4CACd,4BAAAC,EAAA,6DACMQ,EADN,UACoBN,yCADpB,8BACuE3F,GADvE,SAEe0F,MAAMO,GAClBJ,MAAK,SAAAK,GAAQ,OAAIA,EAASC,UAC1BN,MAAK,SAAAM,GAAI,OAAI,IAAIC,SAAQ,SAACC,EAASC,GAClC,IAAMC,EAAS,IAAIC,WACnBD,EAAOE,UAAY,kBAAMJ,EAAQE,EAAOG,SACxCH,EAAOI,QAAUL,EACjBC,EAAOK,cAAcT,SAEtBN,MAAK,SAAA3F,GAAS,OAAIqF,EAAerF,MAVpC,oFADc,uBAAC,WAAD,wBAad2G,KACC,CAAC7G,IAGF,kBAAC,IAAM8G,SAAP,KACE,kBAACC,EAAA,OAAD,KACE,wDAA0B9G,EAAS+G,eAElC/G,EAAS+G,YAKV,GAJA,yBAAKC,UAAWjC,EAAQxB,QACtB,kBAAC0D,EAAA,EAAD,OAKJ,kBAACC,EAAA,EAAD,CAAMC,KAAKnH,EAAS+G,aAClB,kBAACK,EAAA,EAAD,CAAOJ,UAAWjC,EAAQ7B,OACxB,6BACE,yBAAK8D,UAAWjC,EAAQrB,eACtB,yBACEsD,UAAWjC,EAAQhB,KACnBsD,IAAKtD,IACLuD,IAAI,qCAIR,yBAAKN,UAAWjC,EAAQf,iBACpBmB,GAAe,yBAAK6B,UAAWjC,EAAQb,UAAWmD,IAAKE,OACzD,yBACEP,UAAWjC,EAAQb,UAAWoD,IAAI,GAClCD,IAAG,UAAK3B,yCAAL,8BAAwD3F,GAC3DyH,OAAQ,kBAAMpC,GAAe,OAIjC,yBAAK4B,UAAWjC,EAAQX,eACtB,kBAACqD,EAAA,EAAD,CACEC,QAAQ,KACRC,UAAU,KACVC,MAAO,CAAEC,WAAY,MAEpB7H,EAAS+G,cAId,6BACE,kBAACe,EAAA,EAAD,CAAaC,WAAS,EAAC5E,MAAM,WAC3B,kBAAC6E,EAAA,EAAD,CACEC,KAAK,QACLN,UAAWO,IACX3F,KAAI,cAASvC,EAASa,cAEtB,kBAAC,IAAD,CAAWmG,UAAWjC,EAAQT,WALhC,QAQA,kBAAC0D,EAAA,EAAD,CACEC,KAAK,QACLN,UAAWO,IACX3F,KAAI,iBAAYvC,EAASW,MAArB,2BAA6CX,EAAS+G,cAE1D,kBAAC,IAAD,CAAWC,UAAWjC,EAAQT,WALhC,SAQA,kBAAC0D,EAAA,EAAD,CACEC,KAAK,QACLN,UAAWO,IACXC,QAAS,kBAAMrI,EAAcC,EAASqI,OAAQpI,EAAUqF,IACxDgD,OAAO,UAEP,kBAAC,IAAD,CAAerB,UAAWjC,EAAQT,WANpC,cAaN,kBAACgE,EAAA,EAAD,KACE,kBAACC,EAAA,EAAD,CAAMZ,UAAU,OACd,kBAACa,EAAA,EAAD,KACE,kBAACC,EAAA,EAAD,KACE,kBAAC,IAAD,CAAUtF,MAAM,aAElB,kBAACuF,EAAA,EAAD,CACErF,QAASrD,EAASe,SAClB4H,UAAW3I,EAAS4I,cAGxB,kBAACC,EAAA,EAAD,MAEA,kBAACL,EAAA,EAAD,CACEM,QAAM,EACNnB,UAAWO,IACX3F,KAAI,iBAAYvC,EAASW,MAArB,2BAA6CX,EAAS+G,cAE1D,kBAAC0B,EAAA,EAAD,KACE,kBAAC,IAAD,CAAWtF,MAAM,aAEnB,kBAACuF,EAAA,EAAD,CAAcrF,QAASrD,EAASW,MAAOgI,UAAU,WAEnD,kBAACE,EAAA,EAAD,MAEA,kBAACL,EAAA,EAAD,CACEM,QAAM,EACNnB,UAAWO,IACX3F,KAAI,cAASvC,EAASa,cAEtB,kBAAC4H,EAAA,EAAD,KACE,kBAAC,IAAD,CAAWtF,MAAM,aAEnB,kBAACuF,EAAA,EAAD,CACErF,QAASrD,EAASa,YAClB8H,UAAU,YAGd,kBAACE,EAAA,EAAD,MAEA,kBAACL,EAAA,EAAD,CACEM,QAAM,EACNnB,UAAWO,IACX3F,KAAI,gDAA2CoC,GAC7C3E,IAEFqI,OAAO,UAEP,kBAACI,EAAA,EAAD,KACE,kBAAC,IAAD,CAAkBtF,MAAM,aAE1B,kBAACuF,EAAA,EAAD,CACErF,QAASsB,GAAW3E,GACpB2I,UAAU,cAGd,kBAACE,EAAA,EAAD,MAEA,kBAACL,EAAA,EAAD,CACEM,QAAM,EACNnB,UAAWO,IACX3F,KAAK,mBACL8F,OAAO,UAEP,kBAACI,EAAA,EAAD,KACE,kBAAC,IAAD,CAActF,MAAM,aAEtB,kBAACuF,EAAA,EAAD,CACErF,QAAQ,mBACRsF,UAAU,uBAMlB,kBAACE,EAAA,EAAD,MAEA,kBAACP,EAAA,EAAD,CAAWtB,UAAWjC,EAAQN,aAC5B,kBAACyD,EAAA,EAAD,CAAM3F,KD5PhB,gEC6PY,kBAAC,IAAD,CAAcwG,SAAS,WAEzB,kBAACb,EAAA,EAAD,CAAM3F,KDjQhB,sDCkQY,kBAAC,IAAD,CAAcwG,SAAS,WAEzB,kBAACb,EAAA,EAAD,CAAM3F,KDhQhB,uDCiQY,kBAAC,IAAD,CAAewG,SAAS,eC7QtC,IAAM9F,GAAQ+F,YAAe,CAC3BC,WAAY,CACVC,WAAY,sBAEd9F,QAAS,CACPC,QAAS,CACPC,KAAM,cAKNP,GAAYC,aAAW,iBAAO,CAClCmG,KAAM,CACJC,UAAW,MACX/E,aAAc,aAIZgF,GAAY,WAChB,IAAMtE,EAAUhC,KAChB,OACE,kBAACuF,EAAA,EAAD,CAAWgB,SAAS,KAAKtC,UAAWjC,EAAQoE,MAC1C,kBAACI,EAAA,EAAD,CAAetG,MAAOA,IACpB,kBAAC4B,GAAD,SAmBO2E,OAbf,WACE,OACE,kBAAC,IAAM3C,SAAP,KACE,kBAAC4C,EAAA,EAAD,MACA,kBAAC,IAAD,KACE,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAOC,KAAK,aAAa/B,UAAW0B,SCzC9CM,IAASC,OAAO,kBAAC,GAAD,MAAS1H,SAAS2H,eAAe,W","file":"static/js/main.ad2279b4.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/newLogo.24f9bf81.png\";","module.exports = __webpack_public_path__ + \"static/media/blankPhoto.5a021ab9.png\";","import vCardsJS from \"vcards-js\";\n\nimport {\n CompanyContactsPage,\n CompanyFacebookAccUrl,\n CompanyLinkedInAccUrl,\n CompanyInstagramAccUrl\n} from \"utilities/constants\";\n\nexport const generateVCard = (userInfo, imageData, username) => {\n let vCard = vCardsJS();\n vCard.firstName = userInfo.givenName;\n vCard.lastName = userInfo.surname;\n vCard.organization = userInfo.companyName;\n vCard.email = userInfo.email;\n vCard.workPhone = userInfo.mobilePhone;\n vCard.title = userInfo.jobTitle;\n\n let base64Start = imageData.indexOf(\"9j\");\n vCard.photo.embedFromString(imageData.substring(base64Start - 1), \"image/jpeg\");\n\n vCard.url = \"https://tbs.tech\";\n vCard.source = `${CompanyContactsPage}/${username}`;\n\n vCard.workAddress.street = userInfo.streetAddress;\n vCard.workAddress.city = userInfo.city;\n vCard.workAddress.countryRegion = userInfo.country;\n vCard.workAddress.postalCode = userInfo.postalCode;\n\n vCard.socialUrls[\"facebook\"] = CompanyFacebookAccUrl;\n vCard.socialUrls[\"linkedIn\"] = CompanyLinkedInAccUrl;\n vCard.socialUrls[\"instagram\"] = CompanyInstagramAccUrl;\n\n return vCard.getFormattedString();\n};\n\nexport const downloadVCard = (username, userInfo, imageData) => {\n let userVCardInfo = generateVCard(userInfo, imageData, username);\n const downloadEl = document.createElement(\"a\");\n const file = new Blob([userVCardInfo], { type: \"text/vcard\" });\n downloadEl.href = URL.createObjectURL(file);\n downloadEl.download = `${username}.vcf`;\n document.body.appendChild(downloadEl);\n downloadEl.click();\n document.body.removeChild(downloadEl);\n};\n","export const UserInfoEmptyState = {\n displayName: \"Employee Name\",\n givenName: \"Employee\",\n surname: \"Name\",\n jobTitle: \"Job Title\",\n department: \"Department\",\n email: \"tbs.employee@tbs.tech\",\n mobilePhone: \"+359 888 888 888\",\n companyName: \"Telelink Business Services\",\n country: \"Bulgaria\",\n city: \"Sofia\",\n streetAddress: \"2 Donka Ushlinova str.\",\n officeLocation: \"Garitage Building 1, Floor 4\",\n postalCode: \"1756\"\n};\n\nexport const CompanyWebsite = \"https://tbs.tech\";\nexport const CompanyContactsPage = \"https://contacts.tbs.tech\";\n\nexport const CompanyFacebookAccUrl =\n \"https://www.facebook.com/TelelinkBusinessServices/\";\nexport const CompanyLinkedInAccUrl =\n \"https://www.linkedin.com/company/telelink-business-services/\";\nexport const CompanyInstagramAccUrl =\n \"https://www.instagram.com/telelinkbusinessservices/\";\n","import React, { useState, useEffect } from \"react\";\nimport { useParams } from \"react-router\";\nimport { Helmet } from \"react-helmet\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { downloadVCard } from \"utilities/vCardGenerator\";\n\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\nimport Container from \"@material-ui/core/Container\";\nimport Paper from \"@material-ui/core/Paper\";\nimport Fade from \"@material-ui/core/Fade\";\nimport List from \"@material-ui/core/List\";\nimport ListItem from \"@material-ui/core/ListItem\";\nimport ListItemIcon from \"@material-ui/core/ListItemIcon\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\nimport Divider from \"@material-ui/core/Divider\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Button from \"@material-ui/core/Button\";\nimport ButtonGroup from \"@material-ui/core/ButtonGroup\";\nimport Link from \"@material-ui/core/Link\";\n\nimport PhoneIcon from \"@material-ui/icons/Phone\";\nimport EmailIcon from \"@material-ui/icons/Email\";\nimport PersonAddIcon from \"@material-ui/icons/PersonAdd\";\nimport WorkIcon from \"@material-ui/icons/Work\";\nimport LocationCityIcon from \"@material-ui/icons/LocationCity\";\nimport LanguageIcon from \"@material-ui/icons/Language\";\nimport FacebookIcon from \"@material-ui/icons/Facebook\";\nimport InstagramIcon from \"@material-ui/icons/Instagram\";\nimport LinkedInIcon from \"@material-ui/icons/LinkedIn\";\n\nimport {\n CompanyFacebookAccUrl,\n CompanyLinkedInAccUrl,\n CompanyInstagramAccUrl\n} from \"utilities/constants\";\n\nimport logo from \"newLogo.png\";\nimport BlankPhoto from \"blankPhoto.png\";\n\nconst useStyles = makeStyles(theme => ({\n paper: {\n color: theme.palette.primary.main\n },\n loader: {\n textAlign: \"center\",\n margin: \"50%\"\n },\n logoContainer: {\n maxHeight: \"2.8em\",\n textAlign: \"left\",\n position: \"relative\",\n paddingTop: \"1em\",\n paddingLeft: \"1em\"\n },\n logo: {\n maxHeight: \"3.8em\"\n },\n photoContainer: {\n textAlign: \"center\",\n padding: \"1.5em\",\n paddingTop: \"2.5em\"\n },\n userPhoto: {\n maxHeight: \"300px\",\n borderRadius: \"50%\"\n },\n nameContainer: {\n textAlign: \"center\",\n marginBottom: \"1.8em\"\n },\n leftIcon: {\n marginRight: theme.spacing(1)\n },\n socialIcons: {\n textAlign: \"center\",\n paddingTop: \"1em\",\n paddingBottom: \".5em\"\n }\n}));\n\nconst getAddress = user => {\n return `${user.streetAddress ? user.streetAddress : \"\"}, \n ${user.city ? user.city : \"\"}, \n ${user.country ? user.country : \"\"}`;\n};\n\nexport default function UserProfile() {\n const { username } = useParams();\n const classes = useStyles();\n const [, setErrors] = useState(false);\n const [userInfo, setUserInfo] = useState({});\n const [photoLoaded, setPhotoLoaded] = useState(false);\n const [photoBase64, setPhotoBase64] = useState(\"\");\n\n useEffect(() => {\n async function fetchData() {\n const res = await fetch(\n `${process.env.REACT_APP_API_URL}/userprofile/info/${username}`\n );\n res\n .json()\n .then(res => setUserInfo(res))\n .catch(() => setErrors(true));\n }\n fetchData();\n }, [username]);\n\n useEffect(() => {\n async function downloadAndConvertImg() {\n let imageUrl = `${process.env.REACT_APP_API_URL}/userprofile/photo/${username}`;\n return await fetch(imageUrl)\n .then(response => response.blob())\n .then(blob => new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n }))\n .then(imageData => setPhotoBase64(imageData));\n }\n downloadAndConvertImg();\n }, [username]);\n\n return (\n \n \n {`TBS Contacts - ${userInfo.displayName}`}\n \n {!(userInfo.displayName) ? (\n \n \n \n ) : (\n \"\"\n )}\n \n \n \n \n \n \n\n \n {!photoLoaded && }\n setPhotoLoaded(true)}\n />\n \n\n \n \n {userInfo.displayName}\n \n \n\n \n \n \n \n Call\n \n \n \n Email\n \n downloadVCard(username.trim(), userInfo, photoBase64)}\n target=\"_blank\"\n >\n \n Contact\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { BrowserRouter as Router, Route, Switch } from \"react-router-dom\";\nimport {\n makeStyles,\n createMuiTheme,\n ThemeProvider\n} from \"@material-ui/core/styles\";\n\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\nimport Container from \"@material-ui/core/Container\";\nimport UserProfile from \"components/UserProfile/UserProfile\";\n\nconst theme = createMuiTheme({\n typography: {\n fontFamily: \"Barlow, sans-serif\"\n },\n palette: {\n primary: {\n main: \"#0269e6\"\n }\n }\n});\n\nconst useStyles = makeStyles(() => ({\n root: {\n marginTop: \"3em\",\n marginBottom: \"2.5em\"\n }\n}));\n\nconst UserVCard = () => {\n const classes = useStyles();\n return (\n \n \n \n \n \n );\n};\n\nfunction App() {\n return (\n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport \"index.css\";\nimport App from \"views/App\";\n\nReactDOM.render(, document.getElementById(\"root\"));\n"],"sourceRoot":""}