{"version":3,"sources":["webpack:///./presentation/utils/generalUtils.ts","webpack:///./presentation/components/ribbons/ads/AdvertCard.tsx","webpack:///./presentation/components/ribbons/ads/AdvertCard.stylesheet.ts","webpack:///./presentation/components/ribbons/ads/Ads.tsx","webpack:///./presentation/components/ribbons/ads/index.ts","webpack:///./presentation/components/common/Card/CardImage.tsx","webpack:///./presentation/components/common/Card/CardImage.stylesheet.ts","webpack:///./presentation/components/common/Card/ConnectedCardImage.tsx","webpack:///./presentation/components/common/Card/Card.tsx","webpack:///./presentation/components/common/Card/Card.stylesheet.ts","webpack:///./presentation/components/common/Card/index.ts"],"names":["isEmpty","obj","Array","isArray","length","value","isObject","Object","entries","getOwnPropertyNames","constructor","PureAdvert","colorway","imageUrl","illustration","imageAspectRatio","precursor","badge","title","body","hBaseline","ctas","ribbonId","hasBadge","hasPrecursor","isNilOrEmpty","theme","useTheme","styles","spacing","palette","useStyles","default","category","display","alignItems","color","grey02","marginTop","gu2px","flexGrow","grey04","stylesheet","Card","image","style","component","Shortcode","against","Against","LIGHT","code","kind","BadgeKind","HIGHLIGHT","depth","displayName","PureAds","id","loading","name","ads","layout","Ribbon","type","AdvertCard","key","i","ad","errorBoundary","visibilitySet","Ads","PureCardImage","ctaUrl","externalRoutes","currentLanguage","hasIllustration","outer","position","height","paddingTop","imageAspectRatioPercentage","overflow","inner","top","left","right","bottom","backgroundColor","transform","width","alt","createImageAlt","assetUrl","createImageUrl","to","src","mapStateToProps","createStructuredSelector","getExternalRoutes","getCurrentLanguage","mapDispatchToProps","ConnectedCardImage","props","connect","CardImage","getCtaAgainst","Colorway","NEUTRAL","hasImage","Boolean","getCtaUrl","cta","behavior","goto","hasPanelBorder","PRIMARY","PRIMARY_GRADIENT","DARK","includes","PureCard","children","footer","last","isMinSm","useBreakpoints","hasMultipleCtas","root","getBackgroundAccent","flexDirection","content","marginBottom","spaceCtas","marginRight","borderless","hasCtas","map","CallToAction","block","index"],"mappings":"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","file":"pex-static/16/10.298c0786007a66c5b217.chunk.js","sourcesContent":["export const isObject =(value: any) => {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n};\n\nexport const isEmpty = (obj: T) => {\n if (obj === null) {\n return false;\n }\n if (obj === void 0) {\n return true;\n }\n if (obj === '') {\n return true;\n }\n if (Array.isArray(obj)) {\n return obj.length === 0;\n }\n return (\n isObject(obj) &&\n Object.entries(obj).length === 0 &&\n Object.getOwnPropertyNames(obj).length === 0 &&\n obj.constructor === Object\n );\n};\n\nexport const isNilOrEmpty = (obj: T) => obj == null || isEmpty(obj);","import React from 'react';\nimport {\n PreHeading02,\n Heading04,\n BodyCopy01,\n} from '@ux/typography';\nimport Badge, {\n Kind as BadgeKind,\n} from '@ux/badge';\nimport Card from 'components/common/Card';\nimport { Against, Colorway } from 'domain/constants/colorway';\nimport Shortcode, { ShortcodeProps } from 'components/Shortcode';\nimport stylesheet from './AdvertCard.stylesheet';\nimport { Theme, useTheme } from '@ux/theme-utils';\nimport { CTA } from 'core/ribbons/cta';\nimport { ImageAspectRatio } from 'domain/constants/imageAspectRatio';\nimport { isNilOrEmpty } from 'presentation/utils/generalUtils';\n\nexport interface AdvertCardProps {\n imageUrl?: string,\n illustration?: string,\n imageAspectRatio?: ImageAspectRatio,\n precursor: ShortcodeProps,\n badge: string,\n title: ShortcodeProps,\n body: ShortcodeProps,\n ctas: CTA[],\n}\ninterface OuterProps extends AdvertCardProps {\n key?: number,\n theme: Theme,\n colorway: Colorway,\n hBaseline?: number,\n ribbonId: string,\n}\n\nconst PureAdvert = ({\n colorway,\n imageUrl,\n illustration,\n imageAspectRatio,\n precursor,\n badge,\n title,\n body,\n hBaseline=1,\n ctas,\n ribbonId,\n}: OuterProps) => {\n const hasBadge = badge && badge.length > 0;\n const hasPrecursor = !isNilOrEmpty(precursor);\n const {\n theme,\n } = useTheme();\n const { styles } = stylesheet({ theme });\n return (\n \n <>\n {hasPrecursor && (\n \n \n {hasBadge && (\n \n {badge}\n \n )}\n \n )}\n \n \n \n
\n \n \n \n
\n \n \n );\n};\n\nPureAdvert.displayName = 'Advert';\n\nexport default PureAdvert;\n","import { gu2px, Theme } from '@ux/theme-utils';\nimport { useStyles } from '@team-griffin/stylr';\n\nexport default ({\n theme: {\n spacing,\n palette,\n },\n}: {\n theme: Theme,\n}) => useStyles({\n default: {\n category: {\n display: 'flex',\n alignItems: 'center',\n color: palette.grey02,\n },\n title: {\n color: palette.grey02,\n },\n body: {\n marginTop: gu2px(2, spacing),\n flexGrow: 1,\n color: palette.grey04,\n },\n },\n});\n","import React from 'react';\nimport Ribbon from '../Ribbon';\nimport Slider from '@ux/slider';\nimport visibilitySet from 'presentation/hocs/visibilitySet';\nimport errorBoundary from 'presentation/hocs/errorBoundary';\nimport AdvertCard, { AdvertCardProps } from './AdvertCard';\nimport { RibbonProps } from 'domain/constants/ribbons';\n\ninterface OuterProps extends RibbonProps {\n ads: AdvertCardProps[],\n}\n\ndeclare const i: number;\ndeclare const ad: AdvertCardProps;\nexport const PureAds = ({\n id,\n theme,\n colorway,\n loading,\n name,\n hBaseline=1,\n ads,\n layout,\n}: OuterProps) => (\n \n {/*\n //@ts-ignore */}\n \n \n \n \n \n \n);\n\nPureAds.displayName = 'Ads';\n\nexport default errorBoundary(visibilitySet(PureAds));\n","import Ads from './Ads';\n\nexport default Ads;\n","import React from 'react';\nimport stylesheet from './CardImage.stylesheet';\nimport createImageUrl from 'presentation/utils/createImageUrl';\nimport createImageAlt from 'presentation/utils/createImageAlt';\nimport { useTheme } from '@ux/theme-utils';\nimport { DynamicLink } from '@ux/dynamic-link';\nimport { OuterProps } from './ConnectedCardImage';\n\ninterface InnerProps extends OuterProps {\n currentLanguage?: string,\n externalRoutes?: string[],\n}\n\nconst PureCardImage = ({\n ctaUrl,\n imageAspectRatio,\n illustration,\n imageUrl,\n externalRoutes,\n currentLanguage,\n}: InnerProps) => {\n const hasIllustration = illustration?.length > 0;\n const { styles } = stylesheet({\n hasIllustration,\n imageAspectRatio,\n });\n const alt = createImageAlt({ imageUrl });\n const { theme } = useTheme();\n const assetUrl = createImageUrl(\n {\n illustration,\n imageUrl,\n },\n theme,\n currentLanguage,\n );\n return (\n
\n
\n \n 0}>\n \n \n \n \n \n \n \n \n
\n
\n );\n};\n\nPureCardImage.displayName = 'CardImage';\n\nexport default PureCardImage;\n","import { useStyles } from '@team-griffin/stylr';\nimport { imageAspectRatioPercentage } from 'presentation/utils/imageAspectRatioPercentage';\nimport { ImageAspectRatio } from 'domain/constants/imageAspectRatio';\n\nexport default ({\n hasIllustration,\n imageAspectRatio,\n}: {\n hasIllustration: boolean,\n imageAspectRatio: ImageAspectRatio,\n}) => useStyles({\n default: {\n outer: {\n position: 'relative',\n height: 0,\n paddingTop: imageAspectRatioPercentage(imageAspectRatio),\n overflow: 'hidden',\n },\n inner: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'var(--theme-palette-grey09)',\n },\n image: {\n // 16:9 area, full height, crop sides if needed\n position: 'relative',\n left: '50%',\n transform: 'translateX(-50%)',\n height: '100%',\n width: 'auto',\n },\n },\n\n // illustrations should stretch out to fit\n hasIllustration: {\n inner: {\n backgroundColor: 'transparent',\n },\n image: {\n left: 0,\n top: '50%',\n transform: 'translateY(-50%)',\n width: '100%',\n height: 'auto',\n },\n },\n}, [\n { hasIllustration },\n]);","import React from 'react';\nimport {\n connect,\n} from '@ux/fabric';\nimport { createStructuredSelector } from 'reselect';\nimport {\n getExternalRoutes,\n} from 'domain/selectors/common';\nimport CardImage from './CardImage';\nimport { getCurrentLanguage } from 'domain/selectors/ribbons';\nimport { ImageAspectRatio } from 'domain/constants/imageAspectRatio';\n\nexport interface OuterProps {\n imageUrl: string,\n illustration: string,\n imageAspectRatio?: ImageAspectRatio,\n ctaUrl?: string,\n}\n\nconst mapStateToProps = createStructuredSelector({\n externalRoutes: getExternalRoutes,\n currentLanguage: getCurrentLanguage,\n});\n\nconst mapDispatchToProps = {};\n\nconst ConnectedCardImage = (props: OuterProps) => {\n const {\n currentLanguage,\n externalRoutes,\n } = connect(mapStateToProps, mapDispatchToProps)();\n return (\n \n );\n};\n\nexport default ConnectedCardImage;","import React, { ReactNode } from 'react';\nimport { useBreakpoints } from '@ux/responsive';\nimport PaddingBox from '@ux/padding-box';\nimport Panel from '@ux/panel';\nimport { Colorway } from 'domain/constants/colorway';\nimport stylesheet from './Card.stylesheet';\nimport CallToAction from 'components/common/CallToAction';\nimport CardImage from './ConnectedCardImage';\nimport { CTA } from 'core/ribbons/cta';\nimport { useTheme } from '@ux/theme-utils';\nimport { ImageAspectRatio } from 'domain/constants/imageAspectRatio';\n\nconst getCtaAgainst = (colorway: Colorway) => {\n if (colorway === Colorway.LIGHT) {\n return Colorway.NEUTRAL;\n }\n return Colorway.LIGHT;\n};\n\ntype ImageType = {\n imageUrl: string,\n illustration: string,\n alt?: string,\n imageAspectRatio?: ImageAspectRatio,\n};\n\ninterface OuterProps {\n ctas: CTA[],\n last?: boolean,\n ribbonId: string,\n colorway: Colorway,\n image: ImageType,\n footer?: ReactNode,\n children: ReactNode,\n}\n\nconst hasImage = (image: ImageType) => Boolean(image?.imageUrl || image?.illustration);\n\nconst getCtaUrl = (ctas: CTA[]) => {\n const cta = ctas?.[0];\n const isNavigation = cta?.behavior?.type === 'navigation';\n if (isNavigation) {\n //@ts-ignore\n //It can't find goto on other cta types, but we clearly check\n //only for navigation ctas\n return cta?.behavior?.goto;\n }\n return null;\n};\n\nconst hasCtas = (ctas: CTA[]) => Array.isArray(ctas) && ctas.length > 0;\n\nconst hasPanelBorder = (colorway: Colorway) => {\n return [\n Colorway.PRIMARY,\n Colorway.PRIMARY_GRADIENT,\n Colorway.DARK,\n Colorway.HIGHLIGHT,\n ].includes(colorway);\n};\n\nconst PureCard = ({\n image,\n children,\n footer,\n ctas,\n ribbonId,\n colorway,\n last,\n}: OuterProps) => {\n const { isMinSm } = useBreakpoints();\n const { theme } = useTheme();\n const { styles } = stylesheet({\n theme,\n colorway,\n last,\n isMinSm,\n ctas,\n });\n const ctaUrl = getCtaUrl(ctas);\n\n return (\n \n {hasImage(image) && (\n \n )}\n \n
\n {children}\n
\n \n \n \n );\n};\n\nPureCard.displayName = 'Card';\n\n// eslint-disable-next-line no-underscore-dangle\nexport const __test__ = {\n getCtaUrl,\n hasImage,\n};\n\nexport default PureCard;\n","\nimport {\n Colorway,\n gu2px, Theme,\n} from '@ux/theme-utils';\nimport {\n getBackgroundAccent,\n} from 'presentation/utils/colorway';\nimport { useStyles } from '@team-griffin/stylr';\nimport { CTA } from 'core/ribbons/cta';\n\nexport default ({\n theme,\n colorway,\n last,\n isMinSm,\n ctas,\n}: {\n theme: Theme,\n colorway: Colorway,\n last: boolean,\n isMinSm: boolean,\n ctas: CTA[],\n}) => {\n const {\n spacing,\n } = theme;\n\n const hasMultipleCtas = (ctas ?? []).length > 1;\n\n return useStyles({\n default: {\n root: {\n overflow: 'hidden',\n backgroundColor: getBackgroundAccent(theme, colorway),\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n },\n content: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n },\n\n body: {\n flexGrow: 1,\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n },\n\n ctas: {\n overflow: 'hidden',\n marginTop: gu2px(2, spacing),\n },\n cta: {\n marginTop: gu2px(1, spacing),\n },\n },\n last: {\n root: {\n marginBottom: 0,\n },\n },\n spaceCtas: {\n cta: {\n marginRight: gu2px(1, spacing),\n },\n },\n }, [\n { spaceCtas: isMinSm && hasMultipleCtas },\n { last },\n ]);\n};\n","import Card from './Card';\n\nexport default Card;"],"sourceRoot":""}