{"version":3,"file":"YeVNpniA.js","sources":["../../../../node_modules/quasar/src/utils/date/private.persian.js","../../../../node_modules/quasar/src/components/date/use-datetime.js","../../../../node_modules/quasar/src/utils/date/date.js","../../../../node_modules/quasar/src/components/date/QDate.js"],"sourcesContent":["// taken from https://github.com/jalaali/jalaali-js\n\n/*\n Jalaali years starting the 33-year rule.\n*/\nconst breaks = [\n -61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210,\n 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178\n]\n\n/*\n Converts a Gregorian date to Jalaali.\n*/\nexport function toJalaali (gy, gm, gd) {\n if (Object.prototype.toString.call(gy) === '[object Date]') {\n gd = gy.getDate()\n gm = gy.getMonth() + 1\n gy = gy.getFullYear()\n }\n return d2j(g2d(gy, gm, gd))\n}\n\n/*\n Converts a Jalaali date to Gregorian.\n*/\nexport function toGregorian (jy, jm, jd) {\n return d2g(j2d(jy, jm, jd))\n}\n\n/*\n Is this a leap year or not?\n*/\nfunction isLeapJalaaliYear (jy) {\n return jalCalLeap(jy) === 0\n}\n\n/*\n Number of days in a given month in a Jalaali year.\n*/\nexport function jalaaliMonthLength (jy, jm) {\n if (jm <= 6) return 31\n if (jm <= 11) return 30\n if (isLeapJalaaliYear(jy)) return 30\n return 29\n}\n\n/*\n This function determines if the Jalaali (Persian) year is\n leap (366-day long) or is the common year (365 days)\n\n @param jy Jalaali calendar year (-61 to 3177)\n @returns number of years since the last leap year (0 to 4)\n */\nfunction jalCalLeap (jy) {\n const bl = breaks.length\n let\n jp = breaks[ 0 ],\n jm,\n jump,\n leap,\n n,\n i\n\n if (jy < jp || jy >= breaks[ bl - 1 ]) { throw new Error('Invalid Jalaali year ' + jy) }\n\n for (i = 1; i < bl; i += 1) {\n jm = breaks[ i ]\n jump = jm - jp\n if (jy < jm) { break }\n jp = jm\n }\n n = jy - jp\n\n if (jump - n < 6) { n = n - jump + div(jump + 4, 33) * 33 }\n leap = mod(mod(n + 1, 33) - 1, 4)\n if (leap === -1) {\n leap = 4\n }\n\n return leap\n}\n\n/*\n This function determines if the Jalaali (Persian) year is\n leap (366-day long) or is the common year (365 days), and\n finds the day in March (Gregorian calendar) of the first\n day of the Jalaali year (jy).\n\n @param jy Jalaali calendar year (-61 to 3177)\n @param withoutLeap when don't need leap (true or false) default is false\n @return\n leap: number of years since the last leap year (0 to 4)\n gy: Gregorian year of the beginning of Jalaali year\n march: the March day of Farvardin the 1st (1st day of jy)\n @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm\n @see: http://www.fourmilab.ch/documents/calendar/\n*/\nfunction jalCal (jy, withoutLeap) {\n const\n bl = breaks.length,\n gy = jy + 621\n let\n leapJ = -14,\n jp = breaks[ 0 ],\n jm,\n jump,\n leap,\n n,\n i\n\n if (jy < jp || jy >= breaks[ bl - 1 ]) { throw new Error('Invalid Jalaali year ' + jy) }\n\n // Find the limiting years for the Jalaali year jy.\n for (i = 1; i < bl; i += 1) {\n jm = breaks[ i ]\n jump = jm - jp\n if (jy < jm) { break }\n leapJ = leapJ + div(jump, 33) * 8 + div(mod(jump, 33), 4)\n jp = jm\n }\n n = jy - jp\n\n // Find the number of leap years from AD 621 to the beginning\n // of the current Jalaali year in the Persian calendar.\n leapJ = leapJ + div(n, 33) * 8 + div(mod(n, 33) + 3, 4)\n if (mod(jump, 33) === 4 && jump - n === 4) { leapJ += 1 }\n\n // And the same in the Gregorian calendar (until the year gy).\n const leapG = div(gy, 4) - div((div(gy, 100) + 1) * 3, 4) - 150\n\n // Determine the Gregorian date of Farvardin the 1st.\n const march = 20 + leapJ - leapG\n\n // Find how many years have passed since the last leap year.\n if (!withoutLeap) {\n if (jump - n < 6) { n = n - jump + div(jump + 4, 33) * 33 }\n leap = mod(mod(n + 1, 33) - 1, 4)\n if (leap === -1) {\n leap = 4\n }\n }\n\n return {\n leap,\n gy,\n march\n }\n}\n\n/*\n Converts a date of the Jalaali calendar to the Julian Day number.\n\n @param jy Jalaali year (1 to 3100)\n @param jm Jalaali month (1 to 12)\n @param jd Jalaali day (1 to 29/31)\n @return Julian Day number\n*/\nfunction j2d (jy, jm, jd) {\n const r = jalCal(jy, true)\n return g2d(r.gy, 3, r.march) + (jm - 1) * 31 - div(jm, 7) * (jm - 7) + jd - 1\n}\n\n/*\n Converts the Julian Day number to a date in the Jalaali calendar.\n\n @param jdn Julian Day number\n @return\n jy: Jalaali year (1 to 3100)\n jm: Jalaali month (1 to 12)\n jd: Jalaali day (1 to 29/31)\n*/\nfunction d2j (jdn) {\n const gy = d2g(jdn).gy // Calculate Gregorian year (gy).\n let\n jy = gy - 621,\n jd,\n jm,\n k\n const\n r = jalCal(jy, false),\n jdn1f = g2d(gy, 3, r.march)\n\n // Find number of days that passed since 1 Farvardin.\n k = jdn - jdn1f\n if (k >= 0) {\n if (k <= 185) {\n // The first 6 months.\n jm = 1 + div(k, 31)\n jd = mod(k, 31) + 1\n return {\n jy,\n jm,\n jd\n }\n }\n else {\n // The remaining months.\n k -= 186\n }\n }\n else {\n // Previous Jalaali year.\n jy -= 1\n k += 179\n if (r.leap === 1) { k += 1 }\n }\n jm = 7 + div(k, 30)\n jd = mod(k, 30) + 1\n return {\n jy,\n jm,\n jd\n }\n}\n\n/*\n Calculates the Julian Day number from Gregorian or Julian\n calendar dates. This integer number corresponds to the noon of\n the date (i.e. 12 hours of Universal Time).\n The procedure was tested to be good since 1 March, -100100 (of both\n calendars) up to a few million years into the future.\n\n @param gy Calendar year (years BC numbered 0, -1, -2, ...)\n @param gm Calendar month (1 to 12)\n @param gd Calendar day of the month (1 to 28/29/30/31)\n @return Julian Day number\n*/\nfunction g2d (gy, gm, gd) {\n let d = div((gy + div(gm - 8, 6) + 100100) * 1461, 4)\n + div(153 * mod(gm + 9, 12) + 2, 5)\n + gd - 34840408\n d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752\n return d\n}\n\n/*\n Calculates Gregorian and Julian calendar dates from the Julian Day number\n (jdn) for the period since jdn=-34839655 (i.e. the year -100100 of both\n calendars) to some millions years ahead of the present.\n\n @param jdn Julian Day number\n @return\n gy: Calendar year (years BC numbered 0, -1, -2, ...)\n gm: Calendar month (1 to 12)\n gd: Calendar day of the month M (1 to 28/29/30/31)\n*/\nfunction d2g (jdn) {\n let j = 4 * jdn + 139361631\n j = j + div(div(4 * jdn + 183187720, 146097) * 3, 4) * 4 - 3908\n const\n i = div(mod(j, 1461), 4) * 5 + 308,\n gd = div(mod(i, 153), 5) + 1,\n gm = mod(div(i, 153), 12) + 1,\n gy = div(j, 1461) - 100100 + div(8 - gm, 6)\n return {\n gy,\n gm,\n gd\n }\n}\n\n/*\n Utility helper functions.\n*/\n\nfunction div (a, b) {\n return ~~(a / b)\n}\n\nfunction mod (a, b) {\n return a - ~~(a / b) * b\n}\n","import { computed } from 'vue'\n\nimport { toJalaali } from '../../utils/date/private.persian.js'\nimport { pad } from '../../utils/format/format.js'\n\nconst calendars = [ 'gregorian', 'persian' ]\n\nexport const useDatetimeProps = {\n // should define modelValue in the target component\n\n mask: {\n type: String\n },\n locale: Object,\n\n calendar: {\n type: String,\n validator: v => calendars.includes(v),\n default: 'gregorian'\n },\n\n landscape: Boolean,\n\n color: String,\n textColor: String,\n\n square: Boolean,\n flat: Boolean,\n bordered: Boolean,\n\n readonly: Boolean,\n disable: Boolean\n}\n\nexport const useDatetimeEmits = [ 'update:modelValue' ]\n\nexport function getDayHash (date) {\n return date.year + '/' + pad(date.month) + '/' + pad(date.day)\n}\n\nexport default function (props, $q) {\n const editable = computed(() => {\n return props.disable !== true && props.readonly !== true\n })\n\n const tabindex = computed(() => {\n return editable.value === true ? 0 : -1\n })\n\n const headerClass = computed(() => {\n const cls = []\n props.color !== void 0 && cls.push(`bg-${ props.color }`)\n props.textColor !== void 0 && cls.push(`text-${ props.textColor }`)\n return cls.join(' ')\n })\n\n function getLocale () {\n return props.locale !== void 0\n ? { ...$q.lang.date, ...props.locale }\n : $q.lang.date\n }\n\n function getCurrentDate (dateOnly) {\n const d = new Date()\n const timeFill = dateOnly === true ? null : 0\n\n if (props.calendar === 'persian') {\n const jDate = toJalaali(d)\n return {\n year: jDate.jy,\n month: jDate.jm,\n day: jDate.jd\n }\n }\n\n return {\n year: d.getFullYear(),\n month: d.getMonth() + 1,\n day: d.getDate(),\n hour: timeFill,\n minute: timeFill,\n second: timeFill,\n millisecond: timeFill\n }\n }\n\n return {\n editable,\n tabindex,\n headerClass,\n\n getLocale,\n getCurrentDate\n }\n}\n","/* eslint no-fallthrough: 0 */\n\nimport { isDate } from '../is/is.js'\nimport { pad, capitalize } from '../format/format.js'\nimport { jalaaliMonthLength } from './private.persian.js'\nimport Lang, { defaultLang } from '../../plugins/lang/Lang.js'\n\nconst\n MILLISECONDS_IN_DAY = 86400000,\n MILLISECONDS_IN_HOUR = 3600000,\n MILLISECONDS_IN_MINUTE = 60000,\n defaultMask = 'YYYY-MM-DDTHH:mm:ss.SSSZ',\n token = /\\[((?:[^\\]\\\\]|\\\\]|\\\\)*)\\]|do|d{1,4}|Mo|M{1,4}|m{1,2}|wo|w{1,2}|Qo|Do|DDDo|D{1,4}|YY(?:YY)?|H{1,2}|h{1,2}|s{1,2}|S{1,3}|Z{1,2}|a{1,2}|[AQExX]/g,\n reverseToken = /(\\[[^\\]]*\\])|do|d{1,4}|Mo|M{1,4}|m{1,2}|wo|w{1,2}|Qo|Do|DDDo|D{1,4}|YY(?:YY)?|H{1,2}|h{1,2}|s{1,2}|S{1,3}|Z{1,2}|a{1,2}|[AQExX]|([.*+:?^,\\s${}()|\\\\]+)/g,\n regexStore = {}\n\nfunction getRegexData (mask, dateLocale) {\n const\n days = '(' + dateLocale.days.join('|') + ')',\n key = mask + days\n\n if (regexStore[ key ] !== void 0) {\n return regexStore[ key ]\n }\n\n const\n daysShort = '(' + dateLocale.daysShort.join('|') + ')',\n months = '(' + dateLocale.months.join('|') + ')',\n monthsShort = '(' + dateLocale.monthsShort.join('|') + ')'\n\n const map = {}\n let index = 0\n\n const regexText = mask.replace(reverseToken, match => {\n index++\n switch (match) {\n case 'YY':\n map.YY = index\n return '(-?\\\\d{1,2})'\n case 'YYYY':\n map.YYYY = index\n return '(-?\\\\d{1,4})'\n case 'M':\n map.M = index\n return '(\\\\d{1,2})'\n case 'Mo':\n map.M = index++ // bumping to M\n return '(\\\\d{1,2}(st|nd|rd|th))'\n case 'MM':\n map.M = index // bumping to M\n return '(\\\\d{2})'\n case 'MMM':\n map.MMM = index\n return monthsShort\n case 'MMMM':\n map.MMMM = index\n return months\n case 'D':\n map.D = index\n return '(\\\\d{1,2})'\n case 'Do':\n map.D = index++ // bumping to D\n return '(\\\\d{1,2}(st|nd|rd|th))'\n case 'DD':\n map.D = index // bumping to D\n return '(\\\\d{2})'\n case 'H':\n map.H = index\n return '(\\\\d{1,2})'\n case 'HH':\n map.H = index // bumping to H\n return '(\\\\d{2})'\n case 'h':\n map.h = index\n return '(\\\\d{1,2})'\n case 'hh':\n map.h = index // bumping to h\n return '(\\\\d{2})'\n case 'm':\n map.m = index\n return '(\\\\d{1,2})'\n case 'mm':\n map.m = index // bumping to m\n return '(\\\\d{2})'\n case 's':\n map.s = index\n return '(\\\\d{1,2})'\n case 'ss':\n map.s = index // bumping to s\n return '(\\\\d{2})'\n case 'S':\n map.S = index\n return '(\\\\d{1})'\n case 'SS':\n map.S = index // bump to S\n return '(\\\\d{2})'\n case 'SSS':\n map.S = index // bump to S\n return '(\\\\d{3})'\n case 'A':\n map.A = index\n return '(AM|PM)'\n case 'a':\n map.a = index\n return '(am|pm)'\n case 'aa':\n map.aa = index\n return '(a\\\\.m\\\\.|p\\\\.m\\\\.)'\n\n case 'ddd':\n return daysShort\n case 'dddd':\n return days\n case 'Q':\n case 'd':\n case 'E':\n return '(\\\\d{1})'\n case 'do':\n index++\n return '(\\\\d{1}(st|nd|rd|th))'\n case 'Qo':\n return '(1st|2nd|3rd|4th)'\n case 'DDD':\n case 'DDDD':\n return '(\\\\d{1,3})'\n case 'DDDo':\n index++\n return '(\\\\d{1,3}(st|nd|rd|th))'\n case 'w':\n return '(\\\\d{1,2})'\n case 'wo':\n index++\n return '(\\\\d{1,2}(st|nd|rd|th))'\n case 'ww':\n return '(\\\\d{2})'\n\n case 'Z': // to split: (?:(Z)()()|([+-])?(\\\\d{2}):?(\\\\d{2}))\n map.Z = index\n return '(Z|[+-]\\\\d{2}:\\\\d{2})'\n case 'ZZ':\n map.ZZ = index\n return '(Z|[+-]\\\\d{2}\\\\d{2})'\n\n case 'X':\n map.X = index\n return '(-?\\\\d+)'\n case 'x':\n map.x = index\n return '(-?\\\\d{4,})'\n\n default:\n index--\n if (match[ 0 ] === '[') {\n match = match.substring(1, match.length - 1)\n }\n return match.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n }\n })\n\n const res = { map, regex: new RegExp('^' + regexText) }\n regexStore[ key ] = res\n\n return res\n}\n\nfunction getDateLocale (paramDateLocale, langProps) {\n return paramDateLocale !== void 0\n ? paramDateLocale\n : (\n langProps !== void 0\n ? langProps.date\n : defaultLang.date\n )\n}\n\nfunction formatTimezone (offset, delimeter = '') {\n const\n sign = offset > 0 ? '-' : '+',\n absOffset = Math.abs(offset),\n hours = Math.floor(absOffset / 60),\n minutes = absOffset % 60\n\n return sign + pad(hours) + delimeter + pad(minutes)\n}\n\nfunction applyYearMonthDayChange (date, mod, sign) {\n let\n year = date.getFullYear(),\n month = date.getMonth()\n\n const day = date.getDate()\n\n if (mod.year !== void 0) {\n year += sign * mod.year\n delete mod.year\n }\n\n if (mod.month !== void 0) {\n month += sign * mod.month\n delete mod.month\n }\n\n date.setDate(1)\n date.setMonth(2)\n\n date.setFullYear(year)\n date.setMonth(month)\n date.setDate(Math.min(day, daysInMonth(date)))\n\n if (mod.date !== void 0) {\n date.setDate(date.getDate() + sign * mod.date)\n delete mod.date\n }\n\n return date\n}\n\nfunction applyYearMonthDay (date, mod, middle) {\n const\n year = mod.year !== void 0 ? mod.year : date[ `get${ middle }FullYear` ](),\n month = mod.month !== void 0 ? mod.month - 1 : date[ `get${ middle }Month` ](),\n maxDay = (new Date(year, month + 1, 0)).getDate(),\n day = Math.min(maxDay, mod.date !== void 0 ? mod.date : date[ `get${ middle }Date` ]())\n\n date[ `set${ middle }Date` ](1)\n date[ `set${ middle }Month` ](2)\n\n date[ `set${ middle }FullYear` ](year)\n date[ `set${ middle }Month` ](month)\n date[ `set${ middle }Date` ](day)\n\n delete mod.year\n delete mod.month\n delete mod.date\n\n return date\n}\n\nfunction getChange (date, rawMod, sign) {\n const\n mod = normalizeMod(rawMod),\n d = new Date(date),\n t = mod.year !== void 0 || mod.month !== void 0 || mod.date !== void 0\n ? applyYearMonthDayChange(d, mod, sign) // removes year/month/day\n : d\n\n for (const key in mod) {\n const op = capitalize(key)\n t[ `set${ op }` ](t[ `get${ op }` ]() + sign * mod[ key ])\n }\n\n return t\n}\n\nfunction normalizeMod (mod) {\n const acc = { ...mod }\n\n if (mod.years !== void 0) {\n acc.year = mod.years\n delete acc.years\n }\n\n if (mod.months !== void 0) {\n acc.month = mod.months\n delete acc.months\n }\n\n if (mod.days !== void 0) {\n acc.date = mod.days\n delete acc.days\n }\n if (mod.day !== void 0) {\n acc.date = mod.day\n delete acc.day\n }\n\n if (mod.hour !== void 0) {\n acc.hours = mod.hour\n delete acc.hour\n }\n\n if (mod.minute !== void 0) {\n acc.minutes = mod.minute\n delete acc.minute\n }\n\n if (mod.second !== void 0) {\n acc.seconds = mod.second\n delete acc.second\n }\n\n if (mod.millisecond !== void 0) {\n acc.milliseconds = mod.millisecond\n delete acc.millisecond\n }\n\n return acc\n}\n\nexport function adjustDate (date, rawMod, utc) {\n const\n mod = normalizeMod(rawMod),\n middle = utc === true ? 'UTC' : '',\n d = new Date(date),\n t = mod.year !== void 0 || mod.month !== void 0 || mod.date !== void 0\n ? applyYearMonthDay(d, mod, middle) // removes year/month/day\n : d\n\n for (const key in mod) {\n const op = key.charAt(0).toUpperCase() + key.slice(1)\n t[ `set${ middle }${ op }` ](mod[ key ])\n }\n\n return t\n}\n\nexport function extractDate (str, mask, dateLocale) {\n const d = __splitDate(str, mask, dateLocale)\n\n const date = new Date(\n d.year,\n d.month === null ? null : d.month - 1,\n d.day === null ? 1 : d.day,\n d.hour,\n d.minute,\n d.second,\n d.millisecond\n )\n\n const tzOffset = date.getTimezoneOffset()\n\n return d.timezoneOffset === null || d.timezoneOffset === tzOffset\n ? date\n : getChange(date, { minutes: d.timezoneOffset - tzOffset }, 1)\n}\n\nexport function __splitDate (str, mask, dateLocale, calendar, defaultModel) {\n const date = {\n year: null,\n month: null,\n day: null,\n hour: null,\n minute: null,\n second: null,\n millisecond: null,\n timezoneOffset: null,\n dateHash: null,\n timeHash: null\n }\n\n defaultModel !== void 0 && Object.assign(date, defaultModel)\n\n if (\n str === void 0\n || str === null\n || str === ''\n || typeof str !== 'string'\n ) {\n return date\n }\n\n if (mask === void 0) {\n mask = defaultMask\n }\n\n const\n langOpts = getDateLocale(dateLocale, Lang.props),\n months = langOpts.months,\n monthsShort = langOpts.monthsShort\n\n const { regex, map } = getRegexData(mask, langOpts)\n\n const match = str.match(regex)\n\n if (match === null) {\n return date\n }\n\n let tzString = ''\n\n if (map.X !== void 0 || map.x !== void 0) {\n const stamp = parseInt(match[ map.X !== void 0 ? map.X : map.x ], 10)\n\n if (isNaN(stamp) === true || stamp < 0) {\n return date\n }\n\n const d = new Date(stamp * (map.X !== void 0 ? 1000 : 1))\n\n date.year = d.getFullYear()\n date.month = d.getMonth() + 1\n date.day = d.getDate()\n date.hour = d.getHours()\n date.minute = d.getMinutes()\n date.second = d.getSeconds()\n date.millisecond = d.getMilliseconds()\n }\n else {\n if (map.YYYY !== void 0) {\n date.year = parseInt(match[ map.YYYY ], 10)\n }\n else if (map.YY !== void 0) {\n const y = parseInt(match[ map.YY ], 10)\n date.year = y < 0 ? y : 2000 + y\n }\n\n if (map.M !== void 0) {\n date.month = parseInt(match[ map.M ], 10)\n if (date.month < 1 || date.month > 12) {\n return date\n }\n }\n else if (map.MMM !== void 0) {\n date.month = monthsShort.indexOf(match[ map.MMM ]) + 1\n }\n else if (map.MMMM !== void 0) {\n date.month = months.indexOf(match[ map.MMMM ]) + 1\n }\n\n if (map.D !== void 0) {\n date.day = parseInt(match[ map.D ], 10)\n\n if (date.year === null || date.month === null || date.day < 1) {\n return date\n }\n\n const maxDay = calendar !== 'persian'\n ? (new Date(date.year, date.month, 0)).getDate()\n : jalaaliMonthLength(date.year, date.month)\n\n if (date.day > maxDay) {\n return date\n }\n }\n\n if (map.H !== void 0) {\n date.hour = parseInt(match[ map.H ], 10) % 24\n }\n else if (map.h !== void 0) {\n date.hour = parseInt(match[ map.h ], 10) % 12\n if (\n (map.A && match[ map.A ] === 'PM')\n || (map.a && match[ map.a ] === 'pm')\n || (map.aa && match[ map.aa ] === 'p.m.')\n ) {\n date.hour += 12\n }\n date.hour = date.hour % 24\n }\n\n if (map.m !== void 0) {\n date.minute = parseInt(match[ map.m ], 10) % 60\n }\n\n if (map.s !== void 0) {\n date.second = parseInt(match[ map.s ], 10) % 60\n }\n\n if (map.S !== void 0) {\n date.millisecond = parseInt(match[ map.S ], 10) * 10 ** (3 - match[ map.S ].length)\n }\n\n if (map.Z !== void 0 || map.ZZ !== void 0) {\n tzString = (map.Z !== void 0 ? match[ map.Z ].replace(':', '') : match[ map.ZZ ])\n date.timezoneOffset = (tzString[ 0 ] === '+' ? -1 : 1) * (60 * tzString.slice(1, 3) + 1 * tzString.slice(3, 5))\n }\n }\n\n date.dateHash = pad(date.year, 6) + '/' + pad(date.month) + '/' + pad(date.day)\n date.timeHash = pad(date.hour) + ':' + pad(date.minute) + ':' + pad(date.second) + tzString\n\n return date\n}\n\nexport function isValid (date) {\n return typeof date === 'number'\n ? true\n : isNaN(Date.parse(date)) === false\n}\n\nexport function buildDate (mod, utc) {\n return adjustDate(new Date(), mod, utc)\n}\n\nexport function getDayOfWeek (date) {\n const dow = new Date(date).getDay()\n return dow === 0 ? 7 : dow\n}\n\nexport function getWeekOfYear (date) {\n // Remove time components of date\n const thursday = new Date(date.getFullYear(), date.getMonth(), date.getDate())\n\n // Change date to Thursday same week\n thursday.setDate(thursday.getDate() - ((thursday.getDay() + 6) % 7) + 3)\n\n // Take January 4th as it is always in week 1 (see ISO 8601)\n const firstThursday = new Date(thursday.getFullYear(), 0, 4)\n\n // Change date to Thursday same week\n firstThursday.setDate(firstThursday.getDate() - ((firstThursday.getDay() + 6) % 7) + 3)\n\n // Check if daylight-saving-time-switch occurred and correct for it\n const ds = thursday.getTimezoneOffset() - firstThursday.getTimezoneOffset()\n thursday.setHours(thursday.getHours() - ds)\n\n // Number of weeks between target Thursday and first Thursday\n const weekDiff = (thursday - firstThursday) / (MILLISECONDS_IN_DAY * 7)\n return 1 + Math.floor(weekDiff)\n}\n\nfunction getDayIdentifier (date) {\n return date.getFullYear() * 10000 + date.getMonth() * 100 + date.getDate()\n}\n\nfunction getDateIdentifier (date, onlyDate /* = false */) {\n const d = new Date(date)\n return onlyDate === true ? getDayIdentifier(d) : d.getTime()\n}\n\nexport function isBetweenDates (date, from, to, opts = {}) {\n const\n d1 = getDateIdentifier(from, opts.onlyDate),\n d2 = getDateIdentifier(to, opts.onlyDate),\n cur = getDateIdentifier(date, opts.onlyDate)\n\n return (cur > d1 || (opts.inclusiveFrom === true && cur === d1))\n && (cur < d2 || (opts.inclusiveTo === true && cur === d2))\n}\n\nexport function addToDate (date, mod) {\n return getChange(date, mod, 1)\n}\nexport function subtractFromDate (date, mod) {\n return getChange(date, mod, -1)\n}\n\nexport function startOfDate (date, unit, utc) {\n const\n t = new Date(date),\n prefix = `set${ utc === true ? 'UTC' : '' }`\n\n switch (unit) {\n case 'year':\n case 'years':\n t[ `${ prefix }Month` ](0)\n case 'month':\n case 'months':\n t[ `${ prefix }Date` ](1)\n case 'day':\n case 'days':\n case 'date':\n t[ `${ prefix }Hours` ](0)\n case 'hour':\n case 'hours':\n t[ `${ prefix }Minutes` ](0)\n case 'minute':\n case 'minutes':\n t[ `${ prefix }Seconds` ](0)\n case 'second':\n case 'seconds':\n t[ `${ prefix }Milliseconds` ](0)\n }\n return t\n}\n\nexport function endOfDate (date, unit, utc) {\n const\n t = new Date(date),\n prefix = `set${ utc === true ? 'UTC' : '' }`\n\n switch (unit) {\n case 'year':\n case 'years':\n t[ `${ prefix }Month` ](11)\n case 'month':\n case 'months':\n t[ `${ prefix }Date` ](daysInMonth(t))\n case 'day':\n case 'days':\n case 'date':\n t[ `${ prefix }Hours` ](23)\n case 'hour':\n case 'hours':\n t[ `${ prefix }Minutes` ](59)\n case 'minute':\n case 'minutes':\n t[ `${ prefix }Seconds` ](59)\n case 'second':\n case 'seconds':\n t[ `${ prefix }Milliseconds` ](999)\n }\n return t\n}\n\nexport function getMaxDate (date /* , ...args */) {\n let t = new Date(date)\n Array.prototype.slice.call(arguments, 1).forEach(d => {\n t = Math.max(t, new Date(d))\n })\n return t\n}\n\nexport function getMinDate (date /*, ...args */) {\n let t = new Date(date)\n Array.prototype.slice.call(arguments, 1).forEach(d => {\n t = Math.min(t, new Date(d))\n })\n return t\n}\n\nfunction getDiff (t, sub, interval) {\n return (\n (t.getTime() - t.getTimezoneOffset() * MILLISECONDS_IN_MINUTE)\n - (sub.getTime() - sub.getTimezoneOffset() * MILLISECONDS_IN_MINUTE)\n ) / interval\n}\n\nexport function getDateDiff (date, subtract, unit = 'days') {\n const\n t = new Date(date),\n sub = new Date(subtract)\n\n switch (unit) {\n case 'years':\n case 'year':\n return (t.getFullYear() - sub.getFullYear())\n\n case 'months':\n case 'month':\n return (t.getFullYear() - sub.getFullYear()) * 12 + t.getMonth() - sub.getMonth()\n\n case 'days':\n case 'day':\n case 'date':\n return getDiff(startOfDate(t, 'day'), startOfDate(sub, 'day'), MILLISECONDS_IN_DAY)\n\n case 'hours':\n case 'hour':\n return getDiff(startOfDate(t, 'hour'), startOfDate(sub, 'hour'), MILLISECONDS_IN_HOUR)\n\n case 'minutes':\n case 'minute':\n return getDiff(startOfDate(t, 'minute'), startOfDate(sub, 'minute'), MILLISECONDS_IN_MINUTE)\n\n case 'seconds':\n case 'second':\n return getDiff(startOfDate(t, 'second'), startOfDate(sub, 'second'), 1000)\n }\n}\n\nexport function getDayOfYear (date) {\n return getDateDiff(date, startOfDate(date, 'year'), 'days') + 1\n}\n\nexport function inferDateFormat (date) {\n return isDate(date) === true\n ? 'date'\n : (typeof date === 'number' ? 'number' : 'string')\n}\n\nexport function getDateBetween (date, min, max) {\n const t = new Date(date)\n\n if (min) {\n const low = new Date(min)\n if (t < low) {\n return low\n }\n }\n\n if (max) {\n const high = new Date(max)\n if (t > high) {\n return high\n }\n }\n\n return t\n}\n\nexport function isSameDate (date, date2, unit) {\n const\n t = new Date(date),\n d = new Date(date2)\n\n if (unit === void 0) {\n return t.getTime() === d.getTime()\n }\n\n switch (unit) {\n case 'second':\n case 'seconds':\n if (t.getSeconds() !== d.getSeconds()) {\n return false\n }\n case 'minute': // intentional fall-through\n case 'minutes':\n if (t.getMinutes() !== d.getMinutes()) {\n return false\n }\n case 'hour': // intentional fall-through\n case 'hours':\n if (t.getHours() !== d.getHours()) {\n return false\n }\n case 'day': // intentional fall-through\n case 'days':\n case 'date':\n if (t.getDate() !== d.getDate()) {\n return false\n }\n case 'month': // intentional fall-through\n case 'months':\n if (t.getMonth() !== d.getMonth()) {\n return false\n }\n case 'year': // intentional fall-through\n case 'years':\n if (t.getFullYear() !== d.getFullYear()) {\n return false\n }\n break\n default:\n throw new Error(`date isSameDate unknown unit ${ unit }`)\n }\n\n return true\n}\n\nexport function daysInMonth (date) {\n return (new Date(date.getFullYear(), date.getMonth() + 1, 0)).getDate()\n}\n\nfunction getOrdinal (n) {\n if (n >= 11 && n <= 13) {\n return `${ n }th`\n }\n switch (n % 10) {\n case 1: return `${ n }st`\n case 2: return `${ n }nd`\n case 3: return `${ n }rd`\n }\n return `${ n }th`\n}\n\nconst formatter = {\n // Year: 00, 01, ..., 99\n YY (date, dateLocale, forcedYear) {\n // workaround for < 1900 with new Date()\n const y = this.YYYY(date, dateLocale, forcedYear) % 100\n return y >= 0\n ? pad(y)\n : '-' + pad(Math.abs(y))\n },\n\n // Year: 1900, 1901, ..., 2099\n YYYY (date, _dateLocale, forcedYear) {\n // workaround for < 1900 with new Date()\n return forcedYear !== void 0 && forcedYear !== null\n ? forcedYear\n : date.getFullYear()\n },\n\n // Month: 1, 2, ..., 12\n M (date) {\n return date.getMonth() + 1\n },\n\n // Month: 1st, 2nd, ..., 12th\n Mo (date) {\n return getOrdinal(date.getMonth() + 1)\n },\n\n // Month: 01, 02, ..., 12\n MM (date) {\n return pad(date.getMonth() + 1)\n },\n\n // Month Short Name: Jan, Feb, ...\n MMM (date, dateLocale) {\n return dateLocale.monthsShort[ date.getMonth() ]\n },\n\n // Month Name: January, February, ...\n MMMM (date, dateLocale) {\n return dateLocale.months[ date.getMonth() ]\n },\n\n // Quarter: 1, 2, 3, 4\n Q (date) {\n return Math.ceil((date.getMonth() + 1) / 3)\n },\n\n // Quarter: 1st, 2nd, 3rd, 4th\n Qo (date) {\n return getOrdinal(this.Q(date))\n },\n\n // Day of month: 1, 2, ..., 31\n D (date) {\n return date.getDate()\n },\n\n // Day of month: 1st, 2nd, ..., 31st\n Do (date) {\n return getOrdinal(date.getDate())\n },\n\n // Day of month: 01, 02, ..., 31\n DD (date) {\n return pad(date.getDate())\n },\n\n // Day of year: 1, 2, ..., 366\n DDD (date) {\n return getDayOfYear(date)\n },\n\n // Day of year: 1st, 2nd, ..., 366th\n DDDo (date) {\n return getOrdinal(getDayOfYear(date))\n },\n\n // Day of year: 001, 002, ..., 366\n DDDD (date) {\n return pad(getDayOfYear(date), 3)\n },\n\n // Day of week: 0, 1, ..., 6\n d (date) {\n return date.getDay()\n },\n\n // Day of week: 0th, 1st, ..., 6th\n do (date) {\n return getOrdinal(date.getDay())\n },\n\n // Day of week: Su, Mo, ...\n dd (date, dateLocale) {\n return (dateLocale.days[ date.getDay() ]).slice(0, 2)\n },\n\n // Day of week: Sun, Mon, ...\n ddd (date, dateLocale) {\n return dateLocale.daysShort[ date.getDay() ]\n },\n\n // Day of week: Sunday, Monday, ...\n dddd (date, dateLocale) {\n return dateLocale.days[ date.getDay() ]\n },\n\n // Day of ISO week: 1, 2, ..., 7\n E (date) {\n return date.getDay() || 7\n },\n\n // Week of Year: 1 2 ... 52 53\n w (date) {\n return getWeekOfYear(date)\n },\n\n // Week of Year: 1st 2nd ... 52nd 53rd\n wo (date) {\n return getOrdinal(getWeekOfYear(date))\n },\n\n // Week of Year: 01 02 ... 52 53\n ww (date) {\n return pad(getWeekOfYear(date))\n },\n\n // Hour: 0, 1, ... 23\n H (date) {\n return date.getHours()\n },\n\n // Hour: 00, 01, ..., 23\n HH (date) {\n return pad(date.getHours())\n },\n\n // Hour: 1, 2, ..., 12\n h (date) {\n const hours = date.getHours()\n return hours === 0\n ? 12\n : (hours > 12 ? hours % 12 : hours)\n },\n\n // Hour: 01, 02, ..., 12\n hh (date) {\n return pad(this.h(date))\n },\n\n // Minute: 0, 1, ..., 59\n m (date) {\n return date.getMinutes()\n },\n\n // Minute: 00, 01, ..., 59\n mm (date) {\n return pad(date.getMinutes())\n },\n\n // Second: 0, 1, ..., 59\n s (date) {\n return date.getSeconds()\n },\n\n // Second: 00, 01, ..., 59\n ss (date) {\n return pad(date.getSeconds())\n },\n\n // 1/10 of second: 0, 1, ..., 9\n S (date) {\n return Math.floor(date.getMilliseconds() / 100)\n },\n\n // 1/100 of second: 00, 01, ..., 99\n SS (date) {\n return pad(Math.floor(date.getMilliseconds() / 10))\n },\n\n // Millisecond: 000, 001, ..., 999\n SSS (date) {\n return pad(date.getMilliseconds(), 3)\n },\n\n // Meridiem: AM, PM\n A (date) {\n return date.getHours() < 12 ? 'AM' : 'PM'\n },\n\n // Meridiem: am, pm\n a (date) {\n return date.getHours() < 12 ? 'am' : 'pm'\n },\n\n // Meridiem: a.m., p.m.\n aa (date) {\n return date.getHours() < 12 ? 'a.m.' : 'p.m.'\n },\n\n // Timezone: -01:00, +00:00, ... +12:00\n Z (date, _dateLocale, _forcedYear, forcedTimezoneOffset) {\n const tzOffset = forcedTimezoneOffset === void 0 || forcedTimezoneOffset === null\n ? date.getTimezoneOffset()\n : forcedTimezoneOffset\n\n return formatTimezone(tzOffset, ':')\n },\n\n // Timezone: -0100, +0000, ... +1200\n ZZ (date, _dateLocale, _forcedYear, forcedTimezoneOffset) {\n const tzOffset = forcedTimezoneOffset === void 0 || forcedTimezoneOffset === null\n ? date.getTimezoneOffset()\n : forcedTimezoneOffset\n\n return formatTimezone(tzOffset)\n },\n\n // Seconds timestamp: 512969520\n X (date) {\n return Math.floor(date.getTime() / 1000)\n },\n\n // Milliseconds timestamp: 512969520900\n x (date) {\n return date.getTime()\n }\n}\n\nexport function formatDate (val, mask, dateLocale, __forcedYear, __forcedTimezoneOffset) {\n if (\n (val !== 0 && !val)\n || val === Infinity\n || val === -Infinity\n ) {\n return\n }\n\n const date = new Date(val)\n\n if (isNaN(date)) {\n return\n }\n\n if (mask === void 0) {\n mask = defaultMask\n }\n\n const locale = getDateLocale(dateLocale, Lang.props)\n\n return mask.replace(\n token,\n (match, text) => (\n match in formatter\n ? formatter[ match ](date, locale, __forcedYear, __forcedTimezoneOffset)\n : (text === void 0 ? match : text.split('\\\\]').join(']'))\n )\n )\n}\n\nexport function clone (date) {\n return isDate(date) === true\n ? new Date(date.getTime())\n : date\n}\n\nexport default {\n isValid,\n extractDate,\n buildDate,\n getDayOfWeek,\n getWeekOfYear,\n isBetweenDates,\n addToDate,\n subtractFromDate,\n adjustDate,\n startOfDate,\n endOfDate,\n getMaxDate,\n getMinDate,\n getDateDiff,\n getDayOfYear,\n inferDateFormat,\n getDateBetween,\n isSameDate,\n daysInMonth,\n formatDate,\n clone\n}\n","import { h, ref, computed, watch, Transition, nextTick, getCurrentInstance } from 'vue'\n\nimport QBtn from '../btn/QBtn.js'\n\nimport useDark, { useDarkProps } from '../../composables/private.use-dark/use-dark.js'\nimport useRenderCache from '../../composables/use-render-cache/use-render-cache.js'\nimport { useFormProps, useFormAttrs, useFormInject } from '../../composables/use-form/private.use-form.js'\nimport useDatetime, { useDatetimeProps, useDatetimeEmits, getDayHash } from './use-datetime.js'\n\nimport { createComponent } from '../../utils/private.create/create.js'\nimport { hSlot } from '../../utils/private.render/render.js'\nimport { formatDate, __splitDate, getDateDiff } from '../../utils/date/date.js'\nimport { pad } from '../../utils/format/format.js'\nimport { jalaaliMonthLength, toGregorian } from '../../utils/date/private.persian.js'\nimport { isObject } from '../../utils/is/is.js'\n\nconst yearsInterval = 20\nconst views = [ 'Calendar', 'Years', 'Months' ]\nconst viewIsValid = v => views.includes(v)\nconst yearMonthValidator = v => /^-?[\\d]+\\/[0-1]\\d$/.test(v)\nconst lineStr = ' \\u2014 '\n\nfunction getMonthHash (date) {\n return date.year + '/' + pad(date.month)\n}\n\nexport default createComponent({\n name: 'QDate',\n\n props: {\n ...useDatetimeProps,\n ...useFormProps,\n ...useDarkProps,\n\n modelValue: {\n required: true,\n validator: val => (typeof val === 'string' || Array.isArray(val) === true || Object(val) === val || val === null)\n },\n\n multiple: Boolean,\n range: Boolean,\n\n title: String,\n subtitle: String,\n\n mask: {\n ...useDatetimeProps.mask,\n // this mask is forced\n // when using persian calendar\n default: 'YYYY/MM/DD'\n },\n\n defaultYearMonth: {\n type: String,\n validator: yearMonthValidator\n },\n\n yearsInMonthView: Boolean,\n\n events: [ Array, Function ],\n eventColor: [ String, Function ],\n\n emitImmediately: Boolean,\n\n options: [ Array, Function ],\n\n navigationMinYearMonth: {\n type: String,\n validator: yearMonthValidator\n },\n\n navigationMaxYearMonth: {\n type: String,\n validator: yearMonthValidator\n },\n\n noUnset: Boolean,\n\n firstDayOfWeek: [ String, Number ],\n todayBtn: Boolean,\n minimal: Boolean,\n defaultView: {\n type: String,\n default: 'Calendar',\n validator: viewIsValid\n }\n },\n\n emits: [\n ...useDatetimeEmits,\n 'rangeStart', 'rangeEnd', 'navigation'\n ],\n\n setup (props, { slots, emit }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const isDark = useDark(props, $q)\n const { getCache } = useRenderCache()\n const { tabindex, headerClass, getLocale, getCurrentDate } = useDatetime(props, $q)\n\n let lastEmitValue\n\n const formAttrs = useFormAttrs(props)\n const injectFormInput = useFormInject(formAttrs)\n\n const blurTargetRef = ref(null)\n const innerMask = ref(getMask())\n const innerLocale = ref(getLocale())\n\n const mask = computed(() => getMask())\n const locale = computed(() => getLocale())\n\n const today = computed(() => getCurrentDate())\n\n // model of current calendar view:\n const viewModel = ref(getViewModel(innerMask.value, innerLocale.value))\n\n const view = ref(props.defaultView)\n\n const direction = computed(() => ($q.lang.rtl === true ? 'right' : 'left'))\n const monthDirection = ref(direction.value)\n const yearDirection = ref(direction.value)\n\n const year = viewModel.value.year\n const startYear = ref(year - (year % yearsInterval) - (year < 0 ? yearsInterval : 0))\n const editRange = ref(null)\n\n const classes = computed(() => {\n const type = props.landscape === true ? 'landscape' : 'portrait'\n return `q-date q-date--${ type } q-date--${ type }-${ props.minimal === true ? 'minimal' : 'standard' }`\n + (isDark.value === true ? ' q-date--dark q-dark' : '')\n + (props.bordered === true ? ' q-date--bordered' : '')\n + (props.square === true ? ' q-date--square no-border-radius' : '')\n + (props.flat === true ? ' q-date--flat no-shadow' : '')\n + (props.disable === true ? ' disabled' : (props.readonly === true ? ' q-date--readonly' : ''))\n })\n\n const computedColor = computed(() => {\n return props.color || 'primary'\n })\n\n const computedTextColor = computed(() => {\n return props.textColor || 'white'\n })\n\n const isImmediate = computed(() =>\n props.emitImmediately === true\n && props.multiple !== true\n && props.range !== true\n )\n\n const normalizedModel = computed(() => (\n Array.isArray(props.modelValue) === true\n ? props.modelValue\n : (props.modelValue !== null && props.modelValue !== void 0 ? [ props.modelValue ] : [])\n ))\n\n const daysModel = computed(() =>\n normalizedModel.value\n .filter(date => typeof date === 'string')\n .map(date => decodeString(date, innerMask.value, innerLocale.value))\n .filter(date =>\n date.dateHash !== null\n && date.day !== null\n && date.month !== null\n && date.year !== null\n )\n )\n\n const rangeModel = computed(() => {\n const fn = date => decodeString(date, innerMask.value, innerLocale.value)\n return normalizedModel.value\n .filter(date => isObject(date) === true && date.from !== void 0 && date.to !== void 0)\n .map(range => ({ from: fn(range.from), to: fn(range.to) }))\n .filter(range => range.from.dateHash !== null && range.to.dateHash !== null && range.from.dateHash < range.to.dateHash)\n })\n\n const getNativeDateFn = computed(() => (\n props.calendar !== 'persian'\n ? model => new Date(model.year, model.month - 1, model.day)\n : model => {\n const gDate = toGregorian(model.year, model.month, model.day)\n return new Date(gDate.gy, gDate.gm - 1, gDate.gd)\n }\n ))\n\n const encodeObjectFn = computed(() => (\n props.calendar === 'persian'\n ? getDayHash\n : (date, mask, locale) => formatDate(\n new Date(\n date.year,\n date.month - 1,\n date.day,\n date.hour,\n date.minute,\n date.second,\n date.millisecond\n ),\n mask === void 0 ? innerMask.value : mask,\n locale === void 0 ? innerLocale.value : locale,\n date.year,\n date.timezoneOffset\n )\n ))\n\n const daysInModel = computed(() =>\n daysModel.value.length + rangeModel.value.reduce(\n (acc, range) => acc + 1 + getDateDiff(\n getNativeDateFn.value(range.to),\n getNativeDateFn.value(range.from)\n ),\n 0\n )\n )\n\n const headerTitle = computed(() => {\n if (props.title !== void 0 && props.title !== null && props.title.length !== 0) {\n return props.title\n }\n\n if (editRange.value !== null) {\n const model = editRange.value.init\n const date = getNativeDateFn.value(model)\n\n return innerLocale.value.daysShort[ date.getDay() ] + ', '\n + innerLocale.value.monthsShort[ model.month - 1 ] + ' '\n + model.day + lineStr + '?'\n }\n\n if (daysInModel.value === 0) {\n return lineStr\n }\n\n if (daysInModel.value > 1) {\n return `${ daysInModel.value } ${ innerLocale.value.pluralDay }`\n }\n\n const model = daysModel.value[ 0 ]\n const date = getNativeDateFn.value(model)\n\n if (isNaN(date.valueOf()) === true) {\n return lineStr\n }\n\n if (innerLocale.value.headerTitle !== void 0) {\n return innerLocale.value.headerTitle(date, model)\n }\n\n return innerLocale.value.daysShort[ date.getDay() ] + ', '\n + innerLocale.value.monthsShort[ model.month - 1 ] + ' '\n + model.day\n })\n\n const minSelectedModel = computed(() => {\n const model = daysModel.value.concat(rangeModel.value.map(range => range.from))\n .sort((a, b) => a.year - b.year || a.month - b.month)\n\n return model[ 0 ]\n })\n\n const maxSelectedModel = computed(() => {\n const model = daysModel.value.concat(rangeModel.value.map(range => range.to))\n .sort((a, b) => b.year - a.year || b.month - a.month)\n\n return model[ 0 ]\n })\n\n const headerSubtitle = computed(() => {\n if (props.subtitle !== void 0 && props.subtitle !== null && props.subtitle.length !== 0) {\n return props.subtitle\n }\n\n if (daysInModel.value === 0) {\n return lineStr\n }\n\n if (daysInModel.value > 1) {\n const from = minSelectedModel.value\n const to = maxSelectedModel.value\n const month = innerLocale.value.monthsShort\n\n return month[ from.month - 1 ] + (\n from.year !== to.year\n ? ' ' + from.year + lineStr + month[ to.month - 1 ] + ' '\n : (\n from.month !== to.month\n ? lineStr + month[ to.month - 1 ]\n : ''\n )\n ) + ' ' + to.year\n }\n\n return daysModel.value[ 0 ].year\n })\n\n const dateArrow = computed(() => {\n const val = [ $q.iconSet.datetime.arrowLeft, $q.iconSet.datetime.arrowRight ]\n return $q.lang.rtl === true ? val.reverse() : val\n })\n\n const computedFirstDayOfWeek = computed(() => (\n props.firstDayOfWeek !== void 0\n ? Number(props.firstDayOfWeek)\n : innerLocale.value.firstDayOfWeek\n ))\n\n const daysOfWeek = computed(() => {\n const\n days = innerLocale.value.daysShort,\n first = computedFirstDayOfWeek.value\n\n return first > 0\n ? days.slice(first, 7).concat(days.slice(0, first))\n : days\n })\n\n const daysInMonth = computed(() => {\n const date = viewModel.value\n return props.calendar !== 'persian'\n ? (new Date(date.year, date.month, 0)).getDate()\n : jalaaliMonthLength(date.year, date.month)\n })\n\n const evtColor = computed(() => (\n typeof props.eventColor === 'function'\n ? props.eventColor\n : () => props.eventColor\n ))\n\n const minNav = computed(() => {\n if (props.navigationMinYearMonth === void 0) {\n return null\n }\n\n const data = props.navigationMinYearMonth.split('/')\n return { year: parseInt(data[ 0 ], 10), month: parseInt(data[ 1 ], 10) }\n })\n\n const maxNav = computed(() => {\n if (props.navigationMaxYearMonth === void 0) {\n return null\n }\n\n const data = props.navigationMaxYearMonth.split('/')\n return { year: parseInt(data[ 0 ], 10), month: parseInt(data[ 1 ], 10) }\n })\n\n const navBoundaries = computed(() => {\n const data = {\n month: { prev: true, next: true },\n year: { prev: true, next: true }\n }\n\n if (minNav.value !== null && minNav.value.year >= viewModel.value.year) {\n data.year.prev = false\n if (minNav.value.year === viewModel.value.year && minNav.value.month >= viewModel.value.month) {\n data.month.prev = false\n }\n }\n\n if (maxNav.value !== null && maxNav.value.year <= viewModel.value.year) {\n data.year.next = false\n if (maxNav.value.year === viewModel.value.year && maxNav.value.month <= viewModel.value.month) {\n data.month.next = false\n }\n }\n\n return data\n })\n\n const daysMap = computed(() => {\n const map = {}\n\n daysModel.value.forEach(entry => {\n const hash = getMonthHash(entry)\n\n if (map[ hash ] === void 0) {\n map[ hash ] = []\n }\n\n map[ hash ].push(entry.day)\n })\n\n return map\n })\n\n const rangeMap = computed(() => {\n const map = {}\n\n rangeModel.value.forEach(entry => {\n const hashFrom = getMonthHash(entry.from)\n const hashTo = getMonthHash(entry.to)\n\n if (map[ hashFrom ] === void 0) {\n map[ hashFrom ] = []\n }\n\n map[ hashFrom ].push({\n from: entry.from.day,\n to: hashFrom === hashTo ? entry.to.day : void 0,\n range: entry\n })\n\n if (hashFrom < hashTo) {\n let hash\n const { year, month } = entry.from\n const cur = month < 12\n ? { year, month: month + 1 }\n : { year: year + 1, month: 1 }\n\n while ((hash = getMonthHash(cur)) <= hashTo) {\n if (map[ hash ] === void 0) {\n map[ hash ] = []\n }\n\n map[ hash ].push({\n from: void 0,\n to: hash === hashTo ? entry.to.day : void 0,\n range: entry\n })\n\n cur.month++\n if (cur.month > 12) {\n cur.year++\n cur.month = 1\n }\n }\n }\n })\n\n return map\n })\n\n const rangeView = computed(() => {\n if (editRange.value === null) {\n return\n }\n\n const { init, initHash, final, finalHash } = editRange.value\n\n const [ from, to ] = initHash <= finalHash\n ? [ init, final ]\n : [ final, init ]\n\n const fromHash = getMonthHash(from)\n const toHash = getMonthHash(to)\n\n if (fromHash !== viewMonthHash.value && toHash !== viewMonthHash.value) {\n return\n }\n\n const view = {}\n\n if (fromHash === viewMonthHash.value) {\n view.from = from.day\n view.includeFrom = true\n }\n else {\n view.from = 1\n }\n\n if (toHash === viewMonthHash.value) {\n view.to = to.day\n view.includeTo = true\n }\n else {\n view.to = daysInMonth.value\n }\n\n return view\n })\n\n const viewMonthHash = computed(() => getMonthHash(viewModel.value))\n\n const selectionDaysMap = computed(() => {\n const map = {}\n\n if (props.options === void 0) {\n for (let i = 1; i <= daysInMonth.value; i++) {\n map[ i ] = true\n }\n\n return map\n }\n\n const fn = typeof props.options === 'function'\n ? props.options\n : date => props.options.includes(date)\n\n for (let i = 1; i <= daysInMonth.value; i++) {\n const dayHash = viewMonthHash.value + '/' + pad(i)\n map[ i ] = fn(dayHash)\n }\n\n return map\n })\n\n const eventDaysMap = computed(() => {\n const map = {}\n\n if (props.events === void 0) {\n for (let i = 1; i <= daysInMonth.value; i++) {\n map[ i ] = false\n }\n }\n else {\n const fn = typeof props.events === 'function'\n ? props.events\n : date => props.events.includes(date)\n\n for (let i = 1; i <= daysInMonth.value; i++) {\n const dayHash = viewMonthHash.value + '/' + pad(i)\n map[ i ] = fn(dayHash) === true && evtColor.value(dayHash)\n }\n }\n\n return map\n })\n\n const viewDays = computed(() => {\n let date, endDay\n const { year, month } = viewModel.value\n\n if (props.calendar !== 'persian') {\n date = new Date(year, month - 1, 1)\n endDay = (new Date(year, month - 1, 0)).getDate()\n }\n else {\n const gDate = toGregorian(year, month, 1)\n date = new Date(gDate.gy, gDate.gm - 1, gDate.gd)\n let prevJM = month - 1\n let prevJY = year\n if (prevJM === 0) {\n prevJM = 12\n prevJY--\n }\n endDay = jalaaliMonthLength(prevJY, prevJM)\n }\n\n return {\n days: date.getDay() - computedFirstDayOfWeek.value - 1,\n endDay\n }\n })\n\n const days = computed(() => {\n const res = []\n const { days, endDay } = viewDays.value\n\n const len = days < 0 ? days + 7 : days\n if (len < 6) {\n for (let i = endDay - len; i <= endDay; i++) {\n res.push({ i, fill: true })\n }\n }\n\n const index = res.length\n\n for (let i = 1; i <= daysInMonth.value; i++) {\n const day = { i, event: eventDaysMap.value[ i ], classes: [] }\n\n if (selectionDaysMap.value[ i ] === true) {\n day.in = true\n day.flat = true\n }\n\n res.push(day)\n }\n\n // if current view has days in model\n if (daysMap.value[ viewMonthHash.value ] !== void 0) {\n daysMap.value[ viewMonthHash.value ].forEach(day => {\n const i = index + day - 1\n Object.assign(res[ i ], {\n selected: true,\n unelevated: true,\n flat: false,\n color: computedColor.value,\n textColor: computedTextColor.value\n })\n })\n }\n\n // if current view has ranges in model\n if (rangeMap.value[ viewMonthHash.value ] !== void 0) {\n rangeMap.value[ viewMonthHash.value ].forEach(entry => {\n if (entry.from !== void 0) {\n const from = index + entry.from - 1\n const to = index + (entry.to || daysInMonth.value) - 1\n\n for (let day = from; day <= to; day++) {\n Object.assign(res[ day ], {\n range: entry.range,\n unelevated: true,\n color: computedColor.value,\n textColor: computedTextColor.value\n })\n }\n\n Object.assign(res[ from ], {\n rangeFrom: true,\n flat: false\n })\n\n entry.to !== void 0 && Object.assign(res[ to ], {\n rangeTo: true,\n flat: false\n })\n }\n else if (entry.to !== void 0) {\n const to = index + entry.to - 1\n\n for (let day = index; day <= to; day++) {\n Object.assign(res[ day ], {\n range: entry.range,\n unelevated: true,\n color: computedColor.value,\n textColor: computedTextColor.value\n })\n }\n\n Object.assign(res[ to ], {\n flat: false,\n rangeTo: true\n })\n }\n else {\n const to = index + daysInMonth.value - 1\n for (let day = index; day <= to; day++) {\n Object.assign(res[ day ], {\n range: entry.range,\n unelevated: true,\n color: computedColor.value,\n textColor: computedTextColor.value\n })\n }\n }\n })\n }\n\n if (rangeView.value !== void 0) {\n const from = index + rangeView.value.from - 1\n const to = index + rangeView.value.to - 1\n\n for (let day = from; day <= to; day++) {\n res[ day ].color = computedColor.value\n res[ day ].editRange = true\n }\n\n if (rangeView.value.includeFrom === true) {\n res[ from ].editRangeFrom = true\n }\n if (rangeView.value.includeTo === true) {\n res[ to ].editRangeTo = true\n }\n }\n\n if (viewModel.value.year === today.value.year && viewModel.value.month === today.value.month) {\n res[ index + today.value.day - 1 ].today = true\n }\n\n const left = res.length % 7\n if (left > 0) {\n const afterDays = 7 - left\n for (let i = 1; i <= afterDays; i++) {\n res.push({ i, fill: true })\n }\n }\n\n res.forEach(day => {\n let cls = 'q-date__calendar-item '\n\n if (day.fill === true) {\n cls += 'q-date__calendar-item--fill'\n }\n else {\n cls += `q-date__calendar-item--${ day.in === true ? 'in' : 'out' }`\n\n if (day.range !== void 0) {\n cls += ` q-date__range${ day.rangeTo === true ? '-to' : (day.rangeFrom === true ? '-from' : '') }`\n }\n\n if (day.editRange === true) {\n cls += ` q-date__edit-range${ day.editRangeFrom === true ? '-from' : '' }${ day.editRangeTo === true ? '-to' : '' }`\n }\n\n if (day.range !== void 0 || day.editRange === true) {\n cls += ` text-${ day.color }`\n }\n }\n\n day.classes = cls\n })\n\n return res\n })\n\n const attributes = computed(() => (\n props.disable === true\n ? { 'aria-disabled': 'true' }\n : {}\n ))\n\n watch(() => props.modelValue, v => {\n if (lastEmitValue === v) {\n lastEmitValue = 0\n }\n else {\n const model = getViewModel(innerMask.value, innerLocale.value)\n updateViewModel(model.year, model.month, model)\n }\n })\n\n watch(view, () => {\n if (blurTargetRef.value !== null && proxy.$el.contains(document.activeElement) === true) {\n blurTargetRef.value.focus()\n }\n })\n\n watch(() => viewModel.value.year + '|' + viewModel.value.month, () => {\n emit('navigation', { year: viewModel.value.year, month: viewModel.value.month })\n })\n\n watch(mask, val => {\n updateValue(val, innerLocale.value, 'mask')\n innerMask.value = val\n })\n\n watch(locale, val => {\n updateValue(innerMask.value, val, 'locale')\n innerLocale.value = val\n })\n\n function setToday () {\n const { year, month, day } = today.value\n\n const date = {\n // contains more props than needed (hour, minute, second, millisecond)\n // but those aren't used in the processing of this \"date\" variable\n ...viewModel.value,\n\n // overwriting with today's date\n year,\n month,\n day\n }\n\n const monthMap = daysMap.value[ getMonthHash(date) ]\n\n if (monthMap === void 0 || monthMap.includes(date.day) === false) {\n addToModel(date)\n }\n\n setCalendarTo(date.year, date.month)\n }\n\n function setView (viewMode) {\n if (viewIsValid(viewMode) === true) {\n view.value = viewMode\n }\n }\n\n function offsetCalendar (type, descending) {\n if ([ 'month', 'year' ].includes(type)) {\n const fn = type === 'month' ? goToMonth : goToYear\n fn(descending === true ? -1 : 1)\n }\n }\n\n function setCalendarTo (year, month) {\n view.value = 'Calendar'\n updateViewModel(year, month)\n }\n\n function setEditingRange (from, to) {\n if (props.range === false || !from) {\n editRange.value = null\n return\n }\n\n const init = Object.assign({ ...viewModel.value }, from)\n const final = to !== void 0\n ? Object.assign({ ...viewModel.value }, to)\n : init\n\n editRange.value = {\n init,\n initHash: getDayHash(init),\n final,\n finalHash: getDayHash(final)\n }\n\n setCalendarTo(init.year, init.month)\n }\n\n function getMask () {\n return props.calendar === 'persian' ? 'YYYY/MM/DD' : props.mask\n }\n\n function decodeString (date, mask, locale) {\n return __splitDate(\n date,\n mask,\n locale,\n props.calendar,\n {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n }\n )\n }\n\n function getViewModel (mask, locale) {\n const model = Array.isArray(props.modelValue) === true\n ? props.modelValue\n : (props.modelValue ? [ props.modelValue ] : [])\n\n if (model.length === 0) {\n return getDefaultViewModel()\n }\n\n const target = model[ model.length - 1 ]\n const decoded = decodeString(\n target.from !== void 0 ? target.from : target,\n mask,\n locale\n )\n\n return decoded.dateHash === null\n ? getDefaultViewModel()\n : decoded\n }\n\n function getDefaultViewModel () {\n let year, month\n\n if (props.defaultYearMonth !== void 0) {\n const d = props.defaultYearMonth.split('/')\n year = parseInt(d[ 0 ], 10)\n month = parseInt(d[ 1 ], 10)\n }\n else {\n // may come from data() where computed\n // props are not yet available\n const d = today.value !== void 0\n ? today.value\n : getCurrentDate()\n\n year = d.year\n month = d.month\n }\n\n return {\n year,\n month,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n dateHash: year + '/' + pad(month) + '/01'\n }\n }\n\n function goToMonth (offset) {\n let year = viewModel.value.year\n let month = Number(viewModel.value.month) + offset\n\n if (month === 13) {\n month = 1\n year++\n }\n else if (month === 0) {\n month = 12\n year--\n }\n\n updateViewModel(year, month)\n isImmediate.value === true && emitImmediately('month')\n }\n\n function goToYear (offset) {\n const year = Number(viewModel.value.year) + offset\n updateViewModel(year, viewModel.value.month)\n isImmediate.value === true && emitImmediately('year')\n }\n\n function setYear (year) {\n updateViewModel(year, viewModel.value.month)\n view.value = props.defaultView === 'Years' ? 'Months' : 'Calendar'\n isImmediate.value === true && emitImmediately('year')\n }\n\n function setMonth (month) {\n updateViewModel(viewModel.value.year, month)\n view.value = 'Calendar'\n isImmediate.value === true && emitImmediately('month')\n }\n\n function toggleDate (date, monthHash) {\n const month = daysMap.value[ monthHash ]\n const fn = month !== void 0 && month.includes(date.day) === true\n ? removeFromModel\n : addToModel\n\n fn(date)\n }\n\n function getShortDate (date) {\n return { year: date.year, month: date.month, day: date.day }\n }\n\n function updateViewModel (year, month, time) {\n if (minNav.value !== null && year <= minNav.value.year) {\n if (month < minNav.value.month || year < minNav.value.year) {\n month = minNav.value.month\n }\n year = minNav.value.year\n }\n\n if (maxNav.value !== null && year >= maxNav.value.year) {\n if (month > maxNav.value.month || year > maxNav.value.year) {\n month = maxNav.value.month\n }\n year = maxNav.value.year\n }\n\n if (time !== void 0) {\n const { hour, minute, second, millisecond, timezoneOffset, timeHash } = time\n Object.assign(viewModel.value, { hour, minute, second, millisecond, timezoneOffset, timeHash })\n }\n\n const newHash = year + '/' + pad(month) + '/01'\n\n if (newHash !== viewModel.value.dateHash) {\n monthDirection.value = (viewModel.value.dateHash < newHash) === ($q.lang.rtl !== true) ? 'left' : 'right'\n if (year !== viewModel.value.year) {\n yearDirection.value = monthDirection.value\n }\n\n nextTick(() => {\n startYear.value = year - year % yearsInterval - (year < 0 ? yearsInterval : 0)\n Object.assign(viewModel.value, {\n year,\n month,\n day: 1,\n dateHash: newHash\n })\n })\n }\n }\n\n function emitValue (val, action, date) {\n const value = val !== null && val.length === 1 && props.multiple === false\n ? val[ 0 ]\n : val\n\n lastEmitValue = value\n\n const { reason, details } = getEmitParams(action, date)\n emit('update:modelValue', value, reason, details)\n }\n\n function emitImmediately (reason) {\n const date = daysModel.value[ 0 ] !== void 0 && daysModel.value[ 0 ].dateHash !== null\n ? { ...daysModel.value[ 0 ] }\n : { ...viewModel.value } // inherit day, hours, minutes, milliseconds...\n\n // nextTick required because of animation delay in viewModel\n nextTick(() => {\n date.year = viewModel.value.year\n date.month = viewModel.value.month\n\n const maxDay = props.calendar !== 'persian'\n ? (new Date(date.year, date.month, 0)).getDate()\n : jalaaliMonthLength(date.year, date.month)\n\n date.day = Math.min(Math.max(1, date.day), maxDay)\n\n const value = encodeEntry(date)\n lastEmitValue = value\n\n const { details } = getEmitParams('', date)\n emit('update:modelValue', value, reason, details)\n })\n }\n\n function getEmitParams (action, date) {\n return date.from !== void 0\n ? {\n reason: `${ action }-range`,\n details: {\n ...getShortDate(date.target),\n from: getShortDate(date.from),\n to: getShortDate(date.to)\n }\n }\n : {\n reason: `${ action }-day`,\n details: getShortDate(date)\n }\n }\n\n function encodeEntry (date, mask, locale) {\n return date.from !== void 0\n ? { from: encodeObjectFn.value(date.from, mask, locale), to: encodeObjectFn.value(date.to, mask, locale) }\n : encodeObjectFn.value(date, mask, locale)\n }\n\n function addToModel (date) {\n let value\n\n if (props.multiple === true) {\n if (date.from !== void 0) {\n // we also need to filter out intersections\n\n const fromHash = getDayHash(date.from)\n const toHash = getDayHash(date.to)\n\n const days = daysModel.value\n .filter(day => day.dateHash < fromHash || day.dateHash > toHash)\n\n const ranges = rangeModel.value\n .filter(({ from, to }) => to.dateHash < fromHash || from.dateHash > toHash)\n\n value = days.concat(ranges).concat(date).map(entry => encodeEntry(entry))\n }\n else {\n const model = normalizedModel.value.slice()\n model.push(encodeEntry(date))\n value = model\n }\n }\n else {\n value = encodeEntry(date)\n }\n\n emitValue(value, 'add', date)\n }\n\n function removeFromModel (date) {\n if (props.noUnset === true) {\n return\n }\n\n let model = null\n\n if (props.multiple === true && Array.isArray(props.modelValue) === true) {\n const val = encodeEntry(date)\n\n if (date.from !== void 0) {\n model = props.modelValue.filter(\n date => (\n date.from !== void 0\n ? (date.from !== val.from && date.to !== val.to)\n : true\n )\n )\n }\n else {\n model = props.modelValue.filter(date => date !== val)\n }\n\n if (model.length === 0) {\n model = null\n }\n }\n\n emitValue(model, 'remove', date)\n }\n\n function updateValue (mask, locale, reason) {\n const model = daysModel.value\n .concat(rangeModel.value)\n .map(entry => encodeEntry(entry, mask, locale))\n .filter(entry => {\n return entry.from !== void 0\n ? entry.from.dateHash !== null && entry.to.dateHash !== null\n : entry.dateHash !== null\n })\n\n emit('update:modelValue', (props.multiple === true ? model : model[ 0 ]) || null, reason)\n }\n\n function getHeader () {\n if (props.minimal === true) return\n\n return h('div', {\n class: 'q-date__header ' + headerClass.value\n }, [\n h('div', {\n class: 'relative-position'\n }, [\n h(Transition, {\n name: 'q-transition--fade'\n }, () => h('div', {\n key: 'h-yr-' + headerSubtitle.value,\n class: 'q-date__header-subtitle q-date__header-link '\n + (view.value === 'Years' ? 'q-date__header-link--active' : 'cursor-pointer'),\n tabindex: tabindex.value,\n ...getCache('vY', {\n onClick () { view.value = 'Years' },\n onKeyup (e) { e.keyCode === 13 && (view.value = 'Years') }\n })\n }, [ headerSubtitle.value ]))\n ]),\n\n h('div', {\n class: 'q-date__header-title relative-position flex no-wrap'\n }, [\n h('div', {\n class: 'relative-position col'\n }, [\n h(Transition, {\n name: 'q-transition--fade'\n }, () => h('div', {\n key: 'h-sub' + headerTitle.value,\n class: 'q-date__header-title-label q-date__header-link '\n + (view.value === 'Calendar' ? 'q-date__header-link--active' : 'cursor-pointer'),\n tabindex: tabindex.value,\n ...getCache('vC', {\n onClick () { view.value = 'Calendar' },\n onKeyup (e) { e.keyCode === 13 && (view.value = 'Calendar') }\n })\n }, [ headerTitle.value ]))\n ]),\n\n props.todayBtn === true ? h(QBtn, {\n class: 'q-date__header-today self-start',\n icon: $q.iconSet.datetime.today,\n flat: true,\n size: 'sm',\n round: true,\n tabindex: tabindex.value,\n onClick: setToday\n }) : null\n ])\n ])\n }\n\n function getNavigation ({ label, type, key, dir, goTo, boundaries, cls }) {\n return [\n h('div', {\n class: 'row items-center q-date__arrow'\n }, [\n h(QBtn, {\n round: true,\n dense: true,\n size: 'sm',\n flat: true,\n icon: dateArrow.value[ 0 ],\n tabindex: tabindex.value,\n disable: boundaries.prev === false,\n ...getCache('go-#' + type, { onClick () { goTo(-1) } })\n })\n ]),\n\n h('div', {\n class: 'relative-position overflow-hidden flex flex-center' + cls\n }, [\n h(Transition, {\n name: 'q-transition--jump-' + dir\n }, () => h('div', { key }, [\n h(QBtn, {\n flat: true,\n dense: true,\n noCaps: true,\n label,\n tabindex: tabindex.value,\n ...getCache('view#' + type, { onClick: () => { view.value = type } })\n })\n ]))\n ]),\n\n h('div', {\n class: 'row items-center q-date__arrow'\n }, [\n h(QBtn, {\n round: true,\n dense: true,\n size: 'sm',\n flat: true,\n icon: dateArrow.value[ 1 ],\n tabindex: tabindex.value,\n disable: boundaries.next === false,\n ...getCache('go+#' + type, { onClick () { goTo(1) } })\n })\n ])\n ]\n }\n\n const renderViews = {\n Calendar: () => ([\n h('div', {\n key: 'calendar-view',\n class: 'q-date__view q-date__calendar'\n }, [\n h('div', {\n class: 'q-date__navigation row items-center no-wrap'\n }, getNavigation({\n label: innerLocale.value.months[ viewModel.value.month - 1 ],\n type: 'Months',\n key: viewModel.value.month,\n dir: monthDirection.value,\n goTo: goToMonth,\n boundaries: navBoundaries.value.month,\n cls: ' col'\n }).concat(getNavigation({\n label: viewModel.value.year,\n type: 'Years',\n key: viewModel.value.year,\n dir: yearDirection.value,\n goTo: goToYear,\n boundaries: navBoundaries.value.year,\n cls: ''\n }))),\n\n h('div', {\n class: 'q-date__calendar-weekdays row items-center no-wrap'\n }, daysOfWeek.value.map(day => h('div', { class: 'q-date__calendar-item' }, [ h('div', day) ]))),\n\n h('div', {\n class: 'q-date__calendar-days-container relative-position overflow-hidden'\n }, [\n h(Transition, {\n name: 'q-transition--slide-' + monthDirection.value\n }, () => h('div', {\n key: viewMonthHash.value,\n class: 'q-date__calendar-days fit'\n }, days.value.map(day => h('div', { class: day.classes }, [\n day.in === true\n ? h(\n QBtn, {\n class: day.today === true ? 'q-date__today' : '',\n dense: true,\n flat: day.flat,\n unelevated: day.unelevated,\n color: day.color,\n textColor: day.textColor,\n label: day.i,\n tabindex: tabindex.value,\n ...getCache('day#' + day.i, {\n onClick: () => { onDayClick(day.i) },\n onMouseover: () => { onDayMouseover(day.i) }\n })\n },\n day.event !== false\n ? () => h('div', { class: 'q-date__event bg-' + day.event })\n : null\n )\n : h('div', '' + day.i)\n ]))))\n ])\n ])\n ]),\n\n Months () {\n const currentYear = viewModel.value.year === today.value.year\n const isDisabled = month => {\n return (\n (minNav.value !== null && viewModel.value.year === minNav.value.year && minNav.value.month > month)\n || (maxNav.value !== null && viewModel.value.year === maxNav.value.year && maxNav.value.month < month)\n )\n }\n\n const content = innerLocale.value.monthsShort.map((month, i) => {\n const active = viewModel.value.month === i + 1\n\n return h('div', {\n class: 'q-date__months-item flex flex-center'\n }, [\n h(QBtn, {\n class: currentYear === true && today.value.month === i + 1 ? 'q-date__today' : null,\n flat: active !== true,\n label: month,\n unelevated: active,\n color: active === true ? computedColor.value : null,\n textColor: active === true ? computedTextColor.value : null,\n tabindex: tabindex.value,\n disable: isDisabled(i + 1),\n ...getCache('month#' + i, { onClick: () => { setMonth(i + 1) } })\n })\n ])\n })\n\n props.yearsInMonthView === true && content.unshift(\n h('div', { class: 'row no-wrap full-width' }, [\n getNavigation({\n label: viewModel.value.year,\n type: 'Years',\n key: viewModel.value.year,\n dir: yearDirection.value,\n goTo: goToYear,\n boundaries: navBoundaries.value.year,\n cls: ' col'\n })\n ])\n )\n\n return h('div', {\n key: 'months-view',\n class: 'q-date__view q-date__months flex flex-center'\n }, content)\n },\n\n Years () {\n const\n start = startYear.value,\n stop = start + yearsInterval,\n years = []\n\n const isDisabled = year => {\n return (\n (minNav.value !== null && minNav.value.year > year)\n || (maxNav.value !== null && maxNav.value.year < year)\n )\n }\n\n for (let i = start; i <= stop; i++) {\n const active = viewModel.value.year === i\n\n years.push(\n h('div', {\n class: 'q-date__years-item flex flex-center'\n }, [\n h(QBtn, {\n key: 'yr' + i,\n class: today.value.year === i ? 'q-date__today' : null,\n flat: !active,\n label: i,\n dense: true,\n unelevated: active,\n color: active === true ? computedColor.value : null,\n textColor: active === true ? computedTextColor.value : null,\n tabindex: tabindex.value,\n disable: isDisabled(i),\n ...getCache('yr#' + i, { onClick: () => { setYear(i) } })\n })\n ])\n )\n }\n\n return h('div', {\n class: 'q-date__view q-date__years flex flex-center'\n }, [\n h('div', {\n class: 'col-auto'\n }, [\n h(QBtn, {\n round: true,\n dense: true,\n flat: true,\n icon: dateArrow.value[ 0 ],\n tabindex: tabindex.value,\n disable: isDisabled(start),\n ...getCache('y-', { onClick: () => { startYear.value -= yearsInterval } })\n })\n ]),\n\n h('div', {\n class: 'q-date__years-content col self-stretch row items-center'\n }, years),\n\n h('div', {\n class: 'col-auto'\n }, [\n h(QBtn, {\n round: true,\n dense: true,\n flat: true,\n icon: dateArrow.value[ 1 ],\n tabindex: tabindex.value,\n disable: isDisabled(stop),\n ...getCache('y+', { onClick: () => { startYear.value += yearsInterval } })\n })\n ])\n ])\n }\n }\n\n function onDayClick (dayIndex) {\n const day = { ...viewModel.value, day: dayIndex }\n\n if (props.range === false) {\n toggleDate(day, viewMonthHash.value)\n return\n }\n\n if (editRange.value === null) {\n const dayProps = days.value.find(day => day.fill !== true && day.i === dayIndex)\n\n if (props.noUnset !== true && dayProps.range !== void 0) {\n removeFromModel({ target: day, from: dayProps.range.from, to: dayProps.range.to })\n return\n }\n\n if (dayProps.selected === true) {\n removeFromModel(day)\n return\n }\n\n const initHash = getDayHash(day)\n\n editRange.value = {\n init: day,\n initHash,\n final: day,\n finalHash: initHash\n }\n\n emit('rangeStart', getShortDate(day))\n }\n else {\n const\n initHash = editRange.value.initHash,\n finalHash = getDayHash(day),\n payload = initHash <= finalHash\n ? { from: editRange.value.init, to: day }\n : { from: day, to: editRange.value.init }\n\n editRange.value = null\n addToModel(initHash === finalHash ? day : { target: day, ...payload })\n\n emit('rangeEnd', {\n from: getShortDate(payload.from),\n to: getShortDate(payload.to)\n })\n }\n }\n\n function onDayMouseover (dayIndex) {\n if (editRange.value !== null) {\n const final = { ...viewModel.value, day: dayIndex }\n\n Object.assign(editRange.value, {\n final,\n finalHash: getDayHash(final)\n })\n }\n }\n\n // expose public methods\n Object.assign(proxy, {\n setToday, setView, offsetCalendar, setCalendarTo, setEditingRange\n })\n\n return () => {\n const content = [\n h('div', {\n class: 'q-date__content col relative-position'\n }, [\n h(Transition, {\n name: 'q-transition--fade'\n }, renderViews[ view.value ])\n ])\n ]\n\n const def = hSlot(slots.default)\n def !== void 0 && content.push(\n h('div', { class: 'q-date__actions' }, def)\n )\n\n if (props.name !== void 0 && props.disable !== true) {\n injectFormInput(content, 'push')\n }\n\n return h('div', {\n class: classes.value,\n ...attributes.value\n }, [\n getHeader(),\n\n h('div', {\n ref: blurTargetRef,\n class: 'q-date__main col column',\n tabindex: -1\n }, content)\n ])\n }\n }\n})\n"],"names":["breaks","toJalaali","gy","gm","gd","d2j","g2d","toGregorian","jy","jm","jd","d2g","j2d","isLeapJalaaliYear","jalCalLeap","jalaaliMonthLength","bl","jp","jump","leap","n","div","mod","jalCal","withoutLeap","leapJ","i","leapG","march","r","jdn","k","jdn1f","d","j","a","b","calendars","useDatetimeProps","v","useDatetimeEmits","getDayHash","date","pad","useDatetime","props","$q","editable","computed","tabindex","headerClass","cls","getLocale","getCurrentDate","dateOnly","timeFill","jDate","MILLISECONDS_IN_DAY","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","defaultMask","token","reverseToken","regexStore","getRegexData","mask","dateLocale","days","key","daysShort","months","monthsShort","map","index","regexText","match","res","getDateLocale","paramDateLocale","langProps","defaultLang","formatTimezone","offset","delimeter","sign","absOffset","hours","minutes","__splitDate","str","calendar","defaultModel","langOpts","Lang","regex","tzString","stamp","y","maxDay","getWeekOfYear","thursday","firstThursday","ds","weekDiff","startOfDate","unit","utc","t","prefix","getDiff","sub","interval","getDateDiff","subtract","getDayOfYear","getOrdinal","formatter","forcedYear","_dateLocale","_forcedYear","forcedTimezoneOffset","tzOffset","formatDate","val","__forcedYear","__forcedTimezoneOffset","locale","text","yearsInterval","views","viewIsValid","yearMonthValidator","lineStr","getMonthHash","__nuxt_component_8","createComponent","useFormProps","useDarkProps","slots","emit","proxy","getCurrentInstance","isDark","useDark","getCache","useRenderCache","lastEmitValue","formAttrs","useFormAttrs","injectFormInput","useFormInject","blurTargetRef","ref","innerMask","getMask","innerLocale","today","viewModel","getViewModel","view","direction","monthDirection","yearDirection","year","startYear","editRange","classes","type","computedColor","computedTextColor","isImmediate","normalizedModel","daysModel","decodeString","rangeModel","fn","isObject","range","getNativeDateFn","model","gDate","encodeObjectFn","daysInModel","acc","headerTitle","minSelectedModel","maxSelectedModel","headerSubtitle","from","to","month","dateArrow","computedFirstDayOfWeek","daysOfWeek","first","daysInMonth","evtColor","minNav","data","maxNav","navBoundaries","daysMap","entry","hash","rangeMap","hashFrom","hashTo","cur","rangeView","init","initHash","final","finalHash","fromHash","toHash","viewMonthHash","selectionDaysMap","dayHash","eventDaysMap","viewDays","endDay","prevJM","prevJY","len","day","left","afterDays","attributes","watch","updateViewModel","updateValue","setToday","monthMap","addToModel","setCalendarTo","setView","viewMode","offsetCalendar","descending","goToMonth","goToYear","setEditingRange","getDefaultViewModel","target","decoded","emitImmediately","setYear","setMonth","toggleDate","monthHash","removeFromModel","getShortDate","time","hour","minute","second","millisecond","timezoneOffset","timeHash","newHash","nextTick","emitValue","action","value","reason","details","getEmitParams","encodeEntry","ranges","getHeader","h","Transition","e","QBtn","getNavigation","label","dir","goTo","boundaries","renderViews","onDayClick","onDayMouseover","currentYear","isDisabled","content","active","start","stop","years","dayIndex","dayProps","payload","def","hSlot"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}