UNPKG

events-calendar

Version:

A flexible, responsive, and feature-rich calendar component for modern React applications.

2 lines 34.2 kB
"use strict";"use client";var pr=Object.create;var Te=Object.defineProperty;var vr=Object.getOwnPropertyDescriptor;var fr=Object.getOwnPropertyNames;var ur=Object.getPrototypeOf,hr=Object.prototype.hasOwnProperty;var gr=(e,t)=>{for(var r in t)Te(e,r,{get:t[r],enumerable:!0})},lt=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of fr(t))!hr.call(e,n)&&n!==r&&Te(e,n,{get:()=>t[n],enumerable:!(a=vr(t,n))||a.enumerable});return e};var P=(e,t,r)=>(r=e!=null?pr(ur(e)):{},lt(t||!e||!e.__esModule?Te(r,"default",{value:e,enumerable:!0}):r,e)),yr=e=>lt(Te({},"__esModule",{value:!0}),e);var Ir={};gr(Ir,{CALENDAR_VIEWS:()=>$,DAYS_IN_FULL_MONTH:()=>He,DAY_LABELS_SHORT:()=>Ie,DEFAULT_COLOR:()=>se,EventsCalendar:()=>Vr,HOURS:()=>Be,Header:()=>et,MONTHS:()=>le,arrangeWeekEvents:()=>U,arrangeWeekdayEvents:()=>Je,createDayjsObjFromTime:()=>Cr,filterByDate:()=>z,filterByView:()=>$e,filterByWeek:()=>me,getBackgroundFromGroups:()=>G,getPlaceholderEvent:()=>fe,getTimeDiff:()=>L,getTimeLabel:()=>Ye,getVisibleEvents:()=>Ue,hasOverlap:()=>F,isBetween:()=>W,parseRawEvents:()=>Fe,returnValidStartEnd:()=>ve,setTime:()=>de,updateEvent:()=>ce,useEventsCalendar:()=>qe});module.exports=yr(Ir);var Ce=require("react");var Et=require("react");var st=e=>{switch(e){case"both":return"polygon(10px 0%, calc(100% - 10px) 0%, 100% 50%, calc(100% - 10px) 100%, 10px 100%, 0% 50%)";case"left":return"polygon(10px 0%, 100% 0%, 100% 100%, 10px 100%, 0% 50%)";case"right":return"polygon(0% 0%, calc(100% - 10px) 0%, 100% 50%, calc(100% - 10px) 100%, 0% 100%)";case"none":return;default:return}};var ct=(e,t,r,a,n,o)=>{if(e)return{width:"100%"};let i=t.start.isSame(r,"w")?t.start.day():0,d=t.end.isSame(r,"w")?t.end.day():6;return{position:"absolute",left:o?"0.125rem":`calc(${i*100/7}% + 0.125rem)`,top:`calc(${o?4:a?24:26}px + ${t.order*(a?21:22)}px + ${n?6:0}px)`,width:o?"calc(100% - 6px)":`calc(${100*(1+(d-i))/7}% - 0.25rem - 1px)`}};function mt(e,t){return!t.isActive&&t.id===e.placeholderEvent.dragId}var pt=(e,t,r,a,n)=>{let o=e?r.isBefore(t,"day"):!!n?.first&&r.isBefore(n.first,"day"),i=e?a.isAfter(t,"day"):!!n?.last&&a.isAfter(n.last,"day");return o&&i?"both":o?"left":i?"right":"none"};function de(e,t){return e.hour(t.hour()).minute(t.minute())}var $=["year","month","week","day"],le=["January","February","March","April","May","June","July","August","September","October","November","December"],Ie=["S","M","T","W","T","F","S"],He=42,se="#0ea5e9",Be=["1 AM","2 AM","3 AM","4 AM","5 AM","6 AM","7 AM","8 AM","9 AM","10 AM","11 AM","12 PM","1 PM","2 PM","3 PM","4 PM","5 PM","6 PM","7 PM","8 PM","9 PM","10 PM","11 PM"];function W(e,t,r,a=!1){return e.isSame(t,"d")||!a&&e.isSame(r,"d")?!0:e.isAfter(t)&&e.isBefore(r)}function Le(e,t){return e.isBefore(t,"d")||e.isSame(t,"d")}function F(e,t,r,a){return Le(e,a)&&Le(r,t)}function ce({state:e,dispatch:t,date:r,view:a}){let n=a==="month"?"day":"minute";if(e.dragStartOffset===null){let c=r.diff(e.clickedEvent.start,n);t({type:"update_event",dragStartOffset:c});return}let{start:o,end:i,startTime:d,endTime:l}=e.clickedEvent,s=r.subtract(e.dragStartOffset,n),p=i.diff(o,n),v=s.add(p,n);a!=="month"&&!s.isSame(v,"day")||t({type:"update_event",event:{...e.placeholderEvent,start:a==="month"?s.hour(o.hour()).minute(o.minute()):s,end:a==="month"?v.hour(i.hour()).minute(i.minute()):v,startTime:a==="month"?d:s.format("h:mma"),endTime:a==="month"?l:v.format("h:mma")}})}function L(e,t){let r=e.hour()*60+e.minute();return t.hour()*60+t.minute()-r}function Ye(e,t){if(!e.start||!e.end)return"";let r=t<=30?", ":"";return e.start.isBefore(e.end)?`${r}${e.start.format("h:mma")} - ${e.end.format("h:mma")}`:`${r}${e.end.format("h:mma")} - ${e.start.format("h:mma")}`}function me(e,t){let r=t.add(6,"d");return e.filter(({start:a,end:n})=>F(t,r,a,n||a))}function z(e,t){return e.filter(({start:r,end:a})=>W(t,r,a))}function $e(e,t,r){let a=r==="year"?"year":"month",n=t.startOf(a).day(0),o=t.endOf(a).day(6);return e.filter(({start:i,end:d})=>F(n,o,i,d))}var pe=P(require("dayjs")),We=(e,t)=>{let r=t.replace(/.{2}$/," $&").toUpperCase();return(0,pe.default)(`${e.format("DD-MMM-YYYY")} ${r}`)};function Fe(e){return e.filter(t=>t.start||t.end).map((t,r)=>{let a=t.start?(0,pe.default)(t.start):(0,pe.default)(t.end);t.startTime&&(a=We(a,t.startTime));let n=t.end?(0,pe.default)(t.end):a;return(t.startTime||t.endTime||t.isAllDay===!1)&&(!t.startTime&&!t.endTime?n=a.add(1,"hour"):t.endTime?n=We(n,t.endTime):n=We(n,t.startTime).add(1,"hour")),{...t,id:t.id??r,title:t.title??"",start:a,end:n,isAllDay:t.isAllDay!==!1}})}function Ue(e,t,r,a){return e.filter(({order:n,start:o})=>n<r&&(a||t.day()===0||t.isSame(o,"day")))}function wr(e){return[...e].sort((r,a)=>{let n=r.end.diff(r.start,"day")+1,o=a.end.diff(a.start,"day")+1;return n>o?-1:n<o?1:r.start.isBefore(a.start,"day")?-1:a.start.isBefore(r.start,"day")?1:r.isAllDay&&!a.isAllDay?-1:!r.isAllDay&&a.isAllDay?1:0})}function br(e){let t=0;for(;e.has(t);)t++;return t}function U(e){if(e.length<2)return e.map(o=>({...o,order:0,indent:0}));let t=wr(e),[r,...a]=t,n=[{...r,order:0,indent:0}];return a.forEach(o=>{let i=o.start,d=o.end||i,l=new Set;for(let p of n){let v=p.start,c=p.end||v;F(i,d,v,c)&&l.add(p.order)}let s=br(l);n.push({...o,order:s,indent:0})}),n}function ve(e,t){return t?e.isSame(t)||e.isBefore(t)?[e,t]:[t,e]:[e,e]}var Ge=P(require("dayjs")),V={id:null,dragId:null,title:"Untitled",groups:[],start:(0,Ge.default)(),end:(0,Ge.default)(),startTime:void 0,endTime:void 0,isActive:!1,isAllDay:!0,indent:0,order:0};var fe=(e,t,r,a)=>{let[n,o]=ve(e,t),i=a&&r?n.add(15,"minute"):o;return{...V,id:null,start:n,end:i,isActive:!0,isAllDay:!r,startTime:r?n.format("h:mma"):void 0,endTime:r?i.format("h:mma"):void 0,order:r?100:0}};function xr(e){return e.length<2?e:e.sort((t,r)=>{let a=L(t.start,r.start);return a>0?-1:a<0?1:0})}function Er(e,t,r){return e.isSame(t)||e.isAfter(t)&&e.isBefore(r)}function Je(e,t){if(e.length<2)return e.map(i=>({...i,order:0,indent:0}));let r=xr(e),[a,...n]=r,o=[{...a,order:0,indent:0}];return n.forEach((i,d)=>{let l=de(t,i.start),s=0;o.forEach(p=>{let v=de(t,p.start),c=de(t,p.end);Er(l,v,c)&&(s+=1)}),o.push({...i,order:d+1,indent:s})}),o}var Xe=P(require("dayjs")),Cr=(e,t,r="01-Jan-2000",a="01-Jan-2000")=>{let n=e?.replace(/.{2}$/," $&").toUpperCase()||"12:00 AM",o=t?.replace(/.{2}$/," $&").toUpperCase()||"12:00 AM",i=(0,Xe.default)(`${r} ${n}`),d=(0,Xe.default)(`${a} ${o}`);return{start:i,end:d}};function G(e){let t=e?.map(n=>n.color).filter(Boolean)??[];if(!t.length)return{backgroundColor:se};if(t.length===1)return{backgroundColor:t[0]};let r=100/t.length;return{backgroundImage:`-webkit-linear-gradient(-30deg,${t.map((n,o)=>`${n} ${r*o}% ${r*o+r}%`).join(", ")})`}}var vt=(e,t,r,a,n)=>{let o=r===0?6:0;return{gridColumnStart:r+1,gridRowStart:e.start&&e.start.hour()*4+Math.round(e.start.minute()/15)+1,gridRowEnd:e.end&&e.end.hour()*4+Math.round(e.end.minute()/15)+1,height:12*((t||60)/15)-2,borderWidth:e.indent>0?t>30?"1px":"0.5px":0,marginLeft:a*e.indent+o,width:`calc(100% - ${a*(e.indent+1)+o}px)`,zIndex:n?100:1+e.order,...G(e.groups)}};var Ae=require("react/jsx-runtime");function ft({date:e,event:t,minMaxDatesInView:r,isCompact:a,isInOverflow:n}){let o=pt(n,e,t.start,t.end,r),i=st(o),d=G(t.groups);return(0,Ae.jsx)("div",{className:"events-calendar-all-day-event",style:{...d,clipPath:i},children:(0,Ae.jsx)("div",{className:"events-calendar-all-day-event-content","data-sm":a,children:(0,Ae.jsx)("span",{className:"events-calendar-all-day-event-text","data-arrows":o,children:t.title})})})}var K=require("react/jsx-runtime");function ut({event:e,isCompact:t}){let{title:r,start:a,groups:n}=e,o=G(n),d={border:`1px solid ${(n?.map(l=>l.color).filter(Boolean)??[])[0]??se}`};return(0,K.jsxs)("div",{className:"events-calendar-time","data-sm":t,style:d,children:[(0,K.jsx)("div",{className:"events-calendar-time-dot",style:o}),(0,K.jsx)("div",{className:"events-calendar-time-text",children:a.format("h:mma")}),(0,K.jsx)("span",{className:"events-calendar-time-label",children:r})]})}var Dr=({isTimeEvent:e,firstClickDate:t,start:r,date:a,dispatch:n})=>{if(e){let o=L(t,a)<0?ve(r,t.add(15,"minute"))[1]:t,i=r.hour(a.hour()).minute(a.minute());if(Math.abs(L(o,a))>=15){let d=fe(o,i,!0);n({type:"update_event",event:d})}}else{let o=fe(t,a);n({type:"update_event",event:o})}},ht=({enableDragCreation:e,dispatch:t,state:r,onEventCreate:a})=>{if(!e)return d=>{d.type==="mousedown"&&t({type:"reset_calendar"})};let n=()=>t({type:"open_popover"}),o=()=>t({type:"reset_calendar"});return(d,l,s,p)=>{let{dragActive:v,firstClickDate:c,placeholderEvent:f}=r,{start:g}=f;if(d.button!==0){v&&t({type:"event_create_stop"});return}switch(d.type){case"mousedown":{if(r.eventAnchor||r.overflowIsOpen){t({type:"reset_calendar"});return}let m=fe(l,l,s,!0);t({type:"event_create_start",date:l,event:m,anchor:p.current});break}case"mouseenter":{if(d.buttons!==1||!v||!c)return;Dr({isTimeEvent:s,firstClickDate:c,start:g,date:l,dispatch:t});break}case"mouseup":{if(!v)return;a&&a({clickedEvent:r.clickedEvent,newEvent:r.placeholderEvent,eventRef:p.current,openPopover:n,reset:o}),t({type:"event_create_end",anchor:p.current})}}}};var I=require("react"),kr={x:0,y:0,width:0,height:0,top:0,left:0,bottom:0,right:0};function Mr(e){let t=(0,I.useRef)(0),r=(0,I.useRef)(null),[a,n]=(0,I.useState)(kr),o=(0,I.useMemo)(()=>typeof window<"u"?new ResizeObserver(i=>{let d=i[0];d&&(cancelAnimationFrame(t.current),t.current=requestAnimationFrame(()=>{r.current&&n(d.contentRect)}))}):null,[]);return(0,I.useEffect)(()=>(r.current&&o?.observe(r.current,e),()=>{o?.disconnect(),t.current&&cancelAnimationFrame(t.current)}),[r.current]),[r,a]}function gt(e){let[t,{width:r,height:a}]=Mr(e);return{ref:t,width:r,height:a}}var yt=require("react"),k=require("@floating-ui/react");function wt({dispatch:e,event:t,isInOverflow:r,hasContextMenu:a,state:n}){let[o,i]=(0,yt.useState)(!1),d=()=>i(!1),l=t.id!==null&&n.clickedEvent?.id===t.id,{refs:s,floatingStyles:p,context:v}=(0,k.useFloating)({open:o,onOpenChange:i,middleware:[(0,k.offset)({mainAxis:5,alignmentAxis:4}),(0,k.flip)({fallbackPlacements:["left-start"]}),(0,k.shift)({padding:10})],placement:"right-start"}),c=(0,k.useDismiss)(v),{getFloatingProps:f}=(0,k.useInteractions)([c]);return{handleContextMenu:(m,u)=>{a&&(m.preventDefault(),!(n.popoverIsOpen||n.overflowIsOpen&&!r)&&(s.setPositionReference({getBoundingClientRect(){return{width:0,height:0,x:m.clientX,y:m.clientY,top:m.clientY,right:m.clientX,bottom:m.clientY,left:m.clientX}}}),e({type:"open_context_menu",event:t,anchor:u.current}),i(!0)))},isActive:l,contextIsOpen:o,refs:s,floatingStyles:p,getFloatingProps:f,closeContextMenu:d}}var Ze=P(require("dayjs")),J=require("react");var ue={clickedEvent:V,popoverIsOpen:!1,eventAnchor:null,dragActive:!1,firstClickDate:null,placeholderEvent:V,dragStartOffset:null,eventDragActive:!1,overflowAnchor:null,overflowIsOpen:!1};function bt(e,t){switch(t.type){case"reset_calendar":return ue;case"open_overflow":return{...e,...ue,overflowIsOpen:!0,overflowAnchor:t.anchor||e.overflowAnchor};case"open_popover":return{...e,popoverIsOpen:!0};case"open_context_menu":return{...e,clickedEvent:t.event||e.clickedEvent,eventAnchor:t.anchor||e.eventAnchor};case"set_clicked_event":return{...e,clickedEvent:t.event||e.clickedEvent,eventAnchor:t.anchor||e.eventAnchor,placeholderEvent:V};case"update_event":return{...e,dragStartOffset:t.dragStartOffset??e.dragStartOffset,placeholderEvent:{...e.placeholderEvent,...t.event,id:null}};case"event_create_start":return{...e,dragActive:!0,firstClickDate:t.date||e.firstClickDate,placeholderEvent:{...e.placeholderEvent,...t.event,isActive:!0},eventAnchor:t.anchor||e.eventAnchor};case"event_create_end":return{...e,dragActive:!1,firstClickDate:null,placeholderEvent:{...e.placeholderEvent,isActive:!0},eventAnchor:t.anchor||e.eventAnchor};case"event_create_stop":return{...e,dragActive:!1,firstClickDate:null,clickedEvent:V,placeholderEvent:V,eventDragActive:!1};case"event_reschedule_start":return{...e,eventDragActive:!0,clickedEvent:t.event||e.clickedEvent,placeholderEvent:{...e.placeholderEvent,order:0,...t.event,id:null,isActive:!0}};case"event_reschedule_end":return{...e,eventDragActive:!1,dragStartOffset:null,eventAnchor:t.anchor||e.eventAnchor};default:return console.log(`Invalid action type ${t.type} passed to calendar reducer`),e}}function qe({isInitialised:e=!1,initialDate:t=(0,Ze.default)(),initialView:r="month",closeOnClickOutside:a=!0}={}){let[n,o]=(0,J.useState)((0,Ze.default)(t)),[i,d]=(0,J.useState)(r),[l,s]=(0,J.useReducer)(bt,ue);return(0,J.useEffect)(()=>{if(!a||e)return;let p=()=>s({type:"reset_calendar"});return window.addEventListener("click",p),()=>{window.removeEventListener("click",p)}},[s,e,a]),{activeDate:n,setActiveDate:o,view:i,setView:d,state:l,dispatch:s}}function xt(e){let r=qe({isInitialised:!!e});return e||r}var M=require("react/jsx-runtime");function Q({view:e,enableRescheduling:t,compact:r=!1,date:a,dispatch:n,event:o,isInWeekHeader:i=!1,isInOverflow:d=!1,isInDayHeader:l=!1,minMaxDatesInView:s,onEventClick:p,placeholderRef:v,renderContextMenu:c,state:f}){let g=(0,Et.useRef)(null),m=!!c,u=!!p||t,h=e==="month",w=e==="day",b=()=>n({type:"open_popover"}),x=()=>n({type:"reset_calendar"}),y=()=>n({type:"reset_calendar"}),C=(_,sr,Me,cr)=>{if(_.stopPropagation(),sr||!Me.current)return;let Ve=A&&f.eventAnchor?.dataset.anchorday===Me.current.dataset.anchorday;!d&&f.overflowIsOpen&&n({type:"reset_calendar"}),Ve||n({type:"set_clicked_event",event:o,anchor:Me.current});let mr=()=>Ve?x():b();cr?.({event:o,isDoubleClick:Ve,eventRef:Me.current,openPopover:b,closePopover:x,togglePopover:mr})},{handleContextMenu:D,isActive:A,contextIsOpen:B,refs:Y,floatingStyles:E,getFloatingProps:Z,closeContextMenu:q}=wt({dispatch:n,event:o,state:f,hasContextMenu:m,isInOverflow:d}),ne=o.id===null,ae=ne&&o.start.isSame(a,"d")?v:g,oe=Math.abs(L(o.start,o.end)),ie=oe<=30,ze=w?120:20,De=w?0:a.day(),ke=()=>{n({type:"reset_calendar"}),t&&!d&&n({type:"event_reschedule_start",event:{...o,dragId:o.id,order:h?o.order:1e3}})},dt=h?ct(d,o,a,r,i,l):vt(o,oe,De,ze,u&&A);return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)("div",{className:h?"events-calendar-month-item-container":"events-calendar-week-item-container","data-interactive":u,"data-active":u&&A,"data-anchorday":a.format("DD-MMM-YYYY"),"data-placeholder":ne,"data-dragactive":f.dragActive||f.eventDragActive,"data-isdragging":mt(f,o),"data-sm":r,"data-time":h&&!o.isAllDay,draggable:"true",onClick:_=>C(_,ne,ae,p),onContextMenu:_=>D(_,ae),onDragStart:ke,ref:ae,style:dt,children:h?o.isAllDay?(0,M.jsx)(ft,{date:a,event:o,isCompact:r,isInOverflow:d,minMaxDatesInView:s}):(0,M.jsx)(ut,{event:o,isCompact:r}):(0,M.jsxs)("div",{className:"events-calendar-item-label","data-short":ie,children:[(0,M.jsx)("span",{style:ie?void 0:{width:"100%"},children:o.title}),(0,M.jsx)("span",{className:"events-calendar-time-text",children:Ye(o,oe)})]})}),B&&(0,M.jsx)("div",{ref:Y.setFloating,style:{...E,zIndex:2},...Z(),children:c&&c({event:o,closeContextMenu:q,onClose:y,openPopover:b})})]})}var Pe=require("react"),Mt=require("react-dom");var T=require("@floating-ui/react-dom"),Tr=32,Ct=32,Dt=16;function kt({anchor:e}){let t={name:"preventViewportOverflow",async fn(n){let o=await(0,T.detectOverflow)(n),i=n.x;o.left>0&&(i=n.x+o.left+Ct),o.right>0&&(i=n.x-o.right-Ct);let d=n.y;return o.top>0&&(d=n.y+o.top+Dt),o.bottom>0&&(d=n.y-o.bottom-Dt),n.middlewareData.hide?.referenceHidden?{...n,x:i}:{...n,x:i,y:d}}},{refs:r,floatingStyles:a}=(0,T.useFloating)({elements:{reference:e},placement:"bottom",strategy:"fixed",whileElementsMounted:T.autoUpdate,middleware:[(0,T.hide)(),(0,T.offset)(8),(0,T.autoPlacement)({crossAxis:!0,padding:Tr}),t]});return{refs:r,floatingStyles:a}}var Ke=require("react/jsx-runtime");function Tt({anchor:e,zIndex:t,children:r}){let a=(0,Pe.useRef)({}),{refs:n,floatingStyles:o}=kt({anchor:e});return(0,Pe.useEffect)(()=>{setTimeout(()=>{a.current={transitionDuration:"250ms",transitionProperty:"all"}},100)},[]),(0,Mt.createPortal)((0,Ke.jsx)("div",{ref:n.setFloating,style:{...o,...a.current,zIndex:t},children:(0,Ke.jsx)("div",{onClick:i=>i.stopPropagation(),children:r})}),document.body)}var At=require("react/jsx-runtime");function Se({anchor:e,isOpen:t,zIndex:r=1,children:a}){return!t||!e?null:(0,At.jsx)(Tt,{anchor:e,zIndex:r,children:a})}var St=P(require("dayjs"));var Pt=require("react");var he=require("react/jsx-runtime");function Oe({date:e,dispatch:t,isCompact:r,numOverflowEvents:a,state:n}){let o=(0,Pt.useRef)(null),i=d=>{n.overflowIsOpen&&d.target===n.overflowAnchor?t({type:"reset_calendar"}):t({type:"open_overflow",date:e,anchor:o.current})};if(a)return(0,he.jsxs)("div",{className:"events-calendar-show-more-text-container","data-sm":r,"data-date":e.format("DD-MMM-YYYY"),onClick:i,onMouseDown:d=>d.stopPropagation(),ref:o,children:[(0,he.jsx)("span",{className:"events-calendar-show-more-text-label events-calendar-sm-only",children:`+${a}`}),(0,he.jsxs)("span",{className:"events-calendar-show-more-text-label events-calendar-lg-only",children:[a," more"]})]})}var ee=require("react/jsx-runtime");function Ot({dayRecord:e,dispatch:t,isCompact:r,numOverflowEvents:a,state:n}){let{date:o,isCurrentMonth:i}=e,d=o.isSame((0,St.default)(),"day");return(0,ee.jsxs)("div",{className:"events-calendar-month-cell-header",children:[(0,ee.jsx)("div",{className:"events-calendar-month-cell-date-container","data-today":d,children:(0,ee.jsx)("span",{className:"events-calendar-month-cell-date-label","data-color":d?"white":i?"dark":"dim","data-sm":r,children:o.date()})}),(0,ee.jsx)(Oe,{date:o,dispatch:t,isCompact:r,numOverflowEvents:a,state:n})]})}var j=require("react/jsx-runtime"),Ar=(e,t,r=!1)=>{let{isActive:a,isAllDay:n,start:o,end:i}=e;return a&&(!r||n)&&W(t,o,i)&&(t.day()===0||t.isSame(o,"day"))};function Re({EVENT_LIMIT:e,enableRescheduling:t,compact:r,dayRecord:a,dispatch:n,handleMouseEvent:o,headerHeight:i="100%",isInWeekHeader:d=!1,isInDayHeader:l=!1,minMaxDatesInView:s,onEventClick:p,onEventReschedule:v,orderedEvents:c,placeholderRef:f,renderContextMenu:g,state:m}){let{date:u}=a,h=z(c,u),w=Ue(h,u,e,l),b=h.reduce((E,Z)=>E+(Z.order>=e?1:0),0),x=(l||d)&&b>0;Ar(m.placeholderEvent,u,d||l)&&w.push(m.placeholderEvent);let C=()=>n({type:"open_popover"}),D=()=>n({type:"reset_calendar"}),A=E=>{o(E,u,!1,f)},B=E=>{m.eventDragActive&&ce({state:m,dispatch:n,date:u,view:"month"}),o(E,u,!1,f)},Y=E=>{m.eventDragActive&&(n({type:"event_reschedule_end",anchor:f.current}),v?.({clickedEvent:m.clickedEvent,newEvent:m.placeholderEvent,eventRef:f.current,openPopover:C,reset:D})),o(E,u,!1,f)};return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsxs)("div",{className:"events-calendar-month-cell","data-border":!l&&u.day()!==6,onMouseDown:A,onMouseEnter:B,onMouseUp:Y,style:{height:i,cursor:m.eventDragActive?"grabbing":"auto"},children:[!d&&!l&&(0,j.jsx)(Ot,{state:m,dispatch:n,isCompact:r,dayRecord:a,numOverflowEvents:b}),(0,j.jsx)("div",{className:"events-calendar-month-cell-content","data-week":d||l,children:x&&(0,j.jsx)(Oe,{date:u,state:m,dispatch:n,isCompact:r,numOverflowEvents:b})})]}),w.map(E=>(0,j.jsx)(Q,{date:u,view:"month",state:m,event:E,compact:r,dispatch:n,onEventClick:p,isInDayHeader:l,isInWeekHeader:d,placeholderRef:f,renderContextMenu:g,minMaxDatesInView:s,enableRescheduling:t},E.id))]})}var Qe=require("react/jsx-runtime");function Rt({visible:e}){if(e)return(0,Qe.jsx)("div",{className:"events-calendar-loader-wrapper",children:(0,Qe.jsx)("span",{className:"events-calendar-loader"})})}var jt=require("react/jsx-runtime");function te({isGroupButton:e,active:t=!1,onClick:r=()=>null,variant:a,children:n}){return(0,jt.jsx)("button",{type:"button",onClick:r,"data-group":e,"data-active":t,"data-variant":a,className:"events-calendar-header-button",children:n})}var ge=require("react/jsx-runtime");function Nt({hideViewToggle:e,views:t,setView:r,view:a,children:n}){if(t.length<1&&!n)return;let o=$.filter(i=>t.includes(i));return(0,ge.jsxs)("div",{className:"events-calendar-header-controls",children:[!e&&o.length>1&&(0,ge.jsx)("div",{className:"events-calendar-button-group",children:o.map(i=>(0,ge.jsx)(te,{isGroupButton:!0,active:a===i,onClick:()=>r(i),children:i},i))}),n]})}var Vt=P(require("dayjs"));var ye=require("react/jsx-runtime");function _t({size:e="24",stroke:t="2"}){return(0,ye.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:t,strokeLinecap:"round",strokeLinejoin:"round",className:"icon icon-tabler icons-tabler-outline icon-tabler-chevron-left",children:[(0,ye.jsx)("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),(0,ye.jsx)("path",{d:"M15 6l-6 6l6 6"})]})}var we=require("react/jsx-runtime");function zt({size:e="24",stroke:t="2"}){return(0,we.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:t,strokeLinecap:"round",strokeLinejoin:"round",className:"icon icon-tabler icons-tabler-outline icon-tabler-chevron-right",children:[(0,we.jsx)("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),(0,we.jsx)("path",{d:"M9 6l6 6l-6 6"})]})}var N=require("react/jsx-runtime"),Pr=(e,t)=>{let r=e.startOf("week"),a=e.endOf("week");return t==="year"?e.format("YYYY"):t==="month"?e.format("MMMM YYYY"):t==="week"?`${r.format("MMM DD")} - ${a.format("MMM DD, YYYY")}`:e.format("D MMMM, YYYY")};function It({activeDate:e,setActiveDate:t,view:r}){let a=()=>t((0,Vt.default)()),n=i=>t(d=>d.add(1,i)),o=i=>t(d=>d.subtract(1,i));return(0,N.jsxs)("div",{className:"events-calendar-nav",children:[(0,N.jsx)(te,{variant:"outline",onClick:a,children:"Today"}),(0,N.jsxs)("div",{className:"events-calendar-nav-actions",children:[(0,N.jsx)(te,{variant:"subtle",onClick:()=>o(r),children:(0,N.jsx)(_t,{size:"1.5rem"})}),(0,N.jsx)(te,{variant:"subtle",onClick:()=>n(r),children:(0,N.jsx)(zt,{size:"1.5rem"})})]}),(0,N.jsx)("span",{className:"events-calendar-title",children:Pr(e,r)})]})}var be=require("react/jsx-runtime");function et({activeDate:e,onClick:t=()=>null,hideViewToggle:r,setActiveDate:a,setView:n=()=>null,views:o=[...$],view:i="month",customControls:d}){return(0,be.jsxs)("div",{className:"events-calendar-header",onClick:t,children:[(0,be.jsx)(It,{activeDate:e,setActiveDate:a,view:i}),(0,be.jsx)(Nt,{hideViewToggle:r,views:o,setView:n,view:i,children:d})]})}var nt=require("react");var je=require("react/jsx-runtime");function Ht(){return(0,je.jsx)("div",{className:"events-calendar-hours-column",children:Be.map(e=>(0,je.jsx)("div",{className:"events-calendar-hour",children:(0,je.jsx)("span",{className:"events-calendar-hour-label",children:e})},e))})}var Bt=P(require("dayjs"));var xe=require("react/jsx-runtime"),Ne=(0,Bt.default)();function Lt({activeDate:e,isDayView:t}){if(!e.isSame(Ne,"day"))return;let r=t?1:Ne.day()+1,a=Ne.hour()*4+Math.round(Ne.minute()/15)+1;return(0,xe.jsxs)("div",{className:"events-calendar-time-indicator",style:{gridColumn:r,gridRow:a},children:[(0,xe.jsx)("div",{className:"events-calendar-time-indicator-dot"}),(0,xe.jsx)("div",{className:"events-calendar-time-indicator-line"})]})}var Ee=require("react/jsx-runtime"),tt=e=>Array(e).fill(0).map((t,r)=>r),Sr=(e,t,r,a,n)=>(n==="day"?e:e.startOf("week").add(t,"d")).hour(r).minute(a*15);function Yt({view:e,activeDate:t,handleMouseEvent:r,placeholderRef:a,state:n,dispatch:o,onEventReschedule:i}){let d=e==="day"?[0]:tt(7),l=tt(24),s=tt(4),p=()=>o({type:"open_popover"}),v=()=>o({type:"reset_calendar"});return(0,Ee.jsx)(Ee.Fragment,{children:d.map(c=>l.map(f=>s.map(g=>{let m=Sr(t,c,f,g,e);return(0,Ee.jsx)("div",{className:"events-calendar-time-background-cell","data-isweekview":e==="week",onMouseDown:u=>r(u,m,!0,a),onMouseEnter:u=>{n.eventDragActive&&ce({state:n,dispatch:o,date:m,view:e}),r(u,m,!0,a)},onMouseUp:u=>{n.eventDragActive&&(o({type:"event_reschedule_end",anchor:a.current}),i?.({clickedEvent:n.clickedEvent,newEvent:n.placeholderEvent,eventRef:a.current,openPopover:p,reset:v})),r(u,m,!0,a)},style:{gridColumnStart:c+1,gridRow:`${f*4+g+1} / ${f*4+g+2}`,cursor:n.eventDragActive?"grabbing":"auto"}},`${c}${f}${g}`)})))})}var Wt=P(require("dayjs"));var re=require("react/jsx-runtime"),$t=2;function Ft({view:e,enableRescheduling:t,compact:r,allDayEvents:a,dispatch:n,handleMouseEvent:o,handleStopDrag:i,minMaxDatesInView:d,onEventClick:l,onEventReschedule:s,placeholderRef:p,renderContextMenu:v,state:c,weekDatesArray:f}){let g=e==="day"?z(a,f[0].date):me(a,f[0].date),m=U(g),u=m.length>0?Math.max(...m.map(y=>y.order+1)):0,h=Math.min(u,$t+1),w=r?20:23,b=h>0?8:0,x=w*h+b;return(0,re.jsx)("div",{className:"events-calendar-time-view-header","data-isweekview":e==="week",onMouseLeave:i,children:f.map((y,C)=>{let{date:D}=y,A=e==="week"||g.length>0;return(0,re.jsxs)("div",{className:"events-calendar-time-view-header-cell","data-border":A,children:[e==="week"&&(0,re.jsx)("div",{className:"events-calendar-time-view-header-label","data-today":D.isSame((0,Wt.default)(),"day"),onMouseEnter:i,children:`${D.format("ddd")} ${D.format("DD")}`}),(0,re.jsx)(Re,{isInDayHeader:e==="day",isInWeekHeader:e==="week",EVENT_LIMIT:$t,enableRescheduling:t,compact:r,dayRecord:y,dispatch:n,handleMouseEvent:o,headerHeight:x,minMaxDatesInView:d,onEventClick:l,onEventReschedule:s,orderedEvents:m,placeholderRef:p,renderContextMenu:v,state:c})]},C)})})}var rt=P(require("dayjs")),_e=require("react"),Or=48,Rr=60,jr=(0,rt.default)().diff((0,rt.default)().startOf("day"),"m"),Nr=Or/Rr;function Ut({minutesToScroll:e=jr,offset:t=140}={}){let r=(0,_e.useRef)(null);return(0,_e.useEffect)(()=>{if(!r.current)return;let a=Nr*e-t;r.current.scrollTo({top:a})},[e,t]),r}var Gt=(e,t)=>{if(t==="day")return[{date:e}];let r=e.startOf("week"),n=r.subtract(r.day(),"d"),o=[];for(let i=0;i<7;i++)o.push({date:n,isCurrentMonth:n.month()===e.month()}),n=n.add(1,"day");return o};function Jt(e,t){return e.reduce((r,a,n)=>({...r,[n]:Je(z(t,a.date),a.date)}),{})}var S=require("react/jsx-runtime");function Xt({view:e,activeDate:t,compact:r,dispatch:a,enableRescheduling:n,events:o,handleMouseEvent:i,handleStopDrag:d,onEventClick:l,onEventReschedule:s,placeholderRef:p,renderContextMenu:v,state:c}){let f=e==="day",g=e==="week",m=o.filter(y=>y.isAllDay),u=o.filter(y=>!y.isAllDay),h=Ut(),w=(0,nt.useMemo)(()=>Gt(t,e),[t,e]),b={first:f?t:w[0].date,last:f?t:w[6].date},x=(0,nt.useMemo)(()=>Jt(w,u),[u,w]);return(0,S.jsxs)("div",{className:"events-calendar-time-view",children:[(0,S.jsx)(Ft,{allDayEvents:m,compact:r,dispatch:a,enableRescheduling:n,handleMouseEvent:i,handleStopDrag:d,minMaxDatesInView:b,onEventClick:l,onEventReschedule:s,placeholderRef:p,renderContextMenu:v,state:c,view:e,weekDatesArray:w}),(0,S.jsx)("div",{ref:h,className:"events-calendar-time-view-scroll-wrapper",children:(0,S.jsxs)("div",{className:"events-calendar-time-view-grid-wrapper",children:[(0,S.jsx)(Ht,{}),(0,S.jsxs)("div",{className:"events-calendar-time-view-grid","data-isweekview":g,onMouseEnter:d,onMouseLeave:d,children:[(0,S.jsx)(Yt,{activeDate:t,dispatch:a,handleMouseEvent:i,onEventReschedule:s,placeholderRef:p,state:c,view:e}),(0,S.jsx)(Lt,{activeDate:t,isDayView:f}),w.map(({date:y},C)=>{let D=x[C],{isActive:A,isAllDay:B,start:Y,end:E}=c.placeholderEvent;return A&&!B&&W(y,Y,E)&&D.push(c.placeholderEvent),D.map(q=>(0,S.jsx)(Q,{date:y,dispatch:a,enableRescheduling:n,event:q,onEventClick:l,placeholderRef:p,renderContextMenu:v,state:c,view:e},q.id))})]})]})})]})}var Zt=require("react");var Kt=require("react/jsx-runtime");function qt({date:e,handleClick:t,isToday:r,isDimmed:a,isActive:n}){let o=(0,Zt.useRef)(null);return(0,Kt.jsx)("div",{ref:o,"data-date":e.format("DD-MMM-YYYY"),className:"events-calendar-year-view-month-date","data-today":r,"data-dimmed":a,"data-active":n,onMouseDown:i=>i.stopPropagation(),onClick:i=>t(i,e,o),children:e.format("D")})}var Qt=P(require("dayjs"));function er(e,t){let r={},a=new Set;t.forEach(({start:o,end:i})=>{let d=o.clone().startOf("day"),l=i.clone().startOf("day");for(;d.isBefore(l,"day")||d.isSame(l,"day");)a.add(d.format("YYYY-MM-DD")),d=d.add(1,"day")});let n=e.startOf("year");return le.forEach((o,i)=>{let d=n.clone().day(0),l=Array.from({length:42},(s,p)=>{let v=d.clone().add(p,"day"),c=v.isSame((0,Qt.default)(),"day"),f=n.isSame(v,"month"),g=f&&a.has(v.format("YYYY-MM-DD"));return{date:v,isToday:c,isActive:g,isCurrentMonth:f}});r[o]=l,n=n.month(i+1)}),r}var H=require("react/jsx-runtime");function tr({activeDate:e,dispatch:t,events:r,state:a}){let n=er(e,r),o=()=>t({type:"reset_calendar"}),i=(d,l,s)=>{a.overflowIsOpen&&d.target===a.overflowAnchor?t({type:"reset_calendar"}):t({type:"open_overflow",date:l,anchor:s.current})};return(0,H.jsx)("div",{className:"events-calendar-year-view-scroll-wrapper",children:(0,H.jsx)("div",{className:"events-calendar-year-view",onMouseDown:o,children:le.map(d=>(0,H.jsxs)("div",{className:"events-calendar-year-view-month",children:[(0,H.jsx)("div",{className:"events-calendar-year-view-month-label",children:d}),(0,H.jsxs)("div",{className:"events-calendar-year-view-month-dates",children:[Ie.map((l,s)=>(0,H.jsx)("div",{className:"events-calendar-year-view-month-header",children:l},`${d}-${s}`)),n[d].map(({date:l,isToday:s,isCurrentMonth:p,isActive:v},c)=>(0,H.jsx)(qt,{date:l,handleClick:i,isToday:s,isActive:v,isDimmed:!p},c))]})]},d))})})}var ot=require("react");var at=require("react/jsx-runtime"),_r=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];function rr({isCompact:e}){return(0,at.jsx)("div",{className:"events-calendar-month-header","data-sm":e,children:_r.map((t,r)=>(0,at.jsx)("div",{className:"events-calendar-month-header-cell",children:t},r))})}var nr=(e,t)=>{if(e===0)return 0;let r=2,a=8,n=26,o=t?18:20;return Math.max(Math.floor((e-n-a)/(o+r)),0)};var ar=e=>{let t=e.startOf("month").day(0),r=t,a=e.add(1,"month").month(),n=[],o=[],i=1;for(;r.subtract(r.day(),"d").month()!==a;)n.push({date:r,isCurrentMonth:r.month()===e.month()}),i===7&&(o.push(n),n=[],i=0),i++,r=r.add(1,"day");return{weeks:o,first:t,last:r}};function or(e,t){return e.reduce((r,a,n)=>({...r,[n]:U(me(t,a[0].date))}),{})}var X=require("react/jsx-runtime"),ir=process.env.NODE_ENV==="test";function dr({enableRescheduling:e,compact:t,activeDate:r,dispatch:a,events:n,handleMouseEvent:o,handleStopDrag:i,onEventClick:d,onEventReschedule:l,placeholderRef:s,renderContextMenu:p,state:v}){let c=(0,ot.useMemo)(()=>ar(r),[r]),f={first:c.first,last:c.last},{ref:g,height:m}=gt(),u=ir?100:m/c.weeks.length,h=nr(u,t),w=(0,ot.useMemo)(()=>or(c.weeks,n),[n,c.weeks]);return(0,X.jsxs)("div",{className:"events-calendar-month-view",children:[(0,X.jsx)(rr,{isCompact:t}),(0,X.jsx)("div",{className:"events-calendar-month-view-grid",onMouseLeave:i,ref:g,children:c.weeks.map((b,x)=>{let y=ir||m>0?w[x]:[];return(0,X.jsx)("div",{className:"events-calendar-month-view-row",children:b.map((C,D)=>(0,X.jsx)(Re,{EVENT_LIMIT:h,enableRescheduling:e,compact:t,dayRecord:C,dispatch:a,handleMouseEvent:o,isInWeekHeader:!1,minMaxDatesInView:f,onEventClick:d,onEventReschedule:l,orderedEvents:y,placeholderRef:s,renderContextMenu:p,state:v},D))},x)})})]})}var lr=P(require("dayjs"));var O=require("react/jsx-runtime"),zr=e=>e?(0,lr.default)(e):void 0;function it({compact:e,dispatch:t,events:r,onEventClick:a,placeholderRef:n,renderContextMenu:o,state:i,enableRescheduling:d,zIndex:l}){let s=zr(i.overflowAnchor?.dataset.date);if(!s||!i.overflowAnchor)return(0,O.jsx)(O.Fragment,{});let p=U(z(r,s));return(0,O.jsx)(Se,{zIndex:l,anchor:i.overflowAnchor,isOpen:i.overflowIsOpen,children:(0,O.jsxs)("div",{className:"events-calendar-overflow-card",children:[(0,O.jsx)("span",{className:"events-calendar-overflow-card-label",children:s.format("dddd, MMMM D")}),!p.length&&(0,O.jsx)("div",{className:"events-calendar-overflow-card-text",children:"No events scheduled for this date"}),(0,O.jsx)("div",{className:"events-calendar-overflow-card-content",children:p.map(v=>(0,O.jsx)(Q,{view:"month",isInOverflow:!0,enableRescheduling:d,compact:e,date:s,dispatch:t,event:v,onEventClick:a,placeholderRef:n,renderContextMenu:o,state:i},v.id))})]})})}var R=require("react/jsx-runtime");function Vr({calendar:e,compact:t=!1,enableDragCreation:r=!1,enableRescheduling:a=!1,events:n=[],overflowPopoverZIndex:o=2,popoverZIndex:i=101,isFetching:d=!1,noHeader:l=!1,onEventClick:s,onEventCreate:p,onEventReschedule:v,renderPopover:c,renderContextMenu:f,views:g=[...$]}){let{activeDate:m,setActiveDate:u,view:h,setView:w,state:b,dispatch:x}=xt(e),y=(0,Ce.useMemo)(()=>Fe(n),[n]),C=(0,Ce.useMemo)(()=>$e(y,m,h),[y,m,h]),A=h==="week"||h==="day"?C.filter(_=>_.isAllDay):C,{eventAnchor:B,dragActive:Y,eventDragActive:E,popoverIsOpen:Z,clickedEvent:q,placeholderEvent:ne}=b,ae=()=>x({type:"reset_calendar"}),oe=()=>{(Y||E)&&x({type:"event_create_stop"})},ie=(0,Ce.useRef)(null),ze=ht({enableDragCreation:r,dispatch:x,state:b,onEventCreate:p}),De={activeDate:m,dispatch:x,state:b,events:C},ke={...De,compact:t,onEventClick:s,handleStopDrag:oe,placeholderRef:ie,handleMouseEvent:ze,onEventReschedule:v,renderContextMenu:f,enableRescheduling:a};return(0,R.jsxs)("div",{className:"events-calendar-wrapper",children:[l?null:(0,R.jsx)(et,{view:h,setActiveDate:u,setView:w,activeDate:m,views:g}),(0,R.jsxs)("div",{className:"events-calendar","data-withheader":!l,onClick:_=>_.stopPropagation(),children:[(0,R.jsx)(Rt,{visible:d}),(()=>{switch(h){case"year":return(0,R.jsx)(tr,{...De});case"month":return(0,R.jsx)(dr,{...ke});case"week":case"day":return(0,R.jsx)(Xt,{...ke,view:h});default:return null}})(),c&&B&&(0,R.jsx)(Se,{isOpen:Z,anchor:B,zIndex:i,children:c({onClose:ae,clickedEvent:q,newEvent:ne})}),(0,R.jsx)(it,{state:b,compact:t,dispatch:x,events:A,onEventClick:s,placeholderRef:ie,renderContextMenu:f,enableRescheduling:a,zIndex:o})]})]})}0&&(module.exports={CALENDAR_VIEWS,DAYS_IN_FULL_MONTH,DAY_LABELS_SHORT,DEFAULT_COLOR,EventsCalendar,HOURS,Header,MONTHS,arrangeWeekEvents,arrangeWeekdayEvents,createDayjsObjFromTime,filterByDate,filterByView,filterByWeek,getBackgroundFromGroups,getPlaceholderEvent,getTimeDiff,getTimeLabel,getVisibleEvents,hasOverlap,isBetween,parseRawEvents,returnValidStartEnd,setTime,updateEvent,useEventsCalendar}); //# sourceMappingURL=index.js.map