{"version":3,"file":"static/js/4271.b4bad914.chunk.js","mappings":"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","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":""}