{"version":3,"file":"calendar.js","sources":["../../../src/js/utils.js","../../../src/js/theme/fullcalendar.js","../../../src/js/theme/calendar/events.js","../../../src/js/theme/calendar/template.js","../../../src/js/theme/calendar/app-calendar.js","../../../src/js/pages/calendar.js"],"sourcesContent":["/* -------------------------------------------------------------------------- */\n/* Utils */\n/* -------------------------------------------------------------------------- */\nexport const docReady = fn => {\n // see if DOM is already available\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', fn);\n } else {\n setTimeout(fn, 1);\n }\n};\n\nexport const toggleColor = (light, dark) =>\n window.config.config.phoenixTheme === 'light' ? light : dark;\n\nexport const resize = fn => window.addEventListener('resize', fn);\n\nexport const isIterableArray = array => Array.isArray(array) && !!array.length;\n\nexport const camelize = str => {\n const text = str.replace(/[-_\\s.]+(.)?/g, (_, c) =>\n c ? c.toUpperCase() : ''\n );\n return `${text.substr(0, 1).toLowerCase()}${text.substr(1)}`;\n};\n\nexport const getData = (el, data) => {\n try {\n return JSON.parse(el.dataset[camelize(data)]);\n } catch (e) {\n return el.dataset[camelize(data)];\n }\n};\n\n/* ----------------------------- Colors function ---------------------------- */\n\nexport const hexToRgb = hexValue => {\n let hex;\n hexValue.indexOf('#') === 0\n ? (hex = hexValue.substring(1))\n : (hex = hexValue);\n // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(\n hex.replace(shorthandRegex, (m, r, g, b) => r + r + g + g + b + b)\n );\n return result\n ? [\n parseInt(result[1], 16),\n parseInt(result[2], 16),\n parseInt(result[3], 16),\n ]\n : null;\n};\n\nexport const rgbaColor = (color = '#fff', alpha = 0.5) =>\n `rgba(${hexToRgb(color)}, ${alpha})`;\n\n/* --------------------------------- Colors --------------------------------- */\n\nexport const getColor = (name, dom = document.documentElement) => {\n return getComputedStyle(dom).getPropertyValue(`--phoenix-${name}`).trim();\n};\n\nexport const hasClass = (el, className) => {\n !el && false;\n return el.classList.value.includes(className);\n};\n\nexport const addClass = (el, className) => {\n el.classList.add(className);\n};\n\nexport const getOffset = el => {\n const rect = el.getBoundingClientRect();\n const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;\n const scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n return { top: rect.top + scrollTop, left: rect.left + scrollLeft };\n};\n\nexport const isScrolledIntoView = el => {\n let top = el.offsetTop;\n let left = el.offsetLeft;\n const width = el.offsetWidth;\n const height = el.offsetHeight;\n\n while (el.offsetParent) {\n // eslint-disable-next-line no-param-reassign\n el = el.offsetParent;\n top += el.offsetTop;\n left += el.offsetLeft;\n }\n\n return {\n all:\n top >= window.pageYOffset &&\n left >= window.pageXOffset &&\n top + height <= window.pageYOffset + window.innerHeight &&\n left + width <= window.pageXOffset + window.innerWidth,\n partial:\n top < window.pageYOffset + window.innerHeight &&\n left < window.pageXOffset + window.innerWidth &&\n top + height > window.pageYOffset &&\n left + width > window.pageXOffset,\n };\n};\n\nexport const breakpoints = {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200,\n xxl: 1540,\n};\n\nexport const getBreakpoint = el => {\n const classes = el && el.classList.value;\n let breakpoint;\n if (classes) {\n breakpoint =\n breakpoints[\n classes\n .split(' ')\n .filter(cls => cls.includes('navbar-expand-'))\n .pop()\n .split('-')\n .pop()\n ];\n }\n return breakpoint;\n};\n\n/* --------------------------------- Cookie --------------------------------- */\n\nexport const setCookie = (name, value, expire) => {\n const expires = new Date();\n expires.setTime(expires.getTime() + expire);\n document.cookie = name + '=' + value + ';expires=' + expires.toUTCString();\n};\n\nexport const getCookie = name => {\n var keyValue = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');\n return keyValue ? keyValue[2] : keyValue;\n};\n\nexport const settings = {\n tinymce: {\n theme: 'oxide',\n },\n chart: {\n borderColor: 'rgba(255, 255, 255, 0.8)',\n },\n};\n\n/* -------------------------- Chart Initialization -------------------------- */\n\nexport const newChart = (chart, config) => {\n const ctx = chart.getContext('2d');\n return new window.Chart(ctx, config);\n};\n\n/* ---------------------------------- Store --------------------------------- */\n\nexport const getItemFromStore = (key, defaultValue, store = localStorage) => {\n try {\n return JSON.parse(store.getItem(key)) || defaultValue;\n } catch {\n return store.getItem(key) || defaultValue;\n }\n};\n\nexport const setItemToStore = (key, payload, store = localStorage) =>\n store.setItem(key, payload);\nexport const getStoreSpace = (store = localStorage) =>\n parseFloat(\n (\n escape(encodeURIComponent(JSON.stringify(store))).length /\n (1024 * 1024)\n ).toFixed(2)\n );\n\n/* get Dates between */\n\nexport const getDates = (\n startDate,\n endDate,\n interval = 1000 * 60 * 60 * 24\n) => {\n const duration = endDate - startDate;\n const steps = duration / interval;\n return Array.from(\n { length: steps + 1 },\n (v, i) => new Date(startDate.valueOf() + interval * i)\n );\n};\n\nexport const getPastDates = duration => {\n let days;\n\n switch (duration) {\n case 'week':\n days = 7;\n break;\n case 'month':\n days = 30;\n break;\n case 'year':\n days = 365;\n break;\n\n default:\n days = duration;\n }\n\n const date = new Date();\n const endDate = date;\n const startDate = new Date(new Date().setDate(date.getDate() - (days - 1)));\n return getDates(startDate, endDate);\n};\n\n/* Get Random Number */\nexport const getRandomNumber = (min, max) => {\n return Math.floor(Math.random() * (max - min) + min);\n};\n\nexport default {\n docReady,\n toggleColor,\n resize,\n isIterableArray,\n camelize,\n getData,\n hasClass,\n addClass,\n hexToRgb,\n rgbaColor,\n getColor,\n breakpoints,\n // getGrays,\n getOffset,\n isScrolledIntoView,\n getBreakpoint,\n setCookie,\n getCookie,\n newChart,\n settings,\n getItemFromStore,\n setItemToStore,\n getStoreSpace,\n getDates,\n getPastDates,\n getRandomNumber,\n};\n","/* -------------------------------------------------------------------------- */\n/* Calendar */\n\n/* -------------------------------------------------------------------------- */\nconst renderCalendar = (el, option) => {\n const { merge } = window._;\n\n const options = merge(\n {\n initialView: 'dayGridMonth',\n editable: true,\n direction: document.querySelector('html').getAttribute('dir'),\n headerToolbar: {\n left: 'prev,next today',\n center: 'title',\n right: 'dayGridMonth,timeGridWeek,timeGridDay'\n },\n buttonText: {\n month: 'Month',\n week: 'Week',\n day: 'Day'\n }\n },\n option\n );\n const calendar = new window.FullCalendar.Calendar(el, options);\n calendar.render();\n document\n .querySelector('.navbar-vertical-toggle')\n ?.addEventListener('navbar.vertical.toggle', () => calendar.updateSize());\n return calendar;\n};\n\nexport const fullCalendarInit = () => {\n const { getData } = window.phoenix.utils;\n\n const calendars = document.querySelectorAll('[data-calendar]');\n calendars.forEach(item => {\n const options = getData(item, 'calendar');\n renderCalendar(item, options);\n });\n};\n\nconst fullCalendar = {\n renderCalendar,\n fullCalendarInit\n};\nexport default fullCalendar;\n","const { dayjs } = window;\nconst currentDay = dayjs && dayjs().format('DD');\nconst currentMonth = dayjs && dayjs().format('MM');\nconst prevMonth = dayjs && dayjs().subtract(1, 'month').format('MM');\nconst nextMonth = dayjs && dayjs().add(1, 'month').format('MM');\nconst currentYear = dayjs && dayjs().format('YYYY');\nconst events = [\n {\n title: 'Boot Camp',\n start: `${currentYear}-${currentMonth}-01 10:00:00`,\n end: `${currentYear}-${currentMonth}-03 16:00:00`,\n description:\n \"Boston Harbor Now in partnership with the Friends of Christopher Columbus Park, the Wharf District Council and the City of Boston is proud to announce the New Year's Eve Midnight Harbor Fireworks! This beloved nearly 40-year old tradition is made possible by the generous support of local waterfront organizations and businesses and the support of the City of Boston and the Office of Mayor Marty Walsh.\",\n className: 'text-success',\n location:\n 'Boston Harborwalk, Christopher Columbus Park,
Boston, MA 02109, United States',\n organizer: 'Boston Harbor Now'\n },\n {\n title: `Crain's New York Business `,\n start: `${currentYear}-${currentMonth}-11`,\n description:\n \"Crain's 2020 Hall of Fame. Sponsored Content By Crain's Content Studio. Crain's Content Studio Presents: New Jersey: Perfect for Business. Crain's Business Forum: Letitia James, New York State Attorney General. Crain's NYC Summit: Examining racial disparities during the pandemic\",\n className: 'text-primary'\n },\n {\n title: 'Conference',\n start: `${currentYear}-${currentMonth}-${currentDay}`,\n description:\n 'The Milken Institute Global Conference gathered the best minds in the world to tackle some of its most stubborn challenges. It was a unique experience in which individuals with the power to enact change connected with experts who are reinventing health, technology, philanthropy, industry, and media.',\n className: 'text-success',\n // allDay: true,\n schedules: [\n {\n title: 'Reporting',\n start: `${currentYear}-${currentMonth}-${currentDay} 11:00:00`,\n description:\n 'Time to start the conference and will briefly describe all information about the event. ',\n className: 'text-success '\n },\n {\n title: 'Lunch',\n start: `${currentYear}-${currentMonth}-${currentDay} 14:00:00`,\n description: 'Lunch facility for all the attendance in the conference.',\n className: 'text-info'\n },\n {\n title: 'Contest',\n start: `${currentYear}-${currentMonth}-${currentDay} 16:00:00`,\n description: 'The starting of the programming contest',\n className: 'text-success'\n },\n {\n title: 'Dinner',\n start: `${currentYear}-${currentMonth}-${currentDay} 22:00:00`,\n description: 'Dinner facility for all the attendance in the conference',\n className: 'text-success'\n }\n ]\n },\n {\n title: `ICT Expo ${currentYear} - Product Release`,\n start: `${currentYear}-${currentMonth}-16 10:00:00`,\n description: `ICT Expo ${currentYear} is the largest private-sector exposition aimed at showcasing IT and ITES products and services in Switzerland.`,\n end: `${currentYear}-${currentMonth}-18 16:00:00`,\n className: 'text-warning',\n allDay: true\n },\n {\n title: 'Meeting',\n start: `${currentYear}-${currentMonth}-07 10:00:00`,\n description:\n 'Discuss about the upcoming projects in current year and assign all tasks to the individuals',\n className: 'text-info'\n },\n {\n title: 'Contest',\n start: `${currentYear}-${currentMonth}-14 10:00:00`,\n className: 'text-info',\n description:\n 'PeaceX is an international peace and amity organisation that aims at casting a pall at the striking issues surmounting the development of peoples and is committed to impacting the lives of young people all over the world.'\n },\n {\n title: 'Event With Url',\n start: `${currentYear}-${currentMonth}-23`,\n description:\n 'Sample example of a event with url. Click the event, will redirect to the given link.',\n className: 'text-success',\n url: 'http://google.com'\n },\n {\n title: 'Competition',\n start: `${currentYear}-${currentMonth}-26`,\n description:\n 'The Future of Zambia – Top 30 Under 30 is an annual award, ranking scheme, and recognition platform for young Zambian achievers under the age of 30, who are building brands, creating jobs, changing the game, and transforming the country.',\n className: 'text-danger'\n },\n {\n title: 'Birthday Party',\n start: `${currentYear}-${nextMonth}-05`,\n description: 'Will celebrate birthday party with my friends and family',\n className: 'text-primary'\n },\n {\n title: 'Click for Google',\n url: 'http://google.com/',\n start: `${currentYear}-${prevMonth}-10`,\n description:\n 'Applications are open for the New Media Writing Prize 2020. The New Media Writing Prize (NMWP) showcases exciting and inventive stories and poetry that integrate a variety of formats, platforms, and digital media.',\n className: 'text-primary'\n }\n];\n\nexport default events;\n","const getTemplate = event => `\n
\n
\n

${event.title}

\n ${\n event.extendedProps.organizer\n ? `

\n by ${event.extendedProps.organizer}\n

`\n : ''\n }\n
\n \n\n
\n\n
\n ${\n event.extendedProps.description\n ? `\n
\n
Description
\n

\n ${event.extendedProps.description.split(' ').slice(0, 30).join(' ')}\n

\n
\n `\n : ''\n } \n
\n
Date and Time
\n

\n ${\n window.dayjs &&\n window.dayjs(event.start).format('dddd, MMMM D, YYYY, h:mm A')\n } \n ${\n event.end\n ? `– ${\n window.dayjs &&\n window\n .dayjs(event.end)\n .subtract(1, 'day')\n .format('dddd, MMMM D, YYYY, h:mm A')\n }`\n : ''\n }\n

\n\n
\n ${\n event.extendedProps.location\n ? `\n
\n
Location
\n

${event.extendedProps.location}

\n
\n `\n : ''\n }\n ${\n event.schedules\n ? `\n
\n
Schedule
\n \n
\n `\n : ''\n }\n
\n\n\n\n`;\n\nexport default getTemplate;\n","import { getData } from '../../utils';\nimport fullCalendar from '../fullcalendar';\nimport events from './events';\nimport getTemplate from './template';\n\n/*-----------------------------------------------\n| Calendar\n-----------------------------------------------*/\nconst appCalendarInit = () => {\n const Selectors = {\n ACTIVE: '.active',\n ADD_EVENT_FORM: '#addEventForm',\n ADD_EVENT_MODAL: '#addEventModal',\n CALENDAR: '#appCalendar',\n CALENDAR_TITLE: '.calendar-title',\n CALENDAR_DAY: '.calendar-day',\n CALENDAR_DATE: '.calendar-date',\n DATA_CALENDAR_VIEW: '[data-fc-view]',\n DATA_EVENT: '[data-event]',\n DATA_VIEW_TITLE: '[data-view-title]',\n EVENT_DETAILS_MODAL: '#eventDetailsModal',\n EVENT_DETAILS_MODAL_CONTENT: '#eventDetailsModal .modal-content',\n EVENT_START_DATE: '#addEventModal [name=\"startDate\"]',\n INPUT_TITLE: '[name=\"title\"]'\n };\n\n const Events = {\n CLICK: 'click',\n SHOWN_BS_MODAL: 'shown.bs.modal',\n SUBMIT: 'submit'\n };\n\n const DataKeys = {\n EVENT: 'event',\n FC_VIEW: 'fc-view'\n };\n\n const eventList = events.reduce(\n (acc, val) =>\n val.schedules ? acc.concat(val.schedules.concat(val)) : acc.concat(val),\n []\n );\n\n const updateDay = day => {\n const days = [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday'\n ];\n return days[day];\n };\n\n const setCurrentDate = () => {\n const dateObj = new Date();\n const month = dateObj.toLocaleString('en-US', { month: 'short' });\n const date = dateObj.getDate(); // return date number\n const day = dateObj.getDay(); // return week day number\n const year = dateObj.getFullYear();\n const newdate = `${date} ${month}, ${year}`;\n if (document.querySelector(Selectors.CALENDAR_DAY)) {\n document.querySelector(Selectors.CALENDAR_DAY).textContent =\n updateDay(day);\n }\n if (document.querySelector(Selectors.CALENDAR_DATE)) {\n document.querySelector(Selectors.CALENDAR_DATE).textContent = newdate;\n }\n };\n setCurrentDate();\n\n const updateTitle = currentData => {\n const { currentViewType } = currentData;\n // week view\n if (currentViewType === 'timeGridWeek') {\n const weekStartsDate = currentData.dateProfile.currentRange.start;\n const startingMonth = weekStartsDate.toLocaleString('en-US', {\n month: 'short'\n });\n const startingDate = weekStartsDate.getDate();\n const weekEndDate = currentData.dateProfile.currentRange.end;\n\n const endingMonth = weekEndDate.toLocaleString('en-US', {\n month: 'short'\n });\n const endingDate = weekEndDate.getDate();\n\n document.querySelector(\n Selectors.CALENDAR_TITLE\n ).textContent = `${startingMonth} ${startingDate} - ${endingMonth} ${endingDate}`;\n } else\n document.querySelector(Selectors.CALENDAR_TITLE).textContent =\n currentData.viewTitle;\n };\n\n const appCalendar = document.querySelector(Selectors.CALENDAR);\n const addEventForm = document.querySelector(Selectors.ADD_EVENT_FORM);\n const addEventModal = document.querySelector(Selectors.ADD_EVENT_MODAL);\n const eventDetailsModal = document.querySelector(\n Selectors.EVENT_DETAILS_MODAL\n );\n\n if (appCalendar) {\n const calendar = fullCalendar.renderCalendar(appCalendar, {\n headerToolbar: false,\n dayMaxEvents: 3,\n height: 800,\n stickyHeaderDates: false,\n views: {\n week: {\n eventLimit: 3\n }\n },\n eventTimeFormat: {\n hour: 'numeric',\n minute: '2-digit',\n omitZeroMinute: true,\n meridiem: true\n },\n events: eventList,\n eventClick: info => {\n if (info.event.url) {\n window.open(info.event.url, '_blank');\n info.jsEvent.preventDefault();\n } else {\n const template = getTemplate(info.event);\n document.querySelector(\n Selectors.EVENT_DETAILS_MODAL_CONTENT\n ).innerHTML = template;\n const modal = new window.bootstrap.Modal(eventDetailsModal);\n modal.show();\n }\n },\n dateClick(info) {\n const modal = new window.bootstrap.Modal(addEventModal);\n modal.show();\n /* eslint-disable-next-line */\n const flatpickr = document.querySelector(Selectors.EVENT_START_DATE)._flatpickr;\n flatpickr.setDate([info.dateStr]);\n }\n });\n\n updateTitle(calendar.currentData);\n\n document.querySelectorAll(Selectors.DATA_EVENT).forEach(button => {\n button.addEventListener(Events.CLICK, e => {\n const el = e.currentTarget;\n const type = getData(el, DataKeys.EVENT);\n switch (type) {\n case 'prev':\n calendar.prev();\n updateTitle(calendar.currentData);\n break;\n case 'next':\n calendar.next();\n updateTitle(calendar.currentData);\n break;\n case 'today':\n calendar.today();\n updateTitle(calendar.currentData);\n break;\n default:\n calendar.today();\n updateTitle(calendar.currentData);\n break;\n }\n });\n });\n\n document.querySelectorAll(Selectors.DATA_CALENDAR_VIEW).forEach(link => {\n link.addEventListener(Events.CLICK, e => {\n e.preventDefault();\n const el = e.currentTarget;\n calendar.changeView(getData(el, DataKeys.FC_VIEW));\n updateTitle(calendar.currentData);\n });\n });\n\n if (addEventForm) {\n addEventForm.addEventListener(Events.SUBMIT, e => {\n e.preventDefault();\n const { title, startDate, endDate, label, description, allDay } =\n e.target;\n calendar.addEvent({\n title: title.value,\n start: startDate.value,\n end: endDate.value ? endDate.value : null,\n allDay: allDay.checked,\n className: `text-${label.value}`,\n description: description.value\n });\n e.target.reset();\n window.bootstrap.Modal.getInstance(addEventModal).hide();\n });\n }\n\n if (addEventModal) {\n addEventModal.addEventListener(\n Events.SHOWN_BS_MODAL,\n ({ currentTarget }) => {\n currentTarget.querySelector(Selectors.INPUT_TITLE)?.focus();\n }\n );\n }\n }\n};\n\nexport default appCalendarInit;\n","import appCalendarInit from '../theme/calendar/app-calendar';\n\nconst { docReady } = window.phoenix.utils;\n\ndocReady(appCalendarInit);\n"],"names":[],"mappings":"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"}