{"version":3,"file":"component---src-pages-programm-js-30414ecc46395cf09ef0.js","mappings":"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","sources":["webpack://n-ou/./src/content/programm.js","webpack://n-ou/./src/components/calendar/groupEvents.js","webpack://n-ou/./src/components/calendar/StartingToday/starting-today.module.css","webpack://n-ou/./src/components/calendar/calendar.module.css","webpack://n-ou/./src/components/calendar/EventCard/event-card.module.css","webpack://n-ou/./node_modules/clsx/dist/clsx.m.js","webpack://n-ou/./src/components/calendar/EventCard/index.jsx","webpack://n-ou/./src/components/calendar/StartingToday/index.jsx","webpack://n-ou/./src/components/calendar/EndingToday/index.jsx","webpack://n-ou/./src/components/calendar/EndingToday/ending-today.module.css","webpack://n-ou/./src/components/calendar/ContinuingThroughToday/index.jsx","webpack://n-ou/./src/components/calendar/ContinuingThroughToday/continuing-through-today.module.css","webpack://n-ou/./src/components/calendar/Tabs/index.jsx","webpack://n-ou/./src/components/calendar/Tabs/tabs.module.css","webpack://n-ou/./src/components/calendar/index.jsx","webpack://n-ou/./src/pages/programm.js","webpack://n-ou/./utils/formatdate.js","webpack://n-ou/./utils/path.js"],"sourcesContent":["\nconst programmContent = {\n german: {\n headline: \"PROGRAMM \",\n secondHeadlineCorona: \"Corona-Information\",\n coronaInfoFirst: \"Die Corona-Pandemie hat es uns nicht leicht gemacht zu planen! Bis vor kurzer Zeit hatten wir gehofft, dass es die Infektionszahlen Ende Mai ermöglichen, einen Teil des Programms von Nocturnal Unrest vor Ort stattfinden zu lassen. Angesichts der aktuellen Entwicklung der Corona-Pandemie haben wir nun entschieden, dass Nocturnal Unrest zum allergrößten Teil digital stattfinden wird. Bei der Digitalisierung der Formate werden wir weiterhin von unseren Spielstätten Künstlerhaus Mousonturm und Hafen 2 unterstützt (danke!).\",\n coronaInfoSecond: \"Während du diese Zeilen liest, arbeiten alle Beteiligten des Festivals arbeiten mit Hochdruck an der Digitalisierung ihrer Formate – wir vom nOu-Kollektiv möchten uns an dieser Stelle bei allen Künstler:innen, Wissenschaftler:innen, Expert:inenn, Techniker:innen und allen weiteren involvierten Personen für diese fulminante Arbeit bedanken! Wenn wir könnten, wir würden die Pandemie für euch stoppen!\",\n coronaInfoThirdFirst: \"Mehr zum digitalen Festival findest du unter \",\n coronaInfoThirdLink: \"Digitales\",\n coronaInfoThirdSecond: \". Wir freuen uns darauf, euch digital zu treffen!\",\n disclaimer: \"Das Programm ist in weiten Teilen ab 16 Jahren empfohlen.\",\n },\n english: {\n headline: \"PROGRAMME\",\n secondHeadlineCorona: \"Corona information\",\n coronaInfoFirst: \"The Corona pandemic has not made it easy for us to plan! Until recently, we had hoped that the infection figures at the end of May would allow part of the Nocturnal Unrest programme to take place locally. Given the current development of the Corona pandemic, we have now decided that Nocturnal Unrest will take place digitally for the very most part. For this endeavor, we will be supported by our venues Künstlerhaus Mousonturm and Hafen 2 in the digitalisation of the formats (thank you!).\",\n coronaInfoSecond: \"As you read these lines, all those involved in the festival are working full speed and full energy on the digitization of their projects – we, nOu collective, would like to take this opportunity to thank all the artists, scientists, experts, technicians and everyone else involved in this brilliant, and exhausting, process! If we could, we would stop the pandemic for you!\",\n coronaInfoThirdFirst: \"You can find out more about the digital festival at \",\n coronaInfoThirdLink: \"Digital\",\n coronaInfoThirdSecond: \". We look forward to meeting you digitally!\", \n disclaimer: \"The programme is suitable for audiences from 16 years upwards.\",\n }\n}\nexport {programmContent}","/**\n * @typedef { import(\"./types\").FestivalEvent } FestivalEvent\n * @typedef { import(\"./types\").TimeSlot } TimeSlot\n */\n\nconst festivalDates = [\n '2021-05-20',\n '2021-05-21',\n '2021-05-22',\n '2021-05-23',\n '2021-05-24',\n];\n\n/**\n * @param {string} day\n * @param {string} nextDay\n * @param {FestivalEvent[]} events\n */\nfunction getEventsStartingOn(day, nextDay, events) {\n const startingToday = events.filter((event) => {\n const isToday = event.tag.Datum === day && event.startTimeAsNumber >= 2;\n const isTonight =\n event.tag.Datum === nextDay && event.startTimeAsNumber < 2;\n\n return isToday || isTonight;\n });\n\n /** @type {TimeSlot[]} */\n const slots = [];\n\n for (const event of startingToday) {\n if (slots.length === 0) {\n slots.push({\n timeSlot: event.startTimeAsNumber,\n events: [],\n });\n }\n\n let counter = 0;\n\n while (slots[slots.length - 1].timeSlot !== event.startTimeAsNumber) {\n const lastTimeSlot = slots[slots.length - 1].timeSlot;\n\n slots.push({\n timeSlot: (lastTimeSlot + 1) % 24,\n events: [],\n });\n\n counter++;\n if (counter > 200) {\n throw new Error('Unbounded while loop, event:', event, 'slots:', slots);\n }\n }\n\n slots[slots.length - 1].events.push(event);\n }\n\n return slots;\n}\n\n/**\n * @param {FestivalEvent[]} events\n */\nfunction getEventsDuringFestival(events) {\n return events\n .filter((event) => {\n const hasDate = event.tag && event.tag.Datum;\n return hasDate && festivalDates.includes(event.tag.Datum);\n })\n .map((event) => {\n const startTimeAsNumber = Number(event.Uhrzeit.split(':')[0]);\n const endTimeAsNumber = event.Uhrzeit_ende\n ? Number(event.Uhrzeit_ende.split(':')[0])\n : undefined;\n return { ...event, startTimeAsNumber, endTimeAsNumber };\n })\n .sort((a, b) => {\n if (a.tag.Datum < b.tag.Datum) return -1;\n if (a.tag.Datum > b.tag.Datum) return 1;\n\n if (a.Uhrzeit < b.Uhrzeit) return -1;\n if (a.Uhrzeit > b.Uhrzeit) return 1;\n\n if (a.tag_ende.Datum < b.tag_ende.Datum) return -1;\n if (a.tag_ende.Datum > b.tag_ende.Datum) return 1;\n\n if (a.Uhrzeit_ende < b.Uhrzeit_ende) return -1;\n if (a.Uhrzeit_ende > b.Uhrzeit_ende) return 1;\n\n return 0;\n });\n}\n\n/**\n * @param {string} day\n * @param {FestivalEvent[]} events\n */\nfunction getEventsContinuingThrough(day, events) {\n const continuingThroughToday = events.filter((event) => {\n const start = event.tag.Datum;\n const end = event.tag_ende ? event.tag_ende.Datum : event.tag.Datum;\n\n return start < day && end > day;\n });\n\n return continuingThroughToday;\n}\n\n/**\n * @param {string} day\n * @param {string} nextDay\n * @param {FestivalEvent[]} events\n */\nfunction getEventsEndingOn(day, nextDay, events) {\n const endingToday = events.filter((event) => {\n const start = event.tag.Datum;\n const end = event.tag_ende ? event.tag_ende.Datum : event.tag.Datum;\n\n const startedBeforeToday =\n start < day || (start === day && event.startTimeAsNumber < 2);\n\n const endingToday =\n startedBeforeToday &&\n (event.endTimeAsNumber === undefined || event.endTimeAsNumber > 2) &&\n end === day;\n\n const endingTonight =\n startedBeforeToday && event.endTimeAsNumber < 2 && end === nextDay;\n\n return endingToday || endingTonight;\n });\n\n return endingToday;\n}\n\n/**\n * @param {FestivalEvent[]} events\n */\nexport function groupEvents(events) {\n const eventsDuringFestival = getEventsDuringFestival(events);\n\n const days = festivalDates.map((day, index, array) => {\n const nextDay = array[index + 1];\n\n const startingToday = getEventsStartingOn(\n day,\n nextDay,\n eventsDuringFestival\n );\n const continuingThroughToday = getEventsContinuingThrough(\n day,\n eventsDuringFestival\n );\n const endingToday = getEventsEndingOn(day, nextDay, eventsDuringFestival);\n\n return {\n date: new Date(Date.parse(day)),\n startingToday,\n continuingThroughToday,\n endingToday,\n };\n });\n\n return days;\n}\n","// extracted by mini-css-extract-plugin\nexport var root = \"starting-today-module--root--1Yrx4\";\nexport var timeSlot = \"starting-today-module--timeSlot--3O2Ob\";\nexport var time = \"starting-today-module--time--gWspV\";","// extracted by mini-css-extract-plugin\nexport var calendar = \"calendar-module--calendar--2xeEe\";\nexport var sectionHeading = \"calendar-module--sectionHeading--27bKy\";","// extracted by mini-css-extract-plugin\nexport var root = \"event-card-module--root--1sh3J\";\nexport var description = \"event-card-module--description--1ZI5X\";\nexport var highlight = \"event-card-module--highlight--10Wqx\";\nexport var title = \"event-card-module--title--2cDcj\";\nexport var descriptionWrapper = \"event-card-module--descriptionWrapper--2ya4t\";\nexport var a11yIcon = \"event-card-module--a11yIcon--sb_jL\";\nexport var dark = \"event-card-module--dark--1Q880\";\nexport var bright = \"event-card-module--bright--2J6Yq\";","function toVal(mix) {\n var k,\n y,\n str = '';\n\n if (typeof mix === 'string' || typeof mix === 'number') {\n str += mix;\n } else if (typeof mix === 'object') {\n if (Array.isArray(mix)) {\n for (k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (y = toVal(mix[k])) {\n str && (str += ' ');\n str += y;\n }\n }\n }\n } else {\n for (k in mix) {\n if (mix[k]) {\n str && (str += ' ');\n str += k;\n }\n }\n }\n }\n\n return str;\n}\n\nexport default function () {\n var i = 0,\n tmp,\n x,\n str = '';\n\n while (i < arguments.length) {\n if (tmp = arguments[i++]) {\n if (x = toVal(tmp)) {\n str && (str += ' ');\n str += x;\n }\n }\n }\n\n return str;\n}","/**\n * @typedef { import(\"../types\").A11yIcon } A11yIcon\n */\nimport React from 'react';\nimport * as styles from './event-card.module.css';\nimport { renderMarkdownTitel } from '../../../../utils/rendermarkdown';\nimport { imageUrl } from '../../../../utils/path';\nimport { translate } from '../../../../utils/language';\nimport clsx from 'clsx';\n\n/**\n * @param {{\n * title: string,\n * description: JSX.Element,\n * href: string,\n * prefix?: string,\n * a11yIcons?: A11yIcon[],\n * language: 'german' | 'english'\n * }} props\n */\nexport function EventCard({\n title,\n description,\n href,\n prefix,\n a11yIcons = [],\n language,\n}) {\n const hasA11yIcons = a11yIcons.length !== 0;\n return (\n \n {prefix && (\n <>\n {prefix}{' '}\n \n )}\n {renderMarkdownTitel(title)}\n {(description || hasA11yIcons) && (\n \n {description && (\n \n  — \n {description}\n \n )}\n\n {hasA11yIcons &&\n a11yIcons.map((icon) => (\n \n ))}\n \n )}\n \n );\n}\n\n/**\n * @param {{icon: A11yIcon; language: 'german' | 'english'}} props\n */\nfunction A11yIconImage({ icon, language }) {\n const urlBright = imageUrl(icon.Icon.formats.thumbnail.url);\n const urlDark = imageUrl(icon.Icon_dunkel.formats.thumbnail.url);\n\n const altText = translate(language, icon.Deutsch, icon.Englisch);\n\n return (\n <>\n \n \n \n );\n}\n","/**\n * @typedef { import(\"../types\").TimeSlot } TimeSlot\n */\nimport React from 'react';\nimport * as styles from './starting-today.module.css';\nimport * as calendarStyles from '../calendar.module.css';\nimport { getDayName } from '../../../../utils/formatdate';\nimport { EventCard } from '../EventCard';\nimport { translate } from '../../../../utils/language';\n\n/**\n * @param {{ language: string; slots: TimeSlot[] }} props\n */\nexport function StartingToday({ slots, language }) {\n if (slots.length === 0) {\n return null;\n }\n\n return (\n
\n

\n {translate(language, 'Beginn von', 'Start of')}\n

\n
\n {slots.map((slot) => (\n
\n
{slot.timeSlot}:00
\n
\n {slot.events.map((event) => (\n \n ))}\n
\n
\n ))}\n
\n
\n );\n}\n\n/**\n * @param {string} language\n * @param {FestivalEvent} event\n */\nfunction getDescription(language, event) {\n const location = translate(language, event.ort.Deutsch, event.ort.Englisch);\n\n const end = [\n event.tag.Datum !== event.tag_ende.Datum &&\n getDayName(language, event.tag_ende.Datum).long,\n event.Uhrzeit_ende,\n ]\n .filter(Boolean)\n .join(', ');\n\n if (end) {\n return `${location}, ${translate(language, 'bis', 'until')} ${end}`;\n }\n return location;\n}\n","/**\n * @typedef { import(\"../types\").FestivalEvent } FestivalEvent\n */\nimport React from 'react';\nimport * as styles from './ending-today.module.css';\nimport * as calendarStyles from '../calendar.module.css';\nimport { getDayName } from '../../../../utils/formatdate';\nimport { EventCard } from '../EventCard';\nimport { translate } from '../../../../utils/language';\n\n/**\n * @param {{language: string; events: FestivalEvent[] }} props\n */\nexport function EndingToday({ events, language }) {\n if (events.length === 0) {\n return null;\n }\n\n return (\n
\n

\n {translate(language, 'Ende von', 'End of')}\n

\n\n
\n {events.map((event) => (\n \n ))}\n
\n
\n );\n}\n\n/**\n * @param {string} language\n * @param {FestivalEvent} event\n */\nfunction getDescription(language, event) {\n const location = translate(language, event.ort.Deutsch, event.ort.Englisch);\n\n const end = (() => {\n const dayName = getDayName(language, event.tag_ende.Datum).long;\n if (event.endTimeAsNumber === undefined) {\n return dayName;\n }\n if (event.endTimeAsNumber < 2) {\n return `${dayName} ${event.Uhrzeit_ende}`;\n }\n\n return event.Uhrzeit_ende;\n })();\n\n return `${location}, ${translate(language, 'bis', 'until')} ${end}`;\n}\n","// extracted by mini-css-extract-plugin\nexport var root = \"ending-today-module--root--1Djv1\";","/**\n * @typedef { import(\"../types\").FestivalEvent } FestivalEvent\n */\nimport React from 'react';\nimport * as styles from './continuing-through-today.module.css';\nimport * as calendarStyles from '../calendar.module.css';\nimport { getDayName } from '../../../../utils/formatdate';\nimport { translate } from '../../../../utils/language';\nimport { EventCard } from '../EventCard';\n\n/**\n * @param {{ language: string; events: FestivalEvent[] }} props\n * @returns\n */\nexport function ContinuingThroughToday({ events, language }) {\n if (events.length === 0) {\n return null;\n }\n\n return (\n
\n

