{"version":3,"file":"static/js/754.205d4148.chunk.js","mappings":"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","sources":["components/Feature/SubNavigation/SubNavigation.js","../../../../node_modules/@sitecore-jss/sitecore-jss-react/dist/esm/components/Text.js"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\r\nimport { Text, withSitecoreContext } from '@sitecore-jss/sitecore-jss-react';\r\nimport { Link } from 'react-scroll';\r\nimport './SubNavigation.scss';\r\n\r\nexport const sanitizeId = (text) => {\r\n return text.replace(/\\s+/g, '').replace(/[^a-zA-Z0-9-]/g, '');\r\n};\r\nconst SubNavigation = (props) => {\r\n const { fields } = props;\r\n const navigationItems = fields.Card || [];\r\n const [activeSection, setActiveSection] = useState('');\r\n const navRef = useRef(null); // Reference to the navigation container\r\n\r\n // Function to center active tab\r\n const centerActiveTab = (activeId) => {\r\n if (!navRef.current) return;\r\n\r\n const activeLink = navRef.current.querySelector(`.link[data-target=\"${activeId}\"]`);\r\n if (activeLink) {\r\n const navWidth = navRef.current.offsetWidth;\r\n const activeLinkLeft = activeLink.offsetLeft;\r\n const activeLinkWidth = activeLink.offsetWidth;\r\n\r\n const scrollLeft = activeLinkLeft - navWidth / 2 + activeLinkWidth / 2; // Calculate center position\r\n\r\n navRef.current.scrollTo({ left: scrollLeft, behavior: 'smooth' });\r\n }\r\n };\r\n\r\n // onSetActive will trigger the active state change\r\n const handleSetActive = (to) => {\r\n setActiveSection(to);\r\n centerActiveTab(to);\r\n };\r\n\r\n useEffect(() => {\r\n const handleScroll = () => {\r\n const sections = document.querySelectorAll('.section');\r\n let found = false;\r\n\r\n sections.forEach((section) => {\r\n const rect = section.getBoundingClientRect();\r\n if (!found && rect.top <= window.innerHeight / 2 && rect.bottom >= window.innerHeight / 2) {\r\n const sectionId = section.id;\r\n setActiveSection(sectionId);\r\n centerActiveTab(sectionId);\r\n found = true;\r\n }\r\n });\r\n };\r\n\r\n // Attach the scroll listener\r\n window.addEventListener('scroll', handleScroll);\r\n\r\n return () => window.removeEventListener('scroll', handleScroll);\r\n }, []);\r\n\r\n return (\r\n <nav className=\"scroll-nav\" ref={navRef}>\r\n <ul>\r\n {navigationItems.map((item, index) => {\r\n const sanitizedId = sanitizeId(item.fields.MenuTitle.value);\r\n\r\n return (\r\n <li key={index}>\r\n <Link\r\n activeClass=\"active\"\r\n to={item.fields.MenuTitle.value} // Dynamic section link\r\n spy={true}\r\n smooth={true}\r\n duration={400}\r\n offset={-130}\r\n onSetActive={handleSetActive}\r\n className={`link ${activeSection === item.fields.MenuTitle.value ? 'active' : ''}`}\r\n data-target={sanitizedId} // Set sanitized ID\r\n onClick={() => centerActiveTab(item.fields.MenuTitle.value)} // Ensure click also centers the tab\r\n >\r\n <Text field={item.fields.MenuTitle} />\r\n </Link>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n </nav>\r\n );\r\n};\r\n\r\nexport default withSitecoreContext()(SubNavigation);\r\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from 'react';\nimport PropTypes from 'prop-types';\nexport const Text = (_a) => {\n var { field, tag, editable, encode } = _a, otherProps = __rest(_a, [\"field\", \"tag\", \"editable\", \"encode\"]);\n if (!field || (!field.editable && (field.value === undefined || field.value === ''))) {\n return null;\n }\n // can't use editable value if we want to output unencoded\n if (!encode) {\n // eslint-disable-next-line no-param-reassign\n editable = false;\n }\n const isEditable = field.editable && editable;\n let output = isEditable\n ? field.editable || ''\n : field.value === undefined\n ? ''\n : field.value;\n // when string value isn't formatted, we should format line breaks\n if (!field.editable && typeof output === 'string') {\n const splitted = String(output).split('\\n');\n if (splitted.length) {\n const formatted = [];\n splitted.forEach((str, i) => {\n const isLast = i === splitted.length - 1;\n formatted.push(str);\n if (!isLast) {\n formatted.push(React.createElement(\"br\", { key: i }));\n }\n });\n output = formatted;\n }\n }\n const setDangerously = isEditable || !encode;\n let children = null;\n const htmlProps = Object.assign({}, otherProps);\n if (setDangerously) {\n htmlProps.dangerouslySetInnerHTML = {\n __html: output,\n };\n }\n else {\n children = output;\n }\n if (tag || setDangerously) {\n return React.createElement(tag || 'span', htmlProps, children);\n }\n else {\n return React.createElement(React.Fragment, null, children);\n }\n};\nText.propTypes = {\n field: PropTypes.shape({\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n editable: PropTypes.string,\n }),\n tag: PropTypes.string,\n editable: PropTypes.bool,\n encode: PropTypes.bool,\n};\nText.defaultProps = {\n editable: true,\n encode: true,\n};\nText.displayName = 'Text';\n"],"names":["sanitizeId","text","replace","withSitecoreContext","props","fields","navigationItems","Card","activeSection","setActiveSection","useState","navRef","useRef","centerActiveTab","activeId","current","activeLink","querySelector","navWidth","offsetWidth","scrollLeft","offsetLeft","scrollTo","left","behavior","handleSetActive","to","useEffect","handleScroll","sections","document","querySelectorAll","found","forEach","section","rect","getBoundingClientRect","top","window","innerHeight","bottom","sectionId","id","addEventListener","removeEventListener","_jsx","className","ref","children","map","item","index","sanitizedId","MenuTitle","value","Link","activeClass","spy","smooth","duration","offset","onSetActive","onClick","Text","field","__rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","_a","tag","editable","encode","otherProps","undefined","isEditable","output","splitted","String","split","formatted","str","isLast","push","React","key","setDangerously","htmlProps","assign","dangerouslySetInnerHTML","__html","propTypes","PropTypes","defaultProps","displayName"],"sourceRoot":""}