{"version":3,"file":"static/js/5216.75729499.chunk.js","mappings":"wJAAO,IAAMA,EAAuB,WAIlC,IAHA,IAAMC,EAAa,iEACfC,EAAe,GAEVC,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAE1BD,GAAgBD,EADIG,KAAKC,MAAsBJ,GAAhBG,KAAKE,UAEtC,CAEA,OAAOJ,CACT,C,oJCFe,SAASK,EAAiBC,GAAmE,IAAhEC,EAAWD,EAAXC,YAAaC,EAAUF,EAAVE,WAAYC,EAAMH,EAANG,OAAQC,EAAWJ,EAAXI,YAAaC,EAAaL,EAAbK,cAClFC,EAAmBL,GAAe,GAClCM,GAAcC,EAAAA,EAAAA,KAEhBC,EAAW,CACbC,MAAM,EACNC,QAAQ,EACRC,UAAU,EACVC,aAAc,EACdC,eAAgB,EAChBC,OAAO,EACPC,eAAe,GAGbT,GAAe,KAAOA,EAAc,MACtCE,EAASI,aAAe,GAG1B,IAAII,OAAeC,EAyBnB,OAtBAD,EACEX,EAAiBa,OAAS,EACtBb,EAAiBc,KAAI,SAACC,EAAGC,GACvB,OACEC,EAAAA,EAAAA,KAACC,EAAY,CAEXC,WAAYH,EAAQ,EACpBI,cAAcC,EAAAA,EAAAA,IAAgBN,EAAEK,cAChCE,MAAOP,EAAEQ,cACTC,QAAST,EAAEU,QACXC,QAAS3B,EACTH,WAAYA,IANPV,EAAAA,EAAAA,KASX,IACA,KAGFe,EAAc,MAChBU,EAAegB,EAAAA,cAAoBC,EAAAA,EAAQzB,EAAUQ,KAIrDM,EAAAA,EAAAA,KAAA,WAASY,UAAU,kBAAiBC,UAClCb,EAAAA,EAAAA,KAAA,OACEY,UAAS,wCAAAE,OAA0CnC,EAAa,YAAc,cAAa,KAAAmC,OACzFhC,EAAgB,eAAiB,gBAChC+B,UAEHE,EAAAA,EAAAA,MAAA,OAAKH,UAAU,YAAWC,SAAA,CACrBjC,GAAYC,GACbkC,EAAAA,EAAAA,MAAA,OAAKH,UAAU,eAAcC,SAAA,EAC3Bb,EAAAA,EAAAA,KAAA,MAAIY,UAAU,GAAEC,SAAEjC,KAClBoB,EAAAA,EAAAA,KAAA,KAAGY,UAAU,GAAEC,SAAEhC,YAEjBc,EACHD,QAKX,CAEA,SAASO,EAAYe,GAAqE,IAAlEb,EAAYa,EAAZb,aAAcE,EAAKW,EAALX,MAAOE,EAAOS,EAAPT,QAASE,EAAOO,EAAPP,QAASP,EAAUc,EAAVd,WAAYvB,EAAUqC,EAAVrC,WACzE,OACEqB,EAAAA,EAAAA,KAAA,OAAKY,UAAS,iBAAAE,OAAmBL,EAAU,gBAAkB,iBAAkBI,UAC7EE,EAAAA,EAAAA,MAAA,WAASH,UAAU,mBAAkBC,SAAA,EACnCb,EAAAA,EAAAA,KAAA,OAAKY,UAAU,aAAYC,UAGtBN,GAAWF,GAEVL,EAAAA,EAAAA,KAAA,OAAKiB,IAAKZ,EAAOO,UAAaH,IAAYF,GAAWF,EAAQ,qBAAuB,KAEtFE,GACEP,EAAAA,EAAAA,KAACkB,EAAAA,EAAY,CAACC,QAASZ,EAASa,iBAAkB,iBAAkBC,gBAAiBhB,SACnFV,KAGRoB,EAAAA,EAAAA,MAAA,OAAKH,UAAU,YAAWC,SAAA,EACxBb,EAAAA,EAAAA,KAAA,OAAKY,UAAU,YAAWC,UACxBb,EAAAA,EAAAA,KAAA,OAAK,cAAY,OAAOY,UAAU,SAAQC,SACvClC,EAAauB,OAAaP,OAG/BK,EAAAA,EAAAA,KAAA,OAAKY,UAAU,oBAAmBC,UAChCb,EAAAA,EAAAA,KAAA,OAAKY,UAAU,YAAWC,SAAEV,aAMxC,C,qJCjGqBmB,EAAuB,WAOzC,OAAAC,EAAAA,EAAAA,IAND,SAAAD,EAAYE,IAAMC,EAAAA,EAAAA,GAAA,KAAAH,GAChB,IAAMI,EAAOC,KAIb,OAHAD,EAAKF,KAAOA,EACZE,EAAKE,UAAYJ,EAAKK,QAAQD,WAAaE,KAAKC,MAAMP,EAAKK,QAAQD,WACnED,KAAKK,OACEN,CACT,GAAC,EAAAO,IAAA,OAAAC,MAED,WACE,IAAMR,EAAOC,KACbQ,EAAAA,uBAAgCT,EAAKF,MACrCW,EAAAA,QAAgBnC,EAAAA,EAAAA,KAACxB,EAAAA,SAAiB4D,EAAAA,EAAAA,GAAA,GAAKV,EAAKE,YAAeF,EAAKF,KAClE,IAAC,CAbyC,E,iHCI5C,EANgB,SAACa,GAAK,OACpBrC,EAAAA,EAAAA,KAAA,OAAAoC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAAKE,QAAQ,aAAgBD,GAAK,IAAAxB,UAChCb,EAAAA,EAAAA,KAAA,QAAMuC,EAAE,kBAAkBC,SAAS,cAC/B,ECEO,SAAStB,EAAYzC,GAAwE,IAArE0C,EAAO1C,EAAP0C,QAASC,EAAgB3C,EAAhB2C,iBAAkBC,EAAe5C,EAAf4C,gBAAiBoB,EAAoBhE,EAApBgE,qBACjFC,GAA0CC,EAAAA,EAAAA,UAAS,UAASC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAtCI,GAAFF,EAAA,GAAkBA,EAAA,IACtCG,GAA0CJ,EAAAA,EAAAA,WAAS,GAAMK,GAAAH,EAAAA,EAAAA,GAAAE,EAAA,GAAlDE,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GAEtCG,GAA4CR,EAAAA,EAAAA,WAAS,GAAMS,GAAAP,EAAAA,EAAAA,GAAAM,EAAA,GAApDE,EAAcD,EAAA,GAAEE,EAAiBF,EAAA,GAClCG,EAAQC,SAASC,eAAetC,SAAYxB,GAElD+D,EAAAA,EAAAA,YAAU,WACR,GAAMH,IAAUF,EAAgB,CAC9B,IAAMM,EAAa,WACjBL,GAAkB,EACpB,EAIA,OAFAC,EAAMK,iBAAiB,OAAQD,GAExB,WACLJ,EAAMM,oBAAoB,OAAQF,EACpC,CACF,CACF,IA0BA,IAKIG,EAAe,CACjBzC,gBAAgB,kCAADP,OAAoCK,EAAO,aAO5D,OAJIE,IACFyC,EAAazC,gBAAe,QAAAP,OAAWO,EAAe,QAItDrB,EAAAA,EAAAA,KAAA,OAAKY,UAAWQ,EAAiBP,SAU9BoC,GACCjD,EAAAA,EAAAA,KAAC+D,EAAAA,EAAO,CAACvD,QAASW,EAAS6C,GAAI7C,EAASP,UAAW,gBAAiBqD,MAAO,mBAAoBC,KAjDrF,CACdC,WAAY,CACVC,UAAU,EACVC,gBAAgB,EAChBC,gBAAiB,EACjBL,MAAO,mBACPM,SAAU,EACVC,SAAU,EACVC,KAAM,EACNC,eAAgB,IAChBC,eAAgB,IAChBC,SAAU,IAsCsGC,QAlCpH,SAAuBC,GACrB,IAAIC,EAAYD,EAAME,OAAOC,oBAC7BH,EAAME,OAAOE,YACT1B,SAASC,eAAe,gBAC1BD,SAASC,eAAe,cAAc0B,UAAYJ,EAClDvB,SAASC,eAAe,cAAc2B,QAE1C,KA6BMpF,EAAAA,EAAAA,KAAA,UAAQ,aAAYyC,GAAwB,cAAe7B,UAAU,kBAAkByE,QA3BzE,WAClBnC,GAAiB,GACjBJ,EAAiB,UACnB,EAwBmHwC,MAAOxB,EAAajD,UAC/Hb,EAAAA,EAAAA,KAAA,OAAKY,UAAU,gBAAeC,UAC5Bb,EAAAA,EAAAA,KAAA,OAAKY,UAAU,mBAAkBC,UAC/Bb,EAAAA,EAAAA,KAACuF,EAAO,WAOtB,C","sources":["helpers/keys.js","shared/timeline-container/timeline-container-component.jsx","shared/timeline-container/timeline-container-module.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 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 ReactDOM from \"react-dom\"\nimport TimelineContainer from \"./timeline-container-component\"\n\nexport default class TimelineContainerModule {\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(<TimelineContainer {...self.modelJson} />, self.elem)\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","TimelineContainer","_ref","contentArea","isNumbered","header","description","isVideoFormat","timelineElements","windowWidth","useWindowWidth","settings","dots","arrows","infinite","slidesToShow","slidesToScroll","swipe","variableWidth","htmlTimeline","undefined","length","map","t","index","_jsx","TimelineItem","itemNumber","timelineText","ReactHTMLParser","image","timelineImage","youtube","videoId","isVideo","React","Slider","className","children","concat","_jsxs","_ref2","src","YoutubeEmbed","embedId","classDecleration","backgroundImage","TimelineContainerModule","_createClass","elem","_classCallCheck","self","this","modelJson","dataset","JSON","parse","init","key","value","ReactDOM","_objectSpread","props","viewBox","d","fillRule","ariaVideoDescription","_useState","useState","_useState2","_slicedToArray","setPlaybackState","_useState3","_useState4","showVideoHtml","setShowVideoHtml","_useState5","_useState6","hasVideoLoaded","setHasVideoLoaded","video","document","getElementById","useEffect","handleLoad","addEventListener","removeEventListener","overlayStyle","YouTube","id","title","opts","playerVars","showinfo","modestbranding","allowFullScreen","autoPlay","controls","loop","cc_load_policy","iv_load_policy","autohide","onReady","event","embedCode","target","getVideoEmbedCode","playVideo","innerHTML","focus","onClick","style","SvgPlay"],"sourceRoot":""}