{"version":3,"file":"static/js/3718.58a970b7.chunk.js","mappings":"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","sources":["shared/news/news-helper.js","shared/news/news-overview/news-overview-block-component.jsx","shared/news/news-overview/news-overview-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 NewsOverviewBlockComponent({\n  news,\n  newsCategories,\n  header,\n  subtext,\n  fallbackImage,\n  readLessButtonText,\n  readMoreButtonText,\n  selectYearButtonText,\n  allNewsCategoriesText,\n}) {\n  //#region tabhandling\n\n  const tabLabels = newsCategories || []\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 || \"\")\n\n  if (!activeTab) {\n    setActiveTab(allNewsCategoriesText)\n  }\n\n  useEffect(() => {\n    const handleLocationChange = () => {\n      setActiveTab(convertUtfToReadableString(window.location.href.split(\"#\")[1] || \"\") || tabLabels[0])\n    }\n\n    window.addEventListener(\"popstate\", handleLocationChange)\n\n    return () => {\n      window.removeEventListener(\"popstate\", handleLocationChange)\n    }\n  }, [])\n\n  //#endregion\n\n  const [uniqueYears, setUniqueYears] = useState([])\n  const [selectedYear, setSelectedYear] = useState(\"\")\n  const [isReadingMore, setIsReadingMore] = useState(false)\n\n  //resultsets dependant in other states\n  const newsFilteredByPageCategories = news.filter(\n    (news) =>\n      news &&\n      news.NewsCategoryFriendlyNames_ss &&\n      news.NewsCategoryFriendlyNames_ss.some((NewsCategoryFriendlyNames_ss) => newsCategories.includes(NewsCategoryFriendlyNames_ss)),\n  )\n\n  const newsSortedByYear = SortNewsByPublishedYear(newsFilteredByPageCategories)\n\n  //First we filter news sets based on year, then we filter news by desired category,\n  //this way Tabs can distinguish what categories are present for a given year\n  const [newsFilteredByYear, setNewsFilteredByYear] = useState(newsSortedByYear)\n  const [newsFilteredByCategoryYear, setNewsFilteredByCategoryYear] = useState(newsSortedByYear)\n\n  //news item results that are rendered based on desired news categories / year resultset.\n  const [newsItemsShortListToRender, setNewsItemsShortListToRender] = useState([])\n  const [newsItemsAllToRender, setNewsItemsAllToRender] = useState([])\n\n  useEffect(() => {\n    const uniqueYearsSet = new Set()\n\n    newsSortedByYear.forEach((newsItem) => {\n      if (newsItem.Year_s) {\n        uniqueYearsSet.add(newsItem.Year_s)\n      }\n    })\n    setUniqueYears(Array.from(uniqueYearsSet).sort((a, b) => b - a))\n  }, [news])\n\n  //The filtering engine of the news overview page.\n  useEffect(() => {\n    let filteredNews\n    let filteredNewsByYear\n\n    if (!selectedYear && activeTab === allNewsCategoriesText) {\n      //setting news to all news entries, possibly filter away categories in news that arent chosen on pageCategories.\n      setNewsFilteredByYear(newsSortedByYear)\n      setNewsFilteredByCategoryYear(newsSortedByYear)\n      return\n    }\n\n    if (!selectedYear && activeTab !== allNewsCategoriesText) {\n      filteredNews = newsSortedByYear.filter(\n        (news) =>\n          news &&\n          news.NewsCategoryFriendlyNames_ss &&\n          news.NewsCategoryFriendlyNames_ss.some((NewsCategoryFriendlyNames_ss) => NewsCategoryFriendlyNames_ss.includes(activeTab)),\n      )\n      //setting news based on a given category, taking all years into account\n      setNewsFilteredByCategoryYear(filteredNews)\n      setNewsFilteredByYear(newsSortedByYear)\n\n      return\n    }\n\n    if (selectedYear && activeTab === allNewsCategoriesText) {\n      filteredNews = newsSortedByYear && newsSortedByYear.filter((news) => news && news.Year_s === selectedYear)\n      //selecting news based on year and all categories\n      setNewsFilteredByCategoryYear(filteredNews)\n      setNewsFilteredByYear(filteredNews)\n      return\n    }\n\n    if (selectedYear && activeTab !== allNewsCategoriesText) {\n      filteredNews =\n        newsSortedByYear &&\n        newsSortedByYear.filter(\n          (news) =>\n            news &&\n            news.NewsCategoryFriendlyNames_ss &&\n            news.NewsCategoryFriendlyNames_ss.some((NewsCategoryFriendlyNames_ss) => activeTab.includes(NewsCategoryFriendlyNames_ss)) &&\n            (selectedYear === null || news.Year_s === selectedYear),\n        )\n      filteredNewsByYear = newsSortedByYear && newsSortedByYear.filter((news) => news && news.Year_s === selectedYear)\n\n      //setting news based on a chosen year and a chosen category\n      setNewsFilteredByYear(filteredNewsByYear)\n      setNewsFilteredByCategoryYear(filteredNews)\n      return\n    }\n  }, [selectedYear, activeTab])\n\n  useEffect(() => {\n    let newsItems =\n      newsFilteredByCategoryYear &&\n      newsFilteredByCategoryYear.map(\n        (item) =>\n          item && (\n            <NewsCard\n              key={item.Header_s + \" \" + item.OriginalPublishDate_s}\n              img={item.ImageUrl_s || fallbackImage}\n              url={item.PageUrl_s}\n              heading={item.Header_s}\n              publishDate={item.OriginalPublishDate_s.split(\" \")[0]}\n            />\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 =\n      newsItems &&\n      newsItems.filter((element) => {\n        const elementId = element && element.key\n        if (!uniqueElementsSet.has(elementId)) {\n          uniqueElementsSet.add(elementId)\n          return true\n        }\n        return false\n      })\n\n    setNewsItemsShortListToRender(uniqueJsxElements && uniqueJsxElements.slice(0, 9))\n    setNewsItemsAllToRender(uniqueJsxElements)\n  }, [newsFilteredByCategoryYear, isReadingMore])\n\n  const htmlTabs =\n    tabLabels.length > 0\n      ? tabLabels.map((tab, index) => {\n          const hasNewsInTabCategory = true\n          return (\n            <Tab\n              key={tab ? tab.replace(/\\s+/g, \"-\") : index}\n              label={tab}\n              activeTab={activeTab}\n              setActiveTab={setActiveTab}\n              hasNewsInTabCategory={hasNewsInTabCategory}\n              newsCategories={newsCategories}\n              newsFilteredByCategoryYear={newsFilteredByYear}\n              isAllCategories={false}\n            />\n          )\n        })\n      : undefined\n\n  const handleSelectYear = (year) => {\n    var firstButton = document.querySelector(\".news-tabs button:first-child\")\n\n    if (firstButton) {\n      var buttonId = firstButton.id\n      setActiveTab(buttonId)\n      setSelectedYear(year)\n\n      const newUrl = window.location.href.split(\"#\")[0] + \"#\" + buttonId\n      window.history.pushState({ urlChange: \"TabNavigation\" }, \"\", newUrl)\n    }\n  }\n\n  //markup\n  return (\n    <section className=\"news-overview-section\">\n      {/**heading area */}\n      <h1 className=\"overview-heading w--normal\" data-epi-property-name=\"Header\">\n        {header}\n      </h1>\n      <p className=\"overview-subtext w--narrow\" data-epi-property-name=\"Subtext\">\n        {subtext}\n      </p>\n      {/**heading area end*/}\n\n      {/**tabs area */}\n      <div className=\"news-tabs\">\n        {/**all categories tab first, then added categories*/}\n        <Tab\n          key={allNewsCategoriesText ? allNewsCategoriesText && allNewsCategoriesText.replace(/\\s+/g, \"-\") : 0}\n          label={allNewsCategoriesText}\n          activeTab={activeTab}\n          setActiveTab={setActiveTab}\n          newsCategories={newsCategories}\n          newsFilteredByCategoryYear={newsFilteredByYear}\n          isAllCategories={true}\n        />\n        {htmlTabs}\n\n        {/**news year selector is last */}\n        <div className=\"yearselect-container\">\n          <div className=\"firefox-fix\">\n            <label data-epi-property-name=\"SelectYearButtonText\" htmlFor=\"year\">\n              {selectYearButtonText}\n            </label>\n            <select id=\"year\" onChange={(e) => handleSelectYear(e.target.value)} value={selectedYear}>\n              <option value=\"\">{selectYearButtonText}</option>\n              {uniqueYears.map((year) => (\n                <option key={year} value={year}>\n                  {year}\n                </option>\n              ))}\n            </select>\n          </div>\n        </div>\n      </div>\n      {/**tabs area end*/}\n\n      {/**news generation*/}\n      <div className=\"news-content grid align-left w--normal\">{isReadingMore ? newsItemsAllToRender : newsItemsShortListToRender}</div>\n      {/**news generation end*/}\n      <div className=\"readmore-button-container\">\n        {newsFilteredByCategoryYear && newsFilteredByCategoryYear.length > 9 ? (\n          <button className={isReadingMore ? \"readless\" : \"readmore\"} onClick={() => setIsReadingMore(!isReadingMore)}>\n            {isReadingMore ? readLessButtonText : readMoreButtonText}\n          </button>\n        ) : undefined}\n      </div>\n    </section>\n  )\n}\n\nfunction Tab({ label, activeTab, setActiveTab, newsFilteredByCategoryYear, isAllCategories }) {\n  let tabHasNews =\n    newsFilteredByCategoryYear &&\n    newsFilteredByCategoryYear.some(\n      (newsFilteredByCategoryYear) => newsFilteredByCategoryYear && newsFilteredByCategoryYear.NewsCategoryFriendlyNames_ss?.includes(label),\n    )\n\n  const tabHandler = () => {\n    if (tabHasNews || isAllCategories) {\n      if (activeTab !== label) setActiveTab(label)\n\n      const newUrl = window.location.href.split(\"#\")[0] + \"#\" + label\n      window.history.pushState({ urlChange: \"TabNavigation\" }, \"\", newUrl)\n    }\n  }\n  return (\n    <button\n      id={label}\n      aria-pressed={label === activeTab ? \"true\" : \"false\"}\n      onClick={tabHandler}\n      //if tab is all categories, never disable, otherwise disable if tab doesnt have news.\n      disabled={isAllCategories ? false : !tabHasNews ? true : false}\n      className={`${label === activeTab ? \"is-active\" : \"inactive\"} ${isAllCategories || tabHasNews ? \"tab-vibrant\" : \"tab-faded\"}`}\n    >\n      {label}\n    </button>\n  )\n}\n\nconst NewsCard = ({ img, url, heading, publishDate }) => {\n  return (\n    <div className=\"grid-item col--12 col-xs--6 col-md--4\">\n      <a href={url} target=\"_blank\" rel=\"noopener noreferrer\" className=\"news-card\">\n        <img src={img} /*alt={heading}*/ className=\"news-card-image\" />\n        <div className=\"news-card-content\">\n          <p className=\"news-card-date\">{publishDate.replaceAll(\"-\", \".\").replaceAll(\"/\", \".\")}</p>\n          <h2 className=\"news-card-heading\">{heading}</h2>\n        </div>\n      </a>\n    </div>\n  )\n}\n","import React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport NewsOverviewBlock from \"./news-overview-block-component\"\n\nexport default class NewsOverviewBlockModule {\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    self.newsCategories = elem.dataset.selectedNewsCategories && JSON.parse(elem.dataset.selectedNewsCategories)\n    this.init()\n    return self\n  }\n\n  init() {\n    const self = this\n    ReactDOM.unmountComponentAtNode(self.elem)\n    ReactDOM.render(<NewsOverviewBlock {...self.modelJson} news={self.newsItems} newsCategories={self.newsCategories} />, 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","NewsOverviewBlockComponent","_ref","news","newsCategories","header","subtext","fallbackImage","readLessButtonText","readMoreButtonText","selectYearButtonText","allNewsCategoriesText","tabLabels","convertUtfToReadableString","url","replaceAll","_useState","useState","window","location","href","undefined","urlHash","_useState3","find","tabLabel","matchingTabLabel","_useState5","_useState6","activeTab","setActiveTab","useEffect","handleLocationChange","addEventListener","removeEventListener","_useState7","_useState8","uniqueYears","setUniqueYears","_useState9","_useState10","selectedYear","setSelectedYear","_useState11","_useState12","isReadingMore","setIsReadingMore","newsFilteredByPageCategories","filter","NewsCategoryFriendlyNames_ss","some","newsSortedByYear","_useState13","_useState14","newsFilteredByYear","setNewsFilteredByYear","_useState15","_useState16","newsFilteredByCategoryYear","setNewsFilteredByCategoryYear","_useState17","_useState18","newsItemsShortListToRender","setNewsItemsShortListToRender","_useState19","_useState20","newsItemsAllToRender","setNewsItemsAllToRender","uniqueYearsSet","Set","forEach","newsItem","Year_s","add","Array","from","filteredNews","filteredNewsByYear","newsItems","item","_jsx","NewsCard","img","ImageUrl_s","PageUrl_s","heading","Header_s","uniqueElementsSet","uniqueJsxElements","element","elementId","key","has","slice","htmlTabs","length","tab","index","Tab","label","hasNewsInTabCategory","isAllCategories","replace","_jsxs","className","children","htmlFor","id","onChange","e","firstButton","document","querySelector","buttonId","newUrl","history","pushState","urlChange","handleSelectYear","target","value","onClick","_ref2","tabHasNews","_newsFilteredByCatego","disabled","concat","_ref3","rel","src","NewsOverviewBlockModule","_createClass","elem","_classCallCheck","self","this","modelJson","dataset","JSON","parse","selectedNewsCategories","init","ReactDOM","NewsOverviewBlock"],"sourceRoot":""}