UNPKG

@sbh321/qcalendar

Version:

A forked version of Jeff Galbraith's fork of Quasar UI QCalendar

6 lines 50.5 kB
/*! * @subhambhandari/qcalendar v4.0.0-beta.19 * (c) 2024 Subham Bhandari <bhandarimaiya65@gmail.com> * Released under the MIT License. */ import{reactive,ref,computed,withDirectives,h,watch,getCurrentInstance,onBeforeUnmount,defineComponent,onBeforeUpdate,onMounted,Transition,nextTick}from"vue";const PARSE_REGEX=/^(\d{4})-(\d{1,2})(-(\d{1,2}))?([^\d]+(\d{1,2}))?(:(\d{1,2}))?(:(\d{1,2}))?(.(\d{1,3}))?$/,PARSE_DATE=/^(\d{4})-(\d{1,2})(-(\d{1,2}))/,PARSE_TIME=/(\d\d?)(:(\d\d?)|)(:(\d\d?)|)/,DAYS_IN_MONTH=[0,31,28,31,30,31,30,31,31,30,31,30,31],DAYS_IN_MONTH_LEAP=[0,31,29,31,30,31,30,31,31,30,31,30,31],DAYS_IN_MONTH_MIN=28,DAYS_IN_MONTH_MAX=31,MONTH_MAX=12,MONTH_MIN=1,DAY_MIN=1,DAYS_IN_WEEK=7,MINUTES_IN_HOUR=60,HOURS_IN_DAY=24,FIRST_HOUR=0,MILLISECONDS_IN_MINUTE=6e4,MILLISECONDS_IN_HOUR=36e5,MILLISECONDS_IN_DAY=864e5,MILLISECONDS_IN_WEEK=6048e5,Timestamp={date:"",time:"",year:0,month:0,day:0,weekday:0,hour:0,minute:0,doy:0,workweek:0,hasDay:!1,hasTime:!1,past:!1,current:!1,future:!1,disabled:!1,currentWeekday:!1},TimeObject={hour:0,minute:0};function today(){const e=new Date,t=""+(e.getMonth()+1),a=""+e.getDate(),n=e.getFullYear();return[n,padNumber(t,2),padNumber(a,2)].join("-")}function getStartOfWeek(e,t,a){let n=copyTimestamp(e);if(1===n.day||0===n.weekday)while(!t.includes(n.weekday))n=nextDay(n);return n=findWeekday(n,t[0],prevDay),n=updateFormatted(n),a&&(n=updateRelative(n,a,n.hasTime)),n}function getEndOfWeek(e,t,a){let n=copyTimestamp(e);const r=daysInMonth(n.year,n.month);if(r===n.day||6===n.weekday)while(!t.includes(n.weekday))n=prevDay(n);return n=findWeekday(n,t[t.length-1],nextDay),n=updateFormatted(n),a&&(n=updateRelative(n,a,n.hasTime)),n}function getStartOfMonth(e){const t=copyTimestamp(e);return t.day=DAY_MIN,updateFormatted(t),t}function getEndOfMonth(e){const t=copyTimestamp(e);return t.day=daysInMonth(t.year,t.month),updateFormatted(t),t}function parseTime(e){const t=Object.prototype.toString.call(e);switch(t){case"[object Number]":return e;case"[object String]":{const a=PARSE_TIME.exec(e);return a?60*parseInt(a[1],10)+parseInt(a[3]||0,10):!1}case"[object Object]":return"number"!==typeof e.hour||"number"!==typeof e.minute?!1:60*e.hour+e.minute}return!1}function validateTimestamp(e){return!!PARSE_REGEX.exec(e)}function compareTimestamps(e,t){return JSON.stringify(e)===JSON.stringify(t)}function compareDate(e,t){return getDate(e)===getDate(t)}function compareTime(e,t){return getTime(e)===getTime(t)}function compareDateTime(e,t){return getDateTime(e)===getDateTime(t)}function parsed(e){const t=PARSE_REGEX.exec(e);return t?{date:e,time:padNumber(parseInt(t[6],10)||0,2)+":"+padNumber(parseInt(t[8],10)||0,2),year:parseInt(t[1],10),month:parseInt(t[2],10),day:parseInt(t[4],10)||1,hour:isNaN(parseInt(t[6],10))?0:parseInt(t[6],10),minute:isNaN(parseInt(t[8],10))?0:parseInt(t[8],10),weekday:0,doy:0,workweek:0,hasDay:!!t[4],hasTime:!0,past:!1,current:!1,future:!1,disabled:!1}:null}function parseTimestamp(e,t){let a=parsed(e);return null===a?null:(a=updateFormatted(a),t&&updateRelative(a,t,a.hasTime),a)}function parseDate(e,t=!1){const a=t?"UTC":"";return updateFormatted({date:padNumber(e[`get${a}FullYear`](),4)+"-"+padNumber(e[`get${a}Month`]()+1,2)+"-"+padNumber(e[`get${a}Date`](),2),time:padNumber(e[`get${a}Hours`]()||0,2)+":"+padNumber(e[`get${a}Minutes`]()||0,2),year:e[`get${a}FullYear`](),month:e[`get${a}Month`]()+1,day:e[`get${a}Date`](),hour:e[`get${a}Hours`](),minute:e[`get${a}Minutes`](),weekday:0,doy:0,workweek:0,hasDay:!0,hasTime:!0,past:!1,current:!1,future:!1,disabled:!1})}function getDayIdentifier(e){return 1e8*e.year+1e6*e.month+1e4*e.day}function getTimeIdentifier(e){return 100*e.hour+e.minute}function getDayTimeIdentifier(e){return getDayIdentifier(e)+getTimeIdentifier(e)}function diffTimestamp(e,t,a){const n=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute),r=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute);return!0===a&&r<n?0:r-n}function updateRelative(e,t,a=!1){let n=getDayIdentifier(t),r=getDayIdentifier(e),o=n===r;return e.hasTime&&a&&o&&(n=getTimeIdentifier(t),r=getTimeIdentifier(e),o=n===r),e.past=r<n,e.current=o,e.future=r>n,e.currentWeekday=e.weekday===t.weekday,e}function updateMinutes(e,t,a){return e.hasTime=!0,e.hour=Math.floor(t/MINUTES_IN_HOUR),e.minute=t%MINUTES_IN_HOUR,e.time=getTime(e),a&&updateRelative(e,a,!0),e}function updateWeekday(e){return e.weekday=getWeekday(e),e}function updateDayOfYear(e){return e.doy=getDayOfYear(e),e}function updateWorkWeek(e){return e.workweek=getWorkWeek(e),e}function updateDisabled(e,t,a,n,r){const o=getDayIdentifier(e);if(void 0!==t){const i=getDayIdentifier(parsed(t));o<=i&&(e.disabled=!0)}if(!0!==e.disabled&&void 0!==a){const d=getDayIdentifier(parsed(a));o>=d&&(e.disabled=!0)}if(!0!==e.disabled&&Array.isArray(n)&&n.length>0)for(const u in n)if(n[u]===e.weekday){e.disabled=!0;break}if(!0!==e.disabled&&Array.isArray(r)&&r.length>0)for(const l in r)if(Array.isArray(r[l])&&2===r[l].length){const s=parsed(r[l][0]),c=parsed(r[l][1]);if(isBetweenDates(e,s,c)){e.disabled=!0;break}}else{const m=getDayIdentifier(parseTimestamp(r[l]+" 00:00"));if(m===o){e.disabled=!0;break}}return e}function updateFormatted(e){return e.hasTime=!0,e.time=getTime(e),e.date=getDate(e),e.weekday=getWeekday(e),e.doy=getDayOfYear(e),e.workweek=getWorkWeek(e),e}function getDayOfYear(e){if(0!==e.year)return(Date.UTC(e.year,e.month-1,e.day)-Date.UTC(e.year,0,0))/24/60/60/1e3}function getWorkWeek(e){0===e.year&&(e=parseTimestamp(today()));const t=makeDate(e);if(isNaN(t))return 0;const a=new Date(t.getFullYear(),t.getMonth(),t.getDate()),n=(a.setDate(a.getDate()-(a.getDay()+6)%7+3),new Date(a.getFullYear(),0,4)),r=(n.setDate(n.getDate()-(n.getDay()+6)%7+3),a.getTimezoneOffset()-n.getTimezoneOffset()),o=(a.setHours(a.getHours()-r),(a-n)/MILLISECONDS_IN_WEEK);return 1+Math.floor(o)}function getWeekday(e){let t=e.weekday;if(e.hasDay){const a=Math.floor,n=e.day,r=(e.month+9)%MONTH_MAX+1,o=a(e.year/100),i=e.year%100-(e.month<=2?1:0);t=((n+a(2.6*r-.2)-2*o+i+a(i/4)+a(o/4))%7+7)%7}return t}function isLeapYear(e){return 1===(e%4===0^e%100===0^e%400===0)}function daysInMonth(e,t){return(isLeapYear(e)?DAYS_IN_MONTH_LEAP:DAYS_IN_MONTH)[t]}function copyTimestamp(e){return{...e}}function padNumber(e,t){let a=String(e);while(a.length<t)a="0"+a;return a}function getDate(e){let t=padNumber(e.year,4)+"-"+padNumber(e.month,2);return e.hasDay&&(t+="-"+padNumber(e.day,2)),t}function getTime(e){return e.hasTime?padNumber(e.hour,2)+":"+padNumber(e.minute,2):""}function getDateTime(e){return getDate(e)+" "+(e.hasTime?getTime(e):"00:00")}function nextDay(e){return++e.day,e.weekday=(e.weekday+1)%DAYS_IN_WEEK,e.day>DAYS_IN_MONTH_MIN&&e.day>daysInMonth(e.year,e.month)&&(e.day=DAY_MIN,++e.month,e.month>MONTH_MAX)&&(e.month=MONTH_MIN,++e.year),e}function prevDay(e){return e.day--,e.weekday=(e.weekday+6)%DAYS_IN_WEEK,e.day<DAY_MIN&&(e.month--,e.month<MONTH_MIN&&(e.year--,e.month=MONTH_MAX),e.day=daysInMonth(e.year,e.month)),e}function moveRelativeDays(e,t=nextDay,a=1,n=[0,1,2,3,4,5,6]){return relativeDays(e,t,a,n)}function relativeDays(e,t=nextDay,a=1,n=[0,1,2,3,4,5,6]){n.includes(e.weekday)||0!==e.weekday||t!==nextDay||++a;while(--a>=0)e=t(e),n.length<7&&!n.includes(e.weekday)&&++a;return e}function findWeekday(e,t,a=nextDay,n=6){while(e.weekday!==t&&--n>=0)e=a(e);return e}function getWeekdaySkips(t){const e=[1,1,1,1,1,1,1],n=[0,0,0,0,0,0,0];for(let e=0;e<t.length;++e)n[t[e]]=1;for(let a=0;a<DAYS_IN_WEEK;++a){let t=1;for(let e=1;e<DAYS_IN_WEEK;++e){const r=(a+e)%DAYS_IN_WEEK;if(n[r])break;++t}e[a]=n[a]*t}return e}function createDayList(e,t,a,n,r,o,i=[],d=[],u=42,l=0){const s=getDayIdentifier(t),c=[];let m=copyTimestamp(e),v=0,y=v===s;if(!(s<getDayIdentifier(e)))while((!y||c.length<l)&&c.length<u){if(v=getDayIdentifier(m),y=y||v>s&&c.length>=l,y)break;if(0===n[m.weekday]);else{const p=copyTimestamp(m);updateFormatted(p),updateRelative(p,a),updateDisabled(p,r,o,i,d),c.push(p)}m=relativeDays(m,nextDay)}return c}function createIntervalList(t,a,n,r,o){const i=[];for(let e=0;e<r;++e){const d=(a+e)*n,u=copyTimestamp(t);i.push(updateMinutes(u,d,o))}return i}function createNativeLocaleFormatter(n,r){const o=(e,t)=>"";return"undefined"===typeof Intl||"undefined"===typeof Intl.DateTimeFormat?o:(t,e)=>{try{const a=new Intl.DateTimeFormat(n||void 0,r(t,e));return a.format(makeDateTime(t))}catch(e){return console.error(`Intl.DateTimeFormat: ${e.message} -> `+getDateTime(t)),o}}}function makeDate(e,t=!0){return t?new Date(Date.UTC(e.year,e.month-1,e.day,0,0)):new Date(e.year,e.month-1,e.day,0,0)}function makeDateTime(e,t=!0){return t?new Date(Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute)):new Date(e.year,e.month-1,e.day,e.hour,e.minute)}function validateNumber(e){return isFinite(parseInt(e,10))}function maxTimestamp(e,t=!1){const a=!0===t?getDayTimeIdentifier:getDayIdentifier;return e.reduce((e,t)=>{return Math.max(a(e),a(t))===a(e)?e:t})}function minTimestamp(e,t=!1){const a=!0===t?getDayTimeIdentifier:getDayIdentifier;return e.reduce((e,t)=>{return Math.min(a(e),a(t))===a(e)?e:t})}function isBetweenDates(e,t,a,n){const r=getDayIdentifier(e)+(!0===n?getTimeIdentifier(e):0),o=getDayIdentifier(t)+(!0===n?getTimeIdentifier(t):0),i=getDayIdentifier(a)+(!0===n?getTimeIdentifier(a):0);return r>=o&&r<=i}function isOverlappingDates(e,t,a,n){const r=getDayIdentifier(e),o=getDayIdentifier(t),i=getDayIdentifier(a),d=getDayIdentifier(n);return r>=i&&r<=d||o>=i&&o<=d||i>=r&&o>=d}function addToDate(e,t){const n=copyTimestamp(e);let r;return __forEachObject(t,(e,t)=>{if(void 0!==n[t]){n[t]+=parseInt(e,10);const a=NORMALIZE_TYPES.indexOf(t);-1!==a&&(r=void 0===r?a:Math.min(a,r))}}),void 0!==r&&__normalize(n,NORMALIZE_TYPES[r]),updateFormatted(n),n}const NORMALIZE_TYPES=["minute","hour","day","month"];function __forEachObject(t,a){Object.keys(t).forEach(e=>a(t[e],e))}function __normalizeMinute(e){if(e.minute>=MINUTES_IN_HOUR||e.minute<0){const t=Math.floor(e.minute/MINUTES_IN_HOUR);e.minute-=t*MINUTES_IN_HOUR,e.hour+=t,__normalizeHour(e)}return e}function __normalizeHour(e){if(e.hour>=HOURS_IN_DAY||e.hour<0){const t=Math.floor(e.hour/HOURS_IN_DAY);e.hour-=t*HOURS_IN_DAY,e.day+=t,__normalizeDay(e)}return e}function __normalizeDay(t){__normalizeMonth(t);let a=daysInMonth(t.year,t.month);if(t.day>a){++t.month,t.month>MONTH_MAX&&__normalizeMonth(t);let e=t.day-a;a=daysInMonth(t.year,t.month);do{e>a&&(++t.month,t.month>MONTH_MAX&&__normalizeMonth(t),e-=a,a=daysInMonth(t.year,t.month))}while(e>a);t.day=e}else if(t.day<=0){let e=-1*t.day;--t.month,t.month<=0&&__normalizeMonth(t),a=daysInMonth(t.year,t.month);do{e>a&&(e-=a,--t.month,t.month<=0&&__normalizeMonth(t),a=daysInMonth(t.year,t.month))}while(e>a);t.day=a-e}return t}function __normalizeMonth(e){if(e.month>MONTH_MAX){const t=Math.floor(e.month/MONTH_MAX);e.month=e.month%MONTH_MAX,e.year+=t}else e.month<MONTH_MIN&&(e.month+=MONTH_MAX,--e.year);return e}function __normalize(e,t){switch(t){case"minute":return __normalizeMinute(e);case"hour":return __normalizeHour(e);case"day":return __normalizeDay(e);case"month":return __normalizeMonth(e)}}function daysBetween(e,t){const a=diffTimestamp(e,t,!0);return Math.floor(a/MILLISECONDS_IN_DAY)}function weeksBetween(e,t){let a=copyTimestamp(e),n=copyTimestamp(t);return a=findWeekday(a,0),n=findWeekday(n,6),Math.ceil(daysBetween(a,n)/DAYS_IN_WEEK)}const weekdayDateMap={Sun:new Date("2020-01-05T00:00:00.000Z"),Mon:new Date("2020-01-06T00:00:00.000Z"),Tue:new Date("2020-01-07T00:00:00.000Z"),Wed:new Date("2020-01-08T00:00:00.000Z"),Thu:new Date("2020-01-09T00:00:00.000Z"),Fri:new Date("2020-01-10T00:00:00.000Z"),Sat:new Date("2020-01-11T00:00:00.000Z")};function getWeekdayFormatter(){const r=(e,t)=>"",o={long:{timeZone:"UTC",weekday:"long"},short:{timeZone:"UTC",weekday:"short"},narrow:{timeZone:"UTC",weekday:"narrow"}};return"undefined"===typeof Intl||"undefined"===typeof Intl.DateTimeFormat?r:e;function e(t,e,a){try{const n=new Intl.DateTimeFormat(a||void 0,o[e]||o["long"]);return n.format(weekdayDateMap[t])}catch(e){return console.error(`Intl.DateTimeFormat: ${e.message} -> day of week: `+t),r}}}function getWeekdayNames(t,a){const e=Object.keys(weekdayDateMap),n=getWeekdayFormatter();return e.map(e=>n(e,t,a))}function getMonthFormatter(){const o=(e,t)=>"",i={long:{timeZone:"UTC",month:"long"},short:{timeZone:"UTC",month:"short"},narrow:{timeZone:"UTC",month:"narrow"}};return"undefined"===typeof Intl||"undefined"===typeof Intl.DateTimeFormat?o:e;function e(t,e,a){try{const n=new Intl.DateTimeFormat(a||void 0,i[e]||i["long"]),r=new Date;return r.setDate(1),r.setMonth(t),n.format(r)}catch(e){return console.error(`Intl.DateTimeFormat: ${e.message} -> month: `+t),o}}}function getMonthNames(t,a){const n=getMonthFormatter();return[...Array(12).keys()].map(e=>n(e,t,a))}function convertToUnit(e,t="px"){if(null!=e&&""!==e)return isNaN(e)?String(e):"auto"===e?e:""+Number(e)+t}function indexOf(t,a){for(let e=0;e<t.length;e++)if(!0===a(t[e],e))return e;return-1}function minCharWidth(e,t){return 0===t?e:e.slice(0,t)}var ResizeObserver$1={name:"ResizeObserver",mounted(e,{value:t}){if(t){const a={};a.callback=t,a.size={width:0,height:0},a.observer=new ResizeObserver(e=>{const t=e[0].contentRect;t.width===a.size.width&&t.height===a.size.height||(a.size.width=t.width,a.size.height=t.height,a.callback(a.size))}),a.observer.observe(e),e.__onResizeObserver=a}},beforeUnmount(e){if(e.__onResizeObserver){const t=e.__onResizeObserver["observer"];t.unobserve(e),delete e.__onResizeObserver}}};function useCalendar(t,a,{scrollArea:e,pane:n}){if(!a){const s="[error: renderCalendar] no renderFunc has been supplied to useCalendar";throw console.error(s),new Error(s)}const r=reactive({width:0,height:0}),o=ref(null);function i({width:e,height:t}){r.width=e,r.height=t}const d=computed(()=>{return!0!==t.noScroll&&e.value&&n.value&&r.height?e.value.offsetWidth-n.value.offsetWidth:0});function u(){}function l(){const e={ref:o,role:"complementary",lang:t.locale,class:`q-calendar ${t.dark?"q-calendar--dark":""} `+(t.bordered?"q-calendar__bordered":"")};return withDirectives(h("div",{...e},[a()]),[[ResizeObserver$1,i]])}return{rootRef:o,scrollWidth:d,__initCalendar:u,__renderCalendar:l}}const useCommonProps={modelValue:{type:String,default:today(),validator:e=>""===e||validateTimestamp(e)},weekdays:{type:Array,default:()=>[0,1,2,3,4,5,6]},dateType:{type:String,default:"round",validator:e=>["round","rounded","square"].includes(e)},weekdayAlign:{type:String,default:"center",validator:e=>["left","center","right"].includes(e)},dateAlign:{type:String,default:"center",validator:e=>["left","center","right"].includes(e)},bordered:Boolean,dark:Boolean,noAria:Boolean,noActiveDate:Boolean,noHeader:Boolean,noScroll:Boolean,shortWeekdayLabel:Boolean,noDefaultHeaderText:Boolean,noDefaultHeaderBtn:Boolean,minWeekdayLabel:{type:[Number,String],default:1},weekdayBreakpoints:{type:Array,default:()=>[75,35],validator:e=>2===e.length},locale:{type:String,default:"en-US"},animated:Boolean,transitionPrev:{type:String,default:"slide-right"},transitionNext:{type:String,default:"slide-left"},disabledDays:Array,disabledBefore:String,disabledAfter:String,disabledWeekdays:{type:Array,default:()=>[]},dragEnterFunc:{type:Function},dragOverFunc:{type:Function},dragLeaveFunc:{type:Function},dropFunc:{type:Function},selectedDates:{type:Array,default:()=>[]},selectedStartEndDates:{type:Array,default:()=>[]},hoverable:Boolean,focusable:Boolean,focusType:{type:Array,default:["date"],validator:e=>{let t=!0;e.forEach(e=>{!0!==["day","date","weekday","interval","time","resource","task"].includes(e)&&(t=!1)});return t}}};function useCommon(r,{startDate:e,endDate:t,times:a}){const n=computed(()=>getWeekdaySkips(r.weekdays)),o=computed(()=>parseTimestamp(e.value)),i=computed(()=>{if("0000-00-00"===t.value)return y(o.value);return parseTimestamp(t.value)}),d=computed(()=>{const a={timeZone:"UTC",day:"numeric"};return createNativeLocaleFormatter(r.locale,(e,t)=>a)}),u=computed(()=>{const a={timeZone:"UTC",weekday:"long"};const n={timeZone:"UTC",weekday:"short"};return createNativeLocaleFormatter(r.locale,(e,t)=>t?n:a)}),l=computed(()=>{const t={timeZone:"UTC",dateStyle:"full"};return createNativeLocaleFormatter(r.locale,e=>t)});function s(e,t){return e&&e.length>0&&e.includes(t.date)}function c(e,t){const a={firstDay:!1,betweenDays:!1,lastDay:!1};if(e&&2===e.length){const n=getDayIdentifier(t),r=getDayIdentifier(parsed(e[0])),o=getDayIdentifier(parsed(e[1]));a.firstDay=r===n,a.lastDay=o===n,a.betweenDays=r<n&&o>n}return a}function m(e,t=!1,a=[],n=[],r=!1){const o=s(a,e),{firstDay:i,lastDay:d,betweenDays:u}=c(n,e);return{"q-past-day":!0!==i&&!0!==u&&!0!==d&&!0!==o&&!0!==t&&e.past,"q-future-day":!0!==i&&!0!==u&&!0!==d&&!0!==o&&!0!==t&&e.future,"q-outside":t,"q-current-day":e.current,"q-selected":o,"q-range-first":!0===i,"q-range":!0===u,"q-range-last":!0===d,"q-range-hover":!0===r&&(!0===i||!0===d||!0===u),"q-disabled-day disabled":!0===e.disabled}}function v(e){return getStartOfWeek(e,r.weekdays,a.today)}function y(e){return getEndOfWeek(e,r.weekdays,a.today)}function p(e){}return{weekdaySkips:n,parsedStart:o,parsedEnd:i,dayFormatter:d,weekdayFormatter:u,ariaDateFormatter:l,arrayHasDate:s,checkDays:c,getRelativeClasses:m,startOfWeek:v,endOfWeek:y,dayStyleDefault:p}}function scrollTo(e,t){e===window?window.scrollTo(window.pageXOffset||window.scrollX||document.body.scrollLeft||0,t):e.scrollTop=t}function scrollToHorizontal(e,t){e===window?window.scrollTo(t,window.pageYOffset||window.scrollY||document.body.scrollTop||0):e.scrollLeft=t}function getVerticalScrollPosition(e){return e===window?window.pageYOffset||window.scrollY||document.body.scrollTop||0:e.scrollTop}function getHorizontalScrollPosition(e){return e===window?window.pageXOffset||window.scrollX||document.body.scrollLeft||0:e.scrollLeft}function animVerticalScrollTo(n,r,o=0){const i=void 0===arguments[3]?performance.now():arguments[3],d=getVerticalScrollPosition(n);o<=0?d!==r&&scrollTo(n,r):requestAnimationFrame(e=>{const t=e-i;const a=d+(r-d)/Math.max(t,o)*t;scrollTo(n,a);a!==r&&animVerticalScrollTo(n,r,o-t,e)})}function animHorizontalScrollTo(n,r,o=0){const i=void 0===arguments[3]?performance.now():arguments[3],d=getHorizontalScrollPosition(n);o<=0?d!==r&&scrollToHorizontal(n,r):requestAnimationFrame(e=>{const t=e-i;const a=d+(r-d)/Math.max(t,o)*t;setHorizontalScroll(n,a);a!==r&&animHorizontalScrollTo(n,r,o-t,e)})}const useIntervalProps={view:{type:String,validator:e=>["day","week","month","month-interval"].includes(e),default:"day"},shortIntervalLabel:Boolean,intervalHeight:{type:[Number,String],default:40,validator:validateNumber},intervalMinutes:{type:[Number,String],default:60,validator:validateNumber},intervalStart:{type:[Number,String],default:0,validator:validateNumber},intervalCount:{type:[Number,String],default:24,validator:validateNumber},intervalStyle:{type:Function,default:null},intervalClass:{type:Function,default:null},weekdayStyle:{type:Function,default:null},weekdayClass:{type:Function,default:null},showIntervalLabel:{type:Function,default:null},hour24Format:Boolean,timeClicksClamped:Boolean,dateHeader:{type:String,default:"stacked",validator:e=>["stacked","inline","inverted"].includes(e)}};function useInterval(o,{weekdaySkips:e,times:t,scrollArea:n,parsedStart:a,parsedEnd:r,maxDays:i,size:d,headerColumnRef:u}){const l=computed(()=>parseInt(o.intervalStart,10)),m=computed(()=>parseInt(o.intervalMinutes,10)),s=computed(()=>parseInt(o.intervalCount,10)),v=computed(()=>parseFloat(o.intervalHeight)),y=computed(()=>{let e=0;o.cellWidth?e=o.cellWidth:d.width>0&&u.value&&(e=u.value.offsetWidth/(o.columnCount>1?o.columnCount:i.value));return e}),c=computed(()=>l.value*m.value),p=computed(()=>s.value*v.value),f=computed(()=>s.value*y.value),h=computed(()=>T(a.value)),g=computed(()=>k(r.value)),D=computed(()=>{return createDayList(a.value,r.value,t.today,e.value,o.disabledBefore,o.disabledAfter,o.disabledWeekdays,o.disabledDays,i.value)}),_=computed(()=>{return D.value.map(e=>createIntervalList(e,l.value,m.value,s.value,t.now))});function T(e){return getStartOfWeek(e,o.weekdays,t.today)}function k(e){return getEndOfWeek(e,o.weekdays,t.today)}function w(e,t){return e&&e.length>0&&e.includes(getDateTime(t))}function I(e,t){const a={firstDay:!1,betweenDays:!1,lastDay:!1};if(e&&2===e.length){const n=getDayTimeIdentifier(t),r=getDayTimeIdentifier(parsed(e[0])),o=getDayTimeIdentifier(parsed(e[1]));a.firstDay=r===n,a.lastDay=o===n,a.betweenDays=r<n&&o>n}return a}function M(e,t=[],a=[]){const n=w(t,e),{firstDay:r,lastDay:o,betweenDays:i}=I(a,e);return{"q-selected":n,"q-range-first":!0===r,"q-range":!0===i,"q-range-last":!0===o,"q-disabled-interval disabled":!0===e.disabled}}function N(e,t=0,a){return[]}const b=computed(()=>{const a={timeZone:"UTC",hour12:!o.hour24Format,hour:"2-digit",minute:"2-digit"};const n={timeZone:"UTC",hour12:!o.hour24Format,hour:"numeric",minute:"2-digit"};const r={timeZone:"UTC",hour12:!o.hour24Format,hour:"numeric"};return createNativeLocaleFormatter(o.locale,(e,t)=>t?0===e.minute?r:n:a)}),S=computed(()=>{const t={timeZone:"UTC",dateStyle:"full",timeStyle:"short"};return createNativeLocaleFormatter(o.locale,e=>t)});function E(e){const t=_.value[0][0],a=t.hour===e.hour&&t.minute===e.minute;return!a&&0===e.minute}function O(e){}function A(e){}function R(e,t,a=!1,n=void 0){let r=copyTimestamp(t);const o=e.currentTarget.getBoundingClientRect(),i=e,d=e,u=i.changedTouches||i.touches,l=(u&&u[0]?u[0]:d).clientY,s=(l-o.top)/v.value,c=Math.floor((a?Math.floor(s):s)*m.value);return 0!==c&&(r=addToDate(r,{minute:c})),n&&updateRelative(r,n,!0),r}function L(e,t,a=!1,n=void 0){let r=copyTimestamp(t);const o=e.currentTarget.getBoundingClientRect(),i=e,d=e,u=i.changedTouches||i.touches,l=(u&&u[0]?u[0]:d).clientY,s=(l-o.top)/v.value,c=Math.floor((a?Math.floor(s):s)*m.value);return 0!==c&&(r=addToDate(r,{minute:c})),n&&updateRelative(r,n,!0),r}function x(e,t,a=!1,n=void 0){let r=copyTimestamp(t);const o=e.currentTarget.getBoundingClientRect(),i=e,d=e,u=i.changedTouches||i.touches,l=(u&&u[0]?u[0]:d).clientX,s=(l-o.left)/y.value,c=Math.floor((a?Math.floor(s):s)*m.value);return 0!==c&&(r=addToDate(r,{minute:c})),n&&updateRelative(r,n,!0),r}function Y(e,t){const a={timestamp:e};return a.timeStartPos=F,a.timeDurationHeight=C,void 0!==t&&(a.columnIndex=t),a}function q(e,t){const a={timestamp:copyTimestamp(e)};return a.timeStartPosX=H,a.timeDurationWidth=W,void 0!==t&&(a.index=t),a}function U(e,t=0){const a=F(e);return!(!1===a||!n.value)&&(animVerticalScrollTo(n.value,a,t),!0)}function P(e,t=0){const a=H(e);return!(!1===a||!n.value)&&(animHorizontalScrollTo(n.value,a,t),!0)}function C(e){return e/m.value*v.value}function W(e){return e/m.value*y.value}function B(e){return parseInt(e,10)*m.value/v.value}function z(e){return parseInt(e,10)*m.value/y.value}function F(e,t=!0){const a=parseTime(e);if(!1===a)return!1;const n=c.value,r=s.value*m.value,o=(a-n)/r;let i=o*p.value;return t&&(i<0&&(i=0),i>p.value)&&(i=p.value),i}function H(e,t=!0){const a=parseTime(e);if(!1===a)return!1;const n=c.value,r=s.value*m.value,o=(a-n)/r;let i=o*f.value;return t&&(i<0&&(i=0),i>f.value)&&(i=f.value),i}return{parsedIntervalStart:l,parsedIntervalMinutes:m,parsedIntervalCount:s,parsedIntervalHeight:v,parsedCellWidth:y,parsedStartMinute:c,bodyHeight:p,bodyWidth:f,parsedWeekStart:h,parsedWeekEnd:g,days:D,intervals:_,intervalFormatter:b,ariaDateTimeFormatter:S,arrayHasDateTime:w,checkIntervals:I,getIntervalClasses:M,getResourceClasses:N,showIntervalLabelDefault:E,showResourceLabelDefault:O,styleDefault:A,getTimestampAtEventInterval:R,getTimestampAtEvent:L,getTimestampAtEventX:x,getScopeForSlot:Y,getScopeForSlotX:q,scrollToTime:U,scrollToTimeX:P,timeDurationHeight:C,timeDurationWidth:W,heightToMinutes:B,widthToMinutes:z,timeStartPos:F,timeStartPosX:H}}const useColumnProps={columnCount:{type:[Number,String],default:0,validator:validateNumber},columnIndexStart:{type:[Number,String],default:0,validator:validateNumber}},useMaxDaysProps={maxDays:{type:Number,default:1}},useTimesProps={now:{type:String,validator:e=>""===e||validateTimestamp(e),default:""}};function useTimes(e){const t=reactive({now:parseTimestamp("0000-00-00 00:00"),today:parseTimestamp("0000-00-00")}),a=computed(()=>e.now?parseTimestamp(e.now):o());function n(){t.now.current=t.today.current=!0,t.now.past=t.today.past=!1,t.now.future=t.today.future=!1}function r(){const e=a.value||o();i(e,t.now),d(e,t.now),i(e,t.today)}function o(){return parseDate(new Date)}function i(e,t){e.date!==t.date&&(t.year=e.year,t.month=e.month,t.day=e.day,t.weekday=e.weekday,t.date=e.date)}function d(e,t){e.time!==t.time&&(t.hour=e.hour,t.minute=e.minute,t.time=e.time)}return watch(()=>a,e=>r()),{times:t,parsedNow:a,setCurrent:n,updateCurrent:r,getNow:o,updateDay:i,updateTime:d}}function useRenderValues(r,{parsedView:o,parsedValue:i,times:d}){const e=computed(()=>{const e=i.value;let t=r.maxDays;let a=e;let n=e;switch(o.value){case"month":a=getStartOfMonth(e),n=getEndOfMonth(e),t=daysInMonth(a.year,a.month);break;case"week":case"week-agenda":case"week-scheduler":a=getStartOfWeek(e,r.weekdays,d.today),n=getEndOfWeek(a,r.weekdays,d.today),t=r.weekdays.length;break;case"day":case"scheduler":case"agenda":n=moveRelativeDays(copyTimestamp(n),nextDay,t>1?t-1:t,r.weekdays),updateFormatted(n);break;case"month-interval":case"month-scheduler":case"month-agenda":a=getStartOfMonth(e),n=getEndOfMonth(e),updateFormatted(n),t=daysInMonth(a.year,a.month);break;case"resource":t=1,n=moveRelativeDays(copyTimestamp(n),nextDay,t,r.weekdays),updateFormatted(n);break}return{start:a,end:n,maxDays:t}});return{renderValues:e}}const toCamelCase=e=>e.replace(/(-\w)/g,e=>e[1].toUpperCase());let $listeners,$emit;function getMouseEventHandlers(e,a){const t={};for(const n in e){const r=e[n],o=toCamelCase("on-"+n);if(void 0===$listeners)return void console.warn("$listeners has not been set up");if(void 0!==$listeners.value[o]){const i="on"+r.event.charAt(0).toUpperCase()+r.event.slice(1),d=e=>{const t=e;(void 0===r.button||t.buttons>0&&t.button===r.button)&&(r.prevent&&t.preventDefault(),r.stop&&t.stopPropagation(),$emit(n,a(t,n)));return r.result};i in t?Array.isArray(t[i])?t[i].push(d):t[i]=[t[i],d]:t[i]=d}}return t}function getDefaultMouseEventHandlers(e,t){return getMouseEventHandlers(getMouseEventName(e),t)}function getMouseEventName(e){return{["click"+e]:{event:"click"},["contextmenu"+e]:{event:"contextmenu",prevent:!0,result:!1},["mousedown"+e]:{event:"mousedown"},["mousemove"+e]:{event:"mousemove"},["mouseup"+e]:{event:"mouseup"},["mouseenter"+e]:{event:"mouseenter"},["mouseleave"+e]:{event:"mouseleave"},["touchstart"+e]:{event:"touchstart"},["touchmove"+e]:{event:"touchmove"},["touchend"+e]:{event:"touchend"}}}function getRawMouseEvents(e){return Object.keys(getMouseEventName(e))}function useMouse(e,t){return $emit=e,$listeners=t,{getMouseEventHandlers:getMouseEventHandlers,getDefaultMouseEventHandlers:getDefaultMouseEventHandlers,getMouseEventName:getMouseEventName,getRawMouseEvents:getRawMouseEvents}}const useMoveEmits=["moved"];function useMove(d,{parsedView:u,parsedValue:l,weekdaySkips:s,direction:c,maxDays:m,times:v,emittedValue:y,emit:p}){function e(a=1){if(0===a)y.value=today();else{let e=copyTimestamp(l.value);const n=a>0,r=n?nextDay:prevDay,o=n?DAYS_IN_MONTH_MAX:DAY_MIN;let t=n?a:-a;c.value=n?"next":"prev";const i=s.value.filter(e=>0!==e).length;while(--t>=0)switch(u.value){case"month":e.day=o,r(e),updateWeekday(e);while(0===s.value[e.weekday])e=addToDate(e,{day:!0===n?1:-1});break;case"week":case"week-agenda":case"week-scheduler":relativeDays(e,r,i,d.weekdays);break;case"day":case"scheduler":case"agenda":relativeDays(e,r,m.value,d.weekdays);break;case"month-interval":case"month-agenda":case"month-scheduler":e.day=o,r(e);break;case"resource":relativeDays(e,r,m.value,d.weekdays);break}updateWeekday(e),updateFormatted(e),updateDayOfYear(e),updateRelative(e,v.now),y.value=e.date,p("moved",e)}}return{move:e}}const listenerRE=/^on[A-Z]/;function useEmitListeners(e=getCurrentInstance()){return{emitListeners:computed(()=>{const t={};e.vnode&&e.vnode.props&&Object.keys(e.vnode.props).forEach(e=>{listenerRE.test(e)&&(t[e]=!0)});return t})}}function useFocusHelper(){const e={"aria-hidden":"true",class:"q-calendar__focus-helper"};return[h("span",e)]}function useButton({focusable:e,focusType:t},a,n){const r=e&&t.includes("date");return h("button",{...a,tabindex:r?0:-1},[n,r&&useFocusHelper()])}const useCellWidthProps={cellWidth:[Number,String]};function useCellWidth(e){const t=computed(()=>void 0!==e.cellWidth);return{isSticky:t}}const useCheckChangeEmits=["change"];function useCheckChange(a,{days:n,lastStart:r,lastEnd:o}){function e(){if(n.value&&n.value.length>0){const e=n.value[0].date,t=n.value[n.value.length-1].date;if(null===r.value||null===o.value||e!==r.value||t!==o.value)return r.value=e,o.value=t,a("change",{start:e,end:t,days:n.value}),!0}return!1}return{checkChange:e}}function useEvents(){function e(t,{bubbles:a=!1,cancelable:n=!1}={}){try{return new CustomEvent(t,{bubbles:a,cancelable:n})}catch(e){const r=document.createEvent("Event");return r.initEvent(t,a,n),r}}function t(e,t){return[].concat(t).includes(e.keyCode)}return{createEvent:e,isKeyCode:t}}const isKeyCode=useEvents()["isKeyCode"],useNavigationProps={useNavigation:Boolean};function useKeyboard(a,{rootRef:n,focusRef:r,focusValue:o,datesRef:i,parsedView:d,emittedValue:u,weekdaySkips:l,direction:s,times:c}){let e=!1;function t(){!0!==e&&document&&(e=!0,document.addEventListener("keyup",f),document.addEventListener("keydown",p))}function m(){document&&(document.removeEventListener("keyup",f),document.removeEventListener("keydown",p),e=!1)}function v(e){if(void 0!==e&&document){const t=document.activeElement;if(t!==document.body&&!0===n.value.contains(t))return!0}return!1}function y(){let e=0;const t=setInterval(()=>{i.value[r.value]&&(i.value[r.value].focus(),50!==++e)&&document.activeElement!==i.value[r.value]||clearInterval(t)},250)}function p(e){v(e)&&isKeyCode(e,[33,34,35,36,37,38,39,40])&&(e.stopPropagation(),e.preventDefault())}function f(e){if(v(e)&&isKeyCode(e,[33,34,35,36,37,38,39,40]))switch(e.keyCode){case 33:T();break;case 34:k();break;case 35:I();break;case 36:w();break;case 37:D();break;case 38:h();break;case 39:_();break;case 40:g();break}}function h(e){let t=copyTimestamp(o.value);if("month"===d.value){if(t=addToDate(t,{day:-7}),o.value.month!==t.month)return s.value="prev",void(u.value=t.date)}else"day"!==d.value&&"week"!==d.value&&"month-interval"!==d.value||(t=addToDate(t,{minute:parseInt(a.intervalMinutes)}));s.value="prev",r.value=t.date}function g(e){let t=copyTimestamp(o.value);if("month"===d.value){if(t=addToDate(t,{day:7}),o.value.month!==t.month)return s.value="next",void(u.value=t.date)}else"day"!==d.value&&"week"!==d.value&&"month-interval"!==d.value||(t=addToDate(t,{minute:parseInt(a.intervalMinutes)}));s.value="next",r.value=t.date}function D(e){let t=copyTimestamp(o.value);s.value="prev";do{t=addToDate(t,{day:-1})}while(0===l.value[t.weekday]);if("month"===d.value||"month-interval"===d.value){if(o.value.month!==t.month)return void(u.value=t.date)}else if("week"===d.value){if(t.weekday>o.value.weekday)return void(u.value=t.date)}else if("day"===d.value)return void(u.value=t.date);r.value=t.date}function _(e){let t=copyTimestamp(o.value);s.value="next";do{t=addToDate(t,{day:1})}while(0===l.value[t.weekday]);if("month"===d.value||"month-interval"===d.value){if(o.value.month!==t.month)return void(u.value=t.date)}else if("week"===d.value){if(t.weekday<o.value.weekday)return void(u.value=t.date)}else if("day"===d.value)return void(u.value=t.date);r.value=t.date}function T(e){let t=copyTimestamp(o.value);if("month"===d.value||"month-interval"===d.value){t=addToDate(t,{month:-1});const a=t.day<=15?1:-1;while(0===l.value[t.weekday])t=addToDate(t,{day:a})}else"day"===d.value?t=addToDate(t,{day:-1}):"week"===d.value&&(t=addToDate(t,{day:-7}));s.value="prev",r.value=t.date}function k(e){let t=copyTimestamp(o.value);if("month"===d.value||"month-interval"===d.value){t=addToDate(t,{month:1});const a=t.day<=15?1:-1;while(0===l.value[t.weekday])t=addToDate(t,{day:a})}else"day"===d.value?t=addToDate(t,{day:1}):"week"===d.value&&(t=addToDate(t,{day:7}));s.value="next",r.value=t.date}function w(e){let t=copyTimestamp(o.value);"month"===d.value||"month-interval"===d.value?t=getStartOfMonth(t):"week"===d.value&&(t=getStartOfWeek(t,a.weekdays,c.today));while(0===l.value[t.weekday])t=addToDate(t,{day:-1});r.value=t.date}function I(e){let t=copyTimestamp(o.value);"month"===d.value||"month-interval"===d.value?t=getEndOfMonth(t):"week"===d.value&&(t=getEndOfWeek(t,a.weekdays,c.today));while(0===l.value[t.weekday])t=addToDate(t,{day:-1});r.value=t.date}return onBeforeUnmount(()=>{m()}),watch(()=>a.useNavigation,e=>{(!0===e?t:m)()}),!0===a.useNavigation&&t(),{startNavigation:t,endNavigation:m,tryFocus:y}}var QCalendarDay=defineComponent({name:"QCalendarDay",directives:[ResizeObserver$1],props:{...useCommonProps,...useIntervalProps,...useColumnProps,...useMaxDaysProps,...useTimesProps,...useCellWidthProps,...useNavigationProps},emits:["update:model-value",...useCheckChangeEmits,...useMoveEmits,...getRawMouseEvents("-date"),...getRawMouseEvents("-interval"),...getRawMouseEvents("-head-intervals"),...getRawMouseEvents("-head-day"),...getRawMouseEvents("-time")],setup(v,{slots:y,emit:c,expose:L}){const e=ref(null),x=ref(null),Y=ref(null),p=ref(null),t=ref(null),f=ref({}),a=ref({}),n=ref({}),i=ref("next"),d=ref(v.modelValue||today()),u=ref("0000-00-00"),l=ref(0),g=ref(v.modelValue),s=reactive({width:0,height:0}),D=ref(!1),m=ref(!1),q=ref(null),U=ref(null),r=(watch(()=>v.view,()=>{l.value=0}),computed(()=>{if("month"===v.view)return"month-interval";return v.view})),P=getCurrentInstance();if(null===P)throw new Error("current instance is null");const _=useEmitListeners(P)["emitListeners"],T=useCellWidth(v)["isSticky"],{times:k,setCurrent:B,updateCurrent:z}=useTimes(v),{weekdaySkips:o,parsedStart:w,parsedEnd:V,dayFormatter:X,weekdayFormatter:K,ariaDateFormatter:$,dayStyleDefault:Z,getRelativeClasses:I}=(z(),B(),useCommon(v,{startDate:d,endDate:u,times:k})),M=computed(()=>{return parseTimestamp(v.modelValue,k.now)||w.value||k.today}),j=(t.value=M.value,p.value=M.value.date,useRenderValues(v,{parsedView:r,parsedValue:M,times:k}))["renderValues"],{rootRef:N,scrollWidth:Q,__initCalendar:G,__renderCalendar:J}=useCalendar(v,Ve,{scrollArea:e,pane:x}),{days:b,intervals:ee,intervalFormatter:te,ariaDateTimeFormatter:ae,parsedCellWidth:S,getIntervalClasses:ne,showIntervalLabelDefault:re,styleDefault:oe,getTimestampAtEventInterval:ie,getTimestampAtEvent:de,getScopeForSlot:E,scrollToTime:ue,heightToMinutes:le,timeDurationHeight:se,timeStartPos:ce}=useInterval(v,{weekdaySkips:o,times:k,scrollArea:e,parsedStart:w,parsedEnd:V,maxDays:l,size:s,headerColumnRef:Y}),O=useMove(v,{parsedView:r,parsedValue:M,weekdaySkips:o,direction:i,maxDays:l,times:k,emittedValue:g,emit:c})["move"],A=useMouse(c,_)["getDefaultMouseEventHandlers"],me=useCheckChange(c,{days:b,lastStart:q,lastEnd:U})["checkChange"],C=useEvents()["isKeyCode"],ve=useKeyboard(v,{rootRef:N,focusRef:p,focusValue:t,datesRef:f,days:b,parsedView:r,parsedValue:M,emittedValue:g,weekdaySkips:o,direction:i,times:k})["tryFocus"],W=computed(()=>{{if("day"===r.value&&parseInt(v.columnCount,10)>1)return parseInt(v.columnCount,10);if("day"===r.value&&v.maxDays&&v.maxDays>1)return v.maxDays}return b.value.length}),ye=computed(()=>{if(N.value)return parseInt(getComputedStyle(N.value).getPropertyValue("--calendar-intervals-width"),10);return 0}),F=computed(()=>{if(N.value){const e=s.width||N.value.getBoundingClientRect().width;if(e&&ye.value&&W.value)return(e-Q.value-ye.value)/W.value+"px"}return 100/W.value+"%"});function pe(){g.value=today()}function fe(e=1){O(e)}function he(e=1){O(-e)}function ge({width:e,height:t}){s.width=e,s.height=t}function H(e){return e.date===g.value}function De(){return h("div",{roll:"presentation",class:{"q-calendar-day__head":!0,"q-calendar__sticky":!0===T.value},style:{marginRight:Q.value+"px"}},[_e(),Te()])}function _e(){const e=y["head-intervals"],t={timestamps:b.value,days:b.value,date:v.modelValue};return h("div",{class:{"q-calendar-day__head--intervals":!0,"q-calendar__sticky":!0===T.value},...A("-head-intervals",e=>{return{scope:t,event:e}})},[e&&e({scope:t})])}function Te(){return h("div",{ref:Y,class:{"q-calendar-day__head--days__column":!0}},[ke(),we()])}function ke(){return h("div",{class:{"q-calendar-day__head--days__weekdays":!0}},[...Ie()])}function we(){const e=y["head-days-events"];return nextTick(()=>{if(n.value&&0===parseInt(v.columnCount,10)&&window)try{const e=window.getComputedStyle(n.value);a.value.parentElement.style.height=e.height,a.value.style.height=e.height}catch(e){}}),h("div",{class:{"q-calendar-day__head--days__event":!0}},[e&&h("div",{ref:a,style:{position:"absolute",left:0,top:0,right:0,overflow:"hidden",zIndex:1}},[e({scope:{days:b.value,ref:n}})]),...Me()])}function Ie(){return 1===b.value.length&&parseInt(v.columnCount,10)>0?Array.apply(null,new Array(parseInt(v.columnCount,10))).map((e,t)=>t+parseInt(v.columnIndexStart,10)).map(e=>Ne(b.value[0],e)):b.value.map(e=>Ne(e))}function Me(){return 1===b.value.length&&parseInt(v.columnCount,10)>0?Array.apply(null,new Array(parseInt(v.columnCount,10))).map((e,t)=>t+parseInt(v.columnIndexStart,10)).map(e=>Se(b.value[0],e)):b.value.map(e=>Se(e))}function Ne(t,e){const a=y["head-day"],n=y["head-date"],r=!0!==v.noActiveDate&&H(t),o=E(t,e),i=(o.activeDate=r,o.droppable=D.value===t.date,o.disabled=!!v.disabledWeekdays&&v.disabledWeekdays.includes(t.weekday),!0===T.value?v.cellWidth:F.value),d=v.weekdayStyle||Z,u={width:i,maxWidth:i,minWidth:i,...d({scope:o})},l=(!0===T.value&&(u.minWidth=i),"function"===typeof v.weekdayClass?v.weekdayClass({scope:o}):{}),s=!0===v.focusable&&v.focusType.includes("weekday"),c=t.date+(void 0!==e?"-"+e:""),m={key:c,ref:e=>{f.value[c]=e},tabindex:!0===s?0:-1,class:{"q-calendar-day__head--day":!0,...l,...I(t),"q-active-date":r,"q-calendar__hoverable":!0===v.hoverable,"q-calendar__focusable":!0===s},style:u,onFocus:e=>{!0===s&&(p.value=c)},onKeydown:e=>{!0!==t.disabled&&C(e,[13,32])&&(e.stopPropagation(),e.preventDefault())},onKeyup:e=>{!0!==t.disabled&&C(e,[13,32])&&(g.value=t.date)},...A("-head-day",e=>{return{scope:o,event:e}}),onDragenter:e=>{void 0!==v.dragEnterFunc&&"function"===typeof v.dragEnterFunc&&(!0===v.dragEnterFunc(e,"head-day",o)?D.value=t.date:D.value="")},onDragover:e=>{void 0!==v.dragOverFunc&&"function"===typeof v.dragOverFunc&&(!0===v.dragOverFunc(e,"head-day",o)?D.value=t.date:D.value="")},onDragleave:e=>{void 0!==v.dragLeaveFunc&&"function"===typeof v.dragLeaveFunc&&(!0===v.dragLeaveFunc(e,"head-day",o)?D.value=t.date:D.value="")},onDrop:e=>{void 0!==v.dropFunc&&"function"===typeof v.dropFunc&&(!0===v.dropFunc(e,"head-day",o)?D.value=t.date:D.value="")}};return h("div",m,[void 0!==a&&a({scope:o}),void 0===a&&Ce(t,e),void 0===a&&be(t),void 0===a&&n&&n({scope:o}),void 0===a&&We(t,e),useFocusHelper()])}function be(e){return"stacked"===v.dateHeader?[!0!==v.noDefaultHeaderText&&R(e),!0!==v.noDefaultHeaderBtn&&Oe(e)]:"inline"===v.dateHeader?("left"===v.weekdayAlign&&"right"===v.dateAlign||"right"===v.weekdayAlign&&v.dateAlign,h("div",{class:"q-calendar__header--inline"},[!0!==v.noDefaultHeaderText&&R(e),!0!==v.noDefaultHeaderBtn&&Oe(e)])):"inverted"===v.dateHeader?("left"===v.weekdayAlign&&"right"===v.dateAlign||"right"===v.weekdayAlign&&v.dateAlign,h("div",{class:"q-calendar__header--inline"},[!0!==v.noDefaultHeaderBtn&&Oe(e),!0!==v.noDefaultHeaderText&&R(e)])):void 0}function Se(e,t){const a=y["head-day-event"],n=!0!==v.noActiveDate&&H(e),r=E(e,t),o=(r.activeDate=n,r.disabled=!!v.disabledWeekdays&&v.disabledWeekdays.includes(e.weekday),!0===T.value?convertToUnit(S.value):F.value),i={width:o,maxWidth:o,minWidth:o};return!0===T.value&&(i.minWidth=o),h("div",{key:"event-"+e.date+(void 0!==t?"-"+t:""),class:{"q-calendar-day__head--day__event":!0,...I(e),"q-active-date":n},style:i},[a&&a({scope:r})])}function R(e){const t=y["head-weekday-label"],a=!0===v.shortWeekdayLabel,n=E(e),r=(n.shortWeekdayLabel=v.shortWeekdayLabel,n.disabled=!!v.disabledWeekdays&&v.disabledWeekdays.includes(e.weekday),{class:{"q-calendar-day__head--weekday":!0,["q-calendar__"+v.weekdayAlign]:!0,"q-calendar__ellipsis":!0}});return h("div",r,t&&t({scope:n})||Ee(e,a))}function Ee(e,t){const a=K.value(e,t||v.weekdayBreakpoints[0]>0&&S.value<=v.weekdayBreakpoints[0]);return h("span",{class:"q-calendar-day__head--weekday-label q-calendar__ellipsis"},v.weekdayBreakpoints[1]>0&&S.value<=v.weekdayBreakpoints[1]?minCharWidth(a,v.minWeekdayLabel):a)}function Oe(e){const t={class:{"q-calendar-day__head--date":!0,["q-calendar__"+v.dateAlign]:!0}};return h("div",t,Ae(e))}function Ae(a){const e=!0!==v.noActiveDate&&H(a),t=X.value(a,!1),n=y["head-day-label"],r=y["head-day-button"],o={dayLabel:t,timestamp:a,activeDate:e,disabled:!!v.disabledWeekdays&&v.disabledWeekdays.includes(a.weekday)},i={class:{"q-calendar-day__head--day__label":!0,"q-calendar__button":!0,"q-calendar__button--round":"round"===v.dateType,"q-calendar__button--rounded":"rounded"===v.dateType,"q-calendar__button--bordered":!0===a.current,"q-calendar__focusable":!0},disabled:a.disabled,onKeydown:e=>{!0!==a.disabled&&C(e,[13,32])&&(e.stopPropagation(),e.preventDefault())},onKeyup:e=>{!0!==a.disabled&&C(e,[13,32])&&(g.value=a.date,void 0!==_.value.onClickDate)&&c("click-date",{scope:o})},...A("-date",(e,t)=>{"click-date"!==t&&"contextmenu-date"!==t||(g.value=a.date,"click-date"===t&&e.preventDefault());return{scope:o,event:e}})};return!0!==v.noAria&&(i.ariaLabel=$.value(a)),r?r({scope:o}):useButton(v,i,n?n({scope:o}):t)}function Ce(e,t){const a=y["column-header-before"];if(a){const n={timestamp:e,columnIndex:t};return h("div",{class:"q-calendar-day__column-header--before"},[a({scope:n})])}}function We(e,t){const a=y["column-header-after"];if(a){const n={timestamp:e,columnIndex:t};return h("div",{class:"q-calendar-day__column-header--after"},[a({scope:n})])}}function Fe(){return h("div",{class:"q-calendar-day__body"},[He()])}function He(){return!0===T.value?h("div",{ref:e,class:{"q-calendar-day__scroll-area":!0,"q-calendar__scroll":!0}},[!0!==T.value&&Pe(),Le()]):!0===v.noScroll?Re():h("div",{ref:e,class:{"q-calendar-day__scroll-area":!0,"q-calendar__scroll":!0}},[Re()])}function Re(){return h("div",{ref:x,class:"q-calendar-day__pane"},[Pe(),Le()])}function Le(){const e=y["day-container"];return h("div",{class:"q-calendar-day__day-container"},[!0===T.value&&!0!==v.noHeader&&De(),h("div",{style:{display:"flex",flexDirection:"row"}},[!0===T.value&&Pe(),...xe()]),e&&e({scope:{days:b.value}})])}function xe(){return 1===b.value.length&&parseInt(v.columnCount,10)>0?Array.apply(null,new Array(parseInt(v.columnCount,10))).map((e,t)=>t+parseInt(v.columnIndexStart,10)).map(e=>Ye(b.value[0],0,e)):b.value.map((e,t)=>Ye(e,t))}function Ye(e,t,a){const n=y["day-body"],r=E(e,a),o=!0===T.value?v.cellWidth:F.value,i={width:o,maxWidth:o,minWidth:o};return!0===T.value&&(i.minWidth=o),h("div",{key:e.date+(void 0!==a?":"+a:""),class:{"q-calendar-day__day":!0,...I(e)},style:i},[...qe(t,a),n&&n({scope:r})])}function qe(e,t){return ee.value[e].map(e=>Ue(e,t))}function Ue(a,n){const e=convertToUnit(v.intervalHeight),t=v.intervalStyle||oe,r=y["day-interval"],o=E(a,n),i=(o.droppable=m.value===getDayTimeIdentifier(a),"function"===typeof v.intervalClass?v.intervalClass({scope:o}):{}),d=!0===v.focusable&&v.focusType.includes("interval"),u=getDateTime(a),l={key:u,tabindex:!0===d?0:-1,class:{"q-calendar-day__day-interval":0===a.minute,"q-calendar-day__day-interval--section":0!==a.minute,...i,...ne(a,v.selectedDates,v.selectedStartEndDates),"q-calendar__hoverable":!0===v.hoverable,"q-calendar__focusable":!0===d},style:{height:e,...t({scope:o})},onDragenter:e=>{void 0!==v.dragEnterFunc&&"function"===typeof v.dragEnterFunc&&(!0===v.dragEnterFunc(e,"interval",o)?m.value=getDayTimeIdentifier(a):m.value="")},onDragover:e=>{void 0!==v.dragOverFunc&&"function"===typeof v.dragOverFunc&&(!0===v.dragOverFunc(e,"interval",o)?m.value=getDayTimeIdentifier(a):m.value="")},onDragleave:e=>{void 0!==v.dragLeaveFunc&&"function"===typeof v.dragLeaveFunc&&(!0===v.dragLeaveFunc(e,"interval",o)?m.value=getDayTimeIdentifier(a):m.value="")},onDrop:e=>{void 0!==v.dropFunc&&"function"===typeof v.dropFunc&&(!0===v.dropFunc(e,"interval",o)?m.value=getDayTimeIdentifier(a):m.value="")},onKeydown:e=>{C(e,[13,32])&&(e.stopPropagation(),e.preventDefault())},onKeyup:e=>{if(C(e,[13,32])){const t=E(a,n);g.value=t.timestamp.date,void 0!==_.value.onClickTime&&c("click-time",{scope:t,event:e})}},...A("-time",e=>{const t=E(ie(e,a,v.timeClicksClamped,k.now),n);return{scope:t,event:e}})},s=(!0!==v.noAria&&(l.ariaLabel=ae.value(a)),r?r({scope:o}):void 0);return h("div",l,[s,useFocusHelper()])}function Pe(){const e={ariaHidden:"true",class:{"q-calendar-day__intervals-column":!0,"q-calendar__ellipsis":!0,"q-calendar__sticky":!0===T.value},...A("-interval",e=>{const t=de(e,w.value,v.timeClicksClamped,k.now);return{scope:{timestamp:t},event:e}})};return h("div",e,Be())}function Be(){return ee.value[0].map(e=>ze(e))}function ze(e){const t=y["interval-label"],a=convertToUnit(v.intervalHeight),n=v.shortIntervalLabel,r=v.showIntervalLabel||re,o=r(e),i=o?te.value(e,n):void 0;return h("div",{key:e.time,class:{"q-calendar-day__interval":0===e.minute,"q-calendar-day__interval--section":0!==e.minute},style:{height:a}},[h("div",{class:"q-calendar-day__interval--text q-calendar__overflow-wrap"},[t?t({scope:{timestamp:e,label:i}}):i])])}function Ve(){const{start:e,end:t,maxDays:a}=j.value,n=(d.value===e.date&&u.value===t.date&&l.value===a||(d.value=e.date,u.value=t.date,l.value=a),s.width>0),r=withDirectives(h("div",{key:d.value,class:"q-calendar-day"},[!0===n&&!0!==T.value&&!0!==v.noHeader&&De(),n&&Fe()]),[[ResizeObserver$1,ge]]);if(!0!==v.animated)return r;{const o="q-calendar--"+("prev"===i.value?v.transitionPrev:v.transitionNext);return h(Transition,{name:o,appear:!0},()=>r)}}return watch([b],me,{deep:!0,immediate:!0}),watch(()=>v.modelValue,(e,t)=>{if(g.value!==v.modelValue){if(!0===v.animated){const a=getDayIdentifier(parsed(e)),n=getDayIdentifier(parsed(t));i.value=a>=n?"next":"prev"}g.value=e}p.value=e}),watch(g,(e,t)=>{if(g.value!==v.modelValue){if(!0===v.animated){const a=getDayIdentifier(parsed(e)),n=getDayIdentifier(parsed(t));i.value=a>=n?"next":"prev"}c("update:model-value",e)}}),watch(p,e=>{e&&(t.value=parseTimestamp(e))}),watch(t,e=>{f.value[p.value]?f.value[p.value].focus():ve()}),watch(()=>v.maxDays,e=>{l.value=e}),onBeforeUpdate(()=>{f.value={};a.value={};n.value={}}),onMounted(()=>{G()}),L({prev:he,next:fe,move:O,moveToToday:pe,updateCurrent:z,timeStartPos:ce,timeDurationHeight:se,heightToMinutes:le,scrollToTime:ue}),()=>J()}});const version="4.0.0-beta.19";var Plugin={version:version,QCalendarDay:QCalendarDay,PARSE_REGEX:PARSE_REGEX,PARSE_DATE:PARSE_DATE,PARSE_TIME:PARSE_TIME,DAYS_IN_MONTH:DAYS_IN_MONTH,DAYS_IN_MONTH_LEAP:DAYS_IN_MONTH_LEAP,DAYS_IN_MONTH_MIN:DAYS_IN_MONTH_MIN,DAYS_IN_MONTH_MAX:DAYS_IN_MONTH_MAX,MONTH_MAX:MONTH_MAX,MONTH_MIN:MONTH_MIN,DAY_MIN:DAY_MIN,DAYS_IN_WEEK:DAYS_IN_WEEK,MINUTES_IN_HOUR:MINUTES_IN_HOUR,HOURS_IN_DAY:HOURS_IN_DAY,FIRST_HOUR:FIRST_HOUR,MILLISECONDS_IN_MINUTE:MILLISECONDS_IN_MINUTE,MILLISECONDS_IN_HOUR:MILLISECONDS_IN_HOUR,MILLISECONDS_IN_DAY:MILLISECONDS_IN_DAY,MILLISECONDS_IN_WEEK:MILLISECONDS_IN_WEEK,Timestamp:Timestamp,TimeObject:TimeObject,today:today,getStartOfWeek:getStartOfWeek,getEndOfWeek:getEndOfWeek,getStartOfMonth:getStartOfMonth,getEndOfMonth:getEndOfMonth,parseTime:parseTime,validateTimestamp:validateTimestamp,parsed:parsed,parseTimestamp:parseTimestamp,parseDate:parseDate,getDayIdentifier:getDayIdentifier,getTimeIdentifier:getTimeIdentifier,getDayTimeIdentifier:getDayTimeIdentifier,diffTimestamp:diffTimestamp,updateRelative:updateRelative,updateMinutes:updateMinutes,updateWeekday:updateWeekday,updateDayOfYear:updateDayOfYear,updateWorkWeek:updateWorkWeek,updateDisabled:updateDisabled,updateFormatted:updateFormatted,getDayOfYear:getDayOfYear,getWorkWeek:getWorkWeek,getWeekday:getWeekday,isLeapYear:isLeapYear,daysInMonth:daysInMonth,copyTimestamp:copyTimestamp,padNumber:padNumber,getDate:getDate,getTime:getTime,getDateTime:getDateTime,nextDay:nextDay,prevDay:prevDay,moveRelativeDays:moveRelativeDays,relativeDays:relativeDays,findWeekday:findWeekday,getWeekdaySkips:getWeekdaySkips,createDayList:createDayList,createIntervalList:createIntervalList,createNativeLocaleFormatter:createNativeLocaleFormatter,makeDate:makeDate,makeDateTime:makeDateTime,validateNumber:validateNumber,maxTimestamp:maxTimestamp,minTimestamp:minTimestamp,isBetweenDates:isBetweenDates,isOverlappingDates:isOverlappingDates,daysBetween:daysBetween,weeksBetween:weeksBetween,addToDate:addToDate,compareTimestamps:compareTimestamps,compareDate:compareDate,compareTime:compareTime,compareDateTime:compareDateTime,getWeekdayFormatter:getWeekdayFormatter,getWeekdayNames:getWeekdayNames,getMonthFormatter:getMonthFormatter,getMonthNames:getMonthNames,convertToUnit:convertToUnit,indexOf:indexOf,install(e){e.component(QCalendarDay.name,QCalendarDay)}};export{DAYS_IN_MONTH,DAYS_IN_MONTH_LEAP,DAYS_IN_MONTH_MAX,DAYS_IN_MONTH_MIN,DAYS_IN_WEEK,DAY_MIN,FIRST_HOUR,HOURS_IN_DAY,MILLISECONDS_IN_DAY,MILLISECONDS_IN_HOUR,MILLISECONDS_IN_MINUTE,MILLISECONDS_IN_WEEK,MINUTES_IN_HOUR,MONTH_MAX,MONTH_MIN,PARSE_DATE,PARSE_REGEX,PARSE_TIME,QCalendarDay,TimeObject,Timestamp,addToDate,compareDate,compareDateTime,compareTime,compareTimestamps,convertToUnit,copyTimestamp,createDayList,createIntervalList,createNativeLocaleFormatter,daysBetween,daysInMonth,Plugin as default,diffTimestamp,findWeekday,getDate,getDateTime,getDayIdentifier,getDayOfYear,getDayTimeIdentifier,getEndOfMonth,getEndOfWeek,getMonthFormatter,getMonthNames,getStartOfMonth,get