{"version":3,"names":["DEFAULT_TZ","twoDigit","value","toString","formatTime","date","getHours","getMinutes","formatTicketshopDate","getFullYear","getMonth","getDate","formatIsoDate","parseIsoDate","Date","parsed","isNaN","valueOf","parseTime","input","_a","parts","match","hour","parseInt","minute","myDate","setHours","setMinutes","err","formatDayOfWeek","i18n","get","days","getDay","formatDate","includeYear","months","formatLocalDate","locale","timezone","toLocaleDateString","getLang","weekday","day","month","year","timeZone","formatDateShort","e","monthsShort","map","generalI18n","find","strings","key","Object","values","toLocaleUpperCase","getLocalizedMonthIndex","data","needle","findIndex","includes","parseDate","partsNumeric","partsIso","length","holidaysStatic","holidaysEaster","addDaysToDate","newDate","setDate","addWorkingDays","respectAustrianHolidays","isAdding","Math","abs","isAustrianHoliday","isHoliday","some","holiday","thisYear","thisEaster","easterMonday","ascension","pentecostSunday","pentecostMonday","corpusChristi","isLastDayOfMonth","checkDate","getTime","isSameDate","a","b"],"sources":["node_modules/@oebb-web-team/oebb-web-components/dist/collection/utils/date.js"],"sourcesContent":["import { generalI18n } from \"../global/general-i18n\";\nimport { i18n } from './I18n';\nexport const DEFAULT_TZ = 'Europe/Vienna';\nexport function twoDigit(value) {\n if (value == 0 || value < 10) {\n return '0' + value;\n }\n else {\n return value.toString();\n }\n}\nexport function formatTime(date) {\n return twoDigit(date.getHours()) + ':' + twoDigit(date.getMinutes());\n}\nexport function formatTicketshopDate(date) {\n // 2018-06-7T19:00\n return date.getFullYear() + '-' + twoDigit(date.getMonth() + 1) + '-' + twoDigit(date.getDate()) + 'T' + formatTime(date);\n}\nexport function formatIsoDate(date) {\n if (!date) {\n return '';\n }\n // 30.12.2018\n return date.getFullYear() + '-' + twoDigit(date.getMonth() + 1) + '-' + twoDigit(date.getDate());\n}\nexport function parseIsoDate(date) {\n if (!date) {\n return null;\n }\n if (date instanceof Date) {\n return date;\n }\n const parsed = new Date(date);\n if (isNaN(parsed.valueOf())) {\n return null;\n }\n return parsed;\n}\nexport function parseTime(input) {\n var _a;\n try {\n // Allow \"[H]HMM\" or \"[H]H:[M]M\" as format\n const parts = (_a = input.match(/^(\\d{1,2})(\\d{2})$/)) !== null && _a !== void 0 ? _a : input.match(/^(\\d{1,2}):(\\d{1,2})$/);\n if (!parts) {\n return null;\n }\n const hour = parseInt(parts[1]);\n const minute = parseInt(parts[2]);\n if (hour < 0 || hour > 23 || minute < 0 || minute > 59) {\n return null;\n }\n const myDate = new Date();\n myDate.setHours(hour);\n myDate.setMinutes(minute);\n return myDate;\n }\n catch (err) {\n return null;\n }\n}\nexport function formatDayOfWeek(date) {\n return i18n.get(days[date.getDay()]);\n}\nexport function formatDate(date, includeYear = true) {\n return formatDayOfWeek(date)\n + ', '\n + twoDigit(date.getDate())\n + '. '\n + i18n.get(months[date.getMonth()] + '-short', months[date.getMonth()])\n + (includeYear ? ' ' + date.getFullYear() : '');\n}\nexport function formatLocalDate(date, locale, timezone = DEFAULT_TZ) {\n return (date === null || date === void 0 ? void 0 : date.toLocaleDateString(locale || i18n.getLang() || 'de', {\n weekday: 'short',\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n timeZone: timezone,\n })) || '';\n}\nexport function formatDateShort(date) {\n try {\n return twoDigit(date.getDate()) + '.' + twoDigit(date.getMonth() + 1) + '.' + date.getFullYear();\n }\n catch (e) {\n return '';\n }\n}\nexport const days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\nexport const months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\nexport const monthsDe = ['JÄN', 'FEB', 'MÄR', 'APR', 'MAI', 'JUN', 'JUL', 'AUG', 'SEP', 'OKT', 'NOV', 'DEZ'];\nexport const monthsEn = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'];\nexport const monthsIt = ['GEN', 'FEB', 'MAR', 'APR', 'MAG', 'GIU', 'LUG', 'AGO', 'SET', 'OTT', 'NOV', 'DIC'];\nexport const monthsShort = months\n .map(month => generalI18n.find(strings => strings.key === `${month}-short`))\n .map(strings => Object.values(strings).map((value) => value.toLocaleUpperCase()));\nexport function getLocalizedMonthIndex(data) {\n const needle = data.toLocaleUpperCase();\n return monthsShort.findIndex(strings => strings.includes(needle));\n}\nexport function parseDate(input) {\n try {\n const partsNumeric = input.match(/^(0?[1-9]|[12]\\d|3[0-1])[./]?(0?[1-9]|1[0-2])[./]?((19|2\\d)?\\d{2})$/);\n if (partsNumeric) {\n const day = parseInt(partsNumeric[1]);\n const month = parseInt(partsNumeric[2]);\n const year = parseInt(partsNumeric[3]);\n return new Date(year < 100 ? 2000 + year : year, month - 1, day, 0, 0, 0, 0);\n }\n const partsIso = input.match(/^((19|2\\d)?\\d{2})-?(0?[1-9]|1[0-2])-?(0?[1-9]|[12]\\d|3[0-1])$/);\n if (partsIso) {\n const year = parseInt(partsIso[1]);\n const month = parseInt(partsIso[3]);\n const day = parseInt(partsIso[4]);\n return new Date(year < 100 ? 2000 + year : year, month - 1, day, 0, 0, 0, 0);\n }\n const parts = input.match(/(\\w+)/g);\n if (parts.length == 3) {\n let day = parseInt(parts[0]);\n let month = parseInt(parts[1]);\n let year = parseInt(parts[2]);\n if (isNaN(month)) {\n month = getLocalizedMonthIndex(parts[1]);\n }\n else {\n month -= 1;\n }\n if (parts[2].length == 2)\n year = parseInt('20' + parts[2]); // This doesn't work after the year 2099\n return new Date(year, month, day);\n }\n else if (parts.length == 4) {\n let day = parseInt(parts[1]);\n let month = parseInt(parts[2]);\n let year = parseInt(parts[3]);\n if (isNaN(month)) {\n month = getLocalizedMonthIndex(parts[2]);\n }\n else {\n month -= 1;\n }\n if (parts[3].length == 2)\n year = parseInt('20' + parts[3]); // This doesn't work after the year 2099\n return new Date(year, month, day);\n }\n else {\n return null;\n }\n }\n catch (err) {\n return null;\n }\n}\nlet holidaysStatic = [\n {\n 'day': 1,\n 'month': 0\n },\n {\n 'day': 6,\n 'month': 0\n },\n {\n 'day': 1,\n 'month': 4\n },\n {\n 'day': 6,\n 'month': 0\n },\n {\n 'day': 15,\n 'month': 7\n },\n {\n 'day': 26,\n 'month': 9\n },\n {\n 'day': 1,\n 'month': 10\n },\n {\n 'day': 8,\n 'month': 11\n },\n {\n 'day': 25,\n 'month': 11\n },\n {\n 'day': 26,\n 'month': 11\n },\n];\nlet holidaysEaster = {\n '2019': new Date('2019-04-21'),\n '2020': new Date('2020-04-12'),\n '2021': new Date('2021-04-04'),\n '2022': new Date('2022-04-17'),\n '2023': new Date('2023-04-09'),\n '2024': new Date('2024-03-31'),\n '2025': new Date('2025-04-20'),\n '2026': new Date('2026-04-05'),\n '2027': new Date('2027-03-28'),\n '2028': new Date('2028-04-16'),\n '2029': new Date('2029-04-01'),\n '2030': new Date('2030-04-21'),\n '2031': new Date('2031-04-13'),\n};\nexport function addDaysToDate(days, date) {\n let newDate = date ? new Date(date) : new Date();\n newDate.setDate(newDate.getDate() + days);\n return newDate;\n}\nexport function addWorkingDays(date, days, respectAustrianHolidays = true) {\n const isAdding = (days > 0);\n if (!isAdding) {\n days = Math.abs(days);\n }\n while (days > 0) {\n if (!isAdding) {\n date.setDate(date.getDate() - 1);\n }\n else {\n date.setDate(date.getDate() + 1);\n }\n if (date.getDay() == 0 || date.getDay() == 6 || (respectAustrianHolidays && isAustrianHoliday(date)))\n continue;\n days--;\n }\n return date;\n}\nexport function isAustrianHoliday(date) {\n let isHoliday = holidaysStatic.some(function (holiday) {\n return (holiday.day === date.getDate() && holiday.month === date.getMonth());\n });\n // Return if holiday is found, no need to check for days based on easter\n if (isHoliday)\n return isHoliday;\n // Easter\n let thisYear = new Date().getFullYear();\n let thisEaster = holidaysEaster[thisYear];\n if (thisEaster.getDate() === date.getDate() && thisEaster.getMonth() === date.getMonth()) {\n return true;\n }\n // Easter Monday\n let easterMonday = addDaysToDate(1, thisEaster);\n if (easterMonday.getDate() === date.getDate() && easterMonday.getMonth() === date.getMonth()) {\n return true;\n }\n // Christi Himmelfahrt\n let ascension = addDaysToDate(39, thisEaster);\n if (ascension.getDate() === date.getDate() && ascension.getMonth() === date.getMonth()) {\n return true;\n }\n // Pfingsten\n let pentecostSunday = addDaysToDate(49, thisEaster);\n if (pentecostSunday.getDate() === date.getDate() && pentecostSunday.getMonth() === date.getMonth()) {\n return true;\n }\n let pentecostMonday = addDaysToDate(50, thisEaster);\n if (pentecostMonday.getDate() === date.getDate() && pentecostMonday.getMonth() === date.getMonth()) {\n return true;\n }\n // Fronleichnam\n let corpusChristi = addDaysToDate(60, thisEaster);\n if (corpusChristi.getDate() === date.getDate() && corpusChristi.getMonth() === date.getMonth()) {\n return true;\n }\n return false;\n}\nexport function isLastDayOfMonth(date) {\n let checkDate = new Date(date.getTime());\n checkDate.setDate(checkDate.getDate() + 1);\n return checkDate.getDate() === 1;\n}\nexport function isSameDate(a, b) {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n}\n//# sourceMappingURL=date.js.map\n"],"mappings":"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"}