{"version":3,"sources":["article-jumplinks.js"],"names":["articleJumplinks","userClickedLink","createArticleJumplinksMobile","articleJumplinkDetails","document","querySelector","articleHeadings","querySelectorAll","div","createElement","ul","forEach","heading","index","li","linkButton","textContent","dataset","jumplinkAnchor","className","appendChild","createArticleJumplinksDesktop","stickyWrapper","jumplink","handleArticleJumplinksScroll","rect","getBoundingClientRect","elemTop","top","elemBottom","bottom","isVisible","window","innerHeight","dataJumplink","activeHeading","classList","remove","closest","add","handleArticleJumplinksClick","event","el","target","contains","offset","offsetPosition","pageYOffset","scrollTo","behavior","setTimeout","addEventListener","matchMedia","matches"],"mappings":"AAAA,MAAAA,iBAAA,WACA,IAAAC,GAAA,EAsGA,MAAA,CACAC,6BAhFA,WAEA,MAAAC,EAAAC,SAAAC,cAAA,+CACA,IAAAF,EACA,OAEA,MAAAG,EAAAF,SAAAG,iBAAA,qBACAC,EAAAJ,SAAAK,cAAA,OACAC,EAAAN,SAAAK,cAAA,MACAH,EAAAK,SAAA,SAAAC,EAAAC,GACA,MAAAC,EAAAV,SAAAK,cAAA,MACAM,EAAAX,SAAAK,cAAA,UACAM,EAAAC,YAAAJ,EAAAI,YACAD,EAAAE,QAAAC,eAAA,YAAAL,EAAA,IACAE,EAAAI,UAAA,8BACAL,EAAAM,YAAAL,GACAL,EAAAU,YAAAN,EACA,IACAN,EAAAY,YAAAV,GACAP,EAAAiB,YAAAZ,EACA,EA6DAa,8BAtGA,WAEA,MAAAC,EAAAlB,SAAAC,cAAA,mCACA,IAAAiB,EACA,OAEA,MAAAhB,EAAAF,SAAAG,iBAAA,qBACAG,EAAAN,SAAAK,cAAA,MACAH,EAAAK,SAAA,SAAAC,EAAAC,GACA,MAAAC,EAAAV,SAAAK,cAAA,MACAM,EAAAX,SAAAK,cAAA,UACAG,EAAAK,QAAAM,SAAA,YAAAV,EAAA,IACAE,EAAAE,QAAAC,eAAA,YAAAL,EAAA,IACAE,EAAAC,YAAAJ,EAAAI,YACAD,EAAAI,UAAA,8BACAL,EAAAM,YAAAL,GACAL,EAAAU,YAAAN,EACA,IACAQ,EAAAF,YAAAV,EACA,EAoFAc,6BA5DA,WACA,GAAAvB,EACA,OAGA,IADAG,SAAAC,cAAA,mCAEA,OAEAD,SAAAG,iBAAA,qBACAI,SAAA,SAAAC,GACA,IAAAG,EACA,MAAAU,EAAAb,EAAAc,wBACAC,EAAAF,EAAAG,IACAC,EAAAJ,EAAAK,OACAC,EAAAJ,GAAA,GAAAE,GAAAG,OAAAC,YAAA,IACAC,EAAAtB,EAAAK,QAAAM,SACA,OAAAW,IACAnB,EAAAX,SAAAC,cAAA,iDAAA6B,QAEA,MAAAC,EAAA/B,SAAAC,cAAA,oCACA0B,GACA,OAAAhB,IACA,OAAAoB,GACAA,EAAAC,UAAAC,OAAA,UAEAtB,EAAAuB,QAAA,MAAAF,UAAAG,IAAA,UAGA,GACA,EAgCAC,4BA9BA,SAAAC,GACA,MAAAC,EAAAD,EAAAE,OACA,GAAAD,EAAAN,UAAAQ,SAAA,+BAAA,CACA3C,GAAA,EACA,MAAAkC,EAAA/B,SAAAC,cAAA,oCAEA6B,EAAAQ,EAAAzB,QAAAC,eAEA2B,EAAA,GAEAC,EAHA1C,SAAAC,cAAA,mBAAA6B,OAEAR,wBAAAE,IACAI,OAAAe,YAAAF,EACAb,OAAAgB,SAAA,CACApB,IAAAkB,EACAG,SAAA,WAGA,OAAAd,GACAA,EAAAC,UAAAC,OAAA,UAEAK,EAAAJ,QAAA,MAAAF,UAAAG,IAAA,UACAW,YAAA,WACAjD,GAAA,CACA,GAAA,IACA,CACA,EAQA,CA7GA,GA+GA+B,OAAAmB,iBAAA,QAAA,WACAnD,iBAAAE,+BACAF,iBAAAqB,gCACAW,OAAAoB,WAAA,sBAAAC,SAGArD,iBAAAwB,8BACA,IAEAQ,OAAAmB,iBAAA,UAAA,WACAnD,iBAAAwB,8BACA,IAEApB,SAAA+C,iBAAA,SAAA,SAAAV,GACAzC,iBAAAwC,4BAAAC,EACA","file":"cms2-article-jumplinks.min.js","sourcesContent":["const articleJumplinks = (function () {\r\n\tlet userClickedLink = false;\r\n\r\n\tfunction createArticleJumplinksDesktop() {\r\n\t\t// Create HTML -- Desktop\r\n\t\tconst stickyWrapper = document.querySelector('.mod-article-jumplinks__wrapper');\r\n\t\tif (!stickyWrapper) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst articleHeadings = document.querySelectorAll('.jumplink-heading');\r\n\t\tconst ul = document.createElement('ul');\r\n\t\tarticleHeadings.forEach(function (heading, index) {\r\n\t\t\tconst li = document.createElement('li');\r\n\t\t\tconst linkButton = document.createElement('button');\r\n\t\t\theading.dataset.jumplink = `jumplink-${index + 1}`;\r\n\t\t\tlinkButton.dataset.jumplinkAnchor = `jumplink-${index + 1}`;\r\n\t\t\tlinkButton.textContent = heading.textContent;\r\n\t\t\tlinkButton.className = 'mod-article-jumplinks__link';\r\n\t\t\tli.appendChild(linkButton);\r\n\t\t\tul.appendChild(li);\r\n\t\t});\r\n\t\tstickyWrapper.appendChild(ul);\r\n\t}\r\n\r\n\tfunction createArticleJumplinksMobile() {\r\n\t\t// Create HTML -- Mobile\r\n\t\tconst articleJumplinkDetails = document.querySelector('.mod-article-jumplinks__mobile .mod-details');\r\n\t\tif (!articleJumplinkDetails) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst articleHeadings = document.querySelectorAll('.jumplink-heading');\r\n\t\tconst div = document.createElement('div');\r\n\t\tconst ul = document.createElement('ul');\r\n\t\tarticleHeadings.forEach(function (heading, index) {\r\n\t\t\tconst li = document.createElement('li');\r\n\t\t\tconst linkButton = document.createElement('button');\r\n\t\t\tlinkButton.textContent = heading.textContent;\r\n\t\t\tlinkButton.dataset.jumplinkAnchor = `jumplink-${index + 1}`;\r\n\t\t\tlinkButton.className = 'mod-article-jumplinks__link';\r\n\t\t\tli.appendChild(linkButton);\r\n\t\t\tul.appendChild(li);\r\n\t\t});\r\n\t\tdiv.appendChild(ul);\r\n\t\tarticleJumplinkDetails.appendChild(div);\r\n\t}\r\n\r\n\tfunction handleArticleJumplinksScroll() {\r\n\t\tif (userClickedLink) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst stickyWrapper = document.querySelector('.mod-article-jumplinks__wrapper');\r\n\t\tif (!stickyWrapper) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst articleHeadings = document.querySelectorAll('.jumplink-heading');\r\n\t\tarticleHeadings.forEach(function (heading) {\r\n\t\t\tlet linkButton;\r\n\t\t\tconst rect = heading.getBoundingClientRect();\r\n\t\t\tconst elemTop = rect.top;\r\n\t\t\tconst elemBottom = rect.bottom;\r\n\t\t\tconst isVisible = elemTop >= 0 && elemBottom <= window.innerHeight - 150;\r\n\t\t\tconst dataJumplink = heading.dataset.jumplink;\r\n\t\t\tif (dataJumplink !== null) {\r\n\t\t\t\tlinkButton = document.querySelector(`.mod-article-jumplinks [data-jumplink-anchor='${dataJumplink}']`);\r\n\t\t\t}\r\n\t\t\tconst activeHeading = document.querySelector('.mod-article-jumplinks li.active');\r\n\t\t\tif (isVisible) {\r\n\t\t\t\tif (linkButton !== null) {\r\n\t\t\t\t\tif (activeHeading !== null) {\r\n\t\t\t\t\t\tactiveHeading.classList.remove('active');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tlinkButton.closest('li').classList.add('active');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction handleArticleJumplinksClick(event) {\r\n\t\tconst el = event.target;\r\n\t\tif (el.classList.contains('mod-article-jumplinks__link')) {\r\n\t\t\tuserClickedLink = true;\r\n\t\t\tconst activeHeading = document.querySelector('.mod-article-jumplinks li.active');\r\n\t\t\t// Scroll to heading\r\n\t\t\tconst dataJumplink = el.dataset.jumplinkAnchor; //jumplink-1\r\n\t\t\tconst heading = document.querySelector(`[data-jumplink='${dataJumplink}']`);\r\n\t\t\tconst offset = 60;\r\n\t\t\tconst headingPosition = heading.getBoundingClientRect().top;\r\n\t\t\tconst offsetPosition = headingPosition + window.pageYOffset - offset;\r\n\t\t\twindow.scrollTo({\r\n\t\t\t\ttop: offsetPosition,\r\n\t\t\t\tbehavior: 'smooth',\r\n\t\t\t});\r\n\t\t\t// Handle active class on jumplinks\r\n\t\t\tif (activeHeading !== null) {\r\n\t\t\t\tactiveHeading.classList.remove('active');\r\n\t\t\t}\r\n\t\t\tel.closest('li').classList.add('active');\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tuserClickedLink = false;\r\n\t\t\t}, 1000);\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tcreateArticleJumplinksMobile: createArticleJumplinksMobile,\r\n\t\tcreateArticleJumplinksDesktop: createArticleJumplinksDesktop,\r\n\t\thandleArticleJumplinksScroll: handleArticleJumplinksScroll,\r\n\t\thandleArticleJumplinksClick: handleArticleJumplinksClick,\r\n\t};\r\n})();\r\n\r\nwindow.addEventListener('load', function () {\r\n\tarticleJumplinks.createArticleJumplinksMobile();\r\n\tarticleJumplinks.createArticleJumplinksDesktop();\r\n\tif (window.matchMedia('(max-width: 840px)').matches) {\r\n\t\treturn;\r\n\t}\r\n\tarticleJumplinks.handleArticleJumplinksScroll();\r\n});\r\n\r\nwindow.addEventListener('scroll', function () {\r\n\tarticleJumplinks.handleArticleJumplinksScroll();\r\n});\r\n\r\ndocument.addEventListener('click', function (event) {\r\n\tarticleJumplinks.handleArticleJumplinksClick(event);\r\n});\r\n"]}