{"version":3,"file":"static/chunks/2693-83f14d362dfee0c7.js","mappings":"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","sources":["webpack://_N_E/../../libs/osc/brand-text-body/src/lib/brand-text-body.tsx","webpack://_N_E/../../libs/osc/brand-text-body/src/lib/index.ts","webpack://_N_E/../../libs/osc/brand-text-body/src/index.ts","webpack://_N_E/../../libs/osc/brand-text-header/src/lib/brand-text-header.tsx","webpack://_N_E/../../libs/osc/brand-text-header/src/lib/index.ts","webpack://_N_E/../../libs/osc/brand-text-header/src/index.ts","webpack://_N_E/../../libs/osc/carousel/src/lib/carousel-no-image.tsx","webpack://_N_E/../../libs/osc/carousel/src/lib/carousel-image.tsx","webpack://_N_E/../../libs/osc/carousel/src/lib/utils/carousel-analytics.ts","webpack://_N_E/../../libs/osc/carousel/src/lib/carousel-single.tsx","webpack://_N_E/../../libs/osc/carousel/src/index.ts","webpack://_N_E/../../libs/osc/custom-markdown/src/lib/custom-markdown.tsx","webpack://_N_E/../../libs/osc/custom-markdown/src/index.ts","webpack://_N_E/../../libs/osc/heading-level/src/lib/heading-level.tsx","webpack://_N_E/../../libs/osc/heading-level/src/lib/index.ts","webpack://_N_E/../../libs/osc/heading-level/src/index.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/utils/get-prefers-reduced-motion.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/brand-showcase/brand-showcase.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/brand-showcase/index.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/dialog-with-content/dialog-with-content.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/dialog-with-content/index.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/full-width-image/full-width-image.types.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/full-width-image/libs/utils/full-width-image-analytics.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/full-width-image/full-width-image.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/full-width-image/index.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/half-and-half/libs/utils/half-and-half-analytics.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/half-and-half/half-and-half-content.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/half-and-half/half-and-half.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/half-and-half/half-and-half-carousel.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/half-and-half/index.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/image-headliner/image-headliner-content.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/image-headliner/utils/image-headliner-analytics.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/image-headliner/image-headliner-controls.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/image-headliner/image-headliner-item.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/image-headliner/image-headliner.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/image-headliner/index.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/security-dialog/security-dialog.tsx","webpack://_N_E/../../libs/osc/marketing/src/lib/security-dialog/index.ts","webpack://_N_E/../../libs/osc/marketing/src/lib/index.ts","webpack://_N_E/../../libs/osc/marketing/src/index.ts","webpack://_N_E/../../libs/utilities/get-video-src/src/lib/get-video-src.ts","webpack://_N_E/../../libs/utilities/get-video-src/src/lib/index.ts","webpack://_N_E/../../libs/utilities/get-video-src/src/index.ts","webpack://_N_E/../../libs/osc/youtube-video/src/lib/youtube-video.tsx","webpack://_N_E/../../libs/osc/youtube-video/src/index.ts"],"sourcesContent":["import type * as React from 'react';\nimport { useId } from 'react';\nimport cx from 'classnames';\n\nimport { CustomMarkdown } from '@dx-ui/osc-custom-markdown';\n\nexport type BrandTextBodyType = {\n  className?: string;\n  baseAppUrl?: string;\n  lang?: string;\n  testId?: string | null;\n  isStaticContentPage?: boolean;\n  children: React.ReactNode;\n  brandComponentTheme?: CmsBrandComponentTheme;\n};\n\n/**\n * Can utilize `<CustomMarkdown>` or `children` to add the body text content.\n * There is not a character limit on the text block body but individual components may have recommended character lengths, see components for more details.\n */\nexport const BrandTextBody = ({\n  children,\n  className = '',\n  testId = 'brandTextBody',\n  isStaticContentPage, // to enable segregation of styles, logic of textblock components for static pages\n  brandComponentTheme,\n}: BrandTextBodyType) => {\n  const id = useId();\n\n  return typeof children === 'string' ? (\n    /* Adding a unique id to children props passed in CustomMarkdown mainly headings */\n    <div\n      data-testid={testId}\n      className={cx(\n        className,\n        'brand-wa:font-serif brand-gi:font-serif brand-gi:font-semibold py-2 sm:text-lg lg:text-xl',\n        {\n          'brand-hp:text-brand': brandComponentTheme !== 'dark',\n          'brand-ht:text-text-inverse': brandComponentTheme === 'light',\n        }\n      )}\n    >\n      <CustomMarkdown\n        id={`textblock-body-section-${id}`}\n        isStaticContentPage={isStaticContentPage}\n        brandComponentTheme={brandComponentTheme}\n      >\n        {children}\n      </CustomMarkdown>\n    </div>\n  ) : (\n    children\n  );\n};\n","export * from './brand-text-body';\n","export * from './lib';\n","import { HeadingLevel } from '@dx-ui/osc-heading-level';\nimport cx from 'classnames';\n\nexport type BrandTextHeaderType = {\n  children?: React.ReactNode;\n  ariaLabel?: string;\n  className?: string;\n  id?: string;\n};\n\n/**\n * Extra, Extra! Announcing the Text Block Header, consumed by other components to create a bold headline.\n */\nexport const BrandTextHeader = ({ children, ariaLabel, className = '', id }: BrandTextHeaderType) =>\n  children ? (\n    <HeadingLevel\n      headingLevelFallback={2}\n      className={cx(className, 'heading-2xl lg:heading-4xl lg:mb-2')}\n      data-testid=\"brandTextHeader\"\n      id={id}\n    >\n      {children}\n\n      {ariaLabel && <span className=\"sr-only\">{ariaLabel}</span>}\n    </HeadingLevel>\n  ) : null;\n\nexport default BrandTextHeader;\n","export * from './brand-text-header';\n","export * from './lib';\n","import cx from 'classnames';\nimport { useTranslation } from 'next-i18next';\n\nexport const CarouselNoImage = ({\n  className,\n  isFullSize = false,\n}: {\n  className?: string;\n  isFullSize?: boolean;\n}) => {\n  const { t } = useTranslation('osc-carousel');\n\n  return (\n    <div\n      className={cx(\n        '@container/no-image bg-bg-alt flex items-center justify-center',\n        { 'h-full w-full': isFullSize, 'aspect-[3/2]': !isFullSize },\n        className\n      )}\n    >\n      <span className=\"@[256px]/no-image:text-2xl @[150px]/no-image:text-base text-text-alt text-xs\">\n        {t('noPhotoAvailable')}\n      </span>\n    </div>\n  );\n};\n","import { useState } from 'react';\nimport type { ImageProps } from 'next/legacy/image';\nimport Image from 'next/legacy/image';\nimport { CarouselNoImage } from './carousel-no-image';\nimport { Caption } from '@dx-ui/osc-caption';\nimport type { CaptionProps } from '@dx-ui/osc-caption';\nimport classnames from 'classnames';\nimport { ANALYTICS_GLOBAL_CLICK_EVENT, trackEvent } from '@dx-ui/config-metrics';\nimport type { CarouselSingleMetrics } from './types/carousel-analytics';\n\nexport type CarouselImageProps = {\n  /** Image alt text. Defaults to \"Image showcasing selected Hotel\" */\n  alt?: string | null;\n  /** Pass in overrides for next/image component */\n  imageProps?: Omit<ImageProps, 'src'>;\n  /** source of image */\n  url: string;\n  captionData?: CaptionProps;\n  /** Whether it is the currently active image */\n  isActive?: boolean;\n  /** Analytics data */\n  metrics?: CarouselSingleMetrics;\n};\n\n/**\n * Component to render the carousel image. Includes error handling that will return a \"no photo available\" placeholder\n * in case of image error.\n * @returns JSX.Element\n */\nexport const CarouselImage = ({\n  alt,\n  imageProps,\n  url,\n  captionData,\n  isActive,\n  metrics,\n}: CarouselImageProps) => {\n  const [isImageError, setIsImageError] = useState(false);\n  const [isImageLoaded, setIsImageLoaded] = useState(false);\n\n  return (\n    <>\n      <div\n        className={classnames('bg-text/10 absolute inset-0 size-full shrink-0', {\n          'animate-pulse': !isImageLoaded,\n        })}\n      />\n      {isImageError ? (\n        <CarouselNoImage isFullSize />\n      ) : (\n        <figure className=\"relative size-full\">\n          <Image\n            alt={alt || ''}\n            className={classnames('absolute inset-0 size-full object-cover duration-500', {\n              'opacity-0': !isImageLoaded,\n              'opacity-100': isImageLoaded,\n            })}\n            layout=\"fill\"\n            onError={() => {\n              setIsImageError(true);\n            }}\n            onLoadingComplete={() => {\n              setIsImageLoaded(true);\n            }}\n            src={url}\n            unoptimized={true}\n            data-testid=\"carousel-image\"\n            aria-hidden={isActive ? 'false' : 'true'}\n            {...imageProps}\n          />\n          {captionData && isActive ? (\n            <Caption\n              caption={captionData?.caption}\n              captionLink={captionData?.captionLink}\n              metricsOnClick={() => metrics && trackEvent(ANALYTICS_GLOBAL_CLICK_EVENT, metrics)}\n            />\n          ) : null}\n        </figure>\n      )}\n    </>\n  );\n};\n","import {\n  ANALYTICS_NO_VALUE,\n  type BaseImageMetrics,\n  ImageClickID,\n  type ImageClickIDType,\n  ImageFunction,\n  ImageType,\n} from '@dx-ui/config-metrics';\nimport type { CarouselSingleMetrics } from '../types/carousel-analytics';\n\ntype GenerateCarouselSingleMetricsParams = {\n  metrics?: Partial<BaseImageMetrics>;\n  position?: number;\n  images?: { alt: string }[];\n  itemTitle?: string;\n  clickID: ImageClickIDType;\n  imageFunction?: (typeof ImageFunction)['Link'];\n};\n\n/**\n * Utility function to generate carousel metrics\n */\nexport function generateCarouselSingleMetrics({\n  metrics,\n  position,\n  images,\n  itemTitle = ANALYTICS_NO_VALUE,\n  clickID = ImageClickID.Scroll,\n  imageFunction,\n}: GenerateCarouselSingleMetricsParams): CarouselSingleMetrics {\n  const carouselMetrics = {\n    click: {\n      ...metrics?.click,\n      clickID,\n    },\n    osc: {\n      ...metrics?.osc,\n      image: {\n        ...metrics?.osc?.image,\n        headline: metrics?.osc?.image?.headline || ANALYTICS_NO_VALUE,\n        count: images?.length || 0,\n        position: position || 0,\n        itemTitle: itemTitle || ANALYTICS_NO_VALUE,\n        type: ImageType.Carousel,\n      },\n    },\n  };\n\n  if (imageFunction === ImageFunction.Link) {\n    carouselMetrics.osc.image = {\n      ...carouselMetrics.osc.image,\n      function: ImageFunction.Link,\n    };\n  }\n\n  return carouselMetrics;\n}\n\n/**\n * Utility function to generate CPM carousel metrics\n * The returned object will serve as a partial image metric object to be extended within the CarouselSingle component\n */\nexport function generateCpmCarouselMetrics(\n  headline: string | null | undefined,\n  clickID?: ImageClickIDType\n): Partial<BaseImageMetrics> {\n  return {\n    click: {\n      clickID: clickID ?? ImageClickID.Img,\n    },\n    osc: {\n      image: {\n        // All the other CarouselSingleMetrics attributes will be set in CarouselSingle\n        headline: headline || ANALYTICS_NO_VALUE,\n        type: ImageType.Carousel,\n      },\n    },\n  };\n}\n","/* eslint-disable react/display-name */\nimport cx from 'classnames';\nimport type * as React from 'react';\nimport { useRef, useState } from 'react';\nimport { useTranslation } from 'next-i18next';\nimport type { CaptionProps } from '@dx-ui/osc-caption';\nimport { Icon } from '@dx-ui/osc-icon';\nimport type { TFunction } from 'i18next';\nimport { CarouselImage } from './carousel-image';\nimport { CarouselNoImage } from './carousel-no-image';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { isRtl as isRtlLanguage } from '@dx-ui/utilities-get-language-direction';\nimport { useRouter } from 'next/router';\nimport {\n  ANALYTICS_GLOBAL_CLICK_EVENT,\n  ANALYTICS_NO_VALUE,\n  type BaseImageMetrics,\n  ImageClickID,\n  ImageFunction,\n  trackEvent,\n} from '@dx-ui/config-metrics';\nimport { generateCarouselSingleMetrics } from './utils/carousel-analytics';\n\nexport type CarouselImages = {\n  alt: string;\n  url: string;\n  captionData?: CaptionProps;\n  children?: React.ReactNode;\n};\n\nexport type CarouselSinglePropsBase = {\n  images?: CarouselImages[];\n  startingIndex?: number;\n  isLoading?: boolean;\n  onArrowClick?: (index: number) => void;\n  showAlternateControls?: boolean;\n  isTailored?: boolean;\n  metrics?: Partial<BaseImageMetrics>;\n};\n\nexport type CarouselSingleProps = CarouselSinglePropsBase & React.HTMLAttributes<HTMLDivElement>;\n\nconst CarouselNavigationButton = ({\n  children,\n  direction,\n  isTailored,\n  ...rest\n}: {\n  children: React.ReactNode;\n  direction: 'left' | 'right';\n  isTailored?: CarouselSinglePropsBase['isTailored'];\n} & React.HTMLAttributes<HTMLButtonElement>) => (\n  <button\n    className=\"relative flex appearance-none items-center overflow-hidden\"\n    type=\"button\"\n    {...rest}\n  >\n    {children}\n    <span\n      className={cx({\n        '@[256px]/carousel:px-2 py-2 px-1 bg-bg-inverse opacity-90': !isTailored,\n        'bg-[rgb(var(--color-background))] p-2 md:p-3': isTailored,\n      })}\n    >\n      <Icon\n        name=\"arrowhead-left\"\n        className={cx('@[256px]/carousel:size-7 @[448px]/carousel:size-8 h-3 w-5', {\n          '-scale-x-100': direction === 'right',\n          'fill-text': isTailored,\n          'fill-text-inverse': !isTailored,\n        })}\n      />\n    </span>\n  </button>\n);\n\nconst CarouselControls = ({\n  showAlternateControls,\n  activeIndex,\n  count,\n  isRtl = false,\n  isTailored = false,\n  handlePreviousButtonClick,\n  handleNextButtonClick,\n  t,\n}: {\n  isRtl: boolean;\n  isTailored?: CarouselSinglePropsBase['isTailored'];\n  showAlternateControls?: boolean;\n  count: number;\n  activeIndex: number;\n  handlePreviousButtonClick: () => void;\n  handleNextButtonClick: () => void;\n  t: TFunction<'osc-carousel'>;\n}) => {\n  const leftNav = (\n    <CarouselNavigationButton\n      data-testid=\"previousCarouselImage\"\n      direction={isRtl ? 'right' : 'left'}\n      onClick={handlePreviousButtonClick}\n      isTailored={isTailored}\n    >\n      <span className=\"sr-only\">{t('previousImage')}</span>\n    </CarouselNavigationButton>\n  );\n\n  const rightNav = (\n    <CarouselNavigationButton\n      data-testid=\"nextCarouselImage\"\n      direction={isRtl ? 'left' : 'right'}\n      onClick={handleNextButtonClick}\n      isTailored={isTailored}\n    >\n      <span className=\"sr-only\">{t('nextImage')}</span>\n    </CarouselNavigationButton>\n  );\n\n  const paginationCounter = showAlternateControls ? (\n    <>\n      <p\n        aria-hidden\n        className={cx('@[256px]/carousel:text-base select-none overflow-hidden text-xs', {\n          'bg-[rgb(var(--color-background))] p-2.5 md:p-4 text-xs tracking-wide font-semibold':\n            isTailored,\n          'text-text-inverse': !isTailored,\n        })}\n      >\n        {activeIndex + 1} / {count}\n      </p>\n      <span className=\"sr-only\" aria-live=\"polite\">\n        {t('imageCount', { activeIndex: activeIndex + 1, imageCount: count })}\n      </span>\n    </>\n  ) : (\n    <>\n      <p\n        data-osc-product=\"carousel-label\"\n        aria-hidden\n        className=\"bg-bg-inverse text-text-inverse @[256px]/carousel:text-sm @[448px]/carousel:text-base absolute bottom-0 right-0 flex select-none items-center overflow-hidden px-2 py-1 text-xs opacity-90 rtl:left-0 rtl:right-auto\"\n      >\n        {activeIndex + 1} / {count}\n      </p>\n      <span className=\"sr-only\" aria-live=\"polite\">\n        {t('imageCount', { activeIndex: activeIndex + 1, imageCount: count })}\n      </span>\n    </>\n  );\n\n  return showAlternateControls ? (\n    <div\n      data-testid=\"testAlternateControlClassName\"\n      className={cx('absolute flex', {\n        'bottom-0 right-10 opacity-90 bg-bg-inverse items-center': !isTailored,\n        'bottom-1 right-1 md:bottom-4 md:right-4 gap-0.5 justify-evenly items-stretch': isTailored,\n      })}\n    >\n      {isTailored ? (\n        <>\n          {leftNav}\n          {rightNav}\n          {paginationCounter}\n        </>\n      ) : (\n        <>\n          {leftNav}\n          {paginationCounter}\n          {rightNav}\n        </>\n      )}\n    </div>\n  ) : (\n    <>\n      {paginationCounter}\n      <div className=\"absolute inset-y-1/2 flex w-full items-center justify-between\">\n        {leftNav}\n        {rightNav}\n      </div>\n    </>\n  );\n};\n\n/**\n *\n * A carousel that displays a single image at a time. Includes a built in loading (shimmer) and error handling state\n * @returns JSX.element\n */\nexport const CarouselSingle = ({\n  className,\n  images,\n  startingIndex = 0,\n  onArrowClick,\n  isLoading = false,\n  showAlternateControls,\n  isTailored = false,\n  metrics,\n  ...rest\n}: CarouselSingleProps) => {\n  const { t } = useTranslation('osc-carousel');\n  const { locale = 'en' } = useRouter();\n  const isRtl = isRtlLanguage(locale);\n  const [activeIndex, setActiveIndex] = useState(startingIndex);\n  const [touchStart, setTouchStart] = useState(0);\n  const [touchEnd, setTouchEnd] = useState(0);\n  const ref = useRef<HTMLDivElement | null>(null);\n\n  const count = images?.length ?? 0;\n\n  const rect = useRect({ ref: count > 0 ? ref : { current: null } });\n\n  const width = rect?.width ?? 0;\n  const height = rect?.height ?? 0;\n  const imageTranslateX = `${!isRtl ? '-' : ''}${\n    activeIndex === 0 ? 0 : 100 / (count / activeIndex)\n  }%`;\n\n  const handleNextButtonClick = () => {\n    const newIndex = images && activeIndex === images.length - 1 ? 0 : activeIndex + 1;\n    if (onArrowClick) onArrowClick(newIndex);\n    setActiveIndex(newIndex);\n\n    trackEvent(\n      ANALYTICS_GLOBAL_CLICK_EVENT,\n      generateCarouselSingleMetrics({\n        metrics,\n        images,\n        clickID: ImageClickID.Scroll,\n        itemTitle:\n          images?.[activeIndex]?.captionData?.caption ||\n          images?.[activeIndex]?.alt ||\n          ANALYTICS_NO_VALUE,\n        position: activeIndex + 1, // 1-based index\n      })\n    );\n  };\n  const handlePreviousButtonClick = () => {\n    const newIndex = images && activeIndex === 0 ? images.length - 1 : activeIndex - 1;\n    if (onArrowClick) onArrowClick(newIndex);\n    setActiveIndex(newIndex);\n\n    trackEvent(\n      ANALYTICS_GLOBAL_CLICK_EVENT,\n      generateCarouselSingleMetrics({\n        metrics,\n        images,\n        clickID: ImageClickID.Scroll,\n        itemTitle:\n          images?.[activeIndex]?.captionData?.caption ||\n          images?.[activeIndex]?.alt ||\n          ANALYTICS_NO_VALUE,\n        position: activeIndex + 1, // 1-based index\n      })\n    );\n  };\n\n  const handleTouchStart = (e: React.TouchEvent<HTMLDivElement>) => {\n    e.stopPropagation();\n    setTouchStart(e.targetTouches[0]?.clientX ?? 0);\n  };\n  const handleTouchMove = (e: React.TouchEvent<HTMLDivElement>) => {\n    setTouchEnd(e.targetTouches[0]?.clientX ?? 0);\n  };\n  const handleTouchEnd = () => {\n    //swipe sensitivity can be adjusted - travel distance in [number] pixels of user swipe event\n    const SWIPE_SENSITIVITY = 50;\n    //swipe left\n    if (touchStart - touchEnd > SWIPE_SENSITIVITY && touchEnd > 0) handleNextButtonClick();\n    //swipe right\n    if (touchStart - touchEnd < -SWIPE_SENSITIVITY && touchEnd > 0) handlePreviousButtonClick();\n\n    setTouchStart(0);\n    setTouchEnd(0);\n  };\n\n  /** If content of gallery is loading present shimmer state to prevent CLS */\n  if (isLoading)\n    return (\n      <div\n        className={cx(\n          'bg-bg-alt relative aspect-[3/2] w-full animate-pulse overflow-hidden',\n          className\n        )}\n        data-testid=\"singleImageCarouselLoading\"\n        ref={ref}\n        {...rest}\n      />\n    );\n\n  /** No images are available return placeholder with message */\n  if (!images || !count) {\n    return <CarouselNoImage className={className} />;\n  }\n\n  return (\n    <div\n      className={cx('@container/carousel relative aspect-[3/2] w-full overflow-hidden', className)}\n      onTouchEnd={handleTouchEnd}\n      onTouchMove={handleTouchMove}\n      onTouchStart={handleTouchStart}\n      ref={ref}\n      {...rest}\n    >\n      <div\n        className=\"ease-out-quint relative flex select-none overflow-hidden transition duration-500\"\n        data-testid=\"singleImageCarousel\"\n        style={{\n          height,\n          width: `${count * 100}%`,\n          transform: `translate3d(${imageTranslateX}, 0, 0)`,\n        }}\n      >\n        {images?.map((imageProps, index) => (\n          <div\n            className=\"bg-bg-alt relative size-full overflow-hidden\"\n            key={`carousel-image-${imageProps.url}`}\n            style={{ width }}\n            data-testid={`image-carousel-wrap-${index + 1}`}\n          >\n            <CarouselImage\n              isActive={index === activeIndex}\n              {...imageProps}\n              imageProps={{ priority: index === 0 }}\n              metrics={generateCarouselSingleMetrics({\n                metrics,\n                position: index + 1, // 1-based index\n                images,\n                itemTitle: imageProps?.captionData?.caption || ANALYTICS_NO_VALUE,\n                clickID: ImageClickID.Img,\n                imageFunction: ImageFunction.Link,\n              })}\n            />\n            {imageProps.children ? <div>{imageProps.children}</div> : null}\n          </div>\n        ))}\n      </div>\n      {/* Only show carousel controls/count if we have more than 1 image passed in */}\n      {count > 1 ? (\n        <CarouselControls\n          handleNextButtonClick={handleNextButtonClick}\n          handlePreviousButtonClick={handlePreviousButtonClick}\n          count={count}\n          t={t}\n          activeIndex={activeIndex}\n          showAlternateControls={showAlternateControls}\n          isTailored={isTailored}\n          isRtl={isRtl}\n        />\n      ) : null}\n    </div>\n  );\n};\n\nexport default CarouselSingle;\n","export * from './lib/carousel-single';\nexport * from './lib/carousel-no-image';\nexport * from './lib/carousel-image';\nexport * from './lib/utils/carousel-analytics';\nexport * from './lib/types/carousel-analytics';\n","// Note: See old file history at https://gitlab.svc-m.hhc.hilton.com/pac/hiw/dx-hotels-ui/-/blob/17b699b0671894da33c7751415283f954ef01838/src/components/custom-markdown/index.tsx\nimport Markdown from 'markdown-to-jsx';\nimport cx from 'classnames';\nimport merge from 'lodash/merge';\n\nimport { isBrowser } from '@dx-ui/utilities-is-browser';\n\nimport type { MarkdownToJSX } from 'markdown-to-jsx';\nimport { Children, type ReactNode } from 'react';\n\nexport type TagRendererProps = {\n  tag: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'table' | 'th' | 'td' | 'b' | 'p';\n  children: ReactNode;\n};\n\nconst targetOpensInNewWindow = (href: string) => (href ? href.endsWith('target_blank') : false);\n\nconst TagRenderer = ({ tag: Tag, children, ...props }: TagRendererProps) => (\n  <Tag {...props}>{children}</Tag>\n);\n\nexport type LinkRendererProps = {\n  href: string;\n  children: ReactNode;\n  brandComponentTheme?: CmsBrandComponentTheme;\n};\n\nconst MarkdownLinkRenderer = (props: LinkRendererProps) => {\n  let { href } = props;\n  const { children } = props;\n\n  if (!href) {\n    return null;\n  }\n\n  if (Children.count(props.children) === 0) {\n    return null;\n  }\n\n  if (targetOpensInNewWindow(href)) {\n    href = href.replace('/target_blank', '');\n    return (\n      <a\n        href={href}\n        target=\"_blank\"\n        rel=\"noopener noreferrer\"\n        className={cx('underline', {\n          'text-text-inverse': props.brandComponentTheme === 'dark',\n          'text-primary hover:text-primary-alt brand-gi:text-tertiary brand-gi:hover:text-tertiary-alt brand-ht:text-text-inverse brand-ht:hover:text-text-inverse':\n            props.brandComponentTheme === 'light',\n          'text-primary hover:text-primary-alt ':\n            props.brandComponentTheme !== 'light' && props.brandComponentTheme !== 'dark',\n        })}\n      >\n        {children}\n      </a>\n    );\n  }\n  if (href.endsWith('_backToTop')) {\n    href = href.replace('_backToTop', '');\n    return (\n      <>\n        <a\n          href={href}\n          className={cx('underline', {\n            'text-text-inverse': props.brandComponentTheme === 'dark',\n            'text-primary hover:text-primary-alt brand-gi:text-tertiary brand-gi:hover:text-tertiary-alt brand-ht:text-text-inverse brand-ht:hover:text-text-inverse':\n              props.brandComponentTheme === 'light',\n            'text-primary hover:text-primary-alt ':\n              props.brandComponentTheme !== 'light' && props.brandComponentTheme !== 'dark',\n          })}\n        >\n          {children}\n        </a>\n        <div />\n      </>\n    );\n  }\n  if (href.endsWith('Join_US')) {\n    href = href.replace('Join_US', '');\n    return (\n      <a\n        href={href}\n        className={cx('join-us-link underline', {\n          'text-text-inverse': props.brandComponentTheme === 'dark',\n          'text-primary hover:text-primary-alt brand-gi:text-tertiary brand-gi:hover:text-tertiary-alt brand-ht:text-text-inverse brand-ht:hover:text-text-inverse':\n            props.brandComponentTheme === 'light',\n          'text-primary hover:text-primary-alt ':\n            props.brandComponentTheme !== 'light' && props.brandComponentTheme !== 'dark',\n        })}\n      >\n        {children}\n      </a>\n    );\n  }\n\n  if (href === 'teconsent') {\n    //`trustarc` is for analytics tracking (cookie preferences page) from GDPR countries\n    if (isBrowser && window?.location?.href?.includes('?trustarc')) {\n      return (\n        // eslint-disable-next-line jsx-a11y/anchor-is-valid\n        <a\n          id={href}\n          className={cx('join-us-link underline', {\n            'text-text-inverse': props.brandComponentTheme === 'dark',\n            'text-primary hover:text-primary-alt brand-gi:text-tertiary brand-gi:hover:text-tertiary-alt brand-ht:text-text-inverse brand-ht:hover:text-text-inverse':\n              props.brandComponentTheme === 'light',\n            'text-primary hover:text-primary-alt ':\n              props.brandComponentTheme !== 'light' && props.brandComponentTheme !== 'dark',\n          })}\n        >\n          {}\n        </a>\n      );\n    }\n    return (\n      // eslint-disable-next-line jsx-a11y/anchor-is-valid\n      <a\n        id={href}\n        className={cx('join-us-link underline', {\n          'text-text-inverse': props.brandComponentTheme === 'dark',\n          'text-primary hover:text-primary-alt brand-gi:text-tertiary brand-gi:hover:text-tertiary-alt brand-ht:text-text-inverse brand-ht:hover:text-text-inverse':\n            props.brandComponentTheme === 'light',\n          'text-primary hover:text-primary-alt ':\n            props.brandComponentTheme !== 'light' && props.brandComponentTheme !== 'dark',\n        })}\n      >\n        {children}\n      </a>\n    );\n  }\n\n  if (href.startsWith('#') && Array.isArray(children) && children.length === 0) {\n    return <span id={href.replace('#', '')} />;\n  }\n  return (\n    <a\n      href={href}\n      className={cx('join-us-link break-words underline', {\n        'text-text-inverse': props.brandComponentTheme === 'dark',\n        'text-primary hover:text-primary-alt brand-gi:text-tertiary brand-gi:hover:text-tertiary-alt brand-ht:text-text-inverse brand-ht:hover:text-text-inverse':\n          props.brandComponentTheme === 'light',\n        'text-primary hover:text-primary-alt ':\n          props.brandComponentTheme !== 'light' && props.brandComponentTheme !== 'dark',\n      })}\n    >\n      {children}\n    </a>\n  );\n};\n\nexport type CustomMarkdownProps = {\n  children: string;\n  options?: MarkdownToJSX.Options;\n  isStaticContentPage?: boolean;\n  id?: string;\n  brandComponentTheme?: CmsBrandComponentTheme;\n};\n\n/**\n * CustomMarkdown renders a markdown string to the DOM using React components.\n * It wraps the NPM package `markdown-to-jsx`, and provides renderers for many common markdown elements with specific styling classes\n */\nexport const CustomMarkdown = ({\n  isStaticContentPage,\n  children,\n  options,\n  id,\n  brandComponentTheme,\n}: CustomMarkdownProps) => {\n  const baseClass = cx('font-headline', {\n    'text-text-inverse': brandComponentTheme === 'dark',\n    'brand-ht:text-text-inverse': brandComponentTheme === 'light',\n  });\n\n  const defaultOptions = {\n    overrides: {\n      a: {\n        component: MarkdownLinkRenderer,\n        props: {\n          brandComponentTheme,\n        },\n      },\n      h1: {\n        component: TagRenderer,\n        props: {\n          tag: 'h1',\n          tabIndex: '-1',\n          className: cx(baseClass, 'heading-2xl lg:heading-4xl focus:ring lg:mb-2'),\n          ...(id ? { id } : {}),\n        },\n      },\n      h2: {\n        component: TagRenderer,\n        props: {\n          tag: 'h2',\n          ...(id ? { id } : {}),\n          className: cx(\n            baseClass,\n            'heading-xl lg:heading-2xl',\n            isStaticContentPage ? 'lg:mb-2' : 'lg:mb-1'\n          ), // segregating styles for static pages in Brand & Brand pages,\n        },\n      },\n      h3: {\n        component: TagRenderer,\n        props: {\n          tag: 'h3',\n          ...(id ? { id } : {}),\n          className: cx(baseClass, 'heading-lg lg:heading-xl lg:mb-1'),\n        },\n      },\n      table: {\n        component: TagRenderer,\n        props: {\n          tag: 'table',\n          className: 'table-auto -ml-2',\n        },\n      },\n      thead: {\n        component: TagRenderer,\n        props: {\n          tag: 'thead',\n          className: 'border border-border-alt sm:overflow-hidden',\n        },\n      },\n      th: {\n        component: TagRenderer,\n        props: {\n          tag: 'th',\n          className: 'bg-border-alt pt-3 pb-3 px-2',\n        },\n      },\n      td: {\n        component: TagRenderer,\n        props: {\n          tag: 'td',\n          className: 'px-2 py-1 h-4',\n        },\n      },\n      b: { component: TagRenderer, props: { tag: 'b' } },\n      p: { component: TagRenderer, props: { tag: 'p' } },\n      ul: {\n        component: TagRenderer,\n        props: {\n          tag: 'ul',\n          className: 'list-disc ps-8 my-4',\n        },\n      },\n      ol: {\n        component: TagRenderer,\n        props: {\n          tag: 'ol',\n          className: 'list-decimal ps-8 my-4',\n        },\n      },\n      li: {\n        component: TagRenderer,\n        props: {\n          tag: 'li',\n          className: 'my-2',\n        },\n      },\n    },\n  };\n\n  const mergedOpts = merge(defaultOptions, options);\n  let markdownArray: string[];\n  let updatedChildren: string;\n\n  //checking if the block of markdown is a table\n  if (children[0] === '|' && children.slice(-1) === '|') {\n    updatedChildren = children;\n  }\n\n  //if the block of markdown is not a table, then making the line breaks of a markdown block as '<div class=\"p-2\"></div>'\n  else {\n    markdownArray = children.split(/\\r\\n|\\n/);\n    updatedChildren = markdownArray\n      .map((markdown, index) => {\n        if (markdown === '') {\n          if (markdownArray[index + 1] === undefined || markdownArray[index + 1] === null)\n            return '';\n          return '<div class=\"p-2\"></div>\\n';\n        }\n        return `${markdown} \\n\\n`;\n      })\n      .join('');\n  }\n\n  return <Markdown options={mergedOpts}>{updatedChildren}</Markdown>;\n};\n","export * from './lib/custom-markdown';\n","import type { HTMLAttributes, ReactNode } from 'react';\nimport { createContext, useContext } from 'react';\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\nexport type HeadingLevelContext = [\n  // Should the heading level increase?\n  boolean,\n  // The current heading level defined in the context\n  HeadingLevel\n];\n\nconst DEFAULT_HEADING_LEVEL = 2;\nconst DEFAULT_CONTEXT_VALUE: HeadingLevelContext = [false, DEFAULT_HEADING_LEVEL];\n\nconst HeadingLevelContext = createContext<HeadingLevelContext>(DEFAULT_CONTEXT_VALUE);\n\nexport function useHeadingLevel() {\n  return useContext(HeadingLevelContext);\n}\n\n/**\n * Calculate the heading level based on props passed via the HeadingLevelProvider component\n * 1) Always return the level if it has been explicitly defined via the level prop e.g. <HeadingLevelProvider level=\"1\" />\n * 2) Return the parent level + 1, if the <HeadingLevelProvider /> component has been nested inside another <HeadingLevelProvider />\n * 3) Fallback to the DEFAULT_HEADING_LEVEL at the top of this file\n */\nfunction calculateHeadingLevel({\n  level,\n  parent,\n}: {\n  level?: HeadingLevel;\n  parent: {\n    level?: HeadingLevel;\n    shouldIncreaseLevel?: boolean;\n  };\n}) {\n  if (level) {\n    return level;\n  }\n\n  const { level: parentLevel, shouldIncreaseLevel } = parent;\n\n  if (shouldIncreaseLevel && parentLevel) {\n    return (parentLevel + 1) as HeadingLevel;\n  }\n\n  if (parentLevel) {\n    return parentLevel;\n  }\n\n  return DEFAULT_HEADING_LEVEL;\n}\n\nexport interface HeadingLevelProviderProps {\n  /** Any valid `ReactNode` */\n  children: ReactNode;\n  /** The level that headings should render as. Nested `<HeadingLevelProvider>`s will increase this number automatically. */\n  level?: HeadingLevel;\n  /**\n   * Increase the heading level when nested inside a `<HeadingLevelProvider>` component.\n   * This can be used to stop the heading level increasing if a parent heading in the component is set to conditionally\n   * render.\n   * */\n  shouldIncreaseLevel?: boolean;\n  /**\n   * Should heading levels increase or always use the fallback value?\n   * This prop only needs to be set on the first provider.\n   * */\n  isEnabled?: boolean;\n}\n\n/**\n * Automatically increase the heading level for child `<HeadingLevel />` components. You should wrap any child headings\n * with this provider so levels increase.\n * The first `<HeadingLevelProvider />` must have the `isEnabled` prop set for heading levels to start increasing.\n */\nexport function HeadingLevelProvider({\n  children,\n  level,\n  shouldIncreaseLevel = true,\n  isEnabled = false,\n}: HeadingLevelProviderProps) {\n  const [isParentEnabled, parentLevel] = useHeadingLevel() ?? DEFAULT_CONTEXT_VALUE;\n\n  return (\n    <HeadingLevelContext.Provider\n      value={[\n        isParentEnabled || isEnabled,\n        calculateHeadingLevel({ level, parent: { level: parentLevel, shouldIncreaseLevel } }),\n      ]}\n    >\n      {children}\n    </HeadingLevelContext.Provider>\n  );\n}\n\nexport interface HeadingProps extends HTMLAttributes<HTMLHeadingElement> {\n  /**\n   * The heading level that should be used if this component is either not rendered inside the `<HeadingLevelProvider />`\n   * component OR a parent `<HeadingLevelProvider />` hasn't enabled stacking\n   * */\n  headingLevelFallback?: HeadingLevel;\n}\n\n/**\n * Automatically render the correct heading level when this component is a child of the `<HeadingLevelProvider />`\n * component.\n * Defaults to a `<h2>` if `headingLevelFallback` prop is not defined.\n * The `headingLevelFallback` prop will be used when `HeadingLevelContext` is `undefined` OR `<HeadingLevelProvider />`\n * has the `isEnabled` prop set to `false`.\n */\nexport function HeadingLevel({\n  children,\n  headingLevelFallback = DEFAULT_HEADING_LEVEL,\n  ...props\n}: HeadingProps) {\n  const context = useHeadingLevel();\n  let Tag = `h${headingLevelFallback}`;\n\n  if (context !== undefined && context[0]) {\n    const level = context[1];\n    Tag = level > 6 ? 'span' : `h${level}`;\n  }\n\n  return <Tag {...props}>{children}</Tag>;\n}\n","export * from './heading-level';\n","export * from './lib';\n","let prefersReducedMotion: boolean | null = null;\nexport const getPrefersReducedMotion = () => {\n  if (prefersReducedMotion === null) {\n    prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  }\n  return prefersReducedMotion;\n};\n","import type { FC } from 'react';\nimport { createRef, useCallback, useMemo, useRef, useState } from 'react';\nimport Image from 'next/image';\nimport { Icon } from '@dx-ui/osc-icon';\nimport { HeadingLevel } from '@dx-ui/osc-heading-level';\nimport { useRouter } from 'next/router';\nimport { isRtl } from '@dx-ui/utilities-get-language-direction';\nimport cx from 'classnames';\n\nimport { getPrefersReducedMotion } from '../utils/get-prefers-reduced-motion';\nimport type { TBrandShowcase, TBrandShowcaseItem } from './brand-showcase.types';\nimport { useTranslation } from 'next-i18next';\nimport { useDebounceCallback } from 'usehooks-ts';\n\nexport const NavItemWidth = 224; // px\nexport const END_MARGIN = 5; // px\nexport const SLIDE_DURATION = 0.5; // seconds\n\n/**\n * List of the Hilton brands in a carousel like form. Each brand includes a logo, additional info about the currently selected brand, a link to the brand page,\n * and includes navigation controls to cycle through each brand.\n */\nexport const BrandShowcase: FC<TBrandShowcase> = ({ items, id, onItemClicked, logoUrl }) => {\n  const { t } = useTranslation('osc-marketing-brand-showcase');\n  const { locale = 'en' } = useRouter();\n  const rtl = isRtl(locale);\n\n  const [selectedItem, setSelectedItem] = useState<TBrandShowcaseItem | undefined>(items[0]);\n  const [atScrollEnd, setAtScrollEnd] = useState(false);\n\n  const scrollAnimationRequest = useRef<number | null>(null);\n  const scrollRef = useRef<HTMLDivElement>(null);\n  const itemRefs = useMemo(() => items.map(() => createRef<HTMLButtonElement>()), [items]);\n\n  const onShowcaseItemClicked = (item: TBrandShowcaseItem | undefined) => {\n    const index = items?.findIndex((i) => i === item);\n    if (item !== selectedItem && scrollRef.current) {\n      const totalWidth = scrollRef.current.scrollWidth;\n      const { offsetWidth } = scrollRef.current;\n      //Getting width of the first brand item which is equal to all other brand items\n      const brandRect = scrollRef?.current?.children[0]?.getBoundingClientRect();\n      const width = brandRect?.width || 0;\n\n      let desiredScrollLeft = index * width * (rtl ? -1 : 1);\n      const maxScrollLeft = totalWidth - offsetWidth * (rtl ? -1 : 1);\n      if (desiredScrollLeft > maxScrollLeft) {\n        desiredScrollLeft = maxScrollLeft;\n      }\n      const onComplete = () => {\n        const previousItem = selectedItem;\n        setSelectedItem(item);\n        itemRefs[index]?.current?.focus();\n\n        previousItem !== item && onItemClicked && onItemClicked(index);\n      };\n      if (scrollRef.current.scrollLeft !== desiredScrollLeft) {\n        scrollToOffset(desiredScrollLeft, onComplete);\n      } else {\n        onComplete();\n      }\n    }\n  };\n\n  const scrollToOffset = useCallback(\n    (desiredScrollLeft: number, onComplete?: () => void) => {\n      if (scrollRef.current) {\n        if (scrollAnimationRequest.current) {\n          cancelAnimationFrame(scrollAnimationRequest.current);\n          scrollAnimationRequest.current = null;\n        }\n\n        const { scrollLeft } = scrollRef.current;\n\n        if (getPrefersReducedMotion()) {\n          scrollRef.current.scrollLeft = desiredScrollLeft;\n          onComplete && onComplete();\n        } else {\n          const scrollDistance = desiredScrollLeft - scrollLeft;\n          const duration = Math.max(350, Math.abs(scrollDistance) * 0.6);\n          let startTime: number;\n\n          const animateScroll = (timeStamp: number) => {\n            if (!startTime) {\n              startTime = timeStamp;\n            }\n\n            const progress = (timeStamp - startTime) / duration;\n            const easing =\n              progress < 0.5\n                ? SLIDE_DURATION * progress * progress\n                : (4 - 2 * progress) * progress - 1;\n\n            if (scrollRef.current) {\n              scrollRef.current.scrollLeft = scrollLeft + scrollDistance * easing;\n\n              if (progress < 1) {\n                scrollAnimationRequest.current = requestAnimationFrame(animateScroll);\n              } else {\n                scrollAnimationRequest.current = null;\n                onComplete && onComplete();\n              }\n            }\n          };\n\n          scrollAnimationRequest.current = requestAnimationFrame(animateScroll);\n        }\n      }\n    },\n    [scrollAnimationRequest, scrollRef]\n  );\n\n  const debouncedOnScroll = useDebounceCallback(() => {\n    if (scrollRef.current) {\n      const { scrollLeft, scrollWidth: totalWidth, offsetWidth } = scrollRef.current;\n      const marginForDetectingBrandPosition = 7;\n\n      const distanceFromEndOfScrollBar = totalWidth - offsetWidth - Math.abs(scrollLeft);\n      const endOfScrollBar =\n        distanceFromEndOfScrollBar < marginForDetectingBrandPosition &&\n        distanceFromEndOfScrollBar > -marginForDetectingBrandPosition;\n\n      //Getting width of the first brand item which is equal to all other brand items\n      const brandRect = scrollRef?.current?.children[0]?.getBoundingClientRect();\n      const width = brandRect?.width || 0;\n\n      const index = Math.min(items.length - 1, Math.ceil(Math.abs(scrollLeft) / Math.ceil(width)));\n\n      const currentIndex = items.findIndex((i) => i === selectedItem);\n\n      // Don't adjust if we aren't at a scroll stop point unless we are at the end of the bar and currentIndex is before index\n      if (!endOfScrollBar || (endOfScrollBar && currentIndex < index)) {\n        const previousItem = selectedItem;\n        setSelectedItem(items[index]);\n        itemRefs[index]?.current?.focus();\n\n        previousItem !== items[index] && onItemClicked && onItemClicked(index);\n      }\n      setAtScrollEnd(endOfScrollBar);\n    }\n  }, 300);\n\n  const onScrollWrapper = () => {\n    if (atScrollEnd && scrollRef.current) {\n      const { scrollLeft, offsetWidth, scrollWidth: totalWidth } = scrollRef.current;\n\n      const distanceFromEndOfScrollBar = totalWidth - offsetWidth - scrollLeft;\n      const endOfScrollBar = Math.abs(distanceFromEndOfScrollBar) < END_MARGIN;\n      if (!endOfScrollBar) {\n        setAtScrollEnd(false);\n      }\n    }\n    debouncedOnScroll();\n  };\n\n  const handleTabListWrapperKeyDown = (evt: React.KeyboardEvent) => {\n    const index = items.findIndex((i) => i.code === selectedItem?.code);\n    switch (evt.key) {\n      case 'ArrowLeft':\n        evt.preventDefault();\n        evt.stopPropagation();\n\n        if (index !== 0) {\n          onShowcaseItemClicked(items[index - 1]);\n        }\n\n        break;\n      case 'ArrowRight':\n        evt.preventDefault();\n        evt.stopPropagation();\n\n        if (index !== items.length - 1) {\n          onShowcaseItemClicked(items[index + 1]);\n        }\n\n        break;\n      default:\n    }\n  };\n\n  const slide = (direction: number) => {\n    const index = items.findIndex((i) => i.code === selectedItem?.code);\n    let targetIndex;\n    if (direction < 0) {\n      targetIndex = index === 0 ? 0 : index - 1;\n      // if we are at the end, make sure to update the endrow state\n      if (targetIndex < items.length - 1) {\n        setAtScrollEnd(false);\n      }\n    } else {\n      targetIndex = index === items.length - 1 ? items.length - 1 : index + 1;\n    }\n    onShowcaseItemClicked(items[targetIndex]);\n  };\n\n  const index = items.findIndex((i) => i.code === selectedItem?.code);\n\n  const NavItems = items.map((item, idx) => (\n    <div\n      className=\"relative w-full flex-none snap-start p-1 md:w-2/6 lg:w-1/5 xl:w-1/6\"\n      key={item.code}\n    >\n      <button\n        className=\"relative h-32 w-full px-4\"\n        tabIndex={selectedItem?.name === item.name ? undefined : -1}\n        onClick={() => onShowcaseItemClicked(item)}\n        role=\"tab\"\n        aria-expanded={selectedItem?.name === item.name}\n        aria-controls={`brands-showcase-panel-${id}`}\n        ref={itemRefs[idx]}\n        aria-label={item.name}\n        onKeyDown={handleTabListWrapperKeyDown}\n        data-testid=\"brands-showcase-brand-button\"\n        type=\"button\"\n      >\n        <div className=\"bg-bg-alt brand-hi-refresh:bg-bg-light relative size-full overflow-hidden\">\n          <Image\n            id={id}\n            style={{\n              objectFit: 'contain',\n              fill: item.imageDefaultColor,\n            }}\n            // fill-[imageDefaultColor] does not fill if the SVG images already\n            // have fill colors built-in like all of the 20 brand logos on the\n            // Hilton.com homepage (portfolio site)\n            fill\n            src={`${logoUrl}/${item.code}.svg`}\n            alt={item.name}\n          />\n        </div>\n      </button>\n      {selectedItem?.name === item.name ? (\n        <div className=\"absolute bottom-0 flex h-2 w-full justify-center\">\n          <div className=\"bg-bg top-0 me-3 size-6 origin-center rotate-45\" />\n        </div>\n      ) : null}\n    </div>\n  ));\n  return (\n    <div\n      className=\"bg-bg-alt brand-hi-refresh:bg-bg-light relative w-full\"\n      data-testid=\"brandShowcaseWrapper\"\n      id={id}\n    >\n      <div className=\"brand-wa:py-16 brand-wa:xl:py-20 container flex flex-col items-start py-8 ps-4 xl:py-12\">\n        <div className=\"px-0 sm:ps-6\">\n          <HeadingLevel\n            headingLevelFallback={2}\n            className=\"text-primary heading-2xl sm:heading-3xl lg:heading-4xl pb-4 pt-1 leading-tight\"\n          >\n            {t('waysToStay')}\n          </HeadingLevel>\n        </div>\n        <div className=\"relative flex w-full\">\n          {index > 0 ? (\n            <button\n              className=\"btn btn-primary-text btn-lg absolute inset-y-0 start-0 z-10 m-1\"\n              onClick={() => slide(-1)}\n              data-testid=\"previous\"\n              type=\"button\"\n            >\n              <span className=\"sr-only\">{t('returnsToThePreviousBrand')}</span>\n              <Icon name={rtl ? 'arrowhead-right' : 'arrowhead-left'} size=\"2xl\" />\n            </button>\n          ) : null}\n          <div className=\"relative w-full overflow-hidden px-12\">\n            <div className=\"absolute start-0 top-0 inline-block h-full w-5 ltr:bg-gradient-to-l rtl:bg-gradient-to-r\" />\n            <div\n              className={cx(\n                'absolute end-4 top-0 inline-block h-full ltr:bg-gradient-to-r rtl:bg-gradient-to-l',\n                {\n                  'w-0': atScrollEnd,\n                  'w-8 md:w-32': !atScrollEnd,\n                }\n              )}\n            />\n            <div\n              className=\"snap mx-auto flex w-56 snap-x snap-mandatory overflow-x-auto overflow-y-hidden px-0 py-1 md:mx-0 md:w-full lg:overflow-x-scroll\"\n              ref={scrollRef}\n              onScroll={onScrollWrapper}\n              role=\"tablist\"\n              data-testid=\"onScrollWrapper\"\n            >\n              {NavItems}\n            </div>\n          </div>\n          {index < items.length - 1 ? (\n            <button\n              className=\"btn btn-primary-text btn-lg absolute inset-y-0 end-0 m-1\"\n              onClick={() => slide(1)}\n              data-testid=\"next\"\n              type=\"button\"\n            >\n              <span className=\"sr-only\">{t('advancesToTheNextBrand')}</span>\n              <Icon name={rtl ? 'arrowhead-left' : 'arrowhead-right'} size=\"2xl\" />\n            </button>\n          ) : null}\n        </div>\n        <div className=\"flex w-full flex-col sm:ps-6\" id={`brands-showcase-panel-${id}`}>\n          {items.map((item /* we render all tabs for SEO purposes */) => (\n            <div\n              className={`${selectedItem?.name === item.name ? 'flex' : 'hidden'} w-full flex-col`}\n              key={item.name}\n              data-testid={\n                selectedItem?.name === item.name\n                  ? 'brand-showcase-panel-active'\n                  : 'brand-showcase-panel'\n              }\n            >\n              <div className=\"bg-bg image-corner-radius mb-8 w-full px-8 pt-8\">\n                <h3 className=\"text-2xl font-bold leading-tight sm:text-3xl lg:text-4xl\">\n                  {item.name}\n                </h3>\n                <p className=\"py-5 sm:text-lg md:pb-8 lg:text-xl\">{item.shortDescription}</p>\n              </div>\n              <div className=\"flex w-full flex-col items-center\">\n                <a className=\"btn btn-primary btn-xl items-center\" href={item.url || `/en/brands/`}>\n                  {item.label || t('visitBrand', { brand: item.name })}\n                </a>\n              </div>\n            </div>\n          ))}\n        </div>\n      </div>\n    </div>\n  );\n};\n","export * from './brand-showcase';\nexport * from './brand-showcase.types';\n","import { useRef } from 'react';\nimport cx from 'classnames';\nimport type { Link } from '@dx-ui/osc-link';\nimport type { DialogBaseProps } from '@dx-ui/osc-dialog-v2';\nimport { Dialog } from '@dx-ui/osc-dialog-v2';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { ResponsiveImage, getCurrentAspectRatioAndUrl } from '@dx-ui/osc-responsive-image';\nimport type { AspectRatio, TResponsiveImage } from '@dx-ui/osc-responsive-image';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\n\nexport type DialogWithContentBase = {\n  ariaLabel?: string;\n  id?: string;\n  /**\n   *Appears at the top of the dialog\n   */\n  title?: string;\n  /**\n   * Appears under the title, headline of content\n   */\n  headline?: string;\n  /**\n   * Can include images, text, markdown\n   */\n  content?: string | JSX.Element;\n  /**\n   * CTA link/button, opens in another tab\n   */\n  link?: Link & { experimentationConfiguration?: CmsExperimentationConfiguration };\n  onClose?: () => void;\n};\n\ntype ImageUrlsType = {\n  tabletImageUrl: string;\n  mobileImageUrl: string;\n  desktopImageUrl: string;\n};\n\nexport type DialogWithContentType = DialogWithContentBase &\n  Omit<DialogBaseProps, 'content'> & {\n    isOpen: boolean;\n    imageUrl?: string;\n    captionData?: TResponsiveImage['captionData'];\n    imageUrls?: ImageUrlsType;\n    imageAltText?: string;\n    containerAspectRatio?: AspectRatio;\n    imageAspectRatio?: AspectRatio;\n    cmsTranslationClasses?: string;\n    captionMetricsOnClick?: () => void;\n    brandLinkMetricsOnClick?: () => void;\n  };\n\nexport type AspectRatioGroup = {\n  aspectRatioMobile: AspectRatio;\n  aspectRatioTablet: AspectRatio;\n  aspectRatioDesktop: AspectRatio;\n};\n\n/**\n * DialogWithContent renders many different styles of modal using the content passed into it.\n *\n * It suports rendering images, links, component children and markdown.\n */\nexport const DialogWithContent = (props: DialogWithContentType) => {\n  const ref = useRef<React.ElementRef<'div'>>(null);\n  const rect = useRect({ ref });\n\n  const {\n    imageAspectRatio = '3:2',\n    imageUrl,\n    imageUrls,\n    imageAltText,\n    captionData,\n    isOpen,\n    id = 'dialog',\n    ariaLabel,\n    title,\n    headline,\n    content,\n    link,\n    onClose,\n    cmsTranslationClasses,\n    captionMetricsOnClick,\n    brandLinkMetricsOnClick,\n    ...dialogProps\n  } = props;\n\n  let body: JSX.Element | null = null;\n  if (content) {\n    if (typeof content === 'string') {\n      body = <BrandTextBody {...props}>{content}</BrandTextBody>;\n    } else {\n      body = <div className=\"lg:prose-xl prose my-2\">{content}</div>;\n    }\n  }\n\n  const { imageUrl: multipleImageUrl, aspectRatio: multipleImageAspectRatio } = imageUrls\n    ? getCurrentAspectRatioAndUrl({\n        width: rect?.width || 700,\n        imageUrlMobile: imageUrls.mobileImageUrl,\n        imageUrlTablet: imageUrls.tabletImageUrl,\n        imageUrlDesktop: imageUrls.desktopImageUrl,\n        aspectRatioMobile: imageAspectRatio,\n        aspectRatioTablet: imageAspectRatio,\n        aspectRatioDesktop: imageAspectRatio,\n      })\n    : { imageUrl: null, aspectRatio: null };\n\n  const dialogPropsWithLabel = title ? { title } : { ariaLabel: ariaLabel || '' };\n\n  return (\n    <Dialog\n      data-testid=\"activeDialogWithContentBox\"\n      isOpen={isOpen}\n      onDismiss={onClose}\n      size=\"3xl\"\n      {...dialogProps}\n      {...dialogPropsWithLabel}\n    >\n      <div className={cx('flex h-full flex-col sm:h-auto', cmsTranslationClasses)} ref={ref}>\n        {/* This is needed in case we only need 1 img src that can be used for tablet, desktop and mobile screens */}\n        {imageUrl ? (\n          <div className=\"flex items-center justify-items-center overflow-y-hidden\">\n            <ResponsiveImage\n              id={id}\n              aspectRatio={imageAspectRatio}\n              imageUrl={imageUrl}\n              altText={imageAltText || ''}\n              width={rect?.width || 700}\n              captionData={captionData}\n              onClick={captionMetricsOnClick}\n            />\n          </div>\n        ) : null}\n        {/* This is needed in case we have separate Urls for tablet, desktop and mobile screens */}\n        {/* Also, \"&& !imageUrl\" added just to prevent rendering 2 images if both props somehow get passed */}\n        {imageUrls && !imageUrl ? (\n          <div className=\"flex items-center justify-items-center overflow-y-hidden\">\n            <ResponsiveImage\n              id={id}\n              aspectRatio={multipleImageAspectRatio || '3:2'}\n              imageUrl={multipleImageUrl || ''}\n              altText={imageAltText || ''}\n              width={rect?.width || 700}\n              captionData={captionData}\n              onClick={captionMetricsOnClick}\n            />\n          </div>\n        ) : null}\n\n        <div className=\"box-border px-4 pb-2 pt-8 sm:px-8 md:px-16\">\n          {headline ? (\n            <BrandTextHeader {...props} className=\"brand-wa:md:heading-2xl brand-wa:heading-xl\">\n              {headline}\n            </BrandTextHeader>\n          ) : null}\n          {body}\n\n          {link?.label && link?.url ? (\n            <div className=\"inline-block w-full pb-4 pt-8 text-center\">\n              <BrandLink\n                label={link.label}\n                isNewWindow={link.isNewWindow}\n                showNewWindowIcon={link.isNewWindow}\n                url={link.url}\n                onClick={link?.onClick}\n                cidParams={link?.cidParams}\n                data-conductrics-goal={link.experimentationConfiguration?.goal}\n                data-conductrics-value={link.experimentationConfiguration?.value}\n                metricsOnClick={brandLinkMetricsOnClick}\n              />\n            </div>\n          ) : null}\n        </div>\n      </div>\n    </Dialog>\n  );\n};\n\nexport default DialogWithContent;\n","export * from './dialog-with-content';\n","import type { Link } from '@dx-ui/osc-link';\nimport type { AspectRatio, TResponsiveImage } from '@dx-ui/osc-responsive-image';\n\nexport type TFullWidthImage = {\n  id?: string;\n  /**\n   * Aspect Ratio of the Image at 1280px +\n   */\n  desktopImageUrl: string;\n  /**\n   * URL of the Image at 640px - 1280px\n   */\n  tabletImageUrl: string;\n  /**\n   * URL of the Image at 0px - 640px\n   */\n  mobileImageUrl: string;\n  captionData?: TResponsiveImage['captionData'];\n  /**\n   * Alternative text of the Image (a11y)\n   */\n  imageAltText: string;\n  /**\n   * Text of the button that opens a Dialog box\n   */\n  imageOverlayButtonText: string;\n  /**\n   * Title at the top of the Dialog box\n   */\n  title: string;\n  /**\n   * Description(paragraph) at the bottom of the Dialog box\n   */\n  description: JSX.Element | string;\n  /**\n   * Link at the bottom of the Dialog box\n   */\n  link: Link & { experimentationConfiguration?: CmsExperimentationConfiguration };\n  /**\n   * Function that gets executed when the Dialog box is being open\n   */\n  overlayButtonClicked?: () => void;\n};\n\nexport const FullWidthImageAspectRatio: AspectRatio = '384:113';\nexport const FullWidthImageDialogAspectRatio: AspectRatio = '16:9';\n","import type { ImageFunctionType } from '@dx-ui/config-metrics';\nimport { ImageClickID, ImageType, ANALYTICS_NO_VALUE } from '@dx-ui/config-metrics';\nimport type { FullWidthMediaMetrics } from '../types/full-width-image-analytics';\n\nconst FULL_WIDTH__METRIC_POSITION = 1;\nconst FULL_WIDTH_METRIC_IMAGE_COUNT = 1;\n\ntype GenerateFullWidthMediaMetricsParams = {\n  headline: string;\n  itemTitle?: string;\n  imageFunction: ImageFunctionType;\n};\n\nexport const generateFullWidthMediaMetricsParams = ({\n  headline,\n  itemTitle,\n  imageFunction,\n}: GenerateFullWidthMediaMetricsParams): FullWidthMediaMetrics => {\n  return {\n    click: {\n      clickID: ImageClickID.Img,\n    },\n    osc: {\n      image: {\n        headline,\n        itemTitle: itemTitle || ANALYTICS_NO_VALUE,\n        position: FULL_WIDTH__METRIC_POSITION,\n        count: FULL_WIDTH_METRIC_IMAGE_COUNT,\n        type: ImageType.Full,\n        function: imageFunction,\n      },\n    },\n  };\n};\n","import { useState, useRef } from 'react';\nimport cx from 'classnames';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { DialogWithContent } from '../dialog-with-content';\nimport { ResponsiveImage, getCurrentAspectRatioAndUrl } from '@dx-ui/osc-responsive-image';\nimport type { TLayout } from '../common.types';\nimport type { TFullWidthImage } from './full-width-image.types';\nimport { FullWidthImageDialogAspectRatio } from './full-width-image.types';\nimport { Icon } from '@dx-ui/osc-icon';\nimport { ANALYTICS_GLOBAL_CLICK_EVENT, ImageFunction, trackEvent } from '@dx-ui/config-metrics';\nimport { generateFullWidthMediaMetricsParams } from './libs/utils/full-width-image-analytics';\n\nexport type FullWidthImageProps = TLayout & TFullWidthImage;\n\n/**\n * FullWidthImage renders an image at the full width of the content, includes text overlay that opens a modal.\n *\n * Multiple imageUrls are provided, and displayed conditionally at different breakpoints. Clicking the FullWidthImage will open a DialogWithContent\n */\nexport const FullWidthImage: React.FC<FullWidthImageProps> = ({\n  id,\n  desktopImageUrl,\n  tabletImageUrl,\n  mobileImageUrl,\n  imageAltText,\n  captionData,\n  imageOverlayButtonText,\n  title,\n  description,\n  link,\n  overlayButtonClicked,\n  ...props\n}) => {\n  const [showInfoContainer, setShowInfoContainer] = useState(false);\n  const ref = useRef<React.ElementRef<'div'>>(null);\n  const rect = useRect({ ref });\n  const [imgLoaded, setImgLoaded] = useState(false);\n\n  const handleImageOverlayButtonClick = () => {\n    setShowInfoContainer(true);\n    overlayButtonClicked && overlayButtonClicked();\n    trackEvent(\n      ANALYTICS_GLOBAL_CLICK_EVENT,\n      generateFullWidthMediaMetricsParams({\n        headline: title,\n        itemTitle: imageOverlayButtonText,\n        imageFunction: ImageFunction.Modal,\n      })\n    );\n  };\n  const handleCloseButtonClick = () => {\n    setShowInfoContainer(false);\n  };\n\n  if (!desktopImageUrl || !tabletImageUrl || !mobileImageUrl) {\n    return null;\n  }\n\n  const { imageUrl, aspectRatio } = getCurrentAspectRatioAndUrl({\n    width: rect?.width || 0,\n    imageUrlMobile: mobileImageUrl,\n    imageUrlTablet: desktopImageUrl,\n    imageUrlDesktop: desktopImageUrl,\n    aspectRatioMobile: '3:2',\n    aspectRatioTablet: '18:5',\n    aspectRatioDesktop: '18:5',\n  });\n\n  return (\n    <div\n      id={id}\n      ref={ref}\n      data-testid=\"fullWidthImage\"\n      className=\"brand-wa:py-16 brand-wa:xl:py-20 container py-8 xl:py-12\"\n    >\n      <div\n        data-testid=\"fullwidth-image-wrap\"\n        className=\"image-corner-radius relative flex flex-col justify-center overflow-hidden\"\n      >\n        {imageOverlayButtonText ? (\n          <div className={cx('absolute flex size-full items-end', { 'z-2': imgLoaded })}>\n            <div className=\"from-bg-inverse size-full bg-gradient-to-t to-transparent\">\n              <button\n                className=\"brand-es:font-headline brand-es:font-normal brand-gu:font-headline brand-gu:font-normal brand-ou:font-headline brand-ou:font-normal text-text-overlay brand-ey:text-text-inverse brand-ou:text-text-inverse absolute bottom-2 right-4 flex h-14 cursor-pointer items-center border-0 text-right text-xl font-bold leading-5 md:bottom-8 lg:right-8 lg:text-4xl\"\n                type=\"button\"\n                onClick={handleImageOverlayButtonClick}\n                data-testid=\"overlayButton\"\n              >\n                <span>{imageOverlayButtonText}&nbsp;</span>\n                <Icon\n                  className=\"-mx-4 size-12 xl:size-16 rtl:-scale-x-100\"\n                  name=\"arrow-small-right\"\n                />\n              </button>\n            </div>\n          </div>\n        ) : null}\n\n        <ResponsiveImage\n          id={`${id}-img`}\n          aspectRatio={aspectRatio}\n          imageUrl={imageUrl}\n          altText={imageAltText || ''}\n          width={rect?.width ?? 0}\n          onImgLoaded={() => setImgLoaded(true)}\n          captionData={captionData}\n          onClick={() =>\n            trackEvent(\n              ANALYTICS_GLOBAL_CLICK_EVENT,\n              generateFullWidthMediaMetricsParams({\n                headline: title,\n                imageFunction: ImageFunction.Link,\n                itemTitle: captionData?.caption,\n              })\n            )\n          }\n        />\n      </div>\n\n      {imageOverlayButtonText ? (\n        <DialogWithContent\n          data-testid=\"fullWidthImageModalDialog\"\n          id=\"fullWidthImageModalOverlay\"\n          isOpen={showInfoContainer}\n          containerAspectRatio={FullWidthImageDialogAspectRatio}\n          imageAspectRatio={FullWidthImageDialogAspectRatio}\n          imageUrls={{ desktopImageUrl, mobileImageUrl, tabletImageUrl }}\n          captionData={captionData}\n          imageAltText={`${imageAltText} modal`}\n          title={title}\n          headline={title}\n          content={description}\n          link={link}\n          onClose={handleCloseButtonClick}\n          captionMetricsOnClick={() =>\n            trackEvent(\n              ANALYTICS_GLOBAL_CLICK_EVENT,\n              generateFullWidthMediaMetricsParams({\n                headline: title,\n                imageFunction: ImageFunction.Link,\n                itemTitle: captionData?.caption,\n              })\n            )\n          }\n          brandLinkMetricsOnClick={() =>\n            trackEvent(\n              ANALYTICS_GLOBAL_CLICK_EVENT,\n              generateFullWidthMediaMetricsParams({\n                headline: title,\n                imageFunction: ImageFunction.Link,\n                itemTitle: link?.label,\n              })\n            )\n          }\n          {...props}\n        />\n      ) : null}\n    </div>\n  );\n};\n","export * from './full-width-image';\nexport * from './full-width-image.types';\n","import { ANALYTICS_NO_VALUE, ImageClickID, ImageFunction, ImageType } from '@dx-ui/config-metrics';\nimport type { HalfAndHalfMetrics } from '../types/half-and-half-analytics';\n\nexport const HALF_AND_HALF_IMAGE_COUNT = 1;\n\ntype GenerateHalfAndHalfMetricsParams = {\n  headline?: string;\n  itemTitle?: string;\n};\n\nexport const generateHalfAndHalfMetrics = ({\n  headline,\n  itemTitle,\n}: GenerateHalfAndHalfMetricsParams): HalfAndHalfMetrics => {\n  const halfAndHalfMetrics = {\n    click: {\n      clickID: ImageClickID.Img,\n    },\n    osc: {\n      image: {\n        headline: headline || ANALYTICS_NO_VALUE,\n        itemTitle: itemTitle || ANALYTICS_NO_VALUE,\n        position: HALF_AND_HALF_IMAGE_COUNT,\n        count: HALF_AND_HALF_IMAGE_COUNT,\n        type: ImageType.Half,\n        function: ImageFunction.Link,\n      },\n    },\n  };\n\n  return halfAndHalfMetrics;\n};\n","import { useRef } from 'react';\nimport { useMediaQuery, useResizeObserver } from 'usehooks-ts';\nimport type { HalfAndHalfProps } from './half-and-half';\nimport cx from 'classnames';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport { ParallaxBanner, ParallaxBannerLayer } from 'react-scroll-parallax';\nimport { YouTubeVideo } from '@dx-ui/osc-youtube-video';\nimport { ResponsiveImage } from '@dx-ui/osc-responsive-image';\nimport { BrandLink } from '@dx-ui/osc-brand-buttons';\nimport {\n  Video,\n  VideoCaptions,\n  VideoControls,\n  VideoTranscript,\n  useVideoPlayerClasses,\n  useVideoPlayer,\n  VideoPlayerMarkup,\n} from '@dx-ui/osc-video-player';\nimport { CarouselSingle, generateCpmCarouselMetrics } from '@dx-ui/osc-carousel';\nimport { useRect } from '@dx-ui/utilities-use-rect';\nimport { Pagination } from '@dx-ui/osc-pagination';\nimport { useCycle } from '@dx-ui/osc-cycle';\nimport type { AgentStatus } from '@dx-ui/framework-conductrics';\nimport { sendReward, useConductricsSelection, Status } from '@dx-ui/framework-conductrics';\nimport { ANALYTICS_GLOBAL_CLICK_EVENT, trackEvent } from '@dx-ui/config-metrics';\nimport { generateHalfAndHalfMetrics } from './libs/utils/half-and-half-analytics';\n\nfunction sendHalfAndHalfCtaReward(isMobile: boolean) {\n  if (isMobile) {\n    sendReward('g-BzOBPhK7V7');\n  }\n}\nfunction useHalfAndHalfMobileLayoutTest(status: AgentStatus | undefined) {\n  const { selection, isLoaded } = useConductricsSelection('a-sYzuWw8FXGMx', status);\n  return {\n    variantA: isLoaded && selection?.choice === 'A',\n    variantB: isLoaded && selection?.choice === 'B',\n  };\n}\n\nexport type THalfAndHalfContentProps = HalfAndHalfProps & {\n  isPositionOdd?: boolean;\n  activeIndex?: number;\n  count?: number;\n  isFullCarousel?: boolean;\n  isFullScreen?: boolean;\n  mediaRatio?: '50-50' | '60-40' | '70-30';\n};\n\nfunction CarouselControls() {\n  const { cycleId, active, total, onNextClick, onPreviousClick } = useCycle();\n  return (\n    <div\n      data-e2e=\"arrows\"\n      className=\"pointer-events-none inset-0 justify-end whitespace-nowrap text-lg xl:flex-row\"\n      id={cycleId}\n    >\n      <Pagination\n        controls={cycleId}\n        label=\"Carousel\"\n        hideLabel\n        current={active}\n        total={total}\n        onNextClick={onNextClick}\n        onPreviousClick={onPreviousClick}\n        loop\n      />\n    </div>\n  );\n}\n\nconst HalfAndHalfContent = ({\n  imageUrl,\n  captionData,\n  headline,\n  description,\n  copy,\n  imageAltText,\n  id,\n  link,\n  hasParallax,\n  isPositionOdd,\n  media,\n  hasImageCarousel,\n  carouselImages,\n  speed = -10,\n  cmsDocumentControl,\n  brandComponentTheme,\n  index,\n  activeIndex,\n  count,\n  isFullCarousel,\n  isFullScreen,\n  mediaRatio = '50-50',\n}: THalfAndHalfContentProps) => {\n  const ref = useRef<React.ElementRef<'div'>>(null);\n  const rect = useRect({ ref });\n  const wrapperElement = useRef<React.ElementRef<'div'>>(null);\n  const isVideo = Boolean(media?.video?.url || media?.multimedia?.videoUrl);\n  const isYouTubeShort = media?.video?.source === 'youtube-short';\n  const isPortrait = media?.multimedia?.orientation === 'portrait';\n  const isLandscape = media?.multimedia?.orientation === 'landscape';\n  const isVerticalVideo = isVideo && (isYouTubeShort || isPortrait);\n  const videoUrl = media?.multimedia?.videoUrl || '';\n  const isCinemagraph = !!media?.multimedia?.altText;\n  const hasAudio = !isCinemagraph && !media?.multimedia?.isMuted;\n  const playerProps = useVideoPlayer({\n    ...media?.multimedia,\n    hasAudio,\n    videoUrl,\n    wrapperElement,\n  });\n  const playerClassNames = useVideoPlayerClasses({ isLandscape });\n  const hasActiveTranscript = Boolean(playerProps.videoTranscriptProps?.activeTranscript);\n  const isLarge = useMediaQuery('(min-width: 1024px)');\n  const videoSize = useResizeObserver({ ref: playerProps.videoProps.videoElement });\n  const height = videoSize?.height ?? 0;\n  const transcriptStyle = isLarge && !isVerticalVideo ? { height: `${height}px` } : undefined;\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n  const isTabletAndMobile = useMediaQuery(`(max-width:1023px)`);\n  const isMobile = useMediaQuery('(max-width: 640px)');\n  const mobileLayout = useHalfAndHalfMobileLayoutTest(isMobile ? Status.OK : Status.PENDING);\n  const Transcript = hasActiveTranscript ? (\n    <VideoTranscript\n      {...playerProps.videoTranscriptProps}\n      style={transcriptStyle}\n      brandComponentTheme={brandComponentTheme}\n      className={cx('overflow-hidden p-4 lg:mb-6', {\n        '[&>ol]:lg:max-h-full [&>ol]:lg:pb-16': !isVerticalVideo,\n        '[&>ol]:lg:max-h-64': isVerticalVideo,\n      })}\n    />\n  ) : null;\n  const LongDescription = copy ? (\n    <BrandTextBody\n      // eslint-disable-next-line tailwindcss/no-custom-classname -- tracked in NHCBP-5929\n      className={cx(\n        'brand-up:mb-12 text-text brand-ou:text-primary brand-up:text-center !text-xl',\n        {\n          'text-text-inverse': isDark,\n          'brand-ht:text-text-inverse': isLight,\n        }\n      )}\n      brandComponentTheme={brandComponentTheme}\n    >\n      {copy}\n    </BrandTextBody>\n  ) : null;\n  //\n  const CtaLink =\n    link?.label && link?.url ? (\n      <div\n        className={cx('pt-6', {\n          'mb-4': isTabletAndMobile && mobileLayout.variantA,\n        })}\n      >\n        <BrandLink\n          onClick={() => {\n            trackEvent(\n              ANALYTICS_GLOBAL_CLICK_EVENT,\n              generateHalfAndHalfMetrics({\n                headline,\n                itemTitle: link.label,\n              })\n            );\n\n            sendHalfAndHalfCtaReward(isMobile);\n          }}\n          label={link.label}\n          isNewWindow={link.isNewWindow}\n          showNewWindowIcon={link.isNewWindow}\n          url={link.url}\n          brandComponentTheme={brandComponentTheme}\n          data-conductrics-goal={link.experimentationConfiguration?.goal}\n          data-conductrics-value={link.experimentationConfiguration?.value}\n        />\n      </div>\n    ) : null;\n  const Headline = headline ? (\n    <BrandTextHeader\n      className={cx('tracking-tight sm:!text-3xl lg:mb-4', {\n        '!text-text-inverse': isDark,\n        'brand-ht:text-text-inverse': isLight,\n        'mb-4': isTabletAndMobile && mobileLayout.variantB,\n      })}\n    >\n      {headline}\n    </BrandTextHeader>\n  ) : null;\n  const ShortDescription = description ? (\n    <BrandTextBody\n      // eslint-disable-next-line tailwindcss/no-custom-classname -- tracked in NHCBP-5929\n      className={cx('py-4 font-sans !text-xl lg:pt-0', {\n        'text-text-inverse': isDark,\n        'brand-ht:text-text-inverse': isLight,\n        'brand-ou:text-primary': !isDark,\n      })}\n      brandComponentTheme={brandComponentTheme}\n    >\n      {description}\n    </BrandTextBody>\n  ) : null;\n\n  const ImgVideoContent = (\n    <div\n      data-testid=\"halfNHalfMedia\"\n      className={cx({\n        'lg:w-4/12 max-w-sm': isVerticalVideo,\n        'lg:w-1/2': !isVerticalVideo && mediaRatio === '50-50',\n        'lg:w-3/5': !isVerticalVideo && mediaRatio === '60-40',\n        'lg:w-2/3': !isVerticalVideo && mediaRatio === '70-30',\n      })}\n    >\n      {imageUrl && !isVideo && !hasImageCarousel ? (\n        <div className=\"relative overflow-hidden py-2 lg:py-0\" ref={ref}>\n          <ParallaxBanner className=\"aspect-[3/2]\" disabled={!hasParallax || isVideo}>\n            <ParallaxBannerLayer\n              speed={speed}\n              expanded={false}\n              scale={[1.2, 1.2]}\n              disabled={!hasParallax || isVideo}\n            >\n              <ResponsiveImage\n                aspectRatio=\"3:2\"\n                id={id}\n                imageUrl={imageUrl}\n                altText={imageAltText ?? ''}\n                width={rect?.width ?? 0}\n                captionData={captionData}\n                className=\"image-corner-radius\"\n                onClick={() =>\n                  trackEvent(\n                    ANALYTICS_GLOBAL_CLICK_EVENT,\n                    generateHalfAndHalfMetrics({\n                      headline,\n                      itemTitle: captionData?.caption,\n                    })\n                  )\n                }\n              />\n            </ParallaxBannerLayer>\n          </ParallaxBanner>\n        </div>\n      ) : null}\n\n      {isVideo ? (\n        <div className=\"relative py-2 lg:py-0\">\n          {media?.video?.url && media.video.title ? (\n            <YouTubeVideo\n              {...media.video}\n              wrapperClassName=\"overflow-hidden\"\n              id={media.video.title.trim()}\n              isVertical={isVerticalVideo}\n              isAutoPlay={false}\n            />\n          ) : media?.multimedia?.videoUrl ? (\n            <>\n              <div\n                className={cx(playerClassNames.wrapperClassNames, 'mb-8', {\n                  'sm:mb-0': !isVerticalVideo,\n                  'lg:mb-0': isVerticalVideo,\n                })}\n              >\n                <Video\n                  {...playerProps.videoProps}\n                  captionData={media?.multimedia?.captionData}\n                  isAutoPlay={media?.multimedia?.isAutoPlay}\n                  posterImageUrl={media?.multimedia?.posterImageUrl}\n                  videoId={media?.multimedia?.videoId}\n                  videoUrl={videoUrl}\n                  role={isCinemagraph ? 'img' : undefined}\n                  aria-label={isCinemagraph ? media?.multimedia?.altText : undefined}\n                />\n                <VideoCaptions\n                  {...playerProps.videoCaptionProps}\n                  brandComponentTheme={brandComponentTheme}\n                  className={playerClassNames.captionClassNames}\n                />\n                <VideoControls\n                  videoVariant={isCinemagraph ? 'cinemagraph' : undefined}\n                  {...playerProps.videoControlsProps}\n                  brandComponentTheme={brandComponentTheme}\n                  className={playerClassNames.controlsClassNames['default']}\n                />\n              </div>\n              <div className=\"lg:hidden\">{Transcript}</div>\n            </>\n          ) : null}\n        </div>\n      ) : null}\n\n      {hasImageCarousel && carouselImages && !isVideo ? (\n        <CarouselSingle\n          images={carouselImages}\n          showAlternateControls={false}\n          className=\"image-corner-radius\"\n          metrics={generateCpmCarouselMetrics(headline)}\n        />\n      ) : null}\n    </div>\n  );\n\n  const DefaultLayout = (\n    <>\n      <div\n        data-testid=\"halfNHalfContent\"\n        className={cx({\n          'lg:w-1/2': mediaRatio === '50-50',\n          'lg:w-2/5': mediaRatio === '60-40',\n          'lg:w-1/3': mediaRatio === '70-30',\n          'lg:ps-10': isFullScreen && isPositionOdd,\n        })}\n      >\n        <div className=\"hidden lg:block\">{Transcript}</div>\n        {Headline}\n        {ShortDescription}\n        <div className=\"hidden lg:block\">\n          {LongDescription}\n          {CtaLink}\n        </div>\n      </div>\n      {ImgVideoContent}\n      <div className=\"lg:hidden\">\n        {LongDescription}\n        {CtaLink}\n      </div>\n    </>\n  );\n  const MobileLayoutVariantAB =\n    isTabletAndMobile && (mobileLayout.variantA || mobileLayout.variantB) ? (\n      <>\n        {Headline}\n        {mobileLayout.variantB ? ImgVideoContent : null}\n        {ShortDescription}\n        {CtaLink}\n        {mobileLayout.variantA ? ImgVideoContent : null}\n      </>\n    ) : null;\n\n  return (\n    <div\n      className={cx('brand-wa:py-16 brand-wa:xl:py-20 relative py-8 xl:py-12', {\n        container: !isFullScreen,\n        'px-4 md:px-8 lg:px-0': isFullScreen,\n        hidden: isFullCarousel && index !== activeIndex,\n      })}\n      ref={wrapperElement}\n      data-testid={\n        isFullCarousel && activeIndex !== undefined\n          ? `halfNHalf-slide-${activeIndex + 1}-of-${count}`\n          : undefined\n      }\n    >\n      {media?.multimedia?.markupSchemas ? (\n        <VideoPlayerMarkup markupSchemas={media.multimedia.markupSchemas} />\n      ) : null}\n      <div\n        className={cx('relative w-full justify-center gap-12 lg:flex', {\n          'flex-row-reverse': !isPositionOdd,\n          'items-center': !hasActiveTranscript,\n          'items-start': hasActiveTranscript,\n          'max-w-sm mx-auto lg:max-w-full': isVerticalVideo,\n        })}\n        data-testid=\"halfNHalfContentWrapper\"\n      >\n        {MobileLayoutVariantAB || DefaultLayout}\n      </div>\n      {isFullCarousel && (count ?? 0) > 1 && (\n        <div\n          className={cx('relative -start-7 mt-6 flex lg:absolute lg:bottom-12 lg:mt-0', {\n            'lg:start-3': isPositionOdd,\n            'lg:end-10 lg:start-auto': !isPositionOdd,\n          })}\n        >\n          <CarouselControls />\n        </div>\n      )}\n      {cmsDocumentControl}\n    </div>\n  );\n};\n\nexport { HalfAndHalfContent };\nexport default HalfAndHalfContent;\n","import type { ReactNode } from 'react';\nimport cx from 'classnames';\nimport { HalfAndHalfContent } from './half-and-half-content';\nimport type { Link } from '@dx-ui/osc-link';\nimport type { Media } from '../common.types';\nimport type { TResponsiveImage } from '@dx-ui/osc-responsive-image';\nimport type { CaptionProps } from '@dx-ui/osc-caption';\n\nexport type MarkdownLink = {\n  adaDescription?: string;\n  isNewWindow?: boolean;\n  markdown: string;\n  url: string;\n};\n\nexport type HalfAndHalfProps = {\n  /**\n   * sets position of image left or right\n   */\n  index: number;\n  /**\n   * should the half and half be flipped?\n   */\n  isReverse?: boolean;\n  /**\n   * the url to the image.\n   */\n  imageUrl?: string;\n  captionData?: TResponsiveImage['captionData'];\n  /**\n   * whether the background color should be altered and if they should be on `even` or `odd` components.\n   */\n  showBackgroundOn?: 'even' | 'odd';\n  /**\n   * renders the headline as an heading.\n   */\n  headline?: string;\n  /**\n   * renders the description as a paragraph.\n   */\n  description?: string;\n  /**\n   * Long description as a paragraph.\n   */\n  copy?: string;\n  /**\n   * the description of the image being rendered.\n   */\n  imageAltText?: string;\n  link?: Link & { experimentationConfiguration?: CmsExperimentationConfiguration };\n  id?: string;\n  brandComponentTheme?: CmsBrandComponentTheme;\n  /**\n   * Adds an image carousel to a single Half and Half content block\n   */\n  hasImageCarousel?: boolean;\n  /**\n   * Loads the carousel images\n   */\n  carouselImages?: { alt: string; url: string; captionData?: CaptionProps }[];\n  /**\n   * renders the component with a parallax animation.\n   */\n  hasParallax?: boolean;\n  /**\n   * the speed of Parallax\n   */\n  speed?: number;\n  /**\n   * Props for custom video player or YouTube player.\n   */\n  media?: Media;\n  /**\n   * CMS document editor button\n   */\n  cmsDocumentControl?: ReactNode;\n  /**\n   * Translation CSS classes to add to each item\n   */\n  cmsTranslationClasses?: string;\n  /**\n   * Full Screen / Full Bleed mode\n   */\n  isFullScreen?: boolean;\n  /**\n   * Ratio of Copy / Media section\n   */\n  mediaRatio?: '50-50' | '60-40' | '70-30';\n};\n\n/**\n * HalfAndHalf renders a component with an image on one half and attached content of headline, text and a CTA on the other half.\n *\n * The `index` prop is used by HalfAndHalf components to alternate their layout so their images appear on alternating sides of the page, this can be done on single or multiple components.\n */\nexport const HalfAndHalf = ({\n  index,\n  isReverse = false,\n  brandComponentTheme,\n  hasParallax = false,\n  id,\n  cmsTranslationClasses,\n  media,\n  hasImageCarousel,\n  carouselImages,\n  isFullScreen,\n  mediaRatio,\n  ...rest\n}: HalfAndHalfProps) => {\n  const currElemIndxType = !Number.isNaN(index) && (index % 2 === 0 ? 'even' : 'odd');\n  const isPositionOdd = isReverse ? currElemIndxType === 'even' : currElemIndxType === 'odd';\n  const isLight = brandComponentTheme === 'light';\n  const isDark = brandComponentTheme === 'dark';\n\n  const containerBgClass = {\n    'bg-bg-light': isLight,\n    'bg-bg-dark': isDark,\n    'bg-transparent': !isLight && !isDark,\n    'brand-po:bg-bg-alt': !isPositionOdd && !isLight && !isDark,\n  };\n\n  return (\n    <div\n      id={id}\n      className={cx(\n        'w-full',\n        isPositionOdd ? `half-and-half-odd-${index}` : `half-and-half-even-${index}`,\n        containerBgClass,\n        cmsTranslationClasses\n      )}\n      data-testid=\"halfnhalf-sections-wrapper\"\n    >\n      <HalfAndHalfContent\n        brandComponentTheme={brandComponentTheme}\n        index={index}\n        isPositionOdd={isPositionOdd}\n        hasParallax={hasParallax}\n        media={media}\n        hasImageCarousel={hasImageCarousel}\n        carouselImages={carouselImages}\n        isFullScreen={isFullScreen}\n        mediaRatio={mediaRatio}\n        {...rest}\n      />\n    </div>\n  );\n};\n","import type { ReactNode } from 'react';\nimport cx from 'classnames';\nimport { HalfAndHalfContent } from './half-and-half-content';\nimport type { HalfAndHalfProps } from './half-and-half';\nimport { Cycle, CycleContext } from '@dx-ui/osc-cycle';\n\nexport type HalfAndHalfCarouselItem = Pick<\n  HalfAndHalfProps,\n  | 'copy'\n  | 'link'\n  | 'headline'\n  | 'description'\n  | 'imageUrl'\n  | 'captionData'\n  | 'imageAltText'\n  | 'media'\n>;\n\nexport type HalfAndHalfCarouselProps = {\n  /**\n   * sets position of image left or right\n   */\n  index?: number;\n  /**\n   * should the half and half be flipped?\n   */\n  isReverse?: boolean;\n  /**\n   * whether the background color should be altered and if they should be on `even` or `odd` components.\n   */\n  showBackgroundOn?: 'even' | 'odd';\n  /**\n   * Unique ID\n   */\n  id?: string;\n  /**\n   * CPM controlled brand color themes\n   */\n  brandComponentTheme?: CmsBrandComponentTheme;\n  /**\n   * renders the component with a parallax animation.\n   */\n  hasParallax?: boolean;\n  /**\n   * the speed of Parallax\n   */\n  speed?: number;\n  /**\n   * CMS document editor button\n   */\n  cmsDocumentControl?: ReactNode;\n  /**\n   * Translation CSS classes to add to each item\n   */\n  cmsTranslationClasses?: string;\n  /**\n   * Carousel Items\n   */\n  carouselItems: HalfAndHalfCarouselItem[];\n  /**\n   * Full Screen / Full Bleed mode\n   */\n  isFullScreen?: boolean;\n  /**\n   * Ratio of Copy / Media section\n   */\n  mediaRatio?: '50-50' | '60-40' | '70-30';\n};\n\nexport const HalfAndHalfCarousel = ({\n  index = 0,\n  isReverse = false,\n  brandComponentTheme,\n  id,\n  cmsTranslationClasses,\n  carouselItems,\n  hasParallax,\n  isFullScreen,\n  mediaRatio,\n}: HalfAndHalfCarouselProps) => {\n  const currElemIndxType = !Number.isNaN(index) && (index % 2 === 0 ? 'even' : 'odd');\n  const isPositionOdd = isReverse ? currElemIndxType === 'even' : currElemIndxType === 'odd';\n  const isLight = brandComponentTheme === 'light';\n  const isDark = brandComponentTheme === 'dark';\n\n  const containerBgClass = {\n    'bg-bg-light': isLight,\n    'bg-bg-dark': isDark,\n    'bg-transparent': !isLight && !isDark,\n    'brand-po:bg-bg-alt': !isPositionOdd && !isLight && !isDark,\n  };\n\n  const count = carouselItems.length;\n  if (!count) {\n    return null;\n  }\n\n  return (\n    <div\n      id={id}\n      className={cx('w-full', containerBgClass, cmsTranslationClasses)}\n      data-testid=\"halfnhalf-carousel-sections-wrapper\"\n    >\n      <Cycle total={count} current={0}>\n        <CycleContext.Consumer>\n          {({ active, cycleId }) => (\n            <div id={cycleId}>\n              <HalfAndHalfContent\n                isFullCarousel={true}\n                index={active}\n                activeIndex={active}\n                isPositionOdd={isPositionOdd}\n                hasParallax={hasParallax}\n                imageUrl={carouselItems[active]?.imageUrl}\n                captionData={carouselItems[active]?.captionData}\n                headline={carouselItems[active]?.headline}\n                description={carouselItems[active]?.description}\n                copy={carouselItems[active]?.copy}\n                imageAltText={carouselItems[active]?.imageAltText}\n                link={carouselItems[active]?.link}\n                media={carouselItems[active]?.media}\n                count={count}\n                isFullScreen={isFullScreen}\n                mediaRatio={mediaRatio}\n                brandComponentTheme={brandComponentTheme}\n              />\n            </div>\n          )}\n        </CycleContext.Consumer>\n      </Cycle>\n    </div>\n  );\n};\n","export * from './half-and-half';\nexport * from './half-and-half-carousel';\n","import type * as React from 'react';\nimport { useCycle } from '@dx-ui/osc-cycle';\n\nconst ImageHeadlinerContent = ({ children }: React.PropsWithChildren) => {\n  const { cycleId } = useCycle();\n  return (\n    <div id={cycleId} aria-live=\"polite\" className=\"w-full\">\n      {children}\n    </div>\n  );\n};\n\nexport { ImageHeadlinerContent };\nexport default ImageHeadlinerContent;\n","import type { ImageClickIDType, ImageFunctionType } from '@dx-ui/config-metrics';\nimport { ANALYTICS_NO_VALUE, ImageType, ImageFunction, ImageClickID } from '@dx-ui/config-metrics';\nimport type { ImageHeadlinerMetrics } from '../types/image-headliner-analytics';\n\ntype GenerateImageHeadlinerMetricsParams = {\n  headline?: string;\n  itemTitle?: string;\n  position: number;\n  count: number;\n  imageFunction?: ImageFunctionType;\n  clickID: ImageClickIDType;\n};\n\nexport const generateImageHeadlinerMetrics = ({\n  clickID = ImageClickID.Img,\n  headline = ANALYTICS_NO_VALUE,\n  itemTitle = ANALYTICS_NO_VALUE,\n  imageFunction,\n  position,\n  count,\n}: GenerateImageHeadlinerMetricsParams): ImageHeadlinerMetrics => {\n  const ImageHeadlinerMetrics: ImageHeadlinerMetrics = {\n    click: {\n      clickID,\n    },\n    osc: {\n      image: {\n        headline,\n        itemTitle,\n        position,\n        count,\n        type: ImageType.Headliner,\n      },\n    },\n  };\n\n  if (imageFunction) {\n    ImageHeadlinerMetrics.osc.image.function = ImageFunction.Link;\n  }\n\n  return ImageHeadlinerMetrics;\n};\n","import { Pagination } from '@dx-ui/osc-pagination';\nimport { useCycle } from '@dx-ui/osc-cycle';\nimport cx from 'classnames';\nimport {\n  ANALYTICS_GLOBAL_CLICK_EVENT,\n  ANALYTICS_NO_VALUE,\n  ImageClickID,\n  trackEvent,\n} from '@dx-ui/config-metrics';\nimport { generateImageHeadlinerMetrics } from './utils/image-headliner-analytics';\nimport type { TImageHeadlinerItemData } from './image-headliner';\n\nexport type TImageHeadlinerControls = {\n  label?: string;\n  hideLabel?: boolean;\n  hasLoop?: boolean;\n  brandComponentTheme?: CmsBrandComponentTheme;\n  itemData: TImageHeadlinerItemData[];\n};\n\nconst ImageHeadlinerControls = ({\n  label = 'Page',\n  hideLabel = true,\n  hasLoop = true,\n  brandComponentTheme,\n  itemData,\n}: TImageHeadlinerControls) => {\n  const { hasSlides, cycleId, active, total, onNextClick, onPreviousClick } = useCycle();\n\n  const currentItem = itemData[active];\n  const currentHeadline = currentItem?.headline;\n  const currentCtaText = currentItem?.ctaText;\n  const currentPosition = currentItem?.position || 1;\n  const totalItems = itemData.length;\n  const trackImageHeadlinerScrollClick = () => {\n    trackEvent(\n      ANALYTICS_GLOBAL_CLICK_EVENT,\n      generateImageHeadlinerMetrics({\n        clickID: ImageClickID.Scroll,\n        headline: currentHeadline,\n        itemTitle: currentCtaText || ANALYTICS_NO_VALUE,\n        position: currentPosition,\n        count: totalItems,\n      })\n    );\n  };\n\n  const onNextClickWithAnalytics = () => {\n    trackImageHeadlinerScrollClick();\n    onNextClick();\n  };\n  const onPreviousClickWithAnalytics = () => {\n    trackImageHeadlinerScrollClick();\n    onPreviousClick();\n  };\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n  return hasSlides ? (\n    <div\n      data-e2e=\"arrows\"\n      className={cx(\n        'pointer-events-none inset-0 mr-4 justify-end whitespace-nowrap text-xl font-bold lg:text-2xl',\n        {\n          'text-text-inverse': isDark,\n          'brand-ht:text-text-inverse': isLight,\n          'image-headliner-controls-default': !isDark && !isLight,\n        }\n      )}\n    >\n      <Pagination\n        controls={cycleId}\n        label={label}\n        hideLabel={hideLabel}\n        current={active}\n        total={total}\n        onNextClick={onNextClickWithAnalytics}\n        onPreviousClick={onPreviousClickWithAnalytics}\n        loop={hasLoop}\n        // TODO: bring this prop back once OSC-1278 is complete\n        // // isHeadliner={true}\n      />\n    </div>\n  ) : null;\n};\n\nexport { ImageHeadlinerControls };\nexport default ImageHeadlinerControls;\n","import type { ReactNode } from 'react';\nimport type { Link } from '@dx-ui/osc-link';\nimport { useCycle } from '@dx-ui/osc-cycle';\nimport cx from 'classnames';\nimport Image from 'next/image';\nimport {\n  ANALYTICS_GLOBAL_CLICK_EVENT,\n  ImageClickID,\n  trackEvent,\n  ImageFunction,\n} from '@dx-ui/config-metrics';\nimport { generateImageHeadlinerMetrics } from './utils/image-headliner-analytics';\n\nexport type TImageHeadlinerItem = {\n  headline?: string;\n  id?: string;\n  link?: Link & { experimentationConfiguration?: CmsExperimentationConfiguration } & {\n    onLinkClick?: (e?: React.SyntheticEvent<HTMLAnchorElement>) => void;\n  };\n  imageAltText?: string;\n  imageUrl?: string;\n  isPortfolio?: boolean;\n  index?: number;\n  /** Determines brand color theme for component */\n  brandComponentTheme?: CmsBrandComponentTheme;\n  /** CMS document editor button **/\n  cmsDocumentControl?: ReactNode;\n  /* Translation CSS classes to add to each item */\n  cmsTranslationClasses?: string;\n  /* Total number of slides in the component */\n  totalSlides?: number;\n};\n\n/**\n * A headline item that can contain an image, headline text, and link to more information.\n */\nexport const ImageHeadlinerItem = (props: TImageHeadlinerItem) => {\n  const { active, hasSlides } = useCycle();\n  const {\n    headline,\n    id,\n    link,\n    imageUrl,\n    imageAltText,\n    index = 0,\n    brandComponentTheme,\n    cmsDocumentControl,\n    cmsTranslationClasses,\n    totalSlides = 1,\n    ...rest\n  } = props;\n  const describedByID = `${id}-description`;\n\n  const imageCss = 'inline-block max-h-12 md:max-h-16 w-16 md:w-24';\n\n  const target = link?.isNewWindow ? '_blank' : '_self';\n  const rel = link?.isNewWindow ? 'noopener' : null;\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  return (\n    <div\n      data-testid=\"imageHeadlinerItem\"\n      {...rest}\n      className={cx(\n        'mx-4 my-2 flex justify-center md:m-0 md:mx-auto md:w-4/5 md:px-4 lg:w-full lg:px-6',\n        {\n          hidden: hasSlides && index !== active,\n        },\n        cmsTranslationClasses\n      )}\n    >\n      <span data-testid={describedByID} className=\"flex items-center text-left md:justify-center\">\n        {imageUrl && imageAltText && (\n          <div data-testid=\"imageHeadlinerImage\">\n            <div className=\"relative mr-4 flex h-8 w-16 overflow-hidden md:mr-6 md:h-16 md:w-24\">\n              <Image\n                id={id}\n                className={cx(imageCss)}\n                alt={imageAltText}\n                src={imageUrl}\n                style={{\n                  objectFit: 'cover',\n                }}\n                fill\n              />\n            </div>\n          </div>\n        )}\n        <span\n          className={cx('image-headliner-item-text lg:image-headliner-font-size-lg', {\n            'text-text-inverse': isDark,\n            'image-headliner-item-text-light': isLight,\n          })}\n          aria-label={headline}\n        >\n          {headline}\n          &nbsp;\n          {link?.url && link.label && target && (\n            <a\n              className={cx(\n                'image-headliner-item-link inline-block overflow-visible underline sm:max-w-full md:inline md:max-w-none',\n                {\n                  'text-text-inverse': isDark,\n                  'image-headliner-item-link-text-light': isLight,\n                  'image-headliner-item-link-text-default': !isDark && !isLight,\n                }\n              )}\n              href={link.url}\n              aria-describedby={link.adaDescription ? describedByID : undefined}\n              target={target}\n              data-testid=\"imageHeaderlinerItemLink\"\n              rel={rel || undefined}\n              data-conductrics-goal={link.experimentationConfiguration?.goal}\n              data-conductrics-value={link.experimentationConfiguration?.value}\n              onClick={(e) => {\n                trackEvent(\n                  ANALYTICS_GLOBAL_CLICK_EVENT,\n                  generateImageHeadlinerMetrics({\n                    clickID: ImageClickID.Img,\n                    headline,\n                    itemTitle: link.label,\n                    position: index + 1,\n                    count: totalSlides,\n                    imageFunction: ImageFunction.Link,\n                  })\n                );\n                link?.onLinkClick?.(e);\n              }}\n            >\n              {link.label}\n            </a>\n          )}\n        </span>\n      </span>\n      {cmsDocumentControl}\n    </div>\n  );\n};\n\nexport default ImageHeadlinerItem;\n","import * as React from 'react';\nimport { ImageHeadlinerContent } from './image-headliner-content';\nimport { ImageHeadlinerControls } from './image-headliner-controls';\nimport cx from 'classnames';\nimport type { Pagination } from '@dx-ui/osc-pagination';\nimport { Cycle } from '@dx-ui/osc-cycle';\nimport { ImageHeadlinerItem } from './image-headliner-item';\nimport { ANALYTICS_NO_VALUE } from '@dx-ui/config-metrics';\n\nexport type TImageHeadlinerItemData = {\n  headline: string;\n  ctaText: string;\n  position: number;\n};\n\nexport type TImageHeadliner = Pick<Pagination, 'label' | 'loop' | 'hideLabel' | 'current'> &\n  React.HTMLAttributes<HTMLDivElement>;\n\nexport type ImageHeadlinerType = {\n  label?: string;\n  className?: string;\n  /** Determines brand color theme for component */\n  brandComponentTheme?: CmsBrandComponentTheme;\n} & TImageHeadliner;\n\n/**\n * Used to grab a user's attention with a bold background color and text. Alerts users to promotions, new hotels for humans or supernatural beings, important legal updates.\n * Contains an image/logo, headline text and a link to more information.\n */\nexport const ImageHeadliner: React.FC<ImageHeadlinerType> = ({\n  current,\n  className = '',\n  hideLabel,\n  loop,\n  label,\n  children,\n  brandComponentTheme,\n  id = 'image-headliner-cycle-id',\n  ...rest\n}) => {\n  const validSlides = React.Children.map(\n    children,\n    (child) => React.isValidElement(child) && child.type === ImageHeadlinerItem && child\n  )?.filter(Boolean) as unknown as (typeof ImageHeadlinerItem)[];\n\n  const slides = React.Children.map(\n    validSlides,\n    (child, index) =>\n      React.isValidElement(child) &&\n      React.cloneElement(\n        child as React.ReactElement<React.ComponentProps<typeof ImageHeadlinerItem>>,\n        {\n          index,\n          totalSlides: validSlides.length,\n        }\n      )\n  );\n  const totalSlides = React.Children.count(slides);\n\n  const isDark = brandComponentTheme === 'dark';\n  const isLight = brandComponentTheme === 'light';\n\n  const itemData =\n    React.Children.map(children, (child, index) => {\n      if (React.isValidElement(child) && child.type === ImageHeadlinerItem) {\n        // Extract props for analytics\n        const { headline, link } = child.props || {\n          headline: ANALYTICS_NO_VALUE,\n          link: {\n            label: ANALYTICS_NO_VALUE,\n          },\n        };\n        return {\n          headline,\n          ctaText: link?.label,\n          position: index + 1,\n        } as TImageHeadlinerItemData;\n      }\n      return null;\n    })?.filter(Boolean) || [];\n\n  return (\n    <Cycle id={id} current={current} total={totalSlides}>\n      <div\n        className={cx(className, 'relative flex w-full flex-col items-center py-2 sm:flex-row', {\n          'bg-bg-dark': isDark,\n          'bg-bg-light': isLight,\n          'image-headliner-bg brand-hi-refresh:bg-accent': !isLight && !isDark,\n        })}\n        data-testid=\"imageHeadliner\"\n      >\n        <ImageHeadlinerContent {...rest}>{slides}</ImageHeadlinerContent>\n        <ImageHeadlinerControls\n          brandComponentTheme={brandComponentTheme}\n          label={label}\n          hideLabel={hideLabel}\n          hasLoop={loop}\n          itemData={itemData}\n        />\n      </div>\n    </Cycle>\n  );\n};\n\nexport default ImageHeadliner;\n","export * from './image-headliner';\nexport * from './image-headliner-item';\n","import { useRef, useEffect } from 'react';\nimport { useTranslation } from 'next-i18next';\nimport cx from 'classnames';\nimport { Dialog } from '@dx-ui/osc-dialog-v2';\nimport { ResponsiveImage } from '@dx-ui/osc-responsive-image';\nimport { BrandTextBody } from '@dx-ui/osc-brand-text-body';\nimport { BrandTextHeader } from '@dx-ui/osc-brand-text-header';\nimport type { SecurityDialogWithContentType } from './security-dialog.types';\nimport { useRect } from '@dx-ui/utilities-use-rect';\n\n/**\n * Security Dialog, or Gating Modal, is currently used for Corporate Advantage and travel agent pages.\n * This is a modal/dialog without a close button.\n *\n */\nexport const SecurityDialog = (props: SecurityDialogWithContentType) => {\n  const [t] = useTranslation('osc-marketing-dx-dialog-with-content');\n  const ref = useRef<React.ElementRef<'div'>>(null);\n  const rect = useRect({ ref });\n  const modalCloseButtonRef = useRef<HTMLButtonElement>(null);\n\n  const {\n    imageAspectRatio = '3:2',\n    imageUrl,\n    imageUrls,\n    imageAltText,\n    isOpen,\n    id,\n    headline,\n    content,\n    link,\n    onClickLink,\n    title,\n    ...dialogProps\n  } = props;\n\n  const ariaLabelLink = [link?.adaDescription || '', link?.isNewWindow ? t('newWindow') : '']\n    .filter(Boolean)\n    .join(' - ');\n\n  useEffect(() => {\n    if (isOpen) {\n      modalCloseButtonRef.current && modalCloseButtonRef.current.focus();\n    }\n  }, [isOpen, id]);\n\n  const isHeadlineShown = headline && headline !== props?.title;\n\n  let body: JSX.Element | null = null;\n  if (content) {\n    if (typeof content === 'string') {\n      body = <BrandTextBody {...props}>{content}</BrandTextBody>;\n    } else {\n      body = <div className=\"prose lg:prose-xl my-2\">{content}</div>;\n    }\n  }\n\n  return (\n    <Dialog isOpen={isOpen} title={title} size=\"sm\" {...dialogProps}>\n      <div\n        data-testid=\"activeDialogWithContentBox\"\n        className=\"flex h-full flex-col sm:h-auto\"\n        ref={ref}\n      >\n        {/* This is needed in case we only need 1 img src that can be used for tablet, desktop and mobile screens */}\n        {imageUrl ? (\n          <div className=\"flex items-center justify-items-center overflow-y-hidden\">\n            <ResponsiveImage\n              id={id}\n              aspectRatio={imageAspectRatio}\n              imageUrl={imageUrl}\n              altText={imageAltText ?? ''}\n              width={rect?.width ?? 0}\n            />\n          </div>\n        ) : null}\n        {/* This is needed in case we have separate Urls for tablet, desktop and mobile screens */}\n        {Array.isArray(imageUrls) && imageUrls.length > 0\n          ? imageUrls.map((imgUrl) => {\n              return (\n                <div\n                  className={cx(\n                    'flex items-center justify-items-center overflow-y-hidden',\n                    imgUrl?.className\n                  )}\n                  key={imgUrl.id}\n                  data-testid={`dialog-with-content-img-wrapper-${imgUrl?.screen}`}\n                >\n                  <ResponsiveImage\n                    id={id}\n                    aspectRatio={imageAspectRatio}\n                    imageUrl={imgUrl?.url}\n                    altText={imageAltText ?? ''}\n                    width={rect?.width ?? 0}\n                  />\n                </div>\n              );\n            })\n          : null}\n\n        <div className=\"box-border sm:px-8\" aria-live=\"polite\">\n          {isHeadlineShown ? <BrandTextHeader {...props}>{headline}</BrandTextHeader> : null}\n\n          {body}\n\n          {link?.label && link?.url ? (\n            <div className=\"inline-block w-full pb-4 pt-8 text-center\">\n              <a\n                className=\"btn btn-primary btn-xl\"\n                href={link?.url}\n                target={link?.isNewWindow ? '_blank' : '_self'}\n                onClick={onClickLink}\n                aria-label={ariaLabelLink}\n                data-testid=\"dialogWithContentCTA\"\n                rel=\"noreferrer\"\n              >\n                {link.label}\n              </a>\n            </div>\n          ) : null}\n        </div>\n      </div>\n    </Dialog>\n  );\n};\n","export * from './security-dialog';\n","export * from './brand-showcase';\nexport * from './common.types';\nexport * from './dialog-with-content';\nexport * from './full-width-image';\nexport * from './half-and-half';\nexport * from './image-headliner';\nexport * from './security-dialog';\nexport * from './utils';\n","export * from './lib';\n","export const youtubeEmbedUrlPattern = RegExp('^https://(www.)?youtube.com/embed/');\nexport const youtubeShortsUrlPattern = RegExp('^https://(www.)?youtube.com/shorts/');\nexport const youtubePlaylistUrlPattern = RegExp(\n  '^https://(www.)?youtube.com/watch\\\\?v=[^&]+&list=[^&]+'\n);\n\nexport const testUrlPattern = (url: string, pattern: RegExp) => {\n  return pattern.test(url);\n};\n\nexport const getVideoSrc = (\n  url: string | null,\n  source: string | null,\n  autoPlay: boolean,\n  autoLoop: boolean\n) => {\n  switch (source) {\n    case 'youtube-short':\n    case 'youtube': {\n      if (!url) {\n        return '';\n      }\n\n      try {\n        const parsedUrl = new URL(url);\n\n        let videoId, listId, listIndex;\n        const isShortsLink = testUrlPattern(url, youtubeShortsUrlPattern);\n        const isEmbedLink = testUrlPattern(url, youtubeEmbedUrlPattern);\n        const isPlaylistLink = testUrlPattern(url, youtubePlaylistUrlPattern);\n\n        if (isEmbedLink || isShortsLink) {\n          videoId = parsedUrl.pathname ? parsedUrl.pathname.substring(isShortsLink ? 8 : 7) : '';\n\n          const slashIndex = videoId.indexOf('/');\n          if (slashIndex > 0) {\n            videoId = videoId.substring(0, slashIndex);\n          }\n        } else {\n          videoId = parsedUrl.searchParams.get('v');\n        }\n\n        if (isPlaylistLink) {\n          listId = parsedUrl.searchParams.get('list');\n          listIndex = parsedUrl.searchParams.get('index');\n          return `https://www.youtube.com/embed?listType=playlist&list=${listId}&rel=0;&autoplay=${\n            autoPlay ? '1' : '0'\n          }&controls=1&enablejsapi=1&showinfo=0&playsinline=1&cc_lang_pref=en&cc_load_policy=0&modestbranding=1${\n            autoPlay ? '&mute=1' : ''\n          }${listIndex ? `&index=${listIndex}` : ''}`;\n        }\n\n        if (videoId) {\n          return `https://www.youtube.com/embed/${videoId}/?rel=0;&autoplay=${\n            autoPlay ? '1' : '0'\n          }&controls=1&enablejsapi=1&showinfo=0&playsinline=1&cc_lang_pref=en&cc_load_policy=0&modestbranding=1${\n            autoPlay ? '&mute=1' : ''\n          }${autoLoop ? `&loop=1&playlist=${videoId}` : ''}`;\n        }\n        return '';\n      } catch {\n        return '';\n      }\n    }\n    default: {\n      return url || '';\n    }\n  }\n};\n","export * from './get-video-src';\n","export * from './lib';\n","import { useRef, useCallback, useEffect } from 'react';\nimport { getVideoSrc } from '@dx-ui/utilities-get-video-src';\nimport type { AspectRatio } from '@dx-ui/osc-responsive-image';\nimport cx from 'classnames';\n\ndeclare global {\n  interface Window {\n    YT: {\n      Player: { new (arg0: string, arg1: Record<string, unknown>): void };\n    };\n    onYouTubeIframeAPIReady: () => void;\n  }\n}\n\nexport type TYouTubeVideoProps = {\n  id?: string;\n  name?: string;\n  /**\n   * A11y requirement, iframe title for screen readers\n   */\n  title: string;\n  /**\n   * for example \"youtube\"\n   */\n  source: string;\n  /**\n   * Url of the video\n   */\n  url: string;\n  /**\n   * When present, the video will automatically start playing.\n   */\n  isAutoPlay?: boolean;\n  /**\n   * Specifies that the video will start over again, every time it is finished\n   */\n  isAutoLoop?: boolean;\n  /**\n   * Specified video aspect ratio\n   */\n  isVertical?: boolean;\n  /**\n   * Adds rounded corners\n   */\n  isRounded?: boolean;\n  /**\n   * Can be used to add styling to the wrapper div\n   */\n  wrapperClassName?: string;\n  /**\n   * This event fires whenever the player's state changes. https://developers.google.com/youtube/iframe_api_reference\n   */\n  onStateChange?: (e: unknown) => void;\n};\n\n/**\n * Renders a video player for YouTube supported videos and urls.\n *\n * Refer to the `getVideoSrc` util to see other supported source types.\n */\nexport const YouTubeVideo = ({\n  title,\n  source,\n  url,\n  id = 'video',\n  isAutoPlay = false,\n  isAutoLoop = true,\n  wrapperClassName,\n  isRounded,\n  onStateChange,\n  isVertical = source === 'youtube-short',\n}: TYouTubeVideoProps) => {\n  const player = useRef<unknown>();\n  const aspectRatio: AspectRatio = isVertical ? '9:16' : '16:9';\n  const videoSrc = getVideoSrc(url || '', source || '', isAutoPlay, isAutoLoop);\n\n  const onPlayerReady = useCallback(\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    (event: any) => {\n      if (isAutoPlay) {\n        event.target.mute();\n        event.target.playVideo();\n      }\n    },\n    [isAutoPlay]\n  );\n\n  const loadVideo = useCallback(() => {\n    // The Player object is created uniquely based on the id in props\n    const { YT } = window;\n\n    player.current = new YT.Player(`${id}-youtube-video`, {\n      events: {\n        onReady: onPlayerReady,\n        onStateChange,\n      },\n    });\n  }, [id, onPlayerReady, onStateChange]);\n\n  useEffect(() => {\n    const ytHasLoaded = !!window.YT?.Player;\n\n    if (!ytHasLoaded) {\n      // If not, load the script asynchronously\n      const tag = document.createElement('script');\n\n      tag.src = 'https://www.youtube.com/iframe_api';\n\n      // onYouTubeIframeAPIReady will load the video after the script is loaded\n      const previous = window.onYouTubeIframeAPIReady;\n\n      window.onYouTubeIframeAPIReady = () => {\n        if (previous) {\n          previous();\n        }\n\n        loadVideo();\n      };\n\n      const firstScriptTag = document.getElementsByTagName('script')[0];\n      firstScriptTag &&\n        firstScriptTag.parentNode &&\n        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n    } else {\n      // If script is already there, load the video directly\n      loadVideo();\n    }\n  }, [loadVideo]);\n\n  return (\n    <div\n      id={id}\n      className={cx(\n        'brand-qq:max-w-full brand-qq:justify-start brand-qq:items-start brand-qq:p-0 relative flex w-full items-center justify-center',\n        wrapperClassName\n      )}\n      style={{ aspectRatio: aspectRatio.replace(':', '/') }}\n    >\n      <div className=\"flex size-full justify-center\">\n        <iframe\n          className={cx({\n            'left-0 top-0 h-full w-full': !isVertical,\n            'aspect-[9/16]': isVertical,\n            'rounded-xl': isRounded,\n          })}\n          data-e2e={`${id}Video`}\n          data-testid={`${id}Video`}\n          id={`${id}-youtube-video`}\n          src={videoSrc}\n          allow=\"encrypted-media; autoplay\"\n          allowFullScreen\n          title={title || 'No video available'}\n          // The \"sandbox\" attribute is from Checkmarx; see NHCBP-4137\n          sandbox=\"allow-same-origin allow-scripts allow-popups allow-forms allow-popups-to-escape-sandbox\"\n        />\n      </div>\n    </div>\n  );\n};\n\nexport default YouTubeVideo;\n","export * from './lib/youtube-video';\n"],"names":["BrandTextBody","children","className","testId","isStaticContentPage","brandComponentTheme","id","useId","div","data-testid","cx","CustomMarkdown","BrandTextHeader","ariaLabel","HeadingLevel","headingLevelFallback","span","CarouselNoImage","isFullSize","useTranslation","t","CarouselImage","alt","imageProps","url","captionData","isActive","metrics","useState","isImageError","setIsImageError","isImageLoaded","setIsImageLoaded","classnames","figure","Image","layout","onError","onLoadingComplete","src","unoptimized","aria-hidden","Caption","caption","captionLink","metricsOnClick","trackEvent","ANALYTICS_GLOBAL_CLICK_EVENT","generateCarouselSingleMetrics","position","images","itemTitle","ANALYTICS_NO_VALUE","clickID","ImageClickID","Scroll","imageFunction","carouselMetrics","click","osc","image","headline","count","length","type","ImageType","Carousel","ImageFunction","Link","function","generateCpmCarouselMetrics","Img","CarouselNavigationButton","direction","isTailored","rest","button","Icon","name","CarouselControls","showAlternateControls","activeIndex","isRtl","handlePreviousButtonClick","handleNextButtonClick","leftNav","onClick","rightNav","paginationCounter","p","aria-live","imageCount","data-osc-product","CarouselSingle","rect","startingIndex","onArrowClick","isLoading","useRouter","locale","isRtlLanguage","setActiveIndex","touchStart","setTouchStart","touchEnd","setTouchEnd","ref","useRef","useRect","current","width","height","imageTranslateX","newIndex","onTouchEnd","handleTouchEnd","SWIPE_SENSITIVITY","onTouchMove","handleTouchMove","e","targetTouches","clientX","onTouchStart","handleTouchStart","stopPropagation","style","transform","map","index","priority","TagRenderer","tag","props","Tag","MarkdownLinkRenderer","window","href","Children","endsWith","replace","a","target","rel","isBrowser","location","includes","startsWith","Array","isArray","markdownArray","updatedChildren","options","baseClass","defaultOptions","overrides","component","h1","tabIndex","h2","h3","table","thead","th","td","b","ul","ol","li","mergedOpts","merge","slice","split","markdown","join","Markdown","DEFAULT_CONTEXT_VALUE","HeadingLevelContext","createContext","useHeadingLevel","useContext","HeadingLevelProvider","level","shouldIncreaseLevel","isEnabled","isParentEnabled","parentLevel","Provider","value","calculateHeadingLevel","parent","context","DEFAULT_HEADING_LEVEL","undefined","prefersReducedMotion","BrandShowcase","items","onItemClicked","logoUrl","rtl","selectedItem","setSelectedItem","atScrollEnd","setAtScrollEnd","scrollAnimationRequest","scrollRef","itemRefs","useMemo","createRef","onShowcaseItemClicked","item","findIndex","i","totalWidth","scrollWidth","offsetWidth","brandRect","getBoundingClientRect","desiredScrollLeft","maxScrollLeft","onComplete","focus","scrollLeft","scrollToOffset","useCallback","cancelAnimationFrame","getPrefersReducedMotion","matchMedia","matches","startTime","scrollDistance","duration","Math","max","abs","animateScroll","timeStamp","progress","SLIDE_DURATION","easing","requestAnimationFrame","debouncedOnScroll","useDebounceCallback","distanceFromEndOfScrollBar","endOfScrollBar","marginForDetectingBrandPosition","min","ceil","currentIndex","previousItem","handleTabListWrapperKeyDown","evt","code","key","preventDefault","slide","targetIndex","NavItems","idx","role","aria-expanded","aria-controls","aria-label","onKeyDown","objectFit","fill","imageDefaultColor","size","onScroll","onScrollWrapper","END_MARGIN","shortDescription","label","brand","DialogWithContent","link","imageAspectRatio","imageUrl","imageUrls","imageAltText","isOpen","title","content","onClose","cmsTranslationClasses","captionMetricsOnClick","brandLinkMetricsOnClick","dialogProps","body","getCurrentAspectRatioAndUrl","imageUrlMobile","mobileImageUrl","imageUrlTablet","tabletImageUrl","imageUrlDesktop","desktopImageUrl","aspectRatioMobile","aspectRatioTablet","aspectRatioDesktop","aspectRatio","Dialog","onDismiss","dialogPropsWithLabel","ResponsiveImage","altText","multipleImageAspectRatio","multipleImageUrl","BrandLink","isNewWindow","showNewWindowIcon","cidParams","data-conductrics-goal","experimentationConfiguration","goal","data-conductrics-value","generateFullWidthMediaMetricsParams","FULL_WIDTH__METRIC_POSITION","FULL_WIDTH_METRIC_IMAGE_COUNT","Full","imageOverlayButtonText","description","overlayButtonClicked","showInfoContainer","setShowInfoContainer","imgLoaded","setImgLoaded","handleImageOverlayButtonClick","Modal","onImgLoaded","containerAspectRatio","FullWidthImageDialogAspectRatio","handleCloseButtonClick","generateHalfAndHalfMetrics","HALF_AND_HALF_IMAGE_COUNT","Half","useCycle","cycleId","active","total","onNextClick","onPreviousClick","data-e2e","Pagination","controls","hideLabel","loop","HalfAndHalfContent","useConductricsSelection","isLoaded","media","playerProps","videoSize","copy","hasParallax","isPositionOdd","hasImageCarousel","carouselImages","speed","cmsDocumentControl","isFullCarousel","isFullScreen","mediaRatio","wrapperElement","isVideo","Boolean","video","multimedia","videoUrl","isYouTubeShort","source","isPortrait","orientation","isLandscape","isVerticalVideo","isCinemagraph","hasAudio","isMuted","useVideoPlayer","playerClassNames","useVideoPlayerClasses","hasActiveTranscript","videoTranscriptProps","activeTranscript","isLarge","useMediaQuery","useResizeObserver","videoProps","videoElement","transcriptStyle","isDark","isLight","isTabletAndMobile","isMobile","mobileLayout","status","Status","OK","useHalfAndHalfMobileLayoutTest","PENDING","selection","variantA","choice","variantB","Transcript","VideoTranscript","LongDescription","CtaLink","sendReward","Headline","ShortDescription","ImgVideoContent","ParallaxBanner","disabled","ParallaxBannerLayer","expanded","scale","YouTubeVideo","wrapperClassName","trim","isVertical","isAutoPlay","wrapperClassNames","Video","posterImageUrl","videoId","VideoCaptions","videoCaptionProps","captionClassNames","VideoControls","videoVariant","videoControlsProps","controlsClassNames","DefaultLayout","MobileLayoutVariantAB","container","hidden","markupSchemas","VideoPlayerMarkup","HalfAndHalf","isReverse","currElemIndxType","Number","isNaN","containerBgClass","carouselItems","Cycle","CycleContext","Consumer","generateImageHeadlinerMetrics","ImageHeadlinerMetrics","Headliner","hasLoop","itemData","hasSlides","currentItem","currentHeadline","currentCtaText","ctaText","currentPosition","trackImageHeadlinerScrollClick","totalItems","onNextClickWithAnalytics","onPreviousClickWithAnalytics","ImageHeadlinerItem","totalSlides","describedByID","imageCss","aria-describedby","adaDescription","onLinkClick","React","validSlides","child","filter","slides","ImageHeadlinerContent","ImageHeadlinerControls","youtubeEmbedUrlPattern","RegExp","pattern","test","autoPlay","autoLoop","listId","listIndex","parsedUrl","URL","isShortsLink","testUrlPattern","youtubeShortsUrlPattern","isEmbedLink","isPlaylistLink","youtubePlaylistUrlPattern","slashIndex","pathname","substring","indexOf","searchParams","get","isAutoLoop","isRounded","onStateChange","player","videoSrc","getVideoSrc","onPlayerReady","event","mute","playVideo","loadVideo","YT","Player","events","onReady","useEffect","ytHasLoaded","document","createElement","previous","onYouTubeIframeAPIReady","firstScriptTag","getElementsByTagName","parentNode","insertBefore","iframe","allow","allowFullScreen","sandbox"],"sourceRoot":"","ignoreList":[]}