{"version":3,"file":"static/js/4271.b4bad914.chunk.js","mappings":"6KAAaA,EAA0B,SAACC,GAuCtC,OAtCwBA,EACrBC,KAAI,SAACC,GACJ,IAAIC,EAEJ,GAAID,EAAQE,sBAAuB,CACjC,GAAIF,EAAQE,sBAAsBC,SAAS,KAAM,CAC/C,IAAAC,EAAuCJ,EAAQE,sBAAsBG,MAAM,UAASC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA/EI,EAAGF,EAAA,GAAEG,EAAKH,EAAA,GAAEI,EAAIJ,EAAA,GAAEK,EAAIL,EAAA,GAAEM,EAAMN,EAAA,GACnCL,EAAc,IAAIY,KAAKH,EAAMD,EAAQ,EAAGD,EAAKG,EAAMC,EACrD,CACA,GAAIZ,EAAQE,sBAAsBC,SAAS,KAAM,CAC/C,IAAAW,EAAuCd,EAAQE,sBAAsBG,MAAM,UAASU,GAAAR,EAAAA,EAAAA,GAAAO,EAAA,GAA/EN,EAAGO,EAAA,GAAEN,EAAKM,EAAA,GAAEL,EAAIK,EAAA,GAAEJ,EAAII,EAAA,GAAEH,EAAMG,EAAA,GACnCd,EAAc,IAAIY,KAAKH,EAAMD,EAAQ,EAAGD,EAAKG,EAAMC,EACrD,CAEA,OAAAI,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKhB,GAAO,IACVC,YAAAA,GAEJ,CAEA,GAAID,EAAQiB,sBAAuB,CACjC,GAAIjB,EAAQiB,sBAAsBd,SAAS,KAAM,CAC/C,IAAAe,EAAuClB,EAAQiB,sBAAsBZ,MAAM,UAASc,GAAAZ,EAAAA,EAAAA,GAAAW,EAAA,GAA/EV,EAAGW,EAAA,GAAEV,EAAKU,EAAA,GAAET,EAAIS,EAAA,GAAER,EAAIQ,EAAA,GAAEP,EAAMO,EAAA,GACnClB,EAAc,IAAIY,KAAKH,EAAMD,EAAQ,EAAGD,EAAKG,EAAMC,EACrD,CACA,GAAIZ,EAAQiB,sBAAsBd,SAAS,KAAM,CAC/C,IAAAiB,EAAuCpB,EAAQiB,sBAAsBZ,MAAM,UAASgB,GAAAd,EAAAA,EAAAA,GAAAa,EAAA,GAA/EZ,EAAGa,EAAA,GAAEZ,EAAKY,EAAA,GAAEX,EAAIW,EAAA,GAAEV,EAAIU,EAAA,GAAET,EAAMS,EAAA,GACnCpB,EAAc,IAAIY,KAAKH,EAAMD,EAAQ,EAAGD,EAAKG,EAAMC,EACrD,CAEA,OAAAI,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKhB,GAAO,IACVC,YAAAA,GAEJ,CACF,IACCqB,MAAK,SAACC,EAAGC,GAAC,OAAKA,EAAEvB,YAAcsB,EAAEtB,WAAW,GAGjD,C,iKCrCe,SAASwB,EAAqBC,GASzC,IARFC,EAAID,EAAJC,KAEAC,GADcF,EAAdG,eACOH,EAAPE,SACAE,EAAUJ,EAAVI,WACAC,EAAkBL,EAAlBK,mBACAC,EAAkBN,EAAlBM,mBACAC,EAAWP,EAAXO,YACAC,EAASR,EAATQ,UAEAC,GAAsCC,EAAAA,EAAAA,UAAS,IAAGC,GAAA9B,EAAAA,EAAAA,GAAA4B,EAAA,GAA3CG,EAAWD,EAAA,GAAEE,EAAcF,EAAA,GAClCG,GAAwCJ,EAAAA,EAAAA,UAAS,IAAGK,GAAAlC,EAAAA,EAAAA,GAAAiC,EAAA,GAA7CE,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GACpCG,GAA0CR,EAAAA,EAAAA,WAAS,GAAMS,GAAAtC,EAAAA,EAAAA,GAAAqC,EAAA,GAAlDE,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GACtCG,GAAsCZ,EAAAA,EAAAA,UAAST,GAAKsB,GAAA1C,EAAAA,EAAAA,GAAAyC,EAAA,GAA7CE,EAAWD,EAAA,GAAEE,EAAcF,EAAA,GAGlCG,GAAoEhB,EAAAA,EAAAA,UAAS,IAAGiB,GAAA9C,EAAAA,EAAAA,GAAA6C,EAAA,GAAzEE,EAA0BD,EAAA,GAAEE,EAA6BF,EAAA,GAChEG,GAAwDpB,EAAAA,EAAAA,UAAS,IAAGqB,GAAAlD,EAAAA,EAAAA,GAAAiD,EAAA,GAA7DE,EAAoBD,EAAA,GAAEE,EAAuBF,EAAA,GAIpDG,GAHoBC,OAAOC,SAASC,MAGY3B,EAAAA,EAAAA,WAASvC,EAAAA,EAAAA,GAAwB8B,KAAMqC,GAAAzD,EAAAA,EAAAA,GAAAqD,EAAA,GAAhFK,EAAgBD,EAAA,GAAqBA,EAAA,IAE5CE,EAAAA,EAAAA,YAAU,WACR,IAAMC,EAAiB,IAAIC,IAE3BzC,EAAK0C,SAAQ,SAACC,GACRA,EAASC,QACXJ,EAAeK,IAAIF,EAASC,OAEhC,IAEAhC,EAAekC,MAAMC,KAAKP,GAAgB7C,MAAK,SAACC,EAAGC,GAAC,OAAKA,EAAID,CAAC,IAChE,GAAG,CAACI,KAGJuC,EAAAA,EAAAA,YAAU,WACR,IAEIS,EADMd,OAAOC,SAASC,KACP1D,MAAM,KAFD,UAGQuE,KAAKD,EAASA,EAASE,OAAS,KAE9DlC,EAAgBgC,EAASA,EAASE,OAAS,GAE/C,GAAG,KAEHX,EAAAA,EAAAA,YAAU,WACR,IAAIY,EAGJ,GAAKpC,EAML,OAAIA,GACFoC,EAAeb,EAAiBc,QAAO,SAACpD,GAAI,OAAKA,EAAK4C,SAAW7B,CAAY,SAE7ES,EAAe2B,SAHjB,EALE3B,EAAec,EAWnB,GAAG,CAACvB,KAEJwB,EAAAA,EAAAA,YAAU,WACR,IAAIc,EAAY9B,EAAYnD,KAAI,SAACkF,GAAI,OACnCC,EAAAA,EAAAA,KAACC,EAAO,CAENC,IAAKH,EAAKI,UACVzD,QAASqD,EAAKK,SACdrF,YAAagF,EAAKhE,sBAAsBZ,MAAM,KAAK,IAH9C4E,EAAKK,SAAW,IAAML,EAAKhE,sBAIhC,IAIEsE,EAAoB,IAAInB,IAGxBoB,EAAoBR,EAAUD,QAAO,SAACU,GAC1C,IAAMC,EAAYD,EAAQE,IAC1B,OAAKJ,EAAkBK,IAAIF,KACzBH,EAAkBf,IAAIkB,IACf,EAGX,IAEAnC,EAA8BiC,EAAkBK,MAAM,EAAG3D,IACzDyB,EAAwB6B,EAC1B,GAAG,CAACtC,EAAaJ,IA8BjB,OACEoC,EAAAA,EAAAA,KAAA,WAASY,UAAU,wBAAuBC,UACxCC,EAAAA,EAAAA,MAAA,OAAKF,UAAU,YAAWC,SAAA,EAExBb,EAAAA,EAAAA,KAAA,MAAI,yBAAuB,UAAUY,UAAU,mBAAkBC,SAC9DnE,KAEHsD,EAAAA,EAAAA,KAAA,KAAG,yBAAuB,aAAaY,UAAU,6BAA4BC,SAC1EjE,KAKHkE,EAAAA,EAAAA,MAAA,OAAKF,UAAU,qBAAoBC,SAAA,EAEjCb,EAAAA,EAAAA,KAAA,OAAKY,UAAU,uBAAsBC,UACnCC,EAAAA,EAAAA,MAAA,OAAKF,UAAU,cAAaC,SAAA,EAC1Bb,EAAAA,EAAAA,KAAA,SAAOe,QAAQ,OAAMF,SAAE,0BACvBC,EAAAA,EAAAA,MAAA,UAAQE,GAAG,OAAOC,SAAU,SAACC,GAAC,OA7CjB,SAACC,GACxB,IACMC,EADazC,OAAOC,SAASC,KACP1D,MAAM,KAC5BkG,EAAWD,EAASA,EAASzB,OAAS,GAEvC2B,MAAMC,SAASF,IAKlBD,EAASI,KAAKL,GAHdC,EAASA,EAASzB,OAAS,GAAKwB,EAOlC,IAAIM,EAAUL,EAASM,KAAK,MAC5BD,EAAUA,EAAQE,QAAQ,OAAQ,OAGlBhD,OAAOC,SAASgD,SAC9BH,GAAW,KAGb9C,OAAOkD,QAAQC,UAAU,KAAM,KAAML,GACrChE,EAAgB0D,GAChBtD,GAAiB,EACnB,CAoB+CkE,CAAiBb,EAAEc,OAAOC,MAAM,EAAEA,MAAOzE,EAAaqD,SAAA,EACvFb,EAAAA,EAAAA,KAAA,UAAQ,yBAAuB,cAAciC,MAAM,GAAEpB,SAClD9D,IAEFK,EAAYvC,KAAI,SAACW,GAAI,OACpBwE,EAAAA,EAAAA,KAAA,UAAmBiC,MAAOzG,EAAKqF,SAC5BrF,GADUA,EAEJ,aAMjBwE,EAAAA,EAAAA,KAAA,OAAKY,UAAU,eAAcC,SAAEjD,EAAgBY,EAAuBJ,KAEtE4B,EAAAA,EAAAA,KAAA,OAAKY,UAAU,4BAA2BC,SACvC7C,EAAY2B,OAAS3C,GACpBgD,EAAAA,EAAAA,KAAA,UAAQY,UAAWhD,EAAgB,WAAa,WAAYsE,QAAS,kBAAMrE,GAAkBD,EAAc,EAACiD,SACzGjD,EAAgBf,GAAsB,gBAAeC,GAAsB,qBAE5EqF,WAMhB,CAEA,IAAMlC,EAAU,SAAHmC,GAAuC,IAAjClC,EAAGkC,EAAHlC,IAAKxD,EAAO0F,EAAP1F,QAAS3B,EAAWqH,EAAXrH,YAC/B,OACEiF,EAAAA,EAAAA,KAAA,OAAKY,UAAU,cAAaC,UAC1BC,EAAAA,EAAAA,MAAA,KAAGjC,KAAMqB,EAAK8B,OAAO,SAASK,IAAI,sBAAsBzB,UAAU,WAAUC,SAAA,EAC1Eb,EAAAA,EAAAA,KAAA,KAAGY,UAAU,gBAAeC,SAAE9F,EAAYuH,WAAW,IAAK,KAAKA,WAAW,IAAK,QAC/EtC,EAAAA,EAAAA,KAAA,MAAIY,UAAU,mBAAkBC,SAAEnE,KAClCsD,EAAAA,EAAAA,KAAA,OAAKY,UAAU,kBAIvB,EC9KqB2B,EAAkB,WAQpC,OAAAC,EAAAA,EAAAA,IAPD,SAAAD,EAAYE,IAAMC,EAAAA,EAAAA,GAAA,KAAAH,GAChB,IAAMI,EAAOC,KAKb,OAJAD,EAAKF,KAAOA,EACZE,EAAKE,UAAYJ,EAAKK,QAAQD,WAAaE,KAAKC,MAAMP,EAAKK,QAAQD,WACnEF,EAAK7C,UAAY2C,EAAKK,QAAQhD,WAAaiD,KAAKC,MAAMP,EAAKK,QAAQhD,WACnE8C,KAAKK,OACEN,CACT,GAAC,EAAAlC,IAAA,OAAAwB,MAED,WACE,IAAMU,EAAOC,KACbM,EAAAA,uBAAgCP,EAAKF,MACrCS,EAAAA,QAAgBlD,EAAAA,EAAAA,KAACzD,GAAqBT,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAK6G,EAAKE,WAAS,IAAEpG,KAAMkG,EAAK7C,aAAe6C,EAAKF,KAC5F,IAAC,CAdoC,E","sources":["shared/news/news-helper.js","shared/news/news-list-page/news-list-page-component.jsx","shared/news/news-list-page/news-list-page-module.jsx"],"sourcesContent":["export const SortNewsByPublishedYear = (arrayOfNewsItems) => {\n  const sortedNewsItems = arrayOfNewsItems\n    .map((article) => {\n      let publishDate\n      //json parsing differences makes up for the different tracks .. not pretty\n      if (article.OriginalPublishDate_s) {\n        if (article.OriginalPublishDate_s.includes(\"-\")) {\n          let [day, month, year, hour, minute] = article.OriginalPublishDate_s.split(/[\\s:-]/)\n          publishDate = new Date(year, month - 1, day, hour, minute)\n        }\n        if (article.OriginalPublishDate_s.includes(\"/\")) {\n          let [day, month, year, hour, minute] = article.OriginalPublishDate_s.split(/[\\s:/]/)\n          publishDate = new Date(year, month - 1, day, hour, minute)\n        }\n\n        return {\n          ...article,\n          publishDate,\n        }\n      }\n\n      if (article.originalPublishDate_s) {\n        if (article.originalPublishDate_s.includes(\"-\")) {\n          let [day, month, year, hour, minute] = article.originalPublishDate_s.split(/[\\s:-]/)\n          publishDate = new Date(year, month - 1, day, hour, minute)\n        }\n        if (article.originalPublishDate_s.includes(\"/\")) {\n          let [day, month, year, hour, minute] = article.originalPublishDate_s.split(/[\\s:/]/)\n          publishDate = new Date(year, month - 1, day, hour, minute)\n        }\n\n        return {\n          ...article,\n          publishDate,\n        }\n      }\n    })\n    .sort((a, b) => b.publishDate - a.publishDate)\n\n  return sortedNewsItems\n}\n","import React, { useState, useEffect } from \"react\"\nimport { SortNewsByPublishedYear } from \"../news-helper\"\n\nexport default function NewsListPageComponent({\n  news,\n  newsCategories,\n  heading,\n  subheading,\n  readLessButtonText,\n  readMoreButtonText,\n  searchLabel,\n  newsShown,\n}) {\n  const [uniqueYears, setUniqueYears] = useState([])\n  const [selectedYear, setSelectedYear] = useState(\"\")\n  const [isReadingMore, setIsReadingMore] = useState(false)\n  const [desiredNews, setDesiredNews] = useState(news)\n\n  //news items we render based on desired news resultset.\n  const [newsItemsShortListToRender, setNewsItemsShortListToRender] = useState([])\n  const [newsItemsAllToRender, setNewsItemsAllToRender] = useState([])\n  const OriginalUrl = window.location.href\n\n  //setting news in state & adding a parsed publishDate property pr. news object.\n  const [newsSortedByYear, setNewsSortedByYear] = useState(SortNewsByPublishedYear(news))\n\n  useEffect(() => {\n    const uniqueYearsSet = new Set()\n\n    news.forEach((newsItem) => {\n      if (newsItem.year_s) {\n        uniqueYearsSet.add(newsItem.year_s)\n      }\n    })\n    // Convert the set back to an array and update & sort the state\n    setUniqueYears(Array.from(uniqueYearsSet).sort((a, b) => b - a))\n  }, [news])\n\n  //set selected year to URL fragment if URL fragment matches a 4 digit number, might be relevant to update in year 10000\n  useEffect(() => {\n    const fourDigitsRegex = /^\\d{4}$/\n    var url = window.location.href\n    let urlArray = url.split(\"/\")\n    let urlIsYear = fourDigitsRegex.test(urlArray[urlArray.length - 1])\n    if (urlIsYear) {\n      setSelectedYear(urlArray[urlArray.length - 1])\n    }\n  }, [])\n\n  useEffect(() => {\n    let filteredNews\n\n    //Showing all news\n    if (!selectedYear) {\n      setDesiredNews(newsSortedByYear)\n      return\n    }\n\n    //filtering by selected year\n    if (selectedYear) {\n      filteredNews = newsSortedByYear.filter((news) => news.year_s === selectedYear)\n      //selecting news based on year\n      setDesiredNews(filteredNews)\n      return\n    }\n  }, [selectedYear])\n\n  useEffect(() => {\n    let newsItems = desiredNews.map((item) => (\n      <NewsRow\n        key={item.header_s + \" \" + item.originalPublishDate_s}\n        url={item.pageUrl_s}\n        heading={item.header_s}\n        publishDate={item.originalPublishDate_s.split(\" \")[0]}\n      />\n    ))\n\n    // Use Set to keep track of unique elements\n    const uniqueElementsSet = new Set()\n\n    // Filter the JSX elements array to remove duplicates\n    const uniqueJsxElements = newsItems.filter((element) => {\n      const elementId = element.key\n      if (!uniqueElementsSet.has(elementId)) {\n        uniqueElementsSet.add(elementId)\n        return true\n      }\n      return false\n    })\n\n    setNewsItemsShortListToRender(uniqueJsxElements.slice(0, newsShown))\n    setNewsItemsAllToRender(uniqueJsxElements)\n  }, [desiredNews, isReadingMore])\n\n  //handling URL change when selecting a year\n  const handleSelectYear = (newYear) => {\n    const currentUrl = window.location.href\n    const urlParts = currentUrl.split(\"/\")\n    const lastPart = urlParts[urlParts.length - 1]\n\n    if (!isNaN(parseInt(lastPart))) {\n      // If the last part of the URL is a year, replace it with the new year\n      urlParts[urlParts.length - 1] = newYear\n    } else {\n      // If not, append the selected year to the URL\n      urlParts.push(newYear)\n    }\n\n    // Join URL parts and remove any trailing slashes\n    let newPath = urlParts.join(\"/\")\n    newPath = newPath.replace(/\\/+$/, \"\") // Remove trailing slashes\n\n    // Ensure there's at least one slash after the base URL\n    if (newPath === window.location.origin) {\n      newPath += \"/\"\n    }\n\n    window.history.pushState(null, null, newPath)\n    setSelectedYear(newYear)\n    setIsReadingMore(false)\n  }\n\n  return (\n    <section className=\"news-overview-section\">\n      <div className=\"w--normal\">\n        {/**heading area */}\n        <h1 data-epi-property-name=\"Heading\" className=\"overview-heading\">\n          {heading}\n        </h1>\n        <p data-epi-property-name=\"Subheading\" className=\"overview-subtext w--narrow\">\n          {subheading}\n        </p>\n        {/**heading area end*/}\n\n        {/**year selector */}\n        <div className=\"news-year-selector\">\n          {/**year selector end*/}\n          <div className=\"yearselect-container\">\n            <div className=\"firefox-fix\">\n              <label htmlFor=\"year\">{\"selectYearButtonText\"}</label>\n              <select id=\"year\" onChange={(e) => handleSelectYear(e.target.value)} value={selectedYear}>\n                <option data-epi-property-name=\"SearchLabel\" value=\"\">\n                  {searchLabel}\n                </option>\n                {uniqueYears.map((year) => (\n                  <option key={year} value={year}>\n                    {year}\n                  </option>\n                ))}\n              </select>\n            </div>\n          </div>\n          {/**news generation*/}\n          <div className=\"news-content\">{isReadingMore ? newsItemsAllToRender : newsItemsShortListToRender}</div>\n          {/* *news generation end */}\n          <div className=\"readmore-button-container\">\n            {desiredNews.length > newsShown ? (\n              <button className={isReadingMore ? \"readless\" : \"readmore\"} onClick={() => setIsReadingMore(!isReadingMore)}>\n                {isReadingMore ? readLessButtonText || \"Læs mindre\" : readMoreButtonText || \"Læs mere\"}\n              </button>\n            ) : undefined}\n          </div>\n        </div>\n      </div>\n    </section>\n  )\n}\n\nconst NewsRow = ({ url, heading, publishDate }) => {\n  return (\n    <div className=\"row-element\">\n      <a href={url} target=\"_blank\" rel=\"noopener noreferrer\" className=\"news-row\">\n        <p className=\"news-row-date\">{publishDate.replaceAll(\"/\", \".\").replaceAll(\"-\", \".\")}</p>\n        <h2 className=\"news-row-heading\">{heading}</h2>\n        <div className=\"infoarrow\"></div>\n      </a>\n    </div>\n  )\n}\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport NewsListPageComponent from \"./news-list-page-component\"\n\nexport default class NewsListPageModule {\n  constructor(elem) {\n    const self = this\n    self.elem = elem\n    self.modelJson = elem.dataset.modelJson && JSON.parse(elem.dataset.modelJson)\n    self.newsItems = elem.dataset.newsItems && JSON.parse(elem.dataset.newsItems)\n    this.init()\n    return self\n  }\n\n  init() {\n    const self = this\n    ReactDOM.unmountComponentAtNode(self.elem)\n    ReactDOM.render(<NewsListPageComponent {...self.modelJson} news={self.newsItems} />, self.elem)\n  }\n}\n"],"names":["SortNewsByPublishedYear","arrayOfNewsItems","map","article","publishDate","OriginalPublishDate_s","includes","_article$OriginalPubl","split","_article$OriginalPubl2","_slicedToArray","day","month","year","hour","minute","Date","_article$OriginalPubl3","_article$OriginalPubl4","_objectSpread","originalPublishDate_s","_article$originalPubl","_article$originalPubl2","_article$originalPubl3","_article$originalPubl4","sort","a","b","NewsListPageComponent","_ref","news","heading","newsCategories","subheading","readLessButtonText","readMoreButtonText","searchLabel","newsShown","_useState","useState","_useState2","uniqueYears","setUniqueYears","_useState3","_useState4","selectedYear","setSelectedYear","_useState5","_useState6","isReadingMore","setIsReadingMore","_useState7","_useState8","desiredNews","setDesiredNews","_useState9","_useState10","newsItemsShortListToRender","setNewsItemsShortListToRender","_useState11","_useState12","newsItemsAllToRender","setNewsItemsAllToRender","_useState13","window","location","href","_useState14","newsSortedByYear","useEffect","uniqueYearsSet","Set","forEach","newsItem","year_s","add","Array","from","urlArray","test","length","filteredNews","filter","newsItems","item","_jsx","NewsRow","url","pageUrl_s","header_s","uniqueElementsSet","uniqueJsxElements","element","elementId","key","has","slice","className","children","_jsxs","htmlFor","id","onChange","e","newYear","urlParts","lastPart","isNaN","parseInt","push","newPath","join","replace","origin","history","pushState","handleSelectYear","target","value","onClick","undefined","_ref2","rel","replaceAll","NewsListPageModule","_createClass","elem","_classCallCheck","self","this","modelJson","dataset","JSON","parse","init","ReactDOM"],"sourceRoot":""}