UNPKG

@digitalcrafted/vue-scheduler

Version:

A Vue 3 scheduler component with day/week/month/year views for displaying calendar events

2 lines (1 loc) 35.1 kB
(function(Z,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],t):(Z=typeof globalThis<"u"?globalThis:Z||self,t(Z.VueScheduler={},Z.Vue))})(this,function(Z,t){"use strict";var et=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function nt(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var ft={exports:{}};(function(n,o){(function(i,r){n.exports=r()})(et,function(){var i=1e3,r=6e4,c=36e5,k="millisecond",y="second",D="minute",a="hour",m="day",s="week",e="month",f="quarter",h="year",w="date",$="Invalid Date",p=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,_=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,E={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(M){var d=["th","st","nd","rd"],l=M%100;return"["+M+(d[(l-20)%10]||d[l]||d[0])+"]"}},S=function(M,d,l){var g=String(M);return!g||g.length>=d?M:""+Array(d+1-g.length).join(l)+M},C={s:S,z:function(M){var d=-M.utcOffset(),l=Math.abs(d),g=Math.floor(l/60),u=l%60;return(d<=0?"+":"-")+S(g,2,"0")+":"+S(u,2,"0")},m:function M(d,l){if(d.date()<l.date())return-M(l,d);var g=12*(l.year()-d.year())+(l.month()-d.month()),u=d.clone().add(g,e),b=l-u<0,x=d.clone().add(g+(b?-1:1),e);return+(-(g+(l-u)/(b?u-x:x-u))||0)},a:function(M){return M<0?Math.ceil(M)||0:Math.floor(M)},p:function(M){return{M:e,y:h,w:s,d:m,D:w,h:a,m:D,s:y,ms:k,Q:f}[M]||String(M||"").toLowerCase().replace(/s$/,"")},u:function(M){return M===void 0}},O="en",L={};L[O]=E;var P="$isDayjsObject",H=function(M){return M instanceof z||!(!M||!M[P])},F=function M(d,l,g){var u;if(!d)return O;if(typeof d=="string"){var b=d.toLowerCase();L[b]&&(u=b),l&&(L[b]=l,u=b);var x=d.split("-");if(!u&&x.length>1)return M(x[0])}else{var B=d.name;L[B]=d,u=B}return!g&&u&&(O=u),u||!g&&O},v=function(M,d){if(H(M))return M.clone();var l=typeof d=="object"?d:{};return l.date=M,l.args=arguments,new z(l)},Y=C;Y.l=F,Y.i=H,Y.w=function(M,d){return v(M,{locale:d.$L,utc:d.$u,x:d.$x,$offset:d.$offset})};var z=function(){function M(l){this.$L=F(l.locale,null,!0),this.parse(l),this.$x=this.$x||l.x||{},this[P]=!0}var d=M.prototype;return d.parse=function(l){this.$d=function(g){var u=g.date,b=g.utc;if(u===null)return new Date(NaN);if(Y.u(u))return new Date;if(u instanceof Date)return new Date(u);if(typeof u=="string"&&!/Z$/i.test(u)){var x=u.match(p);if(x){var B=x[2]-1||0,T=(x[7]||"0").substring(0,3);return b?new Date(Date.UTC(x[1],B,x[3]||1,x[4]||0,x[5]||0,x[6]||0,T)):new Date(x[1],B,x[3]||1,x[4]||0,x[5]||0,x[6]||0,T)}}return new Date(u)}(l),this.init()},d.init=function(){var l=this.$d;this.$y=l.getFullYear(),this.$M=l.getMonth(),this.$D=l.getDate(),this.$W=l.getDay(),this.$H=l.getHours(),this.$m=l.getMinutes(),this.$s=l.getSeconds(),this.$ms=l.getMilliseconds()},d.$utils=function(){return Y},d.isValid=function(){return this.$d.toString()!==$},d.isSame=function(l,g){var u=v(l);return this.startOf(g)<=u&&u<=this.endOf(g)},d.isAfter=function(l,g){return v(l)<this.startOf(g)},d.isBefore=function(l,g){return this.endOf(g)<v(l)},d.$g=function(l,g,u){return Y.u(l)?this[g]:this.set(u,l)},d.unix=function(){return Math.floor(this.valueOf()/1e3)},d.valueOf=function(){return this.$d.getTime()},d.startOf=function(l,g){var u=this,b=!!Y.u(g)||g,x=Y.p(l),B=function(R,A){var j=Y.w(u.$u?Date.UTC(u.$y,A,R):new Date(u.$y,A,R),u);return b?j:j.endOf(m)},T=function(R,A){return Y.w(u.toDate()[R].apply(u.toDate("s"),(b?[0,0,0,0]:[23,59,59,999]).slice(A)),u)},V=this.$W,W=this.$M,U=this.$D,q="set"+(this.$u?"UTC":"");switch(x){case h:return b?B(1,0):B(31,11);case e:return b?B(1,W):B(0,W+1);case s:var J=this.$locale().weekStart||0,X=(V<J?V+7:V)-J;return B(b?U-X:U+(6-X),W);case m:case w:return T(q+"Hours",0);case a:return T(q+"Minutes",1);case D:return T(q+"Seconds",2);case y:return T(q+"Milliseconds",3);default:return this.clone()}},d.endOf=function(l){return this.startOf(l,!1)},d.$set=function(l,g){var u,b=Y.p(l),x="set"+(this.$u?"UTC":""),B=(u={},u[m]=x+"Date",u[w]=x+"Date",u[e]=x+"Month",u[h]=x+"FullYear",u[a]=x+"Hours",u[D]=x+"Minutes",u[y]=x+"Seconds",u[k]=x+"Milliseconds",u)[b],T=b===m?this.$D+(g-this.$W):g;if(b===e||b===h){var V=this.clone().set(w,1);V.$d[B](T),V.init(),this.$d=V.set(w,Math.min(this.$D,V.daysInMonth())).$d}else B&&this.$d[B](T);return this.init(),this},d.set=function(l,g){return this.clone().$set(l,g)},d.get=function(l){return this[Y.p(l)]()},d.add=function(l,g){var u,b=this;l=Number(l);var x=Y.p(g),B=function(W){var U=v(b);return Y.w(U.date(U.date()+Math.round(W*l)),b)};if(x===e)return this.set(e,this.$M+l);if(x===h)return this.set(h,this.$y+l);if(x===m)return B(1);if(x===s)return B(7);var T=(u={},u[D]=r,u[a]=c,u[y]=i,u)[x]||1,V=this.$d.getTime()+l*T;return Y.w(V,this)},d.subtract=function(l,g){return this.add(-1*l,g)},d.format=function(l){var g=this,u=this.$locale();if(!this.isValid())return u.invalidDate||$;var b=l||"YYYY-MM-DDTHH:mm:ssZ",x=Y.z(this),B=this.$H,T=this.$m,V=this.$M,W=u.weekdays,U=u.months,q=u.meridiem,J=function(A,j,Q,K){return A&&(A[j]||A(g,b))||Q[j].slice(0,K)},X=function(A){return Y.s(B%12||12,A,"0")},R=q||function(A,j,Q){var K=A<12?"AM":"PM";return Q?K.toLowerCase():K};return b.replace(_,function(A,j){return j||function(Q){switch(Q){case"YY":return String(g.$y).slice(-2);case"YYYY":return Y.s(g.$y,4,"0");case"M":return V+1;case"MM":return Y.s(V+1,2,"0");case"MMM":return J(u.monthsShort,V,U,3);case"MMMM":return J(U,V);case"D":return g.$D;case"DD":return Y.s(g.$D,2,"0");case"d":return String(g.$W);case"dd":return J(u.weekdaysMin,g.$W,W,2);case"ddd":return J(u.weekdaysShort,g.$W,W,3);case"dddd":return W[g.$W];case"H":return String(B);case"HH":return Y.s(B,2,"0");case"h":return X(1);case"hh":return X(2);case"a":return R(B,T,!0);case"A":return R(B,T,!1);case"m":return String(T);case"mm":return Y.s(T,2,"0");case"s":return String(g.$s);case"ss":return Y.s(g.$s,2,"0");case"SSS":return Y.s(g.$ms,3,"0");case"Z":return x}return null}(A)||x.replace(":","")})},d.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},d.diff=function(l,g,u){var b,x=this,B=Y.p(g),T=v(l),V=(T.utcOffset()-this.utcOffset())*r,W=this-T,U=function(){return Y.m(x,T)};switch(B){case h:b=U()/12;break;case e:b=U();break;case f:b=U()/3;break;case s:b=(W-V)/6048e5;break;case m:b=(W-V)/864e5;break;case a:b=W/c;break;case D:b=W/r;break;case y:b=W/i;break;default:b=W}return u?b:Y.a(b)},d.daysInMonth=function(){return this.endOf(e).$D},d.$locale=function(){return L[this.$L]},d.locale=function(l,g){if(!l)return this.$L;var u=this.clone(),b=F(l,g,!0);return b&&(u.$L=b),u},d.clone=function(){return Y.w(this.$d,this)},d.toDate=function(){return new Date(this.valueOf())},d.toJSON=function(){return this.isValid()?this.toISOString():null},d.toISOString=function(){return this.$d.toISOString()},d.toString=function(){return this.$d.toUTCString()},M}(),I=z.prototype;return v.prototype=I,[["$ms",k],["$s",y],["$m",D],["$H",a],["$W",m],["$M",e],["$y",h],["$D",w]].forEach(function(M){I[M[1]]=function(d){return this.$g(d,M[0],M[1])}}),v.extend=function(M,d){return M.$i||(M(d,z,v),M.$i=!0),v},v.locale=F,v.isDayjs=H,v.unix=function(M){return v(1e3*M)},v.en=L[O],v.Ls=L,v.p={},v})})(ft);var _t=ft.exports;const G=nt(_t);var ht={exports:{}};(function(n,o){(function(i,r){n.exports=r()})(et,function(){var i="minute",r=/[+-]\d\d(?::?\d\d)?/g,c=/([+-]|\d\d)/g;return function(k,y,D){var a=y.prototype;D.utc=function($){var p={date:$,utc:!0,args:arguments};return new y(p)},a.utc=function($){var p=D(this.toDate(),{locale:this.$L,utc:!0});return $?p.add(this.utcOffset(),i):p},a.local=function(){return D(this.toDate(),{locale:this.$L,utc:!1})};var m=a.parse;a.parse=function($){$.utc&&(this.$u=!0),this.$utils().u($.$offset)||(this.$offset=$.$offset),m.call(this,$)};var s=a.init;a.init=function(){if(this.$u){var $=this.$d;this.$y=$.getUTCFullYear(),this.$M=$.getUTCMonth(),this.$D=$.getUTCDate(),this.$W=$.getUTCDay(),this.$H=$.getUTCHours(),this.$m=$.getUTCMinutes(),this.$s=$.getUTCSeconds(),this.$ms=$.getUTCMilliseconds()}else s.call(this)};var e=a.utcOffset;a.utcOffset=function($,p){var _=this.$utils().u;if(_($))return this.$u?0:_(this.$offset)?e.call(this):this.$offset;if(typeof $=="string"&&($=function(O){O===void 0&&(O="");var L=O.match(r);if(!L)return null;var P=(""+L[0]).match(c)||["-",0,0],H=P[0],F=60*+P[1]+ +P[2];return F===0?0:H==="+"?F:-F}($),$===null))return this;var E=Math.abs($)<=16?60*$:$;if(E===0)return this.utc(p);var S=this.clone();if(p)return S.$offset=E,S.$u=!1,S;var C=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();return(S=this.local().add(E+C,i)).$offset=E,S.$x.$localOffset=C,S};var f=a.format;a.format=function($){var p=$||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return f.call(this,p)},a.valueOf=function(){var $=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*$},a.isUTC=function(){return!!this.$u},a.toISOString=function(){return this.toDate().toISOString()},a.toString=function(){return this.toDate().toUTCString()};var h=a.toDate;a.toDate=function($){return $==="s"&&this.$offset?D(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():h.call(this)};var w=a.diff;a.diff=function($,p,_){if($&&this.$u===$.$u)return w.call(this,$,p,_);var E=this.local(),S=D($).local();return w.call(E,S,p,_)}}})})(ht);var Bt=ht.exports;const Yt=nt(Bt);var mt={exports:{}};(function(n,o){(function(i,r){n.exports=r()})(et,function(){var i="day";return function(r,c,k){var y=function(m){return m.add(4-m.isoWeekday(),i)},D=c.prototype;D.isoWeekYear=function(){return y(this).year()},D.isoWeek=function(m){if(!this.$utils().u(m))return this.add(7*(m-this.isoWeek()),i);var s,e,f,h,w=y(this),$=(s=this.isoWeekYear(),e=this.$u,f=(e?k.utc:k)().year(s).startOf("year"),h=4-f.isoWeekday(),f.isoWeekday()>4&&(h+=7),f.add(h,i));return w.diff($,"week")+1},D.isoWeekday=function(m){return this.$utils().u(m)?this.day()||7:this.day(this.day()%7?m:m-7)};var a=D.startOf;D.startOf=function(m,s){var e=this.$utils(),f=!!e.u(s)||s;return e.p(m)==="isoweek"?f?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):a.bind(this)(m,s)}}})})(mt);var Ot=mt.exports;const vt=nt(Ot);var pt={exports:{}};(function(n,o){(function(i,r){n.exports=r()})(et,function(){return function(i,r,c){var k=r.prototype,y=function(e){return e&&(e.indexOf?e:e.s)},D=function(e,f,h,w,$){var p=e.name?e:e.$locale(),_=y(p[f]),E=y(p[h]),S=_||E.map(function(O){return O.slice(0,w)});if(!$)return S;var C=p.weekStart;return S.map(function(O,L){return S[(L+(C||0))%7]})},a=function(){return c.Ls[c.locale()]},m=function(e,f){return e.formats[f]||function(h){return h.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(w,$,p){return $||p.slice(1)})}(e.formats[f.toUpperCase()])},s=function(){var e=this;return{months:function(f){return f?f.format("MMMM"):D(e,"months")},monthsShort:function(f){return f?f.format("MMM"):D(e,"monthsShort","months",3)},firstDayOfWeek:function(){return e.$locale().weekStart||0},weekdays:function(f){return f?f.format("dddd"):D(e,"weekdays")},weekdaysMin:function(f){return f?f.format("dd"):D(e,"weekdaysMin","weekdays",2)},weekdaysShort:function(f){return f?f.format("ddd"):D(e,"weekdaysShort","weekdays",3)},longDateFormat:function(f){return m(e.$locale(),f)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};k.localeData=function(){return s.bind(this)()},c.localeData=function(){var e=a();return{firstDayOfWeek:function(){return e.weekStart||0},weekdays:function(){return c.weekdays()},weekdaysShort:function(){return c.weekdaysShort()},weekdaysMin:function(){return c.weekdaysMin()},months:function(){return c.months()},monthsShort:function(){return c.monthsShort()},longDateFormat:function(f){return m(e,f)},meridiem:e.meridiem,ordinal:e.ordinal}},c.months=function(){return D(a(),"months")},c.monthsShort=function(){return D(a(),"monthsShort","months",3)},c.weekdays=function(e){return D(a(),"weekdays",null,null,e)},c.weekdaysShort=function(e){return D(a(),"weekdaysShort","weekdays",3,e)},c.weekdaysMin=function(e){return D(a(),"weekdaysMin","weekdays",2,e)}}})})(pt);var Tt=pt.exports;const Vt=nt(Tt);var yt={exports:{}};(function(n,o){(function(i,r){n.exports=r()})(et,function(){var i={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},r=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,c=/\d/,k=/\d\d/,y=/\d\d?/,D=/\d*[^-_:/,()\s\d]+/,a={},m=function(p){return(p=+p)+(p>68?1900:2e3)},s=function(p){return function(_){this[p]=+_}},e=[/[+-]\d\d:?(\d\d)?|Z/,function(p){(this.zone||(this.zone={})).offset=function(_){if(!_||_==="Z")return 0;var E=_.match(/([+-]|\d\d)/g),S=60*E[1]+(+E[2]||0);return S===0?0:E[0]==="+"?-S:S}(p)}],f=function(p){var _=a[p];return _&&(_.indexOf?_:_.s.concat(_.f))},h=function(p,_){var E,S=a.meridiem;if(S){for(var C=1;C<=24;C+=1)if(p.indexOf(S(C,0,_))>-1){E=C>12;break}}else E=p===(_?"pm":"PM");return E},w={A:[D,function(p){this.afternoon=h(p,!1)}],a:[D,function(p){this.afternoon=h(p,!0)}],Q:[c,function(p){this.month=3*(p-1)+1}],S:[c,function(p){this.milliseconds=100*+p}],SS:[k,function(p){this.milliseconds=10*+p}],SSS:[/\d{3}/,function(p){this.milliseconds=+p}],s:[y,s("seconds")],ss:[y,s("seconds")],m:[y,s("minutes")],mm:[y,s("minutes")],H:[y,s("hours")],h:[y,s("hours")],HH:[y,s("hours")],hh:[y,s("hours")],D:[y,s("day")],DD:[k,s("day")],Do:[D,function(p){var _=a.ordinal,E=p.match(/\d+/);if(this.day=E[0],_)for(var S=1;S<=31;S+=1)_(S).replace(/\[|\]/g,"")===p&&(this.day=S)}],w:[y,s("week")],ww:[k,s("week")],M:[y,s("month")],MM:[k,s("month")],MMM:[D,function(p){var _=f("months"),E=(f("monthsShort")||_.map(function(S){return S.slice(0,3)})).indexOf(p)+1;if(E<1)throw new Error;this.month=E%12||E}],MMMM:[D,function(p){var _=f("months").indexOf(p)+1;if(_<1)throw new Error;this.month=_%12||_}],Y:[/[+-]?\d+/,s("year")],YY:[k,function(p){this.year=m(p)}],YYYY:[/\d{4}/,s("year")],Z:e,ZZ:e};function $(p){var _,E;_=p,E=a&&a.formats;for(var S=(p=_.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(v,Y,z){var I=z&&z.toUpperCase();return Y||E[z]||i[z]||E[I].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(M,d,l){return d||l.slice(1)})})).match(r),C=S.length,O=0;O<C;O+=1){var L=S[O],P=w[L],H=P&&P[0],F=P&&P[1];S[O]=F?{regex:H,parser:F}:L.replace(/^\[|\]$/g,"")}return function(v){for(var Y={},z=0,I=0;z<C;z+=1){var M=S[z];if(typeof M=="string")I+=M.length;else{var d=M.regex,l=M.parser,g=v.slice(I),u=d.exec(g)[0];l.call(Y,u),v=v.replace(u,"")}}return function(b){var x=b.afternoon;if(x!==void 0){var B=b.hours;x?B<12&&(b.hours+=12):B===12&&(b.hours=0),delete b.afternoon}}(Y),Y}}return function(p,_,E){E.p.customParseFormat=!0,p&&p.parseTwoDigitYear&&(m=p.parseTwoDigitYear);var S=_.prototype,C=S.parse;S.parse=function(O){var L=O.date,P=O.utc,H=O.args;this.$u=P;var F=H[1];if(typeof F=="string"){var v=H[2]===!0,Y=H[3]===!0,z=v||Y,I=H[2];Y&&(I=H[2]),a=this.$locale(),!v&&I&&(a=E.Ls[I]),this.$d=function(g,u,b,x){try{if(["x","X"].indexOf(u)>-1)return new Date((u==="X"?1e3:1)*g);var B=$(u)(g),T=B.year,V=B.month,W=B.day,U=B.hours,q=B.minutes,J=B.seconds,X=B.milliseconds,R=B.zone,A=B.week,j=new Date,Q=W||(T||V?1:j.getDate()),K=T||j.getFullYear(),ot=0;T&&!V||(ot=V>0?V-1:j.getMonth());var at,lt=U||0,ct=q||0,dt=J||0,ut=X||0;return R?new Date(Date.UTC(K,ot,Q,lt,ct,dt,ut+60*R.offset*1e3)):b?new Date(Date.UTC(K,ot,Q,lt,ct,dt,ut)):(at=new Date(K,ot,Q,lt,ct,dt,ut),A&&(at=x(at).week(A).toDate()),at)}catch{return new Date("")}}(L,F,P,E),this.init(),I&&I!==!0&&(this.$L=this.locale(I).$L),z&&L!=this.format(F)&&(this.$d=new Date("")),a={}}else if(F instanceof Array)for(var M=F.length,d=1;d<=M;d+=1){H[1]=F[d-1];var l=E.apply(this,H);if(l.isValid()){this.$d=l.$d,this.$L=l.$L,this.init();break}d===M&&(this.$d=new Date(""))}else C.call(this,O)}}})})(yt);var Nt=yt.exports;const Ct=nt(Nt);G.extend(Yt),G.extend(vt),G.extend(Vt),G.extend(Ct);function N(n){return G(n)}function st(n){return N(n).format("YYYY-MM-DD")}function it(n){return N(n).startOf("day")}function gt(n){return N(n).endOf("day")}function Lt(n){return N(n).startOf("isoWeek")}function Ft(n){return N(n).startOf("month")}function Wt(n){return N(n).endOf("month")}function At(n){const o=N(n);return{start:o.startOf("day").toDate(),end:o.endOf("day").toDate()}}function Ht(n){const o=N(n);return{start:o.startOf("isoWeek").toDate(),end:o.endOf("isoWeek").toDate()}}function zt(n){const o=N(n);return{start:o.startOf("month").toDate(),end:o.endOf("month").toDate()}}function Pt(n){const o=N(n);return{start:o.startOf("year").toDate(),end:o.endOf("year").toDate()}}function It(n,o){const i=N(n);switch(o){case"day":return i.subtract(1,"day").toDate();case"week":return i.subtract(1,"week").toDate();case"month":return i.subtract(1,"month").toDate();case"year":return i.subtract(1,"year").toDate()}}function Ut(n,o){const i=N(n);switch(o){case"day":return i.add(1,"day").toDate();case"week":return i.add(1,"week").toDate();case"month":return i.add(1,"month").toDate();case"year":return i.add(1,"year").toDate()}}function jt(n,o,i){const r=N(n);switch(i&&G.locale(i),o){case"day":return r.format("MMMM D, YYYY");case"week":const c=r.startOf("isoWeek"),k=r.endOf("isoWeek");return c.month()===k.month()?`Week of ${c.format("MMM D")} - ${k.format("D, YYYY")}`:`Week of ${c.format("MMM D")} - ${k.format("MMM D, YYYY")}`;case"month":return r.format("MMMM YYYY");case"year":return r.format("YYYY")}}function Zt(n){const o=Lt(n),i=[];for(let r=0;r<7;r++)i.push(o.add(r,"day").toDate());return i}function $t(n){const o=Ft(n),i=Wt(n),r=o.startOf("isoWeek"),c=i.endOf("isoWeek"),k=[];let y=r;for(;y.isBefore(c)||y.isSame(c,"day");)k.push(y.toDate()),y=y.add(1,"day");return k}function Dt(n,o){return N(n).isSame(N(o),"day")}function kt(n,o="week",i){const r=t.ref(n?N(n).toDate():new Date),c=t.ref(o),k=t.computed(()=>jt(r.value,c.value,i)),y=t.computed(()=>{switch(c.value){case"day":return At(r.value);case"week":return Ht(r.value);case"month":return zt(r.value);case"year":return Pt(r.value)}});return{currentDate:r,viewMode:c,periodLabel:k,dateRange:y,goToToday:()=>{r.value=new Date},goToPrevious:()=>{r.value=It(r.value,c.value)},goToNext:()=>{r.value=Ut(r.value,c.value)},setViewMode:f=>{c.value=f},setCurrentDate:f=>{r.value=f}}}function Mt(n){const o=N(n.start),i=n.end?N(n.end):o,r=o.toDate(),c=i.toDate(),k=o.hour()!==0||o.minute()!==0||o.second()!==0,y=n.end?i.hour()!==0||i.minute()!==0||i.second()!==0:!1,D=!k&&!y,a=Math.ceil((c.getTime()-r.getTime())/(1e3*60*60*24))||1;return{...n,startDate:r,endDate:c,isAllDay:D,duration:a}}function Rt(n,o){const i=n.startDate,r=n.endDate||n.startDate;return i<=o.end&&r>=o.start}function wt(n,o){return n.filter(i=>Rt(i,o))}function tt(n,o){const i=it(o).toDate(),r=gt(o).toDate();return wt(n,{start:i,end:r})}function Jt(n){return n.duration>1||!Qt(n.startDate,n.endDate)}function Qt(n,o){return st(n)===st(o)}function bt(n,o){const i=it(o).toDate(),r=gt(o).toDate();return n.endDate<i||n.startDate>r?null:{...n,startDate:n.startDate>i?n.startDate:i,endDate:n.endDate<r?n.endDate:r}}function St(n,o,i=60){const r=it(o).toDate();if(n.isAllDay)return{top:0,height:30};const c=n.startDate,k=n.endDate||n.startDate,y=(c.getTime()-r.getTime())/(1e3*60),D=(k.getTime()-r.getTime())/(1e3*60),a=i/60,m=Math.max(0,y*a),s=Math.max(20,(D-y)*a);return{top:m,height:s}}function xt(n,o){const i=t.ref([]),r=t.ref(!1),c=typeof n=="function",k=async()=>{if(!c){i.value=n.map(Mt);return}r.value=!0;try{n({dateRange:o.value,setEvents:a=>{i.value=a.map(Mt),r.value=!1}})}catch(D){console.error("Error loading events:",D),r.value=!1}},y=t.computed(()=>wt(i.value,o.value));return c&&t.watch(o,()=>{k()},{deep:!0}),k(),{events:i,visibleEvents:y,loading:r,reload:k}}const qt={class:"flex items-center justify-between p-4 border-b bg-white"},Kt={class:"flex items-center gap-2"},Xt={class:"flex-1 text-center"},Gt={class:"text-lg font-semibold text-gray-900"},te={key:0,class:"flex items-center gap-2"},ee=["value","checked","onChange"],ne={class:"text-sm text-gray-700"},re=t.defineComponent({__name:"Header",props:{periodLabel:{},currentViewMode:{},todayLabel:{default:"today"},hideViewModeSelector:{type:Boolean,default:!1}},emits:["previous","today","next","viewModeChange"],setup(n){const o=[{value:"day",label:"day"},{value:"week",label:"week"},{value:"month",label:"month"},{value:"year",label:"year"}];return(i,r)=>(t.openBlock(),t.createElementBlock("div",qt,[t.createElementVNode("div",Kt,[t.createElementVNode("button",{onClick:r[0]||(r[0]=c=>i.$emit("previous")),class:"px-3 py-1 border rounded hover:bg-gray-50 text-gray-700",type:"button"}," < "),t.createElementVNode("button",{onClick:r[1]||(r[1]=c=>i.$emit("today")),class:"px-3 py-1 border rounded hover:bg-gray-50 text-gray-700 text-sm",type:"button"},t.toDisplayString(n.todayLabel),1),t.createElementVNode("button",{onClick:r[2]||(r[2]=c=>i.$emit("next")),class:"px-3 py-1 border rounded hover:bg-gray-50 text-gray-700",type:"button"}," > ")]),t.createElementVNode("div",Xt,[t.createElementVNode("h4",Gt,t.toDisplayString(n.periodLabel),1)]),n.hideViewModeSelector?t.createCommentVNode("",!0):(t.openBlock(),t.createElementBlock("div",te,[(t.openBlock(),t.createElementBlock(t.Fragment,null,t.renderList(o,c=>t.createElementVNode("label",{key:c.value,class:"flex items-center cursor-pointer"},[t.createElementVNode("input",{type:"radio",value:c.value,checked:n.currentViewMode===c.value,onChange:k=>i.$emit("viewModeChange",c.value),class:"mr-1"},null,40,ee),t.createElementVNode("span",ne,t.toDisplayString(c.label),1)])),64))]))]))}}),oe=["title"],rt=t.defineComponent({__name:"EventRenderer",props:{event:{}},setup(n){const o=n,i=t.computed(()=>{const k=(o.event.bgColor||"#3498db").replace("#",""),y=parseInt(k.substr(0,2),16),D=parseInt(k.substr(2,2),16),a=parseInt(k.substr(4,2),16);return(y*299+D*587+a*114)/1e3>155?"#000000":"#ffffff"}),r=t.computed(()=>{const c=N(o.event.start),k=o.event.end?N(o.event.end):c;if(o.event.isAllDay)return o.event.duration>1?`${o.event.label} - ${c.format("MMM D")} to ${k.format("MMM D, YYYY")}`:`${o.event.label} - ${c.format("MMM D, YYYY")}`;const y=`${c.format("h:mm A")} - ${k.format("h:mm A")}`;return o.event.duration>1?`${o.event.label} - ${c.format("MMM D")} to ${k.format("MMM D")}, ${y}`:`${o.event.label} - ${c.format("MMM D, YYYY")}, ${y}`});return(c,k)=>(t.openBlock(),t.createElementBlock("div",{style:t.normalizeStyle({backgroundColor:n.event.bgColor||"#3498db",color:i.value,padding:"2px 6px",borderRadius:"4px",fontSize:"12px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",cursor:"default"}),title:r.value,class:"event-item"},t.toDisplayString(n.event.label),13,oe))}}),ae={class:"h-full overflow-y-auto"},se={class:"relative"},ie={class:"absolute left-0 top-0 w-20 border-r bg-gray-50"},le={key:0,class:"ml-20 border-b bg-gray-50 p-2 min-h-[40px]"},ce={class:"flex flex-wrap gap-1"},de={class:"ml-20 relative"},ue={class:"absolute inset-0"},fe=t.defineComponent({__name:"DayView",props:{date:{},events:{}},setup(n){const o=n,i=Array.from({length:24},(a,m)=>m),r=a=>a===0?"12 AM":a<12?`${a} AM`:a===12?"12 PM":`${a-12} PM`,c=t.computed(()=>tt(o.events,o.date)),k=t.computed(()=>c.value.filter(a=>a.isAllDay)),y=t.computed(()=>c.value.filter(a=>!a.isAllDay)),D=a=>{const m=St(a,o.date,64);return{top:`${m.top}px`,height:`${m.height}px`}};return(a,m)=>(t.openBlock(),t.createElementBlock("div",ae,[t.createElementVNode("div",se,[t.createElementVNode("div",ie,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(i),s=>(t.openBlock(),t.createElementBlock("div",{key:s,class:"h-16 border-b text-xs text-gray-600 p-2"},t.toDisplayString(r(s)),1))),128))]),k.value.length>0?(t.openBlock(),t.createElementBlock("div",le,[t.createElementVNode("div",ce,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(k.value,s=>(t.openBlock(),t.createBlock(rt,{key:s.id||s.label,event:s},null,8,["event"]))),128))])])):t.createCommentVNode("",!0),t.createElementVNode("div",de,[t.createElementVNode("div",ue,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(i),s=>(t.openBlock(),t.createElementBlock("div",{key:s,class:"absolute w-full border-b border-gray-200",style:t.normalizeStyle({top:`${s*64}px`})},null,4))),128)),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(y.value,s=>(t.openBlock(),t.createElementBlock("div",{key:s.id||s.label,class:"absolute left-0 right-0 px-1",style:t.normalizeStyle(D(s))},[t.createVNode(rt,{event:s},null,8,["event"])],4))),128))]),t.createElementVNode("div",{style:t.normalizeStyle({height:`${t.unref(i).length*64}px`})},null,4)])])]))}}),he={class:"h-full overflow-y-auto"},me={class:"relative"},pe={class:"flex border-b bg-gray-50 sticky top-0 z-10"},ye={class:"text-xs text-gray-600"},ge={key:0,class:"flex border-b bg-gray-50 min-h-[40px]"},$e={class:"flex flex-wrap gap-1"},De={class:"relative"},ke={class:"absolute inset-0 flex"},Me={class:"w-20 border-r bg-gray-50"},we=t.defineComponent({__name:"WeekView",props:{date:{},events:{}},setup(n){const o=n,i=Array.from({length:24},(e,f)=>f),r=t.computed(()=>Zt(o.date)),c=e=>e===0?"12 AM":e<12?`${e} AM`:e===12?"12 PM":`${e-12} PM`,k=e=>e.toLocaleDateString("en-US",{weekday:"short"}),y=e=>e.getDate().toString(),D=e=>tt(o.events,e).filter(h=>h.isAllDay),a=e=>tt(o.events,e).filter(h=>!h.isAllDay),m=t.computed(()=>r.value.some(e=>D(e).length>0)),s=(e,f)=>{const h=bt(e,f);if(!h)return{display:"none"};const w=St(h,f,64);return{top:`${w.top}px`,height:`${w.height}px`}};return(e,f)=>(t.openBlock(),t.createElementBlock("div",he,[t.createElementVNode("div",me,[t.createElementVNode("div",pe,[f[0]||(f[0]=t.createElementVNode("div",{class:"w-20 border-r"},null,-1)),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(r.value,h=>(t.openBlock(),t.createElementBlock("div",{key:h.toISOString(),class:"flex-1 border-r p-2 text-center text-sm font-medium text-gray-700"},[t.createElementVNode("div",null,t.toDisplayString(k(h)),1),t.createElementVNode("div",ye,t.toDisplayString(y(h)),1)]))),128))]),m.value?(t.openBlock(),t.createElementBlock("div",ge,[f[1]||(f[1]=t.createElementVNode("div",{class:"w-20 border-r"},null,-1)),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(r.value,h=>(t.openBlock(),t.createElementBlock("div",{key:h.toISOString(),class:"flex-1 border-r p-1"},[t.createElementVNode("div",$e,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(D(h),w=>(t.openBlock(),t.createBlock(rt,{key:w.id||`${w.label}-${h.toISOString()}`,event:w},null,8,["event"]))),128))])]))),128))])):t.createCommentVNode("",!0),t.createElementVNode("div",De,[t.createElementVNode("div",ke,[t.createElementVNode("div",Me,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(i),h=>(t.openBlock(),t.createElementBlock("div",{key:h,class:"h-16 border-b text-xs text-gray-600 p-2"},t.toDisplayString(c(h)),1))),128))]),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(r.value,h=>(t.openBlock(),t.createElementBlock("div",{key:h.toISOString(),class:"flex-1 border-r relative"},[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(t.unref(i),w=>(t.openBlock(),t.createElementBlock("div",{key:w,class:"absolute w-full border-b border-gray-200",style:t.normalizeStyle({top:`${w*64}px`})},null,4))),128)),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(a(h),w=>(t.openBlock(),t.createElementBlock("div",{key:w.id||`${w.label}-${h.toISOString()}`,class:"absolute left-0 right-0 px-1",style:t.normalizeStyle(s(w,h))},[t.createVNode(rt,{event:w},null,8,["event"])],4))),128)),t.createElementVNode("div",{style:t.normalizeStyle({height:`${t.unref(i).length*64}px`})},null,4)]))),128))])])])]))}}),be={class:"h-full overflow-y-auto"},Se={class:"grid grid-cols-7 border-b bg-gray-50 sticky top-0 z-10"},xe={class:"grid grid-cols-7 relative"},Ee={class:"space-y-1 relative",style:{overflow:"visible","z-index":"10"}},_e={key:0,class:"text-xs text-gray-500 mt-1"},Be=t.defineComponent({__name:"MonthView",props:{date:{},events:{}},setup(n){const o=n,i=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],r=t.computed(()=>$t(o.date)),c=m=>m.getMonth()===o.date.getMonth()&&m.getFullYear()===o.date.getFullYear(),k=m=>{const s=new Date;return m.getDate()===s.getDate()&&m.getMonth()===s.getMonth()&&m.getFullYear()===s.getFullYear()},y=m=>tt(o.events,m).map(e=>bt(e,m)).filter(e=>e!==null),D=(m,s)=>{const e=tt(o.events,m),f=[];return e.forEach((h,w)=>{const $=String(h.id||`${h.label}-${st(m)}-${w}`);if(Jt(h)){const p=new Date(h.startDate);if(p.setHours(0,0,0,0),new Date(m).setHours(0,0,0,0),Dt(h.startDate,m)||p<r.value[0]&&s===0){const S=a(h,s);if(S.span>0&&S.span<=7){const O=(S.span-1)*1,L=S.span>1?`calc(${S.span} * 100% + ${O}px)`:"100%";f.push({event:h,key:$,spanStyle:{width:L,marginRight:S.span>1?`-${O}px`:"0",position:"relative",zIndex:"5"},spanClass:""})}}}else f.push({event:h,key:$,spanStyle:{},spanClass:""})}),f.slice(0,3)},a=(m,s)=>{const e=new Date(m.startDate);e.setHours(0,0,0,0);const f=new Date(m.endDate);f.setHours(23,59,59,999);let h=s;if(e<r.value[0])h=0;else for(let E=0;E<r.value.length;E++)if(Dt(r.value[E],e)){h=E;break}let w=1;for(let E=h+1;E<r.value.length;E++){const S=r.value[E],C=new Date(S);C.setHours(0,0,0,0);const O=new Date(S);if(O.setHours(23,59,59,999),e<=O&&f>=C)w++;else break}const _=Math.floor(h/7)*7+7-h;return{span:Math.min(w,_),startIndex:h}};return(m,s)=>(t.openBlock(),t.createElementBlock("div",be,[t.createElementVNode("div",Se,[(t.openBlock(),t.createElementBlock(t.Fragment,null,t.renderList(i,e=>t.createElementVNode("div",{key:e,class:"p-2 text-center text-sm font-medium text-gray-700 border-r last:border-r-0"},t.toDisplayString(e),1)),64))]),t.createElementVNode("div",xe,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(r.value,(e,f)=>(t.openBlock(),t.createElementBlock("div",{key:e.toISOString(),class:t.normalizeClass(["min-h-[100px] border-b border-r p-2 relative",c(e)?"bg-white":"bg-gray-50",k(e)?"ring-2 ring-blue-500":""]),style:{overflow:"visible"}},[t.createElementVNode("div",{class:t.normalizeClass(["text-sm mb-1",c(e)?"text-gray-900":"text-gray-400",k(e)?"font-bold text-blue-600":""])},t.toDisplayString(e.getDate()),3),t.createElementVNode("div",Ee,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(D(e,f),h=>(t.openBlock(),t.createElementBlock("div",{key:h.key,style:t.normalizeStyle(h.spanStyle),class:t.normalizeClass(h.spanClass)},[t.createVNode(rt,{event:h.event},null,8,["event"])],6))),128)),y(e).length>3?(t.openBlock(),t.createElementBlock("div",_e," +"+t.toDisplayString(y(e).length-3)+" more ",1)):t.createCommentVNode("",!0)])],2))),128))])]))}}),Ye={class:"h-full overflow-y-auto p-4"},Oe={class:"grid grid-cols-4 gap-4"},ve={class:"text-center font-semibold mb-2 text-sm"},Te={class:"grid grid-cols-7 gap-1 mb-1"},Ve={class:"grid grid-cols-7 gap-1"},Ne=t.defineComponent({__name:"YearView",props:{date:{},events:{}},setup(n){const o=n,i=["M","T","W","T","F","S","S"],r=["January","February","March","April","May","June","July","August","September","October","November","December"],c=t.computed(()=>{const a=o.date.getFullYear();return Array.from({length:12},(m,s)=>{const e=new Date(a,s,1),f=$t(e),h=f[0].getDay(),w=[],$=h===0?6:h-1;for(let p=0;p<$;p++)w.push(new Date(0));return{month:s,name:r[s],days:[...w,...f]}})}),k=(a,m)=>a.getTime()===0?!1:a.getMonth()===m,y=(a,m)=>{const s=new Date;return a.getDate()===s.getDate()&&a.getMonth()===s.getMonth()&&a.getFullYear()===s.getFullYear()&&m===s.getMonth()},D=a=>a.getTime()===0?!1:tt(o.events,a).length>0;return(a,m)=>(t.openBlock(),t.createElementBlock("div",Ye,[t.createElementVNode("div",Oe,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(c.value,s=>(t.openBlock(),t.createElementBlock("div",{key:s.month,class:"border rounded p-2"},[t.createElementVNode("div",ve,t.toDisplayString(s.name),1),t.createElementVNode("div",Te,[(t.openBlock(),t.createElementBlock(t.Fragment,null,t.renderList(i,e=>t.createElementVNode("div",{key:e,class:"text-xs text-center text-gray-600"},t.toDisplayString(e),1)),64))]),t.createElementVNode("div",Ve,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(s.days,(e,f)=>(t.openBlock(),t.createElementBlock("div",{key:`${s.month}-${f}`,class:t.normalizeClass(["text-xs p-1 min-h-[24px] flex items-center justify-center rounded",e.getTime()===0?"bg-transparent":k(e,s.month)?y(e,s.month)?"bg-blue-500 text-white font-bold":"bg-white text-gray-900":"bg-gray-50 text-gray-400",e.getTime()!==0&&D(e)?"ring-1 ring-blue-300":""])},t.toDisplayString(e.getTime()!==0?e.getDate():""),3))),128))])]))),128))])]))}}),Ce={class:"vue-scheduler flex flex-col h-full"},Le={class:"flex-1 relative overflow-hidden"},Fe={key:0,class:"absolute inset-0 bg-white bg-opacity-75 flex items-center justify-center"},Et=t.defineComponent({__name:"Scheduler",props:{events:{},initialDate:{},viewMode:{default:"week"},dateLocale:{default:void 0},translations:{default:()=>({})},hideViewModeSelector:{type:Boolean,default:!1}},setup(n){const o=n,{currentDate:i,viewMode:r,periodLabel:c,dateRange:k,goToToday:y,goToPrevious:D,goToNext:a,setViewMode:m}=kt(o.initialDate,o.viewMode,o.dateLocale),{visibleEvents:s,loading:e}=xt(o.events,k);t.watch(()=>o.viewMode,w=>{w&&w!==r.value&&m(w)});const f=t.computed(()=>{var w;return((w=o.translations)==null?void 0:w["header.today"])||"today"}),h=w=>{m(w)};return(w,$)=>(t.openBlock(),t.createElementBlock("div",Ce,[t.createVNode(re,{"period-label":t.unref(c),"current-view-mode":t.unref(r),"today-label":f.value,"hide-view-mode-selector":o.hideViewModeSelector,onPrevious:t.unref(D),onToday:t.unref(y),onNext:t.unref(a),onViewModeChange:h},null,8,["period-label","current-view-mode","today-label","hide-view-mode-selector","onPrevious","onToday","onNext"]),t.createElementVNode("div",Le,[t.unref(r)==="day"?(t.openBlock(),t.createBlock(fe,{key:0,date:t.unref(i),events:t.unref(s)},null,8,["date","events"])):t.unref(r)==="week"?(t.openBlock(),t.createBlock(we,{key:1,date:t.unref(i),events:t.unref(s)},null,8,["date","events"])):t.unref(r)==="month"?(t.openBlock(),t.createBlock(Be,{key:2,date:t.unref(i),events:t.unref(s)},null,8,["date","events"])):t.unref(r)==="year"?(t.openBlock(),t.createBlock(Ne,{key:3,date:t.unref(i),events:t.unref(s)},null,8,["date","events"])):t.createCommentVNode("",!0)]),t.unref(e)?(t.openBlock(),t.createElementBlock("div",Fe,[...$[0]||($[0]=[t.createElementVNode("div",{class:"text-gray-600"},"Loading events...",-1)])])):t.createCommentVNode("",!0)]))}});Z.Scheduler=Et,Z.default=Et,Z.useEvents=xt,Z.useScheduler=kt,Object.defineProperties(Z,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});