vue-cal 5.0.1-rc.7 → 5.0.1-rc.8
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.
- package/dist/vue-cal.es.js +946 -967
- package/dist/vue-cal.umd.js +3 -3
- package/package.json +1 -1
package/dist/vue-cal.umd.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
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.
|
|
2
|
+
* vue-cal v5.0.1-rc.8
|
|
3
3
|
* (c) 2024-2025 Antoni Andre <antoniandre.web@gmail.com>
|
|
4
4
|
* @license MIT
|
|
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"],ke=["sun","mon","tue","wed","thu","fri","sat"],Be=ke.reduce((d,s,o)=>(d[s]=o||7,d),{}),Ve=(d,s,o)=>{const{dateUtils:v}=d,k=!1,T=e.computed(()=>{if(N.value[s.view])return s.view;{const r=s.datePicker?"month":"week",l=s.view||r;return N.value[l]?l:(console.warn(`Vue Cal: the provided or default view \`${l}\` 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])}}),Y=e.computed(()=>s.sm&&!s.xs),g=e.computed(()=>s.xs||s.datePicker),S=e.computed(()=>s.clickToNavigate||s.datePicker&&s.clickToNavigate!==!1),i=e.computed(()=>{const r={cell:{},event:{}},l=b=>b.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();return Object.entries(o).forEach(([b,a])=>{const[B,V,A]=b.match(/^on(Cell|Event)(.+)$/)||[];B&&(r[V.toLowerCase()][l(A).replace(/^-+|-+$/g,"")]=a)}),r}),h=e.computed(()=>{var l;const r={};return s.hideWeekends&&(r[6]=!0)&&(r[7]=!0),(l=s.hideWeekdays)!=null&&l.length&&s.hideWeekdays.forEach(b=>r[Be[b]]=!0),r}),M=e.computed(()=>s.hideWeekends||h.value[6]&&h.value[7]),N=e.computed(()=>{const r=s.datePicker;let l=0,b={};const a=s.views;return r&&!a?{month:{...te.availableViews.month},year:{...te.availableViews.year},years:{...te.availableViews.years}}:(a?(Array.isArray(a)?b=a.reduce((B,V)=>(typeof V=="string"&&te.availableViews[V]?B[V]=te.availableViews[V]:l++,B),{}):typeof a=="object"&&(b=Object.entries(a).reduce((B,[V,A])=>{const{cols:X,rows:x}=te.availableViews[V];return B[V]={cols:A.cols||X,rows:A.rows||x},B},{})),l&&console.warn("Vue Cal: the provided `views` prop contains invalid views that will be ignored."),Object.keys(b).length||(console.warn("Vue Cal: No valid view in the provided `views` prop. Falling back to default views."),b={...te.availableViews})):b={...te.availableViews},b)}),I=e.computed(()=>s.datePicker?"month":N.value.week?"week":Object.keys(N.value)[0]),c=e.computed(()=>{if(typeof s.selectedDate=="string")return v.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.")}),u=e.computed(()=>{if(!s.disableDays)return[];const r=[];return Array.isArray(s.disableDays)?s.disableDays.forEach(l=>{let b=l;if(typeof l=="string"?b=v.stringToDate(l):l instanceof Date&&(l=v.formatDate(l,"YYYY-MM-DD")),b instanceof Date&&!isNaN(b.getTime())){r.push(l);return}else console.warn("Vue Cal: The provided `disableDays` prop contains an invalid date:",l)}):console.warn("Vue Cal: The provided `disableDays` prop is invalid:",s.disableDays),r}),t=e.computed(()=>{let r=null;return s.minDate&&typeof s.minDate=="string"?r=v.stringToDate(s.minDate):s.minDate&&s.minDate instanceof Date&&(r=s.minDate),(r==null?void 0:r.getTime())||null}),f=e.computed(()=>{let r=null;return s.maxDate&&typeof s.maxDate=="string"?r=v.stringToDate(s.maxDate):s.maxDate&&s.maxDate instanceof Date&&(r=s.maxDate),(r==null?void 0:r.getTime())||null}),p=e.computed(()=>{var b;const{view:r}=d;return s.schedules.length&&(r.isDay||r.isDays||r.isWeek)&&((b=s.schedules)==null?void 0:b.map((a,B)=>({...a,id:a.id??B+1})))||void 0}),E=e.computed(()=>{const r={drag:!0,resize:!0,delete:!0,create:!0};return s.editableEvents===!0?r:s.editableEvents===!1?Object.keys(r).map(l=>r[l]=!1):{...r,...s.editableEvents}}),P=async r=>{var b;let l=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(!l[`../i18n/${r}.json`]){console.warn(`Vue Cal: the locale \`${r}\` does not exist. Falling back to \`en-us\`.`),r="en-us";return}l=await((b=l[`../i18n/${r}.json`])==null?void 0:b.call(l))}d.texts=Object.assign(d.texts,Object.assign({...te.texts},l)),v.updateTexts(d.texts)},L=e.reactive(s.events||[]);return e.watch(()=>s.events,r=>L.splice(0,L.length,...r)),e.watch(()=>s.locale,r=>P(r||"en-us")),(s.locale||!d.texts.today)&&P(s.locale||"en-us"),{...e.toRefs(s),events:L,eventListeners:i,defaultView:I,availableViews:N,disableDays:u,ready:k,sm:Y,xs:g,clickToNavigate:S,hideWeekdays:h,hideWeekends:M,minTimestamp:t,maxTimestamp:f,schedules:p,selectedDate:c,editableEvents:E,view:T,get hasHiddenDays(){return Object.keys(h.value).length},get size(){return g.value?"xs":Y.value?"sm":"lg"},loadTexts:P}},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},we=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:v,emit:k,uid:T,dateUtils:Y}=d,g=t=>{var l;const{timeStep:f,timeCellHeight:p,timeFrom:E}=s,P=(((l=t.touches)==null?void 0:l[0])||t).clientY,{top:L}=t.currentTarget.getBoundingClientRect(),r=P-L-~~t.dataTransfer.getData("cursor-grab-at");return fe(be(r,t.currentTarget),s)},S=(t,f,p)=>{const E=f.duration||i(f.start,f.end)||s.timeStep;let P=Math.max(g(t),0);if(s.snapToInterval){const b=P+s.snapToInterval/2;P=b-b%s.snapToInterval}const L=new Date(new Date(p).setMinutes(P)),r=Math.min(P+E,24*60),l=new Date(new Date(p).setMinutes(r));return{start:L,end:l}},i=(t,f)=>Math.round((f-t)/6e4);return{eventDragStart:(t,f)=>{if(t.target.nodeType===3||d.touch.isResizingEvent)return t.preventDefault();t.dataTransfer.dropEffect="move";const p={...f,_:{id:f._.id,duration:i(f.start,f.end)}};t.dataTransfer.setData("event",JSON.stringify(p)),t.dataTransfer.setData("cursor-grab-at",t.offsetY),oe.eventId=f._.id,oe.fromVueCal=T;const E=t.target.closest(".vuecal__event");E.classList.add("vuecal__event--dragging-ghost"),setTimeout(()=>{E.classList.add("vuecal__event--dragging-original"),E.classList.remove("vuecal__event--dragging-ghost")},0),$e=!1,Object.assign(we,{id:o.id,date:o.firstCellDate}),Te=!0,d.touch.isDraggingEvent=!0},eventDragEnd:(t,f)=>{oe.eventId=null,t.target.closest(".vuecal__event").classList.remove("vuecal__event--dragging-original");const{fromVueCal:p,toVueCal:E}=oe;E&&p!==E&&v.deleteEvent(f._.id,3),oe.fromVueCal=null,oe.toVueCal=null,$e&&Te&&we.id&&o.switchView(we.id,we.date,!0),d.touch.isDraggingEvent=!1},cellDragEnter:(t,f)=>{const{start:p}=f,E=t.currentTarget;if(!t.currentTarget.contains(t.relatedTarget)){if(E===re.el||!E.className.includes("vuecal__cell-content"))return!1;re.el&&(re.cell.highlighted=!1),Object.assign(re,{el:E,cell:f,timeout:clearTimeout(re.timeout)}),f.highlighted=!0,["years","year","month"].includes(o.id)&&(re.timeout=setTimeout(()=>d.switchToNarrowerView(p),2e3))}},cellDragOver:(t,f)=>{const{start:p,schedule:E}=f;t.preventDefault(),f.highlighted=!0,(E||E===0)&&(f.highlightedSchedule=E)},cellDragLeave:(t,f)=>{t.preventDefault(),!t.currentTarget.contains(t.relatedTarget)&&(f.highlightedSchedule=!1,re.cell===f&&(clearTimeout(re.timeout),Object.assign(re,{el:null,cell:null,timeout:null}),f.highlighted=!1))},cellDragDrop:async(t,f)=>{var B,V,A;t.preventDefault(),clearTimeout(re.timeout),Object.assign(re,{el:null,cell:null,timeout:null});const p=JSON.parse(t.dataTransfer.getData("event")||"{}");p.start&&(p.start=new Date(p.start)),p.end&&(p.end=new Date(p.end));let E;const{start:P,end:L}=S(t,p,f.start),{schedule:r}=((B=t.target.closest("[data-schedule]"))==null?void 0:B.dataset)||{};let l=()=>{};oe.fromVueCal===T?(E=v.getEvent(p._.id),E&&(E._.dragging=!1,l=()=>{E.start=P,E.end=L,r!==void 0&&(E.schedule=~~r)})):(E={...p,start:P,end:L,...r!==void 0&&{schedule:~~r},_:{id:((V=p._)==null?void 0:V.id)||p.id,duration:i(P,L)},getOverlappingEvents:()=>v.getEventsInRange(v.getEventsByDate(Y.formatDate(P),!0),{start:P,end:L},{schedule:~~r})},l=()=>{E=v.createEvent(E)});let b=!0;const{drop:a}=(A=s.eventListeners)==null?void 0:A.event;a&&(b=await a({e:t,event:{...E,start:P,end:L,schedule:~~r},overlaps:E.getOverlappingEvents({start:P,end:L,schedule:~~r}),cell:f,external:oe.fromVueCal!==T})),b!==!1&&l(),f.highlighted=!1,f.highlightedSchedule=null,Te=!1,oe.toVueCal=T,k("event-dropped",{e:t,cell:f,event:E,originalEvent:p,external:oe.fromVueCal!==T})}}}const Ee=(d,s)=>{let o,v,k,T={},Y={};const g=e.ref(d),S=()=>{g.value.today||(g.value=s),Date.prototype.addDays=function(n){return N(this,n||0)},Date.prototype.subtractDays=function(n){return I(this,n||0)},Date.prototype.addHours=function(n){return c(this,n||0)},Date.prototype.subtractHours=function(n){return u(this,n||0)},Date.prototype.addMinutes=function(n){return t(this,n||0)},Date.prototype.subtractMinutes=function(n){return f(this,n||0)},Date.prototype.getWeek=function(){return E(this)},Date.prototype.isToday=function(){return P(this)},Date.prototype.isLeapYear=function(){return l(this)},Date.prototype.format=function(n="YYYY-MM-DD"){return x(this,n)},Date.prototype.formatTime=function(n="HH:mm"){return K(this,n)}},i=()=>{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},h=n=>{g.value=n,Date.prototype.subtractDays&&S()},M=()=>(v!==new Date().getDate()&&(o=new Date,v=o.getDate(),k=`${o.getFullYear()}-${o.getMonth()}-${o.getDate()}`),k),N=(n,_)=>{const D=new Date(n.valueOf());return D.setDate(D.getDate()+_),D},I=(n,_)=>{const D=new Date(n.valueOf());return D.setDate(D.getDate()-_),D},c=(n,_)=>{const D=new Date(n.valueOf());return D.setHours(D.getHours()+_),D},u=(n,_)=>{const D=new Date(n.valueOf());return D.setHours(D.getHours()-_),D},t=(n,_)=>{const D=new Date(n.valueOf());return D.setMinutes(D.getMinutes()+_),D},f=(n,_)=>{const D=new Date(n.valueOf());return D.setMinutes(D.getMinutes()-_),D},p=(n,_)=>{const D=j=>{const q=j%_;return q!==0&&(j+=q>=_/2?_-q:-q),j};if(typeof n=="number")return D(n);if(n instanceof Date){let j=D(n.getMinutes());j>=60&&(n.setHours(n.getHours()+1),j=0),n.setMinutes(j,0,0)}},E=(n,_=!1)=>{const D=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate())),j=D.getUTCDay()||7;D.setUTCDate(D.getUTCDate()+4-j);const q=new Date(Date.UTC(D.getUTCFullYear(),0,1));return Math.ceil(((D-q)/864e5+1)/7)+(_?1:0)},P=n=>`${n.getFullYear()}-${n.getMonth()}-${n.getDate()}`===M(),L=(n,_)=>{if(!n||!_)return console.warn(`Vue Cal: missing date${n?"2":"1"} parameter for comparison with \`isSameDate(date1, date2)\`.`);if(X(n)){if(!X(_))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)\`: \`${n}\`.`);return n.getFullYear()===_.getFullYear()&&n.getMonth()===_.getMonth()&&n.getDate()===_.getDate()},r=(n,_,D)=>X(n)?n.getTime()>=_&&n.getTime()<=D:console.warn(`Vue Cal: invalid date provided to \`isInRange(date, rangeStart, rangeEnd)\`: \`${n}\`.`),l=n=>{const _=n.getFullYear();return!(_%400)||_%100&&!(_%4)},b=(n=null,_)=>{const D=n&&new Date(n.valueOf())||new Date,j=_?7:6;return D.setDate(D.getDate()-(D.getDay()+j)%7),D},a=n=>n instanceof Date?n:(n.length===10&&(n+=" 00:00"),new Date(n.replace(/-/g,"/"))),B=n=>n.getHours()*60+n.getMinutes(),V=(n,_)=>{typeof n=="string"&&(n=n.replace(/-/g,"/")),typeof _=="string"&&(_=_.replace(/-/g,"/")),n=new Date(n).setHours(0,0,0,0),_=new Date(_).setHours(0,0,1,0);const D=(new Date(_).getTimezoneOffset()-new Date(n).getTimezoneOffset())*60*1e3;return Math.ceil((_-n-D)/(24*3600*1e3))},A=(n,_,D)=>Math.abs(n.getTime()-_.getTime())<=D*60*1e3,X=n=>n&&n instanceof Date&&!isNaN(n),x=(n,_="YYYY-MM-DD",D=null)=>{if(D||(D=g.value),_||(_="YYYY-MM-DD"),_==="YYYY-MM-DD")return J(n);T={},Y={};const j={YYYY:()=>Z(n,D).YYYY,YY:()=>Z(n,D).YY(),M:()=>Z(n,D).M,MM:()=>Z(n,D).MM(),MMM:()=>Z(n,D).MMM(),MMMM:()=>Z(n,D).MMMM(),MMMMG:()=>Z(n,D).MMMMG(),D:()=>Z(n,D).D,DD:()=>Z(n,D).DD(),S:()=>Z(n,D).S(),d:()=>Z(n,D).d,dd:()=>Z(n,D).dd(),ddd:()=>Z(n,D).ddd(),dddd:()=>Z(n,D).dddd(),HH:()=>Q(n,D).HH,H:()=>Q(n,D).H,hh:()=>Q(n,D).hh,h:()=>Q(n,D).h,am:()=>Q(n,D).am,AM:()=>Q(n,D).AM,mm:()=>Q(n,D).mm,m:()=>Q(n,D).m,s:()=>Q(n,D).s};return _.replace(/(\{[a-zA-Z]+\}|[a-zA-Z]+)/g,(q,m)=>{const w=j[m.replace(/\{|\}/g,"")];return w!==void 0?w():m})},J=n=>{const _=n.getMonth()+1,D=n.getDate();return`${n.getFullYear()}-${_<10?"0":""}${_}-${D<10?"0":""}${D}`},K=(n,_="HH:mm",D=null,j=!1)=>{let q=!1;if(j){const[C,$,z]=[n.getHours(),n.getMinutes(),n.getSeconds()];C+$+z===141&&(q=!0)}if(n instanceof Date&&_==="HH:mm")return q?"24:00":se(n);Y={},D||(D=g.value);const m=Q(n,D),w=_.replace(/(\{[a-zA-Z]+\}|[a-zA-Z]+)/g,(C,$)=>{const z=m[$.replace(/\{|\}/g,"")];return z!==void 0?z:$});return q?w.replace("23:59","24:00"):w},se=n=>{const _=n.getHours(),D=n.getMinutes();return`${(_<10?"0":"")+_}:${(D<10?"0":"")+D}`},G=n=>{const _=Math.floor(n/60).toString().padStart(2,0),D=(n%60).toString().padStart(2,0);return`${_}:${D}`},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,_)=>{if(T.D)return T;const D=n.getFullYear(),j=n.getMonth()+1,q=n.getDate(),w=(n.getDay()-1+7)%7;return T={YYYY:D,YY:()=>D.toString().substring(2),M:j,MM:()=>j.toString().padStart(2,0),MMM:()=>_.months[j-1].substring(0,3),MMMM:()=>_.months[j-1],MMMMG:()=>(_.monthsGenitive||_.months)[j-1],D:q,DD:()=>q.toString().padStart(2,0),S:()=>ee(q),d:w+1,dd:()=>_.weekDaysShort.length?_.weekDaysShort[w]:_.weekDays[w][0],ddd:()=>_.weekDaysShort.length?_.weekDaysShort[w]:_.weekDays[w].substr(0,3),dddd:()=>_.weekDays[w]},T},Q=(n,_)=>{if(Y.am)return Y;let D,j,q;n instanceof Date?(D=n.getHours(),j=n.getMinutes(),q=n.getSeconds()):(D=Math.floor(n/60),j=Math.floor(n%60));const m=D%12?D%12:12,w=(_||{am:"am",pm:"pm"})[D===24||D<12?"am":"pm"];return Y={H:D,h:m,HH:D.toString().padStart(2,0),hh:m.toString().padStart(2,0),am:w,AM:w.toUpperCase(),m:j,mm:j.toString().padStart(2,0),s:q},Y};return{addDatePrototypes:S,removeDatePrototypes:i,updateTexts:h,addDays:N,subtractDays:I,addHours:c,subtractHours:u,addMinutes:t,subtractMinutes:f,snapToInterval:p,getWeek:E,isToday:P,isSameDate:L,isInRange:r,isLeapYear:l,getPreviousFirstDayOfWeek:b,stringToDate:a,dateToMinutes:B,countDays:V,datesInSameTimeStep:A,isValid:X,formatDate:x,formatDateLite:J,formatTime:K,formatTimeLite:se,formatMinutes:G}},Pe=d=>{const{dateUtils:s,config:o}=d;let v=0;const k=e.computed(()=>{const c={byDate:{},recurring:[],multiday:[],byId:{}};return o.events.sort((t,f)=>t.start-f.start<0?-1:1).forEach(t=>{T(t),t._||(t._={}),t._.id=t._.id||++v,t.delete||(t.delete=f=>h(t._.id,f)),t._.deleting=!1,t._.deleted=!1,t.isOverlapping=(f=null)=>t.getOverlappingEvents(f).length,t.getOverlappingEvents=(f=null)=>{var p;return N(g(s.formatDate((f==null?void 0:f.start)||t.start),!0),{start:(f==null?void 0:f.start)||t.start,end:(f==null?void 0:f.end)||t.end},{excludeIds:[t._.id],schedule:(p=o.schedules)!=null&&p.length?~~((f==null?void 0:f.schedule)||t.schedule):null})},t._.register=f=>{t._.$el=f,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},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}),T=c=>{if(typeof c.start=="string"&&(c.start=s.stringToDate(c.start)),typeof c.end=="string"&&(c.end=s.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=!s.isSameDate(c.start,new Date(c.end.getTime()-1)),c._.startFormatted=s.formatDate(c.start),c._.startMinutes=~~s.dateToMinutes(c.start),c._.endMinutes=~~s.dateToMinutes(c.end);const u=c.start.getHours(),t=c.start.getMinutes().toString().padStart(2,0),f=c.end.getHours(),p=c.end.getMinutes().toString().padStart(2,0);c._.startTimeFormatted24=`${u.toString().padStart(2,0)}:${t}`,c._.startTimeFormatted12=`${u%12||12}${t?`:${t}`:""} ${u<12?"AM":"PM"}`,c._.endTimeFormatted24=`${f.toString().padStart(2,0)}:${p}`,c._.endTimeFormatted12=`${f%12||12}${p?`:${p}`:""} ${f<12?"AM":"PM"}`,c._.duration=Math.abs(~~((c.end-c.start)/6e4))},Y=c=>k.value.byId[c],g=(c,u=!1,t=!1)=>{let f=k.value.byDate[c]||[];return f=u||t?f.map(Y):f,t||(f=f.filter(p=>!p.background),u||(f=f.map(p=>p._.id))),f},S=c=>{const u={};return c.forEach(({startFormatted:t})=>{u[t]=[];const f=g(t,!1,!0);f.length&&u[t].push(...f)}),u},i=c=>{if(!c.start||!c.end){console.error("Vue Cal: Cannot create an event without valid start and end dates.");return}return o.snapToInterval&&(s.snapToInterval(c.start,o.snapToInterval),s.snapToInterval(c.end,o.snapToInterval)),c={...c},c._||(c._={}),c._.id=++v,c._.fireCreated=!0,o.events.push(c),c},h=(c,u=0)=>{var p;if(!o.editableEvents.delete)return console.info("Vue Cal: Event deletion is disabled. Enable it with the `editable-events` props.");if(!c)return console.warn("Vue Cal: Cannot delete event without its ID.");const t=o.events.findIndex(E=>E._.id===c);if(t===-1)return console.warn(`Vue Cal: Cannot delete unknown event \`${c}\`.`);const f=o.events[t];if(f.deletable===!1)return console.warn(`Vue Cal: Can't delete event \`${c}\` since it was explicitely set to \`delete: false\`.`);switch(u){case 0:f._.deleting?o.events.splice(t,1):f._.deleting=!0;break;case 1:f._.deleting=!0;break;case 2:f._.deleted=!0,o.events[t]._.deleted=!0,(p=f._.$el)==null||p.dispatchEvent(new CustomEvent("event-deleted",{detail:f._.id}));break;case 3:o.events.splice(t,1),d.emit("update:events",o.events),d.emit("event-delete",f);break}return!0},M=c=>{const u=g(c,!0);if(!u.length)return{cellOverlaps:{},longestStreak:0};let t={},f=[],p=0;u.sort((E,P)=>E.start-P.start||E.end-E.start-(P.end-P.start));for(const E of u){const P=E._.id;t[P]||(t[P]={overlaps:new Set,maxConcurrent:1,position:0}),f=f.filter(a=>a.end>E.start);let L=f.filter(a=>{var V;return(!((V=o.schedules)!=null&&V.length)||E.schedule===a.schedule)&&a.start<E.end}),r=new Set(L.map(a=>{var B;return((B=t[a._.id])==null?void 0:B.position)??0})),l=0;for(;r.has(l);)l++;t[P].position=l,f.push(E);let b=Math.max(1,...L.map(a=>{var B;return((B=t[a._.id])==null?void 0:B.maxConcurrent)??1}));t[P].maxConcurrent=Math.max(L.length+1,b);for(const a of L)t[a._.id].overlaps.add(P),t[P].overlaps.add(a._.id),t[a._.id].maxConcurrent=t[P].maxConcurrent;p=Math.max(p,t[P].maxConcurrent)}for(const E in t)t[E].overlaps=[...t[E].overlaps];return{cellOverlaps:t,longestStreak:p}},N=(c=[],{start:u,end:t},{excludeIds:f=[],schedule:p=null})=>{var L;const E=new Set(f),P=[];for(const r of c)!E.has((L=r._)==null?void 0:L.id)&&(p===null||p===r.schedule)&&I(r,u,t)&&P.push(r);return P},I=(c,u,t)=>{const f=c.allDay||!o.time,p=f?new Date(c.start).setHours(0,0,0,0):c.start.getTime(),E=f?new Date(c.end).setHours(23,59,59,999):c.end.getTime(),P=f?new Date(u).setHours(0,0,0,0):u.getTime(),L=f?new Date(t).setHours(23,59,59,999):t.getTime();return E>P&&p<L};return{events:k,getEvent:Y,getEventsByDate:g,getViewEvents:S,getCellOverlappingEvents:M,getEventsInRange:N,createEvent:i,deleteEvent:h,isEventInRange:I}},Oe=({config:d,dateUtils:s,emit:o,texts:v,eventsManager:k},T)=>{const{availableViews:Y}=d,g=e.ref(d.view&&Y[d.view]?d.view:d.defaultView),S=e.ref(d.selectedDate||null);let i=e.ref(new Date);const h=e.ref(new Date(d.viewDate||i.value));h.value.setHours(0,0,0,0);const M=e.ref(new Date(h));let N=null;const I=e.computed(()=>g.value==="month"?M.value:l.value),c=e.computed(()=>g.value==="month"?new Date(M.value.getFullYear(),M.value.getMonth()+1,0,23,59,59,999):a.value),u=e.computed(()=>g.value==="week"?s.getPreviousFirstDayOfWeek(l.value,d.startWeekOnSunday):g.value==="month"?l.value:I.value),t=e.computed(()=>{if(g.value==="week"){const y=s.addDays(u.value,7);return y.setMilliseconds(-1),y}else if(g.value==="month")return a.value;return c.value}),f=e.computed(()=>{const y=i.value.getTime();if(g.value==="week")return u.value.getTime()<=y&&y<=t.value.getTime();const O=l.value.getTime(),W=a.value.getTime();return O<=y&&y<=W});function p(){i.value=new Date,N=setTimeout(p,60*1e3)}function E(){N=setTimeout(p,(60-new Date().getSeconds())*1e3),p()}const P=e.computed(()=>{if(!d.availableViews[g.value])return 1;let y=d.availableViews[g.value].cols;return d.hasHiddenDays&&["week","month"].includes(g.value)&&(y-=d.hasHiddenDays),y}),L=e.computed(()=>{var y;return((y=d.availableViews[g.value])==null?void 0:y.rows)||1}),r=e.computed(()=>P.value*L.value),l=e.computed(()=>{if(g.value==="month"){let y=M.value.getDay()||7;return d.startWeekOnSunday&&!d.hideWeekdays[7]&&(y+=1),d.viewDayOffset&&(y-=d.viewDayOffset),s.subtractDays(M.value,y-1)}else if(g.value==="week"){const y="1234567".split("").filter(W=>!Object.keys(d.hideWeekdays).includes(W));let O=Math.min(...y);return d.startWeekOnSunday&&!d.hideWeekdays[7]&&(O=1),d.viewDayOffset&&(O+=d.viewDayOffset),s.addDays(M.value,O-1)}else return M.value}),b=e.computed(()=>{const y=[],O=["days","week","month"].includes(g.value);let W=0;for(let R=0;R<r.value+W;R++)switch(g.value){case"day":case"days":case"week":case"month":{const ne=s.addDays(l.value,R),ve=ne.getDay()||7;if(O&&d.hasHiddenDays&&d.hideWeekdays[ve]){W++;continue}const ge=new Date(ne);ge.setHours(23,59,59,999),y.push({start:ne,startFormatted:s.formatDate(ne),end:ge});break}case"year":y.push({start:new Date(l.value.getFullYear(),R,1,0,0,0,0),end:new Date(l.value.getFullYear(),R+1,0,23,59,59,999)});break;case"years":y.push({start:new Date(l.value.getFullYear()+R,0,1,0,0,0,0),end:new Date(l.value.getFullYear()+R+1,0,0,23,59,59,999)});break}return y}),a=e.computed(()=>b.value[b.value.length-1].end),B=e.ref("right"),V=e.computed(()=>{const y=Object.keys(d.availableViews);return y[y.indexOf(g.value)+1]}),A=e.computed(()=>{const y=Object.keys(d.availableViews);return y[y.indexOf(g.value)-1]});function X(y,O,W=!1){if(!O||!O[y])return y+1;const R=O[y];return W&&typeof R=="string"?R.substring(0,3):R}function x(y,O,W){const{monthsArray:R,monthBeforeDay:ne,canTruncate:ve,xs:ge}=W,ce=y.getMonth(),de=y.getFullYear(),ue=O.getMonth(),ye=O.getFullYear(),_e=ce!==ue,Jt=de!==ye,ie=ve&&(ge||_e),pe=y.getDate(),De=O.getDate();return Jt?ne?`${X(ce,R,ie)} ${pe}, ${de} - ${X(ue,R,ie)} ${De}, ${ye}`:`${pe} ${X(ce,R,ie)} ${de} - ${De} ${X(ue,R,ie)} ${ye}`:_e?ne?`${X(ce,R,ie)} ${pe} - ${X(ue,R,ie)} ${De}, ${de}`:`${pe} ${X(ce,R,ie)} - ${De} ${X(ue,R,ie)} ${de}`:ne?`${X(ce,R,ie)} ${pe}-${De}, ${de}`:`${pe}-${De} ${X(ce,R,ie)} ${de}`}const J=e.computed(()=>{const{dateFormat:y,months:O,monthsGenitive:W,week:R,truncations:ne}=v,ve=d.locale,ge=ne!==!1,ce=y.indexOf("M")<y.indexOf("D"),de=W&&ve==="el"?W:O;switch(g.value){case"day":return s.formatDate(l.value,y);case"days":case"week":{const ue={monthsArray:de,monthBeforeDay:ce,canTruncate:ge,xs:d.xs};let ye=x(l.value,a.value,ue);if(g.value==="week"){const _e=s.getWeek(l.value,d.startWeekOnSunday&&!d.hideWeekdays[7]);ye+=` <small>${R} ${_e}</small>`}return ye}case"month":{const ue=`${d.xs&&ge?"MMM":"MMMM"} YYYY`;return s.formatDate(I.value,ue)}case"year":return l.value.getFullYear();case"years":return`${l.value.getFullYear()} - ${c.value.getFullYear()}`}});function K(){switch(M.value=new Date(h.value||i.value),M.value.setHours(0,0,0,0),g.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()%r.value,0,1,0,0,0,0);break}d.ready&&o("view-change",{id:g.value,title:J.value,start:I.value,end:c.value,extendedStart:u.value,extendedEnd:t.value,cellDates:b.value,containsToday:f.value,events:U.value}),i.value=new Date}function se(y){const O=g.value,W=d.availableViews[O];y[O]&&JSON.stringify(y[O])===JSON.stringify(W)||K()}function G(y,O=!0){const W=Object.keys(d.availableViews);g.value!==y&&(W.includes(y)?(B.value=W.indexOf(y)<W.indexOf(g.value)?"left":"right",g.value=y,o("update:view",y),K()):console.warn(`Vue Cal: the \`${y}\` view is not available.`))}function ee(){V.value?G(V.value):console.warn("Vue Cal: no broader view is available.")}function Z(){A.value?G(A.value):console.warn("Vue Cal: no narrower view is available.")}function Q(){_(!1)}function n(){_(!0)}function _(y=!0){let O=new Date(h.value);switch(g.value){case"day":case"days":y?O=s.addDays(a.value,1):O=s.subtractDays(l.value,r.value);break;case"week":{y?(O=s.addDays(t.value,1),O.setHours(0,0,0,0)):O=s.subtractDays(u.value,r.value);break}case"month":{const W=y?1:-1;O=new Date(O.getFullYear(),O.getMonth()+W,1,0,0,0,0);break}case"year":{const W=y?1:-1;O=new Date(O.getFullYear()+W,1,1,0,0,0,0);break}case"years":{const W=y?r.value:-r.value;O=new Date(O.getFullYear()+W,1,1,0,0,0,0);break}}j(O)}function D(){const y=new Date;y.setHours(0,0,0,0),j(y)}function j(y,O=!0,W=!1){if(!s.isValid(y))return console.warn("Vue Cal: can't navigate to the given date: invalid date provided to `updateViewDate(date)`.");let[R,ne]=[l.value,a.value];g.value==="month"&&([R,ne]=[I.value,c.value]),(!s.isInRange(y,R,ne)||W)&&(y.setHours(0,0,0,0),B.value=y.getTime()<R.getTime()?"left":"right",h.value=y,O&&o("update:viewDate",y),K())}function q(y,O=!0){if(s.isValid(y)){const{isValid:W,isSameDate:R}=s;(!S.value||!W(S.value)||!R(y,S.value))&&(y.setHours(0,0,0,0),S.value=y,O&&o("update:selectedDate",y))}else return console.warn("Vue Cal: can't update the selected date: invalid date provided to `updateSelectedDate(date)`.")}function m(y){!y&&!M.value.getDay()?j(s.addDays(M.value,1),!0,!0):(B.value="left",K())}function w(y){y&&d.startWeekOnSunday&&!M.value.getDay()?j(s.addDays(M.value,1),!0,!0):!y&&d.startWeekOnSunday&&M.value.getDay()===1&&j(s.subtractDays(M.value,1),!0,!0)}function C(){console.log("toggling weekdays",d.hideWeekdays)}function $(y){var R;const O=(R=T.value)==null?void 0:R.querySelector(".vuecal__scrollable"),W=y?y*d.timeCellHeight/d.timeStep:0;O==null||O.scrollTo({top:W,behavior:"smooth"})}function z(){const y=new Date;$(y.getHours()*60+y.getMinutes())}function F(){$(0)}const U=e.computed(()=>k.getViewEvents(b.value)),ae=k.createEvent,le=k.deleteEvent;return e.watch(()=>d.view,y=>G(y,!1)),e.watch(()=>d.availableViews,se),e.watch(()=>d.datePicker,()=>G("month",!1)),e.watch(()=>d.viewDate,y=>j(y,!1)),e.watch(()=>d.selectedDate,y=>q(y,!1)),e.watch(()=>d.startWeekOnSunday,y=>m(y)),e.watch(()=>d.hideWeekends,y=>w(y)),e.watch(()=>d.hideWeekdays,C),e.watch(()=>r.value,()=>{r.value>90&&console.warn("Vue Cal: high cell count detected. Performance may degrade when interactions are enabled.")}),e.watch(()=>d.watchRealTime,y=>{y&&d.time?E():N=clearTimeout(N)}),K(),d.time&&d.watchRealTime&&E(),e.onBeforeUnmount(()=>N=clearTimeout(N)),{now:i,id:g,broaderView:V,narrowerView:A,title:J,viewDate:h,start:I,end:c,extendedStart:u,extendedEnd:t,firstCellDate:l,lastCellDate:a,containsToday:f,selectedDate:S,cellDates:b,cols:P,rows:L,events:U,transitionDirection:B,switch:G,broader:ee,narrower:Z,previous:Q,next:n,navigate:_,goToToday:D,updateViewDate:j,updateSelectedDate:q,scrollToCurrentTime:z,scrollToTime:$,scrollTop:F,createEvent:ae,deleteEvent:le,get isDay(){return g.value==="day"},get isDays(){return g.value==="days"},get isWeek(){return g.value==="week"},get isMonth(){return g.value==="month"},get isYear(){return g.value==="year"},get isYears(){return g.value==="years"}}},he=e.reactive({texts:{...te.texts},dateUtils:Ee(te.texts,Me)}),ze=({props:d,emit:s,attrs:o,vuecalEl:v,uid:k})=>{const T=e.reactive({uid:k,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=Ee(Object.assign(te.texts,T.texts),Me),T.config=Ve(T,d,o),T.eventsManager=Pe(T),T.view=Oe(T,v),T.dnd=Ye(T),T},Ne=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:Ne},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}},Le={class:"vuecal__header"},Fe={key:0,class:"vuecal__views-bar"},He=["onClick","innerHTML"],We={key:1,class:"vuecal__title-bar"},Re={class:"vuecal__transition-wrap"},Ie=["disabled","innerHTML"],Ae={__name:"header",setup(d){const s=e.inject("vuecal"),{view:o,config:v}=s,k=()=>{v.clickToNavigate&&o.broader()},T=e.computed(()=>v.clickToNavigate?{click:k}:{});return(Y,g)=>(e.openBlock(),e.createElementBlock("div",Le,[e.renderSlot(Y.$slots,"header",{view:e.unref(o),availableViews:e.unref(v).availableViews,vuecal:e.unref(s)}),Y.$slots.header?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.unref(v).viewsBar?(e.openBlock(),e.createElementBlock("div",Fe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(v).availableViews,(S,i)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["vuecal__view-button",{"vuecal__view-button--active":e.unref(o).id===i}]),onClick:h=>e.unref(o).switch(i),innerHTML:e.unref(s).texts[i],type:"button"},null,10,He))),256))])):e.createCommentVNode("",!0),e.unref(v).titleBar?(e.openBlock(),e.createElementBlock("nav",We,[e.createElementVNode("button",{class:e.normalizeClass(["vuecal__nav vuecal__nav--prev",{"vuecal__nav--default":!Y.$slots["previous-button"]}]),onClick:g[0]||(g[0]=(...S)=>e.unref(o).previous&&e.unref(o).previous(...S)),type:"button"},[e.renderSlot(Y.$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()},[Y.$slots.title?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(v).clickToNavigate&&e.unref(o).broaderView?"button":"div"),e.mergeProps({key:0,class:"vuecal__title"},e.toHandlers(T.value)),{default:e.withCtx(()=>[e.renderSlot(Y.$slots,"title",e.normalizeProps(e.guardReactiveProps(e.unref(o))))]),_:3},16)):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(v).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(v).todayButton?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[Y.$slots["today-button"]?e.renderSlot(Y.$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:g[1]||(g[1]=S=>!e.unref(o).containsToday&&e.unref(o).goToToday()),disabled:!!e.unref(o).containsToday,type:"button",innerHTML:e.unref(s).texts.today},null,10,Ie))],64)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:e.normalizeClass(["vuecal__nav vuecal__nav--next",{"vuecal__nav--default":!Y.$slots["next-button"]}]),onClick:g[2]||(g[2]=(...S)=>e.unref(o).next&&e.unref(o).next(...S)),type:"button"},[e.renderSlot(Y.$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:v,dateUtils:k}=s,T=e.computed(()=>v.xs?"day-xs":v.sm||o.isDays||o.isMonth?"day-sm":"day"),Y=e.computed(()=>(o.isDay||o.isDays||o.isWeek||o.isMonth)&&!(o.isDay&&!v.schedules)),g=e.computed(()=>o.cellDates.slice(0,o.cols).map(({start:i})=>({id:ke[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)}))),S={click:i=>{(o.isDays||o.isWeek)&&o.updateSelectedDate(i)}};return(i,h)=>Y.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(g.value,(M,N)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vuecal__weekday",{"vuecal__weekday--today":M.isToday}]),key:N,onClick:I=>S.click(M.date)},[e.renderSlot(i.$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(v).schedules?(e.openBlock(),e.createElementBlock("div",Je,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,(M,N)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:N},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(v).schedules,(I,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",I.class])},[e.renderSlot(i.$slots,"schedule-heading",{schedule:I,view:e.unref(o)})],2)):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(["vuecal__schedule vuecal__schedule--heading",I.class]),innerHTML:I.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:v}=s,k=e.computed(()=>{const T=[];for(let g=o.timeFrom;g<o.timeTo;g+=o.timeStep){const S=~~(g/60),i=g%60,h=v[g<720?"am":"pm"];T.push({minutesSum:g,hours:S,minutes:i,formatted12:`${S%12?S%12:12}${i?":"+i.toString().padStart(2,0):""}${h}`,formatted24:`${S.toString().padStart(2,0)}:${i.toString().padStart(2,0)}`})}return T});return(T,Y)=>(e.openBlock(),e.createElementBlock("div",xe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,(g,S)=>(e.openBlock(),e.createElementBlock("div",{class:"vuecal__time-cell",key:S},[e.renderSlot(T.$slots,"time-cell",{index:S,minutes:g.minutes,hours:g.hours,minutesSum:g.minutesSum,format12:g.formatted12,format24:g.formatted24},()=>[e.createElementVNode("label",null,e.toDisplayString(e.unref(o).twelveHour?g.formatted12:g.formatted24),1)])]))),128))]))}},tt=["draggable"],at={class:"vuecal__event-details"},nt={class:"vuecal__event-title"},st={key:0,class:"vuecal__event-time"},lt=["innerHTML"],Se={__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:v,dnd:k,touch:T,dateUtils:Y}=e.inject("vuecal"),g=d,S=e.ref(null),i=e.reactive(g.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}),M=e.computed(()=>o.editableEvents.drag&&i.draggable!==!1&&!i.background),N=e.computed(()=>o.time&&o.editableEvents.resize&&i.resizable!==!1&&!i.background);e.computed(()=>o.editableEvents.delete&&i.deletable!==!1&&!i.background);const I=e.computed(()=>{var r,l,b;return{[`vuecal__event--${i._.id}`]:!0,[i.class]:!!i.class,"vuecal__event--recurring":!!i.recurring,"vuecal__event--background":!!i.background,"vuecal__event--multiday":!!((r=i._)!=null&&r.multiday),"vuecal__event--cut-top":((l=i._)==null?void 0:l.startMinutes)<o.timeFrom,"vuecal__event--cut-bottom":((b=i._)==null?void 0:b.endMinutes)>o.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 r=(v.isDay||v.isDays||v.isWeek)&&o.time;if(!r&&!i.backgroundColor&&!i.color)return!1;const l={backgroundColor:i.backgroundColor||null,color:i.color||null};if(r){const b=Math.max(o.timeFrom,i._.startMinutes),a=Math.min(o.timeTo,i._.endMinutes),B=me(b,o),V=me(a,o)-B;l.top=`${B}%`,l.height=`${V}%`}return l}),u=e.computed(()=>{const r={...o.eventListeners.event};Object.entries(r).forEach(([a,B])=>{["resize-end"].includes(a)||(r[a]=V=>{V.type!=="drop"&&B(V.type?{e:V,event:i}:V)})});const l={...r};r.touchstart=a=>{var B;a.stopPropagation(),t(a),(B=l.touchstart)==null||B.call(l,{e:a,event:i})},r.mousedown=a=>{var B;a.stopPropagation(),t(a),(B=l.mousedown)==null||B.call(l,{e:a,event:i})};let b=null;return r.click=a=>{var B;(B=l.click)==null||B.call(l,{e:a,event:i}),b?b=clearTimeout(b):b=setTimeout(()=>{var V;b=null,(V=l["delayed-click"])==null||V.call(l,{e:a,event:i})},400)},r.dblclick=a=>{l.dblclick?l.dblclick({e:a,event:i}):i.delete(1)},r}),t=r=>{var a,B,V;const l=((a=r.touches)==null?void 0:a[0])||r;h.fromResizer=l.target.matches(".vuecal__event-resizer, .vuecal__event-resizer *");const b=S.value.getBoundingClientRect();h.startX=(((B=r.touches)==null?void 0:B[0])||r).clientX-b.left,h.startY=(((V=r.touches)==null?void 0:V[0])||r).clientY-b.top,h.startPercentageX=h.startX*100/b.width,h.startPercentageY=h.startY*100/b.height,h.cellEl=S.value.closest(".vuecal__cell"),h.resizeStartDate=i.start,L(r.type==="touchstart"?"touchmove":"mousemove",f),L(r.type==="touchstart"?"touchend":"mouseup",p,{once:!0}),h.holdTimer=setTimeout(()=>{var A,X;h.holding=!0,(X=(A=u.value).hold)==null||X.call(A,{e:r,event:i})},1e3)},f=async r=>{var b,a,B,V;const l=((b=r.touches)==null?void 0:b[0])||r;if(h.fromResizer&&!h.resizing&&(h.resizing=!0,h.resizingOriginalEvent={...i,_:{...i._}},T.isResizingEvent=!0,(B=(a=u.value).resizeStart)==null||B.call(a,{e:r,event:i})),h.holdTimer=clearTimeout(h.holdTimer),h.holding=!1,h.cellEl){const{top:A,left:X,width:x,height:J}=h.cellEl.getBoundingClientRect();h.moveX=l.clientX-X,h.moveY=l.clientY-A,h.movePercentageX=h.moveX*100/x,h.movePercentageY=h.moveY*100/J}if(h.fromResizer){const{newStart:A,newEnd:X}=E(i);let x=!0;const{resize:J}=(V=o.eventListeners)==null?void 0:V.event;J&&(x=await J({e:r,event:{...i,start:A,end:X},overlaps:i.getOverlappingEvents({start:A,end:X})})),x!==!1?(i.start=A,i.end=X,h.resizingLastAcceptedEvent&&(h.resizingLastAcceptedEvent=null)):J&&(h.resizingLastAcceptedEvent={...i,_:{...i._}})}},p=async r=>{var l,b;if(h.holdTimer=clearTimeout(h.holdTimer),h.holding=!1,h.resizing){const{newStart:a,newEnd:B}=E(i);let V=!0;const A=u.value["resize-end"];A&&(V=await A({e:r,event:i,original:h.resizingOriginalEvent,overlaps:i.getOverlappingEvents({start:a,end:B})})),i.start=V===!1?(h.resizingLastAcceptedEvent||h.resizingOriginalEvent).start:((l=h.resizingLastAcceptedEvent)==null?void 0:l.start)||a,i.end=V===!1?(h.resizingLastAcceptedEvent||h.resizingOriginalEvent).end:((b=h.resizingLastAcceptedEvent)==null?void 0:b.end)||B,i._.duration<1&&(i.start=h.resizingOriginalEvent.start,i.end=h.resizingOriginalEvent.end),T.isResizingEvent=!1}document.removeEventListener(r.type==="touchend"?"touchmove":"mousemove",f),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},E=r=>{const l=new Date(r.start.getFullYear(),r.start.getMonth(),r.start.getDate());new Date(l).setDate(l.getDate()+1);let a=fe(h.movePercentageY,o);if(a=Math.max(0,Math.min(a,24*60)),o.snapToInterval){const A=a+o.snapToInterval/2;a=A-A%o.snapToInterval}let B=r.start,V=new Date(l.getTime()+a*6e4);return V<h.resizeStartDate&&(B=V,V=h.resizeStartDate),{newStart:B,newEnd:V}};e.onMounted(()=>i._.register(S.value));const P=[],L=(r,l,b)=>{document.addEventListener(r,l,b),P.push({event:r,handler:l,options:b})};return e.onBeforeUnmount(()=>{i._.unregister(),P.forEach(({event:r,handler:l,options:b})=>{document.removeEventListener(r,l,b)})}),(r,l)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({class:"vuecal__event"},e.toHandlers(u.value,!0),{ref_key:"eventEl",ref:S,class:I.value,style:c.value,draggable:M.value?"true":void 0,onDragstart:l[2]||(l[2]=b=>M.value&&e.unref(k).eventDragStart(b,i)),onDragend:l[3]||(l[3]=b=>M.value&&e.unref(k).eventDragEnd(b,i))}),[e.createElementVNode("div",at,[e.renderSlot(r.$slots,"event",{event:i},()=>[e.createElementVNode("div",nt,e.toDisplayString(i.title),1),e.unref(o).time?(e.openBlock(),e.createElementBlock("div",st,e.toDisplayString(i._[`startTimeFormatted${e.unref(o).twelveHour?12:24}`])+`
|
|
6
|
-
- `+e.toDisplayString(i._[`endTimeFormatted${e.unref(o).twelveHour?12:24}`]),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"vuecal__event-content",innerHTML:i.content},null,8,lt)])]),N.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vuecal__event-resizer",onDragstart:l[0]||(l[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:l[1]||(l[1]=e.withModifiers(b=>i.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"],yt={__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:v,config:k,dateUtils:T,eventsManager:Y,dnd:g,touch:S}=o,i=e.computed(()=>T.isToday(s.start)),h=e.ref(null),M=e.ref([]),N=e.ref(!1),I=m=>{M.value.push(m.detail),N.value=!0},c=()=>setTimeout(()=>N.value=!1,300),u=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),f=e.ref({cellOverlaps:{},longestStreak:0}),p=e.computed(()=>{let m=Math.min(u.startPercentageY,u.movePercentageY),w=Math.max(u.startPercentageY,u.movePercentageY),C=fe(m,k),$=fe(w,k);return k.snapToInterval&&(C=T.snapToInterval(C,k.snapToInterval),$=T.snapToInterval($,k.snapToInterval),m=me(C,k),w=me($,k)),{style:{top:m+"%",height:Math.abs(w-m)+"%"},startMinutes:C,endMinutes:$,start:T.formatMinutes(C),end:T.formatMinutes($),...u.schedule?{schedule:u.schedule}:{}}}),E=e.computed(()=>{const m=k.editableEvents.create&&(u.dragging||t.value),w=k.eventCreateMinDrag&&u.thresholdPassed||!k.eventCreateMinDrag;return m&&w}),P=e.computed(()=>{var U;const m=new Date,w=v.start.getFullYear(),C=v.start.getMonth(),$=s.start.getFullYear(),z=s.start.getMonth();return{[`vuecal__cell--${ke[s.start.getDay()]}`]:v.isDay||v.isDays||v.isWeek||v.isMonth,[`vuecal__cell--${Ce[z]}`]:v.isYear,[`vuecal__cell--${$}`]:v.isYears,"vuecal__cell--today":i.value,"vuecal__cell--current-month":v.isYear&&$===m.getFullYear()&&z===m.getMonth(),"vuecal__cell--current-year":v.isYears&&$===m.getFullYear(),"vuecal__cell--out-of-range":v.isMonth&&($!==w||z!==C),"vuecal__cell--before-min":J.value&&X.value,"vuecal__cell--after-max":J.value&&x.value,"vuecal__cell--disabled":J.value,"vuecal__cell--selected":v.selectedDate&&v.selectedDate.getTime()>=s.start.getTime()&&v.selectedDate.getTime()<=s.end.getTime(),"vuecal__cell--has-schedules":(U=k.schedules)==null?void 0:U.length,"vuecal__cell--dragging":u.dragging,"vuecal__cell--has-events":l.value.length}}),L=e.computed(()=>T.formatDate(s.start)),r=e.computed(()=>{switch(v.id){case"day":return"";case"days":return k.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,k.xs?"MMM":"MMMM");case"years":return T.formatDate(s.start,"YYYY")}}),l=e.computed(()=>k.datePicker?[]:Y.getEventsByDate(L.value,!0,!0).filter(m=>!M.value.includes(m._.id))),b=e.computed(()=>l.value.filter(m=>!m.background)),a=e.computed(()=>{var m;return(m=k.schedules)==null?void 0:m.reduce((w,C)=>(w[C.id]=l.value.filter($=>$.schedule===C.id),w),{})}),B=e.computed(()=>{const m={};for(const w of l.value){const C=w._.id,{maxConcurrent:$=1,position:z=0}=f.value.cellOverlaps[C]||{};m[C]={width:`${100/$}%`,left:`${100/$*z}%`}}return m}),V=e.computed(()=>v.isMonth&&k.eventCount&&!k.eventsOnMonthView&&b.value.length),A=e.computed(()=>{var C;if(!k.specialHours||v.isMonth||v.isYear||v.isYears)return;const m=ke[s.start.getDay()];let w=(C=k.specialHours)==null?void 0:C[m];if(w)return Array.isArray(w)||(w=[w]),w.map($=>{let{from:z,to:F,class:U,label:ae}=$;if(isNaN(z)||isNaN(F)||k.timeFrom>=F||k.timeTo<=z)return;z=Math.max(k.timeFrom,z),F=Math.min(k.timeTo,F);const le=me(z,k),y=me(F,k)-le;return{style:{top:`${le}%`,height:`${y}%`},label:ae,class:U}}).filter($=>!!$)}),X=e.computed(()=>k.minTimestamp!==null&&k.minTimestamp>s.end.getTime()),x=e.computed(()=>k.maxTimestamp&&k.maxTimestamp<s.start.getTime()),J=e.computed(()=>{const{disableDays:m}=k,w=v.isYear||v.isYears;return m.length&&m.includes(T.formatDate(s.start))&&!w?!0:X.value||x.value}),K=e.reactive({show:e.computed(()=>{if(!(!v.isDay&&!v.isDays&&!v.isWeek)&&!(!i.value||!k.time)&&!(k.timeFrom>T.dateToMinutes(v.now))&&!(T.dateToMinutes(v.now)>k.timeTo))return!0}),nowInMinutes:e.computed(()=>T.dateToMinutes(v.now)),todaysTimePosition:e.computed(()=>me(K.nowInMinutes,k)),style:e.computed(()=>`top: ${K.todaysTimePosition}%`),currentTime:e.computed(()=>T.formatTime(v.now))}),se=e.computed(()=>{if(J.value)return{};const m={...k.eventListeners.cell};Object.entries(m).forEach(([$,z])=>{m[$]=F=>{var U,ae,le;(le=(ae=F.target||((U=F.e)==null?void 0:U.target)).closest)!=null&&le.call(ae,".vuecal__event")||z(F.type?{e:F,cell:G.value,cursor:ee.value}:F)}});const w={...m};let C=null;return m.click=$=>{var z;Z(),(z=w.click)==null||z.call(w,{e:$,cell:G.value,cursor:ee.value}),C?C=clearTimeout(C):C=setTimeout(()=>{var F;C=null,(F=w["delayed-click"])==null||F.call(w,{e:$,cell:G.value,cursor:ee.value})},400)},(k.time&&v.isDay||v.isDays||v.isWeek)&&(m.touchstart=$=>{var z;Q($.e||$),(z=w.touchstart)==null||z.call(w,{e:$,cell:G.value,cursor:ee.value})},m.mousedown=$=>{var z;Q($.e||$),(z=w.mousedown)==null||z.call(w,{e:$,cell:G.value,cursor:ee.value})}),w.dblclick&&(m.dblclick=$=>{var O,W;const z=(((O=$.touches)==null?void 0:O[0])||$).clientY,{top:F}=h.value.getBoundingClientRect(),U=be(z-F,h.value),ae=fe(U,k),le=new Date(s.start);le.setMinutes(ae);const y={y:U,date:le};(W=w.dblclick)==null||W.call(w,{e:$,cell:G.value,cursor:y})}),k.editableEvents.drag&&(m.dragenter=$=>g.cellDragEnter($,G.value),m.dragover=$=>{$.preventDefault(),g.cellDragOver($,G.value)},m.dragleave=$=>g.cellDragLeave($,G.value),m.drop=$=>g.cellDragDrop($,G.value)),m}),G=e.computed(()=>({start:s.start,end:s.end,events:l,...u.schedule?{schedule:u.schedule}:{}})),ee=e.computed(()=>{const m=fe(u.movePercentageY||u.startPercentageY,k),w=new Date(s.start);return w.setMinutes(m),{x:u.movePercentageX||u.startPercentageX,y:u.movePercentageY||u.startPercentageY,date:w}}),Z=()=>{v.updateSelectedDate(s.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(s.start)},Q=m=>{var C,$;u.schedule=~~m.target.dataset.schedule;const w=h.value.getBoundingClientRect();u.startX=(((C=m.touches)==null?void 0:C[0])||m).clientX-w.left,u.startY=((($=m.touches)==null?void 0:$[0])||m).clientY-w.top,u.startPercentageX=u.startX*100/w.width,u.startPercentageY=u.startY*100/w.height,u.thresholdPassed=!1,document.addEventListener(m.type==="touchstart"?"touchmove":"mousemove",n),document.addEventListener(m.type==="touchstart"?"touchend":"mouseup",_,{once:!0}),u.holdTimer=setTimeout(()=>{var z,F;u.holding=!0,(F=(z=se.value).hold)==null||F.call(z,{e:m,cell:G.value,cursor:ee.value})},1e3)},n=m=>{var C,$,z,F,U,ae;u.dragging||(S.isDraggingCell=!0,($=(C=se.value).dragStart)==null||$.call(C,{e:m,cell:G.value,cursor:ee.value})),u.dragging=!0,u.holdTimer=clearTimeout(u.holdTimer),u.holding=!1;const w=h.value.getBoundingClientRect();u.moveX=(((z=m.touches)==null?void 0:z[0])||m).clientX-w.left,u.moveY=(((F=m.touches)==null?void 0:F[0])||m).clientY-w.top,u.movePercentageX=u.moveX*100/w.width,u.movePercentageY=u.moveY*100/w.height,k.eventCreateMinDrag&&Math.abs(u.startY-u.moveY)>k.eventCreateMinDrag&&(u.thresholdPassed=!0),(ae=(U=se.value).drag)==null||ae.call(U,{e:m,cell:G.value,cursor:ee.value})},_=async m=>{var w,C;document.removeEventListener(m.type==="touchend"?"touchmove":"mousemove",n,{passive:!1}),u.dragging&&((C=(w=se.value).dragEnd)==null||C.call(w,{e:m,cell:G.value,cursor:ee.value}),S.isDraggingCell=!1,k.editableEvents.create&&(t.value=!0,await D(m),t.value=!1)),u.holdTimer=clearTimeout(u.holdTimer),u.holding=!1,u.dragging=!1,u.startX=0,u.startY=0,u.moveX=0,u.moveY=0,u.startPercentageX=0,u.startPercentageY=0,u.movePercentageX=0,u.movePercentageY=0,u.thresholdPassed=!1,u.schedule=null},D=async m=>{if(!E.value)return;let{start:w,end:C,startMinutes:$,endMinutes:z}=p.value;w=new Date(s.start),w.setMinutes($),C=new Date(s.start),C.setMinutes(z);let F={...p.value,start:w,end:C};const{create:U}=k.eventListeners.event;if(typeof U=="function"){const ae=F;F=await new Promise(le=>U({e:m,event:F,cell:G.value,resolve:le,cursor:ee.value})),F&&typeof F=="object"&&v.createEvent(F),F&&typeof F=="boolean"&&v.createEvent(ae)}else v.createEvent(F)},j=()=>{Object.keys(se.value).forEach(m=>{var w;(w=h.value)==null||w.removeEventListener(m,se.value[m])})},q=()=>{f.value=Y.getCellOverlappingEvents(L.value)};return e.watch(()=>b.value.map(m=>`${m._.id}${m.start.getTime()}${m.end.getTime()}`).join(),async()=>{await e.nextTick(),q()},{immediate:!0,flush:"post"}),e.onBeforeUnmount(async()=>{M.value.forEach(m=>Y.deleteEvent(m,3)),j(),await e.nextTick()}),(m,w)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({class:["vuecal__cell",P.value],ref_key:"cellEl",ref:h},e.toHandlers(se.value,!0)),[m.$slots.cell?e.renderSlot(m.$slots,"cell",{key:0,start:d.start,end:d.end,index:d.index,events:l.value}):e.createCommentVNode("",!0),A.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(A.value,(C,$)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vuecal__special-hours",C.class]),style:e.normalizeStyle(C.style),innerHTML:C.label||""},null,14,rt))),256)):e.createCommentVNode("",!0),!m.$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},[m.$slots["cell-events"]?e.renderSlot(m.$slots,"cell-events",{key:0,start:d.start,end:d.end,events:l.value}):e.createCommentVNode("",!0),r.value||m.$slots["cell-date"]?(e.openBlock(),e.createElementBlock("div",it,[e.renderSlot(m.$slots,"cell-date",{start:d.start,end:d.end,events:l.value},()=>[e.createTextVNode(e.toDisplayString(r.value),1)])])):e.createCommentVNode("",!0),m.$slots["cell-content"]?(e.openBlock(),e.createElementBlock("div",ct,[e.renderSlot(m.$slots,"cell-content",{start:d.start,end:d.end,events:l.value})])):e.createCommentVNode("",!0),m.$slots["cell-events"]&&l.value.length?(e.openBlock(),e.createElementBlock("div",dt,[e.renderSlot(m.$slots,"cell-events",{start:d.start,end:d.end,events:l.value})])):l.value.length||N.value?(e.openBlock(),e.createBlock(e.TransitionGroup,{key:4,class:"vuecal__cell-events",name:"vuecal-event-delete",onBeforeLeave:w[0]||(w[0]=$=>N.value=!0),onAfterLeave:c,tag:"div"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value[C.id],$=>(e.openBlock(),e.createBlock(Se,{key:$._.id,event:$,onEventDeleted:I,style:e.normalizeStyle(B.value[$._.id])},e.createSlots({_:2},[m.$slots.event?{name:"event",fn:e.withCtx(z=>[e.renderSlot(m.$slots,"event",e.mergeProps({ref_for:!0},z))]),key:"0"}:void 0]),1032,["event","style"]))),128))]),_:2},1024)):e.createCommentVNode("",!0),E.value&&u.schedule===C.id?(e.openBlock(),e.createElementBlock("div",{key:5,class:"vuecal__event-placeholder",style:e.normalizeStyle(p.value.style)},e.toDisplayString(p.value.start)+" - "+e.toDisplayString(p.value.end),5)):e.createCommentVNode("",!0)],14,ot))),128)):e.createCommentVNode("",!0),!m.$slots.cell&&!e.unref(k).schedules?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[m.$slots["cell-events"]?e.renderSlot(m.$slots,"cell-events",{key:0}):e.createCommentVNode("",!0),r.value||m.$slots["cell-date"]?(e.openBlock(),e.createElementBlock("div",ut,[e.renderSlot(m.$slots,"cell-date",{start:d.start,end:d.end,events:l.value},()=>[e.createTextVNode(e.toDisplayString(r.value),1)])])):e.createCommentVNode("",!0),m.$slots["cell-content"]?(e.openBlock(),e.createElementBlock("div",mt,[e.renderSlot(m.$slots,"cell-content",{start:d.start,end:d.end,events:l.value})])):e.createCommentVNode("",!0),m.$slots["cell-events"]&&l.value.length?(e.openBlock(),e.createElementBlock("div",ft,[e.renderSlot(m.$slots,"cell-events",{start:d.start,end:d.end,events:l.value})])):(l.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:w[1]||(w[1]=C=>N.value=!0),onAfterLeave:c,tag:"div"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,C=>(e.openBlock(),e.createBlock(Se,{key:C._.id,event:C,onEventDeleted:I,style:e.normalizeStyle(B.value[C._.id])},e.createSlots({_:2},[m.$slots.event?{name:"event",fn:e.withCtx($=>[e.renderSlot(m.$slots,"event",e.mergeProps({ref_for:!0},$))]),key:"0"}:void 0]),1032,["event","style"]))),128))]),_:3})):e.createCommentVNode("",!0),E.value?(e.openBlock(),e.createElementBlock("div",{key:5,class:"vuecal__event-placeholder",style:e.normalizeStyle(p.value.style)},e.toDisplayString(p.value.start)+" - "+e.toDisplayString(p.value.end),5)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),m.$slots["event-count"]?e.renderSlot(m.$slots,"event-count",{key:4,events:b.value}):V.value?(e.openBlock(),e.createElementBlock("div",gt,e.toDisplayString(b.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))}},pt={__name:"body",setup(d){const s=e.inject("vuecal");let{view:o,config:v,dateUtils:k}=s;const T=e.ref(null),Y=e.ref(null),g=e.computed(()=>({"--vuecal-grid-columns":o.cols,"--vuecal-grid-rows":o.rows})),S=e.computed(()=>{const M=k.formatTime(fe(Y.value,v));return{style:{top:Y.value+"%"},time:M}}),i=M=>{var c;if(o.isMonth||o.isYear||o.isYears)return;const N=(((c=M.touches)==null?void 0:c[0])||M).clientY,{top:I}=T.value.getBoundingClientRect();Y.value=be(N-I,T.value)},h=()=>{Y.value=null};return e.onMounted(()=>{T.value.addEventListener("mousemove",i),T.value.addEventListener("touchmove",i),T.value.addEventListener("mouseleave",h),T.value.addEventListener("touchend",h)}),e.onBeforeUnmount(()=>{T.value&&(T.value.removeEventListener("mousemove",i),T.value.removeEventListener("touchmove",i),T.value.removeEventListener("mouseleave",h),T.value.removeEventListener("touchend",h))}),(M,N)=>(e.openBlock(),e.createElementBlock("div",{class:"vuecal__body",ref_key:"bodyEl",ref:T,style:e.normalizeStyle(g.value)},[e.createVNode(e.Transition,{name:"vuecal-shrink"},{default:e.withCtx(()=>[e.unref(v).timeAtCursor&&Y.value!==null?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vuecal__time-at-cursor",style:e.normalizeStyle(S.value.style)},[e.createElementVNode("label",null,e.toDisplayString(S.value.time),1)],4)):e.createCommentVNode("",!0)]),_:1}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(o).cellDates,(I,c)=>(e.openBlock(),e.createBlock(yt,{key:c,start:I.start,end:I.end,index:c},e.createSlots({_:2},[M.$slots.cell?{name:"cell",fn:e.withCtx(u=>[e.renderSlot(M.$slots,"cell",e.mergeProps({ref_for:!0},u))]),key:"0"}:void 0,M.$slots["cell-date"]?{name:"cell-date",fn:e.withCtx(u=>[e.renderSlot(M.$slots,"cell-date",e.mergeProps({ref_for:!0},u))]),key:"1"}:void 0,M.$slots["cell-content"]?{name:"cell-content",fn:e.withCtx(u=>[e.renderSlot(M.$slots,"cell-content",e.mergeProps({ref_for:!0},u))]),key:"2"}:void 0,M.$slots["cell-events"]?{name:"cell-events",fn:e.withCtx(u=>[e.renderSlot(M.$slots,"cell-events",e.mergeProps({ref_for:!0},u))]),key:"3"}:M.$slots.event?{name:"event",fn:e.withCtx(u=>[e.renderSlot(M.$slots,"event",e.mergeProps({ref_for:!0},u))]),key:"4"}:M.$slots["event-count"]?{name:"event-count",fn:e.withCtx(u=>[e.renderSlot(M.$slots,"event-count",e.mergeProps({ref_for:!0},u))]),key:"5"}:void 0]),1032,["start","end","index"]))),128))],4))}},Dt=["data-locale"],vt={class:"vuecal__scrollable-wrap"},kt={key:1,class:"vuecal__week-numbers"},wt={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 v=d,k=o,T=e.useTemplateRef("vuecal-el"),Y=ze({props:v,emit:k,attrs:e.useAttrs(),vuecalEl:T,uid:e.useId()}),{config:g,view:S,dateUtils:i,touch:h}=Y,M=e.computed(()=>g.time&&(S.isDay||S.isDays||S.isWeek)),N=e.computed(()=>Array(S.rows).fill().map((t,f)=>i.getWeek(i.addDays(S.firstCellDate,7*f)))),I=e.computed(()=>{var t;return{"vuecal--ready":g.ready,[`vuecal--${g.theme}-theme`]:g.theme,[`vuecal--${g.size}`]:!0,"vuecal--date-picker":g.datePicker,"vuecal--dark":g.dark,"vuecal--light":!g.dark,[`vuecal--${S.id}-view`]:!0,"vuecal--view-has-time":M.value,"vuecal--timeless":!g.time,"vuecal--dragging-cell":h.isDraggingCell,"vuecal--dragging-event":h.isDraggingEvent,"vuecal--resizing-event":h.isResizingEvent,"vuecal--has-schedules":(t=g.schedules)==null?void 0:t.length}}),c=e.computed(()=>({"--vuecal-time-cell-height":g.timeCellHeight&&`${g.timeCellHeight}px`})),u=e.computed(()=>{var t,f;return{"vuecal__scrollable--row":M.value||g.weekNumbers&&S.isMonth,[`vuecal__scrollable--${S.id}-view`]:!0,"vuecal__scrollable--has-schedules":(t=g.schedules)==null?void 0:t.length,"vuecal__scrollable--no-schedules":!((f=g.schedules)!=null&&f.length)}});return e.onMounted(async()=>{await e.nextTick(),g.ready=!0,k("ready",{config:g,view:S})}),e.provide("vuecal",Y),s({view:Y.view}),(t,f)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vuecal",I.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(Y),view:e.unref(S),availableViews:e.unref(g).availableViews}):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createVNode(Ae,null,e.createSlots({_:2},[t.$slots.header?{name:"header",fn:e.withCtx(p=>[e.renderSlot(t.$slots,"header",e.normalizeProps(e.guardReactiveProps(p)))]),key:"0"}:void 0,!t.$slots.header&&t.$slots["previous-button"]?{name:"previous-button",fn:e.withCtx(p=>[e.renderSlot(t.$slots,"previous-button",e.normalizeProps(e.guardReactiveProps(p)))]),key:"1"}:void 0,!t.$slots.header&&t.$slots["next-button"]?{name:"next-button",fn:e.withCtx(p=>[e.renderSlot(t.$slots,"next-button",e.normalizeProps(e.guardReactiveProps(p)))]),key:"2"}:void 0,!t.$slots.header&&t.$slots["today-button"]?{name:"today-button",fn:e.withCtx(p=>[e.renderSlot(t.$slots,"today-button",e.normalizeProps(e.guardReactiveProps(p)))]),key:"3"}:void 0,!t.$slots.header&&t.$slots.title?{name:"title",fn:e.withCtx(p=>[e.renderSlot(t.$slots,"title",e.normalizeProps(e.guardReactiveProps(p)))]),key:"4"}:void 0,!t.$slots.header&&t.$slots["schedule-heading"]?{name:"schedule-heading",fn:e.withCtx(p=>[e.renderSlot(t.$slots,"schedule-heading",e.normalizeProps(e.guardReactiveProps(p)))]),key:"5"}:void 0]),1024),e.createElementVNode("div",vt,[e.createVNode(e.Transition,{name:`vuecal-slide-fade--${e.unref(S).transitionDirection}`},{default:e.withCtx(()=>[(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vuecal__scrollable",u.value]),key:e.unref(S).id+e.unref(S).start.getTime()},[M.value?(e.openBlock(),e.createBlock(et,{key:0},e.createSlots({_:2},[t.$slots["time-cell"]?{name:"time-cell",fn:e.withCtx(p=>[e.renderSlot(t.$slots,"time-cell",e.normalizeProps(e.guardReactiveProps(p)))]),key:"0"}:void 0]),1024)):e.createCommentVNode("",!0),e.unref(g).weekNumbers&&e.unref(S).isMonth?(e.openBlock(),e.createElementBlock("div",kt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,p=>(e.openBlock(),e.createElementBlock("div",wt,[e.renderSlot(t.$slots,"week-number",{},()=>[e.createElementVNode("small",null,e.toDisplayString(p),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(p=>[e.renderSlot(t.$slots,"weekday-heading",e.normalizeProps(e.guardReactiveProps(p)))]),key:"0"}:void 0,t.$slots["schedule-heading"]?{name:"schedule-heading",fn:e.withCtx(p=>[e.renderSlot(t.$slots,"schedule-heading",e.normalizeProps(e.guardReactiveProps(p)))]),key:"1"}:void 0]),1024),e.createVNode(pt,null,e.createSlots({_:2},[t.$slots.cell?{name:"cell",fn:e.withCtx(p=>[e.renderSlot(t.$slots,"cell",e.normalizeProps(e.guardReactiveProps(p)))]),key:"0"}:void 0,!t.$slots.cell&&t.$slots["cell-date"]?{name:"cell-date",fn:e.withCtx(p=>[e.renderSlot(t.$slots,"cell-date",e.normalizeProps(e.guardReactiveProps(p)))]),key:"1"}:void 0,!t.$slots.cell&&t.$slots["cell-content"]?{name:"cell-content",fn:e.withCtx(p=>[e.renderSlot(t.$slots,"cell-content",e.normalizeProps(e.guardReactiveProps(p)))]),key:"2"}:void 0,!t.$slots.cell&&t.$slots["cell-events"]?{name:"cell-events",fn:e.withCtx(p=>[e.renderSlot(t.$slots,"cell-events",e.normalizeProps(e.guardReactiveProps(p)))]),key:"3"}:void 0,!t.$slots.cell&&t.$slots.event?{name:"event",fn:e.withCtx(p=>[e.renderSlot(t.$slots,"event",e.normalizeProps(e.guardReactiveProps(p)))]),key:"4"}:void 0,!t.$slots.cell&&t.$slots["event-count"]?{name:"event-count",fn:e.withCtx(p=>[e.renderSlot(t.$slots,"event-count",e.normalizeProps(e.guardReactiveProps(p)))]),key:"5"}:void 0]),1024)])],2))]),_:3},8,["name"])])],64))],14,Dt))}},Tt=d=>{he.texts={...te.texts,...d},he.dateUtils.updateTexts(he.texts)},{addDatePrototypes:Mt,removeDatePrototypes:$t,updateTexts:Et,addDays:St,subtractDays:Ct,addHours:Bt,subtractHours:Vt,addMinutes:Yt,subtractMinutes:Pt,getWeek:Ot,isToday:zt,isSameDate:Nt,isInRange:jt,isLeapYear:Lt,getPreviousFirstDayOfWeek:Ft,stringToDate:Ht,dateToMinutes:Wt,countDays:Rt,datesInSameTimeStep:It,isValid:At,formatDate:Xt,formatDateLite:Gt,formatTime:qt,formatTimeLite:Ut,formatMinutes:Zt}=he.dateUtils;H.VueCal=bt,H.addDatePrototypes=Mt,H.addDays=St,H.addHours=Bt,H.addMinutes=Yt,H.countDays=Rt,H.dateToMinutes=Wt,H.datesInSameTimeStep=It,H.formatDate=Xt,H.formatDateLite=Gt,H.formatMinutes=Zt,H.formatTime=qt,H.formatTimeLite=Ut,H.getPreviousFirstDayOfWeek=Ft,H.getWeek=Ot,H.isInRange=jt,H.isLeapYear=Lt,H.isSameDate=Nt,H.isToday=zt,H.isValidDate=At,H.removeDatePrototypes=$t,H.stringToDate=Ht,H.subtractDays=Ct,H.subtractHours=Vt,H.subtractMinutes=Pt,H.updateTexts=Et,H.useLocale=Tt,Object.defineProperty(H,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((v,s,o)=>(v[s]=o||7,v),{}),Ve=(v,s,o)=>{const{dateUtils:p}=v,w=!1,T=e.computed(()=>{if(N.value[s.view])return s.view;{const l=s.datePicker?"month":"week",r=s.view||l;return N.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(N.value)[0]}\`.`),Object.keys(N.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),i=e.computed(()=>{const l={cell:{},event:{}},r=b=>b.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();return Object.entries(o).forEach(([b,a])=>{const[B,Y,X]=b.match(/^on(Cell|Event)(.+)$/)||[];B&&(l[Y.toLowerCase()][r(X).replace(/^-+|-+$/g,"")]=a)}),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(b=>l[Be[b]]=!0),l}),M=e.computed(()=>s.hideWeekends||g.value[6]&&g.value[7]),N=e.computed(()=>{const l=s.datePicker;let r=0,b={};const a=s.views;return l&&!a?{month:{...te.availableViews.month},year:{...te.availableViews.year},years:{...te.availableViews.years}}:(a?(Array.isArray(a)?b=a.reduce((B,Y)=>(typeof Y=="string"&&te.availableViews[Y]?B[Y]=te.availableViews[Y]:r++,B),{}):typeof a=="object"&&(b=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(b).length||(console.warn("Vue Cal: No valid view in the provided `views` prop. Falling back to default views."),b={...te.availableViews})):b={...te.availableViews},b)}),A=e.computed(()=>s.datePicker?"month":N.value.week?"week":Object.keys(N.value)[0]),c=e.computed(()=>{if(typeof s.selectedDate=="string")return p.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=[];return Array.isArray(s.disableDays)?s.disableDays.forEach(r=>{let b=r;if(typeof r=="string"?b=p.stringToDate(r):r instanceof Date&&(r=p.formatDate(r,"YYYY-MM-DD")),b instanceof Date&&!isNaN(b.getTime())){l.push(r);return}else console.warn("Vue Cal: The provided `disableDays` prop contains an invalid date:",r)}):console.warn("Vue Cal: The provided `disableDays` prop is invalid:",s.disableDays),l}),t=e.computed(()=>{let l=null;return s.minDate&&typeof s.minDate=="string"?l=p.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=p.stringToDate(s.maxDate):s.maxDate&&s.maxDate instanceof Date&&(l=s.maxDate),(l==null?void 0:l.getTime())||null}),y=e.computed(()=>{var b;const{view:l}=v;return s.schedules.length&&(l.isDay||l.isDays||l.isWeek)&&((b=s.schedules)==null?void 0:b.map((a,B)=>({...a,id:a.id??B+1})))||void 0}),E=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 b;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((b=r[`../i18n/${l}.json`])==null?void 0:b.call(r))}v.texts=Object.assign(v.texts,Object.assign({...te.texts},r)),p.updateTexts(v.texts)},L=e.reactive(s.events||[]);return e.watch(()=>s.events,l=>L.splice(0,L.length,...l)),e.watch(()=>s.locale,l=>V(l||"en-us")),(s.locale||!v.texts.today)&&V(s.locale||"en-us"),{...e.toRefs(s),events:L,eventListeners:i,defaultView:A,availableViews:N,disableDays:d,ready:w,sm:P,xs:f,clickToNavigate:C,hideWeekdays:g,hideWeekends:M,minTimestamp:t,maxTimestamp:m,schedules:y,selectedDate:c,editableEvents:E,view:T,get hasHiddenDays(){return Object.keys(g.value).length},get size(){return f.value?"xs":P.value?"sm":"lg"},loadTexts:V}},me=(v,s)=>{const o=s.timeTo-s.timeFrom;return(v-s.timeFrom)*100/o},fe=(v,s)=>{const o=s.timeTo-s.timeFrom;return~~(v*o/100+s.timeFrom)},be=(v,s)=>{const o=s.clientHeight;return v*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(v){const{config:s,view:o,eventsManager:p,emit:w,uid:T,dateUtils:P}=v,f=t=>{var r;const{timeStep:m,timeCellHeight:y,timeFrom:E}=s,V=(((r=t.touches)==null?void 0:r[0])||t).clientY,{top:L}=t.currentTarget.getBoundingClientRect(),l=V-L-~~t.dataTransfer.getData("cursor-grab-at");return fe(be(l,t.currentTarget),s)},C=(t,m,y)=>{const E=m.duration||i(m.start,m.end)||s.timeStep;let V=Math.max(f(t),0);if(s.snapToInterval){const b=V+s.snapToInterval/2;V=b-b%s.snapToInterval}const L=new Date(new Date(y).setMinutes(V)),l=Math.min(V+E,24*60),r=new Date(new Date(y).setMinutes(l));return{start:L,end:r}},i=(t,m)=>Math.round((m-t)/6e4);return{eventDragStart:(t,m)=>{if(t.target.nodeType===3||v.touch.isResizingEvent)return t.preventDefault();t.dataTransfer.effectAllowed="move",t.dataTransfer.dropEffect="move";const y={...m,_:{id:m._.id,duration:i(m.start,m.end)}};try{t.dataTransfer.setData("text/plain",""),t.dataTransfer.setData("event",JSON.stringify(y)),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 E=t.target.closest(".vuecal__event");E.classList.add("vuecal__event--dragging-ghost"),setTimeout(()=>{E.classList.add("vuecal__event--dragging-original"),E.classList.remove("vuecal__event--dragging-ghost")},0),$e=!1,Object.assign(ke,{id:o.id,date:o.firstCellDate}),Te=!0,v.touch.isDraggingEvent=!0},eventDragEnd:(t,m)=>{oe.eventId=null,t.target.closest(".vuecal__event").classList.remove("vuecal__event--dragging-original");const{fromVueCal:y,toVueCal:E}=oe;E&&y!==E&&p.deleteEvent(m._.id,3),oe.fromVueCal=null,oe.toVueCal=null,$e&&Te&&ke.id&&o.switchView(ke.id,ke.date,!0),v.touch.isDraggingEvent=!1},cellDragEnter:(t,m)=>{const{start:y}=m,E=t.currentTarget;if(!t.currentTarget.contains(t.relatedTarget)){if(E===re.el||!E.className.includes("vuecal__cell-content"))return!1;re.el&&(re.cell.highlighted=!1),Object.assign(re,{el:E,cell:m,timeout:clearTimeout(re.timeout)}),m.highlighted=!0,["years","year","month"].includes(o.id)&&(re.timeout=setTimeout(()=>v.switchToNarrowerView(y),2e3))}},cellDragOver:(t,m)=>{const{start:y,schedule:E}=m;t.preventDefault(),m.highlighted=!0,(E||E===0)&&(m.highlightedSchedule=E)},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 y=JSON.parse(t.dataTransfer.getData("event")||"{}");y.start&&(y.start=new Date(y.start)),y.end&&(y.end=new Date(y.end));let E;const{start:V,end:L}=C(t,y,m.start),{schedule:l}=((B=t.target.closest("[data-schedule]"))==null?void 0:B.dataset)||{};let r=()=>{};oe.fromVueCal===T?(E=p.getEvent(y._.id),E&&(E._.dragging=!1,r=()=>{E.start=V,E.end=L,l!==void 0&&(E.schedule=~~l)})):(E={...y,start:V,end:L,...l!==void 0&&{schedule:~~l},_:{id:((Y=y._)==null?void 0:Y.id)||y.id,duration:i(V,L)},getOverlappingEvents:()=>p.getEventsInRange(p.getEventsByDate(P.formatDate(V),!0),{start:V,end:L},{schedule:~~l})},r=()=>{E=p.createEvent(E)});let b=!0;const{drop:a}=(X=s.eventListeners)==null?void 0:X.event;a&&(b=await a({e:t,event:{...E,start:V,end:L,schedule:~~l},overlaps:E.getOverlappingEvents({start:V,end:L,schedule:~~l}),cell:m,external:oe.fromVueCal!==T})),b!==!1&&r(),m.highlighted=!1,m.highlightedSchedule=null,Te=!1,oe.toVueCal=T,w("event-dropped",{e:t,cell:m,event:E,originalEvent:y,external:oe.fromVueCal!==T})}}}const Ee=(v,s)=>{let o,p,w,T={},P={};const f=e.ref(v),C=()=>{f.value.today||(f.value=s),Date.prototype.addDays=function(n){return N(this,n||0)},Date.prototype.subtractDays=function(n){return A(this,n||0)},Date.prototype.addHours=function(n){return c(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 E(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)}},i=()=>{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=()=>(p!==new Date().getDate()&&(o=new Date,p=o.getDate(),w=`${o.getFullYear()}-${o.getMonth()}-${o.getDate()}`),w),N=(n,_)=>{const D=new Date(n.valueOf());return D.setDate(D.getDate()+_),D},A=(n,_)=>{const D=new Date(n.valueOf());return D.setDate(D.getDate()-_),D},c=(n,_)=>{const D=new Date(n.valueOf());return D.setHours(D.getHours()+_),D},d=(n,_)=>{const D=new Date(n.valueOf());return D.setHours(D.getHours()-_),D},t=(n,_)=>{const D=new Date(n.valueOf());return D.setMinutes(D.getMinutes()+_),D},m=(n,_)=>{const D=new Date(n.valueOf());return D.setMinutes(D.getMinutes()-_),D},y=(n,_)=>{const D=j=>{const q=j%_;return q!==0&&(j+=q>=_/2?_-q:-q),j};if(typeof n=="number")return D(n);if(n instanceof Date){let j=D(n.getMinutes());j>=60&&(n.setHours(n.getHours()+1),j=0),n.setMinutes(j,0,0)}},E=(n,_=!1)=>{const D=new Date(Date.UTC(n.getFullYear(),n.getMonth(),n.getDate())),j=D.getUTCDay()||7;D.setUTCDate(D.getUTCDate()+4-j);const q=new Date(Date.UTC(D.getUTCFullYear(),0,1));return Math.ceil(((D-q)/864e5+1)/7)+(_?1:0)},V=n=>`${n.getFullYear()}-${n.getMonth()}-${n.getDate()}`===M(),L=(n,_)=>{if(!n||!_)return console.warn(`Vue Cal: missing date${n?"2":"1"} parameter for comparison with \`isSameDate(date1, date2)\`.`);if(G(n)){if(!G(_))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)\`: \`${n}\`.`);return n.getFullYear()===_.getFullYear()&&n.getMonth()===_.getMonth()&&n.getDate()===_.getDate()},l=(n,_,D)=>G(n)?n.getTime()>=_&&n.getTime()<=D:console.warn(`Vue Cal: invalid date provided to \`isInRange(date, rangeStart, rangeEnd)\`: \`${n}\`.`),r=n=>{const _=n.getFullYear();return!(_%400)||_%100&&!(_%4)},b=(n=null,_)=>{const D=n&&new Date(n.valueOf())||new Date,j=_?7:6;return D.setDate(D.getDate()-(D.getDay()+j)%7),D},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,_)=>{typeof n=="string"&&(n=n.replace(/-/g,"/")),typeof _=="string"&&(_=_.replace(/-/g,"/")),n=new Date(n).setHours(0,0,0,0),_=new Date(_).setHours(0,0,1,0);const D=(new Date(_).getTimezoneOffset()-new Date(n).getTimezoneOffset())*60*1e3;return Math.ceil((_-n-D)/(24*3600*1e3))},X=(n,_,D)=>Math.abs(n.getTime()-_.getTime())<=D*60*1e3,G=n=>n&&n instanceof Date&&!isNaN(n),x=(n,_="YYYY-MM-DD",D=null)=>{if(D||(D=f.value),_||(_="YYYY-MM-DD"),_==="YYYY-MM-DD")return J(n);T={},P={};const j={YYYY:()=>Z(n,D).YYYY,YY:()=>Z(n,D).YY(),M:()=>Z(n,D).M,MM:()=>Z(n,D).MM(),MMM:()=>Z(n,D).MMM(),MMMM:()=>Z(n,D).MMMM(),MMMMG:()=>Z(n,D).MMMMG(),D:()=>Z(n,D).D,DD:()=>Z(n,D).DD(),S:()=>Z(n,D).S(),d:()=>Z(n,D).d,dd:()=>Z(n,D).dd(),ddd:()=>Z(n,D).ddd(),dddd:()=>Z(n,D).dddd(),HH:()=>Q(n,D).HH,H:()=>Q(n,D).H,hh:()=>Q(n,D).hh,h:()=>Q(n,D).h,am:()=>Q(n,D).am,AM:()=>Q(n,D).AM,mm:()=>Q(n,D).mm,m:()=>Q(n,D).m,s:()=>Q(n,D).s};return _.replace(/(\{[a-zA-Z]+\}|[a-zA-Z]+)/g,(q,u)=>{const k=j[u.replace(/\{|\}/g,"")];return k!==void 0?k():u})},J=n=>{const _=n.getMonth()+1,D=n.getDate();return`${n.getFullYear()}-${_<10?"0":""}${_}-${D<10?"0":""}${D}`},K=(n,_="HH:mm",D=null,j=!1)=>{let q=!1;if(j){const[S,$,z]=[n.getHours(),n.getMinutes(),n.getSeconds()];S+$+z===141&&(q=!0)}if(n instanceof Date&&_==="HH:mm")return q?"24:00":se(n);P={},D||(D=f.value);const u=Q(n,D),k=_.replace(/(\{[a-zA-Z]+\}|[a-zA-Z]+)/g,(S,$)=>{const z=u[$.replace(/\{|\}/g,"")];return z!==void 0?z:$});return q?k.replace("23:59","24:00"):k},se=n=>{const _=n.getHours(),D=n.getMinutes();return`${(_<10?"0":"")+_}:${(D<10?"0":"")+D}`},I=n=>{const _=Math.floor(n/60).toString().padStart(2,0),D=(n%60).toString().padStart(2,0);return`${_}:${D}`},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,_)=>{if(T.D)return T;const D=n.getFullYear(),j=n.getMonth()+1,q=n.getDate(),k=(n.getDay()-1+7)%7;return T={YYYY:D,YY:()=>D.toString().substring(2),M:j,MM:()=>j.toString().padStart(2,0),MMM:()=>_.months[j-1].substring(0,3),MMMM:()=>_.months[j-1],MMMMG:()=>(_.monthsGenitive||_.months)[j-1],D:q,DD:()=>q.toString().padStart(2,0),S:()=>ee(q),d:k+1,dd:()=>_.weekDaysShort.length?_.weekDaysShort[k]:_.weekDays[k][0],ddd:()=>_.weekDaysShort.length?_.weekDaysShort[k]:_.weekDays[k].substr(0,3),dddd:()=>_.weekDays[k]},T},Q=(n,_)=>{if(P.am)return P;let D,j,q;n instanceof Date?(D=n.getHours(),j=n.getMinutes(),q=n.getSeconds()):(D=Math.floor(n/60),j=Math.floor(n%60));const u=D%12?D%12:12,k=(_||{am:"am",pm:"pm"})[D===24||D<12?"am":"pm"];return P={H:D,h:u,HH:D.toString().padStart(2,0),hh:u.toString().padStart(2,0),am:k,AM:k.toUpperCase(),m:j,mm:j.toString().padStart(2,0),s:q},P};return{addDatePrototypes:C,removeDatePrototypes:i,updateTexts:g,addDays:N,subtractDays:A,addHours:c,subtractHours:d,addMinutes:t,subtractMinutes:m,snapToInterval:y,getWeek:E,isToday:V,isSameDate:L,isInRange:l,isLeapYear:r,getPreviousFirstDayOfWeek:b,stringToDate:a,dateToMinutes:B,countDays:Y,datesInSameTimeStep:X,isValid:G,formatDate:x,formatDateLite:J,formatTime:K,formatTimeLite:se,formatMinutes:I}},Pe=v=>{const{dateUtils:s,config:o}=v;let p=0;const w=e.computed(()=>{const c={byDate:{},recurring:[],multiday:[],byId:{}};return o.events.sort((t,m)=>t.start-m.start<0?-1:1).forEach(t=>{T(t),t._||(t._={}),t._.id=t._.id||++p,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 y;return N(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:(y=o.schedules)!=null&&y.length?~~((m==null?void 0:m.schedule)||t.schedule):null})},t._.register=m=>{t._.$el=m,t._.fireCreated&&(v.emit("event-created",t),delete t._.fireCreated)},t._.unregister=()=>{t._.$el=null,t._.register=null,t.isOverlapping=null,t.getOverlappingEvents=null,t.delete=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}),T=c=>{if(typeof c.start=="string"&&(c.start=s.stringToDate(c.start)),typeof c.end=="string"&&(c.end=s.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=!s.isSameDate(c.start,new Date(c.end.getTime()-1)),c._.startFormatted=s.formatDate(c.start),c._.startMinutes=~~s.dateToMinutes(c.start),c._.endMinutes=~~s.dateToMinutes(c.end);const d=c.start.getHours(),t=c.start.getMinutes().toString().padStart(2,0),m=c.end.getHours(),y=c.end.getMinutes().toString().padStart(2,0);c._.startTimeFormatted24=`${d.toString().padStart(2,0)}:${t}`,c._.startTimeFormatted12=`${d%12||12}${t?`:${t}`:""} ${d<12?"AM":"PM"}`,c._.endTimeFormatted24=`${m.toString().padStart(2,0)}:${y}`,c._.endTimeFormatted12=`${m%12||12}${y?`:${y}`:""} ${m<12?"AM":"PM"}`,c._.duration=Math.abs(~~((c.end-c.start)/6e4))},P=c=>w.value.byId[c],f=(c,d=!1,t=!1)=>{let m=w.value.byDate[c]||[];return m=d||t?m.map(P):m,t||(m=m.filter(y=>!y.background),d||(m=m.map(y=>y._.id))),m},C=c=>{const d={};return c.forEach(({startFormatted:t})=>{d[t]=[];const m=f(t,!1,!0);m.length&&d[t].push(...m)}),d},i=c=>{if(!c.start||!c.end){console.error("Vue Cal: Cannot create an event without valid start and end dates.");return}return o.snapToInterval&&(s.snapToInterval(c.start,o.snapToInterval),s.snapToInterval(c.end,o.snapToInterval)),c={...c},c._||(c._={}),c._.id=++p,c._.fireCreated=!0,o.events.push(c),c},g=(c,d=0)=>{var y;if(!o.editableEvents.delete)return console.info("Vue Cal: Event deletion is disabled. Enable it with the `editable-events` props.");if(!c)return console.warn("Vue Cal: Cannot delete event without its ID.");const t=o.events.findIndex(E=>E._.id===c);if(t===-1)return console.warn(`Vue Cal: Cannot delete unknown event \`${c}\`.`);const m=o.events[t];if(m.deletable===!1)return console.warn(`Vue Cal: Can't delete event \`${c}\` since it was explicitely set to \`delete: false\`.`);switch(d){case 0:m._.deleting?o.events.splice(t,1):m._.deleting=!0;break;case 1:m._.deleting=!0;break;case 2:m._.deleted=!0,o.events[t]._.deleted=!0,(y=m._.$el)==null||y.dispatchEvent(new CustomEvent("event-deleted",{detail:m._.id}));break;case 3:o.events.splice(t,1),v.emit("update:events",o.events),v.emit("event-delete",m);break}return!0},M=c=>{const d=f(c,!0);if(!d.length)return{cellOverlaps:{},longestStreak:0};let t={},m=[],y=0;d.sort((E,V)=>E.start-V.start||E.end-E.start-(V.end-V.start));for(const E of d){const V=E._.id;t[V]||(t[V]={overlaps:new Set,maxConcurrent:1,position:0}),m=m.filter(a=>a.end>E.start);let L=m.filter(a=>{var Y;return(!((Y=o.schedules)!=null&&Y.length)||E.schedule===a.schedule)&&a.start<E.end}),l=new Set(L.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(E);let b=Math.max(1,...L.map(a=>{var B;return((B=t[a._.id])==null?void 0:B.maxConcurrent)??1}));t[V].maxConcurrent=Math.max(L.length+1,b);for(const a of L)t[a._.id].overlaps.add(V),t[V].overlaps.add(a._.id),t[a._.id].maxConcurrent=t[V].maxConcurrent;y=Math.max(y,t[V].maxConcurrent)}for(const E in t)t[E].overlaps=[...t[E].overlaps];return{cellOverlaps:t,longestStreak:y}},N=(c=[],{start:d,end:t},{excludeIds:m=[],schedule:y=null})=>{var L;const E=new Set(m),V=[];for(const l of c)!E.has((L=l._)==null?void 0:L.id)&&(y===null||y===l.schedule)&&A(l,d,t)&&V.push(l);return V},A=(c,d,t)=>{const m=c.allDay||!o.time,y=m?new Date(c.start).setHours(0,0,0,0):c.start.getTime(),E=m?new Date(c.end).setHours(23,59,59,999):c.end.getTime(),V=m?new Date(d).setHours(0,0,0,0):d.getTime(),L=m?new Date(t).setHours(23,59,59,999):t.getTime();return E>V&&y<L};return{events:w,getEvent:P,getEventsByDate:f,getViewEvents:C,getCellOverlappingEvents:M,getEventsInRange:N,createEvent:i,deleteEvent:g,isEventInRange:A}},Oe=({config:v,dateUtils:s,emit:o,texts:p,eventsManager:w},T)=>{const{availableViews:P}=v,f=e.ref(v.view&&P[v.view]?v.view:v.defaultView),C=e.ref(v.selectedDate||null);let i=e.ref(new Date);const g=e.ref(new Date(v.viewDate||i.value));g.value.setHours(0,0,0,0);const M=e.ref(new Date(g));let N=null;const A=e.computed(()=>f.value==="month"?M.value:r.value),c=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,v.startWeekOnSunday):f.value==="month"?r.value:A.value),t=e.computed(()=>{if(f.value==="week"){const h=s.addDays(d.value,7);return h.setMilliseconds(-1),h}else if(f.value==="month")return a.value;return c.value}),m=e.computed(()=>{const h=i.value.getTime();if(f.value==="week")return d.value.getTime()<=h&&h<=t.value.getTime();const O=r.value.getTime(),W=a.value.getTime();return O<=h&&h<=W});function y(){i.value=new Date,N=setTimeout(y,60*1e3)}function E(){N=setTimeout(y,(60-new Date().getSeconds())*1e3),y()}const V=e.computed(()=>{if(!v.availableViews[f.value])return 1;let h=v.availableViews[f.value].cols;return v.hasHiddenDays&&["week","month"].includes(f.value)&&(h-=v.hasHiddenDays),h}),L=e.computed(()=>{var h;return((h=v.availableViews[f.value])==null?void 0:h.rows)||1}),l=e.computed(()=>V.value*L.value),r=e.computed(()=>{if(f.value==="month"){let h=M.value.getDay()||7;return v.startWeekOnSunday&&!v.hideWeekdays[7]&&(h+=1),v.viewDayOffset&&(h-=v.viewDayOffset),s.subtractDays(M.value,h-1)}else if(f.value==="week"){const h="1234567".split("").filter(W=>!Object.keys(v.hideWeekdays).includes(W));let O=Math.min(...h);return v.startWeekOnSunday&&!v.hideWeekdays[7]&&(O=1),v.viewDayOffset&&(O+=v.viewDayOffset),s.addDays(M.value,O-1)}else return M.value}),b=e.computed(()=>{const h=[],O=["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),ve=ne.getDay()||7;if(O&&v.hasHiddenDays&&v.hideWeekdays[ve]){W++;continue}const ge=new Date(ne);ge.setHours(23,59,59,999),h.push({start:ne,startFormatted:s.formatDate(ne),end:ge});break}case"year":h.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":h.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 h}),a=e.computed(()=>b.value[b.value.length-1].end),B=e.ref("right"),Y=e.computed(()=>{const h=Object.keys(v.availableViews);return h[h.indexOf(f.value)+1]}),X=e.computed(()=>{const h=Object.keys(v.availableViews);return h[h.indexOf(f.value)-1]});function G(h,O,W=!1){if(!O||!O[h])return h+1;const R=O[h];return W&&typeof R=="string"?R.substring(0,3):R}function x(h,O,W){const{monthsArray:R,monthBeforeDay:ne,canTruncate:ve,xs:ge}=W,ce=h.getMonth(),de=h.getFullYear(),ue=O.getMonth(),pe=O.getFullYear(),_e=ce!==ue,Jt=de!==pe,ie=ve&&(ge||_e),ye=h.getDate(),De=O.getDate();return Jt?ne?`${G(ce,R,ie)} ${ye}, ${de} - ${G(ue,R,ie)} ${De}, ${pe}`:`${ye} ${G(ce,R,ie)} ${de} - ${De} ${G(ue,R,ie)} ${pe}`:_e?ne?`${G(ce,R,ie)} ${ye} - ${G(ue,R,ie)} ${De}, ${de}`:`${ye} ${G(ce,R,ie)} - ${De} ${G(ue,R,ie)} ${de}`:ne?`${G(ce,R,ie)} ${ye}-${De}, ${de}`:`${ye}-${De} ${G(ce,R,ie)} ${de}`}const J=e.computed(()=>{const{dateFormat:h,months:O,monthsGenitive:W,week:R,truncations:ne}=p,ve=v.locale,ge=ne!==!1,ce=h.indexOf("M")<h.indexOf("D"),de=W&&ve==="el"?W:O;switch(f.value){case"day":return s.formatDate(r.value,h);case"days":case"week":{const ue={monthsArray:de,monthBeforeDay:ce,canTruncate:ge,xs:v.xs};let pe=x(r.value,a.value,ue);if(f.value==="week"){const _e=s.getWeek(r.value,v.startWeekOnSunday&&!v.hideWeekdays[7]);pe+=` <small>${R} ${_e}</small>`}return pe}case"month":{const ue=`${v.xs&&ge?"MMM":"MMMM"} YYYY`;return s.formatDate(A.value,ue)}case"year":return r.value.getFullYear();case"years":return`${r.value.getFullYear()} - ${c.value.getFullYear()}`}});function K(){switch(M.value=new Date(g.value||i.value),M.value.setHours(0,0,0,0),f.value){case"day":break;case"days":break;case"week":M.value=s.getPreviousFirstDayOfWeek(M.value,v.startWeekOnSunday&&!v.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}v.ready&&o("view-change",{id:f.value,title:J.value,start:A.value,end:c.value,extendedStart:d.value,extendedEnd:t.value,cellDates:b.value,containsToday:m.value,events:U.value}),i.value=new Date}function se(h){const O=f.value,W=v.availableViews[O];h[O]&&JSON.stringify(h[O])===JSON.stringify(W)||K()}function I(h,O=!0){const W=Object.keys(v.availableViews);f.value!==h&&(W.includes(h)?(B.value=W.indexOf(h)<W.indexOf(f.value)?"left":"right",f.value=h,o("update:view",h),K()):console.warn(`Vue Cal: the \`${h}\` 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(){_(!1)}function n(){_(!0)}function _(h=!0){let O=new Date(g.value);switch(f.value){case"day":case"days":h?O=s.addDays(a.value,1):O=s.subtractDays(r.value,l.value);break;case"week":{h?(O=s.addDays(t.value,1),O.setHours(0,0,0,0)):O=s.subtractDays(d.value,l.value);break}case"month":{const W=h?1:-1;O=new Date(O.getFullYear(),O.getMonth()+W,1,0,0,0,0);break}case"year":{const W=h?1:-1;O=new Date(O.getFullYear()+W,1,1,0,0,0,0);break}case"years":{const W=h?l.value:-l.value;O=new Date(O.getFullYear()+W,1,1,0,0,0,0);break}}j(O)}function D(){const h=new Date;h.setHours(0,0,0,0),j(h)}function j(h,O=!0,W=!1){if(!s.isValid(h))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,c.value]),(!s.isInRange(h,R,ne)||W)&&(h.setHours(0,0,0,0),B.value=h.getTime()<R.getTime()?"left":"right",g.value=h,O&&o("update:viewDate",h),K())}function q(h,O=!0){if(s.isValid(h)){const{isValid:W,isSameDate:R}=s;(!C.value||!W(C.value)||!R(h,C.value))&&(h.setHours(0,0,0,0),C.value=h,O&&o("update:selectedDate",h))}else return console.warn("Vue Cal: can't update the selected date: invalid date provided to `updateSelectedDate(date)`.")}function u(h){!h&&!M.value.getDay()?j(s.addDays(M.value,1),!0,!0):(B.value="left",K())}function k(h){h&&v.startWeekOnSunday&&!M.value.getDay()?j(s.addDays(M.value,1),!0,!0):!h&&v.startWeekOnSunday&&M.value.getDay()===1&&j(s.subtractDays(M.value,1),!0,!0)}function S(){console.log("toggling weekdays",v.hideWeekdays)}function $(h){var R;const O=(R=T.value)==null?void 0:R.querySelector(".vuecal__scrollable"),W=h?h*v.timeCellHeight/v.timeStep:0;O==null||O.scrollTo({top:W,behavior:"smooth"})}function z(){const h=new Date;$(h.getHours()*60+h.getMinutes())}function F(){$(0)}const U=e.computed(()=>w.getViewEvents(b.value)),ae=w.createEvent,le=w.deleteEvent;return e.watch(()=>v.view,h=>I(h,!1)),e.watch(()=>v.availableViews,se),e.watch(()=>v.datePicker,()=>I("month",!1)),e.watch(()=>v.viewDate,h=>j(h,!1)),e.watch(()=>v.selectedDate,h=>q(h,!1)),e.watch(()=>v.startWeekOnSunday,h=>u(h)),e.watch(()=>v.hideWeekends,h=>k(h)),e.watch(()=>v.hideWeekdays,S),e.watch(()=>l.value,()=>{l.value>90&&console.warn("Vue Cal: high cell count detected. Performance may degrade when interactions are enabled.")}),e.watch(()=>v.watchRealTime,h=>{h&&v.time?E():N=clearTimeout(N)}),K(),v.time&&v.watchRealTime&&E(),e.onBeforeUnmount(()=>N=clearTimeout(N)),{now:i,id:f,broaderView:Y,narrowerView:X,title:J,viewDate:g,start:A,end:c,extendedStart:d,extendedEnd:t,firstCellDate:r,lastCellDate:a,containsToday:m,selectedDate:C,cellDates:b,cols:V,rows:L,events:U,transitionDirection:B,switch:I,broader:ee,narrower:Z,previous:Q,next:n,navigate:_,goToToday:D,updateViewDate:j,updateSelectedDate:q,scrollToCurrentTime:z,scrollToTime:$,scrollTop:F,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:Ee(te.texts,Me)}),ze=({props:v,emit:s,attrs:o,vuecalEl:p,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=Ee(Object.assign(te.texts,T.texts),Me),T.config=Ve(T,v,o),T.eventsManager=Pe(T),T.view=Oe(T,p),T.dnd=Ye(T),T},Ne=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:Ne},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}},Le={class:"vuecal__header"},Fe={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(v){const s=e.inject("vuecal"),{view:o,config:p}=s,w=()=>{p.clickToNavigate&&o.broader()},T=e.computed(()=>p.clickToNavigate?{click:w}:{});return(P,f)=>(e.openBlock(),e.createElementBlock("div",Le,[e.renderSlot(P.$slots,"header",{view:e.unref(o),availableViews:e.unref(p).availableViews,vuecal:e.unref(s)}),P.$slots.header?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.unref(p).viewsBar?(e.openBlock(),e.createElementBlock("div",Fe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p).availableViews,(C,i)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass(["vuecal__view-button",{"vuecal__view-button--active":e.unref(o).id===i}]),onClick:g=>e.unref(o).switch(i),innerHTML:e.unref(s).texts[i],type:"button"},null,10,He))),256))])):e.createCommentVNode("",!0),e.unref(p).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(p).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(p).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(p).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(v){const s=e.inject("vuecal"),{view:o,config:p,dateUtils:w}=s,T=e.computed(()=>p.xs?"day-xs":p.sm||o.isDays||o.isMonth?"day-sm":"day"),P=e.computed(()=>(o.isDay||o.isDays||o.isWeek||o.isMonth)&&!(o.isDay&&!p.schedules)),f=e.computed(()=>o.cellDates.slice(0,o.cols).map(({start:i})=>({id:we[i.getDay()],date:i,dateNumber:i.getDate(),day:w.formatDate(i,"dddd"),"day-sm":w.formatDate(i,"ddd"),"day-xs":w.formatDate(i,"dd"),isToday:w.isToday(i)}))),C={click:i=>{(o.isDays||o.isWeek)&&o.updateSelectedDate(i)}};return(i,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,N)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vuecal__weekday",{"vuecal__weekday--today":M.isToday}]),key:N,onClick:A=>C.click(M.date)},[e.renderSlot(i.$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(p).schedules?(e.openBlock(),e.createElementBlock("div",Je,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,(M,N)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:N},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(p).schedules,(A,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",A.class])},[e.renderSlot(i.$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(v){const s=e.inject("vuecal"),{config:o,texts:p}=s,w=e.computed(()=>{const T=[];for(let f=o.timeFrom;f<o.timeTo;f+=o.timeStep){const C=~~(f/60),i=f%60,g=p[f<720?"am":"pm"];T.push({minutesSum:f,hours:C,minutes:i,formatted12:`${C%12?C%12:12}${i?":"+i.toString().padStart(2,0):""}${g}`,formatted24:`${C.toString().padStart(2,0)}:${i.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"],Se={__name:"event",props:{event:{type:Object,required:!0}},emits:["event-drag-start","event-drag-end","event-resize-start","event-resize-end"],setup(v,{emit:s}){const{config:o,view:p,dnd:w,touch:T,dateUtils:P}=e.inject("vuecal"),f=v,C=e.ref(null),i=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&&i.draggable!==!1&&!i.background),N=e.computed(()=>o.time&&o.editableEvents.resize&&i.resizable!==!1&&!i.background);e.computed(()=>o.editableEvents.delete&&i.deletable!==!1&&!i.background);const A=e.computed(()=>{var l,r,b;return{[`vuecal__event--${i._.id}`]:!0,[i.class]:!!i.class,"vuecal__event--recurring":!!i.recurring,"vuecal__event--background":!!i.background,"vuecal__event--multiday":!!((l=i._)!=null&&l.multiday),"vuecal__event--cut-top":((r=i._)==null?void 0:r.startMinutes)<o.timeFrom,"vuecal__event--cut-bottom":((b=i._)==null?void 0:b.endMinutes)>o.timeTo||i.end.getDate()!==i.start.getDate(),"vuecal__event--dragging":!i._.draggingGhost&&i._.dragging,"vuecal__event--dragging-ghost":i._.draggingGhost,"vuecal__event--resizing":g.resizing}}),c=e.computed(()=>{const l=(p.isDay||p.isDays||p.isWeek)&&o.time;if(!l&&!i.backgroundColor&&!i.color)return!1;const r={backgroundColor:i.backgroundColor||null,color:i.color||null};if(l){const b=Math.max(o.timeFrom,i._.startMinutes),a=Math.min(o.timeTo,i._.endMinutes),B=me(b,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:i}:Y)})});const r={...l};l.touchstart=a=>{var B;a.stopPropagation(),t(a),(B=r.touchstart)==null||B.call(r,{e:a,event:i})},l.mousedown=a=>{var B;a.stopPropagation(),t(a),(B=r.mousedown)==null||B.call(r,{e:a,event:i})};let b=null;return l.click=a=>{var B;(B=r.click)==null||B.call(r,{e:a,event:i}),b?b=clearTimeout(b):b=setTimeout(()=>{var Y;b=null,(Y=r["delayed-click"])==null||Y.call(r,{e:a,event:i})},400)},l.dblclick=a=>{r.dblclick?r.dblclick({e:a,event:i}):i.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 b=C.value.getBoundingClientRect();g.startX=(((B=l.touches)==null?void 0:B[0])||l).clientX-b.left,g.startY=(((Y=l.touches)==null?void 0:Y[0])||l).clientY-b.top,g.startPercentageX=g.startX*100/b.width,g.startPercentageY=g.startY*100/b.height,g.cellEl=C.value.closest(".vuecal__cell"),g.resizeStartDate=i.start,L(l.type==="touchstart"?"touchmove":"mousemove",m),L(l.type==="touchstart"?"touchend":"mouseup",y,{once:!0}),g.holdTimer=setTimeout(()=>{var X,G;g.holding=!0,(G=(X=d.value).hold)==null||G.call(X,{e:l,event:i})},1e3)},m=async l=>{var b,a,B,Y;const r=((b=l.touches)==null?void 0:b[0])||l;if(g.fromResizer&&!g.resizing&&(g.resizing=!0,g.resizingOriginalEvent={...i,_:{...i._}},T.isResizingEvent=!0,(B=(a=d.value).resizeStart)==null||B.call(a,{e:l,event:i})),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}=E(i);let x=!0;const{resize:J}=(Y=o.eventListeners)==null?void 0:Y.event;J&&(x=await J({e:l,event:{...i,start:X,end:G},overlaps:i.getOverlappingEvents({start:X,end:G})})),x!==!1?(i.start=X,i.end=G,g.resizingLastAcceptedEvent&&(g.resizingLastAcceptedEvent=null)):J&&(g.resizingLastAcceptedEvent={...i,_:{...i._}})}},y=async l=>{var r,b;if(g.holdTimer=clearTimeout(g.holdTimer),g.holding=!1,g.resizing){const{newStart:a,newEnd:B}=E(i);let Y=!0;const X=d.value["resize-end"];X&&(Y=await X({e:l,event:i,original:g.resizingOriginalEvent,overlaps:i.getOverlappingEvents({start:a,end:B})})),i.start=Y===!1?(g.resizingLastAcceptedEvent||g.resizingOriginalEvent).start:((r=g.resizingLastAcceptedEvent)==null?void 0:r.start)||a,i.end=Y===!1?(g.resizingLastAcceptedEvent||g.resizingOriginalEvent).end:((b=g.resizingLastAcceptedEvent)==null?void 0:b.end)||B,i._.duration<1&&(i.start=g.resizingOriginalEvent.start,i.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},E=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(()=>i._.register(C.value));const V=[],L=(l,r,b)=>{document.addEventListener(l,r,b),V.push({event:l,handler:r,options:b})};return e.onBeforeUnmount(()=>{i._.unregister(),V.forEach(({event:l,handler:r,options:b})=>{document.removeEventListener(l,r,b)})}),(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:c.value,draggable:M.value?"true":void 0,onDragstart:r[2]||(r[2]=b=>M.value&&e.unref(w).eventDragStart(b,i)),onDragend:r[3]||(r[3]=b=>M.value&&e.unref(w).eventDragEnd(b,i))}),[e.createElementVNode("div",at,[e.renderSlot(l.$slots,"event",{event:i},()=>[e.createElementVNode("div",nt,e.toDisplayString(i.title),1),e.unref(o).time?(e.openBlock(),e.createElementBlock("div",st,e.toDisplayString(i._[`startTimeFormatted${e.unref(o).twelveHour?12:24}`])+`
|
|
6
|
+
- `+e.toDisplayString(i._[`endTimeFormatted${e.unref(o).twelveHour?12:24}`]),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"vuecal__event-content",innerHTML:i.content},null,8,lt)])]),N.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(()=>[i._.deleting?(e.openBlock(),e.createElementBlock("div",{key:0,class:"vuecal__event-delete",onClick:r[1]||(r[1]=e.withModifiers(b=>i.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(v){const s=v,o=e.inject("vuecal"),{view:p,config:w,dateUtils:T,eventsManager:P,dnd:f,touch:C}=o,i=e.computed(()=>T.isToday(s.start)),g=e.ref(null),M=e.ref([]),N=e.ref(!1),A=u=>{M.value.push(u.detail),N.value=!0},c=()=>setTimeout(()=>N.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}),y=e.computed(()=>{let u=Math.min(d.startPercentageY,d.movePercentageY),k=Math.max(d.startPercentageY,d.movePercentageY),S=fe(u,w),$=fe(k,w);return w.snapToInterval&&(S=T.snapToInterval(S,w.snapToInterval),$=T.snapToInterval($,w.snapToInterval),u=me(S,w),k=me($,w)),{style:{top:u+"%",height:Math.abs(k-u)+"%"},startMinutes:S,endMinutes:$,start:T.formatMinutes(S),end:T.formatMinutes($),...d.schedule?{schedule:d.schedule}:{}}}),E=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=p.start.getFullYear(),S=p.start.getMonth(),$=s.start.getFullYear(),z=s.start.getMonth();return{[`vuecal__cell--${we[s.start.getDay()]}`]:p.isDay||p.isDays||p.isWeek||p.isMonth,[`vuecal__cell--${Ce[z]}`]:p.isYear,[`vuecal__cell--${$}`]:p.isYears,"vuecal__cell--today":i.value,"vuecal__cell--current-month":p.isYear&&$===u.getFullYear()&&z===u.getMonth(),"vuecal__cell--current-year":p.isYears&&$===u.getFullYear(),"vuecal__cell--out-of-range":p.isMonth&&($!==k||z!==S),"vuecal__cell--before-min":J.value&&G.value,"vuecal__cell--after-max":J.value&&x.value,"vuecal__cell--disabled":J.value,"vuecal__cell--selected":p.selectedDate&&p.selectedDate.getTime()>=s.start.getTime()&&p.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}}),L=e.computed(()=>T.formatDate(s.start)),l=e.computed(()=>{switch(p.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(L.value,!0,!0).filter(u=>!M.value.includes(u._.id))),b=e.computed(()=>r.value.filter(u=>!u.background)),a=e.computed(()=>{var u;return(u=w.schedules)==null?void 0:u.reduce((k,S)=>(k[S.id]=r.value.filter($=>$.schedule===S.id),k),{})}),B=e.computed(()=>{const u={};for(const k of r.value){const S=k._.id,{maxConcurrent:$=1,position:z=0}=m.value.cellOverlaps[S]||{};u[S]={width:`${100/$}%`,left:`${100/$*z}%`}}return u}),Y=e.computed(()=>p.isMonth&&w.eventCount&&!w.eventsOnMonthView&&b.value.length),X=e.computed(()=>{var S;if(!w.specialHours||p.isMonth||p.isYear||p.isYears)return;const u=we[s.start.getDay()];let k=(S=w.specialHours)==null?void 0:S[u];if(k)return Array.isArray(k)||(k=[k]),k.map($=>{let{from:z,to:F,class:U,label:ae}=$;if(isNaN(z)||isNaN(F)||w.timeFrom>=F||w.timeTo<=z)return;z=Math.max(w.timeFrom,z),F=Math.min(w.timeTo,F);const le=me(z,w),h=me(F,w)-le;return{style:{top:`${le}%`,height:`${h}%`},label:ae,class:U}}).filter($=>!!$)}),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=p.isYear||p.isYears;return u.length&&u.includes(T.formatDate(s.start))&&!k?!0:G.value||x.value}),K=e.reactive({show:e.computed(()=>{if(!(!p.isDay&&!p.isDays&&!p.isWeek)&&!(!i.value||!w.time)&&!(w.timeFrom>T.dateToMinutes(p.now))&&!(T.dateToMinutes(p.now)>w.timeTo))return!0}),nowInMinutes:e.computed(()=>T.dateToMinutes(p.now)),todaysTimePosition:e.computed(()=>me(K.nowInMinutes,w)),style:e.computed(()=>`top: ${K.todaysTimePosition}%`),currentTime:e.computed(()=>T.formatTime(p.now))}),se=e.computed(()=>{if(J.value)return{};const u={...w.eventListeners.cell};Object.entries(u).forEach(([$,z])=>{u[$]=F=>{var U,ae,le;(le=(ae=F.target||((U=F.e)==null?void 0:U.target)).closest)!=null&&le.call(ae,".vuecal__event")||z(F.type?{e:F,cell:I.value,cursor:ee.value}:F)}});const k={...u};let S=null;return u.click=$=>{var z;Z(),(z=k.click)==null||z.call(k,{e:$,cell:I.value,cursor:ee.value}),S?S=clearTimeout(S):S=setTimeout(()=>{var F;S=null,(F=k["delayed-click"])==null||F.call(k,{e:$,cell:I.value,cursor:ee.value})},400)},(w.time&&p.isDay||p.isDays||p.isWeek)&&(u.touchstart=$=>{var z;Q($.e||$),(z=k.touchstart)==null||z.call(k,{e:$,cell:I.value,cursor:ee.value})},u.mousedown=$=>{var z;Q($.e||$),(z=k.mousedown)==null||z.call(k,{e:$,cell:I.value,cursor:ee.value})}),k.dblclick&&(u.dblclick=$=>{var O,W;const z=(((O=$.touches)==null?void 0:O[0])||$).clientY,{top:F}=g.value.getBoundingClientRect(),U=be(z-F,g.value),ae=fe(U,w),le=new Date(s.start);le.setMinutes(ae);const h={y:U,date:le};(W=k.dblclick)==null||W.call(k,{e:$,cell:I.value,cursor:h})}),w.editableEvents.drag&&(u.dragenter=$=>f.cellDragEnter($,I.value),u.dragover=$=>{$.preventDefault(),f.cellDragOver($,I.value)},u.dragleave=$=>f.cellDragLeave($,I.value),u.drop=$=>f.cellDragDrop($,I.value)),u}),I=e.computed(()=>({start:s.start,end:s.end,events:r,...d.schedule?{schedule:d.schedule}:{},goNarrower:()=>p.narrower(),goBroader:()=>p.broader(),broader:p.broaderView,narrower:p.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=()=>{p.updateSelectedDate(s.start),w.clickToNavigate&&((p.isMonth||p.isDays||p.isWeek)&&w.availableViews.day?p.switch("day"):p.isYear&&w.availableViews.month?p.switch("month"):p.isYears&&w.availableViews.year&&p.switch("year")),p.updateViewDate(s.start)},Q=u=>{var S,$;d.schedule=~~u.target.dataset.schedule;const k=g.value.getBoundingClientRect();d.startX=(((S=u.touches)==null?void 0:S[0])||u).clientX-k.left,d.startY=((($=u.touches)==null?void 0:$[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",_,{once:!0}),d.holdTimer=setTimeout(()=>{var z,F;d.holding=!0,(F=(z=se.value).hold)==null||F.call(z,{e:u,cell:I.value,cursor:ee.value})},1e3)},n=u=>{var S,$,z,F,U,ae;d.dragging||(C.isDraggingCell=!0,($=(S=se.value).dragStart)==null||$.call(S,{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=(((z=u.touches)==null?void 0:z[0])||u).clientX-k.left,d.moveY=(((F=u.touches)==null?void 0:F[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})},_=async u=>{var k,S;document.removeEventListener(u.type==="touchend"?"touchmove":"mousemove",n,{passive:!1}),d.dragging&&((S=(k=se.value).dragEnd)==null||S.call(k,{e:u,cell:I.value,cursor:ee.value}),C.isDraggingCell=!1,w.editableEvents.create&&(t.value=!0,await D(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},D=async u=>{if(!E.value)return;let{start:k,end:S,startMinutes:$,endMinutes:z}=y.value;k=new Date(s.start),k.setMinutes($),S=new Date(s.start),S.setMinutes(z);let F={...y.value,start:k,end:S};const{create:U}=w.eventListeners.event;if(typeof U=="function"){const ae=F;F=await new Promise(le=>U({e:u,event:F,cell:I.value,resolve:le,cursor:ee.value})),F&&typeof F=="object"&&p.createEvent(F),F&&typeof F=="boolean"&&p.createEvent(ae)}else p.createEvent(F)},j=()=>{Object.keys(se.value).forEach(u=>{var k;(k=g.value)==null||k.removeEventListener(u,se.value[u])})},q=()=>{m.value=P.getCellOverlappingEvents(L.value)};return e.watch(()=>b.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)),j(),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,(S,$)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vuecal__special-hours",S.class]),style:e.normalizeStyle(S.style),innerHTML:S.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,S=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vuecal__schedule vuecal__schedule--cell",S.class]),key:S.id,style:e.normalizeStyle(S.style||null),"data-schedule":S.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||N.value?(e.openBlock(),e.createBlock(e.TransitionGroup,{key:4,class:"vuecal__cell-events",name:"vuecal-event-delete",onBeforeLeave:k[0]||(k[0]=$=>N.value=!0),onAfterLeave:c,tag:"div"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value[S.id],$=>(e.openBlock(),e.createBlock(Se,{key:$._.id,event:$,onEventDeleted:A,style:e.normalizeStyle(B.value[$._.id])},e.createSlots({_:2},[u.$slots.event?{name:"event",fn:e.withCtx(z=>[e.renderSlot(u.$slots,"event",e.mergeProps({ref_for:!0},z))]),key:"0"}:void 0]),1032,["event","style"]))),128))]),_:2},1024)):e.createCommentVNode("",!0),E.value&&d.schedule===S.id?(e.openBlock(),e.createElementBlock("div",{key:5,class:"vuecal__event-placeholder",style:e.normalizeStyle(y.value.style)},e.toDisplayString(y.value.start)+" - "+e.toDisplayString(y.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||N.value)&&!(e.unref(p).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]=S=>N.value=!0),onAfterLeave:c,tag:"div"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,S=>(e.openBlock(),e.createBlock(Se,{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($=>[e.renderSlot(u.$slots,"event",e.mergeProps({ref_for:!0},$))]),key:"0"}:void 0]),1032,["event","style"]))),128))]),_:3})):e.createCommentVNode("",!0),E.value?(e.openBlock(),e.createElementBlock("div",{key:5,class:"vuecal__event-placeholder",style:e.normalizeStyle(y.value.style)},e.toDisplayString(y.value.start)+" - "+e.toDisplayString(y.value.end),5)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),u.$slots["event-count"]?e.renderSlot(u.$slots,"event-count",{key:4,events:b.value}):Y.value?(e.openBlock(),e.createElementBlock("div",gt,e.toDisplayString(b.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(v){const s=e.inject("vuecal"),{view:o,config:p,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,p));return{style:{top:`${P.value}%`},time:M}}),i=M=>{var c;if(o.isMonth||o.isYear||o.isYears)return;const N=(((c=M.touches)==null?void 0:c[0])||M).clientY,{top:A}=T.value.getBoundingClientRect();P.value=be(N-A,T.value)},g=()=>{P.value=null};return e.onMounted(()=>{T.value.addEventListener("mousemove",i),T.value.addEventListener("touchmove",i),T.value.addEventListener("mouseleave",g),T.value.addEventListener("touchend",g)}),e.onBeforeUnmount(()=>{T.value&&(T.value.removeEventListener("mousemove",i),T.value.removeEventListener("touchmove",i),T.value.removeEventListener("mouseleave",g),T.value.removeEventListener("touchend",g))}),(M,N)=>(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(p).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,c)=>(e.openBlock(),e.createBlock(pt,{key:c,start:A.start,end:A.end,index:c},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))}},Dt=["data-locale"],vt={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(v,{expose:s,emit:o}){const p=v,w=o,T=e.useTemplateRef("vuecal-el"),P=ze({props:p,emit:w,attrs:e.useAttrs(),vuecalEl:T,uid:e.useId()}),{config:f,view:C,dateUtils:i,touch:g}=P,M=e.computed(()=>f.time&&(C.isDay||C.isDays||C.isWeek)),N=e.computed(()=>Array(C.rows).fill().map((t,m)=>i.getWeek(i.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}}),c=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(c.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(y=>[e.renderSlot(t.$slots,"header",e.normalizeProps(e.guardReactiveProps(y)))]),key:"0"}:void 0,!t.$slots.header&&t.$slots["previous-button"]?{name:"previous-button",fn:e.withCtx(y=>[e.renderSlot(t.$slots,"previous-button",e.normalizeProps(e.guardReactiveProps(y)))]),key:"1"}:void 0,!t.$slots.header&&t.$slots["next-button"]?{name:"next-button",fn:e.withCtx(y=>[e.renderSlot(t.$slots,"next-button",e.normalizeProps(e.guardReactiveProps(y)))]),key:"2"}:void 0,!t.$slots.header&&t.$slots["today-button"]?{name:"today-button",fn:e.withCtx(y=>[e.renderSlot(t.$slots,"today-button",e.normalizeProps(e.guardReactiveProps(y)))]),key:"3"}:void 0,!t.$slots.header&&t.$slots.title?{name:"title",fn:e.withCtx(y=>[e.renderSlot(t.$slots,"title",e.normalizeProps(e.guardReactiveProps(y)))]),key:"4"}:void 0,!t.$slots.header&&t.$slots["schedule-heading"]?{name:"schedule-heading",fn:e.withCtx(y=>[e.renderSlot(t.$slots,"schedule-heading",e.normalizeProps(e.guardReactiveProps(y)))]),key:"5"}:void 0]),1024),e.createElementVNode("div",vt,[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(y=>[e.renderSlot(t.$slots,"time-cell",e.normalizeProps(e.guardReactiveProps(y)))]),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(N.value,y=>(e.openBlock(),e.createElementBlock("div",kt,[e.renderSlot(t.$slots,"week-number",{},()=>[e.createElementVNode("small",null,e.toDisplayString(y),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(y=>[e.renderSlot(t.$slots,"weekday-heading",e.normalizeProps(e.guardReactiveProps(y)))]),key:"0"}:void 0,t.$slots["schedule-heading"]?{name:"schedule-heading",fn:e.withCtx(y=>[e.renderSlot(t.$slots,"schedule-heading",e.normalizeProps(e.guardReactiveProps(y)))]),key:"1"}:void 0]),1024),e.createVNode(yt,null,e.createSlots({_:2},[t.$slots.cell?{name:"cell",fn:e.withCtx(y=>[e.renderSlot(t.$slots,"cell",e.normalizeProps(e.guardReactiveProps(y)))]),key:"0"}:void 0,!t.$slots.cell&&t.$slots["cell-date"]?{name:"cell-date",fn:e.withCtx(y=>[e.renderSlot(t.$slots,"cell-date",e.normalizeProps(e.guardReactiveProps(y)))]),key:"1"}:void 0,!t.$slots.cell&&t.$slots["cell-content"]?{name:"cell-content",fn:e.withCtx(y=>[e.renderSlot(t.$slots,"cell-content",e.normalizeProps(e.guardReactiveProps(y)))]),key:"2"}:void 0,!t.$slots.cell&&t.$slots["cell-events"]?{name:"cell-events",fn:e.withCtx(y=>[e.renderSlot(t.$slots,"cell-events",e.normalizeProps(e.guardReactiveProps(y)))]),key:"3"}:void 0,!t.$slots.cell&&t.$slots.event?{name:"event",fn:e.withCtx(y=>[e.renderSlot(t.$slots,"event",e.normalizeProps(e.guardReactiveProps(y)))]),key:"4"}:void 0,!t.$slots.cell&&t.$slots["event-count"]?{name:"event-count",fn:e.withCtx(y=>[e.renderSlot(t.$slots,"event-count",e.normalizeProps(e.guardReactiveProps(y)))]),key:"5"}:void 0]),1024)])],2))]),_:3},8,["name"])])],64))],14,Dt))}},Tt=v=>{he.texts={...te.texts,...v},he.dateUtils.updateTexts(he.texts)},{addDatePrototypes:Mt,removeDatePrototypes:$t,updateTexts:Et,addDays:St,subtractDays:Ct,addHours:Bt,subtractHours:Vt,addMinutes:Yt,subtractMinutes:Pt,getWeek:Ot,isToday:zt,isSameDate:Nt,isInRange:jt,isLeapYear:Lt,getPreviousFirstDayOfWeek:Ft,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=St,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=Ft,H.getWeek=Ot,H.isInRange=jt,H.isLeapYear=Lt,H.isSameDate=Nt,H.isToday=zt,H.isValidDate=It,H.removeDatePrototypes=$t,H.stringToDate=Ht,H.subtractDays=Ct,H.subtractHours=Vt,H.subtractMinutes=Pt,H.updateTexts=Et,H.useLocale=Tt,Object.defineProperty(H,Symbol.toStringTag,{value:"Module"})});
|
package/package.json
CHANGED