{"version":3,"file":"RelatedArticles-Chunk-85d21d0c88a1d61218f5.js","mappings":"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","sources":["webpack://nikon-client/./components/atoms/Bullets/Bullets.tsx","webpack://nikon-client/./components/atoms/Image/Image.tsx","webpack://nikon-client/./components/molecules/ArticleCard/ArticleCard.tsx","webpack://nikon-client/./components/organisms/RelatedArticles/RelatedArticles.tsx","webpack://nikon-client/./models/enums/ArticleLayoutsEnum.ts","webpack://nikon-client/./models/enums/BreakpointEnum.ts","webpack://nikon-client/./utility/helpers/gtm.ts","webpack://nikon-client/./utility/hooks/useBreakpoint.ts","webpack://nikon-client/./utility/hooks/useMediaQuery.ts","webpack://nikon-client/./node_modules/.pnpm/react-icomoon@2.6.0_react@18.3.1/node_modules/react-icomoon/dist/index.js","webpack://nikon-client/./node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js"],"sourcesContent":["import classNames from 'classnames';\n\ninterface Props {\n  readonly bullets: (string | undefined)[];\n  readonly textSize?: string;\n  readonly textColour?: string;\n  readonly className?: string;\n  readonly bulletClasses?: string;\n  readonly noWrap?: boolean;\n  readonly dataTestId?: string;\n}\n\nconst Bullets = ({\n  bullets,\n  textSize = 'body-three',\n  textColour = 'text-black-100 dark:text-white',\n  className,\n  bulletClasses,\n  noWrap = true,\n  dataTestId,\n}: Props) => {\n  const filteredBullets = bullets.filter(Boolean);\n  if (!filteredBullets.length) return null;\n\n  return (\n    <div\n      className={classNames('flex flex-wrap items-center', className)}\n      data-testid={dataTestId}\n    >\n      {filteredBullets.map((bullet, index) => (\n        <span\n          key={bullet}\n          className={classNames(\n            { 'whitespace-nowrap': noWrap },\n            'pr-2',\n            textColour,\n            textSize,\n            bulletClasses\n          )}\n        >\n          {index !== 0 && (\n            <span className=\"mr-2 text-black-100 dark:text-yellow\">•</span>\n          )}\n          {bullet}\n        </span>\n      ))}\n    </div>\n  );\n};\n\nexport default Bullets;\n","import BreakpointEnum from '@models/enums/BreakpointEnum';\nimport { IImage } from '@models/IImage';\nimport useBreakpoint from '@utils/hooks/useBreakpoint';\nimport classNames from 'classnames';\nimport { PropsWithChildren, RefObject, useState } from 'react';\n\ninterface Props {\n  readonly classes?: string;\n  readonly dataTestId?: string;\n  readonly epiEdit?: string;\n  readonly image?: IImage;\n  readonly imageClasses?: string;\n  readonly imageRef?:\n    | RefObject<HTMLImageElement>\n    | ((node: HTMLElement | null) => void);\n  readonly lazyLoad?: boolean;\n  readonly progressiveLoad?: boolean;\n  readonly sizes?: string;\n}\n\nconst Image = ({\n  children,\n  classes,\n  dataTestId,\n  epiEdit,\n  image,\n  imageClasses,\n  imageRef,\n  lazyLoad = true,\n  progressiveLoad = true,\n  sizes = '',\n}: PropsWithChildren<Props>) => {\n  const mobileSource = image?.mobile;\n  const tabletSource = image?.tablet;\n  const desktopSource = image?.desktop;\n  const largeDesktopSource = image?.largeDesktop;\n  const breakpoint = useBreakpoint() as BreakpointEnum;\n  const [isLoaded, setIsLoaded] = useState<boolean>(false);\n\n  if (!desktopSource?.url) return null;\n\n  const currentSrc = {\n    [BreakpointEnum.Small]: mobileSource,\n    [BreakpointEnum.Medium]: tabletSource,\n    [BreakpointEnum.Large]: desktopSource,\n    [BreakpointEnum.XLarge]: largeDesktopSource,\n  };\n\n  return (\n    <picture className={classNames(classes)}>\n      <source\n        type=\"image/webp\"\n        sizes={sizes}\n        srcSet={`${mobileSource?.url} 376w, ${tabletSource?.url} 768w, ${desktopSource?.url} 1024w, ${largeDesktopSource?.url} 1440w`}\n      />\n      <img\n        ref={imageRef}\n        alt={image?.altText?.length ? image?.altText : 'nikon-image'}\n        className={classNames(\n          imageClasses,\n          'transition duration-500 ease-in-out'\n        )}\n        data-epi-property-name={epiEdit}\n        draggable=\"false\"\n        loading={lazyLoad ? 'lazy' : 'eager'}\n        onLoad={() => setIsLoaded(true)}\n        sizes={sizes}\n        src={\n          isLoaded && progressiveLoad\n            ? currentSrc[breakpoint]?.url\n            : mobileSource?.url\n        }\n        height={currentSrc[breakpoint]?.height}\n        width={currentSrc[breakpoint]?.width}\n        srcSet={`${mobileSource?.originalUrl} 376w, ${tabletSource?.originalUrl} 768w, ${desktopSource?.originalUrl} 1024w, ${largeDesktopSource?.originalUrl} 1440w`}\n        {...(dataTestId && { 'data-testid': dataTestId })}\n      />\n      {isLoaded && children}\n    </picture>\n  );\n};\n\nexport default Image;\n","import Bullets from '@atoms/Bullets/Bullets';\nimport Icon from '@atoms/Icon/Icon';\nimport Image from '@atoms/Image/Image';\nimport ArticleLayoutsEnum from '@models/enums/ArticleLayoutsEnum';\nimport { IArticle } from '@models/IArticle';\nimport updateDataLayer from '@utils/helpers/gtm';\nimport useMediaQuery from '@utils/hooks/useMediaQuery';\nimport classNames from 'classnames';\nimport { useState } from 'react';\n\ninterface Props extends IArticle {\n  readonly layoutType?: ArticleLayoutsEnum;\n  readonly isLightMode?: boolean;\n  readonly dataTestId?: string;\n}\n\nconst ArticleCard = ({\n  articleInfo,\n  image,\n  layoutType,\n  readTime,\n  title,\n  url,\n  isLightMode,\n  dataTestId = 'Article-Card',\n}: Props) => {\n  const [isHovered, setIsHovered] = useState(false);\n  const { author, publishedDate, genre } = articleInfo ?? {};\n  const [firstGenre] = genre ?? [];\n  const bulletsArray = [firstGenre, publishedDate, author];\n\n  const isBelowXXLScreen = useMediaQuery(1920);\n  const isBelowXLScreen = useMediaQuery(1440);\n  const isMobile = useMediaQuery(768);\n\n  const titleSize =\n    (isBelowXXLScreen && !isBelowXLScreen) || isMobile ? 'h6' : 'h5';\n\n  const imageSize = () => {\n    if (layoutType === ArticleLayoutsEnum.THREE) {\n      return '(max-width: 768px) 376px, 500px';\n    }\n\n    if (\n      layoutType === ArticleLayoutsEnum.THREE_TWO_THREE ||\n      layoutType === ArticleLayoutsEnum.THREE_TWO_TWO ||\n      layoutType === ArticleLayoutsEnum.TWO ||\n      layoutType === ArticleLayoutsEnum.TWO_TWO\n    ) {\n      return '50vw';\n    }\n\n    return undefined;\n  };\n\n  return (\n    <div data-testid={dataTestId}>\n      <div\n        onMouseEnter={() => setIsHovered(true)}\n        onMouseLeave={() => setIsHovered(false)}\n      >\n        <div className=\"relative h-full w-full\">\n          {readTime && (\n            <div\n              className=\"cta absolute bottom-2 right-2 z-10 flex items-center gap-2 rounded-full bg-black-100 bg-opacity-50 py-2 pl-3 pr-5 text-lg text-white lg:bottom-5 lg:right-5\"\n              data-testid=\"Article-Card-Read-Time\"\n            >\n              <Icon name=\"clock\" colorClassName=\"text-white\" />\n              {readTime}\n            </div>\n          )}\n          {url && (\n            <a\n              href={url}\n              rel=\"noreferrer\"\n              onClick={() =>\n                updateDataLayer({\n                  event: 'selectContent',\n                  content_type: 'articles_find_out_more',\n                  link_text: title,\n                })\n              }\n              data-testid=\"Article-Card-Link\"\n            >\n              {image && (\n                <Image\n                  image={image}\n                  imageClasses=\"w-full h-full object-cover left-0 -z-1 aspect-video\"\n                  sizes={imageSize()}\n                  dataTestId=\"Article-Card-Image\"\n                />\n              )}\n            </a>\n          )}\n        </div>\n      </div>\n      <div className=\"flex flex-col gap-2 px-0 pt-2.5 lg:pt-7\">\n        {bulletsArray.length > 0 && (\n          <Bullets\n            bullets={bulletsArray}\n            textSize=\"body-four\"\n            {...(isLightMode ? { textColour: 'text-black-100 ' } : {})}\n            dataTestId=\"Article-Card-Info-Bullets\"\n          />\n        )}\n\n        {title && (\n          <p\n            className={classNames(\n              titleSize,\n              url && isHovered\n                ? `text-grey-500 ${isLightMode ? '' : 'dark:text-yellow'}`\n                : `text-black-100 ${isLightMode ? '' : 'dark:text-white'}`\n            )}\n            data-testid=\"Article-Card-Title\"\n          >\n            {title}\n          </p>\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default ArticleCard;\n","import { IArticle } from '@models/IArticle';\nimport { IMeta } from '@models/IMeta';\nimport ArticleCard from '@molecules/ArticleCard/ArticleCard';\n\ninterface Props {\n  readonly sectionTitle: string;\n  readonly articles: IArticle[];\n  readonly meta: IMeta;\n  readonly anchorId: string;\n}\n\nconst RelatedArticles = ({\n  sectionTitle,\n  articles = [],\n  meta,\n  anchorId = '',\n}: Props) => (\n  <section\n    className=\"component-padding bg-white text-black-100 dark:bg-black-100 dark:text-white\"\n    data-epi-block-id={meta?.contentLink}\n    id={`a-${anchorId}`}\n    data-testid=\"CT-34-Related-Articles\"\n  >\n    <div className=\"container\">\n      <div className=\"flex flex-wrap gap-8 lg:gap-13\">\n        {sectionTitle && (\n          <h2\n            className=\"w-full\"\n            data-epi-property-name={meta?.editHints?.sectionTitle}\n            data-testid=\"CT-34-Related-Articles-Title\"\n          >\n            {sectionTitle}\n          </h2>\n        )}\n        <div\n          className=\"grid w-full grid-cols-1 gap-x-4 gap-y-12 lg:grid-cols-2 lg:gap-y-20 xl:grid-cols-3\"\n          data-epi-property-name={meta?.editHints?.articles}\n        >\n          {articles.length > 0 &&\n            articles.map((article, index) => (\n              <ArticleCard\n                key={`Article-Card-${article.title}`}\n                {...article}\n                dataTestId={`CT-34-Related-Articles-Card-${index}`}\n              />\n            ))}\n        </div>\n      </div>\n    </div>\n  </section>\n);\n\nexport default RelatedArticles;\n","const enum ArticleLayoutsEnum {\n  ONE = 'One',\n  ONE_TWO = 'OneTwo',\n  TWO = 'Two',\n  TWO_TWO = 'TwoTwo',\n  THREE = 'Three',\n  THREE_TWO_THREE = 'ThreeTwoThree',\n  THREE_TWO_TWO = 'ThreeTwoTwo',\n}\n\nexport default ArticleLayoutsEnum;\n","const enum BreakpointEnum {\n  Small = 'sm',\n  Medium = 'md',\n  Large = 'lg',\n  XLarge = 'xl',\n}\n\nexport default BreakpointEnum;\n","const updateDataLayer = (eventPayload: Record<string, unknown>) => {\n  if (typeof window !== 'undefined') {\n    window.dataLayer = window.dataLayer || [];\n    window.dataLayer.push(eventPayload);\n  }\n};\n\nexport default updateDataLayer;\n","import BreakpointEnum from '@models/enums/BreakpointEnum';\nimport { useCallback, useEffect, useState } from 'react';\n\nconst getCurrentBreakpoint = () => {\n  const breakpoints = { tablet: 768, desktop: 1024, lgDesktop: 1440 };\n  const width = window.innerWidth;\n\n  if (width < breakpoints.tablet) {\n    return BreakpointEnum.Small;\n  }\n  if (width >= breakpoints.tablet && width < breakpoints.desktop) {\n    return BreakpointEnum.Medium;\n  }\n  if (width >= breakpoints.desktop && width < breakpoints.lgDesktop) {\n    return BreakpointEnum.Large;\n  }\n  return BreakpointEnum.XLarge;\n};\n\nconst useBreakpoint = () => {\n  const [screen, setScreen] = useState<BreakpointEnum>();\n\n  const resizeHandler = useCallback(\n    () => setScreen(getCurrentBreakpoint()),\n    []\n  );\n\n  useEffect(() => {\n    window.addEventListener('resize', resizeHandler);\n    setScreen(getCurrentBreakpoint());\n\n    return () => {\n      window.removeEventListener('resize', resizeHandler);\n    };\n  }, [resizeHandler]);\n\n  return screen;\n};\n\nexport default useBreakpoint;\n","import { useCallback, useEffect, useState } from 'react';\n\nconst useMediaQuery = (minWidth: number) => {\n  // Set the default value to undefined in order to properly distinguish the falsey values\n  // where undefined is the value before computing whether the screen size is smaller than the minWidth\n  // i.e. a state where we don't really know whether we're below the threshold or not\n  // and false is the value where the computation returns false\n  const [isSmallerThan, setIsSmallerThan] = useState<boolean>();\n\n  const handler = useCallback(() => {\n    const isDesiredWidth = window.innerWidth < minWidth;\n    setIsSmallerThan(isDesiredWidth);\n  }, [minWidth]);\n\n  useEffect(() => {\n    window.addEventListener('resize', handler);\n    handler();\n\n    return () => {\n      window.removeEventListener('resize', handler);\n    };\n  }, [handler]);\n\n  return isSmallerThan;\n};\n\nexport default useMediaQuery;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.iconList = void 0;\nvar react_1 = require(\"react\");\nvar IcoMoon = function (_a) {\n    var iconSet = _a.iconSet, icon = _a.icon, size = _a.size, title = _a.title, disableFill = _a.disableFill, removeInlineStyle = _a.removeInlineStyle, native = _a.native, SvgComponent = _a.SvgComponent, PathComponent = _a.PathComponent, props = __rest(_a, [\"iconSet\", \"icon\", \"size\", \"title\", \"disableFill\", \"removeInlineStyle\", \"native\", \"SvgComponent\", \"PathComponent\"]);\n    if (!iconSet || !icon)\n        return null;\n    var currentIcon = iconSet.icons.find(function (item) { return item.properties.name === icon; });\n    if (!currentIcon)\n        return null;\n    var initialStyle = {\n        display: \"inline-block\",\n        stroke: \"currentColor\",\n        fill: \"currentColor\",\n    };\n    if (native) {\n        initialStyle.display = \"flex\";\n        initialStyle.flexDirection = \"row\";\n        initialStyle.flexWrap = \"wrap\";\n    }\n    var comptuedStyle = __assign(__assign(__assign({}, (removeInlineStyle ? {} : initialStyle)), (size ? { width: size, height: size } : {})), (props.style || {}));\n    var _b = currentIcon.icon.width, width = _b === void 0 ? \"1024\" : _b;\n    var viewBox = \"0 0 \".concat(width, \" 1024\");\n    var children = currentIcon.icon.paths.map(function (path, index) {\n        var _a;\n        var attrs = (_a = currentIcon.icon.attrs) === null || _a === void 0 ? void 0 : _a[index];\n        var pathProps = __assign({ d: path, key: icon + index }, (!disableFill && attrs ? attrs : {}));\n        return (0, react_1.createElement)(PathComponent || \"path\", pathProps);\n    });\n    if (title && !native) {\n        children.push((0, react_1.createElement)(\"title\", { key: title }, title));\n    }\n    return (0, react_1.createElement)(SvgComponent || \"svg\", __assign(__assign({}, props), { viewBox: viewBox, style: comptuedStyle }), children);\n};\nvar iconList = function (iconSet) {\n    if (!iconSet || !Array.isArray(iconSet.icons))\n        return null;\n    return iconSet.icons.map(function (icon) { return icon.properties.name; });\n};\nexports.iconList = iconList;\nexports.default = IcoMoon;\n//# sourceMappingURL=index.js.map","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n"],"names":["_ref","bullets","textSize","textColour","className","bulletClasses","noWrap","dataTestId","filteredBullets","filter","Boolean","length","React","createElement","classNames","map","bullet","index","key","children","classes","epiEdit","image","imageClasses","imageRef","lazyLoad","progressiveLoad","sizes","mobileSource","mobile","tabletSource","tablet","desktopSource","desktop","largeDesktopSource","largeDesktop","breakpoint","useBreakpoint","isLoaded","setIsLoaded","useState","url","currentSrc","BreakpointEnum","Small","Medium","Large","XLarge","type","srcSet","_extends","ref","alt","altText","draggable","loading","onLoad","src","height","width","originalUrl","articleInfo","layoutType","readTime","title","isLightMode","isHovered","setIsHovered","author","publishedDate","genre","firstGenre","bulletsArray","isBelowXXLScreen","useMediaQuery","isBelowXLScreen","isMobile","titleSize","onMouseEnter","onMouseLeave","Icon","name","colorClassName","href","rel","onClick","updateDataLayer","event","content_type","link_text","Image","ArticleLayoutsEnum","THREE","THREE_TWO_THREE","THREE_TWO_TWO","TWO","TWO_TWO","Bullets","sectionTitle","articles","meta","anchorId","contentLink","id","editHints","article","ArticleCard","eventPayload","window","dataLayer","push","getCurrentBreakpoint","breakpoints","innerWidth","screen","setScreen","resizeHandler","useCallback","useEffect","addEventListener","removeEventListener","minWidth","isSmallerThan","setIsSmallerThan","handler","isDesiredWidth","__assign","this","Object","assign","t","s","i","n","arguments","p","prototype","hasOwnProperty","call","apply","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","defineProperty","exports","value","iconList","react_1","iconSet","Array","isArray","icons","icon","properties","_a","size","disableFill","removeInlineStyle","native","SvgComponent","PathComponent","props","currentIcon","find","item","initialStyle","display","stroke","fill","flexDirection","flexWrap","comptuedStyle","style","_b","viewBox","concat","paths","path","attrs","pathProps","d","hasOwn","arg","appendClass","parseValue","toString","includes","newClass","module","default"],"sourceRoot":""}