@fullcalendar/timegrid
Advanced tools
Comparing version 7.0.0-beta.3 to 7.0.0-beta.4
/*! | ||
FullCalendar Time Grid Plugin v7.0.0-beta.3 | ||
FullCalendar Time Grid Plugin v7.0.0-beta.4 | ||
Docs & License: https://fullcalendar.io/docs/timegrid-view | ||
(c) 2024 Adam Shaw | ||
*/ | ||
FullCalendar.TimeGrid=function(e,t,i,n,r){"use strict";class s extends i.Splitter{getKeyInfo(){return{allDay:{},timed:{}}}getKeysForDateSpan(e){return e.allDay?["allDay"]:["timed"]}getKeysForEventDef(e){return e.allDay?i.hasBgRendering(e)?["timed","allDay"]:["allDay"]:["timed"]}}class l extends i.Slicer{sliceRange(e,t){let n=[];for(let r=0;r<t.length;r+=1){let s=i.intersectRanges(e,t[r]);s&&n.push({startDate:s.start,endDate:s.end,isStart:s.start.valueOf()===e.start.valueOf(),isEnd:s.end.valueOf()===e.end.valueOf(),col:r})}return n}}function a(e,t){let i,n=[];for(i=0;i<t;i+=1)n.push([]);if(e)for(i=0;i<e.length;i+=1)n[e[i].col].push(e[i]);return n}function o(e,t){let i=[];if(e){for(let n=0;n<t;n+=1)i[n]={affectedInstances:e.affectedInstances,isEvent:e.isEvent,segs:[]};for(let t of e.segs)i[t.col].segs.push(t)}else for(let e=0;e<t;e+=1)i[e]=null;return i}const c=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];function d(e,t,n,r,s){let l=new Date(0),a=e,o=i.createDuration(0),d=n||function(e){let t,n,r;for(t=c.length-1;t>=0;t-=1)if(n=i.createDuration(c[t]),r=i.wholeDivideDurations(n,e),null!==r&&r>1)return n;return e}(r),h=[];for(;i.asRoughMs(a)<i.asRoughMs(t);){let e=s.add(l,a),t=null!==i.wholeDivideDurations(o,d);h.push({date:e,time:a,key:e.toISOString(),isoTimeStr:i.formatIsoTimeString(e),isLabeled:t}),a=i.addDurations(a,r),o=i.addDurations(o,r)}return h}class h extends i.BaseComponent{constructor(){super(...arguments),this.innerElRef=n.createRef()}render(){let{props:e}=this,{options:t,viewApi:r}=this.context,s={text:t.allDayText,view:r};return n.createElement(i.ContentContainer,{tag:"div",className:"fc-timegrid-allday-label fc-timegrid-axis fc-cell fc-content-box",style:{width:e.width},renderProps:s,generatorName:"allDayContent",customGenerator:t.allDayContent,defaultGenerator:f,classNameGenerator:t.allDayClassNames,didMount:t.allDayDidMount,willUnmount:t.allDayWillUnmount},e=>n.createElement(e,{tag:"span",className:"fc-timegrid-axis-inner fc-cell-inner fc-padding-sm",elRef:this.innerElRef}))}componentDidMount(){const{props:e}=this,t=this.innerElRef.current;this.disconnectInnerWidth=i.watchWidth(t,t=>{i.setRef(e.innerWidthRef,t)})}componentWillUnmount(){this.disconnectInnerWidth(),i.setRef(this.props.innerWidthRef,null)}}function f(e){return e.text}class g extends i.DateComponent{constructor(){super(...arguments),this.heightRef=n.createRef(),this.handleRootEl=e=>{this.rootEl=e,e?this.context.registerInteractiveComponent(this,{el:e}):this.context.unregisterInteractiveComponent(this)}}render(){return n.createElement(r.DayGridRow,Object.assign({},this.props,{isTall:!0,rootElRef:this.handleRootEl,heightRef:this.heightRef}))}queryHit(e,t,n){const{props:s,context:l,heightRef:a}=this,o=s.cells.length,{col:c,left:d,right:h}=r.computeColFromPosition(e,n,s.colWidth,o,l.isRtl),f=s.cells[c],g=f.date,m=i.addDays(g,1);return{dateProfile:s.dateProfile,dateSpan:Object.assign({range:{start:g,end:m},allDay:!0},f.dateSpanProps),dayEl:r.getCellEl(this.rootEl,c),rect:{left:d,right:h,top:0,bottom:a.current},layer:0}}}function m(e,t){let n=new i.DaySeriesModel(e.renderRange,t);return new i.DayTableModel(n,!1)}function u(e,t,i){let n=[];for(let r of e.headerDates)n.push({start:i.add(r,t.slotMinTime),end:i.add(r,t.slotMaxTime)});return n}function v(e,t,i,n){if(!i||!n)return[void 0,!1];const r=i+1,s=n/t;let l,a;return e&&s>=r?(l=!0,a=s):(l=!1,a=r),[a,l]}function S(e,t,n){return n||(n=i.startOfDay(e)),p(i.createDuration(e.valueOf()-n.valueOf()),t)}function p(e,t){const n=i.asRoughMs(t.slotMinTime),r=i.asRoughMs(t.slotMaxTime);let s=(e.milliseconds-n)/(r-n);return s=Math.max(0,s),s=Math.min(1,s),s}function y(e){return["fc-timegrid-slot",e.isLabeled?"":"fc-timegrid-slot-minor","fc-flex-row"]}function R(e,t,i,n,r,s,l){const a=[];if(null!=r){const o=r*n;for(const n of e){const e=S(n.startDate,t,i)*o;let r=S(n.endDate,t,i)*o,c=r-e;null!=s&&c<s&&(c=s,r=e+c),a.push({start:e,end:r,size:c,isShort:null!=l&&c<l})}}return a}function b(e,t,n,r){const s=[];for(let i=0;i<e.length;i++){const n=t[i];n&&s.push(Object.assign(Object.assign({},e[i]),{start:n.start,end:n.end}))}const l=new i.SegHierarchy(s,void 0,n,void 0,r);let a=function(e){const{placementsByLevel:t}=e,n=C((e,t)=>e+":"+t,(r,s)=>{let l=function(e,t,n){let{levelCoords:r,placementsByLevel:s}=e,l=s[t][n],a=r[t]+l.thickness,o=r.length,c=t;for(;c<o&&r[c]<a;c+=1);for(;c<o;c+=1){let e,t=s[c],n=i.binarySearch(t,l.start,i.getCoordRangeEnd),r=n[0]+n[1],a=r;for(;(e=t[a])&&e.start<l.end;)a+=1;if(r<a)return{level:c,lateralStart:r,lateralEnd:a}}return null}(e,r,s),[a,o]=E(l,n),c=t[r][s];return[Object.assign(Object.assign({},c),{nextLevelNodes:a}),c.thickness+o]}),[r]=E(t.length?{level:0,lateralStart:0,lateralEnd:t[0].length}:null,n);return r}(l);a=function(e,t){const n=C((e,t,n)=>i.getEventKey(e),(e,i,r)=>{let s,{nextLevelNodes:l,thickness:a}=e,o=a+r,c=a/o,d=[];if(l.length)for(let e of l)if(void 0===s){let t=n(e,i,o);s=t[0],d.push(t[1])}else{let t=n(e,s,0);d.push(t[1])}else s=t;let h=(s-i)*c;return[s-h,Object.assign(Object.assign({},e),{thickness:h,nextLevelNodes:d})]});return e.map(e=>n(e,0,0)[1])}(a,1);return[function(e){let t=new Map;const n=C((e,t,n)=>i.getEventKey(e),(e,i,n)=>{let s=Object.assign(Object.assign({},e),{levelCoord:i,stackDepth:n,stackForward:0});return t.set(s.eventRange.instance.instanceId,s),s.stackForward=r(e.nextLevelNodes,i+e.thickness,n+1)});function r(e,t,i){let r=0;for(let s of e)r=Math.max(n(s,t,i)+1,r);return r}return r(e,0,0),t}(a),i.groupIntersectingSegs(l.hiddenSegs)]}function E(e,t){if(!e)return[[],0];let{level:i,lateralStart:n,lateralEnd:r}=e,s=n,l=[];for(;s<r;)l.push(t(i,s)),s+=1;return l.sort(w),[l.map(x),l[0][1]]}function w(e,t){return t[1]-e[1]}function x(e){return e[0]}function C(e,t){const i={};return(...n)=>{let r=e(...n);return r in i?i[r]:i[r]=t(...n)}}const D=i.createFormatter({hour:"numeric",minute:"2-digit",meridiem:!1});class H extends i.BaseComponent{render(){const{props:e}=this;return n.createElement(i.StandardEvent,Object.assign({},e,{className:i.joinClassNames("fc-timegrid-event",e.isShort&&"fc-timegrid-event-short",e.isInset&&"fc-timegrid-event-inset","fc-v-event",e.isLiquid&&"fc-liquid"),defaultTimeFormat:D}))}}class M extends i.BaseComponent{render(){let{props:e}=this;return n.createElement(i.MoreLinkContainer,{className:"fc-timegrid-more-link fc-abs",style:{top:e.top,height:e.height},allDayDate:null,segs:e.hiddenSegs,hiddenSegs:e.hiddenSegs,dateSpanProps:e.dateSpanProps,dateProfile:e.dateProfile,todayRange:e.todayRange,popoverContent:()=>P(e.hiddenSegs,e),defaultGenerator:N,forceTimed:!0},e=>n.createElement(e,{tag:"div",className:"fc-timegrid-more-link-inner fc-sticky-t"}))}}function N(e){return e.shortText}function I(e){return n.createElement("div",{className:"fc-timegrid-now-indicator-container"},n.createElement(i.NowIndicatorContainer,{className:"fc-timegrid-now-indicator-line",style:{top:null!=e.totalHeight?e.totalHeight*S(e.nowDate,e.dateProfile,e.dayDate):void 0},isAxis:!1,date:e.nowDate}))}const W=navigator.userAgent.toLowerCase().includes("firefox");class z extends i.BaseComponent{constructor(){super(...arguments),this.sortEventSegs=i.memoize(i.sortEventSegs)}render(){let{props:e,context:t}=this,{options:r}=t,s=r.selectMirror,l=e.eventDrag&&e.eventDrag.segs||e.eventResize&&e.eventResize.segs||s&&e.dateSelectionSegs||[],a=e.eventDrag&&e.eventDrag.affectedInstances||e.eventResize&&e.eventResize.affectedInstances||{},o=this.sortEventSegs(e.fgEventSegs,r.eventOrder);return n.createElement(i.DayCellContainer,{tag:"div",attrs:Object.assign({role:"gridcell"},e.attrs),className:i.joinClassNames(e.className,"fc-timegrid-day fc-flex-col fc-rel",e.borderStart&&"fc-border-s",null==e.width&&"fc-liquid"),style:{width:e.width},date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,renderProps:e.renderProps},t=>n.createElement(n.Fragment,null,this.renderFillSegs(e.businessHourSegs,"non-business"),this.renderFillSegs(e.bgEventSegs,"bg-event"),this.renderFillSegs(e.dateSelectionSegs,"highlight"),i.hasCustomDayCellContent(r)&&n.createElement(t,{tag:"div",className:"fc-timegrid-day-misc fc-rel"}),n.createElement("div",{className:i.joinClassNames("fc-timegrid-day-events",e.forPrint&&W?"fc-timegrid-day-events-simple":"fc-fill")},this.renderFgSegs(o,a,!1,!1,!1)),Boolean(l.length)&&n.createElement("div",{className:"fc-timegrid-day-events fc-fill"},this.renderFgSegs(l,{},Boolean(e.eventDrag),Boolean(e.eventResize),Boolean(s),"mirror")),this.renderNowIndicator(e.nowIndicatorSegs)))}renderFgSegs(e,t,i,n,r,s){const{props:l}=this;return l.forPrint&&W?P(e,l):this.renderPositionedFgSegs(e,t,i,n,r,s)}renderPositionedFgSegs(e,t,r,s,l,a){let{props:o,context:c}=this,{date:d,dateProfile:h,eventSelection:f,todayRange:g,nowDate:m}=o,{eventMaxStack:u,eventShortHeight:v,eventOrderStrict:S,eventMinHeight:p}=c.options,y=R(e,h,d,o.slatCnt,o.slatHeight,p,v),[E,w]=b(e,y,S,u),x=r||s||l;return n.createElement(n.Fragment,null,e.map((e,o)=>{let{eventRange:c}=e,d=c.instance.instanceId,h=y[o]||{},u=E.get(d),v=!x&&u?this.computeSegHStyle(u):{left:0,right:0},S=x||u&&!t[d],p=u&&Boolean(u.stackDepth);return n.createElement("div",{className:"fc-abs fc-flex-col",key:a||d,style:Object.assign({visibility:S?"":"hidden",top:h.start,height:h.size},v)},n.createElement(H,Object.assign({eventRange:c,slicedStart:e.startDate,slicedEnd:e.endDate,isStart:e.isStart,isEnd:e.isEnd,isDragging:r,isResizing:s,isDateSelecting:l,isSelected:d===f,isShort:h.isShort||!1,isInset:p,isLiquid:!0},i.getEventRangeMeta(c,g,m))))}),this.renderHiddenGroups(w))}renderHiddenGroups(e){let{dateSpanProps:t,dateProfile:i,todayRange:r,nowDate:s,eventSelection:l,eventDrag:a,eventResize:o}=this.props;return n.createElement(n.Fragment,null,e.map(e=>n.createElement(M,{key:e.key,hiddenSegs:e.segs,top:e.start,height:e.end-e.start,dateSpanProps:t,dateProfile:i,todayRange:r,nowDate:s,eventSelection:l,eventDrag:a,eventResize:o})))}renderFillSegs(e,t){let{props:r,context:s}=this,l=R(e,r.dateProfile,r.date,r.slatCnt,r.slatHeight,s.options.eventMinHeight);return n.createElement(n.Fragment,null,e.map((e,s)=>{const{eventRange:a}=e,o=l[s]||{};return n.createElement("div",{key:i.buildEventRangeKey(a),className:"fc-fill-x",style:{top:o.start,height:o.size}},"bg-event"===t?n.createElement(i.BgEvent,Object.assign({eventRange:a,isStart:e.isStart,isEnd:e.isEnd},i.getEventRangeMeta(a,r.todayRange,r.nowDate))):i.renderFill(t))}))}renderNowIndicator(e){let{props:t}=this;if(!t.forPrint||!W)return e.map(e=>n.createElement(I,{nowDate:e.startDate,dayDate:t.date,dateProfile:t.dateProfile,totalHeight:null!=t.slatHeight?t.slatHeight*t.slatCnt:void 0}))}computeSegHStyle(e){let t,n,{isRtl:r,options:s}=this.context,l=s.slotEventOverlap,a=e.levelCoord,o=e.levelCoord+e.thickness;l&&(o=Math.min(1,a+2*(o-a))),r?(t=1-o,n=a):(t=a,n=1-o);let c={zIndex:e.stackDepth+1,left:i.fracToCssDim(t),right:i.fracToCssDim(n)};return l&&e.stackForward&&(c[r?"marginLeft":"marginRight"]=20),c}}function P(e,{todayRange:t,nowDate:r,eventSelection:s,eventDrag:l,eventResize:a}){let o=(l?l.affectedInstances:null)||(a?a.affectedInstances:null)||{};return n.createElement(n.Fragment,null,e.map(e=>{let{eventRange:l}=e,{instanceId:a}=l.instance;return n.createElement("div",{key:a,className:"fc-break-inside-avoid",style:{visibility:o[a]?"hidden":""}},n.createElement(H,Object.assign({eventRange:l,slicedStart:e.startDate,slicedEnd:e.endDate,isStart:e.isStart,isEnd:e.isEnd,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:a===s,isShort:!1,isInset:!1},i.getEventRangeMeta(l,t,r))))}))}class B extends i.DateComponent{constructor(){super(...arguments),this.processSlotOptions=i.memoize(k),this.handleRootEl=e=>{this.rootEl=e,e?this.context.registerInteractiveComponent(this,{el:e,isHitComboAllowed:this.props.isHitComboAllowed}):this.context.unregisterInteractiveComponent(this)}}render(){const{props:e}=this;return n.createElement("div",{className:i.joinClassNames(e.className,"fc-flex-row"),style:e.style,ref:this.handleRootEl},e.cells.map((t,i)=>n.createElement(z,{key:t.key,dateProfile:e.dateProfile,nowDate:e.nowDate,todayRange:e.todayRange,date:t.date,slatCnt:e.slatCnt,renderProps:t.renderProps,attrs:t.attrs,dateSpanProps:t.dateSpanProps,forPrint:e.forPrint,borderStart:Boolean(i),fgEventSegs:e.fgEventSegsByCol[i],bgEventSegs:e.bgEventSegsByCol[i],businessHourSegs:e.businessHourSegsByCol[i],nowIndicatorSegs:e.nowIndicatorSegsByCol[i],dateSelectionSegs:e.dateSelectionSegsByCol[i],eventDrag:e.eventDragByCol[i],eventResize:e.eventResizeByCol[i],eventSelection:e.eventSelection,width:e.colWidth,slatHeight:e.slatHeight})))}queryHit(e,t,n){const{dateProfile:s,cells:l,colWidth:a,slatHeight:o}=this.props,{dateEnv:c,options:d,isRtl:h}=this.context,{snapDuration:f,snapsPerSlot:g}=this.processSlotOptions(d.slotDuration,d.snapDuration),m=l.length,{col:u,left:v,right:S}=r.computeColFromPosition(e,n,a,m,h),p=l[u],y=Math.floor(t/o),R=y*o,b=(t-R)/o,E=y+Math.floor(b*g)*g,w=i.addDurations(s.slotMinTime,i.multiplyDuration(f,E)),x=c.add(p.date,w),C=c.add(x,f);return{dateProfile:s,dateSpan:Object.assign({range:{start:x,end:C},allDay:!1},p.dateSpanProps),dayEl:r.getCellEl(this.rootEl,u),rect:{left:v,right:S,top:R,bottom:R+o},layer:0}}}function k(e,t){let n=t||e,r=i.wholeDivideDurations(e,n);return null===r&&(n=e,r=1),{snapDuration:n,snapsPerSlot:r}}function L(e){return n.createElement("div",{className:"fc-timegrid-now-indicator-container"},n.createElement(i.NowIndicatorContainer,{className:"fc-timegrid-now-indicator-arrow",style:{top:null!=e.totalHeight?e.totalHeight*S(e.nowDate,e.dateProfile):void 0},isAxis:!0,date:e.nowDate}))}B.addPropsEquality({style:i.isPropsEqual});const T=i.createFormatter({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"short"});class j extends i.BaseComponent{constructor(){super(...arguments),this.innerElRef=n.createRef()}render(){let{props:e,context:t}=this,{dateEnv:r,options:s,viewApi:l}=t,a=i.joinClassNames("fc-timegrid-slot-label fc-timegrid-axis fc-header-cell fc-cell",e.isLiquid?"fc-liquid":"fc-content-box");if(!e.isLabeled)return n.createElement("div",{"data-time":e.isoTimeStr,className:a,style:{width:e.width}});let o=null==s.slotLabelFormat?T:Array.isArray(s.slotLabelFormat)?i.createFormatter(s.slotLabelFormat[0]):i.createFormatter(s.slotLabelFormat),c={level:0,time:e.time,date:r.toDate(e.date),view:l,text:r.format(e.date,o)};return n.createElement(i.ContentContainer,{tag:"div",attrs:{"data-time":e.isoTimeStr},className:a,style:{width:e.width},renderProps:c,generatorName:"slotLabelContent",customGenerator:s.slotLabelContent,defaultGenerator:F,classNameGenerator:s.slotLabelClassNames,didMount:s.slotLabelDidMount,willUnmount:s.slotLabelWillUnmount},e=>n.createElement(e,{tag:"div",className:"fc-timegrid-axis-inner fc-cell-inner fc-padding-sm",elRef:this.innerElRef}))}componentDidMount(){const{props:e}=this,t=this.innerElRef.current;t&&(this.disconnectInnerSize=i.watchSize(t,(t,n)=>{i.setRef(e.innerWidthRef,t),i.setRef(e.innerHeightRef,n)}))}componentWillUnmount(){const{props:e}=this;this.disconnectInnerSize&&(this.disconnectInnerSize(),i.setRef(e.innerWidthRef,null),i.setRef(e.innerHeightRef,null))}}function F(e){return e.text}class q extends i.BaseComponent{constructor(){super(...arguments),this.innerElRef=n.createRef()}render(){let{props:e,context:t}=this,{options:r}=t,s={time:e.time,date:t.dateEnv.toDate(e.date),view:t.viewApi};return n.createElement(i.ContentContainer,{tag:"div",className:i.joinClassNames("fc-cell fc-liquid",e.borderStart&&"fc-border-s"),attrs:{"data-time":e.isoTimeStr},renderProps:s,generatorName:"slotLaneContent",customGenerator:r.slotLaneContent,classNameGenerator:r.slotLaneClassNames,didMount:r.slotLaneDidMount,willUnmount:r.slotLaneWillUnmount},e=>n.createElement(e,{tag:"div",className:"fc-cell-inner",elRef:this.innerElRef}))}componentDidMount(){const e=this.innerElRef.current;this.disconnectInnerHeight=i.watchHeight(e,e=>{i.setRef(this.props.innerHeightRef,e)})}componentWillUnmount(){this.disconnectInnerHeight(),i.setRef(this.props.innerHeightRef,null)}}const O=i.createFormatter({week:"short"});class A extends i.BaseComponent{constructor(){super(...arguments),this.innerElRef=n.createRef()}render(){let{props:e,context:t}=this,r=e.dateProfile.renderRange,s=1===i.diffDays(r.start,r.end)?i.buildNavLinkAttrs(t,r.start,"week"):{};return n.createElement(i.WeekNumberContainer,{tag:"div",className:i.joinClassNames("fc-timegrid-weeknumber fc-timegrid-axis fc-cell",e.isLiquid?"fc-liquid":"fc-content-box"),style:{width:e.width},date:r.start,defaultFormat:O},e=>n.createElement(e,{tag:"a",attrs:s,className:"fc-timegrid-axis-inner fc-cell-inner fc-padding-sm",elRef:this.innerElRef}))}componentDidMount(){const{props:e}=this,t=this.innerElRef.current;this.disconnectInnerSize=i.watchSize(t,(t,n)=>{i.setRef(e.innerWidthRef,t),i.setRef(e.innerHeightRef,n)})}componentWillUnmount(){const{props:e}=this;this.disconnectInnerSize(),i.setRef(e.innerWidthRef,null),i.setRef(e.innerHeightRef,null)}}function G(e){return n.createElement("div",{className:i.joinClassNames("fc-timegrid-axis",e.isLiquid?"fc-liquid":"fc-content-box"),style:{width:e.width}})}class U extends i.BaseComponent{constructor(){super(...arguments),this.state={headerTierHeights:[]},this.headerLabelInnerWidthRefMap=new i.RefMap(()=>{i.afterSize(this.handleAxisWidths)}),this.headerLabelInnerHeightRefMap=new i.RefMap(()=>{i.afterSize(this.handleHeaderHeights)}),this.headerMainInnerHeightRefMap=new i.RefMap(()=>{i.afterSize(this.handleHeaderHeights)}),this.handleAllDayLabelInnerWidth=e=>{this.allDayLabelInnerWidth=e,i.afterSize(this.handleAxisWidths)},this.slatLabelInnerWidthRefMap=new i.RefMap(()=>{i.afterSize(this.handleAxisWidths)}),this.slatLabelInnerHeightRefMap=new i.RefMap(()=>{i.afterSize(this.handleSlatInnerHeights)}),this.slatMainInnerHeightRefMap=new i.RefMap(()=>{i.afterSize(this.handleSlatInnerHeights)}),this.headerScrollerRef=n.createRef(),this.allDayScrollerRef=n.createRef(),this.mainScrollerRef=n.createRef(),this.footScrollerRef=n.createRef(),this.axisScrollerRef=n.createRef(),this.handleClientWidth=e=>{this.setState({clientWidth:e})},this.handleClientHeight=e=>{this.setState({clientHeight:e})},this.handleEndScrollbarWidth=e=>{this.setState({endScrollbarWidth:e})},this.handleBottomScrollbarWidth=e=>{this.setState({bottomScrollbarWidth:e})},this.handleHeaderHeights=()=>{const e=this.headerLabelInnerHeightRefMap.current,t=this.headerMainInnerHeightRefMap.current,n=[];for(const[i,r]of t.entries())n[i]=Math.max(e.get(i)||0,r);const{headerTierHeights:r}=this.state;i.isArraysEqual(r,n)||this.setState({headerTierHeights:n})},this.handleSlatInnerHeights=()=>{const e=this.slatLabelInnerHeightRefMap.current,t=this.slatMainInnerHeightRefMap.current;let i=0;for(const t of e.values())i=Math.max(i,t);for(const e of t.values())i=Math.max(i,e);this.state.slatInnerHeight!==i&&this.setState({slatInnerHeight:i})},this.handleAxisWidths=()=>{const e=this.headerLabelInnerWidthRefMap.current,t=this.slatLabelInnerWidthRefMap.current;let i=this.allDayLabelInnerWidth||0;for(const t of e.values())i=Math.max(i,t);for(const e of t.values())i=Math.max(i,e);this.state.axisWidth!==i&&this.setState({axisWidth:i})}}render(){const{props:e,state:t,context:s,headerLabelInnerWidthRefMap:l,headerLabelInnerHeightRefMap:a,headerMainInnerHeightRefMap:o,slatLabelInnerWidthRefMap:c,slatLabelInnerHeightRefMap:d,slatMainInnerHeightRefMap:f}=this,{nowDate:m,headerTiers:u,forPrint:S}=e,{axisWidth:p}=t,{options:R}=s,b=!S&&!i.getIsHeightAuto(R),E=!S&&i.getStickyHeaderDates(R),w=!S&&i.getStickyFooterScrollbar(R),x=S&&!W,C=S&&W,D=e.cells.length,[H,M]=r.computeColWidth(D,e.dayMinWidth,t.clientWidth),N=e.slatMetas.length,[I,z]=v(b&&R.expandRows,N,t.slatInnerHeight,t.clientHeight);this.slatHeight=I;const P=(I||0)*N,k=x?P:void 0,T=b&&!R.expandRows&&null!=t.clientHeight&&t.clientHeight>P;return n.createElement(n.Fragment,null,R.dayHeaders&&n.createElement("div",{className:i.joinClassNames("fc-timegrid-header fc-flex-row fc-border-b",E&&"fc-table-header-sticky")},n.createElement("div",{className:"fc-content-box",style:{width:p}},u.map((r,s)=>n.createElement("div",{key:s,className:i.joinClassNames("fc-flex-row fc-content-box",s&&"fc-border-t"),style:{height:t.headerTierHeights[s]}},s===u.length-1?n.createElement(A,{dateProfile:e.dateProfile,innerWidthRef:l.createRef(s),innerHeightRef:a.createRef(s),width:void 0,isLiquid:!0}):n.createElement(G,{width:void 0,isLiquid:!0})))),n.createElement(i.Scroller,{horizontal:!0,hideScrollbars:!0,className:"fc-flex-row fc-border-s fc-liquid",ref:this.headerScrollerRef},n.createElement("div",{className:null==H?"fc-liquid":"",style:{width:H}},e.headerTiers.map((e,i)=>n.createElement(r.DayGridHeaderRow,Object.assign({},e,{key:i,className:i?"fc-border-t":"",height:t.headerTierHeights[i],colWidth:M,innerHeightRef:o.createRef(i)})))),Boolean(t.endScrollbarWidth)&&n.createElement("div",{className:"fc-border-s fc-filler",style:{minWidth:t.endScrollbarWidth}}))),R.allDaySlot&&n.createElement(n.Fragment,null,n.createElement("div",{className:"fc-timegrid-allday fc-flex-row"},n.createElement(h,{width:p,innerWidthRef:this.handleAllDayLabelInnerWidth}),n.createElement(i.Scroller,{horizontal:!0,hideScrollbars:!0,className:"fc-border-s fc-flex-row fc-liquid",ref:this.allDayScrollerRef},n.createElement("div",{className:"fc-flex-col",style:{width:H}},n.createElement(g,{dateProfile:e.dateProfile,todayRange:e.todayRange,cells:e.cells,showDayNumbers:!1,forPrint:S,isHitComboAllowed:e.isHitComboAllowed,isCompact:r.computeRowHeight(t.clientWidth,1,!0,S,R)[1],fgEventSegs:e.fgEventSegs,bgEventSegs:e.bgEventSegs,businessHourSegs:e.businessHourSegs,dateSelectionSegs:e.dateSelectionSegs,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,dayMaxEvents:e.dayMaxEvents,dayMaxEventRows:e.dayMaxEventRows,colWidth:M})),Boolean(t.endScrollbarWidth)&&n.createElement("div",{className:"fc-border-s fc-filler",style:{minWidth:t.endScrollbarWidth}}))),n.createElement("div",{className:"fc-rowdivider"})),n.createElement("div",{className:i.joinClassNames("fc-timegrid-body fc-flex-row",b&&"fc-liquid")},n.createElement(i.Scroller,{vertical:b,hideScrollbars:!0,className:"fc-flex-col fc-content-box",style:{width:p},ref:this.axisScrollerRef},!C&&n.createElement(n.Fragment,null,n.createElement("div",{className:i.joinClassNames("fc-flex-col fc-grow",x&&"fc-rel"),style:{height:k}},n.createElement("div",{className:i.joinClassNames("fc-timegrid-slots-axis fc-flex-col",b&&R.expandRows&&"fc-grow",x&&"fc-fill-x")},e.slatMetas.map((e,t)=>n.createElement("div",{key:e.key,className:i.joinClassNames(...y(e),t&&"fc-border-t",z&&"fc-liquid"),style:{height:z?"":I}},n.createElement(j,Object.assign({},e,{isLiquid:!0,innerWidthRef:c.createRef(e.key),innerHeightRef:d.createRef(e.key)}))))),R.nowIndicator&&i.rangeContainsMarker(e.dateProfile.currentRange,m)&&n.createElement(L,{nowDate:m,dateProfile:e.dateProfile,totalHeight:null!=I?I*N:void 0}),Boolean(T||t.bottomScrollbarWidth)&&n.createElement("div",{class:i.joinClassNames("fc-border-t fc-filler",T&&"fc-liquid"),style:{minHeight:t.bottomScrollbarWidth}})))),n.createElement("div",{className:"fc-border-s fc-flex-col fc-liquid"},n.createElement(i.Scroller,{vertical:b,horizontal:!0,hideScrollbars:w||S,className:i.joinClassNames("fc-flex-col",b&&"fc-liquid"),ref:this.mainScrollerRef,clientWidthRef:this.handleClientWidth,clientHeightRef:this.handleClientHeight,endScrollbarWidthRef:this.handleEndScrollbarWidth,bottomScrollbarWidthRef:this.handleBottomScrollbarWidth},n.createElement("div",{className:"fc-flex-col fc-grow fc-rel",style:{width:H,height:k}},n.createElement(B,{dateProfile:e.dateProfile,nowDate:e.nowDate,todayRange:e.todayRange,cells:e.cells,slatCnt:N,forPrint:S,isHitComboAllowed:e.isHitComboAllowed,className:C?"":"fc-fill",fgEventSegsByCol:e.fgEventSegsByCol,bgEventSegsByCol:e.bgEventSegsByCol,businessHourSegsByCol:e.businessHourSegsByCol,nowIndicatorSegsByCol:e.nowIndicatorSegsByCol,dateSelectionSegsByCol:e.dateSelectionSegsByCol,eventDragByCol:e.eventDragByCol,eventResizeByCol:e.eventResizeByCol,eventSelection:e.eventSelection,colWidth:M,slatHeight:I}),!C&&n.createElement(n.Fragment,null,n.createElement("div",{className:i.joinClassNames("fc-timegrid-slots fc-flex-col",b&&R.expandRows&&"fc-grow",x?"fc-fill-x":"fc-rel")},e.slatMetas.map((e,t)=>n.createElement("div",{key:e.key,className:i.joinClassNames(...y(e),t&&"fc-border-t",z&&"fc-liquid"),style:{height:z?"":I}},n.createElement(q,Object.assign({},e,{innerHeightRef:f.createRef(e.key)}))))),T&&n.createElement("div",{class:"fc-liquid fc-border-t fc-filler"})))),Boolean(w)&&n.createElement(i.StickyFooterScrollbar,{canvasWidth:H,scrollerRef:this.footScrollerRef,scrollbarWidthRef:this.handleBottomScrollbarWidth}))))}componentDidMount(){this.initScrollers(),this.updateSlatHeight()}componentDidUpdate(){this.updateScrollers(),this.updateSlatHeight()}componentWillUnmount(){this.destroyScrollers()}updateSlatHeight(){this.prevSlatHeight!==this.slatHeight&&i.setRef(this.props.slatHeightRef,this.prevSlatHeight=this.slatHeight)}initScrollers(){const e=i.getScrollerSyncerClass(this.context.pluginHooks);this.dayScroller=new e(!0),this.timeScroller=new e,i.setRef(this.props.dayScrollerRef,this.dayScroller),i.setRef(this.props.timeScrollerRef,this.timeScroller),this.updateScrollers()}updateScrollers(){this.dayScroller.handleChildren([this.headerScrollerRef.current,this.allDayScrollerRef.current,this.mainScrollerRef.current,this.footScrollerRef.current]),this.timeScroller.handleChildren([this.axisScrollerRef.current,this.mainScrollerRef.current])}destroyScrollers(){i.setRef(this.props.dayScrollerRef,null),i.setRef(this.props.timeScrollerRef,null)}}class _ extends i.BaseComponent{constructor(){super(...arguments),this.headerLabelInnerWidthRefMap=new i.RefMap(()=>{i.afterSize(this.handleAxisInnerWidths)}),this.handleAllDayLabelInnerWidth=e=>{this.allDayLabelInnerWidth=e,i.afterSize(this.handleAxisInnerWidths)},this.slatLabelInnerWidthRefMap=new i.RefMap(()=>{i.afterSize(this.handleAxisInnerWidths)}),this.slatLabelInnerHeightRefMap=new i.RefMap(()=>{i.afterSize(this.handleSlatInnerHeights)}),this.slatInnerMainHeightRefMap=new i.RefMap(()=>{i.afterSize(this.handleSlatInnerHeights)}),this.handleClientWidth=e=>{this.setState({clientWidth:e})},this.handleClientHeight=e=>{this.setState({clientHeight:e})},this.handleEndScrollbarWidth=e=>{this.setState({endScrollbarWidth:e})},this.handleAxisInnerWidths=()=>{const e=this.headerLabelInnerWidthRefMap.current,t=this.slatLabelInnerWidthRefMap.current;let i=this.allDayLabelInnerWidth||0;for(const t of e.values())i=Math.max(i,t);for(const e of t.values())i=Math.max(i,e);this.state.axisWidth!==i&&this.setState({axisWidth:i})},this.handleSlatInnerHeights=()=>{const e=this.slatLabelInnerHeightRefMap.current,t=this.slatInnerMainHeightRefMap.current;let i=0;for(const t of e.values())i=Math.max(i,t);for(const e of t.values())i=Math.max(i,e);this.state.slatInnerHeight!==i&&this.setState({slatInnerHeight:i})}}render(){const{props:e,state:t,context:s,slatLabelInnerWidthRefMap:l,slatLabelInnerHeightRefMap:a,slatInnerMainHeightRefMap:o,headerLabelInnerWidthRefMap:c}=this,{nowDate:d,forPrint:f}=e,{axisWidth:m}=t,{options:u}=s,S=!f&&!i.getIsHeightAuto(u),p=!f&&i.getStickyHeaderDates(u),R=e.slatMetas.length,[b,E]=v(S&&u.expandRows,R,t.slatInnerHeight,t.clientHeight);this.slatHeight=b;const w=(b||0)*R,x=S&&!u.expandRows&&null!=t.clientHeight&&t.clientHeight>w,C=f&&!W,D=f&&W,H=C?w:void 0,M=s.isRtl?{marginRight:m}:{marginLeft:m};return n.createElement(n.Fragment,null,u.dayHeaders&&n.createElement("div",{className:i.joinClassNames("fc-timegrid-header fc-flex-col fc-border-b",p&&"fc-table-header-sticky")},e.headerTiers.map((s,l)=>n.createElement("div",{key:l,className:i.joinClassNames("fc-flex-row",l&&"fc-border-t")},l===e.headerTiers.length-1?n.createElement(A,{dateProfile:e.dateProfile,innerHeightRef:c.createRef(l),width:m,isLiquid:!1}):n.createElement(G,{width:m,isLiquid:!1}),n.createElement(r.DayGridHeaderRow,Object.assign({},s,{className:"fc-border-s fc-liquid"})),Boolean(t.endScrollbarWidth)&&n.createElement("div",{className:"fc-border-s fc-filler",style:{minWidth:t.endScrollbarWidth}})))),u.allDaySlot&&n.createElement(n.Fragment,null,n.createElement("div",{className:"fc-timegrid-allday fc-flex-col"},n.createElement("div",{className:"fc-flex-row"},n.createElement(h,{width:m,innerWidthRef:this.handleAllDayLabelInnerWidth}),n.createElement(g,{dateProfile:e.dateProfile,todayRange:e.todayRange,cells:e.cells,showDayNumbers:!1,forPrint:f,isHitComboAllowed:e.isHitComboAllowed,className:"fc-border-s fc-liquid",isCompact:r.computeRowHeight(t.clientWidth,1,!0,f,u)[1],fgEventSegs:e.fgEventSegs,bgEventSegs:e.bgEventSegs,businessHourSegs:e.businessHourSegs,dateSelectionSegs:e.dateSelectionSegs,eventDrag:e.eventDrag,eventResize:e.eventResize,eventSelection:e.eventSelection,dayMaxEvents:e.dayMaxEvents,dayMaxEventRows:e.dayMaxEventRows}),Boolean(t.endScrollbarWidth)&&n.createElement("div",{className:"fc-border-s fc-filler",style:{minWidth:t.endScrollbarWidth}}))),n.createElement("div",{className:"fc-rowdivider"})),n.createElement(i.Scroller,{vertical:S,className:i.joinClassNames("fc-timegrid-body fc-flex-col",S&&"fc-liquid"),ref:e.timeScrollerRef,clientWidthRef:this.handleClientWidth,clientHeightRef:this.handleClientHeight,endScrollbarWidthRef:this.handleEndScrollbarWidth},n.createElement("div",{className:"fc-flex-col fc-grow fc-rel",style:{height:H}},n.createElement(B,{dateProfile:e.dateProfile,nowDate:e.nowDate,todayRange:e.todayRange,cells:e.cells,slatCnt:R,forPrint:f,isHitComboAllowed:e.isHitComboAllowed,className:i.joinClassNames("fc-border-s",!D&&"fc-fill"),style:M,fgEventSegsByCol:e.fgEventSegsByCol,bgEventSegsByCol:e.bgEventSegsByCol,businessHourSegsByCol:e.businessHourSegsByCol,nowIndicatorSegsByCol:e.nowIndicatorSegsByCol,dateSelectionSegsByCol:e.dateSelectionSegsByCol,eventDragByCol:e.eventDragByCol,eventResizeByCol:e.eventResizeByCol,eventSelection:e.eventSelection,slatHeight:b}),!D&&n.createElement(n.Fragment,null,n.createElement("div",{className:i.joinClassNames("fc-timegrid-slots fc-flex-col",S&&u.expandRows&&"fc-grow",C?"fc-fill-x":"fc-rel")},e.slatMetas.map((e,t)=>n.createElement("div",{key:e.key,className:i.joinClassNames(...y(e),t&&"fc-border-t",E&&"fc-liquid"),style:{height:E?"":b}},n.createElement(j,Object.assign({},e,{innerWidthRef:l.createRef(e.key),innerHeightRef:a.createRef(e.key),width:m})),n.createElement(q,Object.assign({},e,{borderStart:!0,innerHeightRef:o.createRef(e.key)}))))),x&&n.createElement("div",{class:"fc-liquid fc-border-t fc-filler"}),u.nowIndicator&&i.rangeContainsMarker(e.dateProfile.currentRange,d)&&n.createElement(L,{nowDate:d,dateProfile:e.dateProfile,totalHeight:null!=b?b*R:void 0})))))}componentDidMount(){this.updateSlatHeight()}componentDidUpdate(){this.updateSlatHeight()}updateSlatHeight(){this.prevSlatHeight!==this.slatHeight&&i.setRef(this.props.slatHeightRef,this.prevSlatHeight=this.slatHeight)}}class K extends i.BaseComponent{constructor(){super(...arguments),this.buildSlatMetas=i.memoize(d),this.dayScrollerRef=n.createRef(),this.timeScrollerRef=n.createRef(),this.scrollState={},this.handleSlatHeight=e=>{this.slatHeight=e,i.afterSize(this.applyTimeScroll)},this.handleTimeScrollRequest=e=>{this.scrollState.time=e,this.scrollState.y=void 0,this.applyTimeScroll()},this.handleTimeScrollEnd=()=>{this.props.forPrint||(this.scrollState.y=this.timeScrollerRef.current.y,this.scrollState.time=void 0)},this.applyTimeScroll=()=>{const e=this.timeScrollerRef.current,{slatHeight:t,scrollState:i}=this;let{y:n,time:r}=i;null==n&&r&&null!=t&&e&&(n=p(r,this.props.dateProfile)*(t*this.currentSlatCnt)+1,n&&n++,i.y=n),null!=n&&e.scrollTo({y:n})}}render(){const{props:e,context:t}=this,{dateProfile:r}=e,{options:s,dateEnv:l}=t,{dayMinWidth:a}=s,o=this.buildSlatMetas(r.slotMinTime,r.slotMaxTime,s.slotLabelInterval,s.slotDuration,l);this.currentSlatCnt=o.length;const c=Object.assign(Object.assign({dateProfile:r,nowDate:e.nowDate,todayRange:e.todayRange,cells:e.cells,slatMetas:o,forPrint:e.forPrint,isHitComboAllowed:e.isHitComboAllowed,headerTiers:e.headerTiers,fgEventSegs:e.fgEventSegs,bgEventSegs:e.bgEventSegs,businessHourSegs:e.businessHourSegs,dateSelectionSegs:e.dateSelectionSegs,eventDrag:e.eventDrag,eventResize:e.eventResize},function(e){let{dayMaxEvents:t,dayMaxEventRows:i}=e;!0!==t&&!0!==i||(t=void 0,i=5);return{dayMaxEvents:t,dayMaxEventRows:i}}(s)),{fgEventSegsByCol:e.fgEventSegsByCol,bgEventSegsByCol:e.bgEventSegsByCol,businessHourSegsByCol:e.businessHourSegsByCol,nowIndicatorSegsByCol:e.nowIndicatorSegsByCol,dateSelectionSegsByCol:e.dateSelectionSegsByCol,eventDragByCol:e.eventDragByCol,eventResizeByCol:e.eventResizeByCol,eventSelection:e.eventSelection,timeScrollerRef:this.timeScrollerRef,timeScrollState:this.scrollState,slatHeightRef:this.handleSlatHeight});return n.createElement(i.ViewContainer,{className:i.joinClassNames(e.className,"fc-border",!e.forPrint&&"fc-flex-col"),viewSpec:t.viewSpec},a?n.createElement(U,Object.assign({},c,{dayMinWidth:a,dayScrollerRef:this.dayScrollerRef})):n.createElement(_,Object.assign({},c)))}componentDidMount(){this.resetScroll(),this.context.emitter.on("_timeScrollRequest",this.handleTimeScrollRequest),this.timeScrollerRef.current.addScrollEndListener(this.handleTimeScrollEnd)}componentDidUpdate(e){e.dateProfile!==this.props.dateProfile&&this.context.options.scrollTimeReset?this.resetScroll():e.forPrint&&!this.props.forPrint&&this.applyTimeScroll()}componentWillUnmount(){this.context.emitter.off("_timeScrollRequest",this.handleTimeScrollRequest),this.timeScrollerRef.current.removeScrollEndListener(this.handleTimeScrollEnd)}resetScroll(){this.handleTimeScrollRequest(this.context.options.scrollTime);const e=this.dayScrollerRef.current;e&&e.scrollTo({x:0})}}class V extends i.DateComponent{constructor(){super(...arguments),this.createDayHeaderFormatter=i.memoize(r.createDayHeaderFormatter),this.buildTimeColsModel=i.memoize(m),this.buildDayRanges=i.memoize(u),this.buildDateRowConfigs=i.memoize(r.buildDateRowConfigs),this.splitFgEventSegs=i.memoize(a),this.splitBgEventSegs=i.memoize(a),this.splitBusinessHourSegs=i.memoize(a),this.splitNowIndicatorSegs=i.memoize(a),this.splitDateSelectionSegs=i.memoize(a),this.splitEventDrag=i.memoize(o),this.splitEventResize=i.memoize(o),this.allDaySplitter=new s,this.dayTableSlicer=new r.DayTableSlicer,this.dayTimeColsSlicer=new l}render(){const{props:e,context:t}=this,{dateProfile:r}=e,{options:s,dateProfileGenerator:l}=t,a=this.buildTimeColsModel(r,l),o=this.buildDayRanges(a,r,t.dateEnv),c=this.allDaySplitter.splitProps(e),d=this.dayTableSlicer.sliceProps(c.allDay,r,s.nextDayThreshold,t,a),h=this.dayTimeColsSlicer.sliceProps(c.timed,r,null,t,o),f=this.createDayHeaderFormatter(t.options.dayHeaderFormat,!0,a.colCnt);return n.createElement(i.NowTimer,{unit:s.nowIndicator?"minute":"day"},(i,l)=>{const c=a.cellRows[0].length,g=s.nowIndicator&&this.dayTimeColsSlicer.sliceNowDate(i,r,s.nextDayThreshold,t,o),m=this.splitFgEventSegs(h.fgEventSegs,c),u=this.splitBgEventSegs(h.bgEventSegs,c),v=this.splitBusinessHourSegs(h.businessHourSegs,c),S=this.splitNowIndicatorSegs(g,c),p=this.splitDateSelectionSegs(h.dateSelectionSegs,c),y=this.splitEventDrag(h.eventDrag,c),R=this.splitEventResize(h.eventResize,c),b=this.buildDateRowConfigs(a.headerDates,!0,e.dateProfile,l,f,t);return n.createElement(K,{dateProfile:r,nowDate:i,todayRange:l,cells:a.cellRows[0],forPrint:e.forPrint,className:"fc-timegrid",headerTiers:b,fgEventSegs:d.fgEventSegs,bgEventSegs:d.bgEventSegs,businessHourSegs:d.businessHourSegs,dateSelectionSegs:d.dateSelectionSegs,eventDrag:d.eventDrag,eventResize:d.eventResize,fgEventSegsByCol:m,bgEventSegsByCol:u,businessHourSegsByCol:v,nowIndicatorSegsByCol:S,dateSelectionSegsByCol:p,eventDragByCol:y,eventResizeByCol:R,eventSelection:e.eventSelection})})}}const Z={allDaySlot:Boolean};i.injectStyles('.fc-v-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:flex;flex-direction:column}.fc-v-event.fc-event-mirror{z-index:3}.fc-v-event:not(.fc-event-start){border-top-left-radius:0;border-top-right-radius:0;border-top-width:0}.fc-v-event:not(.fc-event-end){border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-width:0}.fc-v-event.fc-event-selected:before{left:-10px;right:-10px}.fc-v-event .fc-event-inner{color:var(--fc-event-text-color);display:flex;flex-direction:column;flex-grow:1;min-height:0}.fc-v-event .fc-event-time{flex-shrink:0;white-space:nowrap}.fc-v-event .fc-event-time,.fc-v-event .fc-event-title{overflow:hidden}.fc-v-event .fc-event-title-outer{display:flex;flex-direction:column;flex-grow:1;min-height:0}.fc-v-event .fc-event-title{bottom:0;position:sticky;top:0}.fc-v-event .fc-event-resizer-start{cursor:n-resize}.fc-v-event .fc-event-resizer-end{cursor:s-resize}.fc-v-event:not(.fc-event-selected) .fc-event-resizer{height:var(--fc-event-resizer-thickness);left:0;right:0}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start{top:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer{left:50%;margin-left:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-start{top:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-timegrid-slots{z-index:1}.fc-timegrid-slot-minor{border-style:dotted}.fc-timegrid-axis{align-items:flex-end}.fc-timegrid-axis,.fc-timegrid-axis-inner{display:flex;flex-direction:column;justify-content:center}.fc-timegrid-axis-inner{min-height:1.5em}.fc-timegrid-day.fc-day-today{background-color:var(--fc-today-bg-color)}.fc-timegrid-day-events{z-index:2}.fc-direction-ltr .fc-timegrid-day-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-day-events{margin:0 2px 0 2.5%}.fc-timegrid-day-events.fc-timegrid-day-events-simple{margin:4px}.fc-timegrid-event{border-radius:3px;font-size:var(--fc-small-font-size)}.fc-timegrid-event-inset,.fc-timegrid-event.fc-event-mirror{box-shadow:0 0 0 1px var(--fc-page-bg-color)}.fc-timegrid-event.fc-event-end{margin-bottom:1px}.fc-timegrid-event .fc-event-inner{padding:1px 1px 0}.fc-timegrid-event-short .fc-event-inner{flex-direction:row;overflow:hidden}.fc-timegrid-event .fc-event-time{font-size:var(--fc-small-font-size);margin-bottom:1px;white-space:nowrap}.fc-timegrid-event-short .fc-event-time:after{content:"\\00a0-\\00a0"}.fc-timegrid-event-short .fc-event-title-outer{flex-basis:0;flex-grow:1;min-height:0;min-width:0}.fc-timegrid-event-short .fc-event-title,.fc-timegrid-more-link{font-size:var(--fc-small-font-size)}.fc-timegrid-more-link{background:var(--fc-more-link-bg-color);border-radius:3px;box-shadow:0 0 0 1px var(--fc-page-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;margin-bottom:1px;z-index:9999}.fc-direction-ltr .fc-timegrid-more-link{right:0}.fc-direction-rtl .fc-timegrid-more-link{left:0}.fc-timegrid-more-link-inner{padding:3px 2px}.fc-timegrid-now-indicator-container{bottom:0;left:0;overflow:hidden;pointer-events:none;position:absolute;right:0;top:0;z-index:4}.fc-timegrid-now-indicator-arrow{border-color:var(--fc-now-indicator-color);border-bottom:5px solid transparent;border-left-style:solid;border-left-width:6px;border-right-style:solid;border-right-width:6px;border-top:5px solid transparent;height:0;margin-top:-5px;position:absolute;width:0}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{border-right:0;left:0}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{border-left:0;right:0}.fc-timegrid-now-indicator-line{border-top:1px solid var(--fc-now-indicator-color);left:0;position:absolute;right:0}');var J=t.createPlugin({name:"@fullcalendar/timegrid",initialView:"timeGridWeek",optionRefiners:Z,views:{timeGrid:{component:V,usesMinMaxTime:!0,allDaySlot:!0,slotDuration:"00:30:00",slotEventOverlap:!0},timeGridDay:{type:"timeGrid",duration:{days:1}},timeGridWeek:{type:"timeGrid",duration:{weeks:1}}}}),Q={__proto__:null,organizeSegsByCol:a,splitInteractionByCol:o,DayTimeColsSlicer:l,buildSlatMetas:d,AllDaySplitter:s,TimeGridView:V,TimeGridLayout:K,TimeGridWeekNumber:A,buildTimeColsModel:m,buildDayRanges:u};return t.globalPlugins.push(J),e.Internal=Q,e.default=J,Object.defineProperty(e,"__esModule",{value:!0}),e}({},FullCalendar,FullCalendar.Internal,FullCalendar.Preact,FullCalendar.DayGrid.Internal); | ||
FullCalendar.TimeGrid=function(e,t,i,n,r){"use strict";class s extends i.Splitter{getKeyInfo(){return{allDay:{},timed:{}}}getKeysForDateSpan(e){return e.allDay?["allDay"]:["timed"]}getKeysForEventDef(e){return e.allDay?i.hasBgRendering(e)?["timed","allDay"]:["allDay"]:["timed"]}}class l extends i.Slicer{sliceRange(e,t){let n=[];for(let r=0;r<t.length;r+=1){let s=i.intersectRanges(e,t[r]);s&&n.push({startDate:s.start,endDate:s.end,isStart:s.start.valueOf()===e.start.valueOf(),isEnd:s.end.valueOf()===e.end.valueOf(),col:r})}return n}}function a(e,t){let i,n=[];for(i=0;i<t;i+=1)n.push([]);if(e)for(i=0;i<e.length;i+=1)n[e[i].col].push(e[i]);return n}function o(e,t){let i=[];if(e){for(let n=0;n<t;n+=1)i[n]={affectedInstances:e.affectedInstances,isEvent:e.isEvent,segs:[]};for(let t of e.segs)i[t.col].segs.push(t)}else for(let e=0;e<t;e+=1)i[e]=null;return i}const c=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];function d(e,t,n,r,s){let l=new Date(0),a=e,o=i.createDuration(0),d=n||function(e){let t,n,r;for(t=c.length-1;t>=0;t-=1)if(n=i.createDuration(c[t]),r=i.wholeDivideDurations(n,e),null!==r&&r>1)return n;return e}(r),h=[];for(;i.asRoughMs(a)<i.asRoughMs(t);){let e=s.add(l,a),t=null!==i.wholeDivideDurations(o,d);h.push({date:e,time:a,key:e.toISOString(),isoTimeStr:i.formatIsoTimeString(e),isLabeled:t}),a=i.addDurations(a,r),o=i.addDurations(o,r)}return h}class h extends i.BaseComponent{constructor(){super(...arguments),this.innerElRef=n.createRef()}render(){let{props:e}=this,{options:t,viewApi:r}=this.context,s={text:t.allDayText,view:r};return n.createElement(i.ContentContainer,{tag:"div",attrs:{role:"rowheader"},className:"fc-timegrid-allday-label fc-timegrid-axis fc-cell fc-content-box",style:{width:e.width},renderProps:s,generatorName:"allDayContent",customGenerator:t.allDayContent,defaultGenerator:f,classNameGenerator:t.allDayClassNames,didMount:t.allDayDidMount,willUnmount:t.allDayWillUnmount},e=>n.createElement(e,{tag:"span",className:"fc-timegrid-axis-inner fc-cell-inner fc-padding-sm",elRef:this.innerElRef}))}componentDidMount(){const{props:e}=this,t=this.innerElRef.current;this.disconnectInnerWidth=i.watchWidth(t,t=>{i.setRef(e.innerWidthRef,t)})}componentWillUnmount(){this.disconnectInnerWidth(),i.setRef(this.props.innerWidthRef,null)}}function f(e){return e.text}class g extends i.DateComponent{constructor(){super(...arguments),this.heightRef=n.createRef(),this.handleRootEl=e=>{this.rootEl=e,e?this.context.registerInteractiveComponent(this,{el:e}):this.context.unregisterInteractiveComponent(this)}}render(){return n.createElement(r.DayGridRow,Object.assign({},this.props,{isTall:!0,rootElRef:this.handleRootEl,heightRef:this.heightRef}))}queryHit(e,t,n){const{props:s,context:l,heightRef:a}=this,o=s.cells.length,{col:c,left:d,right:h}=r.computeColFromPosition(e,n,s.colWidth,o,l.isRtl),f=s.cells[c],g=f.date,m=i.addDays(g,1);return{dateProfile:s.dateProfile,dateSpan:Object.assign({range:{start:g,end:m},allDay:!0},f.dateSpanProps),dayEl:r.getCellEl(this.rootEl,c),rect:{left:d,right:h,top:0,bottom:a.current},layer:0}}}function m(e,t){let n=new i.DaySeriesModel(e.renderRange,t);return new i.DayTableModel(n,!1)}function u(e,t,i){let n=[];for(let r of e.headerDates)n.push({start:i.add(r,t.slotMinTime),end:i.add(r,t.slotMaxTime)});return n}function v(e,t,i,n){if(!i||!n)return[void 0,!1];const r=i+1,s=n/t;let l,a;return e&&s>=r?(l=!0,a=s):(l=!1,a=r),[a,l]}function S(e,t,n){return n||(n=i.startOfDay(e)),p(i.createDuration(e.valueOf()-n.valueOf()),t)}function p(e,t){const n=i.asRoughMs(t.slotMinTime),r=i.asRoughMs(t.slotMaxTime);let s=(e.milliseconds-n)/(r-n);return s=Math.max(0,s),s=Math.min(1,s),s}function y(e){return["fc-timegrid-slot",e.isLabeled?"":"fc-timegrid-slot-minor","fc-flex-row"]}function b(e,t,i,n,r,s,l){const a=[];if(null!=r){const o=r*n;for(const n of e){const e=S(n.startDate,t,i)*o;let r=S(n.endDate,t,i)*o,c=r-e;null!=s&&c<s&&(c=s,r=e+c),a.push({start:e,end:r,size:c,isShort:null!=l&&c<l})}}return a}function R(e,t,n,r){const s=[];for(let i=0;i<e.length;i++){const n=t[i];n&&s.push(Object.assign(Object.assign({},e[i]),{start:n.start,end:n.end}))}const l=new i.SegHierarchy(s,void 0,n,void 0,r);let a=function(e){const{placementsByLevel:t}=e,n=C((e,t)=>e+":"+t,(r,s)=>{let l=function(e,t,n){let{levelCoords:r,placementsByLevel:s}=e,l=s[t][n],a=r[t]+l.thickness,o=r.length,c=t;for(;c<o&&r[c]<a;c+=1);for(;c<o;c+=1){let e,t=s[c],n=i.binarySearch(t,l.start,i.getCoordRangeEnd),r=n[0]+n[1],a=r;for(;(e=t[a])&&e.start<l.end;)a+=1;if(r<a)return{level:c,lateralStart:r,lateralEnd:a}}return null}(e,r,s),[a,o]=w(l,n),c=t[r][s];return[Object.assign(Object.assign({},c),{nextLevelNodes:a}),c.thickness+o]}),[r]=w(t.length?{level:0,lateralStart:0,lateralEnd:t[0].length}:null,n);return r}(l);a=function(e,t){const n=C((e,t,n)=>i.getEventKey(e),(e,i,r)=>{let s,{nextLevelNodes:l,thickness:a}=e,o=a+r,c=a/o,d=[];if(l.length)for(let e of l)if(void 0===s){let t=n(e,i,o);s=t[0],d.push(t[1])}else{let t=n(e,s,0);d.push(t[1])}else s=t;let h=(s-i)*c;return[s-h,Object.assign(Object.assign({},e),{thickness:h,nextLevelNodes:d})]});return e.map(e=>n(e,0,0)[1])}(a,1);return[function(e){let t=new Map;const n=C((e,t,n)=>i.getEventKey(e),(e,i,n)=>{let s=Object.assign(Object.assign({},e),{levelCoord:i,stackDepth:n,stackForward:0});return t.set(s.eventRange.instance.instanceId,s),s.stackForward=r(e.nextLevelNodes,i+e.thickness,n+1)});function r(e,t,i){let r=0;for(let s of e)r=Math.max(n(s,t,i)+1,r);return r}return r(e,0,0),t}(a),i.groupIntersectingSegs(l.hiddenSegs)]}function w(e,t){if(!e)return[[],0];let{level:i,lateralStart:n,lateralEnd:r}=e,s=n,l=[];for(;s<r;)l.push(t(i,s)),s+=1;return l.sort(E),[l.map(x),l[0][1]]}function E(e,t){return t[1]-e[1]}function x(e){return e[0]}function C(e,t){const i={};return(...n)=>{let r=e(...n);return r in i?i[r]:i[r]=t(...n)}}const D=i.createFormatter({hour:"numeric",minute:"2-digit",meridiem:!1});class H extends i.BaseComponent{render(){const{props:e}=this;return n.createElement(i.StandardEvent,Object.assign({},e,{className:i.joinClassNames("fc-timegrid-event",e.isShort&&"fc-timegrid-event-short",e.isInset&&"fc-timegrid-event-inset","fc-v-event",e.isLiquid&&"fc-liquid"),defaultTimeFormat:D}))}}class M extends i.BaseComponent{render(){let{props:e}=this;return n.createElement(i.MoreLinkContainer,{className:"fc-timegrid-more-link fc-abs",style:{top:e.top,height:e.height},allDayDate:null,segs:e.hiddenSegs,hiddenSegs:e.hiddenSegs,dateSpanProps:e.dateSpanProps,dateProfile:e.dateProfile,todayRange:e.todayRange,popoverContent:()=>P(e.hiddenSegs,e),defaultGenerator:N,forceTimed:!0},e=>n.createElement(e,{tag:"div",className:"fc-timegrid-more-link-inner fc-sticky-t"}))}}function N(e){return e.shortText}function I(e){return n.createElement("div",{className:"fc-timegrid-now-indicator-container"},n.createElement(i.NowIndicatorContainer,{className:"fc-timegrid-now-indicator-line",style:{top:null!=e.totalHeight?e.totalHeight*S(e.nowDate,e.dateProfile,e.dayDate):void 0},isAxis:!1,date:e.nowDate}))}const W="undefined"!=typeof navigator&&navigator.userAgent.toLowerCase().includes("firefox");class z extends i.BaseComponent{constructor(){super(...arguments),this.sortEventSegs=i.memoize(i.sortEventSegs)}render(){let{props:e,context:t}=this,{options:r}=t,s=r.selectMirror,l=e.eventDrag&&e.eventDrag.segs||e.eventResize&&e.eventResize.segs||s&&e.dateSelectionSegs||[],a=e.eventDrag&&e.eventDrag.affectedInstances||e.eventResize&&e.eventResize.affectedInstances||{},o=i.getDateMeta(e.date,e.todayRange,null,e.dateProfile);const c=i.joinClassNames("fc-timegrid-day",e.borderStart&&"fc-border-s",null==e.width&&"fc-liquid","fc-flex-col fc-rel");if(o.isDisabled)return n.createElement("div",{role:"gridcell","aria-disabled":!0,className:i.joinClassNames(c,"fc-day-disabled"),style:{width:e.width}});let d=this.sortEventSegs(e.fgEventSegs,r.eventOrder);return n.createElement(i.DayCellContainer,{tag:"div",attrs:Object.assign(Object.assign({},e.attrs),{role:"gridcell"}),className:c,style:{width:e.width},date:e.date,dateMeta:o,renderProps:e.renderProps},t=>n.createElement(n.Fragment,null,this.renderFillSegs(e.businessHourSegs,"non-business"),this.renderFillSegs(e.bgEventSegs,"bg-event"),this.renderFillSegs(e.dateSelectionSegs,"highlight"),i.hasCustomDayCellContent(r)&&n.createElement(t,{tag:"div",className:"fc-timegrid-day-misc fc-rel"}),n.createElement("div",{className:i.joinClassNames("fc-timegrid-day-events",e.forPrint&&W?"fc-timegrid-day-events-simple":"fc-fill")},this.renderFgSegs(d,a,!1,!1,!1)),Boolean(l.length)&&n.createElement("div",{className:"fc-timegrid-day-events fc-fill"},this.renderFgSegs(l,{},Boolean(e.eventDrag),Boolean(e.eventResize),Boolean(s),"mirror")),this.renderNowIndicator(e.nowIndicatorSegs)))}renderFgSegs(e,t,i,n,r,s){const{props:l}=this;return l.forPrint&&W?P(e,l):this.renderPositionedFgSegs(e,t,i,n,r,s)}renderPositionedFgSegs(e,t,r,s,l,a){let{props:o,context:c}=this,{date:d,dateProfile:h,eventSelection:f,todayRange:g,nowDate:m}=o,{eventMaxStack:u,eventShortHeight:v,eventOrderStrict:S,eventMinHeight:p}=c.options,y=b(e,h,d,o.slatCnt,o.slatHeight,p,v),[w,E]=R(e,y,S,u),x=r||s||l;return n.createElement(n.Fragment,null,e.map((e,o)=>{let{eventRange:c}=e,d=c.instance.instanceId,h=y[o]||{},u=w.get(d),v=!x&&u?this.computeSegHStyle(u):{left:0,right:0},S=x||u&&!t[d],p=u&&Boolean(u.stackDepth);return n.createElement("div",{className:"fc-abs fc-flex-col",key:a||d,style:Object.assign({visibility:S?"":"hidden",top:h.start,height:h.size},v)},n.createElement(H,Object.assign({eventRange:c,slicedStart:e.startDate,slicedEnd:e.endDate,isStart:e.isStart,isEnd:e.isEnd,isDragging:r,isResizing:s,isDateSelecting:l,isSelected:d===f,isShort:h.isShort||!1,isInset:p,isLiquid:!0},i.getEventRangeMeta(c,g,m))))}),this.renderHiddenGroups(E))}renderHiddenGroups(e){let{dateSpanProps:t,dateProfile:i,todayRange:r,nowDate:s,eventSelection:l,eventDrag:a,eventResize:o}=this.props;return n.createElement(n.Fragment,null,e.map(e=>n.createElement(M,{key:e.key,hiddenSegs:e.segs,top:e.start,height:e.end-e.start,dateSpanProps:t,dateProfile:i,todayRange:r,nowDate:s,eventSelection:l,eventDrag:a,eventResize:o})))}renderFillSegs(e,t){let{props:r,context:s}=this,l=b(e,r.dateProfile,r.date,r.slatCnt,r.slatHeight,s.options.eventMinHeight);return n.createElement(n.Fragment,null,e.map((e,s)=>{const{eventRange:a}=e,o=l[s]||{};return n.createElement("div",{key:i.buildEventRangeKey(a),className:"fc-fill-x",style:{top:o.start,height:o.size}},"bg-event"===t?n.createElement(i.BgEvent,Object.assign({eventRange:a,isStart:e.isStart,isEnd:e.isEnd},i.getEventRangeMeta(a,r.todayRange,r.nowDate))):i.renderFill(t))}))}renderNowIndicator(e){let{props:t}=this;if(!t.forPrint||!W)return e.map(e=>n.createElement(I,{nowDate:e.startDate,dayDate:t.date,dateProfile:t.dateProfile,totalHeight:null!=t.slatHeight?t.slatHeight*t.slatCnt:void 0}))}computeSegHStyle(e){let t,n,{isRtl:r,options:s}=this.context,l=s.slotEventOverlap,a=e.levelCoord,o=e.levelCoord+e.thickness;l&&(o=Math.min(1,a+2*(o-a))),r?(t=1-o,n=a):(t=a,n=1-o);let c={zIndex:e.stackDepth+1,left:i.fracToCssDim(t),right:i.fracToCssDim(n)};return l&&e.stackForward&&(c[r?"marginLeft":"marginRight"]=20),c}}function P(e,{todayRange:t,nowDate:r,eventSelection:s,eventDrag:l,eventResize:a}){let o=(l?l.affectedInstances:null)||(a?a.affectedInstances:null)||{};return n.createElement(n.Fragment,null,e.map(e=>{let{eventRange:l}=e,{instanceId:a}=l.instance;return n.createElement("div",{key:a,className:"fc-break-inside-avoid",style:{visibility:o[a]?"hidden":""}},n.createElement(H,Object.assign({eventRange:l,slicedStart:e.startDate,slicedEnd:e.endDate,isStart:e.isStart,isEnd:e.isEnd,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:a===s,isShort:!1,isInset:!1},i.getEventRangeMeta(l,t,r))))}))}class B extends i.DateComponent{constructor(){super(...arguments),this.processSlotOptions=i.memoize(k),this.handleRootEl=e=>{this.rootEl=e,e?this.context.registerInteractiveComponent(this,{el:e,isHitComboAllowed:this.props.isHitComboAllowed}):this.context.unregisterInteractiveComponent(this)}}render(){const{props:e}=this;return n.createElement("div",{role:e.role,className:i.joinClassNames(e.className,"fc-flex-row"),ref:this.handleRootEl},e.cells.map((t,i)=>n.createElement(z,{key:t.key,dateProfile:e.dateProfile,nowDate:e.nowDate,todayRange:e.todayRange,date:t.date,slatCnt:e.slatCnt,renderProps:t.renderProps,attrs:t.attrs,dateSpanProps:t.dateSpanProps,forPrint:e.forPrint,borderStart:Boolean(i),fgEventSegs:e.fgEventSegsByCol[i],bgEventSegs:e.bgEventSegsByCol[i],businessHourSegs:e.businessHourSegsByCol[i],nowIndicatorSegs:e.nowIndicatorSegsByCol[i],dateSelectionSegs:e.dateSelectionSegsByCol[i],eventDrag:e.eventDragByCol[i],eventResize:e.eventResizeByCol[i],eventSelection:e.eventSelection,width:e.colWidth,slatHeight:e.slatHeight})))}queryHit(e,t,n){const{dateProfile:s,cells:l,colWidth:a,slatHeight:o}=this.props,{dateEnv:c,options:d,isRtl:h}=this.context,{snapDuration:f,snapsPerSlot:g}=this.processSlotOptions(d.slotDuration,d.snapDuration),m=l.length,{col:u,left:v,right:S}=r.computeColFromPosition(e,n,a,m,h),p=l[u],y=Math.floor(t/o),b=y*o,R=(t-b)/o,w=y+Math.floor(R*g)*g,E=i.addDurations(s.slotMinTime,i.multiplyDuration(f,w)),x=c.add(p.date,E),C=c.add(x,f);return{dateProfile:s,dateSpan:Object.assign({range:{start:x,end:C},allDay:!1},p.dateSpanProps),dayEl:r.getCellEl(this.rootEl,u),rect:{left:v,right:S,top:b,bottom:b+o},layer:0}}}function k(e,t){let n=t||e,r=i.wholeDivideDurations(e,n);return null===r&&(n=e,r=1),{snapDuration:n,snapsPerSlot:r}}function L(e){return n.createElement("div",{className:"fc-timegrid-now-indicator-container"},n.createElement(i.NowIndicatorContainer,{className:"fc-timegrid-now-indicator-arrow",style:{top:null!=e.totalHeight?e.totalHeight*S(e.nowDate,e.dateProfile):void 0},isAxis:!0,date:e.nowDate}))}B.addPropsEquality({style:i.isPropsEqual});const T=i.createFormatter({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"short"});class j extends i.BaseComponent{constructor(){super(...arguments),this.innerElRef=n.createRef()}render(){let{props:e,context:t}=this,{dateEnv:r,options:s,viewApi:l}=t,a=i.joinClassNames("fc-timegrid-slot-label fc-timegrid-axis fc-header-cell fc-cell",e.isLiquid?"fc-liquid":"fc-content-box");if(!e.isLabeled)return n.createElement("div",{"data-time":e.isoTimeStr,className:a,style:{width:e.width}});let o=null==s.slotLabelFormat?T:Array.isArray(s.slotLabelFormat)?i.createFormatter(s.slotLabelFormat[0]):i.createFormatter(s.slotLabelFormat),c={level:0,time:e.time,date:r.toDate(e.date),view:l,text:r.format(e.date,o)};return n.createElement(i.ContentContainer,{tag:"div",attrs:{"data-time":e.isoTimeStr},className:a,style:{width:e.width},renderProps:c,generatorName:"slotLabelContent",customGenerator:s.slotLabelContent,defaultGenerator:F,classNameGenerator:s.slotLabelClassNames,didMount:s.slotLabelDidMount,willUnmount:s.slotLabelWillUnmount},e=>n.createElement(e,{tag:"div",className:"fc-timegrid-axis-inner fc-cell-inner fc-padding-sm",elRef:this.innerElRef}))}componentDidMount(){const{props:e}=this,t=this.innerElRef.current;t&&(this.disconnectInnerSize=i.watchSize(t,(t,n)=>{i.setRef(e.innerWidthRef,t),i.setRef(e.innerHeightRef,n)}))}componentWillUnmount(){const{props:e}=this;this.disconnectInnerSize&&(this.disconnectInnerSize(),i.setRef(e.innerWidthRef,null),i.setRef(e.innerHeightRef,null))}}function F(e){return e.text}class q extends i.BaseComponent{constructor(){super(...arguments),this.innerElRef=n.createRef()}render(){let{props:e,context:t}=this,{options:r}=t,s={time:e.time,date:t.dateEnv.toDate(e.date),view:t.viewApi};return n.createElement(i.ContentContainer,{tag:"div",className:i.joinClassNames("fc-cell fc-liquid",e.borderStart&&"fc-border-s"),attrs:{"data-time":e.isoTimeStr},renderProps:s,generatorName:"slotLaneContent",customGenerator:r.slotLaneContent,classNameGenerator:r.slotLaneClassNames,didMount:r.slotLaneDidMount,willUnmount:r.slotLaneWillUnmount},e=>n.createElement(e,{tag:"div",className:"fc-cell-inner",elRef:this.innerElRef}))}componentDidMount(){const e=this.innerElRef.current;this.disconnectInnerHeight=i.watchHeight(e,e=>{i.setRef(this.props.innerHeightRef,e)})}componentWillUnmount(){this.disconnectInnerHeight(),i.setRef(this.props.innerHeightRef,null)}}const O=i.createFormatter({week:"short"});class A extends i.BaseComponent{constructor(){super(...arguments),this.innerElRef=n.createRef()}render(){let{props:e,context:t}=this,r=e.dateProfile.renderRange,s=1===i.diffDays(r.start,r.end)&&t.options.navLinks,l=i.buildDateStr(t,r.start,"week");return n.createElement(i.WeekNumberContainer,{tag:"div",attrs:{role:"gridcell","aria-label":l},className:i.joinClassNames("fc-timegrid-weeknumber fc-timegrid-axis fc-cell",e.isLiquid?"fc-liquid":"fc-content-box"),style:{width:e.width},date:r.start,defaultFormat:O},e=>n.createElement(e,{tag:"div",attrs:s?i.buildNavLinkAttrs(t,r.start,"week",l):{"aria-label":l},className:"fc-timegrid-axis-inner fc-cell-inner fc-padding-sm",elRef:this.innerElRef}))}componentDidMount(){const{props:e}=this,t=this.innerElRef.current;this.disconnectInnerSize=i.watchSize(t,(t,n)=>{i.setRef(e.innerWidthRef,t),i.setRef(e.innerHeightRef,n)})}componentWillUnmount(){const{props:e}=this;this.disconnectInnerSize(),i.setRef(e.innerWidthRef,null),i.setRef(e.innerHeightRef,null)}}function G(e){return n.createElement("div",{role:"gridcell",className:i.joinClassNames("fc-timegrid-axis",e.isLiquid?"fc-liquid":"fc-content-box"),style:{width:e.width}})}class U extends i.BaseComponent{constructor(){super(...arguments),this.state={headerTierHeights:[]},this.headerLabelInnerWidthRefMap=new i.RefMap(()=>{i.afterSize(this.handleAxisWidths)}),this.headerLabelInnerHeightRefMap=new i.RefMap(()=>{i.afterSize(this.handleHeaderHeights)}),this.headerMainInnerHeightRefMap=new i.RefMap(()=>{i.afterSize(this.handleHeaderHeights)}),this.handleAllDayLabelInnerWidth=e=>{this.allDayLabelInnerWidth=e,i.afterSize(this.handleAxisWidths)},this.slatLabelInnerWidthRefMap=new i.RefMap(()=>{i.afterSize(this.handleAxisWidths)}),this.slatLabelInnerHeightRefMap=new i.RefMap(()=>{i.afterSize(this.handleSlatInnerHeights)}),this.slatMainInnerHeightRefMap=new i.RefMap(()=>{i.afterSize(this.handleSlatInnerHeights)}),this.headerScrollerRef=n.createRef(),this.allDayScrollerRef=n.createRef(),this.mainScrollerRef=n.createRef(),this.footScrollerRef=n.createRef(),this.axisScrollerRef=n.createRef(),this.handleClientWidth=e=>{this.setState({clientWidth:e})},this.handleClientHeight=e=>{this.setState({clientHeight:e})},this.handleEndScrollbarWidth=e=>{this.setState({endScrollbarWidth:e})},this.handleBottomScrollbarWidth=e=>{this.setState({bottomScrollbarWidth:e})},this.handleHeaderHeights=()=>{const e=this.headerLabelInnerHeightRefMap.current,t=this.headerMainInnerHeightRefMap.current,n=[];for(const[i,r]of t.entries())n[i]=Math.max(e.get(i)||0,r);const{headerTierHeights:r}=this.state;i.isArraysEqual(r,n)||this.setState({headerTierHeights:n})},this.handleSlatInnerHeights=()=>{const e=this.slatLabelInnerHeightRefMap.current,t=this.slatMainInnerHeightRefMap.current;let i=0;for(const t of e.values())i=Math.max(i,t);for(const e of t.values())i=Math.max(i,e);this.state.slatInnerHeight!==i&&this.setState({slatInnerHeight:i})},this.handleAxisWidths=()=>{const e=this.headerLabelInnerWidthRefMap.current,t=this.slatLabelInnerWidthRefMap.current;let i=this.allDayLabelInnerWidth||0;for(const t of e.values())i=Math.max(i,t);for(const e of t.values())i=Math.max(i,e);this.state.axisWidth!==i&&this.setState({axisWidth:i})}}render(){const{props:e,state:t,context:s,headerLabelInnerWidthRefMap:l,headerLabelInnerHeightRefMap:a,headerMainInnerHeightRefMap:o,slatLabelInnerWidthRefMap:c,slatLabelInnerHeightRefMap:d,slatMainInnerHeightRefMap:f}=this,{nowDate:m,headerTiers:u,forPrint:S}=e,{axisWidth:p}=t,{options:b}=s,R=!S&&!i.getIsHeightAuto(b),w=!S&&i.getStickyHeaderDates(b),E=!S&&i.getStickyFooterScrollbar(b),x=S&&!W,C=S&&W,D=e.cells.length,[H,M]=r.computeColWidth(D,e.dayMinWidth,t.clientWidth),N=e.slatMetas.length,[I,z]=v(R&&b.expandRows,N,t.slatInnerHeight,t.clientHeight);this.slatHeight=I;const P=(I||0)*N,k=x?P:void 0,T=R&&!b.expandRows&&null!=t.clientHeight&&t.clientHeight>P,F=b.dayHeaders?u.length+1:1;return n.createElement(n.Fragment,null,b.dayHeaders&&n.createElement("div",{className:i.joinClassNames("fc-timegrid-header fc-flex-row fc-border-b",w&&"fc-table-header-sticky")},n.createElement("div",{role:"rowgroup",className:"fc-content-box",style:{width:p}},u.map((r,s)=>n.createElement("div",{key:s,role:"row","aria-rowindex":s+1,className:i.joinClassNames("fc-flex-row fc-content-box",s&&"fc-border-t"),style:{height:t.headerTierHeights[s]}},b.weekNumbers&&s===u.length-1?n.createElement(A,{dateProfile:e.dateProfile,innerWidthRef:l.createRef(s),innerHeightRef:a.createRef(s),width:void 0,isLiquid:!0}):n.createElement(G,{width:void 0,isLiquid:!0})))),n.createElement(i.Scroller,{horizontal:!0,hideScrollbars:!0,className:"fc-flex-row fc-border-s fc-liquid",ref:this.headerScrollerRef},n.createElement("div",{role:"rowgroup",className:null==H?"fc-liquid":"",style:{width:H}},e.headerTiers.map((e,i)=>n.createElement(r.DayGridHeaderRow,Object.assign({},e,{key:i,role:"row",rowIndex:i,className:i?"fc-border-t":"",height:t.headerTierHeights[i],colWidth:M,innerHeightRef:o.createRef(i)})))),Boolean(t.endScrollbarWidth)&&n.createElement("div",{className:"fc-border-s fc-filler",style:{minWidth:t.endScrollbarWidth}}))),n.createElement("div",{role:"rowgroup",className:i.joinClassNames("fc-flex-col",R&&"fc-liquid")},b.allDaySlot&&n.createElement(n.Fragment,null,n.createElement("div",{role:"row","aria-rowindex":F,className:"fc-timegrid-allday fc-flex-row"},n.createElement(h,{width:p,innerWidthRef:this.handleAllDayLabelInnerWidth}),n.createElement(i.Scroller,{horizontal:!0,hideScrollbars:!0,className:"fc-border-s fc-flex-row fc-liquid",ref:this.allDayScrollerRef},n.createElement("div",{className:"fc-flex-col",style:{width:H}},n.createElement(g,{dateProfile:e.dateProfile,todayRange:e.todayRange,cells:e.cells,showDayNumbers:!1,forPrint:S,isHitComboAllowed:e.isHitComboAllowed,isCompact:r.computeRowHeight(t.clientWidth,1,!0,S,b)[1],fgEventSegs:e.fgEventSegs,bgEventSegs:e.bgEventSegs,businessHourSegs:e.businessHourSegs,dateSelectionSegs:e.dateSelectionSegs,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,dayMaxEvents:e.dayMaxEvents,dayMaxEventRows:e.dayMaxEventRows,colWidth:M})),Boolean(t.endScrollbarWidth)&&n.createElement("div",{className:"fc-border-s fc-filler",style:{minWidth:t.endScrollbarWidth}}))),n.createElement("div",{className:"fc-rowdivider"})),n.createElement("div",{role:"row","aria-rowindex":F+(b.allDaySlot?1:0),className:i.joinClassNames("fc-timegrid-body fc-flex-row",R&&"fc-liquid")},n.createElement(i.Scroller,{vertical:R,hideScrollbars:!0,className:"fc-flex-col fc-content-box",style:{width:p},ref:this.axisScrollerRef},!C&&n.createElement(n.Fragment,null,n.createElement("div",{role:"rowheader","aria-label":b.timedText,className:i.joinClassNames("fc-flex-col fc-grow",x&&"fc-rel"),style:{height:k}},n.createElement("div",{"aria-hidden":!0,className:i.joinClassNames("fc-timegrid-slots-axis fc-flex-col",R&&b.expandRows&&"fc-grow",x&&"fc-fill-x")},e.slatMetas.map((e,t)=>n.createElement("div",{key:e.key,className:i.joinClassNames(...y(e),t&&"fc-border-t",z&&"fc-liquid"),style:{height:z?"":I}},n.createElement(j,Object.assign({},e,{isLiquid:!0,innerWidthRef:c.createRef(e.key),innerHeightRef:d.createRef(e.key)}))))),b.nowIndicator&&i.rangeContainsMarker(e.dateProfile.currentRange,m)&&n.createElement(L,{nowDate:m,dateProfile:e.dateProfile,totalHeight:null!=I?I*N:void 0}),Boolean(T||t.bottomScrollbarWidth)&&n.createElement("div",{class:i.joinClassNames("fc-border-t fc-filler",T&&"fc-liquid"),style:{minHeight:t.bottomScrollbarWidth}})))),n.createElement("div",{className:"fc-border-s fc-flex-col fc-liquid"},n.createElement(i.Scroller,{vertical:R,horizontal:!0,hideScrollbars:E||S,className:i.joinClassNames("fc-flex-col",R&&"fc-liquid"),ref:this.mainScrollerRef,clientWidthRef:this.handleClientWidth,clientHeightRef:this.handleClientHeight,endScrollbarWidthRef:this.handleEndScrollbarWidth,bottomScrollbarWidthRef:this.handleBottomScrollbarWidth},n.createElement("div",{className:"fc-flex-col fc-grow fc-rel",style:{width:H,height:k}},n.createElement(B,{dateProfile:e.dateProfile,nowDate:e.nowDate,todayRange:e.todayRange,cells:e.cells,slatCnt:N,forPrint:S,isHitComboAllowed:e.isHitComboAllowed,className:C?"":"fc-fill",fgEventSegsByCol:e.fgEventSegsByCol,bgEventSegsByCol:e.bgEventSegsByCol,businessHourSegsByCol:e.businessHourSegsByCol,nowIndicatorSegsByCol:e.nowIndicatorSegsByCol,dateSelectionSegsByCol:e.dateSelectionSegsByCol,eventDragByCol:e.eventDragByCol,eventResizeByCol:e.eventResizeByCol,eventSelection:e.eventSelection,colWidth:M,slatHeight:I}),!C&&n.createElement(n.Fragment,null,n.createElement("div",{"aria-hidden":!0,className:i.joinClassNames("fc-timegrid-slots fc-flex-col",R&&b.expandRows&&"fc-grow",x?"fc-fill-x":"fc-rel")},e.slatMetas.map((e,t)=>n.createElement("div",{key:e.key,className:i.joinClassNames(...y(e),t&&"fc-border-t",z&&"fc-liquid"),style:{height:z?"":I}},n.createElement(q,Object.assign({},e,{innerHeightRef:f.createRef(e.key)}))))),T&&n.createElement("div",{class:"fc-liquid fc-border-t fc-filler"})))),Boolean(E)&&n.createElement(i.StickyFooterScrollbar,{canvasWidth:H,scrollerRef:this.footScrollerRef,scrollbarWidthRef:this.handleBottomScrollbarWidth})))))}componentDidMount(){this.initScrollers(),this.updateSlatHeight()}componentDidUpdate(){this.updateScrollers(),this.updateSlatHeight()}componentWillUnmount(){this.destroyScrollers()}updateSlatHeight(){this.prevSlatHeight!==this.slatHeight&&i.setRef(this.props.slatHeightRef,this.prevSlatHeight=this.slatHeight)}initScrollers(){const e=i.getScrollerSyncerClass(this.context.pluginHooks);this.dayScroller=new e(!0),this.timeScroller=new e,i.setRef(this.props.dayScrollerRef,this.dayScroller),i.setRef(this.props.timeScrollerRef,this.timeScroller),this.updateScrollers()}updateScrollers(){this.dayScroller.handleChildren([this.headerScrollerRef.current,this.allDayScrollerRef.current,this.mainScrollerRef.current,this.footScrollerRef.current]),this.timeScroller.handleChildren([this.axisScrollerRef.current,this.mainScrollerRef.current])}destroyScrollers(){i.setRef(this.props.dayScrollerRef,null),i.setRef(this.props.timeScrollerRef,null)}}class _ extends i.BaseComponent{constructor(){super(...arguments),this.headerLabelInnerWidthRefMap=new i.RefMap(()=>{i.afterSize(this.handleAxisInnerWidths)}),this.handleAllDayLabelInnerWidth=e=>{this.allDayLabelInnerWidth=e,i.afterSize(this.handleAxisInnerWidths)},this.slatLabelInnerWidthRefMap=new i.RefMap(()=>{i.afterSize(this.handleAxisInnerWidths)}),this.slatLabelInnerHeightRefMap=new i.RefMap(()=>{i.afterSize(this.handleSlatInnerHeights)}),this.slatInnerMainHeightRefMap=new i.RefMap(()=>{i.afterSize(this.handleSlatInnerHeights)}),this.handleClientWidth=e=>{this.setState({clientWidth:e})},this.handleClientHeight=e=>{this.setState({clientHeight:e})},this.handleEndScrollbarWidth=e=>{this.setState({endScrollbarWidth:e})},this.handleAxisInnerWidths=()=>{const e=this.headerLabelInnerWidthRefMap.current,t=this.slatLabelInnerWidthRefMap.current;let i=this.allDayLabelInnerWidth||0;for(const t of e.values())i=Math.max(i,t);for(const e of t.values())i=Math.max(i,e);this.state.axisWidth!==i&&this.setState({axisWidth:i})},this.handleSlatInnerHeights=()=>{const e=this.slatLabelInnerHeightRefMap.current,t=this.slatInnerMainHeightRefMap.current;let i=0;for(const t of e.values())i=Math.max(i,t);for(const e of t.values())i=Math.max(i,e);this.state.slatInnerHeight!==i&&this.setState({slatInnerHeight:i})}}render(){const{props:e,state:t,context:s,slatLabelInnerWidthRefMap:l,slatLabelInnerHeightRefMap:a,slatInnerMainHeightRefMap:o,headerLabelInnerWidthRefMap:c}=this,{nowDate:d,forPrint:f}=e,{axisWidth:m}=t,{options:u}=s,S=!f&&!i.getIsHeightAuto(u),p=!f&&i.getStickyHeaderDates(u),b=e.slatMetas.length,[R,w]=v(S&&u.expandRows,b,t.slatInnerHeight,t.clientHeight);this.slatHeight=R;const E=(R||0)*b,x=S&&!u.expandRows&&null!=t.clientHeight&&t.clientHeight>E,C=f&&!W,D=f&&W,H=C?E:void 0;return n.createElement(n.Fragment,null,u.dayHeaders&&n.createElement("div",{role:"rowgroup",className:i.joinClassNames("fc-timegrid-header fc-flex-col fc-border-b",p&&"fc-table-header-sticky")},e.headerTiers.map((s,l)=>n.createElement("div",{key:l,role:"row",className:i.joinClassNames("fc-flex-row",l&&"fc-border-t")},u.weekNumbers&&l===e.headerTiers.length-1?n.createElement(A,{dateProfile:e.dateProfile,innerHeightRef:c.createRef(l),width:m,isLiquid:!1}):n.createElement(G,{width:m,isLiquid:!1}),n.createElement(r.DayGridHeaderRow,Object.assign({},s,{className:"fc-border-s fc-liquid"})),Boolean(t.endScrollbarWidth)&&n.createElement("div",{className:"fc-border-s fc-filler",style:{minWidth:t.endScrollbarWidth}})))),n.createElement("div",{role:"rowgroup",className:i.joinClassNames("fc-flex-col",S&&"fc-liquid")},u.allDaySlot&&n.createElement(n.Fragment,null,n.createElement("div",{role:"row",className:"fc-timegrid-allday fc-flex-row"},n.createElement(h,{width:m,innerWidthRef:this.handleAllDayLabelInnerWidth}),n.createElement(g,{dateProfile:e.dateProfile,todayRange:e.todayRange,cells:e.cells,showDayNumbers:!1,forPrint:f,isHitComboAllowed:e.isHitComboAllowed,className:"fc-border-s fc-liquid",isCompact:r.computeRowHeight(t.clientWidth,1,!0,f,u)[1],fgEventSegs:e.fgEventSegs,bgEventSegs:e.bgEventSegs,businessHourSegs:e.businessHourSegs,dateSelectionSegs:e.dateSelectionSegs,eventDrag:e.eventDrag,eventResize:e.eventResize,eventSelection:e.eventSelection,dayMaxEvents:e.dayMaxEvents,dayMaxEventRows:e.dayMaxEventRows}),Boolean(t.endScrollbarWidth)&&n.createElement("div",{className:"fc-border-s fc-filler",style:{minWidth:t.endScrollbarWidth}})),n.createElement("div",{className:"fc-rowdivider"})),n.createElement(i.Scroller,{vertical:S,className:i.joinClassNames("fc-timegrid-body fc-flex-col",S&&"fc-liquid"),ref:e.timeScrollerRef,clientWidthRef:this.handleClientWidth,clientHeightRef:this.handleClientHeight,endScrollbarWidthRef:this.handleEndScrollbarWidth},n.createElement("div",{className:"fc-flex-col fc-grow fc-rel",style:{height:H}},n.createElement("div",{role:"row",className:i.joinClassNames("fc-flex-row",!D&&"fc-fill")},n.createElement("div",{role:"rowheader","aria-label":u.timedText,className:"fc-content-box",style:{width:m}}),n.createElement(B,{dateProfile:e.dateProfile,nowDate:e.nowDate,todayRange:e.todayRange,cells:e.cells,slatCnt:b,forPrint:f,isHitComboAllowed:e.isHitComboAllowed,className:"fc-liquid fc-border-s",fgEventSegsByCol:e.fgEventSegsByCol,bgEventSegsByCol:e.bgEventSegsByCol,businessHourSegsByCol:e.businessHourSegsByCol,nowIndicatorSegsByCol:e.nowIndicatorSegsByCol,dateSelectionSegsByCol:e.dateSelectionSegsByCol,eventDragByCol:e.eventDragByCol,eventResizeByCol:e.eventResizeByCol,eventSelection:e.eventSelection,slatHeight:R})),!D&&n.createElement(n.Fragment,null,n.createElement("div",{"aria-hidden":!0,className:i.joinClassNames("fc-timegrid-slots fc-flex-col",S&&u.expandRows&&"fc-grow",C?"fc-fill-x":"fc-rel")},e.slatMetas.map((e,t)=>n.createElement("div",{key:e.key,className:i.joinClassNames(...y(e),t&&"fc-border-t",w&&"fc-liquid"),style:{height:w?"":R}},n.createElement(j,Object.assign({},e,{innerWidthRef:l.createRef(e.key),innerHeightRef:a.createRef(e.key),width:m})),n.createElement(q,Object.assign({},e,{borderStart:!0,innerHeightRef:o.createRef(e.key)}))))),x&&n.createElement("div",{class:"fc-liquid fc-border-t fc-filler"}),u.nowIndicator&&i.rangeContainsMarker(e.dateProfile.currentRange,d)&&n.createElement(L,{nowDate:d,dateProfile:e.dateProfile,totalHeight:null!=R?R*b:void 0}))))))}componentDidMount(){this.updateSlatHeight()}componentDidUpdate(){this.updateSlatHeight()}updateSlatHeight(){this.prevSlatHeight!==this.slatHeight&&i.setRef(this.props.slatHeightRef,this.prevSlatHeight=this.slatHeight)}}class K extends i.BaseComponent{constructor(){super(...arguments),this.buildSlatMetas=i.memoize(d),this.dayScrollerRef=n.createRef(),this.timeScrollerRef=n.createRef(),this.scrollState={},this.handleSlatHeight=e=>{this.slatHeight=e,i.afterSize(this.applyTimeScroll)},this.handleTimeScrollRequest=e=>{this.scrollState.time=e,this.scrollState.y=void 0,this.applyTimeScroll()},this.handleTimeScrollEnd=({y:e,isUser:t})=>{t&&(this.props.forPrint||(this.scrollState.y=e,this.scrollState.time=void 0))},this.applyTimeScroll=()=>{const e=this.timeScrollerRef.current,{slatHeight:t,scrollState:i}=this;let{y:n,time:r}=i;null==n&&r&&null!=t&&e&&(n=p(r,this.props.dateProfile)*(t*this.currentSlatCnt)+1,n&&n++,i.y=n),null!=n&&e.scrollTo({y:n})}}render(){const{props:e,context:t}=this,{dateProfile:r}=e,{options:s,dateEnv:l}=t,{dayMinWidth:a}=s,o=this.buildSlatMetas(r.slotMinTime,r.slotMaxTime,s.slotLabelInterval,s.slotDuration,l);this.currentSlatCnt=o.length;const c=Object.assign(Object.assign({dateProfile:r,nowDate:e.nowDate,todayRange:e.todayRange,cells:e.cells,slatMetas:o,forPrint:e.forPrint,isHitComboAllowed:e.isHitComboAllowed,headerTiers:e.headerTiers,fgEventSegs:e.fgEventSegs,bgEventSegs:e.bgEventSegs,businessHourSegs:e.businessHourSegs,dateSelectionSegs:e.dateSelectionSegs,eventDrag:e.eventDrag,eventResize:e.eventResize},function(e){let{dayMaxEvents:t,dayMaxEventRows:i}=e;!0!==t&&!0!==i||(t=void 0,i=5);return{dayMaxEvents:t,dayMaxEventRows:i}}(s)),{fgEventSegsByCol:e.fgEventSegsByCol,bgEventSegsByCol:e.bgEventSegsByCol,businessHourSegsByCol:e.businessHourSegsByCol,nowIndicatorSegsByCol:e.nowIndicatorSegsByCol,dateSelectionSegsByCol:e.dateSelectionSegsByCol,eventDragByCol:e.eventDragByCol,eventResizeByCol:e.eventResizeByCol,eventSelection:e.eventSelection,timeScrollerRef:this.timeScrollerRef,timeScrollState:this.scrollState,slatHeightRef:this.handleSlatHeight});return n.createElement(i.ViewContainer,{attrs:{role:"grid","aria-colcount":e.cells.length,"aria-labelledby":e.labelId,"aria-label":e.labelStr},className:i.joinClassNames(e.className,"fc-border",!e.forPrint&&"fc-flex-col"),viewSpec:t.viewSpec},a?n.createElement(U,Object.assign({},c,{dayMinWidth:a,dayScrollerRef:this.dayScrollerRef})):n.createElement(_,Object.assign({},c)))}componentDidMount(){this.resetScroll(),this.context.emitter.on("_timeScrollRequest",this.handleTimeScrollRequest),this.timeScrollerRef.current.addScrollEndListener(this.handleTimeScrollEnd)}componentDidUpdate(e){e.dateProfile!==this.props.dateProfile&&this.context.options.scrollTimeReset?this.resetScroll():e.forPrint&&!this.props.forPrint&&this.applyTimeScroll()}componentWillUnmount(){this.context.emitter.off("_timeScrollRequest",this.handleTimeScrollRequest),this.timeScrollerRef.current.removeScrollEndListener(this.handleTimeScrollEnd)}resetScroll(){this.handleTimeScrollRequest(this.context.options.scrollTime);const e=this.dayScrollerRef.current;e&&e.scrollTo({x:0})}}class V extends i.DateComponent{constructor(){super(...arguments),this.createDayHeaderFormatter=i.memoize(r.createDayHeaderFormatter),this.buildTimeColsModel=i.memoize(m),this.buildDayRanges=i.memoize(u),this.buildDateRowConfigs=i.memoize(r.buildDateRowConfigs),this.splitFgEventSegs=i.memoize(a),this.splitBgEventSegs=i.memoize(a),this.splitBusinessHourSegs=i.memoize(a),this.splitNowIndicatorSegs=i.memoize(a),this.splitDateSelectionSegs=i.memoize(a),this.splitEventDrag=i.memoize(o),this.splitEventResize=i.memoize(o),this.allDaySplitter=new s,this.dayTableSlicer=new r.DayTableSlicer,this.dayTimeColsSlicer=new l}render(){const{props:e,context:t}=this,{dateProfile:r}=e,{options:s,dateProfileGenerator:l}=t,a=this.buildTimeColsModel(r,l),o=this.buildDayRanges(a,r,t.dateEnv),c=this.allDaySplitter.splitProps(e),d=this.dayTableSlicer.sliceProps(c.allDay,r,s.nextDayThreshold,t,a),h=this.dayTimeColsSlicer.sliceProps(c.timed,r,null,t,o),f=this.createDayHeaderFormatter(t.options.dayHeaderFormat,!0,a.colCnt);return n.createElement(i.NowTimer,{unit:s.nowIndicator?"minute":"day"},(i,l)=>{const c=a.cellRows[0].length,g=s.nowIndicator&&this.dayTimeColsSlicer.sliceNowDate(i,r,s.nextDayThreshold,t,o),m=this.splitFgEventSegs(h.fgEventSegs,c),u=this.splitBgEventSegs(h.bgEventSegs,c),v=this.splitBusinessHourSegs(h.businessHourSegs,c),S=this.splitNowIndicatorSegs(g,c),p=this.splitDateSelectionSegs(h.dateSelectionSegs,c),y=this.splitEventDrag(h.eventDrag,c),b=this.splitEventResize(h.eventResize,c),R=this.buildDateRowConfigs(a.headerDates,!0,e.dateProfile,l,f,t);return n.createElement(K,{labelId:e.labelId,labelStr:e.labelStr,dateProfile:r,nowDate:i,todayRange:l,cells:a.cellRows[0],forPrint:e.forPrint,className:"fc-timegrid",headerTiers:R,fgEventSegs:d.fgEventSegs,bgEventSegs:d.bgEventSegs,businessHourSegs:d.businessHourSegs,dateSelectionSegs:d.dateSelectionSegs,eventDrag:d.eventDrag,eventResize:d.eventResize,fgEventSegsByCol:m,bgEventSegsByCol:u,businessHourSegsByCol:v,nowIndicatorSegsByCol:S,dateSelectionSegsByCol:p,eventDragByCol:y,eventResizeByCol:b,eventSelection:e.eventSelection})})}}const Z={allDaySlot:Boolean};i.injectStyles('.fc-v-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:flex;flex-direction:column}.fc-v-event.fc-event-mirror{z-index:3}.fc-v-event:not(.fc-event-start){border-top-left-radius:0;border-top-right-radius:0;border-top-width:0}.fc-v-event:not(.fc-event-end){border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-width:0}.fc-v-event.fc-event-selected:before{left:-10px;right:-10px}.fc-v-event .fc-event-inner{color:var(--fc-event-text-color);display:flex;flex-direction:column;flex-grow:1;min-height:0}.fc-v-event .fc-event-time{flex-shrink:0;white-space:nowrap}.fc-v-event .fc-event-time,.fc-v-event .fc-event-title{overflow:hidden}.fc-v-event .fc-event-title-outer{display:flex;flex-direction:column;flex-grow:1;min-height:0}.fc-v-event .fc-event-title{bottom:0;position:sticky;top:0}.fc-v-event .fc-event-resizer-start{cursor:n-resize}.fc-v-event .fc-event-resizer-end{cursor:s-resize}.fc-v-event:not(.fc-event-selected) .fc-event-resizer{height:var(--fc-event-resizer-thickness);left:0;right:0}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start{top:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-thickness)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer{left:50%;margin-left:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-start{top:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-v-event.fc-event-selected .fc-event-resizer-end{bottom:calc(var(--fc-event-resizer-dot-total-width)/-2)}.fc-timegrid-slots{z-index:1}.fc-timegrid-slot-minor{border-style:dotted}.fc-timegrid-axis{align-items:flex-end}.fc-timegrid-axis,.fc-timegrid-axis-inner{display:flex;flex-direction:column;justify-content:center}.fc-timegrid-axis-inner{min-height:1.5em}.fc-timegrid-day.fc-day-today{background-color:var(--fc-today-bg-color)}.fc-timegrid-day-events{z-index:2}.fc-direction-ltr .fc-timegrid-day-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-day-events{margin:0 2px 0 2.5%}.fc-timegrid-day-events.fc-timegrid-day-events-simple{margin:4px}.fc-timegrid-event{border-radius:3px;font-size:var(--fc-small-font-size)}.fc-timegrid-event-inset,.fc-timegrid-event.fc-event-mirror{box-shadow:0 0 0 1px var(--fc-page-bg-color)}.fc-timegrid-event.fc-event-end{margin-bottom:1px}.fc-timegrid-event .fc-event-inner{padding:1px 1px 0}.fc-timegrid-event-short .fc-event-inner{flex-direction:row;overflow:hidden}.fc-timegrid-event .fc-event-time{font-size:var(--fc-small-font-size);margin-bottom:1px;white-space:nowrap}.fc-timegrid-event-short .fc-event-time:after{content:"\\00a0-\\00a0"}.fc-timegrid-event-short .fc-event-title-outer{flex-basis:0;flex-grow:1;min-height:0;min-width:0}.fc-timegrid-event-short .fc-event-title,.fc-timegrid-more-link{font-size:var(--fc-small-font-size)}.fc-timegrid-more-link{background:var(--fc-more-link-bg-color);border-radius:3px;box-shadow:0 0 0 1px var(--fc-page-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;margin-bottom:1px;z-index:9999}.fc-direction-ltr .fc-timegrid-more-link{right:0}.fc-direction-rtl .fc-timegrid-more-link{left:0}.fc-timegrid-more-link-inner{padding:3px 2px}.fc-timegrid-now-indicator-container{bottom:0;left:0;overflow:hidden;pointer-events:none;position:absolute;right:0;top:0;z-index:4}.fc-timegrid-now-indicator-arrow{border-color:var(--fc-now-indicator-color);border-bottom:5px solid transparent;border-left-style:solid;border-left-width:6px;border-right-style:solid;border-right-width:6px;border-top:5px solid transparent;height:0;margin-top:-5px;position:absolute;width:0}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{border-right:0;left:0}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{border-left:0;right:0}.fc-timegrid-now-indicator-line{border-top:1px solid var(--fc-now-indicator-color);left:0;position:absolute;right:0}');var J=t.createPlugin({name:"@fullcalendar/timegrid",initialView:"timeGridWeek",optionRefiners:Z,views:{timeGrid:{component:V,usesMinMaxTime:!0,allDaySlot:!0,slotDuration:"00:30:00",slotEventOverlap:!0},timeGridDay:{type:"timeGrid",duration:{days:1}},timeGridWeek:{type:"timeGrid",duration:{weeks:1}}}}),Q={__proto__:null,organizeSegsByCol:a,splitInteractionByCol:o,DayTimeColsSlicer:l,buildSlatMetas:d,AllDaySplitter:s,TimeGridView:V,TimeGridLayout:K,TimeGridWeekNumber:A,buildTimeColsModel:m,buildDayRanges:u};return t.globalPlugins.push(J),e.Internal=Q,e.default=J,Object.defineProperty(e,"__esModule",{value:!0}),e}({},FullCalendar,FullCalendar.Internal,FullCalendar.Preact,FullCalendar.DayGrid.Internal); |
@@ -57,2 +57,4 @@ import { DateMarker, EventSegUiInteractionState, Slicer, DateRange, DateEnv, Splitter, DateSpan, EventDef, DateComponent, ViewProps, DateProfile, DayTableCell, Hit, SlicedCoordRange, EventRangeProps, BaseComponent, DateProfileGenerator, DayTableModel } from '@fullcalendar/core/internal'; | ||
interface TimeGridLayoutProps { | ||
labelId: string | undefined; | ||
labelStr: string | undefined; | ||
dateProfile: DateProfile; | ||
@@ -59,0 +61,0 @@ nowDate: DateMarker; |
{ | ||
"name": "@fullcalendar/timegrid", | ||
"version": "7.0.0-beta.3", | ||
"version": "7.0.0-beta.4", | ||
"title": "FullCalendar Time Grid Plugin", | ||
@@ -16,6 +16,6 @@ "description": "Display events on time slots", | ||
"dependencies": { | ||
"@fullcalendar/daygrid": "7.0.0-beta.3" | ||
"@fullcalendar/daygrid": "7.0.0-beta.4" | ||
}, | ||
"peerDependencies": { | ||
"@fullcalendar/core": "7.0.0-beta.3" | ||
"@fullcalendar/core": "7.0.0-beta.4" | ||
}, | ||
@@ -22,0 +22,0 @@ "type": "module", |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
309610
4551
+ Added@fullcalendar/core@7.0.0-beta.4(transitive)
+ Added@fullcalendar/daygrid@7.0.0-beta.4(transitive)
- Removed@fullcalendar/core@7.0.0-beta.3(transitive)
- Removed@fullcalendar/daygrid@7.0.0-beta.3(transitive)