{"version":3,"file":"personPage.js","sources":["../../../../s/BiNo.ReactApps/apps/scripts/src/personPage.ts"],"sourcesContent":["import { onReady } from './util/onReady';\r\n\r\n/*\r\nFunction that tries to break a URL into multiple lines in a readable way.\r\n*/\r\nexport function formatUrl(url: string) {\r\n // Split the URL into an array to distinguish double slashes from single slashes\r\n const urlParts = url.split('//');\r\n // Format the strings on either side of double slashes separately\r\n const formatted = urlParts\r\n .map(\r\n (part) =>\r\n part\r\n .replace(/(?:)/giu, '$1')\r\n // Before a single slash, tilde, period, comma, hyphen, underline, question mark, number sign, or percent symbol\r\n .replace(/(?[/~.,\\-_?#%])/giu, '$1')\r\n // Before and after an equals sign or ampersand\r\n .replace(/(?[=&])/giu, '$1'),\r\n // Reconnect the strings with word break opportunities after double slashes\r\n )\r\n .join('//');\r\n return formatted;\r\n}\r\n\r\nfunction addBreakpointsToUrls() {\r\n const urls = document.querySelectorAll('.bio > a');\r\n for (const url of urls) {\r\n const urlText = url.textContent;\r\n if (!urlText) continue;\r\n url.textContent = '';\r\n url.innerHTML = formatUrl(urlText);\r\n }\r\n}\r\n\r\nfunction showMoreElements(target: HTMLButtonElement, elementList: HTMLElement) {\r\n if (!elementList) return;\r\n\r\n const hiddenElements = elementList.querySelectorAll('.pubElement.hideTheElement');\r\n const hiddenLength = hiddenElements.length;\r\n const numberOfElementsToShow = hiddenLength > 5 ? 5 : hiddenLength;\r\n\r\n for (let i = 0; i < numberOfElementsToShow; i++) {\r\n hiddenElements[i].classList.remove('hideTheElement');\r\n }\r\n updateButtonText(target, hiddenLength - numberOfElementsToShow);\r\n}\r\n\r\nfunction updateButtonText(button: HTMLButtonElement, numberOfElementsStillHidden: number) {\r\n if (!button) return;\r\n\r\n if (numberOfElementsStillHidden === 0) {\r\n button.setAttribute('aria-hidden', 'true');\r\n button.classList.add('hideTheElement');\r\n } else {\r\n button.querySelectorAll('._jsNbToShow')[0].innerHTML = String(\r\n numberOfElementsStillHidden > 5 ? 5 : numberOfElementsStillHidden,\r\n );\r\n button.querySelectorAll('._jsNbLeft')[0].innerHTML = String(numberOfElementsStillHidden);\r\n }\r\n}\r\n\r\nfunction toggleElement(targetId: string) {\r\n const element = document.getElementById(targetId);\r\n if (!element) return;\r\n element.classList.toggle('hideTheElement');\r\n}\r\n\r\nfunction init() {\r\n const loadMoreAcademicExperience = document.getElementById('loadMoreAcademicExperience');\r\n const loadMoreWorkExperience = document.getElementById('loadMoreWorkExperience');\r\n\r\n if (loadMoreAcademicExperience) {\r\n loadMoreAcademicExperience.addEventListener('click', () => {\r\n const targetId = loadMoreAcademicExperience.getAttribute('aria-controls');\r\n if (!targetId) return;\r\n toggleElement(targetId);\r\n });\r\n }\r\n\r\n if (loadMoreWorkExperience) {\r\n loadMoreWorkExperience.addEventListener('click', () => {\r\n const targetId = loadMoreWorkExperience.getAttribute('aria-controls');\r\n if (!targetId) return;\r\n toggleElement(targetId);\r\n });\r\n }\r\n\r\n const cristinContainer = document.querySelector('.jsCristinPublications');\r\n\r\n if (!cristinContainer) return;\r\n\r\n const showMoreButtons = cristinContainer.querySelectorAll('._jsShowMorePublications');\r\n const showSummaryButtons = cristinContainer.querySelectorAll('._jsShowSummary');\r\n\r\n showMoreButtons.forEach((button) => {\r\n button.addEventListener(\r\n 'click',\r\n () => {\r\n const targetId = button.getAttribute('aria-controls');\r\n if (!targetId) return;\r\n const elementList = document.getElementById(targetId);\r\n if (!elementList) return;\r\n showMoreElements(button, elementList);\r\n },\r\n { passive: true },\r\n );\r\n });\r\n\r\n showSummaryButtons.forEach((button) => {\r\n button.addEventListener(\r\n 'click',\r\n () => {\r\n const targetId = button.getAttribute('aria-controls');\r\n if (!targetId) return;\r\n toggleElement(targetId);\r\n },\r\n { passive: true },\r\n );\r\n });\r\n\r\n addBreakpointsToUrls();\r\n}\r\n\r\nonReady(() => {\r\n init();\r\n});\r\n"],"names":["formatUrl","url","part","addBreakpointsToUrls","urls","urlText","showMoreElements","target","elementList","hiddenElements","hiddenLength","numberOfElementsToShow","i","updateButtonText","button","numberOfElementsStillHidden","toggleElement","targetId","element","init","loadMoreAcademicExperience","loadMoreWorkExperience","cristinContainer","showMoreButtons","showSummaryButtons","onReady"],"mappings":"0CAKO,SAASA,EAAUC,EAAa,CAgB5B,OAdUA,EAAI,MAAM,IAAI,EAG1B,IACIC,GACGA,EACK,QAAQ,iBAAkB,SAAS,EAEnC,QAAQ,6BAA8B,SAAS,EAE/C,QAAQ,6BAA8B,cAAc,CAAA,EAGhE,KAAK,SAAS,CAEvB,CAEA,SAASC,GAAuB,CACtB,MAAAC,EAAO,SAAS,iBAAiB,UAAU,EACjD,UAAWH,KAAOG,EAAM,CACpB,MAAMC,EAAUJ,EAAI,YACfI,IACLJ,EAAI,YAAc,GACdA,EAAA,UAAYD,EAAUK,CAAO,EAAA,CAEzC,CAEA,SAASC,EAAiBC,EAA2BC,EAA0B,CAC3E,GAAI,CAACA,EAAa,OAEZ,MAAAC,EAAiBD,EAAY,iBAAiB,4BAA4B,EAC1EE,EAAeD,EAAe,OAC9BE,EAAyBD,EAAe,EAAI,EAAIA,EAEtD,QAASE,EAAI,EAAGA,EAAID,EAAwBC,IACxCH,EAAeG,CAAC,EAAE,UAAU,OAAO,gBAAgB,EAEtCC,EAAAN,EAAQG,EAAeC,CAAsB,CAClE,CAEA,SAASE,EAAiBC,EAA2BC,EAAqC,CACjFD,IAEDC,IAAgC,GACzBD,EAAA,aAAa,cAAe,MAAM,EAClCA,EAAA,UAAU,IAAI,gBAAgB,IAErCA,EAAO,iBAAiB,cAAc,EAAE,CAAC,EAAE,UAAY,OACnDC,EAA8B,EAAI,EAAIA,CAC1C,EACAD,EAAO,iBAAiB,YAAY,EAAE,CAAC,EAAE,UAAY,OAAOC,CAA2B,GAE/F,CAEA,SAASC,EAAcC,EAAkB,CAC/B,MAAAC,EAAU,SAAS,eAAeD,CAAQ,EAC3CC,GACGA,EAAA,UAAU,OAAO,gBAAgB,CAC7C,CAEA,SAASC,GAAO,CACN,MAAAC,EAA6B,SAAS,eAAe,4BAA4B,EACjFC,EAAyB,SAAS,eAAe,wBAAwB,EAE3ED,GAC2BA,EAAA,iBAAiB,QAAS,IAAM,CACjD,MAAAH,EAAWG,EAA2B,aAAa,eAAe,EACnEH,GACLD,EAAcC,CAAQ,CAAA,CACzB,EAGDI,GACuBA,EAAA,iBAAiB,QAAS,IAAM,CAC7C,MAAAJ,EAAWI,EAAuB,aAAa,eAAe,EAC/DJ,GACLD,EAAcC,CAAQ,CAAA,CACzB,EAGC,MAAAK,EAAmB,SAAS,cAAc,wBAAwB,EAExE,GAAI,CAACA,EAAkB,OAEjB,MAAAC,EAAkBD,EAAiB,iBAAoC,0BAA0B,EACjGE,EAAqBF,EAAiB,iBAAoC,iBAAiB,EAEjFC,EAAA,QAAST,GAAW,CACzBA,EAAA,iBACH,QACA,IAAM,CACI,MAAAG,EAAWH,EAAO,aAAa,eAAe,EACpD,GAAI,CAACG,EAAU,OACT,MAAAT,EAAc,SAAS,eAAeS,CAAQ,EAC/CT,GACLF,EAAiBQ,EAAQN,CAAW,CACxC,EACA,CAAE,QAAS,EAAK,CACpB,CAAA,CACH,EAEkBgB,EAAA,QAASV,GAAW,CAC5BA,EAAA,iBACH,QACA,IAAM,CACI,MAAAG,EAAWH,EAAO,aAAa,eAAe,EAC/CG,GACLD,EAAcC,CAAQ,CAC1B,EACA,CAAE,QAAS,EAAK,CACpB,CAAA,CACH,EAEoBd,EAAA,CACzB,CAEAsB,EAAQ,IAAM,CACLN,EAAA,CACT,CAAC"}