{"version":3,"file":"VCalendar.mjs","names":["CalendarWithEvents","props","DAYS_IN_MONTH_MAX","DAY_MIN","DAYS_IN_WEEK","parseTimestamp","validateTimestamp","relativeDays","nextDay","prevDay","copyTimestamp","updateFormatted","updateWeekday","updateRelative","getStartOfMonth","getEndOfMonth","timestampToDate","VCalendarMonthly","VCalendarDaily","VCalendarWeekly","VCalendarCategory","getParsedCategories","extend","name","calendar","weeks","intervals","category","data","lastStart","lastEnd","computed","parsedValue","value","parsedStart","times","today","parsedCategoryDays","parseInt","categoryDays","renderProps","around","component","maxDays","weekdays","parsedWeekdays","categories","parsedCategories","start","end","type","getStartOfWeek","getEndOfWeek","weekday","parsedEnd","days","i","push","getCategoryList","Error","eventWeekdays","categoryMode","title","spanYears","year","spanMonths","month","monthShortFormatter","monthLongFormatter","getFormatter","timeZone","categoryText","watch","mounted","updateEventVisibility","checkChange","updated","window","requestAnimationFrame","methods","date","$emit","move","amount","arguments","length","undefined","moved","forward","mover","limit","day","now","Date","getTime","next","prev","timeToY","time","clamp","c","$children","timeDelta","minutesToPixels","minutes","scrollToTime","input","required","timestamp","noEvents","categoryMap","reduce","map","index","categoryName","count","categoryHideDynamic","categoryShowAll","categoryLength","parsedEvents","forEach","ev","categoryForInvalid","filter","hasOwnProperty","render","h","staticClass","class","$props","attrs","role","directives","modifiers","quiet","on","$listeners","click:date","e","scopedSlots","getScopedSlots"],"sources":["../../../src/components/VCalendar/VCalendar.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\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"],"mappings":"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"}