{"version":3,"file":"newsApp.js","sources":["../../../src/modules/Api/NewsApi.tsx","../../../src/modules/Contexts/NewsProvider.tsx","../../../src/modules/models/UIModels/News.ui.tsx","../../../src/modules/News/news.tsx","../../../src/newsApp.tsx"],"sourcesContent":["import { getImageCrop } from \"../helpers/ImageCrop\";\r\nimport { News } from \"../models/News\";\r\nimport { NewsUmbraco } from \"../models/Umbraco/News.umb\";\r\nimport UmbracoApiResult from \"../models/UmbracoApiResult\";\r\n\r\nexport const NewsApi = {\r\n async getNews(\r\n take?: number,\r\n skip?: number\r\n ): Promise<{\r\n total: number;\r\n items: Record[];\r\n }> {\r\n const takeAmount = take ?? 1000;\r\n const skipAmount = skip ?? 0;\r\n const response = await fetch(\r\n `/umbraco/delivery/api/v2/content?fetch=children:nyheder&skip=${skipAmount}&take=${takeAmount}&sort=publishDate:desc`\r\n );\r\n return response.json().then((data: UmbracoApiResult) => {\r\n return {\r\n items: data.items.map((item: NewsUmbraco) => {\r\n const imageCrop = getImageCrop(item);\r\n\r\n //strongly typed object of event\r\n const returnObject: News = {\r\n iID: item.id,\r\n title: item.name,\r\n teaser: item.properties.contentSettingsTeaser,\r\n pictures: {\r\n threeTwo: imageCrop,\r\n },\r\n link: item.route.path,\r\n publishedDate: new Date(\r\n item.properties.contentDetailsPublishedDate\r\n ),\r\n formatTypes: [],\r\n themeTypes: [],\r\n sectorTypes: [],\r\n };\r\n // create return opbject with the correct types\r\n if (item.contentType === \"newsPageV2024\") {\r\n returnObject.themeTypes = item.properties.newsThemeTypes\r\n ? item.properties.newsThemeTypes.map((c) => c.name)\r\n : [];\r\n returnObject.formatTypes = item.properties.newsFormatTypes\r\n ? item.properties.newsFormatTypes.map((c) => c.name)\r\n : [];\r\n returnObject.sectorTypes = item.properties.contentDetailsTagsSector\r\n ? item.properties.contentDetailsTagsSector\r\n : [];\r\n } else {\r\n returnObject.themeTypes = item.properties.contentDetailsTagsTheme\r\n ? item.properties.contentDetailsTagsTheme\r\n : [];\r\n returnObject.sectorTypes = item.properties.contentDetailsTagsSector\r\n ? item.properties.contentDetailsTagsSector\r\n : [];\r\n returnObject.formatTypes = item.properties.articleFormatTypes\r\n ? item.properties.articleFormatTypes\r\n : [\"Artikel\"];\r\n }\r\n\r\n return returnObject;\r\n }),\r\n total: data.total,\r\n };\r\n });\r\n },\r\n};\r\n","import React, { createContext, useEffect, useState } from \"react\";\r\nimport { NewsApi } from \"../Api/NewsApi\";\r\nimport { News } from \"../models/News\";\r\nimport { OptionType } from \"./CaseProvider\";\r\n\r\ninterface NewsProviderProps {\r\n children: React.ReactNode;\r\n}\r\n\r\ninterface NewsContextProps {\r\n news: News[];\r\n featuredNews: News[];\r\n loading: boolean;\r\n setLoading: React.Dispatch>;\r\n filteredNews: News[];\r\n newsToDisplay: News[];\r\n selectedThemes: string[];\r\n themeTypes: OptionType[];\r\n formatTypes: OptionType[];\r\n setSelectedThemes: React.Dispatch>;\r\n selectedFormats: string[];\r\n setSelectedFormats: React.Dispatch>;\r\n takeAmount: number;\r\n setTakeAmount: React.Dispatch>;\r\n skipAmount: number;\r\n setSkipAmount: React.Dispatch>;\r\n totalAmount: number;\r\n selectedDates: Date[];\r\n setSelectedDates: React.Dispatch>;\r\n sectorTypes: OptionType[];\r\n selectedSectors: string[];\r\n setSelectedSectors: React.Dispatch>;\r\n filtersInUse: boolean;\r\n setFiltersInUse: React.Dispatch>;\r\n loadingMore: boolean;\r\n setLoadingMore: React.Dispatch>;\r\n}\r\n\r\nexport const NewsContext = createContext({\r\n news: [],\r\n featuredNews: [],\r\n loading: true,\r\n setLoading: () => {},\r\n newsToDisplay: [],\r\n filteredNews: [],\r\n selectedThemes: [],\r\n themeTypes: [],\r\n formatTypes: [],\r\n setSelectedThemes: () => {},\r\n selectedFormats: [],\r\n setSelectedFormats: () => {},\r\n takeAmount: 12,\r\n setTakeAmount: () => {},\r\n skipAmount: 0,\r\n setSkipAmount: () => {},\r\n totalAmount: 0,\r\n selectedDates: [],\r\n setSelectedDates: (dates: any) => {},\r\n sectorTypes: [],\r\n selectedSectors: [],\r\n setSelectedSectors: () => {},\r\n filtersInUse: false,\r\n setFiltersInUse: () => {},\r\n loadingMore: false,\r\n setLoadingMore: () => {},\r\n});\r\n\r\nexport const NewsProvider: React.FC = ({ children }) => {\r\n const [news, setNews] = React.useState([]);\r\n const [featuredNews, setFeaturedNews] = React.useState([]);\r\n const [filteredNews, setFilteredNews] = React.useState([]);\r\n const [newsToDisplay, setNewsToDisplay] = React.useState([]);\r\n const [loading, setLoading] = React.useState(true);\r\n const [themeTypes, setThemeTypes] = React.useState([]);\r\n const [selectedThemes, setSelectedThemes] = React.useState([]);\r\n const [selectedDates, setSelectedDates] = useState([]);\r\n const [formatTypes, setFormatTypes] = React.useState([]);\r\n const [selectedFormats, setSelectedFormats] = React.useState([]);\r\n const [takeAmount, setTakeAmount] = React.useState(12);\r\n const [skipAmount, setSkipAmount] = React.useState(0);\r\n const [totalAmount, setTotalAmount] = React.useState(0);\r\n const [sectorTypes, setSectorTypes] = React.useState([]);\r\n const [selectedSectors, setSelectedSectors] = React.useState([]);\r\n const [filtersInUse, setFiltersInUse] = useState(false);\r\n const [loadingMore, setLoadingMore] = useState(false);\r\n const filterNewsByStringArray = (\r\n news: News[],\r\n selectedTypes: string[],\r\n newsType: string\r\n ) => {\r\n return news.filter((c: News) => {\r\n if (selectedTypes.length !== 0) {\r\n return (\r\n c[newsType] &&\r\n c[newsType].some((t: string) => selectedTypes.includes(t))\r\n );\r\n } else {\r\n return true;\r\n }\r\n });\r\n };\r\n const filterNewsByDate = (news: News[], dates: Date[] | null) => {\r\n if (dates === null || dates.length === 0) {\r\n return news;\r\n }\r\n\r\n return news.filter((c: News) => {\r\n const firstDate = dates[0];\r\n const lastDate = dates[1];\r\n // only check on date and not time\r\n const publishedDate = new Date(c.publishedDate);\r\n if (firstDate === null) {\r\n return true;\r\n }\r\n publishedDate.setHours(0, 0, 0, 0);\r\n\r\n // if second date is not set, only check if published date is the same or after the first date\r\n if (lastDate === null || lastDate === undefined) {\r\n firstDate.setHours(0, 0, 0, 0);\r\n return c.publishedDate >= firstDate;\r\n }\r\n // if both dates are set, check if published date is between the two dates\r\n if ((firstDate !== null && lastDate !== null) || lastDate !== undefined) {\r\n lastDate.setHours(0, 0, 0, 0);\r\n firstDate.setHours(0, 0, 0, 0);\r\n\r\n if (publishedDate >= firstDate && publishedDate <= lastDate) {\r\n return true;\r\n }\r\n }\r\n });\r\n };\r\n const updateAvailableTypes = (news: News[]) => {\r\n // update sector types and set them to disabled if they are not in the newCases array\r\n setFormatTypes(() => {\r\n return formatTypes.map((t) => {\r\n return {\r\n label: t.label,\r\n value: t.value,\r\n disabled: !news.some((c) => {\r\n return c.formatTypes.includes(t.value);\r\n }),\r\n };\r\n }).sort((a, b) => {\r\n // sort the format types alphabetically with the ones that are disabled last\r\n if (a.disabled && !b.disabled) {\r\n return 1;\r\n }\r\n if (!a.disabled && b.disabled) {\r\n return -1;\r\n }\r\n return a.label.localeCompare(b.label);\r\n }).sort((a, b) => {\r\n //sort the selected format types to the top\r\n if (selectedFormats.includes(a.value) && !selectedFormats.includes(b.value)) {\r\n return -1;\r\n }\r\n if (!selectedFormats.includes(a.value) && selectedFormats.includes(b.value)) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n });\r\n // update theme types and set them to disabled if they are not in the newCases array\r\n setThemeTypes(() => {\r\n return themeTypes.map((t) => {\r\n return {\r\n label: t.label,\r\n value: t.value,\r\n disabled: !news.some((c) => {\r\n return c.themeTypes.includes(t.value);\r\n }),\r\n };\r\n }).sort((a, b) => {\r\n // sort the theme types alphabetically with the ones that are disabled last\r\n if (a.disabled && !b.disabled) {\r\n return 1;\r\n }\r\n if (!a.disabled && b.disabled) {\r\n return -1;\r\n }\r\n return a.label.localeCompare(b.label);\r\n }).sort((a, b) => {\r\n //sort the selected theme types to the top\r\n if (selectedThemes.includes(a.value) && !selectedThemes.includes(b.value)) {\r\n return -1;\r\n }\r\n if (!selectedThemes.includes(a.value) && selectedThemes.includes(b.value)) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n });\r\n setSectorTypes(() => {\r\n return sectorTypes.map((t) => {\r\n return {\r\n label: t.label,\r\n value: t.value,\r\n disabled: !news.some((c) => {\r\n return c.sectorTypes.includes(t.value);\r\n }),\r\n };\r\n }).sort((a, b) => {\r\n // sort the sector types alphabetically with the ones that are disabled last\r\n if (a.disabled && !b.disabled) {\r\n return 1;\r\n }\r\n if (!a.disabled && b.disabled) {\r\n return -1;\r\n }\r\n return a.label.localeCompare(b.label);\r\n }).sort((a, b) => {\r\n //sort the selected sector types to the top\r\n if (selectedSectors.includes(a.value) && !selectedSectors.includes(b.value)) {\r\n return -1;\r\n }\r\n if (!selectedSectors.includes(a.value) && selectedSectors.includes(b.value)) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n });\r\n };\r\n const getFiltersFromUrl = () => {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const formatTypes = urlParams.getAll(\"formats\");\r\n const themeTypes = urlParams.getAll(\"themes\");\r\n const newsDates = urlParams.getAll(\"dates\");\r\n const sectorTypes = urlParams.getAll(\"sectors\");\r\n const take = urlParams.get(\"take\");\r\n const skip = urlParams.get(\"skip\");\r\n\r\n if (\r\n formatTypes.length === 0 &&\r\n themeTypes.length === 0 &&\r\n take === null &&\r\n skip === null &&\r\n newsDates.length > 0 &&\r\n sectorTypes.length === 0\r\n ) {\r\n setFiltersInUse(false);\r\n return;\r\n }\r\n if (\r\n formatTypes.length > 0 ||\r\n !formatTypes.every((type) => formatTypes.includes(type))\r\n ) {\r\n setSelectedFormats(formatTypes);\r\n }\r\n if (\r\n themeTypes.length > 0 ||\r\n !themeTypes.every((type) => themeTypes.includes(type))\r\n ) {\r\n setSelectedThemes(themeTypes);\r\n }\r\n if (\r\n newsDates.length > 0 ||\r\n !newsDates.every((type) => newsDates.includes(type))\r\n ) {\r\n setSelectedDates(newsDates.map((d) => new Date(d)));\r\n }\r\n\r\n if (take !== null && takeAmount !== parseInt(take)) {\r\n setTakeAmount(parseInt(take));\r\n }\r\n if (skip !== null && skipAmount !== parseInt(skip)) {\r\n setSkipAmount(parseInt(skip));\r\n }\r\n if (\r\n sectorTypes.length > 0 ||\r\n !sectorTypes.every((type) => sectorTypes.includes(type))\r\n ) {\r\n setSelectedSectors(sectorTypes);\r\n }\r\n setFiltersInUse(true);\r\n };\r\n\r\n const setFiltersInUrl = () => {\r\n const urlParams = new URLSearchParams();\r\n\r\n if (selectedFormats.length !== 0) {\r\n selectedFormats.forEach((t) => {\r\n urlParams.append(\"formats\", t);\r\n });\r\n }\r\n if (selectedThemes.length !== 0) {\r\n selectedThemes.forEach((t) => {\r\n urlParams.append(\"themes\", t);\r\n });\r\n }\r\n\r\n if (selectedDates !== null && selectedDates.length !== 0) {\r\n selectedDates.forEach((t) => {\r\n if (t !== null) {\r\n urlParams.append(\"dates\", t.toISOString());\r\n }\r\n });\r\n }\r\n if (selectedSectors.length !== 0) {\r\n selectedSectors.forEach((t) => {\r\n urlParams.append(\"sectors\", t);\r\n });\r\n }\r\n urlParams.append(\"take\", takeAmount.toString());\r\n urlParams.append(\"skip\", skipAmount.toString());\r\n window.history.replaceState(\r\n {},\r\n \"\",\r\n `${window.location.pathname}?${urlParams.toString()}`\r\n );\r\n };\r\n useEffect(() => {\r\n NewsApi.getNews().then((data) => {\r\n const formatTypesList: OptionType[] = [];\r\n const themeTypesList: OptionType[] = [];\r\n const sectorTypesList: OptionType[] = [];\r\n //sort the news by latest first and then slice the first three to featured news\r\n const newsListAfterThree: News[] = data.items.sort().slice(3) as News[];\r\n newsListAfterThree.forEach((n) => {\r\n n.formatTypes.forEach((t: string) => {\r\n if (!formatTypesList.some((s) => s.value === t)) {\r\n formatTypesList.push({ label: t, value: t, disabled: false });\r\n }\r\n });\r\n n.themeTypes.forEach((t: string) => {\r\n if (!themeTypesList.some((s) => s.value === t)) {\r\n themeTypesList.push({ label: t, value: t, disabled: false });\r\n }\r\n });\r\n n.sectorTypes.forEach((t: string) => {\r\n if (!sectorTypesList.some((s) => s.value === t)) {\r\n sectorTypesList.push({ label: t, value: t, disabled: false });\r\n }\r\n });\r\n });\r\n setNews(data.items as News[]);\r\n setFormatTypes(formatTypesList.sort((a, b) => a.label.localeCompare(b.label)));\r\n setThemeTypes(themeTypesList.sort((a, b) => a.label.localeCompare(b.label)));\r\n setSectorTypes(sectorTypesList.sort((a, b) => a.label.localeCompare(b.label)));\r\n setTotalAmount(data.total);\r\n });\r\n }, []);\r\n useEffect(() => {\r\n setNewsToDisplay(() => {\r\n return filteredNews.slice(skipAmount, skipAmount + takeAmount);\r\n });\r\n }, [skipAmount, takeAmount]);\r\n useEffect(() => {\r\n if (news.length > 0) {\r\n getFiltersFromUrl();\r\n setFilteredNews(news.slice(3) as News[]);\r\n setFeaturedNews(news.slice(0, 3) as News[]);\r\n }\r\n }, [news]);\r\n useEffect(() => {\r\n setNewsToDisplay(() => {\r\n return filteredNews.slice(skipAmount, skipAmount + takeAmount);\r\n });\r\n if (\r\n selectedFormats.length === 0 &&\r\n selectedThemes.length === 0 &&\r\n takeAmount === 12 &&\r\n skipAmount === 0 &&\r\n selectedDates.length === 0 &&\r\n selectedSectors.length === 0\r\n ) {\r\n setFiltersInUse(false);\r\n } else {\r\n setFiltersInUse(true);\r\n }\r\n if (filteredNews.length > 0) {\r\n setTimeout(() => {\r\n setLoading(false);\r\n setLoadingMore(false);\r\n }, 500);\r\n } else {\r\n setTimeout(() => {\r\n setLoading(false);\r\n setLoadingMore(false);\r\n }, 500);\r\n }\r\n }, [filteredNews]);\r\n useEffect(() => {\r\n if (news.length > 0 && filteredNews.length > 0) {\r\n setFiltersInUrl();\r\n }\r\n }, [newsToDisplay]);\r\n useEffect(() => {\r\n setFilteredNews(() => {\r\n let newNewsWithTheme: News[] = [];\r\n let newNews: News[] = [];\r\n\r\n if (\r\n selectedFormats.length === 0 &&\r\n selectedThemes.length === 0 &&\r\n selectedDates === null &&\r\n selectedSectors.length === 0\r\n ) {\r\n updateAvailableTypes(news.slice(3));\r\n return news.slice(3);\r\n }\r\n\r\n // copy cases to newCases array\r\n newNews = [...news.slice(3)];\r\n // add the filtered cases to the newCases array if they are not already in the array and are not duplicates and are not empty\r\n newNews = filterNewsByStringArray(newNews, selectedThemes, \"themeTypes\");\r\n newNews = filterNewsByStringArray(\r\n newNews,\r\n selectedFormats,\r\n \"formatTypes\"\r\n );\r\n newNews = filterNewsByStringArray(\r\n newNews,\r\n selectedSectors,\r\n \"sectorTypes\"\r\n );\r\n newNews = filterNewsByDate(newNews, selectedDates);\r\n newNews = newNews.filter(\r\n (c, i, a) => a.findIndex((t) => t.iID === c.iID) === i\r\n );\r\n updateAvailableTypes(newNews);\r\n //setSkipAmount(0);\r\n //setTakeAmount(12);\r\n return newNews;\r\n });\r\n setLoading(true);\r\n //add all cases that match the selected types and dont remove existing filtered cases only if they are duplicates\r\n }, [selectedFormats, selectedThemes, selectedSectors, selectedDates]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport { News } from \"../../models/News\";\r\n\r\nexport interface NewsUIProps {\r\n iID: string;\r\n title: string;\r\n teaser: string;\r\n pictures: {\r\n threeTwo: string;\r\n };\r\n link: string;\r\n publishedDate: Date;\r\n}\r\n\r\nexport const NewsUI: React.FC = ({\r\n iID,\r\n title,\r\n pictures,\r\n link,\r\n publishedDate,\r\n}) => {\r\n const formattedDate = new Intl.DateTimeFormat(\"da-DK\", {\r\n day: \"2-digit\",\r\n month: \"long\",\r\n year: \"numeric\",\r\n }).format(publishedDate);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport interface featuredNewsProps {\r\n iID: string;\r\n title: string;\r\n pictures: {\r\n threeTwo: string;\r\n };\r\n link: string;\r\n publishedDate: Date;\r\n containerId: string;\r\n}\r\n\r\nexport const NewsUIFeatured: React.FC = ({\r\n iID,\r\n title,\r\n pictures,\r\n link,\r\n publishedDate,\r\n containerId,\r\n}) => {\r\n const formattedDate = new Intl.DateTimeFormat(\"da-DK\", {\r\n day: \"2-digit\",\r\n month: \"long\",\r\n year: \"numeric\",\r\n }).format(publishedDate);\r\n return (\r\n \r\n );\r\n};\r\n","import React, { useContext, useEffect } from \"react\";\r\nimport { NewsContext } from \"../Contexts/NewsProvider\";\r\nimport { NewsUI, NewsUIFeatured } from \"../models/UIModels/News.ui\";\r\nimport DropDownFilter from \"../FilterComponents/DropDownFilter\";\r\nimport { Calendar } from \"primereact/calendar\";\r\nimport { Button } from \"primereact/button\";\r\nimport { Skeleton } from \"primereact/skeleton\";\r\nimport { ScrollTop } from \"primereact/scrolltop\";\r\n\r\nconst NewsApp: React.FC = () => {\r\n // News context context\r\n const {\r\n news,\r\n featuredNews,\r\n loading,\r\n setLoading,\r\n newsToDisplay,\r\n filteredNews,\r\n selectedThemes,\r\n themeTypes,\r\n formatTypes,\r\n setSelectedThemes,\r\n selectedFormats,\r\n setSelectedFormats,\r\n takeAmount,\r\n setTakeAmount,\r\n skipAmount,\r\n setSkipAmount,\r\n totalAmount,\r\n sectorTypes,\r\n setSelectedSectors,\r\n selectedSectors,\r\n setSelectedDates,\r\n selectedDates,\r\n loadingMore,\r\n setLoadingMore,\r\n filtersInUse,\r\n } = useContext(NewsContext);\r\n useEffect(() => {}, [featuredNews]);\r\n\r\n const reset = () => {\r\n // Reset the filter\r\n setSelectedThemes([]);\r\n setSelectedFormats([]);\r\n setSelectedDates([]);\r\n setTakeAmount(12);\r\n };\r\n const resetDates = () => {\r\n setSelectedDates([]);\r\n };\r\n const datePickerClick = (value: any) => {\r\n // Handle date picker click\r\n if (value[0] !== undefined) {\r\n setSelectedDates(value);\r\n }\r\n };\r\n const loadMore = () => {\r\n //\r\n };\r\n const onThemeChange = (selectedOptions: any) => {\r\n // Handle theme change\r\n setSelectedThemes(selectedOptions);\r\n };\r\n const onFormatChange = (selectedOptions: any) => {\r\n // Handle format change\r\n setSelectedFormats(selectedOptions);\r\n };\r\n const onSectorChange = (selectedOptions: any) => {\r\n // Handle sector change\r\n\r\n setSelectedSectors(selectedOptions);\r\n };\r\n const showFilter = false;\r\n const skeleton = (amount: number) => {\r\n // return 12 skeleton items\r\n return Array.from({ length: amount }).map((_, index) => (\r\n
\r\n \r\n
\r\n ));\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n

