{"version":3,"file":"chunks/29353aabe37f18.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<Element>;\n  sideLinks: HTMLCollectionOf<Element>;\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":""}