|
1 |
- {"version":3,"sources":["../../../../src/components/VCalendar/util/timestamp.ts"],"names":[],"mappings":"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","sourcesContent":["\nexport const PARSE_REGEX: RegExp = /^(\\d{4})-(\\d{1,2})(-(\\d{1,2}))?([^\\d]+(\\d{1,2}))?(:(\\d{1,2}))?(:(\\d{1,2}))?$/\nexport const PARSE_TIME: RegExp = /(\\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 HOURS_IN_DAY = 24\nexport const FIRST_HOUR = 0\n\nexport interface VTimestamp {\n date: string\n time: string\n year: number\n month: number\n day: number\n weekday: number\n hour: number\n minute: number\n hasDay: boolean\n hasTime: boolean\n past: boolean\n present: boolean\n future: boolean\n}\n\nexport interface VTimeObject {\n hour: number\n minute: number\n}\n\nexport type VTime = number | string | VTimeObject\n\nexport type VTimestampFormatter = (timestamp: VTimestamp, short: boolean) => string\n\nexport type VTimestampFormatOptions = (timestamp: VTimestamp, short: boolean) => object\n\nexport type VTimestampOperation = (timestamp: VTimestamp) => VTimestamp\n\nexport function getStartOfWeek (timestamp: VTimestamp, weekdays: number[], today?: VTimestamp): VTimestamp {\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 return start\n}\n\nexport function getEndOfWeek (timestamp: VTimestamp, weekdays: number[], today?: VTimestamp): VTimestamp {\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 return end\n}\n\nexport function getStartOfMonth (timestamp: VTimestamp): VTimestamp {\n const start = copyTimestamp(timestamp)\n start.day = DAY_MIN\n updateWeekday(start)\n updateFormatted(start)\n return start\n}\n\nexport function getEndOfMonth (timestamp: VTimestamp): VTimestamp {\n const end = copyTimestamp(timestamp)\n end.day = daysInMonth(end.year, end.month)\n updateWeekday(end)\n updateFormatted(end)\n return end\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 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 return input.hour * 60 + input.minute\n } else {\n // unsupported type\n return false\n }\n}\n\nexport function validateTimestamp (input: any): boolean {\n return !!PARSE_REGEX.exec(input)\n}\n\nexport function parseTimestamp (input: string, now?: VTimestamp): VTimestamp | null {\n // YYYY-MM-DD hh:mm:ss\n const parts = PARSE_REGEX.exec(input)\n\n if (!parts) return null\n\n const timestamp: VTimestamp = {\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): VTimestamp {\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: VTimestamp): number {\n return timestamp.year * 10000 + timestamp.month * 100 + timestamp.day\n}\n\nexport function getTimeIdentifier (timestamp: VTimestamp): number {\n return timestamp.hour * 100 + timestamp.minute\n}\n\nexport function updateRelative (timestamp: VTimestamp, now: VTimestamp, time = false): VTimestamp {\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 updateMinutes (timestamp: VTimestamp, minutes: number, now?: VTimestamp): VTimestamp {\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: VTimestamp): VTimestamp {\n timestamp.weekday = getWeekday(timestamp)\n\n return timestamp\n}\n\nexport function updateFormatted (timestamp: VTimestamp): VTimestamp {\n timestamp.time = getTime(timestamp)\n timestamp.date = getDate(timestamp)\n\n return timestamp\n}\n\nexport function getWeekday (timestamp: VTimestamp): 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 isLeapYear (year: number): boolean {\n return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)\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: VTimestamp): VTimestamp {\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: VTimestamp): 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: VTimestamp): 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: VTimestamp, minutes: number): VTimestamp {\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: VTimestamp): VTimestamp {\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: VTimestamp): VTimestamp {\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 (timestamp: VTimestamp,\n mover: VTimestampOperation = nextDay, days = 1): VTimestamp {\n while (--days >= 0) mover(timestamp)\n\n return timestamp\n}\n\nexport function findWeekday (timestamp: VTimestamp, weekday: number,\n mover: VTimestampOperation = nextDay, maxDays = 6): VTimestamp {\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 createDayList (start: VTimestamp, end: VTimestamp, now: VTimestamp,\n weekdaySkips: number[], max = 42, min = 0): VTimestamp[] {\n const stop = getDayIdentifier(end)\n const days: VTimestamp[] = []\n let current = copyTimestamp(start)\n let currentIdentifier = 0\n let stopped = currentIdentifier === stop\n\n if (stop < getDayIdentifier(start)) {\n return days\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 return days\n}\n\nexport function createIntervalList (timestamp: VTimestamp, first: number,\n minutes: number, count: number, now?: VTimestamp): VTimestamp[] {\n const intervals: VTimestamp[] = []\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: VTimestampFormatOptions): VTimestampFormatter {\n const emptyFormatter: VTimestampFormatter = (_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 const time = `${padNumber(timestamp.hour, 2)}:${padNumber(timestamp.minute, 2)}`\n const date = timestamp.date\n return intlFormatter.format(new Date(`${date}T${time}:00+00:00`))\n } catch (e) {\n return ''\n }\n }\n}\n"],"sourceRoot":""}
|