{"version":3,"file":"chunks/0b957bfdbc23b5.js","mappings":"4xBAA4C,IAEvBA,EAAa,WAahC,SAAAA,EAAYC,EAAsBC,GAAa,IAAAC,EAAA,M,4FAAAC,CAAA,KAAAJ,GAC7CK,KAAKC,eAAiBC,OAAOL,EAAOI,gBACpCD,KAAKJ,QAAUA,EACfI,KAAKG,SAAWC,SAASC,uBAAuB,wBAChDL,KAAKM,UAAYF,SAASC,uBAAuB,4BACjDL,KAAKO,gBAAiB,EACtBP,KAAKQ,QAAUX,EAAOW,QACtBR,KAAKS,WACLT,KAAKU,cAAgBV,KAAKG,SAAS,GAAKH,KAAKG,SAAS,GAAGQ,GAAK,GAC9DX,KAAKY,eAAiB,CACpBC,KAAM,KACNC,WAAY,MACZC,UAAW,KAEbf,KAAKgB,SAAW,IAAIC,sBAAqB,SAACC,GACxCA,EAAQC,SAAQ,SAAAC,GACd,GAAIA,EAAMC,mBAAqB,MAASvB,EAAKS,eAAgB,CAC3D,IAAIe,EAAYF,EAAMG,OAAOZ,GAC7Bb,EAAKY,cAAgBY,EACrBE,QAAQC,aAAa,KAAM,KAAM,IAAMH,GACvCxB,EAAK4B,eACP,CACF,GACF,GAAG1B,KAAKY,gBACRZ,KAAK2B,MACP,C,QAyIC,O,EAzIAhC,E,EAAA,EAAAiC,IAAA,OAAAC,MAED,WACE,IADK,IAAAC,EAAA,KACIC,EAAI,EAAGA,EAAI/B,KAAKM,UAAU0B,OAAQD,IACrC/B,KAAKM,UAAUyB,GAAGE,aAAa,SAAWC,OAAOC,SAASC,WAC5DpC,KAAKM,UAAUyB,GAAGM,UAAUC,IAAI,UAChCtC,KAAKS,WAAaT,KAAKM,UAAUyB,GAAGQ,YAGxC,IAAMC,EAAaxC,KAAKJ,QAAQ6C,iBAAiB,WAEjDD,EAAWrB,SAAQ,SAAAuB,GAEjBA,EAAUC,iBAAiB,SAAS,SAACC,GAE9BA,EAAErB,OAAOsB,oBAAsBD,EAAErB,OAAOsB,mBAAmBR,UAAUS,SAAS,kBACjFF,EAAEG,iBAEFP,EAAWrB,SAAQ,SAAA6B,GACbJ,EAAErB,QAAUyB,GACdA,EAAMT,WAAWF,UAAUY,OAAO,WAEtC,IACAL,EAAErB,OAAOgB,WAAWF,UAAUa,OAAO,YAEzC,GACF,IAEAlD,KAAK0B,gBACD1B,KAAKS,YACPyB,OAAOiB,SAAS,EAAGjB,OAAOkB,QAAU,KAGtClB,OAAOS,iBAAiB,UAAU,WAChCb,EAAKuB,iBACP,IAE6BjD,SAASkD,cAAc,2BAElDlD,SAASuC,iBAAiB,2CAA2C,WACnEb,EAAKyB,gBACP,IAEAvD,KAAKuD,gBAET,GAAC,CAAA3B,IAAA,wBAAAC,MAED,SAAsB2B,GACpBA,EAAQC,iBACRvB,OAAOiB,SAAS,EAAGjB,OAAOkB,QAAU,GACtC,GAAC,CAAAxB,IAAA,gBAAAC,MAED,WAAgB,IAED6B,EAFCC,EAAA,KACVC,EAAUxD,SAASyD,eAAe,cAClCD,IACgB,QAAlBF,EAAAE,EAAQrB,kBAAU,IAAAmB,GAAlBA,EAAoBI,YAAYF,IAElC,IAAIG,EAAW3D,SAAS4D,cAAc,OACtCD,EAASE,UAAY,YACrBF,EAASpD,GAAK,aACd,IAAK,IAAIuD,EAAI,EAAGA,EAAIlE,KAAKG,SAAS6B,OAAQkC,IAAK,CAC7C,IAAIC,EAAU/D,SAAS4D,cAAc,KACrCG,EAAQF,UAAY,WACpBE,EAAQC,QAAU,SAACxB,GACjB,IAAMyB,EAAUzB,EAAErB,OAAOU,aAAa,QACtC0B,EAAKpD,gBAAiB,EACtBqC,EAAEG,iBACFb,OAAOC,SAASmC,KAAOD,EACvBV,EAAKY,sBAAsBnE,SAASkD,cAAce,IAClDV,EAAKjD,cAAgB2D,EAAQG,QAAQ,IAAK,IAC1CC,EAAAA,EAAAA,WAAoB,UAAW,CAC7BC,MAAO9B,EAAErB,OAAOoD,YAElBhB,EAAKjC,gBACLkD,YAAW,WACTjB,EAAKpD,gBAAiB,CACxB,GAAG,IACL,EACA4D,EAAQU,aAAa,OAAQ,IAAM7E,KAAKG,SAAS+D,GAAGvD,IAChDX,KAAKU,eAAiBV,KAAKG,SAAS+D,GAAGvD,KACzCwD,EAAQF,UAAY,mBAElBjE,KAAKG,SAAS+D,GAAGY,aAAa,sBAChCX,EAAQY,UAAY/E,KAAKG,SAAS+D,GAAGjC,aAAa,sBAElDkC,EAAQY,UAAY/E,KAAKG,SAAS+D,GAAGjC,aAAa,cAEpD8B,EAASiB,YAAYb,EACvB,CACInE,KAAKS,YACPT,KAAKS,WAAWuE,YAAYjB,EAEhC,GAAC,CAAAnC,IAAA,kBAAAC,MAED,WAAkB,IAAAoD,EACZC,EAAShD,OAAOkB,QAChB+B,EAASjD,OAAOkD,YAChBC,EAAarF,KAAKJ,QAAQ0F,MAC1BC,EAAcvF,KAAKJ,QAAQ4F,aAE3BC,EAAyC,QAA1BR,EAAGjF,KAAKJ,QAAQ2C,kBAAU,IAAA0C,OAAA,EAAvBA,EAAyB1C,WAC3CmD,EAAgB1F,KAAK2F,cAAcF,EAAgBlD,YACnDqD,EAAe5F,KAAK2F,cAAcF,EAAiBA,EAAgBD,cACnEK,EAAYX,EAASU,EAAeT,EAEpCD,GAAWQ,EAAgB1F,KAAKC,gBAClCoF,EAAWS,SAAW,QACtBT,EAAWU,UAAY,eAAiB/F,KAAKC,eAAiB,MAC9DoF,EAAWW,MAAUhG,KAAKJ,QAAQ2C,WAA2B0D,YAAc,GAAM,KAC7Ef,EAAUU,EAAeL,EAAcvF,KAAKC,gBAC9CoF,EAAWa,OAASL,EAAY,KAChCR,EAAWc,IAAM,SAEjBd,EAAWc,IAAMnG,KAAKC,eAAiB,KACvCoF,EAAWa,OAAS,UAGtBb,EAAWS,SAAW,SACtBT,EAAWc,IAAM,OACjBd,EAAWa,OAAS,OACpBb,EAAWW,MAAQ,OAEvB,GAAC,CAAApE,IAAA,gBAAAC,MAED,SAAcuE,GAEZ,IAF6C,IACzCC,EADmCC,UAAAtE,OAAA,QAAAuE,IAAAD,UAAA,GAAAA,UAAA,GAAG,EAEjB,OAAlBF,EAAG7D,YACR8D,GAAaD,EAAGI,UAChBJ,EAAKA,EAAG7D,WAEV,OAAO8D,CACT,GAAC,CAAAzE,IAAA,iBAAAC,MAED,WACE,IAAK,IAAIE,EAAI,EAAGA,EAAI/B,KAAKG,SAAS6B,OAAQD,IACxC/B,KAAKgB,SAASyF,QAAQzG,KAAKG,SAAS4B,GAExC,I,uEAACpC,CAAA,CA/K+B,E","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.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 entries.forEach(entry => {\n if (entry.intersectionRatio >= 0.25 && !this.scrollDisabled) {\n let newActive = entry.target.id;\n this.activeSection = newActive;\n history.replaceState(null, null, \"#\" + newActive);\n this.renderSideBar();\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.positionSidebar();\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 scrollToElementOffset(element){\n element.scrollIntoView();\n window.scrollTo(0, window.scrollY - 80);\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 const blockID = e.target.getAttribute(\"href\");\n this.scrollDisabled = true;\n e.preventDefault();\n window.location.hash = blockID;\n this.scrollToElementOffset(document.querySelector(blockID));\n this.activeSection = blockID.replace(\"#\", \"\");\n tracking.trackEvent('clicked', {\n label: e.target.innerText\n });\n this.renderSideBar();\n setTimeout(() => {\n this.scrollDisabled = false;\n }, 1000);\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","isAgile","activeLink","activeSection","id","observerConfig","root","rootMargin","threshold","observer","IntersectionObserver","entries","forEach","entry","intersectionRatio","newActive","target","history","replaceState","renderSideBar","init","key","value","_this2","s","length","getAttribute","window","location","pathname","classList","add","parentNode","firstLinks","querySelectorAll","firstLink","addEventListener","e","nextElementSibling","contains","preventDefault","fLink","remove","toggle","scrollTo","scrollY","positionSidebar","querySelector","setObservables","element","scrollIntoView","_oldSubs$parentNode","_this3","oldSubs","getElementById","removeChild","subLinks","createElement","className","b","subLink","onclick","blockID","hash","scrollToElementOffset","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":""}