\n {translate(language, 'Durchgängig', 'Durational')}\n

\n
\n {events.map((event) => (\n \n ))}\n
\n
\n );\n}\n\n/**\n * @param {string} language\n * @param {FestivalEvent} event\n */\nfunction getDescription(language, event) {\n const startDay = getDayName(language, event.tag.Datum).long;\n\n const endDay = getDayName(language, event.tag_ende.Datum).long;\n\n return `${startDay}, ${event.Uhrzeit} ${translate(\n language,\n 'bis',\n 'until'\n )} ${endDay} ${event.Uhrzeit_ende ? ', ' + event.Uhrzeit_ende : ''}`;\n}\n","// extracted by mini-css-extract-plugin\nexport var root = \"continuing-through-today-module--root--1mB96\";","/**\n * @typedef { import(\"../types\").FestivalEvent } FestivalEvent\n * @typedef { import(\"../types\").Tab } Tab\n */\nimport React, { useState } from 'react';\nimport clsx from 'clsx';\nimport * as styles from './tabs.module.css';\n\n/**\n * @param {{ defaultTabIndex?: number; tabs: Tab[] }} param0\n */\nexport function Tabs({ defaultTabIndex = 0, tabs }) {\n const [currentTab, setCurrentTab] = useState(defaultTabIndex);\n\n const id = useState(() => `id-${Math.random().toString(36)}`)[0];\n\n return (\n
\n
\n {tabs.map((tab, index) => {\n return (\n setCurrentTab(index)}\n aria-selected={currentTab === index ? true : false}\n aria-controls={`${id}-tabpanel`}\n role=\"tab\"\n id={`${id}-tab${index}`}\n >\n \n {tab.name.short}\n \n \n {tab.name.long}\n \n \n );\n })}\n
\n \n {tabs[currentTab].content}\n
\n \n );\n}\n","// extracted by mini-css-extract-plugin\nexport var tabHeaderBar = \"tabs-module--tabHeaderBar--Y8z7l\";\nexport var tabHeaderButton = \"tabs-module--tabHeaderButton--2uIPE\";\nexport var tabHeaderButtonTextLong = \"tabs-module--tabHeaderButtonTextLong--dLB09\";\nexport var tabHeaderButtonTextShort = \"tabs-module--tabHeaderButtonTextShort--1Wew2\";\nexport var tabHeaderButtonActive = \"tabs-module--tabHeaderButtonActive--3jFQx\";\nexport var tabHeaderButtonInactive = \"tabs-module--tabHeaderButtonInactive--Y47eA\";\nexport var tabContent = \"tabs-module--tabContent--_yLtR\";","/**\n * @typedef { import(\"./types\").FestivalEvent } FestivalEvent\n */\n\nimport { groupEvents } from './groupEvents';\nimport React from 'react';\nimport { StartingToday } from './StartingToday';\nimport { EndingToday } from './EndingToday';\nimport { ContinuingThroughToday } from './ContinuingThroughToday';\nimport * as styles from './calendar.module.css';\nimport { getDayName } from '../../../utils/formatdate';\nimport { Tabs } from './Tabs';\n\n/**\n * @param {{ veranstaltungen: FestivalEvent[]; language: string }} param0\n */\nexport function Calendar({ veranstaltungen, language }) {\n const groupedByDay = groupEvents(veranstaltungen);\n\n const todayIndex = groupedByDay.findIndex((element) => isToday(element.date));\n\n const tabs = groupedByDay.map((day) => ({\n name: getDayName(language, day.date),\n content: (\n
\n \n\n \n\n \n
\n ),\n }));\n\n return (\n
\n = 0 ? todayIndex : undefined}\n />\n
\n );\n}\n\n/**\n * @param {Date} date\n */\nfunction isToday(date) {\n const today = new Date();\n\n return (\n today.getFullYear() === date.getFullYear() &&\n today.getMonth() === date.getMonth() &&\n today.getDate() === date.getDate()\n );\n}\n","import React, { useContext } from \"react\"\nimport { Link } from \"gatsby\"\nimport Template from \"../components/template\"\nimport \"../styles/programm.css\"\nimport { programmContent } from \"../content/programm\"\nimport { SettingsContext } from \"../contexts/settings\"\nimport { graphql } from \"gatsby\"\nimport { imageUrl } from \"../../utils/path\"\nimport {translate} from \"../../utils/language\"\nimport {formatDate, formatDateLong} from \"../../utils/formatdate\"\nimport {renderMarkdown, renderMarkdownTitel} from \"../../utils/rendermarkdown\"\nimport { Calendar } from '../components/calendar';\n\nfunction date (l, tag) {\n const localisedText = formatDate(l, tag.Datum)\n\n \n if(tag.Nummer) {\n return localisedText\n }\n \n return localisedText; \n}\n\nfunction showMonth (l, tag, tag_ende) {\n\tconst dateWithMonth = formatDate(l, tag.Datum)\n\n\n\tif (tag.Datum === tag_ende.Datum) {\n\t\treturn null\n\t} else {\n\t\treturn `${dateWithMonth} - `\n\t}\n}\n\nconst isDuringFestival = (element) => {\n\tconst startDate = new Date(\"2021-05-20\")\n\tconst endDate = new Date(\"2021-05-25\")\n\n\tconst eventDate = new Date(element.tag.Datum)\n\n\treturn startDate <= eventDate && eventDate < endDate\n}\n\nconst timeStringToNumber = (timeString) => timeString ? parseInt(timeString.replace(/:/g, \"\")) : timeString\n \nconst compareElements = (a,b) => {\n\tconst dayCompare = a.tag.Datum.localeCompare(b.tag.Datum)\n\tif (dayCompare !== 0) {\n\t\treturn dayCompare\n\t}\n\t\n\treturn timeStringToNumber(a.Uhrzeit) - timeStringToNumber(b.Uhrzeit)\n}\n\n\nconst ProgrammPage = ({data}) => {\n const [settings,] = useContext(SettingsContext)\n const content = programmContent[settings.language]\n const l = settings.language\n const sortedEvents = data.strapi.veranstaltungs.filter(element => element.tag).sort(compareElements)\n\tconst eventsDuringFestival = sortedEvents.filter(isDuringFestival)\n\tconst otherEvents = sortedEvents.filter((element) => !isDuringFestival(element))\n let lastKnownDate = null\n\n\tconst displayEvent = showDate => v => {\n\t\treturn <>\n\t\t\t{ !showDate? null : \n\t\t\t

