vuetify
Version:
Vue Material Component Framework
1 lines • 30.9 kB
Source Map (JSON)
{"version":3,"file":"timestamp.mjs","names":["isLeapYear","PARSE_REGEX","PARSE_TIME","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP","DAYS_IN_MONTH_MIN","DAYS_IN_MONTH_MAX","MONTH_MAX","MONTH_MIN","DAY_MIN","DAYS_IN_WEEK","MINUTES_IN_HOUR","MINUTE_MAX","MINUTES_IN_DAY","HOURS_IN_DAY","HOUR_MAX","FIRST_HOUR","OFFSET_YEAR","OFFSET_MONTH","OFFSET_HOUR","OFFSET_TIME","getStartOfWeek","timestamp","weekdays","today","start","copyTimestamp","findWeekday","prevDay","updateFormatted","updateRelative","hasTime","getEndOfWeek","end","length","getStartOfMonth","day","updateWeekday","getEndOfMonth","daysInMonth","year","month","validateTime","input","isFinite","exec","hour","minute","parseTime","parts","parseInt","validateTimestamp","Date","parseTimestamp","required","now","date","parseDate","Error","time","weekday","hasDay","past","present","future","getFullYear","getMonth","getDate","getDay","getHours","getMinutes","getDayIdentifier","getTimeIdentifier","getTimestampIdentifier","a","b","isTimedless","updateHasTime","getTime","updateMinutes","minutes","Math","floor","getWeekday","_","k","m","C","Y","padNumber","x","padded","String","str","nextMinutes","nextDay","relativeDays","mover","days","diffMinutes","min","max","M","D","h","maxDays","getWeekdaySkips","skips","filled","i","skip","j","next","timestampToDate","createDayList","weekdaySkips","stop","current","currentIdentifier","stopped","push","createIntervalList","first","count","intervals","mins","int","createNativeLocaleFormatter","locale","getOptions","emptyFormatter","_t","_s","Intl","DateTimeFormat","short","intlFormatter","undefined","format","e"],"sources":["../../../../src/components/VCalendar/util/timestamp.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\nimport { CalendarTimestamp, CalendarFormatter } from 'vuetify/types'\nimport { isLeapYear } from '../../../util/dateTimeUtils'\n\nexport const PARSE_REGEX = /^(\\d{4})-(\\d{1,2})(-(\\d{1,2}))?([^\\d]+(\\d{1,2}))?(:(\\d{1,2}))?(:(\\d{1,2}))?$/\nexport const PARSE_TIME = /(\\d\\d?)(:(\\d\\d?)|)(:(\\d\\d?)|)/\n\nexport const DAYS_IN_MONTH: number[] = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nexport const DAYS_IN_MONTH_LEAP: number[] = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nexport const DAYS_IN_MONTH_MIN = 28\nexport const DAYS_IN_MONTH_MAX = 31\nexport const MONTH_MAX = 12\nexport const MONTH_MIN = 1\nexport const DAY_MIN = 1\nexport const DAYS_IN_WEEK = 7\nexport const MINUTES_IN_HOUR = 60\nexport const MINUTE_MAX = 59\nexport const MINUTES_IN_DAY = 24 * 60\nexport const HOURS_IN_DAY = 24\nexport const HOUR_MAX = 23\nexport const FIRST_HOUR = 0\nexport const OFFSET_YEAR = 10000\nexport const OFFSET_MONTH = 100\nexport const OFFSET_HOUR = 100\nexport const OFFSET_TIME = 10000\n\ntype CalendarTimestampFormatOptions = (timestamp: CalendarTimestamp, short: boolean) => object\ntype CalendarTimestampOperation = (timestamp: CalendarTimestamp) => CalendarTimestamp\nexport type VTime = number | string | {\n hour: number\n minute: number\n}\n\nexport type VTimestampInput = number | string | Date;\n\nexport function getStartOfWeek (timestamp: CalendarTimestamp, weekdays: number[], today?: CalendarTimestamp): CalendarTimestamp {\n const start = copyTimestamp(timestamp)\n findWeekday(start, weekdays[0], prevDay)\n updateFormatted(start)\n if (today) {\n updateRelative(start, today, start.hasTime)\n }\n\n return start\n}\n\nexport function getEndOfWeek (timestamp: CalendarTimestamp, weekdays: number[], today?: CalendarTimestamp): CalendarTimestamp {\n const end = copyTimestamp(timestamp)\n findWeekday(end, weekdays[weekdays.length - 1])\n updateFormatted(end)\n if (today) {\n updateRelative(end, today, end.hasTime)\n }\n\n return end\n}\n\nexport function getStartOfMonth (timestamp: CalendarTimestamp): CalendarTimestamp {\n const start = copyTimestamp(timestamp)\n start.day = DAY_MIN\n updateWeekday(start)\n updateFormatted(start)\n\n return start\n}\n\nexport function getEndOfMonth (timestamp: CalendarTimestamp): CalendarTimestamp {\n const end = copyTimestamp(timestamp)\n end.day = daysInMonth(end.year, end.month)\n updateWeekday(end)\n updateFormatted(end)\n\n return end\n}\n\nexport function validateTime (input: any): input is VTime {\n return (typeof input === 'number' && isFinite(input)) ||\n (!!PARSE_TIME.exec(input)) ||\n (typeof input === 'object' && isFinite(input.hour) && isFinite(input.minute))\n}\n\nexport function parseTime (input: any): number | false {\n if (typeof input === 'number') {\n // when a number is given, it's minutes since 12:00am\n return input\n } else if (typeof input === 'string') {\n // when a string is given, it's a hh:mm:ss format where seconds are optional\n const parts = PARSE_TIME.exec(input)\n if (!parts) {\n return false\n }\n\n return parseInt(parts[1]) * 60 + parseInt(parts[3] || 0)\n } else if (typeof input === 'object') {\n // when an object is given, it must have hour and minute\n if (typeof input.hour !== 'number' || typeof input.minute !== 'number') {\n return false\n }\n\n return input.hour * 60 + input.minute\n } else {\n // unsupported type\n return false\n }\n}\n\nexport function validateTimestamp (input: any): input is VTimestampInput {\n return (typeof input === 'number' && isFinite(input)) ||\n (typeof input === 'string' && !!PARSE_REGEX.exec(input)) ||\n (input instanceof Date)\n}\n\nexport function parseTimestamp (input: VTimestampInput, required?: false, now?: CalendarTimestamp): CalendarTimestamp | null\nexport function parseTimestamp (input: VTimestampInput, required: true, now?: CalendarTimestamp): CalendarTimestamp\nexport function parseTimestamp (input: VTimestampInput, required = false, now?: CalendarTimestamp): CalendarTimestamp | null {\n if (typeof input === 'number' && isFinite(input)) {\n input = new Date(input)\n }\n\n if (input instanceof Date) {\n const date: CalendarTimestamp = parseDate(input)\n\n if (now) {\n updateRelative(date, now, date.hasTime)\n }\n\n return date\n }\n\n if (typeof input !== 'string') {\n if (required) {\n throw new Error(`${input} is not a valid timestamp. It must be a Date, number of milliseconds since Epoch, or a string in the format of YYYY-MM-DD or YYYY-MM-DD hh:mm. Zero-padding is optional and seconds are ignored.`)\n }\n return null\n }\n\n // YYYY-MM-DD hh:mm:ss\n const parts = PARSE_REGEX.exec(input)\n\n if (!parts) {\n if (required) {\n throw new Error(`${input} is not a valid timestamp. It must be a Date, number of milliseconds since Epoch, or a string in the format of YYYY-MM-DD or YYYY-MM-DD hh:mm. Zero-padding is optional and seconds are ignored.`)\n }\n\n return null\n }\n\n const timestamp: CalendarTimestamp = {\n date: input,\n time: '',\n year: parseInt(parts[1]),\n month: parseInt(parts[2]),\n day: parseInt(parts[4]) || 1,\n hour: parseInt(parts[6]) || 0,\n minute: parseInt(parts[8]) || 0,\n weekday: 0,\n hasDay: !!parts[4],\n hasTime: !!(parts[6] && parts[8]),\n past: false,\n present: false,\n future: false,\n }\n\n updateWeekday(timestamp)\n updateFormatted(timestamp)\n\n if (now) {\n updateRelative(timestamp, now, timestamp.hasTime)\n }\n\n return timestamp\n}\n\nexport function parseDate (date: Date): CalendarTimestamp {\n return updateFormatted({\n date: '',\n time: '',\n year: date.getFullYear(),\n month: date.getMonth() + 1,\n day: date.getDate(),\n weekday: date.getDay(),\n hour: date.getHours(),\n minute: date.getMinutes(),\n hasDay: true,\n hasTime: true,\n past: false,\n present: true,\n future: false,\n })\n}\n\nexport function getDayIdentifier (timestamp: { year: number, month: number, day: number }): number {\n return timestamp.year * OFFSET_YEAR + timestamp.month * OFFSET_MONTH + timestamp.day\n}\n\nexport function getTimeIdentifier (timestamp: { hour: number, minute: number }): number {\n return timestamp.hour * OFFSET_HOUR + timestamp.minute\n}\n\nexport function getTimestampIdentifier (timestamp: CalendarTimestamp): number {\n return getDayIdentifier(timestamp) * OFFSET_TIME + getTimeIdentifier(timestamp)\n}\n\nexport function updateRelative (timestamp: CalendarTimestamp, now: CalendarTimestamp, time = false): CalendarTimestamp {\n let a = getDayIdentifier(now)\n let b = getDayIdentifier(timestamp)\n let present = a === b\n\n if (timestamp.hasTime && time && present) {\n a = getTimeIdentifier(now)\n b = getTimeIdentifier(timestamp)\n present = a === b\n }\n\n timestamp.past = b < a\n timestamp.present = present\n timestamp.future = b > a\n\n return timestamp\n}\n\nexport function isTimedless (input: VTimestampInput): input is (Date | number) {\n return (input instanceof Date) || (typeof input === 'number' && isFinite(input))\n}\n\nexport function updateHasTime (timestamp: CalendarTimestamp, hasTime: boolean, now?: CalendarTimestamp): CalendarTimestamp {\n if (timestamp.hasTime !== hasTime) {\n timestamp.hasTime = hasTime\n if (!hasTime) {\n timestamp.hour = HOUR_MAX\n timestamp.minute = MINUTE_MAX\n timestamp.time = getTime(timestamp)\n }\n if (now) {\n updateRelative(timestamp, now, timestamp.hasTime)\n }\n }\n\n return timestamp\n}\n\nexport function updateMinutes (timestamp: CalendarTimestamp, minutes: number, now?: CalendarTimestamp): CalendarTimestamp {\n timestamp.hasTime = true\n timestamp.hour = Math.floor(minutes / MINUTES_IN_HOUR)\n timestamp.minute = minutes % MINUTES_IN_HOUR\n timestamp.time = getTime(timestamp)\n if (now) {\n updateRelative(timestamp, now, true)\n }\n\n return timestamp\n}\n\nexport function updateWeekday (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.weekday = getWeekday(timestamp)\n\n return timestamp\n}\n\nexport function updateFormatted (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.time = getTime(timestamp)\n timestamp.date = getDate(timestamp)\n\n return timestamp\n}\n\nexport function getWeekday (timestamp: CalendarTimestamp): number {\n if (timestamp.hasDay) {\n const _ = Math.floor\n const k = timestamp.day\n const m = ((timestamp.month + 9) % MONTH_MAX) + 1\n const C = _(timestamp.year / 100)\n const Y = (timestamp.year % 100) - (timestamp.month <= 2 ? 1 : 0)\n\n return (((k + _(2.6 * m - 0.2) - 2 * C + Y + _(Y / 4) + _(C / 4)) % 7) + 7) % 7\n }\n\n return timestamp.weekday\n}\n\nexport function daysInMonth (year: number, month: number) {\n return isLeapYear(year) ? DAYS_IN_MONTH_LEAP[month] : DAYS_IN_MONTH[month]\n}\n\nexport function copyTimestamp (timestamp: CalendarTimestamp): CalendarTimestamp {\n const { date, time, year, month, day, weekday, hour, minute, hasDay, hasTime, past, present, future } = timestamp\n\n return { date, time, year, month, day, weekday, hour, minute, hasDay, hasTime, past, present, future }\n}\n\nexport function padNumber (x: number, length: number): string {\n let padded = String(x)\n while (padded.length < length) {\n padded = '0' + padded\n }\n\n return padded\n}\n\nexport function getDate (timestamp: CalendarTimestamp): string {\n let str = `${padNumber(timestamp.year, 4)}-${padNumber(timestamp.month, 2)}`\n\n if (timestamp.hasDay) str += `-${padNumber(timestamp.day, 2)}`\n\n return str\n}\n\nexport function getTime (timestamp: CalendarTimestamp): string {\n if (!timestamp.hasTime) {\n return ''\n }\n\n return `${padNumber(timestamp.hour, 2)}:${padNumber(timestamp.minute, 2)}`\n}\n\nexport function nextMinutes (timestamp: CalendarTimestamp, minutes: number): CalendarTimestamp {\n timestamp.minute += minutes\n while (timestamp.minute > MINUTES_IN_HOUR) {\n timestamp.minute -= MINUTES_IN_HOUR\n timestamp.hour++\n if (timestamp.hour >= HOURS_IN_DAY) {\n nextDay(timestamp)\n timestamp.hour = FIRST_HOUR\n }\n }\n\n return timestamp\n}\n\nexport function nextDay (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.day++\n timestamp.weekday = (timestamp.weekday + 1) % DAYS_IN_WEEK\n if (timestamp.day > DAYS_IN_MONTH_MIN && timestamp.day > daysInMonth(timestamp.year, timestamp.month)) {\n timestamp.day = DAY_MIN\n timestamp.month++\n if (timestamp.month > MONTH_MAX) {\n timestamp.month = MONTH_MIN\n timestamp.year++\n }\n }\n\n return timestamp\n}\n\nexport function prevDay (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.day--\n timestamp.weekday = (timestamp.weekday + 6) % DAYS_IN_WEEK\n if (timestamp.day < DAY_MIN) {\n timestamp.month--\n if (timestamp.month < MONTH_MIN) {\n timestamp.year--\n timestamp.month = MONTH_MAX\n }\n timestamp.day = daysInMonth(timestamp.year, timestamp.month)\n }\n\n return timestamp\n}\n\nexport function relativeDays (\n timestamp: CalendarTimestamp,\n mover: CalendarTimestampOperation = nextDay,\n days = 1\n): CalendarTimestamp {\n while (--days >= 0) mover(timestamp)\n\n return timestamp\n}\n\nexport function diffMinutes (min: CalendarTimestamp, max: CalendarTimestamp) {\n const Y = (max.year - min.year) * 525600\n const M = (max.month - min.month) * 43800\n const D = (max.day - min.day) * 1440\n const h = (max.hour - min.hour) * 60\n const m = (max.minute - min.minute)\n\n return Y + M + D + h + m\n}\n\nexport function findWeekday (timestamp: CalendarTimestamp, weekday: number,\n mover: CalendarTimestampOperation = nextDay, maxDays = 6): CalendarTimestamp {\n while (timestamp.weekday !== weekday && --maxDays >= 0) mover(timestamp)\n\n return timestamp\n}\n\nexport function getWeekdaySkips (weekdays: number[]): number[] {\n const skips: number[] = [1, 1, 1, 1, 1, 1, 1]\n const filled: number[] = [0, 0, 0, 0, 0, 0, 0]\n for (let i = 0; i < weekdays.length; i++) {\n filled[weekdays[i]] = 1\n }\n for (let k = 0; k < DAYS_IN_WEEK; k++) {\n let skip = 1\n for (let j = 1; j < DAYS_IN_WEEK; j++) {\n const next = (k + j) % DAYS_IN_WEEK\n if (filled[next]) {\n break\n }\n skip++\n }\n skips[k] = filled[k] * skip\n }\n\n return skips\n}\n\nexport function timestampToDate (timestamp: CalendarTimestamp): Date {\n const time = `${padNumber(timestamp.hour, 2)}:${padNumber(timestamp.minute, 2)}`\n const date = timestamp.date\n\n return new Date(`${date}T${time}:00+00:00`)\n}\n\nexport function createDayList (\n start: CalendarTimestamp,\n end: CalendarTimestamp,\n now: CalendarTimestamp,\n weekdaySkips: number[],\n max = 42,\n min = 0\n): CalendarTimestamp[] {\n const stop = getDayIdentifier(end)\n const days: CalendarTimestamp[] = []\n let current = copyTimestamp(start)\n let currentIdentifier = 0\n let stopped = currentIdentifier === stop\n\n if (stop < getDayIdentifier(start)) {\n throw new Error('End date is earlier than start date.')\n }\n\n while ((!stopped || days.length < min) && days.length < max) {\n currentIdentifier = getDayIdentifier(current)\n stopped = stopped || currentIdentifier === stop\n if (weekdaySkips[current.weekday] === 0) {\n current = nextDay(current)\n continue\n }\n const day = copyTimestamp(current)\n updateFormatted(day)\n updateRelative(day, now)\n days.push(day)\n current = relativeDays(current, nextDay, weekdaySkips[current.weekday])\n }\n\n if (!days.length) throw new Error('No dates found using specified start date, end date, and weekdays.')\n\n return days\n}\n\nexport function createIntervalList (timestamp: CalendarTimestamp, first: number,\n minutes: number, count: number, now?: CalendarTimestamp): CalendarTimestamp[] {\n const intervals: CalendarTimestamp[] = []\n\n for (let i = 0; i < count; i++) {\n const mins = first + (i * minutes)\n const int = copyTimestamp(timestamp)\n intervals.push(updateMinutes(int, mins, now))\n }\n\n return intervals\n}\n\nexport function createNativeLocaleFormatter (locale: string, getOptions: CalendarTimestampFormatOptions): CalendarFormatter {\n const emptyFormatter: CalendarFormatter = (_t, _s) => ''\n\n if (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') {\n return emptyFormatter\n }\n\n return (timestamp, short) => {\n try {\n const intlFormatter = new Intl.DateTimeFormat(locale || undefined, getOptions(timestamp, short))\n\n return intlFormatter.format(timestampToDate(timestamp))\n } catch (e) {\n return ''\n }\n }\n}\n"],"mappings":"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"}