{"version":3,"file":"ProgressBarNavigation.js","names":["define","$","gsap","ScrollTrigger","analytics","mobileDropdownText","ProgressBarNavigation","args","registerPlugin","anchors","mobileText","progressBar","scope","html","append","usingProgressBar","click","window","matchMedia","matches","attr","toggleMobileProgressDropdown","on","setTimeout","addMobileProgressDropdown","i","length","LinkName","offset","anchorDiv","last","addClass","ShowHide","AnchorStyles","anchorDivElement","ShowProgress","querySelector","style","setProperty","linkAnchor","LinkText","event","scrollPosition","targetLink","currentTarget","hash","isSticky","headerDiff","height","top","animate","scrollTop","focus","contentAnchors","anchorList","anchor","getContentAnchors","setupScrollTrigger","isClickTracking","each","index","value","mousedown","e","registerClick","innerText","replace","itemId","mainTop","mainHeight","startingPoint","totalHeight","aList","a","position","navItemIsVisible","endPosition","offsetTop","createAnchorList","create","trigger","markers","start","end","onUpdate","self","currentMainHeight","isRefreshRequired","progress","toFixed","getActiveAnchor","kill","onLeave","is","toggle","setMobileProgressDropdownText","navItem","hiddenClasses","map","el","getAttribute","get","getHiddenClasses","parent","hasClass","removeClass","progressAnchor","progressAnchor2","stop","amount","isExperienceEditor"],"sources":["site/Components/ProgressBarNavigation.js"],"mappings":"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","sourcesContent":["define([\"jquery\", \"gsap\", \"gsapScrollTrigger\", \"site/TEKsystems.SitecoreXP.Analytics\"], function ($, { gsap }, { ScrollTrigger }, analytics) {\r\n\r\n var mobileDropdownText = \"\";\r\n function ProgressBarNavigation(args) {\r\n\r\n gsap.registerPlugin(ScrollTrigger);\r\n\r\n var anchors = args.anchors;\r\n if (args.mobileText != null) {\r\n mobileDropdownText = args.mobileText;\r\n } \r\n // For DEBUG\r\n //console.log(anchors);\r\n\r\n var progressBar = $(\".tek-progress-bar-nav\", args.scope);\r\n $(progressBar).html(\"\");\r\n\r\n addMobileProgressDropdown(progressBar);\r\n\r\n for (var i = 0; i < anchors.length; i++) {\r\n var anchor = $(\"a[name='\" + anchors[i].LinkName + \"']\");\r\n if (anchor.offset()) {\r\n $(progressBar).append(\"
\");\r\n\r\n var anchorDiv = $(\"div\", $(progressBar)).last();\r\n\r\n $(anchorDiv).addClass(\"progress-anchor\");\r\n $(anchorDiv).addClass(anchors[i].ShowHide);\r\n\r\n if (anchors[i].AnchorStyles != null) {\r\n $(anchorDiv).addClass(anchors[i].AnchorStyles);\r\n }\r\n\r\n var anchorDivElement = $(anchorDiv).append(\"\");\r\n \r\n if (!anchors[i].ShowProgress) {\r\n var progressElement = anchorDivElement[0].querySelector(\"progress\");\r\n progressElement.style.setProperty(\"visibility\", \"hidden\");\r\n }\r\n \r\n var linkAnchor = $(\"\").attr(\"href\", \"#\" + anchors[i].LinkName)\r\n .html(anchors[i].LinkText);\r\n linkAnchor.click(function (event) {\r\n var targetLink = $(event.currentTarget.hash);\r\n var scrollPosition = 0;\r\n var isSticky = $(\".make-sticky.sticky\");\r\n var headerDiff = $(\"header\").height() + $(\".tek-progress-bar-nav\").height();\r\n if (isSticky.length == 0) //if it is NOT sticky\r\n {\r\n headerDiff += ($(\".tek-progress-bar-nav\").offset().top * 0.2);\r\n }\r\n scrollPosition = targetLink.offset().top - headerDiff;\r\n $('html, body').animate({\r\n scrollTop: scrollPosition\r\n }, 500, 'swing');\r\n\r\n targetLink.attr('tabindex', -1).addClass('removetabindex').focus();\r\n });\r\n $(anchorDiv).append(linkAnchor);\r\n }\r\n }\r\n\r\n var contentAnchors = getContentAnchors(anchors);\r\n // For DEBUG\r\n //console.log(contentAnchors);\r\n\r\n setupScrollTrigger(contentAnchors, args);\r\n if (args.isClickTracking) {\r\n $(\".tek-progress-bar-nav\", args.scope).each(function (index, value) {\r\n $(\"a\", value).mousedown(function (e) { analytics.registerClick(e.currentTarget.hash, e.currentTarget.innerText.replace(/(\\r\\n|\\n|\\r)/gm, \"\"), args.itemId); })\r\n });\r\n }\r\n // For DEBUG\r\n //addDebug();\r\n }\r\n\r\n function setupScrollTrigger(contentAnchors, args) {\r\n var mainTop = $(\"header\").height() + $(\".tek-progress-bar-nav\").height();\r\n var mainHeight = $(\"main\").height();\r\n var anchorList = createAnchorList(contentAnchors, mainTop, mainHeight, args);\r\n\r\n // For DEBUG\r\n //console.log(anchorList);\r\n //console.log(getHiddenClasses(args));\r\n\r\n ScrollTrigger.create({\r\n trigger: \"main\",\r\n markers: false,\r\n start: \"150px 150px\",\r\n end: \"bottom center\",\r\n onUpdate: self => {\r\n if (isRefreshRequired(mainHeight, $(\"main\").height(), anchorList)) {\r\n self.kill();\r\n setupScrollTrigger(contentAnchors, args);\r\n }\r\n else {\r\n updateDebug(self.progress.toFixed(3));\r\n getActiveAnchor(anchorList, self.progress.toFixed(3), args.scope);\r\n }\r\n },\r\n onLeave: self => {\r\n getActiveAnchor(anchorList, 1, args.scope);\r\n }\r\n });\r\n\r\n if (!window.matchMedia(\"(max-width: 991px)\").matches && !$(\".progress-anchor\", args.scope).is(\":visible\")) {\r\n toggleMobileProgressDropdown($(\".tek-progress-bar-nav\", args.scope));\r\n } else if (window.matchMedia(\"(max-width: 991px)\").matches && $(\".progress-anchor\", args.scope).is(\":visible\")) {\r\n toggleMobileProgressDropdown($(\".tek-progress-bar-nav\", args.scope));\r\n }\r\n }\r\n\r\n function isRefreshRequired(mainHeight, currentMainHeight, anchorList) {\r\n if (mainHeight != $(\"main\").height()) {\r\n return true;\r\n }\r\n\r\n for (var i = 0; i < anchorList.length; i++) {\r\n var anchor = $(\"a[name='\" + anchorList[i].anchor + \"']\");\r\n if (anchor.offset().top != anchorList[i].offsetTop) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function addDebug() {\r\n $(\"body\").append(\"
\");\r\n }\r\n\r\n function updateDebug(value) {\r\n $(\"#progressDebug\").html(value);\r\n }\r\n\r\n function addMobileProgressDropdown(progressBar) {\r\n $(progressBar).append(\"
\");\r\n\r\n var usingProgressBar = false;\r\n\r\n $(\"body\").click(function () {\r\n if (window.matchMedia(\"(max-width: 991px)\").matches && !usingProgressBar && $(progressBar).attr(\"data-expanded\") == \"true\") {\r\n toggleMobileProgressDropdown(progressBar);\r\n }\r\n });\r\n\r\n $(\".tek-progress-bar-mobile-dropdown\", progressBar).on(\"click\", function () {\r\n toggleMobileProgressDropdown(progressBar);\r\n usingProgressBar = true;\r\n setTimeout(function () { usingProgressBar = false; }, 100);\r\n });\r\n }\r\n\r\n function toggleMobileProgressDropdown(progressBar) {\r\n if ($(progressBar).attr(\"data-expanded\") == \"true\") {\r\n $(progressBar).attr(\"data-expanded\", \"false\");\r\n }\r\n else {\r\n $(progressBar).attr(\"data-expanded\", \"true\");\r\n }\r\n\r\n $(\".progress-anchor\", progressBar).toggle();\r\n }\r\n\r\n function setMobileProgressDropdownText(scope) {\r\n $(\".tek-progress-bar-mobile-dropdown\", scope).html(mobileDropdownText);\r\n }\r\n\r\n function getContentAnchors(anchors) {\r\n var anchorList = [];\r\n for (var i = 0; i < anchors.length; i++) {\r\n var anchor = $(\"a[name='\" + anchors[i].LinkName + \"']\");\r\n if (anchor.offset()) {\r\n anchorList[anchorList.length] = anchor;\r\n }\r\n }\r\n\r\n return anchorList;\r\n }\r\n\r\n function getHiddenClasses(args) {\r\n return $(\".tek-progress-bar-nav-visibility > div:hidden\", args.scope).map((i, el) => el.getAttribute(\"class\")).get();\r\n }\r\n\r\n function navItemIsVisible(navItem, args) {\r\n var hiddenClasses = getHiddenClasses(args);\r\n\r\n for (var i = 0; i < hiddenClasses.length; i++) {\r\n if ($(navItem).parent(\".progress-anchor\").hasClass(hiddenClasses[i])) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function createAnchorList(anchors, startingPoint, totalHeight, args) {\r\n var aList = [];\r\n\r\n for (var i = 0; i < anchors.length; i++) {\r\n var a = $(anchors[i]);\r\n if (a) {\r\n var position = (a.offset().top - startingPoint) / totalHeight;\r\n\r\n if (navItemIsVisible($(\".tek-progress-bar-nav a[href='#\" + a.attr(\"name\") + \"']\", args.scope), args)) {\r\n aList[aList.length] = { position: position, anchor: a.attr(\"name\"), endPosition: 0, offsetTop: a.offset().top };\r\n\r\n if (aList.length > 1) {\r\n aList[aList.length - 2].endPosition = position;\r\n }\r\n }\r\n }\r\n }\r\n\r\n aList[aList.length - 1].endPosition = 1;\r\n\r\n return aList;\r\n }\r\n\r\n function getActiveAnchor(anchorList, progress, scope) {\r\n $(\".progress-anchor a\").removeClass(\"active\");\r\n\r\n if (progress <= anchorList[0].position) {\r\n var progressAnchor = $(\".progress-anchor a[href='#\" + anchorList[0].anchor + \"']\", scope);\r\n\r\n setMobileProgressDropdownText(scope);\r\n $(progressAnchor).addClass(\"active\");\r\n }\r\n\r\n if (progress == 1) {\r\n var progressAnchor2 = $(\".progress-anchor a[href='#\" + anchorList[anchorList.length - 1].anchor + \"']\", scope);\r\n\r\n setMobileProgressDropdownText(scope);\r\n $(progressAnchor2).addClass(\"active\");\r\n }\r\n\r\n for (var i = 0; i < anchorList.length; i++) {\r\n var start = anchorList[i].position;\r\n var stop = anchorList[i].endPosition;\r\n var progressBar = $(\"progress\", $(\".progress-anchor a[href='#\" + anchorList[i].anchor + \"']\").parent());\r\n\r\n if (progress >= 1) {\r\n progressBar.attr(\"value\", 100);\r\n }\r\n else if (progress < start) {\r\n progressBar.attr(\"value\", 0);\r\n }\r\n else if (progress > stop) {\r\n progressBar.attr(\"value\", 100);\r\n }\r\n else if (start < progress && stop > progress) {\r\n $(\".progress-anchor a[href='#\" + anchorList[i].anchor + \"']\").addClass(\"active\");\r\n setMobileProgressDropdownText(scope);\r\n\r\n var amount = (progress - start) / (stop - start);\r\n\r\n progressBar.attr(\"value\", amount * 100);\r\n }\r\n }\r\n }\r\n\r\n return function init(args) {\r\n if (!args.isExperienceEditor) {\r\n ProgressBarNavigation(args);\r\n }\r\n };\r\n});"]}