UNPKG

vue-cal

Version:

A Vue JS full calendar, no dependency, no BS. :metal:

6 lines 80.7 kB
var __defProp=Object.defineProperty,__defNormalProp=(e,t,i)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,__publicField=(e,t,i)=>__defNormalProp(e,"symbol"!=typeof t?t+"":t,i) /** * vue-cal v4.10.2 * (c) 2025 Antoni Andre <antoniandre.web@gmail.com> * @license MIT */;define(["require","vue"],(function(e,t){"use strict";let i,s,n,a,l={},o={};class r{constructor(e){__publicField(this,"_vuecal",null),__publicField(this,"selectCell",((e=!1,t,i)=>{this._vuecal.$emit("cell-click",i?{date:t,split:i}:t),this._vuecal.clickToNavigate||e?this._vuecal.switchToNarrowerView():this._vuecal.dblclickToNavigate&&"ontouchstart"in window&&(this._vuecal.domEvents.dblTapACell.taps++,setTimeout((()=>this._vuecal.domEvents.dblTapACell.taps=0),this._vuecal.domEvents.dblTapACell.timeout),this._vuecal.domEvents.dblTapACell.taps>=2&&(this._vuecal.domEvents.dblTapACell.taps=0,this._vuecal.switchToNarrowerView(),this._vuecal.$emit("cell-dblclick",i?{date:t,split:i}:t)))})),__publicField(this,"keyPressEnterCell",((e,t)=>{this._vuecal.$emit("cell-keypress-enter",t?{date:e,split:t}:e),this._vuecal.switchToNarrowerView()})),__publicField(this,"getPosition",(e=>{const{left:t,top:i}=this._vuecal.cellsEl.getBoundingClientRect(),{clientX:s,clientY:n}="ontouchstart"in window&&e.touches?e.touches[0]:e;return{x:s-t,y:n-i}})),__publicField(this,"minutesAtCursor",(e=>{let t=0,i={x:0,y:0};const{timeStep:s,timeCellHeight:n,timeFrom:a}=this._vuecal.$props;return"number"==typeof e?t=e:"object"==typeof e&&(i=this.getPosition(e),t=Math.round(i.y*s/parseInt(n)+a)),{minutes:Math.max(Math.min(t,1440),0),cursorCoords:i}})),this._vuecal=e}}const d=1440;let c,u,h;class v{constructor(e,t){__publicField(this,"_vuecal",null),__publicField(this,"eventDefaults",{_eid:null,start:"",startTimeMinutes:0,end:"",endTimeMinutes:0,title:"",content:"",background:!1,allDay:!1,segments:null,repeat:null,daysCount:1,deletable:!0,deleting:!1,titleEditable:!0,resizable:!0,resizing:!1,draggable:!0,dragging:!1,draggingStatic:!1,focused:!1,class:""}),this._vuecal=e,c=t}createAnEvent(e,t,i){if("string"==typeof e&&(e=c.stringToDate(e)),!(e instanceof Date))return!1;const s=c.dateToMinutes(e),n=s+(t=1*t||120),a=c.addMinutes(new Date(e),t);i.end&&("string"==typeof i.end&&(i.end=c.stringToDate(i.end)),i.endTimeMinutes=c.dateToMinutes(i.end));const l={...this.eventDefaults,_eid:`${this._vuecal._.uid}_${this._vuecal.eventIdIncrement++}`,start:e,startTimeMinutes:s,end:a,endTimeMinutes:n,segments:null,...i};return"function"!=typeof this._vuecal.onEventCreate||this._vuecal.onEventCreate(l,(()=>this.deleteAnEvent(l)))?(l.startDateF!==l.endDateF&&(l.daysCount=c.countDays(l.start,l.end)),this._vuecal.mutableEvents.push(l),this._vuecal.addEventsToView([l]),this._vuecal.emitWithEvent("event-create",l),this._vuecal.$emit("event-change",{event:this._vuecal.cleanupEvent(l),originalEvent:null}),l):void 0}addEventSegment(e){e.segments||(e.segments={},e.segments[c.formatDateLite(e.start)]={start:e.start,startTimeMinutes:e.startTimeMinutes,endTimeMinutes:d,isFirstDay:!0,isLastDay:!1});const t=e.segments[c.formatDateLite(e.end)];t&&(t.isLastDay=!1,t.endTimeMinutes=d);const i=c.addDays(e.end,1),s=c.formatDateLite(i);return i.setHours(0,0,0,0),e.segments[s]={start:i,startTimeMinutes:0,endTimeMinutes:e.endTimeMinutes,isFirstDay:!1,isLastDay:!0},e.end=c.addMinutes(i,e.endTimeMinutes),e.daysCount=Object.keys(e.segments).length,s}removeEventSegment(e){let t=Object.keys(e.segments).length;if(t<=1)return c.formatDateLite(e.end);delete e.segments[c.formatDateLite(e.end)],t--;const i=c.subtractDays(e.end,1),s=c.formatDateLite(i),n=e.segments[s];return t?n&&(n.isLastDay=!0,n.endTimeMinutes=e.endTimeMinutes):e.segments=null,e.daysCount=t||1,e.end=i,s}createEventSegments(e,t,i){const s=t.getTime(),n=i.getTime();let a,l,o,r=e.start.getTime(),u=e.end.getTime(),h=!1;for(e.end.getHours()||e.end.getMinutes()||(u-=1e3),e.segments={},e.repeat?(a=s,l=Math.min(n,e.repeat.until?c.stringToDate(e.repeat.until).getTime():n)):(a=Math.max(s,r),l=Math.min(n,u));a<=l;){let t=!1;const i=c.addDays(new Date(a),1).setHours(0,0,0,0);let s,n,v,m;if(e.repeat){const i=new Date(a),l=c.formatDateLite(i);(h||e.occurrences&&e.occurrences[l])&&(h||(r=e.occurrences[l].start,o=new Date(r).setHours(0,0,0,0),u=e.occurrences[l].end),h=!0,t=!0),s=a===o,n=l===c.formatDateLite(new Date(u)),v=new Date(s?r:a),m=c.formatDateLite(v),n&&(h=!1)}else t=!0,s=a===r,n=l===u&&i>l,v=s?e.start:new Date(a),m=c.formatDateLite(s?e.start:v);t&&(e.segments[m]={start:v,startTimeMinutes:s?e.startTimeMinutes:0,endTimeMinutes:n?e.endTimeMinutes:d,isFirstDay:s,isLastDay:n}),a=i}return e}deleteAnEvent(e){this._vuecal.emitWithEvent("event-delete",e),this._vuecal.mutableEvents=this._vuecal.mutableEvents.filter((t=>t._eid!==e._eid)),this._vuecal.view.events=this._vuecal.view.events.filter((t=>t._eid!==e._eid))}checkCellOverlappingEvents(e,t){h=e.slice(0),u={},e.forEach((e=>{h.shift(),u[e._eid]||(u[e._eid]={overlaps:[],start:e.start,position:0}),u[e._eid].position=0,h.forEach((i=>{u[i._eid]||(u[i._eid]={overlaps:[],start:i.start,position:0});const s=this.eventInRange(i,e.start,e.end),n=t.overlapsPerTimeStep?c.datesInSameTimeStep(e.start,i.start,t.timeStep):1;if(e.background||e.allDay||i.background||i.allDay||!s||!n){let t,s;(t=(u[e._eid]||{overlaps:[]}).overlaps.indexOf(i._eid))>-1&&u[e._eid].overlaps.splice(t,1),(s=(u[i._eid]||{overlaps:[]}).overlaps.indexOf(e._eid))>-1&&u[i._eid].overlaps.splice(s,1),u[i._eid].position--}else u[e._eid].overlaps.push(i._eid),u[e._eid].overlaps=[...new Set(u[e._eid].overlaps)],u[i._eid].overlaps.push(e._eid),u[i._eid].overlaps=[...new Set(u[i._eid].overlaps)],u[i._eid].position++}))}));let i=0;for(const s in u){const e=u[s],t=e.overlaps.map((e=>({id:e,start:u[e].start})));t.push({id:s,start:e.start}),t.sort(((e,t)=>e.start<t.start?-1:e.start>t.start?1:e.id>t.id?-1:1)),e.position=t.findIndex((e=>e.id===s)),i=Math.max(this.getOverlapsStreak(e,u),i)}return[u,i]}getOverlapsStreak(e,t={}){let i=e.overlaps.length+1,s=[];return e.overlaps.forEach((i=>{if(!s.includes(i)){e.overlaps.filter((e=>e!==i)).forEach((e=>{t[e].overlaps.includes(i)||s.push(e)}))}})),s=[...new Set(s)],i-=s.length,i}eventInRange(e,t,i){if(e.allDay||!this._vuecal.time){const s=new Date(e.start).setHours(0,0,0,0);return new Date(e.end).setHours(23,59,0,0)>=new Date(t).setHours(0,0,0,0)&&s<=new Date(i).setHours(0,0,0,0)}const s=e.start.getTime(),n=e.end.getTime();return s<i.getTime()&&n>t.getTime()}}const m={class:"vuecal__flex vuecal__weekdays-headings"},p=["onClick"],w={class:"vuecal__flex weekday-label",grow:""},y={class:"full"},g={class:"small"},D={class:"xsmall"},k={key:0},f={key:0,class:"vuecal__flex vuecal__split-days-headers",grow:""};const _=(e,t)=>{const i=e.__vccOpts||e;for(const[s,n]of t)i[s]=n;return i},b=_({inject:["vuecal","utils","view"],props:{transitionDirection:{type:String,default:"right"},weekDays:{type:Array,default:()=>[]},switchToNarrowerView:{type:Function,default:()=>{}}},methods:{selectCell(e,t){e.getTime()!==this.view.selectedDate.getTime()&&(this.view.selectedDate=e),this.utils.cell.selectCell(!1,e,t)},cleanupHeading:e=>({label:e.full,date:e.date,...e.today?{today:e.today}:{}})},computed:{headings(){if(!["month","week"].includes(this.view.id))return[];let e=!1;return this.weekDays.map(((t,i)=>{const s=this.utils.date.addDays(this.view.startDate,this.vuecal.startWeekOnSunday&&this.vuecal.hideWeekends?i-1:i);return{hide:t.hide,full:t.label,small:t.short||t.label.substr(0,3),xsmall:t.short||t.label.substr(0,1),..."week"===this.view.id?{dayOfMonth:s.getDate(),date:s,today:!e&&this.utils.date.isToday(s)&&!e++}:{}}}))},cellWidth(){return 100/(7-this.weekDays.reduce(((e,t)=>e+t.hide),0))},weekdayCellStyles(){return{...this.vuecal.hideWeekdays.length?{width:`${this.cellWidth}%`}:{}}},cellHeadingsClickable(){return"week"===this.view.id&&(this.vuecal.clickToNavigate||this.vuecal.dblclickToNavigate)}}},[["render",function(e,i,s,n,a,l){return t.openBlock(),t.createElementBlock("div",m,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(l.headings,((n,a)=>(t.openBlock(),t.createElementBlock(t.Fragment,{key:a},[n.hide?t.createCommentVNode("",!0):(t.openBlock(),t.createElementBlock("div",{key:0,class:t.normalizeClass(["vuecal__flex vuecal__heading",{today:n.today,clickable:l.cellHeadingsClickable}]),style:t.normalizeStyle(l.weekdayCellStyles),onClick:e=>"week"===l.view.id&&l.selectCell(n.date,e),onDblclick:i[0]||(i[0]=e=>"week"===l.view.id&&l.vuecal.dblclickToNavigate&&s.switchToNarrowerView())},[t.createVNode(t.Transition,{name:`slide-fade--${s.transitionDirection}`,appear:l.vuecal.transitions},{default:t.withCtx((()=>[(t.openBlock(),t.createElementBlock("div",{class:"vuecal__flex",column:"",key:!!l.vuecal.transitions&&`${a}-${n.dayOfMonth}`},[t.createElementVNode("div",w,[t.renderSlot(e.$slots,"weekday-heading",{heading:l.cleanupHeading(n),view:l.view},(()=>[t.createElementVNode("span",y,t.toDisplayString(n.full),1),t.createElementVNode("span",g,t.toDisplayString(n.small),1),t.createElementVNode("span",D,t.toDisplayString(n.xsmall),1),n.dayOfMonth?(t.openBlock(),t.createElementBlock("span",k," "+t.toDisplayString(n.dayOfMonth),1)):t.createCommentVNode("",!0)]))]),l.vuecal.hasSplits&&l.vuecal.stickySplitLabels?(t.openBlock(),t.createElementBlock("div",f,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(l.vuecal.daySplits,((i,s)=>(t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(["day-split-header",i.class||!1]),key:s},[t.renderSlot(e.$slots,"split-label",{split:i,view:l.view},(()=>[t.createTextVNode(t.toDisplayString(i.label),1)]))],2)))),128))])):t.createCommentVNode("",!0)]))])),_:2},1032,["name","appear"])],46,p))],64)))),128))])}]]),E={class:"vuecal__header"},C={key:0,class:"vuecal__flex vuecal__menu",role:"tablist","aria-label":"Calendar views navigation"},M=["onDragenter","onDragleave","onClick","aria-label"],T={key:1,class:"vuecal__title-bar"},S=["aria-label"],B={class:"vuecal__flex vuecal__title",grow:""},V=["aria-label"],x={key:0,class:"vuecal__flex vuecal__split-days-headers"};const O=_({inject:["vuecal","previous","next","switchView","updateSelectedDate","modules","view"],components:{WeekdaysHeadings:b},props:{options:{type:Object,default:()=>({})},editEvents:{type:Object,required:!0},hasSplits:{type:[Boolean,Number],default:!1},daySplits:{type:Array,default:()=>[]},viewProps:{type:Object,default:()=>({})},weekDays:{type:Array,default:()=>[]},switchToNarrowerView:{type:Function,default:()=>{}}},data:()=>({highlightedControl:null}),methods:{goToToday(){this.updateSelectedDate(new Date((new Date).setHours(0,0,0,0)))},switchToBroaderView(){this.transitionDirection="left",this.broaderView&&this.switchView(this.broaderView)}},computed:{transitionDirection:{get(){return this.vuecal.transitionDirection},set(e){this.vuecal.transitionDirection=e}},broaderView(){const{enabledViews:e}=this.vuecal;return e[e.indexOf(this.view.id)-1]},showDaySplits(){return"day"===this.view.id&&this.hasSplits&&this.options.stickySplitLabels&&!this.options.minSplitWidth},dnd(){return this.modules.dnd}}},[["render",function(e,i,s,n,a,l){const o=t.resolveComponent("weekdays-headings");return t.openBlock(),t.createElementBlock("div",E,[s.options.hideViewSelector?t.createCommentVNode("",!0):(t.openBlock(),t.createElementBlock("div",C,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(s.viewProps.views,((i,n)=>(t.openBlock(),t.createElementBlock(t.Fragment,{key:n},[i.enabled?(t.openBlock(),t.createElementBlock("button",{key:0,class:t.normalizeClass(["vuecal__view-btn",{"vuecal__view-btn--active":l.view.id===n,"vuecal__view-btn--highlighted":e.highlightedControl===n}]),type:"button",onDragenter:t=>s.editEvents.drag&&l.dnd&&l.dnd.viewSelectorDragEnter(t,n,e.$data),onDragleave:t=>s.editEvents.drag&&l.dnd&&l.dnd.viewSelectorDragLeave(t,n,e.$data),onClick:e=>l.switchView(n,null,!0),"aria-label":`${i.label} view`},t.toDisplayString(i.label),43,M)):t.createCommentVNode("",!0)],64)))),128))])),s.options.hideTitleBar?t.createCommentVNode("",!0):(t.openBlock(),t.createElementBlock("div",T,[t.createElementVNode("button",{class:t.normalizeClass(["vuecal__arrow vuecal__arrow--prev",{"vuecal__arrow--highlighted":"previous"===e.highlightedControl}]),type:"button",onClick:i[0]||(i[0]=(...e)=>l.previous&&l.previous(...e)),onDragenter:i[1]||(i[1]=t=>s.editEvents.drag&&l.dnd&&l.dnd.viewSelectorDragEnter(t,"previous",e.$data)),onDragleave:i[2]||(i[2]=t=>s.editEvents.drag&&l.dnd&&l.dnd.viewSelectorDragLeave(t,"previous",e.$data)),"aria-label":`Previous ${l.view.id}`},[t.renderSlot(e.$slots,"arrow-prev")],42,S),t.createElementVNode("div",B,[t.createVNode(t.Transition,{name:s.options.transitions?`slide-fade--${l.transitionDirection}`:""},{default:t.withCtx((()=>[(t.openBlock(),t.createBlock(t.resolveDynamicComponent(l.broaderView?"button":"span"),{type:!!l.broaderView&&"button",key:`${l.view.id}${l.view.startDate.toString()}`,onClick:i[3]||(i[3]=e=>!!l.broaderView&&l.switchToBroaderView()),"aria-label":!!l.broaderView&&`Go to ${l.broaderView} view`},{default:t.withCtx((()=>[t.renderSlot(e.$slots,"title")])),_:3},8,["type","aria-label"]))])),_:3},8,["name"])]),s.options.todayButton?(t.openBlock(),t.createElementBlock("button",{key:0,class:t.normalizeClass(["vuecal__today-btn",{"vuecal__today-btn--highlighted":"today"===e.highlightedControl}]),type:"button",onClick:i[4]||(i[4]=(...e)=>l.goToToday&&l.goToToday(...e)),onDragenter:i[5]||(i[5]=t=>s.editEvents.drag&&l.dnd&&l.dnd.viewSelectorDragEnter(t,"today",e.$data)),onDragleave:i[6]||(i[6]=t=>s.editEvents.drag&&l.dnd&&l.dnd.viewSelectorDragLeave(t,"today",e.$data)),"aria-label":"Today"},[t.renderSlot(e.$slots,"today-button")],34)):t.createCommentVNode("",!0),t.createElementVNode("button",{class:t.normalizeClass(["vuecal__arrow vuecal__arrow--next",{"vuecal__arrow--highlighted":"next"===e.highlightedControl}]),type:"button",onClick:i[7]||(i[7]=(...e)=>l.next&&l.next(...e)),onDragenter:i[8]||(i[8]=t=>s.editEvents.drag&&l.dnd&&l.dnd.viewSelectorDragEnter(t,"next",e.$data)),onDragleave:i[9]||(i[9]=t=>s.editEvents.drag&&l.dnd&&l.dnd.viewSelectorDragLeave(t,"next",e.$data)),"aria-label":`Next ${l.view.id}`},[t.renderSlot(e.$slots,"arrow-next")],42,V)])),s.viewProps.weekDaysInHeader?(t.openBlock(),t.createBlock(o,{key:2,"week-days":s.weekDays,"transition-direction":l.transitionDirection,"switch-to-narrower-view":s.switchToNarrowerView},t.createSlots({_:2},[e.$slots["weekday-heading"]?{name:"weekday-heading",fn:t.withCtx((({heading:i,view:s})=>[t.renderSlot(e.$slots,"weekday-heading",{heading:i,view:s})])),key:"0"}:void 0,e.$slots["split-label"]?{name:"split-label",fn:t.withCtx((({split:i})=>[t.renderSlot(e.$slots,"split-label",{split:i,view:l.view})])),key:"1"}:void 0]),1032,["week-days","transition-direction","switch-to-narrower-view"])):t.createCommentVNode("",!0),t.createVNode(t.Transition,{name:`slide-fade--${l.transitionDirection}`},{default:t.withCtx((()=>[l.showDaySplits?(t.openBlock(),t.createElementBlock("div",x,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(s.daySplits,((i,s)=>(t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(["day-split-header",i.class||!1]),key:s},[t.renderSlot(e.$slots,"split-label",{split:i,view:l.view.id},(()=>[t.createTextVNode(t.toDisplayString(i.label),1)]))],2)))),128))])):t.createCommentVNode("",!0)])),_:3},8,["name"])])}]]),$=["draggable"];const W={inject:["vuecal","utils","modules","view","domEvents","editEvents"],props:{cellFormattedDate:{type:String,default:""},event:{type:Object,default:()=>({})},cellEvents:{type:Array,default:()=>[]},overlaps:{type:Array,default:()=>[]},eventPosition:{type:Number,default:0},overlapsStreak:{type:Number,default:0},allDay:{type:Boolean,default:!1}},data:()=>({touch:{dragThreshold:30,startX:0,startY:0,dragged:!1}}),methods:{onMouseDown(e,t=!1){if("ontouchstart"in window&&!t)return!1;const{clickHoldAnEvent:i,focusAnEvent:s,resizeAnEvent:n,dragAnEvent:a}=this.domEvents;if(s._eid===this.event._eid&&i._eid===this.event._eid)return!0;this.focusEvent(),i._eid=null,this.vuecal.editEvents.delete&&this.event.deletable&&(i.timeoutId=setTimeout((()=>{n._eid||a._eid||(i._eid=this.event._eid,this.event.deleting=!0)}),i.timeout))},onMouseUp(e){this.domEvents.focusAnEvent._eid!==this.event._eid||this.touch.dragged||(this.domEvents.focusAnEvent.mousedUp=!0),this.touch.dragged=!1},onMouseEnter(e){e.preventDefault(),this.vuecal.emitWithEvent("event-mouse-enter",this.event)},onMouseLeave(e){e.preventDefault(),this.vuecal.emitWithEvent("event-mouse-leave",this.event)},onTouchMove(e){if("function"!=typeof this.vuecal.onEventClick)return;const{clientX:t,clientY:i}=e.touches[0],{startX:s,startY:n,dragThreshold:a}=this.touch;(Math.abs(t-s)>a||Math.abs(i-n)>a)&&(this.touch.dragged=!0)},onTouchStart(e){this.touch.startX=e.touches[0].clientX,this.touch.startY=e.touches[0].clientY,this.onMouseDown(e,!0)},onEnterKeypress(e){if("function"==typeof this.vuecal.onEventClick)return this.vuecal.onEventClick(this.event,e)},onDblClick(e){if("function"==typeof this.vuecal.onEventDblclick)return this.vuecal.onEventDblclick(this.event,e)},onDragStart(e){this.dnd&&this.dnd.eventDragStart(e,this.event)},onDragEnd(){this.dnd&&this.dnd.eventDragEnd(this.event)},onResizeHandleMouseDown(){this.focusEvent(),this.domEvents.dragAnEvent._eid=null,this.domEvents.resizeAnEvent=Object.assign(this.domEvents.resizeAnEvent,{_eid:this.event._eid,start:(this.segment||this.event).start,split:this.event.split||null,segment:!!this.segment&&this.utils.date.formatDateLite(this.segment.start),originalEnd:new Date((this.segment||this.event).end),originalEndTimeMinutes:this.event.endTimeMinutes}),this.event.resizing=!0},deleteEvent(e=!1){if("ontouchstart"in window&&!e)return!1;this.utils.event.deleteAnEvent(this.event)},touchDeleteEvent(e){this.deleteEvent(!0)},cancelDeleteEvent(){this.event.deleting=!1},focusEvent(){const{focusAnEvent:e}=this.domEvents,t=e._eid;if(t!==this.event._eid){if(t){const e=this.view.events.find((e=>e._eid===t));e&&(e.focused=!1)}this.vuecal.cancelDelete(),this.vuecal.emitWithEvent("event-focus",this.event),e._eid=this.event._eid,this.event.focused=!0}}},computed:{eventDimensions(){const{startTimeMinutes:e,endTimeMinutes:t}=this.segment||this.event;let i=e-this.vuecal.timeFrom;const s=Math.max(Math.round(i*this.vuecal.timeCellHeight/this.vuecal.timeStep),0);i=Math.min(t,this.vuecal.timeTo)-this.vuecal.timeFrom;const n=Math.round(i*this.vuecal.timeCellHeight/this.vuecal.timeStep);return{top:s,height:Math.max(n-s,5)}},eventStyles(){if(this.event.allDay||!this.vuecal.time||!this.event.endTimeMinutes||"month"===this.view.id||this.allDay)return{};let e=100/Math.min(this.overlaps.length+1,this.overlapsStreak),t=100/(this.overlaps.length+1)*this.eventPosition;this.vuecal.minEventWidth&&e<this.vuecal.minEventWidth&&(e=this.vuecal.minEventWidth,t=(100-this.vuecal.minEventWidth)/this.overlaps.length*this.eventPosition);const{top:i,height:s}=this.eventDimensions;return{top:`${i}px`,height:`${s}px`,width:`${e}%`,left:this.event.left&&`${this.event.left}px`||`${t}%`}},eventClasses(){const{isFirstDay:e,isLastDay:t}=this.segment||{};return{[this.event.class]:!!this.event.class,"vuecal__event--focus":this.event.focused,"vuecal__event--resizing":this.event.resizing,"vuecal__event--background":this.event.background,"vuecal__event--deletable":this.event.deleting,"vuecal__event--all-day":this.event.allDay,"vuecal__event--dragging":!this.event.draggingStatic&&this.event.dragging,"vuecal__event--static":this.event.dragging&&this.event.draggingStatic,"vuecal__event--multiple-days":!!this.segment,"event-start":this.segment&&e&&!t,"event-middle":this.segment&&!e&&!t,"event-end":this.segment&&t&&!e}},segment(){return this.event.segments&&this.event.segments[this.cellFormattedDate]||null},draggable(){const{draggable:e,background:t,daysCount:i}=this.event;return this.vuecal.editEvents.drag&&e&&!t&&1===i},resizable(){const{editEvents:e,time:t}=this.vuecal;return e.resize&&this.event.resizable&&t&&!this.allDay&&(!this.segment||this.segment&&this.segment.isLastDay)&&"month"!==this.view.id},dnd(){return this.modules.dnd}}},H=["data-split","aria-label","onTouchstart","onMousedown","onDragover","onDrop"],A={key:0,class:"cell-time-labels"},N=["innerHTML"],j={key:2,class:"vuecal__cell-events"},L=["title"];const F=_({inject:["vuecal","utils","modules","view","domEvents"],components:{Event:_(W,[["render",function(e,i,s,n,a,l){return t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(["vuecal__event",l.eventClasses]),style:t.normalizeStyle(l.eventStyles),tabindex:"0",onFocus:i[4]||(i[4]=(...e)=>l.focusEvent&&l.focusEvent(...e)),onKeypress:i[5]||(i[5]=t.withKeys(t.withModifiers(((...e)=>l.onEnterKeypress&&l.onEnterKeypress(...e)),["stop"]),["enter"])),onMouseenter:i[6]||(i[6]=(...e)=>l.onMouseEnter&&l.onMouseEnter(...e)),onMouseleave:i[7]||(i[7]=(...e)=>l.onMouseLeave&&l.onMouseLeave(...e)),onTouchstart:i[8]||(i[8]=t.withModifiers(((...e)=>l.onTouchStart&&l.onTouchStart(...e)),["stop"])),onMousedown:i[9]||(i[9]=e=>l.onMouseDown(e)),onMouseup:i[10]||(i[10]=(...e)=>l.onMouseUp&&l.onMouseUp(...e)),onTouchend:i[11]||(i[11]=(...e)=>l.onMouseUp&&l.onMouseUp(...e)),onTouchmove:i[12]||(i[12]=(...e)=>l.onTouchMove&&l.onTouchMove(...e)),onDblclick:i[13]||(i[13]=(...e)=>l.onDblClick&&l.onDblClick(...e)),draggable:l.draggable,onDragstart:i[14]||(i[14]=e=>l.draggable&&l.onDragStart(e)),onDragend:i[15]||(i[15]=e=>l.draggable&&l.onDragEnd())},[l.vuecal.editEvents.delete&&s.event.deletable?(t.openBlock(),t.createElementBlock("div",{key:0,class:"vuecal__event-delete",onClick:i[0]||(i[0]=t.withModifiers(((...e)=>l.deleteEvent&&l.deleteEvent(...e)),["stop"])),onTouchstart:i[1]||(i[1]=t.withModifiers(((...e)=>l.touchDeleteEvent&&l.touchDeleteEvent(...e)),["stop"]))},t.toDisplayString(l.vuecal.texts.deleteEvent),33)):t.createCommentVNode("",!0),t.renderSlot(e.$slots,"event",{event:s.event,view:l.view.id}),l.resizable?(t.openBlock(),t.createElementBlock("div",{key:1,class:"vuecal__event-resize-handle",contenteditable:"false",onMousedown:i[2]||(i[2]=t.withModifiers(((...e)=>l.onResizeHandleMouseDown&&l.onResizeHandleMouseDown(...e)),["stop","prevent"])),onTouchstart:i[3]||(i[3]=t.withModifiers(((...e)=>l.onResizeHandleMouseDown&&l.onResizeHandleMouseDown(...e)),["stop","prevent"]))},null,32)):t.createCommentVNode("",!0)],46,$)}]])},props:{options:{type:Object,default:()=>({})},editEvents:{type:Object,required:!0},data:{type:Object,required:!0},cellSplits:{type:Array,default:()=>[]},minTimestamp:{type:[Number,null],default:null},maxTimestamp:{type:[Number,null],default:null},cellWidth:{type:[Number,Boolean],default:!1},allDay:{type:Boolean,default:!1}},data:()=>({cellOverlaps:{},cellOverlapsStreak:1,timeAtCursor:null,highlighted:!1,highlightedSplit:null}),methods:{getSplitAtCursor({target:e}){let t=e.classList.contains("vuecal__cell-split")?e:this.vuecal.findAncestor(e,"vuecal__cell-split");return t&&(t=t.attributes["data-split"].value,parseInt(t).toString()===t.toString()&&(t=parseInt(t))),t||null},splitClasses(e){return{"vuecal__cell-split":!0,"vuecal__cell-split--highlighted":this.highlightedSplit===e.id,[e.class]:!!e.class}},checkCellOverlappingEvents(){this.options.time&&this.eventsCount&&!this.splitsCount&&(1===this.eventsCount?(this.cellOverlaps=[],this.cellOverlapsStreak=1):[this.cellOverlaps,this.cellOverlapsStreak]=this.utils.event.checkCellOverlappingEvents(this.events,this.options))},isDOMElementAnEvent(e){return this.vuecal.isDOMElementAnEvent(e)},selectCell(e,t=!1){const i=this.splitsCount?this.getSplitAtCursor(e):null;this.utils.cell.selectCell(t,this.timeAtCursor,i),this.timeAtCursor=null},onCellkeyPressEnter(e){this.isSelected||this.onCellFocus(e);const t=this.splitsCount?this.getSplitAtCursor(e):null;this.utils.cell.keyPressEnterCell(this.timeAtCursor,t),this.timeAtCursor=null},onCellFocus(e){if(!this.isSelected&&!this.isDisabled){this.isSelected=this.data.startDate;const t=this.splitsCount?this.getSplitAtCursor(e):null,i=this.timeAtCursor||this.data.startDate;this.vuecal.$emit("cell-focus",t?{date:i,split:t}:i)}},onCellMouseDown(e,t=null,i=!1){if("ontouchstart"in window&&!i)return!1;this.isSelected||this.onCellFocus(e);const{clickHoldACell:s,focusAnEvent:n}=this.domEvents;this.domEvents.cancelClickEventCreation=!1,s.eventCreated=!1,this.timeAtCursor=new Date(this.data.startDate);const{minutes:a,cursorCoords:{y:l}}=this.vuecal.minutesAtCursor(e);this.timeAtCursor.setMinutes(a);const o=this.isDOMElementAnEvent(e.target);!o&&n._eid&&((this.view.events.find((e=>e._eid===n._eid))||{}).focused=!1),this.editEvents.create&&!o&&this.setUpEventCreation(e,l)},setUpEventCreation(e,t){if(this.options.dragToCreateEvent&&["week","day"].includes(this.view.id)){const{dragCreateAnEvent:i}=this.domEvents;if(i.startCursorY=t,i.split=this.splitsCount?this.getSplitAtCursor(e):null,i.start=this.timeAtCursor,this.options.snapToTime){let e=60*this.timeAtCursor.getHours()+this.timeAtCursor.getMinutes();const t=e+this.options.snapToTime/2;e=t-t%this.options.snapToTime,i.start.setHours(0,e,0,0)}}else this.options.cellClickHold&&["month","week","day"].includes(this.view.id)&&this.setUpCellHoldTimer(e)},setUpCellHoldTimer(e){const{clickHoldACell:t}=this.domEvents;t.cellId=`${this.vuecal._.uid}_${this.data.formattedDate}`,t.split=this.splitsCount?this.getSplitAtCursor(e):null,t.timeoutId=setTimeout((()=>{if(t.cellId&&!this.domEvents.cancelClickEventCreation){const{_eid:e}=this.utils.event.createAnEvent(this.timeAtCursor,null,t.split?{split:t.split}:{});t.eventCreated=e}}),t.timeout)},onCellTouchStart(e,t=null){this.onCellMouseDown(e,t,!0)},onCellClick(e){this.isDOMElementAnEvent(e.target)||this.selectCell(e)},onCellDblClick(e){const t=new Date(this.data.startDate);t.setMinutes(this.vuecal.minutesAtCursor(e).minutes);const i=this.splitsCount?this.getSplitAtCursor(e):null;this.vuecal.$emit("cell-dblclick",i?{date:t,split:i}:t),this.options.dblclickToNavigate&&this.vuecal.switchToNarrowerView()},onCellContextMenu(e){e.stopPropagation(),e.preventDefault();const t=new Date(this.data.startDate),{cursorCoords:i,minutes:s}=this.vuecal.minutesAtCursor(e);t.setMinutes(s);const n=this.splitsCount?this.getSplitAtCursor(e):null;this.vuecal.$emit("cell-contextmenu",{date:t,...i,...n||{},e:e})}},computed:{dnd(){return this.modules.dnd},nowInMinutes(){return this.utils.date.dateToMinutes(this.vuecal.now)},isBeforeMinDate(){return null!==this.minTimestamp&&this.minTimestamp>this.data.endDate.getTime()},isAfterMaxDate(){return this.maxTimestamp&&this.maxTimestamp<this.data.startDate.getTime()},isDisabled(){const{disableDays:e}=this.options,{isYearsOrYearView:t}=this.vuecal;return!(!e.length||!e.includes(this.data.formattedDate)||t)||(this.isBeforeMinDate||this.isAfterMaxDate)},isSelected:{get(){let e=!1;const{selectedDate:t}=this.view;return e="years"===this.view.id?t.getFullYear()===this.data.startDate.getFullYear():"year"===this.view.id?t.getFullYear()===this.data.startDate.getFullYear()&&t.getMonth()===this.data.startDate.getMonth():t.getTime()===this.data.startDate.getTime(),e},set(e){this.view.selectedDate=e,this.vuecal.$emit("update:selected-date",this.view.selectedDate)}},isWeekOrDayView(){return["week","day"].includes(this.view.id)},transitionDirection(){return this.vuecal.transitionDirection},specialHours(){return this.data.specialHours.map((e=>{let{from:t,to:i}=e;return t=Math.max(t,this.options.timeFrom),i=Math.min(i,this.options.timeTo),{...e,height:(i-t)*this.timeScale,top:(t-this.options.timeFrom)*this.timeScale}}))},events(){const{startDate:e,endDate:t}=this.data;let i=[];if(!["years","year"].includes(this.view.id)||this.options.eventsCountOnYearView){if(i=this.view.events.slice(0),"month"===this.view.id&&i.push(...this.view.outOfScopeEvents),i=i.filter((i=>this.utils.event.eventInRange(i,e,t))),this.options.showAllDayEvents&&"month"!==this.view.id&&(i=i.filter((e=>!!e.allDay===this.allDay))),this.options.time&&this.isWeekOrDayView&&!this.allDay){const{timeFrom:e,timeTo:t}=this.options;i=i.filter((i=>{const s=i.daysCount>1&&i.segments[this.data.formattedDate]||{},n=1===i.daysCount&&i.startTimeMinutes<t&&i.endTimeMinutes>e,a=i.daysCount>1&&s.startTimeMinutes<t&&s.endTimeMinutes>e;return i.allDay||n||a||!1}))}!this.options.time||!this.isWeekOrDayView||this.options.showAllDayEvents&&this.allDay||i.sort(((e,t)=>e.start<t.start?-1:1)),this.cellSplits.length||this.$nextTick(this.checkCellOverlappingEvents)}return i},eventsCount(){return this.events.length},splits(){return this.cellSplits.map(((e,t)=>{const i=this.events.filter((t=>t.split===e.id)),[s,n]=this.utils.event.checkCellOverlappingEvents(i.filter((e=>!e.background&&!e.allDay)),this.options);return{...e,overlaps:s,overlapsStreak:n,events:i}}))},splitsCount(){return this.splits.length},cellClasses(){return{[this.data.class]:!!this.data.class,"vuecal__cell--current":this.data.current,"vuecal__cell--today":this.data.today,"vuecal__cell--out-of-scope":this.data.outOfScope,"vuecal__cell--before-min":this.isDisabled&&this.isBeforeMinDate,"vuecal__cell--after-max":this.isDisabled&&this.isAfterMaxDate,"vuecal__cell--disabled":this.isDisabled,"vuecal__cell--selected":this.isSelected,"vuecal__cell--highlighted":this.highlighted,"vuecal__cell--has-splits":this.splitsCount,"vuecal__cell--has-events":this.eventsCount}},cellStyles(){return{...this.cellWidth?{width:`${this.cellWidth}%`}:{}}},timelineVisible(){const{time:e,timeTo:t}=this.options;return this.data.today&&this.isWeekOrDayView&&e&&!this.allDay&&this.nowInMinutes<=t},todaysTimePosition(){if(!this.data.today||!this.options.time)return;const e=this.nowInMinutes-this.options.timeFrom;return Math.round(e*this.timeScale)},timeScale(){return this.options.timeCellHeight/this.options.timeStep}}},[["render",function(e,i,s,n,a,l){const o=t.resolveComponent("event");return t.openBlock(),t.createBlock(t.TransitionGroup,{class:t.normalizeClass(["vuecal__cell",l.cellClasses]),name:`slide-fade--${l.transitionDirection}`,tag:"div",appear:s.options.transitions,style:t.normalizeStyle(l.cellStyles)},{default:t.withCtx((()=>[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(l.splitsCount?l.splits:1,((n,a)=>(t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(["vuecal__flex vuecal__cell-content",l.splitsCount&&l.splitClasses(n)]),key:s.options.transitions?`${l.view.id}-${s.data.content}-${a}`:a,"data-split":!!l.splitsCount&&n.id,column:"",tabindex:"0","aria-label":s.data.content,onFocus:i[0]||(i[0]=e=>l.onCellFocus(e)),onKeypress:i[1]||(i[1]=t.withKeys((e=>l.onCellkeyPressEnter(e)),["enter"])),onTouchstart:e=>!l.isDisabled&&l.onCellTouchStart(e,l.splitsCount?n.id:null),onMousedown:e=>!l.isDisabled&&l.onCellMouseDown(e,l.splitsCount?n.id:null),onClick:i[2]||(i[2]=e=>!l.isDisabled&&l.onCellClick(e)),onDblclick:i[3]||(i[3]=e=>!l.isDisabled&&l.onCellDblClick(e)),onContextmenu:i[4]||(i[4]=e=>!l.isDisabled&&s.options.cellContextmenu&&l.onCellContextMenu(e)),onDragenter:i[5]||(i[5]=t=>!l.isDisabled&&s.editEvents.drag&&l.dnd&&l.dnd.cellDragEnter(t,e.$data,s.data.startDate)),onDragover:t=>!l.isDisabled&&s.editEvents.drag&&l.dnd&&l.dnd.cellDragOver(t,e.$data,s.data.startDate,l.splitsCount?n.id:null),onDragleave:i[6]||(i[6]=t=>!l.isDisabled&&s.editEvents.drag&&l.dnd&&l.dnd.cellDragLeave(t,e.$data,s.data.startDate)),onDrop:t=>!l.isDisabled&&s.editEvents.drag&&l.dnd&&l.dnd.cellDragDrop(t,e.$data,s.data.startDate,l.splitsCount?n.id:null)},[s.options.showTimeInCells&&s.options.time&&l.isWeekOrDayView&&!s.allDay?(t.openBlock(),t.createElementBlock("div",A,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(l.vuecal.timeCells,((e,i)=>(t.openBlock(),t.createElementBlock("span",{class:"cell-time-label",key:i},t.toDisplayString(e.label),1)))),128))])):t.createCommentVNode("",!0),l.isWeekOrDayView&&!s.allDay&&l.specialHours.length?(t.openBlock(!0),t.createElementBlock(t.Fragment,{key:1},t.renderList(l.specialHours,((e,i)=>(t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(["vuecal__special-hours",`vuecal__special-hours--day${e.day} ${e.class}`]),style:t.normalizeStyle(`height: ${e.height}px;top: ${e.top}px`)},[e.label?(t.openBlock(),t.createElementBlock("div",{key:0,class:"special-hours-label",innerHTML:e.label},null,8,N)):t.createCommentVNode("",!0)],6)))),256)):t.createCommentVNode("",!0),t.renderSlot(e.$slots,"cell-content",{events:l.events,selectCell:e=>l.selectCell(e,!0),split:!!l.splitsCount&&n}),l.eventsCount&&(l.isWeekOrDayView||"month"===l.view.id&&s.options.eventsOnMonthView)?(t.openBlock(),t.createElementBlock("div",j,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(l.splitsCount?n.events:l.events,((i,a)=>(t.openBlock(),t.createBlock(o,{key:a,"cell-formatted-date":s.data.formattedDate,event:i,"all-day":s.allDay,"cell-events":l.splitsCount?n.events:l.events,overlaps:((l.splitsCount?n.overlaps[i._eid]:e.cellOverlaps[i._eid])||[]).overlaps,"event-position":((l.splitsCount?n.overlaps[i._eid]:e.cellOverlaps[i._eid])||[]).position,"overlaps-streak":l.splitsCount?n.overlapsStreak:e.cellOverlapsStreak},{event:t.withCtx((({event:i,view:s})=>[t.renderSlot(e.$slots,"event",{view:s,event:i})])),_:2},1032,["cell-formatted-date","event","all-day","cell-events","overlaps","event-position","overlaps-streak"])))),128))])):t.createCommentVNode("",!0)],42,H)))),128)),l.timelineVisible?(t.openBlock(),t.createElementBlock("div",{class:"vuecal__now-line",style:t.normalizeStyle(`top: ${l.todaysTimePosition}px`),key:s.options.transitions?`${l.view.id}-now-line`:"now-line",title:l.utils.date.formatTime(l.vuecal.now)},null,12,L)):t.createCommentVNode("",!0)])),_:3},8,["class","name","appear","style"])}]]),Y={key:0,class:"vuecal__all-day-text",style:{width:"3em"}};const P=_({inject:["vuecal","view","editEvents"],components:{"vuecal-cell":F},props:{options:{type:Object,required:!0},cells:{type:Array,required:!0},label:{type:String,required:!0},daySplits:{type:Array,default:()=>[]},shortEvents:{type:Boolean,default:!0},height:{type:String,default:""},cellOrSplitMinWidth:{type:Number,default:null}},computed:{hasCellOrSplitWidth(){return!!(this.options.minCellWidth||this.daySplits.length&&this.options.minSplitWidth)}}},[["render",function(e,i,s,n,a,l){const o=t.resolveComponent("vuecal-cell");return t.openBlock(),t.createElementBlock("div",{class:"vuecal__flex vuecal__all-day",style:t.normalizeStyle(s.cellOrSplitMinWidth&&{height:s.height})},[s.cellOrSplitMinWidth?t.createCommentVNode("",!0):(t.openBlock(),t.createElementBlock("div",Y,[t.createElementVNode("span",null,t.toDisplayString(s.label),1)])),t.createElementVNode("div",{class:t.normalizeClass(["vuecal__flex vuecal__cells",`${l.view.id}-view`]),grow:"",style:t.normalizeStyle(s.cellOrSplitMinWidth?`min-width: ${s.cellOrSplitMinWidth}px`:"")},[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(s.cells,((i,n)=>(t.openBlock(),t.createBlock(o,{key:n,options:s.options,"edit-events":l.editEvents,data:i,"all-day":!0,"cell-width":s.options.hideWeekdays.length&&(l.vuecal.isWeekView||l.vuecal.isMonthView)&&l.vuecal.cellWidth,"min-timestamp":s.options.minTimestamp,"max-timestamp":s.options.maxTimestamp,"cell-splits":s.daySplits},{event:t.withCtx((({event:i,view:s})=>[t.renderSlot(e.$slots,"event",{view:s,event:i})])),_:2},1032,["options","edit-events","data","cell-width","min-timestamp","max-timestamp","cell-splits"])))),128))],6)],4)}]]),z=["lang"],I={class:"default"},U={key:0,class:"vuecal__flex vuecal__body",grow:""},R=["onBlur","innerHTML"],q=["innerHTML"],K=["innerHTML"],X={class:"vuecal__flex",row:"",grow:""},G={key:0,class:"vuecal__time-column"},Z={class:"vuecal__time-cell-label"},J={key:1,class:"vuecal__flex vuecal__week-numbers",column:""},Q=["wrap","column"],ee=["onBlur","innerHTML"],te=["innerHTML"],ie=["innerHTML"],se=["wrap"],ne=["innerHTML"],ae=["innerHTML"],le={key:2,class:"vuecal__cell-events-count"},oe={key:3,class:"vuecal__no-event"},re=["onBlur","innerHTML"],de=["innerHTML"],ce={key:2,class:"vuecal__event-time"},ue={key:0},he={key:1,class:"days-to-end"},ve=["innerHTML"],me={key:0,class:"vuecal__scrollbar-check"};const pe=1440,we={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"},ye=["years","year","month","week","day"],ge=new class{constructor(e,t=!1){__publicField(this,"texts",{}),__publicField(this,"dateToMinutes",(e=>60*e.getHours()+e.getMinutes())),a=this,this._texts=e,t||!Date||Date.prototype.addDays||this._initDatePrototypes()}_initDatePrototypes(){Date.prototype.addDays=function(e){return a.addDays(this,e)},Date.prototype.subtractDays=function(e){return a.subtractDays(this,e)},Date.prototype.addHours=function(e){return a.addHours(this,e)},Date.prototype.subtractHours=function(e){return a.subtractHours(this,e)},Date.prototype.addMinutes=function(e){return a.addMinutes(this,e)},Date.prototype.subtractMinutes=function(e){return a.subtractMinutes(this,e)},Date.prototype.getWeek=function(){return a.getWeek(this)},Date.prototype.isToday=function(){return a.isToday(this)},Date.prototype.isLeapYear=function(){return a.isLeapYear(this)},Date.prototype.format=function(e="YYYY-MM-DD"){return a.formatDate(this,e)},Date.prototype.formatTime=function(e="HH:mm"){return a.formatTime(this,e)}}removePrototypes(){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}updateTexts(e){this._texts=e}_todayFormatted(){return s!==(new Date).getDate()&&(i=new Date,s=i.getDate(),n=`${i.getFullYear()}-${i.getMonth()}-${i.getDate()}`),n}addDays(e,t){const i=new Date(e.valueOf());return i.setDate(i.getDate()+t),i}subtractDays(e,t){const i=new Date(e.valueOf());return i.setDate(i.getDate()-t),i}addHours(e,t){const i=new Date(e.valueOf());return i.setHours(i.getHours()+t),i}subtractHours(e,t){const i=new Date(e.valueOf());return i.setHours(i.getHours()-t),i}addMinutes(e,t){const i=new Date(e.valueOf());return i.setMinutes(i.getMinutes()+t),i}subtractMinutes(e,t){const i=new Date(e.valueOf());return i.setMinutes(i.getMinutes()-t),i}getWeek(e){const t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())),i=t.getUTCDay()||7;t.setUTCDate(t.getUTCDate()+4-i);const s=new Date(Date.UTC(t.getUTCFullYear(),0,1));return Math.ceil(((t-s)/864e5+1)/7)}isToday(e){return`${e.getFullYear()}-${e.getMonth()}-${e.getDate()}`===this._todayFormatted()}isLeapYear(e){const t=e.getFullYear();return!(t%400)||t%100&&!(t%4)}getPreviousFirstDayOfWeek(e=null,t){const i=e&&new Date(e.valueOf())||new Date,s=t?7:6;return i.setDate(i.getDate()-(i.getDay()+s)%7),i}stringToDate(e){return e instanceof Date?e:(10===e.length&&(e+=" 00:00"),new Date(e.replace(/-/g,"/")))}countDays(e,t){"string"==typeof e&&(e=e.replace(/-/g,"/")),"string"==typeof t&&(t=t.replace(/-/g,"/")),e=new Date(e).setHours(0,0,0,0),t=new Date(t).setHours(0,0,1,0);const i=60*(new Date(t).getTimezoneOffset()-new Date(e).getTimezoneOffset())*1e3;return Math.ceil((t-e-i)/864e5)}datesInSameTimeStep(e,t,i){return Math.abs(e.getTime()-t.getTime())<=60*i*1e3}formatDate(e,t="YYYY-MM-DD",i=null){if(i||(i=this._texts),t||(t="YYYY-MM-DD"),"YYYY-MM-DD"===t)return this.formatDateLite(e);l={},o={};const s={YYYY:()=>this._hydrateDateObject(e,i).YYYY,YY:()=>this._hydrateDateObject(e,i).YY(),M:()=>this._hydrateDateObject(e,i).M,MM:()=>this._hydrateDateObject(e,i).MM(),MMM:()=>this._hydrateDateObject(e,i).MMM(),MMMM:()=>this._hydrateDateObject(e,i).MMMM(),MMMMG:()=>this._hydrateDateObject(e,i).MMMMG(),D:()=>this._hydrateDateObject(e,i).D,DD:()=>this._hydrateDateObject(e,i).DD(),S:()=>this._hydrateDateObject(e,i).S(),d:()=>this._hydrateDateObject(e,i).d,dd:()=>this._hydrateDateObject(e,i).dd(),ddd:()=>this._hydrateDateObject(e,i).ddd(),dddd:()=>this._hydrateDateObject(e,i).dddd(),HH:()=>this._hydrateTimeObject(e,i).HH,H:()=>this._hydrateTimeObject(e,i).H,hh:()=>this._hydrateTimeObject(e,i).hh,h:()=>this._hydrateTimeObject(e,i).h,am:()=>this._hydrateTimeObject(e,i).am,AM:()=>this._hydrateTimeObject(e,i).AM,mm:()=>this._hydrateTimeObject(e,i).mm,m:()=>this._hydrateTimeObject(e,i).m};return t.replace(/(\{[a-zA-Z]+\}|[a-zA-Z]+)/g,((e,t)=>{const i=s[t.replace(/\{|\}/g,"")];return void 0!==i?i():t}))}formatDateLite(e){const t=e.getMonth()+1,i=e.getDate();return`${e.getFullYear()}-${t<10?"0":""}${t}-${i<10?"0":""}${i}`}formatTime(e,t="HH:mm",i=null,s=!1){let n=!1;if(s){const[t,i,s]=[e.getHours(),e.getMinutes(),e.getSeconds()];t+i+s===141&&(n=!0)}if(e instanceof Date&&"HH:mm"===t)return n?"24:00":this.formatTimeLite(e);o={},i||(i=this._texts);const a=this._hydrateTimeObject(e,i),l=t.replace(/(\{[a-zA-Z]+\}|[a-zA-Z]+)/g,((e,t)=>{const i=a[t.replace(/\{|\}/g,"")];return void 0!==i?i:t}));return n?l.replace("23:59","24:00"):l}formatTimeLite(e){const t=e.getHours(),i=e.getMinutes();return`${(t<10?"0":"")+t}:${(i<10?"0":"")+i}`}_nth(e){if(e>3&&e<21)return"th";switch(e%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}}_hydrateDateObject(e,t){if(l.D)return l;const i=e.getFullYear(),s=e.getMonth()+1,n=e.getDate(),a=(e.getDay()-1+7)%7;return l={YYYY:i,YY:()=>i.toString().substring(2),M:s,MM:()=>(s<10?"0":"")+s,MMM:()=>t.months[s-1].substring(0,3),MMMM:()=>t.months[s-1],MMMMG:()=>(t.monthsGenitive||t.months)[s-1],D:n,DD:()=>(n<10?"0":"")+n,S:()=>this._nth(n),d:a+1,dd:()=>t.weekDays[a][0],ddd:()=>t.weekDays[a].substr(0,3),dddd:()=>t.weekDays[a]},l}_hydrateTimeObject(e,t){if(o.am)return o;let i,s;e instanceof Date?(i=e.getHours(),s=e.getMinutes()):(i=Math.floor(e/60),s=Math.floor(e%60));const n=i%12?i%12:12,a=(t||{am:"am",pm:"pm"})[24===i||i<12?"am":"pm"];return o={H:i,h:n,HH:(i<10?"0":"")+i,hh:(n<10?"0":"")+n,am:a,AM:a.toUpperCase(),m:s,mm:(s<10?"0":"")+s},o}}(we);return _({name:"vue-cal",components:{"vuecal-cell":F,"vuecal-header":O,WeekdaysHeadings:b,AllDayBar:P},provide(){return{vuecal:this,utils:this.utils,modules:this.modules,previous:this.previous,next:this.next,switchView:this.switchView,updateSelectedDate:this.updateSelectedDate,editEvents:this.editEvents,view:this.view,domEvents:this.domEvents}},props:{activeView:{type:String,default:"week"},allDayBarHeight:{type:[String,Number],default:"25px"},cellClickHold:{type:Boolean,default:!0},cellContextmenu:{type:Boolean,default:!1},clickToNavigate:{type:Boolean,default:!1},dblclickToNavigate:{type:Boolean,default:!0},disableDatePrototypes:{type:Boolean,default:!1},disableDays:{type:Array,default:()=>[]},disableViews:{type:Array,default:()=>[]},dragToCreateEvent:{type:Boolean,default:!0},dragToCreateThreshold:{type:Number,default:15},editableEvents:{type:[Boolean,Object],default:!1},events:{type:Array,default:()=>[]},eventsCountOnYearView:{type:Boolean,default:!1},eventsOnMonthView:{type:[Boolean,String],default:!1},hideBody:{type:Boolean,default:!1},hideTitleBar:{type:Boolean,default:!1},hideViewSelector:{type:Boolean,default:!1},hideWeekdays:{type:Array,default:()=>[]},hideWeekends:{type:Boolean,default:!1},locale:{type:[String,Object],default:"en"},maxDate:{type:[String,Date],default:""},minCellWidth:{type:Number,default:0},minDate:{type:[String,Date],default:""},minEventWidth:{type:Number,default:0},minSplitWidth:{type:Number,default:0},onEventClick:{type:[Function,null],default:null},onEventCreate:{type:[Function,null],default:null},onEventDblclick:{type:[Function,null],default:null},overlapsPerTimeStep:{type:Boolean,default:!1},resizeX:{type:Boolean,default:!1},selectedDate:{type:[String,Date],default:""},showAllDayEvents:{type:[Boolean,String],default:!1},showTimeInCells:{type:Boolean,default:!1},showWeekNumbers:{type:[Boolean,String],default:!1},snapToTime:{type:Number,default:0},small:{type:Boolean,default:!1},specialHours:{type:Object,default:()=>({})},splitDays:{type:Array,default:()=>[]},startWeekOnSunday:{type:Boolean,default:!1},stickySplitLabels:{type:Boolean,default:!1},time:{type:Boolean,default:!0},timeCellHeight:{type:Number,default:40},timeFormat:{type:String,default:""},timeFrom:{type:Number,default:0},timeStep:{type:Number,default:60},timeTo:{type:Number,default:pe},todayButton:{type:Boolean,default:!1},transitions:{type:Boolean,default:!0},twelveHour:{type:Boolean,default:!1},watchRealTime:{type:Boolean,default:!1},xsmall:{type:Boolean,default:!1}},data(){return{ready:!1,texts:{...we},utils:{date:!!this.disableDatePrototypes&&ge.removePrototypes()||ge,cell:null,event:null},modules:{dnd:null},cellsEl:null,view:{id:"",title:"",startDate:null,endDate:null,firstCellDate:null,lastCellDate:null,selectedDate:null,events:[]},eventIdIncrement:1,now:new Date,timeTickerIds:[null,null],domEvents:{resizeAnEvent:{_eid:null,start:null,split:null,segment:null,originalEndTimeMinutes:0,originalEnd:null,end:null,startCell:null,endCell:null},dragAnEvent:{_eid:null},dragCreateAnEvent:{startCursorY:null,start:null,split:null,event:null},focusAnEvent:{_eid:null,mousedUp:!1},clickHoldAnEvent:{_eid:null,timeout:1200,timeoutId:null},dblTapACell:{taps:0,timeout:500},clickHoldACell:{cellId:null,split:null,timeout:1200,timeoutId:null,eventCreated:!1},cancelClickEventCreation:!1},mutableEvents:[],transitionDirection:"right"}},methods:{async loadLocale(t){if("object"==typeof this.locale)return this.texts=Object.assign({},we,t),void this.utils.date.updateTexts(this.texts);const i=await((e,t,i)=>{const s=e[t];return s?"function"==typeof s?s():Promise.resolve(s):new Promise(((e,s)=>{("function"==typeof queueMicrotask?queueMicrotask:setTimeout)(s.bind(null,new Error("Unknown variable dynamic import: "+t+(t.split("/").length!==i?". Note that variables only represent file names one level deep.":""))))}))})(Object.assign({"./i18n/ar.json":()=>new Promise(((t,i)=>e(["./i18n/ar.amd"],t,i))),"./i18n/bg.json":()=>new Promise(((t,i)=>e(["./i18n/bg.amd"],t,i))),"./i18n/bn.json":()=>new Promise(((t,i)=>e(["./i18n/bn.amd"],t,i))),"./i18n/bs.json":()=>new Promise(((t,i)=>e(["./i18n/bs.amd"],t,i))),"./i18n/ca.json":()=>new Promise(((t,i)=>e(["./i18n/ca.amd"],t,i))),"./i18n/cs.json":()=>new Promise(((t,i)=>e(["./i18n/cs.amd"],t,i))),"./i18n/da.json":()=>new Promise(((t,i)=>e(["./i18n/da.amd"],t,i))),"./i18n/de.json":()=>new Promise(((t,i)=>e(["./i18n/de.amd"],t,i))),"./i18n/el.json":()=>new Promise(((t,i)=>e(["./i18n/el.amd"],t,i))),"./i18n/en.json":()=>new Promise(((t,i)=>e(["./i18n/en.amd"],t,i))),"./i18n/es.json":()=>new Promise(((t,i)=>e(["./i18n/es.amd"],t,i))),"./i18n/et.json":()=>new Promise(((t,i)=>e(["./i18n/et.amd"],t,i))),"./i18n/fa.json":()=>new Promise(((t,i)=>e(["./i18n/fa.amd"],t,i))),"./i18n/fi.json":()=>new Promise(((t,i)=>e(["./i18n/fi.amd"],t,i))),"./i18n/fr.json":()=>new Promise(((t,i)=>e(["./i18n/fr.amd"],t,i))),"./i18n/he.json":()=>new Promise(((t,i)=>e(["./i18n/he.amd"],t,i))),"./i18n/hr.json":()=>new Promise(((t,i)=>e(["./i18n/hr.amd"],t,i))),"./i18n/hu.json":()=>new Promise(((t,i)=>e(["./i18n/hu.amd"],t,i))),"./i18n/id.json":()=>new Promise(((t,i)=>e(["./i18n/id.amd"],t,i))),"./i18n/is.json":()=>new Promise(((t,i)=>e(["./i18n/is.amd"],t,i))),"./i18n/it.json":()=>new Promise(((t,i)=>e(["./i18n/it.amd"],t,i))),"./i18n/ja.json":()=>new Promise(((t,i)=>e(["./i18n/ja.amd"],t,i))),"./i18n/ka.json":()=>new Promise(((t,i)=>e(["./i18n/ka.amd"],t,i))),"./i18n/ko.json":()=>new Promise(((t,i)=>e(["./i18n/ko.amd"],t,i))),"./i18n/lt.json":()=>new Promise(((t,i)=>e(["./i18n/lt.amd"],t,i))),"./i18n/mn.json":()=>new Promise(((t,i)=>e(["./i18n/mn.amd"],t,i))),"./i18n/nl.json":()=>new Promise(((t,i)=>e(["./i18n/nl.amd"],t,i))),"./i18n/no.json":()=>new Promise(((t,i)=>e(["./i18n/no.amd"],t,i))),"./i18n/pl.json":()=>new Promise(((t,i)=>e(["./i18n/pl.amd"],t,i))),"./i18n/pt-br.json":()=>new Promise(((t,i)=>e(["./i18n/pt-br.amd"],t,i))),"./i18n/pt-pt.json":()=>new Promise(((t,i)=>e(["./i18n/pt-pt.amd"],t,i))),"./i18n/ro.json":()=>new Promise(((t,i)=>e(["./i18n/ro.amd"],t,i))),"./i18n/ru.json":()=>new Promise(((t,i)=>e(["./i18n/ru.amd"],t,i))),"./i18n/sk.json":()=>new Promise(((t,i)=>e(["./i18n/sk.amd"],t,i))),"./i18n/sl.json":()=>new Promise(((t,i)=>e(["./i18n/sl.amd"],t,i))),"./i18n/sq.json":()=>new Promise(((t,i)=>e(["./i18n/sq.amd"],t,i))),"./i18n/sr.json":()=>new Promise(((t,i)=>e(["./i18n/sr.amd"],t,i))),"./i18n/sv.json":()=>new Promise(((t,i)=>e(["./i18n/sv.amd"],t,i))),"./i18n/tr.json":()=>new Promise(((t,i)=>e(["./i18n/tr.amd"],t,i))),"./i18n/uk.json":()=>new Promise(((t,i)=>e(["./i18n/uk.amd"],t,i))),"./i18n/vi.json":()=>new Promise(((t,i)=>e(["./i18n/vi.amd"],t,i))),"./i18n/zh-cn.json":()=>new Promise(((t,i)=>e(["./i18n/zh-cn.amd"],t,i))),"./i18n/zh-hk.json":()=>new Promise(((t,i)=>e(["./i18n/zh-hk.amd"],t,i)))}),`./i18n/${t}.json`,3);this.texts=Object.assign({},we,i),this.utils.date.updateTexts(this.texts)},loadDragAndDrop(){new Promise(((t,i)=>e(["./drag-and-drop.amd"],t,i))).then((e=>{const{DragAndDrop:t}=e;this.modules.dnd=new t(this)})).catch((()=>console.warn("Vue Cal: Missing drag & drop module.")))},validateView(e){return ye.includes(e)||(console.error(`Vue Cal: invalid active-view parameter provided: "${e}".\nA valid view must be one of: ${ye.join(", ")}.`),e="week"),this.enabledViews.includes(e)||(console.warn(`Vue Cal: the provided active-view "${e}" is disabled. Using the "${this.enabledViews[0]}" view instead.`),e=this.enabledViews[0]),e},switchToNarrowerView(e=null){this.transitionDirection="right";const t=this.enabledViews[this.enabledViews.indexOf(this.view.id)+1];t&&this.switchView(t,e)},switchView(e,t=null,i=!1){e=this.validateView(e);const s=this.utils.date,n=this.view.startDate&&this.view.startDate.getTime();if(this.transitions&&i){if(this.view.id===e)return;const t=this.enabledViews;this.transitionDirection=t.indexOf(this.view.id)>t.indexOf(e)?"left":"right"}const