{"version":3,"file":"citationHandler.e80144dc.js","sources":["../../../assets/nal-frontend/src/citationHandler.js"],"sourcesContent":["function groupTooltipsByContent(tooltipElements) {\r\n\r\n if (tooltipElements.length === 0) {\r\n return [];\r\n }\r\n\r\n const citations = [];\r\n\r\n for (const tooltip of tooltipElements) {\r\n const tooltipText = tooltip.querySelector('.tooltip-hover-text').innerHTML.trim();\r\n const existingCitation = citations.find(c => c.text === tooltipText);\r\n\r\n if (existingCitation) {\r\n existingCitation.elements.push(tooltip);\r\n } else {\r\n citations.push({\r\n text: tooltipText,\r\n elements: [tooltip]\r\n });\r\n }\r\n }\r\n\r\n return citations;\r\n}\r\n\r\n\r\nexport function setCitationText() {\r\n const tooltipElements = [...document.querySelectorAll('.tooltip')];\r\n const groupedTooltips = groupTooltipsByContent(tooltipElements);\r\n\r\n if (groupedTooltips.length === 0) {\r\n return;\r\n }\r\n\r\n const referenceBlock = document.querySelector('.references-block');\r\n referenceBlock.style.display = 'revert';\r\n const referenceBlockList = referenceBlock.querySelector('ol');\r\n\r\n for (let i = 0; i < groupedTooltips.length; i++) {\r\n const elementId = \"reference-\" + (i + 1);\r\n const listElement = document.createElement(\"li\");\r\n listElement.innerHTML = groupedTooltips[i].text;\r\n listElement.id = elementId;\r\n referenceBlockList.appendChild(listElement);\r\n\r\n for (const tooltip of groupedTooltips[i].elements) {\r\n const tooltipIcon = tooltip.querySelector('.tooltip-icon');\r\n const tooltipCitation = tooltip.querySelector('.tooltip-citation');\r\n tooltipIcon.style.display = 'none';\r\n tooltipCitation.style.display = 'inline-block';\r\n tooltipCitation.innerHTML = i + 1;\r\n tooltipCitation.href = '#' + elementId;\r\n }\r\n }\r\n\r\n // remove trailing whitespace that umbraco adds right before a macro inside a paragraph\r\n for (let parent of tooltipElements.map(t => t.parentElement)) {\r\n const lastIdx = parent.childNodes.length - 1;\r\n for (let i = 0; i < parent.childNodes.length; i++) {\r\n const node = parent.childNodes[i];\r\n\r\n // if this is a block of text preceding a tooltip: remove the last whitespace\r\n if(node.nodeType === Node.TEXT_NODE) {\r\n \r\n // element with tooltip class is three elements after the text-block\r\n if(i + 3 < lastIdx && parent.childNodes[i + 3].classList.contains('tooltip')) {\r\n node.textContent = node.textContent.replace(/\\s$/, \"\");\r\n }\r\n }\r\n }\r\n }\r\n}"],"names":["groupTooltipsByContent","tooltipElements","citations","tooltip","tooltipText","existingCitation","c","setCitationText","groupedTooltips","referenceBlock","referenceBlockList","i","elementId","listElement","tooltipIcon","tooltipCitation","parent","t","lastIdx","node"],"mappings":"AAAC,SAASA,EAAuBC,EAAiB,CAE9C,GAAIA,EAAgB,SAAW,EAC3B,MAAO,GAGX,MAAMC,EAAY,CAAA,EAElB,UAAWC,KAAWF,EAAiB,CACnC,MAAMG,EAAcD,EAAQ,cAAc,qBAAqB,EAAE,UAAU,OACrEE,EAAmBH,EAAU,KAAKI,GAAKA,EAAE,OAASF,CAAW,EAE/DC,EACAA,EAAiB,SAAS,KAAKF,CAAO,EAEtCD,EAAU,KAAK,CACX,KAAME,EACN,SAAU,CAACD,CAAO,CAClC,CAAa,CAER,CAED,OAAOD,CACX,CAGO,SAASK,GAAkB,CAC9B,MAAMN,EAAkB,CAAC,GAAG,SAAS,iBAAiB,UAAU,CAAC,EAC3DO,EAAkBR,EAAuBC,CAAe,EAE9D,GAAIO,EAAgB,SAAW,EAC3B,OAGJ,MAAMC,EAAiB,SAAS,cAAc,mBAAmB,EACjEA,EAAe,MAAM,QAAU,SAC/B,MAAMC,EAAqBD,EAAe,cAAc,IAAI,EAE5D,QAASE,EAAI,EAAGA,EAAIH,EAAgB,OAAQG,IAAK,CAC7C,MAAMC,EAAY,cAAgBD,EAAI,GAChCE,EAAc,SAAS,cAAc,IAAI,EAC/CA,EAAY,UAAYL,EAAgBG,GAAG,KAC3CE,EAAY,GAAKD,EACjBF,EAAmB,YAAYG,CAAW,EAE1C,UAAWV,KAAWK,EAAgBG,GAAG,SAAU,CAC/C,MAAMG,EAAcX,EAAQ,cAAc,eAAe,EACnDY,EAAkBZ,EAAQ,cAAc,mBAAmB,EACjEW,EAAY,MAAM,QAAU,OAC5BC,EAAgB,MAAM,QAAU,eAChCA,EAAgB,UAAYJ,EAAI,EAChCI,EAAgB,KAAO,IAAMH,CAChC,CACJ,CAGD,QAASI,KAAUf,EAAgB,IAAIgB,GAAKA,EAAE,aAAa,EAAG,CAC1D,MAAMC,EAAUF,EAAO,WAAW,OAAS,EAC3C,QAASL,EAAI,EAAGA,EAAIK,EAAO,WAAW,OAAQL,IAAK,CAC/C,MAAMQ,EAAOH,EAAO,WAAWL,GAG5BQ,EAAK,WAAa,KAAK,WAGnBR,EAAI,EAAIO,GAAWF,EAAO,WAAWL,EAAI,GAAG,UAAU,SAAS,SAAS,IACvEQ,EAAK,YAAcA,EAAK,YAAY,QAAQ,MAAO,EAAE,EAGhE,CACJ,CACL"}