{"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":""}