{"version":3,"file":"scripts/chunks/_app_app_components_organisms_O30-ArticleImage_index_ts.db4e96cee831390dc27b.mjs","mappings":"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","sources":["webpack://rockworld/./app/components/atoms/Image/Image.module.scss","webpack://rockworld/./app/components/atoms/Image/Image.tsx","webpack://rockworld/./app/components/atoms/icons/ArrowIcon.tsx","webpack://rockworld/./app/components/atoms/icons/ArrowLeftIcon.tsx","webpack://rockworld/./app/components/atoms/icons/VideoIcon.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/VideoButton/VideoButton.tsx","webpack://rockworld/./app/components/organisms/Carousel/Carousel.module.scss","webpack://rockworld/./app/components/organisms/Carousel/Carousel.tsx","webpack://rockworld/./app/components/organisms/Carousel/CarouselControl/CarouselControl.tsx","webpack://rockworld/./app/components/atoms/icons/CarretWideIcon.tsx","webpack://rockworld/./app/components/organisms/Carousel/CarouselNavButton/CarouselNavButton.module.scss","webpack://rockworld/./app/components/organisms/Carousel/CarouselNavButton/CarouselNavButton.tsx","webpack://rockworld/./app/components/organisms/Carousel/CarouselPagination/CarouselPagination.module.scss","webpack://rockworld/./app/components/organisms/Carousel/CarouselPagination/CarouselPagination.tsx","webpack://rockworld/./app/utils/requestImageFullscreen.ts","webpack://rockworld/./app/components/organisms/O30-ArticleImage/ArticleImage.tsx","webpack://rockworld/./app/components/organisms/O30-ArticleImage/RockfonCaseStudiesImagesSlider.tsx","webpack://rockworld/./app/components/organisms/O30-ArticleImage/RockfonCaseStudyPageSlider.tsx","webpack://rockworld/./app/consts/attributes.ts","webpack://rockworld/./app/scripts/core/consts.ts"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"image\":\"image__zIuTb\"};","import { screenSizes } from 'app/scripts/core/consts';\r\nimport classNames from 'classnames';\r\nimport React, { FC, ImgHTMLAttributes, MutableRefObject } from 'react';\r\nimport styles from './Image.module.scss';\r\n\r\ninterface ImageSources {\r\n  mobile?: string;\r\n  tablet?: string;\r\n  desktop?: string;\r\n  desktopLarge?: string;\r\n}\r\n\r\ninterface Image {\r\n  componentName?: string;\r\n  name: string;\r\n  sources?: ImageSources;\r\n  src?: string;\r\n  imageRef?: MutableRefObject<HTMLImageElement>;\r\n  fetchpriority?: string;\r\n}\r\n\r\ntype ImageProps = ImgHTMLAttributes<HTMLImageElement> & Image;\r\n\r\nconst Image: FC<ImageProps> = (props) => {\r\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars -- componentName\r\n  const { componentName, src, sources, className, name, loading, alt, sizes, imageRef, ...imgAttributes } = props;\r\n  const imageClassNames = classNames(styles.image, className);\r\n  const srcSet = sources ? getSrcSet(sources) : null;\r\n\r\n  return (\r\n    <img\r\n      {...imgAttributes}\r\n      className={imageClassNames}\r\n      alt={name || alt}\r\n      loading={loading || 'lazy'}\r\n      src={src}\r\n      sizes={sizes || '100vw'}\r\n      srcSet={srcSet}\r\n      ref={imageRef}\r\n      suppressHydrationWarning\r\n    />\r\n  );\r\n};\r\n\r\nexport const getSrcSet = (sources: ImageSources) => {\r\n  const sourcesKeys = Object.keys(sources);\r\n  const sourceSet = sourcesKeys.map((key) => {\r\n    const source = sources[key];\r\n    const resolution = screenSizes[key];\r\n\r\n    return source ? `${source} ${resolution}w` : undefined;\r\n  });\r\n\r\n  return sourceSet.filter((v) => v !== undefined).join(', ');\r\n};\r\n\r\nexport { Image };\r\nexport type { ImageSources };\r\n","import React, { FC, SVGProps } from 'react';\r\n\r\ntype Props = SVGProps<SVGSVGElement>;\r\n\r\nconst ArrowIcon: FC<Props> = (props) => (\r\n  <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" {...props}>\r\n    <path\r\n      fillRule=\"nonzero\"\r\n      d=\"M11.166 8.81l-2.962 3.308 1.118 1 4.55-5.083L9.316 3 8.204 4.007l2.989 3.302H1v1.5h10.166z\"\r\n    />\r\n  </svg>\r\n);\r\n\r\nexport default ArrowIcon;\r\n","import React, { FC, SVGProps } from 'react';\r\n\r\ntype Props = SVGProps<SVGSVGElement>;\r\n\r\nconst ArrowLeftIcon: FC<Props> = (props) => (\r\n  <svg {...props} width=\"16\" height=\"16\" viewBox=\"0 0 16 16\">\r\n    <path\r\n      fillRule=\"nonzero\"\r\n      d=\"M3.707 8.81l2.961 3.308-1.118 1L1 8.035 5.556 3l1.112 1.007L3.68 7.309h10.193v1.5H3.707z\"\r\n    />\r\n  </svg>\r\n);\r\n\r\nexport default ArrowLeftIcon;\r\n","import React, { FC, SVGProps } from 'react';\r\n\r\ntype Props = SVGProps<SVGSVGElement>;\r\n\r\nconst VideoIcon: FC<Props> = (props) => (\r\n  <svg\r\n    xmlns=\"https://www.w3.org/2000/svg\"\r\n    width=\"15\"\r\n    height=\"13\"\r\n    viewBox=\"0 0 15 13\"\r\n    aria-labelledby=\"video-outlined\"\r\n    {...props}\r\n  >\r\n    <path d=\"M12.25,13H2.75A2.75,2.75,0,0,1,0,10.25V2.75A2.75,2.75,0,0,1,2.75,0h9.5A2.75,2.75,0,0,1,15,2.75v7.5A2.75,2.75,0,0,1,12.25,13ZM2.75,1.5A1.25,1.25,0,0,0,1.5,2.75v7.5A1.25,1.25,0,0,0,2.75,11.5h9.5a1.25,1.25,0,0,0,1.25-1.25V2.75A1.25,1.25,0,0,0,12.25,1.5Z\" />\r\n    <path\r\n      d=\"M10,6.58,6.27,9h0a.1.1,0,0,1-.15-.08V4.08h0a.1.1,0,0,1,.1-.1l.05,0L10,6.41h0a.1.1,0,0,1,0,.14Z\"\r\n      className=\"arrow\"\r\n    />\r\n  </svg>\r\n);\r\n\r\nexport default VideoIcon;\r\n","import React, { FC, SVGProps } from 'react';\r\n\r\ntype Props = SVGProps<SVGSVGElement>;\r\n\r\nconst ScaleIcon: FC<Props> = (props) => (\r\n  <svg {...props} width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\">\r\n    <polygon points=\"3.5 9 3.5 12.5 7 12.5 7 14 2 14 2 9 3.5 9\" />\r\n    <polygon points=\"12.5 3.5 9 3.5 9 2 14 2 14 7 12.5 7 12.5 3.5\" />\r\n  </svg>\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<ScaleImageToFullScreenButton> = (props) => {\r\n  const { onClick = () => null, fullscreenUrl } = props;\r\n\r\n  return (\r\n    <button\r\n      className=\"image-modal-btn is-large\"\r\n      type=\"button\"\r\n      data-testid=\"fullscreen-button\"\r\n      onClick={onClick}\r\n      data-js-image-fullscreen={fullscreenUrl}\r\n    >\r\n      <span className=\"icon icon--scale\">\r\n        <ScaleIcon />\r\n      </span>\r\n    </button>\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, { 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<VideoButton & React.RefAttributes<HTMLButtonElement>> = 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      <button\r\n        id={id}\r\n        type=\"button\"\r\n        data-video={videoUrl}\r\n        data-video-title={videoTitle}\r\n        data-video-title-youtube={videoTitleYouTube}\r\n        data-video-title-linkedin={videoTitleLinkedIn}\r\n        data-video-youtube-url={youTubeUrl}\r\n        data-is-react-modal=\"true\"\r\n        data-modal-type=\"video\"\r\n        data-has-loader=\"true\"\r\n        data-has-overlay=\"true\"\r\n        className={customClassName || 'btn is-video'}\r\n        data-testid=\"video-button\"\r\n        ref={ref}\r\n      >\r\n        {useButtonWithIcon ? (\r\n          <>\r\n            <span className=\"download-link__text\">{buttonText}</span>\r\n            <span className=\"icon icon--video-outlined\">\r\n              <VideoIcon />\r\n            </span>\r\n          </>\r\n        ) : (\r\n          buttonText\r\n        )}\r\n      </button>\r\n      {hasEmbeddedMeta ? (\r\n        <div\r\n          className=\"hidden\"\r\n          suppressHydrationWarning\r\n          dangerouslySetInnerHTML={{ __html: embeddedCodeWithoutIframe }}\r\n        />\r\n      ) : (\r\n        videoUrl?.length > 0 && (\r\n          <script\r\n            data-testid=\"script\"\r\n            suppressHydrationWarning\r\n            type=\"application/ld+json\"\r\n            dangerouslySetInnerHTML={{ __html: seoData() }}\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","// extracted by mini-css-extract-plugin\nexport default {\"carousel\":\"carousel__MniZg\",\"display\":\"display__JNJkk\",\"hidden\":\"hidden__ZXElU\",\"navigation\":\"navigation__xiHZj\"};","import { screenSizes } from 'app/scripts/core/consts';\r\nimport classNames from 'classnames';\r\nimport 'node_modules/swiper/swiper.scss';\r\nimport React, { FC, MutableRefObject, useEffect, useRef, useState } from 'react';\r\nimport Swiper from 'swiper';\r\nimport { Navigation, Pagination } from 'swiper/modules';\r\nimport { SwiperOptions } from 'swiper/types';\r\nimport styles from './Carousel.module.scss';\r\nimport { CarouselNavButton } from './CarouselNavButton';\r\nimport { CarouselPagination } from './CarouselPagination';\r\n\r\ninterface Carousel extends SwiperOptions {\r\n  className?: string;\r\n  navigationClassName?: string;\r\n  controlClassName?: string;\r\n  paginationClassName?: string;\r\n  children?: React.ReactNode;\r\n  navPrevRef?: MutableRefObject<HTMLButtonElement>;\r\n  navNextRef?: MutableRefObject<HTMLButtonElement>;\r\n  paginationRef?: MutableRefObject<HTMLDivElement>;\r\n  carouselRef?: MutableRefObject<HTMLDivElement>;\r\n  navButtonClassName?: string;\r\n  onActiveSlideChange?: (x: number) => void;\r\n  slideChangeTransitionStart?: (x: number) => void;\r\n  carouselResize?: (x: number) => void;\r\n}\r\n\r\nconst Carousel: FC<Carousel> = (props) => {\r\n  const {\r\n    className,\r\n    children,\r\n    navPrevRef,\r\n    navNextRef,\r\n    paginationRef,\r\n    carouselRef,\r\n    navButtonClassName,\r\n    onActiveSlideChange,\r\n    slideChangeTransitionStart,\r\n    carouselResize,\r\n    ...options\r\n  } = props;\r\n  const defaultCarouselRef = useRef<HTMLDivElement>();\r\n  const defaultNavPrevRef = useRef<HTMLButtonElement>();\r\n  const defaultNavNextRef = useRef<HTMLButtonElement>();\r\n  const defaultPaginationRef = useRef<HTMLDivElement>();\r\n  const carouselClassName = classNames('swiper', styles.carousel, className);\r\n  const ref = carouselRef || defaultCarouselRef;\r\n  const showNavigation = (!navPrevRef || !navNextRef) && options.navigation;\r\n  const [isSwiperInit, setIsSwiperInit] = useState(false);\r\n\r\n  // Initialize swiper\r\n  useEffect(() => {\r\n    const pagination = paginationRef?.current || defaultPaginationRef.current;\r\n    const navPrev = navPrevRef?.current || defaultNavPrevRef.current;\r\n    const navNext = navNextRef?.current || defaultNavNextRef.current;\r\n\r\n    const swiperOptions = getOptions({\r\n      pagination,\r\n      navPrev,\r\n      navNext,\r\n      options,\r\n      setIsSwiperInit,\r\n      onActiveSlideChange,\r\n      slideChangeTransitionStart,\r\n      carouselResize,\r\n    });\r\n\r\n    // eslint-disable-next-line no-new\r\n    new Swiper(ref.current, swiperOptions as SwiperOptions);\r\n  }, []);\r\n\r\n  return (\r\n    <div className={carouselClassName} ref={ref}>\r\n      <div className={`swiper-wrapper ${isSwiperInit ? 'display' : 'hidden'}`}>{children}</div>\r\n\r\n      {showNavigation && (\r\n        <div className={classNames(styles.navigation, props.navigationClassName)}>\r\n          <CarouselNavButton buttonRef={defaultNavPrevRef} className={navButtonClassName} />\r\n          <CarouselNavButton buttonRef={defaultNavNextRef} className={navButtonClassName} inverted />\r\n        </div>\r\n      )}\r\n\r\n      {!paginationRef && (\r\n        <CarouselPagination paginationRef={defaultPaginationRef} clasName={props.paginationClassName} />\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n\r\ninterface OptionsConfig {\r\n  options?: SwiperOptions;\r\n  pagination: HTMLDivElement;\r\n  navPrev: HTMLButtonElement;\r\n  navNext: HTMLButtonElement;\r\n  setIsSwiperInit: (x: boolean) => void;\r\n  onActiveSlideChange?: (x: number) => void;\r\n  slideChangeTransitionStart?: (x: number) => void;\r\n  carouselResize?: (x: number) => void;\r\n}\r\n\r\n/** Get default options and override them with new options */\r\nconst getOptions = (config: OptionsConfig): Carousel => {\r\n  const { on: swiperEvents, ...options } = config.options;\r\n\r\n  return {\r\n    modules: [Navigation, Pagination],\r\n    slidesPerView: 1,\r\n    speed: 500,\r\n    pagination: {\r\n      el: config.pagination,\r\n      clickable: true,\r\n    },\r\n    breakpoints: {\r\n      [screenSizes.tablet]: {\r\n        navigation: {\r\n          prevEl: config.navPrev,\r\n          nextEl: config.navNext,\r\n        },\r\n      },\r\n    },\r\n    navigation: {\r\n      prevEl: config.navPrev,\r\n      nextEl: config.navNext,\r\n    },\r\n    on: {\r\n      ...swiperEvents,\r\n      init(swiper) {\r\n        preloadImages(swiper);\r\n        swiperEvents?.init(swiper);\r\n      },\r\n      slideChangeTransitionStart(swiper) {\r\n        preloadImages(swiper);\r\n        swiperEvents?.slideChangeTransitionStart(swiper);\r\n\r\n        if (config?.slideChangeTransitionStart) {\r\n          const { realIndex } = swiper;\r\n          config?.slideChangeTransitionStart(realIndex);\r\n        }\r\n      },\r\n      slideChangeTransitionEnd(swiper) {\r\n        preloadImages(swiper);\r\n        swiperEvents?.slideChangeTransitionEnd(swiper);\r\n\r\n        if (config?.onActiveSlideChange) {\r\n          const { realIndex } = swiper;\r\n          config.onActiveSlideChange(realIndex);\r\n        }\r\n      },\r\n      resize(swiper) {\r\n        swiperEvents?.resize(swiper);\r\n\r\n        if (config?.carouselResize) {\r\n          const { params } = swiper;\r\n          config.carouselResize(params.slidesPerGroup);\r\n          swiper.slideTo(0);\r\n        }\r\n      },\r\n      afterInit() {\r\n        config.setIsSwiperInit(true);\r\n      },\r\n    },\r\n    ...options,\r\n  };\r\n};\r\n\r\n/** Preload images in next and previous slides in carousel */\r\nconst preloadImages = ({ slides, activeIndex }: Swiper) => {\r\n  const prevSlide = slides.at(activeIndex - 1);\r\n  const nextSlide = slides[activeIndex + 1];\r\n  const activeSlideSiblings = [prevSlide, nextSlide];\r\n\r\n  activeSlideSiblings.forEach((slide) => {\r\n    const images = slide?.querySelectorAll('img');\r\n\r\n    images?.forEach((image) => (image.loading = 'eager'));\r\n  });\r\n};\r\n\r\ninterface SlideProps {\r\n  children: React.ReactNode;\r\n  className?: string;\r\n  onClick?: () => void;\r\n}\r\n\r\nconst CarouselSlide: FC<SlideProps> = ({ children, className, ...slideProps }) => {\r\n  const swiperClassName = classNames('swiper-slide', className);\r\n\r\n  return (\r\n    <div className={swiperClassName} {...slideProps}>\r\n      {children}\r\n    </div>\r\n  );\r\n};\r\n\r\nexport { Carousel, CarouselSlide };\r\n","import ArrowIcon from '@atoms/icons/ArrowIcon';\r\nimport React, { FC, MutableRefObject } from 'react';\r\nimport ArrowLeftIcon from '@atoms/icons/ArrowLeftIcon';\r\n\r\nexport type HorizontalPosition = 'Left' | 'Right';\r\n\r\ninterface CarouselControl {\r\n  currentSlide: number;\r\n  horizontalPosition?: HorizontalPosition;\r\n  maxSlideCount: number;\r\n  defaultNavPrevRef?: MutableRefObject<HTMLButtonElement>;\r\n  defaultNavNextRef?: MutableRefObject<HTMLButtonElement>;\r\n  isLoop?: boolean;\r\n  idKey?: string;\r\n}\r\n\r\nconst CarouselControl: FC<CarouselControl> = ({\r\n  currentSlide,\r\n  maxSlideCount,\r\n  horizontalPosition,\r\n  defaultNavPrevRef,\r\n  defaultNavNextRef,\r\n  isLoop = false,\r\n  idKey = '',\r\n}) => (\r\n  <div\r\n    className={`slider__controls${horizontalPosition === 'Right' ? ' is-before' : ''}`}\r\n    data-testid=\"carousel-control\"\r\n  >\r\n    <button\r\n      id={`prevBtn_${idKey}`}\r\n      type=\"button\"\r\n      ref={defaultNavPrevRef}\r\n      className={`slider__controls__btn is-prev \r\n   ${!isLoop && currentSlide === 0 ? ' is-disabled' : ''}`}\r\n    >\r\n      <span className=\"icon icon--arrow-left\">\r\n        <ArrowLeftIcon />\r\n      </span>\r\n    </button>\r\n    <span data-testid=\"currentSlideIndex\">{currentSlide + 1}</span>/<span>{maxSlideCount}</span>\r\n    <button\r\n      id={`nextBtn_${idKey}`}\r\n      type=\"button\"\r\n      ref={defaultNavNextRef}\r\n      className={`slider__controls__btn is-next\r\n  ${!isLoop && currentSlide === maxSlideCount - 1 ? ' is-disabled' : ''}`}\r\n    >\r\n      <span className=\"icon icon--arrow-right\">\r\n        <ArrowIcon />\r\n      </span>\r\n    </button>\r\n  </div>\r\n);\r\n\r\nexport { CarouselControl };\r\n","import React, { FC, SVGProps } from 'react';\r\n\r\ntype Props = SVGProps<SVGSVGElement>;\r\n\r\nconst CarretWideIcon: FC<Props> = (props) => (\r\n  <svg width=\"19\" height=\"49\" viewBox=\"0 0 19 49\" fill=\"none\" stroke=\"#000\" {...props}>\r\n    <path strokeWidth=\"2\" d=\"M18 1 2 24.5 18 48\" />\r\n  </svg>\r\n);\r\n\r\nexport default CarretWideIcon;\r\n","// extracted by mini-css-extract-plugin\nexport default {\"nav-button\":\"nav-button__QeARH\",\"navButton\":\"nav-button__QeARH\",\"inverted\":\"inverted__Z_Oue\"};","import CarretWideIcon from '@atoms/icons/CarretWideIcon';\r\nimport classNames from 'classnames';\r\nimport React, { FC, MutableRefObject } from 'react';\r\nimport styles from './CarouselNavButton.module.scss';\r\n\r\ninterface CarouselNavButton {\r\n  buttonRef?: MutableRefObject<HTMLButtonElement>;\r\n  className?: string;\r\n  inverted?: boolean;\r\n}\r\n\r\nconst CarouselNavButton: FC<CarouselNavButton> = ({ buttonRef, className, inverted }) => {\r\n  const buttonClassName = classNames(styles.navButton, className, { [styles.inverted]: inverted });\r\n  const title = inverted ? 'next-slide-button' : 'previous-slide-button';\r\n\r\n  return (\r\n    <button ref={buttonRef} type=\"button\" aria-label={title} className={buttonClassName}>\r\n      <CarretWideIcon />\r\n    </button>\r\n  );\r\n};\r\n\r\nexport { CarouselNavButton };\r\n","// extracted by mini-css-extract-plugin\nexport default {\"pagination\":\"pagination__Qdqjj\"};","import classNames from 'classnames';\r\nimport React, { FC, MutableRefObject } from 'react';\r\nimport styles from './CarouselPagination.module.scss';\r\n\r\ninterface CarouselPagination {\r\n  paginationRef?: MutableRefObject<HTMLDivElement>;\r\n  clasName?: string;\r\n}\r\n\r\nconst CarouselPagination: FC<CarouselPagination> = ({ paginationRef, clasName }) => {\r\n  const paginationClassName = classNames(styles.pagination, clasName);\r\n\r\n  return <div ref={paginationRef} className={paginationClassName} />;\r\n};\r\n\r\nexport { CarouselPagination };\r\n","import { htmlAttributes } from \"app/consts\";\r\nimport { MutableRefObject } from \"react\";\r\n\r\nexport const requestImageFullscreen = (refEl: MutableRefObject<HTMLImageElement>, imageSrc: string) => {\r\n    const divObj = refEl?.current;\r\n    divObj.src = imageSrc;\r\n    if (divObj.requestFullscreen) {\r\n        divObj.requestFullscreen();\r\n        return;\r\n    }\r\n    const win = window.open(imageSrc, htmlAttributes.targetValueBlank);\r\n    win?.focus();\r\n};\r\n","import React, { FC, useState, useRef, createRef, useMemo, RefObject } from 'react';\r\nimport { Image } from '@atoms/Image';\r\nimport { VideoButton } from '@molecules/VideoButton';\r\nimport { Carousel } from '@organisms/Carousel';\r\nimport { CarouselControl } from '@organisms/Carousel/CarouselControl';\r\nimport { CarouselSlide } from '@organisms/Carousel/Carousel';\r\nimport { requestImageFullscreen } from '@utils/requestImageFullscreen';\r\nimport ScaleImageToFullScreenButton from '@molecules/ScaleImageToFullScreenButton';\r\nimport './ArticleImage.scss';\r\n\r\nexport interface ImageSourceSrcType {\r\n  componentName?: string;\r\n  name?: string;\r\n  sources?: {\r\n    mobile?: string;\r\n    tablet?: string;\r\n    desktop?: string;\r\n    desktopLarge?: string;\r\n  };\r\n  src?: string;\r\n  alt?: string;\r\n}\r\n\r\ninterface VideoButtonProps {\r\n  componentName: string;\r\n  id: string;\r\n  videoUrl?: string;\r\n  videoTitleYouTube?: string;\r\n  videoTitleLinkedIn?: string;\r\n  videoTitle?: string;\r\n  videoDescription?: string;\r\n  videoUploadDate?: string;\r\n  videoImage?: string;\r\n  buttonText?: string;\r\n  metaImage?: string;\r\n  hasVideoContent?: boolean;\r\n  youTubeUrl?: string;\r\n  hasEmbeddedMeta?: boolean;\r\n  embeddedCodeWithoutIframe?: string;\r\n}\r\n\r\nexport interface ImageItem {\r\n  fullscreen?: boolean;\r\n  fullscreenWithoutWindow?: boolean;\r\n  fullscreenImage?: string;\r\n  image?: ImageSourceSrcType;\r\n  videoBtn?: string;\r\n  altText?: string;\r\n  credit?: string;\r\n  caption?: string;\r\n  creditLabel?: string;\r\n  hasFullscreenEnabled?: boolean;\r\n  videoButton?: VideoButtonProps;\r\n}\r\n\r\ninterface ArticleImage {\r\n  componentName: string;\r\n  images?: Array<ImageItem>;\r\n  backgroundStyle?: string;\r\n  isNarrow?: boolean;\r\n  deepLinkId?: string;\r\n  hasContent?: boolean;\r\n}\r\n\r\nconst ArticleImage: FC<ArticleImage> = (props) => {\r\n  const { componentName, images, backgroundStyle, isNarrow, deepLinkId, hasContent } = props;\r\n  const navPrevRef = useRef<HTMLButtonElement>();\r\n  const navNextRef = useRef<HTMLButtonElement>();\r\n  const imageRefs = useRef<RefObject<HTMLImageElement>[]>([]);\r\n  const paginationRef = useRef<HTMLDivElement>();\r\n  const [activeStep, setActiveStep] = useState<number>(0);\r\n  const maxSlideCount = useMemo(() => images.length, [images]);\r\n\r\n  const carouselItems = useMemo(\r\n    () =>\r\n      images?.map((item, idx) => {\r\n        if (!imageRefs.current[idx]) {\r\n          imageRefs.current[idx] = createRef();\r\n        }\r\n\r\n        return (\r\n          <CarouselSlide key={`${componentName}${idx}`}>\r\n            <figure className=\"O30-article-image__item carousel-slider-slide\">\r\n              <div className=\"O30-article-image__item__image\">\r\n                <Image\r\n                  src={item.image.src}\r\n                  sources={item.image.sources}\r\n                  componentName={item.image.componentName}\r\n                  name={item.image.name}\r\n                  imageRef={imageRefs.current[idx]}\r\n                  loading=\"lazy\"\r\n                  alt={item.image.alt}\r\n                />\r\n                {item.videoButton.hasVideoContent && (\r\n                  <VideoButton\r\n                    id={item.videoButton.id}\r\n                    videoUrl={item.videoButton.videoUrl}\r\n                    videoTitle={item.videoButton.videoTitle}\r\n                    videoDescription={item.videoButton.videoDescription}\r\n                    videoImage={item.videoButton.videoImage}\r\n                    videoUploadDate={item.videoButton.videoUploadDate}\r\n                    videoTitleYouTube={item.videoButton.videoTitleYouTube}\r\n                    videoTitleLinkedIn={item.videoButton.videoTitleLinkedIn}\r\n                    youTubeUrl={item.videoButton.youTubeUrl}\r\n                    hasEmbeddedMeta={item.videoButton.hasEmbeddedMeta}\r\n                    embeddedCodeWithoutIframe={item.videoButton.embeddedCodeWithoutIframe}\r\n                  />\r\n                )}\r\n                {item.hasFullscreenEnabled && (\r\n                  <>\r\n                    {item.fullscreen && (\r\n                      <div\r\n                        data-is-react-modal=\"true\"\r\n                        data-modal-type=\"image\"\r\n                        data-has-loader=\"true\"\r\n                        data-has-overlay=\"true\"\r\n                        data-image={item.fullscreenImage}\r\n                        className=\"image-modal-overlay\"\r\n                      />\r\n                    )}\r\n                    {(item.fullscreenWithoutWindow || item.fullscreen) && (\r\n                      <ScaleImageToFullScreenButton\r\n                        onClick={() =>\r\n                          item.fullscreenWithoutWindow\r\n                            ? requestImageFullscreen(imageRefs.current[idx], item.fullscreenImage)\r\n                            : null\r\n                        }\r\n                      />\r\n                    )}\r\n                  </>\r\n                )}\r\n              </div>\r\n              <figcaption className=\"O30-article-image__item__caption\">\r\n                {item.credit && (\r\n                  <p className=\"O30-article-image__item__credit\">\r\n                    <strong>{item.credit}</strong>\r\n                  </p>\r\n                )}\r\n                {item.caption && <p className=\"O30-article-image__item__copy\">{item.caption}</p>}\r\n              </figcaption>\r\n            </figure>\r\n          </CarouselSlide>\r\n        );\r\n      }),\r\n    [images]\r\n  );\r\n  return (\r\n    <div id={deepLinkId} className={`${backgroundStyle}`}>\r\n      <div className=\"container js-scroll-reveal\" suppressHydrationWarning>\r\n        <div className={`O30-article-image carousel-slider-wrapper ${isNarrow ?? 'is-narrow'}`}>\r\n          <Carousel\r\n            className=\"O30-article-image__inner carousel-slider\"\r\n            loop\r\n            paginationRef={paginationRef}\r\n            navPrevRef={navPrevRef}\r\n            navNextRef={navNextRef}\r\n            onActiveSlideChange={(step) => setActiveStep(step)}\r\n          >\r\n            {hasContent && carouselItems}\r\n          </Carousel>\r\n          <CarouselControl\r\n            maxSlideCount={maxSlideCount}\r\n            currentSlide={activeStep}\r\n            isLoop\r\n            defaultNavPrevRef={navPrevRef}\r\n            defaultNavNextRef={navNextRef}\r\n          />\r\n        </div>\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport { ArticleImage };\r\n","import React, { FC, useState, useRef, createRef, useMemo, RefObject } from 'react';\r\nimport { Image } from '@atoms/Image';\r\nimport { Carousel } from '@organisms/Carousel';\r\nimport { CarouselControl } from '@organisms/Carousel/CarouselControl';\r\nimport { CarouselSlide } from '@organisms/Carousel/Carousel';\r\nimport ScaleImageToFullScreenButton from '@molecules/ScaleImageToFullScreenButton';\r\nimport { ImageSourceSrcType } from './ArticleImage';\r\nimport './ArticleImage.scss';\r\n\r\ninterface ItemImage {\r\n  descriptions?: string;\r\n  detailsDescription?: string;\r\n  featuredProductsLabel?: string;\r\n  fullscreen?: boolean;\r\n  hasDetailsDescription?: boolean;\r\n  hasFeaturedProductsLabel?: boolean;\r\n  hasGrid?: boolean;\r\n  hasSystem?: boolean;\r\n  hasTile?: boolean;\r\n  imageAlternativeText?: string;\r\n  imageFullscreen?: string;\r\n  languages?: string;\r\n  image: ImageSourceSrcType;\r\n}\r\ninterface ImageItem {\r\n  edgeAndDimension?: string;\r\n  imageFullscreen?: string;\r\n  projectName?: string;\r\n  projectPageContentLink?: string;\r\n  image?: ItemImage;\r\n}\r\n\r\ninterface RockfonCaseStudiesImagesSlider {\r\n  componentName?: string;\r\n  edgeAndDimensionHeadline?: string;\r\n  hasHeadline?: boolean;\r\n  hasImages?: boolean;\r\n  headline?: string;\r\n  images?: Array<ImageItem>;\r\n  projectNameHeadline?: string;\r\n  seeFullProjectText?: string;\r\n}\r\n\r\nconst RockfonCaseStudiesImagesSlider: FC<RockfonCaseStudiesImagesSlider> = (props) => {\r\n  const {\r\n    componentName,\r\n    edgeAndDimensionHeadline,\r\n    hasHeadline,\r\n    headline,\r\n    hasImages,\r\n    projectNameHeadline,\r\n    seeFullProjectText,\r\n    images,\r\n  } = props;\r\n\r\n  const navPrevRef = useRef<HTMLButtonElement>();\r\n  const navNextRef = useRef<HTMLButtonElement>();\r\n  const imageRefs = useRef<RefObject<HTMLImageElement>[]>([]);\r\n  const paginationRef = useRef<HTMLDivElement>();\r\n  const [activeStep, setActiveStep] = useState<number>(0);\r\n  const maxSlideCount = useMemo(() => images.length, [images]);\r\n\r\n  const carouselItems = useMemo(\r\n    () =>\r\n      images?.map((item, idx) => {\r\n        if (!imageRefs.current[idx]) {\r\n          imageRefs.current[idx] = createRef();\r\n        }\r\n\r\n        return (\r\n          <CarouselSlide key={`${componentName}${idx}`}>\r\n            <figure className=\"O30-article-image__item carousel-slider-slide\">\r\n              <div className=\"O30-article-image__item__image\">\r\n                <Image\r\n                  src={item.image.image.src}\r\n                  sources={item.image.image.sources}\r\n                  componentName={item.image.image.componentName}\r\n                  name={item.image.image.name}\r\n                  imageRef={imageRefs.current[idx]}\r\n                  loading=\"lazy\"\r\n                  alt={item.image.image.alt}\r\n                />\r\n                {item.image.fullscreen && (\r\n                  <>\r\n                    <div\r\n                      data-is-react-modal=\"true\"\r\n                      data-modal-type=\"image\"\r\n                      data-has-loader=\"true\"\r\n                      data-has-overlay=\"true\"\r\n                      data-image={item.imageFullscreen}\r\n                      className=\"image-modal-overlay\"\r\n                    />\r\n                    <ScaleImageToFullScreenButton />\r\n                  </>\r\n                )}\r\n              </div>\r\n              <figcaption className=\"O30-article-image__item__caption\">\r\n                <p className=\"O30-article-image__item__credit\">\r\n                  <strong>\r\n                    {projectNameHeadline}: <a href={item.projectPageContentLink}>{item.projectName}</a>\r\n                  </strong>\r\n                  {item.edgeAndDimension.length > 0 && (\r\n                    <>\r\n                      <br />\r\n                      <strong>\r\n                        {edgeAndDimensionHeadline}: {item.edgeAndDimension}\r\n                      </strong>\r\n                    </>\r\n                  )}\r\n                </p>\r\n                {item.projectPageContentLink && (\r\n                  <a href={item.projectPageContentLink} className=\"btn slider__cta\">\r\n                    {seeFullProjectText}\r\n                  </a>\r\n                )}\r\n              </figcaption>\r\n            </figure>\r\n          </CarouselSlide>\r\n        );\r\n      }),\r\n    [images]\r\n  );\r\n  return (\r\n    <div className=\"container js-scroll-reveal\" suppressHydrationWarning>\r\n      {hasHeadline && <h2 className=\"text-center\">{headline}</h2>}\r\n      <div className=\"O30-article-image carousel-slider-wrapper\" suppressHydrationWarning>\r\n        <Carousel\r\n          className=\"O30-article-image__inner carousel-slider\"\r\n          loop\r\n          paginationRef={paginationRef}\r\n          navPrevRef={navPrevRef}\r\n          navNextRef={navNextRef}\r\n          onActiveSlideChange={(step) => setActiveStep(step)}\r\n        >\r\n          {hasImages && carouselItems}\r\n        </Carousel>\r\n        <CarouselControl\r\n          maxSlideCount={maxSlideCount}\r\n          currentSlide={activeStep}\r\n          isLoop\r\n          defaultNavPrevRef={navPrevRef}\r\n          defaultNavNextRef={navNextRef}\r\n        />\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport { RockfonCaseStudiesImagesSlider };\r\n","import React, { FC, useState, useRef, createRef, useMemo, RefObject } from 'react';\r\nimport { Image } from '@atoms/Image';\r\nimport { Carousel } from '@organisms/Carousel';\r\nimport { CarouselControl } from '@organisms/Carousel/CarouselControl';\r\nimport { CarouselSlide } from '@organisms/Carousel/Carousel';\r\nimport { requestImageFullscreen } from '@utils/requestImageFullscreen';\r\nimport ScaleImageToFullScreenButton from '@molecules/ScaleImageToFullScreenButton';\r\nimport { ImageSourceSrcType } from './ArticleImage';\r\nimport './ArticleImage.scss';\r\n\r\ninterface ImageItem {\r\n  descriptions?: Array<string>;\r\n  detailsDescription?: string;\r\n  featuredProductsLabel?: string;\r\n  fullscreen?: boolean;\r\n  hasDetailsDescription?: boolean;\r\n  hasFeaturedProductsLabel?: boolean;\r\n  hasGrid?: boolean;\r\n  hasSystem?: boolean;\r\n  hasTile?: boolean;\r\n  image?: ImageSourceSrcType;\r\n  imageAlternativeText?: string;\r\n  imageFullscreen?: string;\r\n  languages?: string;\r\n}\r\n\r\ninterface RockfonCaseStudyPageSlider {\r\n  componentName?: string;\r\n  imageItems?: Array<ImageItem>;\r\n}\r\n\r\nconst RockfonCaseStudyPageSlider: FC<RockfonCaseStudyPageSlider> = (props) => {\r\n  const { componentName, imageItems } = props;\r\n  const navPrevRef = useRef<HTMLButtonElement>();\r\n  const navNextRef = useRef<HTMLButtonElement>();\r\n  const imageRefs = useRef<RefObject<HTMLImageElement>[]>([]);\r\n  const paginationRef = useRef<HTMLDivElement>();\r\n  const [activeStep, setActiveStep] = useState<number>(0);\r\n  const maxSlideCount = useMemo(() => imageItems.length, [imageItems]);\r\n\r\n  const carouselItems = useMemo(\r\n    () =>\r\n      imageItems?.map((item, idx) => {\r\n        if (!imageRefs.current[idx]) {\r\n          imageRefs.current[idx] = createRef();\r\n        }\r\n\r\n        return (\r\n          <CarouselSlide key={`${componentName}${idx}`}>\r\n            <figure className=\"O30-article-image__item carousel-slider-slide\">\r\n              <div className=\"O30-article-image__item__image\">\r\n                <Image\r\n                  src={item.image.src}\r\n                  sources={item.image.sources}\r\n                  componentName={item.image.componentName}\r\n                  name={item.image.name}\r\n                  imageRef={imageRefs.current[idx]}\r\n                  loading=\"lazy\"\r\n                  alt={item.image.alt}\r\n                />\r\n                {item.fullscreen && (\r\n                  <ScaleImageToFullScreenButton\r\n                    onClick={() => requestImageFullscreen(imageRefs.current[idx], item.imageFullscreen)}\r\n                  />\r\n                )}\r\n              </div>\r\n\r\n              {(item.hasFeaturedProductsLabel || item.hasDetailsDescription) && (\r\n                <figcaption className=\"O30-article-image__item__caption\">\r\n                  {(item.hasFeaturedProductsLabel || item.hasTile || item.hasGrid || item.hasSystem) && (\r\n                    <div className=\"O30-article-image__item__credit\">\r\n                      <div className=\"case-study-desc\">\r\n                        {item.hasFeaturedProductsLabel && (item.hasTile || item.hasGrid || item.hasSystem) && (\r\n                          <div>{item.featuredProductsLabel}</div>\r\n                        )}\r\n                        <div>\r\n                          {item.descriptions?.map((list, index) => (\r\n                            <div\r\n                              key={`${componentName}-descriptions-${index}`}\r\n                              dangerouslySetInnerHTML={{ __html: list }}\r\n                            />\r\n                          ))}\r\n                        </div>\r\n                      </div>\r\n                    </div>\r\n                  )}\r\n\r\n                  {item.hasDetailsDescription && (\r\n                    <p className=\"O30-article-image__item__copy\">{item.detailsDescription}</p>\r\n                  )}\r\n                </figcaption>\r\n              )}\r\n            </figure>\r\n          </CarouselSlide>\r\n        );\r\n      }),\r\n    [imageItems]\r\n  );\r\n  return (\r\n    <div className=\"container js-scroll-reveal\" suppressHydrationWarning>\r\n      <div className=\"O30-article-image carousel-slider-wrapper\" suppressHydrationWarning>\r\n        <Carousel\r\n          className=\"O30-article-image__inner carousel-slider\"\r\n          loop\r\n          paginationRef={paginationRef}\r\n          navPrevRef={navPrevRef}\r\n          navNextRef={navNextRef}\r\n          onActiveSlideChange={(step) => setActiveStep(step)}\r\n        >\r\n          {imageItems.length > 0 && carouselItems}\r\n        </Carousel>\r\n        <CarouselControl\r\n          maxSlideCount={maxSlideCount}\r\n          currentSlide={activeStep}\r\n          isLoop\r\n          defaultNavPrevRef={navPrevRef}\r\n          defaultNavNextRef={navNextRef}\r\n        />\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport { RockfonCaseStudyPageSlider };\r\n","export const htmlAttributes = {\r\n  relAttributeWithNoopenerNoReferrerVaule: 'noopener noreferrer',\r\n  targetValueBlank: '_blank',\r\n  targetValueSelf: '_self',\r\n  relNoFollowValue: 'nofollow',\r\n  relAttributeWithNoopenerNoReferrerNoFollowValue: 'noopener noreferrer nofollow',\r\n  thumbnail: 'thumbnail',\r\n  notGated: 'not gated',\r\n  gated: 'gated',\r\n  download: 'download',\r\n};\r\n","interface ScreenWidths {\r\n  mobile: number;\r\n  tablet: number;\r\n  desktop: number;\r\n  desktopLarge: number;\r\n}\r\n\r\nexport const screenSizes: ScreenWidths = {\r\n  mobile: 375,\r\n  tablet: 768,\r\n  desktop: 992,\r\n  desktopLarge: 1200,\r\n};\r\n\r\n"],"names":["Image","props","componentName","src","sources","className","name","loading","alt","sizes","imageRef","imgAttributes","_objectWithoutProperties","_excluded","imageClassNames","classNames","styles","srcSet","getSrcSet","React","_extends","ref","suppressHydrationWarning","Object","keys","map","key","source","resolution","screenSizes","undefined","filter","v","join","width","height","viewBox","fillRule","d","xmlns","points","ScaleImageToFullScreenButton","onClick","fullscreenUrl","type","ScaleIcon","displayName","VideoButton","forwardRef","videoUrl","videoTitle","videoDescription","videoImage","videoUploadDate","videoTitleYouTube","videoTitleLinkedIn","youTubeUrl","hasEmbeddedMeta","embeddedCodeWithoutIframe","buttonText","id","customClassName","useButtonWithIcon","VideoIcon","dangerouslySetInnerHTML","__html","length","seoData","data","description","contentUrl","thumbnailUrl","uploadDate","JSON","stringify","Carousel","children","navPrevRef","navNextRef","paginationRef","carouselRef","navButtonClassName","onActiveSlideChange","slideChangeTransitionStart","carouselResize","options","defaultCarouselRef","useRef","defaultNavPrevRef","defaultNavNextRef","defaultPaginationRef","carouselClassName","showNavigation","navigation","isSwiperInit","setIsSwiperInit","useState","useEffect","pagination","current","navPrev","navNext","swiperOptions","getOptions","Swiper","navigationClassName","CarouselNavButton","buttonRef","inverted","CarouselPagination","clasName","paginationClassName","config","_config$options","on","swiperEvents","_excluded2","_objectSpread","modules","Navigation","Pagination","slidesPerView","speed","el","clickable","breakpoints","tablet","prevEl","nextEl","init","swiper","preloadImages","realIndex","slideChangeTransitionEnd","resize","params","slidesPerGroup","slideTo","afterInit","_ref","slides","activeIndex","at","forEach","slide","images","querySelectorAll","image","CarouselSlide","_ref2","slideProps","_excluded3","swiperClassName","CarouselControl","currentSlide","maxSlideCount","horizontalPosition","isLoop","idKey","ArrowLeftIcon","ArrowIcon","fill","stroke","strokeWidth","buttonClassName","title","CarretWideIcon","requestImageFullscreen","refEl","imageSrc","divObj","requestFullscreen","win","window","open","htmlAttributes","targetValueBlank","focus","ArticleImage","backgroundStyle","isNarrow","deepLinkId","hasContent","imageRefs","activeStep","setActiveStep","useMemo","carouselItems","item","idx","createRef","videoButton","hasVideoContent","hasFullscreenEnabled","fullscreen","fullscreenImage","fullscreenWithoutWindow","credit","caption","loop","step","RockfonCaseStudiesImagesSlider","edgeAndDimensionHeadline","hasHeadline","headline","hasImages","projectNameHeadline","seeFullProjectText","imageFullscreen","href","projectPageContentLink","projectName","edgeAndDimension","RockfonCaseStudyPageSlider","imageItems","hasFeaturedProductsLabel","hasDetailsDescription","hasTile","hasGrid","hasSystem","featuredProductsLabel","descriptions","list","index","detailsDescription","relAttributeWithNoopenerNoReferrerVaule","targetValueSelf","relNoFollowValue","relAttributeWithNoopenerNoReferrerNoFollowValue","thumbnail","notGated","gated","download","mobile","desktop","desktopLarge"],"sourceRoot":""}