{ (() => {\n\t\t\t\tconst text = formatDateLong(l, v.tag.Datum)\n\t\t\t\tif(text !== lastKnownDate) {\n\t\t\t\tlastKnownDate = text;\n\t\t\t\treturn text;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\n\t\n\t\t\t\t})() }\n\t\t\t

}\n\t\t\t

\n\t\t\t\t{renderMarkdownTitel(translate(l, v.Titel_Deutsch, v.Titel_Englisch))}\n\t\t\t

\n\t\t\t
\n\t\t\t\t{\n\t\t\t\t\tv.tag &&\n\t\t\t\t\t
\n\t\t\t\t\t\t{translate(l,\n\t\t\t\t\t\t{showMonth(l, v.tag, v.tag_ende)}\n\t\t\t\t\t\t{date(l, v.tag_ende)}\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tv.Uhrzeit &&\n\t\t\t\t\t
\n\t\t\t\t\t\t{translate(l,\n\t\t\t\t\t\t{v.Uhrzeit}{translate(l, \" Uhr\", \"\")}\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tv.ort &&\n\t\t\t\t\t
\n\t\t\t\t\t\t{translate(l,\n\t\t\t\t\t\t{translate(l, v.ort.Deutsch, v.ort.Englisch)}\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tv.veranstaltungsformat &&\n\t\t\t\t\t
\n\t\t\t\t\t\t{translate(l,\n\t\t\t\t\t\t{translate(l, v.veranstaltungsformat.Deutsch, v.veranstaltungsformat.Englisch)}\n\t\t\t\t\t
\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tv.sprachen && v.sprachen.length !== 0 &&\n\t\t\t\t\t v.sprachen.map(sprache => {\t\n\t\t\t\t\t\treturn
\n\t\t\t\t\t\t{translate(l,\n\t\t\t\t\t\t{translate(l, sprache.Deutsch, sprache.Englisch)}\n\t\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t})}\n\t\t\t\t{ v.barrierefreiheits_eigenschaftens.map(eigenschaften => {\t\n\t\t\t\t\treturn
\n\t\t\t\t\t\t{translate(l,\n\t\t\t\t\t
\n\t\t\t\t})}\n\t\t\t\t\n\t\t\t
\n\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t{\n\t\t\t\t\tv.bild && v.bild.Bild &&\n\t\t\t\t\t\t{translate(l,\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t\n\t\t\t
\n\t\t\t\t {\n\t\t\t\t\tv.vorschautext &&\n\t\t\t\t\t

\n\t\t\t\t\t{renderMarkdown(translate(l, v.vorschautext.Deutsch, v.vorschautext.Englisch))}\n\t\t\t\t\t

\n\t\t\t\t }\n\t\t\t
\n\t\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\n\t\t}\n\n return (\n \n )\n}\n\nexport default ProgrammPage\n\nexport const pageQuery = graphql`\nquery MyQuery {\n\tstrapi {\n\t veranstaltungs {\n\t\treadable_id\n\t\tvorschautext {\n\t\t Deutsch\n\t\t Englisch\n\t\t}\n\t\tbarrierefreiheits_eigenschaftens {\n\t\t\tIcon {\n\t\t\t\turl\n\t\t\t\tformats\n\t\t\t}\n\t\t\tIcon_dunkel {\n\t\t\t\turl\n\t\t\t\tformats\n\t\t\t}\n\t\t\tDeutsch\n\t\t\tEnglisch\n\t\t}\n\t\tbild {\n\t\t\tDeutsch\n\t\t\tEnglisch\n\t\t\tBild {\n\t\t\t url\n\t\t\t}\n\t\t}\n\t\tsprachen {\n\t\t\tDeutsch\n\t\t\tEnglisch\n\t\t}\n\t\ttag {\n\t\t Datum\n\t\t Nummer\n\t\t}\n\t\ttag_ende {\n\t\t\tDatum\n\t\t}\n\t\tort {\n\t\t\tIcon {\n\t\t\t url\n\t\t\t}\n\t\t\tIcon_kontrastreich {\n\t\t\t url\n\t\t\t}\n\t\t\tDeutsch\n\t\t\tEnglisch\n\t\t }\n\t\tveranstaltungsformat {\n\t\t Deutsch\n\t\t Englisch\n\t\t Symbol {\n\t\t\turl\n\t\t }\n\t\t Symbol_kontrastreich {\n\t\t\turl\n\t\t }\n\t\t}\n\t\tTitel_Deutsch\n\t\tTitel_Englisch\n\t\tUhrzeit\n\t\tUhrzeit_ende\n\t }\n\t}\n }\n`;","function getLocale(language) {\n switch (language) {\n case 'german':\n case 'simpleGerman':\n return 'de';\n \n case 'english':\n return 'en';\n \n default:\n return 'en';\n }\n}\n \nexport function formatDate(language, date) {\n try {\n const timestamp = Date.parse(date);\n if (Number.isNaN(timestamp)) {\n console.warn('Received invalid date for formatting:', date);\n return date;\n }\n \n const parsed = new Date(timestamp);\n const locale = getLocale(language);\n const formatted = parsed.toLocaleDateString(locale, {\n day: 'numeric',\n month: 'short',\n });\n \n return formatted;\n } catch (e) {\n console.error('An error occured while formatting \"' + date + '\":', e);\n return date;\n }\n}\n\nexport function formatDateNoMonth(language, date, enddate) {\n try {\n const timestamp = Date.parse(date);\n if (Number.isNaN(timestamp)) {\n console.warn('Received invalid date for formatting:', date);\n return date;\n }\n \n const parsed = new Date(timestamp);\n const locale = getLocale(language);\n const formatted = parsed.toLocaleDateString(locale, {\n day: 'numeric',\n });\n \n return formatted;\n } catch (e) {\n console.error('An error occured while formatting \"' + date + '\":', e);\n return date;\n }\n}\n\n /*\n dann so importieren:\n import { formatDate } from '../../utils/formatDate.js'\n \n und so verwenden:\n
{ formatDate(l, v.tag.Datum) }
\n */\n\nexport function formatDateLong(language, date) {\n try {\n const timestamp = Date.parse(date);\n if (Number.isNaN(timestamp)) {\n console.warn('Received invalid date for formatting:', date);\n return date;\n }\n \n const parsed = new Date(timestamp);\n const locale = getLocale(language);\n const formatted = parsed.toLocaleDateString(locale, {\n weekday: 'long',\n day: 'numeric',\n month: 'short',\n year: 'numeric',\n });\n \n return formatted;\n } catch (e) {\n console.error('An error occured while formatting \"' + date + '\":', e);\n return date;\n }\n}\n\nexport function formatDateBlog(language, date) {\n try {\n const timestamp = Date.parse(date);\n if (Number.isNaN(timestamp)) {\n console.warn('Received invalid date for formatting:', date);\n return date;\n }\n \n const parsed = new Date(timestamp);\n const locale = getLocale(language);\n const formatted = parsed.toLocaleDateString(locale, {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n });\n \n return formatted;\n } catch (e) {\n console.error('An error occured while formatting \"' + date + '\":', e);\n return date;\n }\n}\n\n/**\n * Returns the name of the weekday of the given date.\n * @param {'german' | 'simpleGerman' | 'english'} language\n * @param {Date} date\n */\nexport function getDayName(language, date) {\n if (!date) {\n console.warn('getDayName() was called without passing a date');\n return { short: '', long: '' };\n }\n const parsedDate = new Date(Date.parse(date));\n const locale = getLocale(language);\n\n const formattedLong = parsedDate.toLocaleDateString(locale, {\n weekday: 'long',\n timeZone: 'UTC',\n });\n\n const formattedShort = parsedDate.toLocaleDateString(locale, {\n weekday: 'short',\n timeZone: 'UTC',\n });\n\n return {\n long: formattedLong,\n short: formattedShort,\n };\n}\n","export const imageUrl = path => \"https://strapi.nocturnal-unrest.de\" + path\n\nexport const fileUrl = path => \"https://strapi.nocturnal-unrest.de\" + path"],"names":["programmContent","german","headline","secondHeadlineCorona","coronaInfoFirst","coronaInfoSecond","coronaInfoThirdFirst","coronaInfoThirdLink","coronaInfoThirdSecond","disclaimer","english","festivalDates","groupEvents","events","eventsDuringFestival","filter","event","tag","Datum","includes","map","startTimeAsNumber","Number","Uhrzeit","split","endTimeAsNumber","Uhrzeit_ende","undefined","sort","a","b","tag_ende","getEventsDuringFestival","day","index","array","nextDay","startingToday","slots","isToday","isTonight","length","push","timeSlot","counter","lastTimeSlot","Error","getEventsStartingOn","continuingThroughToday","start","end","getEventsContinuingThrough","endingToday","startedBeforeToday","endingTonight","getEventsEndingOn","date","Date","parse","sectionHeading","descriptionWrapper","a11yIcon","toVal","mix","k","y","str","Array","isArray","tmp","x","i","arguments","EventCard","title","description","href","prefix","a11yIcons","language","hasA11yIcons","className","renderMarkdownTitel","styles","icon","A11yIconImage","key","Englisch","urlBright","imageUrl","Icon","formats","thumbnail","url","urlDark","Icon_dunkel","altText","translate","Deutsch","src","alt","clsx","StartingToday","calendarStyles","slot","readable_id","padStart","Titel_Deutsch","barrierefreiheits_eigenschaftens","getDescription","location","ort","getDayName","long","Boolean","join","EndingToday","dayName","ContinuingThroughToday","startDay","endDay","Tabs","defaultTabIndex","tabs","useState","currentTab","setCurrentTab","id","Math","random","toString","role","tab","onClick","name","short","content","Calendar","veranstaltungen","groupedByDay","todayIndex","findIndex","element","today","getFullYear","getMonth","getDate","isDuringFestival","startDate","endDate","eventDate","timeStringToNumber","timeString","parseInt","replace","compareElements","dayCompare","localeCompare","data","settings","useContext","SettingsContext","l","sortedEvents","strapi","veranstaltungs","otherEvents","lastKnownDate","displayEvent","showDate","v","text","formatDateLong","target","rel","Titel_Englisch","isHighContrast","dateWithMonth","formatDate","showMonth","localisedText","Nummer","Icon_kontrastreich","veranstaltungsformat","Symbol_kontrastreich","Symbol","sprachen","sprache","eigenschaften","bild","Bild","English","vorschautext","renderMarkdown","currentPage","class","headlineSecond","to","getLocale","timestamp","isNaN","console","warn","parsed","locale","toLocaleDateString","month","e","error","weekday","year","formatDateBlog","parsedDate","timeZone","path","fileUrl"],"sourceRoot":""}