{"version":3,"file":"8153.39e308359c2e25ddecf8.js","mappings":"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","sources":["webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/Shared/ResponsiveImage/responsive-image.tsx","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactComponents/TwoColumnGrid/two-column-grid.tsx","webpack://gyldendal-uddannelse/./src/Foundation/Frontend/ReactViews/TwoColumnGrid/two-column-grid-view.js"],"sourcesContent":["import React from \"react\";\r\n\r\nconst hasExistingQueryParam = (url: string) => url.indexOf(\"?\") > -1;\r\n\r\nconst getQueryParamDelimiter = (url: string) => (hasExistingQueryParam(url) ? \"&\" : \"?\");\r\n\r\nconst 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\ninterface ResponsiveImageProps\r\n extends React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement> {\r\n srcUrl: string;\r\n defaultSize: number;\r\n srcSetSizes: number[];\r\n role?: string;\r\n}\r\n\r\nconst ResponsiveImage = (props: ResponsiveImageProps) => {\r\n const { srcUrl, defaultSize, srcSetSizes, role, ...rest } = props;\r\n const src = `${srcUrl}${getQueryParamDelimiter(srcUrl)}w=${defaultSize}`;\r\n const srcSet = srcSetSizes ? generateSrcSet(srcSetSizes, srcUrl) : \"\";\r\n\r\n return <img src={src} srcSet={srcSet} loading=\"lazy\" alt={props.alt} role={role} {...rest} />;\r\n};\r\n\r\nexport default ResponsiveImage;\r\n","import classNames from \"classnames\";\r\nimport React from \"react\";\r\nimport { ObjectWithChildren } from \"types/component\";\r\nimport ResponsiveImage from \"../Shared/ResponsiveImage/responsive-image\";\r\nimport DynamicContactForm from \"ReactComponents/DynamicContactForm/dynamic-contact-form\";\r\n\r\nexport interface ITwoColumnGridProps {\r\n Columns: Array<ImageColumnProps | TextColumnProps | FormColumnProps>;\r\n}\r\n\r\nexport type ImageColumnProps = {\r\n Type: \"ImageColumn\";\r\n Headline?: string;\r\n TeaserText?: string;\r\n ImageSrc: string;\r\n ImageLinkUrl?: string;\r\n ImageLinkTarget?: string;\r\n VideoUrl?: string;\r\n BackgroundColor: string;\r\n PrimaryCta?: string;\r\n SecondaryCta?: string;\r\n TextColor?: string;\r\n ShowSecondaryCtaAsPrimary?: boolean;\r\n SecondaryCtaTextBorderColor?: string;\r\n};\r\n\r\nexport type TextColumnProps = {\r\n Type: \"TextColumn\";\r\n Headline: string;\r\n TeaserText?: string;\r\n RichText?: string;\r\n PrimaryCta?: string;\r\n SecondaryCta?: string;\r\n BackgroundColor: string;\r\n TextColor?: string;\r\n ShowSecondaryCtaAsPrimary?: boolean;\r\n SecondaryCtaTextBorderColor?: string;\r\n};\r\n\r\ntype DynamicFieldType = \"Text Area\" | \"Text Field\" | \"Product Selector\" | \"input\";\r\n\r\nexport type DynamicField = {\r\n Type: DynamicFieldType;\r\n Name: string;\r\n Label: string;\r\n IsRequired: boolean;\r\n Value: string;\r\n};\r\n\r\nexport type ProductSelectorDynamicField = DynamicField & {\r\n Sections?: {\r\n SectionName: string;\r\n Products?: {\r\n ISBN: string;\r\n Title: string;\r\n }[];\r\n }[];\r\n};\r\n\r\nexport type DynamicFieldsList = (DynamicField | ProductSelectorDynamicField)[];\r\n\r\nexport type FormColumnProps = {\r\n Type: \"FormColumn\";\r\n DynamicFieldsList: DynamicFieldsList;\r\n BtnLabel: string;\r\n FormHeading: string;\r\n FormTitle: string;\r\n ImageSrc?: string;\r\n ImageAlt?: string;\r\n ImagePosition: \"Top\" | \"Bottom\";\r\n CaptchaSiteKey: string;\r\n SubmitSuccessText: string;\r\n Id: string;\r\n WebApiUrl: string;\r\n WebApiRequestMethod: string;\r\n BackgroundColor: string;\r\n TextColor?: string;\r\n Collapsible?: boolean;\r\n};\r\n\r\nfunction getEmbeddedUrl(refUrl: string) {\r\n if (!refUrl || refUrl.length <= 0) {\r\n return \"\";\r\n }\r\n\r\n if (!refUrl.includes(\"secret\")) return refUrl;\r\n\r\n const regex = /(.*?)\\/secret\\/([0-9]+)\\/(.*$)/gm;\r\n const match = regex.exec(refUrl);\r\n\r\n if (!match) return refUrl;\r\n\r\n const baseUrl = match[1],\r\n photoId = match[2],\r\n videoId = match[3];\r\n\r\n return `${baseUrl}/v.ihtml/player.html?token=${videoId}&photo_id=${photoId}`;\r\n}\r\n\r\nfunction formattedHeadline(headline: string) {\r\n return headline.replace(/--/g, \"­\");\r\n}\r\n\r\nfunction ImageColumn(props: ImageColumnProps) {\r\n const baseClass = \"two-column-grid-column\";\r\n const isCoverImage =\r\n props.ImageSrc &&\r\n !props.Headline &&\r\n !props.TeaserText &&\r\n !props.VideoUrl &&\r\n !props.PrimaryCta &&\r\n !props.SecondaryCta;\r\n\r\n const classes = classNames(baseClass, `${baseClass}--image`, {\r\n [`${baseClass}--coverImage`]: isCoverImage,\r\n [`${props.BackgroundColor}--bg`]: props.BackgroundColor\r\n });\r\n\r\n const ImageWrapper = ({ children }: ObjectWithChildren) =>\r\n props.ImageLinkUrl ? (\r\n <a href={props.ImageLinkUrl} target={props.ImageLinkTarget}>\r\n {children}\r\n </a>\r\n ) : (\r\n <>{children}</>\r\n );\r\n\r\n return (\r\n <div className={classes}>\r\n {props.Headline && (\r\n <h2\r\n className={classNames(\r\n `${baseClass}__title`,\r\n props.TextColor ? `${props.TextColor}--text` : \"color-black--text\"\r\n )}\r\n dangerouslySetInnerHTML={{ __html: formattedHeadline(props.Headline) }}\r\n ></h2>\r\n )}\r\n {props.TeaserText && (\r\n <p\r\n className={classNames(\r\n `${baseClass}__teaser`,\r\n props.TextColor ? `${props.TextColor}--text` : \"color-black--text\"\r\n )}\r\n >\r\n {props.TeaserText}\r\n </p>\r\n )}\r\n {!props.VideoUrl && props.ImageSrc && (\r\n <ImageWrapper>\r\n <ResponsiveImage\r\n srcUrl={props.ImageSrc}\r\n srcSetSizes={[375, 450, 500, 650, 800, 1000]}\r\n defaultSize={400}\r\n role=\"presentation\"\r\n sizes=\"(min-width: 1760px) 687px, (min-width: 1240px) calc((100vw - 300px) / 2), (min-width: 640px) 50vw, 100vw\"\r\n />\r\n </ImageWrapper>\r\n )}\r\n {props.VideoUrl && (\r\n <div className={`${baseClass}__video`}>\r\n <div>\r\n <iframe\r\n title={props.Headline}\r\n src={getEmbeddedUrl(props.VideoUrl)}\r\n allow=\"fullscreen\"\r\n ></iframe>\r\n </div>\r\n </div>\r\n )}\r\n <div className={`${baseClass}__cta`}>\r\n {props.SecondaryCta && (\r\n <div\r\n className={classNames(\r\n `${baseClass}--${props.ShowSecondaryCtaAsPrimary ? \"primary\" : \"secondary\"}`,\r\n !props.ShowSecondaryCtaAsPrimary\r\n ? `${props.SecondaryCtaTextBorderColor}--text`\r\n : undefined\r\n )}\r\n dangerouslySetInnerHTML={{ __html: props.SecondaryCta }}\r\n ></div>\r\n )}\r\n {props.PrimaryCta && (\r\n <div\r\n className={`${baseClass}--primary`}\r\n dangerouslySetInnerHTML={{ __html: props.PrimaryCta }}\r\n ></div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nfunction TextColumn(props: TextColumnProps) {\r\n const baseClass = \"two-column-grid-column\";\r\n const classes = classNames(baseClass, `${baseClass}--text`, {\r\n [`${props.BackgroundColor}--bg`]: props.BackgroundColor\r\n });\r\n\r\n return (\r\n <div className={classes}>\r\n {props.Headline && (\r\n <h2\r\n className={classNames(\r\n `${baseClass}__title`,\r\n props.TextColor ? `${props.TextColor}--text` : \"color-black--text\"\r\n )}\r\n dangerouslySetInnerHTML={{ __html: formattedHeadline(props.Headline) }}\r\n ></h2>\r\n )}\r\n {props.TeaserText && (\r\n <p\r\n className={classNames(\r\n `${baseClass}__teaser `,\r\n props.TextColor ? `${props.TextColor}--text` : \"color-black--text\"\r\n )}\r\n >\r\n {props.TeaserText}\r\n </p>\r\n )}\r\n {props.RichText && (\r\n <div\r\n className={classNames(\r\n \"content-rich-text\",\r\n `${baseClass}__richText`,\r\n props.TextColor ? `${props.TextColor}--text` : \"color-black--text\"\r\n )}\r\n dangerouslySetInnerHTML={{ __html: props.RichText }}\r\n ></div>\r\n )}\r\n\r\n <div className={`${baseClass}__cta`}>\r\n {props.SecondaryCta && (\r\n <div\r\n className={classNames(\r\n `${baseClass}--${props.ShowSecondaryCtaAsPrimary ? \"primary\" : \"secondary\"}`,\r\n !props.ShowSecondaryCtaAsPrimary\r\n ? `${props.SecondaryCtaTextBorderColor}--text`\r\n : undefined\r\n )}\r\n dangerouslySetInnerHTML={{ __html: props.SecondaryCta }}\r\n ></div>\r\n )}\r\n {props.PrimaryCta && (\r\n <div\r\n className={`${baseClass}--primary`}\r\n dangerouslySetInnerHTML={{ __html: props.PrimaryCta }}\r\n ></div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nfunction FormColumn(props: FormColumnProps) {\r\n const baseClass = \"two-column-grid-column\";\r\n const { BackgroundColor, ...formProps } = props;\r\n const classes = classNames(baseClass, `${baseClass}--text`, {\r\n [`${BackgroundColor}--bg`]: BackgroundColor\r\n });\r\n\r\n const imageComponent = formProps.ImageSrc && (\r\n <ResponsiveImage\r\n srcUrl={formProps.ImageSrc}\r\n srcSetSizes={[375, 450, 500, 650, 800, 1000]}\r\n defaultSize={400}\r\n alt={formProps.ImageAlt}\r\n style={{\r\n marginBottom: formProps.ImagePosition === \"Top\" ? \"30px\" : \"0\"\r\n }}\r\n sizes=\"(min-width: 1760px) 687px, (min-width: 1240px) calc((100vw - 300px) / 2), (min-width: 640px) 50vw, 100vw\"\r\n />\r\n );\r\n\r\n return (\r\n <div className={classes}>\r\n {formProps.ImageSrc && formProps.ImagePosition === \"Top\" && imageComponent}\r\n <DynamicContactForm {...formProps} noPadding />\r\n {formProps.ImageSrc && formProps.ImagePosition === \"Bottom\" && imageComponent}\r\n </div>\r\n );\r\n}\r\n\r\nfunction TwoColumnGrid(props: ITwoColumnGridProps) {\r\n const baseClass = \"two-column-grid\";\r\n const rootClasses = classNames(baseClass, \"content-module\");\r\n\r\n return (\r\n <div className={rootClasses}>\r\n {props.Columns.map((column, columnIndex) => {\r\n if (column.Type === \"ImageColumn\") {\r\n return <ImageColumn key={columnIndex} {...column} />;\r\n }\r\n if (column.Type === \"FormColumn\") {\r\n return <FormColumn key={columnIndex} {...column} />;\r\n }\r\n return <TextColumn key={columnIndex} {...column} />;\r\n })}\r\n </div>\r\n );\r\n}\r\n\r\nexport default TwoColumnGrid;\r\n","import React from \"react\";\r\nimport TwoColumnGrid from \"@/ReactComponents/TwoColumnGrid/two-column-grid\";\r\n\r\nconst TwoColumnGridView = props => <TwoColumnGrid {...props} />;\r\n\r\nexport default TwoColumnGridView;\r\n"],"names":["getQueryParamDelimiter","url","indexOf","hasExistingQueryParam","props","srcUrl","defaultSize","srcSetSizes","role","rest","src","srcSet","map","srcSetSize","parameterDelimiter","srcSetSizeHighDensity","Math","round","join","generateSrcSet","img","loading","alt","getEmbeddedUrl","refUrl","length","includes","match","exec","baseUrl","photoId","videoId","formattedHeadline","headline","replace","ImageColumn","baseClass","isCoverImage","ImageSrc","Headline","TeaserText","VideoUrl","PrimaryCta","SecondaryCta","classes","classNames","BackgroundColor","ImageWrapper","children","ImageLinkUrl","a","href","target","ImageLinkTarget","div","className","h2","TextColor","dangerouslySetInnerHTML","__html","p","ResponsiveImage","sizes","iframe","title","allow","ShowSecondaryCtaAsPrimary","undefined","SecondaryCtaTextBorderColor","TextColumn","RichText","FormColumn","formProps","imageComponent","ImageAlt","style","marginBottom","ImagePosition","DynamicContactForm","noPadding","rootClasses","Columns","column","columnIndex","Type","key","TwoColumnGrid"],"sourceRoot":""}