Aktuelt

\r\n

Her finder du de seneste nyheder fra COPI

\r\n
\r\n
\r\n
\r\n {featuredNews[0] && featuredNews.length != 0 ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n {featuredNews[1] ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n {featuredNews[2] ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n\r\n

Flere nyheder

\r\n\r\n \r\n
\r\n
\r\n {formatTypes.length > 0 && (\r\n
\r\n \r\n
\r\n )}\r\n {themeTypes.length > 0 && (\r\n
\r\n \r\n
\r\n )}\r\n {/*showFilter ||\r\n (sectorTypes.length > 0 && (\r\n
\r\n \r\n
\r\n ))*/}\r\n
\r\n resetDates()}\r\n onTodayButtonClick={(e) => datePickerClick(e)}\r\n locale=\"da\"\r\n showButtonBar\r\n value={selectedDates}\r\n dateFormat={\"dd.mm.yy\"}\r\n placeholder=\"Filtrer på dato\"\r\n onChange={(e) => datePickerClick(e.value)}\r\n selectionMode=\"range\"\r\n readOnlyInput\r\n hideOnRangeSelection\r\n />\r\n
\r\n
\r\n \r\n Nulstil filtre\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n {loading\r\n ? skeleton(newsToDisplay.length > 0 ? newsToDisplay.length : 12)\r\n : newsToDisplay.map((article, index) => (\r\n \r\n ))}\r\n
\r\n \r\n {filteredNews?.length > takeAmount && (\r\n setTakeAmount(takeAmount + 12)}\r\n >\r\n Indlæs flere\r\n \r\n )}\r\n \r\n );\r\n};\r\nexport default NewsApp;\r\n","\r\nimport React from 'react'\r\nimport ReactDOM from 'react-dom/client'\r\nimport { NewsProvider } from './modules/Contexts/NewsProvider';\r\nimport { addLocale, PrimeReactProvider } from 'primereact/api';\r\nimport \"primereact/resources/themes/lara-light-cyan/theme.css\";\r\nimport NewsApp from './modules/News/news';\r\naddLocale('da', {\r\n firstDayOfWeek: 1,\r\n dayNames: [\"søndag\", \"mandag\", \"tirsdag\", \"onsdag\", \"torsdag\", \"fredag\", \"lørdag\"],\r\n dayNamesShort: [\"søn\", \"man\", \"tir\", \"ons\", \"tor\", \"fre\", \"lør\"],\r\n dayNamesMin: [\"søn\", \"man\", \"tir\", \"ons\", \"tor\", \"fre\", \"lør\"],\r\n monthNames: [\"januar\", \"februar\", \"marts\", \"april\", \"maj\", \"juni\", \"juli\", \"august\", \"september\", \"oktober\", \"november\", \"december\"],\r\n monthNamesShort: [\"jan\", \"feb\", \"mar\", \"apr\", \"maj\", \"jun\", \"jul\", \"aug\", \"sep\", \"okt\", \"nov\", \"dec\"],\r\n today: 'I dag',\r\n clear: 'Ryd',\r\n weekHeader: 'Uge',\r\n dateFormat: 'dd.mm.yy',\r\n weak: 'Svag',\r\n medium: 'Medium',\r\n strong: 'Stærk',\r\n accept: 'Accepter',\r\n reject: 'Afvis',\r\n choose: 'Vælg',\r\n upload: 'Upload',\r\n cancel: 'Annuller',\r\n addRule: 'Tilføj regel',\r\n am: 'AM',\r\n pm: 'PM',\r\n apply: 'Anvend',\r\n chooseDate: 'Vælg dato',\r\n chooseMonth: 'Vælg måned',\r\n chooseYear: 'Vælg år',\r\n close: 'Luk',\r\n contains: 'Indeholder',\r\n startsWith: 'Starter med'\r\n});\r\nReactDOM.createRoot(document.getElementById('react-news')!).render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n)"],"names":["NewsApi","take","skip","data","item","imageCrop","getImageCrop","returnObject","c","NewsContext","createContext","dates","NewsProvider","children","news","setNews","React","featuredNews","setFeaturedNews","filteredNews","setFilteredNews","newsToDisplay","setNewsToDisplay","loading","setLoading","themeTypes","setThemeTypes","selectedThemes","setSelectedThemes","selectedDates","setSelectedDates","useState","formatTypes","setFormatTypes","selectedFormats","setSelectedFormats","takeAmount","setTakeAmount","skipAmount","setSkipAmount","totalAmount","setTotalAmount","sectorTypes","setSectorTypes","selectedSectors","setSelectedSectors","filtersInUse","setFiltersInUse","loadingMore","setLoadingMore","filterNewsByStringArray","selectedTypes","newsType","t","filterNewsByDate","firstDate","lastDate","publishedDate","updateAvailableTypes","a","b","getFiltersFromUrl","urlParams","newsDates","type","d","setFiltersInUrl","useEffect","formatTypesList","themeTypesList","sectorTypesList","n","s","newNews","i","jsx","NewsUI","iID","title","pictures","link","formattedDate","jsxs","NewsUIFeatured","containerId","NewsApp","useContext","reset","resetDates","datePickerClick","value","onThemeChange","selectedOptions","onFormatChange","skeleton","amount","_","index","Skeleton","Fragment","DropDownFilter","Calendar","e","Button","article","ScrollTop","addLocale","ReactDOM","PrimeReactProvider"],"mappings":"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"}