{"version":3,"sources":["webpack:///./src/components/base/app-event-info.vue?9f3f","webpack:///./src/components/base/app-event-info.vue","webpack:///src/components/base/app-event-info.vue","webpack:///./src/components/base/app-event-info.vue?29f7","webpack:///./src/components/base/app-event-info.vue?3fb4","webpack:///./src/domain/services/event-date-service.js"],"names":["render","_vm","this","_c","_self","staticClass","logoUrl","withExternalLink","externalLink","staticStyle","attrs","ref","_e","messageAlert","typeAlert","_v","_s","event","displayName","technicalName","staticRenderFns","props","type","validator","default","showDate","computed","status","methods","eventStatus","dateService","message","months","eventRegistrationStatus","words","component","MIN_DATE","DateTime","fromSeconds","MAX_DATE","EventDateService","constructor","_event","getData","getMinDate","registrationStartedAt","getMaxDate","registrationEndedAt","EventService","isEventOccasion","eventOccasion","startedAt","endedAt","dateStr","date","fromISO","invalid","locale","start","end","Error","entity","divider","formatDateWithDivider","year","startYear","month","startMonth","day","startDay","endYear","endMonth","endDay","monthToStr","state","formatDate","before","during","after","onGoing","TIME_STATUSES","ENDED","WILL_START"],"mappings":"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","file":"js/change-password~check-email~email-confirmed~events~login~recovery~registration-success~reset-success.59419ca8.js","sourcesContent":["export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--9-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app-event-info.vue?vue&type=style&index=0&id=55dc4af1&prod&lang=scss&\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"event-info-main\"},[(_vm.logoUrl)?_c('div',{staticClass:\"logo-wrapper\"},[(_vm.withExternalLink && _vm.externalLink)?_c('a',{staticClass:\"logo-wrapper__logo\",staticStyle:{\"display\":\"block\"},attrs:{\"href\":_vm.externalLink,\"target\":\"_blank\"}},[_c('img',{ref:\"img\",attrs:{\"src\":_vm.logoUrl,\"alt\":\"logo\"}})]):_c('div',{staticClass:\"logo-wrapper__logo\"},[_c('img',{attrs:{\"src\":_vm.logoUrl,\"alt\":\"logo\"}})])]):_vm._e(),(_vm.messageAlert)?_c('div',{staticClass:\"event-info-main__status\"},[_c('Alert',{attrs:{\"type\":_vm.typeAlert}},[_vm._v(\" \"+_vm._s(_vm.messageAlert)+\" \")])],1):_vm._e(),(_vm.event.displayName || _vm.event.technicalName)?_c('div',{staticClass:\"event-info-main__caption s-subtitle-secondary\"},[_vm._v(\" \"+_vm._s(_vm.event.displayName ? _vm.event.displayName : _vm.event.technicalName)+\" \")]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"event-info-main\">\n <div v-if=\"logoUrl\" class=\"logo-wrapper\">\n <a\n v-if=\"withExternalLink && externalLink\"\n :href=\"externalLink\"\n target=\"_blank\"\n class=\"logo-wrapper__logo\"\n style=\"display: block\"\n >\n <img ref=\"img\" :src=\"logoUrl\" alt=\"logo\" />\n </a>\n <div v-else class=\"logo-wrapper__logo\">\n <img :src=\"logoUrl\" alt=\"logo\" />\n </div>\n </div>\n <div v-if=\"messageAlert\" class=\"event-info-main__status\">\n <Alert :type=\"typeAlert\">\n {{ messageAlert }}\n </Alert>\n </div>\n <div\n v-if=\"event.displayName || event.technicalName\"\n class=\"event-info-main__caption s-subtitle-secondary\"\n >\n {{ event.displayName ? event.displayName : event.technicalName }}\n </div>\n </div>\n</template>\n\n<script>\nimport EventDateService from '@/domain/services/event-date-service'\nimport EventService from '@/domain/services/event-service'\n\nexport default {\n props: {\n type: {\n validator(value) {\n return ['event', 'registration'].includes(value)\n },\n default: 'registration',\n },\n showDate: { type: Boolean, default: true },\n event: { type: Object, default: () => {} },\n withExternalLink: { type: Boolean, default: false },\n },\n\n computed: {\n logoUrl() {\n return EventService.extractLogoUrl(this.event)\n },\n\n status() {\n if (this.type === 'registration') {\n return this.eventRegistrationStatus()\n }\n return this.eventStatus()\n },\n\n messageAlert() {\n const dateStr = this.status.message\n const locationStr = this.event.location || ''\n if (dateStr && locationStr) {\n return `${dateStr}, ${locationStr}`\n } else if (dateStr && !locationStr) {\n return dateStr\n } else if (!dateStr && locationStr) {\n return locationStr\n }\n return ''\n },\n\n typeAlert() {\n if (this.status.state === 'after') {\n return 'warning'\n }\n\n if (this.type === 'event') {\n return 'info'\n }\n\n return 'success'\n },\n\n externalLink() {\n return this.event.formLink?.externalUrl || ''\n },\n },\n methods: {\n eventStatus() {\n const months = this.$tr('months')\n // todo: записать код красивее (придумать как)\n const dateService = new EventDateService(this.event)\n if (\n dateService.startEventTime === EventDateService.MIN_DATE &&\n dateService.endEventTime === EventDateService.MAX_DATE\n ) {\n return {\n message: '',\n }\n }\n\n if (dateService.startEventTime === EventDateService.MIN_DATE) {\n return {\n message: EventDateService.getMessageWithOneDate(\n { months },\n dateService.endEventTime,\n ),\n }\n }\n if (dateService.endEventTime === EventDateService.MAX_DATE) {\n return {\n message: EventDateService.getMessageWithOneDate(\n { months },\n dateService.startEventTime,\n ),\n }\n }\n\n const status = EventDateService.getAlertMessageWithDivider(\n { months },\n dateService.startEventTime,\n dateService.endEventTime,\n )\n return status\n },\n\n eventRegistrationStatus() {\n const dateService = new EventDateService(this.event)\n\n const words = { ...this.$tr('auth.statusWordsRegistration') }\n words.months = this.$tr('months')\n words.onGoing = this.$tr('alertTime.onGoing')\n\n return EventDateService.getEntityStatusAlert(\n words,\n dateService.startRegistrationTime,\n dateService.endRegistrationTime,\n this.event.registrationTimeStatus,\n )\n },\n },\n}\n</script>\n<style lang=\"scss\">\n.event-info-main {\n &__caption {\n padding: 0 24px;\n font-size: 14px;\n font-weight: 500;\n line-height: 1.375;\n color: var(--s-black-color-60);\n\n @include media-breakpoint-up(lg) {\n font-size: 16px;\n }\n }\n}\n.logo-wrapper {\n padding: 0px 24px;\n\n &__logo {\n padding-bottom: 24px;\n margin: 0 auto;\n display: flex;\n width: 100%;\n max-width: 196px;\n }\n\n &__logo img {\n width: 100%;\n height: 100%;\n }\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app-event-info.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app-event-info.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./app-event-info.vue?vue&type=template&id=55dc4af1&\"\nimport script from \"./app-event-info.vue?vue&type=script&lang=js&\"\nexport * from \"./app-event-info.vue?vue&type=script&lang=js&\"\nimport style0 from \"./app-event-info.vue?vue&type=style&index=0&id=55dc4af1&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import EventService from '@/domain/services/event-service'\nimport { DateTime } from '@/plugins/luxon'\nimport { monthToStr, formatDate, TIME_STATUSES } from '@/utils'\n\nconst MIN_DATE = DateTime.fromSeconds(0)\nconst MAX_DATE = DateTime.fromSeconds(2177280000) // 2038 12 30\n\nexport default class EventDateService {\n static MIN_DATE = MIN_DATE\n static MAX_DATE = MAX_DATE\n constructor(event) {\n this._event = event\n }\n\n getData() {\n return this._event\n }\n\n /**\n * @returns {DateTime}\n */\n get startRegistrationTime() {\n return EventDateService.getMinDate(this._event.registrationStartedAt)\n }\n\n /**\n * @returns {DateTime}\n */\n get endRegistrationTime() {\n return EventDateService.getMaxDate(this._event.registrationEndedAt)\n }\n\n /**\n * @returns {DateTime}\n */\n get startEventTime() {\n if (!EventService.isEventOccasion(this._event)) {\n return EventDateService.MIN_DATE\n }\n return EventDateService.getMinDate(this._event.eventOccasion.startedAt)\n }\n\n /**\n * @returns {DateTime}\n */\n get endEventTime() {\n if (!EventService.isEventOccasion(this._event)) {\n return EventDateService.MAX_DATE\n }\n return EventDateService.getMaxDate(this._event.eventOccasion.endedAt)\n }\n\n static getMinDate(dateStr) {\n const date = DateTime.fromISO(dateStr)\n if (date.invalid) {\n return EventDateService.MIN_DATE\n }\n return date\n }\n\n static getMaxDate(dateStr) {\n const date = DateTime.fromISO(dateStr)\n if (date.invalid) {\n return EventDateService.MAX_DATE\n }\n return date\n }\n\n /**\n * функция возвращает две даты через символ, отправленный в поле \"locale.divider\" - по умолчанию черточка:\n * @param locale\n * @param start\n * @param end\n */\n static getAlertMessageWithDivider(locale, start, end) {\n if ((!start) instanceof DateTime || (!end) instanceof DateTime) {\n throw new Error(\n 'Неверный тип даты, передаваемый в функцию getEntityStatus!',\n )\n }\n\n const { entity = '', months = [], divider = '-' } = locale\n\n const formatDateWithDivider = (start, end) => {\n const { year: startYear, month: startMonth, day: startDay } = start\n const { year: endYear, month: endMonth, day: endDay } = end\n\n // отбрасываем одинаковые года и месяцы\n if (\n endDay === startDay &&\n startMonth === endMonth &&\n startYear === endYear\n ) {\n return `${startDay} ${monthToStr(startMonth, months)} ${startYear}`\n } else if (startMonth === +endMonth && startYear === endYear) {\n return `${startDay} ${divider} ${endDay} ${monthToStr(\n startMonth,\n months,\n )} ${startYear}`\n } else if (startYear === endYear) {\n return `${startDay} ${monthToStr(\n startMonth,\n months,\n )} ${divider} ${endDay} ${monthToStr(endMonth, months)} ${startYear}`\n }\n return `${startDay} ${monthToStr(\n startMonth,\n months,\n )} ${startYear} ${divider} ${endDay} ${monthToStr(\n endMonth,\n months,\n )} ${endYear}`\n }\n\n return {\n message: `${entity} ${formatDateWithDivider(start, end)}`,\n state: 'info',\n }\n }\n\n static getMessageWithOneDate(locale, date) {\n if (!locale.entity) {\n return formatDate(date, locale.months)\n }\n return `${locale.entity} ${formatDate(date, locale.months)}`\n }\n\n static getEntityStatusAlert = (locale, start, end, status) => {\n if ((!start) instanceof DateTime || (!end) instanceof DateTime) {\n throw new Error(\n 'Неверный тип даты, передаваемый в функцию getEntityStatus!',\n )\n }\n\n const {\n entity = '',\n before = '',\n during = '',\n after = '',\n months = [''],\n onGoing = '',\n } = locale\n\n if (status === TIME_STATUSES.ENDED) {\n return {\n message: `${entity} ${after} ${formatDate(end, months)}`,\n state: 'after',\n }\n }\n\n if (status === TIME_STATUSES.WILL_START) {\n return {\n message: `${entity} ${before} ${formatDate(start, months)}`,\n state: 'before',\n }\n }\n\n if (end === EventDateService.MAX_DATE) {\n // \"Регистрация идет\" (без даты)\n return {\n message: `${entity} ${onGoing}`,\n state: 'during',\n }\n }\n\n return {\n message: `${entity} ${during} ${formatDate(end, months)}`,\n state: 'during',\n }\n }\n}\n"],"sourceRoot":""}