{"version":3,"file":"news-and-events-overview.683d5383.js","sources":["../../../src/js/archive/news-and-events-overview.ts"],"sourcesContent":["import Alpine from 'alpinejs'\n\ntype Pagination = {\n previousTarget: number | false\n nextTarget: number | false\n links: Array\n}\n\ntype DotsLink = {\n type: 'dots'\n targetPage: number\n}\n\ntype PageLink = {\n type: 'link'\n targetPage: number\n isActive: boolean\n}\n\nexport default async function (newsAndEventsOverview: HTMLElement) {\n const newsWrapper =\n newsAndEventsOverview.querySelector('.news-wrapper')\n const language = newsWrapper?.dataset.language as string\n\n Alpine.store('newsAndEventsOverview', {\n _estimatedTotalHits: 0,\n _unsortedNewsAndEvents: [],\n\n newsAndEventsLimit: 12,\n currentPage: 1,\n newsAndEventsLoading: false,\n fetchError: false,\n\n get newsAndEvents(): any[] {\n const newsAndEvents = this._unsortedNewsAndEvents\n .sort((a, b) => {\n const aDate = new Date(\n a.event === '1' ? a.eventStartDate : a.postDate\n ).getTime()\n const bDate = new Date(\n b.event === '1' ? b.eventStartDate : b.postDate\n ).getTime()\n\n return bDate - aDate\n })\n .slice(\n this.newsAndEventsLimit * (this.currentPage - 1),\n this.newsAndEventsLimit * this.currentPage\n )\n\n return newsAndEvents\n },\n get _filters(): string {\n return '&settings[filter]='\n },\n get _isFiltering(): boolean {\n return false\n },\n get _maxPage(): number {\n if (this._estimatedTotalHits === 0) {\n return 1\n } else {\n return Math.ceil(\n this._estimatedTotalHits / this.newsAndEventsLimit\n )\n }\n },\n get pagination(): Pagination | false {\n if (this._maxPage === 1) return false\n if (this.fetchError) return false\n\n const pagination: Pagination = {\n previousTarget:\n this.currentPage === 1 ? false : this.currentPage - 1,\n nextTarget:\n this.currentPage === this._maxPage\n ? false\n : this.currentPage + 1,\n links: [],\n }\n\n for (let pageId = 1; pageId <= this._maxPage; pageId++) {\n if (\n pageId === 1 ||\n pageId === this._maxPage ||\n pageId === this.currentPage ||\n pageId === this.currentPage - 1 ||\n pageId === this.currentPage + 1\n ) {\n pagination.links.push({\n type: 'link',\n targetPage: pageId,\n isActive: pageId === this.currentPage,\n })\n } else if (pageId === 2 || pageId === this._maxPage - 1) {\n pagination.links.push({\n type: 'dots',\n targetPage: pageId,\n })\n }\n }\n\n return pagination\n },\n\n getDateString(item: any): string {\n let dateHtml: string = ''\n\n function getDateHtml(date: Date) {\n const dateString = new Date(date).toLocaleDateString(\n document.documentElement.lang || navigator.language,\n {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n }\n )\n return ``\n }\n\n if (item.event && item.eventStartDate) {\n dateHtml = getDateHtml(item.eventStartDate)\n if (item.eventEndDate) {\n dateHtml += ` - ${getDateHtml(item.eventEndDate)}`\n }\n } else {\n dateHtml = getDateHtml(item.postDate)\n }\n\n return dateHtml\n },\n\n async getNewsAndEvents(): Promise {\n this.newsAndEventsLoading = true\n this._unsortedNewsAndEvents = []\n this.fetchError = false\n\n const response = await fetchProjectsByParams(\n language == 'en' ? '' : '/' + language,\n 'search/filter',\n `&settings[limit]=1000&settings[offset]${this._filters}`\n )\n\n if (response.error) {\n this.fetchError = true\n } else {\n this._estimatedTotalHits = response.estimatedTotalHits\n this._unsortedNewsAndEvents = response.hits\n }\n\n this.newsAndEventsLoading = false\n\n async function fetchProjectsByParams(\n lang: string,\n searchType: 'multi-search/default-results' | 'search/filter',\n urlQueryParams: string\n ): Promise {\n return await fetch(\n `${lang}/actions/craft-meilisearch/${searchType}?search=&index=newsAndEvents${urlQueryParams}`\n )\n .then((response) => response.json())\n .then((data) => {\n return data\n })\n .catch(() => {\n return {\n error: true,\n }\n })\n }\n },\n })\n\n document.addEventListener('alpine:init', () => {\n Alpine.effect(() => {\n if (Alpine.store('newsAndEventsOverview').currentPage) {\n Alpine.store('newsAndEventsOverview').getNewsAndEvents()\n }\n })\n })\n\n Alpine.start()\n}\n"],"names":["newsAndEventsOverview","newsWrapper","language","Alpine","a","b","aDate","pagination","pageId","item","dateHtml","getDateHtml","date","dateString","response","fetchProjectsByParams","lang","searchType","urlQueryParams","data"],"mappings":"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"}