{"version":3,"sources":["webpack:///./src/Frontend/app/components/image-text-cta/image-text-cta.tsx","webpack:///./src/Frontend/app/views/image-text-cta/image-text-cta-view.tsx","webpack:///./node_modules/classnames/index.js","webpack:///./src/Frontend/app/components/icons/icon.tsx","webpack:///./src/Frontend/app/components/anchor/anchor.tsx","webpack:///./src/Frontend/app/components/content-section/content-section.tsx","webpack:///./src/Frontend/app/components/cta-button/cta-button.tsx","webpack:///./src/Frontend/app/components/arrow-link/arrow-link.tsx","webpack:///./src/Frontend/app/utils/image-utils.ts","webpack:///./src/Frontend/app/components/responsive-image/responsive-image.tsx","webpack:///./src/Frontend/app/components/title/title.tsx"],"names":["imageSrc","imageAltText","trumpet","title","isTitleH1","richText","ctaLink","ctaUrl","ctaTarget","useCtaAsImageLink","showCtaAsLink","dateDay","dateMonth","flipContent","verticalAlignContent","enableThemeBackground","fadeOverflowingRichText","styleWithProductTheme","className","props","baseClass","componentClasses","componentInnerClasses","trumpetCircleClasses","trumpetTextClasses","richTextClasses","Image","srcUrl","defaultSize","srcSetSizes","sizes","alt","type","href","target","linkHref","linkTarget","dangerouslySetInnerHTML","__html","link","isLarge","render","this","contextModel","hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","key","call","join","module","exports","default","spriteUrl","viewBox","iconId","preserveAspectRatio","onClick","xmlnsXlink","xlinkHref","id","anchorId","hasNoMarginTop","hasNoMarginBottom","children","isInverted","isSecondary","getQueryParamDelimiter","url","indexOf","hasExistingQueryParam","generateSrcSet","map","srcSetSize","parameterDelimiter","srcSetSizeHighDensity","Math","round","generateColumnImageProps","maxColumns","isFullWidth","gridMaxWidthFactor","ResponsiveImage","ref","src","srcSet","loading","titleHtml"],"mappings":"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","file":"22.89571103a01feeafa62e.js","sourcesContent":["import * as React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport CtaButton from \"../cta-button/cta-button\";\r\nimport Title from \"~/components/title/title\";\r\nimport ResponsiveImage from \"../responsive-image/responsive-image\";\r\nimport ArrowLink from \"../arrow-link/arrow-link\";\r\nimport { VerticalAlignmentType } from \"~/types/alignment\";\r\nimport ContentSection from \"../content-section/content-section\";\r\n\r\nexport interface ImageTextCtaReusableProps {\r\n imageSrc?: string;\r\n imageAltText?: string;\r\n title?: string;\r\n richText?: string;\r\n ctaLink?: string;\r\n ctaUrl?: string;\r\n ctaTarget?: string;\r\n showCtaAsLink?: boolean;\r\n useCtaAsImageLink?: boolean;\r\n}\r\n\r\nexport interface ImageTextCtaProps extends ImageTextCtaReusableProps {\r\n isTitleH1?: boolean;\r\n trumpet?: string;\r\n dateDay?: string;\r\n dateMonth?: string;\r\n flipContent?: boolean;\r\n verticalAlignContent?: VerticalAlignmentType;\r\n enableThemeBackground?: boolean;\r\n fadeOverflowingRichText?: boolean;\r\n styleWithProductTheme?: boolean;\r\n anchorId?: string;\r\n className?: string;\r\n}\r\n\r\nconst ImageTextCta = ({\r\n imageSrc,\r\n imageAltText,\r\n trumpet,\r\n title,\r\n isTitleH1,\r\n richText,\r\n ctaLink,\r\n ctaUrl,\r\n ctaTarget,\r\n useCtaAsImageLink,\r\n showCtaAsLink,\r\n dateDay,\r\n dateMonth,\r\n flipContent,\r\n verticalAlignContent,\r\n enableThemeBackground,\r\n fadeOverflowingRichText,\r\n styleWithProductTheme,\r\n className,\r\n ...props\r\n}: ImageTextCtaProps) => {\r\n const baseClass = \"image-text-cta\";\r\n const componentClasses = classNames(baseClass, className, {\r\n [`${baseClass}--site-theming`]: !styleWithProductTheme,\r\n [`${baseClass}--no-image`]: !imageSrc,\r\n [`${baseClass}--flip-content`]: flipContent,\r\n [`${baseClass}--theme-background`]: enableThemeBackground\r\n });\r\n const componentInnerClasses = classNames(`${baseClass}__inner`, {\r\n [`vertical-align-${verticalAlignContent}`]: verticalAlignContent\r\n });\r\n const trumpetCircleClasses = classNames(`${baseClass}__trumpet-circle`, {\r\n \"theme-bg-light\": styleWithProductTheme\r\n });\r\n const trumpetTextClasses = classNames(`${baseClass}__trumpet-text`, {\r\n \"theme-color-dark\": styleWithProductTheme\r\n });\r\n const richTextClasses = classNames(`${baseClass}__rich-text content-rich-text`, {\r\n [`${baseClass}__rich-text--fade-overflow`]: fadeOverflowingRichText\r\n });\r\n const Image = () =>\r\n imageSrc ? (\r\n <ResponsiveImage\r\n srcUrl={imageSrc}\r\n defaultSize={345}\r\n srcSetSizes={[264, 345, 438]}\r\n sizes=\"(max-width: 480px) 55vw, (max-width: 768px) 45vw, (max-width: 1366px) 32vw, 415px\"\r\n alt={imageAltText}\r\n />\r\n ) : null;\r\n\r\n return (\r\n <ContentSection\r\n className={componentClasses}\r\n type={enableThemeBackground ? \"full\" : \"default\"}\r\n {...props}\r\n >\r\n <div className={componentInnerClasses}>\r\n {imageSrc && (\r\n <div className={`${baseClass}__image-wrapper`}>\r\n {ctaUrl ? (\r\n <a href={ctaUrl} target={ctaTarget}>\r\n <Image />\r\n </a>\r\n ) : (\r\n <Image />\r\n )}\r\n </div>\r\n )}\r\n <div className={`${baseClass}__content-wrapper`}>\r\n {trumpet && (\r\n <div className={`${baseClass}__trumpet`}>\r\n <span className={trumpetCircleClasses} />\r\n <p className={trumpetTextClasses}>{trumpet}</p>\r\n\r\n {dateDay && dateMonth && (\r\n <div className={`${baseClass}__date`}>\r\n <div className={`${baseClass}__date-month`}>{dateMonth}</div>\r\n <div className={`${baseClass}__date-day`}>{dateDay}.</div>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n\r\n {title && (\r\n <Title title={title} isTitleH1={isTitleH1} linkHref={ctaUrl} linkTarget={ctaTarget} />\r\n )}\r\n\r\n {richText && (\r\n <div className={richTextClasses} dangerouslySetInnerHTML={{ __html: richText }} />\r\n )}\r\n\r\n {ctaLink && !useCtaAsImageLink && (\r\n <>\r\n {showCtaAsLink ? (\r\n <ArrowLink className={`${baseClass}__link`} link={ctaLink} />\r\n ) : (\r\n <CtaButton className={`${baseClass}__btn`} link={ctaLink} isLarge />\r\n )}\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n </ContentSection>\r\n );\r\n};\r\n\r\nexport default ImageTextCta;\r\n","import * as React from \"react\";\r\nimport ImageTextCta, { ImageTextCtaProps } from \"~/components/image-text-cta/image-text-cta\";\r\n\r\nexport interface IImageTextCtaViewProps {\r\n contextModel: ImageTextCtaProps;\r\n}\r\n\r\nclass ImageTextCtaView extends React.PureComponent<IImageTextCtaViewProps> {\r\n public render() {\r\n return <ImageTextCta {...this.props.contextModel} />;\r\n }\r\n}\r\n\r\nexport default ImageTextCtaView;\r\n","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://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) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import * as React from \"react\";\r\nimport classNames from \"classnames\";\r\n\r\nexport type TIconNames =\r\n | \"24_expand\"\r\n | \"24_play\"\r\n | \"24_star\"\r\n | \"24_trash\"\r\n | \"32_add-user\"\r\n | \"32_basket\"\r\n | \"32_checkmark-circle\"\r\n | \"32_checkmark\"\r\n | \"32_error\"\r\n | \"32_information\"\r\n | \"32_katalog\"\r\n | \"32_search\"\r\n | \"32_truck-in-motion\"\r\n | \"32_user\"\r\n | \"32_warning\"\r\n | \"icon_16_arrow-down\"\r\n | \"icon_16_arrow-left\"\r\n | \"icon_16_arrow-right-bold\"\r\n | \"icon_16_arrow-right\"\r\n | \"icon_16_arrow-up\"\r\n | \"icon_28_close\"\r\n | \"icon_32_thumbs-up\"\r\n | \"icon_80x41_quotation-mark-gyldendal-dk\"\r\n | \"icon_80x48_quotation-mark\"\r\n | \"icon_checkbox-black\"\r\n | \"icon_checkmark-black\"\r\n | \"icon_download\"\r\n | \"icon_herringbone-narrow\"\r\n | \"icon_herringbone-wide\"\r\n | \"icon_placeholder-email\"\r\n | \"icon_placeholder-lock\"\r\n | \"icon_placeholder-phone-small\"\r\n | \"icon_placeholder-vip-white\"\r\n | \"icon_placeholder_basket\"\r\n | \"icon_placeholder_checkmark\"\r\n | \"icon_placeholder_eye-closed\"\r\n | \"icon_placeholder_eye\"\r\n | \"icon_placeholder_facebook\"\r\n | \"icon_placeholder_filtering\"\r\n | \"icon_placeholder_hamburger\"\r\n | \"icon_placeholder_instagram\"\r\n | \"icon_placeholder_phone\"\r\n | \"icon_placeholder_user\"\r\n | \"icon_read\"\r\n | \"icon_listen\";\r\n\r\nexport interface IIconProps {\r\n iconId: TIconNames;\r\n spriteUrl?: string;\r\n viewBox?: string;\r\n className?: string;\r\n onClick?: () => void;\r\n}\r\n\r\nconst Icon: React.FC<IIconProps> = props => {\r\n const spriteUrl = props.spriteUrl || \"\";\r\n const viewBox = props.viewBox || \"0 0 32 32\";\r\n\r\n return (\r\n <svg\r\n viewBox={viewBox}\r\n className={classNames(props.className, \"icon\", `icon-${props.iconId}`)}\r\n preserveAspectRatio=\"xMidYMid\"\r\n onClick={() => props.onClick && props.onClick()}\r\n >\r\n <use xmlnsXlink=\"http://www.w3.org/1999/xlink\" xlinkHref={`${spriteUrl}#${props.iconId}`} />\r\n </svg>\r\n );\r\n};\r\n\r\nexport default Icon;\r\n","import * as React from \"react\";\r\n\r\nexport interface AnchorProps {\r\n id?: string;\r\n}\r\n\r\nconst Anchor = ({ id }: AnchorProps) => {\r\n return <div className=\"anchor\" id={id} />;\r\n};\r\n\r\nexport default Anchor;\r\n","import classNames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport Anchor from \"../anchor/anchor\";\r\n\r\nexport interface ContentSectionProps {\r\n className?: string;\r\n type?: \"default\" | \"full\";\r\n anchorId?: string;\r\n hasNoMarginTop?: boolean;\r\n hasNoMarginBottom?: boolean;\r\n}\r\n\r\nconst ContentSection: React.FC<ContentSectionProps> = ({\r\n className,\r\n type = \"default\",\r\n anchorId,\r\n hasNoMarginTop,\r\n hasNoMarginBottom,\r\n ...props\r\n}) => {\r\n const baseClass = \"content-section\";\r\n const componentClasses = classNames(baseClass, className, {\r\n [`${baseClass}--full`]: type === \"full\",\r\n \"anchor-wrapper\": !!anchorId,\r\n \"content-no-margin-top\": hasNoMarginTop,\r\n \"content-no-margin-bottom\": hasNoMarginBottom\r\n });\r\n return (\r\n <section className={componentClasses}>\r\n {anchorId && <Anchor id={anchorId} />}\r\n {props.children}\r\n </section>\r\n );\r\n};\r\n\r\nexport default ContentSection;\r\n","import * as React from \"react\";\r\nimport classNames from \"classnames\";\r\n\r\nexport interface ICtaButtonProps {\r\n className?: string;\r\n isLarge?: boolean;\r\n isInverted?: boolean;\r\n isSecondary?: boolean;\r\n link: string;\r\n onClick?(): void;\r\n}\r\n\r\nconst CtaButton = ({ className, isLarge, isInverted, isSecondary, link, onClick }: ICtaButtonProps) => {\r\n const baseClass = \"cta-button\";\r\n const componentClasses = classNames(className, baseClass, {\r\n [`${baseClass}--large`]: isLarge,\r\n [`${baseClass}--inverted`]: isInverted,\r\n [`${baseClass}--secondary`]: isSecondary\r\n });\r\n\r\n return <div onClick={onClick} className={componentClasses} dangerouslySetInnerHTML={{ __html: link }} />;\r\n};\r\n\r\nexport default CtaButton;\r\n","import * as React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport Icon from \"../icons/icon\";\r\n\r\nexport interface IArrowLinkProps {\r\n className?: string;\r\n link: string;\r\n}\r\n\r\nconst ArrowLink = ({ className, link }: IArrowLinkProps) => {\r\n const baseClass = \"arrow-link\";\r\n const componentClasses = classNames(baseClass, className);\r\n\r\n return (\r\n <div className={componentClasses}>\r\n <Icon iconId=\"icon_16_arrow-right-bold\" />\r\n <span dangerouslySetInnerHTML={{ __html: link }} />\r\n </div>\r\n );\r\n};\r\n\r\nexport default ArrowLink;\r\n","const hasExistingQueryParam = (url: string) => url.indexOf(\"?\") !== -1;\r\n\r\nexport const getQueryParamDelimiter = (url: string) => (hasExistingQueryParam(url) ? \"&\" : \"?\");\r\n\r\nexport const generateSrcSet = (srcSetSizes: number[], srcUrl: string) => {\r\n const generateSrcSetString = (srcSetSize: number) => {\r\n const parameterDelimiter = getQueryParamDelimiter(srcUrl);\r\n const srcSetSizeHighDensity = Math.round(srcSetSize * 1.5);\r\n\r\n return `\r\n ${srcUrl}${parameterDelimiter}w=${srcSetSize} ${srcSetSize}w,\r\n ${srcUrl}${parameterDelimiter}w=${srcSetSizeHighDensity} ${srcSetSizeHighDensity}w\r\n `;\r\n };\r\n\r\n return srcSetSizes.map(generateSrcSetString).join(\", \");\r\n};\r\n\r\nexport const generateColumnImageProps = (maxColumns: number, isFullWidth?: boolean) => {\r\n // The sizes are column-widths and are not considering padding\r\n const gridMaxWidthFactor = isFullWidth ? 1 : 0.75;\r\n const gridMaxWidth = 1366 * gridMaxWidthFactor;\r\n const defaultSize = gridMaxWidth / maxColumns;\r\n let sizes;\r\n\r\n switch (maxColumns) {\r\n case 5:\r\n sizes = `(max-width: 479px) 100vw, \r\n (max-width: 639px) 75vw,\r\n (max-width: 767px) 50vw,\r\n (max-width: 1023px) ${100 / 3}vw,\r\n (max-width: 1099px) ${(100 / 3) * gridMaxWidthFactor}vw,\r\n (max-width: 1279px) ${(100 / 4) * gridMaxWidthFactor}vw,\r\n ${defaultSize}px`;\r\n case 4:\r\n sizes = `(max-width: 479px) 100vw, \r\n (max-width: 639px) 75vw,\r\n (max-width: 767px) 50vw,\r\n (max-width: 1023px) ${100 / 3}vw,\r\n (max-width: 1099px) ${(100 / 3) * gridMaxWidthFactor}vw,\r\n (max-width: 1279px) ${(100 / 4) * gridMaxWidthFactor}vw,\r\n ${defaultSize}px`;\r\n case 3:\r\n sizes = `(max-width: 479px) 100vw,\r\n (max-width: 639px) 75vw,\r\n (max-width: 767px) 50vw,\r\n (max-width: 1023px) ${100 / 3}vw,\r\n (max-width: 1279px) ${(100 / 3) * gridMaxWidthFactor}vw,\r\n ${defaultSize}px`;\r\n case 2:\r\n sizes = `(max-width: 479px) 100vw,\r\n (max-width: 639px) 75vw,\r\n (max-width: 1023px) ${100 / 2}vw,\r\n (max-width: 1279px) ${(100 / 2) * gridMaxWidthFactor}vw, \r\n ${defaultSize}px`;\r\n case 1:\r\n sizes = `(max-width: 479px) 100vw,\r\n (max-width: 1023px) ${100 * 0.75}vw,\r\n (max-width: 1279px) ${100 * 0.75 * gridMaxWidthFactor}vw,\r\n ${defaultSize * 0.75}px`;\r\n }\r\n\r\n return {\r\n // The sizes are column-widths and are not considering padding\r\n defaultSize: defaultSize,\r\n srcSetSizes: [205, 257, 274, 342, 456, 513, 683, 769, 1025],\r\n sizes: sizes\r\n };\r\n};\r\n","import * as React from \"react\";\r\nimport { generateSrcSet, getQueryParamDelimiter } from \"~/utils/image-utils\";\r\n\r\nexport interface IResponsiveImageProps extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, \"src\"> {\r\n className?: string;\r\n srcUrl: string;\r\n defaultSize: number;\r\n srcSetSizes?: number[];\r\n sizes?: string;\r\n ref?: React.Ref<HTMLImageElement>;\r\n}\r\n\r\nconst ResponsiveImage: React.FC<IResponsiveImageProps> = React.forwardRef(\r\n ({ srcUrl, defaultSize, srcSetSizes, ...props }, ref: React.Ref<HTMLImageElement>) => {\r\n const src = `${srcUrl}${getQueryParamDelimiter(srcUrl)}w=${defaultSize}`;\r\n const srcSet = srcSetSizes ? generateSrcSet(srcSetSizes, srcUrl) : \"\";\r\n\r\n return <img ref={ref} src={src} srcSet={srcSet} {...props} loading=\"lazy\" />;\r\n }\r\n);\r\n\r\nexport default ResponsiveImage;\r\n","import * as React from \"react\";\r\nimport classNames from \"classnames\";\r\n\r\nexport interface ITitleProps {\r\n title: string;\r\n isTitleH1?: boolean;\r\n linkHref?: string;\r\n linkTarget?: string;\r\n className?: string;\r\n}\r\n\r\nconst Title = ({ title, isTitleH1, className, linkHref, linkTarget }: ITitleProps) => {\r\n const baseClass = \"title\";\r\n const componentClasses = classNames(baseClass, className, \"h2-style\");\r\n const titleHtml = linkHref ? (\r\n <a className=\"reset-a\" href={linkHref} target={linkTarget}>\r\n {title}\r\n </a>\r\n ) : (\r\n title\r\n );\r\n\r\n return isTitleH1 ? (\r\n <h1 className={componentClasses}>{titleHtml}</h1>\r\n ) : (\r\n <h2 className={componentClasses}>{titleHtml}</h2>\r\n );\r\n};\r\n\r\nexport default Title;\r\n"],"sourceRoot":""}