vue-cal 5.0.1-rc.0 → 5.0.1-rc.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
- (function(L,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(L=typeof globalThis<"u"?globalThis:L||self,e(L.vuecal={},L.Vue))})(this,function(L,e){"use strict";/**
2
- * vue-cal v5.0.0
1
+ (function(H,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("./i18n/en-us.json")):typeof define=="function"&&define.amd?define(["exports","vue","./i18n/en-us.json"],e):(H=typeof globalThis<"u"?globalThis:H||self,e(H.vuecal={},H.Vue,H.EnUs))})(this,function(H,e,Me){"use strict";/**
2
+ * vue-cal v5.0.1-rc.10
3
3
  * (c) 2024-2025 Antoni Andre <antoniandre.web@gmail.com>
4
4
  * @license MIT
5
- */const Q={texts:{weekDays:Array(7).fill(""),weekDaysShort:[],months:Array(12).fill(""),years:"",year:"",month:"",week:"",day:"",today:"",noEvent:"",allDay:"",deleteEvent:"",createEvent:"",dateFormat:"dddd MMMM D, YYYY",am:"am",pm:"pm",truncations:!0},availableViews:{day:{cols:1,rows:1},days:{cols:10,rows:1},week:{cols:7,rows:1},month:{cols:7,rows:6},year:{cols:4,rows:3},years:{cols:5,rows:5}}},_e=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],de=["sun","mon","tue","wed","thu","fri","sat"],be=de.reduce((u,l,s)=>(u[l]=s||7,u),{}),Te=(u,l,s)=>{const{dateUtils:v}=u,k=!1,b=e.computed(()=>{if(N.value[l.view])return l.view;{const f=l.datePicker?"month":"week",d=l.view||f;return N.value[d]?d:(console.warn(`Vue Cal: the provided or default view \`${d}\` is either invalid or not in the list of available views. The first available view will be chosen: \`${Object.keys(N.value)[0]}\`.`),Object.keys(N.value)[0])}}),z=e.computed(()=>l.sm&&!l.xs),p=e.computed(()=>l.xs||l.datePicker),B=e.computed(()=>l.clickToNavigate||l.datePicker&&l.clickToNavigate!==!1),i=e.computed(()=>{const f={cell:{},event:{}},d=w=>w.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();return Object.entries(s).forEach(([w,n])=>{const[$,V,H]=w.match(/^on(Cell|Event)(.+)$/)||[];$&&(f[V.toLowerCase()][d(H).replace(/^-+|-+$/g,"")]=n)}),f}),h=e.computed(()=>{var d;const f={};return l.hideWeekends&&(f[6]=!0)&&(f[7]=!0),(d=l.hideWeekdays)!=null&&d.length&&l.hideWeekdays.forEach(w=>f[be[w]]=!0),f}),T=e.computed(()=>l.hideWeekends||h.value[6]&&h.value[7]),N=e.computed(()=>{const f=l.datePicker;let d=0,w={};const n=l.views;return f&&!n?{month:{...Q.availableViews.month},year:{...Q.availableViews.year},years:{...Q.availableViews.years}}:(n?(Array.isArray(n)?w=n.reduce(($,V)=>(typeof V=="string"&&Q.availableViews[V]?$[V]=Q.availableViews[V]:d++,$),{}):typeof n=="object"&&(w=Object.entries(n).reduce(($,[V,H])=>{const{cols:A,rows:K}=Q.availableViews[V];return $[V]={cols:H.cols||A,rows:H.rows||K},$},{})),d&&console.warn("Vue Cal: the provided `views` prop contains invalid views that will be ignored."),Object.keys(w).length||(console.warn("Vue Cal: No valid view in the provided `views` prop. Falling back to default views."),w={...Q.availableViews})):w={...Q.availableViews},w)}),W=e.computed(()=>(console.log("recomputing defaultView"),l.datePicker?"month":N.value.week?"week":Object.keys(N.value)[0])),c=e.computed(()=>{if(typeof l.selectedDate=="string")return v.stringToDate(l.selectedDate);if(l.selectedDate instanceof Date)return l.selectedDate;l.selectedDate?console.warn("Vue Cal: The provided selected date is invalid:",l.selectedDate):console.log("Vue Cal: Info - The provided selected date is undefined.")}),m=e.computed(()=>{let f=null;return l.minDate&&typeof l.minDate=="string"?f=v.stringToDate(l.minDate):l.minDate&&l.minDate instanceof Date&&(f=l.minDate),(f==null?void 0:f.getTime())||null}),t=e.computed(()=>{let f=null;return l.maxDate&&typeof l.maxDate=="string"?f=v.stringToDate(l.maxDate):l.maxDate&&l.maxDate instanceof Date&&(f=l.maxDate),(f==null?void 0:f.getTime())||null}),o=e.computed(()=>{var w;const{view:f}=u;return l.schedules.length&&(f.isDay||f.isDays||f.isWeek)&&((w=l.schedules)==null?void 0:w.map((n,$)=>({...n,id:n.id??$+1})))||void 0}),D=e.computed(()=>{const f={drag:!0,resize:!0,delete:!0,create:!0};return l.editableEvents===!0?f:l.editableEvents===!1?Object.keys(f).map(d=>f[d]=!1):{...f,...l.editableEvents}}),S=async f=>{var w;let d=Object.assign({"../i18n/ar.json":()=>import("./i18n/ar.json").then(n=>n.default),"../i18n/bg.json":()=>import("./i18n/bg.json").then(n=>n.default),"../i18n/bn.json":()=>import("./i18n/bn.json").then(n=>n.default),"../i18n/bs.json":()=>import("./i18n/bs.json").then(n=>n.default),"../i18n/ca.json":()=>import("./i18n/ca.json").then(n=>n.default),"../i18n/cs.json":()=>import("./i18n/cs.json").then(n=>n.default),"../i18n/da.json":()=>import("./i18n/da.json").then(n=>n.default),"../i18n/de.json":()=>import("./i18n/de.json").then(n=>n.default),"../i18n/el.json":()=>import("./i18n/el.json").then(n=>n.default),"../i18n/en-gb.json":()=>import("./i18n/en-gb.json").then(n=>n.default),"../i18n/en-us.json":()=>import("./i18n/en-us.json").then(n=>n.default),"../i18n/es.json":()=>import("./i18n/es.json").then(n=>n.default),"../i18n/et.json":()=>import("./i18n/et.json").then(n=>n.default),"../i18n/fa.json":()=>import("./i18n/fa.json").then(n=>n.default),"../i18n/fi.json":()=>import("./i18n/fi.json").then(n=>n.default),"../i18n/fr.json":()=>import("./i18n/fr.json").then(n=>n.default),"../i18n/he.json":()=>import("./i18n/he.json").then(n=>n.default),"../i18n/hr.json":()=>import("./i18n/hr.json").then(n=>n.default),"../i18n/hu.json":()=>import("./i18n/hu.json").then(n=>n.default),"../i18n/id.json":()=>import("./i18n/id.json").then(n=>n.default),"../i18n/is.json":()=>import("./i18n/is.json").then(n=>n.default),"../i18n/it.json":()=>import("./i18n/it.json").then(n=>n.default),"../i18n/ja.json":()=>import("./i18n/ja.json").then(n=>n.default),"../i18n/ka.json":()=>import("./i18n/ka.json").then(n=>n.default),"../i18n/ko.json":()=>import("./i18n/ko.json").then(n=>n.default),"../i18n/lt.json":()=>import("./i18n/lt.json").then(n=>n.default),"../i18n/mn.json":()=>import("./i18n/mn.json").then(n=>n.default),"../i18n/nl.json":()=>import("./i18n/nl.json").then(n=>n.default),"../i18n/no.json":()=>import("./i18n/no.json").then(n=>n.default),"../i18n/pl.json":()=>import("./i18n/pl.json").then(n=>n.default),"../i18n/pt-br.json":()=>import("./i18n/pt-br.json").then(n=>n.default),"../i18n/pt-pt.json":()=>import("./i18n/pt-pt.json").then(n=>n.default),"../i18n/ro.json":()=>import("./i18n/ro.json").then(n=>n.default),"../i18n/ru.json":()=>import("./i18n/ru.json").then(n=>n.default),"../i18n/sk.json":()=>import("./i18n/sk.json").then(n=>n.default),"../i18n/sl.json":()=>import("./i18n/sl.json").then(n=>n.default),"../i18n/sq.json":()=>import("./i18n/sq.json").then(n=>n.default),"../i18n/sr.json":()=>import("./i18n/sr.json").then(n=>n.default),"../i18n/sv.json":()=>import("./i18n/sv.json").then(n=>n.default),"../i18n/tr.json":()=>import("./i18n/tr.json").then(n=>n.default),"../i18n/uk.json":()=>import("./i18n/uk.json").then(n=>n.default),"../i18n/vi.json":()=>import("./i18n/vi.json").then(n=>n.default),"../i18n/zh-cn.json":()=>import("./i18n/zh-cn.json").then(n=>n.default),"../i18n/zh-hk.json":()=>import("./i18n/zh-hk.json").then(n=>n.default)});{if(!d[`../i18n/${f}.json`]){console.warn(`Vue Cal: the locale \`${f}\` does not exist. Falling back to \`en-us\`.`),f="en-us";return}d=await((w=d[`../i18n/${f}.json`])==null?void 0:w.call(d))}u.texts=Object.assign(u.texts,Object.assign({...Q.texts},d)),v.updateTexts(u.texts)};let Y=e.reactive(l.events||[]);return e.watch(()=>l.events,f=>Y.splice(0,Y.length,...f)),(l.locale||!u.texts.today)&&S(l.locale||"en-us"),{...e.toRefs(l),events:Y,eventListeners:i,defaultView:W,availableViews:N,ready:k,sm:z,xs:p,clickToNavigate:B,hideWeekdays:h,hideWeekends:T,minTimestamp:m,maxTimestamp:t,schedules:o,selectedDate:c,editableEvents:D,view:b,get hasHiddenDays(){return Object.keys(h.value).length},get size(){return p.value?"xs":z.value?"sm":"lg"},loadTexts:S}},se=(u,l)=>{const s=l.timeTo-l.timeFrom;return(u-l.timeFrom)*100/s},re=(u,l)=>{const s=l.timeTo-l.timeFrom;return~~(u*s/100+l.timeFrom)},fe=(u,l)=>{const s=l.clientHeight;return u*100/s},ue=e.reactive({id:null,date:null});let pe=!1,ge=!0;const te=e.reactive({el:null,cell:null,timeout:null}),ae=e.reactive({eventId:null,fromVueCal:null,toVueCal:null});function Me(u){const{config:l,view:s,eventsManager:v,emit:k,uid:b,dateUtils:z}=u,p=t=>{var w;const{timeStep:o,timeCellHeight:D,timeFrom:S}=l,Y=(((w=t.touches)==null?void 0:w[0])||t).clientY,{top:f}=t.currentTarget.getBoundingClientRect(),d=Y-f-~~t.dataTransfer.getData("cursor-grab-at");return re(fe(d,t.currentTarget),l)},B=(t,o,D)=>{const S=o.duration||i(o.start,o.end)||l.timeStep;let Y=Math.max(p(t),0);if(l.snapToInterval){const n=Y+l.snapToInterval/2;Y=n-n%l.snapToInterval}const f=new Date(new Date(D).setMinutes(Y)),d=Math.min(Y+S,24*60),w=new Date(new Date(D).setMinutes(d));return{start:f,end:w}},i=(t,o)=>Math.round((o-t)/6e4);return{eventDragStart:(t,o)=>{if(console.log("eventDragStart"),t.target.nodeType===3||u.touch.isResizingEvent)return t.preventDefault();t.dataTransfer.dropEffect="move";const D={...o,_:{id:o._.id,duration:i(o.start,o.end)}};t.dataTransfer.setData("event",JSON.stringify(D)),t.dataTransfer.setData("cursor-grab-at",t.offsetY),ae.eventId=o._.id,ae.fromVueCal=b;const S=t.target.closest(".vuecal__event");S.classList.add("vuecal__event--dragging-ghost"),setTimeout(()=>{S.classList.add("vuecal__event--dragging-original"),S.classList.remove("vuecal__event--dragging-ghost")},0),pe=!1,Object.assign(ue,{id:s.id,date:s.firstCellDate}),ge=!0,u.touch.isDraggingEvent=!0},eventDragEnd:(t,o)=>{console.log("eventDragEnd"),ae.eventId=null,t.target.closest(".vuecal__event").classList.remove("vuecal__event--dragging-original");const{fromVueCal:D,toVueCal:S}=ae;S&&D!==S&&v.deleteEvent(o._.id,3),ae.fromVueCal=null,ae.toVueCal=null,pe&&ge&&ue.id&&s.switchView(ue.id,ue.date,!0),u.touch.isDraggingEvent=!1},cellDragEnter:(t,o)=>{const{start:D}=o;console.log("cellDragEnter");const S=t.currentTarget;if(!t.currentTarget.contains(t.relatedTarget)){if(S===te.el||!S.className.includes("vuecal__cell-content"))return!1;te.el&&(te.cell.highlighted=!1),Object.assign(te,{el:S,cell:o,timeout:clearTimeout(te.timeout)}),o.highlighted=!0,["years","year","month"].includes(s.id)&&(te.timeout=setTimeout(()=>u.switchToNarrowerView(D),2e3))}},cellDragOver:(t,o)=>{const{start:D,schedule:S}=o;console.log("cellDragOver"),t.preventDefault(),o.highlighted=!0,(S||S===0)&&(o.highlightedSchedule=S)},cellDragLeave:(t,o)=>{console.log("cellDragLeave"),t.preventDefault(),!t.currentTarget.contains(t.relatedTarget)&&(o.highlightedSchedule=!1,te.cell===o&&(clearTimeout(te.timeout),Object.assign(te,{el:null,cell:null,timeout:null}),o.highlighted=!1))},cellDragDrop:async(t,o)=>{var V,H,A;t.preventDefault(),clearTimeout(te.timeout),Object.assign(te,{el:null,cell:null,timeout:null});const D=JSON.parse(t.dataTransfer.getData("event")||"{}");D.start&&(D.start=new Date(D.start)),D.end&&(D.end=new Date(D.end));let S;const{start:Y,end:f}=B(t,D,o.start),{schedule:d}=((V=t.target.closest("[data-schedule]"))==null?void 0:V.dataset)||{};let w=()=>{};console.log("cellDragDrop",Y,f,d,ae.fromVueCal,b),ae.fromVueCal===b?(S=v.getEvent(D._.id),S&&(S._.dragging=!1,w=()=>{S.start=Y,S.end=f,d!==void 0&&(S.schedule=~~d)})):(S={...D,start:Y,end:f,...d!==void 0&&{schedule:~~d},_:{id:((H=D._)==null?void 0:H.id)||D.id,duration:i(Y,f)},getOverlappingEvents:()=>v.getEventsInRange(v.getEventsByDate(z.formatDate(Y),!0),{start:Y,end:f},{schedule:~~d})},w=()=>{S=v.createEvent(S)});let n=!0;const{drop:$}=(A=l.eventListeners)==null?void 0:A.event;$&&(n=await $({e:t,event:{...S,start:Y,end:f,schedule:~~d},overlaps:S.getOverlappingEvents({start:Y,end:f,schedule:~~d}),cell:o,external:ae.fromVueCal!==b})),n!==!1&&w(),o.highlighted=!1,o.highlightedSchedule=null,ge=!1,ae.toVueCal=b,k("event-dropped",{event:S,originalEvent:D,external:ae.fromVueCal!==b}),k("event-change",{event:S,originalEvent:D})}}}const ve=u=>{let l,s,v,k={},b={};const z=e.ref(u),p=()=>{Date.prototype.addDays=function(a){return T(this,a||0)},Date.prototype.subtractDays=function(a){return N(this,a||0)},Date.prototype.addHours=function(a){return W(this,a||0)},Date.prototype.subtractHours=function(a){return c(this,a||0)},Date.prototype.addMinutes=function(a){return m(this,a||0)},Date.prototype.subtractMinutes=function(a){return t(this,a||0)},Date.prototype.getWeek=function(){return D(this)},Date.prototype.isToday=function(){return S(this)},Date.prototype.isLeapYear=function(){return d(this)},Date.prototype.format=function(a="YYYY-MM-DD"){return K(this,a)},Date.prototype.formatTime=function(a="HH:mm"){return oe(this,a)}},B=()=>{delete Date.prototype.addDays,delete Date.prototype.subtractDays,delete Date.prototype.addHours,delete Date.prototype.subtractHours,delete Date.prototype.addMinutes,delete Date.prototype.subtractMinutes,delete Date.prototype.getWeek,delete Date.prototype.isToday,delete Date.prototype.isLeapYear,delete Date.prototype.format,delete Date.prototype.formatTime},i=a=>z.value=a,h=()=>(s!==new Date().getDate()&&(l=new Date,s=l.getDate(),v=`${l.getFullYear()}-${l.getMonth()}-${l.getDate()}`),v),T=(a,_)=>{const g=new Date(a.valueOf());return g.setDate(g.getDate()+_),g},N=(a,_)=>{const g=new Date(a.valueOf());return g.setDate(g.getDate()-_),g},W=(a,_)=>{const g=new Date(a.valueOf());return g.setHours(g.getHours()+_),g},c=(a,_)=>{const g=new Date(a.valueOf());return g.setHours(g.getHours()-_),g},m=(a,_)=>{const g=new Date(a.valueOf());return g.setMinutes(g.getMinutes()+_),g},t=(a,_)=>{const g=new Date(a.valueOf());return g.setMinutes(g.getMinutes()-_),g},o=(a,_)=>{const g=I=>{const G=I%_;return G!==0&&(I+=G>=_/2?_-G:-G),I};if(typeof a=="number")return g(a);if(a instanceof Date){let I=g(a.getMinutes());I>=60&&(a.setHours(a.getHours()+1),I=0),a.setMinutes(I,0,0)}},D=(a,_=!1)=>{const g=new Date(Date.UTC(a.getFullYear(),a.getMonth(),a.getDate())),I=g.getUTCDay()||7;g.setUTCDate(g.getUTCDate()+4-I);const G=new Date(Date.UTC(g.getUTCFullYear(),0,1));return Math.ceil(((g-G)/864e5+1)/7)+(_?1:0)},S=a=>`${a.getFullYear()}-${a.getMonth()}-${a.getDate()}`===h(),Y=(a,_)=>{if(!a||!_)return console.warn(`Vue Cal: missing date${a?"2":"1"} parameter for comparison with \`isSameDate(date1, date2)\`.`);if(A(a)){if(!A(_))return console.warn(`Vue Cal: invalid date2 provided for comparison with \`isSameDate(date1, date2)\`: \`${_}\`.`)}else return console.warn(`Vue Cal: invalid date1 provided for comparison with \`isSameDate(date1, date2)\`: \`${a}\`.`);return a.getFullYear()===_.getFullYear()&&a.getMonth()===_.getMonth()&&a.getDate()===_.getDate()},f=(a,_,g)=>A(a)?a.getTime()>=_&&a.getTime()<=g:console.warn(`Vue Cal: invalid date provided to \`isInRange(date, rangeStart, rangeEnd)\`: \`${a}\`.`),d=a=>{const _=a.getFullYear();return!(_%400)||_%100&&!(_%4)},w=(a=null,_)=>{const g=a&&new Date(a.valueOf())||new Date,I=_?7:6;return g.setDate(g.getDate()-(g.getDay()+I)%7),g},n=a=>a instanceof Date?a:(a.length===10&&(a+=" 00:00"),new Date(a.replace(/-/g,"/"))),$=a=>a.getHours()*60+a.getMinutes(),V=(a,_)=>{typeof a=="string"&&(a=a.replace(/-/g,"/")),typeof _=="string"&&(_=_.replace(/-/g,"/")),a=new Date(a).setHours(0,0,0,0),_=new Date(_).setHours(0,0,1,0);const g=(new Date(_).getTimezoneOffset()-new Date(a).getTimezoneOffset())*60*1e3;return Math.ceil((_-a-g)/(24*3600*1e3))},H=(a,_,g)=>Math.abs(a.getTime()-_.getTime())<=g*60*1e3,A=a=>a&&a instanceof Date&&!isNaN(a),K=(a,_="YYYY-MM-DD",g=null)=>{if(g||(g=z.value),_||(_="YYYY-MM-DD"),_==="YYYY-MM-DD")return U(a);k={},b={};const I={YYYY:()=>R(a,g).YYYY,YY:()=>R(a,g).YY(),M:()=>R(a,g).M,MM:()=>R(a,g).MM(),MMM:()=>R(a,g).MMM(),MMMM:()=>R(a,g).MMMM(),MMMMG:()=>R(a,g).MMMMG(),D:()=>R(a,g).D,DD:()=>R(a,g).DD(),S:()=>R(a,g).S(),d:()=>R(a,g).d,dd:()=>R(a,g).dd(),ddd:()=>R(a,g).ddd(),dddd:()=>R(a,g).dddd(),HH:()=>X(a,g).HH,H:()=>X(a,g).H,hh:()=>X(a,g).hh,h:()=>X(a,g).h,am:()=>X(a,g).am,AM:()=>X(a,g).AM,mm:()=>X(a,g).mm,m:()=>X(a,g).m,s:()=>X(a,g).s};return _.replace(/(\{[a-zA-Z]+\}|[a-zA-Z]+)/g,(G,ee)=>{const r=I[ee.replace(/\{|\}/g,"")];return r!==void 0?r():ee})},U=a=>{const _=a.getMonth()+1,g=a.getDate();return`${a.getFullYear()}-${_<10?"0":""}${_}-${g<10?"0":""}${g}`},oe=(a,_="HH:mm",g=null,I=!1)=>{let G=!1;if(I){const[M,C,E]=[a.getHours(),a.getMinutes(),a.getSeconds()];M+C+E===141&&(G=!0)}if(a instanceof Date&&_==="HH:mm")return G?"24:00":x(a);b={},g||(g=z.value);const ee=X(a,g),r=_.replace(/(\{[a-zA-Z]+\}|[a-zA-Z]+)/g,(M,C)=>{const E=ee[C.replace(/\{|\}/g,"")];return E!==void 0?E:C});return G?r.replace("23:59","24:00"):r},x=a=>{const _=a.getHours(),g=a.getMinutes();return`${(_<10?"0":"")+_}:${(g<10?"0":"")+g}`},le=a=>{const _=Math.floor(a/60).toString().padStart(2,0),g=(a%60).toString().padStart(2,0);return`${_}:${g}`},ne=a=>{if(a>3&&a<21)return"th";switch(a%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},R=(a,_)=>{if(k.D)return k;const g=a.getFullYear(),I=a.getMonth()+1,G=a.getDate(),r=(a.getDay()-1+7)%7;return k={YYYY:g,YY:()=>g.toString().substring(2),M:I,MM:()=>I.toString().padStart(2,0),MMM:()=>_.months[I-1].substring(0,3),MMMM:()=>_.months[I-1],MMMMG:()=>(_.monthsGenitive||_.months)[I-1],D:G,DD:()=>G.toString().padStart(2,0),S:()=>ne(G),d:r+1,dd:()=>_.weekDaysShort.length?_.weekDaysShort[r]:_.weekDays[r][0],ddd:()=>_.weekDaysShort.length?_.weekDaysShort[r]:_.weekDays[r].substr(0,3),dddd:()=>_.weekDays[r]},k},X=(a,_)=>{if(b.am)return b;let g,I,G;a instanceof Date?(g=a.getHours(),I=a.getMinutes(),G=a.getSeconds()):(g=Math.floor(a/60),I=Math.floor(a%60));const ee=g%12?g%12:12,r=(_||{am:"am",pm:"pm"})[g===24||g<12?"am":"pm"];return b={H:g,h:ee,HH:g.toString().padStart(2,0),hh:ee.toString().padStart(2,0),am:r,AM:r.toUpperCase(),m:I,mm:I.toString().padStart(2,0),s:G},b};return{addDatePrototypes:p,removeDatePrototypes:B,updateTexts:i,addDays:T,subtractDays:N,addHours:W,subtractHours:c,addMinutes:m,subtractMinutes:t,snapToInterval:o,getWeek:D,isToday:S,isSameDate:Y,isInRange:f,isLeapYear:d,getPreviousFirstDayOfWeek:w,stringToDate:n,dateToMinutes:$,countDays:V,datesInSameTimeStep:H,isValid:A,formatDate:K,formatDateLite:U,formatTime:oe,formatTimeLite:x,formatMinutes:le}},$e=u=>{const{dateUtils:l,config:s}=u;let v=0;const k=e.computed(()=>{const c={byDate:{},recurring:[],multiday:[],byId:{}};return s.events.sort((t,o)=>t.start-o.start<0?-1:1).forEach(t=>{b(t),t._||(t._={}),t._.id=t._.id||++v,t.delete||(t.delete=o=>h(t._.id,o)),t._.deleting=!1,t._.deleted=!1,t.isOverlapping=(o=null)=>t.getOverlappingEvents(o).length,t.getOverlappingEvents=(o=null)=>{var D;return N(p(l.formatDate((o==null?void 0:o.start)||t.start),!0),{start:(o==null?void 0:o.start)||t.start,end:(o==null?void 0:o.end)||t.end},{excludeIds:[t._.id],schedule:(D=s.schedules)!=null&&D.length?~~((o==null?void 0:o.schedule)||t.schedule):null})},t._.register=o=>{t._.$el=o,t._.fireCreated&&(u.emit("event-created",t),delete t._.fireCreated)},t._.unregister=()=>t._.$el=null,c.byId[t._.id]=t,t.recurring?c.recurring.push(t._.id):t._.multiday?(c.multiday.push(t._.id),c.byDate[t._.startFormatted]||(c.byDate[t._.startFormatted]=[]),c.byDate[t._.startFormatted].push(t._.id)):(c.byDate[t._.startFormatted]||(c.byDate[t._.startFormatted]=[]),c.byDate[t._.startFormatted].push(t._.id))}),c}),b=c=>{if(typeof c.start=="string"&&(c.start=l.stringToDate(c.start)),typeof c.end=="string"&&(c.end=l.stringToDate(c.end)),c.start.setSeconds(0,0),c.end.setSeconds(0,0),isNaN(c.start)||isNaN(c.end)){isNaN(c.start)?console.error(`Vue Cal: invalid start date for event "${c.title}".`,c.start):console.error(`Vue Cal: invalid end date for event "${c.title}".`,c.end);return}else c.end.getTime()<c.start.getTime()&&console.error(`Vue Cal: invalid event dates for event "${c.title}". The event ends before it starts.`,c.start,c.end);c._||(c._={}),c._.multiday=!l.isSameDate(c.start,new Date(c.end.getTime()-1)),c._.startFormatted=l.formatDate(c.start),c._.startMinutes=~~l.dateToMinutes(c.start),c._.endMinutes=~~l.dateToMinutes(c.end);const m=c.start.getHours(),t=c.start.getMinutes().toString().padStart(2,0),o=c.end.getHours(),D=c.end.getMinutes().toString().padStart(2,0);c._.startTimeFormatted24=`${m.toString().padStart(2,0)}:${t}`,c._.startTimeFormatted12=`${m%12||12}${t?`:${t}`:""} ${m<12?"AM":"PM"}`,c._.endTimeFormatted24=`${o.toString().padStart(2,0)}:${D}`,c._.endTimeFormatted12=`${o%12||12}${D?`:${D}`:""} ${o<12?"AM":"PM"}`,c._.duration=Math.abs(~~((c.end-c.start)/6e4))},z=c=>k.value.byId[c],p=(c,m=!1,t=!1)=>{let o=k.value.byDate[c]||[];return o=m||t?o.map(z):o,t||(o=o.filter(D=>!D.background),m||(o=o.map(D=>D._.id))),o},B=c=>{console.log("👗","getViewEvents");const m={};return c.forEach(({startFormatted:t})=>{m[t]=[];const o=p(t,!1,!0);o.length&&m[t].push(...o)}),m},i=c=>{if(!c.start||!c.end){console.error("Vue Cal: Cannot create an event without valid start and end dates.");return}return s.snapToInterval&&(l.snapToInterval(c.start,s.snapToInterval),l.snapToInterval(c.end,s.snapToInterval)),c._||(c._={}),c._.id=++v,c._.fireCreated=!0,s.events.push(c),c},h=(c,m=0)=>{var D;if(!s.editableEvents.delete)return;if(!c)return console.warn(`Vue Cal: Cannot delete unknown event \`${c}\`.`);const t=s.events.findIndex(S=>S._.id===c);if(t===-1)return console.warn(`Vue Cal: Cannot delete unknown event \`${c}\`.`);const o=s.events[t];if(o.deletable===!1)return console.warn(`Vue Cal: Can't delete event \`${c}\` since it was explicitely set to \`delete: false\`.`);switch(m){case 0:o._.deleting?o._.deleted?s.events.splice(t,1):o._.deleted=!0:o._.deleting=!0;break;case 1:o._.deleting=!0,s.events[t]._.deleting=!0;break;case 2:o._.deleted=!0,s.events[t]._.deleted=!0,(D=o._.$el)==null||D.dispatchEvent(new CustomEvent("event-deleted",{detail:o._.id}));break;case 3:s.events.splice(t,1),console.log("😫","deleting the event!",o),u.emit("update:events",s.events),u.emit("event-delete",o);break}return!0},T=c=>{const m=p(c,!0);if(!m.length)return{cellOverlaps:{},longestStreak:0};let t={},o=[],D=0;m.sort((S,Y)=>S.start-Y.start||S.end-S.start-(Y.end-Y.start));for(const S of m){const Y=S._.id;t[Y]||(t[Y]={overlaps:new Set,maxConcurrent:1,position:0}),o=o.filter($=>$.end>S.start);let f=o.filter($=>{var H;return(!((H=s.schedules)!=null&&H.length)||S.schedule===$.schedule)&&$.start<S.end}),d=new Set(f.map($=>{var V;return((V=t[$._.id])==null?void 0:V.position)??0})),w=0;for(;d.has(w);)w++;t[Y].position=w,o.push(S);let n=Math.max(1,...f.map($=>{var V;return((V=t[$._.id])==null?void 0:V.maxConcurrent)??1}));t[Y].maxConcurrent=Math.max(f.length+1,n);for(const $ of f)t[$._.id].overlaps.add(Y),t[Y].overlaps.add($._.id),t[$._.id].maxConcurrent=t[Y].maxConcurrent;D=Math.max(D,t[Y].maxConcurrent)}for(const S in t)t[S].overlaps=[...t[S].overlaps];return{cellOverlaps:t,longestStreak:D}},N=(c=[],{start:m,end:t},{excludeIds:o=[],schedule:D=null})=>{var f;const S=new Set(o),Y=[];for(const d of c)!S.has((f=d._)==null?void 0:f.id)&&(D===null||D===d.schedule)&&W(d,m,t)&&Y.push(d);return Y},W=(c,m,t)=>{const o=c.allDay||!s.time,D=o?new Date(c.start).setHours(0,0,0,0):c.start.getTime(),S=o?new Date(c.end).setHours(23,59,59,999):c.end.getTime(),Y=o?new Date(m).setHours(0,0,0,0):m.getTime(),f=o?new Date(t).setHours(23,59,59,999):t.getTime();return S>Y&&D<f};return{events:k,getEvent:z,getEventsByDate:p,getViewEvents:B,getCellOverlappingEvents:T,getEventsInRange:N,createEvent:i,deleteEvent:h,isEventInRange:W}},Ee=({config:u,dateUtils:l,emit:s,texts:v,eventsManager:k},b)=>{const{availableViews:z}=u,p=e.ref(u.view&&z[u.view]?u.view:u.defaultView),B=e.ref(u.selectedDate||null);let i=e.ref(new Date);const h=e.ref(new Date(u.viewDate||i.value));h.value.setHours(0,0,0,0);const T=e.ref(new Date(h));let N=null;const W=e.computed(()=>p.value==="month"?T.value:w.value),c=e.computed(()=>p.value==="month"?new Date(T.value.getFullYear(),T.value.getMonth()+1,0,23,59,59,999):$.value),m=e.computed(()=>p.value==="week"?l.getPreviousFirstDayOfWeek(w.value,u.startWeekOnSunday):p.value==="month"?w.value:W.value),t=e.computed(()=>{if(p.value==="week"){const y=l.addDays(m.value,7);return y.setMilliseconds(-1),y}else if(p.value==="month")return $.value;return c.value}),o=e.computed(()=>{const y=i.value.getTime();if(p.value==="week")return m.value.getTime()<=y&&y<=t.value.getTime();const P=w.value.getTime(),O=$.value.getTime();return P<=y&&y<=O});function D(){i.value=new Date,N=setTimeout(D,60*1e3)}function S(){N=setTimeout(D,(60-new Date().getSeconds())*1e3),D()}const Y=e.computed(()=>{if(!u.availableViews[p.value])return 1;let y=u.availableViews[p.value].cols;return u.hasHiddenDays&&["week","month"].includes(p.value)&&(y-=u.hasHiddenDays),y}),f=e.computed(()=>{var y;return((y=u.availableViews[p.value])==null?void 0:y.rows)||1}),d=e.computed(()=>Y.value*f.value),w=e.computed(()=>{if(p.value==="month"){let y=T.value.getDay()||7;return u.startWeekOnSunday&&!u.hideWeekdays[7]&&(y+=1),u.viewDayOffset&&(y-=u.viewDayOffset),l.subtractDays(T.value,y-1)}else if(p.value==="week"){const y="1234567".split("").filter(O=>!Object.keys(u.hideWeekdays).includes(O));let P=Math.min(...y);return u.startWeekOnSunday&&!u.hideWeekdays[7]&&(P=1),u.viewDayOffset&&(P+=u.viewDayOffset),l.addDays(T.value,P-1)}else return T.value}),n=e.computed(()=>{console.log("recomputing view dates");const y=[],P=["days","week","month"].includes(p.value);let O=0;for(let q=0;q<d.value+O;q++)switch(p.value){case"day":case"days":case"week":case"month":{const J=l.addDays(w.value,q),me=J.getDay()||7;if(P&&u.hasHiddenDays&&u.hideWeekdays[me]){O++;continue}const ce=new Date(J);ce.setHours(23,59,59,999),y.push({start:J,startFormatted:l.formatDate(J),end:ce});break}case"year":y.push({start:new Date(w.value.getFullYear(),q,1,0,0,0,0),end:new Date(w.value.getFullYear(),q+1,0,23,59,59,999)});break;case"years":y.push({start:new Date(w.value.getFullYear()+q,0,1,0,0,0,0),end:new Date(w.value.getFullYear()+q+1,0,0,23,59,59,999)});break}return y}),$=e.computed(()=>n.value[n.value.length-1].end),V=e.ref("right"),H=e.computed(()=>{const y=Object.keys(u.availableViews);return y[y.indexOf(p.value)+1]}),A=e.computed(()=>{const y=Object.keys(u.availableViews);return y[y.indexOf(p.value)-1]}),K=e.computed(()=>{const{dateFormat:y,truncations:P}=v;switch(p.value){case"day":return l.formatDate(w.value,y);case"days":{let O=y.replace(/(\s|^)[^a-zA-Z]*?d{2,4}[^a-zA-Z]*?(\s|$)/,"");P!==!1&&(O=O.replace("MMMM","MMM"));const q=l.formatDate(w.value,O),J=l.formatDate($.value,O);return`${q} - ${J}`}case"week":{let O=l.getWeek(w.value,u.startWeekOnSunday&&!u.hideWeekdays[7]);O=` <small>${v.week} ${O}</small>`;const q=w.value.getMonth(),J=w.value.getFullYear(),me=$.value.getMonth(),ce=$.value.getFullYear(),he=q!==me,It=he&&J!==ce,ke=P!==!1&&(u.xs||he),ye=v.months[q][ke?"substring":"toString"](0,3);if(he){const we=v.months[me][ke?"substring":"toString"](0,3);return It?`${ye} ${J} - ${we} ${ce} ${O}`:`${ye} - ${we} ${J} ${O}`}else return`${ye} ${J} ${O}`}case"month":{const O=`${u.xs&&P!==!1?"MMM":"MMMM"} YYYY`;return l.formatDate(W.value,O)}case"year":return w.value.getFullYear();case"years":return`${w.value.getFullYear()} - ${c.value.getFullYear()}`}});function U(){switch(T.value=new Date(h.value||i.value),T.value.setHours(0,0,0,0),p.value){case"day":break;case"days":break;case"week":T.value=l.getPreviousFirstDayOfWeek(T.value,u.startWeekOnSunday&&!u.hideWeekdays[7]);break;case"month":T.value=new Date(T.value.getFullYear(),T.value.getMonth(),1,0,0,0,0);break;case"year":T.value=new Date(T.value.getFullYear(),0,1,0,0,0,0);break;case"years":T.value=new Date(T.value.getFullYear()-T.value.getFullYear()%d.value,0,1,0,0,0,0);break}console.log("🙆‍♂️","updateView",T.value),s("view-change",{id:p.value,title:K.value,start:W.value,end:c.value,extendedStart:m.value,extendedEnd:t.value,cellDates:n.value,containsToday:o.value,events:j.value}),i.value=new Date}function oe(y){const P=p.value,O=u.availableViews[P];y[P]&&JSON.stringify(y[P])===JSON.stringify(O)||U()}function x(y,P=!0){const O=Object.keys(u.availableViews);p.value!==y&&(O.includes(y)?(V.value=O.indexOf(y)<O.indexOf(p.value)?"left":"right",p.value=y,s("update:view",y),U()):console.warn(`Vue Cal: the \`${y}\` view is not available.`))}function le(){H.value?x(H.value):console.warn("Vue Cal: no broader view is available.")}function ne(){A.value?x(A.value):console.warn("Vue Cal: no narrower view is available.")}function R(){a(!1)}function X(){a(!0)}function a(y=!0){let P=new Date(h.value);switch(p.value){case"day":case"days":y?P=l.addDays($.value,1):P=l.subtractDays(w.value,d.value);break;case"week":{y?(P=l.addDays(t.value,1),P.setHours(0,0,0,0)):P=l.subtractDays(m.value,d.value);break}case"month":{const O=y?1:-1;P=new Date(P.getFullYear(),P.getMonth()+O,1,0,0,0,0);break}case"year":{const O=y?1:-1;P=new Date(P.getFullYear()+O,1,1,0,0,0,0);break}case"years":{const O=y?d.value:-d.value;P=new Date(P.getFullYear()+O,1,1,0,0,0,0);break}}g(P)}function _(){const y=new Date;y.setHours(0,0,0,0),g(y)}function g(y,P=!0,O=!1){if(!l.isValid(y))return console.warn("Vue Cal: can't navigate to the given date: invalid date provided to `updateViewDate(date)`.");let[q,J]=[w.value,$.value];p.value==="month"&&([q,J]=[W.value,c.value]),(!l.isInRange(y,q,J)||O)&&(y.setHours(0,0,0,0),V.value=y.getTime()<q.getTime()?"left":"right",h.value=y,P&&s("update:viewDate",y),U())}function I(y,P=!0){if(l.isValid(y)){const{isValid:O,isSameDate:q}=l;(!B.value||!O(B.value)||!q(y,B.value))&&(y.setHours(0,0,0,0),B.value=y,P&&s("update:selectedDate",y))}else return console.warn("Vue Cal: can't update the selected date: invalid date provided to `updateSelectedDate(date)`.")}function G(y){!y&&!T.value.getDay()?g(l.addDays(T.value,1),!0,!0):(V.value="left",U())}function ee(y){console.log("😮",y,u.startWeekOnSunday,T.value),y&&u.startWeekOnSunday&&!T.value.getDay()?g(l.addDays(T.value,1),!0,!0):!y&&u.startWeekOnSunday&&T.value.getDay()===1&&g(l.subtractDays(T.value,1),!0,!0)}function r(){console.log("toggling weekdays",u.hideWeekdays)}function M(y){const P=b.value.querySelector(".vuecal__scrollable"),O=y?y*u.timeCellHeight/u.timeStep:0;P==null||P.scrollTo({top:O,behavior:"smooth"})}function C(){const y=new Date;M(y.getHours()*60+y.getMinutes())}function E(){M(0)}const j=e.computed(()=>k.getViewEvents(n.value)),F=k.createEvent,Z=k.deleteEvent;return e.watch(()=>u.view,y=>x(y,!1)),e.watch(()=>u.availableViews,oe),e.watch(()=>u.datePicker,()=>x("month",!1)),e.watch(()=>u.viewDate,y=>g(y,!1)),e.watch(()=>u.selectedDate,y=>I(y,!1)),e.watch(()=>u.startWeekOnSunday,y=>G(y)),e.watch(()=>u.hideWeekends,y=>ee(y)),e.watch(()=>u.hideWeekdays,r),e.watch(()=>d.value,()=>{d.value>90&&console.warn("Vue Cal: high cell count detected. Performance may degrade when interactions are enabled.")}),e.watch(()=>u.watchRealTime,y=>{y&&u.time?S():N=clearTimeout(N)}),U(),u.time&&u.watchRealTime&&S(),e.onBeforeUnmount(()=>N=clearTimeout(N)),{now:i,id:p,broaderView:H,narrowerView:A,title:K,viewDate:h,start:W,end:c,extendedStart:m,extendedEnd:t,firstCellDate:w,lastCellDate:$,containsToday:o,selectedDate:B,cellDates:n,cols:Y,rows:f,events:j,transitionDirection:V,switch:x,broader:le,narrower:ne,previous:R,next:X,navigate:a,goToToday:_,updateViewDate:g,updateSelectedDate:I,scrollToCurrentTime:C,scrollToTime:M,scrollTop:E,createEvent:F,deleteEvent:Z,get isDay(){return p.value==="day"},get isDays(){return p.value==="days"},get isWeek(){return p.value==="week"},get isMonth(){return p.value==="month"},get isYear(){return p.value==="year"},get isYears(){return p.value==="years"}}},ie=e.reactive({texts:{...Q.texts},dateUtils:ve(Q.texts)}),Se=({props:u,emit:l,attrs:s,vuecalEl:v,uid:k})=>{const b=e.reactive({uid:k,emit:l,texts:{...ie.texts},dateUtils:{...ie.dateUtils},now:new Date,config:{},eventsManager:{},view:{},dnd:{},touch:{isDraggingCell:!1,isDraggingEvent:!1,isResizingEvent:!1}});return b.dateUtils=ve(Object.assign(Q.texts,b.texts)),b.config=Te(b,u,s),b.eventsManager=$e(b),b.view=Ee(b,v),b.dnd=Me(b),b},Ce=24*60,Be={clickToNavigate:{type:Boolean,default:void 0},dark:{type:Boolean,default:!1},datePicker:{type:Boolean,default:!1},disableDays:{type:Array,default:()=>[]},editableEvents:{type:[Boolean,Object],default:!1},eventCreateMinDrag:{type:Number,default:15},events:{type:Array,default:()=>[]},eventCount:{type:Boolean,default:!1},eventsOnMonthView:{type:Boolean,default:!1},hideWeekdays:{type:Array,default:()=>[]},hideWeekends:{type:Boolean,default:!1},locale:{type:String,default:""},maxDate:{type:[String,Date],default:""},minDate:{type:[String,Date],default:""},selectedDate:{type:[String,Date],default:""},sm:{type:Boolean,default:!1},specialHours:{type:Object,default:()=>({})},schedules:{type:Array,default:()=>[]},snapToInterval:{type:Number,default:0},startWeekOnSunday:{type:Boolean,default:!1},theme:{type:[String,Boolean],default:"default"},time:{type:Boolean,default:!0},timeAtCursor:{type:Boolean,default:!1},timeCellHeight:{type:Number,default:40},timeFormat:{type:String,default:""},timeFrom:{type:Number,default:0},timeStep:{type:Number,default:60},timeTo:{type:Number,default:Ce},titleBar:{type:Boolean,default:!0},todayButton:{type:Boolean,default:!0},transitions:{type:Boolean,default:!0},twelveHour:{type:Boolean,default:!1},view:{type:String,default:""},viewDate:{type:[String,Date],default:""},viewDayOffset:{type:Number,default:0},views:{type:[Array,Object],default:["day","days","week","month","year","years"]},viewsBar:{type:Boolean,default:!0},watchRealTime:{type:Boolean,default:!1},weekNumbers:{type:[Boolean,String],default:!1},xs:{type:Boolean,default:!1},minEventWidth:{type:Number,default:0},minScheduleWidth:{type:Number,default:0},overlapsPerTimeStep:{type:Boolean,default:!1},resizeX:{type:Boolean,default:!1},allDayEvents:{type:[Boolean,String],default:!1}},Ve={class:"vuecal__header"},Ye={key:0,class:"vuecal__views-bar"},Pe=["onClick","innerHTML"],ze={key:1,class:"vuecal__title-bar"},Oe={class:"vuecal__transition-wrap"},Ne=["disabled","innerHTML"],je={__name:"header",setup(u){const l=e.inject("vuecal"),{view:s,config:v}=l,k=()=>{v.clickToNavigate&&s.broader()},b=e.computed(()=>v.clickToNavigate?{click:k}:{});return(z,p)=>(e.openBlock(),e.createElementBlock("div",Ve,[e.renderSlot(z.$slots,"header",{view:e.unref(s),availableViews:e.unref(v).availableViews,vuecal:e.unref(l)}),z.$slots.header?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.unref(v).viewsBar?(e.openBlock(),e.createElementBlock("div",Ye,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(v).availableViews,(B,i)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["vuecal__view-button",{"vuecal__view-button--active":e.unref(s).id===i}]),onClick:h=>e.unref(s).switch(i),innerHTML:e.unref(l).texts[i],type:"button"},null,10,Pe))),256))])):e.createCommentVNode("",!0),e.unref(v).titleBar?(e.openBlock(),e.createElementBlock("nav",ze,[e.createElementVNode("button",{class:e.normalizeClass(["vuecal__nav vuecal__nav--prev",{"vuecal__nav--default":!z.$slots["previous-button"]}]),onClick:p[0]||(p[0]=(...B)=>e.unref(s).previous&&e.unref(s).previous(...B)),type:"button"},[e.renderSlot(z.$slots,"previous-button")],2),e.createElementVNode("div",Oe,[e.createVNode(e.Transition,{name:`vuecal-slide-fade--${e.unref(s).transitionDirection}`},{default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock("div",{key:e.unref(s).id+e.unref(s).start.getTime()},[z.$slots.title?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(v).clickToNavigate&&e.unref(s).broaderView?"button":"div"),e.mergeProps({key:0,class:"vuecal__title"},e.toHandlers(b.value)),{default:e.withCtx(()=>[e.renderSlot(z.$slots,"title",e.normalizeProps(e.guardReactiveProps(e.unref(s))))]),_:3},16)):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(v).clickToNavigate&&e.unref(s).broaderView?"button":"div"),e.mergeProps({key:1,class:"vuecal__title"},e.toHandlers(b.value),{innerHTML:e.unref(s).title}),null,16,["innerHTML"]))]))]),_:3},8,["name"])]),e.unref(v).todayButton?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[z.$slots["today-button"]?e.renderSlot(z.$slots,"today-button",{key:0,navigate:()=>!e.unref(s).containsToday&&e.unref(s).goToToday(),active:e.unref(s).containsToday}):(e.openBlock(),e.createElementBlock("button",{key:1,class:e.normalizeClass(["vuecal__nav vuecal__nav--today vuecal__nav--default",{"vuecal__nav--active":e.unref(s).containsToday}]),onClick:p[1]||(p[1]=B=>!e.unref(s).containsToday&&e.unref(s).goToToday()),disabled:!!e.unref(s).containsToday,type:"button",innerHTML:e.unref(l).texts.today},null,10,Ne))],64)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:e.normalizeClass(["vuecal__nav vuecal__nav--next",{"vuecal__nav--default":!z.$slots["next-button"]}]),onClick:p[2]||(p[2]=(...B)=>e.unref(s).next&&e.unref(s).next(...B)),type:"button"},[e.renderSlot(z.$slots,"next-button")],2)])):e.createCommentVNode("",!0)],64))]))}},Fe={key:0,class:"vuecal__headings"},Le={key:0,class:"vuecal__weekdays-headings"},He=["onClick"],We={class:"vuecal__weekday-day"},Re={key:0,class:"vuecal__weekday-date"},Ie={key:1,class:"vuecal__schedules-headings w-flex grow"},Ae=["innerHTML"],Xe={__name:"headings-bar",setup(u){const l=e.inject("vuecal"),{view:s,config:v,dateUtils:k}=l,b=e.computed(()=>v.xs?"day-xs":v.sm||s.isDays||s.isMonth?"day-sm":"day"),z=e.computed(()=>(s.isDay||s.isDays||s.isWeek||s.isMonth)&&!(s.isDay&&!v.schedules)),p=e.computed(()=>s.cellDates.slice(0,s.cols).map(({start:i})=>({id:de[i.getDay()],date:i,dateNumber:i.getDate(),day:k.formatDate(i,"dddd"),"day-sm":k.formatDate(i,"ddd"),"day-xs":k.formatDate(i,"dd"),isToday:k.isToday(i)}))),B={click:i=>{(s.isDays||s.isWeek)&&s.updateSelectedDate(i)}};return(i,h)=>z.value?(e.openBlock(),e.createElementBlock("div",Fe,[e.unref(s).isDay?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Le,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,(T,N)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vuecal__weekday",{"vuecal__weekday--today":T.isToday}]),key:N,onClick:W=>B.click(T.date)},[e.renderSlot(i.$slots,"weekday-heading",{label:T[b.value],id:T.id,date:T.date},()=>[e.createElementVNode("span",We,e.toDisplayString(T[b.value]),1),e.unref(s).isMonth?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("strong",Re,e.toDisplayString(T.dateNumber),1))])],10,He))),128))])),e.unref(v).schedules?(e.openBlock(),e.createElementBlock("div",Ie,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,(T,N)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:N},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(v).schedules,(W,c)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:c},[i.$slots["schedule-heading"]?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["vuecal__schedule vuecal__schedule--heading",W.class])},[e.renderSlot(i.$slots,"schedule-heading",{schedule:W,view:e.unref(s)})],2)):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["vuecal__schedule vuecal__schedule--heading",W.class]),innerHTML:W.label},null,10,Ae))],64))),128))],64))),128))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)}},Ge={class:"vuecal__time-column"},qe={__name:"time-column",setup(u){const l=e.inject("vuecal"),{config:s,texts:v}=l,k=e.computed(()=>{const b=[];for(let p=s.timeFrom;p<s.timeTo;p+=s.timeStep){const B=~~(p/60),i=p%60,h=v[p<720?"am":"pm"];b.push({minutesSum:p,hours:B,minutes:i,formatted12:`${B%12?B%12:12}${i?":"+i.toString().padStart(2,0):""}${h}`,formatted24:`${B.toString().padStart(2,0)}:${i.toString().padStart(2,0)}`})}return b});return(b,z)=>(e.openBlock(),e.createElementBlock("div",Ge,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,(p,B)=>(e.openBlock(),e.createElementBlock("div",{class:"vuecal__time-cell",key:B},[e.renderSlot(b.$slots,"time-cell",{index:B,minutes:p.minutes,hours:p.hours,minutesSum:p.minutesSum,format12:p.formatted12,format24:p.formatted24},()=>[e.createElementVNode("label",null,e.toDisplayString(e.unref(s).twelveHour?p.formatted12:p.formatted24),1)])]))),128))]))}},Ze=["draggable"],Ue={class:"vuecal__event-details"},Je={class:"vuecal__event-title"},Ke={key:0,class:"vuecal__event-time"},Qe=["innerHTML"],De={__name:"event",props:{event:{type:Object,required:!0}},emits:["event-drag-start","event-drag-end","event-resize-start","event-resize-end"],setup(u,{emit:l}){const{config:s,view:v,dnd:k,touch:b,dateUtils:z}=e.inject("vuecal"),p=u,B=e.ref(null),i=e.reactive(p.event),h=e.reactive({dragging:!1,resizing:!1,fromResizer:!1,holding:!1,holdTimer:null,startX:0,startY:0,startPercentageX:0,startPercentageY:0,moveX:0,moveY:0,movePercentageX:0,movePercentageY:0,resizeStartDate:null,resizingOriginalEvent:null,resizingLastAcceptedEvent:null,cellEl:null,schedule:null}),T=e.computed(()=>s.editableEvents.drag&&i.draggable!==!1&&!i.background),N=e.computed(()=>s.time&&s.editableEvents.resize&&i.resizable!==!1&&!i.background);e.computed(()=>s.editableEvents.delete&&i.deletable!==!1&&!i.background);const W=e.computed(()=>{var f,d,w;return{[`vuecal__event--${i._.id}`]:!0,[i.class]:!!i.class,"vuecal__event--recurring":!!i.recurring,"vuecal__event--background":!!i.background,"vuecal__event--multiday":!!((f=i._)!=null&&f.multiday),"vuecal__event--cut-top":((d=i._)==null?void 0:d.startMinutes)<s.timeFrom,"vuecal__event--cut-bottom":((w=i._)==null?void 0:w.endMinutes)>s.timeTo||i.end.getDate()!==i.start.getDate(),"vuecal__event--dragging":!i._.draggingGhost&&i._.dragging,"vuecal__event--dragging-ghost":i._.draggingGhost,"vuecal__event--resizing":h.resizing}}),c=e.computed(()=>{const f=(v.isDay||v.isDays||v.isWeek)&&s.time;if(!f&&!i.backgroundColor&&!i.color)return!1;const d={backgroundColor:i.backgroundColor||null,color:i.color||null};if(f){const w=Math.max(s.timeFrom,i._.startMinutes),n=Math.min(s.timeTo,i._.endMinutes),$=se(w,s),V=se(n,s)-$;d.top=`${$}%`,d.height=`${V}%`}return d}),m=e.computed(()=>{const f={...s.eventListeners.event};Object.entries(f).forEach(([n,$])=>{["resize-end"].includes(n)||(f[n]=V=>{V.type!=="drop"&&$(V.type?{e:V,event:i}:V)})});const d={...f};f.touchstart=n=>{var $;n.stopPropagation(),($=d.touchstart)==null||$.call(d,{e:n,event:i})},f.mousedown=n=>{var $;n.stopPropagation(),t(n),($=d.mousedown)==null||$.call(d,{e:n,event:i})};let w=null;return f.click=n=>{var $;($=d.click)==null||$.call(d,{e:n,event:i}),w?w=clearTimeout(w):w=setTimeout(()=>{var V;w=null,(V=d["delayed-click"])==null||V.call(d,{e:n,event:i})},400)},f.dblclick=n=>{d.dblclick?d.dblclick({e:n,event:i}):i.delete(1)},f}),t=f=>{var n,$,V;const d=((n=f.touches)==null?void 0:n[0])||f;h.fromResizer=d.target.matches(".vuecal__event-resizer, .vuecal__event-resizer *");const w=B.value.getBoundingClientRect();h.startX=((($=f.touches)==null?void 0:$[0])||f).clientX-w.left,h.startY=(((V=f.touches)==null?void 0:V[0])||f).clientY-w.top,h.startPercentageX=h.startX*100/w.width,h.startPercentageY=h.startY*100/w.height,h.cellEl=B.value.closest(".vuecal__cell"),h.resizeStartDate=i.start,document.addEventListener(f.type==="touchstart"?"touchmove":"mousemove",o),document.addEventListener(f.type==="touchstart"?"touchend":"mouseup",D,{once:!0}),h.holdTimer=setTimeout(()=>{var H,A;h.holding=!0,(A=(H=m.value).hold)==null||A.call(H,{e:f,event:i})},1e3)},o=async f=>{var w,n,$,V;const d=((w=f.touches)==null?void 0:w[0])||f;if(h.fromResizer&&!h.resizing&&(h.resizing=!0,h.resizingOriginalEvent={...i,_:{...i._}},b.isResizingEvent=!0,($=(n=m.value).resizeStart)==null||$.call(n,{e:f,event:i})),h.holdTimer=clearTimeout(h.holdTimer),h.holding=!1,h.cellEl){const{top:H,left:A,width:K,height:U}=h.cellEl.getBoundingClientRect();h.moveX=d.clientX-A,h.moveY=d.clientY-H,h.movePercentageX=h.moveX*100/K,h.movePercentageY=h.moveY*100/U}if(h.fromResizer){const{newStart:H,newEnd:A}=Y(i);let K=!0;const{resize:U}=(V=s.eventListeners)==null?void 0:V.event;U&&(K=await U({e:f,event:{...i,start:H,end:A},overlaps:i.getOverlappingEvents({start:H,end:A})})),K!==!1?(i.start=H,i.end=A,h.resizingLastAcceptedEvent&&(h.resizingLastAcceptedEvent=null)):U&&(h.resizingLastAcceptedEvent={...i,_:{...i._}})}},D=async f=>{var d,w;if(h.holdTimer=clearTimeout(h.holdTimer),h.holding=!1,h.resizing){const{newStart:n,newEnd:$}=Y(i);let V=!0;const H=m.value["resize-end"];H&&(V=await H({e:f,event:i,original:h.resizingOriginalEvent,overlaps:i.getOverlappingEvents({start:n,end:$})})),i.start=V===!1?(h.resizingLastAcceptedEvent||h.resizingOriginalEvent).start:((d=h.resizingLastAcceptedEvent)==null?void 0:d.start)||n,i.end=V===!1?(h.resizingLastAcceptedEvent||h.resizingOriginalEvent).end:((w=h.resizingLastAcceptedEvent)==null?void 0:w.end)||$,i._.duration<1&&(i.start=h.resizingOriginalEvent.start,i.end=h.resizingOriginalEvent.end),b.isResizingEvent=!1}document.removeEventListener(f.type==="touchmove"?"touchmove":"mousemove",o),h.resizing=!1,h.fromResizer=!1,h.dragging=!1,h.startX=0,h.startY=0,h.moveX=0,h.moveY=0,h.startPercentageX=0,h.startPercentageY=0,h.movePercentageX=0,h.movePercentageY=0,h.cellEl=null,h.resizeStartDate=null,h.resizingOriginalEvent=null,h.resizingLastAcceptedEvent=null,h.schedule=null},S=()=>{B.value.dispatchEvent(new CustomEvent("event-deleted",{detail:i._.id}))},Y=f=>{const d=new Date(f.start.getFullYear(),f.start.getMonth(),f.start.getDate());new Date(d).setDate(d.getDate()+1);let n=re(h.movePercentageY,s);if(n=Math.max(0,Math.min(n,24*60)),s.snapToInterval){const H=n+s.snapToInterval/2;n=H-H%s.snapToInterval}let $=f.start,V=new Date(d.getTime()+n*6e4);return V<h.resizeStartDate&&($=V,V=h.resizeStartDate),{newStart:$,newEnd:V}};return e.onMounted(()=>i._.register(B.value)),e.onUnmounted(()=>i._.unregister()),(f,d)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({class:"vuecal__event"},e.toHandlers(m.value,!0),{ref_key:"eventEl",ref:B,class:W.value,style:c.value,draggable:T.value,onDragstart:d[1]||(d[1]=w=>T.value&&e.unref(k).eventDragStart(w,i)),onDragend:d[2]||(d[2]=w=>T.value&&e.unref(k).eventDragEnd(w,i))}),[e.createElementVNode("div",Ue,[e.renderSlot(f.$slots,"event",{event:i},()=>[e.createElementVNode("div",Je,e.toDisplayString(i.title),1),e.unref(s).time?(e.openBlock(),e.createElementBlock("div",Ke,e.toDisplayString(i._[`startTimeFormatted${e.unref(s).twelveHour?12:24}`])+`
6
- - `+e.toDisplayString(i._[`endTimeFormatted${e.unref(s).twelveHour?12:24}`]),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"vuecal__event-content",innerHTML:i.content},null,8,Qe)])]),N.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vuecal__event-resizer",onDragstart:d[0]||(d[0]=e.withModifiers(()=>{},["prevent","stop"]))},null,32)):e.createCommentVNode("",!0),e.createVNode(e.Transition,{name:"vuecal-delete-btn"},{default:e.withCtx(()=>[i._.deleting?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vuecal__event-delete",onClick:e.withModifiers(S,["stop"])},"Delete")):e.createCommentVNode("",!0)]),_:1})],16,Ze))}},xe=["innerHTML"],et=["data-schedule"],tt={key:1,class:"vuecal__cell-date"},at={key:2,class:"vuecal__cell-content"},nt={key:3,class:"vuecal__cell-events"},lt={key:1,class:"vuecal__cell-date"},st={key:2,class:"vuecal__cell-content"},rt={key:3,class:"vuecal__cell-events"},ot={key:5,class:"vuecal__cell-events-count"},it=["title"],ct={__name:"cell",props:{start:{type:Date,required:!0},end:{type:Date,required:!0},index:{type:Number,required:!0}},setup(u){const l=u,s=e.inject("vuecal"),{view:v,config:k,dateUtils:b,eventsManager:z,dnd:p,touch:B}=s,i=e.computed(()=>b.isToday(l.start)),h=e.ref(null),T=e.ref([]),N=e.ref(!1),W=r=>{T.value.push(r.detail),N.value=!0},c=()=>setTimeout(()=>N.value=!1,300),m=e.reactive({dragging:!1,holding:!1,holdTimer:null,thresholdPassed:!1,startX:0,startY:0,moveX:0,moveY:0,startPercentageX:0,startPercentageY:0,movePercentageX:0,movePercentageY:0,schedule:null}),t=e.ref(!1),o=e.computed(()=>{let r=Math.min(m.startPercentageY,m.movePercentageY),M=Math.max(m.startPercentageY,m.movePercentageY),C=re(r,k),E=re(M,k);return k.snapToInterval&&(C=b.snapToInterval(C,k.snapToInterval),E=b.snapToInterval(E,k.snapToInterval),r=se(C,k),M=se(E,k)),{style:{top:r+"%",height:Math.abs(M-r)+"%"},startMinutes:C,endMinutes:E,start:b.formatMinutes(C),end:b.formatMinutes(E),...m.schedule?{schedule:m.schedule}:{}}}),D=e.computed(()=>{const r=k.editableEvents.create&&(m.dragging||t.value),M=k.eventCreateMinDrag&&m.thresholdPassed||!k.eventCreateMinDrag;return r&&M}),S=e.computed(()=>{var Z;const r=new Date,M=v.start.getFullYear(),C=v.start.getMonth(),E=l.start.getFullYear(),j=l.start.getMonth();return{[`vuecal__cell--${de[l.start.getDay()]}`]:v.isDay||v.isDays||v.isWeek||v.isMonth,[`vuecal__cell--${_e[j]}`]:v.isYear,[`vuecal__cell--${E}`]:v.isYears,"vuecal__cell--today":i.value,"vuecal__cell--current-month":v.isYear&&E===r.getFullYear()&&j===r.getMonth(),"vuecal__cell--current-year":v.isYears&&E===r.getFullYear(),"vuecal__cell--out-of-range":v.isMonth&&(E!==M||j!==C),"vuecal__cell--before-min":x.value&&U.value,"vuecal__cell--after-max":x.value&&oe.value,"vuecal__cell--disabled":x.value,"vuecal__cell--selected":v.selectedDate&&v.selectedDate.getTime()>=l.start.getTime()&&v.selectedDate.getTime()<=l.end.getTime(),"vuecal__cell--has-schedules":(Z=k.schedules)==null?void 0:Z.length,"vuecal__cell--dragging":m.dragging,"vuecal__cell--has-events":d.value.length}}),Y=e.computed(()=>b.formatDate(l.start)),f=e.computed(()=>{switch(console.log("recomputing cell"),v.id){case"day":return"";case"days":return k.availableViews.days.rows>1&&b.formatDate(l.start,"D"),"";case"week":return"";case"month":return b.formatDate(l.start,"D");case"year":return b.formatDate(l.start,k.xs?"MMM":"MMMM");case"years":return b.formatDate(l.start,"YYYY")}}),d=e.computed(()=>k.datePicker?[]:z.getEventsByDate(Y.value,!0,!0).filter(r=>!T.value.includes(r._.id))),w=e.computed(()=>d.value.filter(r=>!r.background)),n=e.computed(()=>{var r;return(r=k.schedules)==null?void 0:r.reduce((M,C)=>(M[C.id]=d.value.filter(E=>E.schedule===C.id),M),{})}),$=e.ref({cellOverlaps:{},longestStreak:0});e.watch(()=>w.value.map(r=>`${r._.id} ${r.start.getTime()} ${r.end.getTime()}`).join(),()=>{$.value=z.getCellOverlappingEvents(Y.value)},{immediate:!0});const V=e.computed(()=>{const r={};for(const M of d.value){const C=M._.id,{maxConcurrent:E=1,position:j=0}=$.value.cellOverlaps[C]||{};r[C]={width:`${100/E}%`,left:`${100/E*j}%`}}return r}),H=()=>{$.value=z.getCellOverlappingEvents(Y.value)},A=e.computed(()=>v.isMonth&&k.eventCount&&!k.eventsOnMonthView&&w.value.length),K=e.computed(()=>{var C;if(!k.specialHours||v.isMonth||v.isYear||v.isYears)return;const r=de[l.start.getDay()];let M=(C=k.specialHours)==null?void 0:C[r];if(M)return Array.isArray(M)||(M=[M]),M.map(E=>{let{from:j,to:F,class:Z,label:y}=E;if(isNaN(j)||isNaN(F)||k.timeFrom>=F||k.timeTo<=j)return;j=Math.max(k.timeFrom,j),F=Math.min(k.timeTo,F);const P=se(j,k),O=se(F,k)-P;return{style:{top:`${P}%`,height:`${O}%`},label:y,class:Z}}).filter(E=>!!E)}),U=e.computed(()=>k.minTimestamp!==null&&k.minTimestamp>l.end.getTime()),oe=e.computed(()=>k.maxTimestamp&&k.maxTimestamp<l.start.getTime()),x=e.computed(()=>{const{disableDays:r}=k,M=v.isYear||v.isYears;return r.length&&r.includes(b.formatDate(l.start))&&!M?!0:U.value||oe.value}),le=e.reactive({show:e.computed(()=>{if(!(!v.isDay&&!v.isDays&&!v.isWeek)&&!(!i.value||!k.time)&&!(k.timeFrom>b.dateToMinutes(v.now))&&!(b.dateToMinutes(v.now)>k.timeTo))return!0}),nowInMinutes:e.computed(()=>b.dateToMinutes(v.now)),todaysTimePosition:e.computed(()=>se(le.nowInMinutes,k)),style:e.computed(()=>`top: ${le.todaysTimePosition}%`),currentTime:e.computed(()=>b.formatTime(v.now))}),ne=e.computed(()=>{if(x.value)return{};const r={...k.eventListeners.cell};Object.entries(r).forEach(([E,j])=>{r[E]=F=>{var Z,y,P;(P=(y=F.target||((Z=F.e)==null?void 0:Z.target)).closest)!=null&&P.call(y,".vuecal__event")||j(F.type?{e:F,cell:R.value,cursor:X.value}:F)}});const M={...r};let C=null;return r.click=E=>{var j;a(),(j=M.click)==null||j.call(M,{e:E,cell:R.value,cursor:X.value}),C?C=clearTimeout(C):C=setTimeout(()=>{var F;C=null,(F=M["delayed-click"])==null||F.call(M,{e:E,cell:R.value,cursor:X.value})},400)},(k.time&&v.isDay||v.isDays||v.isWeek)&&(r.touchstart=E=>{var j;_(E.e||E),(j=M.touchstart)==null||j.call(M,{e:E,cell:R.value,cursor:X.value})},r.mousedown=E=>{var j;_(E.e||E),(j=M.mousedown)==null||j.call(M,{e:E,cell:R.value,cursor:X.value})}),M.dblclick&&(r.dblclick=E=>{var q,J;const j=(((q=E.touches)==null?void 0:q[0])||E).clientY,{top:F}=h.value.getBoundingClientRect(),Z=fe(j-F,h.value),y=re(Z,k),P=new Date(l.start);P.setMinutes(y);const O={y:Z,date:P};(J=M.dblclick)==null||J.call(M,{e:E,cell:R.value,cursor:O})}),k.editableEvents.drag&&(r.dragenter=E=>p.cellDragEnter(E,R.value),r.dragover=E=>p.cellDragOver(E,R.value),r.dragleave=E=>p.cellDragLeave(E,R.value),r.drop=E=>p.cellDragDrop(E,R.value)),r}),R=e.computed(()=>({start:l.start,end:l.end,events:d,...m.schedule?{schedule:m.schedule}:{}})),X=e.computed(()=>{const r=re(m.movePercentageY||m.startPercentageY,k),M=new Date(l.start);return M.setMinutes(r),{x:m.movePercentageX||m.startPercentageX,y:m.movePercentageY||m.startPercentageY,date:M}}),a=()=>{v.updateSelectedDate(l.start),k.clickToNavigate&&((v.isMonth||v.isDays||v.isWeek)&&k.availableViews.day?v.switch("day"):v.isYear&&k.availableViews.month?v.switch("month"):v.isYears&&k.availableViews.year&&v.switch("year")),v.updateViewDate(l.start)},_=r=>{var C,E;m.schedule=~~r.target.dataset.schedule;const M=h.value.getBoundingClientRect();m.startX=(((C=r.touches)==null?void 0:C[0])||r).clientX-M.left,m.startY=(((E=r.touches)==null?void 0:E[0])||r).clientY-M.top,m.startPercentageX=m.startX*100/M.width,m.startPercentageY=m.startY*100/M.height,m.thresholdPassed=!1,document.addEventListener(r.type==="touchstart"?"touchmove":"mousemove",g),document.addEventListener(r.type==="touchstart"?"touchend":"mouseup",I,{once:!0}),m.holdTimer=setTimeout(()=>{var j,F;m.holding=!0,(F=(j=ne.value).hold)==null||F.call(j,{e:r,cell:R.value,cursor:X.value})},1e3)},g=r=>{var C,E,j,F,Z,y;m.dragging||(B.isDraggingCell=!0,(E=(C=ne.value).dragStart)==null||E.call(C,{e:r,cell:R.value,cursor:X.value})),m.dragging=!0,m.holdTimer=clearTimeout(m.holdTimer),m.holding=!1;const M=h.value.getBoundingClientRect();m.moveX=(((j=r.touches)==null?void 0:j[0])||r).clientX-M.left,m.moveY=(((F=r.touches)==null?void 0:F[0])||r).clientY-M.top,m.movePercentageX=m.moveX*100/M.width,m.movePercentageY=m.moveY*100/M.height,k.eventCreateMinDrag&&Math.abs(m.startY-m.moveY)>k.eventCreateMinDrag&&(m.thresholdPassed=!0),(y=(Z=ne.value).drag)==null||y.call(Z,{e:r,cell:R.value,cursor:X.value})},I=async r=>{var M,C;document.removeEventListener(r.type==="touchend"?"touchmove":"mousemove",g,{passive:!1}),m.dragging&&((C=(M=ne.value).dragEnd)==null||C.call(M,{e:r,cell:R.value,cursor:X.value}),B.isDraggingCell=!1,k.editableEvents.create&&(t.value=!0,await G(r),t.value=!1)),m.holdTimer=clearTimeout(m.holdTimer),m.holding=!1,m.dragging=!1,m.startX=0,m.startY=0,m.moveX=0,m.moveY=0,m.startPercentageX=0,m.startPercentageY=0,m.movePercentageX=0,m.movePercentageY=0,m.thresholdPassed=!1,m.schedule=null},G=async r=>{if(!D.value)return;let{start:M,end:C,startMinutes:E,endMinutes:j}=o.value;M=new Date(l.start),M.setMinutes(E),C=new Date(l.start),C.setMinutes(j);let F={...o.value,start:M,end:C};const{create:Z}=k.eventListeners.event;if(typeof Z=="function"){const y=F;F=await new Promise(P=>Z({e:r,event:F,cell:R.value,resolve:P,cursor:X.value})),F&&typeof F=="object"&&v.createEvent(F),F&&typeof F=="boolean"&&v.createEvent(y)}else v.createEvent(F)},ee=()=>{Object.keys(ne.value).forEach(r=>{var M;(M=h.value)==null||M.removeEventListener(r,ne.value[r])})};return e.watch(w.value,H,{deep:!0}),e.onBeforeUnmount(async()=>{T.value.forEach(r=>z.deleteEvent(r,3)),ee(),await e.nextTick()}),(r,M)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({class:["vuecal__cell",S.value],ref_key:"cellEl",ref:h},e.toHandlers(ne.value,!0)),[r.$slots.cell?e.renderSlot(r.$slots,"cell",{key:0,start:u.start,end:u.end,index:u.index,events:d.value}):e.createCommentVNode("",!0),K.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(K.value,(C,E)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vuecal__special-hours",C.class]),style:e.normalizeStyle(C.style),innerHTML:C.label||""},null,14,xe))),256)):e.createCommentVNode("",!0),!r.$slots.cell&&e.unref(k).schedules?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(e.unref(k).schedules,C=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vuecal__schedule vuecal__schedule--cell",C.class]),key:C.id,style:e.normalizeStyle(C.style||null),"data-schedule":C.id},[r.$slots["cell-events"]?e.renderSlot(r.$slots,"cell-events",{key:0,start:u.start,end:u.end,events:d.value}):e.createCommentVNode("",!0),f.value||r.$slots["cell-date"]?(e.openBlock(),e.createElementBlock("div",tt,[e.renderSlot(r.$slots,"cell-date",{start:u.start,end:u.end,events:d.value},()=>[e.createTextVNode(e.toDisplayString(f.value),1)])])):e.createCommentVNode("",!0),r.$slots["cell-content"]?(e.openBlock(),e.createElementBlock("div",at,[e.renderSlot(r.$slots,"cell-content",{start:u.start,end:u.end,events:d.value})])):e.createCommentVNode("",!0),r.$slots["cell-events"]&&d.value.length?(e.openBlock(),e.createElementBlock("div",nt,[e.renderSlot(r.$slots,"cell-events",{start:u.start,end:u.end,events:d.value})])):d.value.length||N.value?(e.openBlock(),e.createBlock(e.TransitionGroup,{key:4,class:"vuecal__cell-events",name:"vuecal-event-delete",onBeforeLeave:M[0]||(M[0]=E=>N.value=!0),onAfterLeave:c,tag:"div"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value[C.id],E=>(e.openBlock(),e.createBlock(De,{key:E._.id,event:E,onEventDeleted:W,style:e.normalizeStyle(V.value[E._.id])},e.createSlots({_:2},[r.$slots.event?{name:"event",fn:e.withCtx(j=>[e.renderSlot(r.$slots,"event",e.mergeProps({ref_for:!0},j))]),key:"0"}:void 0]),1032,["event","style"]))),128))]),_:2},1024)):e.createCommentVNode("",!0),D.value&&m.schedule===C.id?(e.openBlock(),e.createElementBlock("div",{key:5,class:"vuecal__event-placeholder",style:e.normalizeStyle(o.value.style)},e.toDisplayString(o.value.start)+" - "+e.toDisplayString(o.value.end),5)):e.createCommentVNode("",!0)],14,et))),128)):e.createCommentVNode("",!0),!r.$slots.cell&&!e.unref(k).schedules?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[r.$slots["cell-events"]?e.renderSlot(r.$slots,"cell-events",{key:0}):e.createCommentVNode("",!0),f.value||r.$slots["cell-date"]?(e.openBlock(),e.createElementBlock("div",lt,[e.renderSlot(r.$slots,"cell-date",{start:u.start,end:u.end,events:d.value},()=>[e.createTextVNode(e.toDisplayString(f.value),1)])])):e.createCommentVNode("",!0),r.$slots["cell-content"]?(e.openBlock(),e.createElementBlock("div",st,[e.renderSlot(r.$slots,"cell-content",{start:u.start,end:u.end,events:d.value})])):e.createCommentVNode("",!0),r.$slots["cell-events"]&&d.value.length?(e.openBlock(),e.createElementBlock("div",rt,[e.renderSlot(r.$slots,"cell-events",{start:u.start,end:u.end,events:d.value})])):(d.value.length||N.value)&&!(e.unref(v).isMonth&&!e.unref(k).eventsOnMonthView)?(e.openBlock(),e.createBlock(e.TransitionGroup,{key:4,class:"vuecal__cell-events",name:"vuecal-event-delete",onBeforeLeave:M[1]||(M[1]=C=>N.value=!0),onAfterLeave:c,tag:"div"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,C=>(e.openBlock(),e.createBlock(De,{key:C._.id,event:C,onEventDeleted:W,style:e.normalizeStyle(V.value[C._.id])},e.createSlots({_:2},[r.$slots.event?{name:"event",fn:e.withCtx(E=>[e.renderSlot(r.$slots,"event",e.mergeProps({ref_for:!0},E))]),key:"0"}:void 0]),1032,["event","style"]))),128))]),_:3})):e.createCommentVNode("",!0),D.value?(e.openBlock(),e.createElementBlock("div",{key:5,class:"vuecal__event-placeholder",style:e.normalizeStyle(o.value.style)},e.toDisplayString(o.value.start)+" - "+e.toDisplayString(o.value.end),5)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),r.$slots["event-count"]?e.renderSlot(r.$slots,"event-count",{key:4,events:w.value}):A.value?(e.openBlock(),e.createElementBlock("div",ot,e.toDisplayString(w.value.length),1)):e.createCommentVNode("",!0),le.show?(e.openBlock(),e.createElementBlock("div",{key:6,class:"vuecal__now-line",style:e.normalizeStyle(le.style),title:le.currentTime},[e.createElementVNode("span",null,e.toDisplayString(le.currentTime),1)],12,it)):e.createCommentVNode("",!0)],16))}},dt={__name:"body",setup(u){const l=e.inject("vuecal");let{view:s,config:v,dateUtils:k}=l;const b=e.ref(null),z=e.ref(null),p=e.computed(()=>(console.log("recomputing bodyStyles",s.id),{"--vuecal-grid-columns":s.cols,"--vuecal-grid-rows":s.rows})),B=e.computed(()=>{const T=k.formatTime(re(z.value,v));return{style:{top:z.value+"%"},time:T}}),i=T=>{var c;if(s.isMonth||s.isYear||s.isYears)return;const N=(((c=T.touches)==null?void 0:c[0])||T).clientY,{top:W}=b.value.getBoundingClientRect();z.value=fe(N-W,b.value)},h=()=>{z.value=null};return e.onMounted(()=>{b.value.addEventListener("mousemove",i),b.value.addEventListener("touchmove",i),b.value.addEventListener("mouseleave",h),b.value.addEventListener("touchend",h)}),e.onBeforeUnmount(()=>{b.value&&(b.value.removeEventListener("mousemove",i),b.value.removeEventListener("touchmove",i),b.value.removeEventListener("mouseleave",h),b.value.removeEventListener("touchend",h))}),(T,N)=>(e.openBlock(),e.createElementBlock("div",{class:"vuecal__body",ref_key:"bodyEl",ref:b,style:e.normalizeStyle(p.value)},[e.createVNode(e.Transition,{name:"vuecal-shrink"},{default:e.withCtx(()=>[e.unref(v).timeAtCursor&&z.value!==null?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vuecal__time-at-cursor",style:e.normalizeStyle(B.value.style)},[e.createElementVNode("label",null,e.toDisplayString(B.value.time),1)],4)):e.createCommentVNode("",!0)]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(s).cellDates,(W,c)=>(e.openBlock(),e.createBlock(ct,{key:c,start:W.start,end:W.end,index:c},e.createSlots({_:2},[T.$slots.cell?{name:"cell",fn:e.withCtx(m=>[e.renderSlot(T.$slots,"cell",e.mergeProps({ref_for:!0},m))]),key:"0"}:void 0,T.$slots["cell-date"]?{name:"cell-date",fn:e.withCtx(m=>[e.renderSlot(T.$slots,"cell-date",e.mergeProps({ref_for:!0},m))]),key:"1"}:void 0,T.$slots["cell-content"]?{name:"cell-content",fn:e.withCtx(m=>[e.renderSlot(T.$slots,"cell-content",e.mergeProps({ref_for:!0},m))]),key:"2"}:void 0,T.$slots["cell-events"]?{name:"cell-events",fn:e.withCtx(m=>[e.renderSlot(T.$slots,"cell-events",e.mergeProps({ref_for:!0},m))]),key:"3"}:T.$slots.event?{name:"event",fn:e.withCtx(m=>[e.renderSlot(T.$slots,"event",e.mergeProps({ref_for:!0},m))]),key:"4"}:T.$slots["event-count"]?{name:"event-count",fn:e.withCtx(m=>[e.renderSlot(T.$slots,"event-count",e.mergeProps({ref_for:!0},m))]),key:"5"}:void 0]),1032,["start","end","index"]))),128))],4))}},ut=["data-locale"],mt={class:"vuecal__scrollable-wrap"},ft={key:1,class:"vuecal__week-numbers"},gt={class:"vuecal__week-number"},ht={class:"vuecal__body-wrap"},yt={__name:"index",props:Be,emits:["ready","view-change","update:view","update:selectedDate","update:viewDate","update:events","event-delete","event-created","event-dropped","event-change"],setup(u,{expose:l,emit:s}){const v=u,k=s,b=e.useTemplateRef("vuecal-el"),z=Se({props:v,emit:k,attrs:e.useAttrs(),vuecalEl:b,uid:e.useId()}),{config:p,view:B,dateUtils:i,touch:h}=z,T=e.computed(()=>p.time&&(B.isDay||B.isDays||B.isWeek)),N=e.computed(()=>Array(B.rows).fill().map((t,o)=>i.getWeek(i.addDays(B.firstCellDate,7*o)))),W=e.computed(()=>{var t;return{"vuecal--ready":p.ready,[`vuecal--${p.theme}-theme`]:p.theme,[`vuecal--${p.size}`]:!0,"vuecal--date-picker":p.datePicker,"vuecal--dark":p.dark,"vuecal--light":!p.dark,[`vuecal--${B.id}-view`]:!0,"vuecal--view-has-time":T.value,"vuecal--timeless":!p.time,"vuecal--dragging-cell":h.isDraggingCell,"vuecal--dragging-event":h.isDraggingEvent,"vuecal--resizing-event":h.isResizingEvent,"vuecal--has-schedules":(t=p.schedules)==null?void 0:t.length}}),c=e.computed(()=>({"--vuecal-time-cell-height":p.timeCellHeight&&`${p.timeCellHeight}px`})),m=e.computed(()=>{var t,o;return{"vuecal__scrollable--row":T.value||p.weekNumbers&&B.isMonth,[`vuecal__scrollable--${B.id}-view`]:!0,"vuecal__scrollable--has-schedules":(t=p.schedules)==null?void 0:t.length,"vuecal__scrollable--no-schedules":!((o=p.schedules)!=null&&o.length)}});return e.onMounted(async()=>{await e.nextTick(),k("ready",{config:p,view:B})}),e.watch(()=>p.locale,t=>p.loadTexts(t)),e.provide("vuecal",z),l({view:z.view}),(t,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vuecal",W.value]),ref:"vuecal-el","data-locale":t.locale,style:e.normalizeStyle(c.value)},[t.$slots.diy?e.renderSlot(t.$slots,"diy",{key:0,vuecal:e.unref(z),view:e.unref(B),availableViews:e.unref(p).availableViews}):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(je,null,e.createSlots({_:2},[t.$slots.header?{name:"header",fn:e.withCtx(D=>[e.renderSlot(t.$slots,"header",e.normalizeProps(e.guardReactiveProps(D)))]),key:"0"}:void 0,!t.$slots.header&&t.$slots["previous-button"]?{name:"previous-button",fn:e.withCtx(D=>[e.renderSlot(t.$slots,"previous-button",e.normalizeProps(e.guardReactiveProps(D)))]),key:"1"}:void 0,!t.$slots.header&&t.$slots["next-button"]?{name:"next-button",fn:e.withCtx(D=>[e.renderSlot(t.$slots,"next-button",e.normalizeProps(e.guardReactiveProps(D)))]),key:"2"}:void 0,!t.$slots.header&&t.$slots["today-button"]?{name:"today-button",fn:e.withCtx(D=>[e.renderSlot(t.$slots,"today-button",e.normalizeProps(e.guardReactiveProps(D)))]),key:"3"}:void 0,!t.$slots.header&&t.$slots.title?{name:"title",fn:e.withCtx(D=>[e.renderSlot(t.$slots,"title",e.normalizeProps(e.guardReactiveProps(D)))]),key:"4"}:void 0,!t.$slots.header&&t.$slots["schedule-heading"]?{name:"schedule-heading",fn:e.withCtx(D=>[e.renderSlot(t.$slots,"schedule-heading",e.normalizeProps(e.guardReactiveProps(D)))]),key:"5"}:void 0]),1024),e.createElementVNode("div",mt,[e.createVNode(e.Transition,{name:`vuecal-slide-fade--${e.unref(B).transitionDirection}`},{default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vuecal__scrollable",m.value]),key:e.unref(B).id+e.unref(B).start.getTime()},[T.value?(e.openBlock(),e.createBlock(qe,{key:0},e.createSlots({_:2},[t.$slots["time-cell"]?{name:"time-cell",fn:e.withCtx(D=>[e.renderSlot(t.$slots,"time-cell",e.normalizeProps(e.guardReactiveProps(D)))]),key:"0"}:void 0]),1024)):e.createCommentVNode("",!0),e.unref(p).weekNumbers&&e.unref(B).isMonth?(e.openBlock(),e.createElementBlock("div",ft,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,D=>(e.openBlock(),e.createElementBlock("div",gt,[e.renderSlot(t.$slots,"week-number",{},()=>[e.createElementVNode("small",null,e.toDisplayString(D),1)])]))),256))])):e.createCommentVNode("",!0),e.createElementVNode("div",ht,[e.createVNode(Xe,null,e.createSlots({_:2},[t.$slots["weekday-heading"]?{name:"weekday-heading",fn:e.withCtx(D=>[e.renderSlot(t.$slots,"weekday-heading",e.normalizeProps(e.guardReactiveProps(D)))]),key:"0"}:void 0,t.$slots["schedule-heading"]?{name:"schedule-heading",fn:e.withCtx(D=>[e.renderSlot(t.$slots,"schedule-heading",e.normalizeProps(e.guardReactiveProps(D)))]),key:"1"}:void 0]),1024),e.createVNode(dt,null,e.createSlots({_:2},[t.$slots.cell?{name:"cell",fn:e.withCtx(D=>[e.renderSlot(t.$slots,"cell",e.normalizeProps(e.guardReactiveProps(D)))]),key:"0"}:void 0,!t.$slots.cell&&t.$slots["cell-date"]?{name:"cell-date",fn:e.withCtx(D=>[e.renderSlot(t.$slots,"cell-date",e.normalizeProps(e.guardReactiveProps(D)))]),key:"1"}:void 0,!t.$slots.cell&&t.$slots["cell-content"]?{name:"cell-content",fn:e.withCtx(D=>[e.renderSlot(t.$slots,"cell-content",e.normalizeProps(e.guardReactiveProps(D)))]),key:"2"}:void 0,!t.$slots.cell&&t.$slots["cell-events"]?{name:"cell-events",fn:e.withCtx(D=>[e.renderSlot(t.$slots,"cell-events",e.normalizeProps(e.guardReactiveProps(D)))]),key:"3"}:void 0,!t.$slots.cell&&t.$slots.event?{name:"event",fn:e.withCtx(D=>[e.renderSlot(t.$slots,"event",e.normalizeProps(e.guardReactiveProps(D)))]),key:"4"}:void 0,!t.$slots.cell&&t.$slots["event-count"]?{name:"event-count",fn:e.withCtx(D=>[e.renderSlot(t.$slots,"event-count",e.normalizeProps(e.guardReactiveProps(D)))]),key:"5"}:void 0]),1024)])],2))]),_:3},8,["name"])])],64))],14,ut))}},pt=u=>{ie.texts={...Q.texts,...u},ie.dateUtils.updateTexts(ie.texts)},{addDatePrototypes:vt,removeDatePrototypes:Dt,updateTexts:kt,addDays:wt,subtractDays:_t,addHours:bt,subtractHours:Tt,addMinutes:Mt,subtractMinutes:$t,getWeek:Et,isToday:St,isSameDate:Ct,isInRange:Bt,isLeapYear:Vt,getPreviousFirstDayOfWeek:Yt,stringToDate:Pt,dateToMinutes:zt,countDays:Ot,datesInSameTimeStep:Nt,isValid:jt,formatDate:Ft,formatDateLite:Lt,formatTime:Ht,formatTimeLite:Wt,formatMinutes:Rt}=ie.dateUtils;L.VueCal=yt,L.addDatePrototypes=vt,L.addDays=wt,L.addHours=bt,L.addMinutes=Mt,L.countDays=Ot,L.dateToMinutes=zt,L.datesInSameTimeStep=Nt,L.formatDate=Ft,L.formatDateLite=Lt,L.formatMinutes=Rt,L.formatTime=Ht,L.formatTimeLite=Wt,L.getPreviousFirstDayOfWeek=Yt,L.getWeek=Et,L.isInRange=Bt,L.isLeapYear=Vt,L.isSameDate=Ct,L.isToday=St,L.isValidDate=jt,L.removeDatePrototypes=Dt,L.stringToDate=Pt,L.subtractDays=_t,L.subtractHours=Tt,L.subtractMinutes=$t,L.updateTexts=kt,L.useLocale=pt,Object.defineProperty(L,Symbol.toStringTag,{value:"Module"})});
5
+ */const te={texts:{weekDays:Array(7).fill(""),weekDaysShort:[],months:Array(12).fill(""),years:"",year:"",month:"",week:"",day:"",today:"",noEvent:"",allDay:"",deleteEvent:"",createEvent:"",dateFormat:"dddd MMMM D, YYYY",am:"am",pm:"pm",truncations:!0},availableViews:{day:{cols:1,rows:1},days:{cols:10,rows:1},week:{cols:7,rows:1},month:{cols:7,rows:6},year:{cols:4,rows:3},years:{cols:5,rows:5}}},Ce=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],we=["sun","mon","tue","wed","thu","fri","sat"],Be=we.reduce((D,s,o)=>(D[s]=o||7,D),{}),Ve=(D,s,o)=>{const{dateUtils:y}=D,w=!1,T=e.computed(()=>{if(O.value[s.view])return s.view;const l=s.datePicker?"month":"week",r=s.view||l;return O.value[r]?r:(console.warn(`Vue Cal: the provided or default view \`${r}\` is either invalid or not in the list of available views. The first available view will be chosen: \`${Object.keys(O.value)[0]}\`.`),Object.keys(O.value)[0])}),P=e.computed(()=>s.sm&&!s.xs),f=e.computed(()=>s.xs||s.datePicker),C=e.computed(()=>s.clickToNavigate||s.datePicker&&s.clickToNavigate!==!1),c=e.computed(()=>{const l={cell:{},event:{}},r=_=>_.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();for(const[_,a]of Object.entries(o)){const[B,Y,X]=_.match(/^on(Cell|Event)(.+)$/)||[];B&&(l[Y.toLowerCase()][r(X).replace(/^-+|-+$/g,"")]=a)}return l}),g=e.computed(()=>{var r;const l={};return s.hideWeekends&&(l[6]=!0)&&(l[7]=!0),(r=s.hideWeekdays)!=null&&r.length&&s.hideWeekdays.forEach(_=>l[Be[_]]=!0),l}),M=e.computed(()=>s.hideWeekends||g.value[6]&&g.value[7]),O=e.computed(()=>{const l=s.datePicker;let r=0,_={};const a=s.views;return l&&!a?{month:{...te.availableViews.month},year:{...te.availableViews.year},years:{...te.availableViews.years}}:(a?(Array.isArray(a)?_=a.reduce((B,Y)=>(typeof Y=="string"&&te.availableViews[Y]?B[Y]=te.availableViews[Y]:r++,B),{}):typeof a=="object"&&(_=Object.entries(a).reduce((B,[Y,X])=>{const{cols:G,rows:x}=te.availableViews[Y];return B[Y]={cols:X.cols||G,rows:X.rows||x},B},{})),r&&console.warn("Vue Cal: the provided `views` prop contains invalid views that will be ignored."),Object.keys(_).length||(console.warn("Vue Cal: No valid view in the provided `views` prop. Falling back to default views."),_={...te.availableViews})):_={...te.availableViews},_)}),A=e.computed(()=>s.datePicker?"month":O.value.week?"week":Object.keys(O.value)[0]),i=e.computed(()=>{if(typeof s.selectedDate=="string")return y.stringToDate(s.selectedDate);if(s.selectedDate instanceof Date)return s.selectedDate;s.selectedDate?console.warn("Vue Cal: The provided selected date is invalid:",s.selectedDate):console.log("Vue Cal: Info - The provided selected date is undefined.")}),d=e.computed(()=>{if(!s.disableDays)return[];const l=[];if(Array.isArray(s.disableDays))for(let r of s.disableDays){let _=r;typeof r=="string"?_=y.stringToDate(r):r instanceof Date&&(r=y.formatDate(r,"YYYY-MM-DD")),_ instanceof Date&&!isNaN(_.getTime())?l.push(r):console.warn("Vue Cal: The provided `disableDays` prop contains an invalid date:",r)}else console.warn("Vue Cal: The provided `disableDays` prop is invalid:",s.disableDays);return l}),t=e.computed(()=>{let l=null;return s.minDate&&typeof s.minDate=="string"?l=y.stringToDate(s.minDate):s.minDate&&s.minDate instanceof Date&&(l=s.minDate),(l==null?void 0:l.getTime())||null}),m=e.computed(()=>{let l=null;return s.maxDate&&typeof s.maxDate=="string"?l=y.stringToDate(s.maxDate):s.maxDate&&s.maxDate instanceof Date&&(l=s.maxDate),(l==null?void 0:l.getTime())||null}),h=e.computed(()=>{var _;const{view:l}=D;return s.schedules.length&&(l.isDay||l.isDays||l.isWeek)&&((_=s.schedules)==null?void 0:_.map((a,B)=>({...a,id:a.id??B+1})))||void 0}),$=e.computed(()=>{const l={drag:!0,resize:!0,delete:!0,create:!0};return s.editableEvents===!0?l:s.editableEvents===!1?Object.keys(l).map(r=>l[r]=!1):{...l,...s.editableEvents}}),V=async l=>{var _;let r=Object.assign({"../i18n/ar.json":()=>import("./i18n/ar.json").then(a=>a.default),"../i18n/bg.json":()=>import("./i18n/bg.json").then(a=>a.default),"../i18n/bn.json":()=>import("./i18n/bn.json").then(a=>a.default),"../i18n/bs.json":()=>import("./i18n/bs.json").then(a=>a.default),"../i18n/ca.json":()=>import("./i18n/ca.json").then(a=>a.default),"../i18n/cs.json":()=>import("./i18n/cs.json").then(a=>a.default),"../i18n/da.json":()=>import("./i18n/da.json").then(a=>a.default),"../i18n/de.json":()=>import("./i18n/de.json").then(a=>a.default),"../i18n/el.json":()=>import("./i18n/el.json").then(a=>a.default),"../i18n/en-gb.json":()=>import("./i18n/en-gb.json").then(a=>a.default),"../i18n/en-us.json":()=>import("./i18n/en-us.json").then(a=>a.default),"../i18n/es.json":()=>import("./i18n/es.json").then(a=>a.default),"../i18n/et.json":()=>import("./i18n/et.json").then(a=>a.default),"../i18n/fa.json":()=>import("./i18n/fa.json").then(a=>a.default),"../i18n/fi.json":()=>import("./i18n/fi.json").then(a=>a.default),"../i18n/fr.json":()=>import("./i18n/fr.json").then(a=>a.default),"../i18n/he.json":()=>import("./i18n/he.json").then(a=>a.default),"../i18n/hr.json":()=>import("./i18n/hr.json").then(a=>a.default),"../i18n/hu.json":()=>import("./i18n/hu.json").then(a=>a.default),"../i18n/id.json":()=>import("./i18n/id.json").then(a=>a.default),"../i18n/is.json":()=>import("./i18n/is.json").then(a=>a.default),"../i18n/it.json":()=>import("./i18n/it.json").then(a=>a.default),"../i18n/ja.json":()=>import("./i18n/ja.json").then(a=>a.default),"../i18n/ka.json":()=>import("./i18n/ka.json").then(a=>a.default),"../i18n/ko.json":()=>import("./i18n/ko.json").then(a=>a.default),"../i18n/lt.json":()=>import("./i18n/lt.json").then(a=>a.default),"../i18n/mn.json":()=>import("./i18n/mn.json").then(a=>a.default),"../i18n/nl.json":()=>import("./i18n/nl.json").then(a=>a.default),"../i18n/no.json":()=>import("./i18n/no.json").then(a=>a.default),"../i18n/pl.json":()=>import("./i18n/pl.json").then(a=>a.default),"../i18n/pt-br.json":()=>import("./i18n/pt-br.json").then(a=>a.default),"../i18n/pt-pt.json":()=>import("./i18n/pt-pt.json").then(a=>a.default),"../i18n/ro.json":()=>import("./i18n/ro.json").then(a=>a.default),"../i18n/ru.json":()=>import("./i18n/ru.json").then(a=>a.default),"../i18n/sk.json":()=>import("./i18n/sk.json").then(a=>a.default),"../i18n/sl.json":()=>import("./i18n/sl.json").then(a=>a.default),"../i18n/sq.json":()=>import("./i18n/sq.json").then(a=>a.default),"../i18n/sr.json":()=>import("./i18n/sr.json").then(a=>a.default),"../i18n/sv.json":()=>import("./i18n/sv.json").then(a=>a.default),"../i18n/tr.json":()=>import("./i18n/tr.json").then(a=>a.default),"../i18n/uk.json":()=>import("./i18n/uk.json").then(a=>a.default),"../i18n/vi.json":()=>import("./i18n/vi.json").then(a=>a.default),"../i18n/zh-cn.json":()=>import("./i18n/zh-cn.json").then(a=>a.default),"../i18n/zh-hk.json":()=>import("./i18n/zh-hk.json").then(a=>a.default)});{if(!r[`../i18n/${l}.json`]){console.warn(`Vue Cal: the locale \`${l}\` does not exist. Falling back to \`en-us\`.`),l="en-us";return}r=await((_=r[`../i18n/${l}.json`])==null?void 0:_.call(r))}D.texts=Object.assign(D.texts,Object.assign({...te.texts},r)),y.updateTexts(D.texts)},j=e.reactive(s.events||[]);return e.watch(()=>s.events,l=>j.splice(0,j.length,...l)),e.watch(()=>s.locale,l=>V(l||"en-us")),(s.locale||!D.texts.today)&&V(s.locale||"en-us"),{...e.toRefs(s),events:j,eventListeners:c,defaultView:A,availableViews:O,disableDays:d,ready:w,sm:P,xs:f,clickToNavigate:C,hideWeekdays:g,hideWeekends:M,minTimestamp:t,maxTimestamp:m,schedules:h,selectedDate:i,editableEvents:$,view:T,get hasHiddenDays(){return Object.keys(g.value).length},get size(){return f.value?"xs":P.value?"sm":"lg"},loadTexts:V}},me=(D,s)=>{const o=s.timeTo-s.timeFrom;return(D-s.timeFrom)*100/o},fe=(D,s)=>{const o=s.timeTo-s.timeFrom;return~~(D*o/100+s.timeFrom)},be=(D,s)=>{const o=s.clientHeight;return D*100/o},ke=e.reactive({id:null,date:null});let $e=!1,Te=!0;const re=e.reactive({el:null,cell:null,timeout:null}),oe=e.reactive({eventId:null,fromVueCal:null,toVueCal:null});function Ye(D){const{config:s,view:o,eventsManager:y,emit:w,uid:T,dateUtils:P}=D,f=t=>{var r;const{timeStep:m,timeCellHeight:h,timeFrom:$}=s,V=(((r=t.touches)==null?void 0:r[0])||t).clientY,{top:j}=t.currentTarget.getBoundingClientRect(),l=V-j-~~t.dataTransfer.getData("cursor-grab-at");return fe(be(l,t.currentTarget),s)},C=(t,m,h)=>{const $=m.duration||c(m.start,m.end)||s.timeStep;let V=Math.max(f(t),0);if(s.snapToInterval){const _=V+s.snapToInterval/2;V=_-_%s.snapToInterval}const j=new Date(new Date(h).setMinutes(V)),l=Math.min(V+$,24*60),r=new Date(new Date(h).setMinutes(l));return{start:j,end:r}},c=(t,m)=>Math.round((m-t)/6e4);return{eventDragStart:(t,m)=>{if(t.target.nodeType===3||D.touch.isResizingEvent)return t.preventDefault();t.dataTransfer.effectAllowed="move",t.dataTransfer.dropEffect="move";const h={...m,_:{id:m._.id,duration:c(m.start,m.end)}};try{t.dataTransfer.setData("text/plain",""),t.dataTransfer.setData("event",JSON.stringify(h)),t.dataTransfer.setData("cursor-grab-at",t.offsetY)}catch(V){return console.warn("Vue Cal: Failed to set drag data:",V),t.preventDefault()}oe.eventId=m._.id,oe.fromVueCal=T;const $=t.target.closest(".vuecal__event");$.classList.add("vuecal__event--dragging-ghost"),setTimeout(()=>{$.classList.add("vuecal__event--dragging-original"),$.classList.remove("vuecal__event--dragging-ghost")},0),$e=!1,Object.assign(ke,{id:o.id,date:o.firstCellDate}),Te=!0,D.touch.isDraggingEvent=!0},eventDragEnd:(t,m)=>{oe.eventId=null,t.target.closest(".vuecal__event").classList.remove("vuecal__event--dragging-original");const{fromVueCal:h,toVueCal:$}=oe;$&&h!==$&&y.deleteEvent(m._.id,3),oe.fromVueCal=null,oe.toVueCal=null,$e&&Te&&ke.id&&o.switchView(ke.id,ke.date,!0),D.touch.isDraggingEvent=!1},cellDragEnter:(t,m)=>{const{start:h}=m,$=t.currentTarget;if(!t.currentTarget.contains(t.relatedTarget)){if($===re.el||!$.className.includes("vuecal__cell-content"))return!1;re.el&&(re.cell.highlighted=!1),Object.assign(re,{el:$,cell:m,timeout:clearTimeout(re.timeout)}),m.highlighted=!0,["years","year","month"].includes(o.id)&&(re.timeout=setTimeout(()=>D.switchToNarrowerView(h),2e3))}},cellDragOver:(t,m)=>{const{start:h,schedule:$}=m;t.preventDefault(),m.highlighted=!0,($||$===0)&&(m.highlightedSchedule=$)},cellDragLeave:(t,m)=>{t.preventDefault(),!t.currentTarget.contains(t.relatedTarget)&&(m.highlightedSchedule=!1,re.cell===m&&(clearTimeout(re.timeout),Object.assign(re,{el:null,cell:null,timeout:null}),m.highlighted=!1))},cellDragDrop:async(t,m)=>{var B,Y,X;t.preventDefault(),clearTimeout(re.timeout),Object.assign(re,{el:null,cell:null,timeout:null});const h=JSON.parse(t.dataTransfer.getData("event")||"{}");h.start&&(h.start=new Date(h.start)),h.end&&(h.end=new Date(h.end));let $;const{start:V,end:j}=C(t,h,m.start),{schedule:l}=((B=t.target.closest("[data-schedule]"))==null?void 0:B.dataset)||{};let r=()=>{};oe.fromVueCal===T?($=y.getEvent(h._.id),$&&($._.dragging=!1,r=()=>{$.start=V,$.end=j,l!==void 0&&($.schedule=~~l)})):($={...h,start:V,end:j,...l!==void 0&&{schedule:~~l},_:{id:((Y=h._)==null?void 0:Y.id)||h.id,duration:c(V,j)},getOverlappingEvents:()=>y.getEventsInRange(y.getEventsByDate(P.formatDate(V),!0),{start:V,end:j},{schedule:~~l})},r=()=>{$=y.createEvent($)});let _=!0;const{drop:a}=(X=s.eventListeners)==null?void 0:X.event;a&&(_=await a({e:t,event:{...$,start:V,end:j,schedule:~~l},overlaps:$.getOverlappingEvents({start:V,end:j,schedule:~~l}),cell:m,external:oe.fromVueCal!==T})),_!==!1&&r(),m.highlighted=!1,m.highlightedSchedule=null,Te=!1,oe.toVueCal=T,w("event-dropped",{e:t,cell:m,event:$,originalEvent:h,external:oe.fromVueCal!==T})}}}const Se=(D,s)=>{let o,y,w,T={},P={};const f=e.ref(D),C=()=>{f.value.today||(f.value=s),Date.prototype.addDays=function(n){return O(this,n||0)},Date.prototype.subtractDays=function(n){return A(this,n||0)},Date.prototype.addHours=function(n){return i(this,n||0)},Date.prototype.subtractHours=function(n){return d(this,n||0)},Date.prototype.addMinutes=function(n){return t(this,n||0)},Date.prototype.subtractMinutes=function(n){return m(this,n||0)},Date.prototype.getWeek=function(){return $(this)},Date.prototype.isToday=function(){return V(this)},Date.prototype.isLeapYear=function(){return r(this)},Date.prototype.format=function(n="YYYY-MM-DD"){return x(this,n)},Date.prototype.formatTime=function(n="HH:mm"){return K(this,n)}},c=()=>{delete Date.prototype.addDays,delete Date.prototype.subtractDays,delete Date.prototype.addHours,delete Date.prototype.subtractHours,delete Date.prototype.addMinutes,delete Date.prototype.subtractMinutes,delete Date.prototype.getWeek,delete Date.prototype.isToday,delete Date.prototype.isLeapYear,delete Date.prototype.format,delete Date.prototype.formatTime},g=n=>{f.value=n,Date.prototype.subtractDays&&C()},M=()=>(y!==new Date().getDate()&&(o=new Date,y=o.getDate(),w=`${o.getFullYear()}-${o.getMonth()}-${o.getDate()}`),w),O=(n,b)=>{const v=new Date(n.valueOf());return v.setDate(v.getDate()+b),v},A=(n,b)=>{const v=new Date(n.valueOf());return v.setDate(v.getDate()-b),v},i=(n,b)=>{const v=new Date(n.valueOf());return v.setHours(v.getHours()+b),v},d=(n,b)=>{const v=new Date(n.valueOf());return v.setHours(v.getHours()-b),v},t=(n,b)=>{const v=new Date(n.valueOf());return v.setMinutes(v.getMinutes()+b),v},m=(n,b)=>{const v=new Date(n.valueOf());return v.setMinutes(v.getMinutes()-b),v},h=(n,b)=>{const v=F=>{const q=F%b;return q!==0&&(F+=q>=b/2?b-q:-q),F};if(typeof n=="number")return v(n);if(n instanceof Date){let F=v(n.getMinutes());F>=60&&(n.setHours(n.getHours()+1),F=0),n.setMinutes(F,0,0)}},$=(n,b=!1)=>{const v=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate())),F=v.getUTCDay()||7;v.setUTCDate(v.getUTCDate()+4-F);const q=new Date(Date.UTC(v.getUTCFullYear(),0,1));return Math.ceil(((v-q)/864e5+1)/7)+(b?1:0)},V=n=>`${n.getFullYear()}-${n.getMonth()}-${n.getDate()}`===M(),j=(n,b)=>{if(!n||!b)return console.warn(`Vue Cal: missing date${n?"2":"1"} parameter for comparison with \`isSameDate(date1, date2)\`.`);if(G(n)){if(!G(b))return console.warn(`Vue Cal: invalid date2 provided for comparison with \`isSameDate(date1, date2)\`: \`${b}\`.`)}else return console.warn(`Vue Cal: invalid date1 provided for comparison with \`isSameDate(date1, date2)\`: \`${n}\`.`);return n.getFullYear()===b.getFullYear()&&n.getMonth()===b.getMonth()&&n.getDate()===b.getDate()},l=(n,b,v)=>G(n)?n.getTime()>=b&&n.getTime()<=v:console.warn(`Vue Cal: invalid date provided to \`isInRange(date, rangeStart, rangeEnd)\`: \`${n}\`.`),r=n=>{const b=n.getFullYear();return!(b%400)||b%100&&!(b%4)},_=(n=null,b)=>{const v=n&&new Date(n.valueOf())||new Date,F=b?7:6;return v.setDate(v.getDate()-(v.getDay()+F)%7),v},a=n=>n instanceof Date?n:(n.length===10&&(n+=" 00:00"),new Date(n.replace(/-/g,"/"))),B=n=>n.getHours()*60+n.getMinutes(),Y=(n,b)=>{typeof n=="string"&&(n=n.replace(/-/g,"/")),typeof b=="string"&&(b=b.replace(/-/g,"/")),n=new Date(n).setHours(0,0,0,0),b=new Date(b).setHours(0,0,1,0);const v=(new Date(b).getTimezoneOffset()-new Date(n).getTimezoneOffset())*60*1e3;return Math.ceil((b-n-v)/(24*3600*1e3))},X=(n,b,v)=>Math.abs(n.getTime()-b.getTime())<=v*60*1e3,G=n=>n&&n instanceof Date&&!isNaN(n),x=(n,b="YYYY-MM-DD",v=null)=>{if(v||(v=f.value),b||(b="YYYY-MM-DD"),b==="YYYY-MM-DD")return J(n);T={},P={};const F={YYYY:()=>Z(n,v).YYYY,YY:()=>Z(n,v).YY(),M:()=>Z(n,v).M,MM:()=>Z(n,v).MM(),MMM:()=>Z(n,v).MMM(),MMMM:()=>Z(n,v).MMMM(),MMMMG:()=>Z(n,v).MMMMG(),D:()=>Z(n,v).D,DD:()=>Z(n,v).DD(),S:()=>Z(n,v).S(),d:()=>Z(n,v).d,dd:()=>Z(n,v).dd(),ddd:()=>Z(n,v).ddd(),dddd:()=>Z(n,v).dddd(),HH:()=>Q(n,v).HH,H:()=>Q(n,v).H,hh:()=>Q(n,v).hh,h:()=>Q(n,v).h,am:()=>Q(n,v).am,AM:()=>Q(n,v).AM,mm:()=>Q(n,v).mm,m:()=>Q(n,v).m,s:()=>Q(n,v).s};return b.replace(/(\{[a-zA-Z]+\}|[a-zA-Z]+)/g,(q,u)=>{const k=F[u.replace(/\{|\}/g,"")];return k!==void 0?k():u})},J=n=>{const b=n.getMonth()+1,v=n.getDate();return`${n.getFullYear()}-${b<10?"0":""}${b}-${v<10?"0":""}${v}`},K=(n,b="HH:mm",v=null,F=!1)=>{let q=!1;if(F){const[E,S,N]=[n.getHours(),n.getMinutes(),n.getSeconds()];E+S+N===141&&(q=!0)}if(n instanceof Date&&b==="HH:mm")return q?"24:00":se(n);P={},v||(v=f.value);const u=Q(n,v),k=b.replace(/(\{[a-zA-Z]+\}|[a-zA-Z]+)/g,(E,S)=>{const N=u[S.replace(/\{|\}/g,"")];return N!==void 0?N:S});return q?k.replace("23:59","24:00"):k},se=n=>{const b=n.getHours(),v=n.getMinutes();return`${(b<10?"0":"")+b}:${(v<10?"0":"")+v}`},I=n=>{const b=Math.floor(n/60).toString().padStart(2,0),v=(n%60).toString().padStart(2,0);return`${b}:${v}`},ee=n=>{if(n>3&&n<21)return"th";switch(n%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},Z=(n,b)=>{if(T.D)return T;const v=n.getFullYear(),F=n.getMonth()+1,q=n.getDate(),k=(n.getDay()-1+7)%7;return T={YYYY:v,YY:()=>v.toString().substring(2),M:F,MM:()=>F.toString().padStart(2,0),MMM:()=>b.months[F-1].substring(0,3),MMMM:()=>b.months[F-1],MMMMG:()=>(b.monthsGenitive||b.months)[F-1],D:q,DD:()=>q.toString().padStart(2,0),S:()=>ee(q),d:k+1,dd:()=>b.weekDaysShort.length?b.weekDaysShort[k]:b.weekDays[k][0],ddd:()=>b.weekDaysShort.length?b.weekDaysShort[k]:b.weekDays[k].substr(0,3),dddd:()=>b.weekDays[k]},T},Q=(n,b)=>{if(P.am)return P;let v,F,q;n instanceof Date?(v=n.getHours(),F=n.getMinutes(),q=n.getSeconds()):(v=Math.floor(n/60),F=Math.floor(n%60));const u=v%12?v%12:12,k=(b||{am:"am",pm:"pm"})[v===24||v<12?"am":"pm"];return P={H:v,h:u,HH:v.toString().padStart(2,0),hh:u.toString().padStart(2,0),am:k,AM:k.toUpperCase(),m:F,mm:F.toString().padStart(2,0),s:q},P};return{addDatePrototypes:C,removeDatePrototypes:c,updateTexts:g,addDays:O,subtractDays:A,addHours:i,subtractHours:d,addMinutes:t,subtractMinutes:m,snapToInterval:h,getWeek:$,isToday:V,isSameDate:j,isInRange:l,isLeapYear:r,getPreviousFirstDayOfWeek:_,stringToDate:a,dateToMinutes:B,countDays:Y,datesInSameTimeStep:X,isValid:G,formatDate:x,formatDateLite:J,formatTime:K,formatTimeLite:se,formatMinutes:I}},Pe=D=>{const{dateUtils:s,config:o}=D;let y=0;const w=e.computed(()=>{const i={byDate:{},recurring:[],multiday:[],byId:{}},d=o.events.sort((t,m)=>t.start-m.start<0?-1:1);for(const t of d)T(t),t._||(t._={}),t._.id=t._.id||++y,t.delete||(t.delete=m=>g(t._.id,m)),t._.deleting=!1,t._.deleted=!1,t.isOverlapping=(m=null)=>t.getOverlappingEvents(m).length,t.getOverlappingEvents=(m=null)=>{var h;return O(f(s.formatDate((m==null?void 0:m.start)||t.start),!0),{start:(m==null?void 0:m.start)||t.start,end:(m==null?void 0:m.end)||t.end},{excludeIds:[t._.id],schedule:(h=o.schedules)!=null&&h.length?~~((m==null?void 0:m.schedule)||t.schedule):null})},t._.register=m=>{t._.$el=m,t._.fireCreated&&(D.emit("event-created",t),delete t._.fireCreated)},t._.unregister=()=>{t._.$el=null,t._.register=null,t.isOverlapping=null,t.getOverlappingEvents=null,t.delete=null},i.byId[t._.id]=t,t.recurring?i.recurring.push(t._.id):t._.multiday?(i.multiday.push(t._.id),i.byDate[t._.startFormatted]||(i.byDate[t._.startFormatted]=[]),i.byDate[t._.startFormatted].push(t._.id)):(i.byDate[t._.startFormatted]||(i.byDate[t._.startFormatted]=[]),i.byDate[t._.startFormatted].push(t._.id));return i}),T=i=>{if(typeof i.start=="string"&&(i.start=s.stringToDate(i.start)),typeof i.end=="string"&&(i.end=s.stringToDate(i.end)),i.start.setSeconds(0,0),i.end.setSeconds(0,0),isNaN(i.start)||isNaN(i.end)){isNaN(i.start)?console.error(`Vue Cal: invalid start date for event "${i.title}".`,i.start):console.error(`Vue Cal: invalid end date for event "${i.title}".`,i.end);return}else i.end.getTime()<i.start.getTime()&&console.error(`Vue Cal: invalid event dates for event "${i.title}". The event ends before it starts.`,i.start,i.end);i._||(i._={}),i._.multiday=!s.isSameDate(i.start,new Date(i.end.getTime()-1)),i._.startFormatted=s.formatDate(i.start),i._.startMinutes=~~s.dateToMinutes(i.start),i._.endMinutes=~~s.dateToMinutes(i.end);const d=i.start.getHours(),t=i.start.getMinutes().toString().padStart(2,0),m=i.end.getHours(),h=i.end.getMinutes().toString().padStart(2,0);i._.startTimeFormatted24=`${d.toString().padStart(2,0)}:${t}`,i._.startTimeFormatted12=`${d%12||12}${t?`:${t}`:""} ${d<12?"AM":"PM"}`,i._.endTimeFormatted24=`${m.toString().padStart(2,0)}:${h}`,i._.endTimeFormatted12=`${m%12||12}${h?`:${h}`:""} ${m<12?"AM":"PM"}`,i._.duration=Math.abs(~~((i.end-i.start)/6e4))},P=i=>w.value.byId[i],f=(i,d=!1,t=!1)=>{let m=w.value.byDate[i]||[];return m=d||t?m.map(P):m,t||(m=m.filter(h=>!h.background&&!h._.deleted),d||(m=m.map(h=>h._.id))),m},C=i=>{const d={};for(const{startFormatted:t}of i){d[t]=[];const m=f(t,!1,!0);m.length&&d[t].push(...m)}return d},c=i=>{if(!i.start||!i.end){console.error("Vue Cal: Cannot create an event without valid start and end dates.");return}return o.snapToInterval&&(s.snapToInterval(i.start,o.snapToInterval),s.snapToInterval(i.end,o.snapToInterval)),i={...i},i._||(i._={}),i._.id=++y,i._.fireCreated=!0,o.events.push(i),i},g=async(i,d=0)=>{var V,j;if(!i)return console.warn("Vue Cal: Cannot delete event without its ID or criteria.");let t=typeof i=="string"||!isNaN(i)?i:null;const m=typeof i=="object"?Object.entries(i):null;if(m){const[l,r]=m[0];t=(V=o.events.find(_=>_[l]===r))==null?void 0:V._.id}if(!o.editableEvents.delete)return console.info("Vue Cal: Event deletion is disabled. Enable it with the `editable-events` props.");if(!t)return console.warn("Vue Cal: Cannot delete event without its ID.");const h=o.events.findIndex(l=>l._.id===t);if(h===-1)return console.warn(`Vue Cal: Cannot delete unknown event \`${t}\`.`);const $=o.events[h];if($.deletable===!1)return console.warn(`Vue Cal: Can't delete event \`${t}\` since it was explicitely set to \`delete: false\`.`);switch(d){case 0:$._.deleting?o.events.splice(h,1):$._.deleting=!0;break;case 1:$._.deleting=!0;break;case 2:$._.deleted=!0,o.events[h]._.deleted=!0,(j=$._.$el)==null||j.dispatchEvent(new CustomEvent("event-deleted",{detail:$._.id}));break;case 3:o.events.splice(h,1),D.emit("update:events",o.events),D.emit("event-delete",$);break}return!0},M=i=>{const d=f(i,!0);if(!d.length)return{cellOverlaps:{},longestStreak:0};const t={};let m=[],h=0;d.sort(($,V)=>$.start-V.start||$.end-$.start-(V.end-V.start));for(const $ of d){const V=$._.id;t[V]||(t[V]={overlaps:new Set,maxConcurrent:1,position:0}),m=m.filter(a=>a.end>$.start);let j=m.filter(a=>{var Y;return(!((Y=o.schedules)!=null&&Y.length)||$.schedule===a.schedule)&&a.start<$.end}),l=new Set(j.map(a=>{var B;return((B=t[a._.id])==null?void 0:B.position)??0})),r=0;for(;l.has(r);)r++;t[V].position=r,m.push($);let _=Math.max(1,...j.map(a=>{var B;return((B=t[a._.id])==null?void 0:B.maxConcurrent)??1}));t[V].maxConcurrent=Math.max(j.length+1,_);for(const a of j)t[a._.id].overlaps.add(V),t[V].overlaps.add(a._.id),t[a._.id].maxConcurrent=t[V].maxConcurrent;h=Math.max(h,t[V].maxConcurrent)}for(const $ in t)t[$].overlaps=[...t[$].overlaps];return{cellOverlaps:t,longestStreak:h}},O=(i=[],{start:d,end:t},{excludeIds:m=[],schedule:h=null})=>{var j;const $=new Set(m),V=[];for(const l of i)!$.has((j=l._)==null?void 0:j.id)&&(h===null||h===l.schedule)&&A(l,d,t)&&V.push(l);return V},A=(i,d,t)=>{const m=i.allDay||!o.time,h=m?new Date(i.start).setHours(0,0,0,0):i.start.getTime(),$=m?new Date(i.end).setHours(23,59,59,999):i.end.getTime(),V=m?new Date(d).setHours(0,0,0,0):d.getTime(),j=m?new Date(t).setHours(23,59,59,999):t.getTime();return $>V&&h<j};return{events:w,getEvent:P,getEventsByDate:f,getViewEvents:C,getCellOverlappingEvents:M,getEventsInRange:O,createEvent:c,deleteEvent:g,isEventInRange:A}},ze=({config:D,dateUtils:s,emit:o,texts:y,eventsManager:w},T)=>{const{availableViews:P}=D,f=e.ref(D.view&&P[D.view]?D.view:D.defaultView),C=e.ref(D.selectedDate||null),c=e.ref(new Date),g=e.ref(new Date(D.viewDate||c.value));g.value.setHours(0,0,0,0);const M=e.ref(new Date(g));let O=null;const A=e.computed(()=>f.value==="month"?M.value:r.value),i=e.computed(()=>f.value==="month"?new Date(M.value.getFullYear(),M.value.getMonth()+1,0,23,59,59,999):a.value),d=e.computed(()=>f.value==="week"?s.getPreviousFirstDayOfWeek(r.value,D.startWeekOnSunday):f.value==="month"?r.value:A.value),t=e.computed(()=>{if(f.value==="week"){const p=s.addDays(d.value,7);return p.setMilliseconds(-1),p}return f.value==="month"?a.value:i.value}),m=e.computed(()=>{const p=c.value.getTime();if(f.value==="week")return d.value.getTime()<=p&&p<=t.value.getTime();const z=r.value.getTime(),W=a.value.getTime();return z<=p&&p<=W});function h(){c.value=new Date,O=setTimeout(h,60*1e3)}function $(){O=setTimeout(h,(60-new Date().getSeconds())*1e3),h()}const V=e.computed(()=>{if(!D.availableViews[f.value])return 1;let p=D.availableViews[f.value].cols;return D.hasHiddenDays&&["week","month"].includes(f.value)&&(p-=D.hasHiddenDays),p}),j=e.computed(()=>{var p;return((p=D.availableViews[f.value])==null?void 0:p.rows)||1}),l=e.computed(()=>V.value*j.value),r=e.computed(()=>{if(f.value==="month"){let p=M.value.getDay()||7;return D.startWeekOnSunday&&!D.hideWeekdays[7]&&(p+=1),D.viewDayOffset&&(p-=D.viewDayOffset),s.subtractDays(M.value,p-1)}if(f.value==="week"){const p="1234567".split("").filter(W=>!Object.keys(D.hideWeekdays).includes(W));let z=Math.min(...p);return D.startWeekOnSunday&&!D.hideWeekdays[7]&&(z=1),D.viewDayOffset&&(z+=D.viewDayOffset),s.addDays(M.value,z-1)}return M.value}),_=e.computed(()=>{const p=[],z=["days","week","month"].includes(f.value);let W=0;for(let R=0;R<l.value+W;R++)switch(f.value){case"day":case"days":case"week":case"month":{const ne=s.addDays(r.value,R),De=ne.getDay()||7;if(z&&D.hasHiddenDays&&D.hideWeekdays[De]){W++;continue}const ge=new Date(ne);ge.setHours(23,59,59,999),p.push({start:ne,startFormatted:s.formatDate(ne),end:ge});break}case"year":p.push({start:new Date(r.value.getFullYear(),R,1,0,0,0,0),end:new Date(r.value.getFullYear(),R+1,0,23,59,59,999)});break;case"years":p.push({start:new Date(r.value.getFullYear()+R,0,1,0,0,0,0),end:new Date(r.value.getFullYear()+R+1,0,0,23,59,59,999)});break}return p}),a=e.computed(()=>_.value[_.value.length-1].end),B=e.ref("right"),Y=e.computed(()=>{const p=Object.keys(D.availableViews);return p[p.indexOf(f.value)+1]}),X=e.computed(()=>{const p=Object.keys(D.availableViews);return p[p.indexOf(f.value)-1]});function G(p,z,W=!1){if(!z||!z[p])return p+1;const R=z[p];return W&&typeof R=="string"?R.substring(0,3):R}function x(p,z,W){const{monthsArray:R,monthBeforeDay:ne,canTruncate:De,xs:ge}=W,ce=p.getMonth(),de=p.getFullYear(),ue=z.getMonth(),pe=z.getFullYear(),_e=ce!==ue,Jt=de!==pe,ie=De&&(ge||_e),ye=p.getDate(),ve=z.getDate();return Jt?ne?`${G(ce,R,ie)} ${ye}, ${de} - ${G(ue,R,ie)} ${ve}, ${pe}`:`${ye} ${G(ce,R,ie)} ${de} - ${ve} ${G(ue,R,ie)} ${pe}`:_e?ne?`${G(ce,R,ie)} ${ye} - ${G(ue,R,ie)} ${ve}, ${de}`:`${ye} ${G(ce,R,ie)} - ${ve} ${G(ue,R,ie)} ${de}`:ne?`${G(ce,R,ie)} ${ye}-${ve}, ${de}`:`${ye}-${ve} ${G(ce,R,ie)} ${de}`}const J=e.computed(()=>{const{dateFormat:p,months:z,monthsGenitive:W,week:R,truncations:ne}=y,De=D.locale,ge=ne!==!1,ce=p.indexOf("M")<p.indexOf("D"),de=W&&De==="el"?W:z;switch(f.value){case"day":return s.formatDate(r.value,p);case"days":case"week":{const ue={monthsArray:de,monthBeforeDay:ce,canTruncate:ge,xs:D.xs};let pe=x(r.value,a.value,ue);if(f.value==="week"){const _e=s.getWeek(r.value,D.startWeekOnSunday&&!D.hideWeekdays[7]);pe+=` <small>${R} ${_e}</small>`}return pe}case"month":{const ue=`${D.xs&&ge?"MMM":"MMMM"} YYYY`;return s.formatDate(A.value,ue)}case"year":return r.value.getFullYear();case"years":return`${r.value.getFullYear()} - ${i.value.getFullYear()}`}});function K(){switch(M.value=new Date(g.value||c.value),M.value.setHours(0,0,0,0),f.value){case"day":break;case"days":break;case"week":M.value=s.getPreviousFirstDayOfWeek(M.value,D.startWeekOnSunday&&!D.hideWeekdays[7]);break;case"month":M.value=new Date(M.value.getFullYear(),M.value.getMonth(),1,0,0,0,0);break;case"year":M.value=new Date(M.value.getFullYear(),0,1,0,0,0,0);break;case"years":M.value=new Date(M.value.getFullYear()-M.value.getFullYear()%l.value,0,1,0,0,0,0);break}D.ready&&o("view-change",{id:f.value,title:J.value,start:A.value,end:i.value,extendedStart:d.value,extendedEnd:t.value,cellDates:_.value,containsToday:m.value,events:U.value}),c.value=new Date}function se(p){const z=f.value,W=D.availableViews[z];p[z]&&JSON.stringify(p[z])===JSON.stringify(W)||K()}function I(p,z=!0){const W=Object.keys(D.availableViews);f.value!==p&&(W.includes(p)?(B.value=W.indexOf(p)<W.indexOf(f.value)?"left":"right",f.value=p,o("update:view",p),K()):console.warn(`Vue Cal: the \`${p}\` view is not available.`))}function ee(){Y.value?I(Y.value):console.warn("Vue Cal: no broader view is available.")}function Z(){X.value?I(X.value):console.warn("Vue Cal: no narrower view is available.")}function Q(){b(!1)}function n(){b(!0)}function b(p=!0){let z=new Date(g.value);switch(f.value){case"day":case"days":p?z=s.addDays(a.value,1):z=s.subtractDays(r.value,l.value);break;case"week":{p?(z=s.addDays(t.value,1),z.setHours(0,0,0,0)):z=s.subtractDays(d.value,l.value);break}case"month":{const W=p?1:-1;z=new Date(z.getFullYear(),z.getMonth()+W,1,0,0,0,0);break}case"year":{const W=p?1:-1;z=new Date(z.getFullYear()+W,1,1,0,0,0,0);break}case"years":{const W=p?l.value:-l.value;z=new Date(z.getFullYear()+W,1,1,0,0,0,0);break}}F(z)}function v(){const p=new Date;p.setHours(0,0,0,0),F(p)}function F(p,z=!0,W=!1){if(!s.isValid(p))return console.warn("Vue Cal: can't navigate to the given date: invalid date provided to `updateViewDate(date)`.");let[R,ne]=[r.value,a.value];f.value==="month"&&([R,ne]=[A.value,i.value]),(!s.isInRange(p,R,ne)||W)&&(p.setHours(0,0,0,0),B.value=p.getTime()<R.getTime()?"left":"right",g.value=p,z&&o("update:viewDate",p),K())}function q(p,z=!0){if(!s.isValid(p))return console.warn("Vue Cal: can't update the selected date: invalid date provided to `updateSelectedDate(date)`.");const{isValid:W,isSameDate:R}=s;(!C.value||!W(C.value)||!R(p,C.value))&&(p.setHours(0,0,0,0),C.value=p,z&&o("update:selectedDate",p))}function u(p){!p&&!M.value.getDay()?F(s.addDays(M.value,1),!0,!0):(B.value="left",K())}function k(p){p&&D.startWeekOnSunday&&!M.value.getDay()?F(s.addDays(M.value,1),!0,!0):!p&&D.startWeekOnSunday&&M.value.getDay()===1&&F(s.subtractDays(M.value,1),!0,!0)}function E(){console.log("toggling weekdays",D.hideWeekdays)}function S(p){var R;const z=(R=T.value)==null?void 0:R.querySelector(".vuecal__scrollable"),W=p?p*D.timeCellHeight/D.timeStep:0;z==null||z.scrollTo({top:W,behavior:"smooth"})}function N(){const p=new Date;S(p.getHours()*60+p.getMinutes())}function L(){S(0)}const U=e.computed(()=>w.getViewEvents(_.value)),ae=w.createEvent,le=w.deleteEvent;return e.watch(()=>D.view,p=>I(p,!1)),e.watch(()=>D.availableViews,se),e.watch(()=>D.datePicker,()=>I("month",!1)),e.watch(()=>D.viewDate,p=>F(p,!1)),e.watch(()=>D.selectedDate,p=>q(p,!1)),e.watch(()=>D.startWeekOnSunday,p=>u(p)),e.watch(()=>D.hideWeekends,p=>k(p)),e.watch(()=>D.hideWeekdays,E),e.watch(()=>l.value,()=>{l.value>90&&console.warn("Vue Cal: high cell count detected. Performance may degrade when interactions are enabled.")}),e.watch(()=>D.watchRealTime,p=>{p&&D.time?$():O=clearTimeout(O)}),K(),D.time&&D.watchRealTime&&$(),e.onBeforeUnmount(()=>O=clearTimeout(O)),{now:c,id:f,broaderView:Y,narrowerView:X,title:J,viewDate:g,start:A,end:i,extendedStart:d,extendedEnd:t,firstCellDate:r,lastCellDate:a,containsToday:m,selectedDate:C,cellDates:_,cols:V,rows:j,events:U,transitionDirection:B,switch:I,broader:ee,narrower:Z,previous:Q,next:n,navigate:b,goToToday:v,updateViewDate:F,updateSelectedDate:q,scrollToCurrentTime:N,scrollToTime:S,scrollTop:L,createEvent:ae,deleteEvent:le,get isDay(){return f.value==="day"},get isDays(){return f.value==="days"},get isWeek(){return f.value==="week"},get isMonth(){return f.value==="month"},get isYear(){return f.value==="year"},get isYears(){return f.value==="years"}}},he=e.reactive({texts:{...te.texts},dateUtils:Se(te.texts,Me)}),Ne=({props:D,emit:s,attrs:o,vuecalEl:y,uid:w})=>{const T=e.reactive({uid:w,emit:s,texts:{...he.texts},dateUtils:{...he.dateUtils},now:new Date,config:{},eventsManager:{},view:{},dnd:{},touch:{isDraggingCell:!1,isDraggingEvent:!1,isResizingEvent:!1}});return T.dateUtils=Se(Object.assign(te.texts,T.texts),Me),T.config=Ve(T,D,o),T.eventsManager=Pe(T),T.view=ze(T,y),T.dnd=Ye(T),T},Oe=24*60,je={allDayEvents:{type:[Boolean,String],default:!1},clickToNavigate:{type:Boolean,default:void 0},dark:{type:Boolean,default:!1},datePicker:{type:Boolean,default:!1},disableDays:{type:Array,default:()=>[]},editableEvents:{type:[Boolean,Object],default:!1},eventCreateMinDrag:{type:Number,default:15},events:{type:Array,default:()=>[]},eventCount:{type:Boolean,default:!1},eventsOnMonthView:{type:Boolean,default:!1},hideWeekdays:{type:Array,default:()=>[]},hideWeekends:{type:Boolean,default:!1},locale:{type:String,default:""},maxDate:{type:[String,Date],default:""},minDate:{type:[String,Date],default:""},selectedDate:{type:[String,Date],default:""},sm:{type:Boolean,default:!1},specialHours:{type:Object,default:()=>({})},schedules:{type:Array,default:()=>[]},snapToInterval:{type:Number,default:0},startWeekOnSunday:{type:Boolean,default:!1},theme:{type:[String,Boolean],default:"default"},time:{type:Boolean,default:!0},timeAtCursor:{type:Boolean,default:!1},timeCellHeight:{type:Number,default:40},timeFormat:{type:String,default:""},timeFrom:{type:Number,default:0},timeStep:{type:Number,default:60},timeTo:{type:Number,default:Oe},titleBar:{type:Boolean,default:!0},todayButton:{type:Boolean,default:!0},twelveHour:{type:Boolean,default:!1},view:{type:String,default:""},viewDate:{type:[String,Date],default:""},viewDayOffset:{type:Number,default:0},views:{type:[Array,Object]},viewsBar:{type:Boolean,default:!0},watchRealTime:{type:Boolean,default:!1},weekNumbers:{type:Boolean,default:!1},xs:{type:Boolean,default:!1}},Fe={class:"vuecal__header"},Le={key:0,class:"vuecal__views-bar"},He=["onClick","innerHTML"],We={key:1,class:"vuecal__title-bar"},Re={class:"vuecal__transition-wrap"},Ae=["disabled","innerHTML"],Ie={__name:"header",setup(D){const s=e.inject("vuecal"),{view:o,config:y}=s,w=()=>{y.clickToNavigate&&o.broader()},T=e.computed(()=>y.clickToNavigate?{click:w}:{});return(P,f)=>(e.openBlock(),e.createElementBlock("div",Fe,[e.renderSlot(P.$slots,"header",{view:e.unref(o),availableViews:e.unref(y).availableViews,vuecal:e.unref(s)}),P.$slots.header?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.unref(y).viewsBar?(e.openBlock(),e.createElementBlock("div",Le,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y).availableViews,(C,c)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["vuecal__view-button",{"vuecal__view-button--active":e.unref(o).id===c}]),onClick:g=>e.unref(o).switch(c),innerHTML:e.unref(s).texts[c],type:"button"},null,10,He))),256))])):e.createCommentVNode("",!0),e.unref(y).titleBar?(e.openBlock(),e.createElementBlock("nav",We,[e.createElementVNode("button",{class:e.normalizeClass(["vuecal__nav vuecal__nav--prev",{"vuecal__nav--default":!P.$slots["previous-button"]}]),onClick:f[0]||(f[0]=(...C)=>e.unref(o).previous&&e.unref(o).previous(...C)),type:"button"},[e.renderSlot(P.$slots,"previous-button")],2),e.createElementVNode("div",Re,[e.createVNode(e.Transition,{name:`vuecal-slide-fade--${e.unref(o).transitionDirection}`},{default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock("div",{key:e.unref(o).id+e.unref(o).start.getTime()},[P.$slots.title?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(y).clickToNavigate&&e.unref(o).broaderView?"button":"div"),e.mergeProps({key:0,class:"vuecal__title"},e.toHandlers(T.value)),{default:e.withCtx(()=>[e.renderSlot(P.$slots,"title",e.normalizeProps(e.guardReactiveProps(e.unref(o))))]),_:3},16)):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(y).clickToNavigate&&e.unref(o).broaderView?"button":"div"),e.mergeProps({key:1,class:"vuecal__title"},e.toHandlers(T.value),{innerHTML:e.unref(o).title}),null,16,["innerHTML"]))]))]),_:3},8,["name"])]),e.unref(y).todayButton?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[P.$slots["today-button"]?e.renderSlot(P.$slots,"today-button",{key:0,navigate:()=>!e.unref(o).containsToday&&e.unref(o).goToToday(),active:e.unref(o).containsToday}):(e.openBlock(),e.createElementBlock("button",{key:1,class:e.normalizeClass(["vuecal__nav vuecal__nav--today vuecal__nav--default",{"vuecal__nav--active":e.unref(o).containsToday}]),onClick:f[1]||(f[1]=C=>!e.unref(o).containsToday&&e.unref(o).goToToday()),disabled:!!e.unref(o).containsToday,type:"button",innerHTML:e.unref(s).texts.today},null,10,Ae))],64)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:e.normalizeClass(["vuecal__nav vuecal__nav--next",{"vuecal__nav--default":!P.$slots["next-button"]}]),onClick:f[2]||(f[2]=(...C)=>e.unref(o).next&&e.unref(o).next(...C)),type:"button"},[e.renderSlot(P.$slots,"next-button")],2)])):e.createCommentVNode("",!0)],64))]))}},Xe={key:0,class:"vuecal__headings"},Ge={key:0,class:"vuecal__weekdays-headings"},qe=["onClick"],Ue={class:"vuecal__weekday-day"},Ze={key:0,class:"vuecal__weekday-date"},Je={key:1,class:"vuecal__schedules-headings w-flex grow"},Ke=["innerHTML"],Qe={__name:"headings-bar",setup(D){const s=e.inject("vuecal"),{view:o,config:y,dateUtils:w}=s,T=e.computed(()=>y.xs?"day-xs":y.sm||o.isDays||o.isMonth?"day-sm":"day"),P=e.computed(()=>(o.isDay||o.isDays||o.isWeek||o.isMonth)&&!(o.isDay&&!y.schedules)),f=e.computed(()=>o.cellDates.slice(0,o.cols).map(({start:c})=>({id:we[c.getDay()],date:c,dateNumber:c.getDate(),day:w.formatDate(c,"dddd"),"day-sm":w.formatDate(c,"ddd"),"day-xs":w.formatDate(c,"dd"),isToday:w.isToday(c)}))),C={click:c=>{(o.isDays||o.isWeek)&&o.updateSelectedDate(c)}};return(c,g)=>P.value?(e.openBlock(),e.createElementBlock("div",Xe,[e.unref(o).isDay?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Ge,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,(M,O)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vuecal__weekday",{"vuecal__weekday--today":M.isToday}]),key:O,onClick:A=>C.click(M.date)},[e.renderSlot(c.$slots,"weekday-heading",{label:M[T.value],id:M.id,date:M.date},()=>[e.createElementVNode("span",Ue,e.toDisplayString(M[T.value]),1),e.unref(o).isMonth?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("strong",Ze,e.toDisplayString(M.dateNumber),1))])],10,qe))),128))])),e.unref(y).schedules?(e.openBlock(),e.createElementBlock("div",Je,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,(M,O)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:O},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y).schedules,(A,i)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:i},[c.$slots["schedule-heading"]?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["vuecal__schedule vuecal__schedule--heading",A.class])},[e.renderSlot(c.$slots,"schedule-heading",{schedule:A,view:e.unref(o)})],2)):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["vuecal__schedule vuecal__schedule--heading",A.class]),innerHTML:A.label},null,10,Ke))],64))),128))],64))),128))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)}},xe={class:"vuecal__time-column"},et={__name:"time-column",setup(D){const s=e.inject("vuecal"),{config:o,texts:y}=s,w=e.computed(()=>{const T=[];for(let f=o.timeFrom;f<o.timeTo;f+=o.timeStep){const C=~~(f/60),c=f%60,g=y[f<720?"am":"pm"];T.push({minutesSum:f,hours:C,minutes:c,formatted12:`${C%12?C%12:12}${c?":"+c.toString().padStart(2,0):""}${g}`,formatted24:`${C.toString().padStart(2,0)}:${c.toString().padStart(2,0)}`})}return T});return(T,P)=>(e.openBlock(),e.createElementBlock("div",xe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value,(f,C)=>(e.openBlock(),e.createElementBlock("div",{class:"vuecal__time-cell",key:C},[e.renderSlot(T.$slots,"time-cell",{index:C,minutes:f.minutes,hours:f.hours,minutesSum:f.minutesSum,format12:f.formatted12,format24:f.formatted24},()=>[e.createElementVNode("label",null,e.toDisplayString(e.unref(o).twelveHour?f.formatted12:f.formatted24),1)])]))),128))]))}},tt=["draggable"],at={class:"vuecal__event-details"},nt={class:"vuecal__event-title"},st={key:0,class:"vuecal__event-time"},lt=["innerHTML"],Ee={__name:"event",props:{event:{type:Object,required:!0}},emits:["event-drag-start","event-drag-end","event-resize-start","event-resize-end"],setup(D,{emit:s}){const{config:o,view:y,dnd:w,touch:T,dateUtils:P}=e.inject("vuecal"),f=D,C=e.ref(null),c=e.reactive(f.event),g=e.reactive({dragging:!1,resizing:!1,fromResizer:!1,holding:!1,holdTimer:null,startX:0,startY:0,startPercentageX:0,startPercentageY:0,moveX:0,moveY:0,movePercentageX:0,movePercentageY:0,resizeStartDate:null,resizingOriginalEvent:null,resizingLastAcceptedEvent:null,cellEl:null,schedule:null}),M=e.computed(()=>o.editableEvents.drag&&c.draggable!==!1&&!c.background),O=e.computed(()=>o.time&&o.editableEvents.resize&&c.resizable!==!1&&!c.background);e.computed(()=>o.editableEvents.delete&&c.deletable!==!1&&!c.background);const A=e.computed(()=>{var l,r,_;return{[`vuecal__event--${c._.id}`]:!0,[c.class]:!!c.class,"vuecal__event--recurring":!!c.recurring,"vuecal__event--background":!!c.background,"vuecal__event--multiday":!!((l=c._)!=null&&l.multiday),"vuecal__event--cut-top":((r=c._)==null?void 0:r.startMinutes)<o.timeFrom,"vuecal__event--cut-bottom":((_=c._)==null?void 0:_.endMinutes)>o.timeTo||c.end.getDate()!==c.start.getDate(),"vuecal__event--dragging":!c._.draggingGhost&&c._.dragging,"vuecal__event--dragging-ghost":c._.draggingGhost,"vuecal__event--resizing":g.resizing}}),i=e.computed(()=>{const l=(y.isDay||y.isDays||y.isWeek)&&o.time;if(!l&&!c.backgroundColor&&!c.color)return!1;const r={backgroundColor:c.backgroundColor||null,color:c.color||null};if(l){const _=Math.max(o.timeFrom,c._.startMinutes),a=Math.min(o.timeTo,c._.endMinutes),B=me(_,o),Y=me(a,o)-B;r.top=`${B}%`,r.height=`${Y}%`}return r}),d=e.computed(()=>{const l={...o.eventListeners.event};Object.entries(l).forEach(([a,B])=>{["resize-end"].includes(a)||(l[a]=Y=>{Y.type!=="drop"&&B(Y.type?{e:Y,event:c}:Y)})});const r={...l};l.touchstart=a=>{var B;a.stopPropagation(),t(a),(B=r.touchstart)==null||B.call(r,{e:a,event:c})},l.mousedown=a=>{var B;a.stopPropagation(),t(a),(B=r.mousedown)==null||B.call(r,{e:a,event:c})};let _=null;return l.click=a=>{var B;(B=r.click)==null||B.call(r,{e:a,event:c}),_?_=clearTimeout(_):_=setTimeout(()=>{var Y;_=null,(Y=r["delayed-click"])==null||Y.call(r,{e:a,event:c})},400)},l.dblclick=a=>{r.dblclick?r.dblclick({e:a,event:c}):c.delete(1)},l}),t=l=>{var a,B,Y;const r=((a=l.touches)==null?void 0:a[0])||l;g.fromResizer=r.target.matches(".vuecal__event-resizer, .vuecal__event-resizer *");const _=C.value.getBoundingClientRect();g.startX=(((B=l.touches)==null?void 0:B[0])||l).clientX-_.left,g.startY=(((Y=l.touches)==null?void 0:Y[0])||l).clientY-_.top,g.startPercentageX=g.startX*100/_.width,g.startPercentageY=g.startY*100/_.height,g.cellEl=C.value.closest(".vuecal__cell"),g.resizeStartDate=c.start,j(l.type==="touchstart"?"touchmove":"mousemove",m),j(l.type==="touchstart"?"touchend":"mouseup",h,{once:!0}),g.holdTimer=setTimeout(()=>{var X,G;g.holding=!0,(G=(X=d.value).hold)==null||G.call(X,{e:l,event:c})},1e3)},m=async l=>{var _,a,B,Y;const r=((_=l.touches)==null?void 0:_[0])||l;if(g.fromResizer&&!g.resizing&&(g.resizing=!0,g.resizingOriginalEvent={...c,_:{...c._}},T.isResizingEvent=!0,(B=(a=d.value).resizeStart)==null||B.call(a,{e:l,event:c})),g.holdTimer=clearTimeout(g.holdTimer),g.holding=!1,g.cellEl){const{top:X,left:G,width:x,height:J}=g.cellEl.getBoundingClientRect();g.moveX=r.clientX-G,g.moveY=r.clientY-X,g.movePercentageX=g.moveX*100/x,g.movePercentageY=g.moveY*100/J}if(g.fromResizer){const{newStart:X,newEnd:G}=$(c);let x=!0;const{resize:J}=(Y=o.eventListeners)==null?void 0:Y.event;J&&(x=await J({e:l,event:{...c,start:X,end:G},overlaps:c.getOverlappingEvents({start:X,end:G})})),x!==!1?(c.start=X,c.end=G,g.resizingLastAcceptedEvent&&(g.resizingLastAcceptedEvent=null)):J&&(g.resizingLastAcceptedEvent={...c,_:{...c._}})}},h=async l=>{var r,_;if(g.holdTimer=clearTimeout(g.holdTimer),g.holding=!1,g.resizing){const{newStart:a,newEnd:B}=$(c);let Y=!0;const X=d.value["resize-end"];X&&(Y=await X({e:l,event:c,original:g.resizingOriginalEvent,overlaps:c.getOverlappingEvents({start:a,end:B})})),c.start=Y===!1?(g.resizingLastAcceptedEvent||g.resizingOriginalEvent).start:((r=g.resizingLastAcceptedEvent)==null?void 0:r.start)||a,c.end=Y===!1?(g.resizingLastAcceptedEvent||g.resizingOriginalEvent).end:((_=g.resizingLastAcceptedEvent)==null?void 0:_.end)||B,c._.duration<1&&(c.start=g.resizingOriginalEvent.start,c.end=g.resizingOriginalEvent.end),T.isResizingEvent=!1}document.removeEventListener(l.type==="touchend"?"touchmove":"mousemove",m),g.resizing=!1,g.fromResizer=!1,g.dragging=!1,g.startX=0,g.startY=0,g.moveX=0,g.moveY=0,g.startPercentageX=0,g.startPercentageY=0,g.movePercentageX=0,g.movePercentageY=0,g.cellEl=null,g.resizeStartDate=null,g.resizingOriginalEvent=null,g.resizingLastAcceptedEvent=null,g.schedule=null},$=l=>{const r=new Date(l.start.getFullYear(),l.start.getMonth(),l.start.getDate());new Date(r).setDate(r.getDate()+1);let a=fe(g.movePercentageY,o);if(a=Math.max(0,Math.min(a,24*60)),o.snapToInterval){const X=a+o.snapToInterval/2;a=X-X%o.snapToInterval}let B=l.start,Y=new Date(r.getTime()+a*6e4);return Y<g.resizeStartDate&&(B=Y,Y=g.resizeStartDate),{newStart:B,newEnd:Y}};e.onMounted(()=>c._.register(C.value));const V=[],j=(l,r,_)=>{document.addEventListener(l,r,_),V.push({event:l,handler:r,options:_})};return e.onBeforeUnmount(()=>{c._.unregister(),V.forEach(({event:l,handler:r,options:_})=>{document.removeEventListener(l,r,_)})}),(l,r)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({class:"vuecal__event"},e.toHandlers(d.value,!0),{ref_key:"eventEl",ref:C,class:A.value,style:i.value,draggable:M.value?"true":void 0,onDragstart:r[2]||(r[2]=_=>M.value&&e.unref(w).eventDragStart(_,c)),onDragend:r[3]||(r[3]=_=>M.value&&e.unref(w).eventDragEnd(_,c))}),[e.createElementVNode("div",at,[e.renderSlot(l.$slots,"event",{event:c},()=>[e.createElementVNode("div",nt,e.toDisplayString(c.title),1),e.unref(o).time?(e.openBlock(),e.createElementBlock("div",st,e.toDisplayString(c._[`startTimeFormatted${e.unref(o).twelveHour?12:24}`])+`
6
+ - `+e.toDisplayString(c._[`endTimeFormatted${e.unref(o).twelveHour?12:24}`]),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"vuecal__event-content",innerHTML:c.content},null,8,lt)])]),O.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vuecal__event-resizer",onDragstart:r[0]||(r[0]=e.withModifiers(()=>{},["prevent","stop"]))},null,32)):e.createCommentVNode("",!0),e.createVNode(e.Transition,{name:"vuecal-delete-btn"},{default:e.withCtx(()=>[c._.deleting?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vuecal__event-delete",onClick:r[1]||(r[1]=e.withModifiers(_=>c.delete(3),["stop"]))},"Delete")):e.createCommentVNode("",!0)]),_:1})],16,tt))}},rt=["innerHTML"],ot=["data-schedule"],it={key:1,class:"vuecal__cell-date"},ct={key:2,class:"vuecal__cell-content"},dt={key:3,class:"vuecal__cell-events"},ut={key:1,class:"vuecal__cell-date"},mt={key:2,class:"vuecal__cell-content"},ft={key:3,class:"vuecal__cell-events"},gt={key:5,class:"vuecal__cell-events-count"},ht=["title"],pt={__name:"cell",props:{start:{type:Date,required:!0},end:{type:Date,required:!0},index:{type:Number,required:!0}},setup(D){const s=D,o=e.inject("vuecal"),{view:y,config:w,dateUtils:T,eventsManager:P,dnd:f,touch:C}=o,c=e.computed(()=>T.isToday(s.start)),g=e.ref(null),M=e.ref([]),O=e.ref(!1),A=u=>{M.value.push(u.detail),O.value=!0},i=()=>setTimeout(()=>O.value=!1,300),d=e.reactive({dragging:!1,holding:!1,holdTimer:null,thresholdPassed:!1,startX:0,startY:0,moveX:0,moveY:0,startPercentageX:0,startPercentageY:0,movePercentageX:0,movePercentageY:0,schedule:null}),t=e.ref(!1),m=e.ref({cellOverlaps:{},longestStreak:0}),h=e.computed(()=>{let u=Math.min(d.startPercentageY,d.movePercentageY),k=Math.max(d.startPercentageY,d.movePercentageY),E=fe(u,w),S=fe(k,w);return w.snapToInterval&&(E=T.snapToInterval(E,w.snapToInterval),S=T.snapToInterval(S,w.snapToInterval),u=me(E,w),k=me(S,w)),{style:{top:u+"%",height:Math.abs(k-u)+"%"},startMinutes:E,endMinutes:S,start:T.formatMinutes(E),end:T.formatMinutes(S),...d.schedule?{schedule:d.schedule}:{}}}),$=e.computed(()=>{const u=w.editableEvents.create&&(d.dragging||t.value),k=w.eventCreateMinDrag&&d.thresholdPassed||!w.eventCreateMinDrag;return u&&k}),V=e.computed(()=>{var U;const u=new Date,k=y.start.getFullYear(),E=y.start.getMonth(),S=s.start.getFullYear(),N=s.start.getMonth();return{[`vuecal__cell--${we[s.start.getDay()]}`]:y.isDay||y.isDays||y.isWeek||y.isMonth,[`vuecal__cell--${Ce[N]}`]:y.isYear,[`vuecal__cell--${S}`]:y.isYears,"vuecal__cell--today":c.value,"vuecal__cell--current-month":y.isYear&&S===u.getFullYear()&&N===u.getMonth(),"vuecal__cell--current-year":y.isYears&&S===u.getFullYear(),"vuecal__cell--out-of-range":y.isMonth&&(S!==k||N!==E),"vuecal__cell--before-min":J.value&&G.value,"vuecal__cell--after-max":J.value&&x.value,"vuecal__cell--disabled":J.value,"vuecal__cell--selected":y.selectedDate&&y.selectedDate.getTime()>=s.start.getTime()&&y.selectedDate.getTime()<=s.end.getTime(),"vuecal__cell--has-schedules":(U=w.schedules)==null?void 0:U.length,"vuecal__cell--dragging":d.dragging,"vuecal__cell--has-events":r.value.length}}),j=e.computed(()=>T.formatDate(s.start)),l=e.computed(()=>{switch(y.id){case"day":return"";case"days":return w.availableViews.days.rows>1&&T.formatDate(s.start,"D"),"";case"week":return"";case"month":return T.formatDate(s.start,"D");case"year":return T.formatDate(s.start,w.xs?"MMM":"MMMM");case"years":return T.formatDate(s.start,"YYYY")}}),r=e.computed(()=>w.datePicker?[]:P.getEventsByDate(j.value,!0,!0).filter(u=>!M.value.includes(u._.id))),_=e.computed(()=>r.value.filter(u=>!u.background)),a=e.computed(()=>{var u;return(u=w.schedules)==null?void 0:u.reduce((k,E)=>(k[E.id]=r.value.filter(S=>S.schedule===E.id),k),{})}),B=e.computed(()=>{const u={};for(const k of r.value){const E=k._.id,{maxConcurrent:S=1,position:N=0}=m.value.cellOverlaps[E]||{};u[E]={width:`${100/S}%`,left:`${100/S*N}%`}}return u}),Y=e.computed(()=>y.isMonth&&w.eventCount&&!w.eventsOnMonthView&&_.value.length),X=e.computed(()=>{var E;if(!w.specialHours||y.isMonth||y.isYear||y.isYears)return;const u=we[s.start.getDay()];let k=(E=w.specialHours)==null?void 0:E[u];if(k)return Array.isArray(k)||(k=[k]),k.map(S=>{let{from:N,to:L,class:U,label:ae}=S;if(isNaN(N)||isNaN(L)||w.timeFrom>=L||w.timeTo<=N)return;N=Math.max(w.timeFrom,N),L=Math.min(w.timeTo,L);const le=me(N,w),p=me(L,w)-le;return{style:{top:`${le}%`,height:`${p}%`},label:ae,class:U}}).filter(S=>!!S)}),G=e.computed(()=>w.minTimestamp!==null&&w.minTimestamp>s.end.getTime()),x=e.computed(()=>w.maxTimestamp&&w.maxTimestamp<s.start.getTime()),J=e.computed(()=>{const{disableDays:u}=w,k=y.isYear||y.isYears;return u.length&&u.includes(T.formatDate(s.start))&&!k?!0:G.value||x.value}),K=e.reactive({show:e.computed(()=>{if(!(!y.isDay&&!y.isDays&&!y.isWeek)&&!(!c.value||!w.time)&&!(w.timeFrom>T.dateToMinutes(y.now))&&!(T.dateToMinutes(y.now)>w.timeTo))return!0}),nowInMinutes:e.computed(()=>T.dateToMinutes(y.now)),todaysTimePosition:e.computed(()=>me(K.nowInMinutes,w)),style:e.computed(()=>`top: ${K.todaysTimePosition}%`),currentTime:e.computed(()=>T.formatTime(y.now))}),se=e.computed(()=>{if(J.value)return{};const u={...w.eventListeners.cell};Object.entries(u).forEach(([S,N])=>{u[S]=L=>{var U,ae,le;(le=(ae=L.target||((U=L.e)==null?void 0:U.target)).closest)!=null&&le.call(ae,".vuecal__event")||N(L.type?{e:L,cell:I.value,cursor:ee.value}:L)}});const k={...u};let E=null;return u.click=S=>{var N;Z(),(N=k.click)==null||N.call(k,{e:S,cell:I.value,cursor:ee.value}),E?E=clearTimeout(E):E=setTimeout(()=>{var L;E=null,(L=k["delayed-click"])==null||L.call(k,{e:S,cell:I.value,cursor:ee.value})},400)},(w.time&&y.isDay||y.isDays||y.isWeek)&&(u.touchstart=S=>{var N;Q(S.e||S),(N=k.touchstart)==null||N.call(k,{e:S,cell:I.value,cursor:ee.value})},u.mousedown=S=>{var N;Q(S.e||S),(N=k.mousedown)==null||N.call(k,{e:S,cell:I.value,cursor:ee.value})}),k.dblclick&&(u.dblclick=S=>{var z,W;const N=(((z=S.touches)==null?void 0:z[0])||S).clientY,{top:L}=g.value.getBoundingClientRect(),U=be(N-L,g.value),ae=fe(U,w),le=new Date(s.start);le.setMinutes(ae);const p={y:U,date:le};(W=k.dblclick)==null||W.call(k,{e:S,cell:I.value,cursor:p})}),w.editableEvents.drag&&(u.dragenter=S=>f.cellDragEnter(S,I.value),u.dragover=S=>{S.preventDefault(),f.cellDragOver(S,I.value)},u.dragleave=S=>f.cellDragLeave(S,I.value),u.drop=S=>f.cellDragDrop(S,I.value)),u}),I=e.computed(()=>({start:s.start,end:s.end,events:r,...d.schedule?{schedule:d.schedule}:{},goNarrower:()=>y.narrower(),goBroader:()=>y.broader(),broader:y.broaderView,narrower:y.narrowerView})),ee=e.computed(()=>{const u=fe(d.movePercentageY||d.startPercentageY,w),k=new Date(s.start);return k.setMinutes(u),{x:d.movePercentageX||d.startPercentageX,y:d.movePercentageY||d.startPercentageY,date:k}}),Z=()=>{y.updateSelectedDate(s.start),w.clickToNavigate&&((y.isMonth||y.isDays||y.isWeek)&&w.availableViews.day?y.switch("day"):y.isYear&&w.availableViews.month?y.switch("month"):y.isYears&&w.availableViews.year&&y.switch("year")),y.updateViewDate(s.start)},Q=u=>{var E,S;d.schedule=~~u.target.dataset.schedule;const k=g.value.getBoundingClientRect();d.startX=(((E=u.touches)==null?void 0:E[0])||u).clientX-k.left,d.startY=(((S=u.touches)==null?void 0:S[0])||u).clientY-k.top,d.startPercentageX=d.startX*100/k.width,d.startPercentageY=d.startY*100/k.height,d.thresholdPassed=!1,document.addEventListener(u.type==="touchstart"?"touchmove":"mousemove",n),document.addEventListener(u.type==="touchstart"?"touchend":"mouseup",b,{once:!0}),d.holdTimer=setTimeout(()=>{var N,L;d.holding=!0,(L=(N=se.value).hold)==null||L.call(N,{e:u,cell:I.value,cursor:ee.value})},1e3)},n=u=>{var E,S,N,L,U,ae;d.dragging||(C.isDraggingCell=!0,(S=(E=se.value).dragStart)==null||S.call(E,{e:u,cell:I.value,cursor:ee.value})),d.dragging=!0,d.holdTimer=clearTimeout(d.holdTimer),d.holding=!1;const k=g.value.getBoundingClientRect();d.moveX=(((N=u.touches)==null?void 0:N[0])||u).clientX-k.left,d.moveY=(((L=u.touches)==null?void 0:L[0])||u).clientY-k.top,d.movePercentageX=d.moveX*100/k.width,d.movePercentageY=d.moveY*100/k.height,w.eventCreateMinDrag&&Math.abs(d.startY-d.moveY)>w.eventCreateMinDrag&&(d.thresholdPassed=!0),(ae=(U=se.value).drag)==null||ae.call(U,{e:u,cell:I.value,cursor:ee.value})},b=async u=>{var k,E;document.removeEventListener(u.type==="touchend"?"touchmove":"mousemove",n,{passive:!1}),d.dragging&&((E=(k=se.value).dragEnd)==null||E.call(k,{e:u,cell:I.value,cursor:ee.value}),C.isDraggingCell=!1,w.editableEvents.create&&(t.value=!0,await v(u),t.value=!1)),d.holdTimer=clearTimeout(d.holdTimer),d.holding=!1,d.dragging=!1,d.startX=0,d.startY=0,d.moveX=0,d.moveY=0,d.startPercentageX=0,d.startPercentageY=0,d.movePercentageX=0,d.movePercentageY=0,d.thresholdPassed=!1,d.schedule=null},v=async u=>{if(!$.value)return;let{start:k,end:E,startMinutes:S,endMinutes:N}=h.value;k=new Date(s.start),k.setMinutes(S),E=new Date(s.start),E.setMinutes(N);let L={...h.value,start:k,end:E};const{create:U}=w.eventListeners.event;if(typeof U=="function"){const ae=L;L=await new Promise(le=>U({e:u,event:L,cell:I.value,resolve:le,cursor:ee.value})),L&&typeof L=="object"&&y.createEvent(L),L&&typeof L=="boolean"&&y.createEvent(ae)}else y.createEvent(L)},F=()=>{Object.keys(se.value).forEach(u=>{var k;(k=g.value)==null||k.removeEventListener(u,se.value[u])})},q=()=>{m.value=P.getCellOverlappingEvents(j.value)};return e.watch(()=>_.value.map(u=>`${u._.id}${u.start.getTime()}${u.end.getTime()}`).join(),async()=>{await e.nextTick(),q()},{immediate:!0,flush:"post"}),e.onBeforeUnmount(async()=>{M.value.forEach(u=>P.deleteEvent(u,3)),F(),await e.nextTick()}),(u,k)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({class:["vuecal__cell",V.value],ref_key:"cellEl",ref:g},e.toHandlers(se.value,!0)),[u.$slots.cell?e.renderSlot(u.$slots,"cell",{key:0,cell:I.value}):e.createCommentVNode("",!0),X.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(X.value,(E,S)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vuecal__special-hours",E.class]),style:e.normalizeStyle(E.style),innerHTML:E.label||""},null,14,rt))),256)):e.createCommentVNode("",!0),!u.$slots.cell&&e.unref(w).schedules?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(e.unref(w).schedules,E=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vuecal__schedule vuecal__schedule--cell",E.class]),key:E.id,style:e.normalizeStyle(E.style||null),"data-schedule":E.id},[u.$slots["cell-events"]?e.renderSlot(u.$slots,"cell-events",{key:0,cell:I.value}):e.createCommentVNode("",!0),l.value||u.$slots["cell-date"]?(e.openBlock(),e.createElementBlock("div",it,[e.renderSlot(u.$slots,"cell-date",{cell:I.value},()=>[e.createTextVNode(e.toDisplayString(l.value),1)])])):e.createCommentVNode("",!0),u.$slots["cell-content"]?(e.openBlock(),e.createElementBlock("div",ct,[e.renderSlot(u.$slots,"cell-content",{cell:I.value})])):e.createCommentVNode("",!0),u.$slots["cell-events"]&&r.value.length?(e.openBlock(),e.createElementBlock("div",dt,[e.renderSlot(u.$slots,"cell-events",{cell:I.value})])):r.value.length||O.value?(e.openBlock(),e.createBlock(e.TransitionGroup,{key:4,class:"vuecal__cell-events",name:"vuecal-event-delete",onBeforeLeave:k[0]||(k[0]=S=>O.value=!0),onAfterLeave:i,tag:"div"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value[E.id],S=>(e.openBlock(),e.createBlock(Ee,{key:S._.id,event:S,onEventDeleted:A,style:e.normalizeStyle(B.value[S._.id])},e.createSlots({_:2},[u.$slots.event?{name:"event",fn:e.withCtx(N=>[e.renderSlot(u.$slots,"event",e.mergeProps({ref_for:!0},N))]),key:"0"}:void 0]),1032,["event","style"]))),128))]),_:2},1024)):e.createCommentVNode("",!0),$.value&&d.schedule===E.id?(e.openBlock(),e.createElementBlock("div",{key:5,class:"vuecal__event-placeholder",style:e.normalizeStyle(h.value.style)},e.toDisplayString(h.value.start)+" - "+e.toDisplayString(h.value.end),5)):e.createCommentVNode("",!0)],14,ot))),128)):e.createCommentVNode("",!0),!u.$slots.cell&&!e.unref(w).schedules?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[u.$slots["cell-events"]?e.renderSlot(u.$slots,"cell-events",{key:0,cell:I.value}):e.createCommentVNode("",!0),l.value||u.$slots["cell-date"]?(e.openBlock(),e.createElementBlock("div",ut,[e.renderSlot(u.$slots,"cell-date",{cell:I.value},()=>[e.createTextVNode(e.toDisplayString(l.value),1)])])):e.createCommentVNode("",!0),u.$slots["cell-content"]?(e.openBlock(),e.createElementBlock("div",mt,[e.renderSlot(u.$slots,"cell-content",{cell:I.value})])):e.createCommentVNode("",!0),u.$slots["cell-events"]&&r.value.length?(e.openBlock(),e.createElementBlock("div",ft,[e.renderSlot(u.$slots,"cell-events",{cell:I.value})])):(r.value.length||O.value)&&!(e.unref(y).isMonth&&!e.unref(w).eventsOnMonthView)?(e.openBlock(),e.createBlock(e.TransitionGroup,{key:4,class:"vuecal__cell-events",name:"vuecal-event-delete",onBeforeLeave:k[1]||(k[1]=E=>O.value=!0),onAfterLeave:i,tag:"div"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,E=>(e.openBlock(),e.createBlock(Ee,{key:E._.id,event:E,onEventDeleted:A,style:e.normalizeStyle(B.value[E._.id])},e.createSlots({_:2},[u.$slots.event?{name:"event",fn:e.withCtx(S=>[e.renderSlot(u.$slots,"event",e.mergeProps({ref_for:!0},S))]),key:"0"}:void 0]),1032,["event","style"]))),128))]),_:3})):e.createCommentVNode("",!0),$.value?(e.openBlock(),e.createElementBlock("div",{key:5,class:"vuecal__event-placeholder",style:e.normalizeStyle(h.value.style)},e.toDisplayString(h.value.start)+" - "+e.toDisplayString(h.value.end),5)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),u.$slots["event-count"]?e.renderSlot(u.$slots,"event-count",{key:4,events:_.value}):Y.value?(e.openBlock(),e.createElementBlock("div",gt,e.toDisplayString(_.value.length),1)):e.createCommentVNode("",!0),K.show?(e.openBlock(),e.createElementBlock("div",{key:6,class:"vuecal__now-line",style:e.normalizeStyle(K.style),title:K.currentTime},[e.createElementVNode("span",null,e.toDisplayString(K.currentTime),1)],12,ht)):e.createCommentVNode("",!0)],16))}},yt={__name:"body",setup(D){const s=e.inject("vuecal"),{view:o,config:y,dateUtils:w}=s,T=e.ref(null),P=e.ref(null),f=e.computed(()=>({"--vuecal-grid-columns":o.cols,"--vuecal-grid-rows":o.rows})),C=e.computed(()=>{const M=w.formatTime(fe(P.value,y));return{style:{top:`${P.value}%`},time:M}}),c=M=>{var i;if(o.isMonth||o.isYear||o.isYears)return;const O=(((i=M.touches)==null?void 0:i[0])||M).clientY,{top:A}=T.value.getBoundingClientRect();P.value=be(O-A,T.value)},g=()=>{P.value=null};return e.onMounted(()=>{T.value.addEventListener("mousemove",c),T.value.addEventListener("touchmove",c),T.value.addEventListener("mouseleave",g),T.value.addEventListener("touchend",g)}),e.onBeforeUnmount(()=>{T.value&&(T.value.removeEventListener("mousemove",c),T.value.removeEventListener("touchmove",c),T.value.removeEventListener("mouseleave",g),T.value.removeEventListener("touchend",g))}),(M,O)=>(e.openBlock(),e.createElementBlock("div",{class:"vuecal__body",ref_key:"bodyEl",ref:T,style:e.normalizeStyle(f.value)},[e.createVNode(e.Transition,{name:"vuecal-shrink"},{default:e.withCtx(()=>[e.unref(y).timeAtCursor&&P.value!==null?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vuecal__time-at-cursor",style:e.normalizeStyle(C.value.style)},[e.createElementVNode("label",null,e.toDisplayString(C.value.time),1)],4)):e.createCommentVNode("",!0)]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(o).cellDates,(A,i)=>(e.openBlock(),e.createBlock(pt,{key:i,start:A.start,end:A.end,index:i},e.createSlots({_:2},[M.$slots.cell?{name:"cell",fn:e.withCtx(d=>[e.renderSlot(M.$slots,"cell",e.mergeProps({ref_for:!0},d))]),key:"0"}:void 0,M.$slots["cell-date"]?{name:"cell-date",fn:e.withCtx(d=>[e.renderSlot(M.$slots,"cell-date",e.mergeProps({ref_for:!0},d))]),key:"1"}:void 0,M.$slots["cell-content"]?{name:"cell-content",fn:e.withCtx(d=>[e.renderSlot(M.$slots,"cell-content",e.mergeProps({ref_for:!0},d))]),key:"2"}:void 0,M.$slots["cell-events"]?{name:"cell-events",fn:e.withCtx(d=>[e.renderSlot(M.$slots,"cell-events",e.mergeProps({ref_for:!0},d))]),key:"3"}:M.$slots.event?{name:"event",fn:e.withCtx(d=>[e.renderSlot(M.$slots,"event",e.mergeProps({ref_for:!0},d))]),key:"4"}:M.$slots["event-count"]?{name:"event-count",fn:e.withCtx(d=>[e.renderSlot(M.$slots,"event-count",e.mergeProps({ref_for:!0},d))]),key:"5"}:void 0]),1032,["start","end","index"]))),128))],4))}},vt=["data-locale"],Dt={class:"vuecal__scrollable-wrap"},wt={key:1,class:"vuecal__week-numbers"},kt={class:"vuecal__week-number"},_t={class:"vuecal__body-wrap"},bt={__name:"index",props:je,emits:["ready","view-change","update:view","update:selectedDate","update:viewDate","update:events","event-delete","event-created","event-dropped"],setup(D,{expose:s,emit:o}){const y=D,w=o,T=e.useTemplateRef("vuecal-el"),P=Ne({props:y,emit:w,attrs:e.useAttrs(),vuecalEl:T,uid:e.useId()}),{config:f,view:C,dateUtils:c,touch:g}=P,M=e.computed(()=>f.time&&(C.isDay||C.isDays||C.isWeek)),O=e.computed(()=>Array(C.rows).fill().map((t,m)=>c.getWeek(c.addDays(C.firstCellDate,7*m)))),A=e.computed(()=>{var t;return{"vuecal--ready":f.ready,[`vuecal--${f.theme}-theme`]:f.theme,[`vuecal--${f.size}`]:!0,"vuecal--date-picker":f.datePicker,"vuecal--dark":f.dark,"vuecal--light":!f.dark,[`vuecal--${C.id}-view`]:!0,"vuecal--view-has-time":M.value,"vuecal--timeless":!f.time,"vuecal--dragging-cell":g.isDraggingCell,"vuecal--dragging-event":g.isDraggingEvent,"vuecal--resizing-event":g.isResizingEvent,"vuecal--has-schedules":(t=f.schedules)==null?void 0:t.length}}),i=e.computed(()=>({"--vuecal-time-cell-height":f.timeCellHeight&&`${f.timeCellHeight}px`})),d=e.computed(()=>{var t,m;return{"vuecal__scrollable--row":M.value||f.weekNumbers&&C.isMonth,[`vuecal__scrollable--${C.id}-view`]:!0,"vuecal__scrollable--has-schedules":(t=f.schedules)==null?void 0:t.length,"vuecal__scrollable--no-schedules":!((m=f.schedules)!=null&&m.length)}});return e.onMounted(async()=>{await e.nextTick(),f.ready=!0,w("ready",{config:f,view:C})}),e.provide("vuecal",P),s({view:P.view}),(t,m)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vuecal",A.value]),ref:"vuecal-el","data-locale":t.locale,style:e.normalizeStyle(i.value)},[t.$slots.diy?e.renderSlot(t.$slots,"diy",{key:0,vuecal:e.unref(P)}):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(Ie,null,e.createSlots({_:2},[t.$slots.header?{name:"header",fn:e.withCtx(h=>[e.renderSlot(t.$slots,"header",e.normalizeProps(e.guardReactiveProps(h)))]),key:"0"}:void 0,!t.$slots.header&&t.$slots["previous-button"]?{name:"previous-button",fn:e.withCtx(h=>[e.renderSlot(t.$slots,"previous-button",e.normalizeProps(e.guardReactiveProps(h)))]),key:"1"}:void 0,!t.$slots.header&&t.$slots["next-button"]?{name:"next-button",fn:e.withCtx(h=>[e.renderSlot(t.$slots,"next-button",e.normalizeProps(e.guardReactiveProps(h)))]),key:"2"}:void 0,!t.$slots.header&&t.$slots["today-button"]?{name:"today-button",fn:e.withCtx(h=>[e.renderSlot(t.$slots,"today-button",e.normalizeProps(e.guardReactiveProps(h)))]),key:"3"}:void 0,!t.$slots.header&&t.$slots.title?{name:"title",fn:e.withCtx(h=>[e.renderSlot(t.$slots,"title",e.normalizeProps(e.guardReactiveProps(h)))]),key:"4"}:void 0,!t.$slots.header&&t.$slots["schedule-heading"]?{name:"schedule-heading",fn:e.withCtx(h=>[e.renderSlot(t.$slots,"schedule-heading",e.normalizeProps(e.guardReactiveProps(h)))]),key:"5"}:void 0]),1024),e.createElementVNode("div",Dt,[e.createVNode(e.Transition,{name:`vuecal-slide-fade--${e.unref(C).transitionDirection}`},{default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vuecal__scrollable",d.value]),key:e.unref(C).id+e.unref(C).start.getTime()},[M.value?(e.openBlock(),e.createBlock(et,{key:0},e.createSlots({_:2},[t.$slots["time-cell"]?{name:"time-cell",fn:e.withCtx(h=>[e.renderSlot(t.$slots,"time-cell",e.normalizeProps(e.guardReactiveProps(h)))]),key:"0"}:void 0]),1024)):e.createCommentVNode("",!0),e.unref(f).weekNumbers&&e.unref(C).isMonth?(e.openBlock(),e.createElementBlock("div",wt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(O.value,h=>(e.openBlock(),e.createElementBlock("div",kt,[e.renderSlot(t.$slots,"week-number",{},()=>[e.createElementVNode("small",null,e.toDisplayString(h),1)])]))),256))])):e.createCommentVNode("",!0),e.createElementVNode("div",_t,[e.createVNode(Qe,null,e.createSlots({_:2},[t.$slots["weekday-heading"]?{name:"weekday-heading",fn:e.withCtx(h=>[e.renderSlot(t.$slots,"weekday-heading",e.normalizeProps(e.guardReactiveProps(h)))]),key:"0"}:void 0,t.$slots["schedule-heading"]?{name:"schedule-heading",fn:e.withCtx(h=>[e.renderSlot(t.$slots,"schedule-heading",e.normalizeProps(e.guardReactiveProps(h)))]),key:"1"}:void 0]),1024),e.createVNode(yt,null,e.createSlots({_:2},[t.$slots.cell?{name:"cell",fn:e.withCtx(h=>[e.renderSlot(t.$slots,"cell",e.normalizeProps(e.guardReactiveProps(h)))]),key:"0"}:void 0,!t.$slots.cell&&t.$slots["cell-date"]?{name:"cell-date",fn:e.withCtx(h=>[e.renderSlot(t.$slots,"cell-date",e.normalizeProps(e.guardReactiveProps(h)))]),key:"1"}:void 0,!t.$slots.cell&&t.$slots["cell-content"]?{name:"cell-content",fn:e.withCtx(h=>[e.renderSlot(t.$slots,"cell-content",e.normalizeProps(e.guardReactiveProps(h)))]),key:"2"}:void 0,!t.$slots.cell&&t.$slots["cell-events"]?{name:"cell-events",fn:e.withCtx(h=>[e.renderSlot(t.$slots,"cell-events",e.normalizeProps(e.guardReactiveProps(h)))]),key:"3"}:void 0,!t.$slots.cell&&t.$slots.event?{name:"event",fn:e.withCtx(h=>[e.renderSlot(t.$slots,"event",e.normalizeProps(e.guardReactiveProps(h)))]),key:"4"}:void 0,!t.$slots.cell&&t.$slots["event-count"]?{name:"event-count",fn:e.withCtx(h=>[e.renderSlot(t.$slots,"event-count",e.normalizeProps(e.guardReactiveProps(h)))]),key:"5"}:void 0]),1024)])],2))]),_:3},8,["name"])])],64))],14,vt))}},Tt=D=>{he.texts={...te.texts,...D},he.dateUtils.updateTexts(he.texts)},{addDatePrototypes:Mt,removeDatePrototypes:$t,updateTexts:St,addDays:Et,subtractDays:Ct,addHours:Bt,subtractHours:Vt,addMinutes:Yt,subtractMinutes:Pt,getWeek:zt,isToday:Nt,isSameDate:Ot,isInRange:jt,isLeapYear:Ft,getPreviousFirstDayOfWeek:Lt,stringToDate:Ht,dateToMinutes:Wt,countDays:Rt,datesInSameTimeStep:At,isValid:It,formatDate:Xt,formatDateLite:Gt,formatTime:qt,formatTimeLite:Ut,formatMinutes:Zt}=he.dateUtils;H.VueCal=bt,H.addDatePrototypes=Mt,H.addDays=Et,H.addHours=Bt,H.addMinutes=Yt,H.countDays=Rt,H.dateToMinutes=Wt,H.datesInSameTimeStep=At,H.formatDate=Xt,H.formatDateLite=Gt,H.formatMinutes=Zt,H.formatTime=qt,H.formatTimeLite=Ut,H.getPreviousFirstDayOfWeek=Lt,H.getWeek=zt,H.isInRange=jt,H.isLeapYear=Ft,H.isSameDate=Ot,H.isToday=Nt,H.isValidDate=It,H.removeDatePrototypes=$t,H.stringToDate=Ht,H.subtractDays=Ct,H.subtractHours=Vt,H.subtractMinutes=Pt,H.updateTexts=St,H.useLocale=Tt,Object.defineProperty(H,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue-cal",
3
- "version": "5.0.1-rc.0",
3
+ "version": "5.0.1-rc.10",
4
4
  "description": "A Vue JS full calendar, no dependency, no BS. :metal:",
5
5
  "author": "Antoni Andre <antoniandre.web@gmail.com>",
6
6
  "homepage": "https://antoniandre.github.io/vue-cal",
@@ -21,8 +21,12 @@
21
21
  "import": "./dist/vue-cal.es.js",
22
22
  "require": "./dist/vue-cal.cjs.js"
23
23
  },
24
- "./style": "./dist/vue-cal.css",
25
- "./style.css": "./dist/vue-cal.css",
24
+ "./style": {
25
+ "default": "./dist/vue-cal.css"
26
+ },
27
+ "./style.css": {
28
+ "default": "./dist/vue-cal.css"
29
+ },
26
30
  "./i18n/*": "./dist/i18n/*",
27
31
  "./package.json": "./package.json"
28
32
  },
@@ -37,6 +41,14 @@
37
41
  "vue 3",
38
42
  "ui"
39
43
  ],
44
+ "scripts": {
45
+ "dev": "vite",
46
+ "build": "vite build --base /vue-cal/",
47
+ "build-bundle": "BUNDLE=true vite build",
48
+ "preview": "vite preview --base /vue-cal/",
49
+ "lint": "vite lint",
50
+ "publish-doc": "npm run build && npm run build-bundle && git add . && git commit -m 'Publish documentation on Github.' && git push && git push --tag"
51
+ },
40
52
  "devDependencies": {
41
53
  "@babel/core": "^7.26.7",
42
54
  "@babel/eslint-parser": "^7.26.5",
@@ -59,11 +71,5 @@
59
71
  "peerDependencies": {
60
72
  "vue": "^3.5.0"
61
73
  },
62
- "scripts": {
63
- "dev": "vite",
64
- "build": "vite build --base /vue-cal/",
65
- "build-bundle": "BUNDLE=true vite build",
66
- "preview": "vite preview --base /vue-cal/",
67
- "lint": "vite lint"
68
- }
69
- }
74
+ "packageManager": "pnpm@9"
75
+ }