{"version":3,"file":"static/js/4054.e0027c52.chunk.js","mappings":"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","sources":["helpers/keys.js","shared/article-color-usp/article-color-usp-component.jsx","shared/news/news-content/news-content-image-block.jsx","shared/news/news-content/news-content-component.jsx","shared/news/news-content/news-content-module.jsx","shared/number-cards-container/number-cards-container-component.jsx"],"sourcesContent":["export const generateRandomString = () => {\n  const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\"\n  let randomString = \"\"\n\n  for (let i = 0; i < 5; i++) {\n    const randomIndex = Math.floor(Math.random() * characters.length)\n    randomString += characters[randomIndex]\n  }\n\n  return randomString\n}\n","import React, { Component } from \"react\"\n\nexport default class ArticleColorUsp extends Component {\n  render() {\n    const titleBoxStyle = { \"--title-box-color\": this.props.titleBoxColor, \"--title-box-text-color\": this.props.titleBoxTextColor }\n    const containerStyle = { \"--usp-box-color\": this.props.uspBoxColor, \"--usp-box-text-color\": this.props.uspBoxTextColor }\n    return (\n      <div className={this.props.modifier || \"\"}>\n        <div className=\"usp-container\" style={containerStyle}>\n          <div className=\"titlebox\" style={titleBoxStyle}>\n            {this.props.title}\n          </div>\n          <div className=\"textcontainer\">\n            <div className=\"textboxhead\" dangerouslySetInnerHTML={{ __html: this.props.headline }}></div>\n            {this.props.uspTexts && this.props.uspTexts.length > 0 ? (\n              <ul className=\"uspbox\">\n                {this.props.uspTexts.map((usp, index) => {\n                  return <li key={index}>{usp}</li>\n                })}\n              </ul>\n            ) : (\n              \"\"\n            )}\n          </div>\n        </div>\n      </div>\n    )\n  }\n}\n","import React from \"react\"\nimport ReactHtmlParser from \"react-html-parser\"\n\nexport default function NewsContentImageBlock(props) {\n  return (\n    <div className=\"news-content-image\">\n      <img src={props.newsArticleImage} alt={props.articleText}></img>\n      {ReactHtmlParser(props.imageCaption)}\n    </div>\n  )\n}\n","import React from \"react\"\nimport ReactHtmlParser from \"react-html-parser\"\nimport NewsContentImageBlock from \"./news-content-image-block\"\nimport ArticleColorUsp from \"../../article-color-usp/article-color-usp-component\"\nimport { NumberCard } from \"../../number-cards-container/number-cards-container-component\"\nimport * as SelectionFactoryHelper from \"../../helpers/SelectionFactoryHelper\"\nimport { generateRandomString } from \"../../../helpers/keys\"\n\nexport default function NewsContent(props) {\n  const blockContent = props.blockContent && props.blockContent[0]\n  const contentPosition = SelectionFactoryHelper.getFromSelectionFactory(props.contentPosition)\n  let componentToRender\n\n  if (blockContent) {\n    switch (blockContent.__type__) {\n      case \"NewsArticleImageBlock\":\n        componentToRender = (\n          <div className={`${contentPosition}-image-block`}>\n            <NewsContentImageBlock\n              altText={blockContent.altText}\n              imageCaption={blockContent.imageCaption}\n              newsArticleImage={blockContent.newsArticleImage}\n            />\n          </div>\n        )\n        break\n      case \"ArticleColorUspBlock\":\n        componentToRender = (\n          <div className={`${contentPosition}-color-usp-module`}>\n            <div className=\"article-color-usp-module\">\n              <ArticleColorUsp\n                headline={blockContent.headline}\n                title={blockContent.title}\n                titleBoxColor={blockContent.titleBoxColor}\n                titleBoxTextColor={blockContent.titleBoxTextColor}\n                uspBoxColor={blockContent.uspBoxColor}\n                uspBoxTextColor={blockContent.uspBoxTextColor}\n                uspTexts={blockContent.uspTexts}\n                modifier={\"w--wider\"}\n              />\n            </div>\n          </div>\n        )\n        break\n      case \"NumberCardBlock\":\n        componentToRender = (\n          <div className={`${contentPosition}-number-card`}>\n            <div className=\"number-cards-container\">\n              <NumberCard\n                key={generateRandomString()}\n                icon={blockContent.icon[0] || null}\n                number={blockContent.precisionNumber}\n                description={blockContent.description}\n                displayPercent={blockContent.displayPercent}\n                displayMillions={blockContent.displayMillions}\n                additionalPrefixes={blockContent.additionalPrefixes}\n                additionalSuffixes={blockContent.additionalSuffixes}\n                lang={document.body.dataset.language}\n              />\n            </div>\n          </div>\n        )\n        break\n      default:\n        componentToRender = null\n    }\n  }\n\n  return (\n    <>\n      <section data-epi-property-name=\"ArticleText\" className=\"news-content-section w--narrow rich-text\">\n        {componentToRender}\n        {ReactHtmlParser(props.articleText)}\n      </section>\n    </>\n  )\n}\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport NewsContent from \"./news-content-component\"\n\nexport default class NewsContentModule {\n  constructor(elem) {\n    const self = this\n    self.elem = elem\n    self.modelJson = elem.dataset.modelJson && JSON.parse(elem.dataset.modelJson)\n    this.init()\n    return self\n  }\n\n  init() {\n    const self = this\n    ReactDOM.unmountComponentAtNode(self.elem)\n    ReactDOM.render(<NewsContent {...self.modelJson} />, self.elem)\n  }\n}\n","import React from \"react\"\nimport Slider from \"react-slick\"\nimport Svg from \"../_svgs/svg\"\nimport CountUp from \"react-countup\"\nimport { getFromSelectionFactory } from \"../helpers/SelectionFactoryHelper\"\nimport VisibilitySensor from \"react-visibility-sensor\"\nimport { generateRandomString } from \"../../helpers/keys\"\nimport useWindowWidth from \"../../hooks/useWindowWidth\"\n\nexport default function NumberCardsContainer({ numberCards, lang }) {\n  const windowWidth = useWindowWidth()\n\n  var settings = {\n    dots: true,\n    arrows: false,\n    infinite: false,\n    slidesToShow: 2,\n    slidesToScroll: 1,\n    swipe: true,\n    variableWidth: false,\n    centerMode: false,\n    responsive: [\n      {\n        breakpoint: 640,\n        settings: {\n          slidesToShow: 1,\n          centerMode: true,\n          centerPadding: \"5%\",\n        },\n      },\n    ],\n  }\n\n  const htmlNumberCards =\n    numberCards.length > 0\n      ? numberCards.map((card) => {\n          return (\n            <NumberCard\n              key={generateRandomString()}\n              icon={card.icon[0] || null}\n              number={card.precisionNumber}\n              description={card.description}\n              displayPercent={card.displayPercent}\n              displayMillions={card.displayMillions}\n              additionalPrefixes={card.additionalPrefixes}\n              additionalSuffixes={card.additionalSuffixes}\n              lang={lang}\n            />\n          )\n        })\n      : null\n\n  return (\n    <section className=\"number-cards-container\">\n      <div className={`${!!htmlNumberCards && htmlNumberCards.length === 4 ? \"w--wider\" : \"w--normal\"}`}>\n        <div className=\"flex\">{windowWidth >= 1024 ? htmlNumberCards : <Slider {...settings}>{htmlNumberCards}</Slider>}</div>\n      </div>\n    </section>\n  )\n}\n\nexport function NumberCard({ icon, number, description, displayPercent, displayMillions, lang, additionalPrefixes, additionalSuffixes }) {\n  const svg = icon?.value || undefined\n  let hasDecimal = false\n\n  if (number) hasDecimal = number % 1 !== 0 ? true : false\n\n  let suffix = displayMillions ? \" mio\" : \"\"\n  suffix += displayPercent ? \"%\" : \"\"\n\n  const additionalSuffix = getFromSelectionFactory(additionalSuffixes, false)\n  const additionalPrefix = getFromSelectionFactory(additionalPrefixes, false)\n\n  let prefix = additionalPrefix\n  suffix = suffix || additionalSuffix\n\n  let decimal = lang === \"da\" ? \",\" : \".\"\n  let seperator = lang === \"da\" ? \".\" : \",\"\n  //' Years' is a constant value from epi.\n  //Reason for this implementation is so epi writers wouldnt have to annotate in both english & danish for culture specificity reasons.\n  suffix = suffix === \" Years\" && lang === \"da\" ? \" Ã…r\" : suffix\n\n  return (\n    <div data-epi-property=\"\" className=\"card-container\">\n      <article className=\"number-card\">\n        {svg ? <Svg iconName={svg} fillColor={\"transparent\"} stroke={\"#000\"} key={svg}></Svg> : \"\"}\n        <VisibilitySensor partialVisibility offset={{ bottom: 50 }}>\n          {({ isVisible }) => (\n            <div data-epi-property=\"Number\" aria-hidden=\"true\" className=\"counter\">\n              {/* https://github.com/glennreyes/react-countup/blob/master/LICENSE */}\n              {isVisible ? (\n                <CountUp\n                  start={0}\n                  end={number}\n                  duration={3}\n                  prefix={prefix}\n                  suffix={suffix}\n                  decimal={decimal}\n                  decimals={hasDecimal ? 1 : 0}\n                  separator={seperator}\n                />\n              ) : null}\n            </div>\n          )}\n        </VisibilitySensor>\n        <p data-epi-property=\"Description\" className=\"infotext\">\n          {description}\n        </p>\n      </article>\n    </div>\n  )\n}\n"],"names":["generateRandomString","characters","randomString","i","Math","floor","random","ArticleColorUsp","_Component","_classCallCheck","_callSuper","arguments","_inherits","_createClass","key","value","titleBoxStyle","this","props","titleBoxColor","titleBoxTextColor","containerStyle","uspBoxColor","uspBoxTextColor","_jsx","className","modifier","children","_jsxs","style","title","dangerouslySetInnerHTML","__html","headline","uspTexts","length","map","usp","index","Component","NewsContentImageBlock","src","newsArticleImage","alt","articleText","ReactHtmlParser","imageCaption","NewsContent","componentToRender","blockContent","contentPosition","SelectionFactoryHelper","__type__","concat","altText","NumberCard","icon","number","precisionNumber","description","displayPercent","displayMillions","additionalPrefixes","additionalSuffixes","lang","document","body","dataset","language","_Fragment","NewsContentModule","elem","self","modelJson","JSON","parse","init","ReactDOM","_objectSpread","NumberCardsContainer","_ref","numberCards","windowWidth","useWindowWidth","htmlNumberCards","card","Slider","dots","arrows","infinite","slidesToShow","slidesToScroll","swipe","variableWidth","centerMode","responsive","breakpoint","settings","centerPadding","_ref2","svg","undefined","hasDecimal","suffix","additionalSuffix","getFromSelectionFactory","prefix","decimal","seperator","Svg","iconName","fillColor","stroke","VisibilitySensor","partialVisibility","offset","bottom","_ref3","isVisible","CountUp","start","end","duration","decimals","separator"],"sourceRoot":""}