{"version":3,"file":"chunks/b43f5e9106c4f2.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","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","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","getElementById","removeChild","subLinks","createElement","className","b","subLink","onclick","hash","replace","tracking","label","innerText","setTimeout","setAttribute","hasAttribute","innerHTML","appendChild","winTop","winBot","innerHeight","guideStyle","style","guideHeight","offsetHeight","parentContainer","sidebarOffset","offsetTopFind","parentHeight","bottomPos","position","maxHeight","width","offsetWidth","bottom","top","el","yPosition","offsetTop","observe"],"sourceRoot":""}