{"version":3,"file":"vuetify.mjs","names":["createRange","getWeekArray","date","currentWeek","weeks","firstDayOfMonth","startOfMonth","lastDayOfMonth","endOfMonth","i","getDay","push","getDate","day","Date","getFullYear","getMonth","length","value","parsed","parse","isNaN","firstDay","AD","AE","AF","AG","AI","AL","AM","AN","AR","AS","AT","AU","AX","AZ","BA","BD","BE","BG","BH","BM","BN","BR","BS","BT","BW","BY","BZ","CA","CH","CL","CM","CN","CO","CR","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","ES","ET","FI","FJ","FO","FR","GB","GE","GF","GP","GR","GT","GU","HK","HN","HR","HU","ID","IE","IL","IN","IQ","IR","IS","IT","JM","JO","JP","KE","KG","KH","KR","KW","KZ","LA","LB","LI","LK","LT","LU","LV","LY","MC","MD","ME","MH","MK","MM","MN","MO","MQ","MT","MV","MX","MY","MZ","NI","NL","NO","NP","NZ","OM","PA","PE","PH","PK","PL","PR","PT","PY","QA","RE","RO","RS","RU","SA","SD","SE","SG","SI","SK","SM","SV","SY","TH","TJ","TM","TR","TT","TW","UA","UM","US","UY","UZ","VA","VE","VI","VN","WS","XK","YE","ZA","ZW","sundayJanuarySecond2000","getWeekdays","locale","daysFromSunday","slice","toUpperCase","map","weekday","setDate","Intl","DateTimeFormat","format","formatString","options","month","year","timeZone","timeZoneName","addDays","amount","d","addMonths","setMonth","getYear","startOfYear","endOfYear","getMondayOfFirstWeekOfYear","getWeek","d1w1","tv","diffTime","Math","abs","getTime","diffDays","ceil","floor","isWithinRange","range","isAfter","isBefore","isValid","comparing","isEqual","isSameDay","isSameMonth","getDiff","unit","c","setYear","setFullYear","VuetifyDateAdapter","constructor","arguments","undefined"],"sources":["../../../../src/labs/date/adapters/vuetify.ts"],"sourcesContent":["// Utilities\nimport { createRange } from '@/util'\n\n// Types\nimport type { DateAdapter } from '../DateAdapter'\n\nfunction getWeekArray (date: Date) {\n  let currentWeek = []\n  const weeks = []\n  const firstDayOfMonth = startOfMonth(date)\n  const lastDayOfMonth = endOfMonth(date)\n\n  for (let i = 0; i < firstDayOfMonth.getDay(); i++) {\n    currentWeek.push(null)\n  }\n\n  for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {\n    const day = new Date(date.getFullYear(), date.getMonth(), i)\n\n    // Add the day to the current week\n    currentWeek.push(day)\n\n    // If the current week has 7 days, add it to the weeks array and start a new week\n    if (currentWeek.length === 7) {\n      weeks.push(currentWeek)\n      currentWeek = []\n    }\n  }\n\n  for (let i = currentWeek.length; i < 7; i++) {\n    currentWeek.push(null)\n  }\n\n  weeks.push(currentWeek)\n\n  return weeks\n}\n\nfunction startOfMonth (date: Date) {\n  return new Date(date.getFullYear(), date.getMonth(), 1)\n}\n\nfunction endOfMonth (date: Date) {\n  return new Date(date.getFullYear(), date.getMonth() + 1, 0)\n}\n\nfunction date (value?: any): Date | null {\n  if (value == null) return null\n\n  if (value instanceof Date) return value\n\n  if (typeof value === 'string') {\n    const parsed = Date.parse(value)\n\n    if (!isNaN(parsed)) return new Date(parsed)\n  }\n\n  return null\n}\n\nconst firstDay: Record<string, number> = {\n  '001': 1,\n  AD: 1,\n  AE: 6,\n  AF: 6,\n  AG: 0,\n  AI: 1,\n  AL: 1,\n  AM: 1,\n  AN: 1,\n  AR: 1,\n  AS: 0,\n  AT: 1,\n  AU: 0,\n  AX: 1,\n  AZ: 1,\n  BA: 1,\n  BD: 0,\n  BE: 1,\n  BG: 1,\n  BH: 6,\n  BM: 1,\n  BN: 1,\n  BR: 0,\n  BS: 0,\n  BT: 0,\n  BW: 0,\n  BY: 1,\n  BZ: 0,\n  CA: 0,\n  CH: 1,\n  CL: 1,\n  CM: 1,\n  CN: 0,\n  CO: 0,\n  CR: 1,\n  CY: 1,\n  CZ: 1,\n  DE: 1,\n  DJ: 6,\n  DK: 1,\n  DM: 0,\n  DO: 0,\n  DZ: 6,\n  EC: 1,\n  EE: 1,\n  EG: 6,\n  ES: 1,\n  ET: 0,\n  FI: 1,\n  FJ: 1,\n  FO: 1,\n  FR: 1,\n  GB: 1,\n  'GB-alt-variant': 0,\n  GE: 1,\n  GF: 1,\n  GP: 1,\n  GR: 1,\n  GT: 0,\n  GU: 0,\n  HK: 0,\n  HN: 0,\n  HR: 1,\n  HU: 1,\n  ID: 0,\n  IE: 1,\n  IL: 0,\n  IN: 0,\n  IQ: 6,\n  IR: 6,\n  IS: 1,\n  IT: 1,\n  JM: 0,\n  JO: 6,\n  JP: 0,\n  KE: 0,\n  KG: 1,\n  KH: 0,\n  KR: 0,\n  KW: 6,\n  KZ: 1,\n  LA: 0,\n  LB: 1,\n  LI: 1,\n  LK: 1,\n  LT: 1,\n  LU: 1,\n  LV: 1,\n  LY: 6,\n  MC: 1,\n  MD: 1,\n  ME: 1,\n  MH: 0,\n  MK: 1,\n  MM: 0,\n  MN: 1,\n  MO: 0,\n  MQ: 1,\n  MT: 0,\n  MV: 5,\n  MX: 0,\n  MY: 1,\n  MZ: 0,\n  NI: 0,\n  NL: 1,\n  NO: 1,\n  NP: 0,\n  NZ: 1,\n  OM: 6,\n  PA: 0,\n  PE: 0,\n  PH: 0,\n  PK: 0,\n  PL: 1,\n  PR: 0,\n  PT: 0,\n  PY: 0,\n  QA: 6,\n  RE: 1,\n  RO: 1,\n  RS: 1,\n  RU: 1,\n  SA: 0,\n  SD: 6,\n  SE: 1,\n  SG: 0,\n  SI: 1,\n  SK: 1,\n  SM: 1,\n  SV: 0,\n  SY: 6,\n  TH: 0,\n  TJ: 1,\n  TM: 1,\n  TR: 1,\n  TT: 0,\n  TW: 0,\n  UA: 1,\n  UM: 0,\n  US: 0,\n  UY: 1,\n  UZ: 1,\n  VA: 1,\n  VE: 0,\n  VI: 0,\n  VN: 1,\n  WS: 0,\n  XK: 1,\n  YE: 0,\n  ZA: 0,\n  ZW: 0,\n}\n\nconst sundayJanuarySecond2000 = new Date(2000, 0, 2)\n\nfunction getWeekdays (locale: string) {\n  const daysFromSunday = firstDay[locale.slice(-2).toUpperCase()]\n\n  return createRange(7).map(i => {\n    const weekday = new Date(sundayJanuarySecond2000)\n    weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i)\n    return new Intl.DateTimeFormat(locale, { weekday: 'long' }).format(weekday)\n  })\n}\n\nfunction format (value: Date, formatString: string, locale: string): string {\n  const date = new Date(value)\n\n  let options: Intl.DateTimeFormatOptions = {}\n  switch (formatString) {\n    case 'fullDateWithWeekday':\n      options = { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' }\n      break\n    case 'normalDateWithWeekday':\n      options = { weekday: 'short', day: 'numeric', month: 'short', year: 'numeric' }\n      break\n    case 'keyboardDate':\n      options = {}\n      break\n    case 'monthAndDate':\n      options = { month: 'long', day: 'numeric' }\n      break\n    case 'monthAndYear':\n      options = { month: 'long', year: 'numeric' }\n      break\n    default:\n      options = { timeZone: 'UTC', timeZoneName: 'short' }\n  }\n\n  return new Intl.DateTimeFormat(locale, options).format(date)\n}\n\nfunction addDays (date: Date, amount: number) {\n  const d = new Date(date)\n  d.setDate(d.getDate() + amount)\n  return d\n}\n\nfunction addMonths (date: Date, amount: number) {\n  const d = new Date(date)\n  d.setMonth(d.getMonth() + amount)\n  return d\n}\n\nfunction getYear (date: Date) {\n  return date.getFullYear()\n}\n\nfunction getMonth (date: Date) {\n  return date.getMonth()\n}\n\nfunction startOfYear (date: Date) {\n  return new Date(date.getFullYear(), 0, 1)\n}\nfunction endOfYear (date: Date) {\n  return new Date(date.getFullYear(), 11, 31)\n}\n\nfunction getMondayOfFirstWeekOfYear (year: number) {\n  return new Date(year, 0, 1)\n}\n\n// https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024\nexport function getWeek (date: Date) {\n  let year = date.getFullYear()\n  let d1w1 = getMondayOfFirstWeekOfYear(year)\n\n  if (date < d1w1) {\n    year = year - 1\n    d1w1 = getMondayOfFirstWeekOfYear(year)\n  } else {\n    const tv = getMondayOfFirstWeekOfYear(year + 1)\n    if (date >= tv) {\n      year = year + 1\n      d1w1 = tv\n    }\n  }\n\n  const diffTime = Math.abs(date.getTime() - d1w1.getTime())\n  const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24))\n\n  return Math.floor(diffDays / 7) + 1\n}\n\nfunction isWithinRange (date: Date, range: [Date, Date]) {\n  return isAfter(date, range[0]) && isBefore(date, range[1])\n}\n\nfunction isValid (date: any) {\n  const d = new Date(date)\n\n  return d instanceof Date && !isNaN(d.getTime())\n}\n\nfunction isAfter (date: Date, comparing: Date) {\n  return date.getTime() > comparing.getTime()\n}\n\nfunction isBefore (date: Date, comparing: Date) {\n  return date.getTime() < comparing.getTime()\n}\n\nfunction isEqual (date: Date, comparing: Date) {\n  return date.getTime() === comparing.getTime()\n}\n\nfunction isSameDay (date: Date, comparing: Date) {\n  return date.getDate() === comparing.getDate() &&\n    date.getMonth() === comparing.getMonth() &&\n    date.getFullYear() === comparing.getFullYear()\n}\n\nfunction isSameMonth (date: Date, comparing: Date) {\n  return date.getMonth() === comparing.getMonth() &&\n    date.getFullYear() === comparing.getFullYear()\n}\n\nfunction getDiff (date: Date, comparing: Date | string, unit?: string) {\n  const d = new Date(date)\n  const c = new Date(comparing)\n\n  if (unit === 'month') {\n    return d.getMonth() - c.getMonth() + (d.getFullYear() - c.getFullYear()) * 12\n  }\n\n  return Math.floor((d.getTime() - c.getTime()) / (1000 * 60 * 60 * 24))\n}\n\nfunction setYear (date: Date, year: number) {\n  const d = new Date(date)\n  d.setFullYear(year)\n  return d\n}\n\nexport class VuetifyDateAdapter implements DateAdapter<Date> {\n  constructor (public locale: string = 'en') {}\n\n  date (value?: any) {\n    return date(value)\n  }\n\n  addDays (date: Date, amount: number) {\n    return addDays(date, amount)\n  }\n\n  addMonths (date: Date, amount: number) {\n    return addMonths(date, amount)\n  }\n\n  getWeekArray (date: Date) {\n    return getWeekArray(date)\n  }\n\n  startOfMonth (date: Date) {\n    return startOfMonth(date)\n  }\n\n  endOfMonth (date: Date) {\n    return endOfMonth(date)\n  }\n\n  format (date: Date, formatString: string) {\n    return format(date, formatString, this.locale)\n  }\n\n  isEqual (date: Date, comparing: Date) {\n    return isEqual(date, comparing)\n  }\n\n  isValid (date: any) {\n    return isValid(date)\n  }\n\n  isWithinRange (date: Date, range: [Date, Date]) {\n    return isWithinRange(date, range)\n  }\n\n  isAfter (date: Date, comparing: Date) {\n    return isAfter(date, comparing)\n  }\n\n  isSameDay (date: Date, comparing: Date) {\n    return isSameDay(date, comparing)\n  }\n\n  isSameMonth (date: Date, comparing: Date) {\n    return isSameMonth(date, comparing)\n  }\n\n  setYear (date: Date, year: number) {\n    return setYear(date, year)\n  }\n\n  getDiff (date: Date, comparing: Date | string, unit?: string) {\n    return getDiff(date, comparing, unit)\n  }\n\n  getWeek (date: Date) {\n    return getWeek(date)\n  }\n\n  getWeekdays () {\n    return getWeekdays(this.locale)\n  }\n\n  getYear (date: Date) {\n    return getYear(date)\n  }\n\n  getMonth (date: Date) {\n    return getMonth(date)\n  }\n\n  startOfYear (date: Date) {\n    return startOfYear(date)\n  }\n\n  endOfYear (date: Date) {\n    return endOfYear(date)\n  }\n}\n"],"mappings":"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EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACL,gBAAgB,EAAE,CAAC;EACnBC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,EAAE,EAAE,CAAC;EACLC,E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"}