{"version":3,"file":"scripts/chunks/base-organisms.90bbc732acfd94d18e35.mjs","mappings":"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","sources":["webpack://rockworld/./app/assets/images/svg/close.svg","webpack://rockworld/./app/components/atoms/icons/VideoIcon.tsx","webpack://rockworld/./app/components/molecules/AjaxList/CompareProductButton.tsx","webpack://rockworld/./app/components/molecules/AjaxList/FigureChildren.tsx","webpack://rockworld/./app/components/molecules/AjaxList/WrappedVideoButton.tsx","webpack://rockworld/./app/components/molecules/MediaFile/MediaFile.tsx","webpack://rockworld/./app/components/molecules/PrimaryButton/PrimaryButton.tsx","webpack://rockworld/./app/components/atoms/icons/ScaleIcon.tsx","webpack://rockworld/./app/components/molecules/ScaleImageToFullScreenButton/ScaleImageToFullScreenButton.tsx","webpack://rockworld/./app/components/molecules/ScaleImageToFullScreenButton/index.ts","webpack://rockworld/./app/components/molecules/SecondaryButton/SecondaryButton.tsx","webpack://rockworld/./app/components/molecules/VideoButton/VideoButton.tsx","webpack://rockworld/./app/components/organisms/BaseCard/BaseCardLink.tsx","webpack://rockworld/./app/components/organisms/BaseCard/BaseCardContentWrapper.tsx","webpack://rockworld/./app/components/organisms/BaseCard/BaseCard.module.scss","webpack://rockworld/./app/components/organisms/BaseCard/BaseCard.tsx","webpack://rockworld/./app/components/organisms/O95-ProductCard/ProductCard.module.scss","webpack://rockworld/./app/components/organisms/O95-ProductCard/ProductCard.tsx","webpack://rockworld/./app/scripts/core/compiled-templates/rockworld/compare-products-collector-item-template.js","webpack://rockworld/./app/components/molecules/AjaxList/AjaxList.tsx","webpack://rockworld/./app/components/molecules/AjaxList/template/EventDetailRow.tsx","webpack://rockworld/./app/components/molecules/AjaxList/template/FilteredAdviceFeed.tsx","webpack://rockworld/./app/components/molecules/AjaxList/template/FilteredBlogPost.tsx","webpack://rockworld/./app/components/molecules/AjaxList/template/FilteredFeed.tsx","webpack://rockworld/./app/components/molecules/AjaxList/template/FilteredJobList.tsx","webpack://rockworld/./app/components/molecules/AjaxList/template/FilteredLapinusCaseStudyFeed.tsx","webpack://rockworld/./app/components/molecules/AjaxList/template/FilteredMediaFeed.tsx","webpack://rockworld/./app/components/molecules/AjaxList/template/FilteredProducts.tsx","webpack://rockworld/./app/components/molecules/AjaxList/template/FilteredReportFeed.tsx","webpack://rockworld/./app/components/molecules/AjaxList/template/ProductFilter.tsx","webpack://rockworld/./app/components/molecules/AjaxList/template/ParafonSearchPageResult.tsx","webpack://rockworld/./app/scripts/core/views/ajax-list-view.ts","webpack://rockworld/./app/scripts/core/views/compare-products-collector.ts","webpack://rockworld/./app/scripts/core/views/gated-content-link.ts","webpack://rockworld/./app/scripts/core/views/hasAnchorId.ts","webpack://rockworld/./app/scripts/core/views/key-codes.ts","webpack://rockworld/./app/scripts/core/views/modal-multi-selector.ts","webpack://rockworld/./app/scripts/core/views/open-lang-selector.ts","webpack://rockworld/./app/scripts/core/views/open-multi-selector.ts","webpack://rockworld/./app/scripts/core/views/order-sample-edge-options.ts","webpack://rockworld/./app/scripts/core/views/parafon/O201-header-view.ts","webpack://rockworld/./app/scripts/core/views/parafon/O202-parafon-footer-view.ts","webpack://rockworld/./app/scripts/core/views/parafon/O204-benefits-accordion-block-view.ts","webpack://rockworld/./app/scripts/core/views/parafon/helpers.ts","webpack://rockworld/./app/scripts/core/views/parafon/parafon-btns-navigation.js","webpack://rockworld/./app/scripts/core/views/vanilla/elementsFactory.ts","webpack://rockworld/./app/scripts/framework/accordion.ts","webpack://rockworld/./app/scripts/framework/search.ts","webpack://rockworld/./app/scripts/framework/storage.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":["export default \"\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\";","import React, { FC, SVGProps } from 'react';\r\n\r\ntype Props = SVGProps;\r\n\r\nconst VideoIcon: FC = (props) => (\r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default VideoIcon;\r\n","import React, { FC } from 'react';\r\n\r\ntype CompareProductButton = {\r\n id: string;\r\n name: string;\r\n image: string;\r\n compareText: string;\r\n};\r\n\r\nexport const CompareProductButton: FC = ({ id, name, image, compareText }) => (\r\n \r\n \r\n {compareText}\r\n \r\n);\r\n","import ScaleImageToFullScreenButton from '@molecules/ScaleImageToFullScreenButton';\r\nimport { VideoButton } from '@molecules/VideoButton';\r\nimport React, { FC } from 'react';\r\n\r\ninterface FigureChildren extends VideoButton {\r\n fullscreenUrl: string;\r\n videoUrl: string;\r\n showScaleIcon: boolean;\r\n hasVideo: boolean;\r\n}\r\n\r\nexport const FigureChildren: FC = ({\r\n showScaleIcon,\r\n hasVideo,\r\n fullscreenUrl,\r\n videoUrl,\r\n videoTitleLinkedIn,\r\n videoTitleYouTube,\r\n youTubeUrl,\r\n}) => (\r\n <>\r\n {showScaleIcon && }\r\n {hasVideo && (\r\n \r\n )}\r\n \r\n);\r\n","import { VideoButton } from '@molecules/VideoButton';\r\nimport React, { FC } from 'react';\r\n\r\ninterface WrappedVideoButton extends VideoButton {\r\n videoText?: string;\r\n}\r\n\r\nexport const WrappedVideoButton: FC = ({\r\n videoUrl,\r\n videoTitle,\r\n videoText,\r\n videoTitleLinkedIn,\r\n videoTitleYouTube,\r\n youTubeUrl,\r\n}) => (\r\n <>\r\n
\r\n \r\n \r\n);\r\n","import { tidyStr } from '@utils/tidy-str';\r\nimport React, { FC } from 'react';\r\n\r\ninterface MediaFile {\r\n mobileSrcset: string;\r\n imageDescription: string;\r\n imageCssClass: string;\r\n imageDataSrc: string;\r\n contentName: string;\r\n contentDataSrc: string;\r\n isImage: boolean;\r\n isEps: boolean;\r\n isPdf: boolean;\r\n}\r\n\r\nconst MediaFile: FC = (props) => {\r\n const {\r\n mobileSrcset,\r\n imageDescription,\r\n imageCssClass,\r\n imageDataSrc,\r\n isImage,\r\n isEps,\r\n contentDataSrc,\r\n contentName,\r\n isPdf,\r\n } = props;\r\n\r\n return (\r\n <>\r\n {isImage && (\r\n <>\r\n \r\n {mobileSrcset !== null && (\r\n \r\n )}\r\n \r\n \r\n\r\n \r\n \r\n )}\r\n {isEps && {contentName}}\r\n {isPdf && {contentName}}\r\n \r\n );\r\n};\r\n\r\nMediaFile.displayName = 'MediaFile';\r\n\r\nexport { MediaFile };\r\n","import React, { CSSProperties } from 'react';\r\nimport Button from '@atoms/Button';\r\nimport { htmlAttributes } from 'app/consts';\r\n\r\nexport type PrimaryButton = Button & {\r\n title?: string;\r\n cssClass?: string;\r\n openThankYouPageInTheSamePage?: boolean;\r\n link?: string;\r\n openLinkInNewTab?: boolean;\r\n cssStyle?: CSSProperties;\r\n linksToVideo?: boolean;\r\n};\r\n\r\nexport const getDefaultButton = ({\r\n openLinkInNewTab,\r\n openThankYouPageInTheSamePage,\r\n cssClass,\r\n ...rest\r\n}: PrimaryButton) => (\r\n \r\n);\r\n\r\nexport const PrimaryButton = ({ openLinkInNewTab, openThankYouPageInTheSamePage, ...rest }: PrimaryButton) => {\r\n const title = rest.title ? rest.title.trim() : rest.title;\r\n\r\n if (rest.link && title) {\r\n return getDefaultButton({ ...rest, title, openLinkInNewTab, openThankYouPageInTheSamePage });\r\n }\r\n\r\n if (title || rest.linksToVideo) {\r\n return (\r\n
\r\n {title}\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n","import React, { FC, SVGProps } from 'react';\r\n\r\ntype Props = SVGProps;\r\n\r\nconst ScaleIcon: FC = (props) => (\r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default ScaleIcon;\r\n","import React, { FC } from 'react';\r\nimport ScaleIcon from '@atoms/icons/ScaleIcon';\r\n\r\ninterface ScaleImageToFullScreenButton {\r\n onClick?: () => void;\r\n fullscreenUrl?: string;\r\n}\r\n\r\nconst ScaleImageToFullScreenButton: FC = (props) => {\r\n const { onClick = () => null, fullscreenUrl } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nScaleImageToFullScreenButton.displayName = 'ScaleImageToFullScreenButton';\r\n\r\nexport { ScaleImageToFullScreenButton };\r\n","import { ScaleImageToFullScreenButton } from './ScaleImageToFullScreenButton';\r\n\r\nexport default ScaleImageToFullScreenButton;\r\n","import React from 'react';\r\nimport { getButtonContent } from '@atoms/Button/Button';\r\nimport { PrimaryButton } from '@molecules/PrimaryButton';\r\nimport { getDefaultButton } from '@molecules/PrimaryButton/PrimaryButton';\r\n\r\nexport type SecondaryButton = Exclude;\r\n\r\nexport const SecondaryButton = ({ openLinkInNewTab, openThankYouPageInTheSamePage, ...rest }: SecondaryButton) => {\r\n const title = rest.title ? rest.title.trim() : rest.title;\r\n\r\n if (rest.link) {\r\n return getDefaultButton({ ...rest, title, openLinkInNewTab, openThankYouPageInTheSamePage });\r\n }\r\n\r\n if (title) {\r\n return (\r\n
\r\n {getButtonContent({ ...rest, title })}\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n","import React, { forwardRef } from 'react';\r\nimport './VideoButton.scss';\r\nimport VideoIcon from '@atoms/icons/VideoIcon';\r\n\r\ninterface VideoButton {\r\n id?: string;\r\n videoUrl: string;\r\n videoTitle?: string;\r\n videoDescription?: string;\r\n videoImage?: string;\r\n videoUploadDate?: string;\r\n videoTitleYouTube?: string;\r\n videoTitleLinkedIn?: string;\r\n youTubeUrl?: string;\r\n embeddedCodeWithoutIframe?: string;\r\n hasEmbeddedMeta?: boolean;\r\n buttonText?: string;\r\n customClassName?: string;\r\n useButtonWithIcon?: boolean;\r\n}\r\n\r\nconst VideoButton: React.ForwardRefExoticComponent> = forwardRef<\r\n HTMLButtonElement,\r\n VideoButton\r\n>((props, ref) => {\r\n const {\r\n videoUrl,\r\n videoTitle,\r\n videoDescription,\r\n videoImage,\r\n videoUploadDate,\r\n videoTitleYouTube,\r\n videoTitleLinkedIn,\r\n youTubeUrl,\r\n hasEmbeddedMeta,\r\n embeddedCodeWithoutIframe,\r\n buttonText,\r\n id,\r\n customClassName,\r\n useButtonWithIcon = false,\r\n } = props;\r\n\r\n const seoData = () => {\r\n const data = {\r\n '@@context': 'https://schema.org',\r\n '@@type': 'VideoObject',\r\n name: videoTitle,\r\n description: videoDescription,\r\n contentUrl: videoUrl,\r\n thumbnailUrl: [videoImage],\r\n uploadDate: videoUploadDate,\r\n };\r\n return JSON.stringify(data);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {useButtonWithIcon ? (\r\n <>\r\n {buttonText}\r\n \r\n \r\n \r\n \r\n ) : (\r\n buttonText\r\n )}\r\n \r\n {hasEmbeddedMeta ? (\r\n \r\n ) : (\r\n videoUrl?.length > 0 && (\r\n \r\n )\r\n )}\r\n \r\n );\r\n});\r\n\r\nVideoButton.displayName = 'VideoButton';\r\n\r\nexport { VideoButton };\r\n","import React, { useMemo } from 'react';\r\nimport { AnyFile } from 'app/types';\r\nimport { Link } from '@molecules/Link';\r\nimport { FileDownloadLink } from '@molecules/FileDownloadLink';\r\n\r\nexport type BaseCardLink = {\r\n type: 'heading' | 'body';\r\n url: string;\r\n label: string;\r\n file: AnyFile;\r\n target: string;\r\n classNames: { gated: string; nonGated: string; nonFile: string };\r\n rel?: string;\r\n};\r\n\r\nexport const BaseCardLink = ({ file, url, classNames, label, target, type = 'body' }: BaseCardLink) => {\r\n const _label = type === 'heading' ? label : '';\r\n\r\n const relValue = useMemo(() => {\r\n let value = file?.relAttribute.split('=')[1];\r\n if (value) {\r\n value = value.replaceAll('\"', '');\r\n }\r\n\r\n return value;\r\n }, [file]);\r\n\r\n // dataAttrName -> data-attr-name\r\n const dataAttributes = useMemo(() => {\r\n const source = file || {};\r\n const obj: { [key: string]: string } = {};\r\n\r\n Object.keys(source)\r\n .filter((k) => k.startsWith('data'))\r\n .forEach((k) => {\r\n const key = k\r\n .split(/(?=[A-Z])/)\r\n .map((chunk) => chunk.toLocaleLowerCase())\r\n .join('-');\r\n obj[key] = source[k];\r\n });\r\n\r\n return obj;\r\n }, [file]);\r\n\r\n if (!file) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n const { gatedContent } = file;\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport const BaseCardContentWrapper = ({\r\n children,\r\n wrap,\r\n className,\r\n}: {\r\n wrap: boolean;\r\n children: JSX.Element | JSX.Element[];\r\n className: string;\r\n}) => (wrap ?
{children}
: children);\r\n","// extracted by mini-css-extract-plugin\nexport default {\"text-area\":\"text-area__OjZd2\",\"textArea\":\"text-area__OjZd2\",\"btn\":\"btn__I7g9x\",\"image-area\":\"image-area__Qwt2c\",\"imageArea\":\"image-area__Qwt2c\",\"image-area__image\":\"image-area__image__ZZxzZ\",\"imageAreaImage\":\"image-area__image__ZZxzZ\",\"label-list\":\"label-list__bIGVu\",\"labelList\":\"label-list__bIGVu\",\"card-heading\":\"card-heading__CTf_P\",\"cardHeading\":\"card-heading__CTf_P\",\"btn-wrap\":\"btn-wrap__EjpaK\",\"btnWrap\":\"btn-wrap__EjpaK\",\"divider\":\"divider__X6zS4\",\"label\":\"label__akTOu\",\"body-text-2\":\"body-text-2__pbV0w\",\"bodyText2\":\"body-text-2__pbV0w\",\"as-link\":\"as-link__cSeyB\",\"asLink\":\"as-link__cSeyB\",\"card-link\":\"card-link__CbhHM\",\"cardLink\":\"card-link__CbhHM\",\"card-stretched-link\":\"card-stretched-link__QvTxV\",\"cardStretchedLink\":\"card-stretched-link__QvTxV\",\"body\":\"body__kbsrK\"};","import React, { ReactElement } from 'react';\r\nimport Button from '@atoms/Button';\r\nimport { Image } from '@atoms/Image';\r\nimport { AnyFile } from 'app/types';\r\nimport { tidyStr } from '@utils/tidy-str';\r\nimport { screenSizes } from 'app/scripts/core/consts';\r\nimport { BaseCardLink } from './BaseCardLink';\r\nimport { BaseCardContentWrapper } from './BaseCardContentWrapper';\r\n\r\nimport styles from './BaseCard.module.scss';\r\n\r\nexport interface BaseCard {\r\n imageMaxWidth: string;\r\n url: string;\r\n target?: string;\r\n imageSize?: string;\r\n extensions: string;\r\n title: string;\r\n hasTitle: boolean;\r\n description: string;\r\n hasDescription: boolean;\r\n image: Image;\r\n hasImage: boolean;\r\n singleStacked: boolean;\r\n labels: string[];\r\n hasLabels: boolean;\r\n hasOverLay: boolean;\r\n overlay: 'overlay' | '';\r\n primaryBtn: Button;\r\n secondaryBtn: Button;\r\n brandLabel?: string;\r\n brandClass?: string;\r\n hasBrand: boolean;\r\n altText?: string;\r\n hideLabels: boolean;\r\n centerAligned: boolean;\r\n file?: AnyFile;\r\n isFullLink: boolean;\r\n isHiddenFromSearch: boolean;\r\n unwrap?: boolean;\r\n events?: string;\r\n labelDateString?: string;\r\n innerTextLabel?: string;\r\n rel?: string;\r\n figureChildren?: ReactElement;\r\n displayDate?: boolean;\r\n customBtnWrapChildren?: ReactElement;\r\n useBodyLink?: boolean;\r\n}\r\n\r\nexport const BaseCard = ({\r\n extensions,\r\n hasImage,\r\n overlay,\r\n imageMaxWidth,\r\n image,\r\n primaryBtn,\r\n secondaryBtn,\r\n centerAligned,\r\n singleStacked,\r\n hasLabels,\r\n hideLabels,\r\n labels,\r\n hasDescription,\r\n description,\r\n hasTitle,\r\n title,\r\n file,\r\n url,\r\n target,\r\n brandClass,\r\n hasBrand,\r\n brandLabel,\r\n unwrap,\r\n events,\r\n labelDateString,\r\n innerTextLabel,\r\n figureChildren,\r\n displayDate,\r\n customBtnWrapChildren,\r\n useBodyLink = true,\r\n}: BaseCard) => {\r\n const mobileWidth = 344; // px\r\n const splittedLabels = labels\r\n .flatMap((label) => (label ? label.split('|') : []))\r\n .map((splittedLabel) => splittedLabel.trim());\r\n\r\n const filteredSplittedLabels = splittedLabels.filter((label) => label !== '');\r\n\r\n return (\r\n \r\n {hasImage && (\r\n
\r\n
\r\n \r\n {figureChildren}\r\n
\r\n
\r\n )}\r\n
\r\n \r\n \r\n {hasLabels && !hideLabels && (\r\n
\r\n {filteredSplittedLabels.map((label) => (\r\n
\r\n {label}\r\n
\r\n ))}\r\n {displayDate &&
{labelDateString}
}\r\n
\r\n )}\r\n\r\n
\r\n {hasTitle && !!title && (\r\n

\r\n \r\n

\r\n )}\r\n {hasDescription && !!description && (\r\n

{description}

\r\n )}\r\n {innerTextLabel &&
{innerTextLabel}
}\r\n {events && typeof events === 'string' && (\r\n \r\n )}\r\n \r\n \r\n \r\n\r\n {(primaryBtn?.hasContent || secondaryBtn?.hasContent || customBtnWrapChildren) && (\r\n
\r\n {primaryBtn?.hasContent &&
\r\n )}\r\n \r\n\r\n {useBodyLink && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"O95-product-card\":\"O95-product-card__rJ6gY\",\"o95ProductCard\":\"O95-product-card__rJ6gY\",\"card\":\"card__pQ8Jo\",\"card-with-download\":\"card-with-download__iQDL8\",\"cardWithDownload\":\"card-with-download__iQDL8\",\"text-area\":\"text-area__Z6Kdt\",\"textArea\":\"text-area__Z6Kdt\",\"inner-card-content\":\"inner-card-content__e76uZ\",\"innerCardContent\":\"inner-card-content__e76uZ\",\"is-pointer\":\"is-pointer__QBzur\",\"isPointer\":\"is-pointer__QBzur\",\"label-list\":\"label-list__Y8gYH\",\"labelList\":\"label-list__Y8gYH\",\"image-area\":\"image-area__XZBqi\",\"imageArea\":\"image-area__XZBqi\",\"label\":\"label__dZR5m\",\"card-heading\":\"card-heading__jnK5s\",\"cardHeading\":\"card-heading__jnK5s\",\"product-card-details__item\":\"product-card-details__item__oGvSy\",\"productCardDetailsItem\":\"product-card-details__item__oGvSy\",\"product-card-details__item__title\":\"product-card-details__item__title__WBGow\",\"productCardDetailsItemTitle\":\"product-card-details__item__title__WBGow\",\"product-card-details__item__value\":\"product-card-details__item__value__cm0yt\",\"productCardDetailsItemValue\":\"product-card-details__item__value__cm0yt\",\"product-card-details__description\":\"product-card-details__description__iFHCb\",\"productCardDetailsDescription\":\"product-card-details__description__iFHCb\",\"btn-wrap\":\"btn-wrap__a4CNZ\",\"btnWrap\":\"btn-wrap__a4CNZ\",\"js-card-carousel\":\"js-card-carousel__ZelgA\",\"jsCardCarousel\":\"js-card-carousel__ZelgA\",\"inner-link\":\"inner-link__PKKrW\",\"innerLink\":\"inner-link__PKKrW\",\"file-download-link\":\"file-download-link__VLpem\",\"fileDownloadLink\":\"file-download-link__VLpem\",\"divider\":\"divider__MmiFp\",\"product-card-btn-wrap\":\"product-card-btn-wrap__OtxeV\",\"productCardBtnWrap\":\"product-card-btn-wrap__OtxeV\",\"btn\":\"btn__I6MqA\",\"checkbox-wrap\":\"checkbox-wrap__go7_y\",\"checkboxWrap\":\"checkbox-wrap__go7_y\"};","import React, { ReactElement, ReactNode } from 'react';\r\nimport { MediaFile } from '@molecules/MediaFile';\r\nimport { tidyStr } from '@utils/tidy-str';\r\nimport { SecondaryButton } from '@molecules/SecondaryButton';\r\n\r\nimport styles from './ProductCard.module.scss';\r\n\r\nexport interface ProductCard {\r\n deepLinkId: string;\r\n hasAnchorId: string;\r\n image: MediaFile;\r\n headline: string;\r\n labels: string[];\r\n linkText: string;\r\n link: string;\r\n openLinkInNewTab: boolean;\r\n bundleDetails: { [key: string]: string };\r\n secondaryButton: SecondaryButton;\r\n hideImages?: boolean;\r\n orderSampleButton?: ReactNode;\r\n useMediaFileImage?: boolean;\r\n cardExtensionCss?: string;\r\n useJsOrderSampleEdgeOptions?: boolean;\r\n onClickCard?: (e) => void;\r\n labelCssExtensions?: string;\r\n productCardBtnWrapChildren?: ReactElement;\r\n excerpt?: string;\r\n}\r\n\r\nexport const ProductCard = ({\r\n deepLinkId,\r\n hasAnchorId,\r\n bundleDetails,\r\n headline,\r\n image,\r\n labels,\r\n link,\r\n linkText,\r\n openLinkInNewTab,\r\n secondaryButton,\r\n hideImages,\r\n orderSampleButton,\r\n cardExtensionCss,\r\n useMediaFileImage = true,\r\n useJsOrderSampleEdgeOptions = false,\r\n onClickCard,\r\n labelCssExtensions,\r\n productCardBtnWrapChildren,\r\n excerpt,\r\n}: ProductCard) => (\r\n \r\n {image && !hideImages && useMediaFileImage && (\r\n
\r\n
\r\n \r\n
\r\n
\r\n )}\r\n {!useMediaFileImage && image && !hideImages && (\r\n
\r\n \r\n {image.imageDescription}\r\n \r\n
\r\n )}\r\n
\r\n \r\n {labels?.length > 0 && (\r\n
\r\n {labels.map((label) => (\r\n
\r\n {label}\r\n
\r\n ))}\r\n
\r\n )}\r\n\r\n
\r\n {headline &&

{headline}

}\r\n {bundleDetails && (\r\n
\r\n {Object.entries(bundleDetails).map(([key, value]) => (\r\n
\r\n
{key}
\r\n
{value}
\r\n
\r\n ))}\r\n
\r\n )}\r\n {excerpt &&
{excerpt}
}\r\n
\r\n
\r\n
\r\n {((linkText && link) || orderSampleButton) && (\r\n <>\r\n
\r\n {orderSampleButton}\r\n
\r\n \r\n {productCardBtnWrapChildren}\r\n
\r\n \r\n )}\r\n
\r\n
\r\n \r\n);\r\n","var Handlebars = require(\"handlebars\"); var template = Handlebars.template, templates = Handlebars.templates = Handlebars.templates || {};\ntemplates['compare-products-collector-item'] = template({\"1\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \" \"\n    + alias4(((helper = (helper = lookupProperty(helpers,\"productName\") || (depth0 != null ? lookupProperty(depth0,\"productName\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"productName\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":11,\"column\":41},\"end\":{\"line\":11,\"column\":56}}}) : helper)))\n    + \"\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"productImage\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":10,\"column\":6},\"end\":{\"line\":12,\"column\":13}}})) != null ? stack1 : \"\")\n + \"
\\r\\n
\\r\\n
\\r\\n
\"\n + ((stack1 = ((helper = (helper = lookupProperty(helpers,\"productName\") || (depth0 != null ? lookupProperty(depth0,\"productName\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"productName\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":16,\"column\":71},\"end\":{\"line\":16,\"column\":88}}}) : helper))) != null ? stack1 : \"\")\n + \"
\";\n},\"useData\":true});\n","import { PubSub, PubSubKeys } from '@utils/pubSub';\r\nimport React, { FC, useEffect, useState, useMemo, useRef, ReactElement } from 'react';\r\nimport objectFitImages from 'object-fit-images';\r\nimport { createRoot } from 'react-dom/client';\r\nimport {\r\n EventDetailRow,\r\n FilteredAdviceFeed,\r\n FilteredBlogPost,\r\n FilteredFeed,\r\n FilteredJobList,\r\n FilteredLapinusCaseStudyFeed,\r\n FilteredMediaFeed,\r\n FilteredProducts,\r\n FilteredReportFeed,\r\n ParafonSearchPageResult,\r\n ProductFilter,\r\n} from './template';\r\nimport {\r\n AjaxListModel,\r\n FetchOptionsType,\r\n HistoryStateObject,\r\n ItemContainers,\r\n ItemModel,\r\n MainCategories,\r\n RequestOptions,\r\n RequestOptionsType,\r\n ResponseFiltersType,\r\n ResponseType,\r\n URLParams,\r\n} from './models';\r\n\r\nconst classNames = {\r\n isHidden: 'is-hidden',\r\n isDisabled: 'is-disabled',\r\n isShow: 'is-shown',\r\n hasNoResults: 'has-no-results',\r\n isLoading: 'is-loading',\r\n};\r\nconst requestMethod = {\r\n post: 'POST',\r\n get: 'GET',\r\n};\r\nconst historyStateKey = 'ajaxListView';\r\nconst availableTemplates = {\r\n 'event-detail-row': EventDetailRow,\r\n 'filtered-advice-feed': FilteredAdviceFeed,\r\n 'filtered-blog-post': FilteredBlogPost,\r\n 'filtered-feed': FilteredFeed,\r\n 'filtered-job-list': FilteredJobList,\r\n 'filtered-lapinus-case-study-feed': FilteredLapinusCaseStudyFeed,\r\n 'filtered-media-feed': FilteredMediaFeed,\r\n 'filtered-products': FilteredProducts,\r\n 'filtered-report-feed': FilteredReportFeed,\r\n 'product-filter': ProductFilter,\r\n 'parafon-search-page-result': ParafonSearchPageResult,\r\n};\r\n\r\nconst AjaxList: FC = ({ el }) => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [templatesToAppend, setTemplatesToAppend] = useState([]);\r\n const [replacementViewTemplates, setReplacementViewTemplates] = useState([]);\r\n const [isReplacingComponents, setIsReplacingComponents] = useState(false);\r\n\r\n const itemTemplate = useMemo(() => {\r\n const templateEl = el.querySelector('.js-template');\r\n return templateEl.getAttribute('id');\r\n }, [el]);\r\n const itemContainer = useRef(null);\r\n const itemContainersRef = useRef([]);\r\n const fetchOptions = useRef({ pagenumber: 0 });\r\n const fetchBody = useRef<{ [key: string]: unknown }>({});\r\n const pageType = useMemo(() => el.getAttribute('data-pagetype'), [el]);\r\n const isJobList = useMemo(() => el.classList.contains('O9-job-list'), [el]);\r\n const listId = useMemo(() => el.getAttribute('data-list-id'), [el]);\r\n const isReportList = useMemo(() => el.classList.contains('is-report-list'), [el]);\r\n const isEventDetailRow = useMemo(() => el.classList.contains('O76-event-detail-row'), [el]);\r\n const isBlogPosts = useMemo(() => el.classList.contains('O19-8-filtered-blog-posts'), [el]);\r\n const isPageType = useMemo(() => el.classList.contains('data-endpoint-pagetype'), [el]);\r\n const isAdditionalFilters = useMemo(() => el.classList.contains('is-additional-filters'), [el]);\r\n const dataSelectedType = useMemo(() => el.getAttribute('data-selected-type'), [el]);\r\n const noResults = useMemo(() => el.querySelector('.no-results-box'), [el]);\r\n const fetchMethod = useMemo(() => {\r\n if (isPageType) {\r\n return requestMethod.post;\r\n }\r\n return (isJobList || listId) && !isEventDetailRow && !isBlogPosts ? requestMethod.get : requestMethod.post;\r\n }, [isPageType, isJobList, listId, isEventDetailRow, isBlogPosts]);\r\n\r\n const moreEndpoint = useMemo(() => {\r\n if (isPageType) {\r\n return 'api/pagetype/filtered';\r\n }\r\n if (isJobList) {\r\n return 'api/vacancies/filtered';\r\n }\r\n if (isBlogPosts) {\r\n return 'api/blog/filteredposts';\r\n }\r\n if (el.classList.contains('is-article')) {\r\n return 'api/article/filtered';\r\n }\r\n if (isAdditionalFilters) {\r\n return 'api/rockwool/product/filter';\r\n }\r\n if (pageType?.toLowerCase() === 'products') {\r\n return 'api/filter';\r\n }\r\n if (listId && !isEventDetailRow) {\r\n return isReportList ? 'api/report/filtered' : 'api/media/filtered';\r\n }\r\n\r\n return 'api/pagetype/filtered';\r\n }, [isPageType, isJobList, listId, isEventDetailRow, isBlogPosts, el, isAdditionalFilters, pageType]);\r\n\r\n const apiUrl = useMemo(\r\n () => (pageType?.toLowerCase() === 'products' ? window?.searchApi?.apiUrl || '/' : '/'),\r\n [pageType]\r\n );\r\n\r\n const initializeReactRootWithTemplates = (templates: ReactElement[]) => {\r\n const wrapperSpan = document.createElement('span');\r\n const root = createRoot(wrapperSpan);\r\n root.render(templates);\r\n return wrapperSpan;\r\n };\r\n\r\n useEffect(() => {\r\n if (itemContainer?.current && isReplacingComponents) {\r\n const wrapperSpan = initializeReactRootWithTemplates(replacementViewTemplates);\r\n requestAnimationFrame(() => {\r\n itemContainer.current.replaceChildren(...wrapperSpan.children);\r\n setIsReplacingComponents(false);\r\n setReplacementViewTemplates([]);\r\n handleMasonryUpdate(itemContainer.current);\r\n });\r\n }\r\n }, [replacementViewTemplates, itemContainer, isReplacingComponents]);\r\n\r\n useEffect(() => {\r\n if (templatesToAppend.length && itemContainer) {\r\n const wrapperSpan = initializeReactRootWithTemplates(templatesToAppend);\r\n requestAnimationFrame(() => {\r\n Array.from(wrapperSpan.children).forEach((child) => {\r\n itemContainer.current.appendChild(child);\r\n });\r\n setTemplatesToAppend([]);\r\n handleMasonryUpdate(itemContainer.current);\r\n });\r\n }\r\n }, [templatesToAppend, itemContainer]);\r\n\r\n const onClickMore = (e: Event) => {\r\n e.preventDefault();\r\n\r\n if (isLoading) {\r\n return;\r\n }\r\n\r\n getItems(false);\r\n };\r\n\r\n useEffect(() => {\r\n const loadMoreBtn = el.querySelector('.js-ajax-list__more');\r\n loadMoreBtn.addEventListener('click', onClickMore);\r\n\r\n return () => {\r\n loadMoreBtn.removeEventListener('click', onClickMore);\r\n };\r\n }, [el, onClickMore]);\r\n\r\n const getListIdKey = () => {\r\n // Return the list ID as a key, if it is not null or empty.\r\n if (listId) {\r\n return listId + dataSelectedType;\r\n }\r\n // Return the index of the list element as a key, if no valid list ID was given.\r\n const listElements = [...document.getElementsByClassName('js-ajax-list')];\r\n const listIndex = listElements.indexOf(el);\r\n return `list-index-${listIndex}`;\r\n };\r\n\r\n const getHistoryState = () => {\r\n // Get the ajax list view state from history.\r\n const state = window.history.state || {};\r\n const ajaxListViewState = state[historyStateKey] || {};\r\n\r\n // Get the history for this specific list.\r\n const listIdKey = getListIdKey(); // Get a valid list ID key.\r\n const specificListState = ajaxListViewState[listIdKey] || {}; // Get state for this particular list.\r\n\r\n return {\r\n ...specificListState,\r\n };\r\n };\r\n\r\n const checkEmptyLabels = () => {\r\n const labels = itemContainer?.current?.parentNode?.querySelectorAll('.label');\r\n labels?.forEach((label) => {\r\n if (label.innerText === '') {\r\n label.style.display = 'none';\r\n }\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n checkEmptyLabels();\r\n }, [itemContainer]);\r\n\r\n const onChangeSelect = (e: Event) => {\r\n const target = e.currentTarget;\r\n\r\n if (target instanceof HTMLSelectElement) {\r\n handleSelectDimming(target);\r\n getItems(true);\r\n }\r\n };\r\n\r\n const dispatchEvent = (eventName: string, element: HTMLElement, data?: object) => {\r\n let event = null;\r\n\r\n if (window.CustomEvent) {\r\n event = new CustomEvent(eventName, {\r\n detail: data || {},\r\n });\r\n } else {\r\n event = document.createEvent('CustomEvent');\r\n event.initCustomEvent(eventName, true, true, data || {});\r\n }\r\n\r\n element.dispatchEvent(event);\r\n };\r\n\r\n const checkIfMore = (response: ResponseType) => {\r\n const loadMoreBtn = el.querySelector('.js-ajax-list__more');\r\n const allItems = itemContainer.current.parentNode.querySelectorAll('.card');\r\n\r\n if (!response || response.hasMore === false || allItems.length >= response.totalCount) {\r\n (loadMoreBtn.parentNode as HTMLElement).style.display = 'none';\r\n } else {\r\n (loadMoreBtn.parentNode as HTMLElement).style.display = 'block';\r\n }\r\n };\r\n\r\n const renderEmptyResult = () => {\r\n setReplacementViewTemplates([]);\r\n setIsReplacingComponents(true);\r\n itemContainer.current.style.display = 'none';\r\n (itemContainer.current.parentNode as HTMLElement).classList.add(classNames.hasNoResults);\r\n\r\n itemContainersRef?.current.forEach((item) => {\r\n item.el.innerHTML = '';\r\n item.el.style.display = 'none';\r\n });\r\n\r\n if (noResults) {\r\n setTimeout(() => {\r\n noResults.classList.add(classNames.isShow);\r\n }, 100);\r\n }\r\n };\r\n\r\n const fillTemplateData = (model: ItemModel) => {\r\n const templateData = { ...model };\r\n\r\n if (window.templateData[itemTemplate]) {\r\n const template = window.templateData[itemTemplate];\r\n templateData.dimensionTitle = template?.dimensionTitle || '';\r\n templateData.colorsTitle = template?.colorsTitle || '';\r\n templateData.edgesTitle = template?.edgesTitle || '';\r\n templateData.reactionToFireTitle = template?.reactionToFireTitle || '';\r\n templateData.viewProductTitle = template?.viewProductTitle || '';\r\n templateData.hideCompare = template?.hideCompare || '';\r\n templateData.compareText = template?.compareText || '';\r\n templateData.viewProduct = template?.viewProduct || templateData?.viewProductTitle;\r\n templateData.filterProperties = template?.filterProperties || [];\r\n templateData.viewPostText = template?.viewPostText || '';\r\n templateData.readMoreLabel = template?.readMoreLabel || '';\r\n templateData?.filterProperties?.forEach((item) => {\r\n item.value = templateData.properties[item.name];\r\n });\r\n }\r\n\r\n return templateData;\r\n };\r\n\r\n const renderItem = (model: ItemModel, index: number) => {\r\n if (!itemTemplate) return null;\r\n const templateProps = fillTemplateData(model);\r\n const Component = availableTemplates[itemTemplate];\r\n return ;\r\n };\r\n\r\n const replaceAndRenderItems = (itemsMarkup: ReactElement[]) => {\r\n if (itemContainersRef?.current?.length === 0) {\r\n setReplacementViewTemplates(itemsMarkup);\r\n setIsReplacingComponents(true);\r\n return;\r\n }\r\n\r\n let totalIndex = 0;\r\n let allContainersFilled = true;\r\n\r\n itemContainersRef?.current?.forEach((item) => {\r\n totalIndex += item.indexes.length;\r\n\r\n item.indexes.forEach((index) => {\r\n if (!itemsMarkup[index]) {\r\n allContainersFilled = false;\r\n }\r\n });\r\n\r\n handleMasonryUpdate(item.el);\r\n });\r\n\r\n if (allContainersFilled) {\r\n const remainingItems = itemsMarkup.slice(totalIndex);\r\n setReplacementViewTemplates(remainingItems);\r\n setIsReplacingComponents(true);\r\n } else {\r\n setReplacementViewTemplates([]);\r\n setIsReplacingComponents(true);\r\n }\r\n };\r\n\r\n const renderItems = (\r\n items: ItemModel[] | { list?: ItemModel[] } | { contents?: ItemModel[] },\r\n response: ResponseType,\r\n replaceAll: boolean\r\n ) => {\r\n if (!itemContainer) {\r\n return;\r\n }\r\n\r\n let list: ItemModel[] = [];\r\n\r\n if (Array.isArray(items)) {\r\n list = items;\r\n } else if ('list' in items) {\r\n list = items.list;\r\n } else if ('contents' in items) {\r\n list = items.contents;\r\n }\r\n\r\n if (list.length === 0) {\r\n renderEmptyResult();\r\n checkIfMore(response);\r\n return;\r\n }\r\n\r\n (itemContainer.current.parentNode as HTMLElement).classList.remove(classNames.hasNoResults);\r\n itemContainer.current.style.display = '';\r\n\r\n itemContainersRef?.current.forEach((item) => {\r\n item.el.style.display = '';\r\n });\r\n\r\n if (noResults) {\r\n noResults.classList.remove(classNames.isShow);\r\n }\r\n\r\n const itemsMarkup = list.map((item, index) => renderItem(item, index));\r\n\r\n if (!fetchOptions?.current || fetchOptions?.current?.pagenumber !== 0) {\r\n setTemplatesToAppend(itemsMarkup);\r\n }\r\n\r\n if (replaceAll) {\r\n replaceAndRenderItems(itemsMarkup);\r\n }\r\n\r\n PubSub.trigger(PubSubKeys.scrollRevealNewElements);\r\n\r\n checkEmptyLabels();\r\n checkIfMore(response);\r\n handleMasonryUpdate(itemContainer.current);\r\n };\r\n\r\n const updateJobFilterCounts = (filters: ResponseFiltersType) => {\r\n filters?.forEach((filter) => {\r\n const filterEl = document.querySelector(`[data-filter-key=${filter.key}]`);\r\n\r\n if (!filterEl) {\r\n return;\r\n }\r\n\r\n filter.filterBlockItems.forEach((value) => {\r\n const valueEl = filterEl.querySelector(`option[value='${value.value}']`);\r\n\r\n if (!valueEl) {\r\n return;\r\n }\r\n\r\n const items = filterEl.querySelector(`.select__option[data-value='${value.value}'] .items-count`);\r\n\r\n if (items) {\r\n items.innerText = value.count;\r\n }\r\n });\r\n });\r\n };\r\n\r\n const createHistoryStateObj = (data: HistoryStateObject) => {\r\n // Get the ajax list view state from history.\r\n const state = window.history.state || {};\r\n const ajaxListViewState = state[historyStateKey] || {};\r\n\r\n // Update the ajax list view state with the new state data.\r\n const listIdKey = getListIdKey(); // Get a valid list ID key.\r\n const updatedAjaxListViewState = {\r\n ...ajaxListViewState,\r\n [listIdKey]: {\r\n // Add new state data for this list.\r\n ...data,\r\n listIdKey, // Also save the list ID key, so it's easier to retrieve, when fetching.\r\n },\r\n };\r\n\r\n const stateObj = {\r\n ...(window.history.state || {}), // Existing history state.\r\n [historyStateKey]: {\r\n ...updatedAjaxListViewState, // Updated ajax list view state.\r\n },\r\n };\r\n return stateObj;\r\n };\r\n\r\n const addParameters = (params: string, value: string) => {\r\n let parameters = params;\r\n\r\n if (parameters.length > 0) {\r\n parameters += ',';\r\n }\r\n\r\n parameters += value;\r\n return parameters;\r\n };\r\n\r\n const getOptionKey = (selectName: string) =>\r\n fetchMethod === requestMethod.post ? selectName : selectName.charAt(0).toLowerCase() + selectName.slice(1);\r\n\r\n const createCombinedValuesObject = (select: HTMLSelectElement) => {\r\n let combinedValue = '';\r\n let combinedSubValue = '';\r\n\r\n [...select.options].forEach((option) => {\r\n if (option.selected) {\r\n if (option.classList.contains('subitem')) {\r\n combinedSubValue = addParameters(combinedSubValue, option.value);\r\n const optionParentElement = option.parentElement;\r\n\r\n if (\r\n optionParentElement instanceof HTMLOptionElement &&\r\n !combinedValue.includes(optionParentElement.label.toLowerCase())\r\n ) {\r\n combinedValue = addParameters(combinedValue, optionParentElement.label.toLowerCase());\r\n }\r\n } else {\r\n combinedValue = addParameters(combinedValue, option.value);\r\n }\r\n }\r\n });\r\n\r\n return { combinedValue, combinedSubValue };\r\n };\r\n\r\n const collectSelectedOptionsFromMultiselectFilters = (\r\n newFetchBodyState: { [key: string]: unknown },\r\n newFetchOpptions: FetchOptionsType\r\n ) => {\r\n const multiSelects = el.querySelectorAll('.js-multi-select');\r\n\r\n multiSelects.forEach((select: HTMLSelectElement) => {\r\n const selectName = select.getAttribute('name');\r\n\r\n if (!selectName) {\r\n return;\r\n }\r\n\r\n const optionKey = getOptionKey(selectName);\r\n const selectNameSubItem = select.getAttribute('data-sub-items');\r\n const optionSubKey = getOptionKey(selectNameSubItem);\r\n const { combinedValue, combinedSubValue } = createCombinedValuesObject(select);\r\n\r\n if (fetchMethod === requestMethod.post) {\r\n newFetchBodyState[optionKey] = combinedValue;\r\n newFetchBodyState[optionSubKey] = combinedSubValue;\r\n } else {\r\n newFetchOpptions[optionKey] = combinedValue;\r\n newFetchOpptions[optionSubKey] = combinedSubValue;\r\n }\r\n });\r\n };\r\n\r\n const collectSelectedOptionsFromSelectFilters = (\r\n newFetchBodyState: { [key: string]: unknown },\r\n newFetchOpptions: FetchOptionsType\r\n ) => {\r\n const selects = el.querySelectorAll('.js-select');\r\n\r\n selects.forEach((select) => {\r\n const selectName = select.getAttribute('name');\r\n\r\n if (selectName === '' || selectName === undefined) {\r\n return;\r\n }\r\n\r\n const optionKey = getOptionKey(selectName);\r\n const value = select.value && select.value !== 'null' && select.value !== '' ? select.value : 'all';\r\n\r\n if (fetchMethod === requestMethod.post) {\r\n newFetchBodyState[optionKey] = value;\r\n } else {\r\n newFetchOpptions[optionKey] = value;\r\n }\r\n });\r\n };\r\n\r\n const prepareFetchOptions = (allNew: boolean) => {\r\n const newFetchOpptions: FetchOptionsType = fetchOptions.current;\r\n const newFetchBodyState = {};\r\n\r\n if (allNew && fetchOptions?.current) {\r\n newFetchOpptions.pagenumber = 0;\r\n } else if (fetchOptions?.current) {\r\n newFetchOpptions.pagenumber += 1;\r\n }\r\n\r\n collectSelectedOptionsFromSelectFilters(newFetchBodyState, newFetchOpptions);\r\n collectSelectedOptionsFromMultiselectFilters(newFetchBodyState, newFetchOpptions);\r\n fetchOptions.current = newFetchOpptions;\r\n fetchBody.current = { ...fetchBody.current, ...newFetchBodyState };\r\n };\r\n\r\n const prepareRequestData = (options: RequestOptions, urlParams: URLParams) => {\r\n let data = options;\r\n urlParams.listIdSourcesContent = el?.dataset?.listIdSourcesContent?.toLowerCase() === 'true';\r\n let params = Object.keys(urlParams)\r\n .map((key) => `${key}=${urlParams[key]}`)\r\n .join('&');\r\n\r\n if (pageType?.toLowerCase() === 'products') {\r\n const categories = el.getAttribute('data-filter-category');\r\n\r\n const filterData = [];\r\n const additionalFiltersData = [];\r\n let mainCategories: MainCategories = [];\r\n\r\n if (categories) {\r\n filterData.push({\r\n field: 'productCategories',\r\n values: categories.split(','),\r\n logicOperator: 'OR',\r\n });\r\n mainCategories = {\r\n field: 'productCategories',\r\n values: categories.split(','),\r\n logicOperator: 'OR',\r\n };\r\n }\r\n\r\n Object.keys(data).forEach((key) => {\r\n if (data[key] === 'all') {\r\n return;\r\n }\r\n\r\n if (key === 'thickness' || key === 'rValue') {\r\n filterData.push({\r\n field: key,\r\n from: parseFloat(data[key] as string),\r\n to: parseFloat(data[key] as string),\r\n });\r\n } else if (isAdditionalFilters && key.startsWith('additional-filter')) {\r\n additionalFiltersData.push({\r\n field: key.replace('additional-filter-', ''),\r\n values: [data[key]],\r\n });\r\n } else {\r\n filterData.push({\r\n field: key,\r\n values: [data[key]],\r\n });\r\n }\r\n });\r\n\r\n const requireFacetFields = el.getAttribute('data-requireFacetFieldsOnProducts');\r\n let returnFields = el.getAttribute('data-returnFields');\r\n let facetFields = el.getAttribute('data-facetFields');\r\n let filterCategory = el.getAttribute('data-filterCategory');\r\n\r\n returnFields = returnFields == null ? window.returnFields : JSON.parse(returnFields);\r\n facetFields = facetFields == null ? window.facetFields : JSON.parse(facetFields);\r\n filterCategory = filterCategory || window.filterCategory;\r\n\r\n const showOnlyDeepestLevelSubcategories =\r\n el.dataset.showOnlyDeepestLevelSubcategories &&\r\n el.dataset.showOnlyDeepestLevelSubcategories.toLowerCase() === 'true';\r\n const showOnlyFirstLevelSubcategories =\r\n el.dataset.showOnlyFirstLevelSubcategories &&\r\n el.dataset.showOnlyFirstLevelSubcategories.toLowerCase() === 'true';\r\n\r\n data = {\r\n filters: filterData,\r\n additionalFilters: additionalFiltersData,\r\n count: urlParams.resultsPerPage,\r\n page: urlParams.pagenumber,\r\n languageCode: window.searchApi.languageCode || 'en',\r\n culture: window.searchApi.culture || 'en',\r\n site: window.searchApi.site,\r\n facetFields: facetFields || [],\r\n returnFields: returnFields || [],\r\n filterCategory: filterCategory || '',\r\n requireFacetFieldsOnDocument: requireFacetFields === 'True',\r\n mainCategories,\r\n showOnlyDeepestLevelSubcategories,\r\n showOnlyFirstLevelSubcategories,\r\n };\r\n\r\n params = '';\r\n }\r\n\r\n return { data, params };\r\n };\r\n\r\n const _fetch = (urlParams: URLParams, options: RequestOptions) => {\r\n const requestOptions: RequestOptionsType = {\r\n method: fetchMethod,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n },\r\n };\r\n let url = apiUrl + moreEndpoint;\r\n const { data, params } = prepareRequestData(options, urlParams);\r\n\r\n if (fetchMethod === requestMethod.post) {\r\n requestOptions.body = JSON.stringify(data);\r\n }\r\n\r\n if (params) {\r\n url += `?${params}`;\r\n }\r\n\r\n return fetch(url, requestOptions)\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error(`${response.status} - ${response.statusText} (url: ${response.url})`);\r\n }\r\n\r\n return response.json();\r\n })\r\n .catch((ex) => {\r\n console.warn('somethings wrong', ex);\r\n });\r\n };\r\n\r\n const setStyleForAllNew = (loaderOverlay: HTMLElement, loader: HTMLElement) => {\r\n if (loaderOverlay) {\r\n loaderOverlay.classList.remove(classNames.isHidden);\r\n } else {\r\n loader.classList.remove(classNames.isHidden);\r\n }\r\n\r\n (itemContainer?.current?.parentNode as HTMLElement)?.classList?.add('is-loader-list-loading');\r\n };\r\n\r\n const updateStylesBeforeFetch = (\r\n loader: HTMLElement,\r\n loadMoreBtn: HTMLElement,\r\n loaderOverlay: HTMLElement,\r\n allNew?: boolean\r\n ) => {\r\n if (loader && loadMoreBtn) {\r\n loadMoreBtn.classList.add(classNames.isLoading);\r\n\r\n if (allNew) {\r\n setStyleForAllNew(loaderOverlay, loader);\r\n } else {\r\n loader.classList.remove(classNames.isHidden);\r\n }\r\n } else if (loadMoreBtn) {\r\n loadMoreBtn.classList.add(classNames.isDisabled);\r\n }\r\n };\r\n\r\n // Replace data in history state.\r\n const createItemList = (isAllNewItems: boolean, fetchResponse: ResponseType) => {\r\n const newItems = fetchResponse ? fetchResponse.list || fetchResponse.contents || [] : [];\r\n\r\n // If all new, replace old list with new one.\r\n if (isAllNewItems) {\r\n return newItems;\r\n }\r\n // Else merge with previous list.\r\n const { itemListFull } = getHistoryState();\r\n\r\n if (itemListFull) {\r\n return [...itemListFull, ...newItems];\r\n }\r\n // If no prior list found, return null.\r\n return [...newItems];\r\n };\r\n\r\n const getItems = (allNew: boolean) => {\r\n if (isLoading) {\r\n return;\r\n }\r\n\r\n setIsLoading(true);\r\n\r\n const loader: HTMLElement = el.querySelector('.loader:not(.is-absolute-centered)');\r\n const loaderOverlay: HTMLElement = el.querySelector('.loader.is-absolute-centered');\r\n const loadMoreBtn: HTMLElement = el.querySelector('.js-ajax-list__more');\r\n\r\n updateStylesBeforeFetch(loader, loadMoreBtn, loaderOverlay, allNew);\r\n prepareFetchOptions(allNew);\r\n\r\n const itemFilters = fetchBody?.current;\r\n const itemFiltersMultiple = fetchOptions?.current;\r\n\r\n const promise = _fetch(fetchOptions?.current, fetchBody?.current);\r\n\r\n promise.then((response) => {\r\n setTimeout(() => {\r\n if (loader && loadMoreBtn) {\r\n loader.classList.add(classNames.isHidden);\r\n loadMoreBtn.classList.remove(classNames.isLoading);\r\n (itemContainer?.current?.parentNode as HTMLElement)?.classList?.remove('is-loader-list-loading');\r\n\r\n if (loaderOverlay) {\r\n loaderOverlay.classList.add(classNames.isHidden);\r\n }\r\n } else if (loadMoreBtn) {\r\n loadMoreBtn.classList.remove(classNames.isDisabled);\r\n }\r\n\r\n setIsLoading(false);\r\n\r\n // Create the item list to save.\r\n const itemList = createItemList(allNew, response);\r\n\r\n // Should replace all (when going back), if at any time allNew was true.\r\n // ReplaceAll from history stores if allNew has been true previously.\r\n const { replaceAll } = getHistoryState();\r\n const shouldReplaceAllOnHistory = !!replaceAll || !!allNew;\r\n // Create the history object to save.\r\n const stateData = createHistoryStateObj({\r\n itemListFull: itemList,\r\n itemFetchResponse: response,\r\n itemFilters: { ...itemFilters },\r\n itemFiltersMultiple: { ...itemFiltersMultiple },\r\n pagenumber: fetchOptions?.current?.pagenumber,\r\n replaceAll: shouldReplaceAllOnHistory,\r\n });\r\n window.history.replaceState(stateData, 'ItemFetchResponse');\r\n\r\n // Render items.\r\n renderItems(response ? response?.list || response?.contents || [] : [], response, allNew);\r\n\r\n if (isJobList) {\r\n updateJobFilterCounts(response.filters);\r\n }\r\n\r\n // Run IE / Edge objectFitImage to fix polyfills on newly loaded images\r\n objectFitImages('img', {\r\n watchMQ: true,\r\n });\r\n }, 500);\r\n });\r\n };\r\n\r\n const handleSelectDimming = (select: HTMLSelectElement) => {\r\n const selectEl = select.closest('.select');\r\n const { value } = select;\r\n const dimClass = 'is-dimmed';\r\n\r\n if (selectEl?.classList?.contains('js-dim-on-all-option')) {\r\n const container = selectEl.querySelector('.select__container');\r\n if (container) {\r\n if (value === 'all') {\r\n container.classList.add(dimClass);\r\n } else {\r\n container.classList.remove(dimClass);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const generateUpdatedView = (historyState: HistoryStateObject) => {\r\n // Setting change event listeners on filter selects.\r\n // This has to be setup after the new Select(), as that framework script\r\n // changes the markup and thereby the event listeners.\r\n const selects = el.querySelectorAll('.js-select, .js-multi-select');\r\n // Reading history state and reinstating last loaded items, if any.\r\n const { itemListFull, itemFetchResponse, itemFilters, itemFiltersMultiple, replaceAll, listIdKey } = historyState;\r\n if ((itemListFull && itemFetchResponse) || itemFilters || itemFiltersMultiple) {\r\n // Update selected filter(s).\r\n const filterElems = el.querySelectorAll('.filter');\r\n setTimeout(() => {\r\n // Dispatch event to button filters.\r\n filterElems.forEach((filterElem) => {\r\n dispatchEvent('update:selected-filters', filterElem, {\r\n itemFilters,\r\n itemFiltersMultiple,\r\n listIdKey,\r\n });\r\n });\r\n // Dispatch event to select filters.\r\n selects.forEach((select) => {\r\n dispatchEvent('update:selected-filters', select, { itemFilters, itemFiltersMultiple, listIdKey });\r\n });\r\n }, 0);\r\n\r\n // Render items.\r\n renderItems(itemListFull || [], itemFetchResponse, replaceAll);\r\n\r\n if (isJobList) {\r\n const responseFilters = itemFetchResponse ? itemFetchResponse.filters : undefined;\r\n updateJobFilterCounts(responseFilters);\r\n }\r\n\r\n // Run IE / Edge objectFitImage to fix polyfills on newly loaded images\r\n objectFitImages('img', {\r\n watchMQ: true,\r\n });\r\n } else if (dataSelectedType) {\r\n getItems(true);\r\n }\r\n\r\n setTimeout(() => {\r\n selects.forEach((select) => {\r\n handleSelectDimming(select);\r\n });\r\n }, 0);\r\n };\r\n\r\n const handleMasonryUpdate = (element: HTMLElement) => {\r\n if (element?.classList?.contains('js-card-masonry')) {\r\n dispatchEvent('update:masonry', element);\r\n }\r\n };\r\n\r\n const templateLocationAssignment = () => {\r\n // Locating item template\r\n const itemContainersElements = el.querySelectorAll('.js-ajax-list__container');\r\n itemContainer.current = itemContainersElements?.[0];\r\n\r\n if (itemContainersElements.length > 1) {\r\n itemContainersElements.forEach((container) => {\r\n const containerType = container.getAttribute('data-feed-container');\r\n\r\n if (containerType === 'default') {\r\n itemContainer.current = container;\r\n } else {\r\n const indexes = containerType.split(',').map((type) => parseInt(type, 10));\r\n itemContainersRef.current.push({\r\n el: container,\r\n indexes,\r\n });\r\n }\r\n });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const historyState = getHistoryState();\r\n\r\n if (\r\n window?.performance?.getEntriesByType('navigation')?.[0]?.type === 'reload' &&\r\n historyState.itemFilters !== undefined\r\n ) {\r\n Object.entries(historyState.itemFilters).forEach(([key]) => {\r\n historyState.itemFilters[key] = 'all';\r\n });\r\n historyState.itemListFull = historyState.itemFetchResponse;\r\n }\r\n\r\n const fetchOptionsPagenumber = historyState.pagenumber || 0;\r\n\r\n const fetchOptionsObj: FetchOptionsType = {\r\n pagenumber: fetchOptionsPagenumber,\r\n resultsPerPage: isJobList ? 10 : 6,\r\n languageCode: window.languageCode || 'en',\r\n };\r\n\r\n if (pageType?.toLowerCase() === 'products') {\r\n fetchOptionsObj.resultsPerPage = 8;\r\n }\r\n\r\n if (pageType) {\r\n fetchOptionsObj.type = pageType;\r\n }\r\n\r\n if (listId) {\r\n fetchOptionsObj.listid = listId;\r\n }\r\n\r\n if (dataSelectedType) {\r\n fetchOptionsObj.type = dataSelectedType;\r\n }\r\n\r\n fetchOptions.current = fetchOptionsObj;\r\n\r\n templateLocationAssignment();\r\n generateUpdatedView(historyState);\r\n }, []);\r\n\r\n useEffect(() => {\r\n // Setting change event listeners on filter selects.\r\n // This has to be setup after the new Select(), as that framework script\r\n // changes the markup and thereby the event listeners.\r\n const selects = el.querySelectorAll('.js-select, .js-multi-select');\r\n selects.forEach((select) => {\r\n select.addEventListener('change', onChangeSelect);\r\n });\r\n\r\n return () => {\r\n selects.forEach((select) => {\r\n select.removeEventListener('change', onChangeSelect);\r\n });\r\n };\r\n }, [onChangeSelect]);\r\n\r\n return null;\r\n};\r\n\r\nexport const renderAjaxListComponent = (el: HTMLElement) => {\r\n const ajaxList = document.createElement('span');\r\n ajaxList.id = 'ajaxList';\r\n el.appendChild(ajaxList);\r\n const root = createRoot(ajaxList);\r\n root.render();\r\n};\r\n","import ArrowIcon from '@atoms/icons/ArrowIcon';\r\nimport { BaseCard } from '@organisms/BaseCard';\r\nimport { Brand } from '@utils/brand';\r\nimport { htmlAttributes } from 'app/consts';\r\nimport React, { FC } from 'react';\r\n\r\ninterface EventDetailRow {\r\n internalUrl: string;\r\n inboundLinkTarget: string;\r\n imageUrl: string;\r\n altText: string;\r\n brand: Brand;\r\n metaLabel: string;\r\n metaTitle: string;\r\n metaDescription: string;\r\n dateString: string;\r\n metaCTA: string;\r\n imageClass: string;\r\n}\r\n\r\nconst EventDetailRow: FC = ({\r\n internalUrl,\r\n inboundLinkTarget,\r\n imageUrl,\r\n altText,\r\n brand,\r\n metaLabel,\r\n metaTitle,\r\n metaDescription,\r\n dateString,\r\n metaCTA,\r\n imageClass,\r\n}) => (\r\n ,\r\n iconName: 'arrow-right',\r\n extensions: 'btn btn--secondary is-small',\r\n relationship:\r\n inboundLinkTarget === htmlAttributes.targetValueBlank\r\n ? htmlAttributes.relAttributeWithNoopenerNoReferrerVaule\r\n : '',\r\n link: internalUrl,\r\n }}\r\n hasBrand={false}\r\n url={internalUrl}\r\n imageMaxWidth=\"\"\r\n target={inboundLinkTarget}\r\n hasImage={Boolean(imageUrl)}\r\n singleStacked={false}\r\n hasLabels\r\n hasOverLay={false}\r\n overlay=\"\"\r\n primaryBtn={undefined}\r\n hideLabels={false}\r\n centerAligned\r\n isFullLink={false}\r\n isHiddenFromSearch={false}\r\n innerTextLabel={dateString}\r\n displayDate\r\n />\r\n);\r\n\r\nexport { EventDetailRow };\r\n","import ArrowIcon from '@atoms/icons/ArrowIcon';\r\nimport DownloadIcon from '@atoms/icons/DownloadIcon';\r\nimport { BaseCard } from '@organisms/BaseCard';\r\nimport { htmlAttributes } from 'app/consts';\r\nimport React, { FC, useMemo } from 'react';\r\nimport { FigureChildren } from '../FigureChildren';\r\nimport { WrappedVideoButton } from '../WrappedVideoButton';\r\n\r\ninterface FilteredAdviceFeed {\r\n hasImage: boolean;\r\n hasVideo: boolean;\r\n thumbnailUrl: string;\r\n altText: string;\r\n isArticle: boolean;\r\n metaLabel: string;\r\n fullscreenUrl: string;\r\n videoUrl: string;\r\n mediaSize: string;\r\n mediaType: string;\r\n headline: string;\r\n bodyText: string;\r\n hasHeadline: boolean;\r\n hasText: boolean;\r\n videoTitle: string;\r\n mediaUrl: string;\r\n target: string;\r\n fileName: string;\r\n linkTarget: string;\r\n trackingLabel: string;\r\n linkText: string;\r\n linkUrl: string;\r\n extensions: string;\r\n videoTitleLinkedIn: string;\r\n videoTitleYouTube: string;\r\n youTubeUrl: string;\r\n}\r\n\r\nconst FilteredAdviceFeed: FC = ({\r\n hasImage,\r\n hasVideo,\r\n thumbnailUrl,\r\n altText,\r\n isArticle,\r\n metaLabel,\r\n fullscreenUrl,\r\n videoUrl,\r\n mediaSize,\r\n mediaType,\r\n headline,\r\n bodyText,\r\n hasHeadline,\r\n hasText,\r\n videoTitle,\r\n mediaUrl,\r\n target,\r\n fileName,\r\n linkTarget,\r\n trackingLabel,\r\n linkText,\r\n linkUrl,\r\n extensions,\r\n videoTitleLinkedIn,\r\n videoTitleYouTube,\r\n youTubeUrl,\r\n}) => {\r\n const secondaryBtnObj = useMemo(() => {\r\n if (hasVideo && !isArticle) {\r\n return null;\r\n }\r\n\r\n if (!hasVideo && !isArticle) {\r\n return {\r\n hasContent: true,\r\n title: linkText,\r\n svg: ,\r\n iconName: 'icon--download',\r\n extensions: 'download-link',\r\n fileTitle: fileName,\r\n trackingLabel,\r\n fileType: mediaType,\r\n fileCategory: 'download',\r\n file: true,\r\n isWhiteIcon: false,\r\n target,\r\n link: mediaUrl,\r\n relationship:\r\n target === htmlAttributes.targetValueBlank ? htmlAttributes.relAttributeWithNoopenerNoReferrerVaule : '',\r\n };\r\n }\r\n\r\n return {\r\n hasContent: true,\r\n title: linkText,\r\n svg: ,\r\n iconName: 'icon--arrow-right',\r\n extensions: 'download-link',\r\n isWhiteIcon: false,\r\n target: linkTarget,\r\n link: linkUrl,\r\n relationship:\r\n target === htmlAttributes.targetValueBlank ? htmlAttributes.relAttributeWithNoopenerNoReferrerVaule : '',\r\n };\r\n }, [hasVideo, isArticle]);\r\n\r\n return (\r\n \r\n )\r\n }\r\n useBodyLink={!hasVideo}\r\n brandClass=\"\"\r\n hasBrand={false}\r\n url={!isArticle && !hasVideo ? mediaUrl : linkUrl}\r\n imageMaxWidth=\"\"\r\n target={!isArticle && !hasVideo ? target : linkTarget}\r\n hasImage={hasImage || hasVideo}\r\n singleStacked={false}\r\n hasLabels\r\n hasOverLay={false}\r\n overlay=\"\"\r\n primaryBtn={undefined}\r\n hideLabels={false}\r\n centerAligned\r\n isFullLink={false}\r\n isHiddenFromSearch={false}\r\n rel={linkTarget === htmlAttributes.targetValueBlank ? htmlAttributes.relAttributeWithNoopenerNoReferrerVaule : ''}\r\n figureChildren={\r\n !isArticle && (\r\n \r\n )\r\n }\r\n file={\r\n !isArticle && !hasVideo\r\n ? {\r\n name: fileName,\r\n dataTrackingAction: 'click',\r\n trackingLabel,\r\n hrefAttribute: mediaUrl,\r\n gatedContent: false,\r\n fileType: mediaType,\r\n dataTrackingCategory: 'download',\r\n targetAttribute: target,\r\n dataTrackingLabel: trackingLabel,\r\n dataTrackingFileType: mediaType,\r\n relAttribute: `rel=${\r\n target === htmlAttributes.targetValueBlank ? htmlAttributes.relAttributeWithNoopenerNoReferrerVaule : ''\r\n }`,\r\n }\r\n : null\r\n }\r\n secondaryBtn={secondaryBtnObj}\r\n />\r\n );\r\n};\r\n\r\nexport { FilteredAdviceFeed };\r\n","import ArrowIcon from '@atoms/icons/ArrowIcon';\r\nimport { BaseCard } from '@organisms/BaseCard';\r\nimport { Brand } from '@utils/brand';\r\nimport React, { FC } from 'react';\r\n\r\ninterface FilteredBlogPost {\r\n internalUrl: string;\r\n imageUrl: string;\r\n brandClass: string;\r\n brand: Brand;\r\n readMoreLabel: string;\r\n metaTitle: string;\r\n metaDescription: string;\r\n dateString: string;\r\n topicLabels: string[];\r\n imageClass: string;\r\n}\r\n\r\nconst FilteredBlogPost: FC = ({\r\n internalUrl,\r\n imageUrl,\r\n brandClass,\r\n brand,\r\n readMoreLabel,\r\n metaTitle,\r\n metaDescription,\r\n dateString,\r\n topicLabels,\r\n imageClass,\r\n}) => (\r\n ,\r\n iconName: 'arrow-right',\r\n extensions: 'btn btn--secondary is-small',\r\n link: internalUrl,\r\n }}\r\n hasBrand\r\n brandClass={brandClass}\r\n brandLabel={brand}\r\n url={internalUrl}\r\n imageMaxWidth=\"\"\r\n hasImage={Boolean(imageUrl)}\r\n singleStacked={false}\r\n hasLabels\r\n hasOverLay={false}\r\n overlay=\"\"\r\n primaryBtn={undefined}\r\n hideLabels={false}\r\n centerAligned\r\n isFullLink={false}\r\n isHiddenFromSearch={false}\r\n displayDate\r\n />\r\n);\r\n\r\nexport { FilteredBlogPost };\r\n","import ArrowIcon from '@atoms/icons/ArrowIcon';\r\nimport { BaseCard } from '@organisms/BaseCard';\r\nimport { Brand } from '@utils/brand';\r\nimport { htmlAttributes } from 'app/consts';\r\nimport React, { FC } from 'react';\r\n\r\ninterface FilteredFeed {\r\n internalUrl: string;\r\n inboundLinkTarget: string;\r\n imageUrl: string;\r\n metaAltTextWithFallback: string;\r\n brand: Brand;\r\n metaLabel: string;\r\n metaTitle: string;\r\n metaDescription: string;\r\n dateString: string;\r\n metaCTA: string;\r\n displayDate: boolean;\r\n linkTarget: string;\r\n events: string;\r\n brandClass: string;\r\n imageClass: string;\r\n}\r\n\r\nconst FilteredFeed: FC = ({\r\n internalUrl,\r\n inboundLinkTarget,\r\n imageUrl,\r\n metaAltTextWithFallback,\r\n brand,\r\n metaLabel,\r\n metaTitle,\r\n metaDescription,\r\n dateString,\r\n metaCTA,\r\n displayDate,\r\n linkTarget,\r\n events,\r\n brandClass,\r\n imageClass,\r\n}) => (\r\n ,\r\n iconName: 'arrow-right',\r\n extensions: 'btn btn--secondary is-small',\r\n relationship:\r\n inboundLinkTarget === htmlAttributes.targetValueBlank\r\n ? htmlAttributes.relAttributeWithNoopenerNoReferrerVaule\r\n : '',\r\n link: internalUrl,\r\n target: linkTarget,\r\n }}\r\n hasBrand\r\n brandClass={brandClass}\r\n brandLabel={brand}\r\n url={internalUrl}\r\n imageMaxWidth=\"\"\r\n target={linkTarget}\r\n hasImage\r\n singleStacked={false}\r\n hasLabels\r\n hasOverLay={false}\r\n overlay=\"\"\r\n primaryBtn={undefined}\r\n hideLabels={false}\r\n centerAligned\r\n isFullLink={false}\r\n isHiddenFromSearch={false}\r\n events={events}\r\n displayDate={displayDate}\r\n />\r\n);\r\n\r\nexport { FilteredFeed };\r\n","import ArrowIcon from '@atoms/icons/ArrowIcon';\r\nimport { BaseCard } from '@organisms/BaseCard';\r\nimport { Brand } from '@utils/brand';\r\nimport { htmlAttributes } from 'app/consts';\r\nimport React, { FC } from 'react';\r\n\r\ninterface FilteredJobList {\r\n link: string;\r\n areaOfInterest: string;\r\n country: string;\r\n brand: Brand;\r\n title: string;\r\n viewPostText: string;\r\n linkTarget: string;\r\n}\r\n\r\nconst FilteredJobList: FC = ({\r\n link,\r\n areaOfInterest,\r\n country,\r\n brand,\r\n title,\r\n viewPostText,\r\n linkTarget,\r\n}) => (\r\n <>\r\n ,\r\n iconName: 'arrow-right',\r\n extensions: 'btn btn--secondary is-small',\r\n relationship:\r\n linkTarget === htmlAttributes.targetValueBlank ? htmlAttributes.relAttributeWithNoopenerNoReferrerVaule : '',\r\n link,\r\n target: linkTarget,\r\n }}\r\n hasBrand={false}\r\n brandClass=\"\"\r\n brandLabel={null}\r\n url={link}\r\n imageMaxWidth=\"\"\r\n target={linkTarget}\r\n hasImage={false}\r\n singleStacked\r\n hasLabels\r\n hasOverLay={false}\r\n overlay=\"\"\r\n primaryBtn={undefined}\r\n hideLabels={false}\r\n centerAligned={false}\r\n isFullLink={false}\r\n isHiddenFromSearch={false}\r\n />\r\n
\r\n \r\n);\r\n\r\nexport { FilteredJobList };\r\n","import ArrowIcon from '@atoms/icons/ArrowIcon';\r\nimport { BaseCard } from '@organisms/BaseCard';\r\nimport { Brand } from '@utils/brand';\r\nimport { htmlAttributes } from 'app/consts';\r\nimport React, { FC } from 'react';\r\n\r\ninterface FilteredLapinusCaseStudyFeed {\r\n internalUrl: string;\r\n inboundLinkTarget: string;\r\n imageUrl: string;\r\n brand: Brand;\r\n metaLabel: string;\r\n metaTitle: string;\r\n metaDescription: string;\r\n dateString: string;\r\n metaCTA: string;\r\n linkTarget: string;\r\n metaAltTextWithFallback: string;\r\n imageClass: string;\r\n displayDate: boolean;\r\n brandClass: string;\r\n}\r\n\r\nconst FilteredLapinusCaseStudyFeed: FC = ({\r\n internalUrl,\r\n inboundLinkTarget,\r\n imageUrl,\r\n linkTarget,\r\n brand,\r\n metaLabel,\r\n metaTitle,\r\n metaDescription,\r\n dateString,\r\n metaCTA,\r\n metaAltTextWithFallback,\r\n imageClass,\r\n displayDate,\r\n brandClass,\r\n}) => (\r\n ,\r\n iconName: 'arrow-right',\r\n extensions: 'btn btn--secondary is-small',\r\n link: internalUrl,\r\n target: linkTarget,\r\n relationship:\r\n inboundLinkTarget === htmlAttributes.targetValueBlank\r\n ? htmlAttributes.relAttributeWithNoopenerNoReferrerVaule\r\n : '',\r\n }}\r\n hasBrand\r\n brandClass={brandClass}\r\n brandLabel={brand}\r\n url={internalUrl}\r\n imageMaxWidth=\"\"\r\n target={linkTarget}\r\n hasImage\r\n singleStacked={false}\r\n hasLabels\r\n hasOverLay={false}\r\n overlay=\"\"\r\n primaryBtn={undefined}\r\n hideLabels={false}\r\n centerAligned={false}\r\n isFullLink={false}\r\n isHiddenFromSearch={false}\r\n displayDate={displayDate}\r\n />\r\n);\r\n\r\nexport { FilteredLapinusCaseStudyFeed };\r\n","import DownloadIcon from '@atoms/icons/DownloadIcon';\r\nimport { BaseCard } from '@organisms/BaseCard';\r\nimport { htmlAttributes } from 'app/consts';\r\nimport React, { FC, HTMLAttributeAnchorTarget } from 'react';\r\nimport { FigureChildren } from '../FigureChildren';\r\nimport { WrappedVideoButton } from '../WrappedVideoButton';\r\n\r\ninterface FilteredMediaFeed {\r\n extensions: string;\r\n thumbnailUrl: string;\r\n hasMedia: boolean;\r\n hasVideo: boolean;\r\n fullscreenUrl: string;\r\n videoUrl: string;\r\n mediaType: string;\r\n mediaSize: string;\r\n altText: string;\r\n headline: string;\r\n bodyText: string;\r\n hasHeadline: boolean;\r\n hasText: boolean;\r\n videoTitle: string;\r\n videoText: string;\r\n mediaUrl: string;\r\n linkText: string;\r\n fileName: string;\r\n target: HTMLAttributeAnchorTarget;\r\n trackingLabel: string;\r\n videoTitleLinkedIn: string;\r\n videoTitleYouTube: string;\r\n youTubeUrl: string;\r\n}\r\n\r\nconst FilteredMediaFeed: FC = ({\r\n extensions,\r\n thumbnailUrl,\r\n altText,\r\n hasMedia,\r\n hasVideo,\r\n fullscreenUrl,\r\n videoUrl,\r\n mediaType,\r\n mediaSize,\r\n headline,\r\n bodyText,\r\n hasHeadline,\r\n hasText,\r\n videoTitle,\r\n videoText,\r\n mediaUrl,\r\n linkText,\r\n fileName,\r\n target,\r\n trackingLabel,\r\n videoTitleLinkedIn,\r\n videoTitleYouTube,\r\n youTubeUrl,\r\n}) => (\r\n ,\r\n iconName: 'icon--download',\r\n extensions: 'download-link',\r\n fileTitle: fileName,\r\n trackingLabel,\r\n fileType: mediaType,\r\n fileCategory: 'download',\r\n file: true,\r\n isWhiteIcon: false,\r\n target,\r\n link: mediaUrl,\r\n relationship:\r\n target === htmlAttributes.targetValueBlank ? htmlAttributes.relAttributeWithNoopenerNoReferrerVaule : '',\r\n }\r\n }\r\n useBodyLink={!hasVideo}\r\n customBtnWrapChildren={\r\n hasVideo && (\r\n \r\n )\r\n }\r\n hasBrand={false}\r\n url={hasVideo ? null : mediaUrl}\r\n imageMaxWidth=\"\"\r\n target={target}\r\n hasImage={Boolean(thumbnailUrl)}\r\n singleStacked={false}\r\n hasLabels\r\n hasOverLay={false}\r\n overlay=\"\"\r\n primaryBtn={undefined}\r\n hideLabels={false}\r\n centerAligned\r\n isFullLink={false}\r\n isHiddenFromSearch={false}\r\n rel={target === htmlAttributes.targetValueBlank ? htmlAttributes.relAttributeWithNoopenerNoReferrerVaule : ''}\r\n figureChildren={\r\n \r\n }\r\n file={\r\n hasVideo\r\n ? null\r\n : {\r\n name: fileName,\r\n dataTrackingAction: 'click',\r\n trackingLabel,\r\n hrefAttribute: mediaUrl,\r\n gatedContent: false,\r\n fileType: mediaType,\r\n dataTrackingCategory: 'download',\r\n targetAttribute: target,\r\n dataTrackingLabel: trackingLabel,\r\n dataTrackingFileType: mediaType,\r\n relAttribute: `rel=${\r\n target === htmlAttributes.targetValueBlank ? htmlAttributes.relAttributeWithNoopenerNoReferrerVaule : ''\r\n }`,\r\n }\r\n }\r\n />\r\n);\r\n\r\nexport { FilteredMediaFeed };\r\n","import ArrowIcon from '@atoms/icons/ArrowIcon';\r\nimport { ProductCard } from '@organisms/O95-ProductCard';\r\nimport React, { FC, useMemo } from 'react';\r\nimport { CompareProductButton } from '../CompareProductButton';\r\n\r\ninterface FilteredProducts {\r\n image: string;\r\n name: string;\r\n productCategories: string;\r\n url: string;\r\n properties: { dimensions?: string; colors?: string; edges?: string; reactionToFire?: string };\r\n dimensionTitle: string;\r\n colorsTitle: string;\r\n edgesTitle: string;\r\n reactionToFireTitle: string;\r\n excerpt: string;\r\n viewProductTitle: string;\r\n pageType: 'RockfonProductSystem' | 'RockfonProductGrid';\r\n hideCompare: boolean;\r\n compareText: string;\r\n id: string;\r\n}\r\n\r\nconst FilteredProducts: FC = ({\r\n image,\r\n name,\r\n productCategories,\r\n url,\r\n properties,\r\n dimensionTitle,\r\n colorsTitle,\r\n edgesTitle,\r\n reactionToFireTitle,\r\n excerpt,\r\n viewProductTitle,\r\n pageType,\r\n hideCompare,\r\n compareText,\r\n id,\r\n}) => {\r\n const bundleDetails = useMemo(() => {\r\n const bundleDetailsObj = {};\r\n\r\n const { dimensions, colors, edges, reactionToFire } = properties;\r\n if (dimensions) {\r\n bundleDetailsObj[dimensionTitle] = dimensions;\r\n }\r\n if (colors) {\r\n bundleDetailsObj[colorsTitle] = colors;\r\n }\r\n if (edges) {\r\n bundleDetailsObj[edgesTitle] = edges;\r\n }\r\n if (reactionToFire) {\r\n bundleDetailsObj[reactionToFireTitle] = reactionToFire;\r\n }\r\n\r\n return bundleDetailsObj;\r\n }, [edgesTitle, dimensionTitle, colorsTitle, reactionToFireTitle, properties]);\r\n\r\n return (\r\n ,\r\n iconName: 'arrow-right',\r\n cssClass: 'btn btn--secondary is-small',\r\n link: url,\r\n }}\r\n cardExtensionCss=\"text-centered image\"\r\n labelCssExtensions=\"box-shadow text-centered image\"\r\n productCardBtnWrapChildren={\r\n pageType !== 'RockfonProductGrid' &&\r\n pageType !== 'RockfonProductSystem' &&\r\n hideCompare && \r\n }\r\n excerpt={excerpt}\r\n />\r\n );\r\n};\r\n\r\nexport { FilteredProducts };\r\n","import DownloadIcon from '@atoms/icons/DownloadIcon';\r\nimport { BaseCard } from '@organisms/BaseCard';\r\nimport { htmlAttributes } from 'app/consts';\r\nimport React, { FC } from 'react';\r\n\r\ninterface FilteredReportFeed {\r\n extensions: string;\r\n thumbnailUrl: string;\r\n altText: string;\r\n mediaSize: string;\r\n mediaType: string;\r\n headline: string;\r\n bodyText: string;\r\n hasHeadline: boolean;\r\n hasText: boolean;\r\n mediaUrl: string;\r\n target: string;\r\n fileName: string;\r\n trackingLabel: string;\r\n linkText: string;\r\n}\r\n\r\nconst FilteredReportFeed: FC = ({\r\n extensions,\r\n thumbnailUrl,\r\n altText,\r\n mediaSize,\r\n mediaType,\r\n headline,\r\n bodyText,\r\n hasHeadline,\r\n hasText,\r\n mediaUrl,\r\n target,\r\n fileName,\r\n trackingLabel,\r\n linkText,\r\n}) => (\r\n ,\r\n iconName: 'download',\r\n extensions: 'download-link',\r\n fileTitle: fileName,\r\n trackingLabel,\r\n fileType: mediaType,\r\n fileCategory: 'download',\r\n file: true,\r\n isWhiteIcon: false,\r\n target,\r\n link: mediaUrl,\r\n relationship:\r\n target === htmlAttributes.targetValueBlank ? htmlAttributes.relAttributeWithNoopenerNoReferrerVaule : '',\r\n }}\r\n hasBrand\r\n brandClass=\"\"\r\n brandLabel=\"\"\r\n url={mediaUrl}\r\n imageMaxWidth=\"\"\r\n target={target}\r\n hasImage\r\n singleStacked={false}\r\n hasLabels\r\n hasOverLay={false}\r\n overlay=\"\"\r\n primaryBtn={undefined}\r\n hideLabels={false}\r\n centerAligned\r\n isFullLink={false}\r\n isHiddenFromSearch={false}\r\n useBodyLink={false}\r\n file={{\r\n name: fileName,\r\n dataTrackingAction: 'click',\r\n trackingLabel,\r\n hrefAttribute: mediaUrl,\r\n gatedContent: false,\r\n fileType: mediaType,\r\n dataTrackingCategory: 'download',\r\n targetAttribute: target,\r\n dataTrackingLabel: trackingLabel,\r\n dataTrackingFileType: mediaType,\r\n relAttribute: `rel=${\r\n target === htmlAttributes.targetValueBlank ? htmlAttributes.relAttributeWithNoopenerNoReferrerVaule : ''\r\n }`,\r\n }}\r\n />\r\n);\r\n\r\nexport { FilteredReportFeed };\r\n","import ArrowIcon from '@atoms/icons/ArrowIcon';\r\nimport { ProductCard } from '@organisms/O95-ProductCard';\r\nimport React, { FC } from 'react';\r\nimport { CompareProductButton } from '../CompareProductButton';\r\n\r\ninterface ProductFilter {\r\n url: string;\r\n pageType: string;\r\n filterProperties: { value?: string; title?: string }[];\r\n name: string;\r\n image: string;\r\n productCategories: string;\r\n viewProduct: string;\r\n hideCompare: boolean;\r\n compareText: string;\r\n id: string;\r\n}\r\n\r\nconst ProductFilter: FC = ({\r\n url,\r\n image,\r\n name,\r\n productCategories,\r\n filterProperties,\r\n pageType,\r\n viewProduct,\r\n hideCompare,\r\n compareText,\r\n id,\r\n}) => {\r\n const bundleDetailsObj = {};\r\n filterProperties?.forEach(({ title, value }) => {\r\n if (value) {\r\n bundleDetailsObj[title] = value;\r\n }\r\n });\r\n\r\n return (\r\n ,\r\n iconName: 'arrow-right',\r\n cssClass: 'btn btn--secondary is-small',\r\n link: url,\r\n }}\r\n cardExtensionCss=\"text-centered image\"\r\n labelCssExtensions=\"box-shadow text-centered image\"\r\n productCardBtnWrapChildren={\r\n pageType !== 'RockfonProductGrid' &&\r\n pageType !== 'RockfonProductSystem' &&\r\n hideCompare && \r\n }\r\n />\r\n );\r\n};\r\n\r\nexport { ProductFilter };\r\n","import { htmlAttributes } from 'app/consts';\r\nimport React, { FC } from 'react';\r\n\r\ninterface ParafonSearchPageResult {\r\n url: string;\r\n pageType: string;\r\n goToPageText: string;\r\n name: string;\r\n location: string;\r\n excerpt: string;\r\n}\r\n\r\nconst ParafonSearchPageResult: FC = ({\r\n url,\r\n location,\r\n name,\r\n excerpt,\r\n goToPageText,\r\n pageType,\r\n}) => (\r\n \r\n
\r\n
{name}
\r\n

{excerpt}

\r\n {goToPageText}\r\n
\r\n
\r\n);\r\n\r\nexport { ParafonSearchPageResult };\r\n","import { renderAjaxListComponent } from '@molecules/AjaxList';\r\nimport { elementsFactory } from './vanilla/elementsFactory';\r\n\r\nconst render = (el: HTMLElement): void => {\r\n renderAjaxListComponent(el);\r\n};\r\n\r\nexport default elementsFactory('js-ajax-list', render).create;\r\n","/**\r\n * Compare Products Tool\r\n *\r\n * @author Johannes Greve \r\n */\r\n\r\nimport Backbone from 'backbone';\r\nimport Handlebars from 'handlebars';\r\nimport { PubSubKeys ,PubSub} from '@utils/pubSub';\r\nimport { Marionette } from '../../framework/vendor';\r\n\r\nimport storage from '../../framework/storage';\r\nimport { ServerView } from '../../framework/server-side-views';\r\n\r\nimport iconClose from '../../../assets/images/svg/close.svg';\r\nimport { delegateSelector } from '../../framework/custom-functions';\r\n\r\nimport '../compiled-templates/rockworld/compare-products-collector-item-template';\r\n\r\nconst compareProductsCollectorItemTemplate = 'compare-products-collector-item';\r\n/**\r\n * List Item for CollectionView\r\n */\r\nconst ListItemView = Marionette.View.extend({\r\n className: 'O91-compare-products-collector__product-list__item',\r\n template: Handlebars.templates[compareProductsCollectorItemTemplate],\r\n\r\n triggers: {\r\n 'click .js-compare-collector-remove-product': 'clicked:item',\r\n },\r\n\r\n initialize() {\r\n this.model.set('iconClose', iconClose);\r\n },\r\n});\r\n\r\n/**\r\n * Collection view for View, uses ListItemView\r\n */\r\nconst CollectionView = Marionette.CollectionView.extend({\r\n className: 'O91-compare-products-collector__product-list',\r\n childView: ListItemView,\r\n\r\n initialize(options) {\r\n this.parent = options.parent;\r\n },\r\n\r\n onChildviewClickedItem(item) {\r\n this.parent.storage.removeItemById(item.model.attributes.productId);\r\n },\r\n});\r\n\r\n/**\r\n * Main view, the layout for this organism\r\n */\r\nconst View = ServerView.extend({\r\n el: '.O91-compare-products-collector',\r\n\r\n regions: {\r\n productList: '.js-compare-product-list',\r\n },\r\n\r\n events: {\r\n 'click .js-product-compare-open-toggle': '_toggleCollectorIsOpen',\r\n 'click .js-product-compare-clear-all': '_clearProducts',\r\n 'click .js-compare-cta': '_compareProducts',\r\n },\r\n\r\n onRender() {\r\n this.storage = storage('compareProducts', {\r\n idKey: 'productId',\r\n });\r\n\r\n this.storage.on('change', () => {\r\n this.collection.reset(this.storage.items);\r\n });\r\n\r\n this.collection = new Backbone.Collection();\r\n\r\n this.collection.bind('all', () => {\r\n this.updateAll();\r\n });\r\n\r\n this.collection.reset(this.storage.items);\r\n\r\n this.showChildView(\r\n 'productList',\r\n new CollectionView({\r\n parent: this,\r\n collection: this.collection,\r\n })\r\n );\r\n\r\n this.setupAddToCompare();\r\n },\r\n\r\n setupAddToCompare() {\r\n delegateSelector('body', 'click', '.js-select-compare-product', this.addToCompare.bind(this));\r\n },\r\n\r\n addToCompare(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n const element = e.target.closest('.js-select-compare-product');\r\n const isCheckbox = element.classList.contains('checkbox-wrap');\r\n const isChecked = !element.classList.contains('is-checked');\r\n const currentProductName = element.getAttribute('data-link-name');\r\n const currentProductImage = element.getAttribute('data-link-image');\r\n const currentProductId = element.getAttribute('data-link-id');\r\n\r\n // Get current productinfo\r\n const currentProduct = {\r\n productName: currentProductName,\r\n productImage: currentProductImage,\r\n productId: currentProductId,\r\n };\r\n\r\n // Add product to compare selector if is checked and maxAmount is not yet maxed\r\n if ((isCheckbox && isChecked && this.storage.count < 3) || (!isCheckbox && this.storage.count < 3)) {\r\n this.storage.addItem(currentProduct);\r\n\r\n if (isCheckbox) {\r\n element.classList.add('is-checked');\r\n }\r\n } else if (isCheckbox && !isChecked) {\r\n // If product is unchecked, remove product from product array\r\n this.storage.removeItemById(currentProductId);\r\n\r\n element.classList.remove('is-checked');\r\n } else if (this.storage.count === 3) {\r\n const warningMsg = document.querySelector('.js-compare-warning-message');\r\n const warningMsgText = warningMsg.getAttribute('data-message-to-many');\r\n const warningMsgBox = warningMsg.querySelector('.js-warning-text');\r\n\r\n warningMsgBox.innerHTML = warningMsgText;\r\n\r\n // If products array has the maximum amount of products show warning msg\r\n if (isCheckbox) {\r\n element.classList.remove('is-checked');\r\n }\r\n\r\n warningMsg.classList.remove('is-hidden');\r\n\r\n setTimeout(() => {\r\n warningMsg.classList.add('is-hidden');\r\n }, 3000);\r\n }\r\n },\r\n\r\n toggleShowTool() {\r\n if (this.collection.isEmpty()) {\r\n this.el.classList.add('is-hidden');\r\n this.el.classList.remove('is-open');\r\n } else {\r\n this.el.classList.remove('is-hidden');\r\n }\r\n },\r\n\r\n updateCompareCount() {\r\n const amountMarkup = this.el.querySelector('.js-compare-amount');\r\n amountMarkup.innerHTML = `${this.collection.length}/3`;\r\n },\r\n\r\n _toggleCollectorIsOpen() {\r\n const isOpen = this.el.classList.contains('is-open');\r\n if (isOpen) {\r\n this.el.classList.remove('is-open');\r\n } else {\r\n this.el.classList.add('is-open');\r\n }\r\n },\r\n\r\n _clearProducts() {\r\n PubSub.trigger(PubSubKeys.compareRemoveall);\r\n this.storage.removeAll();\r\n },\r\n\r\n updateAll() {\r\n this.toggleShowTool();\r\n this.updateCompareCount();\r\n this.updateCheckboxes();\r\n },\r\n\r\n updateCheckboxes() {\r\n const compareCheckboxes = document.querySelectorAll('.js-select-compare-product');\r\n\r\n [].forEach.call(compareCheckboxes, (checkbox) => {\r\n const isCheckbox = checkbox.classList.contains('checkbox-wrap');\r\n const currentProductId = checkbox.getAttribute('data-link-id');\r\n\r\n if (isCheckbox) {\r\n checkbox.classList.remove('is-checked');\r\n }\r\n\r\n [].forEach.call(this.storage.items, (product) => {\r\n if (currentProductId === product.productId && isCheckbox) {\r\n checkbox.classList.add('is-checked');\r\n }\r\n });\r\n });\r\n },\r\n\r\n _compareProducts(e) {\r\n const element = e.target;\r\n let compareUrl = element.getAttribute('href');\r\n const warningMsg = document.querySelector('.js-compare-warning-message');\r\n const warningMsgText = warningMsg.getAttribute('data-message-not-enough');\r\n const warningMsgBox = warningMsg.querySelector('.js-warning-text');\r\n\r\n if (this.storage.count === 1) {\r\n e.preventDefault();\r\n warningMsgBox.innerHTML = warningMsgText;\r\n // If products array has the maximum amount of products show warning msg\r\n warningMsg.classList.remove('is-hidden');\r\n setTimeout(() => {\r\n warningMsg.classList.add('is-hidden');\r\n }, 3000);\r\n } else {\r\n const customTrackingData = {};\r\n compareUrl += '?products=';\r\n [].forEach.call(this.storage.items, (item, index) => {\r\n // Check if it is last item\r\n if (index === this.storage.count - 1) {\r\n compareUrl += `${item.productId}`;\r\n } else {\r\n compareUrl += `${item.productId},`;\r\n }\r\n customTrackingData[`comparedProduct${index + 1}`] = item.productName;\r\n });\r\n App.tracking.trackEvent('product pages', 'comparison', 'product', customTrackingData);\r\n }\r\n\r\n element.setAttribute('href', compareUrl);\r\n },\r\n});\r\n\r\nexport default View;\r\n","import { EventEnum, publish, subscribe, unsubscribe } from '@utils/custom-events';\r\nimport { elementsFactory } from './vanilla/elementsFactory';\r\n\r\nexport interface GatedContentFile {\r\n fileTypes: FileType[];\r\n image: string;\r\n text: string;\r\n title: string | null;\r\n selectLabel: string;\r\n downloadBtnText: string | null;\r\n hasDownload: boolean;\r\n isGated: boolean;\r\n isNotDownloadedAfterFormSent: boolean;\r\n isSingleSignupDownload: boolean;\r\n fileMarketoFormId: string;\r\n fileMarketoFormName: string;\r\n fileMarketoFilename: string;\r\n hasPrint: boolean;\r\n}\r\ninterface FileType {\r\n label: string;\r\n value: string;\r\n fileId: number;\r\n url: string | null;\r\n isGated: boolean;\r\n isPrintOnly: boolean;\r\n printId: number | null;\r\n marketoFormId: string;\r\n marketoFormName: string;\r\n marketoFilename: string;\r\n}\r\n\r\nlet anhorLinkElements = null;\r\nlet downloadMaterialsHandler = null;\r\nlet checkIfGated = null;\r\n\r\nexport const render = (el: Element): void => {\r\n const formUrl = '/custom-routes/personalization/submitform';\r\n let fileIdToDownload = null;\r\n anhorLinkElements = el.querySelectorAll('.js-download');\r\n downloadMaterialsHandler = (props: CustomEvent) => {\r\n if (props.detail && fileIdToDownload) {\r\n publish(EventEnum.closeReactModal, true);\r\n downloadMaterials();\r\n }\r\n };\r\n\r\n subscribe(EventEnum.downloadMaterialsGatedContent, downloadMaterialsHandler);\r\n\r\n checkIfGated = (e: Event) => {\r\n const currentElement = e.currentTarget as HTMLElement;\r\n const dataObjectStr = currentElement.getAttribute('data-object');\r\n if (!dataObjectStr) {\r\n return;\r\n }\r\n\r\n const dataObject = JSON.parse(dataObjectStr);\r\n const { fileTypes, isGated, isSingleSignupDownload } = dataObject;\r\n const firstFileType = fileTypes[0];\r\n fileIdToDownload = firstFileType.fileId;\r\n if (firstFileType.isGated) {\r\n e.preventDefault();\r\n let formName = currentElement.getAttribute('data-form-name');\r\n let formId = currentElement.getAttribute('data-form-id');\r\n const noDownload = currentElement.getAttribute('data-no-download') === 'true';\r\n const dataTarget = currentElement.getAttribute('data-target');\r\n\r\n let gatedDownload = [\r\n {\r\n count: 1,\r\n data: dataObject,\r\n format: firstFileType.value,\r\n id: firstFileType.fileId,\r\n },\r\n ];\r\n\r\n if (dataObject.fileMarketoFormId) {\r\n formId = dataObject.fileMarketoFormId;\r\n formName = dataObject.fileMarketoFormName;\r\n }\r\n\r\n if (noDownload) {\r\n gatedDownload = [];\r\n }\r\n\r\n if (dataObject.isNotDownloadedAfterFormSent) {\r\n fileIdToDownload = null;\r\n }\r\n\r\n const visitorFilledForm = App.visitor.isFormFilled;\r\n\r\n if (\r\n !isGated ||\r\n (visitorFilledForm &&\r\n (document.querySelector('body').dataset.enableSingleSignupDocumentsDownload === 'true' ||\r\n isSingleSignupDownload))\r\n ) {\r\n downloadMaterials();\r\n return;\r\n }\r\n\r\n openGateModal('multiple-download', formName, formId, formUrl, gatedDownload, dataTarget, dataObject);\r\n }\r\n };\r\n\r\n const downloadMaterials = () => {\r\n if (fileIdToDownload) {\r\n window.open(`/api/MultipleDownloads/zip?files=${fileIdToDownload}`);\r\n fileIdToDownload = null;\r\n }\r\n };\r\n\r\n const openGateModal = (\r\n gateType,\r\n dataFormName,\r\n dataFormId,\r\n dataFormUrl,\r\n gatedDownload,\r\n dataTarget,\r\n gatedDownloads\r\n ) => {\r\n publish(EventEnum.openGatedContentModal, {\r\n modalType: 'marketo',\r\n name: dataFormName ? dataFormName.trim() : '',\r\n formUrl: dataFormUrl,\r\n id: dataFormId ? dataFormId.trim() : '',\r\n gateType,\r\n 'data-target': dataTarget,\r\n fileIdToDownload,\r\n gatedDownloads,\r\n });\r\n };\r\n\r\n if (anhorLinkElements?.length) {\r\n anhorLinkElements.forEach((anhorLinkElement) => anhorLinkElement.addEventListener('click', checkIfGated));\r\n }\r\n};\r\n\r\nexport const destroy = (): void => {\r\n if (anhorLinkElements?.length) {\r\n anhorLinkElements.forEach((anhorLinkElement) => anhorLinkElement.removeEventListener('click', checkIfGated));\r\n }\r\n\r\n unsubscribe(EventEnum.downloadMaterialsGatedContent, downloadMaterialsHandler);\r\n};\r\n\r\nexport default elementsFactory('gated-link-container', render, destroy).create;\r\n","/**\r\n * Go To Top\r\n *\r\n * @author Johannes Holger Greve \r\n */\r\n\r\nimport { elementsFactory } from './vanilla/elementsFactory';\r\n\r\nconst render = (): void => {\r\n window.onload = () => {\r\n if (!window.location.hash) {\r\n return;\r\n }\r\n\r\n const uniqueAnchor = document.querySelectorAll(window.location.hash);\r\n const fixedElementHeight = 64;\r\n\r\n if (uniqueAnchor.length > 0) {\r\n const rect = uniqueAnchor[0].getBoundingClientRect();\r\n const scrollPosition = rect.top + window.scrollY - fixedElementHeight;\r\n setTimeout(() => {\r\n window.scrollTo(0, scrollPosition);\r\n }, 200);\r\n }\r\n };\r\n};\r\n\r\nexport default elementsFactory('hasAnchorId', render).create;\r\n","export default {\r\n Esc: 27,\r\n Enter: 13,\r\n arrowLeft: 37,\r\n arrowUp: 38,\r\n arrowRight: 39,\r\n arrowDown:40\r\n};\r\n","/**\r\n * Modal Multi Selector\r\n *\r\n * @author Daniel Kvistgaard \r\n */\r\n\r\nimport _ from 'underscore';\r\n\r\nimport { PubSubKeys ,PubSub} from '@utils/pubSub';\r\nimport { ServerView } from '../../framework/server-side-views';\r\nimport { delegateSelector } from '../../framework/custom-functions';\r\n\r\nconst triggerBrandSelector = function triggerBrandSelector(e) {\r\n const paramString = e.target.search;\r\n\r\n // Stop if there aren't a link on the clicked element, no parameters\r\n // in the link or if the user is right clicking.\r\n if (!e.target.href || !paramString || e.which === 3) {\r\n return;\r\n }\r\n\r\n // Determine which brand selector it is by looking at the linked url\r\n const hostname = e.target.hostname.replace(/^www.|^.com/g, '');\r\n const isRockwool = hostname.indexOf('rockwool') >= 0 && hostname.indexOf('rockwoolgroup') === -1;\r\n const isRockfon = hostname.indexOf('rockfon') >= 0;\r\n const isGrodan = hostname.indexOf('grodan') >= 0;\r\n const isLapinus = hostname.indexOf('lapinus') >= 0;\r\n const isRockpanel = hostname.indexOf('rockpanel') >= 0;\r\n\r\n // Parse the url parameters of the clicked element into an object\r\n const params = _.object(\r\n _.compact(_.map(paramString.replace(/\\?/g, '').split('&'), (item) => (item ? item.split('=') : '')))\r\n );\r\n\r\n // If brandselector is defined in the url parameters, then we'll open\r\n // the brand selector matching the url.\r\n if (Object.keys(params).indexOf('brandselector') >= 0) {\r\n if (isRockwool) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n PubSub.trigger(PubSubKeys.openMultiSelector, e, 'rockwool');\r\n } else if (isRockfon) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n PubSub.trigger(PubSubKeys.openMultiSelector, e, 'rockfon');\r\n } else if (isGrodan) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n PubSub.trigger(PubSubKeys.openMultiSelector, e, 'grodan');\r\n } else if (isLapinus) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n PubSub.trigger(PubSubKeys.openMultiSelector, e, 'lapinus');\r\n } else if (isRockpanel) {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n PubSub.trigger(PubSubKeys.openMultiSelector, e, 'rockpanel');\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Registrering global click event listeners.\r\n * Instead of simply using click events, we're reimplementing the\r\n * click event using mousedown and touchstart/touchend. That way we\r\n * can trigger the JS functionality before any other functions bound\r\n * to the normal click event.\r\n */\r\nlet hasGlobalEventListener = false;\r\nconst globalClickEventListener = function globalClickEventListener() {\r\n if (hasGlobalEventListener) {\r\n return;\r\n }\r\n\r\n hasGlobalEventListener = true;\r\n\r\n // Using mousedown for desktop devices which triggers before click.\r\n delegateSelector('body', 'mousedown', 'a', (e) => {\r\n triggerBrandSelector(e);\r\n });\r\n\r\n // Using touchstart and touchend to register the tab event on\r\n // touch devices. Using 300ms as the max delay between touchstart\r\n // and touchend to determine if the user is tapping instead of\r\n // e.g. scrolling.\r\n let tabStart = null;\r\n let touchStartX = null;\r\n let touchStartY = null;\r\n\r\n delegateSelector('body', 'touchstart', 'a', (e) => {\r\n tabStart = new Date().getTime();\r\n\r\n const changedTouch = e.changedTouches[0];\r\n\r\n touchStartX = changedTouch.clientX;\r\n touchStartY = changedTouch.clientY;\r\n });\r\n\r\n delegateSelector('body', 'touchend', 'a', (e) => {\r\n const changedTouch = e.changedTouches[0];\r\n const elem = document.elementFromPoint(changedTouch.clientX, changedTouch.clientY);\r\n\r\n if (\r\n e.target !== elem ||\r\n Math.abs(touchStartX - changedTouch.clientX) > 10 ||\r\n Math.abs(touchStartY - changedTouch.clientY) > 10\r\n ) {\r\n return;\r\n }\r\n\r\n if (Math.abs(new Date().getTime() - tabStart) <= 300) {\r\n triggerBrandSelector(e);\r\n }\r\n });\r\n};\r\n\r\nconst View = ServerView.extend({\r\n el: '.js-select-modal',\r\n\r\n events: {\r\n 'click .js-lang__close': 'onClickLangClose',\r\n },\r\n\r\n onRender() {\r\n globalClickEventListener();\r\n\r\n // Listener on global Radio\r\n PubSub.on('open:multi-selector', this.onClickLangOpen.bind(this));\r\n\r\n this.initializeFilters();\r\n\r\n this.brand = false;\r\n\r\n if (this.el.classList.contains('is-rockwool-selector')) {\r\n this.brand = 'ROCKWOOL';\r\n } else if (this.el.classList.contains('is-rockfon-selector')) {\r\n this.brand = 'Rockfon';\r\n } else if (this.el.classList.contains('is-rockpanel-selector')) {\r\n this.brand = 'Rockpanel';\r\n } else if (this.el.classList.contains('is-grodan-selector')) {\r\n this.brand = 'Grodan';\r\n } else if (this.el.classList.contains('is-lapinus-selector')) {\r\n this.brand = 'Lapinus';\r\n } else if (this.el.classList.contains('is-group-selector')) {\r\n this.brand = 'Group';\r\n }\r\n },\r\n\r\n initializeFilters() {\r\n const filters = this.el.querySelectorAll('.js-filter');\r\n [].forEach.call(filters, (filter) => {\r\n filter.addEventListener('new-active', this.onClickFilter.bind(this), false);\r\n });\r\n },\r\n\r\n onClickLangOpen(e, brand) {\r\n if (e) {\r\n e.preventDefault();\r\n }\r\n\r\n document.documentElement.classList.add('modal-multi-selector--open');\r\n\r\n const target = e?.currentTarget;\r\n const isLanguageSelector =\r\n this.el.classList.contains('is-language-selector') && target?.classList.contains('open-language-selector');\r\n const isBrandRockWoolSelector =\r\n this.el.classList.contains('is-rockwool-selector') &&\r\n ((target?.classList.contains('open-rockwool-selector') && !brand) || brand === 'rockwool');\r\n const isBrandRockfonSelector =\r\n this.el.classList.contains('is-rockfon-selector') &&\r\n ((target?.classList.contains('open-rockfon-selector') && !brand) || brand === 'rockfon');\r\n const isBrandRockpanelSelector =\r\n this.el.classList.contains('is-rockpanel-selector') &&\r\n ((target?.classList.contains('open-rockpanel-selector') && !brand) || brand === 'rockpanel');\r\n const isBrandGrodanSelector =\r\n this.el.classList.contains('is-grodan-selector') &&\r\n ((target?.classList.contains('open-grodan-selector') && !brand) || brand === 'grodan');\r\n const isBrandLapinusSelector =\r\n this.el.classList.contains('is-lapinus-selector') &&\r\n ((target?.classList.contains('open-lapinus-selector') && !brand) || brand === 'lapinus');\r\n const isGroupSelector =\r\n this.el.classList.contains('is-group-selector') &&\r\n ((target?.classList.contains('open-group-selector') && !brand) || brand === 'group');\r\n\r\n if (isLanguageSelector) {\r\n this.getLanguageSelectorAsync('language', 'is-language-selector', true);\r\n this.el.classList.add('is-open');\r\n } else if (isBrandRockWoolSelector) {\r\n this.getLanguageSelectorAsync('rockwool', 'is-rockwool-selector', false);\r\n this.el.classList.add('is-open');\r\n } else if (isBrandRockfonSelector) {\r\n this.getLanguageSelectorAsync('rockfon', 'is-rockfon-selector', false);\r\n this.el.classList.add('is-open');\r\n } else if (isBrandRockpanelSelector) {\r\n this.getLanguageSelectorAsync('rockpanel', 'is-rockpanel-selector', false);\r\n this.el.classList.add('is-open');\r\n } else if (isBrandGrodanSelector) {\r\n this.getLanguageSelectorAsync('grodan', 'is-grodan-selector', false);\r\n this.el.classList.add('is-open');\r\n } else if (isBrandLapinusSelector) {\r\n this.getLanguageSelectorAsync('lapinus', 'is-lapinus-selector', false);\r\n this.el.classList.add('is-open');\r\n } else if (isGroupSelector) {\r\n this.getLanguageSelectorAsync('group', 'is-group-selector', false);\r\n this.el.classList.add('is-open');\r\n }\r\n },\r\n\r\n setInitLanguageView(isLanguageSelector, allFilters) {\r\n // If is brand-selector start in Europe\r\n if (!isLanguageSelector && allFilters) {\r\n let activeItem = this.el.querySelector('.O23-tabs__item.is-active .js-filter');\r\n\r\n if (!activeItem) {\r\n activeItem = this.el.querySelector('.js-filter[data-filter=\"europe\"]');\r\n }\r\n\r\n if (!activeItem) {\r\n activeItem = this.el.querySelector('.js-filter');\r\n }\r\n\r\n const predictionEl = this.el.querySelector('.js-prediction');\r\n\r\n if (predictionEl) {\r\n predictionEl.parentNode.classList.add('is-hidden');\r\n }\r\n\r\n if (activeItem) {\r\n activeItem.click();\r\n }\r\n }\r\n },\r\n\r\n onClickLangClose(e) {\r\n e.preventDefault();\r\n\r\n document.documentElement.classList.remove('modal-multi-selector--open');\r\n this.el.classList.remove('is-open');\r\n },\r\n\r\n onClickFilter(e) {\r\n e.preventDefault();\r\n let { target } = e;\r\n if (!target.classList.contains('js-filter')) {\r\n target = e.target.closest('.js-filter.');\r\n }\r\n const parent = target.parentNode;\r\n\r\n // Stopping if the target already is the active filter\r\n if (parent.classList.contains('is-filtered')) {\r\n return;\r\n }\r\n\r\n const { filter } = target.dataset;\r\n this.showItemsByFilter(filter);\r\n\r\n // Set current target as active filter\r\n parent.classList.add('is-filtered');\r\n },\r\n\r\n showItemsByFilter(filter) {\r\n const allFilters = this.el.querySelectorAll('.js-filter');\r\n const allItems = this.el.querySelectorAll('.modal-multi-selector__item');\r\n\r\n // Remove all other previously active filters\r\n [].forEach.call(allFilters, (item) => {\r\n item.parentNode.classList.remove('is-filtered');\r\n });\r\n\r\n // Loop through all items and check if they match the filter\r\n [].forEach.call(allItems, (item) => {\r\n const itemFilter = item.getAttribute('data-filter');\r\n\r\n if (filter === 'all' || itemFilter.indexOf(filter) >= 0) {\r\n item.style.display = '';\r\n } else {\r\n item.style.display = 'none';\r\n }\r\n });\r\n },\r\n\r\n // eslint-disable-next-line consistent-return\r\n getLanguageSelectorAsync(brand, selectorClass, isLanguageSelector) {\r\n const asyncContainer = document.querySelector('.async-language-selector');\r\n const url = asyncContainer ? asyncContainer.dataset.url : '';\r\n const cultureInfo = asyncContainer ? asyncContainer.dataset.cultureInfo : '';\r\n const callback = asyncContainer ? asyncContainer.dataset.callback : '';\r\n const languageSelectorContainer = document.querySelector(`.${selectorClass}`);\r\n\r\n const fetchOptions = {\r\n method: 'GET',\r\n };\r\n if (languageSelectorContainer.children.length === 1) {\r\n return fetch(`${url}?brand=${brand}&cultureInfo=${cultureInfo}`, fetchOptions)\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error(`${response.status} - ${response.statusText} (url: ${response.url})`);\r\n }\r\n return response.text();\r\n })\r\n .then(async (text) => {\r\n languageSelectorContainer.innerHTML = text;\r\n\r\n if (callback && window.App.InitializeView) {\r\n await window.App.InitializeView(callback.split(','));\r\n }\r\n window.App.InitBasicSelects(languageSelectorContainer);\r\n\r\n const allFilters = this.el.querySelectorAll('.O23-tabs__item__inner');\r\n this.initializeFilters();\r\n this.setInitLanguageView(isLanguageSelector, allFilters);\r\n })\r\n .catch((ex) => {\r\n languageSelectorContainer.innerHTML = '';\r\n console.warn('somethings wrong', ex);\r\n });\r\n }\r\n },\r\n});\r\n\r\nexport default View;\r\n","/**\r\n * O7 Brand Selector\r\n */\r\n\r\nimport Backbone from 'backbone';\r\n\r\nimport { ServerView } from '../../framework/server-side-views';\r\n\r\nconst View = ServerView.extend({\r\n el: '.js-lang-selector__open',\r\n\r\n events: {\r\n click: 'onClickLangSelectorOpen',\r\n },\r\n\r\n isVisible: false,\r\n onBodyClickHandler: () => {},\r\n\r\n onRender() {\r\n this.linksMenu = this.el.querySelector('.login-links-menu');\r\n\r\n if (this.linksMenu) {\r\n window.addEventListener('scroll', this.onWindowScroll.bind(this), { passive: true });\r\n }\r\n\r\n this.onBodyClickHandler = this.onBodyClick.bind(this);\r\n },\r\n\r\n onWindowScroll() {\r\n if (this.linksMenu && this.isVisible) {\r\n this.close();\r\n }\r\n },\r\n\r\n onClickLangSelectorOpen(e) {\r\n let classList = e.target.classList;\r\n let parentElement = e.target.parentElement;\r\n let parentNode = e.target.parentNode;\r\n\r\n if (\r\n (classList && classList.contains('js-lang-selector-allow')) ||\r\n (parentElement && parentElement.classList && parentElement.classList.contains('js-lang-selector-allow'))\r\n ) {\r\n return;\r\n }\r\n\r\n if (classList && classList.contains('lang-selector-menu__item')) {\r\n return;\r\n }\r\n\r\n if (this.linksMenu && Modernizr && Modernizr.mq(`(min-width: ${App.mq.desktop}px)`)) {\r\n if (\r\n this.isVisible &&\r\n classList &&\r\n (classList.contains('js-lang-selector__open') || parentNode.classList.contains('js-lang-selector__open'))\r\n ) {\r\n this.close();\r\n } else if (!this.isVisible) {\r\n this.open();\r\n }\r\n } else {\r\n // Setting up certificate modals\r\n App.modal.create({\r\n view: 'OpenLangSelector',\r\n model: new Backbone.Model(JSON.parse(e.currentTarget.getAttribute('data-content'))),\r\n });\r\n }\r\n },\r\n close() {\r\n this.isVisible = false;\r\n this.linksMenu.classList.remove('is-visible');\r\n\r\n document.removeEventListener('click', this.onBodyClickHandler);\r\n },\r\n\r\n open() {\r\n this.isVisible = true;\r\n this.linksMenu.classList.add('is-visible');\r\n\r\n setTimeout(() => {\r\n document.addEventListener('click', this.onBodyClickHandler);\r\n }, 0);\r\n },\r\n onBodyClick(e) {\r\n if (!e.target || !e.target.classList) {\r\n return;\r\n }\r\n\r\n if (\r\n e.target.classList.contains('.js-lang-selector__open') ||\r\n e.target.parentElement.querySelectorAll('.js-lang-selector__open').length\r\n ) {\r\n return;\r\n }\r\n\r\n this.close();\r\n },\r\n\r\n /**\r\n * Finding the closest element in the parent tree.\r\n *\r\n * @param {HTMLElement} el\r\n * @param {String} target\r\n */\r\n closest(el, target) {\r\n let ancestor = el;\r\n\r\n if (!document.documentElement.contains(el)) {\r\n return null;\r\n }\r\n\r\n do {\r\n if (ancestor && ancestor instanceof HTMLElement) {\r\n if (ancestor.matches ? ancestor.matches(target) : ancestor.msMatchesSelector(target)) {\r\n return ancestor;\r\n }\r\n }\r\n\r\n ancestor = ancestor.parentElement || ancestor.parentNode;\r\n } while (ancestor !== null);\r\n\r\n return null;\r\n },\r\n});\r\n\r\nexport default View;\r\n","/**\r\n * O7 Brand Selector\r\n */\r\nimport { PubSubKeys , PubSub} from '@utils/pubSub';\r\nimport { ServerView } from '../../framework/server-side-views';\r\n\r\nconst View = ServerView.extend({\r\n el: '.js-multi-selector__open',\r\n\r\n events: {\r\n click: 'onClickMultiSelectOpen',\r\n },\r\n\r\n onClickMultiSelectOpen(e) {\r\n e.preventDefault();\r\n\r\n PubSub.trigger(PubSubKeys.openMultiSelector, e);\r\n },\r\n});\r\n\r\nexport default View;\r\n","import { elementsFactory } from './vanilla/elementsFactory';\r\nimport BasketOverlay from './O97-basket-overlay';\r\n\r\ndeclare global {\r\n interface CheckoutData {\r\n orderSampleHeading: string;\r\n orderSampleEdgeText: string;\r\n orderSampleColor: string;\r\n orderSampleBtnText: string;\r\n selectEdgePlaceholder: string;\r\n selectColorPlaceholder: string;\r\n quantity: string;\r\n \r\n }\r\n\r\n interface Window {\r\n checkoutData: CheckoutData;\r\n }\r\n}\r\n\r\ntype OrderSampleData = {\r\n orderSampleHeading?: string;\r\n orderSampleEdgeText?: string;\r\n orderSampleColor?: string;\r\n orderSampleBtnText?: string;\r\n selectEdgePlaceholder?: string;\r\n selectColorPlaceholder?: string;\r\n quantity?: string;\r\n tileName?: string;\r\n tileId?: string;\r\n noExcludeColour?: boolean;\r\n noExcludeEdges?: boolean;\r\n edgeOptions?: string;\r\n selectedEdgeValue?: string;\r\n selectedColorValue?: string;\r\n productImage?: string;\r\n};\r\n\r\nconst render = (el: HTMLDivElement): void => {\r\n const orderSampleData: OrderSampleData = {};\r\n\r\n const onWindowScroll = () => {\r\n const scrollTop = window.scrollY || window.pageYOffset;\r\n\r\n if (scrollTop >= 100) {\r\n el.classList.remove('is-hidden');\r\n } else {\r\n el.classList.add('is-hidden');\r\n }\r\n };\r\n\r\n const onClick = (e) => {\r\n e.preventDefault();\r\n\r\n let orderSampleButton = e.currentTarget;\r\n if (\r\n !(\r\n (orderSampleButton.classList.contains('O81-product-hero__buttons__item') ||\r\n orderSampleButton.classList.contains('btn')) &&\r\n orderSampleButton.classList.contains('js-order-sample-edge-options')\r\n )\r\n ) {\r\n orderSampleButton = orderSampleButton.closest('.card').querySelector('.btn.js-order-sample-edge-options');\r\n }\r\n\r\n if (!orderSampleButton) {\r\n return;\r\n }\r\n\r\n const thisTileId = orderSampleButton.getAttribute('data-product-id');\r\n const thisTileName = orderSampleButton.getAttribute('data-product-name');\r\n const thisEdgeOptions = orderSampleButton.getAttribute('data-edge-options');\r\n const selectedEdgeValueFilterSelector = orderSampleButton.getAttribute('data-edge-value-selector');\r\n const selectedColorValueFilterSelector = orderSampleButton.getAttribute('data-color-value-selector');\r\n const thisExcludeColour = orderSampleButton.getAttribute('data-exclude-colour').toLowerCase() === 'true';\r\n const thisExcludeEdges = orderSampleButton.getAttribute('data-exclude-edges').toLowerCase() === 'true';\r\n\r\n // Setting modal translation texts\r\n orderSampleData.orderSampleHeading = window.checkoutData.orderSampleHeading;\r\n orderSampleData.orderSampleEdgeText = window.checkoutData.orderSampleEdgeText;\r\n orderSampleData.orderSampleColor = window.checkoutData.orderSampleColor;\r\n orderSampleData.orderSampleBtnText = window.checkoutData.orderSampleBtnText;\r\n orderSampleData.selectEdgePlaceholder = window.checkoutData.selectEdgePlaceholder;\r\n orderSampleData.selectColorPlaceholder = window.checkoutData.selectColorPlaceholder;\r\n orderSampleData.quantity = window.checkoutData.quantity;\r\n orderSampleData.tileName = thisTileName;\r\n orderSampleData.tileId = thisTileId;\r\n orderSampleData.noExcludeColour = !thisExcludeColour;\r\n orderSampleData.noExcludeEdges = !thisExcludeEdges;\r\n orderSampleData.edgeOptions = JSON.parse(thisEdgeOptions);\r\n orderSampleData.selectedEdgeValue = getSelectedValueInFilter(selectedEdgeValueFilterSelector);\r\n orderSampleData.selectedColorValue = getSelectedValueInFilter(selectedColorValueFilterSelector);\r\n\r\n const image = el.querySelector('.image-wrap img');\r\n const imgSrc = image ? image.getAttribute('src') : '';\r\n orderSampleData.productImage = imgSrc;\r\n\r\n App.modal.create({\r\n view: BasketOverlay,\r\n type: 'order-sample',\r\n model: orderSampleData,\r\n });\r\n };\r\n\r\n const getSelectedValueInFilter = (filterSelector) => {\r\n const element = document.querySelector(filterSelector);\r\n if (!element) {\r\n return null;\r\n }\r\n\r\n return element.parentNode\r\n .querySelector('.is-selected')\r\n .getAttribute('data-value')\r\n .replace(/ /g, String.fromCharCode(160));\r\n };\r\n\r\n onWindowScroll();\r\n window.addEventListener('scroll', onWindowScroll, { passive: true });\r\n el.addEventListener('click', onClick);\r\n};\r\n\r\nexport default elementsFactory('js-order-sample-edge-options', render).create;\r\n","import { ServerView } from '../../../framework/server-side-views';\r\nimport KeyCodes from '../key-codes';\r\nimport Search from '../../../framework/search';\r\nimport { SwipeEventDispatcher } from './helpers';\r\n\r\nconst overlayClass = 'js-menu-overlay';\r\nconst suggestionsVisibleClass = 'suggestions-visible';\r\nconst headerSearchOpenClass = 'header-search-open';\r\nconst menuOpenClass = 'menu-open';\r\nconst languageOpenClass = 'language-open';\r\nconst isOpenClass = 'is-open';\r\nconst isActiveClass = 'is-active';\r\n\r\nconst O201headerview = ServerView.extend({\r\n el: '.O201-header-js',\r\n events: {\r\n 'click .js-menu': 'onClickMenu',\r\n 'click .js-menu-item': 'onTopNavClick',\r\n 'click .js-menu-sub-item': 'onSubItemClick',\r\n 'click .btn-language': 'onLanguageClick',\r\n 'click .js-menu-overlay': 'onOverlayClick',\r\n 'click .js-search__reset': 'clearSearch',\r\n 'submit form': 'trackSubmitSearchForm',\r\n 'focus .O201-header-search-input': 'trackOpenSearch',\r\n 'click .O201-header__search__suggestions__list': 'trackSelectSuggest',\r\n },\r\n\r\n onRender() {\r\n this.isDesktopSelectorName = App.mq.desktopLarge;\r\n this.searchInput = this.el.querySelector('.O201-header-search-input');\r\n this.overlayEl = document.querySelector(`.${overlayClass}`);\r\n this.searchBtn = this.el.querySelector('.O201-header__tools__item__search');\r\n this.topNavArea = this.el.querySelector('.O201-header__top_nav');\r\n this.languageSelector = document.querySelector('.language-selector');\r\n this.languageBtn = this.el.querySelector('.btn-language');\r\n this.search = new Search();\r\n window.addEventListener('resize', this.onResize.bind(this));\r\n this.overlayEl.addEventListener('click', this.onOverlayClick.bind(this));\r\n this.searchBtn.addEventListener('click', this.onSearchClick.bind(this));\r\n this.searchInput.addEventListener('keyup', this.searchKeyUp.bind(this));\r\n const searchForm = this.el.querySelector('.search-form__form');\r\n if (searchForm && searchForm.length) {\r\n this.searchUrl = searchForm.getAttribute('action');\r\n }\r\n\r\n this.lastWindowWidth = window.innerWidth;\r\n this.isMainMenuOpen = false;\r\n this.isLanguageMenuOpen = false;\r\n\r\n const topNavAreaSwipe = new SwipeEventDispatcher(this.topNavArea);\r\n topNavAreaSwipe.on('SWIPE_RIGHT', () => {\r\n if (this.isMainMenuOpen) {\r\n this.removeMenuClasses();\r\n }\r\n });\r\n\r\n const languageSelectorSwipe = new SwipeEventDispatcher(this.languageSelector);\r\n languageSelectorSwipe.on('SWIPE_LEFT', () => {\r\n if (this.isLanguageMenuOpen) {\r\n this.removeLanguageClasses();\r\n }\r\n });\r\n },\r\n\r\n onResize() {\r\n if (this.isResizingFromMobileToDesktop()) {\r\n this.removeMenuClasses();\r\n this.removeLanguageClasses();\r\n this.hideSearch();\r\n }\r\n this.lastWindowWidth = window.innerWidth;\r\n },\r\n\r\n isResizingFromMobileToDesktop() {\r\n const currentWindowWidth = window.innerWidth;\r\n if (this.lastWindowWidth < this.isDesktopSelectorName && currentWindowWidth >= this.isDesktopSelectorName) {\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n isResizingFromDesktopToMobile() {\r\n const currentWindowWidth = window.innerWidth;\r\n if (this.lastWindowWidth >= this.isDesktopSelectorName && currentWindowWidth < this.isDesktopSelectorName) {\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n clearSearch() {\r\n this.searchInput.value = '';\r\n\r\n if (this.el.classList.contains(suggestionsVisibleClass)) {\r\n this.el.classList.remove(suggestionsVisibleClass);\r\n }\r\n if (this.el.classList.contains('search-input-dirty')) {\r\n this.el.classList.remove('search-input-dirty');\r\n }\r\n },\r\n\r\n onOverlayClick() {\r\n this.closeSubMenu();\r\n this.overlayEl.classList.remove(isActiveClass);\r\n this.hideSearch();\r\n },\r\n\r\n addMenuClasses() {\r\n document.querySelector('.O201-header__tools__menu-btn').classList.add(menuOpenClass);\r\n this.el.classList.add(menuOpenClass);\r\n document.documentElement.classList.add(menuOpenClass);\r\n this.isMainMenuOpen = true;\r\n },\r\n\r\n removeMenuClasses() {\r\n document.querySelector('.O201-header__tools__menu-btn').classList.remove(menuOpenClass);\r\n this.el.classList.remove(menuOpenClass);\r\n document.documentElement.classList.remove(menuOpenClass);\r\n this.isMainMenuOpen = false;\r\n },\r\n\r\n addLanguageClasses() {\r\n this.languageBtn.classList.add(languageOpenClass);\r\n this.el.classList.add(languageOpenClass);\r\n document.documentElement.classList.add(languageOpenClass);\r\n this.isLanguageMenuOpen = true;\r\n },\r\n\r\n removeLanguageClasses() {\r\n this.languageBtn.classList.remove(languageOpenClass);\r\n this.el.classList.remove(languageOpenClass);\r\n document.documentElement.classList.remove(languageOpenClass);\r\n\r\n if (this.languageSelector) {\r\n this.languageSelector.classList.remove(isOpenClass);\r\n }\r\n\r\n this.isLanguageMenuOpen = false;\r\n },\r\n\r\n onClickMenu(e) {\r\n this.trackOpenLanguageDropdown();\r\n e.preventDefault();\r\n this.removeLanguageClasses();\r\n\r\n if (e.delegateTarget.classList.contains(menuOpenClass)) {\r\n this.removeMenuClasses();\r\n this.el.classList.remove(headerSearchOpenClass);\r\n return;\r\n }\r\n\r\n this.addMenuClasses();\r\n this.el.classList.add('right-transition');\r\n this.el.classList.add(headerSearchOpenClass);\r\n },\r\n\r\n onLanguageClick(e) {\r\n this.trackOpenLanguageDropdown();\r\n this.hideSearch();\r\n e.preventDefault();\r\n\r\n if (e.delegateTarget.classList.contains(languageOpenClass)) {\r\n this.removeLanguageClasses();\r\n return;\r\n }\r\n\r\n if (this.languageSelector) {\r\n this.openSubMenu(this.languageSelector, e);\r\n this.addLanguageClasses();\r\n }\r\n\r\n this.removeMenuClasses();\r\n if (this.el.classList.contains('right-transition')) {\r\n this.el.classList.remove('right-transition');\r\n }\r\n },\r\n\r\n onTopNavClick(e) {\r\n const hasSub = e.delegateTarget.classList.contains('has-sub');\r\n const childElem = e.target.closest('.js-menu-sub-item');\r\n if (!hasSub || childElem) {\r\n // No sub-items or sub-item click, so just go to the link - default behaviour.\r\n return;\r\n }\r\n e.preventDefault();\r\n this.hideSearch();\r\n this.openSubMenu(e.delegateTarget, e);\r\n },\r\n\r\n onSubItemClick(e) {\r\n // Allow default clicking behaviour on sub-item\r\n e.stopPropagation();\r\n\r\n if (e.delegateTarget.dataset.languageName) {\r\n this.trackSelectLanguage(e);\r\n }\r\n },\r\n\r\n onSearchClick() {\r\n this.trackOpenSearch();\r\n this.closeSubMenu();\r\n this.overlayEl.classList.add(isActiveClass);\r\n this.el.classList.add(headerSearchOpenClass);\r\n this.searchInput.value = '';\r\n this.searchInput.focus();\r\n },\r\n\r\n openSubMenu(param, e) {\r\n this.trackOpenDropdown(e);\r\n if (param.classList.contains(isOpenClass)) {\r\n param.classList.remove(isOpenClass);\r\n this.overlayEl.classList.remove(isActiveClass);\r\n return;\r\n }\r\n\r\n this.closeSubMenu();\r\n param.classList.add(isOpenClass);\r\n this.overlayEl.classList.add(isActiveClass);\r\n },\r\n\r\n closeSubMenu() {\r\n [].forEach.call(document.querySelectorAll('.dropdown.is-open'), (elem) => {\r\n elem.classList.remove(isOpenClass);\r\n });\r\n if (this.languageBtn.classList.contains(languageOpenClass)) {\r\n this.languageBtn.classList.remove(languageOpenClass);\r\n }\r\n },\r\n\r\n hideSearch() {\r\n if (!this.isMobile()) {\r\n if (this.el.classList.contains(headerSearchOpenClass)) {\r\n this.el.classList.remove(headerSearchOpenClass);\r\n }\r\n if (this.el.classList.contains(suggestionsVisibleClass)) {\r\n this.el.classList.remove(suggestionsVisibleClass);\r\n }\r\n }\r\n },\r\n\r\n searchKeyUp(e) {\r\n if (this.el.classList.contains(suggestionsVisibleClass)) {\r\n this.el.classList.remove(suggestionsVisibleClass);\r\n }\r\n // Close when pressing ESC\r\n if (e.keyCode === KeyCodes.Esc) {\r\n if (this.el.classList.contains(headerSearchOpenClass)) {\r\n this.hideSearch();\r\n }\r\n } else {\r\n this.el.classList.add('search-input-dirty');\r\n\r\n if (e.target.value === '') {\r\n this.el.classList.remove('search-input-dirty');\r\n }\r\n clearTimeout(this.typingTimeout);\r\n this.typingTimeout = setTimeout(() => {\r\n this.getSuggestions(e.target.value);\r\n }, 50);\r\n }\r\n },\r\n\r\n getSuggestions(value) {\r\n if (this.el.classList.contains(suggestionsVisibleClass)) {\r\n this.el.classList.remove(suggestionsVisibleClass);\r\n }\r\n const promise = this.search.suggest(value);\r\n\r\n promise.then((response) => {\r\n const resultList = this.el.querySelector('.O201-header__search__suggestions__list');\r\n\r\n const template = resultList.children[0].cloneNode(true);\r\n resultList.innerHTML = '';\r\n resultList.appendChild(template);\r\n\r\n if (response && response.items && response.items.length > 0) {\r\n const items = response.items.slice(0, Math.min(6, response.items.length));\r\n\r\n items.forEach((item) => {\r\n const li = document.createElement('li');\r\n resultList.appendChild(li);\r\n\r\n li.appendChild(template.children[0].cloneNode(true));\r\n li.appendChild(template.children[1].cloneNode(true));\r\n li.childNodes[1].innerHTML = item.label;\r\n li.childNodes[1].setAttribute('href', `${this.searchUrl}?q=${encodeURI(item.label)}`);\r\n });\r\n\r\n this.el.classList.add(suggestionsVisibleClass);\r\n }\r\n });\r\n },\r\n\r\n isMobile() {\r\n const currentWindowWidth = window.innerWidth;\r\n if (currentWindowWidth <= this.isDesktopSelectorName) {\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n trackOpenLanguageDropdown() {\r\n App.tracking.trackParafonEvent('main navigation', 'open mobile menu', '(O201) Header');\r\n },\r\n\r\n trackOpenMobileMenu() {\r\n App.tracking.trackParafonEvent('main navigation', 'open locale selector', '(O201) Header');\r\n },\r\n\r\n trackSelectLanguage(e) {\r\n App.tracking.trackParafonEvent(\r\n 'main navigation',\r\n 'select locale',\r\n '(O201) Header',\r\n e.delegateTarget.dataset.languageName\r\n );\r\n },\r\n\r\n trackSubmitSearchForm(e) {\r\n App.tracking.trackParafonEvent('main navigation', 'search by query', '(O201) Header', e.target['q'].value);\r\n },\r\n\r\n trackOpenDropdown(e) {\r\n let target = e.target || e.delegateTarget;\r\n App.tracking.trackParafonEvent('main navigation', 'open dropdown', '(O201) Header', target.innerText);\r\n },\r\n\r\n trackOpenSearch() {\r\n App.tracking.trackParafonEvent('main navigation', 'open search', '(O201) Header');\r\n },\r\n\r\n trackSelectSuggest(e) {\r\n App.tracking.trackParafonEvent('main navigation', 'search by suggestion', '(O201) Header', e.target.innerHTML);\r\n },\r\n});\r\n\r\nexport default O201headerview;\r\n","/**\r\n * O202 Parafon Footer View\r\n *\r\n */\r\n\r\nimport Accordion from '../../../framework/accordion';\r\nimport { ServerView } from '../../../framework/server-side-views';\r\n\r\nconst O202ParafonFooterView = ServerView.extend({\r\n el: '.O202-parafon-footer',\r\n\r\n events: {\r\n 'click .O202-parafon-footer__back-to-top-button': 'backToTop',\r\n },\r\n\r\n onRender() {\r\n this.accordion = new Accordion({\r\n parent: this.el,\r\n mdSelector: '.js-accordion-md',\r\n });\r\n },\r\n\r\n backToTop() {\r\n window.scrollTo({ top: 0, behavior: 'smooth' });\r\n this.trackBackToTop();\r\n },\r\n\r\n trackBackToTop() {\r\n App.tracking.trackParafonEvent('mobile', 'go back to top', '(O202) Footer');\r\n },\r\n});\r\n\r\nexport default O202ParafonFooterView;\r\n","/**\r\n * O204-benefits-accordion-block\r\n *\r\n */\r\n\r\nimport Accordion from '../../../framework/accordion';\r\nimport { ServerView } from '../../../framework/server-side-views';\r\n\r\nconst O204BenefitsAccordionBlockView = ServerView.extend({\r\n el: '.O204-benefits-accordion-block',\r\n\r\n onRender() {\r\n this.accordion = new Accordion({\r\n parent: '.O204-benefits-accordion-block__faq',\r\n selector: '.O204-benefits-accordion-block__item__title',\r\n target: '.O204-benefits-accordion-block__item__text',\r\n slideDuration: 400,\r\n slideEasing: 'easeInOutQuad',\r\n closeOthers: true,\r\n });\r\n },\r\n});\r\n\r\nexport default O204BenefitsAccordionBlockView;\r\n","export class SwipeEventDispatcher {\r\n constructor(element, options = {}) {\r\n this.evtMap = {\r\n SWIPE_LEFT: [],\r\n SWIPE_UP: [],\r\n SWIPE_DOWN: [],\r\n SWIPE_RIGHT: [],\r\n };\r\n\r\n this.xDown = null;\r\n this.yDown = null;\r\n this.element = element;\r\n this.options = Object.assign({ triggerPercent: 0.25 }, options);\r\n\r\n element.addEventListener('touchstart', (evt) => this.handleTouchStart(evt), { passive: true });\r\n element.addEventListener('touchend', (evt) => this.handleTouchEnd(evt), { passive: true });\r\n }\r\n\r\n on(evt, cb) {\r\n this.evtMap[evt].push(cb);\r\n }\r\n\r\n off(evt, lcb) {\r\n this.evtMap[evt] = this.evtMap[evt].filter((cb) => cb !== lcb);\r\n }\r\n\r\n trigger(evt, data) {\r\n this.evtMap[evt].map((handler) => handler(data));\r\n }\r\n\r\n handleTouchStart(evt) {\r\n this.xDown = evt.touches[0].clientX;\r\n this.yDown = evt.touches[0].clientY;\r\n }\r\n\r\n handleTouchEnd(evt) {\r\n const deltaX = evt.changedTouches[0].clientX - this.xDown;\r\n const deltaY = evt.changedTouches[0].clientY - this.yDown;\r\n const distMoved = Math.abs(Math.abs(deltaX) > Math.abs(deltaY) ? deltaX : deltaY);\r\n const activePct = distMoved / this.element.offsetWidth;\r\n\r\n if (activePct > this.options.triggerPercent) {\r\n if (Math.abs(deltaX) > Math.abs(deltaY)) {\r\n deltaX < 0 ? this.trigger('SWIPE_LEFT') : this.trigger('SWIPE_RIGHT');\r\n } else {\r\n deltaY > 0 ? this.trigger('SWIPE_UP') : this.trigger('SWIPE_DOWN');\r\n }\r\n }\r\n }\r\n}\r\n","import { ServerView } from '../../../framework/server-side-views';\r\n\r\nconst ParafonBtnsNavigation = ServerView.extend({\r\n el: '.parafon-btns-navigation',\r\n events: {\r\n 'click .js-btn': 'onClickBtn',\r\n },\r\n onRender() {\r\n window.addEventListener('scroll', this.onWindowScroll.bind(this), { passive: true });\r\n\r\n this.initOffsetTop = this.el.offsetTop;\r\n this.navigation = this.el.querySelectorAll('.parafon-btns-navigation__content a');\r\n },\r\n onClickBtn(e) {\r\n e.preventDefault();\r\n const element = e.delegateTarget;\r\n\r\n [].forEach.call(this.el.querySelectorAll('a.is-active'), (el) => {\r\n el.classList.remove('is-active');\r\n });\r\n element.classList.add('is-active');\r\n\r\n const elementToMove = document.getElementById(element.hash.replace('#', ''));\r\n\r\n elementToMove.scrollIntoView();\r\n },\r\n\r\n onWindowScroll() {\r\n if (window.pageYOffset >= this.initOffsetTop) {\r\n this.el.classList.add('is-sticky');\r\n } else {\r\n this.el.classList.remove('is-sticky');\r\n }\r\n\r\n const scrollPos = window.scrollY || window.pageYOffset;\r\n [].forEach.call(this.navigation, (select) => {\r\n const refElement = document.querySelector(select.getAttribute('href'));\r\n if (refElement && refElement.offsetTop - 100 <= scrollPos) {\r\n [].forEach.call(this.el.querySelectorAll('a.is-active'), (el) => {\r\n el.classList.remove('is-active');\r\n });\r\n select.classList.add('is-active');\r\n } else {\r\n select.classList.remove('is-active');\r\n }\r\n });\r\n },\r\n});\r\n\r\nexport default ParafonBtnsNavigation;\r\n","import type { FuncCreateElements } from './types';\r\n\r\nexport const elementsFactory = (name: string, render: FuncCreateElements, destroy?: () => void, isClass = true) => {\r\n const elements = document.querySelectorAll(isClass ? `.${name}` : name);\r\n\r\n const create = () => {\r\n [].forEach.call(elements, (el: HTMLElement) => {\r\n if (el.dataset.initilaizedElements == null || !el.dataset.initilaizedElements.includes(name)) {\r\n render(el);\r\n el.dataset.initilaizedElements = `${el.dataset.initilaizedElements ?? ''} ${name}`;\r\n }\r\n });\r\n };\r\n\r\n const destroyElements = () => {\r\n if (destroy) {\r\n [].forEach.call(elements, (el: { dataset: { initilaizedElements: string } }) => {\r\n destroy();\r\n if (el.dataset.initilaizedElements) {\r\n el.dataset.initilaizedElements = el.dataset.initilaizedElements.replace(name, '');\r\n }\r\n });\r\n }\r\n };\r\n\r\n return { create, destroy: destroyElements };\r\n};\r\n","/* eslint-disable max-classes-per-file */\r\n/**\r\n * Accordion\r\n *\r\n * @author Daniel Kvistgaard \r\n */\r\n\r\nimport _ from 'underscore';\r\nimport EventEmitter from 'events';\r\nimport { PubSubKeys, PubSub } from '@utils/pubSub';\r\nimport * as customFunctions from './custom-functions';\r\n\r\n// Setting up default options parameters\r\nconst defaults = {\r\n selector: '.js-accordion',\r\n forceOpen: 'js-accordion-force-open',\r\n target: '.js-accordion__target',\r\n closeSelector: false,\r\n openClass: 'has-accordion-open',\r\n\r\n targetIsNext: false,\r\n closeOthers: true,\r\n scrollIntoView: false,\r\n\r\n slideDuration: 300,\r\n slideEasing: 'easeOutQuad',\r\n rowDisplay: 'block',\r\n};\r\n\r\n/**\r\n * Instance\r\n * A single instance of an accordion container.\r\n */\r\nclass Instance extends EventEmitter {\r\n constructor(options) {\r\n super();\r\n\r\n this.eventsNamespace = [];\r\n this.options = options;\r\n this.group = this.options.group;\r\n this.el = this.options.el;\r\n this.isDesktopSelectorName = this.options.isDesktopSelectorName || App.mq.desktop;\r\n this.mdTargetSelector = this.options.mdTargetSelector || `${this.options.mdSelector}--target`;\r\n this.xsTargetSelector = this.options.xsTargetSelector || `${this.options.xsSelector}--target`;\r\n\r\n // Used to check if tablet/mobile events are bound\r\n this.mdEventsBound = false;\r\n this.xsEventsBound = false;\r\n\r\n // Checking if the media query matches the desktop size breakpoint\r\n this.isDesktop = Modernizr.mq(`(min-width: ${this.isDesktopSelectorName}px)`);\r\n this.isMobile = Modernizr.mq(`(max-width: ${App.mq.tablet - 1}px)`);\r\n\r\n // Trigger for closing all accordions in this instance\r\n this.on('close', () => {\r\n // Selecting all normal accordion selectors to close them\r\n const allElems = this.el.querySelectorAll(this.options.selector);\r\n const otherOpen = this.el.querySelectorAll(`${this.options.selector}.${this.options.openClass}`);\r\n\r\n // Looping through the accordions, getting their target element\r\n // and triggering the close function\r\n [].forEach.call(allElems, (elem) => {\r\n const target = this.getElTarget(elem);\r\n this.close(elem, target, !!otherOpen.length);\r\n });\r\n\r\n // If we aren't on a desktop device (mobile or tablet), then also the accordions\r\n // for tablet and mobile devices needs to be closed.\r\n if (!this.isDesktop && this.options.mdSelector) {\r\n const allMdElems = this.el.querySelectorAll(this.options.mdSelector);\r\n\r\n // Looping through the accordions, getting their target element\r\n // and triggering the close function\r\n [].forEach.call(allMdElems, (elem) => {\r\n const target = this.getElTarget(elem, this.mdTargetSelector);\r\n this.close(elem, target, !!otherOpen.length);\r\n });\r\n }\r\n });\r\n\r\n // Binding user action events\r\n customFunctions.delegateSelectorInElement(\r\n [this.el],\r\n 'click',\r\n this.options.selector,\r\n this.onClick.bind(this, this.options.target)\r\n );\r\n customFunctions.delegateSelectorInElement(\r\n [this.el],\r\n 'click',\r\n this.options.mdSelector,\r\n this.onClick.bind(this, this.mdTargetSelector)\r\n );\r\n customFunctions.delegateSelectorInElement(\r\n [this.el],\r\n 'click',\r\n this.options.xsSelector,\r\n this.onClick.bind(this, this.xsTargetSelector)\r\n );\r\n\r\n if (this.options.closeSelector && typeof this.options.closeSelector === 'string') {\r\n customFunctions.delegateSelectorInElement(\r\n [this.el],\r\n 'click',\r\n this.options.closeSelector,\r\n this.onClickClose.bind(this, this.options.target)\r\n );\r\n customFunctions.delegateSelectorInElement(\r\n [this.el],\r\n 'click',\r\n this.options.mdSelector,\r\n this.onClickClose.bind(this, this.mdTargetSelector)\r\n );\r\n customFunctions.delegateSelectorInElement(\r\n [this.el],\r\n 'click',\r\n this.options.xsSelector,\r\n this.onClickClose.bind(this, this.xsTargetSelector)\r\n );\r\n }\r\n }\r\n\r\n // Checking if the clicked target was a link\r\n // that should follow user somewhere instead\r\n // of opening accordion.\r\n isTargetLink(target) {\r\n if (target?.tagName?.toString() === 'A') {\r\n // a link was clicked.\r\n if (!customFunctions.is(target, this.options.targetSelector)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * onClick\r\n *\r\n * @param {String} targetSelector\r\n * @param {Object} e\r\n */\r\n onClick(targetSelector, e) {\r\n if (this.isTargetLink(e.target)) {\r\n if (!e.target.classList.contains(defaults.forceOpen)) {\r\n return;\r\n }\r\n }\r\n\r\n if (e && e.cancelable) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n const { userAgent } = window.navigator;\r\n this.isIE = userAgent.indexOf('MSIE ') >= 0 || userAgent.indexOf('Trident/') >= 0;\r\n\r\n const el = this.setElement(e);\r\n\r\n // Fix to stop some of the rows jumping in IE\r\n const tableRow = el.parentNode.parentNode;\r\n const tableRowChildren = tableRow.querySelectorAll('th');\r\n\r\n if (this.isIE && tableRow) {\r\n _.each(tableRowChildren, (element) => {\r\n const initialWidth = window.getComputedStyle(element, null).getPropertyValue('width');\r\n element.style.width = initialWidth;\r\n });\r\n }\r\n\r\n // Stop if we don't have a target to open\r\n if (!this.options.target && !targetSelector) {\r\n return;\r\n }\r\n\r\n if (!this._canOpenBasedOnVersion(targetSelector)) {\r\n return;\r\n }\r\n\r\n // Getting the target\r\n const target = this.getElTarget(el, targetSelector);\r\n this.clickOpen(el, target);\r\n }\r\n\r\n setElement(e) {\r\n let el = e.target;\r\n let className = this.options.selector;\r\n\r\n if (className[0]?.toString() === '.') {\r\n className = className.substring(1);\r\n }\r\n if (![].some.call(e.target.classList, (cl) => cl.includes(className))) {\r\n const [firstEl] = e.target.parents(`[class*='${className}']`);\r\n el = firstEl;\r\n }\r\n return el;\r\n }\r\n\r\n _canOpenBasedOnVersion(targetSelector) {\r\n this.isDesktop = Modernizr.mq(`(min-width: ${this.isDesktopSelectorName}px)`);\r\n this.isMobile = Modernizr.mq(`(max-width: ${App.mq.tablet - 1}px)`);\r\n\r\n if (\r\n this.isDesktop &&\r\n (targetSelector === this.options.mdTargetSelector || targetSelector === this.options.xsTargetSelector)\r\n ) {\r\n return false;\r\n }\r\n if (!this.isMobile && targetSelector === this.options.xsTargetSelector) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * onClickClose\r\n */\r\n onClickClose(targetSelector, e) {\r\n if (this.isTargetLink(e.target)) {\r\n // if we got there - the link was clicked and it is not\r\n // the trigger to open/close the accordion, so we\r\n // should fallback to the default behaviour, not\r\n // proceed with our code.\r\n return;\r\n }\r\n\r\n if (e && e.cancelable) {\r\n e.preventDefault();\r\n }\r\n\r\n // Stop if we don't have a target to close\r\n if (!this.options.target && !targetSelector) {\r\n return;\r\n }\r\n\r\n // Getting the target\r\n const el = e.currentTarget;\r\n const target = Instance.closest(el, targetSelector);\r\n const btnEl = this.getElTarget(target, this.options.selector);\r\n\r\n this.close(btnEl, target, false);\r\n }\r\n\r\n /**\r\n * Opening an element and checking if others are open.\r\n *\r\n * @param {HTMLElement} el\r\n * @param {HTMLElement} target\r\n */\r\n clickOpen(el, target) {\r\n const opening = !el.classList.contains(this.options.openClass);\r\n\r\n // Figuring out if other accordion items are open\r\n const otherOpen = this.el.querySelectorAll(`${this.options.selector}.${this.options.openClass}`);\r\n\r\n // Close other open accordions (unless closeOthers are set to false)\r\n if (opening && this.options.closeOthers && otherOpen.length > 0) {\r\n this.emit('close');\r\n }\r\n\r\n // Toggling the accordion\r\n if (opening) {\r\n this.open(el, target, !!otherOpen.length);\r\n } else {\r\n this.close(el, target, false);\r\n }\r\n }\r\n\r\n /**\r\n * getElTarget\r\n * Getting the target element of a specified element in its context.\r\n *\r\n * @param {HTMLElement} el - the DOM element of which we want to find its target\r\n * @param {String} targetSelector\r\n */\r\n getElTarget(el, targetSelector) {\r\n // Getting the target\r\n const containsTarget = (targetSelector || this.options.target).replace('.', '');\r\n const elem = this.options.selectorParent ? Instance.closest(el, this.options.selectorParent) : el;\r\n let target = null;\r\n\r\n if (this.options.targetIsNext) {\r\n const nextEl = elem.nextElementSibling;\r\n const nextIsElem = nextEl && nextEl instanceof HTMLElement;\r\n target = nextIsElem && nextEl.classList.contains(containsTarget) ? nextEl : false;\r\n\r\n if (!target && nextIsElem && nextEl.querySelector(targetSelector || this.options.target)) {\r\n target = nextEl.querySelector(targetSelector || this.options.target);\r\n }\r\n\r\n if (target) {\r\n return target;\r\n }\r\n }\r\n\r\n target = elem.parentNode.querySelector(targetSelector || this.options.target);\r\n\r\n // If we can't find the target within the parentNode, then we'll expand the search a bit\r\n if (!target) {\r\n target = elem.parentNode.parentNode.querySelector(targetSelector || this.options.target);\r\n }\r\n\r\n return target;\r\n }\r\n\r\n /**\r\n * Opening an accordion element.\r\n *\r\n * @param {HTMLElement} el\r\n * @param {HTMLElement} target\r\n */\r\n open(el, target, otherOpen) {\r\n const targetEl = !target || typeof target === 'string' ? this.getElTarget(el, target) : target;\r\n const item = this.options.item ? Instance.closest(el, this.options.item) : null;\r\n const selectorParent =\r\n targetEl && this.options.selectorParent ? Instance.closest(targetEl, this.options.selectorParent) : null;\r\n\r\n el.classList.add(this.options.openClass);\r\n\r\n if (this.options.parentOpenClass && !otherOpen) {\r\n this.el.classList.add(this.options.openClass);\r\n }\r\n\r\n if (item) {\r\n item.classList.add(this.options.openClass);\r\n }\r\n\r\n if (targetEl) {\r\n targetEl.classList.add(this.options.openClass);\r\n }\r\n\r\n if (selectorParent) {\r\n selectorParent.classList.add(`${this.options.openClass}--parent`);\r\n }\r\n\r\n if (this.options.indicatorSelector) {\r\n [].forEach.call(el.querySelectorAll(this.options.indicatorSelector), (e) => {\r\n e.classList.add(this.options.openClass);\r\n });\r\n }\r\n\r\n // Calling beforeOpen if it's set.\r\n // beforeOpen makes it possible to do calculations or similar before the accordion item opens\r\n if (this.options.beforeOpen && _.isFunction(this.options.beforeOpen)) {\r\n this.options.beforeOpen(otherOpen, targetEl, item, () => {\r\n if (targetEl) {\r\n this.slide(targetEl, 'down');\r\n }\r\n });\r\n } else if (targetEl) {\r\n this.slide(targetEl, 'down');\r\n }\r\n }\r\n\r\n /**\r\n * Closing an accordion element.\r\n *\r\n * @param {HTMLElement} el\r\n * @param {HTMLElement} target\r\n */\r\n close(el, target, otherOpen) {\r\n const targetEl = !target || typeof target === 'string' ? this.getElTarget(el, target) : target;\r\n const item = this.options.item ? Instance.closest(el, this.options.item) : null;\r\n\r\n // Prevent closing elements that aren't open\r\n if (!el.classList.contains(this.options.openClass)) {\r\n return;\r\n }\r\n\r\n el.classList.remove(this.options.openClass);\r\n\r\n if (this.options.parentOpenClass && !otherOpen) {\r\n this.el.classList.remove(this.options.openClass);\r\n }\r\n\r\n if (item) {\r\n item.classList.remove(this.options.openClass);\r\n }\r\n\r\n if (targetEl) {\r\n targetEl.classList.remove(this.options.openClass);\r\n }\r\n\r\n if (this.options.indicatorSelector) {\r\n [].forEach.call(el.querySelectorAll(this.options.indicatorSelector), (e) => {\r\n e.classList.remove(this.options.openClass);\r\n });\r\n }\r\n\r\n // Calling beforeClose if it's set.\r\n // beforeClose makes it possible to do calculations or similar before the accordion item closes\r\n if (this.options.beforeClose && _.isFunction(this.options.beforeClose)) {\r\n this.options.beforeClose(otherOpen, targetEl, item, () => {\r\n if (targetEl) {\r\n this.slide(targetEl, 'up');\r\n }\r\n });\r\n } else if (targetEl) {\r\n this.slide(targetEl, 'up');\r\n }\r\n }\r\n\r\n /**\r\n * Clearing all tablet/mobile setup (classes and stylings).\r\n * This is used when we go from tablet/mobile to desktop.\r\n */\r\n clearMdSetup() {\r\n const mdSelectors = this.el.querySelectorAll(this.options.mdSelector);\r\n const mdTargets = this.el.querySelectorAll(this.mdTargetSelector);\r\n\r\n [].forEach.call(mdSelectors, (mdSelector) => {\r\n mdSelector.classList.remove(this.options.openClass);\r\n });\r\n\r\n [].forEach.call(mdTargets, (mdTarget) => {\r\n mdTarget.style.display = '';\r\n mdTarget.classList.add(this.options.openClass);\r\n });\r\n }\r\n\r\n /**\r\n * Clearing all mobile setup (classes and stylings).\r\n * This is used when we go from mobile to tablet/desktop.\r\n */\r\n clearXsSetup() {\r\n const xsSelectors = this.el.querySelectorAll(this.options.xsSelector);\r\n const xsTargets = this.el.querySelectorAll(this.xsTargetSelector);\r\n\r\n [].forEach.call(xsSelectors, (xsSelector) => {\r\n xsSelector.classList.remove(this.options.openClass);\r\n });\r\n\r\n [].forEach.call(xsTargets, (xsTarget) => {\r\n xsTarget.style.display = '';\r\n xsTarget.classList.add(this.options.openClass);\r\n });\r\n }\r\n\r\n /**\r\n * Slide up or down functionality\r\n * Velocity doesn't handle stress sliding very well, so we had to remake\r\n * the functionality.\r\n *\r\n * @param {HTMLElement} target\r\n * @param {String} direction - values: 'up' or 'down'\r\n */\r\n async slide(target, direction) {\r\n const self = this;\r\n const selectorParent = this.options.selectorParent ? Instance.closest(target, this.options.selectorParent) : null;\r\n const targetStyles = window.getComputedStyle(target);\r\n let height = 0;\r\n let paddingTop = 0;\r\n let paddingBottom = 0;\r\n\r\n // Stop any previous velocity animations\r\n const Velocity = (await import('velocity-animate')).default;\r\n Velocity.animate(target, 'stop');\r\n\r\n if (direction === 'down') {\r\n const prevHeight = target.offsetHeight;\r\n const prevPaddingTop = prevHeight === 0 ? 0 : parseInt(targetStyles.getPropertyValue('padding-top') || 0, 10);\r\n const prevPaddingBottom =\r\n prevHeight === 0 ? 0 : parseInt(targetStyles.getPropertyValue('padding-bottom') || 0, 10);\r\n\r\n target.style.display = this.options.rowDisplay;\r\n target.style.height = '';\r\n target.style.paddingTop = '';\r\n target.style.paddingBottom = '';\r\n\r\n height = target.offsetHeight;\r\n paddingTop = parseInt(targetStyles.getPropertyValue('padding-top'), 10);\r\n paddingBottom = parseInt(targetStyles.getPropertyValue('padding-bottom'), 10);\r\n\r\n target.style.height = `${prevHeight}px`;\r\n target.style.paddingTop = `${prevPaddingTop}px`;\r\n target.style.paddingBottom = `${prevPaddingBottom}px`;\r\n }\r\n\r\n target.style.overflow = 'hidden';\r\n\r\n Velocity.animate(\r\n target,\r\n {\r\n height,\r\n paddingTop,\r\n paddingBottom,\r\n },\r\n {\r\n duration: this.options.slideDuration,\r\n easing: this.options.slideEasing,\r\n\r\n complete() {\r\n if (direction === 'up') {\r\n target.style.display = '';\r\n\r\n if (selectorParent) {\r\n selectorParent.classList.remove(`${self.options.openClass}--parent`);\r\n }\r\n }\r\n\r\n target.style.overflow = '';\r\n target.style.height = '';\r\n target.style.paddingTop = '';\r\n target.style.paddingBottom = '';\r\n\r\n if (\r\n direction === 'down' &&\r\n (self.options.scrollIntoView === true ||\r\n (App.mq[self.options.scrollIntoView] &&\r\n Modernizr.mq(`(max-width: ${App.mq[self.options.scrollIntoView] - 1}px)`)))\r\n ) {\r\n self.scrollIntoView(target);\r\n }\r\n },\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Scrolling the target into view.\r\n *\r\n * @param {HTMLElement} target\r\n */\r\n async scrollIntoView(target) {\r\n const targetEl = this.options.item ? Instance.closest(target, this.options.item) : target;\r\n const headerHeight = PubSub.request(PubSubKeys.headerGetHeight);\r\n const scrollTop = window.scrollY || window.pageYOffset;\r\n const top = targetEl.getBoundingClientRect().top + scrollTop;\r\n const bottom = top + targetEl.offsetHeight;\r\n const windowTop = scrollTop + headerHeight;\r\n const windowBottom = scrollTop + window.innerHeight;\r\n if (top < windowTop || bottom > windowBottom) {\r\n const Velocity = (await import('velocity-animate')).default;\r\n Velocity.animate(targetEl, 'scroll', {\r\n offset: (headerHeight + 50) * -1,\r\n duration: this.options.slideDuration,\r\n easing: 'easeOutQuad',\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Finding the closest element in the parent tree.\r\n *\r\n * @param {HTMLElement} el\r\n * @param {String} target\r\n */\r\n static closest(el, target) {\r\n let ancestor = el;\r\n\r\n if (!document.documentElement.contains(el)) {\r\n return null;\r\n }\r\n\r\n do {\r\n if (ancestor.matches ? ancestor.matches(target) : ancestor.msMatchesSelector(target)) {\r\n return ancestor;\r\n }\r\n\r\n ancestor = ancestor.parentElement;\r\n } while (ancestor !== null);\r\n\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Setting up all accordion instances.\r\n * If the parent options is set as a string selector, then we'll loop\r\n * through all elements matching the selector and initialize a new instance\r\n * for that element. All items within that parent matching the selector\r\n * parameter will then get the accordion functionality attached.\r\n */\r\nclass Accordion {\r\n constructor(options) {\r\n this.options = _.extend({}, defaults, options);\r\n this.instances = [];\r\n\r\n if (this.options.parent instanceof NodeList) {\r\n [].forEach.call(this.options.parent, (parent) => {\r\n this.createInstance(parent);\r\n });\r\n } else if (this.options.parent && (_.isString(this.options.parent) || _.isArray(this.options.parent))) {\r\n const parents = _.isString(this.options.parent)\r\n ? document.querySelectorAll(this.options.parent)\r\n : this.options.parent;\r\n\r\n [].forEach.call(parents, (parent) => {\r\n this.createInstance(parent);\r\n });\r\n } else if (this.options.parent) {\r\n this.createInstance(this.options.parent);\r\n }\r\n return this;\r\n }\r\n\r\n createInstance(parent) {\r\n const initializedClass = 'accordion--initialized';\r\n if (parent.classList.contains(initializedClass)) {\r\n return;\r\n }\r\n\r\n this.instances.push(\r\n new Instance(\r\n _.extend(\r\n {\r\n el: parent,\r\n group: this,\r\n },\r\n this.options\r\n )\r\n )\r\n );\r\n parent.classList.add(initializedClass);\r\n }\r\n\r\n open(el, target) {\r\n [].forEach.call(this.instances, (instance) => {\r\n instance.clickOpen(el, target);\r\n });\r\n }\r\n\r\n /**\r\n * Closing all accordions of all instances.\r\n */\r\n closeAll() {\r\n [].forEach.call(this.instances, (instance) => {\r\n instance.emit('close');\r\n });\r\n }\r\n}\r\n\r\nexport default Accordion;\r\n","/**\r\n * Search\r\n *\r\n * @author Daniel Kvistgaard \r\n */\r\nconst defaults = window.searchApi || {\r\n culture: 'en-GB',\r\n languageCode: 'en',\r\n apiUrl: '/',\r\n site: 'ROCKWOOL',\r\n};\r\n\r\nclass Search {\r\n constructor(el, options) {\r\n this.options = Object.assign({}, defaults, options);\r\n this.apiUrl = this.options.apiUrl;\r\n this.data = Object.assign({}, this.options);\r\n delete this.data.apiUrl;\r\n }\r\n\r\n /**\r\n * Getting search suggestings based an a query string.\r\n *\r\n * @param {String} query - the search query\r\n * @return {Promise}\r\n */\r\n suggest(query) {\r\n return this._fetch(\r\n 'api/suggest',\r\n Object.assign(\r\n {},\r\n {\r\n query,\r\n },\r\n this.data\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Getting search results based an a query string.\r\n *\r\n * @param {String} query - the search query\r\n * @param {Number} page - the current pagenumber\r\n * @return {Promise}\r\n */\r\n loadMore(query, page) {\r\n return this._fetch(\r\n 'api/search',\r\n Object.assign(\r\n {},\r\n {\r\n query,\r\n page,\r\n count: 10,\r\n },\r\n this.data\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * The base fetch functionality.\r\n *\r\n * @param {String} url - the endpoint url\r\n * @param {Object} body - the post body data\r\n * @return {Promise}\r\n */\r\n _fetch(url, body) {\r\n return fetch(`${this.apiUrl}${url}`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(body),\r\n })\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error(`${response.status} - ${response.statusText} (url: ${response.url})`);\r\n }\r\n\r\n return response.json();\r\n })\r\n .catch((ex) => {\r\n console.warn('somethings wrong', ex);\r\n });\r\n }\r\n}\r\n\r\nexport default Search;\r\n","/**\r\n * Storage\r\n *\r\n * @author Daniel Kvistgaard \r\n */\r\n\r\nimport EventEmitter from 'events';\r\n\r\nconst defaults = {\r\n expiration: 2, // in days\r\n idKey: 'id',\r\n upCountOnAdd: false,\r\n};\r\n\r\nclass Storage extends EventEmitter {\r\n constructor(name, options) {\r\n super();\r\n\r\n this.name = name;\r\n this.options = Object.assign({}, defaults, options);\r\n this.data = window.localStorage.getItem(name) ? JSON.parse(window.localStorage.getItem(name)) : {};\r\n\r\n this.events();\r\n this.checkData();\r\n this.checkDate();\r\n }\r\n\r\n events() {\r\n window.addEventListener('storage', this.change.bind(this), false);\r\n }\r\n\r\n change(e) {\r\n if (e.key !== this.name) {\r\n return;\r\n }\r\n\r\n if (e.newValue !== undefined) {\r\n this.data = JSON.parse(e.newValue);\r\n }\r\n\r\n this.emit('change', this.data);\r\n }\r\n\r\n checkData() {\r\n let changed = false;\r\n\r\n if (this.data instanceof Array) {\r\n this.data = {\r\n date: new Date(),\r\n items: this.data,\r\n };\r\n changed = true;\r\n }\r\n\r\n if (!this.data.date) {\r\n this.data.date = new Date();\r\n changed = true;\r\n }\r\n\r\n if (!this.data.items || !(this.data.items instanceof Array)) {\r\n this.data.items = [];\r\n changed = true;\r\n }\r\n\r\n if (changed && this.data.items.length > 0) {\r\n this.saveData();\r\n }\r\n }\r\n\r\n checkDate() {\r\n const date = new Date(this.data.date);\r\n\r\n if (new Date() - date > 1000 * 60 * 60 * 24 * this.options.expiration) {\r\n this.data = {\r\n date: new Date(),\r\n };\r\n\r\n this.data.items = [];\r\n this.saveData();\r\n }\r\n }\r\n\r\n itemExists(item, isId = false) {\r\n return this.data.items.find((singleItem) => {\r\n return `${singleItem[this.options.idKey]}` === `${isId ? item : item[this.options.idKey]}`;\r\n });\r\n }\r\n\r\n itemIndex(item, isId = false) {\r\n return this.data.items.findIndex((singleItem) => {\r\n return `${singleItem[this.options.idKey]}` === `${isId ? item : item[this.options.idKey]}`;\r\n });\r\n }\r\n\r\n addItem(item, addingMultiple = false) {\r\n const existingItem = this.itemExists(item);\r\n\r\n if (existingItem && !this.options.upCountOnAdd) {\r\n return;\r\n }\r\n\r\n if (existingItem && this.options.upCountOnAdd) {\r\n existingItem.count += item.count;\r\n } else {\r\n this.data.items.push(item);\r\n }\r\n\r\n if (!addingMultiple) {\r\n this.saveData();\r\n }\r\n }\r\n\r\n addItems(items) {\r\n items.forEach((item) => {\r\n this.addItem(item, true);\r\n });\r\n\r\n this.saveData();\r\n }\r\n\r\n removeItem(item, removingMultiple = false) {\r\n const existingItem = this.itemExists(item);\r\n\r\n if (!existingItem) {\r\n return;\r\n }\r\n\r\n this.data.items.splice(this.data.items.indexOf(existingItem), 1);\r\n\r\n if (!removingMultiple) {\r\n this.saveData();\r\n }\r\n }\r\n\r\n replaceOrAddItemById(itemId, newItem) {\r\n const existingItemIndex = this.itemIndex(itemId, true);\r\n\r\n if (existingItemIndex > -1) {\r\n this.data.items[existingItemIndex] = newItem;\r\n } else {\r\n this.addItem(newItem);\r\n }\r\n\r\n this.saveData();\r\n }\r\n\r\n removeItemById(itemId) {\r\n const existingItem = this.itemExists(itemId, true);\r\n\r\n if (!existingItem) {\r\n return;\r\n }\r\n\r\n this.data.items.splice(this.data.items.indexOf(existingItem), 1);\r\n this.saveData();\r\n }\r\n\r\n removeItems(items) {\r\n items.forEach((item) => {\r\n this.removeItem(item, true);\r\n });\r\n\r\n this.saveData();\r\n }\r\n\r\n removeAll() {\r\n this.data.items = [];\r\n this.saveData();\r\n }\r\n\r\n saveData() {\r\n this.data.date = new Date();\r\n\r\n window.localStorage.setItem(this.name, JSON.stringify(this.data));\r\n\r\n this.change({ key: this.name });\r\n }\r\n\r\n get items() {\r\n return this.data.items;\r\n }\r\n\r\n get count() {\r\n return this.data.items.length;\r\n }\r\n}\r\n\r\nconst instances = [];\r\nconst handler = (name, options) => {\r\n let instance = instances.find((single) => {\r\n return single.name === name;\r\n });\r\n\r\n if (instance) {\r\n return instance;\r\n }\r\n\r\n instance = new Storage(name, options);\r\n instances.push(instance);\r\n\r\n return instance;\r\n};\r\n\r\nexport default handler;\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":["props","React","_extends","xmlns","width","height","viewBox","d","className","CompareProductButton","_ref","id","name","image","compareText","FigureChildren","showScaleIcon","hasVideo","fullscreenUrl","videoUrl","videoTitleLinkedIn","videoTitleYouTube","youTubeUrl","ScaleImageToFullScreenButton","VideoButton","hasEmbeddedMeta","customClassName","WrappedVideoButton","videoTitle","videoText","buttonText","useButtonWithIcon","MediaFile","mobileSrcset","imageDescription","imageCssClass","imageDataSrc","isImage","isEps","contentDataSrc","contentName","isPdf","media","srcSet","alt","tidyStr","loading","src","displayName","getDefaultButton","openLinkInNewTab","openThankYouPageInTheSamePage","cssClass","rest","_objectWithoutProperties","_excluded","Button","relationship","htmlAttributes","relAttributeWithNoopenerNoReferrerVaule","undefined","target","targetValueBlank","targetValueSelf","fileDataTarget","hasContent","PrimaryButton","_ref2","_excluded2","title","trim","link","_objectSpread","linksToVideo","style","cssStyle","onClick","points","type","ScaleIcon","SecondaryButton","getButtonContent","forwardRef","ref","videoDescription","videoImage","videoUploadDate","embeddedCodeWithoutIframe","VideoIcon","suppressHydrationWarning","dangerouslySetInnerHTML","__html","length","seoData","data","description","contentUrl","thumbnailUrl","uploadDate","JSON","stringify","BaseCardLink","file","url","classNames","label","_label","relValue","useMemo","value","relAttribute","split","replaceAll","dataAttributes","source","obj","Object","keys","filter","k","startsWith","forEach","key","map","chunk","toLocaleLowerCase","join","Link","testId","nonFile","showIcon","rel","gatedContent","FileDownloadLink","isGated","overrideClassNames","clasName","gated","nonGated","dataObject","BaseCardContentWrapper","children","wrap","BaseCard","extensions","hasImage","overlay","imageMaxWidth","primaryBtn","secondaryBtn","centerAligned","singleStacked","hasLabels","hideLabels","labels","hasDescription","hasTitle","brandClass","hasBrand","brandLabel","unwrap","events","labelDateString","innerTextLabel","figureChildren","displayDate","customBtnWrapChildren","useBodyLink","filteredSplittedLabels","flatMap","splittedLabel","styles","Image","sizes","screenSizes","tablet","draggable","ProductCard","deepLinkId","hasAnchorId","bundleDetails","headline","linkText","secondaryButton","hideImages","orderSampleButton","cardExtensionCss","useMediaFileImage","useJsOrderSampleEdgeOptions","onClickCard","labelCssExtensions","productCardBtnWrapChildren","excerpt","card","entries","divider","Handlebars","require","template","templates","container","depth0","helpers","partials","helper","alias1","nullContext","alias2","hooks","helperMissing","alias3","alias4","escapeExpression","lookupProperty","parent","propertyName","prototype","hasOwnProperty","call","stack1","program","noop","requestMethod","historyStateKey","availableTemplates","internalUrl","inboundLinkTarget","imageUrl","altText","brand","metaLabel","metaTitle","metaDescription","dateString","metaCTA","imageClass","svg","ArrowIcon","iconName","Boolean","hasOverLay","isFullLink","isHiddenFromSearch","isArticle","mediaSize","mediaType","bodyText","hasHeadline","hasText","mediaUrl","fileName","linkTarget","trackingLabel","linkUrl","secondaryBtnObj","isWhiteIcon","DownloadIcon","fileTitle","fileType","fileCategory","dataTrackingAction","hrefAttribute","dataTrackingCategory","targetAttribute","dataTrackingLabel","dataTrackingFileType","readMoreLabel","topicLabels","metaAltTextWithFallback","areaOfInterest","country","viewPostText","hasMedia","productCategories","properties","dimensionTitle","colorsTitle","edgesTitle","reactionToFireTitle","viewProductTitle","pageType","hideCompare","bundleDetailsObj","dimensions","colors","edges","reactionToFire","filterProperties","viewProduct","location","goToPageText","href","AjaxList","el","isLoading","setIsLoading","useState","templatesToAppend","setTemplatesToAppend","replacementViewTemplates","setReplacementViewTemplates","isReplacingComponents","setIsReplacingComponents","itemTemplate","querySelector","getAttribute","itemContainer","useRef","itemContainersRef","fetchOptions","pagenumber","fetchBody","isJobList","classList","contains","listId","isReportList","isEventDetailRow","isBlogPosts","isPageType","isAdditionalFilters","dataSelectedType","noResults","fetchMethod","moreEndpoint","toLowerCase","apiUrl","window","searchApi","initializeReactRootWithTemplates","wrapperSpan","document","createElement","createRoot","render","useEffect","current","requestAnimationFrame","replaceChildren","handleMasonryUpdate","Array","from","child","appendChild","onClickMore","e","preventDefault","getItems","loadMoreBtn","addEventListener","removeEventListener","getListIdKey","getElementsByClassName","indexOf","getHistoryState","history","state","checkEmptyLabels","parentNode","querySelectorAll","innerText","display","onChangeSelect","currentTarget","HTMLSelectElement","handleSelectDimming","dispatchEvent","eventName","element","event","CustomEvent","detail","createEvent","initCustomEvent","checkIfMore","response","allItems","hasMore","totalCount","renderItem","model","index","templateProps","templateData","item","fillTemplateData","Component","renderItems","items","list","isArray","contents","add","innerHTML","setTimeout","remove","itemsMarkup","totalIndex","allContainersFilled","indexes","remainingItems","slice","replaceAndRenderItems","PubSub","trigger","PubSubKeys","scrollRevealNewElements","updateJobFilterCounts","filters","filterEl","filterBlockItems","count","addParameters","params","parameters","getOptionKey","selectName","charAt","collectSelectedOptionsFromMultiselectFilters","newFetchBodyState","newFetchOpptions","select","optionKey","selectNameSubItem","optionSubKey","combinedValue","combinedSubValue","options","option","selected","optionParentElement","parentElement","HTMLOptionElement","includes","createCombinedValuesObject","prepareFetchOptions","allNew","collectSelectedOptionsFromSelectFilters","_fetch","urlParams","requestOptions","method","headers","Accept","prepareRequestData","listIdSourcesContent","dataset","categories","filterData","additionalFiltersData","mainCategories","push","field","values","logicOperator","parseFloat","to","replace","requireFacetFields","returnFields","facetFields","filterCategory","parse","showOnlyDeepestLevelSubcategories","showOnlyFirstLevelSubcategories","additionalFilters","resultsPerPage","page","languageCode","culture","site","requireFacetFieldsOnDocument","body","fetch","then","ok","Error","status","statusText","json","catch","ex","console","warn","updateStylesBeforeFetch","loader","loaderOverlay","setStyleForAllNew","itemFilters","itemFiltersMultiple","itemList","createItemList","isAllNewItems","fetchResponse","newItems","itemListFull","shouldReplaceAllOnHistory","stateData","ajaxListViewState","listIdKey","updatedAjaxListViewState","createHistoryStateObj","itemFetchResponse","replaceState","objectFitImages","watchMQ","selectEl","closest","dimClass","historyState","performance","getEntriesByType","fetchOptionsObj","listid","templateLocationAssignment","itemContainersElements","containerType","parseInt","selects","filterElems","filterElem","responseFilters","generateUpdatedView","elementsFactory","ajaxList","renderAjaxListComponent","ListItemView","Marionette","View","extend","triggers","initialize","this","set","iconClose","CollectionView","childView","onChildviewClickedItem","storage","removeItemById","attributes","productId","ServerView","regions","productList","onRender","idKey","on","collection","reset","Backbone","bind","updateAll","showChildView","setupAddToCompare","delegateSelector","addToCompare","stopPropagation","isCheckbox","isChecked","currentProductName","currentProductImage","currentProductId","currentProduct","productName","productImage","addItem","warningMsg","warningMsgText","toggleShowTool","isEmpty","updateCompareCount","_toggleCollectorIsOpen","_clearProducts","compareRemoveall","removeAll","updateCheckboxes","compareCheckboxes","checkbox","product","_compareProducts","compareUrl","warningMsgBox","customTrackingData","App","tracking","trackEvent","setAttribute","anhorLinkElements","downloadMaterialsHandler","checkIfGated","fileIdToDownload","publish","EventEnum","closeReactModal","downloadMaterials","subscribe","downloadMaterialsGatedContent","currentElement","dataObjectStr","fileTypes","isSingleSignupDownload","firstFileType","fileId","formName","formId","noDownload","dataTarget","gatedDownload","format","fileMarketoFormId","fileMarketoFormName","isNotDownloadedAfterFormSent","visitorFilledForm","visitor","isFormFilled","enableSingleSignupDocumentsDownload","openGateModal","open","gateType","dataFormName","dataFormId","dataFormUrl","gatedDownloads","openGatedContentModal","modalType","formUrl","anhorLinkElement","destroy","unsubscribe","onload","hash","uniqueAnchor","scrollPosition","getBoundingClientRect","top","scrollY","scrollTo","Esc","Enter","arrowLeft","arrowUp","arrowRight","arrowDown","triggerBrandSelector","paramString","search","which","hostname","isRockwool","isRockfon","isGrodan","isLapinus","isRockpanel","_","stopImmediatePropagation","openMultiSelector","hasGlobalEventListener","tabStart","touchStartX","touchStartY","Date","getTime","changedTouch","changedTouches","clientX","clientY","elem","elementFromPoint","Math","abs","globalClickEventListener","onClickLangOpen","initializeFilters","onClickFilter","documentElement","isLanguageSelector","isBrandRockWoolSelector","isBrandRockfonSelector","isBrandRockpanelSelector","isBrandGrodanSelector","isBrandLapinusSelector","isGroupSelector","getLanguageSelectorAsync","setInitLanguageView","allFilters","activeItem","predictionEl","click","onClickLangClose","showItemsByFilter","itemFilter","selectorClass","asyncContainer","cultureInfo","callback","languageSelectorContainer","text","async","InitializeView","InitBasicSelects","isVisible","onBodyClickHandler","linksMenu","onWindowScroll","passive","onBodyClick","close","onClickLangSelectorOpen","Modernizr","mq","desktop","modal","create","view","ancestor","HTMLElement","matches","msMatchesSelector","onClickMultiSelectOpen","orderSampleData","pageYOffset","getSelectedValueInFilter","filterSelector","String","fromCharCode","thisTileId","thisTileName","thisEdgeOptions","selectedEdgeValueFilterSelector","selectedColorValueFilterSelector","thisExcludeColour","thisExcludeEdges","orderSampleHeading","checkoutData","orderSampleEdgeText","orderSampleColor","orderSampleBtnText","selectEdgePlaceholder","selectColorPlaceholder","quantity","tileName","tileId","noExcludeColour","noExcludeEdges","edgeOptions","selectedEdgeValue","selectedColorValue","imgSrc","BasketOverlay","suggestionsVisibleClass","headerSearchOpenClass","menuOpenClass","languageOpenClass","isOpenClass","isActiveClass","O201headerview","isDesktopSelectorName","desktopLarge","searchInput","overlayEl","searchBtn","topNavArea","languageSelector","languageBtn","Search","onResize","onOverlayClick","onSearchClick","searchKeyUp","searchForm","searchUrl","lastWindowWidth","innerWidth","isMainMenuOpen","isLanguageMenuOpen","SwipeEventDispatcher","removeMenuClasses","removeLanguageClasses","isResizingFromMobileToDesktop","hideSearch","currentWindowWidth","isResizingFromDesktopToMobile","clearSearch","closeSubMenu","addMenuClasses","addLanguageClasses","onClickMenu","trackOpenLanguageDropdown","delegateTarget","onLanguageClick","openSubMenu","onTopNavClick","hasSub","childElem","onSubItemClick","languageName","trackSelectLanguage","trackOpenSearch","focus","param","trackOpenDropdown","isMobile","keyCode","KeyCodes","clearTimeout","typingTimeout","getSuggestions","suggest","resultList","cloneNode","min","li","childNodes","encodeURI","trackParafonEvent","trackOpenMobileMenu","trackSubmitSearchForm","trackSelectSuggest","O202ParafonFooterView","accordion","Accordion","mdSelector","backToTop","behavior","trackBackToTop","O204BenefitsAccordionBlockView","selector","slideDuration","slideEasing","closeOthers","constructor","arguments","evtMap","SWIPE_LEFT","SWIPE_UP","SWIPE_DOWN","SWIPE_RIGHT","xDown","yDown","triggerPercent","evt","handleTouchStart","handleTouchEnd","cb","off","lcb","handler","touches","deltaX","deltaY","offsetWidth","ParafonBtnsNavigation","initOffsetTop","offsetTop","navigation","onClickBtn","getElementById","scrollIntoView","scrollPos","refElement","isClass","elements","initilaizedElements","destroyElements","defaults","forceOpen","closeSelector","openClass","targetIsNext","rowDisplay","Instance","EventEmitter","super","eventsNamespace","group","mdTargetSelector","xsTargetSelector","xsSelector","mdEventsBound","xsEventsBound","isDesktop","allElems","otherOpen","getElTarget","allMdElems","customFunctions","onClickClose","isTargetLink","tagName","toString","targetSelector","cancelable","userAgent","navigator","isIE","setElement","tableRow","tableRowChildren","initialWidth","getComputedStyle","getPropertyValue","_canOpenBasedOnVersion","clickOpen","substring","some","cl","firstEl","parents","btnEl","opening","emit","containsTarget","selectorParent","nextEl","nextElementSibling","nextIsElem","targetEl","parentOpenClass","indicatorSelector","beforeOpen","slide","beforeClose","clearMdSetup","mdSelectors","mdTargets","mdTarget","clearXsSetup","xsSelectors","xsTargets","xsTarget","direction","self","targetStyles","paddingTop","paddingBottom","Velocity","default","animate","prevHeight","offsetHeight","prevPaddingTop","prevPaddingBottom","overflow","duration","easing","complete","headerHeight","request","headerGetHeight","scrollTop","bottom","windowTop","windowBottom","innerHeight","offset","instances","NodeList","createInstance","initializedClass","instance","closeAll","query","loadMore","expiration","upCountOnAdd","Storage","localStorage","getItem","checkData","checkDate","change","newValue","changed","date","saveData","itemExists","isId","find","singleItem","itemIndex","findIndex","addingMultiple","existingItem","addItems","removeItem","removingMultiple","splice","replaceOrAddItemById","itemId","newItem","existingItemIndex","removeItems","setItem","single","hasOwn","classes","i","arg","appendClass","parseValue","apply","newClass","module","exports","t","o","r","getOwnPropertySymbols","s","propertyIsEnumerable","_objectWithoutPropertiesLoose","n"],"sourceRoot":""}