{"version":3,"file":"chunks/f4c469dacb6e26.js","mappings":"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","sources":["webpack:///./resources/js/components/generic/guided-sidebar.ts"],"sourcesContent":["import tracking from '../../utils/tracking';\n\nexport default class GuidedSidebar {\n stickyPosition: number;\n domRoot: HTMLElement;\n sections: HTMLCollectionOf;\n sideLinks: HTMLCollectionOf;\n scrollDisabled: boolean;\n isScrolling: boolean;\n isAgile: any;\n activeLink: any;\n activeSection: any;\n observerConfig: { root: null; rootMargin: string; threshold: number; };\n observer: IntersectionObserver;\n\n constructor(domRoot: HTMLElement, params: any) {\n this.stickyPosition = Number(params.stickyPosition);\n this.domRoot = domRoot;\n this.sections = document.getElementsByClassName('guided-sidebar-block');\n this.sideLinks = document.getElementsByClassName(\"guide-sidebar-child-link\");\n this.scrollDisabled = false;\n this.isScrolling = false;\n this.isAgile = params.isAgile;\n this.activeLink;\n this.activeSection = this.sections[0] ? this.sections[0].id : \"\";\n this.observerConfig = {\n root: null,\n rootMargin: '0px',\n threshold: 0.25\n };\n this.observer = new IntersectionObserver((entries) => {\n for (var i = 0; i < entries.length; i++) {\n let entry = entries[i];\n if (entry.isIntersecting && !this.scrollDisabled && !this.isScrolling) {\n let newActive = entry.target.id;\n if (newActive !== this.activeSection) {\n this.activeSection = newActive;\n history.replaceState(null, null, \"#\" + newActive);\n this.renderSideBar();\n break;\n }\n }\n }\n }, this.observerConfig);\n this.init();\n }\n\n init() {\n for (var s = 0; s < this.sideLinks.length; s++) {\n if (this.sideLinks[s].getAttribute(\"href\") == window.location.pathname) {\n this.sideLinks[s].classList.add(\"active\");\n this.activeLink = this.sideLinks[s].parentNode;\n }\n }\n const firstLinks = this.domRoot.querySelectorAll(\".level1\");\n\n firstLinks.forEach(firstLink => {\n\n firstLink.addEventListener(\"click\", (e) => {\n\n if ((e.target.nextElementSibling && e.target.nextElementSibling.classList.contains(\"nested-links\"))) {\n e.preventDefault();\n\n firstLinks.forEach(fLink => {\n if (e.target != fLink) {\n fLink.parentNode.classList.remove(\"revealed\");\n }\n });\n e.target.parentNode.classList.toggle(\"revealed\");\n }\n })\n });\n\n this.renderSideBar();\n if (this.activeLink) {\n window.scrollTo(0, window.scrollY - 100);\n }\n\n window.addEventListener(\"scroll\", () => {\n this.isScrolling = true;\n this.positionSidebar();\n this.isScrolling = false;\n });\n\n const countrySpecificBlock = document.querySelector('.country-specific-block');\n if (countrySpecificBlock) {\n document.addEventListener('country-specific-block-display-rendered', () => {\n this.setObservables();\n });\n } else {\n this.setObservables();\n }\n }\n\n renderSideBar() {\n var oldSubs = document.getElementById('guide-subs');\n if (oldSubs) {\n oldSubs.parentNode?.removeChild(oldSubs);\n }\n var subLinks = document.createElement('div');\n subLinks.className = \"sub-links\";\n subLinks.id = 'guide-subs';\n for (var b = 0; b < this.sections.length; b++) {\n var subLink = document.createElement('a');\n subLink.className = \"sub-link\";\n subLink.onclick = (e) => {\n e.preventDefault();\n this.scrollDisabled = true;\n window.location.hash = e.target.getAttribute(\"href\");\n this.activeSection = e.target.getAttribute(\"href\").replace(\"#\", \"\");\n tracking.trackEvent('clicked', {\n label: e.target.innerText\n });\n window.scrollTo(0, window.scrollY - 100);\n this.renderSideBar();\n setTimeout(() => {\n this.scrollDisabled = false;\n this.positionSidebar();\n }, 100);\n };\n subLink.setAttribute(\"href\", \"#\" + this.sections[b].id);\n if (this.activeSection == this.sections[b].id) {\n subLink.className = \"sub-link active\";\n }\n if (this.sections[b].hasAttribute('data-sidebar-title')) {\n subLink.innerHTML = this.sections[b].getAttribute('data-sidebar-title');\n } else {\n subLink.innerHTML = this.sections[b].getAttribute('data-title');\n }\n subLinks.appendChild(subLink);\n }\n if (this.activeLink) {\n this.activeLink.appendChild(subLinks);\n }\n }\n\n positionSidebar() {\n let winTop = window.scrollY;\n let winBot = window.innerHeight;\n let guideStyle = this.domRoot.style;\n let guideHeight = this.domRoot.offsetHeight;\n\n let parentContainer = this.domRoot.parentNode?.parentNode as HTMLElement;\n let sidebarOffset = this.offsetTopFind(parentContainer.parentNode as HTMLElement);\n let parentHeight = this.offsetTopFind(parentContainer, parentContainer.offsetHeight);\n let bottomPos = winTop - parentHeight + winBot;\n\n if (winTop >= (sidebarOffset - this.stickyPosition)) {\n guideStyle.position = \"fixed\";\n guideStyle.maxHeight = \"calc(100% - \" + this.stickyPosition + \"px)\";\n guideStyle.width = ((this.domRoot.parentNode as HTMLElement).offsetWidth - 32) + \"px\";\n if (winTop > (parentHeight - guideHeight - this.stickyPosition)) {\n guideStyle.bottom = bottomPos + \"px\";\n guideStyle.top = \"auto\";\n } else {\n guideStyle.top = this.stickyPosition + \"px\";\n guideStyle.bottom = \"auto\";\n }\n } else {\n guideStyle.position = \"static\";\n guideStyle.top = \"auto\";\n guideStyle.bottom = \"auto\";\n guideStyle.width = \"auto\";\n }\n }\n\n offsetTopFind(el: HTMLElement, withHeight = 0) {\n var yPosition = withHeight;\n while (el.parentNode !== null) {\n yPosition += el.offsetTop;\n el = el.parentNode as HTMLElement;\n }\n return yPosition;\n }\n\n setObservables() {\n for (var s = 0; s < this.sections.length; s++) {\n this.observer.observe(this.sections[s]);\n }\n }\n}\n"],"names":["GuidedSidebar","domRoot","params","_this","_classCallCheck","this","stickyPosition","Number","sections","document","getElementsByClassName","sideLinks","scrollDisabled","isScrolling","isAgile","activeLink","activeSection","id","observerConfig","root","rootMargin","threshold","observer","IntersectionObserver","entries","i","length","entry","isIntersecting","newActive","target","history","replaceState","renderSideBar","init","key","value","_this2","s","getAttribute","window","location","pathname","classList","add","parentNode","firstLinks","querySelectorAll","forEach","firstLink","addEventListener","e","nextElementSibling","contains","preventDefault","fLink","remove","toggle","scrollTo","scrollY","positionSidebar","querySelector","setObservables","_oldSubs$parentNode","_this3","oldSubs","getElementById","removeChild","subLinks","createElement","className","b","subLink","onclick","hash","replace","tracking","label","innerText","setTimeout","setAttribute","hasAttribute","innerHTML","appendChild","_this$domRoot$parentN","winTop","winBot","innerHeight","guideStyle","style","guideHeight","offsetHeight","parentContainer","sidebarOffset","offsetTopFind","parentHeight","bottomPos","position","maxHeight","width","offsetWidth","bottom","top","el","yPosition","arguments","undefined","offsetTop","observe"],"sourceRoot":""}