{"version":3,"sources":["webpack:///./src/modules/agendaDashboard/components/AgendaExportToExcelDialog.vue?da4f","webpack:///./src/modules/agendaDashboard/components/AgendaSavedSearchesForm.vue?edaa","webpack:///./src/modules/agendaDashboard/components/AgendaFilterTree.vue?dc72","webpack:///./src/modules/agendaDashboard/components/AgendaSavedSearchesForm.vue?d0d7","webpack:///./src/modules/agendaDashboard/views/AgendaOverview.vue?963d","webpack:///../../../src/mixins/button-group/index.ts","webpack:///../../../src/components/VBtnToggle/VBtnToggle.ts","webpack:///../../../src/mixins/mouse/index.ts","webpack:///../../../../src/components/VCalendar/mixins/times.ts","webpack:///../../../../src/components/VCalendar/modes/common.ts","webpack:///../../../../src/components/VCalendar/modes/stack.ts","webpack:///../../../../src/components/VCalendar/modes/column.ts","webpack:///../../../../src/components/VCalendar/modes/index.ts","webpack:///../../../../src/components/VCalendar/util/props.ts","webpack:///../../../../src/components/VCalendar/mixins/calendar-base.ts","webpack:///../../../../src/components/VCalendar/util/events.ts","webpack:///../../../../src/components/VCalendar/mixins/calendar-with-events.ts","webpack:///../../../src/components/VCalendar/VCalendarWeekly.ts","webpack:///../../../src/components/VCalendar/VCalendarMonthly.ts","webpack:///../../../../src/components/VCalendar/mixins/calendar-with-intervals.ts","webpack:///../../../src/components/VCalendar/VCalendarDaily.ts","webpack:///../../../../src/components/VCalendar/util/parser.ts","webpack:///../../../src/components/VCalendar/VCalendarCategory.ts","webpack:///../../../src/components/VCalendar/VCalendar.ts","webpack:///./src/modules/agendaDashboard/views/AgendaOverview.vue","webpack:///./src/modules/agendaDashboard/components/AgendaSavedSearchesForm.vue","webpack:///src/modules/agendaDashboard/components/AgendaSavedSearchesForm.vue","webpack:///./src/modules/agendaDashboard/components/AgendaSavedSearchesForm.vue?37fe","webpack:///./src/modules/agendaDashboard/components/AgendaSavedSearchesForm.vue?bc40","webpack:///./src/modules/agendaDashboard/components/AgendaExportToExcelDialog.vue","webpack:///src/modules/agendaDashboard/components/AgendaExportToExcelDialog.vue","webpack:///./src/modules/agendaDashboard/components/AgendaExportToExcelDialog.vue?8f75","webpack:///./src/modules/agendaDashboard/components/AgendaExportToExcelDialog.vue?0a06","webpack:///./src/modules/agendaDashboard/components/AgendaTooltip.vue","webpack:///src/modules/agendaDashboard/components/AgendaTooltip.vue","webpack:///./src/modules/agendaDashboard/components/AgendaTooltip.vue?ecad","webpack:///./src/modules/agendaDashboard/components/AgendaTooltip.vue?5c8e","webpack:///./src/modules/agendaDashboard/components/AgendaSidebar.vue","webpack:///./src/modules/agendaDashboard/components/AgendaFilterTree.vue","webpack:///src/modules/agendaDashboard/components/AgendaFilterTree.vue","webpack:///./src/modules/agendaDashboard/components/AgendaFilterTree.vue?0b85","webpack:///./src/modules/agendaDashboard/components/AgendaFilterTree.vue?f203","webpack:///src/modules/agendaDashboard/components/AgendaSidebar.vue","webpack:///./src/modules/agendaDashboard/components/AgendaSidebar.vue?a84b","webpack:///./src/modules/agendaDashboard/components/AgendaSidebar.vue?b7f9","webpack:///src/modules/agendaDashboard/views/AgendaOverview.vue","webpack:///./src/modules/agendaDashboard/views/AgendaOverview.vue?73e1","webpack:///./src/modules/agendaDashboard/views/AgendaOverview.vue?549c"],"names":["BaseItemGroup","extend","name","provide","btnToggle","this","computed","classes","options","call","methods","genData","mixins","ButtonGroup","Colorable","props","backgroundColor","String","borderless","Boolean","dense","group","rounded","shaped","tile","themeClasses","data","setTextColor","color","setBackgroundColor","Vue","getDefaultMouseEventHandlers","suffix","getData","eventFirst","listeners","Object","keys","$listeners","filter","key","endsWith","reduce","acc","event","slice","length","getMouseEventHandlers","prevent","result","events","on","eventOptions","prefix","passive","once","capture","handler","e","mouseEvent","undefined","button","buttons","preventDefault","stop","stopPropagation","classSeparator","eventTargetClasses","_a","currentTarget","className","split","currentTargets","document","elementsFromPoint","changedTouches","clientX","clientY","find","t","some","c","includes","_b","target","isSameNode","dispatchEvent","TouchEvent","type","targetTouches","touches","$emit","Array","isArray","push","now","validator","validateTimestamp","times","parseTimestamp","today","parsedNow","watch","created","updateTimes","setPresent","present","past","future","getNow","updateDay","updateTime","parseDate","Date","date","year","month","day","weekday","time","hour","minute","MILLIS_IN_DAY","getVisuals","minStart","visuals","map","columnCount","column","left","width","sort","a","b","Math","max","startTimestampIdentifier","endTimestampIdentifier","hasOverlap","s0","e0","s1","e1","exclude","setColumnCount","groups","forEach","groupVisual","getRange","getDayRange","startIdentifier","endIdentifier","getNormalizedRange","dayStart","min","getOpenGroup","start","end","timed","i","intersected","k","groupStart","groupEnd","getOverlapGroupHandler","firstWeekday","reset","dayEvents","getTimestampIdentifier","visual","targetGroup","FULL_WIDTH","DEFAULT_OFFSET","WIDTH_MULTIPLIER","stack","overlapThreshold","getGroups","nodes","child","getNode","index","getNextIndex","parent","getParent","sibling","addTime","children","getOverlappingRange","grand","grandNext","calculateBounds","node","columns","getMaxChildIndex","spaceLeft","spaceWidth","offset","columnWidthMultiplier","getColumnWidthMultiplier","columnOffset","columnWidth","hasFullWidth","maxColumn","minColumn","getOverlappingIndices","indices","other","indexMin","indexMax","returnFirstColumn","overlapping","first","n","added","childMax","identifier","minutes","removeMinutes","totalMinutes","addHours","floor","addMinutes","CalendarEventOverlapModes","base","Number","validate","default","weekdays","validateWeekdays","hideHeader","shortWeekdays","weekdayFormat","Function","dayFormat","intervals","maxDays","shortIntervals","intervalHeight","validateNumber","intervalWidth","intervalMinutes","firstInterval","firstTime","validateTime","intervalCount","intervalFormat","intervalStyle","showIntervalLabel","weeks","localeFirstDayOfYear","minWeeks","shortMonths","showMonthOnFirst","showWeek","monthFormat","calendar","value","category","categories","categoryText","categoryHideDynamic","categoryShowAll","categoryForInvalid","categoryDays","x","isFinite","parseInt","eventStart","eventEnd","eventTimed","eventCategory","eventHeight","eventColor","eventTextColor","eventName","eventOverlapThreshold","eventOverlapMode","mode","eventMore","eventMoreText","eventRipple","eventMarginBottom","input","ints","DAYS_IN_WEEK","visited","wrapped","d","Localable","Mouse","Themeable","Times","directives","Resize","parsedWeekdays","weekdaySkips","getWeekdaySkips","weekdaySkipsReverse","reversed","reverse","parsedStart","parsedEnd","days","createDayList","dayFormatter","timeZone","createNativeLocaleFormatter","currentLocale","_tms","_short","weekdayFormatter","longOptions","shortOptions","short","getRelativeClasses","timestamp","outside","getStartOfWeek","getEndOfWeek","getFormatter","locale","parseEvent","startProperty","endProperty","startInput","endInput","startParsed","endParsed","isTimedless","updateHasTime","getDayIdentifier","endOffset","hasTime","allDay","isEventOn","dayIdentifier","isEventHiddenOn","isEventStart","isEventOverlapping","WIDTH_FULL","WIDTH_START","MINUTES_IN_DAY","CalendarBase","ripple","noEvents","parsedEvents","parsedEventOverlapThreshold","eventTimedFunction","eventCategoryFunction","eventTextColorFunction","eventNameFunction","timedEvent","eventModeFunction","eventWeekdays","categoryMode","eventColorFunction","formatTime","withTime","ampm","formatter","updateEventVisibility","eventsMap","getEventsMap","more","parentBounds","getBoundingClientRect","last","eventsSorted","bottom","hidden","hide","style","display","innerHTML","$vuetify","lang","elements","$refs","el","getAttribute","parentElement","genDayEvent","week","weekdayIdentifier","scope","eventParsed","genEvent","staticClass","class","height","attrs","ref","refInFor","genTimedEvent","timeDelta","top","timeToY","scopeInput","slot","$scopedSlots","text","background","overlapsNoon","singline","diffMinutes","timeSummary","eventSummary","delimiter","$createElement","nativeEvent","genName","genPlaceholder","genMore","getVisibleEvents","isEventForCategory","categoryName","getEventsForDay","getEventsForDayAll","getEventsForDayTimed","getScopedSlots","isNode","getSlotChildren","getter","mapper","mapped","slots","slotDay","slotDayHeader","slotDayBody","concat","parsedMinWeeks","minDays","MAX_SAFE_INTEGER","todayWeek","monthFormatter","isOutside","genHead","role","genHeadDays","header","genHeadDay","unshift","genWeeks","weekDays","genWeek","getWeekNumber","weekNumber","weekNodes","genDay","genWeekNumber","determineDay","genDayLabel","getSlot","genDayLabelButton","hasMonth","VBtn","fab","depressed","small","genDayMonth","render","h","dragstart","VCalendarWeekly","getStartOfMonth","getEndOfMonth","parsedFirstInterval","parsedIntervalMinutes","parsedIntervalCount","parsedIntervalHeight","parseFloat","parsedFirstTime","parseTime","firstMinute","bodyHeight","count","createIntervalList","intervalFormatter","shortHourOptions","tms","showIntervalLabelDefault","interval","isFirst","intervalStyleDefault","_interval","getTimestampAtEvent","copyTimestamp","bounds","baseMinutes","touchEvent","addIntervals","updateMinutes","getSlotScope","minutesToPixels","scrollToTime","y","pane","scrollArea","scrollTop","clamp","gap","CalendarWithIntervals","scrollPush","mounted","init","$nextTick","onResize","getScrollPush","area","offsetWidth","marginRight","genHeadIntervals","convertToUnit","genHeadWeekday","genHeadDayLabel","genDayHeader","genHeadDayButton","genBody","genScrollArea","genPane","genDayContainer","genBodyIntervals","genDays","genDayIntervals","genDayBody","genDayInterval","styler","genIntervalLabels","genIntervalLabel","shower","show","label","modifiers","quiet","parsedCategoryText","getParsedCategories","VCalendarDaily","parsedCategories","genDayHeaderCategory","getCategoryScope","cat","headerTitle","genDayHeaderCategoryTitle","j","fill","v","categoryIndex","genDayBodyCategory","CalendarWithEvents","lastStart","lastEnd","parsedValue","parsedCategoryDays","renderProps","around","component","VCalendarMonthly","relativeDays","nextDay","updateFormatted","VCalendarCategory","getCategoryList","Error","title","spanYears","spanMonths","monthShortFormatter","monthLongFormatter","checkChange","updated","window","requestAnimationFrame","move","amount","moved","forward","mover","prevDay","limit","DAYS_IN_MONTH_MAX","DAY_MIN","updateWeekday","updateRelative","timestampToDate","getTime","next","prev","$children","required","categoryMap","categoryLength","ev","hasOwnProperty","$props","click:date","scopedSlots","fn","_c","logoSrc","proxy","model","callback","calendarViewIndex","_vm","$event","showAgendaExportToExcelDialog","apply","arguments","onCalenderChange","gotoAgenda","showInfo","focusDate","$$v","expression","staticRenderFns","staticStyle","valid","titleRules","$t","form","_v","sendUpdatesPerEmail","visible","dialog","includeInWebcal","dailyChanges","activitiesFrequent","enabled","activitiesOverview","busy","disabled","mapGetters","currentSearch","agendaDialogFormSavedSearchesVisible","search","setFormData","resetForm","id","onSetFormData","hideForm","$store","dispatch","cancelForm","formName","submitForm","then","beforeUpdate","closeAction","selectedAgendaSavedSearches","dates","dateRangeText","userPreferences","menu","toISOString","moment","add","convertedDates","selectedAgendaRules","agendaSavedSearches","items","$set","format","join","likesAllAgendas","likesSomeAgendas","icon","setTime","hideDialog","updateDates","save","savedSearches","startDate","endDate","response","url","URL","createObjectURL","Blob","link","createElement","href","setAttribute","body","appendChild","click","remove","toggle","_self","itemsAll","openNodes","onCheckboxClicked","itemsChecked","components","TreeviewRoot","filterType","queryStringRoute","addRootNode","syncQueryString","allowSelectAll","dispatchOnCheckboxClicked","storeGetter","storeSetter","tmp","filters","get","getters","set","checkedFilters","mapState","$route","query","AgendaFilterTree","openPanelIndexes","AgendaSavedSearchesForm","BaseLayout","AgendaSidebar","SearchBar","SavedSearches","agendaFiltersAreSet","calendarViewTypes","calendarViewType","calendarViewEnum","modes","eventsTable","positionX","positionY","element","authHasModuleAccess","agendas","agendaFilters","agendaQuery","searchParameters","theme","dark","selectLogo","showDialog","AgendaExportToExcelDialog","logMouse","gotToRoute","$router","setCalendarView","viewType","setToday","showTeaserDialog","FeatureTeaserListManager","breakpoint","mdAndDown","path","open","ComponentClass","AgendaTooltip","propsData","posx","posy","$slots","$mount","container","$el","hideInfo","removeChild","$destroy","viewDay","setCalenderViewIndex","createStartDate","getFullYear","getMonth","getDate","createEndDate","obj","correctedStartDate","onCalenderMove","getEvents","setInitialDateRange","flattenNestedArray","treeObject","ids","treeItem","childIds","agenda","fixedStartTime","startTime","fixedEndTime","endTime","origin","location","confidentiality","Config","colors","kind","yearWeek","allAgendaFilters","flatten","values","message","getEventColor","parseQueryParams","queryParams","$gtag","pageview","page_path","uiDarkMode","addEventListener","destroyed","removeEventListener"],"mappings":"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","file":"js/AgendaOverview.eeac1cd9.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/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AgendaExportToExcelDialog.vue?vue&type=style&index=0&id=5d57eaf2&prod&lang=scss&scoped=true\"","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/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AgendaSavedSearchesForm.vue?vue&type=style&index=0&id=53ec41fe&prod&scoped=true&lang=scss\"","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/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AgendaFilterTree.vue?vue&type=style&index=0&id=5986bc14&prod&lang=scss&scoped=true\"","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/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AgendaSavedSearchesForm.vue?vue&type=style&index=1&id=53ec41fe&prod&lang=scss\"","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/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AgendaOverview.vue?vue&type=style&index=0&id=578733a2&prod&scoped=true&lang=scss\"","// Extensions\nimport { BaseItemGroup } from '../../components/VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n name: 'button-group',\n\n provide (): object {\n return {\n btnToggle: this,\n }\n },\n\n computed: {\n classes (): object {\n return BaseItemGroup.options.computed.classes.call(this)\n },\n },\n\n methods: {\n // Isn't being passed down through types\n genData: BaseItemGroup.options.methods.genData,\n },\n})\n","// Styles\nimport './VBtnToggle.sass'\n\n// Mixins\nimport ButtonGroup from '../../mixins/button-group'\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(\n ButtonGroup,\n Colorable\n).extend({\n name: 'v-btn-toggle',\n\n props: {\n backgroundColor: String,\n borderless: Boolean,\n dense: Boolean,\n group: Boolean,\n rounded: Boolean,\n shaped: Boolean,\n tile: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n ...ButtonGroup.options.computed.classes.call(this),\n 'v-btn-toggle': true,\n 'v-btn-toggle--borderless': this.borderless,\n 'v-btn-toggle--dense': this.dense,\n 'v-btn-toggle--group': this.group,\n 'v-btn-toggle--rounded': this.rounded,\n 'v-btn-toggle--shaped': this.shaped,\n 'v-btn-toggle--tile': this.tile,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genData () {\n const data = this.setTextColor(this.color, {\n ...ButtonGroup.options.methods.genData.call(this),\n })\n\n if (this.group) return data\n\n return this.setBackgroundColor(this.backgroundColor, data)\n },\n },\n})\n","import Vue from 'vue'\n\nexport type MouseHandler = (e: MouseEvent | TouchEvent) => any\n\nexport type MouseEvents = {\n [event: string]: {\n event: string\n passive?: boolean\n capture?: boolean\n once?: boolean\n stop?: boolean\n prevent?: boolean\n button?: number\n result?: any\n }\n}\n\nexport type MouseEventsMap = {\n [event: string]: MouseHandler | MouseHandler[]\n}\n\nexport default Vue.extend({\n name: 'mouse',\n\n methods: {\n getDefaultMouseEventHandlers (suffix: string, getData: MouseHandler, eventFirst = false): MouseEventsMap {\n const listeners = Object.keys(this.$listeners)\n .filter(key => key.endsWith(suffix))\n .reduce((acc, key) => {\n acc[key] = { event: key.slice(0, -suffix.length) }\n return acc\n }, {} as MouseEvents)\n\n return this.getMouseEventHandlers({\n ...listeners,\n ['contextmenu' + suffix]: { event: 'contextmenu', prevent: true, result: false },\n }, getData, eventFirst)\n },\n getMouseEventHandlers (events: MouseEvents, getData: MouseHandler, eventFirst = false): MouseEventsMap {\n const on: MouseEventsMap = {}\n\n for (const event in events) {\n const eventOptions = events[event]\n\n if (!this.$listeners[event]) continue\n\n // TODO somehow pull in modifiers\n\n const prefix = eventOptions.passive ? '&' : ((eventOptions.once ? '~' : '') + (eventOptions.capture ? '!' : ''))\n const key = prefix + eventOptions.event\n\n const handler: MouseHandler = e => {\n const mouseEvent: MouseEvent = e as MouseEvent\n if (eventOptions.button === undefined || (mouseEvent.buttons > 0 && mouseEvent.button === eventOptions.button)) {\n if (eventOptions.prevent) {\n e.preventDefault()\n }\n if (eventOptions.stop) {\n e.stopPropagation()\n }\n\n // Due to TouchEvent target always returns the element that is first placed\n // Even if touch point has since moved outside the interactive area of that element\n // Ref: https://developer.mozilla.org/en-US/docs/Web/API/Touch/target\n // This block of code aims to make sure touchEvent is always dispatched from the element that is being pointed at\n if (e && 'touches' in e) {\n const classSeparator = ' '\n\n const eventTargetClasses = (e.currentTarget as HTMLElement)?.className.split(classSeparator)\n const currentTargets = document.elementsFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY)\n\n // Get \"the same kind\" current hovering target by checking\n // If element has the same class of initial touch start element (which has touch event listener registered)\n const currentTarget = currentTargets.find(t => t.className.split(classSeparator).some(c => eventTargetClasses.includes(c)))\n\n if (currentTarget &&\n !(e.target as HTMLElement)?.isSameNode(currentTarget)\n ) {\n currentTarget.dispatchEvent(new TouchEvent(e.type, {\n changedTouches: e.changedTouches as unknown as Touch[],\n targetTouches: e.targetTouches as unknown as Touch[],\n touches: e.touches as unknown as Touch[],\n }))\n return\n }\n }\n\n // TODO: VCalendar emits the calendar event as the first argument,\n // but it really should be the native event instead so modifiers can be used\n if (eventFirst) {\n this.$emit(event, e, getData(e))\n } else {\n this.$emit(event, getData(e), e)\n }\n }\n\n return eventOptions.result\n }\n\n if (key in on) {\n /* istanbul ignore next */\n if (Array.isArray(on[key])) {\n (on[key] as MouseHandler[]).push(handler)\n } else {\n on[key] = [on[key], handler] as MouseHandler[]\n }\n } else {\n on[key] = handler\n }\n }\n\n return on\n },\n },\n})\n","import Vue from 'vue'\n\nimport {\n validateTimestamp,\n parseTimestamp,\n parseDate,\n} from '../util/timestamp'\nimport { CalendarTimestamp } from 'vuetify/types'\n\nexport default Vue.extend({\n name: 'times',\n\n props: {\n now: {\n type: String,\n validator: validateTimestamp,\n },\n },\n\n data: () => ({\n times: {\n now: parseTimestamp('0000-00-00 00:00', true),\n today: parseTimestamp('0000-00-00', true),\n },\n }),\n\n computed: {\n parsedNow (): CalendarTimestamp | null {\n return this.now ? parseTimestamp(this.now, true) : null\n },\n },\n\n watch: {\n parsedNow: 'updateTimes',\n },\n\n created () {\n this.updateTimes()\n this.setPresent()\n },\n\n methods: {\n setPresent (): void {\n this.times.now.present = this.times.today.present = true\n this.times.now.past = this.times.today.past = false\n this.times.now.future = this.times.today.future = false\n },\n updateTimes (): void {\n const now: CalendarTimestamp = this.parsedNow || this.getNow()\n this.updateDay(now, this.times.now)\n this.updateTime(now, this.times.now)\n this.updateDay(now, this.times.today)\n },\n getNow (): CalendarTimestamp {\n return parseDate(new Date())\n },\n updateDay (now: CalendarTimestamp, target: CalendarTimestamp): void {\n if (now.date !== target.date) {\n target.year = now.year\n target.month = now.month\n target.day = now.day\n target.weekday = now.weekday\n target.date = now.date\n }\n },\n updateTime (now: CalendarTimestamp, target: CalendarTimestamp): void {\n if (now.time !== target.time) {\n target.hour = now.hour\n target.minute = now.minute\n target.time = now.time\n }\n },\n },\n})\n","import { CalendarEventParsed, CalendarEventVisual, CalendarTimestamp } from 'vuetify/types'\nimport { getTimestampIdentifier } from '../util/timestamp'\n\nconst MILLIS_IN_DAY = 86400000\n\nexport type GetRange = (event: CalendarEventParsed) => [number, number]\n\nexport function getVisuals (events: CalendarEventParsed[], minStart = 0): CalendarEventVisual[] {\n const visuals = events.map(event => ({\n event,\n columnCount: 0,\n column: 0,\n left: 0,\n width: 100,\n }))\n\n visuals.sort((a, b) => {\n return (Math.max(minStart, a.event.startTimestampIdentifier) - Math.max(minStart, b.event.startTimestampIdentifier)) ||\n (b.event.endTimestampIdentifier - a.event.endTimestampIdentifier)\n })\n\n return visuals\n}\n\nexport interface ColumnGroup {\n start: number\n end: number\n visuals: CalendarEventVisual[]\n}\n\nexport function hasOverlap (s0: number, e0: number, s1: number, e1: number, exclude = true): boolean {\n return exclude ? !(s0 >= e1 || e0 <= s1) : !(s0 > e1 || e0 < s1)\n}\n\nexport function setColumnCount (groups: ColumnGroup[]) {\n groups.forEach(group => {\n group.visuals.forEach(groupVisual => {\n groupVisual.columnCount = groups.length\n })\n })\n}\n\nexport function getRange (event: CalendarEventParsed): [number, number] {\n return [event.startTimestampIdentifier, event.endTimestampIdentifier]\n}\n\nexport function getDayRange (event: CalendarEventParsed): [number, number] {\n return [event.startIdentifier, event.endIdentifier]\n}\n\nexport function getNormalizedRange (event: CalendarEventParsed, dayStart: number): [number, number] {\n return [Math.max(dayStart, event.startTimestampIdentifier), Math.min(dayStart + MILLIS_IN_DAY, event.endTimestampIdentifier)]\n}\n\nexport function getOpenGroup (groups: ColumnGroup[], start: number, end: number, timed: boolean) {\n for (let i = 0; i < groups.length; i++) {\n const group = groups[i]\n let intersected = false\n\n if (hasOverlap(start, end, group.start, group.end, timed)) {\n for (let k = 0; k < group.visuals.length; k++) {\n const groupVisual = group.visuals[k]\n const [groupStart, groupEnd] = timed ? getRange(groupVisual.event) : getDayRange(groupVisual.event)\n\n if (hasOverlap(start, end, groupStart, groupEnd, timed)) {\n intersected = true\n break\n }\n }\n }\n\n if (!intersected) {\n return i\n }\n }\n\n return -1\n}\n\nexport function getOverlapGroupHandler (firstWeekday: number) {\n const handler = {\n groups: [] as ColumnGroup[],\n min: -1,\n max: -1,\n reset: () => {\n handler.groups = []\n handler.min = handler.max = -1\n },\n getVisuals: (day: CalendarTimestamp, dayEvents: CalendarEventParsed[], timed: boolean, reset = false) => {\n if (day.weekday === firstWeekday || reset) {\n handler.reset()\n }\n\n const dayStart = getTimestampIdentifier(day)\n const visuals = getVisuals(dayEvents, dayStart)\n\n visuals.forEach(visual => {\n const [start, end] = timed ? getRange(visual.event) : getDayRange(visual.event)\n\n if (handler.groups.length > 0 && !hasOverlap(start, end, handler.min, handler.max, timed)) {\n setColumnCount(handler.groups)\n handler.reset()\n }\n\n let targetGroup = getOpenGroup(handler.groups, start, end, timed)\n\n if (targetGroup === -1) {\n targetGroup = handler.groups.length\n\n handler.groups.push({ start, end, visuals: [] })\n }\n\n const target = handler.groups[targetGroup]\n target.visuals.push(visual)\n target.start = Math.min(target.start, start)\n target.end = Math.max(target.end, end)\n\n visual.column = targetGroup\n\n if (handler.min === -1) {\n handler.min = start\n handler.max = end\n } else {\n handler.min = Math.min(handler.min, start)\n handler.max = Math.max(handler.max, end)\n }\n })\n\n setColumnCount(handler.groups)\n\n if (timed) {\n handler.reset()\n }\n\n return visuals\n },\n }\n\n return handler\n}\n","import { CalendarEventOverlapMode, CalendarEventVisual } from 'vuetify/types'\nimport { getOverlapGroupHandler, getVisuals, hasOverlap, getNormalizedRange } from './common'\nimport { getTimestampIdentifier } from '../util/timestamp'\n\ninterface Group {\n start: number\n end: number\n visuals: CalendarEventVisual[]\n}\n\ninterface Node {\n parent: Node | null\n sibling: boolean\n index: number\n visual: CalendarEventVisual\n start: number\n end: number\n children: Node[]\n}\n\nconst FULL_WIDTH = 100\n\nconst DEFAULT_OFFSET = 5\n\nconst WIDTH_MULTIPLIER = 1.7\n\n/**\n * Variation of column mode where events can be stacked. The priority of this\n * mode is to stack events together taking up the least amount of space while\n * trying to ensure the content of the event is always visible as well as its\n * start and end. A sibling column has intersecting event content and must be\n * placed beside each other. Non-sibling columns are offset by 5% from the\n * previous column. The width is scaled by 1.7 so the events overlap and\n * whitespace is reduced. If there is a hole in columns the event width is\n * scaled up so it intersects with the next column. The columns have equal\n * width in the space they are given. If the event doesn't have any to the\n * right of it that intersect with it's content it's right side is extended\n * to the right side.\n */\n\nexport const stack: CalendarEventOverlapMode = (events, firstWeekday, overlapThreshold) => {\n const handler = getOverlapGroupHandler(firstWeekday)\n\n // eslint-disable-next-line max-statements\n return (day, dayEvents, timed, reset) => {\n if (!timed) {\n return handler.getVisuals(day, dayEvents, timed, reset)\n }\n\n const dayStart = getTimestampIdentifier(day)\n const visuals = getVisuals(dayEvents, dayStart)\n const groups = getGroups(visuals, dayStart)\n\n for (const group of groups) {\n const nodes: Node[] = []\n\n for (const visual of group.visuals) {\n const child = getNode(visual, dayStart)\n const index = getNextIndex(child, nodes)\n\n if (index === false) {\n const parent = getParent(child, nodes)\n if (parent) {\n child.parent = parent\n child.sibling = hasOverlap(child.start, child.end, parent.start, addTime(parent.start, overlapThreshold))\n child.index = parent.index + 1\n parent.children.push(child)\n }\n } else {\n const [parent] = getOverlappingRange(child, nodes, index - 1, index - 1)\n const children = getOverlappingRange(child, nodes, index + 1, index + nodes.length, true)\n\n child.children = children\n child.index = index\n\n if (parent) {\n child.parent = parent\n child.sibling = hasOverlap(child.start, child.end, parent.start, addTime(parent.start, overlapThreshold))\n parent.children.push(child)\n }\n\n for (const grand of children) {\n if (grand.parent === parent) {\n grand.parent = child\n }\n\n const grandNext = grand.index - child.index <= 1\n if (grandNext && child.sibling &&\n hasOverlap(child.start, addTime(child.start, overlapThreshold), grand.start, grand.end)) {\n grand.sibling = true\n }\n }\n }\n\n nodes.push(child)\n }\n\n calculateBounds(nodes, overlapThreshold)\n }\n\n visuals.sort((a, b) => (a.left - b.left) || (a.event.startTimestampIdentifier - b.event.startTimestampIdentifier))\n\n return visuals\n }\n}\n\nfunction calculateBounds (nodes: Node[], overlapThreshold: number) {\n for (const node of nodes) {\n const { visual, parent } = node\n const columns = getMaxChildIndex(node) + 1\n const spaceLeft = parent ? parent.visual.left : 0\n const spaceWidth = FULL_WIDTH - spaceLeft\n const offset = Math.min(DEFAULT_OFFSET, FULL_WIDTH / columns)\n const columnWidthMultiplier = getColumnWidthMultiplier(node, nodes)\n const columnOffset = spaceWidth / (columns - node.index + 1)\n const columnWidth = spaceWidth / (columns - node.index + (node.sibling ? 1 : 0)) * columnWidthMultiplier\n\n if (parent) {\n visual.left = node.sibling\n ? spaceLeft + columnOffset\n : spaceLeft + offset\n }\n\n visual.width = hasFullWidth(node, nodes, overlapThreshold)\n ? FULL_WIDTH - visual.left\n : Math.min(FULL_WIDTH - visual.left, columnWidth * WIDTH_MULTIPLIER)\n }\n}\n\nfunction getColumnWidthMultiplier (node: Node, nodes: Node[]): number {\n if (!node.children.length) {\n return 1\n }\n\n const maxColumn = node.index + nodes.length\n const minColumn = node.children.reduce((min, c) => Math.min(min, c.index), maxColumn)\n\n return minColumn - node.index\n}\n\nfunction getOverlappingIndices (node: Node, nodes: Node[]): number[] {\n const indices: number[] = []\n for (const other of nodes) {\n if (hasOverlap(node.start, node.end, other.start, other.end)) {\n indices.push(other.index)\n }\n }\n return indices\n}\n\nfunction getNextIndex (node: Node, nodes: Node[]): number | false {\n const indices = getOverlappingIndices(node, nodes)\n indices.sort()\n\n for (let i = 0; i < indices.length; i++) {\n if (i < indices[i]) {\n return i\n }\n }\n return false\n}\n\nfunction getOverlappingRange (node: Node, nodes: Node[], indexMin: number, indexMax: number, returnFirstColumn = false): Node[] {\n const overlapping: Node[] = []\n for (const other of nodes) {\n if (other.index >= indexMin && other.index <= indexMax && hasOverlap(node.start, node.end, other.start, other.end)) {\n overlapping.push(other)\n }\n }\n if (returnFirstColumn && overlapping.length > 0) {\n const first = overlapping.reduce((min, n) => Math.min(min, n.index), overlapping[0].index)\n return overlapping.filter(n => n.index === first)\n }\n return overlapping\n}\n\nfunction getParent (node: Node, nodes: Node[]): Node | null {\n let parent: Node | null = null\n for (const other of nodes) {\n if (hasOverlap(node.start, node.end, other.start, other.end) && (parent === null || other.index > parent.index)) {\n parent = other\n }\n }\n return parent\n}\n\nfunction hasFullWidth (node: Node, nodes: Node[], overlapThreshold: number): boolean {\n for (const other of nodes) {\n if (other !== node &&\n other.index > node.index &&\n hasOverlap(node.start, addTime(node.start, overlapThreshold), other.start, other.end)) {\n return false\n }\n }\n\n return true\n}\n\nfunction getGroups (visuals: CalendarEventVisual[], dayStart: number): Group[] {\n const groups: Group[] = []\n\n for (const visual of visuals) {\n const [start, end] = getNormalizedRange(visual.event, dayStart)\n let added = false\n\n for (const group of groups) {\n if (hasOverlap(start, end, group.start, group.end)) {\n group.visuals.push(visual)\n group.end = Math.max(group.end, end)\n added = true\n break\n }\n }\n\n if (!added) {\n groups.push({ start, end, visuals: [visual] })\n }\n }\n\n return groups\n}\n\nfunction getNode (visual: CalendarEventVisual, dayStart: number): Node {\n const [start, end] = getNormalizedRange(visual.event, dayStart)\n\n return {\n parent: null,\n sibling: true,\n index: 0,\n visual,\n start,\n end,\n children: [],\n }\n}\n\nfunction getMaxChildIndex (node: Node): number {\n let max = node.index\n for (const child of node.children) {\n const childMax = getMaxChildIndex(child)\n if (childMax > max) {\n max = childMax\n }\n }\n return max\n}\n\nfunction addTime (identifier: number, minutes: number): number {\n const removeMinutes = identifier % 100\n const totalMinutes = removeMinutes + minutes\n const addHours = Math.floor(totalMinutes / 60)\n const addMinutes = totalMinutes % 60\n\n return identifier - removeMinutes + addHours * 100 + addMinutes\n}\n","import { CalendarEventOverlapMode } from 'vuetify/types'\nimport { getOverlapGroupHandler } from './common'\n\nconst FULL_WIDTH = 100\n\nexport const column: CalendarEventOverlapMode = (events, firstWeekday, overlapThreshold) => {\n const handler = getOverlapGroupHandler(firstWeekday)\n\n return (day, dayEvents, timed, reset) => {\n const visuals = handler.getVisuals(day, dayEvents, timed, reset)\n\n if (timed) {\n visuals.forEach(visual => {\n visual.left = visual.column * FULL_WIDTH / visual.columnCount\n visual.width = FULL_WIDTH / visual.columnCount\n })\n }\n\n return visuals\n }\n}\n","import { CalendarEventOverlapMode } from 'vuetify/types'\nimport { stack } from './stack'\nimport { column } from './column'\n\nexport const CalendarEventOverlapModes: Record = {\n stack,\n column,\n}\n","\nimport { validateTimestamp, parseDate, DAYS_IN_WEEK, validateTime } from './timestamp'\nimport { PropType } from 'vue'\nimport { CalendarEvent, CalendarFormatter, CalendarTimestamp, CalendarEventOverlapMode, CalendarEventNameFunction, CalendarEventColorFunction, CalendarEventCategoryFunction, CalendarEventTimedFunction, CalendarCategoryTextFunction, CalendarCategory } from 'vuetify/types'\nimport { CalendarEventOverlapModes } from '../modes'\nimport { PropValidator } from 'vue/types/options'\n\nexport default {\n base: {\n start: {\n type: [String, Number, Date],\n validate: validateTimestamp,\n default: () => parseDate(new Date()).date,\n },\n end: {\n type: [String, Number, Date],\n validate: validateTimestamp,\n },\n weekdays: {\n type: [Array, String] as PropType,\n default: () => [0, 1, 2, 3, 4, 5, 6],\n validate: validateWeekdays,\n },\n hideHeader: {\n type: Boolean,\n },\n shortWeekdays: {\n type: Boolean,\n default: true,\n },\n weekdayFormat: {\n type: Function as PropType,\n default: null,\n },\n dayFormat: {\n type: Function as PropType,\n default: null,\n },\n },\n intervals: {\n maxDays: {\n type: Number,\n default: 7,\n },\n shortIntervals: {\n type: Boolean,\n default: true,\n },\n intervalHeight: {\n type: [Number, String],\n default: 48,\n validate: validateNumber,\n },\n intervalWidth: {\n type: [Number, String],\n default: 60,\n validate: validateNumber,\n },\n intervalMinutes: {\n type: [Number, String],\n default: 60,\n validate: validateNumber,\n },\n firstInterval: {\n type: [Number, String],\n default: 0,\n validate: validateNumber,\n },\n firstTime: {\n type: [Number, String, Object],\n validate: validateTime,\n },\n intervalCount: {\n type: [Number, String],\n default: 24,\n validate: validateNumber,\n },\n intervalFormat: {\n type: Function as PropType,\n default: null,\n },\n intervalStyle: {\n type: Function as PropType<(interval: CalendarTimestamp) => object>,\n default: null,\n },\n showIntervalLabel: {\n type: Function as PropType<(interval: CalendarTimestamp) => boolean>,\n default: null,\n },\n },\n weeks: {\n localeFirstDayOfYear: {\n type: [String, Number],\n default: 0,\n },\n minWeeks: {\n validate: validateNumber,\n default: 1,\n },\n shortMonths: {\n type: Boolean,\n default: true,\n },\n showMonthOnFirst: {\n type: Boolean,\n default: true,\n },\n showWeek: Boolean,\n monthFormat: {\n type: Function as PropType,\n default: null,\n },\n },\n calendar: {\n type: {\n type: String,\n default: 'month',\n },\n value: {\n type: [String, Number, Date] as PropType,\n validate: validateTimestamp,\n },\n },\n category: {\n categories: {\n type: [Array, String] as PropType,\n default: '',\n },\n categoryText: {\n type: [String, Function] as PropType,\n },\n categoryHideDynamic: {\n type: Boolean,\n },\n categoryShowAll: {\n type: Boolean,\n },\n categoryForInvalid: {\n type: String,\n default: '',\n },\n categoryDays: {\n type: [Number, String],\n default: 1,\n validate: (x: any) => isFinite(parseInt(x)) && parseInt(x) > 0,\n },\n },\n events: {\n events: {\n type: Array,\n default: () => [],\n } as PropValidator,\n eventStart: {\n type: String,\n default: 'start',\n },\n eventEnd: {\n type: String,\n default: 'end',\n },\n eventTimed: {\n type: [String, Function] as PropType,\n default: 'timed',\n },\n eventCategory: {\n type: [String, Function] as PropType,\n default: 'category',\n },\n eventHeight: {\n type: Number,\n default: 20,\n },\n eventColor: {\n type: [String, Function] as PropType,\n default: 'primary',\n },\n eventTextColor: {\n type: [String, Function] as PropType,\n default: 'white',\n },\n eventName: {\n type: [String, Function] as PropType,\n default: 'name',\n },\n eventOverlapThreshold: {\n type: [String, Number],\n default: 60,\n },\n eventOverlapMode: {\n type: [String, Function],\n default: 'stack',\n validate: (mode: any) => mode in CalendarEventOverlapModes || typeof mode === 'function',\n } as PropValidator<'stack' | 'column' | CalendarEventOverlapMode>,\n eventMore: {\n type: Boolean,\n default: true,\n },\n eventMoreText: {\n type: String,\n default: '$vuetify.calendar.moreEvents',\n },\n eventRipple: {\n type: [Boolean, Object],\n default: null,\n },\n eventMarginBottom: {\n type: Number,\n default: 1,\n },\n },\n}\n\nexport function validateNumber (input: any): boolean {\n return isFinite(parseInt(input))\n}\n\nexport function validateWeekdays (input: string | (number | string)[]): boolean {\n if (typeof input === 'string') {\n input = input.split(',')\n }\n\n if (Array.isArray(input)) {\n const ints = input.map(x => parseInt(x))\n\n if (ints.length > DAYS_IN_WEEK || ints.length === 0) {\n return false\n }\n\n const visited: Record = {}\n let wrapped = false\n\n for (let i = 0; i < ints.length; i++) {\n const x = ints[i]\n\n if (!isFinite(x) || x < 0 || x >= DAYS_IN_WEEK) {\n return false\n }\n\n if (i > 0) {\n const d = x - ints[i - 1]\n if (d < 0) {\n if (wrapped) {\n return false\n }\n wrapped = true\n } else if (d === 0) {\n return false\n }\n }\n\n if (visited[x]) {\n return false\n }\n visited[x] = true\n }\n\n return true\n }\n\n return false\n}\n","\n// Mixins\nimport mixins from '../../../util/mixins'\nimport Colorable from '../../../mixins/colorable'\nimport Localable from '../../../mixins/localable'\nimport Mouse from '../../../mixins/mouse'\nimport Themeable from '../../../mixins/themeable'\nimport Times from './times'\n\n// Directives\nimport Resize from '../../../directives/resize'\n\n// Util\nimport props from '../util/props'\nimport {\n parseTimestamp,\n getWeekdaySkips,\n createDayList,\n createNativeLocaleFormatter,\n getStartOfWeek,\n getEndOfWeek,\n getTimestampIdentifier,\n} from '../util/timestamp'\nimport { CalendarTimestamp, CalendarFormatter } from 'vuetify/types'\n\nexport default mixins(\n Colorable,\n Localable,\n Mouse,\n Themeable,\n Times\n/* @vue/component */\n).extend({\n name: 'calendar-base',\n\n directives: {\n Resize,\n },\n\n props: props.base,\n\n computed: {\n parsedWeekdays (): number[] {\n return Array.isArray(this.weekdays)\n ? this.weekdays\n : (this.weekdays || '').split(',').map(x => parseInt(x, 10))\n },\n weekdaySkips (): number[] {\n return getWeekdaySkips(this.parsedWeekdays)\n },\n weekdaySkipsReverse (): number [] {\n const reversed = this.weekdaySkips.slice()\n reversed.reverse()\n return reversed\n },\n parsedStart (): CalendarTimestamp {\n return parseTimestamp(this.start, true)\n },\n parsedEnd (): CalendarTimestamp {\n const start = this.parsedStart\n const end: CalendarTimestamp = this.end ? parseTimestamp(this.end) || start : start\n\n return getTimestampIdentifier(end) < getTimestampIdentifier(start) ? start : end\n },\n days (): CalendarTimestamp[] {\n return createDayList(\n this.parsedStart,\n this.parsedEnd,\n this.times.today,\n this.weekdaySkips\n )\n },\n dayFormatter (): CalendarFormatter {\n if (this.dayFormat) {\n return this.dayFormat as CalendarFormatter\n }\n\n const options = { timeZone: 'UTC', day: 'numeric' }\n\n return createNativeLocaleFormatter(\n this.currentLocale,\n (_tms, _short) => options\n )\n },\n weekdayFormatter (): CalendarFormatter {\n if (this.weekdayFormat) {\n return this.weekdayFormat as CalendarFormatter\n }\n\n const longOptions = { timeZone: 'UTC', weekday: 'long' }\n const shortOptions = { timeZone: 'UTC', weekday: 'short' }\n\n return createNativeLocaleFormatter(\n this.currentLocale,\n (_tms, short) => short ? shortOptions : longOptions\n )\n },\n },\n\n methods: {\n getRelativeClasses (timestamp: CalendarTimestamp, outside = false): object {\n return {\n 'v-present': timestamp.present,\n 'v-past': timestamp.past,\n 'v-future': timestamp.future,\n 'v-outside': outside,\n }\n },\n getStartOfWeek (timestamp: CalendarTimestamp): CalendarTimestamp {\n return getStartOfWeek(timestamp, this.parsedWeekdays, this.times.today)\n },\n getEndOfWeek (timestamp: CalendarTimestamp): CalendarTimestamp {\n return getEndOfWeek(timestamp, this.parsedWeekdays, this.times.today)\n },\n getFormatter (options: object): CalendarFormatter {\n return createNativeLocaleFormatter(\n this.locale,\n (_tms, _short) => options\n )\n },\n },\n})\n","import {\n parseTimestamp,\n getDayIdentifier,\n getTimestampIdentifier,\n isTimedless,\n updateHasTime,\n} from './timestamp'\nimport { CalendarTimestamp, CalendarEvent, CalendarEventParsed } from 'vuetify/types'\n\nexport function parseEvent (\n input: CalendarEvent,\n index: number,\n startProperty: string,\n endProperty: string,\n timed = false,\n category: string | false = false,\n): CalendarEventParsed {\n const startInput = input[startProperty]\n const endInput = input[endProperty]\n const startParsed: CalendarTimestamp = parseTimestamp(startInput, true)\n const endParsed: CalendarTimestamp = (endInput ? parseTimestamp(endInput, true) : startParsed)\n const start: CalendarTimestamp = isTimedless(startInput)\n ? updateHasTime(startParsed, timed)\n : startParsed\n const end: CalendarTimestamp = isTimedless(endInput)\n ? updateHasTime(endParsed, timed)\n : endParsed\n const startIdentifier: number = getDayIdentifier(start)\n const startTimestampIdentifier: number = getTimestampIdentifier(start)\n const endIdentifier: number = getDayIdentifier(end)\n const endOffset: number = start.hasTime ? 0 : 2359\n const endTimestampIdentifier: number = getTimestampIdentifier(end) + endOffset\n const allDay = !start.hasTime\n\n return { input, start, startIdentifier, startTimestampIdentifier, end, endIdentifier, endTimestampIdentifier, allDay, index, category }\n}\n\nexport function isEventOn (event: CalendarEventParsed, dayIdentifier: number): boolean {\n return dayIdentifier >= event.startIdentifier && dayIdentifier <= event.endIdentifier\n}\n\nexport function isEventHiddenOn (event: CalendarEventParsed, day: CalendarTimestamp): boolean {\n return event.end.time === '00:00' && event.end.date === day.date && event.start.date !== day.date\n}\n\nexport function isEventStart (event: CalendarEventParsed, day: CalendarTimestamp, dayIdentifier: number, firstWeekday: number): boolean {\n return dayIdentifier === event.startIdentifier || (firstWeekday === day.weekday && isEventOn(event, dayIdentifier))\n}\n\nexport function isEventOverlapping (event: CalendarEventParsed, startIdentifier: number, endIdentifier: number): boolean {\n return startIdentifier <= event.endIdentifier && endIdentifier >= event.startIdentifier\n}\n","// Styles\nimport './calendar-with-events.sass'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\n// Directives\nimport ripple from '../../../directives/ripple'\n\n// Mixins\nimport CalendarBase from './calendar-base'\n\n// Util\nimport props from '../util/props'\nimport {\n CalendarEventOverlapModes,\n} from '../modes'\nimport {\n getDayIdentifier, diffMinutes,\n} from '../util/timestamp'\nimport {\n parseEvent,\n isEventStart,\n isEventOn,\n isEventOverlapping,\n isEventHiddenOn,\n} from '../util/events'\nimport {\n CalendarTimestamp,\n CalendarEventParsed,\n CalendarEventVisual,\n CalendarEventColorFunction,\n CalendarEventNameFunction,\n CalendarEventTimedFunction,\n CalendarDaySlotScope,\n CalendarDayBodySlotScope,\n CalendarEventOverlapMode,\n CalendarEvent,\n CalendarEventCategoryFunction,\n CalendarCategory,\n} from 'vuetify/types'\n\n// Types\ntype VEventGetter = (day: D) => CalendarEventParsed[]\n\ntype VEventVisualToNode = (visual: CalendarEventVisual, day: D) => VNode | false\n\ntype VEventsToNodes = (\n day: D,\n getter: VEventGetter,\n mapper: VEventVisualToNode,\n timed: boolean) => VNode[] | undefined\n\ntype VDailyEventsMap = {\n [date: string]: {\n parent: HTMLElement\n more: HTMLElement | null\n events: HTMLElement[]\n }\n}\n\ninterface VEventScopeInput {\n eventParsed: CalendarEventParsed\n day: CalendarDaySlotScope\n start: boolean\n end: boolean\n timed: boolean\n}\n\nconst WIDTH_FULL = 100\nconst WIDTH_START = 95\nconst MINUTES_IN_DAY = 1440\n\n/* @vue/component */\nexport default CalendarBase.extend({\n name: 'calendar-with-events',\n\n directives: {\n ripple,\n },\n\n props: {\n ...props.events,\n ...props.calendar,\n ...props.category,\n },\n\n computed: {\n noEvents (): boolean {\n return this.events.length === 0\n },\n parsedEvents (): CalendarEventParsed[] {\n return this.events.map(this.parseEvent)\n },\n parsedEventOverlapThreshold (): number {\n return parseInt(this.eventOverlapThreshold)\n },\n eventTimedFunction (): CalendarEventTimedFunction {\n return typeof this.eventTimed === 'function'\n ? this.eventTimed\n : event => !!event[this.eventTimed as string]\n },\n eventCategoryFunction (): CalendarEventCategoryFunction {\n return typeof this.eventCategory === 'function'\n ? this.eventCategory\n : event => event[this.eventCategory as string]\n },\n eventTextColorFunction (): CalendarEventColorFunction {\n return typeof this.eventTextColor === 'function'\n ? this.eventTextColor\n : () => this.eventTextColor as string\n },\n eventNameFunction (): CalendarEventNameFunction {\n return typeof this.eventName === 'function'\n ? this.eventName\n : (event, timedEvent) => event.input[this.eventName as string] as string || ''\n },\n eventModeFunction (): CalendarEventOverlapMode {\n return typeof this.eventOverlapMode === 'function'\n ? this.eventOverlapMode\n : CalendarEventOverlapModes[this.eventOverlapMode]\n },\n eventWeekdays (): number[] {\n return this.parsedWeekdays\n },\n categoryMode (): boolean {\n return this.type === 'category'\n },\n },\n\n methods: {\n eventColorFunction (e: CalendarEvent): string {\n return typeof this.eventColor === 'function'\n ? this.eventColor(e)\n : e.color || this.eventColor\n },\n parseEvent (input: CalendarEvent, index = 0): CalendarEventParsed {\n return parseEvent(\n input,\n index,\n this.eventStart,\n this.eventEnd,\n this.eventTimedFunction(input),\n this.categoryMode ? this.eventCategoryFunction(input) : false,\n )\n },\n formatTime (withTime: CalendarTimestamp, ampm: boolean): string {\n const formatter = this.getFormatter({\n timeZone: 'UTC',\n hour: 'numeric',\n minute: withTime.minute > 0 ? 'numeric' : undefined,\n })\n\n return formatter(withTime, true)\n },\n updateEventVisibility () {\n if (this.noEvents || !this.eventMore) {\n return\n }\n\n const eventHeight = this.eventHeight\n const eventsMap = this.getEventsMap()\n\n for (const date in eventsMap) {\n const { parent, events, more } = eventsMap[date]\n if (!more) {\n break\n }\n\n const parentBounds = parent.getBoundingClientRect()\n const last = events.length - 1\n const eventsSorted = events.map(event => ({\n event,\n bottom: event.getBoundingClientRect().bottom,\n })).sort((a, b) => a.bottom - b.bottom)\n let hidden = 0\n\n for (let i = 0; i <= last; i++) {\n const bottom = eventsSorted[i].bottom\n const hide = i === last\n ? (bottom > parentBounds.bottom)\n : (bottom + eventHeight > parentBounds.bottom)\n\n if (hide) {\n eventsSorted[i].event.style.display = 'none'\n hidden++\n }\n }\n\n if (hidden) {\n more.style.display = ''\n more.innerHTML = this.$vuetify.lang.t(this.eventMoreText, hidden)\n } else {\n more.style.display = 'none'\n }\n }\n },\n getEventsMap (): VDailyEventsMap {\n const eventsMap: VDailyEventsMap = {}\n const elements = this.$refs.events as HTMLElement[]\n\n if (!elements || !elements.forEach) {\n return eventsMap\n }\n\n elements.forEach(el => {\n const date = el.getAttribute('data-date')\n if (el.parentElement && date) {\n if (!(date in eventsMap)) {\n eventsMap[date] = {\n parent: el.parentElement,\n more: null,\n events: [],\n }\n }\n if (el.getAttribute('data-more')) {\n eventsMap[date].more = el\n } else {\n eventsMap[date].events.push(el)\n el.style.display = ''\n }\n }\n })\n\n return eventsMap\n },\n genDayEvent ({ event }: CalendarEventVisual, day: CalendarDaySlotScope): VNode {\n const eventHeight = this.eventHeight\n const eventMarginBottom = this.eventMarginBottom\n const dayIdentifier = getDayIdentifier(day)\n const week = day.week\n const start = dayIdentifier === event.startIdentifier\n let end = dayIdentifier === event.endIdentifier\n let width = WIDTH_START\n\n if (!this.categoryMode) {\n for (let i = day.index + 1; i < week.length; i++) {\n const weekdayIdentifier = getDayIdentifier(week[i])\n if (event.endIdentifier >= weekdayIdentifier) {\n width += WIDTH_FULL\n end = end || weekdayIdentifier === event.endIdentifier\n } else {\n end = true\n break\n }\n }\n }\n const scope = { eventParsed: event, day, start, end, timed: false }\n\n return this.genEvent(event, scope, false, {\n staticClass: 'v-event',\n class: {\n 'v-event-start': start,\n 'v-event-end': end,\n },\n style: {\n height: `${eventHeight}px`,\n width: `${width}%`,\n 'margin-bottom': `${eventMarginBottom}px`,\n },\n attrs: {\n 'data-date': day.date,\n },\n key: event.index,\n ref: 'events',\n refInFor: true,\n })\n },\n genTimedEvent ({ event, left, width }: CalendarEventVisual, day: CalendarDayBodySlotScope): VNode | false {\n if (day.timeDelta(event.end) < 0 || day.timeDelta(event.start) >= 1 || isEventHiddenOn(event, day)) {\n return false\n }\n\n const dayIdentifier = getDayIdentifier(day)\n const start = event.startIdentifier >= dayIdentifier\n const end = event.endIdentifier > dayIdentifier\n const top = start ? day.timeToY(event.start) : 0\n const bottom = end ? day.timeToY(MINUTES_IN_DAY) : day.timeToY(event.end)\n const height = Math.max(this.eventHeight, bottom - top)\n const scope = { eventParsed: event, day, start, end, timed: true }\n\n return this.genEvent(event, scope, true, {\n staticClass: 'v-event-timed',\n style: {\n top: `${top}px`,\n height: `${height}px`,\n left: `${left}%`,\n width: `${width}%`,\n },\n })\n },\n genEvent (event: CalendarEventParsed, scopeInput: VEventScopeInput, timedEvent: boolean, data: VNodeData): VNode {\n const slot = this.$scopedSlots.event\n const text = this.eventTextColorFunction(event.input)\n const background = this.eventColorFunction(event.input)\n const overlapsNoon = event.start.hour < 12 && event.end.hour >= 12\n const singline = diffMinutes(event.start, event.end) <= this.parsedEventOverlapThreshold\n const formatTime = this.formatTime\n const timeSummary = () => formatTime(event.start, overlapsNoon) + ' - ' + formatTime(event.end, true)\n const eventSummary = () => {\n const name = this.eventNameFunction(event, timedEvent)\n if (event.start.hasTime) {\n if (timedEvent) {\n const time = timeSummary()\n const delimiter = singline ? ', ' : this.$createElement('br')\n\n return this.$createElement('span', { staticClass: 'v-event-summary' }, [\n this.$createElement('strong', [name]),\n delimiter,\n time,\n ])\n } else {\n const time = formatTime(event.start, true)\n\n return this.$createElement('span', { staticClass: 'v-event-summary' }, [\n this.$createElement('strong', [time]),\n ' ',\n name,\n ])\n }\n }\n\n return this.$createElement('span', { staticClass: 'v-event-summary' }, [name])\n }\n\n const scope = {\n ...scopeInput,\n event: event.input,\n outside: scopeInput.day.outside,\n singline,\n overlapsNoon,\n formatTime,\n timeSummary,\n eventSummary,\n }\n\n return this.$createElement('div',\n this.setTextColor(text,\n this.setBackgroundColor(background, {\n on: this.getDefaultMouseEventHandlers(':event', nativeEvent => ({ ...scope, nativeEvent })),\n directives: [{\n name: 'ripple',\n value: this.eventRipple ?? true,\n }],\n ...data,\n })\n ), slot\n ? slot(scope)\n : [this.genName(eventSummary)]\n )\n },\n genName (eventSummary: () => string | VNode): VNode {\n return this.$createElement('div', {\n staticClass: 'pl-1',\n }, [eventSummary()])\n },\n genPlaceholder (day: CalendarTimestamp): VNode {\n const height = this.eventHeight + this.eventMarginBottom\n\n return this.$createElement('div', {\n style: {\n height: `${height}px`,\n },\n attrs: {\n 'data-date': day.date,\n },\n ref: 'events',\n refInFor: true,\n })\n },\n genMore (day: CalendarDaySlotScope): VNode {\n const eventHeight = this.eventHeight\n const eventMarginBottom = this.eventMarginBottom\n\n return this.$createElement('div', {\n staticClass: 'v-event-more pl-1',\n class: {\n 'v-outside': day.outside,\n },\n attrs: {\n 'data-date': day.date,\n 'data-more': 1,\n },\n directives: [{\n name: 'ripple',\n value: this.eventRipple ?? true,\n }],\n on: this.getDefaultMouseEventHandlers(':more', nativeEvent => {\n return { nativeEvent, ...day }\n }),\n\n style: {\n display: 'none',\n height: `${eventHeight}px`,\n 'margin-bottom': `${eventMarginBottom}px`,\n },\n ref: 'events',\n refInFor: true,\n })\n },\n getVisibleEvents (): CalendarEventParsed[] {\n const start = getDayIdentifier(this.days[0])\n const end = getDayIdentifier(this.days[this.days.length - 1])\n\n return this.parsedEvents.filter(\n event => isEventOverlapping(event, start, end)\n )\n },\n isEventForCategory (event: CalendarEventParsed, category: CalendarCategory): boolean {\n return !this.categoryMode ||\n (typeof category === 'object' && category.categoryName &&\n category.categoryName === event.category) ||\n (typeof event.category === 'string' && category === event.category) ||\n (typeof event.category !== 'string' && category === null)\n },\n getEventsForDay (day: CalendarDaySlotScope): CalendarEventParsed[] {\n const identifier = getDayIdentifier(day)\n const firstWeekday = this.eventWeekdays[0]\n\n return this.parsedEvents.filter(\n event => isEventStart(event, day, identifier, firstWeekday)\n )\n },\n getEventsForDayAll (day: CalendarDaySlotScope): CalendarEventParsed[] {\n const identifier = getDayIdentifier(day)\n const firstWeekday = this.eventWeekdays[0]\n\n return this.parsedEvents.filter(\n event => event.allDay &&\n (this.categoryMode ? isEventOn(event, identifier) : isEventStart(event, day, identifier, firstWeekday)) &&\n this.isEventForCategory(event, day.category)\n )\n },\n getEventsForDayTimed (day: CalendarDaySlotScope): CalendarEventParsed[] {\n const identifier = getDayIdentifier(day)\n return this.parsedEvents.filter(\n event => !event.allDay &&\n isEventOn(event, identifier) &&\n this.isEventForCategory(event, day.category)\n )\n },\n getScopedSlots () {\n if (this.noEvents) {\n return { ...this.$scopedSlots }\n }\n\n const mode = this.eventModeFunction(\n this.parsedEvents,\n this.eventWeekdays[0],\n this.parsedEventOverlapThreshold\n )\n\n const isNode = (input: VNode | false): input is VNode => !!input\n const getSlotChildren: VEventsToNodes = (day, getter, mapper, timed) => {\n const events = getter(day)\n const visuals = mode(day, events, timed, this.categoryMode)\n\n if (timed) {\n return visuals.map(visual => mapper(visual, day)).filter(isNode)\n }\n\n const children: VNode[] = []\n\n visuals.forEach((visual, index) => {\n while (children.length < visual.column) {\n children.push(this.genPlaceholder(day))\n }\n\n const mapped = mapper(visual, day)\n if (mapped) {\n children.push(mapped)\n }\n })\n\n return children\n }\n\n const slots = this.$scopedSlots\n const slotDay = slots.day\n const slotDayHeader = slots['day-header']\n const slotDayBody = slots['day-body']\n\n return {\n ...slots,\n day: (day: CalendarDaySlotScope) => {\n let children = getSlotChildren(day, this.getEventsForDay, this.genDayEvent, false)\n if (children && children.length > 0 && this.eventMore) {\n children.push(this.genMore(day))\n }\n if (slotDay) {\n const slot = slotDay(day)\n if (slot) {\n children = children ? children.concat(slot) : slot\n }\n }\n return children\n },\n 'day-header': (day: CalendarDaySlotScope) => {\n let children = getSlotChildren(day, this.getEventsForDayAll, this.genDayEvent, false)\n\n if (slotDayHeader) {\n const slot = slotDayHeader(day)\n if (slot) {\n children = children ? children.concat(slot) : slot\n }\n }\n return children\n },\n 'day-body': (day: CalendarDayBodySlotScope) => {\n const events = getSlotChildren(day, this.getEventsForDayTimed, this.genTimedEvent, true)\n let children: VNode[] = [\n this.$createElement('div', {\n staticClass: 'v-event-timed-container',\n }, events),\n ]\n\n if (slotDayBody) {\n const slot = slotDayBody(day)\n if (slot) {\n children = children.concat(slot)\n }\n }\n return children\n },\n }\n },\n },\n})\n","// Styles\nimport './VCalendarWeekly.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Components\nimport VBtn from '../VBtn'\n\n// Mixins\nimport CalendarBase from './mixins/calendar-base'\n\n// Util\nimport { getSlot } from '../../util/helpers'\nimport { weekNumber } from '../../util/dateTimeUtils'\nimport props from './util/props'\nimport {\n createDayList,\n getDayIdentifier,\n createNativeLocaleFormatter,\n} from './util/timestamp'\nimport { CalendarTimestamp, CalendarFormatter } from 'vuetify/types'\n\n/* @vue/component */\nexport default CalendarBase.extend({\n name: 'v-calendar-weekly',\n\n props: props.weeks,\n\n computed: {\n staticClass (): string {\n return 'v-calendar-weekly'\n },\n classes (): object {\n return this.themeClasses\n },\n parsedMinWeeks (): number {\n return parseInt(this.minWeeks)\n },\n days (): CalendarTimestamp[] {\n const minDays = this.parsedMinWeeks * this.parsedWeekdays.length\n const start = this.getStartOfWeek(this.parsedStart)\n const end = this.getEndOfWeek(this.parsedEnd)\n\n return createDayList(\n start,\n end,\n this.times.today,\n this.weekdaySkips,\n Number.MAX_SAFE_INTEGER,\n minDays\n )\n },\n todayWeek (): CalendarTimestamp[] {\n const today = this.times.today\n const start = this.getStartOfWeek(today)\n const end = this.getEndOfWeek(today)\n\n return createDayList(\n start,\n end,\n today,\n this.weekdaySkips,\n this.parsedWeekdays.length,\n this.parsedWeekdays.length\n )\n },\n monthFormatter (): CalendarFormatter {\n if (this.monthFormat) {\n return this.monthFormat as CalendarFormatter\n }\n\n const longOptions = { timeZone: 'UTC', month: 'long' }\n const shortOptions = { timeZone: 'UTC', month: 'short' }\n\n return createNativeLocaleFormatter(\n this.currentLocale,\n (_tms, short) => short ? shortOptions : longOptions\n )\n },\n },\n\n methods: {\n isOutside (day: CalendarTimestamp): boolean {\n const dayIdentifier = getDayIdentifier(day)\n\n return dayIdentifier < getDayIdentifier(this.parsedStart) ||\n dayIdentifier > getDayIdentifier(this.parsedEnd)\n },\n genHead (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-weekly__head',\n attrs: {\n role: 'row',\n },\n }, this.genHeadDays())\n },\n genHeadDays (): VNode[] {\n const header = this.todayWeek.map(this.genHeadDay)\n\n if (this.showWeek) {\n header.unshift(this.$createElement('div', {\n staticClass: 'v-calendar-weekly__head-weeknumber',\n }))\n }\n\n return header\n },\n genHeadDay (day: CalendarTimestamp, index: number): VNode {\n const outside = this.isOutside(this.days[index])\n const color = day.present ? this.color : undefined\n\n return this.$createElement('div', this.setTextColor(color, {\n key: day.date,\n staticClass: 'v-calendar-weekly__head-weekday',\n class: this.getRelativeClasses(day, outside),\n attrs: {\n role: 'columnheader',\n },\n }), this.weekdayFormatter(day, this.shortWeekdays))\n },\n genWeeks (): VNode[] {\n const days = this.days\n const weekDays = this.parsedWeekdays.length\n const weeks: VNode[] = []\n\n for (let i = 0; i < days.length; i += weekDays) {\n weeks.push(this.genWeek(days.slice(i, i + weekDays), this.getWeekNumber(days[i])))\n }\n\n return weeks\n },\n genWeek (week: CalendarTimestamp[], weekNumber: number): VNode {\n const weekNodes = week.map((day, index) => this.genDay(day, index, week))\n\n if (this.showWeek) {\n weekNodes.unshift(this.genWeekNumber(weekNumber))\n }\n\n return this.$createElement('div', {\n key: week[0].date,\n staticClass: 'v-calendar-weekly__week',\n attrs: {\n role: 'row',\n },\n }, weekNodes)\n },\n getWeekNumber (determineDay: CalendarTimestamp) {\n return weekNumber(\n determineDay.year,\n determineDay.month - 1,\n determineDay.day,\n this.parsedWeekdays[0],\n parseInt(this.localeFirstDayOfYear)\n )\n },\n genWeekNumber (weekNumber: number) {\n return this.$createElement('div', {\n staticClass: 'v-calendar-weekly__weeknumber',\n }, [\n this.$createElement('small', String(weekNumber)),\n ])\n },\n genDay (day: CalendarTimestamp, index: number, week: CalendarTimestamp[]): VNode {\n const outside = this.isOutside(day)\n\n return this.$createElement('div', {\n key: day.date,\n staticClass: 'v-calendar-weekly__day',\n class: this.getRelativeClasses(day, outside),\n attrs: {\n role: 'cell',\n },\n on: this.getDefaultMouseEventHandlers(':day', nativeEvent => {\n return { nativeEvent, ...day }\n }),\n }, [\n this.genDayLabel(day),\n ...(getSlot(this, 'day', () => ({ outside, index, week, ...day })) || []),\n ])\n },\n genDayLabel (day: CalendarTimestamp): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-weekly__day-label',\n }, getSlot(this, 'day-label', day) || [this.genDayLabelButton(day)])\n },\n genDayLabelButton (day: CalendarTimestamp): VNode {\n const color = day.present ? this.color : 'transparent'\n const hasMonth = day.day === 1 && this.showMonthOnFirst\n\n return this.$createElement(VBtn, {\n props: {\n color,\n fab: true,\n depressed: true,\n small: true,\n },\n on: this.getMouseEventHandlers({\n 'click:date': { event: 'click', stop: true },\n 'contextmenu:date': { event: 'contextmenu', stop: true, prevent: true, result: false },\n }, nativeEvent => ({ nativeEvent, ...day })),\n }, hasMonth\n ? this.monthFormatter(day, this.shortMonths) + ' ' + this.dayFormatter(day, false)\n : this.dayFormatter(day, false)\n )\n },\n genDayMonth (day: CalendarTimestamp): VNode | string {\n const color = day.present ? this.color : undefined\n\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-calendar-weekly__day-month',\n }), getSlot(this, 'day-month', day) || this.monthFormatter(day, this.shortMonths))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: this.staticClass,\n class: this.classes,\n on: {\n dragstart: (e: MouseEvent) => {\n e.preventDefault()\n },\n },\n }, [\n !this.hideHeader ? this.genHead() : '',\n ...this.genWeeks(),\n ])\n },\n})\n","// Styles\nimport './VCalendarWeekly.sass'\n\n// Mixins\nimport VCalendarWeekly from './VCalendarWeekly'\n\n// Util\nimport { parseTimestamp, getStartOfMonth, getEndOfMonth } from './util/timestamp'\nimport { CalendarTimestamp } from 'vuetify/types'\n\n/* @vue/component */\nexport default VCalendarWeekly.extend({\n name: 'v-calendar-monthly',\n\n computed: {\n staticClass (): string {\n return 'v-calendar-monthly v-calendar-weekly'\n },\n parsedStart (): CalendarTimestamp {\n return getStartOfMonth(parseTimestamp(this.start, true))\n },\n parsedEnd (): CalendarTimestamp {\n return getEndOfMonth(parseTimestamp(this.end, true))\n },\n },\n\n})\n","\n// Mixins\nimport CalendarBase from './calendar-base'\n\n// Util\nimport props from '../util/props'\nimport {\n parseTime,\n copyTimestamp,\n updateMinutes,\n createDayList,\n createIntervalList,\n createNativeLocaleFormatter,\n VTime,\n MINUTES_IN_DAY,\n} from '../util/timestamp'\nimport { CalendarTimestamp, CalendarFormatter, CalendarDayBodySlotScope } from 'vuetify/types'\n\n/* @vue/component */\nexport default CalendarBase.extend({\n name: 'calendar-with-intervals',\n\n props: props.intervals,\n\n computed: {\n parsedFirstInterval (): number {\n return parseInt(this.firstInterval)\n },\n parsedIntervalMinutes (): number {\n return parseInt(this.intervalMinutes)\n },\n parsedIntervalCount (): number {\n return parseInt(this.intervalCount)\n },\n parsedIntervalHeight (): number {\n return parseFloat(this.intervalHeight)\n },\n parsedFirstTime (): number | false {\n return parseTime(this.firstTime)\n },\n firstMinute (): number {\n const time = this.parsedFirstTime\n\n return time !== false && time >= 0 && time <= MINUTES_IN_DAY\n ? time\n : this.parsedFirstInterval * this.parsedIntervalMinutes\n },\n bodyHeight (): number {\n return this.parsedIntervalCount * this.parsedIntervalHeight\n },\n days (): CalendarTimestamp[] {\n return createDayList(\n this.parsedStart,\n this.parsedEnd,\n this.times.today,\n this.weekdaySkips,\n this.maxDays\n )\n },\n intervals (): CalendarTimestamp[][] {\n const days: CalendarTimestamp[] = this.days\n const first: number = this.firstMinute\n const minutes: number = this.parsedIntervalMinutes\n const count: number = this.parsedIntervalCount\n const now: CalendarTimestamp = this.times.now\n\n return days.map(d => createIntervalList(d, first, minutes, count, now))\n },\n intervalFormatter (): CalendarFormatter {\n if (this.intervalFormat) {\n return this.intervalFormat as CalendarFormatter\n }\n\n const longOptions = { timeZone: 'UTC', hour: '2-digit', minute: '2-digit' }\n const shortOptions = { timeZone: 'UTC', hour: 'numeric', minute: '2-digit' }\n const shortHourOptions = { timeZone: 'UTC', hour: 'numeric' }\n\n return createNativeLocaleFormatter(\n this.currentLocale,\n (tms, short) => short ? (tms.minute === 0 ? shortHourOptions : shortOptions) : longOptions\n )\n },\n },\n\n methods: {\n showIntervalLabelDefault (interval: CalendarTimestamp): boolean {\n const first: CalendarTimestamp = this.intervals[0][0]\n const isFirst: boolean = first.hour === interval.hour && first.minute === interval.minute\n return !isFirst\n },\n intervalStyleDefault (_interval: CalendarTimestamp): object | undefined {\n return undefined\n },\n getTimestampAtEvent (e: MouseEvent | TouchEvent, day: CalendarTimestamp): CalendarTimestamp {\n const timestamp: CalendarTimestamp = copyTimestamp(day)\n const bounds = (e.currentTarget as HTMLElement).getBoundingClientRect()\n const baseMinutes: number = this.firstMinute\n const touchEvent: TouchEvent = e as TouchEvent\n const mouseEvent: MouseEvent = e as MouseEvent\n const touches: TouchList = touchEvent.changedTouches || touchEvent.touches\n const clientY: number = touches && touches[0] ? touches[0].clientY : mouseEvent.clientY\n const addIntervals: number = (clientY - bounds.top) / this.parsedIntervalHeight\n const addMinutes: number = Math.floor(addIntervals * this.parsedIntervalMinutes)\n const minutes: number = baseMinutes + addMinutes\n\n return updateMinutes(timestamp, minutes, this.times.now)\n },\n getSlotScope (timestamp: CalendarTimestamp): CalendarDayBodySlotScope {\n const scope = copyTimestamp(timestamp) as any\n scope.timeToY = this.timeToY\n scope.timeDelta = this.timeDelta\n scope.minutesToPixels = this.minutesToPixels\n scope.week = this.days\n return scope\n },\n scrollToTime (time: VTime): boolean {\n const y = this.timeToY(time)\n const pane = this.$refs.scrollArea as HTMLElement\n\n if (y === false || !pane) {\n return false\n }\n\n pane.scrollTop = y\n\n return true\n },\n minutesToPixels (minutes: number): number {\n return minutes / this.parsedIntervalMinutes * this.parsedIntervalHeight\n },\n timeToY (time: VTime, clamp = true): number | false {\n let y = this.timeDelta(time)\n\n if (y !== false) {\n y *= this.bodyHeight\n\n if (clamp) {\n if (y < 0) {\n y = 0\n }\n if (y > this.bodyHeight) {\n y = this.bodyHeight\n }\n }\n }\n\n return y\n },\n timeDelta (time: VTime): number | false {\n const minutes = parseTime(time)\n\n if (minutes === false) {\n return false\n }\n\n const min: number = this.firstMinute\n const gap: number = this.parsedIntervalCount * this.parsedIntervalMinutes\n\n return (minutes - min) / gap\n },\n },\n})\n","// Styles\nimport './VCalendarDaily.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Directives\nimport Resize from '../../directives/resize'\n\n// Components\nimport VBtn from '../VBtn'\n\n// Mixins\nimport CalendarWithIntervals from './mixins/calendar-with-intervals'\n\n// Util\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { CalendarTimestamp } from 'vuetify/types'\n\n/* @vue/component */\nexport default CalendarWithIntervals.extend({\n name: 'v-calendar-daily',\n\n directives: { Resize },\n\n data: () => ({\n scrollPush: 0,\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-calendar-daily': true,\n ...this.themeClasses,\n }\n },\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init () {\n this.$nextTick(this.onResize)\n },\n onResize () {\n this.scrollPush = this.getScrollPush()\n },\n getScrollPush (): number {\n const area = this.$refs.scrollArea as HTMLElement\n const pane = this.$refs.pane as HTMLElement\n\n return area && pane ? (area.offsetWidth - pane.offsetWidth) : 0\n },\n genHead (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-daily__head',\n style: {\n marginRight: this.scrollPush + 'px',\n },\n }, [\n this.genHeadIntervals(),\n ...this.genHeadDays(),\n ])\n },\n genHeadIntervals (): VNode {\n const width: string | undefined = convertToUnit(this.intervalWidth)\n\n return this.$createElement('div', {\n staticClass: 'v-calendar-daily__intervals-head',\n style: {\n width,\n },\n }, getSlot(this, 'interval-header'))\n },\n genHeadDays (): VNode[] {\n return this.days.map(this.genHeadDay)\n },\n genHeadDay (day: CalendarTimestamp, index: number): VNode {\n return this.$createElement('div', {\n key: day.date,\n staticClass: 'v-calendar-daily_head-day',\n class: this.getRelativeClasses(day),\n on: this.getDefaultMouseEventHandlers(':day', nativeEvent => {\n return { nativeEvent, ...this.getSlotScope(day) }\n }),\n }, [\n this.genHeadWeekday(day),\n this.genHeadDayLabel(day),\n ...this.genDayHeader(day, index),\n ])\n },\n genDayHeader (day: CalendarTimestamp, index: number): VNode[] {\n return getSlot(this, 'day-header', () => ({\n week: this.days, ...day, index,\n })) || []\n },\n genHeadWeekday (day: CalendarTimestamp): VNode {\n const color = day.present ? this.color : undefined\n\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-calendar-daily_head-weekday',\n }), this.weekdayFormatter(day, this.shortWeekdays))\n },\n genHeadDayLabel (day: CalendarTimestamp): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-daily_head-day-label',\n }, getSlot(this, 'day-label-header', day) || [this.genHeadDayButton(day)])\n },\n genHeadDayButton (day: CalendarTimestamp): VNode {\n const color = day.present ? this.color : 'transparent'\n\n return this.$createElement(VBtn, {\n props: {\n color,\n fab: true,\n depressed: true,\n },\n on: this.getMouseEventHandlers({\n 'click:date': { event: 'click', stop: true },\n 'contextmenu:date': { event: 'contextmenu', stop: true, prevent: true, result: false },\n }, nativeEvent => {\n return { nativeEvent, ...day }\n }),\n }, this.dayFormatter(day, false))\n },\n genBody (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-daily__body',\n }, [\n this.genScrollArea(),\n ])\n },\n genScrollArea (): VNode {\n return this.$createElement('div', {\n ref: 'scrollArea',\n staticClass: 'v-calendar-daily__scroll-area',\n }, [\n this.genPane(),\n ])\n },\n genPane (): VNode {\n return this.$createElement('div', {\n ref: 'pane',\n staticClass: 'v-calendar-daily__pane',\n style: {\n height: convertToUnit(this.bodyHeight),\n },\n }, [\n this.genDayContainer(),\n ])\n },\n genDayContainer (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-daily__day-container',\n }, [\n this.genBodyIntervals(),\n ...this.genDays(),\n ])\n },\n genDays (): VNode[] {\n return this.days.map(this.genDay)\n },\n genDay (day: CalendarTimestamp, index: number): VNode {\n return this.$createElement('div', {\n key: day.date,\n staticClass: 'v-calendar-daily__day',\n class: this.getRelativeClasses(day),\n on: this.getDefaultMouseEventHandlers(':time', nativeEvent => {\n return { nativeEvent, ...this.getSlotScope(this.getTimestampAtEvent(nativeEvent, day)) }\n }),\n }, [\n ...this.genDayIntervals(index),\n ...this.genDayBody(day),\n ])\n },\n genDayBody (day: CalendarTimestamp): VNode[] {\n return getSlot(this, 'day-body', () => this.getSlotScope(day)) || []\n },\n genDayIntervals (index: number): VNode[] {\n return this.intervals[index].map(this.genDayInterval)\n },\n genDayInterval (interval: CalendarTimestamp): VNode {\n const height: string | undefined = convertToUnit(this.intervalHeight)\n const styler = this.intervalStyle || this.intervalStyleDefault\n\n const data = {\n key: interval.time,\n staticClass: 'v-calendar-daily__day-interval',\n style: {\n height,\n ...styler(interval),\n },\n\n }\n\n const children = getSlot(this, 'interval', () => this.getSlotScope(interval))\n\n return this.$createElement('div', data, children)\n },\n genBodyIntervals (): VNode {\n const width: string | undefined = convertToUnit(this.intervalWidth)\n const data = {\n staticClass: 'v-calendar-daily__intervals-body',\n style: {\n width,\n },\n on: this.getDefaultMouseEventHandlers(':interval', nativeEvent => {\n return { nativeEvent, ...this.getTimestampAtEvent(nativeEvent, this.parsedStart) }\n }),\n }\n\n return this.$createElement('div', data, this.genIntervalLabels())\n },\n genIntervalLabels (): VNode[] | null {\n if (!this.intervals.length) return null\n\n return this.intervals[0].map(this.genIntervalLabel)\n },\n genIntervalLabel (interval: CalendarTimestamp): VNode {\n const height: string | undefined = convertToUnit(this.intervalHeight)\n const short: boolean = this.shortIntervals\n const shower = this.showIntervalLabel || this.showIntervalLabelDefault\n const show = shower(interval)\n const label = show ? this.intervalFormatter(interval, short) : undefined\n\n return this.$createElement('div', {\n key: interval.time,\n staticClass: 'v-calendar-daily__interval',\n style: {\n height,\n },\n }, [\n this.$createElement('div', {\n staticClass: 'v-calendar-daily__interval-text',\n }, label),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n class: this.classes,\n on: {\n dragstart: (e: MouseEvent) => {\n e.preventDefault()\n },\n },\n directives: [{\n modifiers: { quiet: true },\n name: 'resize',\n value: this.onResize,\n }],\n }, [\n !this.hideHeader ? this.genHead() : '',\n this.genBody(),\n ])\n },\n})\n","import { CalendarCategory, CalendarCategoryTextFunction } from 'types'\n\nexport function parsedCategoryText (\n category: CalendarCategory,\n categoryText: string | CalendarCategoryTextFunction\n): string {\n return typeof categoryText === 'string' && typeof category === 'object' && category\n ? category[categoryText]\n : typeof categoryText === 'function'\n ? categoryText(category)\n : category\n}\n\nexport function getParsedCategories (\n categories: CalendarCategory | CalendarCategory[],\n categoryText: string | CalendarCategoryTextFunction\n): CalendarCategory[] {\n if (typeof categories === 'string') return categories.split(/\\s*,\\s/)\n if (Array.isArray(categories)) {\n return categories.map((category: CalendarCategory) => {\n if (typeof category === 'string') return category\n\n const categoryName = typeof category.categoryName === 'string'\n ? category.categoryName\n : parsedCategoryText(category, categoryText)\n return { ...category, categoryName }\n })\n }\n return []\n}\n","// Styles\nimport './VCalendarCategory.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Mixins\nimport VCalendarDaily from './VCalendarDaily'\n\n// Util\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { CalendarCategory, CalendarTimestamp } from 'types'\nimport props from './util/props'\nimport { getParsedCategories } from './util/parser'\n\n/* @vue/component */\nexport default VCalendarDaily.extend({\n name: 'v-calendar-category',\n\n props: props.category,\n\n computed: {\n classes (): object {\n return {\n 'v-calendar-daily': true,\n 'v-calendar-category': true,\n ...this.themeClasses,\n }\n },\n parsedCategories (): CalendarCategory[] {\n return getParsedCategories(this.categories, this.categoryText)\n },\n },\n methods: {\n genDayHeader (day: CalendarTimestamp, index: number): VNode[] {\n const data = {\n staticClass: 'v-calendar-category__columns',\n }\n const scope = {\n week: this.days, ...day, index,\n }\n\n const children = this.parsedCategories.map(category => {\n return this.genDayHeaderCategory(day, this.getCategoryScope(scope, category))\n })\n\n return [this.$createElement('div', data, children)]\n },\n getCategoryScope (scope: any, category: CalendarCategory) {\n const cat = typeof category === 'object' && category &&\n category.categoryName === this.categoryForInvalid ? null : category\n return {\n ...scope,\n category: cat,\n }\n },\n genDayHeaderCategory (day: CalendarTimestamp, scope: any): VNode {\n const headerTitle = typeof scope.category === 'object' ? scope.category.categoryName : scope.category\n return this.$createElement('div', {\n staticClass: 'v-calendar-category__column-header',\n on: this.getDefaultMouseEventHandlers(':day-category', e => {\n return this.getCategoryScope(this.getSlotScope(day), scope.category)\n }),\n }, [\n getSlot(this, 'category', scope) || this.genDayHeaderCategoryTitle(headerTitle),\n getSlot(this, 'day-header', scope),\n ])\n },\n genDayHeaderCategoryTitle (categoryName: string | null) {\n return this.$createElement('div', {\n staticClass: 'v-calendar-category__category',\n }, categoryName === null ? this.categoryForInvalid : categoryName)\n },\n genDays (): VNode[] {\n const days: VNode[] = []\n this.days.forEach((d, j) => {\n const day = new Array(this.parsedCategories.length || 1)\n day.fill(d)\n days.push(...day.map((v, i) => this.genDay(v, j, i)))\n })\n return days\n },\n genDay (day: CalendarTimestamp, index: number, categoryIndex: number): VNode {\n const category = this.parsedCategories[categoryIndex]\n return this.$createElement('div', {\n key: day.date + '-' + categoryIndex,\n staticClass: 'v-calendar-daily__day',\n class: this.getRelativeClasses(day),\n on: this.getDefaultMouseEventHandlers(':time', e => {\n return this.getSlotScope(this.getTimestampAtEvent(e, day))\n }),\n }, [\n ...this.genDayIntervals(index, category),\n ...this.genDayBody(day, category),\n ])\n },\n genDayIntervals (index: number, category: CalendarCategory): VNode[] {\n return this.intervals[index].map(v => this.genDayInterval(v, category))\n },\n genDayInterval (interval: CalendarTimestamp, category: CalendarCategory): VNode {\n const height: string | undefined = convertToUnit(this.intervalHeight)\n const styler = this.intervalStyle || this.intervalStyleDefault\n\n const data = {\n key: interval.time,\n staticClass: 'v-calendar-daily__day-interval',\n style: {\n height,\n ...styler({ ...interval, category }),\n },\n }\n\n const children = getSlot(this, 'interval', () =>\n this.getCategoryScope(this.getSlotScope(interval), category)\n )\n\n return this.$createElement('div', data, children)\n },\n genDayBody (day: CalendarTimestamp, category: CalendarCategory): VNode[] {\n const data = {\n staticClass: 'v-calendar-category__columns',\n }\n\n const children = [this.genDayBodyCategory(day, category)]\n\n return [this.$createElement('div', data, children)]\n },\n genDayBodyCategory (day: CalendarTimestamp, category: CalendarCategory): VNode {\n const data = {\n staticClass: 'v-calendar-category__column',\n on: this.getDefaultMouseEventHandlers(':time-category', e => {\n return this.getCategoryScope(this.getSlotScope(this.getTimestampAtEvent(e, day)), category)\n }),\n }\n\n const children = getSlot(this, 'day-body', () => this.getCategoryScope(this.getSlotScope(day), category))\n\n return this.$createElement('div', data, children)\n },\n },\n})\n","// Styles\n// import '../../stylus/components/_calendar-daily.styl'\n\n// Types\nimport { VNode, Component } from 'vue'\n\n// Mixins\nimport CalendarWithEvents from './mixins/calendar-with-events'\n\n// Util\nimport props from './util/props'\nimport {\n DAYS_IN_MONTH_MAX,\n DAY_MIN,\n DAYS_IN_WEEK,\n parseTimestamp,\n validateTimestamp,\n relativeDays,\n nextDay,\n prevDay,\n copyTimestamp,\n updateFormatted,\n updateWeekday,\n updateRelative,\n getStartOfMonth,\n getEndOfMonth,\n VTime,\n VTimestampInput,\n timestampToDate,\n} from './util/timestamp'\n\n// Calendars\nimport VCalendarMonthly from './VCalendarMonthly'\nimport VCalendarDaily from './VCalendarDaily'\nimport VCalendarWeekly from './VCalendarWeekly'\nimport VCalendarCategory from './VCalendarCategory'\nimport { CalendarTimestamp, CalendarFormatter, CalendarCategory } from 'vuetify/types'\nimport { getParsedCategories } from './util/parser'\n\n// Types\ninterface VCalendarRenderProps {\n start: CalendarTimestamp\n end: CalendarTimestamp\n component: string | Component\n maxDays: number\n weekdays: number[]\n categories: CalendarCategory[]\n}\n\n/* @vue/component */\nexport default CalendarWithEvents.extend({\n name: 'v-calendar',\n\n props: {\n ...props.calendar,\n ...props.weeks,\n ...props.intervals,\n ...props.category,\n },\n\n data: () => ({\n lastStart: null as CalendarTimestamp | null,\n lastEnd: null as CalendarTimestamp | null,\n }),\n\n computed: {\n parsedValue (): CalendarTimestamp {\n return (validateTimestamp(this.value)\n ? parseTimestamp(this.value, true)\n : (this.parsedStart || this.times.today))\n },\n parsedCategoryDays (): number {\n return parseInt(this.categoryDays) || 1\n },\n renderProps (): VCalendarRenderProps {\n const around = this.parsedValue\n let component: any = null\n let maxDays = this.maxDays\n let weekdays = this.parsedWeekdays\n let categories = this.parsedCategories\n let start = around\n let end = around\n switch (this.type) {\n case 'month':\n component = VCalendarMonthly\n start = getStartOfMonth(around)\n end = getEndOfMonth(around)\n break\n case 'week':\n component = VCalendarDaily\n start = this.getStartOfWeek(around)\n end = this.getEndOfWeek(around)\n maxDays = 7\n break\n case 'day':\n component = VCalendarDaily\n maxDays = 1\n weekdays = [start.weekday]\n break\n case '4day':\n component = VCalendarDaily\n end = relativeDays(copyTimestamp(end), nextDay, 3)\n updateFormatted(end)\n maxDays = 4\n weekdays = [\n start.weekday,\n (start.weekday + 1) % 7,\n (start.weekday + 2) % 7,\n (start.weekday + 3) % 7,\n ]\n break\n case 'custom-weekly':\n component = VCalendarWeekly\n start = this.parsedStart || around\n end = this.parsedEnd\n break\n case 'custom-daily':\n component = VCalendarDaily\n start = this.parsedStart || around\n end = this.parsedEnd\n break\n case 'category':\n const days = this.parsedCategoryDays\n\n component = VCalendarCategory\n end = relativeDays(copyTimestamp(end), nextDay, days)\n updateFormatted(end)\n maxDays = days\n weekdays = []\n\n for (let i = 0; i < days; i++) {\n weekdays.push((start.weekday + i) % 7)\n }\n\n categories = this.getCategoryList(categories)\n break\n default:\n throw new Error(this.type + ' is not a valid Calendar type')\n }\n\n return { component, start, end, maxDays, weekdays, categories }\n },\n eventWeekdays (): number[] {\n return this.renderProps.weekdays\n },\n categoryMode (): boolean {\n return this.type === 'category'\n },\n title (): string {\n const { start, end } = this.renderProps\n const spanYears = start.year !== end.year\n const spanMonths = spanYears || start.month !== end.month\n\n if (spanYears) {\n return this.monthShortFormatter(start, true) + ' ' + start.year + ' - ' + this.monthShortFormatter(end, true) + ' ' + end.year\n }\n\n if (spanMonths) {\n return this.monthShortFormatter(start, true) + ' - ' + this.monthShortFormatter(end, true) + ' ' + end.year\n } else {\n return this.monthLongFormatter(start, false) + ' ' + start.year\n }\n },\n monthLongFormatter (): CalendarFormatter {\n return this.getFormatter({\n timeZone: 'UTC', month: 'long',\n })\n },\n monthShortFormatter (): CalendarFormatter {\n return this.getFormatter({\n timeZone: 'UTC', month: 'short',\n })\n },\n parsedCategories (): CalendarCategory[] {\n return getParsedCategories(this.categories, this.categoryText)\n },\n },\n\n watch: {\n renderProps: 'checkChange',\n },\n\n mounted () {\n this.updateEventVisibility()\n this.checkChange()\n },\n\n updated () {\n window.requestAnimationFrame(this.updateEventVisibility)\n },\n\n methods: {\n checkChange (): void {\n const { lastStart, lastEnd } = this\n const { start, end } = this.renderProps\n if (!lastStart || !lastEnd ||\n start.date !== lastStart.date ||\n end.date !== lastEnd.date) {\n this.lastStart = start\n this.lastEnd = end\n this.$emit('change', { start, end })\n }\n },\n move (amount = 1): void {\n const moved = copyTimestamp(this.parsedValue)\n const forward = amount > 0\n const mover = forward ? nextDay : prevDay\n const limit = forward ? DAYS_IN_MONTH_MAX : DAY_MIN\n let times = forward ? amount : -amount\n\n while (--times >= 0) {\n switch (this.type) {\n case 'month':\n moved.day = limit\n mover(moved)\n break\n case 'week':\n relativeDays(moved, mover, DAYS_IN_WEEK)\n break\n case 'day':\n relativeDays(moved, mover, 1)\n break\n case '4day':\n relativeDays(moved, mover, 4)\n break\n case 'category':\n relativeDays(moved, mover, this.parsedCategoryDays)\n break\n }\n }\n\n updateWeekday(moved)\n updateFormatted(moved)\n updateRelative(moved, this.times.now)\n\n if (this.value instanceof Date) {\n this.$emit('input', timestampToDate(moved))\n } else if (typeof this.value === 'number') {\n this.$emit('input', timestampToDate(moved).getTime())\n } else {\n this.$emit('input', moved.date)\n }\n\n this.$emit('moved', moved)\n },\n next (amount = 1): void {\n this.move(amount)\n },\n prev (amount = 1): void {\n this.move(-amount)\n },\n timeToY (time: VTime, clamp = true): number | false {\n const c = this.$children[0] as any\n\n if (c && c.timeToY) {\n return c.timeToY(time, clamp)\n } else {\n return false\n }\n },\n timeDelta (time: VTime): number | false {\n const c = this.$children[0] as any\n\n if (c && c.timeDelta) {\n return c.timeDelta(time)\n } else {\n return false\n }\n },\n minutesToPixels (minutes: number): number {\n const c = this.$children[0] as any\n\n if (c && c.minutesToPixels) {\n return c.minutesToPixels(minutes)\n } else {\n return -1\n }\n },\n scrollToTime (time: VTime): boolean {\n const c = this.$children[0] as any\n\n if (c && c.scrollToTime) {\n return c.scrollToTime(time)\n } else {\n return false\n }\n },\n parseTimestamp (input: VTimestampInput, required?: false): CalendarTimestamp | null {\n return parseTimestamp(input, required, this.times.now)\n },\n timestampToDate (timestamp: CalendarTimestamp): Date {\n return timestampToDate(timestamp)\n },\n getCategoryList (categories: CalendarCategory[]): CalendarCategory[] {\n if (!this.noEvents) {\n const categoryMap: any = categories.reduce((map: any, category, index) => {\n if (typeof category === 'object' && category.categoryName) map[category.categoryName] = { index, count: 0 }\n else if (typeof category === 'string') map[category] = { index, count: 0 }\n return map\n }, {})\n\n if (!this.categoryHideDynamic || !this.categoryShowAll) {\n let categoryLength = categories.length\n\n this.parsedEvents.forEach(ev => {\n let category = ev.category\n\n if (typeof category !== 'string') {\n category = this.categoryForInvalid\n }\n\n if (!category) {\n return\n }\n\n if (category in categoryMap) {\n categoryMap[category].count++\n } else if (!this.categoryHideDynamic) {\n categoryMap[category] = {\n index: categoryLength++,\n count: 1,\n }\n }\n })\n }\n\n if (!this.categoryShowAll) {\n for (const category in categoryMap) {\n if (categoryMap[category].count === 0) {\n delete categoryMap[category]\n }\n }\n }\n\n categories = categories.filter((category: CalendarCategory) => {\n if (typeof category === 'object' && category.categoryName) {\n return categoryMap.hasOwnProperty(category.categoryName)\n } else if (typeof category === 'string') {\n return categoryMap.hasOwnProperty(category)\n }\n return false\n })\n }\n return categories\n },\n },\n\n render (h): VNode {\n const { start, end, maxDays, component, weekdays, categories } = this.renderProps\n\n return h(component, {\n staticClass: 'v-calendar',\n class: {\n 'v-calendar-events': !this.noEvents,\n },\n props: {\n ...this.$props,\n start: start.date,\n end: end.date,\n maxDays,\n weekdays,\n categories,\n },\n attrs: {\n role: 'grid',\n },\n directives: [{\n modifiers: { quiet: true },\n name: 'resize',\n value: this.updateEventVisibility,\n }],\n on: {\n ...this.$listeners,\n\n 'click:date': (day: CalendarTimestamp, e?: MouseEvent) => {\n if (this.$listeners.input) {\n this.$emit('input', day.date)\n }\n if (this.$listeners['click:date']) {\n this.$emit('click:date', day, e)\n }\n },\n },\n scopedSlots: this.getScopedSlots(),\n })\n },\n})\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"agenda\"}},[_c('agenda-saved-searches-form'),_c('base-layout',{scopedSlots:_vm._u([{key:\"drawer-left\",fn:function(){return [(_vm.agendaFiltersAreSet)?_c('agenda-sidebar'):_vm._e()]},proxy:true},{key:\"identity\",fn:function(){return [_c('a',{staticClass:\"d-flex align-start\",attrs:{\"href\":\"/agenda\"}},[_c('img',{staticStyle:{\"cursor\":\"pointer\"},attrs:{\"src\":_vm.logoSrc,\"alt\":_vm.$t('generic.polpoPolicyMonitoring'),\"height\":\"44\"}})])]},proxy:true},{key:\"searchbar\",fn:function(){return [_c('search-bar',{attrs:{\"on-search-action\":\"getAllAgendas\",\"set-query-action\":\"setAgendaQuery\",\"search-query\":\"agendaQuery\",\"query-length\":200,\"placeholder\":_vm.$t('agenda.searchInAgenda')}})]},proxy:true},{key:\"main-content\",fn:function(){return [_c('div',{staticClass:\"pl-1\"},[_c('v-sheet',{staticClass:\"d-flex pa-2\",attrs:{\"tile\":\"\"}},[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.$refs.calendar.prev()}}},[_c('v-icon',[_vm._v(\"mdi-chevron-left\")])],1),_c('v-btn-toggle',{attrs:{\"mandatory\":\"\",\"dense\":\"\",\"color\":\"primary\"},on:{\"change\":_vm.setCalenderViewIndex},model:{value:(_vm.calendarViewIndex),callback:function ($$v) {_vm.calendarViewIndex=$$v},expression:\"calendarViewIndex\"}},[_c('v-tooltip',{attrs:{\"bottom\":\"\",\"open-delay\":\"1000\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-calendar-month\")])],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t('agenda.monthView')))])]),_c('v-tooltip',{attrs:{\"bottom\":\"\",\"open-delay\":\"1000\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-calendar-week\")])],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t('agenda.weekView')))])]),_c('v-tooltip',{attrs:{\"bottom\":\"\",\"open-delay\":\"1000\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-calendar-today\")])],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t('agenda.dayView')))])])],1),(_vm.calendarViewType === 'day')?_c('v-tooltip',{attrs:{\"bottom\":\"\",\"open-delay\":\"1000\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"ml-2\",attrs:{\"icon\":\"\"},on:{\"click\":_vm.setToday}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-calendar-check\")])],1)]}}],null,false,4115792546)},[_c('span',[_vm._v(_vm._s(_vm.$t('agenda.today')))])]):_vm._e(),_c('v-spacer'),(_vm.$refs.calendar)?_c('v-toolbar-title',{staticClass:\"mt-1\"},[_vm._v(\" \"+_vm._s(_vm.$refs.calendar.title.toUpperCase())+\" \")]):_vm._e(),_c('v-spacer'),_c('v-btn',{staticClass:\"mr-4\",attrs:{\"outlined\":\"\",\"color\":\"grey darken-2\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.showAgendaExportToExcelDialog.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.$t('agenda.downloadAgendaExcel'))+\" \")]),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.$refs.calendar.next()}}},[_c('v-icon',[_vm._v(\"mdi-chevron-right\")])],1)],1),_c('div',{ref:\"container\"}),_c('v-sheet',{staticClass:\"calendar-container\"},[_c('v-calendar',{ref:\"calendar\",attrs:{\"color\":\"primary\",\"locale\":_vm.userPreferences.locale,\"first-time\":\"00:00\",\"locale-first-day-of-year\":\"4\",\"weekdays\":_vm.weekday,\"type\":_vm.calendarViewType,\"events\":_vm.events,\"event-overlap-mode\":_vm.mode,\"event-overlap-threshold\":30,\"event-color\":_vm.getEventColor,\"show-week\":true,\"event-more\":true},on:{\"moved\":_vm.onCalenderMove,\"change\":_vm.onCalenderChange,\"click:event\":_vm.gotoAgenda,\"mouseenter:event\":_vm.showInfo,\"mouseleave:event\":_vm.hideInfo,\"click:more\":_vm.viewDay,\"click:date\":_vm.viewDay},model:{value:(_vm.focusDate),callback:function ($$v) {_vm.focusDate=$$v},expression:\"focusDate\"}})],1)],1)]},proxy:true},{key:\"drawer-right\",fn:function(){return [(_vm.agendaFiltersAreSet)?_c('saved-searches',{staticClass:\"mt-n4\",attrs:{\"dashboard\":\"agenda\"}}):_vm._e()]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.agendaDialogFormSavedSearchesVisible)?_c('v-dialog',{attrs:{\"max-width\":\"768\",\"persistent\":\"\",\"scrollable\":\"\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-card-title',[_c('v-container',{staticClass:\"ma-0 pa-0\"},[_c('v-row',[_c('v-col',{staticClass:\"d-flex mt-n2\"},[_c('div',{staticClass:\"d-inline-block align-self-start text-subtitle-1\",staticStyle:{\"width\":\"80%\"}},[_vm._v(\" \"+_vm._s(_vm.$t('savedSearches.saveSavedSearch'))+\" \")]),_c('div',{staticClass:\"d-inline-block text-right align-self-start\",staticStyle:{\"width\":\"20%\"}},[_c('v-icon',{staticClass:\"mt-n2 mr-n2\",on:{\"click\":function($event){return _vm.hideForm()}}},[_vm._v(\" mdi-close \")])],1)])],1)],1)],1),_c('v-card-text',[_c('v-form',{ref:\"form\",attrs:{\"valid\":\"\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submitForm('form')}},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{staticClass:\"mb-3\",attrs:{\"rules\":_vm.titleRules,\"label\":_vm.$t('agenda.form.title'),\"counter\":\"\",\"maxlength\":\"50\",\"required\":\"\"},model:{value:(_vm.form.title),callback:function ($$v) {_vm.$set(_vm.form, \"title\", $$v)},expression:\"form.title\"}}),_c('v-switch',{staticClass:\"mt-n1\",attrs:{\"label\":_vm.$t('agenda.meetingSyncWithCalendar')},model:{value:(_vm.form.includeInWebcal),callback:function ($$v) {_vm.$set(_vm.form, \"includeInWebcal\", $$v)},expression:\"form.includeInWebcal\"}}),_c('v-checkbox',{staticClass:\"mt-n3\",scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('div',[_vm._v(\" \"+_vm._s(_vm.$t('agenda.agendaPlanningEmailNotification'))+\" \"),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-icon',_vm._g({attrs:{\"small\":\"\"}},on),[_vm._v(\"mdi-help-circle\")])]}}],null,false,488255796)},[_vm._v(\" \"+_vm._s(_vm.$t('agenda.agendaPlanningEmailNotificationDescription'))+\" \")])],1)]},proxy:true}],null,false,183672977),model:{value:(_vm.form.sendUpdatesPerEmail.activitiesOverview.enabled),callback:function ($$v) {_vm.$set(_vm.form.sendUpdatesPerEmail.activitiesOverview, \"enabled\", $$v)},expression:\"form.sendUpdatesPerEmail.activitiesOverview.enabled\"}}),_c('v-checkbox',{staticClass:\"mt-n3\",scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('div',[_vm._v(\" \"+_vm._s(_vm.$t('agenda.emailNotificationOnChanges'))+\" \"),_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-icon',_vm._g({attrs:{\"small\":\"\"}},on),[_vm._v(\"mdi-help-circle\")])]}}],null,false,488255796)},[_vm._v(\" \"+_vm._s(_vm.$t('agenda.emailNotificationOnChanges2'))+\" \")])],1)]},proxy:true}],null,false,1997410277),model:{value:(_vm.form.sendUpdatesPerEmail.activitiesFrequent.enabled),callback:function ($$v) {_vm.$set(_vm.form.sendUpdatesPerEmail.activitiesFrequent, \"enabled\", $$v)},expression:\"form.sendUpdatesPerEmail.activitiesFrequent.enabled\"}}),_c('div',{staticClass:\"text-end mr-n4 mb-n3\"},[_c('v-btn',{staticClass:\"mr-2\",on:{\"click\":function($event){return _vm.cancelForm('form')}}},[_vm._v(\" \"+_vm._s(_vm.$t('generic.cancel'))+\" \")]),_c('v-btn',{staticClass:\"white--text\",attrs:{\"color\":\"teal lighten-1\"},on:{\"click\":function($event){return _vm.submitForm('form')}}},[_vm._v(\" \"+_vm._s(_vm.$t('generic.save'))+\" \")])],1)],1)],1)],1)],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\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!./AgendaSavedSearchesForm.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!./AgendaSavedSearchesForm.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AgendaSavedSearchesForm.vue?vue&type=template&id=53ec41fe&scoped=true\"\nimport script from \"./AgendaSavedSearchesForm.vue?vue&type=script&lang=js\"\nexport * from \"./AgendaSavedSearchesForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./AgendaSavedSearchesForm.vue?vue&type=style&index=0&id=53ec41fe&prod&scoped=true&lang=scss\"\nimport style1 from \"./AgendaSavedSearchesForm.vue?vue&type=style&index=1&id=53ec41fe&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 \"53ec41fe\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"max-width\":\"512\"},on:{\"click:outside\":function($event){return _vm.closeAction()}},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-card-title',[_c('v-container',{staticClass:\"ma-0 pa-0\"},[_c('v-row',[_c('v-col',{staticClass:\"d-flex mt-n2\"},[_c('div',{staticClass:\"dialog-title d-inline-block align-self-start text-subtitle-1\",staticStyle:{\"width\":\"80%\"}},[_vm._v(\" \"+_vm._s(_vm.$t('agenda.downloadAgenda'))+\" \")]),_c('div',{staticClass:\"d-inline-block text-right align-self-start\",staticStyle:{\"width\":\"20%\"}},[_c('v-icon',{staticClass:\"mt-n2 mr-n2\",on:{\"click\":function($event){return _vm.closeAction()}}},[_vm._v(\" mdi-close \")])],1)])],1)],1)],1),_c('v-card-text',{staticClass:\"dialog-text\"},[_vm._v(\" \"+_vm._s(_vm.$t('agenda.downloadAgendaExcel'))+\" \"),_c('br')]),_c('v-form',{ref:\"form\",attrs:{\"lazy-validation\":\"\"},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-card-text',[_c('v-select',{staticClass:\"mb-4\",attrs:{\"items\":_vm.items,\"item-text\":\"title\",\"return-object\":\"\",\"label\":_vm.$t('agenda.selectAgendas'),\"rules\":_vm.selectedAgendaRules,\"multiple\":\"\"},scopedSlots:_vm._u([{key:\"prepend-item\",fn:function(){return [_c('v-list-item',{attrs:{\"ripple\":\"\"},on:{\"mousedown\":function($event){$event.preventDefault();},\"click\":_vm.toggle}},[_c('v-list-item-action',[_c('v-icon',{attrs:{\"color\":_vm.selectedAgendaSavedSearches.length > 0 ? 'teal darken-4' : ''}},[_vm._v(\" \"+_vm._s(_vm.icon)+\" \")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('generic.selectAll'))+\" \")])],1)],1),_c('v-divider',{staticClass:\"mt-2\"})]},proxy:true},{key:\"selection\",fn:function({ index }){return [((index === 0))?_c('span',{staticClass:\"grey--text text-caption\"},[_vm._v(\" \"+_vm._s(_vm.selectedAgendaSavedSearches.length)+\" \"+_vm._s(_vm.$t('generic.selected'))+\" \")]):_vm._e()]}}]),model:{value:(_vm.selectedAgendaSavedSearches),callback:function ($$v) {_vm.selectedAgendaSavedSearches=$$v},expression:\"selectedAgendaSavedSearches\"}}),_c('v-menu',{ref:\"menu\",attrs:{\"close-on-click\":false,\"close-on-content-click\":false,\"return-value\":_vm.dates,\"transition\":\"scale-transition\",\"offset-y\":\"\",\"min-width\":\"auto\"},on:{\"update:returnValue\":function($event){_vm.dates=$event},\"update:return-value\":function($event){_vm.dates=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-text-field',_vm._g(_vm._b({attrs:{\"label\":_vm.$t('agenda.selectPeriod'),\"prepend-icon\":\"mdi-calendar\",\"readonly\":\"\"},model:{value:(_vm.dateRangeText),callback:function ($$v) {_vm.dateRangeText=$$v},expression:\"dateRangeText\"}},'v-text-field',attrs,false),on))]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-date-picker',{attrs:{\"no-title\":\"\",\"max\":_vm.max,\"min\":_vm.min,\"reactive\":\"\",\"elevation\":\"4\",\"locale\":_vm.userPreferences.locale,\"range\":\"\"},on:{\"change\":_vm.updateDates},model:{value:(_vm.dates),callback:function ($$v) {_vm.dates=$$v},expression:\"dates\"}},[_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){_vm.menu = false}}},[_vm._v(\" \"+_vm._s(_vm.$t('generic.cancel'))+\" \")])],1)],1),_c('div',{staticClass:\"text-caption mt-2 grey--text\"},[_vm._v(\" *\"+_vm._s(_vm.$t('agenda.searchDownloadCalendar'))+\" \")])],1),_c('v-card-actions',{staticClass:\"mt-5\"},[_c('v-spacer'),_c('v-btn',{staticClass:\"white--text\",attrs:{\"color\":\"teal lighten-1\"},on:{\"click\":_vm.getAgendaExportToExcel}},[_vm._v(\" \"+_vm._s(_vm.$t('agenda.downloadAgenda'))+\" \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" mdi-download \")])],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\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!./AgendaExportToExcelDialog.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!./AgendaExportToExcelDialog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AgendaExportToExcelDialog.vue?vue&type=template&id=5d57eaf2&scoped=true\"\nimport script from \"./AgendaExportToExcelDialog.vue?vue&type=script&lang=js\"\nexport * from \"./AgendaExportToExcelDialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./AgendaExportToExcelDialog.vue?vue&type=style&index=0&id=5d57eaf2&prod&lang=scss&scoped=true\"\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 \"5d57eaf2\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-tooltip',{attrs:{\"max-width\":\"640\",\"top\":\"\",\"position-x\":_vm.posx,\"position-y\":_vm.posy,\"absolute\":\"\"},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_vm._t(\"default\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\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!./AgendaTooltip.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!./AgendaTooltip.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AgendaTooltip.vue?vue&type=template&id=681c0378\"\nimport script from \"./AgendaTooltip.vue?vue&type=script&lang=js\"\nexport * from \"./AgendaTooltip.vue?vue&type=script&lang=js\"\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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-container',[_c('v-row',[_c('v-col',{staticClass:\"ma-0 pa-0\",staticStyle:{\"position\":\"relative\"}},[_c('v-expansion-panels',{staticClass:\"accordion filter-sidebar\",staticStyle:{\"z-index\":\"inherit\"},attrs:{\"accordion\":\"\",\"multiple\":\"\",\"tile\":\"\",\"value\":_vm.openPanelIndexes}},[_c('v-expansion-panel',[_c('v-expansion-panel-header',[_vm._v(\" \"+_vm._s(_vm.$t('agenda.filters'))+\" \")]),_c('v-expansion-panel-content',{staticClass:\"ml-n3\"},[_c('agenda-filter-tree',{attrs:{\"filter-type\":\"agenda\",\"query-string-route\":\"agenda\",\"store-getter\":\"agendaFilters\",\"store-setter\":\"setAgendaFilters\",\"dispatch-on-checkbox-clicked\":\"getAllAgendas\",\"open-nodes\":['COM'],\"allow-select-all\":true,\"sync-query-string\":true}})],1)],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('treeview-root',{attrs:{\"items\":_vm.itemsAll,\"openItems\":_vm.openNodes,\"selected-color\":\"teal lighten-1\",\"item-key\":\"id\"},on:{\"input\":_vm.onCheckboxClicked},model:{value:(_vm.itemsChecked),callback:function ($$v) {_vm.itemsChecked=$$v},expression:\"itemsChecked\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\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!./AgendaFilterTree.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!./AgendaFilterTree.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AgendaFilterTree.vue?vue&type=template&id=5986bc14&scoped=true\"\nimport script from \"./AgendaFilterTree.vue?vue&type=script&lang=js\"\nexport * from \"./AgendaFilterTree.vue?vue&type=script&lang=js\"\nimport style0 from \"./AgendaFilterTree.vue?vue&type=style&index=0&id=5986bc14&prod&lang=scss&scoped=true\"\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 \"5986bc14\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\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!./AgendaSidebar.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!./AgendaSidebar.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AgendaSidebar.vue?vue&type=template&id=5e803c34&scoped=true\"\nimport script from \"./AgendaSidebar.vue?vue&type=script&lang=js\"\nexport * from \"./AgendaSidebar.vue?vue&type=script&lang=js\"\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 \"5e803c34\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\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!./AgendaOverview.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!./AgendaOverview.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AgendaOverview.vue?vue&type=template&id=578733a2&scoped=true\"\nimport script from \"./AgendaOverview.vue?vue&type=script&lang=js\"\nexport * from \"./AgendaOverview.vue?vue&type=script&lang=js\"\nimport style0 from \"./AgendaOverview.vue?vue&type=style&index=0&id=578733a2&prod&scoped=true&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 \"578733a2\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}