calendar-simple 1.1.0 → 1.1.1
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/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +73 -77
- package/dist/index.es.js.map +1 -1
- package/dist/index.iife.js +1 -1
- package/dist/index.iife.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var Ee=Object.create,me=Object.defineProperty,be=Object.getOwnPropertyDescriptor,ge=Object.getOwnPropertyNames,Se=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty,_e=(e,u)=>()=>(u||e((u={exports:{}}).exports,u),u.exports),Le=(e,u,o,i)=>{if(u&&typeof u=="object"||typeof u=="function")for(var y=ge(u),l=0,n=y.length,f;l<n;l++)f=y[l],!Me.call(e,f)&&f!==o&&me(e,f,{get:(D=>u[D]).bind(null,f),enumerable:!(i=be(u,f))||i.enumerable});return e},ee=(e,u,o)=>(o=e!=null?Ee(Se(e)):{},Le(u||!e||!e.__esModule?me(o,"default",{value:e,enumerable:!0}):o,e));let r=require("react");r=ee(r);var de=_e(((e,u)=>{(function(){"use strict";var o={}.hasOwnProperty;function i(){for(var n="",f=0;f<arguments.length;f++){var D=arguments[f];D&&(n=l(n,y(D)))}return n}function y(n){if(typeof n=="string"||typeof n=="number")return n;if(typeof n!="object")return"";if(Array.isArray(n))return i.apply(null,n);if(n.toString!==Object.prototype.toString&&!n.toString.toString().includes("[native code]"))return n.toString();var f="";for(var D in n)o.call(n,D)&&n[D]&&(f=l(f,D));return f}function l(n,f){return f?n?n+" "+f:n+f:n}typeof u<"u"&&u.exports?(i.default=i,u.exports=i):typeof define=="function"&&typeof define.amd=="object"&&define.amd?define("classnames",[],function(){return i}):window.classNames=i})()})),Ae=ee(de());let pe=(function(e){return e.fullName="FULL",e.halfName="HALF",e})({}),oe=(function(e){return e.add="add",e.sub="sub",e})({}),le=(function(e){return e.month="month",e.year="year",e})({});var W={SUNDAY:{FULL:"Sunday",HALF:"Sun"},MONDAY:{FULL:"Monday",HALF:"Mon"},TUESDAY:{FULL:"Tuesday",HALF:"Tue"},WEDNESDAY:{FULL:"Wednesday",HALF:"Wed"},THURSDAY:{FULL:"Thursday",HALF:"Thu"},FRIDAY:{FULL:"Friday",HALF:"Fri"},SATURDAY:{FULL:"Saturday",HALF:"Sat"}};const we={FULL:[W.SUNDAY.FULL,W.MONDAY.FULL,W.TUESDAY.FULL,W.WEDNESDAY.FULL,W.THURSDAY.FULL,W.FRIDAY.FULL,W.SATURDAY.FULL],HALF:[W.SUNDAY.HALF,W.MONDAY.HALF,W.TUESDAY.HALF,W.WEDNESDAY.HALF,W.THURSDAY.HALF,W.FRIDAY.HALF,W.SATURDAY.HALF]};var Ce={JAN:{label:"January",value:0},FEB:{label:"February",value:1},MAR:{label:"March",value:2},APR:{label:"April",value:3},MAY:{label:"May",value:4},JUN:{label:"June",value:5},JUL:{label:"July",value:6},AUG:{label:"August",value:7},SEP:{label:"September",value:8},OCT:{label:"October",value:9},NOV:{label:"November",value:10},DEC:{label:"December",value:11}};const Oe=Object.values(Ce),ue={MONTH:"monthDropdown",YEAR:"yearDropdown"},$e={FULL_NAME:"FULL",HALF_NAME:"HALF"},ie={default:{color:"#000",bgColor:"#fff"},selected:{color:"#fff",bgColor:"#007bff"},today:{color:"#007bff",bgColor:"#e6f2ff"}},ve={dayType:pe.halfName,data:[],isSelectDate:!1,pastYearLength:5,futureYearLength:5,theme:ie};var Ne=_e(((e,u)=>{(function(o,i){typeof e=="object"&&typeof u<"u"?u.exports=i():typeof define=="function"&&define.amd?define(i):(o=typeof globalThis<"u"?globalThis:o||self).dayjs=i()})(e,(function(){"use strict";var o=1e3,i=6e4,y=36e5,l="millisecond",n="second",f="minute",D="hour",d="day",L="week",h="month",b="quarter",m="year",O="date",T="Invalid Date",S=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,M=/\[([^\]]+)]|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,$={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(v){var s=["th","st","nd","rd"],t=v%100;return"["+v+(s[(t-20)%10]||s[t]||s[0])+"]"}},w=function(v,s,t){var c=String(v);return!c||c.length>=s?v:""+Array(s+1-c.length).join(t)+v},C={s:w,z:function(v){var s=-v.utcOffset(),t=Math.abs(s),c=Math.floor(t/60),a=t%60;return(s<=0?"+":"-")+w(c,2,"0")+":"+w(a,2,"0")},m:function v(s,t){if(s.date()<t.date())return-v(t,s);var c=12*(t.year()-s.year())+(t.month()-s.month()),a=s.clone().add(c,h),_=t-a<0,p=s.clone().add(c+(_?-1:1),h);return+(-(c+(t-a)/(_?a-p:p-a))||0)},a:function(v){return v<0?Math.ceil(v)||0:Math.floor(v)},p:function(v){return{M:h,y:m,w:L,d,D:O,h:D,m:f,s:n,ms:l,Q:b}[v]||String(v||"").toLowerCase().replace(/s$/,"")},u:function(v){return v===void 0}},F="en",U={};U[F]=$;var V="$isDayjsObject",N=function(v){return v instanceof Z||!(!v||!v[V])},G=function v(s,t,c){var a;if(!s)return F;if(typeof s=="string"){var _=s.toLowerCase();U[_]&&(a=_),t&&(U[_]=t,a=_);var p=s.split("-");if(!a&&p.length>1)return v(p[0])}else{var A=s.name;U[A]=s,a=A}return!c&&a&&(F=a),a||!c&&F},k=function(v,s){if(N(v))return v.clone();var t=typeof s=="object"?s:{};return t.date=v,t.args=arguments,new Z(t)},g=C;g.l=G,g.i=N,g.w=function(v,s){return k(v,{locale:s.$L,utc:s.$u,x:s.$x,$offset:s.$offset})};var Z=(function(){function v(t){this.$L=G(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[V]=!0}var s=v.prototype;return s.parse=function(t){this.$d=(function(c){var a=c.date,_=c.utc;if(a===null)return new Date(NaN);if(g.u(a))return new Date;if(a instanceof Date)return new Date(a);if(typeof a=="string"&&!/Z$/i.test(a)){var p=a.match(S);if(p){var A=p[2]-1||0,Y=(p[7]||"0").substring(0,3);return _?new Date(Date.UTC(p[1],A,p[3]||1,p[4]||0,p[5]||0,p[6]||0,Y)):new Date(p[1],A,p[3]||1,p[4]||0,p[5]||0,p[6]||0,Y)}}return new Date(a)})(t),this.init()},s.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},s.$utils=function(){return g},s.isValid=function(){return this.$d.toString()!==T},s.isSame=function(t,c){var a=k(t);return this.startOf(c)<=a&&a<=this.endOf(c)},s.isAfter=function(t,c){return k(t)<this.startOf(c)},s.isBefore=function(t,c){return this.endOf(c)<k(t)},s.$g=function(t,c,a){return g.u(t)?this[c]:this.set(a,t)},s.unix=function(){return Math.floor(this.valueOf()/1e3)},s.valueOf=function(){return this.$d.getTime()},s.startOf=function(t,c){var a=this,_=!!g.u(c)||c,p=g.p(t),A=function(q,R){var B=g.w(a.$u?Date.UTC(a.$y,R,q):new Date(a.$y,R,q),a);return _?B:B.endOf(d)},Y=function(q,R){return g.w(a.toDate()[q].apply(a.toDate("s"),(_?[0,0,0,0]:[23,59,59,999]).slice(R)),a)},H=this.$W,x=this.$M,I=this.$D,X="set"+(this.$u?"UTC":"");switch(p){case m:return _?A(1,0):A(31,11);case h:return _?A(1,x):A(0,x+1);case L:var J=this.$locale().weekStart||0,te=(H<J?H+7:H)-J;return A(_?I-te:I+(6-te),x);case d:case O:return Y(X+"Hours",0);case D:return Y(X+"Minutes",1);case f:return Y(X+"Seconds",2);case n:return Y(X+"Milliseconds",3);default:return this.clone()}},s.endOf=function(t){return this.startOf(t,!1)},s.$set=function(t,c){var a,_=g.p(t),p="set"+(this.$u?"UTC":""),A=(a={},a[d]=p+"Date",a[O]=p+"Date",a[h]=p+"Month",a[m]=p+"FullYear",a[D]=p+"Hours",a[f]=p+"Minutes",a[n]=p+"Seconds",a[l]=p+"Milliseconds",a)[_],Y=_===d?this.$D+(c-this.$W):c;if(_===h||_===m){var H=this.clone().set(O,1);H.$d[A](Y),H.init(),this.$d=H.set(O,Math.min(this.$D,H.daysInMonth())).$d}else A&&this.$d[A](Y);return this.init(),this},s.set=function(t,c){return this.clone().$set(t,c)},s.get=function(t){return this[g.p(t)]()},s.add=function(t,c){var a,_=this;t=Number(t);var p=g.p(c),A=function(x){var I=k(_);return g.w(I.date(I.date()+Math.round(x*t)),_)};if(p===h)return this.set(h,this.$M+t);if(p===m)return this.set(m,this.$y+t);if(p===d)return A(1);if(p===L)return A(7);var Y=(a={},a[f]=i,a[D]=y,a[n]=o,a)[p]||1,H=this.$d.getTime()+t*Y;return g.w(H,this)},s.subtract=function(t,c){return this.add(-1*t,c)},s.format=function(t){var c=this,a=this.$locale();if(!this.isValid())return a.invalidDate||T;var _=t||"YYYY-MM-DDTHH:mm:ssZ",p=g.z(this),A=this.$H,Y=this.$m,H=this.$M,x=a.weekdays,I=a.months,X=a.meridiem,J=function(R,B,ae,se){return R&&(R[B]||R(c,_))||ae[B].slice(0,se)},te=function(R){return g.s(A%12||12,R,"0")},q=X||function(R,B,ae){var se=R<12?"AM":"PM";return ae?se.toLowerCase():se};return _.replace(M,(function(R,B){return B||(function(ae){switch(ae){case"YY":return String(c.$y).slice(-2);case"YYYY":return g.s(c.$y,4,"0");case"M":return H+1;case"MM":return g.s(H+1,2,"0");case"MMM":return J(a.monthsShort,H,I,3);case"MMMM":return J(I,H);case"D":return c.$D;case"DD":return g.s(c.$D,2,"0");case"d":return String(c.$W);case"dd":return J(a.weekdaysMin,c.$W,x,2);case"ddd":return J(a.weekdaysShort,c.$W,x,3);case"dddd":return x[c.$W];case"H":return String(A);case"HH":return g.s(A,2,"0");case"h":return te(1);case"hh":return te(2);case"a":return q(A,Y,!0);case"A":return q(A,Y,!1);case"m":return String(Y);case"mm":return g.s(Y,2,"0");case"s":return String(c.$s);case"ss":return g.s(c.$s,2,"0");case"SSS":return g.s(c.$ms,3,"0");case"Z":return p}return null})(R)||p.replace(":","")}))},s.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},s.diff=function(t,c,a){var _,p=this,A=g.p(c),Y=k(t),H=(Y.utcOffset()-this.utcOffset())*i,x=this-Y,I=function(){return g.m(p,Y)};switch(A){case m:_=I()/12;break;case h:_=I();break;case b:_=I()/3;break;case L:_=(x-H)/6048e5;break;case d:_=(x-H)/864e5;break;case D:_=x/y;break;case f:_=x/i;break;case n:_=x/o;break;default:_=x}return a?_:g.a(_)},s.daysInMonth=function(){return this.endOf(h).$D},s.$locale=function(){return U[this.$L]},s.locale=function(t,c){if(!t)return this.$L;var a=this.clone(),_=G(t,c,!0);return _&&(a.$L=_),a},s.clone=function(){return g.w(this.$d,this)},s.toDate=function(){return new Date(this.valueOf())},s.toJSON=function(){return this.isValid()?this.toISOString():null},s.toISOString=function(){return this.$d.toISOString()},s.toString=function(){return this.$d.toUTCString()},v})(),ne=Z.prototype;return k.prototype=ne,[["$ms",l],["$s",n],["$m",f],["$H",D],["$W",d],["$M",h],["$y",m],["$D",O]].forEach((function(v){ne[v[1]]=function(s){return this.$g(s,v[0],v[1])}})),k.extend=function(v,s){return v.$i||(v(s,Z,k),v.$i=!0),k},k.locale=G,k.isDayjs=N,k.unix=function(v){return k(1e3*v)},k.en=U[F],k.Ls=U,k.p={},k}))})),z=ee(Ne());const E=z.default,K=e=>(0,z.default)(e).toDate(),Te=e=>(0,z.default)(e),ke=(e,u,o)=>{const i=e+u,y=(0,z.default)().year()-e,l=Array.from({length:i},(n,f)=>f+y);if(!l.includes(o))if((0,z.default)().year()<=o)l.push(o);else return[o,...l];return l},Ye=(e,u)=>{const o=(0,z.default)(e).date(u);return(0,z.default)().isSame(o,"day")};function He(e,u){for(var o=0,i=0,y,l=[],n=new Date(e||new Date),f=n.getFullYear(),D=n.getMonth(),d=new Date(f,D,1-(u|0)).getDay(),L=new Date(f,D+1,0).getDate();o<L;){for(i=0,y=Array(7);i<7;){for(;i<d;)y[i++]=0;y[i++]=++o>L?0:o,d=0}l.push(y)}return l}const Fe=(e,u)=>{const o=[...u].sort((i,y)=>E(i.startDate).startOf("day").diff(E(y.startDate).startOf("day"),"days"));return He(e.toDate()).map((i,y)=>{const l=i.map((h,b)=>{let m=E(e),O=!0,T=h;if(h===0)if(O=!1,y===0){const S=E(e).startOf("month"),M=S.day();m=S.subtract(M-b,"day"),T=m.date()}else{const S=E(e).startOf("month"),M=S.day(),$=y*7+b-M;m=S.add($,"day"),T=m.date()}else m=E(e).date(h);return{currentDate:m,isCurrentMonth:O,displayDay:T}}),n=l[0].currentDate.startOf("day"),f=l[6].currentDate.startOf("day"),D=o.filter(h=>{const b=E(h.startDate).startOf("day"),m=h.endDate?E(h.endDate).startOf("day"):b;return b.isBefore(f.add(1,"day"),"day")&&m.isAfter(n.subtract(1,"day"),"day")});D.sort((h,b)=>{const m=E(h.startDate).startOf("day"),O=E(b.startDate).startOf("day");if(!m.isSame(O,"day"))return m.diff(O);const T=h.endDate?E(h.endDate).startOf("day"):m,S=b.endDate?E(b.endDate).startOf("day"):O,M=T.diff(m,"day");return S.diff(O,"day")-M});const d=Array(7).fill(null).map(()=>[]),L=new Map;return D.forEach((h,b)=>{const m=E(h.startDate).startOf("day"),O=h.endDate?E(h.endDate).startOf("day"):m;let T=m.diff(n,"day"),S=O.diff(n,"day");T<0&&(T=0),S>6&&(S=6);let M=0;for(;;){let w=!0;for(let C=T;C<=S;C++)if(d[C][M]){w=!1;break}if(w)break;M++}const $=h.startDate+h.value+b;L.set($,M);for(let w=T;w<=S;w++)d[w][M]=$;h._tempId=$}),l.map((h,b)=>{const{currentDate:m,isCurrentMonth:O,displayDay:T}=h,S=D.filter(w=>{const C=E(w.startDate).startOf("day"),F=w.endDate?E(w.endDate).startOf("day"):C;return!m.isBefore(C,"day")&&!m.isAfter(F,"day")}),M=[];let $=-1;S.forEach(w=>{const C=L.get(w._tempId);C!==void 0&&C>$&&($=C)});for(let w=0;w<=$;w++){const C=S.find(F=>L.get(F._tempId)===w);if(C)if(E(C.startDate).startOf("day").isSame(m,"day")||b===0){const F=C.endDate?E(C.endDate).startOf("day"):E(C.startDate).startOf("day"),U=E(m).add(6-b,"day");let V=F;F.isAfter(U,"date")&&(V=U),M.push({...C,startDateWeek:m.format("YYYY-MM-DD"),endDateWeek:V.format("YYYY-MM-DD")})}else M.push({...C,isSpacer:!0});else M.push(null)}return{currentDate:m,isCurrentMonth:O,displayDay:T,events:M,totalEvents:S.length,isToday:Ye(e,T)&&O}})})},xe=e=>{const l=e/6-28-8,n=Math.round(l/26)-1;return Math.max(0,n)},Ue=e=>{const[u,o]=(0,r.useState)({width:0,height:0});return(0,r.useEffect)(()=>{const i=e.current;if(!i)return;const y=new ResizeObserver(l=>{if(!Array.isArray(l)||!l.length)return;const{width:n,height:f}=l[0].contentRect;o({width:n,height:f})});return y.observe(i),()=>{y.disconnect()}},[e]),u},Re="_calendarContainer_q5rnf_1",We="_calendar_q5rnf_1",Ie="_table_q5rnf_56",Pe="_tableHeader_q5rnf_61",je="_tableCell_q5rnf_62",Be="_tableBody_q5rnf_88";var Q={calendarContainer:Re,calendar:We,table:Ie,tableHeader:Pe,tableCell:je,tableBody:Be};const Ve="_dateData_5xvpr_1",Ge="_currentMonth_5xvpr_16",Je="_cellContent_5xvpr_21",qe="_dateLabel_5xvpr_30",ze="_selected_5xvpr_44",Ze="_today_5xvpr_49",Xe="_dataContainer_5xvpr_54",Qe="_spacer_5xvpr_62",Ke="_eventItem_5xvpr_67",et="_moreEventsContainer_5xvpr_95",tt="_moreEvents_5xvpr_95";var P={dateData:Ve,currentMonth:Ge,cellContent:Je,dateLabel:qe,selected:ze,today:Ze,dataContainer:Xe,spacer:Qe,eventItem:Ke,moreEventsContainer:et,moreEvents:tt};const at="_popover_1l8k5_1",rt="_fadeIn_1l8k5_1",nt="_popoverHeader_1l8k5_33",st="_popoverItem_1l8k5_44",ot="_startBefore_1l8k5_62",lt="_endAfter_1l8k5_69";var re={popover:at,fadeIn:rt,popoverHeader:nt,popoverItem:st,startBefore:ot,endAfter:lt};function ut({dateObj:e,events:u,onEventClick:o,onClose:i}){const y=(0,r.useRef)(null);return(0,r.useEffect)(()=>{function l(n){y.current&&!y.current.contains(n.target)&&i()}return document.addEventListener("mousedown",l),()=>{document.removeEventListener("mousedown",l)}},[i]),r.default.createElement("div",{className:re.popover,ref:y,onClick:l=>l.stopPropagation()},r.default.createElement("div",{className:re.popoverHeader},E(e).format("ddd, D MMM")),u.map((l,n)=>{const f=E(e).startOf("day"),D=E(l.startDate).startOf("day"),d=l.endDate?E(l.endDate).startOf("day"):D,L=D.isBefore(f,"day"),h=d.isAfter(f,"day");return r.default.createElement("div",{key:`pop-${n}`,className:(0,Ae.default)(re.popoverItem,{[re.startBefore]:L,[re.endAfter]:h}),style:{backgroundColor:l.color},onClick:b=>{b.stopPropagation(),o?.(l),i()},title:l.value},l.value)}))}var ct=ut,ce=ee(de());function it({date:e,dateObj:u,data:o,cellWidth:i,className:y,dataClassName:l,isSelected:n,isToday:f,onClick:D,selectedClassName:d,todayClassName:L,isCurrentMonth:h,theme:b,maxEvents:m=3,onMoreClick:O,onEventClick:T,totalEvents:S=0}){const[M,$]=r.default.useState(!1),w=n?{...ie.selected,...b?.selected}:f?{...ie.today,...b?.today}:{...ie.default,...b?.default},C={color:w?.color,backgroundColor:w?.bgColor};let F=o,U=0;(m||m===0)&&o&&(S>=m||o.length>m)&&(F=o.slice(0,m),U=S-F.filter(N=>N!==null).length);const V=o?.filter(N=>N!==null)||[];return r.default.createElement("td",{style:C,onClick:()=>D?.(u),className:(0,ce.default)(P.dateData,y,{[P.currentMonth]:!h,[(0,ce.default)(P.selected,d)]:n,[(0,ce.default)(P.today,L)]:f})},r.default.createElement("div",{className:P.cellContent},r.default.createElement("p",{className:P.dateLabel},e),o&&r.default.createElement("div",{className:(0,ce.default)(P.dataContainer,l)},F.map((N,G)=>{if(!N||N.isSpacer)return r.default.createElement("div",{key:`spacer-${G}`,className:P.spacer});let k=1,g=E(N.startDate).format("YYYY-MM-DD");N.endDateWeek&&(k=E(N.endDateWeek).diff(N.startDateWeek,"days")+1,g+=` to ${E(N.endDate).format("YYYY-MM-DD")}`),g+=` - ${N.value}`;const Z=`${i*k-16}px`;return r.default.createElement("div",{key:`${N.startDate}-${G}`,className:P.eventItem,style:{width:Z,backgroundColor:N.color},title:g,onClick:ne=>{ne.stopPropagation(),T?.(N)}},N.value)}),U>0&&r.default.createElement("div",{className:P.moreEventsContainer},r.default.createElement("button",{className:P.moreEvents,onClick:N=>{N.stopPropagation(),!M&&$(!0),O?.(u)}},"+ ",U," more"),M&&r.default.createElement(ct,{dateObj:u,events:V,onEventClick:T,onClose:()=>$(!1)})))))}var dt=it;const ft="_header_7f1ps_1",ht="_navigation_7f1ps_11",vt="_todayButton_7f1ps_17",mt="_arrows_7f1ps_35",_t="_iconButton_7f1ps_41",pt="_dateTitle_7f1ps_61",yt="_controls_7f1ps_70",Dt="_select_7f1ps_76";var j={header:ft,navigation:ht,todayButton:vt,arrows:mt,iconButton:_t,dateTitle:pt,controls:yt,select:Dt};function Et(){return r.default.createElement("svg",{width:"40px",height:"40px",viewBox:"0 0 24.00 24.00",fill:"none",xmlns:"http://www.w3.org/2000/svg",stroke:"currentColor",transform:"rotate(180)"},r.default.createElement("g",{id:"SVGRepo_bgCarrier",strokeWidth:"0"}),r.default.createElement("g",{id:"SVGRepo_tracerCarrier",strokeLinecap:"round",strokeLinejoin:"round"}),r.default.createElement("g",{id:"SVGRepo_iconCarrier"},r.default.createElement("path",{d:"M10 7L15 12L10 17",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"})))}var bt=Et;function gt(){return r.default.createElement("svg",{width:"40px",height:"40px",viewBox:"0 0 24.00 24.00",fill:"none",xmlns:"http://www.w3.org/2000/svg",stroke:"currentColor"},r.default.createElement("g",{id:"SVGRepo_bgCarrier",strokeWidth:"0"}),r.default.createElement("g",{id:"SVGRepo_tracerCarrier",strokeLinecap:"round",strokeLinejoin:"round"}),r.default.createElement("g",{id:"SVGRepo_iconCarrier"},r.default.createElement("path",{d:"M10 7L15 12L10 17",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"})))}var St=gt,fe={currentDate:E(),selectedDate:E(),view:"month",events:[]},ye=(0,r.createContext)(void 0);function Mt(e,u){switch(u.type){case"SET_DATE":return{...e,currentDate:u.payload,selectedDate:u.payload};case"SET_VIEW":return{...e,view:u.payload};case"SET_EVENTS":return{...e,events:u.payload};case"NEXT":{let o=e.currentDate;return e.view==="month"?o=o.add(1,"month"):e.view==="week"?o=o.add(1,"week"):e.view==="day"&&(o=o.add(1,"day")),{...e,currentDate:o}}case"PREV":{let o=e.currentDate;return e.view==="month"?o=o.subtract(1,"month"):e.view==="week"?o=o.subtract(1,"week"):e.view==="day"&&(o=o.subtract(1,"day")),{...e,currentDate:o}}case"TODAY":return{...e,currentDate:E(),selectedDate:E()};default:return e}}function Lt({children:e,initialEvents:u=[],initialDate:o}){const[i,y]=(0,r.useReducer)(Mt,{...fe,events:u,currentDate:o||fe.currentDate,selectedDate:o||fe.selectedDate}),l=(0,r.useMemo)(()=>({state:i,dispatch:y}),[i]);return r.default.createElement(ye.Provider,{value:l},e)}const De=()=>{const e=(0,r.useContext)(ye);if(e===void 0)throw new Error("useCalendar must be used within a CalendarProvider");return e};var At=ee(de());function wt({headerClassName:e,pastYearLength:u=5,futureYearLength:o=5,onMonthChange:i}){const{state:y,dispatch:l}=De(),{currentDate:n}=y,f=d=>{if(d===oe.add){l({type:"NEXT"});const L=n.add(1,"month");i?.(K(L))}else if(d===oe.sub){l({type:"PREV"});const L=n.subtract(1,"month");i?.(K(L))}},D=(d,L)=>{const h=Number(d.target.value);let b=n;L===le.month?b=E(n).month(h):L===le.year&&(b=E(n).year(h)),l({type:"SET_DATE",payload:b}),i?.(K(b))};return r.default.createElement("div",{className:(0,At.default)(j.header,e)},r.default.createElement("div",{className:j.navigation},r.default.createElement("button",{className:j.todayButton,onClick:()=>{l({type:"TODAY"}),i?.(K(E()))}},"Today"),r.default.createElement("div",{className:j.arrows},r.default.createElement("button",{className:j.iconButton,onClick:()=>f(oe.sub)},r.default.createElement(bt,null)),r.default.createElement("button",{className:j.iconButton,onClick:()=>f(oe.add)},r.default.createElement(St,null))),r.default.createElement("h2",{className:j.dateTitle},n.format("MMMM YYYY"))),r.default.createElement("div",{className:j.controls},r.default.createElement("select",{className:j.select,id:ue.MONTH,name:ue.MONTH,value:n.month(),onChange:d=>D(d,le.month)},Oe.map(d=>r.default.createElement("option",{key:d.label,value:d.value},d.label))),r.default.createElement("select",{className:j.select,id:ue.YEAR,name:ue.YEAR,value:n.year(),onChange:d=>D(d,le.year)},ke(u,o,n.year()).map(d=>r.default.createElement("option",{key:d,value:d},d)))))}var Ct=wt,he=ee(de());function Ot({dayType:e,width:u,height:o,onDateClick:i,onEventClick:y,onMoreClick:l,onMonthChange:n,isSelectDate:f,data:D,...d}){const{state:L,dispatch:h}=De(),{currentDate:b,events:m}=L;(0,r.useEffect)(()=>{D&&h({type:"SET_EVENTS",payload:D})},[D,h]);const O=(0,r.useMemo)(()=>Fe(b,m),[b,m]),T=(0,r.useCallback)(S=>{const M=E(S);M.isSame(b,"day")||(h({type:"SET_DATE",payload:M}),i?.(K(M)))},[b,h,i]);return r.default.createElement("section",{style:{"--calendar-width":`${u}px`,"--calendar-height":`${o}px`},className:(0,he.default)(Q.calendar,d.className)},r.default.createElement(Ct,{headerClassName:d.headerClassName,onMonthChange:n,pastYearLength:d.pastYearLength,futureYearLength:d.futureYearLength}),r.default.createElement("table",{className:(0,he.default)(Q.table,d.tableClassName)},r.default.createElement("thead",null,r.default.createElement("tr",null,we[e].map(S=>r.default.createElement("th",{key:S,className:Q.tableHeader},S)))),r.default.createElement("tbody",{className:Q.tableBody},O.map((S,M)=>r.default.createElement("tr",{key:M},S.map(($,w)=>r.default.createElement(dt,{key:`date_${M}_${w}`,isSelected:f&&$.isCurrentMonth&&$.displayDay===b.date(),isToday:$.isToday,isCurrentMonth:$.isCurrentMonth,onClick:f?T:void 0,date:$.displayDay,dateObj:$.currentDate,data:$.events,cellWidth:u/7,className:(0,he.default)(Q.tableCell,d.tableDateClassName),dataClassName:d.dataClassName,selectedClassName:d.selectedClassName,todayClassName:d.todayClassName,theme:d.theme,maxEvents:d.maxEvents,totalEvents:$.totalEvents,onEventClick:y,onMoreClick:C=>l?.(K(C))})))))))}function $t(e=ve){const u=r.default.useRef(null),{width:o,height:i}=Ue(u),y={...ve,...e},{data:l,selectedDate:n}=y,f=e.width??o??0,D=(e.height??i??0)-120,d=(0,r.useMemo)(()=>n?Te(n):void 0,[n]),L=y.maxEvents??xe(D);return r.default.createElement(Lt,{initialEvents:l,initialDate:d},r.default.createElement("div",{ref:u,className:Q.calendarContainer},r.default.createElement(Ot,{...y,width:f,height:D,maxEvents:L})))}var Nt=(0,r.memo)($t),Tt=Nt;exports.DAY_TYPE=$e;exports.EDayType=pe;exports.default=Tt;
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var Ee=Object.create,me=Object.defineProperty,be=Object.getOwnPropertyDescriptor,ge=Object.getOwnPropertyNames,Se=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty,_e=(e,u)=>()=>(u||e((u={exports:{}}).exports,u),u.exports),Le=(e,u,o,i)=>{if(u&&typeof u=="object"||typeof u=="function")for(var y=ge(u),l=0,n=y.length,f;l<n;l++)f=y[l],!Me.call(e,f)&&f!==o&&me(e,f,{get:(D=>u[D]).bind(null,f),enumerable:!(i=be(u,f))||i.enumerable});return e},ee=(e,u,o)=>(o=e!=null?Ee(Se(e)):{},Le(u||!e||!e.__esModule?me(o,"default",{value:e,enumerable:!0}):o,e));let r=require("react");r=ee(r);var de=_e(((e,u)=>{(function(){"use strict";var o={}.hasOwnProperty;function i(){for(var n="",f=0;f<arguments.length;f++){var D=arguments[f];D&&(n=l(n,y(D)))}return n}function y(n){if(typeof n=="string"||typeof n=="number")return n;if(typeof n!="object")return"";if(Array.isArray(n))return i.apply(null,n);if(n.toString!==Object.prototype.toString&&!n.toString.toString().includes("[native code]"))return n.toString();var f="";for(var D in n)o.call(n,D)&&n[D]&&(f=l(f,D));return f}function l(n,f){return f?n?n+" "+f:n+f:n}typeof u<"u"&&u.exports?(i.default=i,u.exports=i):typeof define=="function"&&typeof define.amd=="object"&&define.amd?define("classnames",[],function(){return i}):window.classNames=i})()})),Ae=ee(de());let pe=(function(e){return e.fullName="FULL",e.halfName="HALF",e})({}),oe=(function(e){return e.add="add",e.sub="sub",e})({}),le=(function(e){return e.month="month",e.year="year",e})({});var W={SUNDAY:{FULL:"Sunday",HALF:"Sun"},MONDAY:{FULL:"Monday",HALF:"Mon"},TUESDAY:{FULL:"Tuesday",HALF:"Tue"},WEDNESDAY:{FULL:"Wednesday",HALF:"Wed"},THURSDAY:{FULL:"Thursday",HALF:"Thu"},FRIDAY:{FULL:"Friday",HALF:"Fri"},SATURDAY:{FULL:"Saturday",HALF:"Sat"}};const we={FULL:[W.SUNDAY.FULL,W.MONDAY.FULL,W.TUESDAY.FULL,W.WEDNESDAY.FULL,W.THURSDAY.FULL,W.FRIDAY.FULL,W.SATURDAY.FULL],HALF:[W.SUNDAY.HALF,W.MONDAY.HALF,W.TUESDAY.HALF,W.WEDNESDAY.HALF,W.THURSDAY.HALF,W.FRIDAY.HALF,W.SATURDAY.HALF]};var Ce={JAN:{label:"January",value:0},FEB:{label:"February",value:1},MAR:{label:"March",value:2},APR:{label:"April",value:3},MAY:{label:"May",value:4},JUN:{label:"June",value:5},JUL:{label:"July",value:6},AUG:{label:"August",value:7},SEP:{label:"September",value:8},OCT:{label:"October",value:9},NOV:{label:"November",value:10},DEC:{label:"December",value:11}};const Oe=Object.values(Ce),ue={MONTH:"monthDropdown",YEAR:"yearDropdown"},$e={FULL_NAME:"FULL",HALF_NAME:"HALF"},ie={default:{color:"#000",bgColor:"#fff"},selected:{color:"#fff",bgColor:"#007bff"},today:{color:"#007bff",bgColor:"#e6f2ff"}},ve={dayType:pe.halfName,data:[],isSelectDate:!1,pastYearLength:5,futureYearLength:5,theme:ie};var Ne=_e(((e,u)=>{(function(o,i){typeof e=="object"&&typeof u<"u"?u.exports=i():typeof define=="function"&&define.amd?define(i):(o=typeof globalThis<"u"?globalThis:o||self).dayjs=i()})(e,(function(){"use strict";var o=1e3,i=6e4,y=36e5,l="millisecond",n="second",f="minute",D="hour",d="day",L="week",v="month",b="quarter",m="year",O="date",T="Invalid Date",S=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,M=/\[([^\]]+)]|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,$={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(h){var s=["th","st","nd","rd"],t=h%100;return"["+h+(s[(t-20)%10]||s[t]||s[0])+"]"}},w=function(h,s,t){var c=String(h);return!c||c.length>=s?h:""+Array(s+1-c.length).join(t)+h},C={s:w,z:function(h){var s=-h.utcOffset(),t=Math.abs(s),c=Math.floor(t/60),a=t%60;return(s<=0?"+":"-")+w(c,2,"0")+":"+w(a,2,"0")},m:function h(s,t){if(s.date()<t.date())return-h(t,s);var c=12*(t.year()-s.year())+(t.month()-s.month()),a=s.clone().add(c,v),_=t-a<0,p=s.clone().add(c+(_?-1:1),v);return+(-(c+(t-a)/(_?a-p:p-a))||0)},a:function(h){return h<0?Math.ceil(h)||0:Math.floor(h)},p:function(h){return{M:v,y:m,w:L,d,D:O,h:D,m:f,s:n,ms:l,Q:b}[h]||String(h||"").toLowerCase().replace(/s$/,"")},u:function(h){return h===void 0}},F="en",U={};U[F]=$;var V="$isDayjsObject",N=function(h){return h instanceof Z||!(!h||!h[V])},G=function h(s,t,c){var a;if(!s)return F;if(typeof s=="string"){var _=s.toLowerCase();U[_]&&(a=_),t&&(U[_]=t,a=_);var p=s.split("-");if(!a&&p.length>1)return h(p[0])}else{var A=s.name;U[A]=s,a=A}return!c&&a&&(F=a),a||!c&&F},k=function(h,s){if(N(h))return h.clone();var t=typeof s=="object"?s:{};return t.date=h,t.args=arguments,new Z(t)},g=C;g.l=G,g.i=N,g.w=function(h,s){return k(h,{locale:s.$L,utc:s.$u,x:s.$x,$offset:s.$offset})};var Z=(function(){function h(t){this.$L=G(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[V]=!0}var s=h.prototype;return s.parse=function(t){this.$d=(function(c){var a=c.date,_=c.utc;if(a===null)return new Date(NaN);if(g.u(a))return new Date;if(a instanceof Date)return new Date(a);if(typeof a=="string"&&!/Z$/i.test(a)){var p=a.match(S);if(p){var A=p[2]-1||0,Y=(p[7]||"0").substring(0,3);return _?new Date(Date.UTC(p[1],A,p[3]||1,p[4]||0,p[5]||0,p[6]||0,Y)):new Date(p[1],A,p[3]||1,p[4]||0,p[5]||0,p[6]||0,Y)}}return new Date(a)})(t),this.init()},s.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},s.$utils=function(){return g},s.isValid=function(){return this.$d.toString()!==T},s.isSame=function(t,c){var a=k(t);return this.startOf(c)<=a&&a<=this.endOf(c)},s.isAfter=function(t,c){return k(t)<this.startOf(c)},s.isBefore=function(t,c){return this.endOf(c)<k(t)},s.$g=function(t,c,a){return g.u(t)?this[c]:this.set(a,t)},s.unix=function(){return Math.floor(this.valueOf()/1e3)},s.valueOf=function(){return this.$d.getTime()},s.startOf=function(t,c){var a=this,_=!!g.u(c)||c,p=g.p(t),A=function(q,R){var B=g.w(a.$u?Date.UTC(a.$y,R,q):new Date(a.$y,R,q),a);return _?B:B.endOf(d)},Y=function(q,R){return g.w(a.toDate()[q].apply(a.toDate("s"),(_?[0,0,0,0]:[23,59,59,999]).slice(R)),a)},H=this.$W,x=this.$M,I=this.$D,X="set"+(this.$u?"UTC":"");switch(p){case m:return _?A(1,0):A(31,11);case v:return _?A(1,x):A(0,x+1);case L:var J=this.$locale().weekStart||0,te=(H<J?H+7:H)-J;return A(_?I-te:I+(6-te),x);case d:case O:return Y(X+"Hours",0);case D:return Y(X+"Minutes",1);case f:return Y(X+"Seconds",2);case n:return Y(X+"Milliseconds",3);default:return this.clone()}},s.endOf=function(t){return this.startOf(t,!1)},s.$set=function(t,c){var a,_=g.p(t),p="set"+(this.$u?"UTC":""),A=(a={},a[d]=p+"Date",a[O]=p+"Date",a[v]=p+"Month",a[m]=p+"FullYear",a[D]=p+"Hours",a[f]=p+"Minutes",a[n]=p+"Seconds",a[l]=p+"Milliseconds",a)[_],Y=_===d?this.$D+(c-this.$W):c;if(_===v||_===m){var H=this.clone().set(O,1);H.$d[A](Y),H.init(),this.$d=H.set(O,Math.min(this.$D,H.daysInMonth())).$d}else A&&this.$d[A](Y);return this.init(),this},s.set=function(t,c){return this.clone().$set(t,c)},s.get=function(t){return this[g.p(t)]()},s.add=function(t,c){var a,_=this;t=Number(t);var p=g.p(c),A=function(x){var I=k(_);return g.w(I.date(I.date()+Math.round(x*t)),_)};if(p===v)return this.set(v,this.$M+t);if(p===m)return this.set(m,this.$y+t);if(p===d)return A(1);if(p===L)return A(7);var Y=(a={},a[f]=i,a[D]=y,a[n]=o,a)[p]||1,H=this.$d.getTime()+t*Y;return g.w(H,this)},s.subtract=function(t,c){return this.add(-1*t,c)},s.format=function(t){var c=this,a=this.$locale();if(!this.isValid())return a.invalidDate||T;var _=t||"YYYY-MM-DDTHH:mm:ssZ",p=g.z(this),A=this.$H,Y=this.$m,H=this.$M,x=a.weekdays,I=a.months,X=a.meridiem,J=function(R,B,ae,se){return R&&(R[B]||R(c,_))||ae[B].slice(0,se)},te=function(R){return g.s(A%12||12,R,"0")},q=X||function(R,B,ae){var se=R<12?"AM":"PM";return ae?se.toLowerCase():se};return _.replace(M,(function(R,B){return B||(function(ae){switch(ae){case"YY":return String(c.$y).slice(-2);case"YYYY":return g.s(c.$y,4,"0");case"M":return H+1;case"MM":return g.s(H+1,2,"0");case"MMM":return J(a.monthsShort,H,I,3);case"MMMM":return J(I,H);case"D":return c.$D;case"DD":return g.s(c.$D,2,"0");case"d":return String(c.$W);case"dd":return J(a.weekdaysMin,c.$W,x,2);case"ddd":return J(a.weekdaysShort,c.$W,x,3);case"dddd":return x[c.$W];case"H":return String(A);case"HH":return g.s(A,2,"0");case"h":return te(1);case"hh":return te(2);case"a":return q(A,Y,!0);case"A":return q(A,Y,!1);case"m":return String(Y);case"mm":return g.s(Y,2,"0");case"s":return String(c.$s);case"ss":return g.s(c.$s,2,"0");case"SSS":return g.s(c.$ms,3,"0");case"Z":return p}return null})(R)||p.replace(":","")}))},s.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},s.diff=function(t,c,a){var _,p=this,A=g.p(c),Y=k(t),H=(Y.utcOffset()-this.utcOffset())*i,x=this-Y,I=function(){return g.m(p,Y)};switch(A){case m:_=I()/12;break;case v:_=I();break;case b:_=I()/3;break;case L:_=(x-H)/6048e5;break;case d:_=(x-H)/864e5;break;case D:_=x/y;break;case f:_=x/i;break;case n:_=x/o;break;default:_=x}return a?_:g.a(_)},s.daysInMonth=function(){return this.endOf(v).$D},s.$locale=function(){return U[this.$L]},s.locale=function(t,c){if(!t)return this.$L;var a=this.clone(),_=G(t,c,!0);return _&&(a.$L=_),a},s.clone=function(){return g.w(this.$d,this)},s.toDate=function(){return new Date(this.valueOf())},s.toJSON=function(){return this.isValid()?this.toISOString():null},s.toISOString=function(){return this.$d.toISOString()},s.toString=function(){return this.$d.toUTCString()},h})(),ne=Z.prototype;return k.prototype=ne,[["$ms",l],["$s",n],["$m",f],["$H",D],["$W",d],["$M",v],["$y",m],["$D",O]].forEach((function(h){ne[h[1]]=function(s){return this.$g(s,h[0],h[1])}})),k.extend=function(h,s){return h.$i||(h(s,Z,k),h.$i=!0),k},k.locale=G,k.isDayjs=N,k.unix=function(h){return k(1e3*h)},k.en=U[F],k.Ls=U,k.p={},k}))})),z=ee(Ne());const E=z.default,K=e=>(0,z.default)(e).toDate(),Te=e=>(0,z.default)(e),ke=(e,u,o)=>{const i=e+u,y=(0,z.default)().year()-e,l=Array.from({length:i},(n,f)=>f+y);if(!l.includes(o))if((0,z.default)().year()<=o)l.push(o);else return[o,...l];return l},Ye=(e,u)=>{const o=(0,z.default)(e).date(u);return(0,z.default)().isSame(o,"day")};function He(e,u){for(var o=0,i=0,y,l=[],n=new Date(e||new Date),f=n.getFullYear(),D=n.getMonth(),d=new Date(f,D,1-(u|0)).getDay(),L=new Date(f,D+1,0).getDate();o<L;){for(i=0,y=Array(7);i<7;){for(;i<d;)y[i++]=0;y[i++]=++o>L?0:o,d=0}l.push(y)}return l}const Fe=(e,u)=>{const o=[...u].sort((i,y)=>E(i.startDate).startOf("day").diff(E(y.startDate).startOf("day"),"days"));return He(e.toDate()).map((i,y)=>{const l=i.map((v,b)=>{let m=E(e),O=!0,T=v;if(v===0)if(O=!1,y===0){const S=E(e).startOf("month"),M=S.day();m=S.subtract(M-b,"day"),T=m.date()}else{const S=E(e).startOf("month"),M=S.day(),$=y*7+b-M;m=S.add($,"day"),T=m.date()}else m=E(e).date(v);return{currentDate:m,isCurrentMonth:O,displayDay:T}}),n=l[0].currentDate.startOf("day"),f=l[6].currentDate.startOf("day"),D=o.filter(v=>{const b=E(v.startDate).startOf("day"),m=v.endDate?E(v.endDate).startOf("day"):b;return b.isBefore(f.add(1,"day"),"day")&&m.isAfter(n.subtract(1,"day"),"day")});D.sort((v,b)=>{const m=E(v.startDate).startOf("day"),O=E(b.startDate).startOf("day");if(!m.isSame(O,"day"))return m.diff(O);const T=v.endDate?E(v.endDate).startOf("day"):m,S=b.endDate?E(b.endDate).startOf("day"):O,M=T.diff(m,"day");return S.diff(O,"day")-M});const d=Array(7).fill(null).map(()=>[]),L=new Map;return D.forEach((v,b)=>{const m=E(v.startDate).startOf("day"),O=v.endDate?E(v.endDate).startOf("day"):m;let T=m.diff(n,"day"),S=O.diff(n,"day");T<0&&(T=0),S>6&&(S=6);let M=0;for(;;){let w=!0;for(let C=T;C<=S;C++)if(d[C][M]){w=!1;break}if(w)break;M++}const $=v.startDate+v.value+b;L.set($,M);for(let w=T;w<=S;w++)d[w][M]=$;v._tempId=$}),l.map((v,b)=>{const{currentDate:m,isCurrentMonth:O,displayDay:T}=v,S=D.filter(w=>{const C=E(w.startDate).startOf("day"),F=w.endDate?E(w.endDate).startOf("day"):C;return!m.isBefore(C,"day")&&!m.isAfter(F,"day")}),M=[];let $=-1;S.forEach(w=>{const C=L.get(w._tempId);C!==void 0&&C>$&&($=C)});for(let w=0;w<=$;w++){const C=S.find(F=>L.get(F._tempId)===w);if(C)if(E(C.startDate).startOf("day").isSame(m,"day")||b===0){const F=C.endDate?E(C.endDate).startOf("day"):E(C.startDate).startOf("day"),U=E(m).add(6-b,"day");let V=F;F.isAfter(U,"date")&&(V=U),M.push({...C,startDateWeek:m.format("YYYY-MM-DD"),endDateWeek:V.format("YYYY-MM-DD")})}else M.push({...C,isSpacer:!0});else M.push(null)}return{currentDate:m,isCurrentMonth:O,displayDay:T,events:M,totalEvents:S.length,isToday:Ye(e,T)&&O}})})},xe=e=>{const l=e/6-28-8,n=Math.round(l/26)-1;return Math.max(0,n)},Ue=e=>{const[u,o]=(0,r.useState)({width:0,height:0});return(0,r.useEffect)(()=>{const i=e.current;if(!i)return;const y=new ResizeObserver(l=>{if(!Array.isArray(l)||!l.length)return;const{width:n,height:f}=l[0].contentRect;o({width:n,height:f})});return y.observe(i),()=>{y.disconnect()}},[e]),u},Re="_calendarContainer_q5rnf_1",We="_calendar_q5rnf_1",Ie="_table_q5rnf_56",Pe="_tableHeader_q5rnf_61",je="_tableCell_q5rnf_62",Be="_tableBody_q5rnf_88";var Q={calendarContainer:Re,calendar:We,table:Ie,tableHeader:Pe,tableCell:je,tableBody:Be};const Ve="_dateData_5xvpr_1",Ge="_currentMonth_5xvpr_16",Je="_cellContent_5xvpr_21",qe="_dateLabel_5xvpr_30",ze="_selected_5xvpr_44",Ze="_today_5xvpr_49",Xe="_dataContainer_5xvpr_54",Qe="_spacer_5xvpr_62",Ke="_eventItem_5xvpr_67",et="_moreEventsContainer_5xvpr_95",tt="_moreEvents_5xvpr_95";var P={dateData:Ve,currentMonth:Ge,cellContent:Je,dateLabel:qe,selected:ze,today:Ze,dataContainer:Xe,spacer:Qe,eventItem:Ke,moreEventsContainer:et,moreEvents:tt};const at="_popover_1l8k5_1",rt="_fadeIn_1l8k5_1",nt="_popoverHeader_1l8k5_33",st="_popoverItem_1l8k5_44",ot="_startBefore_1l8k5_62",lt="_endAfter_1l8k5_69";var re={popover:at,fadeIn:rt,popoverHeader:nt,popoverItem:st,startBefore:ot,endAfter:lt};function ut({dateObj:e,events:u,onEventClick:o,onClose:i}){const y=(0,r.useRef)(null);return(0,r.useEffect)(()=>{function l(n){y.current&&!y.current.contains(n.target)&&i()}return document.addEventListener("mousedown",l),()=>{document.removeEventListener("mousedown",l)}},[i]),r.default.createElement("div",{className:re.popover,ref:y,onClick:l=>l.stopPropagation()},r.default.createElement("div",{className:re.popoverHeader},E(e).format("ddd, D MMM")),u.map((l,n)=>{const f=E(e).startOf("day"),D=E(l.startDate).startOf("day"),d=l.endDate?E(l.endDate).startOf("day"):D,L=D.isBefore(f,"day"),v=d.isAfter(f,"day");return r.default.createElement("div",{key:`pop-${n}`,className:(0,Ae.default)(re.popoverItem,{[re.startBefore]:L,[re.endAfter]:v}),style:{backgroundColor:l.color},onClick:b=>{b.stopPropagation(),o?.(l),i()},title:l.value},l.value)}))}var ct=ut,ce=ee(de());function it({date:e,dateObj:u,data:o,cellWidth:i,className:y,dataClassName:l,isSelected:n,isToday:f,onClick:D,selectedClassName:d,todayClassName:L,isCurrentMonth:v,theme:b,maxEvents:m=3,onMoreClick:O,onEventClick:T,totalEvents:S=0}){const[M,$]=r.default.useState(!1),w=n?{...ie.selected,...b?.selected}:f?{...ie.today,...b?.today}:{...ie.default,...b?.default},C={color:w?.color,backgroundColor:w?.bgColor};let F=o,U=0;(m||m===0)&&o&&(S>=m||o.length>m)&&(F=o.slice(0,m),U=S-F.filter(N=>N!==null).length);const V=o?.filter(N=>N!==null)||[];return r.default.createElement("td",{style:C,onClick:()=>D?.(u),className:(0,ce.default)(P.dateData,y,{[P.currentMonth]:!v,[(0,ce.default)(P.selected,d)]:n,[(0,ce.default)(P.today,L)]:f})},r.default.createElement("div",{className:P.cellContent},r.default.createElement("p",{className:P.dateLabel},e),o&&r.default.createElement("div",{className:(0,ce.default)(P.dataContainer,l)},F.map((N,G)=>{if(!N||N.isSpacer)return r.default.createElement("div",{key:`spacer-${G}`,className:P.spacer});let k=1,g=E(N.startDate).format("YYYY-MM-DD");N.endDateWeek&&(k=E(N.endDateWeek).diff(N.startDateWeek,"days")+1,g+=` to ${E(N.endDate).format("YYYY-MM-DD")}`),g+=` - ${N.value}`;const Z=`${i*k-16}px`;return r.default.createElement("div",{key:`${N.startDate}-${G}`,className:P.eventItem,style:{width:Z,backgroundColor:N.color},title:g,onClick:ne=>{ne.stopPropagation(),T?.(N)}},N.value)}),U>0&&r.default.createElement("div",{className:P.moreEventsContainer},r.default.createElement("button",{className:P.moreEvents,onClick:N=>{N.stopPropagation(),!M&&$(!0),O?.(u)}},"+ ",U," more"),M&&r.default.createElement(ct,{dateObj:u,events:V,onEventClick:T,onClose:()=>$(!1)})))))}var dt=it;const ft="_header_7f1ps_1",ht="_navigation_7f1ps_11",vt="_todayButton_7f1ps_17",mt="_arrows_7f1ps_35",_t="_iconButton_7f1ps_41",pt="_dateTitle_7f1ps_61",yt="_controls_7f1ps_70",Dt="_select_7f1ps_76";var j={header:ft,navigation:ht,todayButton:vt,arrows:mt,iconButton:_t,dateTitle:pt,controls:yt,select:Dt};function Et(){return r.default.createElement("svg",{width:"40px",height:"40px",viewBox:"0 0 24.00 24.00",fill:"none",xmlns:"http://www.w3.org/2000/svg",stroke:"currentColor",transform:"rotate(180)"},r.default.createElement("g",{id:"SVGRepo_bgCarrier",strokeWidth:"0"}),r.default.createElement("g",{id:"SVGRepo_tracerCarrier",strokeLinecap:"round",strokeLinejoin:"round"}),r.default.createElement("g",{id:"SVGRepo_iconCarrier"},r.default.createElement("path",{d:"M10 7L15 12L10 17",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"})))}var bt=Et;function gt(){return r.default.createElement("svg",{width:"40px",height:"40px",viewBox:"0 0 24.00 24.00",fill:"none",xmlns:"http://www.w3.org/2000/svg",stroke:"currentColor"},r.default.createElement("g",{id:"SVGRepo_bgCarrier",strokeWidth:"0"}),r.default.createElement("g",{id:"SVGRepo_tracerCarrier",strokeLinecap:"round",strokeLinejoin:"round"}),r.default.createElement("g",{id:"SVGRepo_iconCarrier"},r.default.createElement("path",{d:"M10 7L15 12L10 17",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"})))}var St=gt,fe={currentDate:E(),selectedDate:E(),view:"month",events:[]},ye=(0,r.createContext)(void 0);function Mt(e,u){switch(u.type){case"SET_DATE":return{...e,currentDate:u.payload,selectedDate:u.payload};case"SET_VIEW":return{...e,view:u.payload};case"SET_EVENTS":return{...e,events:u.payload};case"NEXT":{let o=e.currentDate;return e.view==="month"?o=o.add(1,"month"):e.view==="week"?o=o.add(1,"week"):e.view==="day"&&(o=o.add(1,"day")),{...e,currentDate:o}}case"PREV":{let o=e.currentDate;return e.view==="month"?o=o.subtract(1,"month"):e.view==="week"?o=o.subtract(1,"week"):e.view==="day"&&(o=o.subtract(1,"day")),{...e,currentDate:o}}case"TODAY":return{...e,currentDate:E(),selectedDate:E()};default:return e}}function Lt({children:e,initialEvents:u=[],initialDate:o}){const[i,y]=(0,r.useReducer)(Mt,{...fe,events:u,currentDate:o||fe.currentDate,selectedDate:o||fe.selectedDate}),l=(0,r.useMemo)(()=>({state:i,dispatch:y}),[i]);return r.default.createElement(ye.Provider,{value:l},e)}const De=()=>{const e=(0,r.useContext)(ye);if(e===void 0)throw new Error("useCalendar must be used within a CalendarProvider");return e};var At=ee(de());function wt({headerClassName:e,pastYearLength:u=5,futureYearLength:o=5,onMonthChange:i}){const{state:y,dispatch:l}=De(),{currentDate:n}=y,f=d=>{if(d===oe.add){l({type:"NEXT"});const L=n.add(1,"month");i?.(K(L))}else if(d===oe.sub){l({type:"PREV"});const L=n.subtract(1,"month");i?.(K(L))}},D=(d,L)=>{const v=Number(d.target.value);let b=n;L===le.month?b=E(n).month(v):L===le.year&&(b=E(n).year(v)),l({type:"SET_DATE",payload:b}),i?.(K(b))};return r.default.createElement("div",{className:(0,At.default)(j.header,e)},r.default.createElement("div",{className:j.navigation},r.default.createElement("button",{className:j.todayButton,onClick:()=>{l({type:"TODAY"}),i?.(K(E()))}},"Today"),r.default.createElement("div",{className:j.arrows},r.default.createElement("button",{className:j.iconButton,onClick:()=>f(oe.sub)},r.default.createElement(bt,null)),r.default.createElement("button",{className:j.iconButton,onClick:()=>f(oe.add)},r.default.createElement(St,null))),r.default.createElement("h2",{className:j.dateTitle},n.format("MMMM YYYY"))),r.default.createElement("div",{className:j.controls},r.default.createElement("select",{className:j.select,id:ue.MONTH,name:ue.MONTH,value:n.month(),onChange:d=>D(d,le.month)},Oe.map(d=>r.default.createElement("option",{key:d.label,value:d.value},d.label))),r.default.createElement("select",{className:j.select,id:ue.YEAR,name:ue.YEAR,value:n.year(),onChange:d=>D(d,le.year)},ke(u,o,n.year()).map(d=>r.default.createElement("option",{key:d,value:d},d)))))}var Ct=wt,he=ee(de());function Ot({dayType:e,width:u,height:o,onDateClick:i,onEventClick:y,onMoreClick:l,onMonthChange:n,isSelectDate:f,data:D,...d}){const{state:L,dispatch:v}=De(),{currentDate:b,events:m}=L;(0,r.useEffect)(()=>{D&&v({type:"SET_EVENTS",payload:D})},[D]);const O=(0,r.useMemo)(()=>Fe(b,m),[b,m]),T=(0,r.useCallback)(S=>{const M=E(S);i?.(K(M)),f&&!M.isSame(b,"day")&&v({type:"SET_DATE",payload:M})},[b,i]);return r.default.createElement("section",{style:{"--calendar-width":`${u}px`,"--calendar-height":`${o}px`},className:(0,he.default)(Q.calendar,d.className)},r.default.createElement(Ct,{headerClassName:d.headerClassName,onMonthChange:n,pastYearLength:d.pastYearLength,futureYearLength:d.futureYearLength}),r.default.createElement("table",{className:(0,he.default)(Q.table,d.tableClassName)},r.default.createElement("thead",null,r.default.createElement("tr",null,we[e].map(S=>r.default.createElement("th",{key:S,className:Q.tableHeader},S)))),r.default.createElement("tbody",{className:Q.tableBody},O.map((S,M)=>r.default.createElement("tr",{key:M},S.map(($,w)=>r.default.createElement(dt,{key:`date_${M}_${w}`,isSelected:f&&$.isCurrentMonth&&$.displayDay===b.date(),isToday:$.isToday,isCurrentMonth:$.isCurrentMonth,onClick:T,date:$.displayDay,dateObj:$.currentDate,data:$.events,cellWidth:u/7,className:(0,he.default)(Q.tableCell,d.tableDateClassName),dataClassName:d.dataClassName,selectedClassName:d.selectedClassName,todayClassName:d.todayClassName,theme:d.theme,maxEvents:d.maxEvents,totalEvents:$.totalEvents,onEventClick:y,onMoreClick:C=>l?.(K(C))})))))))}function $t(e=ve){const u=r.default.useRef(null),{width:o,height:i}=Ue(u),y={...ve,...e},{data:l,selectedDate:n}=y,f=e.width??o??0,D=(e.height??i??0)-120,d=(0,r.useMemo)(()=>n?Te(n):void 0,[n]),L=y.maxEvents??xe(D);return r.default.createElement(Lt,{initialEvents:l,initialDate:d},r.default.createElement("div",{ref:u,className:Q.calendarContainer},r.default.createElement(Ot,{...y,width:f,height:D,maxEvents:L})))}var Nt=(0,r.memo)($t),Tt=Nt;exports.DAY_TYPE=$e;exports.EDayType=pe;exports.default=Tt;
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=index.cjs.js.map
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","names":["MONTH_LIST: MonthListType[]","e","n","t","r","i","s","u","a","M","m","f","l","$","y","v","g","D","o","d","c","h","slots: string[][]","displayData: (DataTypeList | null)[]","allDayEvents: DataTypeList[]","initialState: CalendarState"],"sources":["../node_modules/classnames/index.js","../src/types/index.ts","../src/constants/index.ts","../node_modules/dayjs/dayjs.min.js","../src/utils/date.ts","../node_modules/calendarize/dist/index.mjs","../src/utils/calendarLogic.ts","../src/utils/common.ts","../src/utils/hooks.ts","../src/Calendar.module.css","../src/common/EventItem.module.css","../src/common/Popover.module.css","../src/common/Popover.tsx","../src/common/EventItem.tsx","../src/layout/Header.module.css","../src/assets/LeftArrow.tsx","../src/assets/RightArrow.tsx","../src/context/CalendarContext.tsx","../src/layout/Header.tsx","../src/Calendar.tsx","../src/index.ts"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { DateType } from \"../utils\";\n\nexport interface ThemeStyle {\n color?: string;\n bgColor?: string;\n}\n\nexport interface CalendarTheme {\n default?: ThemeStyle;\n selected?: ThemeStyle;\n today?: ThemeStyle;\n}\n\nexport interface DataType {\n startDate: string;\n endDate?: string;\n value: string;\n color?: string;\n}\n\nexport interface CalendarType {\n dayType?: EDayType;\n data?: DataType[];\n width?: number;\n height?: number;\n selectedDate?: Date;\n onDateClick?: (date: Date) => void;\n onEventClick?: (event: DataType) => void;\n onMoreClick?: (date: Date) => void;\n onMonthChange?: (date: Date) => void;\n isSelectDate?: boolean;\n className?: string;\n headerClassName?: string;\n tableClassName?: string;\n tableDateClassName?: string;\n dataClassName?: string;\n selectedClassName?: string;\n todayClassName?: string;\n pastYearLength?: number;\n futureYearLength?: number;\n theme?: CalendarTheme;\n maxEvents?: number;\n}\n\nexport interface CalendarContentType extends CalendarType {\n dayType: EDayType;\n data: DataType[];\n width: number;\n height: number;\n isSelectDate: boolean;\n pastYearLength: number;\n futureYearLength: number;\n maxEvents: number;\n}\n\nexport enum EDayType {\n fullName = \"FULL\",\n halfName = \"HALF\",\n}\n\nexport interface DataTypeList extends DataType {\n startDateWeek?: string;\n endDateWeek?: string;\n isSpacer?: boolean;\n}\n\nexport interface DateDataType {\n date: number;\n dateObj: DateType;\n data: (DataTypeList | null)[];\n cellWidth: number;\n className?: string;\n dataClassName?: string;\n isSelected: boolean;\n isToday: boolean;\n isCurrentMonth: boolean;\n onClick?: (date: DateType) => void;\n onEventClick?: (event: DataType) => void;\n onMoreClick?: (date: DateType) => void;\n selectedClassName?: string;\n todayClassName?: string;\n theme?: CalendarTheme;\n maxEvents?: number;\n totalEvents?: number;\n}\n\nexport interface MonthListType {\n label: string;\n value: number;\n}\n\nexport enum EMonthOption {\n add = \"add\",\n sub = \"sub\",\n}\n\nexport enum EYearOption {\n month = \"month\",\n year = \"year\",\n}\n\nexport type CalendarView = \"month\" | \"week\" | \"day\";\n","import { EDayType, MonthListType } from \"../types\";\n\nconst DAY_LIST = {\n SUNDAY: {\n FULL: \"Sunday\",\n HALF: \"Sun\",\n },\n MONDAY: {\n FULL: \"Monday\",\n HALF: \"Mon\",\n },\n TUESDAY: {\n FULL: \"Tuesday\",\n HALF: \"Tue\",\n },\n WEDNESDAY: {\n FULL: \"Wednesday\",\n HALF: \"Wed\",\n },\n THURSDAY: {\n FULL: \"Thursday\",\n HALF: \"Thu\",\n },\n FRIDAY: {\n FULL: \"Friday\",\n HALF: \"Fri\",\n },\n SATURDAY: {\n FULL: \"Saturday\",\n HALF: \"Sat\",\n },\n};\n\nexport const DAY_LIST_NAME = {\n FULL: [\n DAY_LIST.SUNDAY.FULL,\n DAY_LIST.MONDAY.FULL,\n DAY_LIST.TUESDAY.FULL,\n DAY_LIST.WEDNESDAY.FULL,\n DAY_LIST.THURSDAY.FULL,\n DAY_LIST.FRIDAY.FULL,\n DAY_LIST.SATURDAY.FULL,\n ],\n HALF: [\n DAY_LIST.SUNDAY.HALF,\n DAY_LIST.MONDAY.HALF,\n DAY_LIST.TUESDAY.HALF,\n DAY_LIST.WEDNESDAY.HALF,\n DAY_LIST.THURSDAY.HALF,\n DAY_LIST.FRIDAY.HALF,\n DAY_LIST.SATURDAY.HALF,\n ],\n};\n\nconst MONTHS = {\n JAN: { label: \"January\", value: 0 },\n FEB: { label: \"February\", value: 1 },\n MAR: { label: \"March\", value: 2 },\n APR: { label: \"April\", value: 3 },\n MAY: { label: \"May\", value: 4 },\n JUN: { label: \"June\", value: 5 },\n JUL: { label: \"July\", value: 6 },\n AUG: { label: \"August\", value: 7 },\n SEP: { label: \"September\", value: 8 },\n OCT: { label: \"October\", value: 9 },\n NOV: { label: \"November\", value: 10 },\n DEC: { label: \"December\", value: 11 },\n};\n\nexport const MONTH_LIST: MonthListType[] = Object.values(MONTHS);\n\nexport const CALENDER_STRINGS = {\n MONTH: \"monthDropdown\",\n YEAR: \"yearDropdown\",\n};\n\nexport const DAY_TYPE = {\n FULL_NAME: \"FULL\",\n HALF_NAME: \"HALF\",\n};\n\nexport const defaultTheme = {\n default: {\n color: \"#000\",\n bgColor: \"#fff\",\n },\n selected: {\n color: \"#fff\",\n bgColor: \"#007bff\",\n },\n today: {\n color: \"#007bff\",\n bgColor: \"#e6f2ff\",\n },\n};\n\nexport const defaultCalenderProps = {\n dayType: EDayType.halfName,\n data: [],\n isSelectDate: false,\n pastYearLength: 5,\n futureYearLength: 5,\n theme: defaultTheme,\n};\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|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,M={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(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","import dayjs, { Dayjs } from \"dayjs\";\n\nexport type DateType = Dayjs;\nexport const dateFn = dayjs;\n\nexport const getNoOfDays = (date: DateType): number => {\n const noOfDates = dayjs(date).daysInMonth();\n return noOfDates;\n};\n\nexport const getMonthStartingDay = (date: DateType): number => {\n const monthStartingDay = Number(dayjs(date).startOf(\"month\").format(\"d\"));\n return monthStartingDay;\n};\n\nexport const convertToDate = (dayjsDate: DateType): Date => {\n const date = dayjs(dayjsDate).toDate();\n return date;\n};\n\nexport const convertToDayjs = (date: Date): DateType => {\n const dayjsDate = dayjs(date);\n return dayjsDate;\n};\n\nexport const getYearList = (\n pastLength: number,\n futureLength: number,\n selectedYear: number,\n): number[] => {\n const yearLength = pastLength + futureLength;\n const yearStarting = dayjs().year() - pastLength;\n const yearList = Array.from(\n { length: yearLength },\n (_, index) => index + yearStarting,\n );\n\n if (!yearList.includes(selectedYear)) {\n if (dayjs().year() <= selectedYear) {\n yearList.push(selectedYear);\n } else {\n return [selectedYear, ...yearList];\n }\n }\n return yearList;\n};\n\nexport const checkIsToday = (\n selectedDate: DateType,\n dates: number,\n): boolean => {\n const cloneSelectedDate = dayjs(selectedDate).date(dates);\n\n const isToday = dayjs().isSame(cloneSelectedDate, \"day\");\n return isToday;\n};\n","export default function (target, offset) {\n\tvar i=0, j=0, week, out=[], date = new Date(target || new Date);\n\tvar year = date.getFullYear(), month = date.getMonth();\n\n\t// day index (of week) for 1st of month\n\tvar first = new Date(year, month, 1 - (offset | 0)).getDay();\n\n\t// how many days there are in this month\n\tvar days = new Date(year, month+1, 0).getDate();\n\n\twhile (i < days) {\n\t\tfor (j=0, week=Array(7); j < 7;) {\n\t\t\twhile (j < first) week[j++] = 0;\n\t\t\tweek[j++] = ++i > days ? 0 : i;\n\t\t\tfirst = 0;\n\t\t}\n\t\tout.push(week);\n\t}\n\n\treturn out;\n}\n","/**\n * @file calendarLogic.ts\n * @description Core logic for generating the calendar grid and managing event layout.\n *\n * This utility handles the complex task of:\n * 1. Generating a grid of dates for the current month view.\n * 2. Placing events onto this grid.\n * 3. Handling multi-day events that span across weeks.\n * 4. Calculating vertical slot assignments for events to prevent visual overlaps (the \"Tetris\" problem).\n */\n\nimport calendarize from \"calendarize\";\nimport { dateFn, checkIsToday, DateType } from \"./date\";\nimport { DataType, DataTypeList } from \"../types\";\n\n/**\n * Represents the information for a single day in the calendar grid.\n */\nexport interface CalendarDayInfo {\n /** The full date object */\n currentDate: DateType;\n /** Whether the day belongs to the currently selected month (for styling) */\n isCurrentMonth: boolean;\n /** The day number to display (1-31) */\n displayDay: number;\n /** List of events or spacers for this day's slots */\n events: (DataTypeList | null)[];\n /** Total number of events on this day (including hidden ones) */\n totalEvents: number;\n /** Whether this day is today */\n isToday: boolean;\n}\n\n/**\n * 2D array representing the calendar grid: [week][day]\n */\nexport type CalendarMatrix = CalendarDayInfo[][];\n\n/**\n * Generates the grid of days and events for the monthly view.\n *\n * This function handles:\n * 1. Grid Generation: Calculates the days for each week, handling previous/next month overlap.\n * 2. Event Processing: Filters events for each week and sorts them.\n * 3. Slot Assignment: Uses a \"tetris-like\" algorithm to stack overlapping events into available vertical slots.\n * 4. Data Preparation: Formats the data for the UI, including calculating event continuity across days.\n *\n * @param selectedDate - The currently selected date (determining the month to show)\n * @param events - List of all events\n * @returns A structured matrix of weeks and days with assigned events\n */\nexport const generateCalendarGrid = (\n selectedDate: DateType,\n events: DataType[],\n): CalendarMatrix => {\n // Sort events\n const dataEvents = [...events].sort((a, b) => {\n return dateFn(a.startDate)\n .startOf(\"day\")\n .diff(dateFn(b.startDate).startOf(\"day\"), \"days\");\n });\n\n const calendarArray = calendarize(selectedDate.toDate());\n\n return calendarArray.map((week, weekIndex) => {\n // -------------------------------------------------------------------------\n // 1. Grid Generation: Calculate dates for the entire week first\n // -------------------------------------------------------------------------\n const processedWeek = week.map((day, dayIndex) => {\n let currentDate = dateFn(selectedDate);\n let isCurrentMonth = true;\n let displayDay = day;\n\n if (day === 0) {\n isCurrentMonth = false;\n if (weekIndex === 0) {\n const startOfMonth = dateFn(selectedDate).startOf(\"month\");\n const startDayOfWeek = startOfMonth.day();\n currentDate = startOfMonth.subtract(startDayOfWeek - dayIndex, \"day\");\n displayDay = currentDate.date();\n } else {\n const startOfMonth = dateFn(selectedDate).startOf(\"month\");\n const startDayOfWeek = startOfMonth.day();\n\n const globalIndex = weekIndex * 7 + dayIndex;\n const daysFromStart = globalIndex - startDayOfWeek;\n\n currentDate = startOfMonth.add(daysFromStart, \"day\");\n displayDay = currentDate.date();\n }\n } else {\n currentDate = dateFn(selectedDate).date(day);\n }\n return { currentDate, isCurrentMonth, displayDay };\n });\n\n // -------------------------------------------------------------------------\n // 2. Event Identification: Identify all events overlapping with this week\n // -------------------------------------------------------------------------\n const weekStart = processedWeek[0].currentDate.startOf(\"day\");\n const weekEnd = processedWeek[6].currentDate.startOf(\"day\");\n\n const weekEvents = dataEvents.filter((item) => {\n const start = dateFn(item.startDate).startOf(\"day\");\n const end = item.endDate ? dateFn(item.endDate).startOf(\"day\") : start;\n // Check overlap\n return (\n start.isBefore(weekEnd.add(1, \"day\"), \"day\") &&\n end.isAfter(weekStart.subtract(1, \"day\"), \"day\")\n );\n });\n\n // -------------------------------------------------------------------------\n // 3. Event Sorting: Start Date asc, then Duration desc\n //\n // Sorting is crucial for the slot assignment algorithm (\"Tetris\" algorithm) to work efficiently.\n // By placing earlier events first, we fill the timeline from left to right.\n // By placing longer events first (among those starting on the same day), we ensure\n // that long-spanning events get stable top slots, reducing visual fragmentation.\n // -------------------------------------------------------------------------\n weekEvents.sort((a, b) => {\n const startA = dateFn(a.startDate).startOf(\"day\");\n const startB = dateFn(b.startDate).startOf(\"day\");\n // Primary sort: Start date (ascending)\n if (!startA.isSame(startB, \"day\")) return startA.diff(startB);\n\n // Secondary sort: Duration (descending)\n const endA = a.endDate ? dateFn(a.endDate).startOf(\"day\") : startA;\n const endB = b.endDate ? dateFn(b.endDate).startOf(\"day\") : startB;\n const durA = endA.diff(startA, \"day\");\n const durB = endB.diff(startB, \"day\");\n return durB - durA; // Longer events first\n });\n\n // -------------------------------------------------------------------------\n // 4. Slot Assignment: \"Tetris\" Algorithm\n //\n // The goal here is to assign a vertical \"slot\" index (0, 1, 2...) to each event\n // so that no two overlapping events share the same slot.\n //\n // We maintain a 2D array `slots[dayIndex][slotIndex]` to track usage.\n // dayIndex: 0..6 (Mon-Sun)\n // slotIndex: 0..N (Vertical position)\n //\n // For each event:\n // 1. Determine its start/end range within this week (clipped to 0..6).\n // 2. Find the lowest `slotIndex` where `slots[day][slotIndex]` is empty for all days in the range.\n // 3. Mark that slot as used for those days.\n // -------------------------------------------------------------------------\n const slots: string[][] = Array(7)\n .fill(null)\n .map(() => []); // slots[dayIndex][slotIndex] = eventId\n const eventSlots = new Map<string, number>(); // Map<eventId, slotIndex> for quick lookup later\n\n weekEvents.forEach((event, index) => {\n // Determine start/end indices in this week (0..6)\n // We clip the event's start/end to the current week's boundaries because\n // we are only rendering one week at a time in this loop.\n const start = dateFn(event.startDate).startOf(\"day\");\n const end = event.endDate ? dateFn(event.endDate).startOf(\"day\") : start;\n\n let startIndex = start.diff(weekStart, \"day\");\n let endIndex = end.diff(weekStart, \"day\");\n\n // Clip to week boundaries\n if (startIndex < 0) startIndex = 0;\n if (endIndex > 6) endIndex = 6;\n\n // Find first available slot\n let slotIndex = 0;\n while (true) {\n let isAvailable = true;\n // Check if this slotIndex is free for the entire duration of the event (within this week)\n for (let i = startIndex; i <= endIndex; i++) {\n if (slots[i][slotIndex]) {\n isAvailable = false;\n break;\n }\n }\n if (isAvailable) break; // Found a spot!\n slotIndex++; // Try the next slot down\n }\n\n // Assign the found slot\n // We create a unique temporary ID because the raw event data might not have one,\n // or we might be processing split segments of the same logical event.\n const eventId = event.startDate + event.value + index;\n eventSlots.set(eventId, slotIndex);\n\n // Mark the slots as occupied\n for (let i = startIndex; i <= endIndex; i++) {\n slots[i][slotIndex] = eventId;\n }\n\n // Store the ID on the event object temporarily for step 5\n (event as any)._tempId = eventId;\n });\n\n // -------------------------------------------------------------------------\n // 5. Content Generation: Generate final display data for each day\n // Map the calculated slots back to individual day cells.\n // -------------------------------------------------------------------------\n return processedWeek.map((dayObj, dayIndex) => {\n const { currentDate, isCurrentMonth, displayDay } = dayObj;\n\n // Find events active on this day\n const activeEvents = weekEvents.filter((event) => {\n const start = dateFn(event.startDate).startOf(\"day\");\n const end = event.endDate\n ? dateFn(event.endDate).startOf(\"day\")\n : start;\n return (\n !currentDate.isBefore(start, \"day\") &&\n !currentDate.isAfter(end, \"day\")\n );\n });\n\n const displayData: (DataTypeList | null)[] = [];\n\n let maxDaySlot = -1;\n activeEvents.forEach((e) => {\n const s = eventSlots.get((e as any)._tempId);\n if (s !== undefined && s > maxDaySlot) maxDaySlot = s;\n });\n\n for (let s = 0; s <= maxDaySlot; s++) {\n const event = activeEvents.find(\n (e) => eventSlots.get((e as any)._tempId) === s,\n );\n if (event) {\n const itemStartDate = dateFn(event.startDate).startOf(\"day\");\n const isStart = itemStartDate.isSame(currentDate, \"day\");\n const isWeekStart = dayIndex === 0;\n\n // If the event starts today (or earlier but this is the start of the week),\n // we render the \"segment\" of the event.\n if (isStart || isWeekStart) {\n // Ensure the visual end date doesn't exceed the end of the current week.\n // This is crucial for rendering the correct width for the event bar using CSS/col-span.\n const itemEndDate = event.endDate\n ? dateFn(event.endDate).startOf(\"day\")\n : dateFn(event.startDate).startOf(\"day\");\n const endOfWeekDate = dateFn(currentDate).add(6 - dayIndex, \"day\");\n\n let effectiveEndDate = itemEndDate;\n if (itemEndDate.isAfter(endOfWeekDate, \"date\")) {\n effectiveEndDate = endOfWeekDate;\n }\n\n displayData.push({\n ...event,\n startDateWeek: currentDate.format(\"YYYY-MM-DD\"),\n endDateWeek: effectiveEndDate.format(\"YYYY-MM-DD\"),\n });\n } else {\n // Spacer: The event exists on this day but was started in a previous cell in this row.\n // We insert a spacer so that subsequent events in this column get pushed down to their correct slots.\n displayData.push({ ...event, isSpacer: true });\n }\n } else {\n // Empty slot: No event assigned to this vertical index.\n displayData.push(null);\n }\n }\n\n return {\n currentDate,\n isCurrentMonth,\n displayDay,\n events: displayData,\n totalEvents: activeEvents.length,\n isToday: checkIsToday(selectedDate, displayDay) && isCurrentMonth,\n };\n });\n });\n};\n","/**\n * Calculates the maximum number of events that can be displayed in a cell based on the calendar height.\n *\n * @param height - The total height of the calendar\n * @returns The maximum number of events to display\n */\nexport const calculateMaxEvents = (height: number): number => {\n const ROWS_IN_VIEW = 6;\n const DATE_LABEL_HEIGHT = 28; // height of the date circle + margins\n const CELL_PADDING = 8; // approx padding\n const EVENT_HEIGHT = 26; // 24px height + 2px margin\n\n const cellHeight = height / ROWS_IN_VIEW;\n const availableHeight = cellHeight - DATE_LABEL_HEIGHT - CELL_PADDING;\n const calculatedMax = Math.round(availableHeight / EVENT_HEIGHT) - 1; // -1 for \"more\" button\n\n return Math.max(0, calculatedMax);\n};\n","import { useEffect, useState, RefObject } from \"react\";\n\n/**\n * Hook to observe the size of an element.\n * @param ref React ref object of the element to observe\n * @returns The width and height of the element\n */\nexport const useResizeObserver = (ref: RefObject<HTMLElement | null>) => {\n const [size, setSize] = useState({ width: 0, height: 0 });\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries) || !entries.length) return;\n\n const entry = entries[0];\n const { width, height } = entry.contentRect;\n\n setSize({ width, height });\n });\n\n resizeObserver.observe(element);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [ref]);\n\n return size;\n};\n",".calendarContainer {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.calendar {\n width: 100%;\n height: 100%;\n /* Default values, overridden by inline styles */\n --calendar-width: 0px;\n --calendar-height: 0px;\n\n /* Theme variables */\n --primary-color: #3b82f6;\n --primary-hover: #2563eb;\n --text-primary: #1f2937;\n --text-secondary: #6b7280;\n --bg-color: #ffffff;\n --bg-hover: #f3f4f6;\n --border-color: #e5e7eb;\n --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n --shadow-md:\n 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n\n font-family:\n ui-sans-serif,\n system-ui,\n -apple-system,\n BlinkMacSystemFont,\n \"Segoe UI\",\n Roboto,\n \"Helvetica Neue\",\n Arial,\n sans-serif;\n color: var(--text-primary);\n background-color: var(--bg-color);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-md);\n box-sizing: border-box;\n overflow: hidden;\n overflow-y: auto;\n\n & * {\n padding: 0;\n margin: 0;\n box-sizing: border-box;\n }\n}\n\n.table {\n border-collapse: separate;\n border-spacing: 0;\n}\n\n.tableHeader,\n.tableCell {\n border-right: 1px solid var(--border-color);\n border-bottom: 1px solid var(--border-color);\n}\n\n.tableHeader:last-child,\n.tableCell:last-child {\n border-right: none;\n}\n\n.table tr:last-child .tableCell {\n border-bottom: none;\n}\n\n.tableHeader {\n height: 40px;\n background-color: #f9fafb;\n color: var(--text-secondary);\n font-weight: 600;\n font-size: 0.875rem;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n text-align: center;\n vertical-align: middle;\n}\n\n.tableBody {\n height: var(--calendar-height);\n}\n",".dateData {\n cursor: pointer;\n position: relative;\n transition: background-color 0.15s ease;\n vertical-align: top;\n height: calc(var(--calendar-height) / 6); /* Approx 6 rows usually */\n min-width: calc(var(--calendar-width) / 7);\n max-width: calc(var(--calendar-width) / 7);\n padding: 0.25rem;\n}\n\n.dateData:hover {\n background-color: #fafafa;\n}\n\n.currentMonth {\n color: #9ca3af; /* muted text */\n background-color: #f9fafb;\n}\n\n.cellContent {\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n gap: 0.25rem;\n}\n\n.dateLabel {\n font-size: 0.875rem;\n font-weight: 500;\n padding: 0.25rem;\n border-radius: 50%;\n width: 1.75rem;\n height: 1.75rem;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0.25rem;\n color: var(--text-primary);\n}\n\n.selected .dateLabel {\n background-color: var(--primary-color);\n color: white;\n}\n\n.today .dateLabel {\n background-color: var(--primary-color);\n color: white;\n}\n\n.dataContainer {\n display: flex;\n flex-direction: column;\n gap: 2px;\n overflow: visible;\n flex: 1;\n}\n\n.spacer {\n height: 1.5rem; /* Match eventItem height */\n margin-bottom: 2px;\n}\n\n.eventItem {\n background-color: var(--primary-color);\n border-radius: 4px; /* Slightly rounded */\n z-index: 2;\n position: relative;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 0.75rem;\n padding: 0.15rem 0.5rem;\n color: white;\n font-weight: 500;\n height: 1.5rem;\n line-height: 1.2rem;\n box-sizing: border-box;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n transition:\n transform 0.1s ease,\n box-shadow 0.1s ease;\n cursor: pointer;\n}\n\n.eventItem:hover {\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);\n filter: brightness(1.05);\n}\n\n.moreEventsContainer {\n position: relative;\n margin-top: 2px;\n}\n\n.moreEvents {\n font-size: 0.75rem;\n font-weight: 600;\n color: var(--text-secondary);\n cursor: pointer;\n padding: 0.15rem 0.5rem;\n background: transparent;\n border: none;\n width: 100%;\n text-align: left;\n border-radius: 4px;\n transition: background-color 0.2s;\n}\n\n.moreEvents:hover {\n background-color: var(--bg-hover);\n color: var(--text-primary);\n}\n",".popover {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n z-index: 100;\n background-color: white;\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-md);\n padding: 0.5rem;\n min-width: 180px;\n max-width: 240px;\n max-height: 240px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 2px;\n opacity: 0;\n animation: fadeIn 0.2s ease forwards;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.popoverHeader {\n font-size: 0.75rem;\n font-weight: 600;\n margin-bottom: 0.5rem;\n color: var(--text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n padding-bottom: 0.25rem;\n border-bottom: 1px solid var(--border-color);\n}\n\n.popoverItem {\n padding: 0.25rem 0.5rem;\n background-color: var(--primary-color);\n color: white;\n border-radius: var(--radius-md);\n font-size: 0.75rem;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n cursor: pointer;\n margin-bottom: 2px;\n transition: opacity 0.2s ease;\n}\n\n.popoverItem:hover {\n opacity: 0.9;\n}\n\n.popoverItem.startBefore {\n clip-path: polygon(10px 0, 100% 0, 100% 100%, 10px 100%, 0 50%);\n padding-left: 14px;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.popoverItem.endAfter {\n clip-path: polygon(\n 0 0,\n calc(100% - 10px) 0,\n 100% 50%,\n calc(100% - 10px) 100%,\n 0 100%\n );\n padding-right: 14px;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.popoverItem.startBefore.endAfter {\n clip-path: polygon(\n 10px 0,\n calc(100% - 10px) 0,\n 100% 50%,\n calc(100% - 10px) 100%,\n 10px 100%,\n 0 50%\n );\n padding-left: 14px;\n padding-right: 14px;\n border-radius: 0;\n}\n","import React, { useRef, useEffect } from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./Popover.module.css\";\nimport { dateFn, DateType } from \"../utils\";\nimport { DataTypeList } from \"../types\";\n\ninterface PopoverProps {\n dateObj: DateType;\n events: DataTypeList[];\n onEventClick?: (data: DataTypeList) => void;\n onClose: () => void;\n}\n\nfunction Popover({ dateObj, events, onEventClick, onClose }: PopoverProps) {\n const popoverRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n popoverRef.current &&\n !popoverRef.current.contains(event.target as Node)\n ) {\n onClose();\n }\n }\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [onClose]);\n\n return (\n <div\n className={styles.popover}\n ref={popoverRef}\n onClick={(e) => e.stopPropagation()}\n >\n <div className={styles.popoverHeader}>\n {dateFn(dateObj).format(\"ddd, D MMM\")}\n </div>\n {events.map((item, idx) => {\n const dayStart = dateFn(dateObj).startOf(\"day\");\n const eventStart = dateFn(item.startDate).startOf(\"day\");\n const eventEnd = item.endDate\n ? dateFn(item.endDate).startOf(\"day\")\n : eventStart;\n\n const isStartBefore = eventStart.isBefore(dayStart, \"day\");\n const isEndAfter = eventEnd.isAfter(dayStart, \"day\");\n\n return (\n <div\n key={`pop-${idx}`}\n className={cx(styles.popoverItem, {\n [styles.startBefore]: isStartBefore,\n [styles.endAfter]: isEndAfter,\n })}\n style={{ backgroundColor: item.color }}\n onClick={(e) => {\n e.stopPropagation();\n onEventClick?.(item);\n onClose();\n }}\n title={item.value}\n >\n {item.value}\n </div>\n );\n })}\n </div>\n );\n}\n\nexport default Popover;\n","import React from \"react\";\nimport cx from \"classnames\";\nimport { DataTypeList, DateDataType } from \"../types\";\nimport { dateFn } from \"../utils\";\nimport styles from \"./EventItem.module.css\";\nimport Popover from \"./Popover\";\nimport { defaultTheme } from \"../constants\";\n\nfunction EventItem({\n date,\n dateObj,\n data,\n cellWidth,\n className,\n dataClassName,\n isSelected,\n isToday,\n onClick,\n selectedClassName,\n todayClassName,\n isCurrentMonth,\n theme,\n maxEvents = 3, // Default limit\n onMoreClick,\n onEventClick,\n totalEvents = 0,\n}: DateDataType) {\n const [showPopover, setShowPopover] = React.useState(false);\n\n const styleSource = isSelected\n ? { ...defaultTheme.selected, ...theme?.selected }\n : isToday\n ? { ...defaultTheme.today, ...theme?.today }\n : { ...defaultTheme.default, ...theme?.default };\n\n const style = {\n color: styleSource?.color,\n backgroundColor: styleSource?.bgColor,\n };\n\n // Determine which items to display\n let visibleEvents = data;\n let hiddenEventsCount = 0;\n\n if (\n (maxEvents || maxEvents === 0) &&\n data &&\n (totalEvents >= maxEvents || data.length > maxEvents)\n ) {\n visibleEvents = data.slice(0, maxEvents);\n\n const visibleRealEventsCount = visibleEvents.filter(\n (e) => e !== null,\n ).length;\n hiddenEventsCount = totalEvents - visibleRealEventsCount;\n }\n\n const allDayEvents: DataTypeList[] =\n data?.filter((e): e is DataTypeList => e !== null) || [];\n\n return (\n <td\n style={style}\n onClick={() => onClick?.(dateObj)}\n className={cx(styles.dateData, className, {\n [styles.currentMonth]: !isCurrentMonth,\n [cx(styles.selected, selectedClassName)]: isSelected,\n [cx(styles.today, todayClassName)]: isToday,\n })}\n >\n <div className={styles.cellContent}>\n <p className={styles.dateLabel}>{date}</p>\n\n {data && (\n <div className={cx(styles.dataContainer, dataClassName)}>\n {visibleEvents.map((item, index) => {\n if (!item || item.isSpacer) {\n return (\n <div key={`spacer-${index}`} className={styles.spacer} />\n );\n }\n\n let diffDates = 1;\n let tooltipText = dateFn(item.startDate).format(\"YYYY-MM-DD\");\n if (item.endDateWeek) {\n diffDates =\n dateFn(item.endDateWeek).diff(item.startDateWeek, \"days\") + 1;\n tooltipText += ` to ${dateFn(item.endDate).format(\"YYYY-MM-DD\")}`;\n }\n tooltipText += ` - ${item.value}`;\n const width = `${cellWidth * diffDates - 16}px`;\n\n return (\n <div\n key={`${item.startDate}-${index}`}\n className={styles.eventItem}\n style={{ width, backgroundColor: item.color }}\n title={tooltipText}\n onClick={(e) => {\n e.stopPropagation();\n onEventClick?.(item);\n }}\n >\n {item.value}\n </div>\n );\n })}\n {hiddenEventsCount > 0 && (\n <div className={styles.moreEventsContainer}>\n <button\n className={styles.moreEvents}\n onClick={(e) => {\n e.stopPropagation();\n !showPopover && setShowPopover(true);\n onMoreClick?.(dateObj);\n }}\n >\n + {hiddenEventsCount} more\n </button>\n {showPopover && (\n <Popover\n dateObj={dateObj}\n events={allDayEvents}\n onEventClick={onEventClick}\n onClose={() => setShowPopover(false)}\n />\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </td>\n );\n}\n\nexport default EventItem;\n",".header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem;\n background-color: transparent;\n width: 100%;\n box-sizing: border-box;\n}\n\n.navigation {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n\n.todayButton {\n background-color: transparent;\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n color: var(--text-primary);\n cursor: pointer;\n font-family: inherit;\n font-size: 0.875rem;\n font-weight: 500;\n padding: 0.5rem 1rem;\n transition: all 0.2s ease;\n}\n\n.todayButton:hover {\n background-color: var(--bg-hover);\n border-color: var(--text-secondary);\n}\n\n.arrows {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.iconButton {\n background: transparent;\n border: 1px solid transparent;\n border-radius: var(--radius-md);\n color: var(--text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 2rem;\n width: 2rem;\n outline: none;\n transition: all 0.2s ease;\n}\n\n.iconButton:hover {\n background-color: var(--bg-hover);\n color: var(--text-primary);\n}\n\n.dateTitle {\n color: var(--text-primary);\n font-family: inherit;\n font-size: 1.25rem;\n font-weight: 600;\n margin: 0;\n white-space: nowrap;\n}\n\n.controls {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n}\n\n.select {\n appearance: none;\n background-color: var(--bg-color);\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3E%3C/svg%3E\");\n background-position: right 0.5rem center;\n background-repeat: no-repeat;\n background-size: 1.5em 1.5em;\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n color: var(--text-primary);\n cursor: pointer;\n font-family: inherit;\n font-size: 0.875rem;\n padding: 0.5rem 2.5rem 0.5rem 1rem;\n transition: border-color 0.2s ease;\n outline: none;\n}\n\n.select:hover {\n border-color: var(--text-secondary);\n}\n\n.select:focus {\n border-color: var(--primary-color);\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\n}\n","import React from \"react\";\n\nfunction LeftArrow() {\n return (\n <svg\n width=\"40px\"\n height=\"40px\"\n viewBox=\"0 0 24.00 24.00\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n stroke=\"currentColor\"\n transform=\"rotate(180)\"\n >\n <g id=\"SVGRepo_bgCarrier\" strokeWidth=\"0\" />\n <g\n id=\"SVGRepo_tracerCarrier\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <g id=\"SVGRepo_iconCarrier\">\n <path\n d=\"M10 7L15 12L10 17\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n}\n\nexport default LeftArrow;\n","import React from \"react\";\n\nfunction RightArrow() {\n return (\n <svg\n width=\"40px\"\n height=\"40px\"\n viewBox=\"0 0 24.00 24.00\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n stroke=\"currentColor\"\n >\n <g id=\"SVGRepo_bgCarrier\" strokeWidth=\"0\" />\n <g\n id=\"SVGRepo_tracerCarrier\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <g id=\"SVGRepo_iconCarrier\">\n <path\n d=\"M10 7L15 12L10 17\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n}\n\nexport default RightArrow;\n","import React, {\n createContext,\n useContext,\n useReducer,\n ReactNode,\n useMemo,\n} from \"react\";\nimport { dateFn, DateType } from \"../utils\";\nimport { DataType, CalendarView } from \"../types\";\n\ninterface CalendarState {\n currentDate: DateType;\n selectedDate: DateType;\n view: CalendarView;\n events: DataType[];\n}\n\ntype CalendarAction =\n | { type: \"SET_DATE\"; payload: DateType }\n | { type: \"SET_VIEW\"; payload: CalendarView }\n | { type: \"SET_EVENTS\"; payload: DataType[] }\n | { type: \"NEXT\" }\n | { type: \"PREV\" }\n | { type: \"TODAY\" };\n\nconst initialState: CalendarState = {\n currentDate: dateFn(),\n selectedDate: dateFn(),\n view: \"month\",\n events: [],\n};\n\nconst CalendarContext = createContext<\n | {\n state: CalendarState;\n dispatch: React.Dispatch<CalendarAction>;\n }\n | undefined\n>(undefined);\n\nfunction calendarReducer(\n state: CalendarState,\n action: CalendarAction,\n): CalendarState {\n switch (action.type) {\n case \"SET_DATE\":\n return {\n ...state,\n currentDate: action.payload,\n selectedDate: action.payload,\n };\n case \"SET_VIEW\":\n return { ...state, view: action.payload };\n case \"SET_EVENTS\":\n return { ...state, events: action.payload };\n case \"NEXT\": {\n let nextDate = state.currentDate;\n if (state.view === \"month\") nextDate = nextDate.add(1, \"month\");\n else if (state.view === \"week\") nextDate = nextDate.add(1, \"week\");\n else if (state.view === \"day\") nextDate = nextDate.add(1, \"day\");\n return { ...state, currentDate: nextDate };\n }\n case \"PREV\": {\n let prevDate = state.currentDate;\n if (state.view === \"month\") prevDate = prevDate.subtract(1, \"month\");\n else if (state.view === \"week\") prevDate = prevDate.subtract(1, \"week\");\n else if (state.view === \"day\") prevDate = prevDate.subtract(1, \"day\");\n return { ...state, currentDate: prevDate };\n }\n case \"TODAY\":\n return {\n ...state,\n currentDate: dateFn(),\n selectedDate: dateFn(),\n };\n default:\n return state;\n }\n}\n\ninterface CalendarProviderProps {\n children: ReactNode;\n initialEvents?: DataType[];\n initialDate?: DateType;\n}\n\nexport function CalendarProvider({\n children,\n initialEvents = [],\n initialDate,\n}: CalendarProviderProps) {\n const [state, dispatch] = useReducer(calendarReducer, {\n ...initialState,\n events: initialEvents,\n currentDate: initialDate || initialState.currentDate,\n selectedDate: initialDate || initialState.selectedDate,\n });\n\n const value = useMemo(() => ({ state, dispatch }), [state]);\n\n return (\n <CalendarContext.Provider value={value}>\n {children}\n </CalendarContext.Provider>\n );\n}\n\nexport const useCalendar = () => {\n const context = useContext(CalendarContext);\n if (context === undefined) {\n throw new Error(\"useCalendar must be used within a CalendarProvider\");\n }\n return context;\n};\n","import React, { ChangeEvent } from \"react\";\nimport cx from \"classnames\";\nimport { EMonthOption, EYearOption, MonthListType } from \"../types\";\nimport { CALENDER_STRINGS, MONTH_LIST } from \"../constants\";\nimport { dateFn, getYearList, convertToDate } from \"../utils\";\nimport styles from \"./Header.module.css\";\nimport LeftArrow from \"../assets/LeftArrow\";\nimport RightArrow from \"../assets/RightArrow\";\nimport { useCalendar } from \"../context/CalendarContext\";\n\ninterface HeaderProps {\n headerClassName?: string;\n pastYearLength?: number;\n futureYearLength?: number;\n // Optional callback for external listeners if needed\n onMonthChange?: (date: Date) => void;\n}\n\nfunction Header({\n headerClassName,\n pastYearLength = 5,\n futureYearLength = 5,\n onMonthChange,\n}: HeaderProps) {\n const { state, dispatch } = useCalendar();\n const { currentDate } = state;\n\n const onMonthArrowClick = (option: EMonthOption) => {\n if (option === EMonthOption.add) {\n dispatch({ type: \"NEXT\" });\n const nextDate = currentDate.add(1, \"month\"); // predictive for callback\n onMonthChange?.(convertToDate(nextDate));\n } else if (option === EMonthOption.sub) {\n dispatch({ type: \"PREV\" });\n const prevDate = currentDate.subtract(1, \"month\"); // predictive for callback\n onMonthChange?.(convertToDate(prevDate));\n }\n };\n\n const onDropdownClick = (\n event: ChangeEvent<HTMLSelectElement>,\n option: EYearOption,\n ) => {\n const value = Number(event.target.value);\n let newDate = currentDate;\n\n if (option === EYearOption.month) {\n newDate = dateFn(currentDate).month(value);\n } else if (option === EYearOption.year) {\n newDate = dateFn(currentDate).year(value);\n }\n\n dispatch({ type: \"SET_DATE\", payload: newDate });\n onMonthChange?.(convertToDate(newDate));\n };\n\n return (\n <div className={cx(styles.header, headerClassName)}>\n <div className={styles.navigation}>\n <button\n className={styles.todayButton}\n onClick={() => {\n dispatch({ type: \"TODAY\" });\n onMonthChange?.(convertToDate(dateFn()));\n }}\n >\n Today\n </button>\n <div className={styles.arrows}>\n <button\n className={styles.iconButton}\n onClick={() => onMonthArrowClick(EMonthOption.sub)}\n >\n <LeftArrow />\n </button>\n <button\n className={styles.iconButton}\n onClick={() => onMonthArrowClick(EMonthOption.add)}\n >\n <RightArrow />\n </button>\n </div>\n <h2 className={styles.dateTitle}>{currentDate.format(\"MMMM YYYY\")}</h2>\n </div>\n\n <div className={styles.controls}>\n <select\n className={styles.select}\n id={CALENDER_STRINGS.MONTH}\n name={CALENDER_STRINGS.MONTH}\n value={currentDate.month()}\n onChange={(e) => onDropdownClick(e, EYearOption.month)}\n >\n {MONTH_LIST.map((month: MonthListType) => (\n <option key={month.label} value={month.value}>\n {month.label}\n </option>\n ))}\n </select>\n <select\n className={styles.select}\n id={CALENDER_STRINGS.YEAR}\n name={CALENDER_STRINGS.YEAR}\n value={currentDate.year()}\n onChange={(e) => onDropdownClick(e, EYearOption.year)}\n >\n {getYearList(\n pastYearLength,\n futureYearLength,\n currentDate.year(),\n ).map((year: number) => (\n <option key={year} value={year}>\n {year}\n </option>\n ))}\n </select>\n </div>\n </div>\n );\n}\n\nexport default Header;\n","import React, { useCallback, useMemo, memo, useEffect } from \"react\";\nimport cx from \"classnames\";\nimport { CalendarType, CalendarContentType } from \"./types\";\nimport { DAY_LIST_NAME, defaultCalenderProps } from \"./constants\";\nimport {\n dateFn,\n convertToDate,\n convertToDayjs,\n DateType,\n generateCalendarGrid,\n calculateMaxEvents,\n useResizeObserver,\n} from \"./utils\";\nimport styles from \"./Calendar.module.css\";\nimport EventItem from \"./common/EventItem\";\nimport Header from \"./layout/Header\";\nimport { CalendarProvider, useCalendar } from \"./context/CalendarContext\";\n\nfunction CalendarContent({\n dayType,\n width,\n height,\n onDateClick,\n onEventClick,\n onMoreClick,\n onMonthChange,\n isSelectDate,\n data: propsData, // Capture props data to sync\n ...restProps\n}: CalendarContentType) {\n const { state, dispatch } = useCalendar();\n const { currentDate: selectedDate, events: data } = state;\n\n // Sync data from props to context\n useEffect(() => {\n if (propsData) {\n dispatch({ type: \"SET_EVENTS\", payload: propsData });\n }\n }, [propsData, dispatch]);\n\n const calendarGrid = useMemo(\n () => generateCalendarGrid(selectedDate, data),\n [selectedDate, data],\n );\n\n const onClickDateHandler = useCallback(\n (dateInput: DateType) => {\n const newDate = dateFn(dateInput);\n if (!newDate.isSame(selectedDate, \"day\")) {\n dispatch({ type: \"SET_DATE\", payload: newDate });\n onDateClick?.(convertToDate(newDate));\n }\n },\n [selectedDate, dispatch, onDateClick],\n );\n\n return (\n <section\n style={\n {\n \"--calendar-width\": `${width}px`,\n \"--calendar-height\": `${height}px`,\n } as React.CSSProperties\n }\n className={cx(styles.calendar, restProps.className)}\n >\n <Header\n headerClassName={restProps.headerClassName}\n onMonthChange={onMonthChange}\n pastYearLength={restProps.pastYearLength}\n futureYearLength={restProps.futureYearLength}\n />\n <table className={cx(styles.table, restProps.tableClassName)}>\n <thead>\n <tr>\n {DAY_LIST_NAME[dayType].map((day: string) => (\n <th key={day} className={styles.tableHeader}>\n {day}\n </th>\n ))}\n </tr>\n </thead>\n <tbody className={styles.tableBody}>\n {calendarGrid.map((week, weekIndex) => (\n <tr key={weekIndex}>\n {week.map((dayInfo, dayIndex) => (\n <EventItem\n key={`date_${weekIndex}_${dayIndex}`}\n isSelected={\n isSelectDate &&\n dayInfo.isCurrentMonth &&\n dayInfo.displayDay === selectedDate.date()\n }\n isToday={dayInfo.isToday}\n isCurrentMonth={dayInfo.isCurrentMonth}\n onClick={isSelectDate ? onClickDateHandler : undefined}\n date={dayInfo.displayDay}\n dateObj={dayInfo.currentDate}\n data={dayInfo.events}\n cellWidth={width / 7}\n className={cx(styles.tableCell, restProps.tableDateClassName)}\n dataClassName={restProps.dataClassName}\n selectedClassName={restProps.selectedClassName}\n todayClassName={restProps.todayClassName}\n theme={restProps.theme}\n maxEvents={restProps.maxEvents}\n totalEvents={dayInfo.totalEvents}\n onEventClick={onEventClick}\n onMoreClick={(d) => onMoreClick?.(convertToDate(d))}\n />\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </section>\n );\n}\n\nfunction Calendar(props: CalendarType = defaultCalenderProps) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const { width: observedWidth, height: observedHeight } =\n useResizeObserver(containerRef);\n\n const allProps = { ...defaultCalenderProps, ...props };\n const { data, selectedDate } = allProps;\n\n // Use props if provided, otherwise use observed size\n const width = props.width ?? observedWidth ?? 0;\n const mainHeight = props.height ?? observedHeight ?? 0;\n const height = mainHeight - 120;\n\n const initialDate = useMemo(\n () => (selectedDate ? convertToDayjs(selectedDate) : undefined),\n [selectedDate],\n );\n\n const maxEvents = allProps.maxEvents ?? calculateMaxEvents(height);\n\n return (\n <CalendarProvider initialEvents={data} initialDate={initialDate}>\n <div ref={containerRef} className={styles.calendarContainer}>\n <CalendarContent\n {...allProps}\n width={width}\n height={height}\n maxEvents={maxEvents}\n />\n </div>\n </CalendarProvider>\n );\n}\n\nexport default memo(Calendar);\n","import Calendar from \"./Calendar\";\nimport { EDayType } from \"./types\";\nimport type { CalendarType, DataType } from \"./types\";\nimport { DAY_TYPE } from \"./constants\";\n\nexport { EDayType, CalendarType, DataType, DAY_TYPE };\nexport default Calendar;\n"],"x_google_ignoreList":[0,3,5],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","names":["MONTH_LIST: MonthListType[]","e","n","t","r","i","s","u","a","M","m","f","l","$","y","v","g","D","o","d","c","h","slots: string[][]","displayData: (DataTypeList | null)[]","allDayEvents: DataTypeList[]","initialState: CalendarState"],"sources":["../node_modules/classnames/index.js","../src/types/index.ts","../src/constants/index.ts","../node_modules/dayjs/dayjs.min.js","../src/utils/date.ts","../node_modules/calendarize/dist/index.mjs","../src/utils/calendarLogic.ts","../src/utils/common.ts","../src/utils/hooks.ts","../src/Calendar.module.css","../src/common/EventItem.module.css","../src/common/Popover.module.css","../src/common/Popover.tsx","../src/common/EventItem.tsx","../src/layout/Header.module.css","../src/assets/LeftArrow.tsx","../src/assets/RightArrow.tsx","../src/context/CalendarContext.tsx","../src/layout/Header.tsx","../src/Calendar.tsx","../src/index.ts"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { DateType } from \"../utils\";\n\nexport interface ThemeStyle {\n color?: string;\n bgColor?: string;\n}\n\nexport interface CalendarTheme {\n default?: ThemeStyle;\n selected?: ThemeStyle;\n today?: ThemeStyle;\n}\n\nexport interface DataType {\n startDate: string;\n endDate?: string;\n value: string;\n color?: string;\n}\n\nexport interface CalendarType {\n dayType?: EDayType;\n data?: DataType[];\n width?: number;\n height?: number;\n selectedDate?: Date;\n onDateClick?: (date: Date) => void;\n onEventClick?: (event: DataType) => void;\n onMoreClick?: (date: Date) => void;\n onMonthChange?: (date: Date) => void;\n isSelectDate?: boolean;\n className?: string;\n headerClassName?: string;\n tableClassName?: string;\n tableDateClassName?: string;\n dataClassName?: string;\n selectedClassName?: string;\n todayClassName?: string;\n pastYearLength?: number;\n futureYearLength?: number;\n theme?: CalendarTheme;\n maxEvents?: number;\n}\n\nexport interface CalendarContentType extends CalendarType {\n dayType: EDayType;\n data: DataType[];\n width: number;\n height: number;\n isSelectDate: boolean;\n pastYearLength: number;\n futureYearLength: number;\n maxEvents: number;\n}\n\nexport enum EDayType {\n fullName = \"FULL\",\n halfName = \"HALF\",\n}\n\nexport interface DataTypeList extends DataType {\n startDateWeek?: string;\n endDateWeek?: string;\n isSpacer?: boolean;\n}\n\nexport interface DateDataType {\n date: number;\n dateObj: DateType;\n data: (DataTypeList | null)[];\n cellWidth: number;\n className?: string;\n dataClassName?: string;\n isSelected: boolean;\n isToday: boolean;\n isCurrentMonth: boolean;\n onClick?: (date: DateType) => void;\n onEventClick?: (event: DataType) => void;\n onMoreClick?: (date: DateType) => void;\n selectedClassName?: string;\n todayClassName?: string;\n theme?: CalendarTheme;\n maxEvents?: number;\n totalEvents?: number;\n}\n\nexport interface MonthListType {\n label: string;\n value: number;\n}\n\nexport enum EMonthOption {\n add = \"add\",\n sub = \"sub\",\n}\n\nexport enum EYearOption {\n month = \"month\",\n year = \"year\",\n}\n\nexport type CalendarView = \"month\" | \"week\" | \"day\";\n","import { EDayType, MonthListType } from \"../types\";\n\nconst DAY_LIST = {\n SUNDAY: {\n FULL: \"Sunday\",\n HALF: \"Sun\",\n },\n MONDAY: {\n FULL: \"Monday\",\n HALF: \"Mon\",\n },\n TUESDAY: {\n FULL: \"Tuesday\",\n HALF: \"Tue\",\n },\n WEDNESDAY: {\n FULL: \"Wednesday\",\n HALF: \"Wed\",\n },\n THURSDAY: {\n FULL: \"Thursday\",\n HALF: \"Thu\",\n },\n FRIDAY: {\n FULL: \"Friday\",\n HALF: \"Fri\",\n },\n SATURDAY: {\n FULL: \"Saturday\",\n HALF: \"Sat\",\n },\n};\n\nexport const DAY_LIST_NAME = {\n FULL: [\n DAY_LIST.SUNDAY.FULL,\n DAY_LIST.MONDAY.FULL,\n DAY_LIST.TUESDAY.FULL,\n DAY_LIST.WEDNESDAY.FULL,\n DAY_LIST.THURSDAY.FULL,\n DAY_LIST.FRIDAY.FULL,\n DAY_LIST.SATURDAY.FULL,\n ],\n HALF: [\n DAY_LIST.SUNDAY.HALF,\n DAY_LIST.MONDAY.HALF,\n DAY_LIST.TUESDAY.HALF,\n DAY_LIST.WEDNESDAY.HALF,\n DAY_LIST.THURSDAY.HALF,\n DAY_LIST.FRIDAY.HALF,\n DAY_LIST.SATURDAY.HALF,\n ],\n};\n\nconst MONTHS = {\n JAN: { label: \"January\", value: 0 },\n FEB: { label: \"February\", value: 1 },\n MAR: { label: \"March\", value: 2 },\n APR: { label: \"April\", value: 3 },\n MAY: { label: \"May\", value: 4 },\n JUN: { label: \"June\", value: 5 },\n JUL: { label: \"July\", value: 6 },\n AUG: { label: \"August\", value: 7 },\n SEP: { label: \"September\", value: 8 },\n OCT: { label: \"October\", value: 9 },\n NOV: { label: \"November\", value: 10 },\n DEC: { label: \"December\", value: 11 },\n};\n\nexport const MONTH_LIST: MonthListType[] = Object.values(MONTHS);\n\nexport const CALENDER_STRINGS = {\n MONTH: \"monthDropdown\",\n YEAR: \"yearDropdown\",\n};\n\nexport const DAY_TYPE = {\n FULL_NAME: \"FULL\",\n HALF_NAME: \"HALF\",\n};\n\nexport const defaultTheme = {\n default: {\n color: \"#000\",\n bgColor: \"#fff\",\n },\n selected: {\n color: \"#fff\",\n bgColor: \"#007bff\",\n },\n today: {\n color: \"#007bff\",\n bgColor: \"#e6f2ff\",\n },\n};\n\nexport const defaultCalenderProps = {\n dayType: EDayType.halfName,\n data: [],\n isSelectDate: false,\n pastYearLength: 5,\n futureYearLength: 5,\n theme: defaultTheme,\n};\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|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,M={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(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","import dayjs, { Dayjs } from \"dayjs\";\n\nexport type DateType = Dayjs;\nexport const dateFn = dayjs;\n\nexport const getNoOfDays = (date: DateType): number => {\n const noOfDates = dayjs(date).daysInMonth();\n return noOfDates;\n};\n\nexport const getMonthStartingDay = (date: DateType): number => {\n const monthStartingDay = Number(dayjs(date).startOf(\"month\").format(\"d\"));\n return monthStartingDay;\n};\n\nexport const convertToDate = (dayjsDate: DateType): Date => {\n const date = dayjs(dayjsDate).toDate();\n return date;\n};\n\nexport const convertToDayjs = (date: Date): DateType => {\n const dayjsDate = dayjs(date);\n return dayjsDate;\n};\n\nexport const getYearList = (\n pastLength: number,\n futureLength: number,\n selectedYear: number,\n): number[] => {\n const yearLength = pastLength + futureLength;\n const yearStarting = dayjs().year() - pastLength;\n const yearList = Array.from(\n { length: yearLength },\n (_, index) => index + yearStarting,\n );\n\n if (!yearList.includes(selectedYear)) {\n if (dayjs().year() <= selectedYear) {\n yearList.push(selectedYear);\n } else {\n return [selectedYear, ...yearList];\n }\n }\n return yearList;\n};\n\nexport const checkIsToday = (\n selectedDate: DateType,\n dates: number,\n): boolean => {\n const cloneSelectedDate = dayjs(selectedDate).date(dates);\n\n const isToday = dayjs().isSame(cloneSelectedDate, \"day\");\n return isToday;\n};\n","export default function (target, offset) {\n\tvar i=0, j=0, week, out=[], date = new Date(target || new Date);\n\tvar year = date.getFullYear(), month = date.getMonth();\n\n\t// day index (of week) for 1st of month\n\tvar first = new Date(year, month, 1 - (offset | 0)).getDay();\n\n\t// how many days there are in this month\n\tvar days = new Date(year, month+1, 0).getDate();\n\n\twhile (i < days) {\n\t\tfor (j=0, week=Array(7); j < 7;) {\n\t\t\twhile (j < first) week[j++] = 0;\n\t\t\tweek[j++] = ++i > days ? 0 : i;\n\t\t\tfirst = 0;\n\t\t}\n\t\tout.push(week);\n\t}\n\n\treturn out;\n}\n","/**\n * @file calendarLogic.ts\n * @description Core logic for generating the calendar grid and managing event layout.\n *\n * This utility handles the complex task of:\n * 1. Generating a grid of dates for the current month view.\n * 2. Placing events onto this grid.\n * 3. Handling multi-day events that span across weeks.\n * 4. Calculating vertical slot assignments for events to prevent visual overlaps (the \"Tetris\" problem).\n */\n\nimport calendarize from \"calendarize\";\nimport { dateFn, checkIsToday, DateType } from \"./date\";\nimport { DataType, DataTypeList } from \"../types\";\n\n/**\n * Represents the information for a single day in the calendar grid.\n */\nexport interface CalendarDayInfo {\n /** The full date object */\n currentDate: DateType;\n /** Whether the day belongs to the currently selected month (for styling) */\n isCurrentMonth: boolean;\n /** The day number to display (1-31) */\n displayDay: number;\n /** List of events or spacers for this day's slots */\n events: (DataTypeList | null)[];\n /** Total number of events on this day (including hidden ones) */\n totalEvents: number;\n /** Whether this day is today */\n isToday: boolean;\n}\n\n/**\n * 2D array representing the calendar grid: [week][day]\n */\nexport type CalendarMatrix = CalendarDayInfo[][];\n\n/**\n * Generates the grid of days and events for the monthly view.\n *\n * This function handles:\n * 1. Grid Generation: Calculates the days for each week, handling previous/next month overlap.\n * 2. Event Processing: Filters events for each week and sorts them.\n * 3. Slot Assignment: Uses a \"tetris-like\" algorithm to stack overlapping events into available vertical slots.\n * 4. Data Preparation: Formats the data for the UI, including calculating event continuity across days.\n *\n * @param selectedDate - The currently selected date (determining the month to show)\n * @param events - List of all events\n * @returns A structured matrix of weeks and days with assigned events\n */\nexport const generateCalendarGrid = (\n selectedDate: DateType,\n events: DataType[],\n): CalendarMatrix => {\n // Sort events\n const dataEvents = [...events].sort((a, b) => {\n return dateFn(a.startDate)\n .startOf(\"day\")\n .diff(dateFn(b.startDate).startOf(\"day\"), \"days\");\n });\n\n const calendarArray = calendarize(selectedDate.toDate());\n\n return calendarArray.map((week, weekIndex) => {\n // -------------------------------------------------------------------------\n // 1. Grid Generation: Calculate dates for the entire week first\n // -------------------------------------------------------------------------\n const processedWeek = week.map((day, dayIndex) => {\n let currentDate = dateFn(selectedDate);\n let isCurrentMonth = true;\n let displayDay = day;\n\n if (day === 0) {\n isCurrentMonth = false;\n if (weekIndex === 0) {\n const startOfMonth = dateFn(selectedDate).startOf(\"month\");\n const startDayOfWeek = startOfMonth.day();\n currentDate = startOfMonth.subtract(startDayOfWeek - dayIndex, \"day\");\n displayDay = currentDate.date();\n } else {\n const startOfMonth = dateFn(selectedDate).startOf(\"month\");\n const startDayOfWeek = startOfMonth.day();\n\n const globalIndex = weekIndex * 7 + dayIndex;\n const daysFromStart = globalIndex - startDayOfWeek;\n\n currentDate = startOfMonth.add(daysFromStart, \"day\");\n displayDay = currentDate.date();\n }\n } else {\n currentDate = dateFn(selectedDate).date(day);\n }\n return { currentDate, isCurrentMonth, displayDay };\n });\n\n // -------------------------------------------------------------------------\n // 2. Event Identification: Identify all events overlapping with this week\n // -------------------------------------------------------------------------\n const weekStart = processedWeek[0].currentDate.startOf(\"day\");\n const weekEnd = processedWeek[6].currentDate.startOf(\"day\");\n\n const weekEvents = dataEvents.filter((item) => {\n const start = dateFn(item.startDate).startOf(\"day\");\n const end = item.endDate ? dateFn(item.endDate).startOf(\"day\") : start;\n // Check overlap\n return (\n start.isBefore(weekEnd.add(1, \"day\"), \"day\") &&\n end.isAfter(weekStart.subtract(1, \"day\"), \"day\")\n );\n });\n\n // -------------------------------------------------------------------------\n // 3. Event Sorting: Start Date asc, then Duration desc\n //\n // Sorting is crucial for the slot assignment algorithm (\"Tetris\" algorithm) to work efficiently.\n // By placing earlier events first, we fill the timeline from left to right.\n // By placing longer events first (among those starting on the same day), we ensure\n // that long-spanning events get stable top slots, reducing visual fragmentation.\n // -------------------------------------------------------------------------\n weekEvents.sort((a, b) => {\n const startA = dateFn(a.startDate).startOf(\"day\");\n const startB = dateFn(b.startDate).startOf(\"day\");\n // Primary sort: Start date (ascending)\n if (!startA.isSame(startB, \"day\")) return startA.diff(startB);\n\n // Secondary sort: Duration (descending)\n const endA = a.endDate ? dateFn(a.endDate).startOf(\"day\") : startA;\n const endB = b.endDate ? dateFn(b.endDate).startOf(\"day\") : startB;\n const durA = endA.diff(startA, \"day\");\n const durB = endB.diff(startB, \"day\");\n return durB - durA; // Longer events first\n });\n\n // -------------------------------------------------------------------------\n // 4. Slot Assignment: \"Tetris\" Algorithm\n //\n // The goal here is to assign a vertical \"slot\" index (0, 1, 2...) to each event\n // so that no two overlapping events share the same slot.\n //\n // We maintain a 2D array `slots[dayIndex][slotIndex]` to track usage.\n // dayIndex: 0..6 (Mon-Sun)\n // slotIndex: 0..N (Vertical position)\n //\n // For each event:\n // 1. Determine its start/end range within this week (clipped to 0..6).\n // 2. Find the lowest `slotIndex` where `slots[day][slotIndex]` is empty for all days in the range.\n // 3. Mark that slot as used for those days.\n // -------------------------------------------------------------------------\n const slots: string[][] = Array(7)\n .fill(null)\n .map(() => []); // slots[dayIndex][slotIndex] = eventId\n const eventSlots = new Map<string, number>(); // Map<eventId, slotIndex> for quick lookup later\n\n weekEvents.forEach((event, index) => {\n // Determine start/end indices in this week (0..6)\n // We clip the event's start/end to the current week's boundaries because\n // we are only rendering one week at a time in this loop.\n const start = dateFn(event.startDate).startOf(\"day\");\n const end = event.endDate ? dateFn(event.endDate).startOf(\"day\") : start;\n\n let startIndex = start.diff(weekStart, \"day\");\n let endIndex = end.diff(weekStart, \"day\");\n\n // Clip to week boundaries\n if (startIndex < 0) startIndex = 0;\n if (endIndex > 6) endIndex = 6;\n\n // Find first available slot\n let slotIndex = 0;\n while (true) {\n let isAvailable = true;\n // Check if this slotIndex is free for the entire duration of the event (within this week)\n for (let i = startIndex; i <= endIndex; i++) {\n if (slots[i][slotIndex]) {\n isAvailable = false;\n break;\n }\n }\n if (isAvailable) break; // Found a spot!\n slotIndex++; // Try the next slot down\n }\n\n // Assign the found slot\n // We create a unique temporary ID because the raw event data might not have one,\n // or we might be processing split segments of the same logical event.\n const eventId = event.startDate + event.value + index;\n eventSlots.set(eventId, slotIndex);\n\n // Mark the slots as occupied\n for (let i = startIndex; i <= endIndex; i++) {\n slots[i][slotIndex] = eventId;\n }\n\n // Store the ID on the event object temporarily for step 5\n (event as any)._tempId = eventId;\n });\n\n // -------------------------------------------------------------------------\n // 5. Content Generation: Generate final display data for each day\n // Map the calculated slots back to individual day cells.\n // -------------------------------------------------------------------------\n return processedWeek.map((dayObj, dayIndex) => {\n const { currentDate, isCurrentMonth, displayDay } = dayObj;\n\n // Find events active on this day\n const activeEvents = weekEvents.filter((event) => {\n const start = dateFn(event.startDate).startOf(\"day\");\n const end = event.endDate\n ? dateFn(event.endDate).startOf(\"day\")\n : start;\n return (\n !currentDate.isBefore(start, \"day\") &&\n !currentDate.isAfter(end, \"day\")\n );\n });\n\n const displayData: (DataTypeList | null)[] = [];\n\n let maxDaySlot = -1;\n activeEvents.forEach((e) => {\n const s = eventSlots.get((e as any)._tempId);\n if (s !== undefined && s > maxDaySlot) maxDaySlot = s;\n });\n\n for (let s = 0; s <= maxDaySlot; s++) {\n const event = activeEvents.find(\n (e) => eventSlots.get((e as any)._tempId) === s,\n );\n if (event) {\n const itemStartDate = dateFn(event.startDate).startOf(\"day\");\n const isStart = itemStartDate.isSame(currentDate, \"day\");\n const isWeekStart = dayIndex === 0;\n\n // If the event starts today (or earlier but this is the start of the week),\n // we render the \"segment\" of the event.\n if (isStart || isWeekStart) {\n // Ensure the visual end date doesn't exceed the end of the current week.\n // This is crucial for rendering the correct width for the event bar using CSS/col-span.\n const itemEndDate = event.endDate\n ? dateFn(event.endDate).startOf(\"day\")\n : dateFn(event.startDate).startOf(\"day\");\n const endOfWeekDate = dateFn(currentDate).add(6 - dayIndex, \"day\");\n\n let effectiveEndDate = itemEndDate;\n if (itemEndDate.isAfter(endOfWeekDate, \"date\")) {\n effectiveEndDate = endOfWeekDate;\n }\n\n displayData.push({\n ...event,\n startDateWeek: currentDate.format(\"YYYY-MM-DD\"),\n endDateWeek: effectiveEndDate.format(\"YYYY-MM-DD\"),\n });\n } else {\n // Spacer: The event exists on this day but was started in a previous cell in this row.\n // We insert a spacer so that subsequent events in this column get pushed down to their correct slots.\n displayData.push({ ...event, isSpacer: true });\n }\n } else {\n // Empty slot: No event assigned to this vertical index.\n displayData.push(null);\n }\n }\n\n return {\n currentDate,\n isCurrentMonth,\n displayDay,\n events: displayData,\n totalEvents: activeEvents.length,\n isToday: checkIsToday(selectedDate, displayDay) && isCurrentMonth,\n };\n });\n });\n};\n","/**\n * Calculates the maximum number of events that can be displayed in a cell based on the calendar height.\n *\n * @param height - The total height of the calendar\n * @returns The maximum number of events to display\n */\nexport const calculateMaxEvents = (height: number): number => {\n const ROWS_IN_VIEW = 6;\n const DATE_LABEL_HEIGHT = 28; // height of the date circle + margins\n const CELL_PADDING = 8; // approx padding\n const EVENT_HEIGHT = 26; // 24px height + 2px margin\n\n const cellHeight = height / ROWS_IN_VIEW;\n const availableHeight = cellHeight - DATE_LABEL_HEIGHT - CELL_PADDING;\n const calculatedMax = Math.round(availableHeight / EVENT_HEIGHT) - 1; // -1 for \"more\" button\n\n return Math.max(0, calculatedMax);\n};\n","import { useEffect, useState, RefObject } from \"react\";\n\n/**\n * Hook to observe the size of an element.\n * @param ref React ref object of the element to observe\n * @returns The width and height of the element\n */\nexport const useResizeObserver = (ref: RefObject<HTMLElement | null>) => {\n const [size, setSize] = useState({ width: 0, height: 0 });\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries) || !entries.length) return;\n\n const entry = entries[0];\n const { width, height } = entry.contentRect;\n\n setSize({ width, height });\n });\n\n resizeObserver.observe(element);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [ref]);\n\n return size;\n};\n",".calendarContainer {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.calendar {\n width: 100%;\n height: 100%;\n /* Default values, overridden by inline styles */\n --calendar-width: 0px;\n --calendar-height: 0px;\n\n /* Theme variables */\n --primary-color: #3b82f6;\n --primary-hover: #2563eb;\n --text-primary: #1f2937;\n --text-secondary: #6b7280;\n --bg-color: #ffffff;\n --bg-hover: #f3f4f6;\n --border-color: #e5e7eb;\n --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n --shadow-md:\n 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n\n font-family:\n ui-sans-serif,\n system-ui,\n -apple-system,\n BlinkMacSystemFont,\n \"Segoe UI\",\n Roboto,\n \"Helvetica Neue\",\n Arial,\n sans-serif;\n color: var(--text-primary);\n background-color: var(--bg-color);\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-md);\n box-sizing: border-box;\n overflow: hidden;\n overflow-y: auto;\n\n & * {\n padding: 0;\n margin: 0;\n box-sizing: border-box;\n }\n}\n\n.table {\n border-collapse: separate;\n border-spacing: 0;\n}\n\n.tableHeader,\n.tableCell {\n border-right: 1px solid var(--border-color);\n border-bottom: 1px solid var(--border-color);\n}\n\n.tableHeader:last-child,\n.tableCell:last-child {\n border-right: none;\n}\n\n.table tr:last-child .tableCell {\n border-bottom: none;\n}\n\n.tableHeader {\n height: 40px;\n background-color: #f9fafb;\n color: var(--text-secondary);\n font-weight: 600;\n font-size: 0.875rem;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n text-align: center;\n vertical-align: middle;\n}\n\n.tableBody {\n height: var(--calendar-height);\n}\n",".dateData {\n cursor: pointer;\n position: relative;\n transition: background-color 0.15s ease;\n vertical-align: top;\n height: calc(var(--calendar-height) / 6); /* Approx 6 rows usually */\n min-width: calc(var(--calendar-width) / 7);\n max-width: calc(var(--calendar-width) / 7);\n padding: 0.25rem;\n}\n\n.dateData:hover {\n background-color: #fafafa;\n}\n\n.currentMonth {\n color: #9ca3af; /* muted text */\n background-color: #f9fafb;\n}\n\n.cellContent {\n height: 100%;\n width: 100%;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n gap: 0.25rem;\n}\n\n.dateLabel {\n font-size: 0.875rem;\n font-weight: 500;\n padding: 0.25rem;\n border-radius: 50%;\n width: 1.75rem;\n height: 1.75rem;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 0.25rem;\n color: var(--text-primary);\n}\n\n.selected .dateLabel {\n background-color: var(--primary-color);\n color: white;\n}\n\n.today .dateLabel {\n background-color: var(--primary-color);\n color: white;\n}\n\n.dataContainer {\n display: flex;\n flex-direction: column;\n gap: 2px;\n overflow: visible;\n flex: 1;\n}\n\n.spacer {\n height: 1.5rem; /* Match eventItem height */\n margin-bottom: 2px;\n}\n\n.eventItem {\n background-color: var(--primary-color);\n border-radius: 4px; /* Slightly rounded */\n z-index: 2;\n position: relative;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 0.75rem;\n padding: 0.15rem 0.5rem;\n color: white;\n font-weight: 500;\n height: 1.5rem;\n line-height: 1.2rem;\n box-sizing: border-box;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n transition:\n transform 0.1s ease,\n box-shadow 0.1s ease;\n cursor: pointer;\n}\n\n.eventItem:hover {\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);\n filter: brightness(1.05);\n}\n\n.moreEventsContainer {\n position: relative;\n margin-top: 2px;\n}\n\n.moreEvents {\n font-size: 0.75rem;\n font-weight: 600;\n color: var(--text-secondary);\n cursor: pointer;\n padding: 0.15rem 0.5rem;\n background: transparent;\n border: none;\n width: 100%;\n text-align: left;\n border-radius: 4px;\n transition: background-color 0.2s;\n}\n\n.moreEvents:hover {\n background-color: var(--bg-hover);\n color: var(--text-primary);\n}\n",".popover {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n z-index: 100;\n background-color: white;\n border: 1px solid var(--border-color);\n border-radius: var(--radius-lg);\n box-shadow: var(--shadow-md);\n padding: 0.5rem;\n min-width: 180px;\n max-width: 240px;\n max-height: 240px;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 2px;\n opacity: 0;\n animation: fadeIn 0.2s ease forwards;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.popoverHeader {\n font-size: 0.75rem;\n font-weight: 600;\n margin-bottom: 0.5rem;\n color: var(--text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n padding-bottom: 0.25rem;\n border-bottom: 1px solid var(--border-color);\n}\n\n.popoverItem {\n padding: 0.25rem 0.5rem;\n background-color: var(--primary-color);\n color: white;\n border-radius: var(--radius-md);\n font-size: 0.75rem;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n cursor: pointer;\n margin-bottom: 2px;\n transition: opacity 0.2s ease;\n}\n\n.popoverItem:hover {\n opacity: 0.9;\n}\n\n.popoverItem.startBefore {\n clip-path: polygon(10px 0, 100% 0, 100% 100%, 10px 100%, 0 50%);\n padding-left: 14px;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n\n.popoverItem.endAfter {\n clip-path: polygon(\n 0 0,\n calc(100% - 10px) 0,\n 100% 50%,\n calc(100% - 10px) 100%,\n 0 100%\n );\n padding-right: 14px;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.popoverItem.startBefore.endAfter {\n clip-path: polygon(\n 10px 0,\n calc(100% - 10px) 0,\n 100% 50%,\n calc(100% - 10px) 100%,\n 10px 100%,\n 0 50%\n );\n padding-left: 14px;\n padding-right: 14px;\n border-radius: 0;\n}\n","import React, { useRef, useEffect } from \"react\";\nimport cx from \"classnames\";\nimport styles from \"./Popover.module.css\";\nimport { dateFn, DateType } from \"../utils\";\nimport { DataTypeList } from \"../types\";\n\ninterface PopoverProps {\n dateObj: DateType;\n events: DataTypeList[];\n onEventClick?: (data: DataTypeList) => void;\n onClose: () => void;\n}\n\nfunction Popover({ dateObj, events, onEventClick, onClose }: PopoverProps) {\n const popoverRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n popoverRef.current &&\n !popoverRef.current.contains(event.target as Node)\n ) {\n onClose();\n }\n }\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [onClose]);\n\n return (\n <div\n className={styles.popover}\n ref={popoverRef}\n onClick={(e) => e.stopPropagation()}\n >\n <div className={styles.popoverHeader}>\n {dateFn(dateObj).format(\"ddd, D MMM\")}\n </div>\n {events.map((item, idx) => {\n const dayStart = dateFn(dateObj).startOf(\"day\");\n const eventStart = dateFn(item.startDate).startOf(\"day\");\n const eventEnd = item.endDate\n ? dateFn(item.endDate).startOf(\"day\")\n : eventStart;\n\n const isStartBefore = eventStart.isBefore(dayStart, \"day\");\n const isEndAfter = eventEnd.isAfter(dayStart, \"day\");\n\n return (\n <div\n key={`pop-${idx}`}\n className={cx(styles.popoverItem, {\n [styles.startBefore]: isStartBefore,\n [styles.endAfter]: isEndAfter,\n })}\n style={{ backgroundColor: item.color }}\n onClick={(e) => {\n e.stopPropagation();\n onEventClick?.(item);\n onClose();\n }}\n title={item.value}\n >\n {item.value}\n </div>\n );\n })}\n </div>\n );\n}\n\nexport default Popover;\n","import React from \"react\";\nimport cx from \"classnames\";\nimport { DataTypeList, DateDataType } from \"../types\";\nimport { dateFn } from \"../utils\";\nimport styles from \"./EventItem.module.css\";\nimport Popover from \"./Popover\";\nimport { defaultTheme } from \"../constants\";\n\nfunction EventItem({\n date,\n dateObj,\n data,\n cellWidth,\n className,\n dataClassName,\n isSelected,\n isToday,\n onClick,\n selectedClassName,\n todayClassName,\n isCurrentMonth,\n theme,\n maxEvents = 3, // Default limit\n onMoreClick,\n onEventClick,\n totalEvents = 0,\n}: DateDataType) {\n const [showPopover, setShowPopover] = React.useState(false);\n\n const styleSource = isSelected\n ? { ...defaultTheme.selected, ...theme?.selected }\n : isToday\n ? { ...defaultTheme.today, ...theme?.today }\n : { ...defaultTheme.default, ...theme?.default };\n\n const style = {\n color: styleSource?.color,\n backgroundColor: styleSource?.bgColor,\n };\n\n // Determine which items to display\n let visibleEvents = data;\n let hiddenEventsCount = 0;\n\n if (\n (maxEvents || maxEvents === 0) &&\n data &&\n (totalEvents >= maxEvents || data.length > maxEvents)\n ) {\n visibleEvents = data.slice(0, maxEvents);\n\n const visibleRealEventsCount = visibleEvents.filter(\n (e) => e !== null,\n ).length;\n hiddenEventsCount = totalEvents - visibleRealEventsCount;\n }\n\n const allDayEvents: DataTypeList[] =\n data?.filter((e): e is DataTypeList => e !== null) || [];\n\n return (\n <td\n style={style}\n onClick={() => onClick?.(dateObj)}\n className={cx(styles.dateData, className, {\n [styles.currentMonth]: !isCurrentMonth,\n [cx(styles.selected, selectedClassName)]: isSelected,\n [cx(styles.today, todayClassName)]: isToday,\n })}\n >\n <div className={styles.cellContent}>\n <p className={styles.dateLabel}>{date}</p>\n\n {data && (\n <div className={cx(styles.dataContainer, dataClassName)}>\n {visibleEvents.map((item, index) => {\n if (!item || item.isSpacer) {\n return (\n <div key={`spacer-${index}`} className={styles.spacer} />\n );\n }\n\n let diffDates = 1;\n let tooltipText = dateFn(item.startDate).format(\"YYYY-MM-DD\");\n if (item.endDateWeek) {\n diffDates =\n dateFn(item.endDateWeek).diff(item.startDateWeek, \"days\") + 1;\n tooltipText += ` to ${dateFn(item.endDate).format(\"YYYY-MM-DD\")}`;\n }\n tooltipText += ` - ${item.value}`;\n const width = `${cellWidth * diffDates - 16}px`;\n\n return (\n <div\n key={`${item.startDate}-${index}`}\n className={styles.eventItem}\n style={{ width, backgroundColor: item.color }}\n title={tooltipText}\n onClick={(e) => {\n e.stopPropagation();\n onEventClick?.(item);\n }}\n >\n {item.value}\n </div>\n );\n })}\n {hiddenEventsCount > 0 && (\n <div className={styles.moreEventsContainer}>\n <button\n className={styles.moreEvents}\n onClick={(e) => {\n e.stopPropagation();\n !showPopover && setShowPopover(true);\n onMoreClick?.(dateObj);\n }}\n >\n + {hiddenEventsCount} more\n </button>\n {showPopover && (\n <Popover\n dateObj={dateObj}\n events={allDayEvents}\n onEventClick={onEventClick}\n onClose={() => setShowPopover(false)}\n />\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </td>\n );\n}\n\nexport default EventItem;\n",".header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem;\n background-color: transparent;\n width: 100%;\n box-sizing: border-box;\n}\n\n.navigation {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n\n.todayButton {\n background-color: transparent;\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n color: var(--text-primary);\n cursor: pointer;\n font-family: inherit;\n font-size: 0.875rem;\n font-weight: 500;\n padding: 0.5rem 1rem;\n transition: all 0.2s ease;\n}\n\n.todayButton:hover {\n background-color: var(--bg-hover);\n border-color: var(--text-secondary);\n}\n\n.arrows {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.iconButton {\n background: transparent;\n border: 1px solid transparent;\n border-radius: var(--radius-md);\n color: var(--text-secondary);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 2rem;\n width: 2rem;\n outline: none;\n transition: all 0.2s ease;\n}\n\n.iconButton:hover {\n background-color: var(--bg-hover);\n color: var(--text-primary);\n}\n\n.dateTitle {\n color: var(--text-primary);\n font-family: inherit;\n font-size: 1.25rem;\n font-weight: 600;\n margin: 0;\n white-space: nowrap;\n}\n\n.controls {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n}\n\n.select {\n appearance: none;\n background-color: var(--bg-color);\n background-image: url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3E%3C/svg%3E\");\n background-position: right 0.5rem center;\n background-repeat: no-repeat;\n background-size: 1.5em 1.5em;\n border: 1px solid var(--border-color);\n border-radius: var(--radius-md);\n color: var(--text-primary);\n cursor: pointer;\n font-family: inherit;\n font-size: 0.875rem;\n padding: 0.5rem 2.5rem 0.5rem 1rem;\n transition: border-color 0.2s ease;\n outline: none;\n}\n\n.select:hover {\n border-color: var(--text-secondary);\n}\n\n.select:focus {\n border-color: var(--primary-color);\n box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);\n}\n","import React from \"react\";\n\nfunction LeftArrow() {\n return (\n <svg\n width=\"40px\"\n height=\"40px\"\n viewBox=\"0 0 24.00 24.00\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n stroke=\"currentColor\"\n transform=\"rotate(180)\"\n >\n <g id=\"SVGRepo_bgCarrier\" strokeWidth=\"0\" />\n <g\n id=\"SVGRepo_tracerCarrier\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <g id=\"SVGRepo_iconCarrier\">\n <path\n d=\"M10 7L15 12L10 17\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n}\n\nexport default LeftArrow;\n","import React from \"react\";\n\nfunction RightArrow() {\n return (\n <svg\n width=\"40px\"\n height=\"40px\"\n viewBox=\"0 0 24.00 24.00\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n stroke=\"currentColor\"\n >\n <g id=\"SVGRepo_bgCarrier\" strokeWidth=\"0\" />\n <g\n id=\"SVGRepo_tracerCarrier\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <g id=\"SVGRepo_iconCarrier\">\n <path\n d=\"M10 7L15 12L10 17\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n </svg>\n );\n}\n\nexport default RightArrow;\n","import React, {\n createContext,\n useContext,\n useReducer,\n ReactNode,\n useMemo,\n} from \"react\";\nimport { dateFn, DateType } from \"../utils\";\nimport { DataType, CalendarView } from \"../types\";\n\ninterface CalendarState {\n currentDate: DateType;\n selectedDate: DateType;\n view: CalendarView;\n events: DataType[];\n}\n\ntype CalendarAction =\n | { type: \"SET_DATE\"; payload: DateType }\n | { type: \"SET_VIEW\"; payload: CalendarView }\n | { type: \"SET_EVENTS\"; payload: DataType[] }\n | { type: \"NEXT\" }\n | { type: \"PREV\" }\n | { type: \"TODAY\" };\n\nconst initialState: CalendarState = {\n currentDate: dateFn(),\n selectedDate: dateFn(),\n view: \"month\",\n events: [],\n};\n\nconst CalendarContext = createContext<\n | {\n state: CalendarState;\n dispatch: React.Dispatch<CalendarAction>;\n }\n | undefined\n>(undefined);\n\nfunction calendarReducer(\n state: CalendarState,\n action: CalendarAction,\n): CalendarState {\n switch (action.type) {\n case \"SET_DATE\":\n return {\n ...state,\n currentDate: action.payload,\n selectedDate: action.payload,\n };\n case \"SET_VIEW\":\n return { ...state, view: action.payload };\n case \"SET_EVENTS\":\n return { ...state, events: action.payload };\n case \"NEXT\": {\n let nextDate = state.currentDate;\n if (state.view === \"month\") nextDate = nextDate.add(1, \"month\");\n else if (state.view === \"week\") nextDate = nextDate.add(1, \"week\");\n else if (state.view === \"day\") nextDate = nextDate.add(1, \"day\");\n return { ...state, currentDate: nextDate };\n }\n case \"PREV\": {\n let prevDate = state.currentDate;\n if (state.view === \"month\") prevDate = prevDate.subtract(1, \"month\");\n else if (state.view === \"week\") prevDate = prevDate.subtract(1, \"week\");\n else if (state.view === \"day\") prevDate = prevDate.subtract(1, \"day\");\n return { ...state, currentDate: prevDate };\n }\n case \"TODAY\":\n return {\n ...state,\n currentDate: dateFn(),\n selectedDate: dateFn(),\n };\n default:\n return state;\n }\n}\n\ninterface CalendarProviderProps {\n children: ReactNode;\n initialEvents?: DataType[];\n initialDate?: DateType;\n}\n\nexport function CalendarProvider({\n children,\n initialEvents = [],\n initialDate,\n}: CalendarProviderProps) {\n const [state, dispatch] = useReducer(calendarReducer, {\n ...initialState,\n events: initialEvents,\n currentDate: initialDate || initialState.currentDate,\n selectedDate: initialDate || initialState.selectedDate,\n });\n\n const value = useMemo(() => ({ state, dispatch }), [state]);\n\n return (\n <CalendarContext.Provider value={value}>\n {children}\n </CalendarContext.Provider>\n );\n}\n\nexport const useCalendar = () => {\n const context = useContext(CalendarContext);\n if (context === undefined) {\n throw new Error(\"useCalendar must be used within a CalendarProvider\");\n }\n return context;\n};\n","import React, { ChangeEvent } from \"react\";\nimport cx from \"classnames\";\nimport { EMonthOption, EYearOption, MonthListType } from \"../types\";\nimport { CALENDER_STRINGS, MONTH_LIST } from \"../constants\";\nimport { dateFn, getYearList, convertToDate } from \"../utils\";\nimport styles from \"./Header.module.css\";\nimport LeftArrow from \"../assets/LeftArrow\";\nimport RightArrow from \"../assets/RightArrow\";\nimport { useCalendar } from \"../context/CalendarContext\";\n\ninterface HeaderProps {\n headerClassName?: string;\n pastYearLength?: number;\n futureYearLength?: number;\n // Optional callback for external listeners if needed\n onMonthChange?: (date: Date) => void;\n}\n\nfunction Header({\n headerClassName,\n pastYearLength = 5,\n futureYearLength = 5,\n onMonthChange,\n}: HeaderProps) {\n const { state, dispatch } = useCalendar();\n const { currentDate } = state;\n\n const onMonthArrowClick = (option: EMonthOption) => {\n if (option === EMonthOption.add) {\n dispatch({ type: \"NEXT\" });\n const nextDate = currentDate.add(1, \"month\"); // predictive for callback\n onMonthChange?.(convertToDate(nextDate));\n } else if (option === EMonthOption.sub) {\n dispatch({ type: \"PREV\" });\n const prevDate = currentDate.subtract(1, \"month\"); // predictive for callback\n onMonthChange?.(convertToDate(prevDate));\n }\n };\n\n const onDropdownClick = (\n event: ChangeEvent<HTMLSelectElement>,\n option: EYearOption,\n ) => {\n const value = Number(event.target.value);\n let newDate = currentDate;\n\n if (option === EYearOption.month) {\n newDate = dateFn(currentDate).month(value);\n } else if (option === EYearOption.year) {\n newDate = dateFn(currentDate).year(value);\n }\n\n dispatch({ type: \"SET_DATE\", payload: newDate });\n onMonthChange?.(convertToDate(newDate));\n };\n\n return (\n <div className={cx(styles.header, headerClassName)}>\n <div className={styles.navigation}>\n <button\n className={styles.todayButton}\n onClick={() => {\n dispatch({ type: \"TODAY\" });\n onMonthChange?.(convertToDate(dateFn()));\n }}\n >\n Today\n </button>\n <div className={styles.arrows}>\n <button\n className={styles.iconButton}\n onClick={() => onMonthArrowClick(EMonthOption.sub)}\n >\n <LeftArrow />\n </button>\n <button\n className={styles.iconButton}\n onClick={() => onMonthArrowClick(EMonthOption.add)}\n >\n <RightArrow />\n </button>\n </div>\n <h2 className={styles.dateTitle}>{currentDate.format(\"MMMM YYYY\")}</h2>\n </div>\n\n <div className={styles.controls}>\n <select\n className={styles.select}\n id={CALENDER_STRINGS.MONTH}\n name={CALENDER_STRINGS.MONTH}\n value={currentDate.month()}\n onChange={(e) => onDropdownClick(e, EYearOption.month)}\n >\n {MONTH_LIST.map((month: MonthListType) => (\n <option key={month.label} value={month.value}>\n {month.label}\n </option>\n ))}\n </select>\n <select\n className={styles.select}\n id={CALENDER_STRINGS.YEAR}\n name={CALENDER_STRINGS.YEAR}\n value={currentDate.year()}\n onChange={(e) => onDropdownClick(e, EYearOption.year)}\n >\n {getYearList(\n pastYearLength,\n futureYearLength,\n currentDate.year(),\n ).map((year: number) => (\n <option key={year} value={year}>\n {year}\n </option>\n ))}\n </select>\n </div>\n </div>\n );\n}\n\nexport default Header;\n","import React, { useCallback, useMemo, memo, useEffect } from \"react\";\nimport cx from \"classnames\";\nimport { CalendarType, CalendarContentType } from \"./types\";\nimport { DAY_LIST_NAME, defaultCalenderProps } from \"./constants\";\nimport {\n dateFn,\n convertToDate,\n convertToDayjs,\n DateType,\n generateCalendarGrid,\n calculateMaxEvents,\n useResizeObserver,\n} from \"./utils\";\nimport styles from \"./Calendar.module.css\";\nimport EventItem from \"./common/EventItem\";\nimport Header from \"./layout/Header\";\nimport { CalendarProvider, useCalendar } from \"./context/CalendarContext\";\n\nfunction CalendarContent({\n dayType,\n width,\n height,\n onDateClick,\n onEventClick,\n onMoreClick,\n onMonthChange,\n isSelectDate,\n data: propsData, // Capture props data to sync\n ...restProps\n}: CalendarContentType) {\n const { state, dispatch } = useCalendar();\n const { currentDate: selectedDate, events: data } = state;\n\n // Sync data from props to context\n useEffect(() => {\n if (propsData) {\n dispatch({ type: \"SET_EVENTS\", payload: propsData });\n }\n }, [propsData]);\n\n const calendarGrid = useMemo(\n () => generateCalendarGrid(selectedDate, data),\n [selectedDate, data],\n );\n\n const onClickDateHandler = useCallback(\n (dateInput: DateType) => {\n const newDate = dateFn(dateInput);\n onDateClick?.(convertToDate(newDate));\n if (isSelectDate && !newDate.isSame(selectedDate, \"day\")) {\n dispatch({ type: \"SET_DATE\", payload: newDate });\n }\n },\n [selectedDate, onDateClick],\n );\n\n return (\n <section\n style={\n {\n \"--calendar-width\": `${width}px`,\n \"--calendar-height\": `${height}px`,\n } as React.CSSProperties\n }\n className={cx(styles.calendar, restProps.className)}\n >\n <Header\n headerClassName={restProps.headerClassName}\n onMonthChange={onMonthChange}\n pastYearLength={restProps.pastYearLength}\n futureYearLength={restProps.futureYearLength}\n />\n <table className={cx(styles.table, restProps.tableClassName)}>\n <thead>\n <tr>\n {DAY_LIST_NAME[dayType].map((day: string) => (\n <th key={day} className={styles.tableHeader}>\n {day}\n </th>\n ))}\n </tr>\n </thead>\n <tbody className={styles.tableBody}>\n {calendarGrid.map((week, weekIndex) => (\n <tr key={weekIndex}>\n {week.map((dayInfo, dayIndex) => (\n <EventItem\n key={`date_${weekIndex}_${dayIndex}`}\n isSelected={\n isSelectDate &&\n dayInfo.isCurrentMonth &&\n dayInfo.displayDay === selectedDate.date()\n }\n isToday={dayInfo.isToday}\n isCurrentMonth={dayInfo.isCurrentMonth}\n onClick={onClickDateHandler}\n date={dayInfo.displayDay}\n dateObj={dayInfo.currentDate}\n data={dayInfo.events}\n cellWidth={width / 7}\n className={cx(styles.tableCell, restProps.tableDateClassName)}\n dataClassName={restProps.dataClassName}\n selectedClassName={restProps.selectedClassName}\n todayClassName={restProps.todayClassName}\n theme={restProps.theme}\n maxEvents={restProps.maxEvents}\n totalEvents={dayInfo.totalEvents}\n onEventClick={onEventClick}\n onMoreClick={(d) => onMoreClick?.(convertToDate(d))}\n />\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </section>\n );\n}\n\nfunction Calendar(props: CalendarType = defaultCalenderProps) {\n const containerRef = React.useRef<HTMLDivElement>(null);\n const { width: observedWidth, height: observedHeight } =\n useResizeObserver(containerRef);\n\n const allProps = { ...defaultCalenderProps, ...props };\n const { data, selectedDate } = allProps;\n\n // Use props if provided, otherwise use observed size\n const width = props.width ?? observedWidth ?? 0;\n const mainHeight = props.height ?? observedHeight ?? 0;\n const height = mainHeight - 120;\n\n const initialDate = useMemo(\n () => (selectedDate ? convertToDayjs(selectedDate) : undefined),\n [selectedDate],\n );\n\n const maxEvents = allProps.maxEvents ?? calculateMaxEvents(height);\n\n return (\n <CalendarProvider initialEvents={data} initialDate={initialDate}>\n <div ref={containerRef} className={styles.calendarContainer}>\n <CalendarContent\n {...allProps}\n width={width}\n height={height}\n maxEvents={maxEvents}\n />\n </div>\n </CalendarProvider>\n );\n}\n\nexport default memo(Calendar);\n","import Calendar from \"./Calendar\";\nimport { EDayType } from \"./types\";\nimport type { CalendarType, DataType } from \"./types\";\nimport { DAY_TYPE } from \"./constants\";\n\nexport { EDayType, CalendarType, DataType, DAY_TYPE };\nexport default Calendar;\n"],"x_google_ignoreList":[0,3,5],"mappings":"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"}
|