{"version":3,"sources":["webpack://loftware/./src/js/modules/ContentSideNavigation.js"],"names":[],"mappings":"gIAEA,eAAkC,KAAU,CAC1C,eAAgB,CACd,KAAK,IAAM,CACT,iBAAkB,KAAK,GAAG,iBAAiB,gBAC3C,gBAAiB,KAAK,GAAG,cACvB,oCAEF,qBAAsB,IAExB,KAAK,0BACL,KAAK,QAAU,CACb,KAAM,KACN,UAAW,EACX,WAAY,cAEd,KAAK,SAAW,GAAI,sBAClB,KAAK,2BAA2B,KAAK,MACrC,KAAK,SAEP,KAAK,IAAI,qBAAqB,QAAQ,GACpC,KAAK,SAAS,QAAQ,IAI1B,cAAe,CACb,KAAK,IAAI,iBAAiB,QAAQ,GAChC,EAAG,iBAAiB,QAAS,KAAK,kBAAkB,KAAK,QAE3D,KAAK,IAAI,gBAAgB,iBACvB,SACA,KAAK,mBAAmB,KAAK,OAIjC,2BAA2B,EAAS,CAClC,EAAQ,QAAQ,GAAS,CACnB,CAAC,EAAM,gBACX,MAAK,IAAI,iBAAiB,QAAQ,GAAM,EAAG,UAAU,OAAO,WAM5D,MALyC,KACvC,KAAK,IAAI,kBACT,KAAK,GACL,EAAU,aAAa,QAAQ,SAAS,EAAM,OAAO,KAE5B,UAAU,IAAI,aAI7C,yBAA0B,CACxB,KAAK,IAAI,iBAAiB,QAAQ,GAAM,CACtC,SAAa,cAAc,EAAG,aAAa,UACzC,KAAK,IAAI,qBAAqB,KAC5B,SAAS,cAAc,EAAG,aAAa,YAK/C,gBAAgB,EAAe,CAC7B,GAAI,EAAe,CAEjB,KAAM,GAAiB,EADU,wBAAwB,IACrB,OAAO,YAAc,IACzD,OAAO,SAAS,CACd,IAAK,EACL,SAAU,YAKhB,kBAAkB,EAAG,CACnB,EAAE,iBACF,KAAM,GAAgB,SAAS,cAAc,EAAE,OAAO,aAAa,SACnE,KAAK,gBAAgB,GAGvB,mBAAmB,EAAG,CACpB,GAAI,EAAE,OAAO,MAAM,KAAO,IAAK,CAC7B,KAAM,GAAgB,SAAS,cAAc,EAAE,OAAO,OACtD,KAAK,gBAAgB,OAErB,QAAO,SAAS,KAAO,EAAE,OAAO,OAKtC,UAAe","file":"scripts/847.5453fc33d06848ed66c7.js","sourcesContent":["import { Component } from '@verndale/core';\r\n\r\nclass ContentWithMediaRow extends Component {\r\n setupDefaults() {\r\n this.dom = {\r\n navAnchorTargets: this.el.querySelectorAll('a[href^=\"#\"]'),\r\n navSelectMobile: this.el.querySelector(\r\n '.content-side-navigation__select'\r\n ),\r\n anchorTargetSections: []\r\n };\r\n this.setAnchorTargetSections();\r\n this.options = {\r\n root: null,\r\n threshold: 0,\r\n rootMargin: '0% 0% -75%'\r\n };\r\n this.observer = new IntersectionObserver(\r\n this.handleIntersectionObserver.bind(this),\r\n this.options\r\n );\r\n this.dom.anchorTargetSections.forEach(el =>\r\n this.observer.observe(el)\r\n );\r\n }\r\n\r\n addListeners() {\r\n this.dom.navAnchorTargets.forEach(el =>\r\n el.addEventListener('click', this.handleAnchorClick.bind(this))\r\n );\r\n this.dom.navSelectMobile.addEventListener(\r\n 'change',\r\n this.handleSelectChange.bind(this)\r\n );\r\n }\r\n\r\n handleIntersectionObserver(entries) {\r\n entries.forEach(entry => {\r\n if (!entry.isIntersecting) return;\r\n this.dom.navAnchorTargets.forEach(el => el.classList.remove('active'));\r\n const correspondingAnchorElement = Array.from(\r\n this.dom.navAnchorTargets\r\n ).find(navanchor =>\r\n navanchor.getAttribute('href').includes(entry.target.id)\r\n );\r\n correspondingAnchorElement.classList.add('active');\r\n });\r\n }\r\n\r\n setAnchorTargetSections() {\r\n this.dom.navAnchorTargets.forEach(el => {\r\n if (document.querySelector(el.getAttribute('href')))\r\n this.dom.anchorTargetSections.push(\r\n document.querySelector(el.getAttribute('href'))\r\n );\r\n });\r\n }\r\n\r\n scrollToElement(targetElement) {\r\n if (targetElement) {\r\n const elementTop = targetElement.getBoundingClientRect().top;\r\n const offsetPosition = elementTop + window.pageYOffset - 100; // replace 100 for header height once known\r\n window.scrollTo({\r\n top: offsetPosition,\r\n behavior: 'smooth'\r\n });\r\n }\r\n }\r\n\r\n handleAnchorClick(e) {\r\n e.preventDefault();\r\n const targetElement = document.querySelector(e.target.getAttribute('href'));\r\n this.scrollToElement(targetElement);\r\n }\r\n\r\n handleSelectChange(e) {\r\n if (e.target.value[0] === '#') {\r\n const targetElement = document.querySelector(e.target.value);\r\n this.scrollToElement(targetElement);\r\n } else {\r\n window.location.href = e.target.value;\r\n }\r\n }\r\n}\r\n\r\nexport default ContentWithMediaRow;\r\n"],"sourceRoot":""}