{"version":3,"sources":["../../../../src/components/VCalendar/mixins/calendar-with-intervals.ts"],"names":[],"mappings":"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","sourcesContent":["\n// Mixins\nimport CalendarBase from './calendar-base'\n\n// Util\nimport props from '../util/props'\nimport {\n VTimestamp,\n VTime,\n VTimestampFormatter,\n parseTime,\n copyTimestamp,\n updateMinutes,\n createDayList,\n createIntervalList,\n createNativeLocaleFormatter,\n} from '../util/timestamp'\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 firstMinute (): number {\n return this.parsedFirstInterval * this.parsedIntervalMinutes\n },\n bodyHeight (): number {\n return this.parsedIntervalCount * this.parsedIntervalHeight\n },\n days (): VTimestamp[] {\n return createDayList(\n this.parsedStart,\n this.parsedEnd,\n this.times.today,\n this.weekdaySkips,\n this.maxDays\n )\n },\n intervals (): VTimestamp[][] {\n const days: VTimestamp[] = this.days\n const first: number = this.parsedFirstInterval\n const minutes: number = this.parsedIntervalMinutes\n const count: number = this.parsedIntervalCount\n const now: VTimestamp = this.times.now\n\n return days.map(d => createIntervalList(d, first, minutes, count, now))\n },\n intervalFormatter (): VTimestampFormatter {\n if (this.intervalFormat) {\n return this.intervalFormat as VTimestampFormatter\n }\n\n const longOptions = { timeZone: 'UTC', hour12: true, hour: '2-digit', minute: '2-digit' }\n const shortOptions = { timeZone: 'UTC', hour12: true, hour: 'numeric', minute: '2-digit' }\n const shortHourOptions = { timeZone: 'UTC', hour12: true, 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: VTimestamp): boolean {\n const first: VTimestamp = this.intervals[0][0]\n const isFirst: boolean = first.hour === interval.hour && first.minute === interval.minute\n return !isFirst && interval.minute === 0\n },\n intervalStyleDefault (_interval: VTimestamp): object | undefined {\n return undefined\n },\n getTimestampAtEvent (e: MouseEvent | TouchEvent, day: VTimestamp): VTimestamp {\n const timestamp: VTimestamp = 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: VTimestamp): any {\n const scope = copyTimestamp(timestamp) as any\n scope.timeToY = this.timeToY\n scope.minutesToPixels = this.minutesToPixels\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 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 const delta: number = (minutes - min) / gap\n let y: number = delta * 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 return y\n },\n },\n})\n"],"sourceRoot":"","file":"calendar-with-intervals.js"}