{"version":3,"file":"static/js/21.59f41853.chunk.js","mappings":"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","sources":["helpers/keys.js","shared/article-color-usp/article-color-usp-component.jsx","shared/text-and-tabs/text-and-tabs-container-component.jsx","shared/timeline-container/timeline-container-component.jsx","shared/value-cards-container/value-cards-container-component.jsx","shared/_svgs/small/Play.js","shared/youtube-embed/YouTubeEmbed.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, { useState, useEffect } from \"react\"\nimport ReactHtmlParser from \"react-html-parser\"\nimport ValueCardsContainer from \"../value-cards-container/value-cards-container-component\"\nimport TimelineContainer from \"../timeline-container/timeline-container-component\"\nimport ArticleColorUspBlock from \"../article-color-usp/article-color-usp-component\"\nimport { generateRandomString } from \"../../helpers/keys\"\nimport useWindowWidth from \"../../hooks/useWindowWidth\"\n\nexport default function TextAndTabsContainer({ headline, subheader, tabContent }) {\n  //string regex in replace, replaces spaces with dashes.\n\n  const tabLabels = tabContent.map((obj) => obj.tabLabel) || {}\n\n  const convertUtfToReadableString = (url) => {\n    return (\n      (!!url &&\n        url\n          .replaceAll(\"%20\", \" \")\n          .replaceAll(\"%C3%A6\", \"æ\")\n          .replaceAll(\"%C3%86\", \"Æ\")\n          .replaceAll(\"%C3%B8\", \"ø\")\n          .replaceAll(\"%C3%98\", \"Ø\")\n          .replaceAll(\"%C3%A5\", \"å\")\n          .replaceAll(\"%C3%85\", \"Å\")) ||\n      url\n    )\n  }\n\n  const [urlHash] = useState(convertUtfToReadableString(window.location.href.split(\"#\")[1]) || undefined)\n  const [matchingTabLabel] = useState(tabLabels.find((tabLabel) => convertUtfToReadableString(tabLabel) === urlHash) || undefined)\n  const [activeTab, setActiveTab] = useState(matchingTabLabel || tabLabels[0] || \"\")\n\n  useEffect(() => {\n    const handleLocationChange = () => {\n      // Perform actions when window.location.href changes\n      setActiveTab(convertUtfToReadableString(window.location.href.split(\"#\")[1] || \"\") || tabLabels[0])\n    }\n\n    // Add event listener for 'popstate' event\n    window.addEventListener(\"popstate\", handleLocationChange)\n\n    // Clean up the event listener on component unmount\n    return () => {\n      window.removeEventListener(\"popstate\", handleLocationChange)\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []) // Empty dependency array to run the effect only once\n\n  const htmlTabs =\n    tabContent.length > 0\n      ? tabContent.map((tab, index) => {\n          return (\n            <Tab\n              key={tab.tabLabel ? tab.tabLabel.replace(/\\s+/g, \"-\") : index}\n              Id={index}\n              tabHelperText={tab.tabHelperText}\n              label={tab.tabLabel}\n              activeTab={activeTab}\n              setActiveTab={setActiveTab}\n            />\n          )\n        })\n      : undefined\n\n  const htmlTabContent =\n    tabContent.length > 0\n      ? tabContent.map((tab, index) => {\n          return (\n            <TabContent\n              key={tab.tabLabel ? tab.tabLabel.replace(/\\s+/g, \"-\") : index}\n              Id={index}\n              label={tab.tabLabel}\n              activeTab={activeTab}\n              textContent={tab.textContent}\n              blockContent={tab.blockContent}\n            />\n          )\n        })\n      : undefined\n\n  return (\n    <section className=\"text-and-tabs\">\n      <div className=\"w--narrow\">\n        <div className=\"text-and-tabs-top\">\n          <h2 data-epi-property=\"Headline\">{headline}</h2>\n          <p data-epi-property=\"Subheader\">{subheader}</p>\n        </div>\n        <div className={`text-and-tabs-tabs`}>{htmlTabs}</div>\n        <div data-epi-property=\"TabContent\" className=\"text-and-tabs-contents\">\n          {htmlTabContent}\n        </div>\n      </div>\n    </section>\n  )\n}\n\nfunction Tab({ label, tabHelperText, activeTab, setActiveTab }) {\n  const tabHandler = () => {\n    setActiveTab(label)\n    const newUrl = window.location.href.split(\"#\")[0] + \"#\" + label\n    window.history.pushState({ urlChange: \"TabNavigation\" }, \"\", newUrl)\n  }\n\n  return (\n    <button\n      data-epi-property=\"TabLabel\"\n      id={label}\n      aria-pressed={label === activeTab ? \"true\" : \"false\"}\n      aria-label={tabHelperText + \" \" + label}\n      onClick={tabHandler}\n      className={label === activeTab ? \"is-active\" : \"inactive\"}\n    >\n      {label}\n    </button>\n  )\n}\n\nfunction TabContent({ label, activeTab, textContent, blockContent }) {\n  //Component was scoped with functionality to include single block item.\n  const extractedBlockContent = blockContent ? blockContent : undefined\n\n  useEffect(() => {\n    CreateContentBlockElement()\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [])\n\n  const [epiSortedBlockContent, setEpiSortedBlockContent] = useState([])\n\n  const CreateContentBlockElement = () => {\n    let htmlBlockElements = []\n\n    if (!!extractedBlockContent && extractedBlockContent.length > 0) {\n      extractedBlockContent.forEach((element) => {\n        switch (element.__type__) {\n          case \"ValueCardsContainerBlock\":\n            htmlBlockElements.push(\n              <div key={generateRandomString()} className=\"text-and-tabs\">\n                <ValueCardsContainer contentArea={element.contentArea} />\n              </div>,\n            )\n            break\n          case \"TimelineContainerBlock\":\n            htmlBlockElements.push(\n              <TimelineContainer\n                key={generateRandomString()}\n                contentArea={element.contentArea}\n                isNumbered={element.isNumbered}\n                header={element.header}\n                description={element.description}\n                isVideoFormat={element.isVideoFormat}\n              />,\n            )\n            break\n          case \"ArticleColorUspBlock\":\n            htmlBlockElements.push(\n              <div key={generateRandomString()} className=\"text-and-tabs\">\n                <div className=\"article-color-usp-module\">\n                  <ArticleColorUspBlock\n                    key={generateRandomString()}\n                    titleBoxColor={element.titleBoxColor}\n                    titleBoxTextColor={element.titleBoxTextColor}\n                    uspBoxColor={element.uspBoxColor}\n                    uspBoxTextColor={element.uspBoxTextColor}\n                    modifier={\"w--wider\"}\n                    title={element.title}\n                    headline={element.headline}\n                    uspTexts={element.uspTexts}\n                  />\n                </div>\n              </div>,\n            )\n            break\n\n          case \"PresentationTabItemBlock\":\n            htmlBlockElements.push(\n              <div key={generateRandomString()} className=\"presentation-tabs\">\n                <div className=\"presentation-tabs-contents\">\n                  <PresentationTabContent desktopImage={element.desktopImage} mobileImage={element.mobileImage} />\n                </div>\n              </div>,\n            )\n            break\n          default:\n            break\n        }\n      })\n\n      setEpiSortedBlockContent(\n        htmlBlockElements.map((element) => {\n          return element\n        }),\n      )\n    }\n  }\n\n  return (\n    <article className={label === activeTab ? \"is-active\" : \"inactive\"}>\n      <div data-epi-property=\"TextContent\" className=\"rich-text\">\n        {ReactHtmlParser(textContent)}\n      </div>\n      {epiSortedBlockContent}\n    </article>\n  )\n}\n\nfunction PresentationTabContent({ label, activeTab, desktopImage, mobileImage }) {\n  const windowWidth = useWindowWidth()\n\n  return (\n    <div className={label === activeTab ? \"is-active\" : \"inactive\"}>\n      <img data-epi-property=\"DesktopImage\" src={windowWidth >= 768 ? desktopImage : mobileImage}></img>\n    </div>\n  )\n}\n","import React from \"react\"\nimport Slider from \"react-slick\"\nimport ReactHTMLParser from \"react-html-parser\"\nimport YoutubeEmbed from \"../youtube-embed/YouTubeEmbed\"\nimport \"./_timeline-container.scss\"\nimport { generateRandomString } from \"../../helpers/keys\"\nimport useWindowWidth from \"../../hooks/useWindowWidth\"\n\nexport default function TimelineContainer({ contentArea, isNumbered, header, description, isVideoFormat }) {\n  const timelineElements = contentArea || []\n  const windowWidth = useWindowWidth()\n\n  var settings = {\n    dots: true,\n    arrows: false,\n    infinite: false,\n    slidesToShow: 1,\n    slidesToScroll: 1,\n    swipe: true,\n    variableWidth: false,\n  }\n\n  if (windowWidth >= 768 && windowWidth < 920) {\n    settings.slidesToShow = 2\n  }\n\n  let htmlTimeline = undefined\n\n  //desktop HTML\n  htmlTimeline =\n    timelineElements.length > 0\n      ? timelineElements.map((t, index) => {\n          return (\n            <TimelineItem\n              key={generateRandomString()}\n              itemNumber={index + 1}\n              timelineText={ReactHTMLParser(t.timelineText)}\n              image={t.timelineImage}\n              youtube={t.videoId}\n              isVideo={isVideoFormat}\n              isNumbered={isNumbered}\n            />\n          )\n        })\n      : null\n\n  //mobile HTML\n  if (windowWidth < 768) {\n    htmlTimeline = React.createElement(Slider, settings, htmlTimeline)\n  }\n\n  return (\n    <section className=\"block-container\">\n      <div\n        className={`timeline-container timeline-container${isNumbered ? \"--ordered\" : \"--unordered\"} ${\n          isVideoFormat ? \"video-format\" : \"image-format\"\n        }`}\n      >\n        <div className=\"w--normal\">\n          {!!header && !!description ? (\n            <div className=\"timeline-top\">\n              <h3 className=\"\">{header}</h3>\n              <p className=\"\">{description}</p>\n            </div>\n          ) : undefined}\n          {htmlTimeline}\n        </div>\n      </div>\n    </section>\n  )\n}\n\nfunction TimelineItem({ timelineText, image, youtube, isVideo, itemNumber, isNumbered }) {\n  return (\n    <div className={`timeline-item ${isVideo ? \" video-format\" : \" image-format\"}`}>\n      <article className=\"timeline-element\">\n        <div className=\"media-area\">\n          {\n            //if image, show image markup\n            !youtube && image ? (\n              //dette scenarie skal have samme aspect ratio som video hvis isVideo er true.\n              <img src={image} className={!!isVideo && !youtube && image ? \"video-aspect-ratio\" : \"\"} />\n            ) : //if video, show video markup\n            youtube ? (\n              <YoutubeEmbed embedId={youtube} classDecleration={\"timeline-video\"} backgroundImage={image} />\n            ) : undefined\n          }\n        </div>\n        <div className=\"text-area\">\n          <div className=\"numberdot\">\n            <div aria-hidden=\"true\" className=\"number\">\n              {isNumbered ? itemNumber : undefined}\n            </div>\n          </div>\n          <div className=\"text-area-content\">\n            <div className=\"rich-text\">{timelineText}</div>\n          </div>\n        </div>\n      </article>\n    </div>\n  )\n}\n","import React from \"react\"\nimport Slider from \"react-slick\"\nimport Svg from \"../_svgs/svg\"\nimport \"./_value-card.scss\"\nimport useWindowWidth from \"../../hooks/useWindowWidth\"\n\nexport default function ValueCardsContainer({ contentArea }) {\n  const valueCards = contentArea || []\n  const windowWidth = useWindowWidth()\n\n  var settings = {\n    dots: true,\n    arrows: false,\n    infinite: false,\n    slidesToShow: 1,\n    slidesToScroll: 1,\n    swipe: true,\n    variableWidth: false,\n  }\n\n  if (windowWidth >= 768 && windowWidth < 920) {\n    settings.slidesToShow = 2\n  }\n\n  return (\n    <section className=\"value-cards-container\">\n      <div className=\"w--narrow\">\n        {windowWidth >= 768 ? (\n          valueCards.length > 0 ? (\n            valueCards.map((card) => {\n              return (\n                <ValueCard\n                  key={card.header}\n                  icon={card.icon[0] || null}\n                  iconUpload={card.iconUpload}\n                  header={card.header}\n                  description={card.description}\n                />\n              )\n            })\n          ) : null\n        ) : (\n          <Slider {...settings}>\n            {valueCards.length > 0\n              ? valueCards.map((card) => {\n                  return (\n                    <ValueCard\n                      key={card.header}\n                      icon={card.icon[0] || null}\n                      iconUpload={card.iconUpload}\n                      header={card.header}\n                      description={card.description}\n                    />\n                  )\n                })\n              : null}\n          </Slider>\n        )}\n      </div>\n    </section>\n  )\n}\n\nfunction ValueCard({ icon, iconUpload, header, description }) {\n  const svg = icon?.value || undefined\n\n  return (\n    <div className=\"card-container\">\n      <article className=\"value-card\">\n        {svg !== \"None\" || undefined ? (\n          <Svg iconName={svg} fillColor={\"transparent\"} stroke={\"#000\"} key={svg}></Svg>\n        ) : iconUpload ? (\n          <div className=\"icon\">\n            <img src={iconUpload}></img>\n          </div>\n        ) : (\n          \"\"\n        )}\n        <h3>{header}</h3>\n        <p>{description}</p>\n      </article>\n    </div>\n  )\n}\n","import React from \"react\"\n\nconst SvgPlay = (props) => (\n  <svg viewBox=\"0 0 18 18\" {...props}>\n    <path d=\"M0 0l18 9-18 9z\" fillRule=\"evenodd\" />\n  </svg>\n)\n\nexport default SvgPlay\n","import React, { useState, useEffect } from \"react\"\nimport PropTypes from \"prop-types\"\n// import YoutubePlayer from 'react-youtube-player';\nimport YouTube from \"react-youtube\"\nimport SvgPlay from \"../_svgs/small/Play\"\nimport \"./YouTubeEmbed.scss\"\n\nexport default function YoutubeEmbed({ embedId, classDecleration, backgroundImage, ariaVideoDescription }) {\n  const [playbackState, setPlaybackState] = useState(\"paused\")\n  const [showVideoHtml, setShowVideoHtml] = useState(false)\n\n  const [hasVideoLoaded, setHasVideoLoaded] = useState(false)\n  const video = document.getElementById(embedId) || undefined\n\n  useEffect(() => {\n    if (!!video && !hasVideoLoaded) {\n      const handleLoad = () => {\n        setHasVideoLoaded(false)\n      }\n\n      video.addEventListener(\"load\", handleLoad)\n\n      return () => {\n        video.removeEventListener(\"load\", handleLoad)\n      }\n    }\n  })\n\n  const options = {\n    playerVars: {\n      showinfo: false,\n      modestbranding: true,\n      allowFullScreen: 1,\n      title: \"Embedded Youtube\",\n      autoPlay: 1,\n      controls: 1,\n      loop: 0,\n      cc_load_policy: \"0\",\n      iv_load_policy: \"3\",\n      autohide: 0,\n    },\n  }\n\n  function onPlayerReady(event) {\n    var embedCode = event.target.getVideoEmbedCode()\n    event.target.playVideo()\n    if (document.getElementById(\"embed-code\")) {\n      document.getElementById(\"embed-code\").innerHTML = embedCode\n      document.getElementById(\"embed-code\").focus()\n    }\n  }\n\n  const playHandler = () => {\n    setShowVideoHtml(true)\n    setPlaybackState(\"playing\")\n  }\n\n  let overlayStyle = {\n    backgroundImage: `url('http://img.youtube.com/vi/${embedId}/0.jpg')`,\n  }\n\n  if (backgroundImage) {\n    overlayStyle.backgroundImage = `url('${backgroundImage}')`\n  }\n\n  return (\n    <div className={classDecleration}>\n      {/* {playbackState !== 'playing' && !!backgroundImage ?\n                <button className=\"youtube-overlay\" onClick={playHandler} style={overlayStyle}>\n                    <div className=\"svg-container\">\n                        <div className=\"youtube-play-svg\">\n                            <SvgPlay />\n                        </div>\n                    </div>\n                </button> : undefined\n            } */}\n      {showVideoHtml ? (\n        <YouTube videoId={embedId} id={embedId} className={\"youtube-video\"} title={\"Embedded Youtube\"} opts={options} onReady={onPlayerReady} />\n      ) : (\n        <button aria-label={ariaVideoDescription || \"Start Video\"} className=\"youtube-overlay\" onClick={playHandler} style={overlayStyle}>\n          <div className=\"svg-container\">\n            <div className=\"youtube-play-svg\">\n              <SvgPlay />\n            </div>\n          </div>\n        </button>\n      )}\n    </div>\n  )\n}\n\nYoutubeEmbed.propTypes = {\n  embedId: PropTypes.string.isRequired,\n  classDecleration: PropTypes.string,\n  backgroundImage: PropTypes.string,\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","TextAndTabsContainer","_ref","subheader","tabContent","tabLabels","obj","tabLabel","convertUtfToReadableString","url","replaceAll","_useState","useState","window","location","href","split","undefined","urlHash","_slicedToArray","_useState3","find","matchingTabLabel","_useState5","_useState6","activeTab","setActiveTab","useEffect","handleLocationChange","addEventListener","removeEventListener","htmlTabs","tab","Tab","Id","tabHelperText","label","replace","htmlTabContent","TabContent","textContent","blockContent","_ref2","id","onClick","newUrl","history","pushState","urlChange","_ref3","extractedBlockContent","CreateContentBlockElement","_useState7","_useState8","epiSortedBlockContent","setEpiSortedBlockContent","htmlBlockElements","forEach","element","__type__","push","ValueCardsContainer","contentArea","TimelineContainer","isNumbered","header","description","isVideoFormat","ArticleColorUspBlock","PresentationTabContent","desktopImage","mobileImage","ReactHtmlParser","_ref4","windowWidth","useWindowWidth","src","timelineElements","settings","dots","arrows","infinite","slidesToShow","slidesToScroll","swipe","variableWidth","htmlTimeline","t","TimelineItem","itemNumber","timelineText","ReactHTMLParser","image","timelineImage","youtube","videoId","isVideo","React","Slider","concat","YoutubeEmbed","embedId","classDecleration","backgroundImage","valueCards","card","ValueCard","icon","iconUpload","_objectSpread","svg","Svg","iconName","fillColor","stroke","viewBox","d","fillRule","ariaVideoDescription","_useState2","setPlaybackState","_useState4","showVideoHtml","setShowVideoHtml","hasVideoLoaded","setHasVideoLoaded","video","document","getElementById","handleLoad","overlayStyle","YouTube","opts","playerVars","showinfo","modestbranding","allowFullScreen","autoPlay","controls","loop","cc_load_policy","iv_load_policy","autohide","onReady","event","embedCode","target","getVideoEmbedCode","playVideo","innerHTML","focus","SvgPlay"],"sourceRoot":""}