{"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","offsetPosition","pageYOffset","scrollTo","behavior","setTimeout","addEventListener","matchMedia","matches"],"mappings":"AAAA,IAAAA,iBAAA,WACA,IAAAC,GAAA,EA8FA,MAAA,CACAC,6BA1EA,WAEA,IAAAC,EAAAC,SAAAC,cAAA,+CACA,GAAAF,EAAA,CACA,IAAAG,EAAAF,SAAAG,iBAAA,qBACAC,EAAAJ,SAAAK,cAAA,OACAC,EAAAN,SAAAK,cAAA,MACAH,EAAAK,SAAA,SAAAC,EAAAC,GACA,IAAAC,EAAAV,SAAAK,cAAA,MACAM,EAAAX,SAAAK,cAAA,UACAM,EAAAC,YAAAJ,EAAAI,YACAD,EAAAE,QAAAC,eAAA,aAAAL,EAAA,GACAE,EAAAI,UAAA,8BACAL,EAAAM,YAAAL,GACAL,EAAAU,YAAAN,EACA,IACAN,EAAAY,YAAAV,GACAP,EAAAiB,YAAAZ,EAdA,CAeA,EAyDAa,8BA9FA,WAEA,IAAAC,EAAAlB,SAAAC,cAAA,mCACA,GAAAiB,EAAA,CACA,IAAAhB,EAAAF,SAAAG,iBAAA,qBACAG,EAAAN,SAAAK,cAAA,MACAH,EAAAK,SAAA,SAAAC,EAAAC,GACA,IAAAC,EAAAV,SAAAK,cAAA,MACAM,EAAAX,SAAAK,cAAA,UACAG,EAAAK,QAAAM,SAAA,aAAAV,EAAA,GACAE,EAAAE,QAAAC,eAAA,aAAAL,EAAA,GACAE,EAAAC,YAAAJ,EAAAI,YACAD,EAAAI,UAAA,8BACAL,EAAAM,YAAAL,GACAL,EAAAU,YAAAN,EACA,IACAQ,EAAAF,YAAAV,EAbA,CAcA,EA8EAc,6BAxDA,WACAvB,GACAG,SAAAC,cAAA,oCAEAD,SAAAG,iBAAA,qBACAI,SAAA,SAAAC,GACA,IAAAG,EACAU,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,EAAA,OAEA,IAAAC,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,IAAAC,EAAAD,EAAAE,OACA,GAAAD,EAAAN,UAAAQ,SAAA,+BAAA,CACA3C,GAAA,EACA,IAAAkC,EAAA/B,SAAAC,cAAA,oCAEA6B,EAAAQ,EAAAzB,QAAAC,eAIA2B,EAHAzC,SAAAC,cAAA,mBAAA6B,EAAA,MAEAR,wBAAAE,IACAI,OAAAc,YAFA,GAGAd,OAAAe,SAAA,CACAnB,IAAAiB,EACAG,SAAA,WAGA,OAAAb,GACAA,EAAAC,UAAAC,OAAA,UAEAK,EAAAJ,QAAA,MAAAF,UAAAG,IAAA,UACAU,YAAA,WACAhD,GAAA,CACA,GAAA,IACA,CACA,EAQA,CArGA,GAuGA+B,OAAAkB,iBAAA,QAAA,WACAlD,iBAAAE,+BACAF,iBAAAqB,gCACAW,OAAAmB,WAAA,sBAAAC,SAGApD,iBAAAwB,8BACA,IAEAQ,OAAAkB,iBAAA,UAAA,WACAlD,iBAAAwB,8BACA,IAEApB,SAAA8C,iBAAA,SAAA,SAAAT,GACAzC,iBAAAwC,4BAAAC,EACA","file":"cms2-article-jumplinks.min.js","sourcesContent":["var articleJumplinks = function () {\r\n var userClickedLink = false;\r\n \r\n function createArticleJumplinksDesktop() {\r\n // Create HTML -- Desktop\r\n var stickyWrapper = document.querySelector(\".mod-article-jumplinks__wrapper\");\r\n if (!stickyWrapper) { return; }\r\n var articleHeadings = document.querySelectorAll(\".jumplink-heading\");\r\n var ul = document.createElement(\"ul\");\r\n articleHeadings.forEach(function (heading, index) {\r\n var li = document.createElement(\"li\");\r\n var linkButton = document.createElement(\"button\");\r\n heading.dataset.jumplink = \"jumplink-\" + (index + 1);\r\n linkButton.dataset.jumplinkAnchor = \"jumplink-\" + (index + 1);\r\n linkButton.textContent = heading.textContent;\r\n linkButton.className = \"mod-article-jumplinks__link\";\r\n li.appendChild(linkButton);\r\n ul.appendChild(li);\r\n });\r\n stickyWrapper.appendChild(ul);\r\n }\r\n\r\n function createArticleJumplinksMobile() {\r\n // Create HTML -- Mobile\r\n var articleJumplinkDetails = document.querySelector(\".mod-article-jumplinks__mobile .mod-details\");\r\n if (!articleJumplinkDetails) { return; }\r\n var articleHeadings = document.querySelectorAll(\".jumplink-heading\");\r\n var div = document.createElement(\"div\");\r\n var ul = document.createElement(\"ul\");\r\n articleHeadings.forEach(function (heading, index) {\r\n var li = document.createElement(\"li\");\r\n var linkButton = document.createElement(\"button\");\r\n linkButton.textContent = heading.textContent;\r\n linkButton.dataset.jumplinkAnchor = \"jumplink-\" + (index + 1);\r\n linkButton.className = \"mod-article-jumplinks__link\";\r\n li.appendChild(linkButton);\r\n ul.appendChild(li);\r\n });\r\n div.appendChild(ul);\r\n articleJumplinkDetails.appendChild(div);\r\n }\r\n\r\n function handleArticleJumplinksScroll() {\r\n if (userClickedLink) { return; }\r\n var stickyWrapper = document.querySelector(\".mod-article-jumplinks__wrapper\");\r\n if (!stickyWrapper) { return; }\r\n var articleHeadings = document.querySelectorAll(\".jumplink-heading\");\r\n articleHeadings.forEach(function (heading) {\r\n var linkButton;\r\n var rect = heading.getBoundingClientRect();\r\n var elemTop = rect.top;\r\n var elemBottom = rect.bottom;\r\n var isVisible = (elemTop >= 0) && (elemBottom <= window.innerHeight - 150);\r\n var dataJumplink = heading.dataset.jumplink;\r\n if (dataJumplink !== null) {\r\n linkButton = document.querySelector(\".mod-article-jumplinks [data-jumplink-anchor='\" + dataJumplink + \"']\");\r\n }\r\n var activeHeading = document.querySelector(\".mod-article-jumplinks li.active\");\r\n if (isVisible) {\r\n if (linkButton !== null) {\r\n if (activeHeading !== null) {\r\n activeHeading.classList.remove(\"active\");\r\n }\r\n linkButton.closest(\"li\").classList.add(\"active\");\r\n }\r\n }\r\n });\r\n }\r\n\r\n function handleArticleJumplinksClick(event) {\r\n var el = event.target;\r\n if (el.classList.contains(\"mod-article-jumplinks__link\")) {\r\n userClickedLink = true;\r\n var activeHeading = document.querySelector(\".mod-article-jumplinks li.active\");\r\n // Scroll to heading\r\n var dataJumplink = el.dataset.jumplinkAnchor; //jumplink-1\r\n var heading = document.querySelector(\"[data-jumplink='\" + dataJumplink + \"']\");\r\n var offset = 60;\r\n var headingPosition = heading.getBoundingClientRect().top;\r\n var offsetPosition = headingPosition + window.pageYOffset - offset;\r\n window.scrollTo({\r\n top: offsetPosition,\r\n behavior: \"smooth\"\r\n });\r\n // Handle active class on jumplinks\r\n if (activeHeading !== null) {\r\n activeHeading.classList.remove(\"active\");\r\n }\r\n el.closest(\"li\").classList.add(\"active\");\r\n setTimeout(function () {\r\n userClickedLink = false;\r\n }, 1000);\r\n }\r\n }\r\n\r\n return {\r\n createArticleJumplinksMobile: createArticleJumplinksMobile,\r\n createArticleJumplinksDesktop: createArticleJumplinksDesktop,\r\n handleArticleJumplinksScroll: handleArticleJumplinksScroll,\r\n handleArticleJumplinksClick: handleArticleJumplinksClick\r\n };\r\n}();\r\n\r\nwindow.addEventListener(\"load\", function () {\r\n articleJumplinks.createArticleJumplinksMobile();\r\n articleJumplinks.createArticleJumplinksDesktop();\r\n if (window.matchMedia(\"(max-width: 840px)\").matches) {\r\n return;\r\n }\r\n articleJumplinks.handleArticleJumplinksScroll();\r\n});\r\n\r\nwindow.addEventListener(\"scroll\", function () {\r\n articleJumplinks.handleArticleJumplinksScroll();\r\n});\r\n\r\ndocument.addEventListener(\"click\", function (event) {\r\n articleJumplinks.handleArticleJumplinksClick(event);\r\n});"]}