@fullcalendar/timegrid
Advanced tools
Comparing version 6.0.0-beta.4 to 6.0.0
/*! | ||
FullCalendar Time Grid Plugin v6.0.0-beta.4 | ||
Docs & License: https://fullcalendar.io/ | ||
FullCalendar Time Grid Plugin v6.0.0 | ||
Docs & License: https://fullcalendar.io/docs/timegrid-view | ||
(c) 2022 Adam Shaw | ||
*/ | ||
FullCalendar.TimeGrid=function(e,t,n,i,r){"use strict";class o extends t.Splitter{getKeyInfo(){return{allDay:{},timed:{}}}getKeysForDateSpan(e){return e.allDay?["allDay"]:["timed"]}getKeysForEventDef(e){return e.allDay?t.hasBgRendering(e)?["timed","allDay"]:["allDay"]:["timed"]}}const s=t.createFormatter({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"short"});function l(e){let n=["fc-timegrid-slot","fc-timegrid-slot-label",e.isLabeled?"fc-scrollgrid-shrink":"fc-timegrid-slot-minor"];return i.createElement(t.ViewContextType.Consumer,null,r=>{if(!e.isLabeled)return i.createElement("td",{className:n.join(" "),"data-time":e.isoTimeStr});let{dateEnv:o,options:l,viewApi:c}=r,d=null==l.slotLabelFormat?s:Array.isArray(l.slotLabelFormat)?t.createFormatter(l.slotLabelFormat[0]):t.createFormatter(l.slotLabelFormat),f={level:0,time:e.time,date:o.toDate(e.date),view:c,text:o.format(e.date,d)};return i.createElement(t.ContentContainer,{elTag:"td",elClasses:n,elAttrs:{"data-time":e.isoTimeStr},renderProps:f,generatorName:"slotLabelContent",generator:l.slotLabelContent||a,classNameGenerator:l.slotLabelClassNames,didMount:l.slotLabelDidMount,willUnmount:l.slotLabelWillUnmount},e=>i.createElement("div",{className:"fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame"},i.createElement(e,{elTag:"div",elClasses:["fc-timegrid-slot-label-cushion","fc-scrollgrid-shrink-cushion"]})))})}function a(e){return e.text}class c extends t.BaseComponent{render(){return this.props.slatMetas.map(e=>i.createElement("tr",{key:e.key},i.createElement(l,Object.assign({},e))))}}const d=t.createFormatter({week:"short"});class f extends t.DateComponent{constructor(){super(...arguments),this.allDaySplitter=new o,this.headerElRef=i.createRef(),this.rootElRef=i.createRef(),this.scrollerElRef=i.createRef(),this.state={slatCoords:null},this.handleScrollTopRequest=e=>{let t=this.scrollerElRef.current;t&&(t.scrollTop=e)},this.renderHeadAxis=(e,n="")=>{let{options:r}=this.context,{dateProfile:o}=this.props,s=o.renderRange,l=1===t.diffDays(s.start,s.end)?t.buildNavLinkAttrs(this.context,s.start,"week"):{};return r.weekNumbers&&"day"===e?i.createElement(t.WeekNumberContainer,{elTag:"th",elClasses:["fc-timegrid-axis","fc-scrollgrid-shrink"],elAttrs:{"aria-hidden":!0},date:s.start,defaultFormat:d},e=>i.createElement("div",{className:["fc-timegrid-axis-frame","fc-scrollgrid-shrink-frame","fc-timegrid-axis-frame-liquid"].join(" "),style:{height:n}},i.createElement(e,{elTag:"a",elClasses:["fc-timegrid-axis-cushion","fc-scrollgrid-shrink-cushion","fc-scrollgrid-sync-inner"],elAttrs:l}))):i.createElement("th",{"aria-hidden":!0,className:"fc-timegrid-axis"},i.createElement("div",{className:"fc-timegrid-axis-frame",style:{height:n}}))},this.renderTableRowAxis=e=>{let{options:n,viewApi:r}=this.context,o={text:n.allDayText,view:r};return i.createElement(t.ContentContainer,{elTag:"td",elClasses:["fc-timegrid-axis","fc-scrollgrid-shrink"],elAttrs:{"aria-hidden":!0},renderProps:o,generatorName:"allDayContent",generator:n.allDayContent||m,classNameGenerator:n.allDayClassNames,didMount:n.allDayDidMount,willUnmount:n.allDayWillUnmount},t=>i.createElement("div",{className:["fc-timegrid-axis-frame","fc-scrollgrid-shrink-frame",null==e?" fc-timegrid-axis-frame-liquid":""].join(" "),style:{height:e}},i.createElement(t,{elTag:"span",elClasses:["fc-timegrid-axis-cushion","fc-scrollgrid-shrink-cushion","fc-scrollgrid-sync-inner"]})))},this.handleSlatCoords=e=>{this.setState({slatCoords:e})}}renderSimpleLayout(e,n,r){let{context:o,props:s}=this,l=[],a=t.getStickyHeaderDates(o.options);return e&&l.push({type:"header",key:"header",isSticky:a,chunk:{elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}}),n&&(l.push({type:"body",key:"all-day",chunk:{content:n}}),l.push({type:"body",key:"all-day-divider",outerContent:i.createElement("tr",{role:"presentation",className:"fc-scrollgrid-section"},i.createElement("td",{className:"fc-timegrid-divider "+o.theme.getClass("tableCellShaded")}))})),l.push({type:"body",key:"body",liquid:!0,expandRows:Boolean(o.options.expandRows),chunk:{scrollerElRef:this.scrollerElRef,content:r}}),i.createElement(t.ViewContainer,{elRef:this.rootElRef,elClasses:["fc-timegrid"],viewSpec:o.viewSpec},i.createElement(t.SimpleScrollGrid,{liquid:!s.isHeightAuto&&!s.forPrint,collapsibleWidth:s.forPrint,cols:[{width:"shrink"}],sections:l}))}renderHScrollLayout(e,n,r,o,s,l,a){let d=this.context.pluginHooks.scrollGridImpl;if(!d)throw new Error("No ScrollGrid implementation");let{context:f,props:m}=this,h=!m.forPrint&&t.getStickyHeaderDates(f.options),g=!m.forPrint&&t.getStickyFooterScrollbar(f.options),p=[];e&&p.push({type:"header",key:"header",isSticky:h,syncRowHeights:!0,chunks:[{key:"axis",rowContent:e=>i.createElement("tr",{role:"presentation"},this.renderHeadAxis("day",e.rowSyncHeights[0]))},{key:"cols",elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}]}),n&&(p.push({type:"body",key:"all-day",syncRowHeights:!0,chunks:[{key:"axis",rowContent:e=>i.createElement("tr",{role:"presentation"},this.renderTableRowAxis(e.rowSyncHeights[0]))},{key:"cols",content:n}]}),p.push({key:"all-day-divider",type:"body",outerContent:i.createElement("tr",{role:"presentation",className:"fc-scrollgrid-section"},i.createElement("td",{colSpan:2,className:"fc-timegrid-divider "+f.theme.getClass("tableCellShaded")}))}));let u=f.options.nowIndicator;return p.push({type:"body",key:"body",liquid:!0,expandRows:Boolean(f.options.expandRows),chunks:[{key:"axis",content:e=>i.createElement("div",{className:"fc-timegrid-axis-chunk"},i.createElement("table",{"aria-hidden":!0,style:{height:e.expandRows?e.clientHeight:""}},e.tableColGroupNode,i.createElement("tbody",null,i.createElement(c,{slatMetas:l}))),i.createElement("div",{className:"fc-timegrid-now-indicator-container"},i.createElement(t.NowTimer,{unit:u?"minute":"day"},e=>{let n=u&&a&&a.safeComputeTop(e);return"number"==typeof n?i.createElement(t.NowIndicatorContainer,{elClasses:["fc-timegrid-now-indicator-arrow"],elStyle:{top:n},isAxis:!0,date:e}):null})))},{key:"cols",scrollerElRef:this.scrollerElRef,content:r}]}),g&&p.push({key:"footer",type:"footer",isSticky:!0,chunks:[{key:"axis",content:t.renderScrollShim},{key:"cols",content:t.renderScrollShim}]}),i.createElement(t.ViewContainer,{elRef:this.rootElRef,elClasses:["fc-timegrid"],viewSpec:f.viewSpec},i.createElement(d,{liquid:!m.isHeightAuto&&!m.forPrint,collapsibleWidth:!1,colGroups:[{width:"shrink",cols:[{width:"shrink"}]},{cols:[{span:o,minWidth:s}]}],sections:p}))}getAllDayMaxEventProps(){let{dayMaxEvents:e,dayMaxEventRows:t}=this.context.options;return!0!==e&&!0!==t||(e=void 0,t=5),{dayMaxEvents:e,dayMaxEventRows:t}}}function m(e){return e.text}class h{constructor(e,t,n){this.positions=e,this.dateProfile=t,this.slotDuration=n}safeComputeTop(e){let{dateProfile:n}=this;if(t.rangeContainsMarker(n.currentRange,e)){let i=t.startOfDay(e),r=e.valueOf()-i.valueOf();if(r>=t.asRoughMs(n.slotMinTime)&&r<t.asRoughMs(n.slotMaxTime))return this.computeTimeTop(t.createDuration(r))}return null}computeDateTop(e,n){return n||(n=t.startOfDay(e)),this.computeTimeTop(t.createDuration(e.valueOf()-n.valueOf()))}computeTimeTop(e){let n,i,{positions:r,dateProfile:o}=this,s=r.els.length,l=(e.milliseconds-t.asRoughMs(o.slotMinTime))/t.asRoughMs(this.slotDuration);return l=Math.max(0,l),l=Math.min(s,l),n=Math.floor(l),n=Math.min(n,s-1),i=l-n,r.tops[n]+r.getHeight(n)*i}}class g extends t.BaseComponent{render(){let{props:e,context:n}=this,{options:r}=n,{slatElRefs:o}=e;return i.createElement("tbody",null,e.slatMetas.map((s,a)=>{let c={time:s.time,date:n.dateEnv.toDate(s.date),view:n.viewApi};return i.createElement("tr",{key:s.key,ref:o.createRef(s.key)},e.axis&&i.createElement(l,Object.assign({},s)),i.createElement(t.ContentContainer,{elTag:"td",elClasses:["fc-timegrid-slot","fc-timegrid-slot-lane",!s.isLabeled&&"fc-timegrid-slot-minor"],elAttrs:{"data-time":s.isoTimeStr},renderProps:c,generatorName:"slotLaneContent",generator:r.slotLaneContent,classNameGenerator:r.slotLaneClassNames,didMount:r.slotLaneDidMount,willUnmount:r.slotLaneWillUnmount}))}))}}class p extends t.BaseComponent{constructor(){super(...arguments),this.rootElRef=i.createRef(),this.slatElRefs=new t.RefMap}render(){let{props:e,context:t}=this;return i.createElement("div",{ref:this.rootElRef,className:"fc-timegrid-slots"},i.createElement("table",{"aria-hidden":!0,className:t.theme.getClass("table"),style:{minWidth:e.tableMinWidth,width:e.clientWidth,height:e.minHeight}},e.tableColGroupNode,i.createElement(g,{slatElRefs:this.slatElRefs,axis:e.axis,slatMetas:e.slatMetas})))}componentDidMount(){this.updateSizing()}componentDidUpdate(){this.updateSizing()}componentWillUnmount(){this.props.onCoords&&this.props.onCoords(null)}updateSizing(){let{context:e,props:n}=this;if(n.onCoords&&null!==n.clientWidth){this.rootElRef.current.offsetHeight&&n.onCoords(new h(new t.PositionCache(this.rootElRef.current,(i=this.slatElRefs.currentMap,n.slatMetas.map(e=>i[e.key])),!1,!0),this.props.dateProfile,e.options.slotDuration))}var i}}function u(e,t){let n,i=[];for(n=0;n<t;n+=1)i.push([]);if(e)for(n=0;n<e.length;n+=1)i[e[n].col].push(e[n]);return i}function v(e,t){let n=[];if(e){for(let i=0;i<t;i+=1)n[i]={affectedInstances:e.affectedInstances,isEvent:e.isEvent,segs:[]};for(let t of e.segs)n[t.col].segs.push(t)}else for(let e=0;e<t;e+=1)n[e]=null;return n}class b extends t.BaseComponent{render(){let{props:e}=this;return i.createElement(t.MoreLinkContainer,{elClasses:["fc-timegrid-more-link"],elStyle:{top:e.top,bottom:e.bottom},allDayDate:null,moreCnt:e.hiddenSegs.length,allSegs:e.hiddenSegs,hiddenSegs:e.hiddenSegs,extraDateSpan:e.extraDateSpan,dateProfile:e.dateProfile,todayRange:e.todayRange,popoverContent:()=>T(e.hiddenSegs,e),defaultGenerator:y},e=>i.createElement(e,{elTag:"div",elClasses:["fc-timegrid-more-link-inner","fc-sticky"]}))}}function y(e){return e.shortText}function x(e,n,i){let r=new t.SegHierarchy;null!=n&&(r.strictOrder=n),null!=i&&(r.maxStackCnt=i);let o=r.addSegs(e),s=t.groupIntersectingEntries(o),l=function(e){const{entriesByLevel:n}=e,i=E((e,t)=>e+":"+t,(r,o)=>{let s=S(function(e,n,i){let{levelCoords:r,entriesByLevel:o}=e,s=o[n][i],l=r[n]+s.thickness,a=r.length,c=n;for(;c<a&&r[c]<l;c+=1);for(;c<a;c+=1){let e,n=o[c],i=t.binarySearch(n,s.span.start,t.getEntrySpanEnd),r=i[0]+i[1],l=r;for(;(e=n[l])&&e.span.start<s.span.end;)l+=1;if(r<l)return{level:c,lateralStart:r,lateralEnd:l}}return null}(e,r,o),i),l=n[r][o];return[Object.assign(Object.assign({},l),{nextLevelNodes:s[0]}),l.thickness+s[1]]});return S(n.length?{level:0,lateralStart:0,lateralEnd:n[0].length}:null,i)[0]}(r);return l=function(e,n){const i=E((e,n,i)=>t.buildEntryKey(e),(e,t,r)=>{let o,{nextLevelNodes:s,thickness:l}=e,a=l+r,c=l/a,d=[];if(s.length)for(let e of s)if(void 0===o){let n=i(e,t,a);o=n[0],d.push(n[1])}else{let t=i(e,o,0);d.push(t[1])}else o=n;let f=(o-t)*c;return[o-f,Object.assign(Object.assign({},e),{thickness:f,nextLevelNodes:d})]});return e.map(e=>i(e,0,0)[1])}(l,1),{segRects:function(e){let n=[];const i=E((e,n,i)=>t.buildEntryKey(e),(e,t,i)=>{let o=Object.assign(Object.assign({},e),{levelCoord:t,stackDepth:i,stackForward:0});return n.push(o),o.stackForward=r(e.nextLevelNodes,t+e.thickness,i+1)+1});function r(e,t,n){let r=0;for(let o of e)r=Math.max(i(o,t,n),r);return r}return r(e,0,0),n}(l),hiddenGroups:s}}function S(e,t){if(!e)return[[],0];let{level:n,lateralStart:i,lateralEnd:r}=e,o=i,s=[];for(;o<r;)s.push(t(n,o)),o+=1;return s.sort(w),[s.map(C),s[0][1]]}function w(e,t){return t[1]-e[1]}function C(e){return e[0]}function E(e,t){const n={};return(...i)=>{let r=e(...i);return r in n?n[r]:n[r]=t(...i)}}function D(e,t,n=null,i=0){let r=[];if(n)for(let o=0;o<e.length;o+=1){let s=e[o],l=n.computeDateTop(s.start,t),a=Math.max(l+(i||0),n.computeDateTop(s.end,t));r.push({start:Math.round(l),end:Math.round(a)})}return r}const R=t.createFormatter({hour:"numeric",minute:"2-digit",meridiem:!1});class k extends t.BaseComponent{render(){return i.createElement(t.StandardEvent,Object.assign({},this.props,{elClasses:["fc-timegrid-event","fc-v-event",this.props.isShort&&"fc-timegrid-event-short"],defaultTimeFormat:R}))}}class M extends t.BaseComponent{constructor(){super(...arguments),this.sortEventSegs=t.memoize(t.sortEventSegs)}render(){let{props:e,context:n}=this,{options:r}=n,o=r.selectMirror,s=e.eventDrag&&e.eventDrag.segs||e.eventResize&&e.eventResize.segs||o&&e.dateSelectionSegs||[],l=e.eventDrag&&e.eventDrag.affectedInstances||e.eventResize&&e.eventResize.affectedInstances||{},a=this.sortEventSegs(e.fgEventSegs,r.eventOrder);return i.createElement(t.DayCellContainer,{elTag:"td",elRef:e.elRef,elClasses:["fc-timegrid-col",...e.extraClassNames||[]],elAttrs:Object.assign({role:"gridcell"},e.extraDataAttrs),date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,extraRenderProps:e.extraRenderProps},n=>i.createElement("div",{className:"fc-timegrid-col-frame"},i.createElement("div",{className:"fc-timegrid-col-bg"},this.renderFillSegs(e.businessHourSegs,"non-business"),this.renderFillSegs(e.bgEventSegs,"bg-event"),this.renderFillSegs(e.dateSelectionSegs,"highlight")),i.createElement("div",{className:"fc-timegrid-col-events"},this.renderFgSegs(a,l,!1,!1,!1)),i.createElement("div",{className:"fc-timegrid-col-events"},this.renderFgSegs(s,{},Boolean(e.eventDrag),Boolean(e.eventResize),Boolean(o))),i.createElement("div",{className:"fc-timegrid-now-indicator-container"},this.renderNowIndicator(e.nowIndicatorSegs)),t.hasCustomDayCellContent(r)&&i.createElement(n,{elTag:"div",elClasses:["fc-timegrid-col-misc"]})))}renderFgSegs(e,t,n,i,r){let{props:o}=this;return o.forPrint?T(e,o):this.renderPositionedFgSegs(e,t,n,i,r)}renderPositionedFgSegs(e,n,r,o,s){let{eventMaxStack:l,eventShortHeight:a,eventOrderStrict:c,eventMinHeight:d}=this.context.options,{date:f,slatCoords:m,eventSelection:h,todayRange:g,nowDate:p}=this.props,u=r||o||s,v=D(e,f,m,d),{segPlacements:b,hiddenGroups:y}=function(e,t,n,i){let r=[],o=[];for(let n=0;n<e.length;n+=1){let i=t[n];i?r.push({index:n,thickness:1,span:i}):o.push(e[n])}let{segRects:s,hiddenGroups:l}=x(r,n,i),a=[];for(let t of s)a.push({seg:e[t.index],rect:t});for(let e of o)a.push({seg:e,rect:null});return{segPlacements:a,hiddenGroups:l}}(e,v,c,l);return i.createElement(i.Fragment,null,this.renderHiddenGroups(y,e),b.map(e=>{let{seg:l,rect:c}=e,d=l.eventRange.instance.instanceId,f=u||Boolean(!n[d]&&c),m=N(c&&c.span),v=!u&&c?this.computeSegHStyle(c):{left:0,right:0},b=Boolean(c)&&c.stackForward>0,y=Boolean(c)&&c.span.end-c.span.start<a;return i.createElement("div",{className:"fc-timegrid-event-harness"+(b?" fc-timegrid-event-harness-inset":""),key:d,style:Object.assign(Object.assign({visibility:f?"":"hidden"},m),v)},i.createElement(k,Object.assign({seg:l,isDragging:r,isResizing:o,isDateSelecting:s,isSelected:d===h,isShort:y},t.getSegMeta(l,g,p))))}))}renderHiddenGroups(e,n){let{extraDateSpan:r,dateProfile:o,todayRange:s,nowDate:l,eventSelection:a,eventDrag:c,eventResize:d}=this.props;return i.createElement(i.Fragment,null,e.map(e=>{let f=N(e.span),m=(h=e.entries,g=n,h.map(e=>g[e.index]));var h,g;return i.createElement(b,{key:t.buildIsoString(t.computeEarliestSegStart(m)),hiddenSegs:m,top:f.top,bottom:f.bottom,extraDateSpan:r,dateProfile:o,todayRange:s,nowDate:l,eventSelection:a,eventDrag:c,eventResize:d})}))}renderFillSegs(e,n){let{props:r,context:o}=this,s=D(e,r.date,r.slatCoords,o.options.eventMinHeight).map((o,s)=>{let l=e[s];return i.createElement("div",{key:t.buildEventRangeKey(l.eventRange),className:"fc-timegrid-bg-harness",style:N(o)},"bg-event"===n?i.createElement(t.BgEvent,Object.assign({seg:l},t.getSegMeta(l,r.todayRange,r.nowDate))):t.renderFill(n))});return i.createElement(i.Fragment,null,s)}renderNowIndicator(e){let{slatCoords:n,date:r}=this.props;return n?e.map((e,o)=>i.createElement(t.NowIndicatorContainer,{key:o,elClasses:["fc-timegrid-now-indicator-line"],elStyle:{top:n.computeDateTop(e.start,r)},isAxis:!1,date:r})):null}computeSegHStyle(e){let t,n,{isRtl:i,options:r}=this.context,o=r.slotEventOverlap,s=e.levelCoord,l=e.levelCoord+e.thickness;o&&(l=Math.min(1,s+2*(l-s))),i?(t=1-l,n=s):(t=s,n=1-l);let a={zIndex:e.stackDepth+1,left:100*t+"%",right:100*n+"%"};return o&&!e.stackForward&&(a[i?"marginLeft":"marginRight"]=20),a}}function T(e,{todayRange:n,nowDate:r,eventSelection:o,eventDrag:s,eventResize:l}){let a=(s?s.affectedInstances:null)||(l?l.affectedInstances:null)||{};return i.createElement(i.Fragment,null,e.map(e=>{let s=e.eventRange.instance.instanceId;return i.createElement("div",{key:s,style:{visibility:a[s]?"hidden":""}},i.createElement(k,Object.assign({seg:e,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:s===o,isShort:!1},t.getSegMeta(e,n,r))))}))}function N(e){return e?{top:e.start,bottom:-e.end}:{top:"",bottom:""}}class z extends t.BaseComponent{constructor(){super(...arguments),this.splitFgEventSegs=t.memoize(u),this.splitBgEventSegs=t.memoize(u),this.splitBusinessHourSegs=t.memoize(u),this.splitNowIndicatorSegs=t.memoize(u),this.splitDateSelectionSegs=t.memoize(u),this.splitEventDrag=t.memoize(v),this.splitEventResize=t.memoize(v),this.rootElRef=i.createRef(),this.cellElRefs=new t.RefMap}render(){let{props:e,context:n}=this,r=n.options.nowIndicator&&e.slatCoords&&e.slatCoords.safeComputeTop(e.nowDate),o=e.cells.length,s=this.splitFgEventSegs(e.fgEventSegs,o),l=this.splitBgEventSegs(e.bgEventSegs,o),a=this.splitBusinessHourSegs(e.businessHourSegs,o),c=this.splitNowIndicatorSegs(e.nowIndicatorSegs,o),d=this.splitDateSelectionSegs(e.dateSelectionSegs,o),f=this.splitEventDrag(e.eventDrag,o),m=this.splitEventResize(e.eventResize,o);return i.createElement("div",{className:"fc-timegrid-cols",ref:this.rootElRef},i.createElement("table",{role:"presentation",style:{minWidth:e.tableMinWidth,width:e.clientWidth}},e.tableColGroupNode,i.createElement("tbody",{role:"presentation"},i.createElement("tr",{role:"row"},e.axis&&i.createElement("td",{"aria-hidden":!0,className:"fc-timegrid-col fc-timegrid-axis"},i.createElement("div",{className:"fc-timegrid-col-frame"},i.createElement("div",{className:"fc-timegrid-now-indicator-container"},"number"==typeof r&&i.createElement(t.NowIndicatorContainer,{elClasses:["fc-timegrid-now-indicator-arrow"],elStyle:{top:r},isAxis:!0,date:e.nowDate})))),e.cells.map((t,n)=>i.createElement(M,{key:t.key,elRef:this.cellElRefs.createRef(t.key),dateProfile:e.dateProfile,date:t.date,nowDate:e.nowDate,todayRange:e.todayRange,extraRenderProps:t.extraRenderProps,extraDataAttrs:t.extraDataAttrs,extraClassNames:t.extraClassNames,extraDateSpan:t.extraDateSpan,fgEventSegs:s[n],bgEventSegs:l[n],businessHourSegs:a[n],nowIndicatorSegs:c[n],dateSelectionSegs:d[n],eventDrag:f[n],eventResize:m[n],slatCoords:e.slatCoords,eventSelection:e.eventSelection,forPrint:e.forPrint}))))))}componentDidMount(){this.updateCoords()}componentDidUpdate(){this.updateCoords()}updateCoords(){let{props:e}=this;var n;e.onColCoords&&null!==e.clientWidth&&e.onColCoords(new t.PositionCache(this.rootElRef.current,(n=this.cellElRefs.currentMap,e.cells.map(e=>n[e.key])),!0,!1))}}class P extends t.DateComponent{constructor(){super(...arguments),this.processSlotOptions=t.memoize(H),this.state={slatCoords:null},this.handleRootEl=e=>{e?this.context.registerInteractiveComponent(this,{el:e,isHitComboAllowed:this.props.isHitComboAllowed}):this.context.unregisterInteractiveComponent(this)},this.handleScrollRequest=e=>{let{onScrollTopRequest:t}=this.props,{slatCoords:n}=this.state;if(t&&n){if(e.time){let i=n.computeTimeTop(e.time);i=Math.ceil(i),i&&(i+=1),t(i)}return!0}return!1},this.handleColCoords=e=>{this.colCoords=e},this.handleSlatCoords=e=>{this.setState({slatCoords:e}),this.props.onSlatCoords&&this.props.onSlatCoords(e)}}render(){let{props:e,state:t}=this;return i.createElement("div",{className:"fc-timegrid-body",ref:this.handleRootEl,style:{width:e.clientWidth,minWidth:e.tableMinWidth}},i.createElement(p,{axis:e.axis,dateProfile:e.dateProfile,slatMetas:e.slatMetas,clientWidth:e.clientWidth,minHeight:e.expandRows?e.clientHeight:"",tableMinWidth:e.tableMinWidth,tableColGroupNode:e.axis?e.tableColGroupNode:null,onCoords:this.handleSlatCoords}),i.createElement(z,{cells:e.cells,axis:e.axis,dateProfile:e.dateProfile,businessHourSegs:e.businessHourSegs,bgEventSegs:e.bgEventSegs,fgEventSegs:e.fgEventSegs,dateSelectionSegs:e.dateSelectionSegs,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,todayRange:e.todayRange,nowDate:e.nowDate,nowIndicatorSegs:e.nowIndicatorSegs,clientWidth:e.clientWidth,tableMinWidth:e.tableMinWidth,tableColGroupNode:e.tableColGroupNode,slatCoords:t.slatCoords,onColCoords:this.handleColCoords,forPrint:e.forPrint}))}componentDidMount(){this.scrollResponder=this.context.createScrollResponder(this.handleScrollRequest)}componentDidUpdate(e){this.scrollResponder.update(e.dateProfile!==this.props.dateProfile)}componentWillUnmount(){this.scrollResponder.detach()}queryHit(e,n){let{dateEnv:i,options:r}=this.context,{colCoords:o}=this,{dateProfile:s}=this.props,{slatCoords:l}=this.state,{snapDuration:a,snapsPerSlot:c}=this.processSlotOptions(this.props.slotDuration,r.snapDuration),d=o.leftToIndex(e),f=l.positions.topToIndex(n);if(null!=d&&null!=f){let e=this.props.cells[d],r=l.positions.tops[f],m=l.positions.getHeight(f),h=(n-r)/m,g=f*c+Math.floor(h*c),p=this.props.cells[d].date,u=t.addDurations(s.slotMinTime,t.multiplyDuration(a,g)),v=i.add(p,u),b=i.add(v,a);return{dateProfile:s,dateSpan:Object.assign({range:{start:v,end:b},allDay:!1},e.extraDateSpan),dayEl:o.els[d],rect:{left:o.lefts[d],right:o.rights[d],top:r,bottom:r+m},layer:0}}return null}}function H(e,n){let i=n||e,r=t.wholeDivideDurations(e,i);return null===r&&(i=e,r=1),{snapDuration:i,snapsPerSlot:r}}class O extends t.Slicer{sliceRange(e,n){let i=[];for(let r=0;r<n.length;r+=1){let o=t.intersectRanges(e,n[r]);o&&i.push({start:o.start,end:o.end,isStart:o.start.valueOf()===e.start.valueOf(),isEnd:o.end.valueOf()===e.end.valueOf(),col:r})}return i}}class W extends t.DateComponent{constructor(){super(...arguments),this.buildDayRanges=t.memoize(I),this.slicer=new O,this.timeColsRef=i.createRef()}render(){let{props:e,context:n}=this,{dateProfile:r,dayTableModel:o}=e,s=n.options.nowIndicator,l=this.buildDayRanges(o,r,n.dateEnv);return i.createElement(t.NowTimer,{unit:s?"minute":"day"},(t,a)=>i.createElement(P,Object.assign({ref:this.timeColsRef},this.slicer.sliceProps(e,r,null,n,l),{forPrint:e.forPrint,axis:e.axis,dateProfile:r,slatMetas:e.slatMetas,slotDuration:e.slotDuration,cells:o.cells[0],tableColGroupNode:e.tableColGroupNode,tableMinWidth:e.tableMinWidth,clientWidth:e.clientWidth,clientHeight:e.clientHeight,expandRows:e.expandRows,nowDate:t,nowIndicatorSegs:s&&this.slicer.sliceNowDate(t,n,l),todayRange:a,onScrollTopRequest:e.onScrollTopRequest,onSlatCoords:e.onSlatCoords})))}}function I(e,t,n){let i=[];for(let r of e.headerDates)i.push({start:n.add(r,t.slotMinTime),end:n.add(r,t.slotMaxTime)});return i}const F=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];function G(e,n,i,r,o){let s=new Date(0),l=e,a=t.createDuration(0),c=i||function(e){let n,i,r;for(n=F.length-1;n>=0;n-=1)if(i=t.createDuration(F[n]),r=t.wholeDivideDurations(i,e),null!==r&&r>1)return i;return e}(r),d=[];for(;t.asRoughMs(l)<t.asRoughMs(n);){let e=o.add(s,l),n=null!==t.wholeDivideDurations(a,c);d.push({date:e,time:l,key:e.toISOString(),isoTimeStr:t.formatIsoTimeString(e),isLabeled:n}),l=t.addDurations(l,r),a=t.addDurations(a,r)}return d}class A extends f{constructor(){super(...arguments),this.buildTimeColsModel=t.memoize(L),this.buildSlatMetas=t.memoize(G)}render(){let{options:e,dateEnv:n,dateProfileGenerator:o}=this.context,{props:s}=this,{dateProfile:l}=s,a=this.buildTimeColsModel(l,o),c=this.allDaySplitter.splitProps(s),d=this.buildSlatMetas(l.slotMinTime,l.slotMaxTime,e.slotLabelInterval,e.slotDuration,n),{dayMinWidth:f}=e,m=!f,h=f,g=e.dayHeaders&&i.createElement(t.DayHeader,{dates:a.headerDates,dateProfile:l,datesRepDistinctDays:!0,renderIntro:m?this.renderHeadAxis:null}),p=!1!==e.allDaySlot&&(t=>i.createElement(r.DayTable,Object.assign({},c.allDay,{dateProfile:l,dayTableModel:a,nextDayThreshold:e.nextDayThreshold,tableMinWidth:t.tableMinWidth,colGroupNode:t.tableColGroupNode,renderRowIntro:m?this.renderTableRowAxis:null,showWeekNumbers:!1,expandRows:!1,headerAlignElRef:this.headerElRef,clientWidth:t.clientWidth,clientHeight:t.clientHeight,forPrint:s.forPrint},this.getAllDayMaxEventProps()))),u=t=>i.createElement(W,Object.assign({},c.timed,{dayTableModel:a,dateProfile:l,axis:m,slotDuration:e.slotDuration,slatMetas:d,forPrint:s.forPrint,tableColGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,clientWidth:t.clientWidth,clientHeight:t.clientHeight,onSlatCoords:this.handleSlatCoords,expandRows:t.expandRows,onScrollTopRequest:this.handleScrollTopRequest}));return h?this.renderHScrollLayout(g,p,u,a.colCnt,f,d,this.state.slatCoords):this.renderSimpleLayout(g,p,u)}}function L(e,n){let i=new t.DaySeriesModel(e.renderRange,n);return new t.DayTableModel(i,!1)}const j={allDaySlot:Boolean};t.injectStyles('\n/*\nA VERTICAL event\n*/\n\n.fc-v-event { /* allowed to be top-level */\n display: block;\n border: 1px solid var(--fc-event-border-color);\n background-color: var(--fc-event-bg-color)\n\n}\n\n.fc-v-event .fc-event-main {\n color: var(--fc-event-text-color);\n height: 100%;\n }\n\n.fc-v-event .fc-event-main-frame {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n.fc-v-event .fc-event-time {\n flex-grow: 0;\n flex-shrink: 0;\n max-height: 100%;\n overflow: hidden;\n }\n\n.fc-v-event .fc-event-title-container { /* a container for the sticky cushion */\n flex-grow: 1;\n flex-shrink: 1;\n min-height: 0; /* important for allowing to shrink all the way */\n }\n\n.fc-v-event .fc-event-title { /* will have fc-sticky on it */\n top: 0;\n bottom: 0;\n max-height: 100%; /* clip overflow */\n overflow: hidden;\n }\n\n.fc-v-event:not(.fc-event-start) {\n border-top-width: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n.fc-v-event:not(.fc-event-end) {\n border-bottom-width: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n.fc-v-event.fc-event-selected:before {\n /* expand hit area */\n left: -10px;\n right: -10px;\n }\n\n.fc-v-event {\n\n /* resizer (mouse AND touch) */\n\n}\n\n.fc-v-event .fc-event-resizer-start {\n cursor: n-resize;\n }\n\n.fc-v-event .fc-event-resizer-end {\n cursor: s-resize;\n }\n\n.fc-v-event {\n\n /* resizer for MOUSE */\n\n}\n\n.fc-v-event:not(.fc-event-selected) .fc-event-resizer {\n height: var(--fc-event-resizer-thickness);\n left: 0;\n right: 0;\n }\n\n.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start {\n top: calc(var(--fc-event-resizer-thickness) / -2);\n }\n\n.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end {\n bottom: calc(var(--fc-event-resizer-thickness) / -2);\n }\n\n.fc-v-event {\n\n /* resizer for TOUCH (when event is "selected") */\n\n}\n\n.fc-v-event.fc-event-selected .fc-event-resizer {\n left: 50%;\n margin-left: calc(var(--fc-event-resizer-dot-total-width) / -2);\n }\n\n.fc-v-event.fc-event-selected .fc-event-resizer-start {\n top: calc(var(--fc-event-resizer-dot-total-width) / -2);\n }\n\n.fc-v-event.fc-event-selected .fc-event-resizer-end {\n bottom: calc(var(--fc-event-resizer-dot-total-width) / -2);\n }\n.fc .fc-timegrid .fc-daygrid-body { /* the all-day daygrid within the timegrid view */\n z-index: 2; /* put above the timegrid-body so that more-popover is above everything. TODO: better solution */\n }\n.fc .fc-timegrid-divider {\n padding: 0 0 2px; /* browsers get confused when you set height. use padding instead */\n }\n.fc .fc-timegrid-body {\n position: relative;\n z-index: 1; /* scope the z-indexes of slots and cols */\n min-height: 100%; /* fill height always, even when slat table doesn\'t grow */\n }\n.fc .fc-timegrid-axis-chunk { /* for advanced ScrollGrid */\n position: relative /* offset parent for now-indicator-container */\n\n }\n.fc .fc-timegrid-axis-chunk > table {\n position: relative;\n z-index: 1; /* above the now-indicator-container */\n }\n.fc .fc-timegrid-slots {\n position: relative;\n z-index: 1;\n }\n.fc .fc-timegrid-slot { /* a <td> */\n height: 1.5em;\n border-bottom: 0 /* each cell owns its top border */\n }\n.fc .fc-timegrid-slot:empty:before {\n content: \'\\00a0\'; /* make sure there\'s at least an empty space to create height for height syncing */\n }\n.fc .fc-timegrid-slot-minor {\n border-top-style: dotted;\n }\n.fc .fc-timegrid-slot-label-cushion {\n display: inline-block;\n white-space: nowrap;\n }\n.fc .fc-timegrid-slot-label {\n vertical-align: middle; /* vertical align the slots */\n }\n.fc {\n\n\n /* slots AND axis cells (top-left corner of view including the "all-day" text) */\n\n}\n.fc .fc-timegrid-axis-cushion,\n .fc .fc-timegrid-slot-label-cushion {\n padding: 0 4px;\n }\n.fc {\n\n\n /* axis cells (top-left corner of view including the "all-day" text) */\n /* vertical align is more complicated, uses flexbox */\n\n}\n.fc .fc-timegrid-axis-frame-liquid {\n height: 100%; /* will need liquid-hack in FF */\n }\n.fc .fc-timegrid-axis-frame {\n overflow: hidden;\n display: flex;\n align-items: center; /* vertical align */\n justify-content: flex-end; /* horizontal align. matches text-align below */\n }\n.fc .fc-timegrid-axis-cushion {\n max-width: 60px; /* limits the width of the "all-day" text */\n flex-shrink: 0; /* allows text to expand how it normally would, regardless of constrained width */\n }\n.fc-direction-ltr .fc-timegrid-slot-label-frame {\n text-align: right;\n }\n.fc-direction-rtl .fc-timegrid-slot-label-frame {\n text-align: left;\n }\n.fc-liquid-hack .fc-timegrid-axis-frame-liquid {\n height: auto;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n.fc .fc-timegrid-col.fc-day-today {\n background-color: var(--fc-today-bg-color);\n }\n.fc .fc-timegrid-col-frame {\n min-height: 100%; /* liquid-hack is below */\n position: relative;\n }\n.fc-media-screen.fc-liquid-hack .fc-timegrid-col-frame {\n height: auto;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n.fc-media-screen .fc-timegrid-cols {\n position: absolute; /* no z-index. children will decide and go above slots */\n top: 0;\n left: 0;\n right: 0;\n bottom: 0\n }\n.fc-media-screen .fc-timegrid-cols > table {\n height: 100%;\n }\n.fc-media-screen .fc-timegrid-col-bg,\n .fc-media-screen .fc-timegrid-col-events,\n .fc-media-screen .fc-timegrid-now-indicator-container {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n }\n.fc {\n\n /* bg */\n\n}\n.fc .fc-timegrid-col-bg {\n z-index: 2; /* TODO: kill */\n }\n.fc .fc-timegrid-col-bg .fc-non-business { z-index: 1 }\n.fc .fc-timegrid-col-bg .fc-bg-event { z-index: 2 }\n.fc .fc-timegrid-col-bg .fc-highlight { z-index: 3 }\n.fc .fc-timegrid-bg-harness {\n position: absolute; /* top/bottom will be set by JS */\n left: 0;\n right: 0;\n }\n.fc {\n\n /* fg events */\n /* (the mirror segs are put into a separate container with same classname, */\n /* and they must be after the normal seg container to appear at a higher z-index) */\n\n}\n.fc .fc-timegrid-col-events {\n z-index: 3;\n /* child event segs have z-indexes that are scoped within this div */\n }\n.fc {\n\n /* now indicator */\n\n}\n.fc .fc-timegrid-now-indicator-container {\n bottom: 0;\n overflow: hidden; /* don\'t let overflow of lines/arrows cause unnecessary scrolling */\n /* z-index is set on the individual elements */\n }\n.fc-direction-ltr .fc-timegrid-col-events {\n margin: 0 2.5% 0 2px;\n }\n.fc-direction-rtl .fc-timegrid-col-events {\n margin: 0 2px 0 2.5%;\n }\n.fc-timegrid-event-harness {\n position: absolute /* top/left/right/bottom will all be set by JS */\n}\n.fc-timegrid-event-harness > .fc-timegrid-event {\n position: absolute; /* absolute WITHIN the harness */\n top: 0; /* for when not yet positioned */\n bottom: 0; /* " */\n left: 0;\n right: 0;\n }\n.fc-timegrid-event-harness-inset .fc-timegrid-event,\n.fc-timegrid-event.fc-event-mirror,\n.fc-timegrid-more-link {\n box-shadow: 0px 0px 0px 1px var(--fc-page-bg-color);\n}\n.fc-timegrid-event,\n.fc-timegrid-more-link { /* events need to be root */\n font-size: var(--fc-small-font-size);\n border-radius: 3px;\n}\n.fc-timegrid-event { /* events need to be root */\n margin-bottom: 1px /* give some space from bottom */\n}\n.fc-timegrid-event .fc-event-main {\n padding: 1px 1px 0;\n }\n.fc-timegrid-event .fc-event-time {\n white-space: nowrap;\n font-size: var(--fc-small-font-size);\n margin-bottom: 1px;\n }\n.fc-timegrid-event-short .fc-event-main-frame {\n flex-direction: row;\n overflow: hidden;\n }\n.fc-timegrid-event-short .fc-event-time:after {\n content: \'\\00a0-\\00a0\'; /* dash surrounded by non-breaking spaces */\n }\n.fc-timegrid-event-short .fc-event-title {\n font-size: var(--fc-small-font-size)\n }\n.fc-timegrid-more-link { /* does NOT inherit from fc-timegrid-event */\n position: absolute;\n z-index: 9999; /* hack */\n color: var(--fc-more-link-text-color);\n background: var(--fc-more-link-bg-color);\n cursor: pointer;\n margin-bottom: 1px; /* match space below fc-timegrid-event */\n}\n.fc-timegrid-more-link-inner { /* has fc-sticky */\n padding: 3px 2px;\n top: 0;\n}\n.fc-direction-ltr .fc-timegrid-more-link {\n right: 0;\n }\n.fc-direction-rtl .fc-timegrid-more-link {\n left: 0;\n }\n.fc {\n\n /* line */\n\n}\n.fc .fc-timegrid-now-indicator-line {\n position: absolute;\n z-index: 4;\n left: 0;\n right: 0;\n border-style: solid;\n border-color: var(--fc-now-indicator-color);\n border-width: 1px 0 0;\n }\n.fc {\n\n /* arrow */\n\n}\n.fc .fc-timegrid-now-indicator-arrow {\n position: absolute;\n z-index: 4;\n margin-top: -5px; /* vertically center on top coordinate */\n border-style: solid;\n border-color: var(--fc-now-indicator-color);\n }\n.fc-direction-ltr .fc-timegrid-now-indicator-arrow {\n left: 0;\n\n /* triangle pointing right. TODO: mixin */\n border-width: 5px 0 5px 6px;\n border-top-color: transparent;\n border-bottom-color: transparent;\n }\n.fc-direction-rtl .fc-timegrid-now-indicator-arrow {\n right: 0;\n\n /* triangle pointing left. TODO: mixin */\n border-width: 5px 6px 5px 0;\n border-top-color: transparent;\n border-bottom-color: transparent;\n }\n');var B=n.createPlugin({name:"@fullcalendar/timegrid",initialView:"timeGridWeek",optionRefiners:j,views:{timeGrid:{component:A,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,TimeColsView:f,DayTimeColsView:A,buildTimeColsModel:L,DayTimeCols:W,buildDayRanges:I,DayTimeColsSlicer:O,TimeCols:P,buildSlatMetas:G,TimeColsSlatsCoords:h};return t.globalPlugins.push(B),e.Internal=q,e.default=B,Object.defineProperty(e,"__esModule",{value:!0}),e}({},FullCalendar.Internal,FullCalendar,FullCalendar.Preact,FullCalendar.DayGrid.Internal); | ||
FullCalendar.TimeGrid=function(e,t,i,r,n){"use strict";class o extends t.Splitter{getKeyInfo(){return{allDay:{},timed:{}}}getKeysForDateSpan(e){return e.allDay?["allDay"]:["timed"]}getKeysForEventDef(e){return e.allDay?t.hasBgRendering(e)?["timed","allDay"]:["allDay"]:["timed"]}}const s=t.createFormatter({hour:"numeric",minute:"2-digit",omitZeroMinute:!0,meridiem:"short"});function l(e){let i=["fc-timegrid-slot","fc-timegrid-slot-label",e.isLabeled?"fc-scrollgrid-shrink":"fc-timegrid-slot-minor"];return r.createElement(t.ViewContextType.Consumer,null,n=>{if(!e.isLabeled)return r.createElement("td",{className:i.join(" "),"data-time":e.isoTimeStr});let{dateEnv:o,options:l,viewApi:c}=n,d=null==l.slotLabelFormat?s:Array.isArray(l.slotLabelFormat)?t.createFormatter(l.slotLabelFormat[0]):t.createFormatter(l.slotLabelFormat),m={level:0,time:e.time,date:o.toDate(e.date),view:c,text:o.format(e.date,d)};return r.createElement(t.ContentContainer,{elTag:"td",elClasses:i,elAttrs:{"data-time":e.isoTimeStr},renderProps:m,generatorName:"slotLabelContent",generator:l.slotLabelContent||a,classNameGenerator:l.slotLabelClassNames,didMount:l.slotLabelDidMount,willUnmount:l.slotLabelWillUnmount},e=>r.createElement("div",{className:"fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame"},r.createElement(e,{elTag:"div",elClasses:["fc-timegrid-slot-label-cushion","fc-scrollgrid-shrink-cushion"]})))})}function a(e){return e.text}class c extends t.BaseComponent{render(){return this.props.slatMetas.map(e=>r.createElement("tr",{key:e.key},r.createElement(l,Object.assign({},e))))}}const d=t.createFormatter({week:"short"});class m extends t.DateComponent{constructor(){super(...arguments),this.allDaySplitter=new o,this.headerElRef=r.createRef(),this.rootElRef=r.createRef(),this.scrollerElRef=r.createRef(),this.state={slatCoords:null},this.handleScrollTopRequest=e=>{let t=this.scrollerElRef.current;t&&(t.scrollTop=e)},this.renderHeadAxis=(e,i="")=>{let{options:n}=this.context,{dateProfile:o}=this.props,s=o.renderRange,l=1===t.diffDays(s.start,s.end)?t.buildNavLinkAttrs(this.context,s.start,"week"):{};return n.weekNumbers&&"day"===e?r.createElement(t.WeekNumberContainer,{elTag:"th",elClasses:["fc-timegrid-axis","fc-scrollgrid-shrink"],elAttrs:{"aria-hidden":!0},date:s.start,defaultFormat:d},e=>r.createElement("div",{className:["fc-timegrid-axis-frame","fc-scrollgrid-shrink-frame","fc-timegrid-axis-frame-liquid"].join(" "),style:{height:i}},r.createElement(e,{elTag:"a",elClasses:["fc-timegrid-axis-cushion","fc-scrollgrid-shrink-cushion","fc-scrollgrid-sync-inner"],elAttrs:l}))):r.createElement("th",{"aria-hidden":!0,className:"fc-timegrid-axis"},r.createElement("div",{className:"fc-timegrid-axis-frame",style:{height:i}}))},this.renderTableRowAxis=e=>{let{options:i,viewApi:n}=this.context,o={text:i.allDayText,view:n};return r.createElement(t.ContentContainer,{elTag:"td",elClasses:["fc-timegrid-axis","fc-scrollgrid-shrink"],elAttrs:{"aria-hidden":!0},renderProps:o,generatorName:"allDayContent",generator:i.allDayContent||f,classNameGenerator:i.allDayClassNames,didMount:i.allDayDidMount,willUnmount:i.allDayWillUnmount},t=>r.createElement("div",{className:["fc-timegrid-axis-frame","fc-scrollgrid-shrink-frame",null==e?" fc-timegrid-axis-frame-liquid":""].join(" "),style:{height:e}},r.createElement(t,{elTag:"span",elClasses:["fc-timegrid-axis-cushion","fc-scrollgrid-shrink-cushion","fc-scrollgrid-sync-inner"]})))},this.handleSlatCoords=e=>{this.setState({slatCoords:e})}}renderSimpleLayout(e,i,n){let{context:o,props:s}=this,l=[],a=t.getStickyHeaderDates(o.options);return e&&l.push({type:"header",key:"header",isSticky:a,chunk:{elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}}),i&&(l.push({type:"body",key:"all-day",chunk:{content:i}}),l.push({type:"body",key:"all-day-divider",outerContent:r.createElement("tr",{role:"presentation",className:"fc-scrollgrid-section"},r.createElement("td",{className:"fc-timegrid-divider "+o.theme.getClass("tableCellShaded")}))})),l.push({type:"body",key:"body",liquid:!0,expandRows:Boolean(o.options.expandRows),chunk:{scrollerElRef:this.scrollerElRef,content:n}}),r.createElement(t.ViewContainer,{elRef:this.rootElRef,elClasses:["fc-timegrid"],viewSpec:o.viewSpec},r.createElement(t.SimpleScrollGrid,{liquid:!s.isHeightAuto&&!s.forPrint,collapsibleWidth:s.forPrint,cols:[{width:"shrink"}],sections:l}))}renderHScrollLayout(e,i,n,o,s,l,a){let d=this.context.pluginHooks.scrollGridImpl;if(!d)throw new Error("No ScrollGrid implementation");let{context:m,props:f}=this,h=!f.forPrint&&t.getStickyHeaderDates(m.options),g=!f.forPrint&&t.getStickyFooterScrollbar(m.options),p=[];e&&p.push({type:"header",key:"header",isSticky:h,syncRowHeights:!0,chunks:[{key:"axis",rowContent:e=>r.createElement("tr",{role:"presentation"},this.renderHeadAxis("day",e.rowSyncHeights[0]))},{key:"cols",elRef:this.headerElRef,tableClassName:"fc-col-header",rowContent:e}]}),i&&(p.push({type:"body",key:"all-day",syncRowHeights:!0,chunks:[{key:"axis",rowContent:e=>r.createElement("tr",{role:"presentation"},this.renderTableRowAxis(e.rowSyncHeights[0]))},{key:"cols",content:i}]}),p.push({key:"all-day-divider",type:"body",outerContent:r.createElement("tr",{role:"presentation",className:"fc-scrollgrid-section"},r.createElement("td",{colSpan:2,className:"fc-timegrid-divider "+m.theme.getClass("tableCellShaded")}))}));let u=m.options.nowIndicator;return p.push({type:"body",key:"body",liquid:!0,expandRows:Boolean(m.options.expandRows),chunks:[{key:"axis",content:e=>r.createElement("div",{className:"fc-timegrid-axis-chunk"},r.createElement("table",{"aria-hidden":!0,style:{height:e.expandRows?e.clientHeight:""}},e.tableColGroupNode,r.createElement("tbody",null,r.createElement(c,{slatMetas:l}))),r.createElement("div",{className:"fc-timegrid-now-indicator-container"},r.createElement(t.NowTimer,{unit:u?"minute":"day"},e=>{let i=u&&a&&a.safeComputeTop(e);return"number"==typeof i?r.createElement(t.NowIndicatorContainer,{elClasses:["fc-timegrid-now-indicator-arrow"],elStyle:{top:i},isAxis:!0,date:e}):null})))},{key:"cols",scrollerElRef:this.scrollerElRef,content:n}]}),g&&p.push({key:"footer",type:"footer",isSticky:!0,chunks:[{key:"axis",content:t.renderScrollShim},{key:"cols",content:t.renderScrollShim}]}),r.createElement(t.ViewContainer,{elRef:this.rootElRef,elClasses:["fc-timegrid"],viewSpec:m.viewSpec},r.createElement(d,{liquid:!f.isHeightAuto&&!f.forPrint,collapsibleWidth:!1,colGroups:[{width:"shrink",cols:[{width:"shrink"}]},{cols:[{span:o,minWidth:s}]}],sections:p}))}getAllDayMaxEventProps(){let{dayMaxEvents:e,dayMaxEventRows:t}=this.context.options;return!0!==e&&!0!==t||(e=void 0,t=5),{dayMaxEvents:e,dayMaxEventRows:t}}}function f(e){return e.text}class h{constructor(e,t,i){this.positions=e,this.dateProfile=t,this.slotDuration=i}safeComputeTop(e){let{dateProfile:i}=this;if(t.rangeContainsMarker(i.currentRange,e)){let r=t.startOfDay(e),n=e.valueOf()-r.valueOf();if(n>=t.asRoughMs(i.slotMinTime)&&n<t.asRoughMs(i.slotMaxTime))return this.computeTimeTop(t.createDuration(n))}return null}computeDateTop(e,i){return i||(i=t.startOfDay(e)),this.computeTimeTop(t.createDuration(e.valueOf()-i.valueOf()))}computeTimeTop(e){let i,r,{positions:n,dateProfile:o}=this,s=n.els.length,l=(e.milliseconds-t.asRoughMs(o.slotMinTime))/t.asRoughMs(this.slotDuration);return l=Math.max(0,l),l=Math.min(s,l),i=Math.floor(l),i=Math.min(i,s-1),r=l-i,n.tops[i]+n.getHeight(i)*r}}class g extends t.BaseComponent{render(){let{props:e,context:i}=this,{options:n}=i,{slatElRefs:o}=e;return r.createElement("tbody",null,e.slatMetas.map((s,a)=>{let c={time:s.time,date:i.dateEnv.toDate(s.date),view:i.viewApi};return r.createElement("tr",{key:s.key,ref:o.createRef(s.key)},e.axis&&r.createElement(l,Object.assign({},s)),r.createElement(t.ContentContainer,{elTag:"td",elClasses:["fc-timegrid-slot","fc-timegrid-slot-lane",!s.isLabeled&&"fc-timegrid-slot-minor"],elAttrs:{"data-time":s.isoTimeStr},renderProps:c,generatorName:"slotLaneContent",generator:n.slotLaneContent,classNameGenerator:n.slotLaneClassNames,didMount:n.slotLaneDidMount,willUnmount:n.slotLaneWillUnmount}))}))}}class p extends t.BaseComponent{constructor(){super(...arguments),this.rootElRef=r.createRef(),this.slatElRefs=new t.RefMap}render(){let{props:e,context:t}=this;return r.createElement("div",{ref:this.rootElRef,className:"fc-timegrid-slots"},r.createElement("table",{"aria-hidden":!0,className:t.theme.getClass("table"),style:{minWidth:e.tableMinWidth,width:e.clientWidth,height:e.minHeight}},e.tableColGroupNode,r.createElement(g,{slatElRefs:this.slatElRefs,axis:e.axis,slatMetas:e.slatMetas})))}componentDidMount(){this.updateSizing()}componentDidUpdate(){this.updateSizing()}componentWillUnmount(){this.props.onCoords&&this.props.onCoords(null)}updateSizing(){let{context:e,props:i}=this;if(i.onCoords&&null!==i.clientWidth){this.rootElRef.current.offsetHeight&&i.onCoords(new h(new t.PositionCache(this.rootElRef.current,(r=this.slatElRefs.currentMap,i.slatMetas.map(e=>r[e.key])),!1,!0),this.props.dateProfile,e.options.slotDuration))}var r}}function u(e,t){let i,r=[];for(i=0;i<t;i+=1)r.push([]);if(e)for(i=0;i<e.length;i+=1)r[e[i].col].push(e[i]);return r}function v(e,t){let i=[];if(e){for(let r=0;r<t;r+=1)i[r]={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}class b extends t.BaseComponent{render(){let{props:e}=this;return r.createElement(t.MoreLinkContainer,{elClasses:["fc-timegrid-more-link"],elStyle:{top:e.top,bottom:e.bottom},allDayDate:null,moreCnt:e.hiddenSegs.length,allSegs:e.hiddenSegs,hiddenSegs:e.hiddenSegs,extraDateSpan:e.extraDateSpan,dateProfile:e.dateProfile,todayRange:e.todayRange,popoverContent:()=>T(e.hiddenSegs,e),defaultGenerator:y},e=>r.createElement(e,{elTag:"div",elClasses:["fc-timegrid-more-link-inner","fc-sticky"]}))}}function y(e){return e.shortText}function x(e,i,r){let n=new t.SegHierarchy;null!=i&&(n.strictOrder=i),null!=r&&(n.maxStackCnt=r);let o=n.addSegs(e),s=t.groupIntersectingEntries(o),l=function(e){const{entriesByLevel:i}=e,r=w((e,t)=>e+":"+t,(n,o)=>{let s=S(function(e,i,r){let{levelCoords:n,entriesByLevel:o}=e,s=o[i][r],l=n[i]+s.thickness,a=n.length,c=i;for(;c<a&&n[c]<l;c+=1);for(;c<a;c+=1){let e,i=o[c],r=t.binarySearch(i,s.span.start,t.getEntrySpanEnd),n=r[0]+r[1],l=n;for(;(e=i[l])&&e.span.start<s.span.end;)l+=1;if(n<l)return{level:c,lateralStart:n,lateralEnd:l}}return null}(e,n,o),r),l=i[n][o];return[Object.assign(Object.assign({},l),{nextLevelNodes:s[0]}),l.thickness+s[1]]});return S(i.length?{level:0,lateralStart:0,lateralEnd:i[0].length}:null,r)[0]}(n);return l=function(e,i){const r=w((e,i,r)=>t.buildEntryKey(e),(e,t,n)=>{let o,{nextLevelNodes:s,thickness:l}=e,a=l+n,c=l/a,d=[];if(s.length)for(let e of s)if(void 0===o){let i=r(e,t,a);o=i[0],d.push(i[1])}else{let t=r(e,o,0);d.push(t[1])}else o=i;let m=(o-t)*c;return[o-m,Object.assign(Object.assign({},e),{thickness:m,nextLevelNodes:d})]});return e.map(e=>r(e,0,0)[1])}(l,1),{segRects:function(e){let i=[];const r=w((e,i,r)=>t.buildEntryKey(e),(e,t,r)=>{let o=Object.assign(Object.assign({},e),{levelCoord:t,stackDepth:r,stackForward:0});return i.push(o),o.stackForward=n(e.nextLevelNodes,t+e.thickness,r+1)+1});function n(e,t,i){let n=0;for(let o of e)n=Math.max(r(o,t,i),n);return n}return n(e,0,0),i}(l),hiddenGroups:s}}function S(e,t){if(!e)return[[],0];let{level:i,lateralStart:r,lateralEnd:n}=e,o=r,s=[];for(;o<n;)s.push(t(i,o)),o+=1;return s.sort(C),[s.map(E),s[0][1]]}function C(e,t){return t[1]-e[1]}function E(e){return e[0]}function w(e,t){const i={};return(...r)=>{let n=e(...r);return n in i?i[n]:i[n]=t(...r)}}function D(e,t,i=null,r=0){let n=[];if(i)for(let o=0;o<e.length;o+=1){let s=e[o],l=i.computeDateTop(s.start,t),a=Math.max(l+(r||0),i.computeDateTop(s.end,t));n.push({start:Math.round(l),end:Math.round(a)})}return n}const R=t.createFormatter({hour:"numeric",minute:"2-digit",meridiem:!1});class k extends t.BaseComponent{render(){return r.createElement(t.StandardEvent,Object.assign({},this.props,{elClasses:["fc-timegrid-event","fc-v-event",this.props.isShort&&"fc-timegrid-event-short"],defaultTimeFormat:R}))}}class M extends t.BaseComponent{constructor(){super(...arguments),this.sortEventSegs=t.memoize(t.sortEventSegs)}render(){let{props:e,context:i}=this,{options:n}=i,o=n.selectMirror,s=e.eventDrag&&e.eventDrag.segs||e.eventResize&&e.eventResize.segs||o&&e.dateSelectionSegs||[],l=e.eventDrag&&e.eventDrag.affectedInstances||e.eventResize&&e.eventResize.affectedInstances||{},a=this.sortEventSegs(e.fgEventSegs,n.eventOrder);return r.createElement(t.DayCellContainer,{elTag:"td",elRef:e.elRef,elClasses:["fc-timegrid-col",...e.extraClassNames||[]],elAttrs:Object.assign({role:"gridcell"},e.extraDataAttrs),date:e.date,dateProfile:e.dateProfile,todayRange:e.todayRange,extraRenderProps:e.extraRenderProps},i=>r.createElement("div",{className:"fc-timegrid-col-frame"},r.createElement("div",{className:"fc-timegrid-col-bg"},this.renderFillSegs(e.businessHourSegs,"non-business"),this.renderFillSegs(e.bgEventSegs,"bg-event"),this.renderFillSegs(e.dateSelectionSegs,"highlight")),r.createElement("div",{className:"fc-timegrid-col-events"},this.renderFgSegs(a,l,!1,!1,!1)),r.createElement("div",{className:"fc-timegrid-col-events"},this.renderFgSegs(s,{},Boolean(e.eventDrag),Boolean(e.eventResize),Boolean(o))),r.createElement("div",{className:"fc-timegrid-now-indicator-container"},this.renderNowIndicator(e.nowIndicatorSegs)),t.hasCustomDayCellContent(n)&&r.createElement(i,{elTag:"div",elClasses:["fc-timegrid-col-misc"]})))}renderFgSegs(e,t,i,r,n){let{props:o}=this;return o.forPrint?T(e,o):this.renderPositionedFgSegs(e,t,i,r,n)}renderPositionedFgSegs(e,i,n,o,s){let{eventMaxStack:l,eventShortHeight:a,eventOrderStrict:c,eventMinHeight:d}=this.context.options,{date:m,slatCoords:f,eventSelection:h,todayRange:g,nowDate:p}=this.props,u=n||o||s,v=D(e,m,f,d),{segPlacements:b,hiddenGroups:y}=function(e,t,i,r){let n=[],o=[];for(let i=0;i<e.length;i+=1){let r=t[i];r?n.push({index:i,thickness:1,span:r}):o.push(e[i])}let{segRects:s,hiddenGroups:l}=x(n,i,r),a=[];for(let t of s)a.push({seg:e[t.index],rect:t});for(let e of o)a.push({seg:e,rect:null});return{segPlacements:a,hiddenGroups:l}}(e,v,c,l);return r.createElement(r.Fragment,null,this.renderHiddenGroups(y,e),b.map(e=>{let{seg:l,rect:c}=e,d=l.eventRange.instance.instanceId,m=u||Boolean(!i[d]&&c),f=N(c&&c.span),v=!u&&c?this.computeSegHStyle(c):{left:0,right:0},b=Boolean(c)&&c.stackForward>0,y=Boolean(c)&&c.span.end-c.span.start<a;return r.createElement("div",{className:"fc-timegrid-event-harness"+(b?" fc-timegrid-event-harness-inset":""),key:d,style:Object.assign(Object.assign({visibility:m?"":"hidden"},f),v)},r.createElement(k,Object.assign({seg:l,isDragging:n,isResizing:o,isDateSelecting:s,isSelected:d===h,isShort:y},t.getSegMeta(l,g,p))))}))}renderHiddenGroups(e,i){let{extraDateSpan:n,dateProfile:o,todayRange:s,nowDate:l,eventSelection:a,eventDrag:c,eventResize:d}=this.props;return r.createElement(r.Fragment,null,e.map(e=>{let m=N(e.span),f=(h=e.entries,g=i,h.map(e=>g[e.index]));var h,g;return r.createElement(b,{key:t.buildIsoString(t.computeEarliestSegStart(f)),hiddenSegs:f,top:m.top,bottom:m.bottom,extraDateSpan:n,dateProfile:o,todayRange:s,nowDate:l,eventSelection:a,eventDrag:c,eventResize:d})}))}renderFillSegs(e,i){let{props:n,context:o}=this,s=D(e,n.date,n.slatCoords,o.options.eventMinHeight).map((o,s)=>{let l=e[s];return r.createElement("div",{key:t.buildEventRangeKey(l.eventRange),className:"fc-timegrid-bg-harness",style:N(o)},"bg-event"===i?r.createElement(t.BgEvent,Object.assign({seg:l},t.getSegMeta(l,n.todayRange,n.nowDate))):t.renderFill(i))});return r.createElement(r.Fragment,null,s)}renderNowIndicator(e){let{slatCoords:i,date:n}=this.props;return i?e.map((e,o)=>r.createElement(t.NowIndicatorContainer,{key:o,elClasses:["fc-timegrid-now-indicator-line"],elStyle:{top:i.computeDateTop(e.start,n)},isAxis:!1,date:n})):null}computeSegHStyle(e){let t,i,{isRtl:r,options:n}=this.context,o=n.slotEventOverlap,s=e.levelCoord,l=e.levelCoord+e.thickness;o&&(l=Math.min(1,s+2*(l-s))),r?(t=1-l,i=s):(t=s,i=1-l);let a={zIndex:e.stackDepth+1,left:100*t+"%",right:100*i+"%"};return o&&!e.stackForward&&(a[r?"marginLeft":"marginRight"]=20),a}}function T(e,{todayRange:i,nowDate:n,eventSelection:o,eventDrag:s,eventResize:l}){let a=(s?s.affectedInstances:null)||(l?l.affectedInstances:null)||{};return r.createElement(r.Fragment,null,e.map(e=>{let s=e.eventRange.instance.instanceId;return r.createElement("div",{key:s,style:{visibility:a[s]?"hidden":""}},r.createElement(k,Object.assign({seg:e,isDragging:!1,isResizing:!1,isDateSelecting:!1,isSelected:s===o,isShort:!1},t.getSegMeta(e,i,n))))}))}function N(e){return e?{top:e.start,bottom:-e.end}:{top:"",bottom:""}}class P extends t.BaseComponent{constructor(){super(...arguments),this.splitFgEventSegs=t.memoize(u),this.splitBgEventSegs=t.memoize(u),this.splitBusinessHourSegs=t.memoize(u),this.splitNowIndicatorSegs=t.memoize(u),this.splitDateSelectionSegs=t.memoize(u),this.splitEventDrag=t.memoize(v),this.splitEventResize=t.memoize(v),this.rootElRef=r.createRef(),this.cellElRefs=new t.RefMap}render(){let{props:e,context:i}=this,n=i.options.nowIndicator&&e.slatCoords&&e.slatCoords.safeComputeTop(e.nowDate),o=e.cells.length,s=this.splitFgEventSegs(e.fgEventSegs,o),l=this.splitBgEventSegs(e.bgEventSegs,o),a=this.splitBusinessHourSegs(e.businessHourSegs,o),c=this.splitNowIndicatorSegs(e.nowIndicatorSegs,o),d=this.splitDateSelectionSegs(e.dateSelectionSegs,o),m=this.splitEventDrag(e.eventDrag,o),f=this.splitEventResize(e.eventResize,o);return r.createElement("div",{className:"fc-timegrid-cols",ref:this.rootElRef},r.createElement("table",{role:"presentation",style:{minWidth:e.tableMinWidth,width:e.clientWidth}},e.tableColGroupNode,r.createElement("tbody",{role:"presentation"},r.createElement("tr",{role:"row"},e.axis&&r.createElement("td",{"aria-hidden":!0,className:"fc-timegrid-col fc-timegrid-axis"},r.createElement("div",{className:"fc-timegrid-col-frame"},r.createElement("div",{className:"fc-timegrid-now-indicator-container"},"number"==typeof n&&r.createElement(t.NowIndicatorContainer,{elClasses:["fc-timegrid-now-indicator-arrow"],elStyle:{top:n},isAxis:!0,date:e.nowDate})))),e.cells.map((t,i)=>r.createElement(M,{key:t.key,elRef:this.cellElRefs.createRef(t.key),dateProfile:e.dateProfile,date:t.date,nowDate:e.nowDate,todayRange:e.todayRange,extraRenderProps:t.extraRenderProps,extraDataAttrs:t.extraDataAttrs,extraClassNames:t.extraClassNames,extraDateSpan:t.extraDateSpan,fgEventSegs:s[i],bgEventSegs:l[i],businessHourSegs:a[i],nowIndicatorSegs:c[i],dateSelectionSegs:d[i],eventDrag:m[i],eventResize:f[i],slatCoords:e.slatCoords,eventSelection:e.eventSelection,forPrint:e.forPrint}))))))}componentDidMount(){this.updateCoords()}componentDidUpdate(){this.updateCoords()}updateCoords(){let{props:e}=this;var i;e.onColCoords&&null!==e.clientWidth&&e.onColCoords(new t.PositionCache(this.rootElRef.current,(i=this.cellElRefs.currentMap,e.cells.map(e=>i[e.key])),!0,!1))}}class z extends t.DateComponent{constructor(){super(...arguments),this.processSlotOptions=t.memoize(H),this.state={slatCoords:null},this.handleRootEl=e=>{e?this.context.registerInteractiveComponent(this,{el:e,isHitComboAllowed:this.props.isHitComboAllowed}):this.context.unregisterInteractiveComponent(this)},this.handleScrollRequest=e=>{let{onScrollTopRequest:t}=this.props,{slatCoords:i}=this.state;if(t&&i){if(e.time){let r=i.computeTimeTop(e.time);r=Math.ceil(r),r&&(r+=1),t(r)}return!0}return!1},this.handleColCoords=e=>{this.colCoords=e},this.handleSlatCoords=e=>{this.setState({slatCoords:e}),this.props.onSlatCoords&&this.props.onSlatCoords(e)}}render(){let{props:e,state:t}=this;return r.createElement("div",{className:"fc-timegrid-body",ref:this.handleRootEl,style:{width:e.clientWidth,minWidth:e.tableMinWidth}},r.createElement(p,{axis:e.axis,dateProfile:e.dateProfile,slatMetas:e.slatMetas,clientWidth:e.clientWidth,minHeight:e.expandRows?e.clientHeight:"",tableMinWidth:e.tableMinWidth,tableColGroupNode:e.axis?e.tableColGroupNode:null,onCoords:this.handleSlatCoords}),r.createElement(P,{cells:e.cells,axis:e.axis,dateProfile:e.dateProfile,businessHourSegs:e.businessHourSegs,bgEventSegs:e.bgEventSegs,fgEventSegs:e.fgEventSegs,dateSelectionSegs:e.dateSelectionSegs,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,todayRange:e.todayRange,nowDate:e.nowDate,nowIndicatorSegs:e.nowIndicatorSegs,clientWidth:e.clientWidth,tableMinWidth:e.tableMinWidth,tableColGroupNode:e.tableColGroupNode,slatCoords:t.slatCoords,onColCoords:this.handleColCoords,forPrint:e.forPrint}))}componentDidMount(){this.scrollResponder=this.context.createScrollResponder(this.handleScrollRequest)}componentDidUpdate(e){this.scrollResponder.update(e.dateProfile!==this.props.dateProfile)}componentWillUnmount(){this.scrollResponder.detach()}queryHit(e,i){let{dateEnv:r,options:n}=this.context,{colCoords:o}=this,{dateProfile:s}=this.props,{slatCoords:l}=this.state,{snapDuration:a,snapsPerSlot:c}=this.processSlotOptions(this.props.slotDuration,n.snapDuration),d=o.leftToIndex(e),m=l.positions.topToIndex(i);if(null!=d&&null!=m){let e=this.props.cells[d],n=l.positions.tops[m],f=l.positions.getHeight(m),h=(i-n)/f,g=m*c+Math.floor(h*c),p=this.props.cells[d].date,u=t.addDurations(s.slotMinTime,t.multiplyDuration(a,g)),v=r.add(p,u),b=r.add(v,a);return{dateProfile:s,dateSpan:Object.assign({range:{start:v,end:b},allDay:!1},e.extraDateSpan),dayEl:o.els[d],rect:{left:o.lefts[d],right:o.rights[d],top:n,bottom:n+f},layer:0}}return null}}function H(e,i){let r=i||e,n=t.wholeDivideDurations(e,r);return null===n&&(r=e,n=1),{snapDuration:r,snapsPerSlot:n}}class W extends t.Slicer{sliceRange(e,i){let r=[];for(let n=0;n<i.length;n+=1){let o=t.intersectRanges(e,i[n]);o&&r.push({start:o.start,end:o.end,isStart:o.start.valueOf()===e.start.valueOf(),isEnd:o.end.valueOf()===e.end.valueOf(),col:n})}return r}}class I extends t.DateComponent{constructor(){super(...arguments),this.buildDayRanges=t.memoize(F),this.slicer=new W,this.timeColsRef=r.createRef()}render(){let{props:e,context:i}=this,{dateProfile:n,dayTableModel:o}=e,s=i.options.nowIndicator,l=this.buildDayRanges(o,n,i.dateEnv);return r.createElement(t.NowTimer,{unit:s?"minute":"day"},(t,a)=>r.createElement(z,Object.assign({ref:this.timeColsRef},this.slicer.sliceProps(e,n,null,i,l),{forPrint:e.forPrint,axis:e.axis,dateProfile:n,slatMetas:e.slatMetas,slotDuration:e.slotDuration,cells:o.cells[0],tableColGroupNode:e.tableColGroupNode,tableMinWidth:e.tableMinWidth,clientWidth:e.clientWidth,clientHeight:e.clientHeight,expandRows:e.expandRows,nowDate:t,nowIndicatorSegs:s&&this.slicer.sliceNowDate(t,i,l),todayRange:a,onScrollTopRequest:e.onScrollTopRequest,onSlatCoords:e.onSlatCoords})))}}function F(e,t,i){let r=[];for(let n of e.headerDates)r.push({start:i.add(n,t.slotMinTime),end:i.add(n,t.slotMaxTime)});return r}const O=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];function G(e,i,r,n,o){let s=new Date(0),l=e,a=t.createDuration(0),c=r||function(e){let i,r,n;for(i=O.length-1;i>=0;i-=1)if(r=t.createDuration(O[i]),n=t.wholeDivideDurations(r,e),null!==n&&n>1)return r;return e}(n),d=[];for(;t.asRoughMs(l)<t.asRoughMs(i);){let e=o.add(s,l),i=null!==t.wholeDivideDurations(a,c);d.push({date:e,time:l,key:e.toISOString(),isoTimeStr:t.formatIsoTimeString(e),isLabeled:i}),l=t.addDurations(l,n),a=t.addDurations(a,n)}return d}class L extends m{constructor(){super(...arguments),this.buildTimeColsModel=t.memoize(A),this.buildSlatMetas=t.memoize(G)}render(){let{options:e,dateEnv:i,dateProfileGenerator:o}=this.context,{props:s}=this,{dateProfile:l}=s,a=this.buildTimeColsModel(l,o),c=this.allDaySplitter.splitProps(s),d=this.buildSlatMetas(l.slotMinTime,l.slotMaxTime,e.slotLabelInterval,e.slotDuration,i),{dayMinWidth:m}=e,f=!m,h=m,g=e.dayHeaders&&r.createElement(t.DayHeader,{dates:a.headerDates,dateProfile:l,datesRepDistinctDays:!0,renderIntro:f?this.renderHeadAxis:null}),p=!1!==e.allDaySlot&&(t=>r.createElement(n.DayTable,Object.assign({},c.allDay,{dateProfile:l,dayTableModel:a,nextDayThreshold:e.nextDayThreshold,tableMinWidth:t.tableMinWidth,colGroupNode:t.tableColGroupNode,renderRowIntro:f?this.renderTableRowAxis:null,showWeekNumbers:!1,expandRows:!1,headerAlignElRef:this.headerElRef,clientWidth:t.clientWidth,clientHeight:t.clientHeight,forPrint:s.forPrint},this.getAllDayMaxEventProps()))),u=t=>r.createElement(I,Object.assign({},c.timed,{dayTableModel:a,dateProfile:l,axis:f,slotDuration:e.slotDuration,slatMetas:d,forPrint:s.forPrint,tableColGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,clientWidth:t.clientWidth,clientHeight:t.clientHeight,onSlatCoords:this.handleSlatCoords,expandRows:t.expandRows,onScrollTopRequest:this.handleScrollTopRequest}));return h?this.renderHScrollLayout(g,p,u,a.colCnt,m,d,this.state.slatCoords):this.renderSimpleLayout(g,p,u)}}function A(e,i){let r=new t.DaySeriesModel(e.renderRange,i);return new t.DayTableModel(r,!1)}const j={allDaySlot:Boolean};t.injectStyles('.fc-v-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-v-event .fc-event-main{color:var(--fc-event-text-color);height:100%}.fc-v-event .fc-event-main-frame{display:flex;flex-direction:column;height:100%}.fc-v-event .fc-event-time{flex-grow:0;flex-shrink:0;max-height:100%;overflow:hidden}.fc-v-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-height:0}.fc-v-event .fc-event-title{bottom:0;max-height:100%;overflow:hidden;top:0}.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-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 .fc-timegrid .fc-daygrid-body{z-index:2}.fc .fc-timegrid-divider{padding:0 0 2px}.fc .fc-timegrid-body{min-height:100%;position:relative;z-index:1}.fc .fc-timegrid-axis-chunk{position:relative}.fc .fc-timegrid-axis-chunk>table,.fc .fc-timegrid-slots{position:relative;z-index:1}.fc .fc-timegrid-slot{border-bottom:0;height:1.5em}.fc .fc-timegrid-slot:empty:before{content:"\\00a0"}.fc .fc-timegrid-slot-minor{border-top-style:dotted}.fc .fc-timegrid-slot-label-cushion{display:inline-block;white-space:nowrap}.fc .fc-timegrid-slot-label{vertical-align:middle}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{padding:0 4px}.fc .fc-timegrid-axis-frame-liquid{height:100%}.fc .fc-timegrid-axis-frame{align-items:center;display:flex;justify-content:flex-end;overflow:hidden}.fc .fc-timegrid-axis-cushion{flex-shrink:0;max-width:60px}.fc-direction-ltr .fc-timegrid-slot-label-frame{text-align:right}.fc-direction-rtl .fc-timegrid-slot-label-frame{text-align:left}.fc-liquid-hack .fc-timegrid-axis-frame-liquid{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-timegrid-col-frame{min-height:100%;position:relative}.fc-media-screen.fc-liquid-hack .fc-timegrid-col-frame{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols{bottom:0;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols>table{height:100%}.fc-media-screen .fc-timegrid-col-bg,.fc-media-screen .fc-timegrid-col-events,.fc-media-screen .fc-timegrid-now-indicator-container{left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col-bg{z-index:2}.fc .fc-timegrid-col-bg .fc-non-business{z-index:1}.fc .fc-timegrid-col-bg .fc-bg-event{z-index:2}.fc .fc-timegrid-col-bg .fc-highlight{z-index:3}.fc .fc-timegrid-bg-harness{left:0;position:absolute;right:0}.fc .fc-timegrid-col-events{z-index:3}.fc .fc-timegrid-now-indicator-container{bottom:0;overflow:hidden}.fc-direction-ltr .fc-timegrid-col-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-col-events{margin:0 2px 0 2.5%}.fc-timegrid-event-harness{position:absolute}.fc-timegrid-event-harness>.fc-timegrid-event{bottom:0;left:0;position:absolute;right:0;top:0}.fc-timegrid-event-harness-inset .fc-timegrid-event,.fc-timegrid-event.fc-event-mirror,.fc-timegrid-more-link{box-shadow:0 0 0 1px var(--fc-page-bg-color)}.fc-timegrid-event,.fc-timegrid-more-link{border-radius:3px;font-size:var(--fc-small-font-size)}.fc-timegrid-event{margin-bottom:1px}.fc-timegrid-event .fc-event-main{padding:1px 1px 0}.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-main-frame{flex-direction:row;overflow:hidden}.fc-timegrid-event-short .fc-event-time:after{content:"\\00a0-\\00a0"}.fc-timegrid-event-short .fc-event-title{font-size:var(--fc-small-font-size)}.fc-timegrid-more-link{background:var(--fc-more-link-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;margin-bottom:1px;position:absolute;z-index:9999}.fc-timegrid-more-link-inner{padding:3px 2px;top:0}.fc-direction-ltr .fc-timegrid-more-link{right:0}.fc-direction-rtl .fc-timegrid-more-link{left:0}.fc .fc-timegrid-now-indicator-line{border-color:var(--fc-now-indicator-color);border-style:solid;border-width:1px 0 0;left:0;position:absolute;right:0;z-index:4}.fc .fc-timegrid-now-indicator-arrow{border-color:var(--fc-now-indicator-color);border-style:solid;margin-top:-5px;position:absolute;z-index:4}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 0 5px 6px;left:0}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 6px 5px 0;right:0}');var B=i.createPlugin({name:"@fullcalendar/timegrid",initialView:"timeGridWeek",optionRefiners:j,views:{timeGrid:{component:L,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,TimeColsView:m,DayTimeColsView:L,buildTimeColsModel:A,DayTimeCols:I,buildDayRanges:F,DayTimeColsSlicer:W,TimeCols:z,buildSlatMetas:G,TimeColsSlatsCoords:h};return t.globalPlugins.push(B),e.Internal=q,e.default=B,Object.defineProperty(e,"__esModule",{value:!0}),e}({},FullCalendar.Internal,FullCalendar,FullCalendar.Preact,FullCalendar.DayGrid.Internal); |
@@ -11,3 +11,3 @@ import { createPlugin } from '@fullcalendar/core/index.js'; | ||
var css_248z = "\n/*\nA VERTICAL event\n*/\n\n.fc-v-event { /* allowed to be top-level */\n display: block;\n border: 1px solid var(--fc-event-border-color);\n background-color: var(--fc-event-bg-color)\n\n}\n\n.fc-v-event .fc-event-main {\n color: var(--fc-event-text-color);\n height: 100%;\n }\n\n.fc-v-event .fc-event-main-frame {\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n.fc-v-event .fc-event-time {\n flex-grow: 0;\n flex-shrink: 0;\n max-height: 100%;\n overflow: hidden;\n }\n\n.fc-v-event .fc-event-title-container { /* a container for the sticky cushion */\n flex-grow: 1;\n flex-shrink: 1;\n min-height: 0; /* important for allowing to shrink all the way */\n }\n\n.fc-v-event .fc-event-title { /* will have fc-sticky on it */\n top: 0;\n bottom: 0;\n max-height: 100%; /* clip overflow */\n overflow: hidden;\n }\n\n.fc-v-event:not(.fc-event-start) {\n border-top-width: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n\n.fc-v-event:not(.fc-event-end) {\n border-bottom-width: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n\n.fc-v-event.fc-event-selected:before {\n /* expand hit area */\n left: -10px;\n right: -10px;\n }\n\n.fc-v-event {\n\n /* resizer (mouse AND touch) */\n\n}\n\n.fc-v-event .fc-event-resizer-start {\n cursor: n-resize;\n }\n\n.fc-v-event .fc-event-resizer-end {\n cursor: s-resize;\n }\n\n.fc-v-event {\n\n /* resizer for MOUSE */\n\n}\n\n.fc-v-event:not(.fc-event-selected) .fc-event-resizer {\n height: var(--fc-event-resizer-thickness);\n left: 0;\n right: 0;\n }\n\n.fc-v-event:not(.fc-event-selected) .fc-event-resizer-start {\n top: calc(var(--fc-event-resizer-thickness) / -2);\n }\n\n.fc-v-event:not(.fc-event-selected) .fc-event-resizer-end {\n bottom: calc(var(--fc-event-resizer-thickness) / -2);\n }\n\n.fc-v-event {\n\n /* resizer for TOUCH (when event is \"selected\") */\n\n}\n\n.fc-v-event.fc-event-selected .fc-event-resizer {\n left: 50%;\n margin-left: calc(var(--fc-event-resizer-dot-total-width) / -2);\n }\n\n.fc-v-event.fc-event-selected .fc-event-resizer-start {\n top: calc(var(--fc-event-resizer-dot-total-width) / -2);\n }\n\n.fc-v-event.fc-event-selected .fc-event-resizer-end {\n bottom: calc(var(--fc-event-resizer-dot-total-width) / -2);\n }\n.fc .fc-timegrid .fc-daygrid-body { /* the all-day daygrid within the timegrid view */\n z-index: 2; /* put above the timegrid-body so that more-popover is above everything. TODO: better solution */\n }\n.fc .fc-timegrid-divider {\n padding: 0 0 2px; /* browsers get confused when you set height. use padding instead */\n }\n.fc .fc-timegrid-body {\n position: relative;\n z-index: 1; /* scope the z-indexes of slots and cols */\n min-height: 100%; /* fill height always, even when slat table doesn't grow */\n }\n.fc .fc-timegrid-axis-chunk { /* for advanced ScrollGrid */\n position: relative /* offset parent for now-indicator-container */\n\n }\n.fc .fc-timegrid-axis-chunk > table {\n position: relative;\n z-index: 1; /* above the now-indicator-container */\n }\n.fc .fc-timegrid-slots {\n position: relative;\n z-index: 1;\n }\n.fc .fc-timegrid-slot { /* a <td> */\n height: 1.5em;\n border-bottom: 0 /* each cell owns its top border */\n }\n.fc .fc-timegrid-slot:empty:before {\n content: '\\00a0'; /* make sure there's at least an empty space to create height for height syncing */\n }\n.fc .fc-timegrid-slot-minor {\n border-top-style: dotted;\n }\n.fc .fc-timegrid-slot-label-cushion {\n display: inline-block;\n white-space: nowrap;\n }\n.fc .fc-timegrid-slot-label {\n vertical-align: middle; /* vertical align the slots */\n }\n.fc {\n\n\n /* slots AND axis cells (top-left corner of view including the \"all-day\" text) */\n\n}\n.fc .fc-timegrid-axis-cushion,\n .fc .fc-timegrid-slot-label-cushion {\n padding: 0 4px;\n }\n.fc {\n\n\n /* axis cells (top-left corner of view including the \"all-day\" text) */\n /* vertical align is more complicated, uses flexbox */\n\n}\n.fc .fc-timegrid-axis-frame-liquid {\n height: 100%; /* will need liquid-hack in FF */\n }\n.fc .fc-timegrid-axis-frame {\n overflow: hidden;\n display: flex;\n align-items: center; /* vertical align */\n justify-content: flex-end; /* horizontal align. matches text-align below */\n }\n.fc .fc-timegrid-axis-cushion {\n max-width: 60px; /* limits the width of the \"all-day\" text */\n flex-shrink: 0; /* allows text to expand how it normally would, regardless of constrained width */\n }\n.fc-direction-ltr .fc-timegrid-slot-label-frame {\n text-align: right;\n }\n.fc-direction-rtl .fc-timegrid-slot-label-frame {\n text-align: left;\n }\n.fc-liquid-hack .fc-timegrid-axis-frame-liquid {\n height: auto;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n.fc .fc-timegrid-col.fc-day-today {\n background-color: var(--fc-today-bg-color);\n }\n.fc .fc-timegrid-col-frame {\n min-height: 100%; /* liquid-hack is below */\n position: relative;\n }\n.fc-media-screen.fc-liquid-hack .fc-timegrid-col-frame {\n height: auto;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n.fc-media-screen .fc-timegrid-cols {\n position: absolute; /* no z-index. children will decide and go above slots */\n top: 0;\n left: 0;\n right: 0;\n bottom: 0\n }\n.fc-media-screen .fc-timegrid-cols > table {\n height: 100%;\n }\n.fc-media-screen .fc-timegrid-col-bg,\n .fc-media-screen .fc-timegrid-col-events,\n .fc-media-screen .fc-timegrid-now-indicator-container {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n }\n.fc {\n\n /* bg */\n\n}\n.fc .fc-timegrid-col-bg {\n z-index: 2; /* TODO: kill */\n }\n.fc .fc-timegrid-col-bg .fc-non-business { z-index: 1 }\n.fc .fc-timegrid-col-bg .fc-bg-event { z-index: 2 }\n.fc .fc-timegrid-col-bg .fc-highlight { z-index: 3 }\n.fc .fc-timegrid-bg-harness {\n position: absolute; /* top/bottom will be set by JS */\n left: 0;\n right: 0;\n }\n.fc {\n\n /* fg events */\n /* (the mirror segs are put into a separate container with same classname, */\n /* and they must be after the normal seg container to appear at a higher z-index) */\n\n}\n.fc .fc-timegrid-col-events {\n z-index: 3;\n /* child event segs have z-indexes that are scoped within this div */\n }\n.fc {\n\n /* now indicator */\n\n}\n.fc .fc-timegrid-now-indicator-container {\n bottom: 0;\n overflow: hidden; /* don't let overflow of lines/arrows cause unnecessary scrolling */\n /* z-index is set on the individual elements */\n }\n.fc-direction-ltr .fc-timegrid-col-events {\n margin: 0 2.5% 0 2px;\n }\n.fc-direction-rtl .fc-timegrid-col-events {\n margin: 0 2px 0 2.5%;\n }\n.fc-timegrid-event-harness {\n position: absolute /* top/left/right/bottom will all be set by JS */\n}\n.fc-timegrid-event-harness > .fc-timegrid-event {\n position: absolute; /* absolute WITHIN the harness */\n top: 0; /* for when not yet positioned */\n bottom: 0; /* \" */\n left: 0;\n right: 0;\n }\n.fc-timegrid-event-harness-inset .fc-timegrid-event,\n.fc-timegrid-event.fc-event-mirror,\n.fc-timegrid-more-link {\n box-shadow: 0px 0px 0px 1px var(--fc-page-bg-color);\n}\n.fc-timegrid-event,\n.fc-timegrid-more-link { /* events need to be root */\n font-size: var(--fc-small-font-size);\n border-radius: 3px;\n}\n.fc-timegrid-event { /* events need to be root */\n margin-bottom: 1px /* give some space from bottom */\n}\n.fc-timegrid-event .fc-event-main {\n padding: 1px 1px 0;\n }\n.fc-timegrid-event .fc-event-time {\n white-space: nowrap;\n font-size: var(--fc-small-font-size);\n margin-bottom: 1px;\n }\n.fc-timegrid-event-short .fc-event-main-frame {\n flex-direction: row;\n overflow: hidden;\n }\n.fc-timegrid-event-short .fc-event-time:after {\n content: '\\00a0-\\00a0'; /* dash surrounded by non-breaking spaces */\n }\n.fc-timegrid-event-short .fc-event-title {\n font-size: var(--fc-small-font-size)\n }\n.fc-timegrid-more-link { /* does NOT inherit from fc-timegrid-event */\n position: absolute;\n z-index: 9999; /* hack */\n color: var(--fc-more-link-text-color);\n background: var(--fc-more-link-bg-color);\n cursor: pointer;\n margin-bottom: 1px; /* match space below fc-timegrid-event */\n}\n.fc-timegrid-more-link-inner { /* has fc-sticky */\n padding: 3px 2px;\n top: 0;\n}\n.fc-direction-ltr .fc-timegrid-more-link {\n right: 0;\n }\n.fc-direction-rtl .fc-timegrid-more-link {\n left: 0;\n }\n.fc {\n\n /* line */\n\n}\n.fc .fc-timegrid-now-indicator-line {\n position: absolute;\n z-index: 4;\n left: 0;\n right: 0;\n border-style: solid;\n border-color: var(--fc-now-indicator-color);\n border-width: 1px 0 0;\n }\n.fc {\n\n /* arrow */\n\n}\n.fc .fc-timegrid-now-indicator-arrow {\n position: absolute;\n z-index: 4;\n margin-top: -5px; /* vertically center on top coordinate */\n border-style: solid;\n border-color: var(--fc-now-indicator-color);\n }\n.fc-direction-ltr .fc-timegrid-now-indicator-arrow {\n left: 0;\n\n /* triangle pointing right. TODO: mixin */\n border-width: 5px 0 5px 6px;\n border-top-color: transparent;\n border-bottom-color: transparent;\n }\n.fc-direction-rtl .fc-timegrid-now-indicator-arrow {\n right: 0;\n\n /* triangle pointing left. TODO: mixin */\n border-width: 5px 6px 5px 0;\n border-top-color: transparent;\n border-bottom-color: transparent;\n }\n"; | ||
var css_248z = ".fc-v-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-v-event .fc-event-main{color:var(--fc-event-text-color);height:100%}.fc-v-event .fc-event-main-frame{display:flex;flex-direction:column;height:100%}.fc-v-event .fc-event-time{flex-grow:0;flex-shrink:0;max-height:100%;overflow:hidden}.fc-v-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-height:0}.fc-v-event .fc-event-title{bottom:0;max-height:100%;overflow:hidden;top:0}.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-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 .fc-timegrid .fc-daygrid-body{z-index:2}.fc .fc-timegrid-divider{padding:0 0 2px}.fc .fc-timegrid-body{min-height:100%;position:relative;z-index:1}.fc .fc-timegrid-axis-chunk{position:relative}.fc .fc-timegrid-axis-chunk>table,.fc .fc-timegrid-slots{position:relative;z-index:1}.fc .fc-timegrid-slot{border-bottom:0;height:1.5em}.fc .fc-timegrid-slot:empty:before{content:\"\\00a0\"}.fc .fc-timegrid-slot-minor{border-top-style:dotted}.fc .fc-timegrid-slot-label-cushion{display:inline-block;white-space:nowrap}.fc .fc-timegrid-slot-label{vertical-align:middle}.fc .fc-timegrid-axis-cushion,.fc .fc-timegrid-slot-label-cushion{padding:0 4px}.fc .fc-timegrid-axis-frame-liquid{height:100%}.fc .fc-timegrid-axis-frame{align-items:center;display:flex;justify-content:flex-end;overflow:hidden}.fc .fc-timegrid-axis-cushion{flex-shrink:0;max-width:60px}.fc-direction-ltr .fc-timegrid-slot-label-frame{text-align:right}.fc-direction-rtl .fc-timegrid-slot-label-frame{text-align:left}.fc-liquid-hack .fc-timegrid-axis-frame-liquid{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-timegrid-col-frame{min-height:100%;position:relative}.fc-media-screen.fc-liquid-hack .fc-timegrid-col-frame{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols{bottom:0;left:0;position:absolute;right:0;top:0}.fc-media-screen .fc-timegrid-cols>table{height:100%}.fc-media-screen .fc-timegrid-col-bg,.fc-media-screen .fc-timegrid-col-events,.fc-media-screen .fc-timegrid-now-indicator-container{left:0;position:absolute;right:0;top:0}.fc .fc-timegrid-col-bg{z-index:2}.fc .fc-timegrid-col-bg .fc-non-business{z-index:1}.fc .fc-timegrid-col-bg .fc-bg-event{z-index:2}.fc .fc-timegrid-col-bg .fc-highlight{z-index:3}.fc .fc-timegrid-bg-harness{left:0;position:absolute;right:0}.fc .fc-timegrid-col-events{z-index:3}.fc .fc-timegrid-now-indicator-container{bottom:0;overflow:hidden}.fc-direction-ltr .fc-timegrid-col-events{margin:0 2.5% 0 2px}.fc-direction-rtl .fc-timegrid-col-events{margin:0 2px 0 2.5%}.fc-timegrid-event-harness{position:absolute}.fc-timegrid-event-harness>.fc-timegrid-event{bottom:0;left:0;position:absolute;right:0;top:0}.fc-timegrid-event-harness-inset .fc-timegrid-event,.fc-timegrid-event.fc-event-mirror,.fc-timegrid-more-link{box-shadow:0 0 0 1px var(--fc-page-bg-color)}.fc-timegrid-event,.fc-timegrid-more-link{border-radius:3px;font-size:var(--fc-small-font-size)}.fc-timegrid-event{margin-bottom:1px}.fc-timegrid-event .fc-event-main{padding:1px 1px 0}.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-main-frame{flex-direction:row;overflow:hidden}.fc-timegrid-event-short .fc-event-time:after{content:\"\\00a0-\\00a0\"}.fc-timegrid-event-short .fc-event-title{font-size:var(--fc-small-font-size)}.fc-timegrid-more-link{background:var(--fc-more-link-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;margin-bottom:1px;position:absolute;z-index:9999}.fc-timegrid-more-link-inner{padding:3px 2px;top:0}.fc-direction-ltr .fc-timegrid-more-link{right:0}.fc-direction-rtl .fc-timegrid-more-link{left:0}.fc .fc-timegrid-now-indicator-line{border-color:var(--fc-now-indicator-color);border-style:solid;border-width:1px 0 0;left:0;position:absolute;right:0;z-index:4}.fc .fc-timegrid-now-indicator-arrow{border-color:var(--fc-now-indicator-color);border-style:solid;margin-top:-5px;position:absolute;z-index:4}.fc-direction-ltr .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 0 5px 6px;left:0}.fc-direction-rtl .fc-timegrid-now-indicator-arrow{border-bottom-color:transparent;border-top-color:transparent;border-width:5px 6px 5px 0;right:0}"; | ||
injectStyles(css_248z); | ||
@@ -14,0 +14,0 @@ |
{ | ||
"name": "@fullcalendar/timegrid", | ||
"version": "6.0.0-beta.4", | ||
"version": "6.0.0", | ||
"title": "FullCalendar Time Grid Plugin", | ||
"description": "Display events on time slots", | ||
"keywords": [ | ||
"calendar", | ||
"event", | ||
"full-sized" | ||
"full-sized", | ||
"fullcalendar", | ||
"time", | ||
"slots" | ||
], | ||
"homepage": "https://fullcalendar.io/", | ||
"docs": "https://fullcalendar.io/docs/timegrid-view", | ||
"homepage": "https://fullcalendar.io/docs/timegrid-view", | ||
"dependencies": { | ||
"@fullcalendar/daygrid": "~6.0.0" | ||
}, | ||
"peerDependencies": { | ||
"@fullcalendar/core": "~6.0.0" | ||
}, | ||
"type": "module", | ||
"bugs": "https://fullcalendar.io/reporting-bugs", | ||
@@ -15,3 +26,2 @@ "repository": { | ||
"url": "https://github.com/fullcalendar/fullcalendar.git", | ||
"homepage": "https://github.com/fullcalendar/fullcalendar", | ||
"directory": "packages/timegrid" | ||
@@ -26,11 +36,2 @@ }, | ||
"copyright": "2022 Adam Shaw", | ||
"type": "module", | ||
"title": "FullCalendar Time Grid Plugin", | ||
"description": "Display your events on a grid of time slots", | ||
"dependencies": { | ||
"@fullcalendar/daygrid": "6.0.0-beta.4" | ||
}, | ||
"peerDependencies": { | ||
"@fullcalendar/core": "6.0.0-beta.4" | ||
}, | ||
"main": "./index.cjs", | ||
@@ -37,0 +38,0 @@ "module": "./index.js", |
# FullCalendar Time Grid Plugin | ||
Display your events on a grid of time slots | ||
Display events on time slots | ||
[View the docs »](https://fullcalendar.io/docs/timegrid-view) | ||
## Installation | ||
This package was created from the [FullCalendar monorepo »](https://github.com/fullcalendar/fullcalendar) | ||
Install the necessary packages: | ||
```sh | ||
npm install @fullcalendar/core @fullcalendar/timegrid | ||
``` | ||
## Usage | ||
Instantiate a Calendar with the necessary plugin: | ||
```js | ||
import { Calendar } from '@fullcalendar/core' | ||
import timeGridPlugin from '@fullcalendar/timegrid' | ||
const calendarEl = document.getElementById('calendar') | ||
const calendar = new Calendar(calendarEl, { | ||
plugins: [timeGridPlugin], | ||
initialView: 'timeGridWeek', | ||
events: [ | ||
{ title: 'Meeting', start: new Date() } | ||
] | ||
}) | ||
calendar.render() | ||
``` |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
0
33
236182
3766
+ Added@fullcalendar/core@6.0.3(transitive)
+ Added@fullcalendar/daygrid@6.0.3(transitive)
- Removed@fullcalendar/core@6.0.0-beta.4(transitive)
- Removed@fullcalendar/daygrid@6.0.0-beta.4(transitive)
Updated@fullcalendar/daygrid@~6.0.0