{"version":3,"sources":["webpack:///./src/components/base/TheSmartDate.vue?5278","webpack:///src/components/base/TheSmartDate.vue","webpack:///./src/components/base/TheSmartDate.vue?ff2a","webpack:///./node_modules/quasar/src/utils/patterns.js","webpack:///./node_modules/quasar/src/mixins/validate.js","webpack:///./node_modules/quasar/src/components/field/QField.js","webpack:///./node_modules/quasar/src/mixins/file.js","webpack:///./node_modules/quasar/src/mixins/mask.js","webpack:///./node_modules/quasar/src/mixins/composition.js","webpack:///./node_modules/quasar/src/components/input/QInput.js","webpack:///./node_modules/quasar/src/utils/private/date-persian.js","webpack:///./node_modules/quasar/src/utils/format.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:///./src/components/base/TheSmartDate.vue?e3b2","webpack:///./src/components/base/TheSmartDate.vue?9aef","webpack:///./node_modules/quasar/src/mixins/form.js"],"names":["render","_vm","this","_c","_self","staticClass","class","labelColor","style","color","_v","_s","label","_e","_t","disabled","disable","attrs","placeholder","scopedSlots","_u","key","fn","model","on","clearValue","ref","date","min","$refs","hide","value","callback","$$v","expression","proxy","staticRenderFns","name","props","type","String","default","mandatory","Boolean","required","validator","prop","watch","immediate","handler","$date","convertDateStringToDate","$emit","methods","hex","hexa","hexOrHexa","rgb","rgba","testPattern","v","test","time","fulltime","timeOrFulltime","email","hexColor","hexaColor","hexOrHexaColor","rgbColor","rgbaColor","rgbOrRgbaColor","hexOrRgbColor","hexaOrRgbaColor","anyColor","lazyRulesValues","error","errorMessage","noErrorIcon","rules","Array","reactiveRules","lazyRules","includes","isDirty","innerError","innerErrorMessage","__validateIfNeeded","val","__resetValidation","unwatchRules","$watch","focused","hasActiveRules","innerLoading","debouncedValidate","invalid","targetEl","document","getElementById","targetUid","setAttribute","computed","length","hasRules","debounce","validate","validateIndex","cancel","index","setDirty","update","err","msg","m","promises","i","rule","res","push","Promise","all","then","isArray","find","r","e","console","changedRules","getTargetUid","uid","extend","mixins","inheritAttrs","stackLabel","hint","hideHint","prefix","suffix","bgColor","filled","outlined","borderless","standout","square","loading","labelSlot","bottomSlots","hideBottomSpace","rounded","dense","itemAligned","counter","clearable","clearIcon","readonly","autofocus","for","maxlength","Number","maxValues","__getControl","innerValue","len","max","inputValue","hideSelected","hasValue","displayValue","fieldClass","styleType","hasError","floatingLabel","hasLabel","isDark","shouldRenderBottom","cls","id","field","$el","editable","emitValue","__emitValue","computedErrorMessage","__focus","el","activeElement","contains","blur","target","hasAttribute","querySelector","focus","preventScroll","h","node","$scopedSlots","prepend","slotsEvents","__getControlContainer","__getInnerAppendNode","QIcon","$q","iconSet","QSpinner","tag","clear","clearableEvents","append","__getInnerAppend","__getControlChild","hasShadow","__getShadowControl","rawControl","control","tabindex","qAttrs","controlSlotScope","labelClass","slot","concat","__getDefaultSlot","bottomSlotScope","role","hasCounter","main","click","computedCounter","content","hasPopupOpen","__onControlFocusin","__onControlFocusout","clearTimeout","focusoutTimer","setTimeout","hasFocus","platform","is","mobile","input","$nextTick","resetValidation","__onPreRender","__onPostRender","classes","before","contentClass","controlEvents","__getContent","__getBottom","after","__clearValue","__getControlEvents","focusin","focusout","__onControlPopupShow","__onControlPopupHide","shouldActivate","filterFiles","files","rejectedFiles","failedPropValidation","filterFn","acceptedFiles","forEach","file","stopAndPreventDrag","dataTransfer","dropEffect","FileValueMixin","dt","window","DataTransfer","ClipboardEvent","clipboardData","Object","from","items","add","NAMED_MASKS","datetime","phone","card","TOKENS","pattern","negate","S","N","A","transform","toLocaleUpperCase","a","toLocaleLowerCase","X","x","KEYS","keys","regex","RegExp","tokenRegexMask","join","escRegex","MARKER","fromCharCode","mask","reverseFillMask","fillMask","unmaskedValue","__updateMaskInternals","__updateMaskValue","__unmask","hasMask","masked","__mask","__fillWithMask","size","maskMarked","slice","pad","padPos","indexOf","autogrow","computedUnmask","maskReplaced","computedMask","fillChar","fillCharEscaped","replace","unmask","extract","firstMatch","unmaskChar","negateChar","_","char1","esc","token","char2","c","unmaskMatcher","extractLast","extractMatcher","map","re","unmaskMatch","exec","extractMatch","extractMatcherLength","str","shift","split","rawVal","updateMaskInternals","inputType","inp","end","selectionEnd","endReverse","unmasked","preMasked","changed","cursor","Math","setSelectionRange","__moveCursorRightReverse","__moveCursorRight","start","selection","noMarkBefore","limit","__moveCursorLeft","__getPaddedMaskMarked","__moveCursorLeftReverse","qListeners","keydown","selectionStart","keyCode","preventDefault","shiftKey","__maskReverse","valIndex","output","maskIndex","valChar","maskDef","firstTokenIndex","isJapanese","isChinese","isKorean","isPlainText","qComposing","__onInput","data","isComposing","firefox","QField","shadowText","inputClass","inputStyle","stopValueWatcher","emitCachedValue","hasOwnProperty","typedNumber","tempValue","__adjustHeight","rows","height","__getInitialMaskedValue","isTextarea","paste","__onPaste","change","__onChange","__onFinishEditing","compositionstart","compositionupdate","compositionend","__onComposition","__onMaskedKeydown","animationend","__onAnimationend","nameProp","select","__moveCursorForPaste","isTypeText","stopWatcher","emitValueFn","NaN","emitTimer","requestAnimationFrame","parentStyle","parentNode","overflow","marginBottom","scrollHeight","__getCurValue","inputAttrs","onEvents","domProps","formDomProps","breaks","toJalaali","gy","gm","gd","prototype","toString","call","getDate","getMonth","getFullYear","d2j","g2d","toGregorian","jy","jm","jd","d2g","j2d","isLeapJalaaliYear","jalCalLeap","jalaaliMonthLength","bl","jump","leap","n","jp","Error","div","jalCal","withoutLeap","leapJ","leapG","march","jdn","k","jdn1f","d","j","b","char","calendars","locale","calendar","landscape","textColor","flat","bordered","__getMask","__getLocale","lang","dateOnly","Date","timeFill","jDate","year","month","day","hour","minute","second","millisecond","getHours","getMinutes","getSeconds","getMilliseconds","MILLISECONDS_IN_DAY","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","defaultMask","reverseToken","regexStore","getRegexData","dateLocale","days","daysShort","months","monthsShort","regexText","match","YY","YYYY","M","MMM","MMMM","D","H","s","aa","Z","ZZ","substring","getDateLocale","paramDateLocale","langProps","formatTimezone","offset","delimeter","sign","absOffset","abs","hours","floor","minutes","__splitDate","defaultModel","timezoneOffset","dateHash","timeHash","assign","langOpts","tzString","stamp","parseInt","isNaN","y","maxDay","getWeekOfYear","thursday","setDate","getDay","firstThursday","ds","getTimezoneOffset","setHours","weekDiff","startOfDate","unit","utc","t","getDiff","sub","interval","getTime","getDateDiff","subtract","getDayOfYear","getOrdinal","formatter","forcedYear","ceil","Q","dddd","forcedTimezoneOffset","tzOffset","formatDate","__forcedYear","__forcedTimezoneOffset","Infinity","text","yearsInterval","views","viewIsValid","yearMonthValidator","lineStr","multiple","range","title","subtitle","defaultYearMonth","yearsInMonthView","events","Function","eventColor","emitImmediately","options","navigationMinYearMonth","navigationMaxYearMonth","noUnset","firstDayOfWeek","todayBtn","minimal","defaultView","innerMask","innerLocale","viewModel","__getViewModel","direction","rtl","view","monthDirection","yearDirection","startYear","editRange","lastEmitValue","__updateViewModel","blurTarget","__updateValue","normalizedModel","filter","__decodeString","to","gDate","__getDayHash","daysModel","rangeModel","reduce","acc","getNativeDateFn","init","daysInModel","pluralDay","valueOf","headerTitle","minSelectedModel","maxSelectedModel","sort","arrowLeft","arrowRight","reverse","first","computedFirstDayOfWeek","__getCurrentDate","prev","next","minNav","maxNav","entry","hash","__getMonthHash","hashFrom","hashTo","cur","initHash","final","finalHash","fromHash","toHash","viewMonthHash","includeFrom","includeTo","daysInMonth","dayHash","evtColor","endDay","prevJM","prevJY","viewDays","fill","event","eventDaysMap","selectionDaysMap","in","daysMap","selected","unelevated","computedColor","computedTextColor","rangeMap","rangeFrom","rangeTo","rangeView","editRangeFrom","editRangeTo","today","left","afterDays","__addToModel","setCalendarTo","descending","__getDefaultViewModel","decoded","headerClass","headerSubtitle","computedTabindex","cache","keyup","QBtn","icon","round","setToday","dir","goTo","boundaries","dateArrow","noCaps","__getNavigation","__goToMonth","navBoundaries","__goToYear","daysOfWeek","__onDayClick","mouseover","__onDayMouseover","currentYear","isDisabled","active","__setMonth","unshift","stop","years","__setYear","isImmediate","__emitImmediately","monthHash","__removeFromModel","dayIndex","dayProps","__getShortDate","payload","__toggleDate","newHash","action","reason","details","__getEmitParams","__encodeEntry","encodeObjectFn","ranges","def","__injectFormInput","__getHeader","component","QInput","QPopupProxy","QDate","child","className","$createElement","formAttrs","FormFieldMixin"],"mappings":"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","file":"js/chunk-48438498.92cc0065.js","sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"full-width bg-white\"},[(_vm.label)?_c('div',{staticClass:\"row items-center q-mb-sm text-caption text-capitalize\"},[_c('div',{class:{ 'text-grey': !_vm.labelColor },style:({ color: _vm.labelColor })},[_vm._v(\" \"+_vm._s(_vm.label)+\" \")]),(_vm.mandatory)?_c('div',{staticClass:\"text-red q-ml-xs\"},[_vm._v(\"*\")]):_vm._e(),_c('div',{staticClass:\"q-ml-md\"},[_vm._t(\"info\")],2)]):_vm._e(),_c('div',{staticClass:\"border-full q-px-sm input\",class:{ disabled: _vm.disable }},[_c('q-input',{attrs:{\"disable\":_vm.disable,\"dense\":\"\",\"borderless\":\"\",\"mask\":\"date\",\"placeholder\":_vm.placeholder,\"input-class\":\"text-dark text-weight-medium text-caption\"},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [(_vm.model && !_vm.disable)?_c('q-icon',{staticClass:\"cursor-pointer q-mr-sm\",attrs:{\"name\":\"eva-close-outline\",\"size\":\"18px\",\"color\":\"grey\"},on:{\"click\":_vm.clearValue}}):_vm._e(),_c('q-icon',{staticClass:\"cursor-pointer\",attrs:{\"name\":\"eva-calendar-outline\",\"size\":\"20px\"}},[_c('q-popup-proxy',{ref:\"date\",attrs:{\"transition-show\":\"scale\",\"transition-hide\":\"scale\"}},[_c('q-date',{attrs:{\"options\":(date) => date >= _vm.min,\"minimal\":\"\"},on:{\"input\":() => _vm.$refs.date.hide()},model:{value:(_vm.model),callback:function ($$v) {_vm.model=$$v},expression:\"model\"}})],1)],1)]},proxy:true}]),model:{value:(_vm.model),callback:function ($$v) {_vm.model=$$v},expression:\"model\"}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/vue-cli-plugin-quasar/lib/loader.transform-quasar-imports.js!../../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TheSmartDate.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/vue-cli-plugin-quasar/lib/loader.transform-quasar-imports.js!../../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TheSmartDate.vue?vue&type=script&lang=js&\"","// file referenced from docs\n\nconst\n hex = /^#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/,\n hexa = /^#[0-9a-fA-F]{4}([0-9a-fA-F]{4})?$/,\n hexOrHexa = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,\n rgb = /^rgb\\(((0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5]),){2}(0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5])\\)$/,\n rgba = /^rgba\\(((0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5]),){2}(0|[1-9][\\d]?|1[\\d]{0,2}|2[\\d]?|2[0-4][\\d]|25[0-5]),(0|0\\.[0-9]+[1-9]|0\\.[1-9]+|1)\\)$/\n\nexport const testPattern = {\n date: v => /^-?[\\d]+\\/[0-1]\\d\\/[0-3]\\d$/.test(v),\n time: v => /^([0-1]?\\d|2[0-3]):[0-5]\\d$/.test(v),\n fulltime: v => /^([0-1]?\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/.test(v),\n timeOrFulltime: v => /^([0-1]?\\d|2[0-3]):[0-5]\\d(:[0-5]\\d)?$/.test(v),\n\n // -- RFC 5322 --\n // -- Added in v1.18.10 --\n // This is a basic helper validation.\n // For something more complex (like RFC 822) you should write and use your own rule.\n // We won't be accepting PRs to enhance the one below because of the reason above.\n email: v => /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/.test(v),\n\n hexColor: v => hex.test(v),\n hexaColor: v => hexa.test(v),\n hexOrHexaColor: v => hexOrHexa.test(v),\n\n rgbColor: v => rgb.test(v),\n rgbaColor: v => rgba.test(v),\n rgbOrRgbaColor: v => rgb.test(v) || rgba.test(v),\n\n hexOrRgbColor: v => hex.test(v) || rgb.test(v),\n hexaOrRgbaColor: v => hexa.test(v) || rgba.test(v),\n anyColor: v => hexOrHexa.test(v) || rgb.test(v) || rgba.test(v)\n}\n\nexport default {\n testPattern\n}\n","import { testPattern } from '../utils/patterns.js'\nimport debounce from '../utils/debounce.js'\n\nconst lazyRulesValues = [ true, false, 'ondemand' ]\n\nexport default {\n props: {\n value: {},\n\n error: {\n type: Boolean,\n default: null\n },\n errorMessage: String,\n noErrorIcon: Boolean,\n\n rules: Array,\n reactiveRules: Boolean,\n lazyRules: {\n type: [ Boolean, String ],\n validator: v => lazyRulesValues.includes(v)\n }\n },\n\n data () {\n return {\n isDirty: null,\n innerError: false,\n innerErrorMessage: void 0\n }\n },\n\n watch: {\n value () {\n this.__validateIfNeeded()\n },\n\n disable (val) {\n if (val === true) {\n this.__resetValidation()\n }\n else {\n this.__validateIfNeeded(true)\n }\n },\n\n reactiveRules: {\n handler (val) {\n if (val === true) {\n if (this.unwatchRules === void 0) {\n this.unwatchRules = this.$watch('rules', () => {\n this.__validateIfNeeded(true)\n })\n }\n }\n else if (this.unwatchRules !== void 0) {\n this.unwatchRules()\n this.unwatchRules = void 0\n }\n },\n immediate: true\n },\n\n focused (focused) {\n if (focused === true) {\n if (this.isDirty === null) {\n this.isDirty = false\n }\n }\n else if (this.isDirty === false) {\n this.isDirty = true\n\n if (\n this.hasActiveRules === true &&\n this.lazyRules !== 'ondemand' &&\n // Don't re-trigger if it's already in progress;\n // It might mean that focus switched to submit btn and\n // QForm's submit() has been called already (ENTER key)\n this.innerLoading === false\n ) {\n this.debouncedValidate()\n }\n }\n },\n\n hasError (invalid) {\n const targetEl = document.getElementById(this.targetUid)\n targetEl !== null && targetEl.setAttribute('aria-invalid', invalid === true)\n }\n },\n\n computed: {\n hasRules () {\n return this.rules !== void 0 &&\n this.rules !== null &&\n this.rules.length > 0\n },\n\n hasActiveRules () {\n return this.disable !== true && this.hasRules === true\n },\n\n hasError () {\n return this.error === true || this.innerError === true\n },\n\n computedErrorMessage () {\n return typeof this.errorMessage === 'string' && this.errorMessage.length > 0\n ? this.errorMessage\n : this.innerErrorMessage\n }\n },\n\n created () {\n this.debouncedValidate = debounce(this.validate, 0)\n },\n\n mounted () {\n this.validateIndex = 0\n },\n\n beforeDestroy () {\n this.unwatchRules !== void 0 && this.unwatchRules()\n this.debouncedValidate.cancel()\n },\n\n methods: {\n resetValidation () {\n this.isDirty = null\n this.__resetValidation()\n },\n\n /*\n * Return value\n * - true (validation succeeded)\n * - false (validation failed)\n * - Promise (pending async validation)\n */\n validate (val = this.value) {\n if (this.hasActiveRules !== true) {\n return true\n }\n\n const index = ++this.validateIndex\n\n const setDirty = this.innerLoading !== true\n ? () => this.isDirty !== true && (this.isDirty = true)\n : () => {}\n\n const update = (err, msg) => {\n err === true && setDirty()\n\n if (this.innerError !== err) {\n this.innerError = err\n }\n\n const m = msg || void 0\n\n if (this.innerErrorMessage !== m) {\n this.innerErrorMessage = m\n }\n\n if (this.innerLoading !== false) {\n this.innerLoading = false\n }\n }\n\n const promises = []\n\n for (let i = 0; i < this.rules.length; i++) {\n const rule = this.rules[i]\n let res\n\n if (typeof rule === 'function') {\n res = rule(val, testPattern)\n }\n else if (typeof rule === 'string' && testPattern[rule] !== void 0) {\n res = testPattern[rule](val)\n }\n\n if (res === false || typeof res === 'string') {\n update(true, res)\n return false\n }\n else if (res !== true && res !== void 0) {\n promises.push(res)\n }\n }\n\n if (promises.length === 0) {\n update(false)\n return true\n }\n\n if (this.innerLoading !== true) {\n this.innerLoading = true\n }\n\n return Promise.all(promises).then(\n res => {\n if (res === void 0 || Array.isArray(res) === false || res.length === 0) {\n index === this.validateIndex && update(false)\n return true\n }\n\n const msg = res.find(r => r === false || typeof r === 'string')\n index === this.validateIndex && update(msg !== void 0, msg)\n return msg === void 0\n },\n e => {\n if (index === this.validateIndex) {\n console.error(e)\n update(true)\n }\n\n return false\n }\n )\n },\n\n __resetValidation () {\n this.debouncedValidate.cancel()\n this.validateIndex++\n this.innerLoading = false\n this.innerError = false\n this.innerErrorMessage = void 0\n },\n\n __validateIfNeeded (changedRules) {\n if (\n this.hasActiveRules === true &&\n this.lazyRules !== 'ondemand' &&\n (this.isDirty === true || (this.lazyRules !== true && changedRules !== true))\n ) {\n this.debouncedValidate()\n }\n }\n }\n}\n","import Vue from 'vue'\n\nimport { fromSSR } from '../../plugins/Platform.js'\n\nimport QIcon from '../icon/QIcon.js'\nimport QSpinner from '../spinner/QSpinner.js'\n\nimport ValidateMixin from '../../mixins/validate.js'\nimport DarkMixin from '../../mixins/dark.js'\nimport AttrsMixin, { iconAsButton } from '../../mixins/attrs.js'\n\nimport { slot } from '../../utils/private/slot.js'\nimport uid from '../../utils/uid.js'\nimport { stop, prevent, stopAndPrevent } from '../../utils/event.js'\nimport { addFocusFn, removeFocusFn } from '../../utils/private/focus-manager.js'\n\nfunction getTargetUid (val) {\n return val === void 0 ? `f_${uid()}` : val\n}\n\nexport default Vue.extend({\n name: 'QField',\n\n mixins: [ DarkMixin, ValidateMixin, AttrsMixin ],\n\n inheritAttrs: false,\n\n props: {\n label: String,\n stackLabel: Boolean,\n hint: String,\n hideHint: Boolean,\n prefix: String,\n suffix: String,\n\n labelColor: String,\n color: String,\n bgColor: String,\n\n filled: Boolean,\n outlined: Boolean,\n borderless: Boolean,\n standout: [Boolean, String],\n\n square: Boolean,\n\n loading: Boolean,\n\n labelSlot: Boolean,\n\n bottomSlots: Boolean,\n hideBottomSpace: Boolean,\n\n rounded: Boolean,\n dense: Boolean,\n itemAligned: Boolean,\n\n counter: Boolean,\n\n clearable: Boolean,\n clearIcon: String,\n\n disable: Boolean,\n readonly: Boolean,\n\n autofocus: Boolean,\n\n for: String,\n\n maxlength: [Number, String],\n maxValues: [Number, String] // private, do not add to JSON; internally needed by QSelect\n },\n\n data () {\n return {\n focused: false,\n targetUid: getTargetUid(this.for),\n\n // used internally by validation for QInput\n // or menu handling for QSelect\n innerLoading: false\n }\n },\n\n watch: {\n for (val) {\n // don't transform targetUid into a computed\n // prop as it will break SSR\n this.targetUid = getTargetUid(val)\n }\n },\n\n computed: {\n editable () {\n return this.disable !== true && this.readonly !== true\n },\n\n hasValue () {\n const value = this.__getControl === void 0 ? this.value : this.innerValue\n\n return value !== void 0 &&\n value !== null &&\n ('' + value).length > 0\n },\n\n computedCounter () {\n if (this.counter !== false) {\n const len = typeof this.value === 'string' || typeof this.value === 'number'\n ? ('' + this.value).length\n : (Array.isArray(this.value) === true ? this.value.length : 0)\n\n const max = this.maxlength !== void 0\n ? this.maxlength\n : this.maxValues\n\n return len + (max !== void 0 ? ' / ' + max : '')\n }\n },\n\n floatingLabel () {\n return this.stackLabel === true ||\n this.focused === true ||\n typeof this.inputValue === 'number' ||\n (typeof this.inputValue === 'string' && this.inputValue.length > 0) ||\n (this.hideSelected !== true && this.hasValue === true) ||\n (\n this.displayValue !== void 0 &&\n this.displayValue !== null &&\n ('' + this.displayValue).length > 0\n )\n },\n\n shouldRenderBottom () {\n return this.bottomSlots === true ||\n this.hint !== void 0 ||\n this.hasRules === true ||\n this.counter === true ||\n this.error !== null\n },\n\n classes () {\n return {\n [this.fieldClass]: this.fieldClass !== void 0,\n\n [`q-field--${this.styleType}`]: true,\n 'q-field--rounded': this.rounded,\n 'q-field--square': this.square,\n\n 'q-field--focused': this.focused === true,\n 'q-field--highlighted': this.focused === true || this.hasError === true,\n 'q-field--float': this.floatingLabel,\n 'q-field--labeled': this.hasLabel,\n\n 'q-field--dense': this.dense,\n 'q-field--item-aligned q-item-type': this.itemAligned,\n 'q-field--dark': this.isDark,\n\n 'q-field--auto-height': this.__getControl === void 0,\n\n 'q-field--with-bottom': this.hideBottomSpace !== true && this.shouldRenderBottom === true,\n 'q-field--error': this.hasError,\n\n 'q-field--readonly': this.readonly === true && this.disable !== true,\n 'q-field--disabled': this.disable === true\n }\n },\n\n styleType () {\n if (this.filled === true) { return 'filled' }\n if (this.outlined === true) { return 'outlined' }\n if (this.borderless === true) { return 'borderless' }\n if (this.standout) { return 'standout' }\n return 'standard'\n },\n\n contentClass () {\n const cls = []\n\n if (this.hasError === true) {\n cls.push('text-negative')\n }\n else if (typeof this.standout === 'string' && this.standout.length > 0 && this.focused === true) {\n return this.standout\n }\n else if (this.color !== void 0) {\n cls.push('text-' + this.color)\n }\n\n if (this.bgColor !== void 0) {\n cls.push(`bg-${this.bgColor}`)\n }\n\n return cls\n },\n\n hasLabel () {\n return this.labelSlot === true || this.label !== void 0\n },\n\n labelClass () {\n if (\n this.labelColor !== void 0 &&\n this.hasError !== true\n ) {\n return 'text-' + this.labelColor\n }\n },\n\n controlSlotScope () {\n return {\n id: this.targetUid,\n field: this.$el,\n editable: this.editable,\n focused: this.focused,\n floatingLabel: this.floatingLabel,\n value: this.value,\n emitValue: this.__emitValue\n }\n },\n\n bottomSlotScope () {\n return {\n id: this.targetUid,\n field: this.$el,\n editable: this.editable,\n focused: this.focused,\n value: this.value,\n errorMessage: this.computedErrorMessage\n }\n },\n\n attrs () {\n const attrs = {\n for: this.targetUid\n }\n\n if (this.disable === true) {\n attrs['aria-disabled'] = 'true'\n }\n else if (this.readonly === true) {\n attrs['aria-readonly'] = 'true'\n }\n\n return attrs\n }\n },\n\n methods: {\n focus () {\n addFocusFn(this.__focus)\n },\n\n blur () {\n removeFocusFn(this.__focus)\n const el = document.activeElement\n // IE can have null document.activeElement\n if (el !== null && this.$el.contains(el)) {\n el.blur()\n }\n },\n\n __focus () {\n const el = document.activeElement\n let target = this.$refs.target\n // IE can have null document.activeElement\n if (target !== void 0 && (el === null || el.id !== this.targetUid)) {\n target.hasAttribute('tabindex') === true || (target = target.querySelector('[tabindex]'))\n target !== null && target !== el && target.focus({ preventScroll: true })\n }\n },\n\n __getContent (h) {\n const node = []\n\n this.$scopedSlots.prepend !== void 0 && node.push(\n h('div', {\n staticClass: 'q-field__prepend q-field__marginal row no-wrap items-center',\n key: 'prepend',\n on: this.slotsEvents\n }, this.$scopedSlots.prepend())\n )\n\n node.push(\n h('div', {\n staticClass: 'q-field__control-container col relative-position row no-wrap q-anchor--skip'\n }, this.__getControlContainer(h))\n )\n\n this.hasError === true && this.noErrorIcon === false && node.push(\n this.__getInnerAppendNode(h, 'error', [\n h(QIcon, { props: { name: this.$q.iconSet.field.error, color: 'negative' } })\n ])\n )\n\n if (this.loading === true || this.innerLoading === true) {\n node.push(\n this.__getInnerAppendNode(\n h,\n 'inner-loading-append',\n this.$scopedSlots.loading !== void 0\n ? this.$scopedSlots.loading()\n : [ h(QSpinner, { props: { color: this.color } }) ]\n )\n )\n }\n else if (this.clearable === true && this.hasValue === true && this.editable === true) {\n node.push(\n this.__getInnerAppendNode(h, 'inner-clearable-append', [\n h(QIcon, {\n staticClass: 'q-field__focusable-action',\n props: { tag: 'button', name: this.clearIcon || this.$q.iconSet.field.clear },\n attrs: iconAsButton,\n on: this.clearableEvents\n })\n ])\n )\n }\n\n this.$scopedSlots.append !== void 0 && node.push(\n h('div', {\n staticClass: 'q-field__append q-field__marginal row no-wrap items-center',\n key: 'append',\n on: this.slotsEvents\n }, this.$scopedSlots.append())\n )\n\n this.__getInnerAppend !== void 0 && node.push(\n this.__getInnerAppendNode(h, 'inner-append', this.__getInnerAppend(h))\n )\n\n this.__getControlChild !== void 0 && node.push(\n this.__getControlChild(h)\n )\n\n return node\n },\n\n __getControlContainer (h) {\n const node = []\n\n this.prefix !== void 0 && this.prefix !== null && node.push(\n h('div', {\n staticClass: 'q-field__prefix no-pointer-events row items-center'\n }, [ this.prefix ])\n )\n\n if (this.hasShadow === true && this.__getShadowControl !== void 0) {\n node.push(\n this.__getShadowControl(h)\n )\n }\n\n if (this.__getControl !== void 0) {\n node.push(this.__getControl(h))\n }\n // internal usage only:\n else if (this.$scopedSlots.rawControl !== void 0) {\n node.push(this.$scopedSlots.rawControl())\n }\n else if (this.$scopedSlots.control !== void 0) {\n node.push(\n h('div', {\n ref: 'target',\n staticClass: 'q-field__native row',\n attrs: {\n tabindex: -1,\n ...this.qAttrs,\n 'data-autofocus': this.autofocus || void 0\n }\n }, this.$scopedSlots.control(this.controlSlotScope))\n )\n }\n\n this.hasLabel === true && node.push(\n h('div', {\n staticClass: 'q-field__label no-pointer-events absolute ellipsis',\n class: this.labelClass\n }, [ slot(this, 'label', this.label) ])\n )\n\n this.suffix !== void 0 && this.suffix !== null && node.push(\n h('div', {\n staticClass: 'q-field__suffix no-pointer-events row items-center'\n }, [ this.suffix ])\n )\n\n return node.concat(\n this.__getDefaultSlot !== void 0\n ? this.__getDefaultSlot(h)\n : slot(this, 'default')\n )\n },\n\n __getBottom (h) {\n let msg, key\n\n if (this.hasError === true) {\n key = 'q--slot-error'\n\n if (this.$scopedSlots.error !== void 0) {\n msg = this.$scopedSlots.error(this.bottomSlotScope)\n }\n else if (this.computedErrorMessage !== void 0) {\n msg = [ h('div', { attrs: { role: 'alert' } }, [ this.computedErrorMessage ]) ]\n key = this.computedErrorMessage\n }\n }\n else if (this.hideHint !== true || this.focused === true) {\n key = 'q--slot-hint'\n\n if (this.$scopedSlots.hint !== void 0) {\n msg = this.$scopedSlots.hint(this.bottomSlotScope)\n }\n else if (this.hint !== void 0) {\n msg = [ h('div', [ this.hint ]) ]\n key = this.hint\n }\n }\n\n const hasCounter = this.counter === true || this.$scopedSlots.counter !== void 0\n\n if (this.hideBottomSpace === true && hasCounter === false && msg === void 0) {\n return\n }\n\n const main = h('div', {\n key,\n staticClass: 'q-field__messages col'\n }, msg)\n\n return h('div', {\n staticClass: 'q-field__bottom row items-start q-field__bottom--' +\n (this.hideBottomSpace !== true ? 'animated' : 'stale'),\n on: { click: prevent }\n }, [\n this.hideBottomSpace === true\n ? main\n : h('transition', { props: { name: 'q-transition--field-message' } }, [\n main\n ]),\n\n hasCounter === true\n ? h('div', {\n staticClass: 'q-field__counter'\n }, this.$scopedSlots.counter !== void 0 ? this.$scopedSlots.counter() : [ this.computedCounter ])\n : null\n ])\n },\n\n __getInnerAppendNode (h, key, content) {\n return content === null ? null : h('div', {\n staticClass: 'q-field__append q-field__marginal row no-wrap items-center q-anchor--skip',\n key\n }, content)\n },\n\n __onControlPopupShow (e) {\n e !== void 0 && stop(e)\n this.$emit('popup-show', e)\n this.hasPopupOpen = true\n this.__onControlFocusin(e)\n },\n\n __onControlPopupHide (e) {\n e !== void 0 && stop(e)\n this.$emit('popup-hide', e)\n this.hasPopupOpen = false\n this.__onControlFocusout(e)\n },\n\n __onControlFocusin (e) {\n clearTimeout(this.focusoutTimer)\n if (this.editable === true && this.focused === false) {\n this.focused = true\n this.$emit('focus', e)\n }\n },\n\n __onControlFocusout (e, then) {\n clearTimeout(this.focusoutTimer)\n this.focusoutTimer = setTimeout(() => {\n if (\n document.hasFocus() === true && (\n this.hasPopupOpen === true ||\n this.$refs === void 0 ||\n this.$refs.control === void 0 ||\n this.$refs.control.contains(document.activeElement) !== false\n )\n ) {\n return\n }\n\n if (this.focused === true) {\n this.focused = false\n this.$emit('blur', e)\n }\n\n then !== void 0 && then()\n })\n },\n\n __clearValue (e) {\n // prevent activating the field but keep focus on desktop\n stopAndPrevent(e)\n\n if (this.$q.platform.is.mobile !== true) {\n const el = this.$refs.target || this.$el\n el.focus()\n }\n else if (this.$el.contains(document.activeElement) === true) {\n document.activeElement.blur()\n }\n\n if (this.type === 'file') {\n // do not let focus be triggered\n // as it will make the native file dialog\n // appear for another selection\n this.$refs.input.value = null\n }\n\n this.$emit('input', null)\n this.$emit('clear', this.value)\n\n this.$nextTick(() => {\n this.resetValidation()\n\n if (this.$q.platform.is.mobile !== true) {\n this.isDirty = false\n }\n })\n },\n\n __emitValue (value) {\n this.$emit('input', value)\n }\n },\n\n render (h) {\n this.__onPreRender !== void 0 && this.__onPreRender()\n this.__onPostRender !== void 0 && this.$nextTick(this.__onPostRender)\n\n const attrs = this.__getControl === void 0 && this.$scopedSlots.control === void 0\n ? {\n ...this.qAttrs,\n 'data-autofocus': this.autofocus || void 0,\n ...this.attrs\n }\n : this.attrs\n\n return h('label', {\n staticClass: 'q-field q-validation-component row no-wrap items-start',\n class: this.classes,\n attrs\n }, [\n this.$scopedSlots.before !== void 0 ? h('div', {\n staticClass: 'q-field__before q-field__marginal row no-wrap items-center',\n on: this.slotsEvents\n }, this.$scopedSlots.before()) : null,\n\n h('div', {\n staticClass: 'q-field__inner relative-position col self-stretch'\n }, [\n h('div', {\n ref: 'control',\n staticClass: 'q-field__control relative-position row no-wrap',\n class: this.contentClass,\n attrs: { tabindex: -1 },\n on: this.controlEvents\n }, this.__getContent(h)),\n\n this.shouldRenderBottom === true\n ? this.__getBottom(h)\n : null\n ]),\n\n this.$scopedSlots.after !== void 0 ? h('div', {\n staticClass: 'q-field__after q-field__marginal row no-wrap items-center',\n on: this.slotsEvents\n }, this.$scopedSlots.after()) : null\n ])\n },\n\n created () {\n this.__onPreRender !== void 0 && this.__onPreRender()\n\n this.slotsEvents = { click: prevent }\n\n this.clearableEvents = { click: this.__clearValue }\n\n this.controlEvents = this.__getControlEvents !== void 0\n ? this.__getControlEvents()\n : {\n focusin: this.__onControlFocusin,\n focusout: this.__onControlFocusout,\n 'popup-show': this.__onControlPopupShow,\n 'popup-hide': this.__onControlPopupHide\n }\n },\n\n mounted () {\n if (fromSSR === true && this.for === void 0) {\n this.targetUid = getTargetUid()\n }\n\n this.autofocus === true && this.focus()\n },\n\n activated () {\n if (this.shouldActivate !== true) { return }\n this.autofocus === true && this.focus()\n },\n\n deactivated () {\n this.shouldActivate = true\n },\n\n beforeDestroy () {\n clearTimeout(this.focusoutTimer)\n }\n})\n","import Platform from '../plugins/Platform.js'\nimport { stop, stopAndPrevent } from '../utils/event.js'\nimport cache from '../utils/private/cache.js'\n\nfunction filterFiles (files, rejectedFiles, failedPropValidation, filterFn) {\n const acceptedFiles = []\n\n files.forEach(file => {\n if (filterFn(file) === true) {\n acceptedFiles.push(file)\n }\n else {\n rejectedFiles.push({ failedPropValidation, file })\n }\n })\n\n return acceptedFiles\n}\n\nfunction stopAndPreventDrag (e) {\n e && e.dataTransfer && (e.dataTransfer.dropEffect = 'copy')\n stopAndPrevent(e)\n}\n\nexport default {\n props: {\n multiple: Boolean,\n accept: String,\n capture: String,\n maxFileSize: [ Number, String ],\n maxTotalSize: [ Number, String ],\n maxFiles: [ Number, String ],\n filter: Function\n },\n\n computed: {\n extensions () {\n if (this.accept !== void 0) {\n return this.accept.split(',').map(ext => {\n ext = ext.trim()\n if (ext === '*') { // support \"*\"\n return '*/'\n }\n else if (ext.endsWith('/*')) { // support \"image/*\" or \"*/*\"\n ext = ext.slice(0, ext.length - 1)\n }\n return ext.toUpperCase()\n })\n }\n },\n\n maxFilesNumber () {\n return parseInt(this.maxFiles, 10)\n },\n\n maxTotalSizeNumber () {\n return parseInt(this.maxTotalSize, 10)\n }\n },\n\n methods: {\n pickFiles (ev) {\n if (this.editable === true) {\n if (ev !== Object(ev)) {\n ev = { target: null }\n }\n\n if (ev.target !== null && ev.target.matches('input[type=\"file\"]') === true) {\n // stop propagation if it's not a real pointer event\n ev.clientX === 0 && ev.clientY === 0 && stop(ev)\n }\n else {\n const input = this.__getFileInput()\n input && input !== ev.target && input.click(ev)\n }\n }\n },\n\n addFiles (files) {\n if (this.editable && files) {\n this.__addFiles(null, files)\n }\n },\n\n __processFiles (e, filesToProcess, currentFileList, append) {\n let files = Array.from(filesToProcess || e.target.files)\n const rejectedFiles = []\n\n const done = () => {\n if (rejectedFiles.length > 0) {\n this.$emit('rejected', rejectedFiles)\n }\n }\n\n // filter file types\n if (this.accept !== void 0 && this.extensions.indexOf('*/') === -1) {\n files = filterFiles(files, rejectedFiles, 'accept', file => {\n return this.extensions.some(ext => (\n file.type.toUpperCase().startsWith(ext) ||\n file.name.toUpperCase().endsWith(ext)\n ))\n })\n\n if (files.length === 0) { return done() }\n }\n\n // filter max file size\n if (this.maxFileSize !== void 0) {\n const maxFileSize = parseInt(this.maxFileSize, 10)\n files = filterFiles(files, rejectedFiles, 'max-file-size', file => {\n return file.size <= maxFileSize\n })\n\n if (files.length === 0) { return done() }\n }\n\n // Cordova/iOS allows selecting multiple files even when the\n // multiple attribute is not specified. We also normalize drag'n'dropped\n // files here:\n if (this.multiple !== true && files.length > 0) {\n files = [ files[0] ]\n }\n\n files.forEach(file => {\n file.__key = file.webkitRelativePath + file.lastModified + file.name + file.size\n })\n\n if (append === true) {\n // Avoid duplicate files\n const filenameMap = currentFileList.map(entry => entry.__key)\n files = filterFiles(files, rejectedFiles, 'duplicate', file => {\n return filenameMap.includes(file.__key) === false\n })\n }\n\n if (files.length === 0) { return done() }\n\n if (this.maxTotalSize !== void 0) {\n let size = append === true\n ? currentFileList.reduce((total, file) => total + file.size, 0)\n : 0\n\n files = filterFiles(files, rejectedFiles, 'max-total-size', file => {\n size += file.size\n return size <= this.maxTotalSizeNumber\n })\n\n if (files.length === 0) { return done() }\n }\n\n // do we have custom filter function?\n if (typeof this.filter === 'function') {\n const filteredFiles = this.filter(files)\n files = filterFiles(files, rejectedFiles, 'filter', file => {\n return filteredFiles.includes(file)\n })\n }\n\n if (this.maxFiles !== void 0) {\n let filesNumber = append === true\n ? currentFileList.length\n : 0\n\n files = filterFiles(files, rejectedFiles, 'max-files', () => {\n filesNumber++\n return filesNumber <= this.maxFilesNumber\n })\n\n if (files.length === 0) { return done() }\n }\n\n done()\n\n if (files.length > 0) {\n return files\n }\n },\n\n __onDragOver (e) {\n stopAndPreventDrag(e)\n this.dnd !== true && (this.dnd = true)\n },\n\n __onDragLeave (e) {\n stopAndPrevent(e)\n\n // Safari bug: relatedTarget is null for over 10 years\n // https://bugs.webkit.org/show_bug.cgi?id=66547\n const gone = e.relatedTarget !== null || Platform.is.safari !== true\n ? e.relatedTarget !== this.$refs.dnd\n : document.elementsFromPoint(e.clientX, e.clientY).includes(this.$refs.dnd) === false\n\n gone === true && (this.dnd = false)\n },\n\n __onDrop (e) {\n stopAndPreventDrag(e)\n const files = e.dataTransfer.files\n\n if (files.length > 0) {\n this.__addFiles(null, files)\n }\n\n this.dnd = false\n },\n\n __getDnd (h, type) {\n if (this.dnd === true) {\n return h('div', {\n staticClass: `q-${type}__dnd absolute-full`,\n ref: 'dnd',\n on: cache(this, 'dnd', {\n dragenter: stopAndPreventDrag,\n dragover: stopAndPreventDrag,\n dragleave: this.__onDragLeave,\n drop: this.__onDrop\n })\n })\n }\n }\n }\n}\n\nexport const FileValueMixin = {\n computed: {\n formDomProps () {\n if (this.type !== 'file') {\n return\n }\n\n try {\n const dt = 'DataTransfer' in window\n ? new DataTransfer()\n : ('ClipboardEvent' in window\n ? new ClipboardEvent('').clipboardData\n : void 0\n )\n\n if (Object(this.value) === this.value) {\n ('length' in this.value\n ? Array.from(this.value)\n : [ this.value ]\n ).forEach(file => {\n dt.items.add(file)\n })\n }\n\n return {\n files: dt.files\n }\n }\n catch (e) {\n return {\n files: void 0\n }\n }\n }\n }\n}\n","import { shouldIgnoreKey } from '../utils/private/key-composition.js'\n\n// leave NAMED_MASKS at top of file (code referenced from docs)\nconst NAMED_MASKS = {\n date: '####/##/##',\n datetime: '####/##/## ##:##',\n time: '##:##',\n fulltime: '##:##:##',\n phone: '(###) ### - ####',\n card: '#### #### #### ####'\n}\n\nconst TOKENS = {\n '#': { pattern: '[\\\\d]', negate: '[^\\\\d]' },\n\n S: { pattern: '[a-zA-Z]', negate: '[^a-zA-Z]' },\n N: { pattern: '[0-9a-zA-Z]', negate: '[^0-9a-zA-Z]' },\n\n A: { pattern: '[a-zA-Z]', negate: '[^a-zA-Z]', transform: v => v.toLocaleUpperCase() },\n a: { pattern: '[a-zA-Z]', negate: '[^a-zA-Z]', transform: v => v.toLocaleLowerCase() },\n\n X: { pattern: '[0-9a-zA-Z]', negate: '[^0-9a-zA-Z]', transform: v => v.toLocaleUpperCase() },\n x: { pattern: '[0-9a-zA-Z]', negate: '[^0-9a-zA-Z]', transform: v => v.toLocaleLowerCase() }\n}\n\nconst KEYS = Object.keys(TOKENS)\nKEYS.forEach(key => {\n TOKENS[key].regex = new RegExp(TOKENS[key].pattern)\n})\n\nconst\n tokenRegexMask = new RegExp('\\\\\\\\([^.*+?^${}()|([\\\\]])|([.*+?^${}()|[\\\\]])|([' + KEYS.join('') + '])|(.)', 'g'),\n escRegex = /[.*+?^${}()|[\\]\\\\]/g\n\nconst MARKER = String.fromCharCode(1)\n\nexport default {\n props: {\n mask: String,\n reverseFillMask: Boolean,\n fillMask: [Boolean, String],\n unmaskedValue: Boolean\n },\n\n watch: {\n type () {\n this.__updateMaskInternals()\n },\n\n autogrow () {\n this.__updateMaskInternals()\n },\n\n mask (v) {\n if (v !== void 0) {\n this.__updateMaskValue(this.innerValue, true)\n }\n else {\n const val = this.__unmask(this.innerValue)\n this.__updateMaskInternals()\n this.value !== val && this.$emit('input', val)\n }\n },\n\n fillMask () {\n this.hasMask === true && this.__updateMaskValue(this.innerValue, true)\n },\n\n reverseFillMask () {\n this.hasMask === true && this.__updateMaskValue(this.innerValue, true)\n },\n\n unmaskedValue () {\n this.hasMask === true && this.__updateMaskValue(this.innerValue)\n }\n },\n\n methods: {\n __getInitialMaskedValue () {\n this.__updateMaskInternals()\n\n if (this.hasMask === true) {\n const masked = this.__mask(this.__unmask(this.value))\n\n return this.fillMask !== false\n ? this.__fillWithMask(masked)\n : masked\n }\n\n return this.value\n },\n\n __getPaddedMaskMarked (size) {\n if (size < this.maskMarked.length) {\n return this.maskMarked.slice(-size)\n }\n\n let\n maskMarked = this.maskMarked,\n pad = ''\n const\n padPos = maskMarked.indexOf(MARKER)\n\n if (padPos > -1) {\n for (let i = size - maskMarked.length; i > 0; i--) {\n pad += MARKER\n }\n\n maskMarked = maskMarked.slice(0, padPos) + pad + maskMarked.slice(padPos)\n }\n\n return maskMarked\n },\n\n __updateMaskInternals () {\n this.hasMask = this.mask !== void 0 &&\n this.mask.length > 0 &&\n (this.autogrow === true || ['textarea', 'text', 'search', 'url', 'tel', 'password'].includes(this.type))\n\n if (this.hasMask === false) {\n this.computedUnmask = void 0\n this.maskMarked = ''\n this.maskReplaced = ''\n return\n }\n\n const\n computedMask = NAMED_MASKS[this.mask] === void 0\n ? this.mask\n : NAMED_MASKS[this.mask],\n fillChar = typeof this.fillMask === 'string' && this.fillMask.length > 0\n ? this.fillMask.slice(0, 1)\n : '_',\n fillCharEscaped = fillChar.replace(escRegex, '\\\\$&'),\n unmask = [],\n extract = [],\n mask = []\n\n let\n firstMatch = this.reverseFillMask === true,\n unmaskChar = '',\n negateChar = ''\n\n computedMask.replace(tokenRegexMask, (_, char1, esc, token, char2) => {\n if (token !== void 0) {\n const c = TOKENS[token]\n mask.push(c)\n negateChar = c.negate\n if (firstMatch === true) {\n extract.push('(?:' + negateChar + '+)?(' + c.pattern + '+)?(?:' + negateChar + '+)?(' + c.pattern + '+)?')\n firstMatch = false\n }\n extract.push('(?:' + negateChar + '+)?(' + c.pattern + ')?')\n }\n else if (esc !== void 0) {\n unmaskChar = '\\\\' + (esc === '\\\\' ? '' : esc)\n mask.push(esc)\n unmask.push('([^' + unmaskChar + ']+)?' + unmaskChar + '?')\n }\n else {\n const c = char1 !== void 0 ? char1 : char2\n unmaskChar = c === '\\\\' ? '\\\\\\\\\\\\\\\\' : c.replace(escRegex, '\\\\\\\\$&')\n mask.push(c)\n unmask.push('([^' + unmaskChar + ']+)?' + unmaskChar + '?')\n }\n })\n\n const\n unmaskMatcher = new RegExp(\n '^' +\n unmask.join('') +\n '(' + (unmaskChar === '' ? '.' : '[^' + unmaskChar + ']') + '+)?' +\n (unmaskChar === '' ? '' : '[' + unmaskChar + ']*') + '$'\n ),\n extractLast = extract.length - 1,\n extractMatcher = extract.map((re, index) => {\n if (index === 0 && this.reverseFillMask === true) {\n return new RegExp('^' + fillCharEscaped + '*' + re)\n }\n else if (index === extractLast) {\n return new RegExp(\n '^' + re +\n '(' + (negateChar === '' ? '.' : negateChar) + '+)?' +\n (this.reverseFillMask === true ? '$' : fillCharEscaped + '*')\n )\n }\n\n return new RegExp('^' + re)\n })\n\n this.computedMask = mask\n this.computedUnmask = val => {\n const unmaskMatch = unmaskMatcher.exec(this.reverseFillMask === true ? val : val.slice(0, mask.length))\n if (unmaskMatch !== null) {\n val = unmaskMatch.slice(1).join('')\n }\n\n const\n extractMatch = [],\n extractMatcherLength = extractMatcher.length\n\n for (let i = 0, str = val; i < extractMatcherLength; i++) {\n const m = extractMatcher[i].exec(str)\n\n if (m === null) {\n break\n }\n\n str = str.slice(m.shift().length)\n extractMatch.push(...m)\n }\n if (extractMatch.length > 0) {\n return extractMatch.join('')\n }\n\n return val\n }\n this.maskMarked = mask.map(v => typeof v === 'string' ? v : MARKER).join('')\n this.maskReplaced = this.maskMarked.split(MARKER).join(fillChar)\n },\n\n __updateMaskValue (rawVal, updateMaskInternals, inputType) {\n const\n inp = this.$refs.input,\n end = inp.selectionEnd,\n endReverse = inp.value.length - end,\n unmasked = this.__unmask(rawVal)\n\n // Update here so unmask uses the original fillChar\n updateMaskInternals === true && this.__updateMaskInternals()\n\n const\n preMasked = this.__mask(unmasked),\n masked = this.fillMask !== false\n ? this.__fillWithMask(preMasked)\n : preMasked,\n changed = this.innerValue !== masked\n\n // We want to avoid \"flickering\" so we set value immediately\n inp.value !== masked && (inp.value = masked)\n\n changed === true && (this.innerValue = masked)\n\n document.activeElement === inp && this.$nextTick(() => {\n if (masked === this.maskReplaced) {\n const cursor = this.reverseFillMask === true ? this.maskReplaced.length : 0\n inp.setSelectionRange(cursor, cursor, 'forward')\n\n return\n }\n\n if (inputType === 'insertFromPaste' && this.reverseFillMask !== true) {\n const cursor = end - 1\n this.__moveCursorRight(inp, cursor, cursor)\n\n return\n }\n\n if (['deleteContentBackward', 'deleteContentForward'].indexOf(inputType) > -1) {\n const cursor = this.reverseFillMask === true\n ? (\n end === 0\n ? (masked.length > preMasked.length ? 1 : 0)\n : Math.max(0, masked.length - (masked === this.maskReplaced ? 0 : Math.min(preMasked.length, endReverse) + 1)) + 1\n )\n : end\n inp.setSelectionRange(cursor, cursor, 'forward')\n\n return\n }\n\n if (this.reverseFillMask === true) {\n if (changed === true) {\n const cursor = Math.max(0, masked.length - (masked === this.maskReplaced ? 0 : Math.min(preMasked.length, endReverse + 1)))\n\n if (cursor === 1 && end === 1) {\n inp.setSelectionRange(cursor, cursor, 'forward')\n }\n else {\n this.__moveCursorRightReverse(inp, cursor, cursor)\n }\n }\n else {\n const cursor = masked.length - endReverse\n inp.setSelectionRange(cursor, cursor, 'backward')\n }\n }\n else {\n if (changed === true) {\n const cursor = Math.max(0, this.maskMarked.indexOf(MARKER), Math.min(preMasked.length, end) - 1)\n this.__moveCursorRight(inp, cursor, cursor)\n }\n else {\n const cursor = end - 1\n this.__moveCursorRight(inp, cursor, cursor)\n }\n }\n })\n\n const val = this.unmaskedValue === true\n ? this.__unmask(masked)\n : masked\n\n String(this.value) !== val && this.__emitValue(val, true)\n },\n\n __moveCursorForPaste (inp, start, end) {\n const preMasked = this.__mask(this.__unmask(inp.value))\n\n start = Math.max(0, this.maskMarked.indexOf(MARKER), Math.min(preMasked.length, start))\n\n inp.setSelectionRange(start, end, 'forward')\n },\n\n __moveCursorLeft (inp, start, end, selection) {\n const noMarkBefore = this.maskMarked.slice(start - 1).indexOf(MARKER) === -1\n let i = Math.max(0, start - 1)\n\n for (; i >= 0; i--) {\n if (this.maskMarked[i] === MARKER) {\n start = i\n noMarkBefore === true && start++\n break\n }\n }\n\n if (\n i < 0 &&\n this.maskMarked[start] !== void 0 &&\n this.maskMarked[start] !== MARKER\n ) {\n return this.__moveCursorRight(inp, 0, 0)\n }\n\n start >= 0 && inp.setSelectionRange(\n start,\n selection === true ? end : start, 'backward'\n )\n },\n\n __moveCursorRight (inp, start, end, selection) {\n const limit = inp.value.length\n let i = Math.min(limit, end + 1)\n\n for (; i <= limit; i++) {\n if (this.maskMarked[i] === MARKER) {\n end = i\n break\n }\n else if (this.maskMarked[i - 1] === MARKER) {\n end = i\n }\n }\n\n if (\n i > limit &&\n this.maskMarked[end - 1] !== void 0 &&\n this.maskMarked[end - 1] !== MARKER\n ) {\n return this.__moveCursorLeft(inp, limit, limit)\n }\n\n inp.setSelectionRange(selection ? start : end, end, 'forward')\n },\n\n __moveCursorLeftReverse (inp, start, end, selection) {\n const\n maskMarked = this.__getPaddedMaskMarked(inp.value.length)\n let i = Math.max(0, start - 1)\n\n for (; i >= 0; i--) {\n if (maskMarked[i - 1] === MARKER) {\n start = i\n break\n }\n else if (maskMarked[i] === MARKER) {\n start = i\n if (i === 0) {\n break\n }\n }\n }\n\n if (\n i < 0 &&\n maskMarked[start] !== void 0 &&\n maskMarked[start] !== MARKER\n ) {\n return this.__moveCursorRightReverse(inp, 0, 0)\n }\n\n start >= 0 && inp.setSelectionRange(\n start,\n selection === true ? end : start, 'backward'\n )\n },\n\n __moveCursorRightReverse (inp, start, end, selection) {\n const\n limit = inp.value.length,\n maskMarked = this.__getPaddedMaskMarked(limit),\n noMarkBefore = maskMarked.slice(0, end + 1).indexOf(MARKER) === -1\n let i = Math.min(limit, end + 1)\n\n for (; i <= limit; i++) {\n if (maskMarked[i - 1] === MARKER) {\n end = i\n end > 0 && noMarkBefore === true && end--\n break\n }\n }\n\n if (\n i > limit &&\n maskMarked[end - 1] !== void 0 &&\n maskMarked[end - 1] !== MARKER\n ) {\n return this.__moveCursorLeftReverse(inp, limit, limit)\n }\n\n inp.setSelectionRange(selection === true ? start : end, end, 'forward')\n },\n\n __onMaskedKeydown (e) {\n this.qListeners.keydown !== void 0 && this.$emit('keydown', e)\n\n if (shouldIgnoreKey(e) === true) {\n return\n }\n\n const\n inp = this.$refs.input,\n start = inp.selectionStart,\n end = inp.selectionEnd\n\n if (e.keyCode === 37 || e.keyCode === 39) { // Left / Right\n const fn = this['__moveCursor' + (e.keyCode === 39 ? 'Right' : 'Left') + (this.reverseFillMask === true ? 'Reverse' : '')]\n\n e.preventDefault()\n fn(inp, start, end, e.shiftKey)\n }\n else if (\n e.keyCode === 8 && // Backspace\n this.reverseFillMask !== true &&\n start === end\n ) {\n this.__moveCursorLeft(inp, start, end, true)\n }\n else if (\n e.keyCode === 46 && // Delete\n this.reverseFillMask === true &&\n start === end\n ) {\n this.__moveCursorRightReverse(inp, start, end, true)\n }\n\n this.$emit('keydown', e)\n },\n\n __mask (val) {\n if (val === void 0 || val === null || val === '') { return '' }\n\n if (this.reverseFillMask === true) {\n return this.__maskReverse(val)\n }\n\n const mask = this.computedMask\n\n let valIndex = 0, output = ''\n\n for (let maskIndex = 0; maskIndex < mask.length; maskIndex++) {\n const\n valChar = val[valIndex],\n maskDef = mask[maskIndex]\n\n if (typeof maskDef === 'string') {\n output += maskDef\n valChar === maskDef && valIndex++\n }\n else if (valChar !== void 0 && maskDef.regex.test(valChar)) {\n output += maskDef.transform !== void 0\n ? maskDef.transform(valChar)\n : valChar\n valIndex++\n }\n else {\n return output\n }\n }\n\n return output\n },\n\n __maskReverse (val) {\n const\n mask = this.computedMask,\n firstTokenIndex = this.maskMarked.indexOf(MARKER)\n\n let valIndex = val.length - 1, output = ''\n\n for (let maskIndex = mask.length - 1; maskIndex >= 0 && valIndex > -1; maskIndex--) {\n const maskDef = mask[maskIndex]\n\n let valChar = val[valIndex]\n\n if (typeof maskDef === 'string') {\n output = maskDef + output\n valChar === maskDef && valIndex--\n }\n else if (valChar !== void 0 && maskDef.regex.test(valChar)) {\n do {\n output = (maskDef.transform !== void 0 ? maskDef.transform(valChar) : valChar) + output\n valIndex--\n valChar = val[valIndex]\n // eslint-disable-next-line no-unmodified-loop-condition\n } while (firstTokenIndex === maskIndex && valChar !== void 0 && maskDef.regex.test(valChar))\n }\n else {\n return output\n }\n }\n\n return output\n },\n\n __unmask (val) {\n return typeof val !== 'string' || this.computedUnmask === void 0\n ? (typeof val === 'number' ? this.computedUnmask('' + val) : val)\n : this.computedUnmask(val)\n },\n\n __fillWithMask (val) {\n if (this.maskReplaced.length - val.length <= 0) {\n return val\n }\n\n return this.reverseFillMask === true && val.length > 0\n ? this.maskReplaced.slice(0, -val.length) + val\n : val + this.maskReplaced.slice(val.length)\n }\n }\n}\n","import { client } from '../plugins/Platform.js'\n\nconst isJapanese = /[\\u3000-\\u303f\\u3040-\\u309f\\u30a0-\\u30ff\\uff00-\\uff9f\\u4e00-\\u9faf\\u3400-\\u4dbf]/\nconst isChinese = /[\\u4e00-\\u9fff\\u3400-\\u4dbf\\u{20000}-\\u{2a6df}\\u{2a700}-\\u{2b73f}\\u{2b740}-\\u{2b81f}\\u{2b820}-\\u{2ceaf}\\uf900-\\ufaff\\u3300-\\u33ff\\ufe30-\\ufe4f\\uf900-\\ufaff\\u{2f800}-\\u{2fa1f}]/u\nconst isKorean = /[\\u3131-\\u314e\\u314f-\\u3163\\uac00-\\ud7a3]/\nconst isPlainText = /[a-z0-9_ -]$/i\n\nexport default {\n methods: {\n __onComposition (e) {\n if (e.type === 'compositionend' || e.type === 'change') {\n if (e.target.qComposing !== true) { return }\n e.target.qComposing = false\n this.__onInput(e)\n }\n else if (\n e.type === 'compositionupdate' &&\n e.target.qComposing !== true &&\n typeof e.data === 'string'\n ) {\n const isComposing = client.is.firefox === true\n ? isPlainText.test(e.data) === false\n : isJapanese.test(e.data) === true || isChinese.test(e.data) === true || isKorean.test(e.data) === true\n\n if (isComposing === true) {\n e.target.qComposing = true\n }\n }\n }\n }\n}\n","import Vue from 'vue'\n\nimport QField from '../field/QField.js'\n\nimport { FormFieldMixin } from '../../mixins/form.js'\nimport { FileValueMixin } from '../../mixins/file.js'\nimport MaskMixin from '../../mixins/mask.js'\nimport CompositionMixin from '../../mixins/composition.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nimport { stop } from '../../utils/event.js'\nimport { addFocusFn } from '../../utils/private/focus-manager.js'\n\nexport default Vue.extend({\n name: 'QInput',\n\n mixins: [\n QField,\n MaskMixin,\n CompositionMixin,\n FormFieldMixin,\n FileValueMixin,\n ListenersMixin\n ],\n\n props: {\n value: { required: false },\n\n shadowText: String,\n\n type: {\n type: String,\n default: 'text'\n },\n\n debounce: [String, Number],\n\n autogrow: Boolean, // makes a textarea\n\n inputClass: [Array, String, Object],\n inputStyle: [Array, String, Object]\n },\n\n watch: {\n value (v) {\n if (this.hasMask === true) {\n if (this.stopValueWatcher === true) {\n this.stopValueWatcher = false\n\n if (String(v) === this.emitCachedValue) {\n return\n }\n }\n\n this.__updateMaskValue(v)\n }\n else if (this.innerValue !== v) {\n this.innerValue = v\n\n if (\n this.type === 'number' &&\n this.hasOwnProperty('tempValue') === true\n ) {\n if (this.typedNumber === true) {\n this.typedNumber = false\n }\n else {\n delete this.tempValue\n }\n }\n }\n\n // textarea only\n this.autogrow === true && this.$nextTick(this.__adjustHeight)\n },\n\n // some browsers lose the native input value\n // so we need to reattach it dynamically\n // (like type=\"password\" <-> type=\"text\"; see #12078)\n type () {\n if (this.$refs.input) {\n this.$refs.input.value = this.value\n }\n },\n\n autogrow (autogrow) {\n // textarea only\n if (autogrow === true) {\n this.$nextTick(this.__adjustHeight)\n }\n // if it has a number of rows set respect it\n else if (this.qAttrs.rows > 0 && this.$refs.input !== void 0) {\n const inp = this.$refs.input\n inp.style.height = 'auto'\n }\n },\n\n dense () {\n this.autogrow === true && this.$nextTick(this.__adjustHeight)\n }\n },\n\n data () {\n return { innerValue: this.__getInitialMaskedValue() }\n },\n\n computed: {\n isTextarea () {\n return this.type === 'textarea' || this.autogrow === true\n },\n\n isTypeText () {\n return this.isTextarea === true || ['text', 'search', 'url', 'tel', 'password'].includes(this.type)\n },\n\n fieldClass () {\n return `q-${this.isTextarea === true ? 'textarea' : 'input'}` +\n (this.autogrow === true ? ' q-textarea--autogrow' : '')\n },\n\n hasShadow () {\n return this.type !== 'file' &&\n typeof this.shadowText === 'string' &&\n this.shadowText.length > 0\n },\n\n onEvents () {\n const on = {\n ...this.qListeners,\n input: this.__onInput,\n paste: this.__onPaste,\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n change: this.__onChange,\n blur: this.__onFinishEditing,\n focus: stop\n }\n\n on.compositionstart = on.compositionupdate = on.compositionend = this.__onComposition\n\n if (this.hasMask === true) {\n on.keydown = this.__onMaskedKeydown\n }\n\n if (this.autogrow === true) {\n on.animationend = this.__onAnimationend\n }\n\n return on\n },\n\n inputAttrs () {\n const attrs = {\n tabindex: 0,\n 'data-autofocus': this.autofocus || void 0,\n rows: this.type === 'textarea' ? 6 : void 0,\n 'aria-label': this.label,\n name: this.nameProp,\n ...this.qAttrs,\n id: this.targetUid,\n type: this.type,\n maxlength: this.maxlength,\n disabled: this.disable === true,\n readonly: this.readonly === true\n }\n\n if (this.autogrow === true) {\n attrs.rows = 1\n }\n\n return attrs\n }\n },\n\n methods: {\n focus () {\n addFocusFn(() => {\n const el = document.activeElement\n if (\n this.$refs.input !== void 0 &&\n this.$refs.input !== el &&\n // IE can have null document.activeElement\n (el === null || el.id !== this.targetUid)\n ) {\n this.$refs.input.focus({ preventScroll: true })\n }\n })\n },\n\n select () {\n this.$refs.input !== void 0 && this.$refs.input.select()\n },\n\n getNativeElement () {\n return this.$refs.input\n },\n\n __onPaste (e) {\n if (this.hasMask === true && this.reverseFillMask !== true) {\n const inp = e.target\n this.__moveCursorForPaste(inp, inp.selectionStart, inp.selectionEnd)\n }\n\n this.$emit('paste', e)\n },\n\n __onInput (e) {\n if (!e || !e.target || e.target.qComposing === true) {\n return\n }\n\n if (this.type === 'file') {\n this.$emit('input', e.target.files)\n return\n }\n\n const val = e.target.value\n\n if (this.hasMask === true) {\n this.__updateMaskValue(val, false, e.inputType)\n }\n else {\n this.__emitValue(val)\n\n if (this.isTypeText === true && e.target === document.activeElement) {\n const { selectionStart, selectionEnd } = e.target\n\n if (selectionStart !== void 0 && selectionEnd !== void 0) {\n this.$nextTick(() => {\n if (e.target === document.activeElement && val.indexOf(e.target.value) === 0) {\n e.target.setSelectionRange(selectionStart, selectionEnd)\n }\n })\n }\n }\n }\n\n // we need to trigger it immediately too,\n // to avoid \"flickering\"\n this.autogrow === true && this.__adjustHeight()\n },\n\n __onAnimationend (e) {\n this.qListeners.animationend !== void 0 && this.$emit('animationend', e)\n this.__adjustHeight()\n },\n\n __emitValue (val, stopWatcher) {\n this.emitValueFn = () => {\n if (\n this.type !== 'number' &&\n this.hasOwnProperty('tempValue') === true\n ) {\n delete this.tempValue\n }\n\n if (this.value !== val && this.emitCachedValue !== val) {\n this.emitCachedValue = val\n\n stopWatcher === true && (this.stopValueWatcher = true)\n this.$emit('input', val)\n\n this.$nextTick(() => {\n this.emitCachedValue === val && (this.emitCachedValue = NaN)\n })\n }\n\n this.emitValueFn = void 0\n }\n\n if (this.type === 'number') {\n this.typedNumber = true\n this.tempValue = val\n }\n\n if (this.debounce !== void 0) {\n clearTimeout(this.emitTimer)\n this.tempValue = val\n this.emitTimer = setTimeout(this.emitValueFn, this.debounce)\n }\n else {\n this.emitValueFn()\n }\n },\n\n // textarea only\n __adjustHeight () {\n requestAnimationFrame(() => {\n const inp = this.$refs.input\n if (inp !== void 0) {\n const parentStyle = inp.parentNode.style\n const { overflow } = inp.style\n\n // reset height of textarea to a small size to detect the real height\n // but keep the total control size the same\n // Firefox rulez #14263, #14344\n this.$q.platform.is.firefox !== true && (inp.style.overflow = 'hidden')\n inp.style.height = '1px'\n parentStyle.marginBottom = (inp.scrollHeight - 1) + 'px'\n\n inp.style.height = inp.scrollHeight + 'px'\n inp.style.overflow = overflow\n parentStyle.marginBottom = ''\n }\n })\n },\n\n __onChange (e) {\n this.__onComposition(e)\n\n clearTimeout(this.emitTimer)\n this.emitValueFn !== void 0 && this.emitValueFn()\n\n this.$emit('change', e)\n },\n\n __onFinishEditing (e) {\n e !== void 0 && stop(e)\n\n clearTimeout(this.emitTimer)\n this.emitValueFn !== void 0 && this.emitValueFn()\n\n this.typedNumber = false\n this.stopValueWatcher = false\n delete this.tempValue\n\n // we need to use setTimeout instead of this.$nextTick\n // to avoid a bug where focusout is not emitted for type date/time/week/...\n this.type !== 'file' && setTimeout(() => {\n if (this.$refs.input !== void 0) {\n this.$refs.input.value = this.innerValue !== void 0 ? this.innerValue : ''\n }\n })\n },\n\n __getCurValue () {\n return this.hasOwnProperty('tempValue') === true\n ? this.tempValue\n : (this.innerValue !== void 0 ? this.innerValue : '')\n },\n\n __getShadowControl (h) {\n return h('div', {\n staticClass: 'q-field__native q-field__shadow absolute-bottom no-pointer-events' +\n (this.isTextarea === true ? '' : ' text-no-wrap')\n }, [\n h('span', { staticClass: 'invisible' }, this.__getCurValue()),\n h('span', this.shadowText)\n ])\n },\n\n __getControl (h) {\n return h(this.isTextarea === true ? 'textarea' : 'input', {\n ref: 'input',\n staticClass: 'q-field__native q-placeholder',\n style: this.inputStyle,\n class: this.inputClass,\n attrs: this.inputAttrs,\n on: this.onEvents,\n domProps: this.type !== 'file'\n ? { value: this.__getCurValue() }\n : this.formDomProps\n })\n }\n },\n\n created () {\n this.emitCachedValue = NaN\n },\n\n mounted () {\n // textarea only\n this.autogrow === true && this.__adjustHeight()\n },\n\n beforeDestroy () {\n this.__onFinishEditing()\n }\n})\n","// 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","const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB']\n\nexport function humanStorageSize (bytes) {\n let u = 0\n\n while (parseInt(bytes, 10) >= 1024 && u < units.length - 1) {\n bytes /= 1024\n ++u\n }\n\n return `${bytes.toFixed(1)}${units[u]}`\n}\n\nexport function capitalize (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport function between (v, min, max) {\n return max <= min\n ? min\n : Math.min(max, Math.max(min, v))\n}\n\nexport function normalizeToInterval (v, min, max) {\n if (max <= min) {\n return min\n }\n\n const size = (max - min + 1)\n\n let index = min + (v - min) % size\n if (index < min) {\n index = size + index\n }\n\n return index === 0 ? 0 : index // fix for (-a % a) => -0\n}\n\nexport function pad (v, length = 2, char = '0') {\n if (v === void 0 || v === null) {\n return v\n }\n\n const val = '' + v\n return val.length >= length\n ? val\n : new Array(length - val.length + 1).join(char) + val\n}\n\nexport default {\n humanStorageSize,\n capitalize,\n between,\n normalizeToInterval,\n pad\n}\n","import { toJalaali } from '../utils/private/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 !== void 0\n ? { ...this.$q.lang.date, ...this.locale }\n : 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 './private/date-persian.js'\nimport lang, { defaultLang } 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\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, _, 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 = 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 Vue from 'vue'\n\nimport QBtn from '../btn/QBtn.js'\nimport DateTimeMixin from '../../mixins/datetime.js'\n\nimport { slot } from '../../utils/private/slot.js'\nimport { formatDate, __splitDate, getDateDiff } from '../../utils/date.js'\nimport { pad } from '../../utils/format.js'\nimport { jalaaliMonthLength, toGregorian } from '../../utils/private/date-persian.js'\nimport cache from '../../utils/private/cache.js'\nimport { isObject } from '../../utils/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\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 if (this.$refs.blurTarget !== void 0 && this.$el.contains(document.activeElement) === true) {\n this.$refs.blurTarget.focus()\n }\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 =>\n date.dateHash !== null &&\n date.day !== null &&\n date.month !== null &&\n date.year !== null\n )\n },\n\n rangeModel () {\n const fn = date => this.__decodeString(date, this.innerMask, this.innerLocale)\n return this.normalizedModel\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 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 const date = this.today\n const month = this.daysMap[this.__getMonthHash(date)]\n\n if (month === void 0 || month.includes(date.day) === false) {\n this.__addToModel(date)\n }\n\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 { render, staticRenderFns } from \"./TheSmartDate.vue?vue&type=template&id=6b518cf7&scoped=true&\"\nimport script from \"./TheSmartDate.vue?vue&type=script&lang=js&\"\nexport * from \"./TheSmartDate.vue?vue&type=script&lang=js&\"\nimport style0 from \"./TheSmartDate.vue?vue&type=style&index=0&id=6b518cf7&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6b518cf7\",\n null\n \n)\n\nexport default component.exports\nimport QInput from 'quasar/src/components/input/QInput.js';\nimport QIcon from 'quasar/src/components/icon/QIcon.js';\nimport QPopupProxy from 'quasar/src/components/popup-proxy/QPopupProxy.js';\nimport QDate from 'quasar/src/components/date/QDate.js';\nimport QField from 'quasar/src/components/field/QField.js';\nimport qInstall from \"../../../node_modules/vue-cli-plugin-quasar/lib/runtime.auto-import.js\";\nqInstall(component, 'components', {QInput,QIcon,QPopupProxy,QDate,QField});\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/vue-cli-plugin-quasar/lib/loader.auto-import.js?kebab!../../../node_modules/cache-loader/dist/cjs.js??ref--1-1!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TheSmartDate.vue?vue&type=style&index=0&id=6b518cf7&prod&scoped=true&lang=css&\"","export default {\n props: {\n name: String\n },\n\n computed: {\n formAttrs () {\n return {\n type: 'hidden',\n name: this.name,\n value: this.value\n }\n }\n },\n\n methods: {\n __injectFormInput (child, action, className) {\n child[action](\n this.$createElement('input', {\n staticClass: 'hidden',\n class: className,\n attrs: this.formAttrs,\n domProps: this.formDomProps\n })\n )\n }\n }\n}\n\nexport const FormFieldMixin = {\n props: {\n name: String\n },\n\n computed: {\n nameProp () {\n return this.name || this.for\n }\n }\n}\n"],"sourceRoot":""}