{"version":3,"file":"scripts/chunks/_app_app_components_organisms_O98-Module3D_index_ts.1fd676640d286060281c.mjs","mappings":"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","sources":["webpack://rockworld/./app/components/atoms/Button/Button.tsx","webpack://rockworld/./app/components/atoms/Button/index.ts","webpack://rockworld/./app/components/atoms/Image/Image.module.scss","webpack://rockworld/./app/components/atoms/Image/Image.tsx","webpack://rockworld/./app/utils/breakpoints.ts","webpack://rockworld/./app/consts/css-class.ts","webpack://rockworld/./app/components/organisms/O23-TabsBlock/TabsBlock.module.scss","webpack://rockworld/./app/components/organisms/O23-TabsBlock/Pagination.tsx","webpack://rockworld/./app/components/organisms/O23-TabsBlock/TabList.tsx","webpack://rockworld/./app/components/organisms/O23-TabsBlock/Tabs.tsx","webpack://rockworld/./app/components/organisms/O23-TabsBlock/TabsBlock.tsx","webpack://rockworld/./app/components/atoms/icons/UsageDragTouch.tsx","webpack://rockworld/./app/utils/browser.ts","webpack://rockworld/./app/components/organisms/O98-Module3D/Module3D.module.scss","webpack://rockworld/./app/components/organisms/O98-Module3D/Module3DPoint.tsx","webpack://rockworld/./app/components/organisms/O98-Module3D/Module3DItem.tsx","webpack://rockworld/./app/components/organisms/O98-Module3D/Module3D.tsx","webpack://rockworld/./app/scripts/core/consts.ts","webpack://rockworld/./app/scripts/framework/pan-momentum.ts","webpack://rockworld/./node_modules/classnames/index.js","webpack://rockworld/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://rockworld/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"],"sourcesContent":["import { tidyStr } from '@utils/tidy-str';\r\nimport React, { CSSProperties, ReactElement } from 'react';\r\n\r\nexport const getButtonContent = ({\r\n iconName,\r\n svg,\r\n title,\r\n iconClassName = '',\r\n customBtnTextClassName,\r\n}: Pick<Button, 'title' | 'iconName' | 'svg' | 'customBtnTextClassName'> & { iconClassName?: string }) => (\r\n <>\r\n <span className={customBtnTextClassName || 'btn__text'}>{title}</span>\r\n <span\r\n className={`icon icon--${iconName} ${iconClassName}`}\r\n suppressHydrationWarning\r\n dangerouslySetInnerHTML={typeof svg === 'string' ? { __html: svg } : undefined}\r\n >\r\n {typeof svg !== 'string' ? svg : null}\r\n </span>\r\n </>\r\n);\r\n\r\ninterface CustomAttributes {\r\n [key: string]: string;\r\n}\r\ninterface Button {\r\n file?: boolean;\r\n svg?: string | JSX.Element;\r\n documentDataObject?: string;\r\n isFileGated?: boolean;\r\n isButtonStyleDisabled?: boolean;\r\n link?: string;\r\n title?: string;\r\n relationship?: string;\r\n target?: string;\r\n htmlAttributes?: string;\r\n extensions?: string;\r\n hasContent?: boolean;\r\n cssClass?: string;\r\n trackingLabel?: string;\r\n iconName?: string;\r\n fileTitle?: string;\r\n useButtonStyle?: boolean;\r\n fileCategory?: string;\r\n downloadType?: string;\r\n multipleFilesSelected?: boolean;\r\n fileType?: string;\r\n fileDataTarget?: string;\r\n onClick?(e: React.MouseEvent<HTMLElement>): void;\r\n linksToVideo?: boolean;\r\n cssStyle?: CSSProperties;\r\n useGatedWrapper?: boolean;\r\n useButtonWithoutIcon?: boolean;\r\n gatedContainerClassName?: string;\r\n isWhiteIcon?: boolean;\r\n customBtnTextClassName?: string;\r\n}\r\n\r\nconst Button = ({ useGatedWrapper = true, useButtonWithoutIcon, isWhiteIcon, ...props }: Button): ReactElement => {\r\n if (!props.hasContent) {\r\n return null;\r\n }\r\n\r\n const buttonContent = useButtonWithoutIcon\r\n ? props.title\r\n : getButtonContent({\r\n ...props,\r\n iconClassName: isWhiteIcon || (isWhiteIcon === undefined && props.file) ? 'is-white' : '',\r\n });\r\n\r\n const attributes: CustomAttributes = {\r\n target: props.target,\r\n href: props.isFileGated ? '' : props.link,\r\n };\r\n\r\n if (props.fileTitle) {\r\n attributes['download'] = props.fileTitle;\r\n }\r\n\r\n if (props.relationship && props.relationship.trim().length) {\r\n attributes['rel'] = props.relationship;\r\n }\r\n\r\n if (props.file) {\r\n const fileAnchor = (\r\n <a\r\n {...attributes}\r\n suppressHydrationWarning\r\n className={tidyStr`${props.cssClass} ${props.extensions} js-download-fallback-ie js-download`}\r\n data-object={`${props.documentDataObject}`}\r\n data-tracking-category=\"download\"\r\n data-tracking-action=\"click\"\r\n data-tracking-label={props.trackingLabel}\r\n data-tracking-filetype={props.fileType}\r\n data-tracking-filecategory={props.fileCategory}\r\n data-tracking-downloadtype={props.downloadType}\r\n data-target={props.fileDataTarget}\r\n style={props.cssStyle}\r\n >\r\n {buttonContent}\r\n </a>\r\n );\r\n\r\n return useGatedWrapper ? (\r\n <div className={tidyStr`gated-link-container ${props.gatedContainerClassName}`} suppressHydrationWarning>\r\n {fileAnchor}\r\n </div>\r\n ) : (\r\n fileAnchor\r\n );\r\n }\r\n\r\n if (!props.isButtonStyleDisabled && props.useButtonStyle) {\r\n if (props.link && props.link.trim().length !== 0) {\r\n return (\r\n <a\r\n suppressHydrationWarning\r\n {...attributes}\r\n className={tidyStr`${props.cssClass} ${props.extensions}`}\r\n style={props.cssStyle}\r\n >\r\n {buttonContent}\r\n </a>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n className={tidyStr`${props.cssClass} ${props.extensions}`}\r\n type=\"button\"\r\n onClick={props.onClick}\r\n style={props.cssStyle}\r\n >\r\n {props.title}\r\n </button>\r\n );\r\n }\r\n\r\n if (props.link) {\r\n return (\r\n <a\r\n suppressHydrationWarning\r\n {...attributes}\r\n className={tidyStr`${props.cssClass} ${props.extensions}`}\r\n style={props.cssStyle}\r\n >\r\n {buttonContent}\r\n </a>\r\n );\r\n }\r\n\r\n if (props.title && props.title.trim()) {\r\n return (\r\n <button\r\n className={tidyStr`${props.cssClass} ${props.extensions}`}\r\n type=\"button\"\r\n onClick={props.onClick}\r\n style={props.cssStyle}\r\n >\r\n {buttonContent}\r\n </button>\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport default Button;\r\n","import Button from './Button';\r\n\r\nexport default Button;\r\n","// extracted by mini-css-extract-plugin\nexport default {\"image\":\"image__zIuTb\"};","import { screenSizes } from 'app/scripts/core/consts';\r\nimport classNames from 'classnames';\r\nimport React, { FC, ImgHTMLAttributes, MutableRefObject } from 'react';\r\nimport styles from './Image.module.scss';\r\n\r\ninterface ImageSources {\r\n mobile?: string;\r\n tablet?: string;\r\n desktop?: string;\r\n desktopLarge?: string;\r\n}\r\n\r\ninterface Image {\r\n componentName?: string;\r\n name: string;\r\n sources?: ImageSources;\r\n src?: string;\r\n imageRef?: MutableRefObject<HTMLImageElement>;\r\n fetchpriority?: string;\r\n}\r\n\r\ntype ImageProps = ImgHTMLAttributes<HTMLImageElement> & Image;\r\n\r\nconst Image: FC<ImageProps> = (props) => {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- componentName\r\n const { componentName, src, sources, className, name, loading, alt, sizes, imageRef, ...imgAttributes } = props;\r\n const imageClassNames = classNames(styles.image, className);\r\n const srcSet = sources ? getSrcSet(sources) : null;\r\n\r\n return (\r\n <img\r\n {...imgAttributes}\r\n className={imageClassNames}\r\n alt={name || alt}\r\n loading={loading || 'lazy'}\r\n src={src}\r\n sizes={sizes || '100vw'}\r\n srcSet={srcSet}\r\n ref={imageRef}\r\n suppressHydrationWarning\r\n />\r\n );\r\n};\r\n\r\nexport const getSrcSet = (sources: ImageSources) => {\r\n const sourcesKeys = Object.keys(sources);\r\n const sourceSet = sourcesKeys.map((key) => {\r\n const source = sources[key];\r\n const resolution = screenSizes[key];\r\n\r\n return source ? `${source} ${resolution}w` : undefined;\r\n });\r\n\r\n return sourceSet.filter((v) => v !== undefined).join(', ');\r\n};\r\n\r\nexport { Image };\r\nexport type { ImageSources };\r\n","export const breakpoints = {\r\n isMobile: () => global?.Modernizr?.mq(`(max-width: ${App.mq.tablet - 1}px)`),\r\n isTablet: () => global?.Modernizr?.mq(`(max-width: ${App.mq.desktop - 1}px)`),\r\n};\r\n","export const cssClass = {\r\n isActive: 'is-active',\r\n isHiddenMd: 'is-hidden-md',\r\n // migrate more from Rockwool.RockWorld.Model.Constants here\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"O23-tabs__list\":\"O23-tabs__list__XtXGZ\",\"o23TabsList\":\"O23-tabs__list__XtXGZ\",\"O23-tabs\":\"O23-tabs__oRNdf\",\"o23Tabs\":\"O23-tabs__oRNdf\",\"is-filter\":\"is-filter__Egzts\",\"isFilter\":\"is-filter__Egzts\",\"O23-tabs__nav\":\"O23-tabs__nav__Rv6z6\",\"o23TabsNav\":\"O23-tabs__nav__Rv6z6\",\"is-sticky\":\"is-sticky__MOpej\",\"isSticky\":\"is-sticky__MOpej\",\"has-scroll\":\"has-scroll__I22Jq\",\"hasScroll\":\"has-scroll__I22Jq\",\"container\":\"container__dACoA\",\"is-in-start\":\"is-in-start__wULWE\",\"isInStart\":\"is-in-start__wULWE\",\"no-fade-outs\":\"no-fade-outs__zPj0A\",\"noFadeOuts\":\"no-fade-outs__zPj0A\",\"is-in-end\":\"is-in-end__YrUQ1\",\"isInEnd\":\"is-in-end__YrUQ1\",\"is-light-grey\":\"is-light-grey__QO1nt\",\"isLightGrey\":\"is-light-grey__QO1nt\",\"O23-tabs__content\":\"O23-tabs__content__fte5k\",\"o23TabsContent\":\"O23-tabs__content__fte5k\",\"is-active\":\"is-active__eyDdh\",\"isActive\":\"is-active__eyDdh\",\"has-5-tabs\":\"has-5-tabs__a8xqk\",\"has5Tabs\":\"has-5-tabs__a8xqk\",\"has-4-tabs\":\"has-4-tabs__HTT0A\",\"has4Tabs\":\"has-4-tabs__HTT0A\",\"O23-tabs__list__indicator\":\"O23-tabs__list__indicator__vOfij\",\"o23TabsListIndicator\":\"O23-tabs__list__indicator__vOfij\",\"has-3-tabs\":\"has-3-tabs__BZhE4\",\"has3Tabs\":\"has-3-tabs__BZhE4\",\"has-2-tabs\":\"has-2-tabs__gf_FM\",\"has2Tabs\":\"has-2-tabs__gf_FM\",\"O23-tabs__item\":\"O23-tabs__item__co5Q0\",\"o23TabsItem\":\"O23-tabs__item__co5Q0\",\"O23-tabs__item__inner\":\"O23-tabs__item__inner__c2W09\",\"o23TabsItemInner\":\"O23-tabs__item__inner__c2W09\",\"has-hover\":\"has-hover__EGNpa\",\"hasHover\":\"has-hover__EGNpa\",\"O23-tabs__select\":\"O23-tabs__select__ZU5aa\",\"o23TabsSelect\":\"O23-tabs__select__ZU5aa\",\"O23-tabs__select__elem\":\"O23-tabs__select__elem__LKhR1\",\"o23TabsSelectElem\":\"O23-tabs__select__elem__LKhR1\",\"icon\":\"icon__ZVsFv\",\"O23-tabs__pagination\":\"O23-tabs__pagination__xmzV7\",\"o23TabsPagination\":\"O23-tabs__pagination__xmzV7\",\"O23-tabs__pagination__controls\":\"O23-tabs__pagination__controls__QUZ9u\",\"o23TabsPaginationControls\":\"O23-tabs__pagination__controls__QUZ9u\",\"O23-tabs__pagination__controls__prev\":\"O23-tabs__pagination__controls__prev__RSdwv\",\"o23TabsPaginationControlsPrev\":\"O23-tabs__pagination__controls__prev__RSdwv\",\"O23-tabs__pagination__controls__next\":\"O23-tabs__pagination__controls__next__KGwl2\",\"o23TabsPaginationControlsNext\":\"O23-tabs__pagination__controls__next__KGwl2\",\"O23-tabs__pagination__controls__label\":\"O23-tabs__pagination__controls__label___rpNy\",\"o23TabsPaginationControlsLabel\":\"O23-tabs__pagination__controls__label___rpNy\",\"O23-tabs__pagination__list\":\"O23-tabs__pagination__list__Hl4Cv\",\"o23TabsPaginationList\":\"O23-tabs__pagination__list__Hl4Cv\",\"O23-tabs__pagination__list__item\":\"O23-tabs__pagination__list__item__d_4Hp\",\"o23TabsPaginationListItem\":\"O23-tabs__pagination__list__item__d_4Hp\",\"O23-tabs__pagination__list__item__inner\":\"O23-tabs__pagination__list__item__inner__LyJ5g\",\"o23TabsPaginationListItemInner\":\"O23-tabs__pagination__list__item__inner__LyJ5g\"};","import React from 'react';\r\nimport { tidyStr } from '@utils/tidy-str';\r\nimport { cssClass } from 'app/consts';\r\nimport { useIdArray } from '@hooks/useIdArray';\r\nimport { ArrowLeftIcon, ArrowRightIcon } from '../../../scripts/core/views/react/molecules/svg/svgElements';\r\nimport type { TabBlock } from './TabsBlock';\r\n\r\nimport styles from './TabsBlock.module.scss';\r\n\r\ninterface PaginationProps {\r\n activeTabIndex: number;\r\n tabs: TabBlock[];\r\n onClickArrow: (e, newActiveTabIndex: number) => void;\r\n}\r\n\r\nconst Pagination = ({ activeTabIndex, tabs, onClickArrow }: PaginationProps): React.ReactElement => {\r\n const prepTabs = useIdArray(tabs);\r\n\r\n const onClickArrowPrev = (e) => {\r\n if (activeTabIndex > 0) {\r\n onClickArrow(e, activeTabIndex - 1);\r\n }\r\n };\r\n\r\n const onClickArrowNext = (e) => {\r\n if (activeTabIndex < tabs.length - 1) {\r\n onClickArrow(e, activeTabIndex + 1);\r\n }\r\n };\r\n\r\n return (\r\n <div className={styles['O23-tabs__pagination']}>\r\n <div className={styles['O23-tabs__pagination__controls']}>\r\n <span\r\n role=\"button\"\r\n className={tidyStr`${styles['O23-tabs__pagination__controls__prev']} js-controls`}\r\n onClick={onClickArrowPrev}\r\n onKeyDown={(event) => event.key === 'Enter' && onClickArrowPrev(event)}\r\n tabIndex={0}\r\n >\r\n <span className={tidyStr`${styles.icon} icon icon--arrow-left`}>\r\n <ArrowLeftIcon />\r\n </span>\r\n </span>\r\n\r\n <div className={tidyStr`${styles['O23-tabs__pagination__controls__label']} js-label`}>\r\n {tabs && tabs.length > 0 ? tabs[activeTabIndex].label : 'The Group'}\r\n </div>\r\n\r\n <span\r\n className={`${styles['O23-tabs__pagination__controls__next']} js-controls`}\r\n onClick={onClickArrowNext}\r\n onKeyDown={(event) => event.key === 'Enter' && onClickArrowNext(event)}\r\n >\r\n <span className={tidyStr`${styles.icon} icon icon--arrow-right`}>\r\n <ArrowRightIcon />\r\n </span>\r\n </span>\r\n </div>\r\n\r\n <ul className={styles['O23-tabs__pagination__list']}>\r\n {prepTabs.map(\r\n (tab, index) =>\r\n tab &&\r\n tab.label.length > 0 && (\r\n <li\r\n key={tab._id}\r\n className={tidyStr`${styles['O23-tabs__pagination__list__item']} ${\r\n index === activeTabIndex ? styles[cssClass.isActive] : ''\r\n }`}\r\n >\r\n <span className={tidyStr`${styles['O23-tabs__pagination__list__item__inner']} js-pagination`} />\r\n </li>\r\n )\r\n )}\r\n </ul>\r\n </div>\r\n );\r\n};\r\n\r\nexport { Pagination };\r\n","import React, { MutableRefObject, useEffect, useRef } from 'react';\r\nimport { tidyStr } from '@utils/tidy-str';\r\nimport { cssClass } from 'app/consts';\r\nimport PanMomentum from '@framework/pan-momentum';\r\nimport { useIdArray } from '@hooks/useIdArray';\r\nimport type { TabBlock } from './TabsBlock';\r\n\r\nimport styles from './TabsBlock.module.scss';\r\n\r\ninterface TabListProps {\r\n activeTabIndex: number;\r\n isHiddenClass: string;\r\n hasPaginationClass: string;\r\n activeTabRef: MutableRefObject<HTMLLIElement>;\r\n indicatorRef: MutableRefObject<HTMLLIElement>;\r\n tabs: TabBlock[];\r\n onClickTab: (index: number, dataContentOverlay: string) => void;\r\n className?: string;\r\n hasScroll?: boolean;\r\n tabScrollChildSelector?: string;\r\n tabScrollBp?: string;\r\n}\r\n\r\nexport const TabList = (props: TabListProps) => {\r\n const {\r\n activeTabIndex,\r\n isHiddenClass,\r\n hasPaginationClass,\r\n activeTabRef,\r\n indicatorRef,\r\n tabs,\r\n onClickTab,\r\n className,\r\n hasScroll,\r\n tabScrollChildSelector,\r\n tabScrollBp,\r\n } = props;\r\n\r\n const ref = useRef<HTMLUListElement>(null);\r\n const pm = useRef<PanMomentum>();\r\n\r\n const childSelector = styles[tabScrollChildSelector];\r\n const isScrollable = hasScroll && childSelector !== undefined;\r\n const prepTabs = useIdArray(tabs);\r\n\r\n const _selectTabIfAlreadyAnchorProvider = async () => {\r\n if (window.location.hash !== '') {\r\n const hash = decodeURIComponent(window.location.hash.replace('#', ''));\r\n const tab = ref?.current?.querySelector(`[data-content-overlay=\"${hash}\"]`);\r\n\r\n if (tab) {\r\n let event;\r\n if (window.CustomEvent) {\r\n event = new CustomEvent('click', {\r\n bubbles: true,\r\n cancelable: true,\r\n });\r\n } else {\r\n event = document.createEvent('CustomEvent');\r\n event.initCustomEvent('click', true, true);\r\n }\r\n tab.dispatchEvent(event);\r\n const Velocity = (await import('velocity-animate')).default;\r\n Velocity.animate(tab, 'scroll', {\r\n easing: 'easeOutQuad',\r\n });\r\n }\r\n }\r\n };\r\n\r\n // tabs scrolling\r\n useEffect(() => {\r\n if (!isScrollable) {\r\n return undefined;\r\n }\r\n\r\n pm.current = new PanMomentum(ref?.current, {\r\n childSelector: `.${childSelector}`,\r\n bpMinSize: tabScrollBp || false,\r\n activeChildClassName: styles['is-active'],\r\n });\r\n\r\n const callback = () => pm.current.centerActiveChild();\r\n\r\n callback(); // init\r\n window.addEventListener('resize', callback);\r\n return () => window.removeEventListener('resize', callback);\r\n }, []);\r\n\r\n // center at active tab after progamic tab change (eg. interval change)\r\n useEffect(() => {\r\n pm.current && pm.current.centerActiveChild();\r\n }, [activeTabIndex]);\r\n\r\n useEffect(() => {\r\n const hasChangeFunc = () => {\r\n _selectTabIfAlreadyAnchorProvider();\r\n };\r\n window.addEventListener('hashchange', hasChangeFunc);\r\n\r\n setTimeout(() => {\r\n _selectTabIfAlreadyAnchorProvider();\r\n }, 100);\r\n\r\n return () => {\r\n window.removeEventListener('haschange', hasChangeFunc, false);\r\n };\r\n }, []);\r\n\r\n return (\r\n <ul\r\n ref={ref}\r\n className={tidyStr`${styles['O23-tabs__list']} ${isScrollable ? styles['has-scroll'] : ''} ${className} ${\r\n hasScroll ? '' : styles[isHiddenClass] || isHiddenClass || 'is-hidden-xs is-hidden-sm'\r\n } ${styles[hasPaginationClass] || hasPaginationClass}`}\r\n >\r\n {prepTabs.map(\r\n (tab, index) =>\r\n tab &&\r\n tab.label.length > 0 && (\r\n <li\r\n ref={index === activeTabIndex ? activeTabRef : null}\r\n key={tab._id}\r\n className={tidyStr`${styles['O23-tabs__item']} ${\r\n index === activeTabIndex ? styles[cssClass.isActive] : ''\r\n }`}\r\n >\r\n <span\r\n role=\"button\"\r\n tabIndex={0}\r\n className={tidyStr`${styles['O23-tabs__item__inner']} js-tab`}\r\n data-content-overlay={tab.dataContentOverlay}\r\n onClick={() => onClickTab(index, tab.dataContentOverlay)}\r\n onKeyDown={(event) => event.key === 'Enter' && onClickTab(index, tab.dataContentOverlay)}\r\n >\r\n <span>{tab.label}</span>\r\n </span>\r\n </li>\r\n )\r\n )}\r\n\r\n <li ref={indicatorRef} className={styles['O23-tabs__list__indicator']} />\r\n </ul>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { tidyStr } from '@utils/tidy-str';\r\nimport { cssClass } from 'app/consts';\r\nimport { useIdArray } from '@hooks/useIdArray';\r\nimport type { TabBlock } from './TabsBlock';\r\n\r\nimport styles from './TabsBlock.module.scss';\r\n\r\ninterface TabsProps {\r\n activeTabIndex: number;\r\n tabs: TabBlock[];\r\n}\r\n\r\nexport const Tabs = ({ activeTabIndex, tabs }: TabsProps) => {\r\n const prepTabs = useIdArray(tabs);\r\n\r\n if (!prepTabs.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n {prepTabs.map((tab, index) => (\r\n <div\r\n key={tab._id}\r\n data-tab-index={index}\r\n className={tidyStr`${styles['O23-tabs__content']} ${\r\n index === activeTabIndex ? styles[cssClass.isActive] : ''\r\n }`}\r\n >\r\n {tab.content}\r\n </div>\r\n ))}\r\n </>\r\n );\r\n};\r\n","import type { BackgroundStyle } from 'app/types';\r\nimport React, { ReactElement, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { tidyStr } from '@utils/tidy-str';\r\nimport PanMomentum from '@framework/pan-momentum';\r\nimport { breakpoints } from '@utils/breakpoints';\r\nimport { cssClass } from 'app/consts';\r\nimport { Select } from '@molecules/Select';\r\nimport { Pagination } from './Pagination';\r\nimport { TabList } from './TabList';\r\nimport { Tabs } from './Tabs';\r\n\r\nimport styles from './TabsBlock.module.scss';\r\n\r\nexport interface TabsBlockProps<TabsProps = TabBlock> {\r\n tabs: TabsProps[];\r\n deepLinkId?: string;\r\n backgroundStyle?: BackgroundStyle;\r\n hasAnchorId: string;\r\n hasAnchorIdClass?: string;\r\n hasPagination: boolean;\r\n hasPaginationClass?: string;\r\n hasScroll: boolean; // tab nav scroll\r\n hasScrollClass?: string; // tab nav scroll\r\n tabScrollBp?: string; // tab nav scroll\r\n tabScrollChildSelector?: string; // tab nav scroll\r\n isHiddenClass?: string;\r\n isSticky: boolean;\r\n triggerResize: boolean;\r\n header?: string;\r\n // tab content scroll:\r\n contentScrollable?: {\r\n rootSelector: string;\r\n contentSelector: string;\r\n };\r\n intervalOptions?: {\r\n contentSelector: string;\r\n timeout: number;\r\n omitSelectors: string[];\r\n };\r\n}\r\n\r\nexport type TabBlock<Props = unknown> = {\r\n content: ReactElement;\r\n label: string;\r\n dataContentOverlay: string;\r\n} & Props;\r\n\r\ninterface OffsetData {\r\n tabNavOffset: number;\r\n origOffsetY: number;\r\n isStickyClass: string;\r\n}\r\n\r\nexport const TabsBlock = (props: TabsBlockProps) => {\r\n const {\r\n deepLinkId,\r\n tabs,\r\n header,\r\n backgroundStyle,\r\n hasScroll,\r\n hasScrollClass,\r\n hasAnchorId,\r\n hasAnchorIdClass,\r\n hasPagination,\r\n hasPaginationClass,\r\n isSticky,\r\n isHiddenClass,\r\n triggerResize,\r\n tabScrollBp,\r\n tabScrollChildSelector,\r\n contentScrollable,\r\n intervalOptions,\r\n } = props;\r\n\r\n const [activeTabIndex, setActiveTabIndex] = useState(0);\r\n const [resizeTimeout, setResizeTimeout] = useState(null);\r\n\r\n const [offsetData, setOffsetData] = useState({\r\n tabNavOffset: null,\r\n origOffsetY: 0,\r\n isStickyClass: null,\r\n });\r\n\r\n const activeTabIndexRef = useRef(activeTabIndex);\r\n const changeTabInterval = useRef<number>(undefined);\r\n const tabsBlockRef = useRef<HTMLDivElement>(null);\r\n const tabNavRef = useRef(null);\r\n const indicatorRef = useRef(null);\r\n const activeTabRef = useRef(null);\r\n const pm = useRef<{ [key: number]: PanMomentum }>({});\r\n const isMobile = breakpoints.isMobile();\r\n\r\n useEffect(() => {\r\n activeTabIndexRef.current = activeTabIndex;\r\n\r\n const tabContent = tabsBlockRef?.current?.querySelector(\r\n tidyStr`${contentScrollable?.rootSelector}.is-tab-${activeTabIndex}`\r\n );\r\n\r\n const currentPm = pm.current[activeTabIndex];\r\n\r\n if (currentPm) {\r\n currentPm.checkPosition('reset', undefined);\r\n return;\r\n }\r\n\r\n pm.current[activeTabIndex] = new PanMomentum(tabContent?.querySelector(contentScrollable?.contentSelector), {});\r\n }, [activeTabIndex]);\r\n\r\n // pan momentum\r\n useEffect(() => {\r\n const onResize = () => {\r\n if (!breakpoints.isMobile()) {\r\n // reset each tab transforms on non-mobile screens\r\n Object.values(pm.current).forEach((p) => {\r\n if (!p.isAtStart()) {\r\n p.checkPosition('reset', undefined);\r\n }\r\n });\r\n }\r\n };\r\n\r\n window.addEventListener('resize', onResize);\r\n return () => window.removeEventListener('resize', onResize);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!intervalOptions || tabs.length < 2) {\r\n return undefined;\r\n }\r\n\r\n const defaultIntervalTimeout = 15000; // ms\r\n\r\n const callback = () => {\r\n const contentElem = tabsBlockRef?.current?.querySelector(\r\n tidyStr`.${styles['O23-tabs__content']}.${styles[cssClass.isActive]} ${intervalOptions.contentSelector}`\r\n );\r\n\r\n if (!contentElem) {\r\n return;\r\n }\r\n\r\n if (changeTabInterval.current !== undefined) {\r\n window.clearInterval(changeTabInterval.current);\r\n changeTabInterval.current = undefined;\r\n }\r\n\r\n changeTabInterval.current = window.setInterval(() => {\r\n const containsOmittedElems = intervalOptions?.omitSelectors?.length\r\n ? contentElem.querySelector(intervalOptions?.omitSelectors?.join(',')) !== null\r\n : false;\r\n\r\n !containsOmittedElems && setActiveTabIndex((activeTabIndexRef.current + 1) % tabs.length);\r\n }, intervalOptions?.timeout ?? defaultIntervalTimeout);\r\n };\r\n\r\n callback(); // init\r\n\r\n tabsBlockRef.current.addEventListener('mousemove', callback);\r\n tabsBlockRef.current.addEventListener('touchmove', callback);\r\n return () => {\r\n tabsBlockRef.current?.removeEventListener('mousemove', callback);\r\n tabsBlockRef.current?.removeEventListener('touchmove', callback);\r\n };\r\n }, []);\r\n\r\n const placeIndicator = (instant?: boolean) => {\r\n if ((!hasScroll && breakpoints.isTablet()) || !indicatorRef.current || !activeTabRef.current) {\r\n return;\r\n }\r\n\r\n if (instant) {\r\n indicatorRef.current.style.transition = 'none';\r\n }\r\n\r\n const activeTab = activeTabRef.current;\r\n const activeTabStyles = window.getComputedStyle(activeTab, 'false');\r\n const activeTabPaddingLeft = parseInt(activeTabStyles.getPropertyValue('padding-left'), 10);\r\n const activeTabPaddingRight = parseInt(activeTabStyles.getPropertyValue('padding-right'), 10);\r\n const activeTabWidth = activeTab.offsetWidth;\r\n const activeTabOffset = activeTab.offsetLeft;\r\n\r\n indicatorRef.current.style.transform = `translate3d(${activeTabOffset + activeTabPaddingLeft}px, 0, 0)`;\r\n\r\n indicatorRef.current.style.width = `${activeTabWidth - activeTabPaddingLeft - activeTabPaddingRight}px`;\r\n instant && setTimeout(() => (indicatorRef.current.style.transition = ''), 0);\r\n };\r\n\r\n const onResize = () =>\r\n setResizeTimeout((currentResizeTimeout) => {\r\n clearTimeout(currentResizeTimeout);\r\n return setTimeout(placeIndicator.bind(this), 100);\r\n });\r\n\r\n const onClickTab = (index: number, hash: string) => {\r\n if (hash) {\r\n const currentLocation = window.location.href.split('#')[0];\r\n window.history.replaceState('', '', `${currentLocation}#${hash}`);\r\n }\r\n\r\n setActiveTabIndex(index);\r\n\r\n if (hasScroll && window.scrollY >= offsetData.tabNavOffset) {\r\n const headerEl = header === undefined ? null : document.querySelector(header);\r\n const headerHeight = headerEl ? headerEl[0].offsetHeight : tabNavRef.current.offsetHeight;\r\n window.scrollTo(window.scrollX, offsetData.tabNavOffset - headerHeight);\r\n }\r\n };\r\n\r\n const checkScroll = () => {\r\n const tabNav = tabNavRef.current;\r\n\r\n if (!tabNav) {\r\n return;\r\n }\r\n\r\n setOffsetData((currentOffsetData) => {\r\n const { scrollY: scrollTop } = window;\r\n\r\n const newOffsetData: OffsetData = {\r\n ...currentOffsetData,\r\n };\r\n\r\n if (currentOffsetData.origOffsetY === 0) {\r\n const offset = tabNav.getBoundingClientRect().top + scrollTop;\r\n newOffsetData.tabNavOffset = offset;\r\n newOffsetData.origOffsetY = offset;\r\n }\r\n\r\n const stickyClassName = styles['is-sticky'];\r\n\r\n if (\r\n scrollTop >= newOffsetData.tabNavOffset &&\r\n !isMobile &&\r\n isSticky &&\r\n currentOffsetData.isStickyClass !== stickyClassName\r\n ) {\r\n newOffsetData.isStickyClass = stickyClassName;\r\n } else if (\r\n (scrollTop < newOffsetData.tabNavOffset || isMobile || !isSticky) &&\r\n currentOffsetData.isStickyClass !== null\r\n ) {\r\n newOffsetData.isStickyClass = null;\r\n }\r\n\r\n return newOffsetData;\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n const newOffsetData: OffsetData = {\r\n tabNavOffset: tabNavRef?.current\r\n ? tabNavRef.current.getBoundingClientRect().top + window.scrollY - document.documentElement.clientTop\r\n : null,\r\n origOffsetY: offsetData.origOffsetY,\r\n isStickyClass: offsetData.isStickyClass,\r\n };\r\n\r\n setOffsetData(newOffsetData);\r\n placeIndicator(true);\r\n\r\n let onResizeFunc;\r\n\r\n if (tabs.length > 1) {\r\n onResizeFunc = onResize.bind(this);\r\n window.addEventListener('resize', onResizeFunc, false);\r\n }\r\n\r\n const checkScrollFunc = checkScroll.bind(this);\r\n window.addEventListener('scroll', checkScrollFunc, { capture: true, passive: true });\r\n\r\n return () => {\r\n if (onResizeFunc) {\r\n window.removeEventListener('resize', onResizeFunc, false);\r\n }\r\n\r\n window.removeEventListener('scroll', checkScrollFunc, false);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!activeTabRef?.current) {\r\n return;\r\n }\r\n\r\n placeIndicator();\r\n\r\n const event = new CustomEvent('new-active');\r\n activeTabRef?.current?.dispatchEvent(event);\r\n\r\n if (!triggerResize) {\r\n return;\r\n }\r\n\r\n // Trigger window resize event\r\n let resizeEvent;\r\n\r\n if (window.Event) {\r\n resizeEvent = new Event('resize', {\r\n bubbles: true,\r\n cancelable: false,\r\n });\r\n } else {\r\n resizeEvent = document.createEvent('HTMLEvents');\r\n resizeEvent.initEvent('resize', true, false);\r\n }\r\n\r\n window.dispatchEvent(resizeEvent);\r\n }, [activeTabIndex]);\r\n\r\n const tabsExtended = useMemo(\r\n () =>\r\n tabs.map((tab, tabIndex) => ({\r\n ...tab,\r\n content: React.cloneElement(tab.content, { isContentActive: activeTabIndex === tabIndex }),\r\n })),\r\n [activeTabIndex]\r\n );\r\n\r\n return (\r\n <div\r\n id={deepLinkId}\r\n ref={tabsBlockRef}\r\n className={tidyStr`${styles['O23-tabs']} has-${tabs.length}-tabs ${styles[hasScrollClass]} ${\r\n styles[hasAnchorIdClass || hasAnchorId]\r\n }`}\r\n >\r\n {tabs.length > 1 && (\r\n <nav\r\n ref={tabNavRef}\r\n className={tidyStr`${styles['O23-tabs__nav']} ${styles[backgroundStyle]} ${styles[offsetData.isStickyClass]}`}\r\n >\r\n <div className={tidyStr`container ${styles.container}`}>\r\n <TabList\r\n activeTabIndex={activeTabIndex}\r\n isHiddenClass={isHiddenClass}\r\n hasPaginationClass={hasPaginationClass}\r\n activeTabRef={activeTabRef}\r\n indicatorRef={indicatorRef}\r\n tabs={tabs}\r\n onClickTab={onClickTab}\r\n hasScroll={hasScroll}\r\n tabScrollBp={tabScrollBp}\r\n tabScrollChildSelector={tabScrollChildSelector}\r\n />\r\n\r\n {hasPagination && (\r\n <Pagination\r\n activeTabIndex={activeTabIndex}\r\n tabs={tabs}\r\n onClickArrow={(event, newActiveTabIndex: number) => {\r\n event.preventDefault();\r\n setActiveTabIndex(newActiveTabIndex);\r\n pm.current[activeTabIndex].checkPosition('reset', undefined);\r\n }}\r\n />\r\n )}\r\n\r\n {!hasScroll && (\r\n <div className={tidyStr`${styles['O23-tabs__select']} is-hidden-md`}>\r\n <Select\r\n selectedIndex={activeTabIndex}\r\n options={tabs}\r\n onChange={(option, index) => {\r\n setActiveTabIndex(index);\r\n }}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </nav>\r\n )}\r\n <Tabs activeTabIndex={activeTabIndex} tabs={tabsExtended} />\r\n </div>\r\n );\r\n};\r\n","import React, { FC, SVGProps } from 'react';\r\n\r\ntype Props = SVGProps<SVGSVGElement>;\r\n\r\nconst UsageDragTouchIcon: FC<Props> = (props) => (\r\n <svg width=\"78\" height=\"80\" viewBox=\"0 0 78 80\" {...props}>\r\n <path d=\"M74.502 63.93c0 5.26-1.357 11.534-2.372 12.475H41.846L26.002 63.187c-1.693-1.414-2.564-3.587-2.273-5.765.243-1.812.918-3.53 1.361-4.394.018-.034.035-.068.05-.103l6.813-15.736v18.934c0 .826.57 1.593 1.39 1.725a1.667 1.667 0 0 0 1.948-1.638V9.406c0-1.89 1.387-3.582 3.28-3.764 2.171-.21 4.005 1.488 4.005 3.603v34.438c0 .827.57 1.593 1.39 1.726a1.667 1.667 0 0 0 1.949-1.638V27.945c0-.021.006-.04.006-.062.002-1.111.312-2.207 1.235-2.833 2.92-1.981 6.05.07 6.05 2.833V42.48c0 .827.569 1.593 1.39 1.724a1.667 1.667 0 0 0 1.95-1.636V28.667c.025-.122.042-.25.039-.382-.023-1.116.364-2.231 1.301-2.847 2.903-1.906 5.985.134 5.985 2.876V42.48c0 .827.569 1.593 1.39 1.725a1.666 1.666 0 0 0 1.95-1.636V29.403h.005c0-2.116 1.836-3.814 4.008-3.603 1.892.183 3.279 1.875 3.279 3.766V63.93h-.001zm-3.08-41.444a6.973 6.973 0 0 0-5.414 1.938 6.99 6.99 0 0 0-5.779-3.05c-2.04 0-3.872.878-5.149 2.27a6.984 6.984 0 0 0-5.516-2.702 6.955 6.955 0 0 0-3.648 1.035V9.49c0-3.693-2.797-6.923-6.505-7.17-4.064-.269-7.457 2.942-7.457 6.926v19.548l-9.86 22.772c-.394.784-3.964 8.237.2 12.842.055.05.108.103.161.152l17.71 14.775c.301.25.68.388 1.073.388h31.056c2.946 0 4.082-4.18 4.68-7.325.63-3.322.866-6.958.866-8.469V29.668c0-3.665-2.744-6.894-6.418-7.182zM0 8.598l7.581 8.42 1.862-1.656L4.51 9.88h16.938V7.396H4.464l4.98-5.47L7.591.256zM68.002 1.915l4.935 5.48H56V9.88h16.982l-4.98 5.471 1.854 1.667 7.59-8.34-7.582-8.42z\" />\r\n </svg>\r\n);\r\n\r\nexport default UsageDragTouchIcon;","export const isIE = () => {\r\n const { userAgent } = window.navigator;\r\n const value = userAgent.indexOf('MSIE ') >= 0 || userAgent.indexOf('Trident/') >= 0;\r\n return value;\r\n};\r\n\r\n// polfill for Safari\r\nexport const checkVisibility = (elem: Element) =>\r\n typeof elem?.checkVisibility === 'function' ? elem?.checkVisibility() : elem?.getClientRects()?.length > 0;\r\n","// extracted by mini-css-extract-plugin\nexport default {\"O98-3d-module\":\"O98-3d-module__PvqEQ\",\"o983DModule\":\"O98-3d-module__PvqEQ\",\"O98-3d-module__header\":\"O98-3d-module__header__bPAO5\",\"o983DModuleHeader\":\"O98-3d-module__header__bPAO5\",\"body-text-1\":\"body-text-1__wWOxC\",\"bodyText1\":\"body-text-1__wWOxC\",\"O98-3d-module__headline\":\"O98-3d-module__headline__JuE9T\",\"o983DModuleHeadline\":\"O98-3d-module__headline__JuE9T\",\"O23-tabs\":\"O23-tabs__Pj6uW\",\"o23Tabs\":\"O23-tabs__Pj6uW\",\"O23-tabs__item\":\"O23-tabs__item__rwHYO\",\"o23TabsItem\":\"O23-tabs__item__rwHYO\",\"O98-3d-module__item__info\":\"O98-3d-module__item__info__kt6zz\",\"o983DModuleItemInfo\":\"O98-3d-module__item__info__kt6zz\",\"O98-3d-module__item__info__header\":\"O98-3d-module__item__info__header__oStr1\",\"o983DModuleItemInfoHeader\":\"O98-3d-module__item__info__header__oStr1\",\"O98-3d-module__item__info__title\":\"O98-3d-module__item__info__title__d_FT9\",\"o983DModuleItemInfoTitle\":\"O98-3d-module__item__info__title__d_FT9\",\"O98-3d-module__item__info__content\":\"O98-3d-module__item__info__content__CvOxw\",\"o983DModuleItemInfoContent\":\"O98-3d-module__item__info__content__CvOxw\",\"O98-3d-module__item__info__close\":\"O98-3d-module__item__info__close__NbRIF\",\"o983DModuleItemInfoClose\":\"O98-3d-module__item__info__close__NbRIF\",\"O98-3d-module__item\":\"O98-3d-module__item__T97N1\",\"o983DModuleItem\":\"O98-3d-module__item__T97N1\",\"has-spots\":\"has-spots__Ipq7u\",\"hasSpots\":\"has-spots__Ipq7u\",\"has-hover\":\"has-hover__UfCa_\",\"hasHover\":\"has-hover__UfCa_\",\"has-spot-open\":\"has-spot-open__bKS7t\",\"hasSpotOpen\":\"has-spot-open__bKS7t\",\"O98-3d-module__item__inner\":\"O98-3d-module__item__inner__SpVvS\",\"o983DModuleItemInner\":\"O98-3d-module__item__inner__SpVvS\",\"O98-3d-module__item__image\":\"O98-3d-module__item__image__UffYa\",\"o983DModuleItemImage\":\"O98-3d-module__item__image__UffYa\",\"O98-3d-module__item__image__instructions\":\"O98-3d-module__item__image__instructions__vByZ9\",\"o983DModuleItemImageInstructions\":\"O98-3d-module__item__image__instructions__vByZ9\",\"is-hidden\":\"is-hidden__khSIK\",\"isHidden\":\"is-hidden__khSIK\",\"O98-3d-module__item__image__instructions__bg\":\"O98-3d-module__item__image__instructions__bg__S0tVT\",\"o983DModuleItemImageInstructionsBg\":\"O98-3d-module__item__image__instructions__bg__S0tVT\",\"no-mix-blend-mode\":\"no-mix-blend-mode__xe2Y1\",\"noMixBlendMode\":\"no-mix-blend-mode__xe2Y1\",\"O98-3d-module__item__image__instructions__inner\":\"O98-3d-module__item__image__instructions__inner__DAR0z\",\"o983DModuleItemImageInstructionsInner\":\"O98-3d-module__item__image__instructions__inner__DAR0z\",\"icon\":\"icon__hA72R\",\"wiggle\":\"wiggle__A79GB\",\"O98-3d-module__spot__btn__shadow\":\"O98-3d-module__spot__btn__shadow__s7nmy\",\"o983DModuleSpotBtnShadow\":\"O98-3d-module__spot__btn__shadow__s7nmy\",\"O98-3d-module__spot__btn__inner\":\"O98-3d-module__spot__btn__inner__FodbO\",\"o983DModuleSpotBtnInner\":\"O98-3d-module__spot__btn__inner__FodbO\",\"O98-3d-module__spot__btn__plus\":\"O98-3d-module__spot__btn__plus__HtRrf\",\"o983DModuleSpotBtnPlus\":\"O98-3d-module__spot__btn__plus__HtRrf\",\"show-spots\":\"show-spots__vGqrL\",\"showSpots\":\"show-spots__vGqrL\",\"is-outer\":\"is-outer__ohPQp\",\"isOuter\":\"is-outer__ohPQp\",\"O98-3d-module__spot__btn__label\":\"O98-3d-module__spot__btn__label__PIrrC\",\"o983DModuleSpotBtnLabel\":\"O98-3d-module__spot__btn__label__PIrrC\",\"O98-3d-module__spot__btn__label__inner\":\"O98-3d-module__spot__btn__label__inner__NNHih\",\"o983DModuleSpotBtnLabelInner\":\"O98-3d-module__spot__btn__label__inner__NNHih\",\"is-left\":\"is-left__Dx4Kd\",\"isLeft\":\"is-left__Dx4Kd\",\"O98-3d-module__spot\":\"O98-3d-module__spot___ilS5\",\"o983DModuleSpot\":\"O98-3d-module__spot___ilS5\",\"O98-3d-module__spot__content\":\"O98-3d-module__spot__content__vDsFh\",\"o983DModuleSpotContent\":\"O98-3d-module__spot__content__vDsFh\",\"O98-3d-module__spot__content__bg\":\"O98-3d-module__spot__content__bg__G9f5h\",\"o983DModuleSpotContentBg\":\"O98-3d-module__spot__content__bg__G9f5h\",\"O98-3d-module__spot__content__inner\":\"O98-3d-module__spot__content__inner__k01r7\",\"o983DModuleSpotContentInner\":\"O98-3d-module__spot__content__inner__k01r7\",\"btn--secondary\":\"btn--secondary__qYJFI\",\"btnSecondary\":\"btn--secondary__qYJFI\",\"is-top\":\"is-top__zgibC\",\"isTop\":\"is-top__zgibC\",\"O98-3d-module__spot__logo\":\"O98-3d-module__spot__logo__mbyi9\",\"o983DModuleSpotLogo\":\"O98-3d-module__spot__logo__mbyi9\",\"O98-3d-module__spot__image\":\"O98-3d-module__spot__image__xMk1B\",\"o983DModuleSpotImage\":\"O98-3d-module__spot__image__xMk1B\",\"is-active\":\"is-active__iaJst\",\"isActive\":\"is-active__iaJst\",\"O98-3d-module__spot__title\":\"O98-3d-module__spot__title__JyLGK\",\"o983DModuleSpotTitle\":\"O98-3d-module__spot__title__JyLGK\",\"is-rockwool\":\"is-rockwool__k1eUd\",\"isRockwool\":\"is-rockwool__k1eUd\",\"is-rockfon\":\"is-rockfon__YHOVb\",\"isRockfon\":\"is-rockfon__YHOVb\",\"is-rockpanel\":\"is-rockpanel__d_Hg4\",\"isRockpanel\":\"is-rockpanel__d_Hg4\",\"is-grodan\":\"is-grodan__RBoBV\",\"isGrodan\":\"is-grodan__RBoBV\",\"is-lapinus\":\"is-lapinus__qZsM8\",\"isLapinus\":\"is-lapinus__qZsM8\",\"is-open\":\"is-open__VaHZu\",\"isOpen\":\"is-open__VaHZu\",\"initial-view-fade\":\"initial-view-fade__I_4Ii\",\"initialViewFade\":\"initial-view-fade__I_4Ii\",\"initial-view-fade-translate\":\"initial-view-fade-translate__RVI2F\",\"initialViewFadeTranslate\":\"initial-view-fade-translate__RVI2F\",\"icon-arrow-down-down\":\"icon-arrow-down-down__QPLuD\",\"iconArrowDownDown\":\"icon-arrow-down-down__QPLuD\",\"icon-arrow-down-up\":\"icon-arrow-down-up__JsFKq\",\"iconArrowDownUp\":\"icon-arrow-down-up__JsFKq\",\"icon-arrow-up-down\":\"icon-arrow-up-down__avoXe\",\"iconArrowUpDown\":\"icon-arrow-up-down__avoXe\",\"icon-arrow-up-up\":\"icon-arrow-up-up__eEEvR\",\"iconArrowUpUp\":\"icon-arrow-up-up__eEEvR\"};","import React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { tidyStr } from '@utils/tidy-str';\r\nimport { Brand } from '@utils/brand';\r\nimport Button from '@atoms/Button';\r\nimport { checkVisibility } from '@utils/browser';\r\nimport styles from './Module3D.module.scss';\r\n\r\nexport interface Module3DPointProps extends React.HTMLAttributes<HTMLDivElement> {\r\n xCoordinate: number;\r\n yCoordinate: number;\r\n image: string;\r\n infoContent: string;\r\n title?: string;\r\n pointNumber: string | number;\r\n brandClass: string;\r\n labelToLeft?: boolean;\r\n reverseInformationPosition?: boolean;\r\n svg?: string;\r\n brandLogo?: Brand;\r\n bodyText: string;\r\n hasButton?: boolean;\r\n isOpen?: boolean;\r\n containerRef?: React.MutableRefObject<HTMLElement>;\r\n button?: Button;\r\n handleOpenActivePoint: (isContentLeft: boolean) => void;\r\n handleCloseActivePoint: () => void;\r\n isMobile: boolean;\r\n deepLinkId?: string;\r\n hasAnchorId?: string;\r\n}\r\n\r\ntype BoxCoord = number | 'unset';\r\ntype BoxCoords = { left: BoxCoord; right: BoxCoord; top: BoxCoord; bottom: BoxCoord };\r\n\r\nexport const Module3dPoint: FC<Module3DPointProps> = ({\r\n isOpen,\r\n title,\r\n xCoordinate,\r\n yCoordinate,\r\n pointNumber,\r\n labelToLeft,\r\n reverseInformationPosition,\r\n brandClass,\r\n brandLogo,\r\n bodyText,\r\n hasButton,\r\n button,\r\n handleOpenActivePoint,\r\n handleCloseActivePoint,\r\n containerRef,\r\n isMobile,\r\n svg,\r\n}) => {\r\n const [isContentLeft, setIsContentLeft] = useState(false);\r\n const [hasSiblingsCollision, setHasSiblingsCollision] = useState(false);\r\n const [isTop, setIsTop] = useState(false);\r\n\r\n const labelRef = useRef<HTMLDivElement>(null);\r\n const contentRef = useRef<HTMLDivElement>(null);\r\n\r\n const boxCoords = useRef<BoxCoords>({\r\n left: xCoordinate,\r\n right: 'unset',\r\n top: yCoordinate,\r\n bottom: 'unset',\r\n });\r\n\r\n const updateBoxCoords = (params: Partial<BoxCoords>) => {\r\n boxCoords.current = {\r\n ...boxCoords.current,\r\n ...params,\r\n };\r\n };\r\n\r\n const onResize = useCallback(() => {\r\n if (!checkVisibility(containerRef?.current)) {\r\n // don't handle hidden tabs\r\n return;\r\n }\r\n\r\n const containerRect = containerRef.current.getBoundingClientRect();\r\n const contentRect = contentRef.current.getBoundingClientRect();\r\n\r\n // content cut at right edge\r\n if (xCoordinate + contentRect.width > containerRect.width) {\r\n isContentLeft\r\n ? updateBoxCoords({\r\n left: 'unset',\r\n right: Math.abs(containerRect.width - xCoordinate),\r\n })\r\n : setIsContentLeft(true);\r\n }\r\n\r\n // content cut at left edge (isContentLeft -> box pushed from right to left edge)\r\n if (xCoordinate < 0 || (isContentLeft && contentRect.width > xCoordinate)) {\r\n isContentLeft\r\n ? setIsContentLeft(false)\r\n : updateBoxCoords({\r\n left: 0,\r\n right: 'unset',\r\n });\r\n }\r\n\r\n // content cut at bottom edge\r\n if (yCoordinate + contentRect.height > containerRect.height) {\r\n setIsTop(true);\r\n\r\n updateBoxCoords({\r\n top: 'unset',\r\n bottom: containerRect.height - yCoordinate,\r\n });\r\n }\r\n\r\n // content cut at top edge\r\n if (yCoordinate < 0) {\r\n updateBoxCoords({\r\n top: 0,\r\n bottom: 'unset',\r\n });\r\n }\r\n }, [contentRef.current, containerRef.current]);\r\n\r\n // check label collisions with possible siblings\r\n useEffect(() => {\r\n const nextLabel = containerRef.current?.querySelector(\r\n `[data-spot=\"${Number(pointNumber) + 1}\"] .${styles['O98-3d-module__spot__btn__label']}`\r\n );\r\n\r\n if (!nextLabel || !checkVisibility(nextLabel)) {\r\n return;\r\n }\r\n\r\n const currLabelRect = labelRef.current.getBoundingClientRect();\r\n const nextLabelRect = nextLabel.getBoundingClientRect();\r\n\r\n if (\r\n currLabelRect.x + currLabelRect.width > nextLabelRect.x && // current overlapps next X axis\r\n Math.abs(currLabelRect.top + currLabelRect.height) < Math.abs(nextLabelRect.top) && // next is close to current in Y axis from bottom\r\n Math.abs(currLabelRect.top) > Math.abs(nextLabelRect.top + nextLabelRect.height) // next is close to current in Y axis from top\r\n ) {\r\n setHasSiblingsCollision(true);\r\n }\r\n }, [labelToLeft, xCoordinate, yCoordinate]);\r\n\r\n const coordinates = { left: xCoordinate, top: yCoordinate };\r\n\r\n const showContentOnLeft =\r\n isContentLeft ||\r\n ((reverseInformationPosition &&\r\n boxCoords.current.left !== 'unset' &&\r\n boxCoords.current.left >= contentRef.current?.offsetWidth) ??\r\n 0);\r\n\r\n const showLabelOnLeft = useMemo(() => {\r\n const labelRect = labelRef.current?.getBoundingClientRect();\r\n if (!labelRect) return labelToLeft;\r\n return labelToLeft\r\n ? xCoordinate >= labelRect.width\r\n : labelRect.width + xCoordinate >= containerRef?.current?.offsetWidth;\r\n }, [labelToLeft, xCoordinate, labelRef.current?.offsetWidth]);\r\n\r\n useEffect(() => {\r\n onResize(); // init\r\n window.addEventListener('resize', onResize);\r\n return () => window.removeEventListener('resize', onResize);\r\n }, []);\r\n\r\n\r\n const onMouseEnter = () => {\r\n if (!isMobile) {\r\n onResize();\r\n handleOpenActivePoint(isContentLeft);\r\n }\r\n };\r\n\r\n const onClick = (e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n isOpen ? handleCloseActivePoint() : handleOpenActivePoint(isContentLeft);\r\n };\r\n\r\n return (\r\n <div\r\n className={tidyStr`${styles['O98-3d-module__spot']} ${brandClass} ${\r\n isOpen ? `${styles['is-open']} ${styles['has-spot-open']}` : ''\r\n }`}\r\n data-spot={pointNumber}\r\n onMouseEnter={onMouseEnter}\r\n onMouseLeave={() => !isMobile && handleCloseActivePoint()}\r\n data-testid=\"3d-module-spot\"\r\n >\r\n <span className=\"O98-3d-module__spot__btn\" onClick={onClick}>\r\n <span\r\n className={tidyStr`${styles['O98-3d-module__spot__btn__shadow']} ${styles['is-outer']}`}\r\n style={coordinates}\r\n />\r\n\r\n {title && (\r\n <span\r\n ref={labelRef}\r\n className={tidyStr`${styles['O98-3d-module__spot__btn__label']} ${\r\n showLabelOnLeft || hasSiblingsCollision ? styles['is-left'] : ''\r\n }`}\r\n style={coordinates}\r\n >\r\n <span className={styles['O98-3d-module__spot__btn__label__inner']}>{title}</span>\r\n </span>\r\n )}\r\n\r\n <span className={styles['O98-3d-module__spot__btn__shadow']} style={coordinates} />\r\n <span className={styles['O98-3d-module__spot__btn__inner']} style={coordinates} />\r\n <span className={styles['O98-3d-module__spot__btn__plus']} style={coordinates} />\r\n </span>\r\n\r\n <div\r\n ref={contentRef}\r\n className={tidyStr`${styles['O98-3d-module__spot__content']} ${showContentOnLeft ? styles['is-left'] : ''} ${\r\n isTop ? styles['is-top'] : ''\r\n }`}\r\n style={boxCoords.current}\r\n >\r\n <span className={styles['O98-3d-module__spot__content__bg']} />\r\n <div className={styles['O98-3d-module__spot__content__inner']}>\r\n {brandLogo && (\r\n <div\r\n className={tidyStr`${brandClass} ${styles['O98-3d-module__spot__logo']}`}\r\n dangerouslySetInnerHTML={{ __html: svg }}\r\n />\r\n )}\r\n {title && <h5 className={styles['O98-3d-module__spot__title']}>{title}</h5>}\r\n <p>{bodyText}</p>\r\n {hasButton && <Button {...button} />}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { Image } from '@atoms/Image';\r\nimport UsageDragTouch from '@atoms/icons/UsageDragTouch';\r\nimport { tidyStr } from '@utils/tidy-str';\r\nimport { cssClass } from 'app/consts';\r\nimport { Module3DPointProps, Module3dPoint } from './Module3DPoint';\r\nimport styles from './Module3D.module.scss';\r\n\r\nexport interface Module3DItemProps {\r\n points?: Exclude<Module3DPointProps, 'pointNumber'>[];\r\n tabNumber?: number;\r\n tabName?: string;\r\n hideInfoContent?: boolean;\r\n backgroundImage: string;\r\n altName?: string;\r\n altText?: string;\r\n isContentActive?: boolean;\r\n infoContent?: string;\r\n index?: number;\r\n innerItemRef?: React.MutableRefObject<HTMLDivElement>;\r\n}\r\n\r\nexport const Module3DItem: FC<Module3DItemProps> = ({\r\n tabNumber,\r\n tabName,\r\n points = [],\r\n hideInfoContent,\r\n altName,\r\n backgroundImage,\r\n altText,\r\n isContentActive,\r\n infoContent,\r\n}) => {\r\n const [activePoint, setActivePoint] = useState<Module3DPointProps>(null);\r\n const [showPoints, setShowPoints] = useState(false);\r\n const [showInfoContent, setShowInfoContent] = useState(!hideInfoContent);\r\n const [showSwipeInstruction, setShowSwipeInstruction] = useState(true);\r\n const itemRef = useRef<HTMLDivElement>(null);\r\n const innerRef = useRef<HTMLDivElement>(null);\r\n const imgRef = useRef<HTMLImageElement>(null);\r\n\r\n const scrollImageIfNeeded = useCallback((\r\n options: {\r\n targetX?: number;\r\n margin?: number;\r\n behavior?: ScrollBehavior;\r\n isContentLeft?: boolean;\r\n } = {}\r\n ) => {\r\n const {\r\n targetX,\r\n margin = 0,\r\n behavior = 'instant',\r\n isContentLeft\r\n } = options;\r\n\r\n if (itemRef.current && imgRef.current) {\r\n const windowWidth = window.innerWidth;\r\n const imageWidth = imgRef.current.clientWidth;\r\n if (imageWidth > windowWidth) {\r\n let scrollPosition;\r\n if (targetX) {\r\n scrollPosition = isContentLeft ? targetX + margin : targetX - margin;\r\n } else {\r\n scrollPosition = (imageWidth - windowWidth) / 2;\r\n }\r\n\r\n itemRef.current.scrollTo({\r\n left: scrollPosition,\r\n behavior,\r\n });\r\n }\r\n }\r\n }, []);\r\n \r\n useEffect(() => {\r\n if (isContentActive) {\r\n setShowPoints(false);\r\n\r\n setTimeout(() => {\r\n setShowPoints(true);\r\n }, 10);\r\n }\r\n\r\n return () => {\r\n setShowPoints(false);\r\n };\r\n }, [isContentActive]);\r\n\r\n useEffect(() => {\r\n // Center the image on the page when it loads\r\n scrollImageIfNeeded();\r\n\r\n // Also listen for load event in case image hasn't loaded yet\r\n const imgElement = imgRef.current;\r\n imgElement?.addEventListener('load', () => scrollImageIfNeeded());\r\n\r\n return () => {\r\n imgElement?.removeEventListener('load', () => scrollImageIfNeeded());\r\n };\r\n }, []);\r\n\r\n const sortedPoints = useMemo(\r\n () =>\r\n points?.slice().sort((a, b) => {\r\n if (a.xCoordinate < b.xCoordinate) {\r\n return -1;\r\n }\r\n if (a.xCoordinate > b.xCoordinate) {\r\n return 1;\r\n }\r\n return 0;\r\n }),\r\n [points]\r\n );\r\n\r\n const handleOpenActivePoint = (point: Module3DPointProps, pointNumber: number, isContentLeft: boolean) => {\r\n const margin = window.innerWidth > 768 ? 32 : 16;\r\n // Scroll to the point so info box is not cut off\r\n scrollImageIfNeeded({\r\n targetX: point.xCoordinate,\r\n margin,\r\n behavior: 'smooth',\r\n isContentLeft\r\n });\r\n\r\n setShowInfoContent(false);\r\n setShowSwipeInstruction(false);\r\n\r\n if (activePoint?.pointNumber !== pointNumber) {\r\n setActivePoint({ ...point, pointNumber });\r\n }\r\n };\r\n\r\n const handleCloseActivePoint = () => {\r\n setActivePoint(null);\r\n };\r\n\r\n return (\r\n <div\r\n ref={itemRef}\r\n role=\"button\"\r\n tabIndex={0}\r\n onClick={() => handleCloseActivePoint()}\r\n className={tidyStr`\r\n ${styles['O98-3d-module__item']}\r\n is-tab-${tabNumber}\r\n ${styles['no-fade-outs']}\r\n ${points.length ? styles['has-spots'] : ''}\r\n ${showPoints ? styles['show-spots'] : ''}\r\n ${activePoint ? styles['has-spot-open'] : ''}\r\n `}\r\n >\r\n <div \r\n ref={innerRef} \r\n className={styles['O98-3d-module__item__inner']}\r\n onTouchMove={() => setShowSwipeInstruction(false)}\r\n >\r\n <figure className={styles['O98-3d-module__item__image']}>\r\n {showSwipeInstruction && (\r\n <div className={styles['O98-3d-module__item__image__instructions']}>\r\n <span className={styles['O98-3d-module__item__image__instructions__bg']} />\r\n <div className={styles['O98-3d-module__item__image__instructions__inner']}>\r\n <p>Swipe to explore</p>\r\n <span className={`${styles.icon} icon icon--usage-drag-touch is-white`}>\r\n <UsageDragTouch fill=\"#FFF\" />\r\n </span>\r\n </div>\r\n </div>\r\n )}\r\n <Image\r\n name={altName}\r\n alt={altText}\r\n src={backgroundImage}\r\n imageRef={imgRef}\r\n />\r\n\r\n {sortedPoints.map((point, pointIndex) =>\r\n point.image?.length > 0 ? (\r\n <Image\r\n key={point.pointNumber}\r\n name={point.title}\r\n src={point.image}\r\n className={tidyStr`${styles['O98-3d-module__spot__image']} ${\r\n pointIndex === activePoint?.pointNumber ? styles[cssClass.isActive] : ''\r\n }`}\r\n />\r\n ) : (\r\n <div\r\n key={point.pointNumber}\r\n className={tidyStr`${styles['O98-3d-module__spot__image']} ${\r\n pointIndex === activePoint?.pointNumber ? styles[cssClass.isActive] : ''\r\n }`}\r\n />\r\n )\r\n )}\r\n </figure>\r\n\r\n {sortedPoints.map((point, pointNumber) => (\r\n <Module3dPoint\r\n {...point}\r\n containerRef={innerRef}\r\n key={point.pointNumber}\r\n isOpen={activePoint?.pointNumber === pointNumber}\r\n pointNumber={pointNumber}\r\n xCoordinate={point.xCoordinate}\r\n yCoordinate={point.yCoordinate}\r\n handleOpenActivePoint={(isContentLeft) => handleOpenActivePoint(point, pointNumber, isContentLeft)}\r\n handleCloseActivePoint={handleCloseActivePoint}\r\n />\r\n ))}\r\n </div>\r\n\r\n {showInfoContent && (\r\n <section className={styles['O98-3d-module__item__info']}>\r\n <header className={styles['O98-3d-module__item__info__header']}>\r\n <h3 className={styles['O98-3d-module__item__info__title']}>\r\n {tabName}\r\n <button\r\n type=\"button\"\r\n aria-label=\"Close info\"\r\n tabIndex={0}\r\n onClick={() => setShowInfoContent(false)}\r\n onKeyDown={(event) => event.key === 'Enter' && setShowInfoContent(false)}\r\n className={`${styles['O98-3d-module__item__info__close']} js-spot-info-close button-unstyled`}\r\n />\r\n </h3>\r\n </header>\r\n <div className={styles['O98-3d-module__item__info__content']}>\r\n <p>{infoContent}</p>\r\n </div>\r\n </section>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React, { FC } from 'react';\r\nimport { TabBlock } from '@organisms/O23-TabsBlock/TabsBlock';\r\nimport { tidyStr } from '@utils/tidy-str';\r\nimport { TabsBlock, TabsBlockProps } from '../O23-TabsBlock';\r\nimport { Module3DItem, Module3DItemProps } from './Module3DItem';\r\n\r\nimport styles from './Module3D.module.scss';\r\n\r\ntype Module3DTabsBlockProps = TabsBlockProps<\r\n Omit<TabBlock, 'content'> & { content: Omit<Module3DItemProps, 'tabNumber' | 'isContentActive'> }\r\n>;\r\n\r\nexport interface Module3DProps {\r\n deepLinkId: string;\r\n hasAnchorId: string;\r\n heading: string;\r\n subheading: string;\r\n enableAutoScroll: boolean;\r\n tabsBlock: Module3DTabsBlockProps;\r\n}\r\n\r\nexport const Module3D: FC<Module3DProps> = ({ heading, subheading, tabsBlock, hasAnchorId, deepLinkId, enableAutoScroll }) => (\r\n <section\r\n id={deepLinkId}\r\n className={tidyStr`${styles['O98-3d-module']} lazy-hydration-loading ${hasAnchorId}`}\r\n suppressHydrationWarning\r\n >\r\n <header className=\"container\">\r\n <div className={styles['O98-3d-module__header']}>\r\n {heading && <h2 className={styles['O98-3d-module__headline']}>{heading}</h2>}\r\n\r\n {subheading && (\r\n <div className=\"body-text-1\">\r\n <p>{subheading}</p>\r\n </div>\r\n )}\r\n </div>\r\n </header>\r\n\r\n <div className={styles['O98-3d-module__items']}>\r\n <TabsBlock\r\n {...tabsBlock}\r\n intervalOptions={\r\n enableAutoScroll\r\n ? {\r\n contentSelector: `.${styles['O98-3d-module__item']}`,\r\n timeout: 15000,\r\n omitSelectors: [`.${styles['O98-3d-module__spot']}.${styles['is-open']}`],\r\n }\r\n : undefined\r\n }\r\n contentScrollable={{\r\n rootSelector: `.${styles['O98-3d-module__item']}`,\r\n contentSelector: `.${styles['O98-3d-module__item__inner']}`,\r\n }}\r\n tabScrollChildSelector=\"O23-tabs__item\" // tab nav scrollable\r\n tabs={tabsBlock.tabs.map(({ content, ...restTabProps }, tabNumber) => ({\r\n ...restTabProps,\r\n content: <Module3DItem tabNumber={tabNumber} {...content} />,\r\n }))}\r\n />\r\n </div>\r\n </section>\r\n);\r\n","interface ScreenWidths {\r\n mobile: number;\r\n tablet: number;\r\n desktop: number;\r\n desktopLarge: number;\r\n}\r\n\r\nexport const screenSizes: ScreenWidths = {\r\n mobile: 375,\r\n tablet: 768,\r\n desktop: 992,\r\n desktopLarge: 1200,\r\n};\r\n\r\n","/**\r\n * Pan with throw momentum\r\n * Used to add the option to pan in a container with\r\n * throw momentum ease out functionaly.\r\n *\r\n * @author Daniel Kvistgaard <dkvistgaard@vertic.com>\r\n */\r\n\r\nconst Hammer = () => import('hammerjs');\r\n\r\nconst defaults = {\r\n childSelector: null,\r\n\r\n bpMaxSize: false,\r\n bpMinSize: false,\r\n};\r\n\r\nclass PanMomentum {\r\n constructor(el, options) {\r\n this.options = { ...defaults, ...options };\r\n\r\n if (!el) {\r\n return;\r\n }\r\n\r\n this.el = el instanceof HTMLElement ? el : document.querySelector(el);\r\n this.hammerManager = null;\r\n\r\n const { userAgent } = window.navigator;\r\n this.isIE = userAgent.indexOf('MSIE ') >= 0 || userAgent.indexOf('Trident/') >= 0;\r\n\r\n window.addEventListener('resize', this.resize.bind(this), false);\r\n\r\n this.translateX = 0;\r\n\r\n this.calcSites();\r\n this.prepare();\r\n\r\n this.setupOrBreak();\r\n }\r\n\r\n resize() {\r\n this.calcSites();\r\n this.setupOrBreak();\r\n }\r\n\r\n setupOrBreak() {\r\n if (this.minTranslate !== this.maxTranslate) {\r\n if (\r\n (this.options.bpMaxSize && App.mq[this.options.bpMaxSize]) ||\r\n (this.options.bpMinSize && App.mq[this.options.bpMinSize])\r\n ) {\r\n const maxMin = this.options.bpMaxSize ? 'max' : 'min';\r\n const size = this.options.bpMaxSize ? App.mq[this.options.bpMaxSize] - 1 : App.mq[this.options.bpMinSize];\r\n\r\n if (Modernizr.mq(`(${maxMin}-width: ${size}px)`)) {\r\n this.setup();\r\n } else {\r\n this.break(true);\r\n }\r\n } else {\r\n this.setup();\r\n }\r\n } else {\r\n this.break(true);\r\n }\r\n }\r\n\r\n prepare() {\r\n // Disable drag to better enable HammerJS panning\r\n const disableElems = this.el.querySelectorAll('a, img');\r\n [].forEach.call(disableElems, (elem) => {\r\n elem.setAttribute('draggable', false);\r\n elem.setAttribute('ondragstart', 'return false;');\r\n });\r\n\r\n // Preventing click if the scroll is animating.\r\n // This prevents native clicks on slides after panning, as HammerJS\r\n // wouldn't prevent the native click on the end of panning.\r\n this.el.addEventListener('click', (e) => {\r\n if (this.panning) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n });\r\n }\r\n\r\n calcSites() {\r\n let innerWidth = 0;\r\n const children = this.options.childSelector ? this.el.querySelectorAll(this.options.childSelector) : false;\r\n\r\n if (children?.length) {\r\n [].forEach.call(children, (child) => {\r\n const childStyles = window.getComputedStyle(child, false);\r\n const marginLeft = parseInt(childStyles.getPropertyValue('margin-left'), 10);\r\n const marginRight = parseInt(childStyles.getPropertyValue('margin-right'), 10);\r\n const childWidth = child.offsetWidth + marginLeft + marginRight;\r\n\r\n innerWidth += childWidth;\r\n });\r\n } else {\r\n innerWidth = this.el.offsetWidth;\r\n }\r\n\r\n const parent = this.el.parentNode;\r\n const parentStyles = window.getComputedStyle(parent, false);\r\n const parentPaddingLeft = parseInt(parentStyles.getPropertyValue('padding-left'), 10);\r\n const parentPaddingRight = parseInt(parentStyles.getPropertyValue('padding-right'), 10);\r\n const parentInnerWidth = parent.offsetWidth - parentPaddingLeft - parentPaddingRight;\r\n\r\n this.innerWidth = innerWidth;\r\n this.parentInnerWidth = parentInnerWidth;\r\n this.minTranslate = Math.min(0, (innerWidth - parentInnerWidth) * -1);\r\n this.maxTranslate = 0;\r\n }\r\n\r\n setup() {\r\n if (this.scrollActive) {\r\n if (this.options.childSelector) {\r\n this.centerActiveChild();\r\n } else {\r\n this.checkPosition(false);\r\n }\r\n\r\n return;\r\n }\r\n\r\n this.scrollActive = true;\r\n\r\n this.el.parentNode.classList.remove('no-fade-outs');\r\n this.el.parentNode.classList.add('is-in-start');\r\n\r\n // Set up HammerJS\r\n if (typeof window !== 'undefined') {\r\n Hammer().then((HammerModule) => {\r\n const HammerDefaultModule = HammerModule.default;\r\n this.hammerManager = new HammerDefaultModule(this.el, {\r\n touchAction: 'pan-y',\r\n domEvents: false,\r\n });\r\n this.hammerManager.add(\r\n new HammerDefaultModule.Pan({\r\n threshold: 0,\r\n pointers: 0,\r\n })\r\n );\r\n let startTranslateX = null;\r\n\r\n // HammerJS panstart event listener\r\n this.hammerManager.on('panstart', (e) => {\r\n this.panning = true;\r\n startTranslateX = PanMomentum.getTranslateX(this.el) + e.deltaX;\r\n });\r\n\r\n // HammerJS pan event listener\r\n this.hammerManager.on('pan', (e) => {\r\n if (e.additionalEvent === 'panup' || e.additionalEvent === 'pandown' || e.velocityX === 0) {\r\n if (e.isFinal) {\r\n startTranslateX = null;\r\n this.checkPosition(false, e);\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Apply transformation\r\n const newTranslateX = startTranslateX + e.deltaX;\r\n this.el.style.transition = 'none';\r\n this.el.style.transform = this.isIE\r\n ? `translate(${newTranslateX}px, 0)`\r\n : `translate3d(${newTranslateX}px, 0, 0)`;\r\n\r\n if (newTranslateX > this.minTranslate) {\r\n this.el.parentNode.classList.remove('is-in-end');\r\n }\r\n if (newTranslateX < this.maxTranslate) {\r\n this.el.parentNode.classList.remove('is-in-start');\r\n }\r\n\r\n // Snap to slide when done\r\n if (e.isFinal) {\r\n startTranslateX = null;\r\n\r\n this.checkPosition(newTranslateX, e);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n break(force) {\r\n if (!this.scrollActive && force !== true) {\r\n return;\r\n }\r\n\r\n this.scrollActive = false;\r\n\r\n this.el.parentNode.classList.add('no-fade-outs');\r\n this.el.parentNode.classList.remove('is-in-end');\r\n this.el.parentNode.classList.remove('is-in-start');\r\n\r\n this.el.style.transition = 'none';\r\n this.el.style.transform = '';\r\n\r\n if (this.hammerManager) {\r\n this.hammerManager.destroy();\r\n }\r\n }\r\n\r\n checkPosition(translateX, e) {\r\n if (!this.el) {\r\n return;\r\n }\r\n\r\n const currentTranslateX = PanMomentum.getTranslateX(this.el);\r\n const newTranslateX = translateX === 'reset' ? 0 : translateX || currentTranslateX;\r\n\r\n let momentumTranslateX = e ? newTranslateX + e.deltaX * Math.abs(e.velocityX) : newTranslateX;\r\n let transitionDuration = e ? 175 * Math.abs(e.velocityX) : 400;\r\n\r\n this.el.parentNode.classList.remove('is-in-end');\r\n this.el.parentNode.classList.remove('is-in-start');\r\n\r\n if (momentumTranslateX <= this.minTranslate) {\r\n momentumTranslateX = this.minTranslate;\r\n transitionDuration = 400;\r\n this.el.parentNode.classList.add('is-in-end');\r\n } else if (momentumTranslateX >= this.maxTranslate) {\r\n momentumTranslateX = this.maxTranslate;\r\n transitionDuration = 400;\r\n this.el.parentNode.classList.add('is-in-start');\r\n }\r\n\r\n if (momentumTranslateX !== currentTranslateX) {\r\n this.el.style.transition = '';\r\n this.el.style.transitionDuration = `${transitionDuration}ms`;\r\n this.el.style.transform = this.isIE\r\n ? `translate(${momentumTranslateX}px, 0)`\r\n : `translate3d(${momentumTranslateX}px, 0, 0)`;\r\n }\r\n\r\n this.translateX = momentumTranslateX;\r\n\r\n setTimeout(() => {\r\n this.panning = false;\r\n }, 0);\r\n }\r\n\r\n centerActiveChild() {\r\n if (!this.options.childSelector) {\r\n return;\r\n }\r\n\r\n const activeChild = this.el.querySelector(\r\n `${this.options.childSelector}.${this.options.activeChildClassName ?? 'is-active'}`\r\n );\r\n\r\n if (!activeChild) {\r\n return;\r\n }\r\n\r\n const activeOffset = activeChild.offsetLeft;\r\n const activeCenterPos = activeOffset + activeChild.offsetWidth / 2 - this.parentInnerWidth / 2;\r\n\r\n this.checkPosition(activeCenterPos * -1, undefined);\r\n }\r\n\r\n isAtStart() {\r\n return this.translateX === 0;\r\n }\r\n\r\n static getTranslateX(el) {\r\n const { transform } = el.style;\r\n const transformSplitted = transform ? transform.split('(')[1].split(',') : [0];\r\n\r\n return parseFloat(transformSplitted[0]);\r\n }\r\n}\r\n\r\nexport default PanMomentum;\r\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(e);\n for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (e.includes(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };"],"names":["getButtonContent","_ref","iconName","svg","title","iconClassName","customBtnTextClassName","React","className","suppressHydrationWarning","dangerouslySetInnerHTML","__html","undefined","_ref2","useGatedWrapper","useButtonWithoutIcon","isWhiteIcon","props","_objectWithoutProperties","_excluded","hasContent","buttonContent","_objectSpread","file","attributes","target","href","isFileGated","link","fileTitle","relationship","trim","length","fileAnchor","_extends","tidyStr","cssClass","extensions","documentDataObject","trackingLabel","fileType","fileCategory","downloadType","fileDataTarget","style","cssStyle","gatedContainerClassName","isButtonStyleDisabled","useButtonStyle","type","onClick","Button","Image","componentName","src","sources","name","loading","alt","sizes","imageRef","imgAttributes","imageClassNames","classNames","styles","srcSet","getSrcSet","ref","Object","keys","map","key","source","resolution","screenSizes","filter","v","join","breakpoints","isMobile","global","Modernizr","mq","App","tablet","isTablet","desktop","Pagination","activeTabIndex","tabs","onClickArrow","prepTabs","useIdArray","onClickArrowPrev","e","onClickArrowNext","role","onKeyDown","event","tabIndex","icon","ArrowLeftIcon","label","ArrowRightIcon","tab","index","_id","TabList","isHiddenClass","hasPaginationClass","activeTabRef","indicatorRef","onClickTab","hasScroll","tabScrollChildSelector","tabScrollBp","useRef","pm","childSelector","isScrollable","_selectTabIfAlreadyAnchorProvider","async","window","location","hash","decodeURIComponent","replace","current","querySelector","CustomEvent","bubbles","cancelable","document","createEvent","initCustomEvent","dispatchEvent","default","animate","easing","useEffect","PanMomentum","bpMinSize","activeChildClassName","callback","centerActiveChild","addEventListener","removeEventListener","hasChangeFunc","setTimeout","dataContentOverlay","Tabs","content","TabsBlock","deepLinkId","header","backgroundStyle","hasScrollClass","hasAnchorId","hasAnchorIdClass","hasPagination","isSticky","triggerResize","contentScrollable","intervalOptions","setActiveTabIndex","useState","resizeTimeout","setResizeTimeout","offsetData","setOffsetData","tabNavOffset","origOffsetY","isStickyClass","activeTabIndexRef","changeTabInterval","tabsBlockRef","tabNavRef","tabContent","rootSelector","currentPm","checkPosition","contentSelector","onResize","values","forEach","p","isAtStart","contentElem","clearInterval","setInterval","omitSelectors","timeout","placeIndicator","instant","transition","activeTab","activeTabStyles","getComputedStyle","activeTabPaddingLeft","parseInt","getPropertyValue","activeTabPaddingRight","activeTabWidth","offsetWidth","activeTabOffset","offsetLeft","transform","width","currentResizeTimeout","clearTimeout","bind","checkScroll","tabNav","currentOffsetData","scrollY","scrollTop","newOffsetData","offset","getBoundingClientRect","top","stickyClassName","documentElement","clientTop","onResizeFunc","checkScrollFunc","capture","passive","resizeEvent","Event","initEvent","tabsExtended","useMemo","isContentActive","id","container","currentLocation","split","history","replaceState","headerEl","headerHeight","offsetHeight","scrollTo","scrollX","newActiveTabIndex","preventDefault","Select","selectedIndex","options","onChange","option","height","viewBox","d","checkVisibility","elem","getClientRects","Module3dPoint","isOpen","xCoordinate","yCoordinate","pointNumber","labelToLeft","reverseInformationPosition","brandClass","brandLogo","bodyText","hasButton","button","handleOpenActivePoint","handleCloseActivePoint","containerRef","isContentLeft","setIsContentLeft","hasSiblingsCollision","setHasSiblingsCollision","isTop","setIsTop","labelRef","contentRef","boxCoords","left","right","bottom","updateBoxCoords","params","useCallback","containerRect","contentRect","Math","abs","nextLabel","Number","currLabelRect","nextLabelRect","x","coordinates","showContentOnLeft","showLabelOnLeft","labelRect","onMouseEnter","onMouseLeave","stopPropagation","Module3DItem","tabNumber","tabName","points","hideInfoContent","altName","backgroundImage","altText","infoContent","activePoint","setActivePoint","showPoints","setShowPoints","showInfoContent","setShowInfoContent","showSwipeInstruction","setShowSwipeInstruction","itemRef","innerRef","imgRef","scrollImageIfNeeded","arguments","targetX","margin","behavior","windowWidth","innerWidth","imageWidth","clientWidth","scrollPosition","imgElement","sortedPoints","slice","sort","a","b","onTouchMove","UsageDragTouch","fill","point","pointIndex","image","Module3D","heading","subheading","tabsBlock","enableAutoScroll","mobile","desktopLarge","defaults","bpMaxSize","constructor","el","this","HTMLElement","hammerManager","userAgent","navigator","isIE","indexOf","resize","translateX","calcSites","prepare","setupOrBreak","minTranslate","maxTranslate","maxMin","size","setup","break","disableElems","querySelectorAll","call","setAttribute","panning","children","child","childStyles","marginLeft","marginRight","childWidth","parent","parentNode","parentStyles","parentPaddingLeft","parentPaddingRight","parentInnerWidth","min","scrollActive","classList","remove","add","then","HammerModule","HammerDefaultModule","touchAction","domEvents","Pan","threshold","pointers","startTranslateX","on","getTranslateX","deltaX","additionalEvent","velocityX","isFinal","newTranslateX","force","destroy","currentTranslateX","momentumTranslateX","transitionDuration","activeChild","activeCenterPos","transformSplitted","parseFloat","hasOwn","hasOwnProperty","classes","i","arg","appendClass","parseValue","Array","isArray","apply","toString","prototype","includes","value","newClass","module","exports","t","o","r","getOwnPropertySymbols","s","propertyIsEnumerable","_objectWithoutPropertiesLoose","n"],"sourceRoot":""}