{"version":3,"file":"DgPn5Gii.js","sources":["../../../../composables/useTimezone.ts","../../../../src/opinions.ts","../../../../components/PersonalCalendar.vue","../../../../composables/useMainPronoun.ts"],"sourcesContent":["import { DateTime, IANAZone } from 'luxon';\n\nconst CONTINENT_ICONS: Record = {\n Africa: 'globe-africa',\n America: 'globe-americas',\n Antarctica: 'globe',\n Arctic: 'globe',\n Asia: 'globe-asia',\n Atlantic: 'globe-americas',\n Australia: 'globe-asia',\n Europe: 'globe-europe',\n Indian: 'globe-asia',\n Pacific: 'globe-asia',\n};\n\nconst timezoneOverrides: Record = {\n 'Europe/Kiev': 'Europe/Kyiv',\n};\n\nexport interface TimezoneInfo {\n timezone: string;\n area: string;\n location: string;\n displayLocation: string;\n icon: string;\n offset: number;\n offsetFormatted: string;\n short: string;\n long: string;\n}\n\nexport default () => {\n const detectBrowserTimezone = (): string => {\n return DateTime.local().zone.name;\n };\n const getTimezoneInfo = (timezone: string | null): TimezoneInfo | null => {\n if (!timezone) {\n return null;\n }\n const parts = timezone.split('/');\n const displayParts = timezoneDisplayName(timezone).split('/');\n const area = parts[0];\n const location = parts[parts.length - 1].replace(/_/g, ' ');\n const displayLocation = displayParts[parts.length - 1].replace(/_/g, ' ');\n const tz = new IANAZone(timezone);\n if (!tz.isValid) {\n return null;\n }\n const dt = DateTime.local().setZone(tz);\n\n return {\n timezone,\n area,\n location,\n displayLocation,\n icon: CONTINENT_ICONS[area],\n offset: dt.offset,\n // @ts-expect-error: DateTime.ts: number not in typings but in code (probably version mismatch)\n offsetFormatted: tz.formatOffset(dt.ts, 'short'),\n short: dt.offsetNameShort,\n long: dt.offsetNameLong,\n };\n };\n const timezoneDisplayName = (timezone: string): string => {\n return (timezoneOverrides[timezone] || timezone).replaceAll('_', ' ');\n };\n return {\n detectBrowserTimezone,\n getTimezoneInfo,\n timezoneDisplayName,\n };\n};\n","export interface Opinion {\n value?: number;\n icon: string;\n description?: string;\n emoji?: string;\n colour?: string;\n style?: string;\n}\n\nconst opinions: Record = {\n yes: { value: 3, icon: 's:heart', emoji: '❤️', colour: 'pink', style: 'bold' },\n jokingly: { value: 1, icon: 'grin-tongue', emoji: '😜', colour: 'orange' },\n close: { value: 1, icon: 'user-friends', emoji: '🫂', colour: 'red' },\n meh: { value: 0, icon: 'thumbs-up', emoji: '👍' },\n no: { value: -3, icon: 'thumbs-down', emoji: '👎', colour: 'grey', style: 'small' },\n};\nexport default opinions;\n","\n\n\n","import { computed } from 'vue';\n\nimport { buildPronoun, buildPronounUsage } from '../src/buildPronoun.ts';\nimport type { Pronoun, PronounLibrary, PronounUsage } from '../src/classes.ts';\nimport opinions from '../src/opinions.ts';\nimport type { Profile } from '../src/profile.ts';\nimport type { Translator } from '../src/translator';\n\nimport useConfig from './useConfig.ts';\n\nimport { getUrlForLocale } from '~/src/domain.ts';\n\nexport interface PronounOpinion extends PronounUsage {\n link: string;\n opinion: string;\n}\n\nexport default (\n pronounLibrary: PronounLibrary,\n profile: Ref> | null>,\n translator: Translator,\n) => {\n const config = useConfig();\n const pronouns = pronounLibrary.pronouns;\n const pronounOpinions = computed((): PronounOpinion[] => {\n if (!profile.value) {\n return [];\n }\n return (profile.value.pronouns ?? [])\n .map(({ value: pronoun, opinion }) => {\n const baseUrl = getUrlForLocale(config.locale);\n let link = pronoun\n .trim()\n .replace(new RegExp(`^${baseUrl}`), '')\n .replace(new RegExp(`^${baseUrl.replace(/^https?:\\/\\//, '')}`), '')\n .replace(new RegExp('^/'), '');\n\n try {\n link = decodeURIComponent(link);\n } catch {\n return;\n }\n\n const usage = buildPronounUsage(pronounLibrary, link, config, translator);\n if (usage) {\n return {\n ...usage,\n link,\n opinion,\n };\n }\n })\n .filter((usage) => usage !== undefined);\n });\n const mainPronoun = computed((): Pronoun | null => {\n if (!config.profile.editorEnabled || !config.profile.flags?.defaultPronoun) {\n return null;\n }\n let mainPronoun = buildPronoun(pronouns, config.profile.flags?.defaultPronoun, config, translator);\n let mainOpinion = -1;\n for (const { pronoun, opinion } of pronounOpinions.value) {\n if (!pronoun) {\n continue;\n }\n const opinionValue = opinions[opinion]?.value || 0;\n if (opinionValue > mainOpinion) {\n mainPronoun = pronoun;\n mainOpinion = opinionValue;\n }\n }\n\n return mainPronoun;\n });\n return {\n pronounOpinions,\n mainPronoun,\n };\n};\n"],"names":["CONTINENT_ICONS","timezoneOverrides","useTimezone","detectBrowserTimezone","DateTime","getTimezoneInfo","timezone","parts","displayParts","timezoneDisplayName","area","location","displayLocation","tz","IANAZone","dt","opinions","_sfc_main","defineComponent","Year","Calendar","cutoff","_hoisted_3","_hoisted_4","_openBlock","_createElementBlock","_hoisted_1","_Fragment","_renderList","_ctx","columnEventObjects","_hoisted_2","_createElementVNode","event","year","maxitems","_createTextVNode","_createVNode","_component_Icon","_cache","_component_T","_createCommentVNode","useMainPronoun","pronounLibrary","profile","translator","config","useConfig","pronouns","pronounOpinions","computed","pronoun","opinion","baseUrl","getUrlForLocale","link","usage","buildPronounUsage","mainPronoun","_a","buildPronoun","_b","mainOpinion","opinionValue","_c"],"mappings":"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"}