{"version":3,"file":"static/js/cbf446b0b9cc015de1b9.bundle.js","mappings":"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","sources":["webpack://henrys-ecommerce/./src/modules/hei-scrollspy/hei-scrollspy.tsx?723b","webpack://henrys-ecommerce/./src/modules/hei-scrollspy/hei-scrollspy.view.tsx?5365","webpack://henrys-ecommerce/./lib/hei-scrollspy/module-registration.js?13fb","webpack://henrys-ecommerce/external var \"React\"?0d3b"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { IHeiScrollspyData } from './hei-scrollspy.data';\r\nimport { IHeiScrollspyProps } from './hei-scrollspy.props.autogenerated';\r\n\r\nexport interface IHeiScrollspyViewProps extends IHeiScrollspyProps {}\r\n\r\n/**\r\n *\r\n * HeiScrollspy component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass HeiScrollspy extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n return this.props.renderView(this.props);\r\n }\r\n}\r\n\r\nexport default HeiScrollspy;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\nimport { IHeiScrollspyViewProps } from './hei-scrollspy';\r\nimport useIsInViewport from 'use-is-in-viewport';\r\nimport classnames from 'classnames';\r\n\r\ntype SectionHeadingsProps = {\r\n sections: React.ReactNode[];\r\n sectionInViewport: number;\r\n};\r\n\r\nconst SectionHeadings = ({ sections, sectionInViewport }: SectionHeadingsProps) => {\r\n const [isStuck, setIsStuck] = React.useState(false);\r\n const containerRef = React.useRef(null);\r\n\r\n const headings = React.useMemo(() => {\r\n return sections.map(item =>\r\n React.cloneElement(item as React.ReactElement, {\r\n titleOnly: true\r\n })\r\n );\r\n }, [sections]);\r\n\r\n React.useEffect(() => {\r\n const cachedRef = containerRef.current;\r\n const observer = new IntersectionObserver(\r\n ([e]) => {\r\n setIsStuck(e.intersectionRatio < 1);\r\n },\r\n { threshold: [1] }\r\n );\r\n cachedRef && observer.observe(cachedRef);\r\n return () => {\r\n cachedRef && observer.unobserve(cachedRef);\r\n };\r\n }, [containerRef]);\r\n\r\n return (\r\n \r\n
\r\n
\r\n
    \r\n
    \r\n {headings.map((item, idx) => {\r\n return (\r\n \r\n {item}\r\n \r\n );\r\n })}\r\n
    \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nconst SectionContent = ({\r\n children,\r\n index,\r\n updateIsInViewport\r\n}: React.PropsWithChildren<{\r\n index: number;\r\n updateIsInViewport: (index: number, isInViewport: boolean) => void;\r\n}>) => {\r\n const [isInViewport, targetRef] = useIsInViewport({\r\n // account for fixed headers\r\n modTop: '-160px'\r\n });\r\n\r\n React.useEffect(() => {\r\n updateIsInViewport(index, isInViewport ?? false);\r\n }, [index, isInViewport]);\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n};\r\n\r\nexport default (props: IHeiScrollspyViewProps) => {\r\n const {\r\n config: { className },\r\n slots: { sections }\r\n } = props;\r\n\r\n const sectionsInViewport = React.useRef>({});\r\n const [sectionInViewport, setSectionInViewport] = React.useState(-1);\r\n\r\n const updateIsInViewport = React.useCallback((index: number, isInViewport: boolean) => {\r\n // process.env.NODE_ENV === 'development' && console.log('hei-scrollspy', 'updateIsInViewport', index, isInViewport);\r\n const dict = sectionsInViewport.current;\r\n dict[index] = isInViewport;\r\n\r\n let firstIdx = -1;\r\n Object.keys(dict).forEach(idxStr => {\r\n const idx = +idxStr;\r\n if (dict[idx] && firstIdx < 0) {\r\n firstIdx = idx;\r\n process.env.NODE_ENV === 'development' && console.log('hei-scrollspy', 'active idx', firstIdx);\r\n }\r\n });\r\n\r\n setSectionInViewport(firstIdx);\r\n }, []);\r\n\r\n return (\r\n
\r\n \r\n {sections.map((s, idx) => (\r\n \r\n {s}\r\n \r\n ))}\r\n
\r\n );\r\n};\r\n","const binding = { modules: {}, dataActions: {} };\n\n (binding.modules['hei-scrollspy'] = {\n c: () => require('partner/modules/hei-scrollspy/hei-scrollspy.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'hei-scrollspy',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/hei-scrollspy'\n });\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|modules|hei-scrollspy|hei-scrollspy'] = {\n c: () => require('partner/modules/hei-scrollspy/hei-scrollspy.view.tsx'),\n cn: '__local__-__local__-hei-scrollspy'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","module.exports = React;"],"names":["HeiScrollspy","React","render","this","props","renderView","SectionHeadings","_ref","sections","sectionInViewport","isStuck","setIsStuck","containerRef","headings","map","item","titleOnly","cachedRef","current","observer","IntersectionObserver","_ref2","e","intersectionRatio","threshold","observe","unobserve","className","classnames","ref","idx","active","role","key","SectionContent","_ref3","children","index","updateIsInViewport","isInViewport","targetRef","useIsInViewport","modTop","config","slots","sectionsInViewport","setSectionInViewport","dict","firstIdx","Object","keys","forEach","idxStr","s","binding","modules","dataActions","c","require","$type","da","iNM","ns","n","p","pdp","md","window","__bindings__","_objectSpread","viewDictionary","cn","module","exports"],"sourceRoot":""}