{"version":3,"sources":["webpack:///./node_modules/quasar/src/utils/date-persian.js","webpack:///./node_modules/quasar/src/mixins/datetime.js","webpack:///./node_modules/quasar/src/utils/date.js","webpack:///./node_modules/quasar/src/components/date/QDate.js","webpack:///./node_modules/quasar/src/components/popup-proxy/QPopupProxy.js","webpack:///./node_modules/quasar/src/directives/ClosePopup.js","webpack:///./node_modules/core-js/modules/es.array.fill.js"],"names":["breaks","toJalaali","gy","gm","gd","Object","prototype","toString","call","getDate","getMonth","getFullYear","d2j","g2d","toGregorian","jy","jm","jd","d2g","j2d","isLeapJalaaliYear","jalCalLeap","jalaaliMonthLength","jump","leap","n","i","bl","length","jp","Error","div","mod","jalCal","withoutLeap","leapJ","leapG","march","r","jdn","k","jdn1f","d","j","a","b","calendars","mixins","DarkMixin","FormMixin","ListenersMixin","props","value","required","mask","type","String","locale","calendar","validator","v","includes","default","landscape","Boolean","color","textColor","square","flat","bordered","readonly","disable","computed","computedMask","this","__getMask","computedLocale","__getLocale","editable","computedColor","computedTextColor","computedTabindex","headerClass","cls","push","join","methods","$q","lang","date","__getCurrentDate","dateOnly","Date","timeFill","jDate","year","month","day","hour","minute","second","millisecond","__getCurrentTime","getHours","getMinutes","getSeconds","getMilliseconds","__getDayHash","pad","MILLISECONDS_IN_DAY","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","defaultMask","token","reverseToken","regexStore","getRegexData","dateLocale","days","key","daysShort","months","monthsShort","map","index","regexText","replace","match","YY","YYYY","M","MMM","MMMM","D","H","h","m","s","S","A","aa","Z","ZZ","X","x","substring","res","regex","RegExp","__splitDate","str","defaultModel","timezoneOffset","dateHash","timeHash","assign","langOpts","tzString","stamp","parseInt","isNaN","y","indexOf","maxDay","slice","formatTimezone","offset","delimeter","sign","absOffset","Math","abs","hours","floor","minutes","getWeekOfYear","thursday","setDate","getDay","firstThursday","ds","getTimezoneOffset","setHours","weekDiff","startOfDate","unit","utc","t","prefix","getDiff","sub","interval","getTime","getDateDiff","subtract","getDayOfYear","getOrdinal","formatter","_","forcedYear","MM","Q","ceil","Qo","Do","DD","DDD","DDDD","dd","dddd","ddd","E","w","ww","HH","hh","mm","ss","SS","SSS","forcedTimezoneOffset","tzOffset","formatDate","val","__forcedYear","__forcedTimezoneOffset","Infinity","text","split","yearsInterval","views","viewIsValid","yearMonthValidator","test","lineStr","Vue","extend","name","DateTimeMixin","multiple","range","title","subtitle","defaultYearMonth","yearsInMonthView","events","Array","Function","eventColor","emitImmediately","options","navigationMinYearMonth","navigationMaxYearMonth","noUnset","firstDayOfWeek","Number","todayBtn","minimal","defaultView","data","innerMask","innerLocale","viewModel","__getViewModel","direction","rtl","view","monthDirection","yearDirection","startYear","editRange","watch","lastEmitValue","__updateViewModel","$refs","blurTarget","focus","$emit","__updateValue","classes","isDark","isImmediate","normalizedModel","isArray","daysModel","filter","__decodeString","rangeModel","fn","from","to","getNativeDateFn","model","gDate","encodeObjectFn","daysInModel","reduce","acc","headerTitle","init","pluralDay","valueOf","headerSubtitle","minSelectedModel","maxSelectedModel","concat","sort","dateArrow","iconSet","datetime","arrowLeft","arrowRight","reverse","computedFirstDayOfWeek","daysOfWeek","first","daysInMonth","today","evtColor","minNav","maxNav","navBoundaries","prev","next","daysMap","forEach","entry","hash","__getMonthHash","rangeMap","hashFrom","hashTo","cur","rangeView","initHash","final","finalHash","fromHash","toHash","viewMonthHash","includeFrom","includeTo","selectionDaysMap","dayHash","eventDaysMap","viewDays","endDay","prevJM","prevJY","len","fill","event","in","selected","unelevated","rangeFrom","rangeTo","editRangeFrom","editRangeTo","left","afterDays","attrs","setToday","__toggleDate","setCalendarTo","setView","offsetCalendar","descending","setEditingRange","__getDefaultViewModel","decoded","__getHeader","staticClass","class","tabindex","on","cache","click","keyup","e","keyCode","QBtn","icon","size","round","__getNavigation","label","dir","goTo","boundaries","dense","noCaps","__getCalendarView","__goToMonth","__goToYear","__onDayClick","mouseover","__onDayMouseover","__getMonthsView","currentYear","isDisabled","content","active","__setMonth","unshift","__getYearsView","start","stop","years","__setYear","__emitImmediately","monthHash","__removeFromModel","__addToModel","__getShortDate","dayIndex","dayProps","find","target","payload","newHash","$nextTick","__emitValue","action","__getEmitParams","reason","details","min","max","__encodeEntry","changed","ranges","render","def","slot","__injectFormInput","qListeners","ref","AttrsMixin","AnchorMixin","breakpoint","screen","width","height","parsedBreakpoint","onEvents","hide","__onHide","popup","showing","__updateType","toggle","evt","show","component","componentOptions","Ctor","sealedOptions","cover","maxHeight","qAttrs","QDialog","QMenu","contextMenu","noParentEvent","separateClosePopup","getDepth","depth","destroy","el","ctx","__qclosepopup","removeEventListener","handler","handlerKey","bind","vnode","__qclosepopup_destroyed","setTimeout","closePortals","componentInstance","context","isKeyCode","addEventListener","update","oldValue","unbind","$","addToUnscopables","proto"],"mappings":"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","file":"js/eventLogs~events~triggerEvents.b8dd205c.js","sourcesContent":["// taken from https://github.com/jalaali/jalaali-js\n\n/*\n Jalaali years starting the 33-year rule.\n*/\nconst breaks = [ -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 Checks whether a Jalaali date is valid or not.\n*/\nexport function isValidJalaaliDate (jy, jm, jd) {\n return jy >= -61 && jy <= 3177 &&\n jm >= 1 && jm <= 12 &&\n jd >= 1 && jd <= jalaaliMonthLength(jy, jm)\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: leap,\n gy: gy,\n march: 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 { jy: jy,\n jm: jm,\n jd: 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 { jy: jy,\n jm: jm,\n jd: 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: gy,\n gm: gm,\n gd: 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 { toJalaali } from '../utils/date-persian.js'\n\nimport DarkMixin from './dark.js'\nimport FormMixin from './form.js'\nimport ListenersMixin from './listeners.js'\n\nimport { pad } from '../utils/format.js'\n\nconst calendars = [ 'gregorian', 'persian' ]\n\nexport default {\n mixins: [ DarkMixin, FormMixin, ListenersMixin ],\n\n props: {\n value: {\n required: true\n },\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\n computed: {\n computedMask () {\n return this.__getMask()\n },\n\n computedLocale () {\n return this.__getLocale()\n },\n\n editable () {\n return this.disable !== true && this.readonly !== true\n },\n\n computedColor () {\n return this.color || 'primary'\n },\n\n computedTextColor () {\n return this.textColor || 'white'\n },\n\n computedTabindex () {\n return this.editable === true ? 0 : -1\n },\n\n headerClass () {\n const cls = []\n this.color !== void 0 && cls.push(`bg-${this.color}`)\n this.textColor !== void 0 && cls.push(`text-${this.textColor}`)\n return cls.join(' ')\n }\n },\n\n methods: {\n __getLocale () {\n return this.locale || this.$q.lang.date\n },\n\n __getCurrentDate (dateOnly) {\n const d = new Date()\n const timeFill = dateOnly === true ? null : 0\n\n if (this.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 __getCurrentTime () {\n const d = new Date()\n\n return {\n hour: d.getHours(),\n minute: d.getMinutes(),\n second: d.getSeconds(),\n millisecond: d.getMilliseconds()\n }\n },\n\n __getDayHash (date) {\n return date.year + '/' + pad(date.month) + '/' + pad(date.day)\n }\n }\n}\n","/* eslint no-fallthrough: 0 */\n\nimport { isDate } from './is.js'\nimport { pad, capitalize } from './format.js'\nimport { jalaaliMonthLength } from './date-persian.js'\nimport lang from '../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 = /\\[((?:[^\\]\\\\]|\\\\]|\\\\)*)\\]|d{1,4}|M{1,4}|m{1,2}|w{1,2}|Qo|Do|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 = /(\\[[^\\]]*\\])|d{1,4}|M{1,4}|m{1,2}|w{1,2}|Qo|Do|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 '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 'Qo':\n return '(1st|2nd|3rd|4th)'\n case 'DDD':\n case 'DDDD':\n return '(\\\\d{1,3})'\n case 'w':\n return '(\\\\d{1,2})'\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\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,\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 }, true)\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 = dateLocale !== void 0 ? dateLocale : lang.props.date,\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 = date.year + '/' + 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\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 setMonth (date, newMonth /* 1-based */) {\n const\n test = new Date(date.getFullYear(), newMonth, 0, 0, 0, 0, 0),\n days = test.getDate()\n\n date.setMonth(newMonth - 1, Math.min(days, date.getDate()))\n}\n\nfunction getChange (date, mod, add) {\n const\n t = new Date(date),\n sign = (add ? 1 : -1)\n\n Object.keys(mod).forEach(key => {\n if (key === 'month') {\n setMonth(t, t.getMonth() + 1 + sign * mod.month)\n return\n }\n\n const op = key === 'year'\n ? 'FullYear'\n : capitalize(key === 'days' ? 'date' : key)\n t[`set${op}`](t[`get${op}`]() + sign * mod[key])\n })\n return t\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, true)\n}\nexport function subtractFromDate (date, mod) {\n return getChange(date, mod, false)\n}\n\nexport function adjustDate (date, mod, utc) {\n const\n t = new Date(date),\n prefix = `set${utc === true ? 'UTC' : ''}`\n\n Object.keys(mod).forEach(key => {\n if (key === 'month') {\n setMonth(t, mod.month)\n return\n }\n\n const op = key === 'year'\n ? 'FullYear'\n : key.charAt(0).toUpperCase() + key.slice(1)\n t[`${prefix}${op}`](mod[key])\n })\n\n return t\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 t[`${prefix}Month`](0)\n case 'month':\n t[`${prefix}Date`](1)\n case 'day':\n t[`${prefix}Hours`](0)\n case 'hour':\n t[`${prefix}Minutes`](0)\n case 'minute':\n t[`${prefix}Seconds`](0)\n case 'second':\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 t[`${prefix}Month`](11)\n case 'month':\n t[`${prefix}Date`](daysInMonth(t))\n case 'day':\n t[`${prefix}Hours`](23)\n case 'hour':\n t[`${prefix}Minutes`](59)\n case 'minute':\n t[`${prefix}Seconds`](59)\n case 'second':\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 return (t.getFullYear() - sub.getFullYear())\n\n case 'months':\n return (t.getFullYear() - sub.getFullYear()) * 12 + t.getMonth() - sub.getMonth()\n\n case 'days':\n return getDiff(startOfDate(t, 'day'), startOfDate(sub, 'day'), MILLISECONDS_IN_DAY)\n\n case 'hours':\n return getDiff(startOfDate(t, 'hour'), startOfDate(sub, 'hour'), MILLISECONDS_IN_HOUR)\n\n case 'minutes':\n return getDiff(startOfDate(t, 'minute'), startOfDate(sub, 'minute'), MILLISECONDS_IN_MINUTE)\n\n case 'seconds':\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 if (t.getSeconds() !== d.getSeconds()) {\n return false\n }\n case 'minute': // intentional fall-through\n if (t.getMinutes() !== d.getMinutes()) {\n return false\n }\n case 'hour': // intentional fall-through\n if (t.getHours() !== d.getHours()) {\n return false\n }\n case 'day': // intentional fall-through\n if (t.getDate() !== d.getDate()) {\n return false\n }\n case 'month': // intentional fall-through\n if (t.getMonth() !== d.getMonth()) {\n return false\n }\n case 'year': // intentional fall-through\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, _, forcedYear) {\n // workaround for < 1900 with new Date()\n const y = this.YYYY(date, _, forcedYear) % 100\n return y > 0\n ? pad(y)\n : '-' + pad(Math.abs(y))\n },\n\n // Year: 1900, 1901, ..., 2099\n YYYY (date, _, 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: 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: 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: Su, Mo, ...\n dd (date, dateLocale) {\n return this.dddd(date, dateLocale).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: 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 if (hours === 0) {\n return 12\n }\n if (hours > 12) {\n return hours % 12\n }\n return 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 this.H(date) < 12 ? 'AM' : 'PM'\n },\n\n // Meridiem: am, pm\n a (date) {\n return this.H(date) < 12 ? 'am' : 'pm'\n },\n\n // Meridiem: a.m., p.m.\n aa (date) {\n return this.H(date) < 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 = dateLocale !== void 0\n ? dateLocale\n : lang.props.date\n\n return mask.replace(\n token,\n (match, text) => match in formatter\n ? formatter[match](date, locale, __forcedYear, __forcedTimezoneOffset)\n : (text === void 0 ? match : text.split('\\\\]').join(']'))\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 Vue from 'vue'\n\nimport QBtn from '../btn/QBtn.js'\nimport DateTimeMixin from '../../mixins/datetime.js'\n\nimport { slot } from '../../utils/slot.js'\nimport { formatDate, __splitDate, getDateDiff } from '../../utils/date.js'\nimport { pad } from '../../utils/format.js'\nimport { jalaaliMonthLength, toGregorian } from '../../utils/date-persian.js'\nimport cache from '../../utils/cache.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\nexport default Vue.extend({\n name: 'QDate',\n\n mixins: [ DateTimeMixin ],\n\n props: {\n multiple: Boolean,\n range: Boolean,\n\n title: String,\n subtitle: String,\n\n 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 data () {\n const\n innerMask = this.__getMask(),\n innerLocale = this.__getLocale(),\n viewModel = this.__getViewModel(innerMask, innerLocale),\n year = viewModel.year,\n direction = this.$q.lang.rtl === true ? 'right' : 'left'\n\n return {\n view: this.defaultView,\n monthDirection: direction,\n yearDirection: direction,\n startYear: year - (year % yearsInterval) - (year < 0 ? yearsInterval : 0),\n editRange: void 0,\n innerMask,\n innerLocale,\n viewModel // model of current calendar view\n }\n },\n\n watch: {\n value (v) {\n if (this.lastEmitValue === v) {\n this.lastEmitValue = 0\n }\n else {\n const { year, month } = this.__getViewModel(this.innerMask, this.innerLocale)\n this.__updateViewModel(year, month)\n }\n },\n\n view () {\n this.$refs.blurTarget !== void 0 && this.$refs.blurTarget.focus()\n },\n\n 'viewModel.year' (year) {\n this.$emit('navigation', { year, month: this.viewModel.month })\n },\n\n 'viewModel.month' (month) {\n this.$emit('navigation', { year: this.viewModel.year, month })\n },\n\n computedMask (val) {\n this.__updateValue(val, this.innerLocale, 'mask')\n this.innerMask = val\n },\n\n computedLocale (val) {\n this.__updateValue(this.innerMask, val, 'locale')\n this.innerLocale = val\n }\n },\n\n computed: {\n classes () {\n const type = this.landscape === true ? 'landscape' : 'portrait'\n return `q-date q-date--${type} q-date--${type}-${this.minimal === true ? 'minimal' : 'standard'}` +\n (this.isDark === true ? ' q-date--dark q-dark' : '') +\n (this.bordered === true ? ` q-date--bordered` : '') +\n (this.square === true ? ` q-date--square no-border-radius` : '') +\n (this.flat === true ? ` q-date--flat no-shadow` : '') +\n (this.disable === true ? ' disabled' : (this.readonly === true ? ' q-date--readonly' : ''))\n },\n\n isImmediate () {\n return this.emitImmediately === true &&\n this.multiple !== true &&\n this.range !== true\n },\n\n normalizedModel () {\n return Array.isArray(this.value) === true\n ? this.value\n : (this.value !== null && this.value !== void 0 ? [ this.value ] : [])\n },\n\n daysModel () {\n return this.normalizedModel\n .filter(date => typeof date === 'string')\n .map(date => this.__decodeString(date, this.innerMask, this.innerLocale))\n .filter(date => date.dateHash !== null)\n },\n\n rangeModel () {\n const fn = date => this.__decodeString(date, this.innerMask, this.innerLocale)\n return this.normalizedModel\n .filter(date => Object(date) === date && 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 getNativeDateFn () {\n return this.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 encodeObjectFn () {\n return this.calendar === 'persian'\n ? this.__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 ? this.innerMask : mask,\n locale === void 0 ? this.innerLocale : locale,\n date.year,\n date.timezoneOffset\n )\n },\n\n daysInModel () {\n return this.daysModel.length + this.rangeModel.reduce(\n (acc, range) => acc + 1 + getDateDiff(\n this.getNativeDateFn(range.to),\n this.getNativeDateFn(range.from)\n ),\n 0\n )\n },\n\n headerTitle () {\n if (this.title !== void 0 && this.title !== null && this.title.length > 0) {\n return this.title\n }\n\n if (this.editRange !== void 0) {\n const model = this.editRange.init\n const date = this.getNativeDateFn(model)\n\n return this.innerLocale.daysShort[ date.getDay() ] + ', ' +\n this.innerLocale.monthsShort[ model.month - 1 ] + ' ' +\n model.day + lineStr + '?'\n }\n\n if (this.daysInModel === 0) {\n return lineStr\n }\n\n if (this.daysInModel > 1) {\n return `${this.daysInModel} ${this.innerLocale.pluralDay}`\n }\n\n const model = this.daysModel[0]\n const date = this.getNativeDateFn(model)\n\n if (isNaN(date.valueOf()) === true) {\n return lineStr\n }\n\n if (this.innerLocale.headerTitle !== void 0) {\n return this.innerLocale.headerTitle(date, model)\n }\n\n return this.innerLocale.daysShort[ date.getDay() ] + ', ' +\n this.innerLocale.monthsShort[ model.month - 1 ] + ' ' +\n model.day\n },\n\n headerSubtitle () {\n if (this.subtitle !== void 0 && this.subtitle !== null && this.subtitle.length > 0) {\n return this.subtitle\n }\n\n if (this.daysInModel === 0) {\n return lineStr\n }\n\n if (this.daysInModel > 1) {\n const from = this.minSelectedModel\n const to = this.maxSelectedModel\n const month = this.innerLocale.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 this.daysModel[0].year\n },\n\n minSelectedModel () {\n const model = this.daysModel.concat(this.rangeModel.map(range => range.from))\n .sort((a, b) => a.year - b.year || a.month - b.month)\n\n return model[0]\n },\n\n maxSelectedModel () {\n const model = this.daysModel.concat(this.rangeModel.map(range => range.to))\n .sort((a, b) => b.year - a.year || b.month - a.month)\n\n return model[0]\n },\n\n dateArrow () {\n const val = [ this.$q.iconSet.datetime.arrowLeft, this.$q.iconSet.datetime.arrowRight ]\n return this.$q.lang.rtl === true ? val.reverse() : val\n },\n\n computedFirstDayOfWeek () {\n return this.firstDayOfWeek !== void 0\n ? Number(this.firstDayOfWeek)\n : this.innerLocale.firstDayOfWeek\n },\n\n daysOfWeek () {\n const\n days = this.innerLocale.daysShort,\n first = this.computedFirstDayOfWeek\n\n return first > 0\n ? days.slice(first, 7).concat(days.slice(0, first))\n : days\n },\n\n daysInMonth () {\n const date = this.viewModel\n return this.calendar !== 'persian'\n ? (new Date(date.year, date.month, 0)).getDate()\n : jalaaliMonthLength(date.year, date.month)\n },\n\n today () {\n return this.__getCurrentDate()\n },\n\n evtColor () {\n return typeof this.eventColor === 'function'\n ? this.eventColor\n : () => this.eventColor\n },\n\n minNav () {\n if (this.navigationMinYearMonth !== void 0) {\n const data = this.navigationMinYearMonth.split('/')\n return { year: parseInt(data[0], 10), month: parseInt(data[1], 10) }\n }\n },\n\n maxNav () {\n if (this.navigationMaxYearMonth !== void 0) {\n const data = this.navigationMaxYearMonth.split('/')\n return { year: parseInt(data[0], 10), month: parseInt(data[1], 10) }\n }\n },\n\n navBoundaries () {\n const data = {\n month: { prev: true, next: true },\n year: { prev: true, next: true }\n }\n\n if (this.minNav !== void 0 && this.minNav.year >= this.viewModel.year) {\n data.year.prev = false\n if (this.minNav.year === this.viewModel.year && this.minNav.month >= this.viewModel.month) {\n data.month.prev = false\n }\n }\n\n if (this.maxNav !== void 0 && this.maxNav.year <= this.viewModel.year) {\n data.year.next = false\n if (this.maxNav.year === this.viewModel.year && this.maxNav.month <= this.viewModel.month) {\n data.month.next = false\n }\n }\n\n return data\n },\n\n daysMap () {\n const map = {}\n\n this.daysModel.forEach(entry => {\n const hash = this.__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 rangeMap () {\n const map = {}\n\n this.rangeModel.forEach(entry => {\n const hashFrom = this.__getMonthHash(entry.from)\n const hashTo = this.__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 = this.__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 rangeView () {\n if (this.editRange === void 0) {\n return\n }\n\n const { init, initHash, final, finalHash } = this.editRange\n\n const [ from, to ] = initHash <= finalHash\n ? [ init, final ]\n : [ final, init ]\n\n const fromHash = this.__getMonthHash(from)\n const toHash = this.__getMonthHash(to)\n\n if (fromHash !== this.viewMonthHash && toHash !== this.viewMonthHash) {\n return\n }\n\n const view = {}\n\n if (fromHash === this.viewMonthHash) {\n view.from = from.day\n view.includeFrom = true\n }\n else {\n view.from = 1\n }\n\n if (toHash === this.viewMonthHash) {\n view.to = to.day\n view.includeTo = true\n }\n else {\n view.to = this.daysInMonth\n }\n\n return view\n },\n\n viewMonthHash () {\n return this.__getMonthHash(this.viewModel)\n },\n\n selectionDaysMap () {\n const map = {}\n\n if (this.options === void 0) {\n for (let i = 1; i <= this.daysInMonth; i++) {\n map[i] = true\n }\n\n return map\n }\n\n const fn = typeof this.options === 'function'\n ? this.options\n : date => this.options.includes(date)\n\n for (let i = 1; i <= this.daysInMonth; i++) {\n const dayHash = this.viewMonthHash + '/' + pad(i)\n map[i] = fn(dayHash)\n }\n\n return map\n },\n\n eventDaysMap () {\n const map = {}\n\n if (this.events === void 0) {\n for (let i = 1; i <= this.daysInMonth; i++) {\n map[i] = false\n }\n }\n else {\n const fn = typeof this.events === 'function'\n ? this.events\n : date => this.events.includes(date)\n\n for (let i = 1; i <= this.daysInMonth; i++) {\n const dayHash = this.viewMonthHash + '/' + pad(i)\n map[i] = fn(dayHash) === true && this.evtColor(dayHash)\n }\n }\n\n return map\n },\n\n viewDays () {\n let date, endDay\n const { year, month } = this.viewModel\n\n if (this.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() - this.computedFirstDayOfWeek - 1,\n endDay\n }\n },\n\n days () {\n const res = []\n const { days, endDay } = this.viewDays\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 <= this.daysInMonth; i++) {\n const day = { i, event: this.eventDaysMap[i], classes: [] }\n\n if (this.selectionDaysMap[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 (this.daysMap[this.viewMonthHash] !== void 0) {\n this.daysMap[this.viewMonthHash].forEach(day => {\n const i = index + day - 1\n Object.assign(res[i], {\n selected: true,\n unelevated: true,\n flat: false,\n color: this.computedColor,\n textColor: this.computedTextColor\n })\n })\n }\n\n // if current view has ranges in model\n if (this.rangeMap[this.viewMonthHash] !== void 0) {\n this.rangeMap[this.viewMonthHash].forEach(entry => {\n if (entry.from !== void 0) {\n const from = index + entry.from - 1\n const to = index + (entry.to || this.daysInMonth) - 1\n\n for (let day = from; day <= to; day++) {\n Object.assign(res[day], {\n range: entry.range,\n unelevated: true,\n color: this.computedColor,\n textColor: this.computedTextColor\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: this.computedColor,\n textColor: this.computedTextColor\n })\n }\n\n Object.assign(res[to], {\n flat: false,\n rangeTo: true\n })\n }\n else {\n const to = index + this.daysInMonth - 1\n for (let day = index; day <= to; day++) {\n Object.assign(res[day], {\n range: entry.range,\n unelevated: true,\n color: this.computedColor,\n textColor: this.computedTextColor\n })\n }\n }\n })\n }\n\n if (this.rangeView !== void 0) {\n const from = index + this.rangeView.from - 1\n const to = index + this.rangeView.to - 1\n\n for (let day = from; day <= to; day++) {\n res[day].color = this.computedColor\n res[day].editRange = true\n }\n\n if (this.rangeView.includeFrom === true) {\n res[from].editRangeFrom = true\n }\n if (this.rangeView.includeTo === true) {\n res[to].editRangeTo = true\n }\n }\n\n if (this.viewModel.year === this.today.year && this.viewModel.month === this.today.month) {\n res[index + this.today.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 attrs () {\n if (this.disable === true) {\n return { 'aria-disabled': 'true' }\n }\n if (this.readonly === true) {\n return { 'aria-readonly': 'true' }\n }\n }\n },\n\n methods: {\n setToday () {\n this.__toggleDate(this.today, this.__getMonthHash(this.today))\n this.setCalendarTo(this.today.year, this.today.month)\n },\n\n setView (view) {\n if (viewIsValid(view) === true) {\n this.view = view\n }\n },\n\n offsetCalendar (type, descending) {\n if (['month', 'year'].includes(type)) {\n this[`__goTo${type === 'month' ? 'Month' : 'Year'}`](\n descending === true ? -1 : 1\n )\n }\n },\n\n setCalendarTo (year, month) {\n this.view = 'Calendar'\n this.__updateViewModel(year, month)\n },\n\n setEditingRange (from, to) {\n if (this.range === false || !from) {\n this.editRange = void 0\n return\n }\n\n const init = Object.assign({ ...this.viewModel }, from)\n const final = to !== void 0\n ? Object.assign({ ...this.viewModel }, to)\n : init\n\n this.editRange = {\n init,\n initHash: this.__getDayHash(init),\n final,\n finalHash: this.__getDayHash(final)\n }\n\n this.setCalendarTo(init.year, init.month)\n },\n\n __getMask () {\n return this.calendar === 'persian' ? 'YYYY/MM/DD' : this.mask\n },\n\n __decodeString (date, mask, locale) {\n return __splitDate(\n date,\n mask,\n locale,\n this.calendar,\n {\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0\n }\n )\n },\n\n __getViewModel (mask, locale) {\n const model = Array.isArray(this.value) === true\n ? this.value\n : (this.value ? [ this.value ] : [])\n\n if (model.length === 0) {\n return this.__getDefaultViewModel()\n }\n\n const decoded = this.__decodeString(\n model[0].from !== void 0 ? model[0].from : model[0],\n mask,\n locale\n )\n\n return decoded.dateHash === null\n ? this.__getDefaultViewModel()\n : decoded\n },\n\n __getDefaultViewModel () {\n let year, month\n\n if (this.defaultYearMonth !== void 0) {\n const d = this.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 = this.today !== void 0\n ? this.today\n : this.__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 __getHeader (h) {\n if (this.minimal === true) { return }\n\n return h('div', {\n staticClass: 'q-date__header',\n class: this.headerClass\n }, [\n h('div', {\n staticClass: 'relative-position'\n }, [\n h('transition', {\n props: {\n name: 'q-transition--fade'\n }\n }, [\n h('div', {\n key: 'h-yr-' + this.headerSubtitle,\n staticClass: 'q-date__header-subtitle q-date__header-link',\n class: this.view === 'Years' ? 'q-date__header-link--active' : 'cursor-pointer',\n attrs: { tabindex: this.computedTabindex },\n on: cache(this, 'vY', {\n click: () => { this.view = 'Years' },\n keyup: e => { e.keyCode === 13 && (this.view = 'Years') }\n })\n }, [ this.headerSubtitle ])\n ])\n ]),\n\n h('div', {\n staticClass: 'q-date__header-title relative-position flex no-wrap'\n }, [\n h('div', {\n staticClass: 'relative-position col'\n }, [\n h('transition', {\n props: {\n name: 'q-transition--fade'\n }\n }, [\n h('div', {\n key: 'h-sub' + this.headerTitle,\n staticClass: 'q-date__header-title-label q-date__header-link',\n class: this.view === 'Calendar' ? 'q-date__header-link--active' : 'cursor-pointer',\n attrs: { tabindex: this.computedTabindex },\n on: cache(this, 'vC', {\n click: () => { this.view = 'Calendar' },\n keyup: e => { e.keyCode === 13 && (this.view = 'Calendar') }\n })\n }, [ this.headerTitle ])\n ])\n ]),\n\n this.todayBtn === true ? h(QBtn, {\n staticClass: 'q-date__header-today self-start',\n props: {\n icon: this.$q.iconSet.datetime.today,\n flat: true,\n size: 'sm',\n round: true,\n tabindex: this.computedTabindex\n },\n on: cache(this, 'today', { click: this.setToday })\n }) : null\n ])\n ])\n },\n\n __getNavigation (h, { label, view, key, dir, goTo, boundaries, cls }) {\n return [\n h('div', {\n staticClass: 'row items-center q-date__arrow'\n }, [\n h(QBtn, {\n props: {\n round: true,\n dense: true,\n size: 'sm',\n flat: true,\n icon: this.dateArrow[0],\n tabindex: this.computedTabindex,\n disable: boundaries.prev === false\n },\n on: cache(this, 'go-#' + view, { click () { goTo(-1) } })\n })\n ]),\n\n h('div', {\n staticClass: 'relative-position overflow-hidden flex flex-center' + cls\n }, [\n h('transition', {\n props: {\n name: 'q-transition--jump-' + dir\n }\n }, [\n h('div', { key }, [\n h(QBtn, {\n props: {\n flat: true,\n dense: true,\n noCaps: true,\n label,\n tabindex: this.computedTabindex\n },\n on: cache(this, 'view#' + view, { click: () => { this.view = view } })\n })\n ])\n ])\n ]),\n\n h('div', {\n staticClass: 'row items-center q-date__arrow'\n }, [\n h(QBtn, {\n props: {\n round: true,\n dense: true,\n size: 'sm',\n flat: true,\n icon: this.dateArrow[1],\n tabindex: this.computedTabindex,\n disable: boundaries.next === false\n },\n on: cache(this, 'go+#' + view, { click () { goTo(1) } })\n })\n ])\n ]\n },\n\n __getCalendarView (h) {\n return [\n h('div', {\n key: 'calendar-view',\n staticClass: 'q-date__view q-date__calendar'\n }, [\n h('div', {\n staticClass: 'q-date__navigation row items-center no-wrap'\n }, this.__getNavigation(h, {\n label: this.innerLocale.months[ this.viewModel.month - 1 ],\n view: 'Months',\n key: this.viewModel.month,\n dir: this.monthDirection,\n goTo: this.__goToMonth,\n boundaries: this.navBoundaries.month,\n cls: ' col'\n }).concat(this.__getNavigation(h, {\n label: this.viewModel.year,\n view: 'Years',\n key: this.viewModel.year,\n dir: this.yearDirection,\n goTo: this.__goToYear,\n boundaries: this.navBoundaries.year,\n cls: ''\n }))),\n\n h('div', {\n staticClass: 'q-date__calendar-weekdays row items-center no-wrap'\n }, this.daysOfWeek.map(day => h('div', { staticClass: 'q-date__calendar-item' }, [ h('div', [ day ]) ]))),\n\n h('div', {\n staticClass: 'q-date__calendar-days-container relative-position overflow-hidden'\n }, [\n h('transition', {\n props: {\n name: 'q-transition--slide-' + this.monthDirection\n }\n }, [\n h('div', {\n key: this.viewMonthHash,\n staticClass: 'q-date__calendar-days fit'\n }, this.days.map(day => h('div', { staticClass: day.classes }, [\n day.in === true\n ? h(QBtn, {\n staticClass: day.today === true ? 'q-date__today' : null,\n props: {\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: this.computedTabindex\n },\n on: cache(this, 'day#' + day.i, {\n click: () => { this.__onDayClick(day.i) },\n mouseover: () => { this.__onDayMouseover(day.i) }\n })\n }, day.event !== false ? [\n h('div', { staticClass: 'q-date__event bg-' + day.event })\n ] : null)\n : h('div', [ day.i ])\n ])))\n ])\n ])\n ])\n ]\n },\n\n __getMonthsView (h) {\n const currentYear = this.viewModel.year === this.today.year\n const isDisabled = month => {\n return (\n (this.minNav !== void 0 && this.viewModel.year === this.minNav.year && this.minNav.month > month) ||\n (this.maxNav !== void 0 && this.viewModel.year === this.maxNav.year && this.maxNav.month < month)\n )\n }\n\n const content = this.innerLocale.monthsShort.map((month, i) => {\n const active = this.viewModel.month === i + 1\n\n return h('div', {\n staticClass: 'q-date__months-item flex flex-center'\n }, [\n h(QBtn, {\n staticClass: currentYear === true && this.today.month === i + 1 ? 'q-date__today' : null,\n props: {\n flat: active !== true,\n label: month,\n unelevated: active,\n color: active === true ? this.computedColor : null,\n textColor: active === true ? this.computedTextColor : null,\n tabindex: this.computedTabindex,\n disable: isDisabled(i + 1)\n },\n on: cache(this, 'month#' + i, { click: () => { this.__setMonth(i + 1) } })\n })\n ])\n })\n\n this.yearsInMonthView === true && content.unshift(\n h('div', { staticClass: 'row no-wrap full-width' }, [\n this.__getNavigation(h, {\n label: this.viewModel.year,\n view: 'Years',\n key: this.viewModel.year,\n dir: this.yearDirection,\n goTo: this.__goToYear,\n boundaries: this.navBoundaries.year,\n cls: ' col'\n })\n ])\n )\n\n return h('div', {\n key: 'months-view',\n staticClass: 'q-date__view q-date__months flex flex-center'\n }, content)\n },\n\n __getYearsView (h) {\n const\n start = this.startYear,\n stop = start + yearsInterval,\n years = []\n\n const isDisabled = year => {\n return (\n (this.minNav !== void 0 && this.minNav.year > year) ||\n (this.maxNav !== void 0 && this.maxNav.year < year)\n )\n }\n\n for (let i = start; i <= stop; i++) {\n const active = this.viewModel.year === i\n\n years.push(\n h('div', {\n staticClass: 'q-date__years-item flex flex-center'\n }, [\n h(QBtn, {\n key: 'yr' + i,\n staticClass: this.today.year === i ? 'q-date__today' : null,\n props: {\n flat: !active,\n label: i,\n dense: true,\n unelevated: active,\n color: active === true ? this.computedColor : null,\n textColor: active === true ? this.computedTextColor : null,\n tabindex: this.computedTabindex,\n disable: isDisabled(i)\n },\n on: cache(this, 'yr#' + i, { click: () => { this.__setYear(i) } })\n })\n ])\n )\n }\n\n return h('div', {\n staticClass: 'q-date__view q-date__years flex flex-center'\n }, [\n h('div', {\n staticClass: 'col-auto'\n }, [\n h(QBtn, {\n props: {\n round: true,\n dense: true,\n flat: true,\n icon: this.dateArrow[0],\n tabindex: this.computedTabindex,\n disable: isDisabled(start)\n },\n on: cache(this, 'y-', { click: () => { this.startYear -= yearsInterval } })\n })\n ]),\n\n h('div', {\n staticClass: 'q-date__years-content col self-stretch row items-center'\n }, years),\n\n h('div', {\n staticClass: 'col-auto'\n }, [\n h(QBtn, {\n props: {\n round: true,\n dense: true,\n flat: true,\n icon: this.dateArrow[1],\n tabindex: this.computedTabindex,\n disable: isDisabled(stop)\n },\n on: cache(this, 'y+', { click: () => { this.startYear += yearsInterval } })\n })\n ])\n ])\n },\n\n __goToMonth (offset) {\n let year = this.viewModel.year\n let month = Number(this.viewModel.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 this.__updateViewModel(year, month)\n this.isImmediate === true && this.__emitImmediately('month')\n },\n\n __goToYear (offset) {\n const year = Number(this.viewModel.year) + offset\n this.__updateViewModel(year, this.viewModel.month)\n this.isImmediate === true && this.__emitImmediately('year')\n },\n\n __setYear (year) {\n this.__updateViewModel(year, this.viewModel.month)\n this.view = this.defaultView === 'Years' ? 'Months' : 'Calendar'\n this.isImmediate === true && this.__emitImmediately('year')\n },\n\n __setMonth (month) {\n this.__updateViewModel(this.viewModel.year, month)\n this.view = 'Calendar'\n this.isImmediate === true && this.__emitImmediately('month')\n },\n\n __getMonthHash (date) {\n return date.year + '/' + pad(date.month)\n },\n\n __toggleDate (date, monthHash) {\n const month = this.daysMap[monthHash]\n const fn = month !== void 0 && month.includes(date.day) === true\n ? this.__removeFromModel\n : this.__addToModel\n\n fn(date)\n },\n\n __getShortDate (date) {\n return { year: date.year, month: date.month, day: date.day }\n },\n\n __onDayClick (dayIndex) {\n const day = { ...this.viewModel, day: dayIndex }\n\n if (this.range === false) {\n this.__toggleDate(day, this.viewMonthHash)\n return\n }\n\n if (this.editRange === void 0) {\n const dayProps = this.days.find(day => day.fill !== true && day.i === dayIndex)\n\n if (dayProps.range !== void 0) {\n this.__removeFromModel({ target: day, from: dayProps.range.from, to: dayProps.range.to })\n return\n }\n\n if (dayProps.selected === true) {\n this.__removeFromModel(day)\n return\n }\n\n const initHash = this.__getDayHash(day)\n\n this.editRange = {\n init: day,\n initHash,\n final: day,\n finalHash: initHash\n }\n\n this.$emit('range-start', this.__getShortDate(day))\n }\n else {\n const\n initHash = this.editRange.initHash,\n finalHash = this.__getDayHash(day),\n payload = initHash <= finalHash\n ? { from: this.editRange.init, to: day }\n : { from: day, to: this.editRange.init }\n\n this.editRange = void 0\n this.__addToModel(initHash === finalHash ? day : { target: day, ...payload })\n\n this.$emit('range-end', {\n from: this.__getShortDate(payload.from),\n to: this.__getShortDate(payload.to)\n })\n }\n },\n\n __onDayMouseover (dayIndex) {\n if (this.editRange !== void 0) {\n const final = { ...this.viewModel, day: dayIndex }\n\n Object.assign(this.editRange, {\n final,\n finalHash: this.__getDayHash(final)\n })\n }\n },\n\n __updateViewModel (year, month) {\n if (this.minNav !== void 0 && year <= this.minNav.year) {\n year = this.minNav.year\n if (month < this.minNav.month) {\n month = this.minNav.month\n }\n }\n\n if (this.maxNav !== void 0 && year >= this.maxNav.year) {\n year = this.maxNav.year\n if (month > this.maxNav.month) {\n month = this.maxNav.month\n }\n }\n\n const newHash = year + '/' + pad(month) + '/01'\n\n if (newHash !== this.viewModel.dateHash) {\n this.monthDirection = (this.viewModel.dateHash < newHash) === (this.$q.lang.rtl !== true) ? 'left' : 'right'\n if (year !== this.viewModel.year) {\n this.yearDirection = this.monthDirection\n }\n\n this.$nextTick(() => {\n this.startYear = year - year % yearsInterval - (year < 0 ? yearsInterval : 0)\n Object.assign(this.viewModel, {\n year,\n month,\n day: 1,\n dateHash: newHash\n })\n })\n }\n },\n\n __emitValue (val, action, date) {\n const value = val !== null && val.length === 1 && this.multiple === false\n ? val[0]\n : val\n\n this.lastEmitValue = value\n\n const { reason, details } = this.__getEmitParams(action, date)\n this.$emit('input', value, reason, details)\n },\n\n __emitImmediately (reason) {\n const date = this.daysModel[0] !== void 0 && this.daysModel[0].dateHash !== null\n ? { ...this.daysModel[0] }\n : { ...this.viewModel } // inherit day, hours, minutes, milliseconds...\n\n // nextTick required because of animation delay in viewModel\n this.$nextTick(() => {\n date.year = this.viewModel.year\n date.month = this.viewModel.month\n\n const maxDay = this.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 = this.__encodeEntry(date)\n this.lastEmitValue = value\n\n const { details } = this.__getEmitParams('', date)\n this.$emit('input', value, reason, details)\n })\n },\n\n __getEmitParams (action, date) {\n return date.from !== void 0\n ? {\n reason: `${action}-range`,\n details: {\n ...this.__getShortDate(date.target),\n from: this.__getShortDate(date.from),\n to: this.__getShortDate(date.to),\n changed: true // TODO remove in v2; legacy purposes\n }\n }\n : {\n reason: `${action}-day`,\n details: {\n ...this.__getShortDate(date),\n changed: true // TODO remove in v2; legacy purposes\n }\n }\n },\n\n __encodeEntry (date, mask, locale) {\n return date.from !== void 0\n ? { from: this.encodeObjectFn(date.from, mask, locale), to: this.encodeObjectFn(date.to, mask, locale) }\n : this.encodeObjectFn(date, mask, locale)\n },\n\n __addToModel (date) {\n let value\n\n if (this.multiple === true) {\n if (date.from !== void 0) {\n // we also need to filter out intersections\n\n const fromHash = this.__getDayHash(date.from)\n const toHash = this.__getDayHash(date.to)\n\n const days = this.daysModel\n .filter(day => day.dateHash < fromHash || day.dateHash > toHash)\n\n const ranges = this.rangeModel\n .filter(({ from, to }) => to.dateHash < fromHash || from.dateHash > toHash)\n\n value = days.concat(ranges).concat(date).map(entry => this.__encodeEntry(entry))\n }\n else {\n const model = this.normalizedModel.slice()\n model.push(this.__encodeEntry(date))\n value = model\n }\n }\n else {\n value = this.__encodeEntry(date)\n }\n\n this.__emitValue(value, 'add', date)\n },\n\n __removeFromModel (date) {\n if (this.noUnset === true) {\n return\n }\n\n let model = null\n\n if (this.multiple === true && Array.isArray(this.value) === true) {\n const val = this.__encodeEntry(date)\n\n if (date.from !== void 0) {\n model = this.value.filter(\n date => date.from !== void 0\n ? (date.from !== val.from && date.to !== val.to)\n : true\n )\n }\n else {\n model = this.value.filter(date => date !== val)\n }\n\n if (model.length === 0) {\n model = null\n }\n }\n\n this.__emitValue(model, 'remove', date)\n },\n\n __updateValue (mask, locale, reason) {\n const model = this.daysModel\n .concat(this.rangeModel)\n .map(entry => this.__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 this.$emit('input', (this.multiple === true ? model : model[0]) || null, reason)\n }\n },\n\n render (h) {\n const content = [\n h('div', {\n staticClass: 'q-date__content col relative-position'\n }, [\n h('transition', {\n props: { name: 'q-transition--fade' }\n }, [\n this[`__get${this.view}View`](h)\n ])\n ])\n ]\n\n const def = slot(this, 'default')\n def !== void 0 && content.push(\n h('div', { staticClass: 'q-date__actions' }, def)\n )\n\n if (this.name !== void 0 && this.disable !== true) {\n this.__injectFormInput(content, 'push')\n }\n\n return h('div', {\n class: this.classes,\n attrs: this.attrs,\n on: { ...this.qListeners }\n }, [\n this.__getHeader(h),\n\n h('div', {\n staticClass: 'q-date__main col column',\n attrs: { tabindex: -1 },\n ref: 'blurTarget'\n }, content)\n ])\n }\n})\n","import Vue from 'vue'\n\nimport QDialog from '../dialog/QDialog.js'\nimport QMenu from '../menu/QMenu.js'\n\nimport AnchorMixin from '../../mixins/anchor.js'\nimport { slot } from '../../utils/slot.js'\nimport AttrsMixin from '../../mixins/attrs.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nexport default Vue.extend({\n name: 'QPopupProxy',\n\n mixins: [ AttrsMixin, ListenersMixin, AnchorMixin ],\n\n props: {\n breakpoint: {\n type: [String, Number],\n default: 450\n }\n },\n\n data () {\n const breakpoint = parseInt(this.breakpoint, 10)\n return {\n type: this.$q.screen.width < breakpoint || this.$q.screen.height < breakpoint\n ? 'dialog'\n : 'menu'\n }\n },\n\n computed: {\n parsedBreakpoint () {\n return parseInt(this.breakpoint, 10)\n },\n\n onEvents () {\n return {\n ...this.qListeners,\n hide: this.__onHide\n }\n }\n },\n\n watch: {\n '$q.screen.width' (width) {\n if (this.$refs.popup.showing !== true) {\n this.__updateType(width, this.$q.screen.height, this.parsedBreakpoint)\n }\n },\n\n '$q.screen.height' (height) {\n if (this.$refs.popup.showing !== true) {\n this.__updateType(this.$q.screen.width, height, this.parsedBreakpoint)\n }\n },\n\n breakpoint (breakpoint) {\n if (this.$refs.popup.showing !== true) {\n this.__updateType(this.$q.screen.width, this.$q.screen.height, parseInt(breakpoint, 10))\n }\n }\n },\n\n methods: {\n toggle (evt) {\n this.$refs.popup.toggle(evt)\n },\n\n show (evt) {\n this.$refs.popup.show(evt)\n },\n\n hide (evt) {\n this.$refs.popup.hide(evt)\n },\n\n __onHide (evt) {\n this.__updateType(this.$q.screen.width, this.$q.screen.height, this.parsedBreakpoint)\n this.$emit('hide', evt)\n },\n\n __updateType (width, height, breakpoint) {\n const type = width < breakpoint || height < breakpoint\n ? 'dialog'\n : 'menu'\n\n if (this.type !== type) {\n this.type = type\n }\n }\n },\n\n render (h) {\n const def = slot(this, 'default')\n\n const props = (\n this.type === 'menu' &&\n def !== void 0 &&\n def[0] !== void 0 &&\n def[0].componentOptions !== void 0 &&\n def[0].componentOptions.Ctor !== void 0 &&\n def[0].componentOptions.Ctor.sealedOptions !== void 0 &&\n ['QDate', 'QTime', 'QCarousel', 'QColor'].includes(\n def[0].componentOptions.Ctor.sealedOptions.name\n )\n ) ? { cover: true, maxHeight: '99vh' } : {}\n\n const data = {\n ref: 'popup',\n props: { ...props, ...this.qAttrs },\n on: this.onEvents\n }\n\n let component\n\n if (this.type === 'dialog') {\n component = QDialog\n }\n else {\n component = QMenu\n data.props.target = this.target\n data.props.contextMenu = this.contextMenu\n data.props.noParentEvent = true\n data.props.separateClosePopup = true\n }\n\n return h(component, data, def)\n }\n})\n","import { closePortals } from '../mixins/portal.js'\nimport { isKeyCode } from '../utils/key-composition.js'\n\n/*\n * depth\n * < 0 --> close all chain\n * 0 --> disabled\n * > 0 --> close chain up to N parent\n */\n\nfunction getDepth (value) {\n if (value === false) {\n return 0\n }\n if (value === true || value === void 0) {\n return 1\n }\n\n const depth = parseInt(value, 10)\n return isNaN(depth) ? 0 : depth\n}\n\nfunction destroy (el) {\n const ctx = el.__qclosepopup\n if (ctx !== void 0) {\n el.removeEventListener('click', ctx.handler)\n el.removeEventListener('keyup', ctx.handlerKey)\n delete el.__qclosepopup\n }\n}\n\nexport default {\n name: 'close-popup',\n\n bind (el, { value }, vnode) {\n if (el.__qclosepopup !== void 0) {\n destroy(el)\n el.__qclosepopup_destroyed = true\n }\n\n const ctx = {\n depth: getDepth(value),\n\n handler (evt) {\n // allow @click to be emitted\n ctx.depth !== 0 && setTimeout(() => {\n closePortals(vnode.componentInstance || vnode.context, evt, ctx.depth)\n })\n },\n\n handlerKey (evt) {\n isKeyCode(evt, 13) === true && ctx.handler(evt)\n }\n }\n\n el.__qclosepopup = ctx\n\n el.addEventListener('click', ctx.handler)\n el.addEventListener('keyup', ctx.handlerKey)\n },\n\n update (el, { value, oldValue }) {\n if (el.__qclosepopup !== void 0 && value !== oldValue) {\n el.__qclosepopup.depth = getDepth(value)\n }\n },\n\n unbind (el) {\n if (el.__qclosepopup_destroyed === void 0) {\n destroy(el)\n }\n else {\n delete el.__qclosepopup_destroyed\n }\n }\n}\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n"],"sourceRoot":""}