!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var o in n)("object"==typeof exports?exports:e)[o]=n[o]}}(window,(function(){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var s=t[o]={i:o,l:!1,exports:{}};return e[o].call(s.exports,s,s.exports,n),s.l=!0,s.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)n.d(o,s,function(t){return e[t]}.bind(null,s));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";n.r(t);var o,s="fslightbox-",i="".concat(s,"styles"),r="".concat(s,"full-dimension"),c="".concat(s,"cursor-grabbing"),a="".concat(s,"flex-centered"),u="".concat(s,"open"),l="".concat(s,"transform-transition"),d="".concat(s,"absoluted"),h="".concat(s,"slide-btn"),p="".concat(h,"-container"),m="".concat(s,"fade-in"),f="".concat(s,"fade-out"),g=m+"-strong",b=f+"-strong",v="".concat(s,"caption"),x=v+"-inner",w=v+"-active",S="".concat(s,"opacity-"),y="".concat(S,"0"),T="".concat(S,"1"),C="".concat(s,"source"),L="".concat(C,"-inner"),A="".concat(C,"-outer"),I="".concat(s,"sources-outers-wrapper"),F="".concat(s,"thumb"),z=F+"s",E="".concat(z,"-loader"),O="".concat(z,"-cursorer"),N="".concat(z,"-inner"),P=F+"s-active",M=F+"-wrapper",B=M+"-darkener",k=F+"-invalid",H=F+"-active";function W(e){return(W="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}"object"===("undefined"==typeof document?"undefined":W(document))&&((o=document.createElement("style")).className=i,o.appendChild(document.createTextNode(".fslightbox-fade-in{animation:fslightbox-fade-in .3s cubic-bezier(0,0,.7,1)}.fslightbox-fade-out{animation:fslightbox-fade-out .3s ease}.fslightbox-fade-in-strong{animation:fslightbox-fade-in-strong .3s cubic-bezier(0,0,.7,1)}.fslightbox-fade-out-strong{animation:fslightbox-fade-out-strong .3s ease}@keyframes fslightbox-fade-in{from{opacity:.65}to{opacity:1}}@keyframes fslightbox-fade-out{from{opacity:.35}to{opacity:0}}@keyframes fslightbox-fade-in-strong{from{opacity:.3}to{opacity:1}}@keyframes fslightbox-fade-out-strong{from{opacity:1}to{opacity:0}}.fslightbox-scale-in{animation:fslightbox-scale-in .5s ease}@keyframes fslightbox-scale-in{from{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.fslightbox-absoluted{position:absolute;top:0;left:0}.fslightbox-cursor-grabbing{cursor:grabbing!important}.fslightbox-full-dimension{width:100%;height:100%}.fslightbox-open{overflow:hidden;height:100%}.fslightbox-flex-centered{display:flex;justify-content:center;align-items:center}.fslightbox-opacity-0{opacity:0!important}.fslightbox-opacity-1{opacity:1!important}.fslightbox-scrollbarfix{padding-right:17px}.fslightbox-transform-transition{transition:transform .3s}.fslightbox-container{font-family:Helvetica,sans-serif;position:fixed;top:0;left:0;background:linear-gradient(rgba(30,30,30,.9),#000 1810%);z-index:9999999;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.fslightbox-container *{box-sizing:border-box}.fslightbox-svg-path{transition:fill .15s ease;fill:#d1d2d2}.fslightbox-loader{display:block;margin:auto;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:67px;height:67px}.fslightbox-loader div{box-sizing:border-box;display:block;position:absolute;width:54px;height:54px;margin:6px;border:5px solid;border-color:#999 transparent transparent transparent;border-radius:50%;animation:fslightbox-loader 1.2s cubic-bezier(.5,0,.5,1) infinite}.fslightbox-loader div:nth-child(1){animation-delay:-.45s}.fslightbox-loader div:nth-child(2){animation-delay:-.3s}.fslightbox-loader div:nth-child(3){animation-delay:-.15s}@keyframes fslightbox-loader{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.fslightbox-thumbs-loader{width:54px!important;height:54px!important}.fslightbox-thumbs-loader div{border-width:4px!important;width:44px!important;height:44px!important}.fslightbox-sources-outers-wrapper{z-index:2;top:0;transition:transform .3s}.fslightbox-nav{height:45px;width:100%;transition:opacity .3s}.fslightbox-slide-number-container{display:flex;justify-content:center;align-items:center;position:relative;height:100%;font-size:15px;color:#d7d7d7;z-index:0;max-width:55px;text-align:left}.fslightbox-slide-number-container .fslightbox-flex-centered{height:100%}.fslightbox-slash{display:block;margin:0 5px;width:1px;height:12px;transform:rotate(15deg);background:#fff}.fslightbox-toolbar{position:absolute;z-index:3;right:0;top:0;height:45px;display:flex;background:rgba(35,35,35,.65)}.fslightbox-toolbar-button{height:100%;width:45px;cursor:pointer}.fslightbox-toolbar-button:hover .fslightbox-svg-path{fill:#fff}.fslightbox-slide-btn-container{display:flex;align-items:center;padding:12px 12px 12px 6px;position:absolute;top:50%;cursor:pointer;z-index:3;transform:translateY(-50%);transition:opacity .3s}@media (min-width:476px){.fslightbox-slide-btn-container{padding:22px 22px 22px 6px}}@media (min-width:768px){.fslightbox-slide-btn-container{padding:30px 30px 30px 6px}}.fslightbox-slide-btn-container:hover .fslightbox-svg-path{fill:#f1f1f1}.fslightbox-slide-btn{padding:9px;font-size:26px;background:rgba(35,35,35,.65)}@media (min-width:768px){.fslightbox-slide-btn{padding:10px}}@media (min-width:1600px){.fslightbox-slide-btn{padding:11px}}.fslightbox-slide-btn-container-previous{left:0}@media (max-width:475.99px){.fslightbox-slide-btn-container-previous{padding-left:3px}}.fslightbox-slide-btn-container-next{right:0;padding-left:12px;padding-right:3px}@media (min-width:476px){.fslightbox-slide-btn-container-next{padding-left:22px}}@media (min-width:768px){.fslightbox-slide-btn-container-next{padding-left:30px}}@media (min-width:476px){.fslightbox-slide-btn-container-next{padding-right:6px}}.fslightbox-down-event-detector{position:absolute;z-index:1}.fslightbox-slide-swiping-hoverer{z-index:4}.fslightbox-slideshow-bar{width:0;height:2px;z-index:4;opacity:0;background:#fff;transition:opacity .4s}.fslightbox-invalid-file-wrapper{font-size:24px;color:#eaebeb;margin:auto}.fslightbox-video{object-fit:cover}.fslightbox-youtube-iframe{border:0}.fslightbox-source{position:relative;display:block;margin:auto;z-index:2;opacity:0;cursor:zoom-in;transform:translateZ(0);transition:transform .3s;backface-visibility:hidden}.fslightbox-source-inner{transition:transform .3s}.fslightbox-source-inner-pinching{transition:transform .1s linear}.fslightbox-source-outer{will-change:transform}.fslightbox-thumbs{position:absolute;bottom:0;left:0;width:100%;z-index:-1;background:linear-gradient(180deg,rgba(0,0,0,0),#1e1e1e 100%);opacity:0;transition:opacity .2s;padding:0 5px 12px 5px;height:114px}@media (min-width:992px){.fslightbox-thumbs{padding-bottom:13px;height:120px}}@media (min-width:1600px){.fslightbox-thumbs{padding-bottom:14px;height:126px}}.fslightbox-thumbs-active{opacity:1;z-index:3}.fslightbox-thumbs-inner{height:100%;display:inline-flex;justify-content:flex-start;align-items:center}.fslightbox-thumb-wrapper{position:relative;height:100%;margin:0 4px;opacity:0;transition:opacity .3s}.fslightbox-thumb-wrapper svg{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);cursor:pointer;z-index:1}.fslightbox-thumb-wrapper path{fill:#fff}.fslightbox-thumb-wrapper-darkener{position:absolute;top:2px;left:2px;width:calc(100% - 4px);height:calc(100% - 4px);background:rgba(0,0,0,.4);cursor:pointer}.fslightbox-thumb{cursor:pointer;border-radius:1px;height:100%;width:auto!important;border:2px solid transparent}.fslightbox-thumb-active{border:2px solid #fff!important}.fslightbox-thumb-invalid{background:linear-gradient(to bottom,#0f0f0f,rgba(15,15,15,.5));display:inline-block;min-width:155px}.fslightbox-thumbs-cursorer{z-index:4;cursor:grabbing}.fslightbox-caption{position:absolute;bottom:0;left:50%;width:100%;background:linear-gradient(180deg,rgba(0,0,0,0),#1e1e1e 100%);transform:translateX(-50%);opacity:0;transition:opacity .2s;z-index:-1}.fslightbox-caption-inner{padding:25px;max-width:1200px;color:#eee;text-align:center;font-size:14px}@media (min-width:768px){.fslightbox-caption-inner{padding:30px 25px}}.fslightbox-caption-active{opacity:1;z-index:3}")),document.head.appendChild(o));function Y(e){var t,n=e.props,o=0,s={};this.getSourceTypeFromLocalStorageByUrl=function(e){return t[e]?t[e]:i(e)},this.handleReceivedSourceTypeForUrl=function(e,n){void 0!==s[n]&&(o--,s[n]=e,0===o&&(!function(e,t){for(var n in t)e[n]=t[n]}(t,s),localStorage.setItem("fslightbox-types",JSON.stringify(t))))};var i=function(e){o++,s[e]=!1};n.disableLocalStorage?(this.getSourceTypeFromLocalStorageByUrl=function(){},this.handleReceivedSourceTypeForUrl=function(){}):(t=JSON.parse(localStorage.getItem("fslightbox-types")))||(t={},this.getSourceTypeFromLocalStorageByUrl=i)}function D(e,t,n,o){var s=this,i=e.collections.sourcesTransformers,r=e.data.sourcesTranslatesY,c=e.elements.sources,a=1;this.styleSourceUsingScaleAndHeight=function(e,u){innerWidth<innerHeight&&n>o+u?(a=1/e,r[t]=c[t].getBoundingClientRect().height*(a-1)/2,i[t].translateYAndScale(r[t],a)):(s.ifSourcesScaledResetScale(),delete r[t])},this.ifSourcesScaledResetScale=function(){1!==a&&(a=1,i[t].translateYAndScale(0,1),delete r[t])}}function R(e,t,n,o){var s=this,i=e.data,r=e.elements,c=e.resolve,a=i.captionedSourcesOutersScales,u=c(D,[t,n,o]),l=n/o,d=0;this.styleAll=function(){s.styleSize(),s.styleScale()},this.styleSize=function(){if((d=i.maxSourceWidth/l)<i.maxSourceHeight)return n<i.maxSourceWidth&&(d=o),h();d=o>i.maxSourceHeight?i.maxSourceHeight:o,h()},this.styleScale=function(){i.isThumbing?u.styleSourceUsingScaleAndHeight(i.thumbedSourcesScale,r.thumbsContainer.offsetHeight):void 0!==a[t]&&1!==a[t]?u.styleSourceUsingScaleAndHeight(a[t],r.captions[t].offsetHeight):u.ifSourcesScaledResetScale()};var h=function(){var e=r.sources[t].style;e.width=d*l+"px",e.height=d+"px"}}function X(e,t){var n,o,s=e.elements.sources;this.translateY=function(e){o=e,i()},this.translateYAndScale=function(e,t){o=e,n=t,i()};var i=function(){s[t].style.transform="translateY(".concat(o,"px) scale(").concat(n,")")}}function U(e,t,n,o){var s=this,i=e.collections,r=i.sourcesStylers,c=i.sourcesTransformers,a=e.elements,u=a.sources,l=a.sourcesInners,d=a.sourcesOuters,h=e.resolve,p=e.props.initialAnimation;this.runNormalLoadActions=function(){u[t].classList.add(T),l[t].classList.add(p),d[t].removeChild(d[t].firstChild)},this.runInitialLoadActions=function(){s.runNormalLoadActions(),c[t]=h(X,[t]);var e=h(R,[t,n,o]);e.styleAll(),r[t]=e}}function Z(e,t){var n,o=this,s=e.elements.sources,i=e.props,r=e.resolve;this.handleImageLoad=function(e){var t=e.target,n=t.width,s=t.height;o.handleImageLoad=c(n,s)},this.handleVideoLoad=function(e){var t=e.target,s=t.videoWidth,i=t.videoHeight;n=!0,o.handleVideoLoad=c(s,i)},this.handleNotMetaDatedVideoLoad=function(){n||o.handleYoutubeLoad()},this.handleYoutubeLoad=function(){var e=1920,t=1080;i.maxYoutubeDimensions&&(e=i.maxYoutubeDimensions.width,t=i.maxYoutubeDimensions.height),o.handleYoutubeLoad=c(e,t)},this.handleCustomLoad=function(){setTimeout((function(){o.handleCustomLoad=c(s[t].offsetWidth,s[t].offsetHeight)}))};var c=function(e,n){var o=r(U,[t,e,n]);return o.runInitialLoadActions(),o.runNormalLoadActions}}function j(e,t){var n=e.collections.sourcesLoadsHandlers,o=e.elements,s=o.sources,i=o.sourcesInners,r=e.props.sources;s[t]=document.createElement("img"),s[t].className=C,s[t].src=r[t],s[t].onload=n[t].handleImageLoad,i[t].appendChild(s[t])}function V(e,t){var n=e.collections,o=n.sourcesLoadsHandlers,s=(n.sourcesStylers,e.elements),i=s.sources,r=s.sourcesInners,c=e.props,a=c.sources;i[t]=document.createElement("video"),i[t].className=C,i[t].src=a[t],i[t].onloadedmetadata=function(e){o[t].handleVideoLoad(e)},i[t].controls=!0,c.videosPosters[t]&&(i[t].poster=c.videosPosters[t]);var u=document.createElement("source");u.src=a[t],i[t].appendChild(u),setTimeout(o[t].handleNotMetaDatedVideoLoad,3e3),r[t].appendChild(i[t])}function q(e,t){var n=e.collections.sourcesLoadsHandlers,o=e.elements,i=o.sources,r=o.sourcesInners,c=e.props.sources;i[t]=document.createElement("iframe"),i[t].className="".concat(C," ").concat(s,"youtube-iframe"),i[t].src="https://www.youtube.com/embed/".concat(c[t].match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/)[2]),i[t].allowFullscreen=!0,r[t].appendChild(i[t]),n[t].handleYoutubeLoad()}function _(e,t){var n=e.collections.sourcesLoadsHandlers,o=e.elements,s=o.sources,i=o.sourcesInners,r=e.props,c=r.sources;s[t]=c[t],s[t].classList.add(C),r.customClasses[t]&&s[t].classList.add(r.customClasses[t]),i[t].appendChild(s[t]),n[t].handleCustomLoad()}function J(e,t){var n=e.elements,o=n.sources,i=n.sourcesInners,r=n.sourcesOuters;e.props.sources;o[t]=document.createElement("div"),o[t].className="".concat(s,"invalid-file-wrapper ").concat(a),o[t].innerHTML="Invalid source",i[t].classList.add(g),i[t].appendChild(o[t]),r[t].removeChild(r[t].firstChild)}function G(e,t,n){var o=e.props.thumbsIcons;if(o[n]){t.appendChild(o[n]);var s=document.createElement("div");s.className=B,t.appendChild(s)}}function $(e,t,n){var o=e.elements,s=o.thumbsWrappers,i=o.thumbsInner;s[t]=document.createElement("div"),s[t].className=M,G(e,s[t],t),function(e,t,n,o){var s=e.core.thumbLoadHandler.handleLoad,i=e.elements.thumbs,r=e.stageIndexes.current;i[n]=document.createElement("img"),i[n].src=o;var c=F;r===n&&(c+=" ".concat(H)),i[n].className=c,i[n].onload=s,t.appendChild(i[n])}(e,s[t],t,n),i.appendChild(s[t])}function K(e,t,n,o,i){var r=document.createElementNS("http://www.w3.org/2000/svg","svg");r.setAttributeNS(null,"width",t),r.setAttributeNS(null,"height",t),r.setAttributeNS(null,"viewBox",o);var c=document.createElementNS("http://www.w3.org/2000/svg","path");return c.setAttributeNS(null,"class","".concat(s,"svg-path")),c.setAttributeNS(null,"d",i),r.appendChild(c),e.appendChild(r),r}function Q(e,t){var n=e.elements,o=n.thumbsWrappers,s=n.thumbsInner;o[t]=document.createElement("div"),o[t].className="".concat(k," ").concat(M),G(e,o[t],t),function(e,t,n){var o=e.core.thumbLoadHandler.handleLoad,s=e.elements.thumbs,i=e.stageIndexes.current;s[n]=document.createElement("div");var r="".concat(F," ").concat(a);i===n&&(r+=" ".concat(H)),s[n].className=r,K(s[n],"22px",0,"0 0 30 30","M15,3C8.373,3,3,8.373,3,15c0,6.627,5.373,12,12,12s12-5.373,12-12C27,8.373,21.627,3,15,3z M16.212,8l-0.2,9h-2.024l-0.2-9 H16.212z M15.003,22.189c-0.828,0-1.323-0.441-1.323-1.182c0-0.755,0.494-1.196,1.323-1.196c0.822,0,1.316,0.441,1.316,1.196 C16.319,21.748,15.825,22.189,15.003,22.189z"),t.appendChild(s[n]),setTimeout(o)}(e,o[t],t),s.appendChild(o[t])}function ee(e){var t=e.collections.thumbsRenderFunctions,n=e.props.sources,o=0;this.addFunctionToToBeRenderedAtIndex=function(e,n){t[n]=e,o++},this.renderThumbsIfAllTypesDetected=function(){if(o===n.length)for(var e=0;e<n.length;e++)t[e]&&(t[e](),delete t[e])}}function te(e){var t=e.data,n=e.props,o=n.showThumbsOnMount,s=n.sources,i=n.thumbs,r=(0,e.resolve)(ee);this.buildThumbForTypeAndIndex=function(n,c){var a;a=i[c]?function(){return $(e,c,i[c])}:"image"===n?function(){return $(e,c,s[c])}:function(){return Q(e,c)},r.addFunctionToToBeRenderedAtIndex(a,c),(o||t.isThumbing)&&r.renderThumbsIfAllTypesDetected()}}function ne(e){var t,n=e.collections,o=n.sourcesLoadsHandlers,s=n.sourcesRenderFunctions,i=e.core.sourceDisplayFacade,r=e.props.disableThumbs,c=e.resolve;r||(t=c(te)),this.runActionsForSourceTypeAndIndex=function(n,a){var u;switch("invalid"!==n&&(o[a]=c(Z,[a])),n){case"image":u=j;break;case"video":u=V;break;case"youtube":u=q;break;case"custom":u=_;break;default:u=J}s[a]=function(){return u(e,a)},i.displaySourcesWhichShouldBeDisplayed(),r||t.buildThumbForTypeAndIndex(n,a)}}function oe(){var e,t,n,o,s,i={isUrlYoutubeOne:function(e){var t=document.createElement("a");return t.href=e,"www.youtube.com"===t.hostname},getTypeFromResponseContentType:function(e){return e.slice(0,e.indexOf("/"))}};this.setUrlToCheck=function(t){e=t},this.getSourceType=function(t){if(i.isUrlYoutubeOne(e))return t("youtube");n=t,(o=new XMLHttpRequest).open("GET",e,!0),o.onreadystatechange=r,o.send()};var r=function(){if(4===o.readyState&&0===o.status&&!s)return c();if(2===o.readyState){if(200!==o.status&&206!==o.status)return s=!0,c();s=!0,u(i.getTypeFromResponseContentType(o.getResponseHeader("content-type"))),a()}},c=function(){t="invalid",a()},a=function(){o.abort(),n(t)},u=function(e){switch(e){case"image":t="image";break;case"video":t="video";break;default:t="invalid"}}}function se(e,t,n){var o=e.props,s=o.types,i=o.type,r=o.sources,c=e.resolve;this.getTypeSetByClientForIndex=function(e){var t;return s&&s[e]?t=s[e]:i&&(t=i),t},this.retrieveTypeWithXhrForIndex=function(e){var o=c(oe);o.setUrlToCheck(r[e]),o.getSourceType((function(o){t.handleReceivedSourceTypeForUrl(o,r[e]),n.runActionsForSourceTypeAndIndex(o,e)}))}}function ie(e,t){var n=e.elements,o=n.sourcesOutersWrapper,s=n.sourcesOuters;s[t]=document.createElement("div"),s[t].className="".concat(A," ").concat(d," ").concat(r," ").concat(a),s[t].innerHTML='<div class="fslightbox-loader"><div></div><div></div><div></div><div></div></div>',o.appendChild(s[t]),function(e,t){var n=e.elements,o=n.sourcesOuters,s=n.sourcesInners;s[t]=document.createElement("div"),s[t].className=L,o[t].appendChild(s[t])}(e,t)}function re(){try{return document.createEvent("TouchEvent"),!0}catch(e){return!1}}function ce(e,t){return function(){t.apply(void 0,arguments)&&e.apply(void 0,arguments)}}function ae(e){return!e.touches||e.touches.length<=2}function ue(){this.getMouseDownListenerFunc=function(e){return re()?void 0:ce(e,ae)},this.getTouchStartListenerForFunc=function(e){return re()?ce(e,ae):void 0}}function le(e,t){var n=document.createElement("div");return n.className="".concat(s,"toolbar-button ").concat(a),n.title=t,e.appendChild(n),n}function de(e,t,n){var o=le(e,t.title);o.onclick=n,K(o,t.width,t.height,t.viewBox,t.d)}function he(e,t){var n=e.props,o=n.customToolbarButtons,i=n.disableThumbs,r=n.toolbarButtons,c=e.core,a=c.clickZoomer,u=a.zoomIn,l=a.zoomOut,d=c.lightboxCloser.close,h=document.createElement("div");h.className="".concat(s,"toolbar"),t.appendChild(h);for(var p=0;p<o.length;p++)de(h,o[p],o[p].onClick);i||de(h,r.thumbs,e.core.thumbsToggler.toggleThumbs),de(h,r.zoomIn,u),de(h,r.zoomOut,l),function(e,t){var n=e.core.slideshowManager.toggleSlideshow,o=e.componentsServices,s=e.props.toolbarButtons.slideshow,i=s.start,r=s.pause,c=le(t,i.title);c.onclick=n;var a=K(c,i.width,i.height,i.viewBox,i.d);o.startSlideshow=function(){c.title=r.title,a.setAttributeNS(null,"width",r.width),a.setAttributeNS(null,"height",r.height),a.setAttributeNS(null,"viewBox",r.viewBox),a.firstChild.setAttributeNS(null,"d",r.d)},o.stopSlideshow=function(){c.title=i.title,a.setAttributeNS(null,"width",i.width),a.setAttributeNS(null,"height",i.height),a.setAttributeNS(null,"viewBox",i.viewBox),a.firstChild.setAttributeNS(null,"d",i.d)}}(e,h),function(e,t){var n,o=e.core.fullscreenToggler,s=e.componentsServices,i=e.data,r=e.props.toolbarButtons.fullscreen,c=r.enter,a=r.exit,u=le(t);i.isFullscreenOpen=!!document.fullscreenElement,i.isFullscreenOpen=!!document.fullscreenElement,i.isFullscreenOpen?(n=K(u,a.width,a.height,a.viewBox,a.d),u.title="Exit fullscreen"):(n=K(u,c.width,c.height,c.viewBox,c.d),u.title="Enter fullscreen"),s.enterFullscreen=function(){i.isFullscreenOpen=!0,u.title="Exit fullscreen",n.setAttributeNS(null,"width",a.width),n.setAttributeNS(null,"height",a.height),n.setAttributeNS(null,"viewBox",a.viewBox),n.firstChild.setAttributeNS(null,"d",a.d)},s.exitFullscreen=function(){i.isFullscreenOpen=!1,u.title="Enter fullscreen",n.setAttributeNS(null,"width",c.width),n.setAttributeNS(null,"height",c.height),n.setAttributeNS(null,"viewBox",c.viewBox),n.firstChild.setAttributeNS(null,"d",c.d)},u.onclick=function(){i.isFullscreenOpen?(s.exitFullscreen(),o.exitFullscreen()):(s.enterFullscreen(),o.enterFullscreen())}}(e,h),de(h,r.close,d)}function pe(e){var t=e.props.sources,n=e.elements;n.nav=document.createElement("div"),n.nav.className="".concat(s,"nav"),n.container.appendChild(n.nav),he(e,n.nav),t.length>1&&function(e,t){var n=e.componentsServices,o=e.props.sources,i=(e.stageIndexes,document.createElement("div"));i.className="".concat(s,"slide-number-container");var r=document.createElement("div");r.className=a;var c=document.createElement("span");n.setSlideNumber=function(e){return c.innerHTML=e};var u=document.createElement("span");u.className="".concat(s,"slash");var l=document.createElement("div");l.innerHTML=o.length,i.appendChild(r),r.appendChild(c),r.appendChild(u),r.appendChild(l),t.appendChild(i),setTimeout((function(){r.offsetWidth>55&&(i.style.justifyContent="flex-start")}))}(e,n.nav)}function me(e,t){var n=this,o=e.elements.sourcesOuters,s=e.props,i=0,r=0,c=0,a=0;this.translate=function(e,t){return r=e,void 0!==t&&(c=t),n},this.getTranslateX=function(){return i},this.getTranslateY=function(){return c},this.negative=function(){u(-(1+s.slideDistance)*innerWidth)},this.zero=function(){u(0)},this.positive=function(){u((1+s.slideDistance)*innerWidth)},this.scale=function(e){a=e,l()},this.negativeAndScale=function(e){a=e,n.negative()};var u=function(e){i=e+r,l(),r=0},l=function(){d(a?"translate(".concat(i,"px, ").concat(c,"px) scale(").concat(a,")"):"translate(".concat(i,"px, ").concat(c,"px)"))},d=function(e){o[t].style.transform=e}}function fe(e,t){var n=e.core.slideChangeFacade,o=e.elements,s=e.props.slideButtons,i=t.charAt(0).toUpperCase()+t.slice(1),r="slideButton".concat(i),c=s[t];o[r]=document.createElement("div"),o[r].className="".concat(p," ").concat(p,"-").concat(t),o[r].title=c.title,o[r].onclick=n["changeTo".concat(i)],function(e,t){var n=document.createElement("div");n.className="".concat(h," ").concat(a),K(n,t.width,t.height,t.viewBox,t.d),e.appendChild(n)}(o[r],c),o.container.appendChild(o[r])}function ge(e,t){var n=e.classList;n.contains(t)||n.add(t)}function be(e){var t=e.collections,n=t.sourcesOutersTransformers,o=t.sourcesStylers,s=t.thumbsRenderFunctions,i=e.core.zoomer,r=e.data,c=e.elements,a=e.props.sources,u=e.stageIndexes,d=r.captionedSourcesOutersScales;this.openThumbs=function(){i.ifZoomingResetZoom(),c.thumbsContainer.classList.add(P),h("remove"),r.isThumbing=!0;for(var e=0;e<a.length;e++)p(e),n[e].translate(0,r.sourcesOutersThumbsTranslateY).scale(r.thumbedSourcesScale),s[e]&&(s[e](),delete s[e])},this.closeThumbs=function(){i.ifZoomingResetZoom(),c.thumbsContainer.classList.remove(P),h("add"),r.isThumbing=!1;for(var e=0;e<a.length;e++)p(e),d[e]&&n[e].translate(0,r.sourcesOutersNoThumbsTranslatesY[e]).scale(d[e])};var h=function(e){c.captions[u.current]&&c.captions[u.current].classList[e](w)},p=function(e){o[e]&&o[e].styleScale(),ge(c.sourcesOuters[e],l)}}function ve(e,t){var n=e.classList;n.contains(t)&&n.remove(t)}function xe(e){var t=e.data,n=e.elements,o=e.stageIndexes;this.runActions=function(){ve(n.thumbsContainer,a);var e=innerWidth/2,i=n.thumbsWrappers[o.current],r=i.offsetLeft+i.offsetWidth/2,c=t.thumbsInnerWidth-r;r>e&&c>e?s(e-r):r>e?s(innerWidth-t.thumbsInnerWidth-9):c>e&&s(0)},this.runToThinThumbsActions=function(){ge(n.thumbsContainer,a),s(0)};var s=function(e){t.thumbsTransform=e,n.thumbsInner.style.transform="translateX(".concat(e,"px)")}}function we(e,t){var n=[];return function(){n.push(!0),setTimeout((function(){n.pop(),n.length||e()}),t)}}function Se(e){var t,n,o,s,i,r=e.core,c=e.collections,a=e.data,u=e.elements,d=e.props;a.thumbsInnerWidth=null,a.thumbsTransform=0,a.isThumbing=d.showThumbsOnMount,a.thumbedSourcesScale=null,e.thumbsSwipingProps={isSwiping:!1,downClientX:null,swipedX:null},c.thumbsRenderFunctions=[],r.thumbLoadHandler={},r.thumbsOpeningActions={},r.thumbsTransformer={},r.thumbsTransformTransitioner={},r.thumbsToggler={},r.thumbsSwipingDown={},u.thumbsContainer=null,u.thumbs=[],u.thumbsWrappers=[],u.thumbsComponents=[],u.thumbsInner=null,function(e){var t=e.core,n=t.thumbLoadHandler,o=t.windowResizeActioner,s=e.componentsServices,i=e.data,r=e.elements.thumbsWrappers;n.handleLoad=function(){if(i.unloadedThumbsCount--,0===i.unloadedThumbsCount){for(var e=0;e<r.length;e++)r[e].classList.add(T);o.runThumbsActions(),s.hideThumbsLoader()}}}(e),function(e){var t=e.core.thumbsToggler,n=e.data,o=(0,e.resolve)(be);t.toggleThumbs=function(){n.isThumbing?o.closeThumbs():o.openThumbs()}}(e),function(e){var t=e.core,n=t.thumbsTransformer,o=t.thumbsTransformTransitioner,s=e.data,i=(0,e.resolve)(xe);n.transformToCurrent=function(){s.thumbsInnerWidth>innerWidth?i.runActions():i.runToThinThumbsActions()},n.transformToCurrentWithTransition=function(){s.thumbsInnerWidth>innerWidth&&o.callActionWithTransition(i.runActions)}}(e),function(e){var t=e.core.thumbsTransformTransitioner,n=e.elements,o=we((function(){n.thumbsInner.classList.remove(l)}),300);t.callActionWithTransition=function(e){n.thumbsInner.classList.add(l),e(),o()}}(e),n=(t=e).core,o=n.thumbsSwipingDown,s=n.pointeringBucket,i=t.thumbsSwipingProps,o.listener=function(e){s.runSwipingDownActionsForPropsAndEvent(i,e),e.touches||e.preventDefault()}}function ye(e){var t=e.componentsServices,n=e.elements,o=e.data;n.thumbsContainer=document.createElement("div");var s=z;o.isThumbing&&(s+=" ".concat(P)),n.thumbsContainer.className=s,n.container.appendChild(n.thumbsContainer),n.thumbsContainer.innerHTML='<div data-test-id="thumbs-loader" class="fslightbox-loader '.concat(E,'"><div></div><div></div><div></div><div></div></div>'),t.hideThumbsLoader=function(){n.thumbsContainer.removeChild(n.thumbsContainer.firstChild)},function(e){var t=e.elements;t.thumbsCursorer=document.createElement("div"),t.thumbsCursorer.className="".concat(O," ").concat(r," ").concat(d)}(e),function(e){var t=e.core.thumbsSwipingDown.listener,n=e.elements,o=new ue;n.thumbsInner=document.createElement("div"),n.thumbsInner.className=N,n.thumbsInner.addEventListener("mousedown",o.getMouseDownListenerFunc(t)),n.thumbsInner.addEventListener("touchstart",o.getTouchStartListenerForFunc(t)),n.thumbsContainer.appendChild(n.thumbsInner)}(e)}function Te(e){var t=this,n=e.core,o=n.eventsDispatcher,s=n.fullscreenToggler,i=n.globalEventsController,r=n.scrollbarRecompensor,c=n.slideshowManager,a=n.zoomer,l=e.data,d=e.elements,h=e.sourcesPointerProps;this.isLightboxFadingOut=!1,this.runActions=function(){t.isLightboxFadingOut=!0,d.container.classList.add(b),i.removeListeners(),c.resetSlideshow(),l.isFullscreenOpen&&s.exitFullscreen(),a.ifZoomingResetZoom(),setTimeout((function(){t.isLightboxFadingOut=!1,h.isSwiping=!1,d.container.classList.remove(b),document.documentElement.classList.remove(u),r.removeRecompense(),document.body.removeChild(d.container),o.dispatch("onClose")}),270)}}function Ce(e){var t,n=e.collections.sourcesOutersTransformers,o=e.componentsServices,s=e.data,i=s.captionedSourcesOutersScales,r=s.sourcesOutersNoThumbsTranslatesY;this.handleFullscreenChange=function(){screen.height!==innerHeight&&o.exitFullscreen()},this.scaleSourceOuterAtIndex=function(e){t=e,c("scale")},this.negativeAndScaleSourceOuterAtIndex=function(e){t=e,c("negativeAndScale","negative")};var c=function(e,o){s.isThumbing?n[t].translate(0,s.sourcesOutersThumbsTranslateY)[e](s.thumbedSourcesScale):i[t]?n[t].translate(0,r[t])[e](i[t]):o&&n[t].negative()}}function Le(e,t){var n=e.elements.thumbs,o=e.stageIndexes;n&&n[o.current]&&(n[o.current].classList.remove(H),n[t].classList.add(H))}function Ae(e){var t=e.core,n=t.slideshowManager,o=t.slideChangeFacade,s=e.componentsServices,i=e.elements,r=e.props,c=0,a=!1;function u(){i.slideshowBar.classList.remove(T),s.stopSlideshow(),a=!1}function l(){var e=(c+=16.67)/r.slideshowTime;i.slideshowBar.style.width=e*innerWidth+"px",e>=1&&(c=0,o.changeToNext()),a&&requestAnimationFrame(l)}n.toggleSlideshow=function(){a?u():(a=!0,i.slideshowBar.classList.add(T),s.startSlideshow(),l())},n.resetSlideshow=function(){c=0,a&&u()}}function Ie(e){var t=e.core,n=t.clickZoomer,o=t.fullscreenToggler,s=t.lightboxCloser,i=t.slideChangeFacade,r=t.slideshowManager,c=t.thumbsToggler,a=e.props;this.listener=function(e){if("Space"!==e.code)switch(e.key){case"Escape":s.close();break;case"ArrowLeft":i.changeToPrevious();break;case"ArrowRight":i.changeToNext();break;case"t":a.disableThumbs||c.toggleThumbs();break;case"+":n.zoomIn();break;case"-":n.zoomOut();break;case"F11":e.preventDefault(),o.enterFullscreen()}else r.toggleSlideshow()}}function Fe(e){var t,n=(t=!1,function(){return!t&&(t=!0,requestAnimationFrame((function(){t=!1})),!0)});return function(){return e.isPointering&&n()}}function ze(e){var t=e.core.pointeringBucket,n=e.data,o=e.elements,s=e.thumbsSwipingProps;this.runActions=function(e){t.runSwipingMoveActionsForPropsAndEvent(s,e),o.thumbsInner.style.transform="translateX(".concat(n.thumbsTransform+s.swipedX,"px)"),o.thumbsContainer.contains(o.thumbsCursorer)||o.thumbsContainer.appendChild(o.thumbsCursorer)}}function Ee(e){var t=e.data,n=e.resolve,o=Fe(e.thumbsSwipingProps),s=n(ze);this.listener=function(e){t.thumbsInnerWidth>innerWidth&&o()&&s.runActions(e)}}function Oe(e,t){e.contains(t)&&e.removeChild(t)}function Ne(e){var t=e.data,n=e.core,o=n.slideIndexChanger,s=n.thumbsTransformTransitioner,i=n.pointeringBucket,r=e.elements,c=e.thumbsSwipingProps,a=r.thumbsWrappers;this.runNoSwipeActionsForEvent=function(e){Oe(r.thumbsContainer,r.thumbsCursorer),c.isPointering=!1;for(var t=0;t<a.length;t++)if(a[t]&&a[t].contains(e.target))return void o.jumpTo(t)},this.runActions=function(){if(Oe(r.thumbsContainer,r.thumbsCursorer),t.thumbsTransform+=c.swipedX,i.runSwipingTopActionsForPropsAndEvent(c),t.thumbsTransform>0)return u(0);t.thumbsTransform<innerWidth-t.thumbsInnerWidth-9&&u(innerWidth-t.thumbsInnerWidth-9)};var u=function(e){t.thumbsTransform=e,s.callActionWithTransition((function(){r.thumbsInner.style.transform="translateX(".concat(e,"px)")}))}}function Pe(e){var t=e.resolve,n=e.thumbsSwipingProps,o=t(Ne);this.listener=function(e){n.isPointering&&(n.swipedX?o.runActions():o.runNoSwipeActionsForEvent(e))}}function Me(e){return e.touches?e.touches[0].clientY:e.clientY}function Be(e){var t=e.collections.sourcesOutersTransformers,n=e.core.zoomer,o=e.data,s=e.sourcesPointerProps;this.runZoomingPinchActionsForHypot=function(e){var t=e-s.pinchedHypot,i=o.zoom+t/Math.hypot(innerWidth,innerHeight)*10;i<.25&&(i=.25),n.zoomTo(i),s.pinchedHypot=e},this.translateSourceOuterAtIndexUsingMethod=function(e,n){t[e].translate(s.swipedX)[n]()}}function ke(e){return Math.hypot(e.touches[0].pageX-e.touches[1].pageX,e.touches[0].pageY-e.touches[1].pageY)}function He(e){return e.touches?e.touches[0].clientX:e.clientX}function We(e){var t=e.collections.sourcesOutersTransformers,n=e.core.pointeringBucket,o=e.elements,s=e.resolve,i=e.sourcesPointerProps,r=e.stageIndexes,c=s(Be);this.runActions=function(e){n.runSwipingMoveActionsForPropsAndEvent(i,e),o.container.contains(o.slideSwipingHoverer)||o.container.appendChild(o.slideSwipingHoverer)},this.runPinchActions=function(e){var t=ke(e);i.pinchedHypot?c.runZoomingPinchActionsForHypot(t):i.pinchedHypot=t},this.runNormalSwipeActions=function(){c.translateSourceOuterAtIndexUsingMethod(r.current,"zero"),void 0!==r.previous&&i.swipedX>0?c.translateSourceOuterAtIndexUsingMethod(r.previous,"negative"):void 0!==r.next&&i.swipedX<0&&c.translateSourceOuterAtIndexUsingMethod(r.next,"positive")},this.runZoomSwipeActions=function(e){i.swipedX=He(e)-i.downClientX,i.swipedY=Me(e)-i.downClientY,t[r.current].translate(i.upSwipedX+i.swipedX,i.upSwipedY+i.swipedY).zero()}}function Ye(e){return e.touches?e.touches.length:0}function De(e){var t=e.data,n=e.resolve,o=e.props.sources,s=e.sourcesPointerProps,i=Fe(s),r=n(We);this.listener=function(e){i()&&(r.runActions(e),Ye(e)&&s.isPinching?r.runPinchActions(e):1===t.zoom?1===o.length?s.swipedX=1:r.runNormalSwipeActions(e):r.runZoomSwipeActions(e))}}function Re(e){var t=e.collections.sourcesOutersTransformers,n=e.core,o=n.slideIndexChanger,s=n.clickZoomer,i=e.data,r=e.elements.sourcesOuters,c=e.sourcesPointerProps,a=e.stageIndexes;this.runPositiveSwipedXActions=function(){void 0===a.previous||(u("positive"),o.changeTo(a.previous)),u("zero")},this.runNegativeSwipedXActions=function(){void 0===a.next||(u("negative"),o.changeTo(a.next)),u("zero")},this.saveCurrentSourceOuterPosition=function(){c.upSwipedX=t[a.current].getTranslateX(),c.upSwipedY=t[a.current].getTranslateY()},this.runSourceDownEventTargetActions=function(){i.zoom<=1?s.zoomIn():s.zoomOut()};var u=function(e){r[a.current].classList.add(l),t[a.current][e]()}}function Xe(e){var t=e.core,n=t.lightboxCloser,o=t.pointeringBucket,s=e.data,i=e.elements,r=e.resolve,c=e.sourcesPointerProps,a=e.stageIndexes,u=r(Re);this.runActions=function(){Oe(i.container,i.slideSwipingHoverer),c.isPinching=!1,c.pinchedHypot=0,o.runSwipingTopActionsForPropsAndEvent(c),ve(i.sourcesInners[a.current],"fslightbox-source-inner-pinching")},this.runSwipeActions=function(){1===s.zoom?c.swipedX>0?u.runPositiveSwipedXActions():u.runNegativeSwipedXActions():u.saveCurrentSourceOuterPosition()},this.runNoSwipeActions=function(){c.isSourceDownEventTarget?u.runSourceDownEventTargetActions():n.close()}}function Ue(e){var t=e.data,n=e.resolve,o=e.sourcesPointerProps,s=e.core.zoomer,i=n(Xe);this.listener=function(e){o.isPointering&&(o.isPinching||(o.swipedX?i.runSwipeActions():i.runNoSwipeActions()),i.runActions(e),t.zoom<1&&(s.zoomTo(1),s.stopZooming()))}}function Ze(e){var t=e.core.inactiver,n=e.props,o=e.resolve,s=o(De),i=o(Ue),r=o(Ee),c=o(Pe);this.moveListener=function(e){t.listener(e),s.listener(e),n.disableThumbs||r.listener(e)},this.upListener=function(e){i.listener(e),n.disableThumbs||c.listener(e)}}function je(e){var t=e.collections,n=t.sourcesTransformers,o=t.sourcesOutersTransformers,s=e.data,i=e.elements,r=e.stageIndexes,c=i.captions,a=i.sourcesOuters;this.translateYSourceIfSupposed=function(e){n[r.current]&&s.sourcesTranslatesY[r.current]&&n[r.current].translateY(e)},this.runOpacity0ActionUsingMethod=function(e){i.slideButtonPrevious&&(i.slideButtonPrevious.classList[e](y),i.slideButtonNext.classList[e](y))},this.translateYSourceOuterTo=function(e){a[r.current].classList.add(l),o[r.current].translate(0,e).zero()},this.runActiveEnhancementActionUsingMethod=function(e){s.isThumbing?i.thumbsContainer.classList[e](P):c[r.current]&&c[r.current].classList[e](w)}}function Ve(e){var t=e.core.zoomer,n=e.data,o=e.elements.sourcesInners,s=e.sourcesPointerProps,i=e.stageIndexes;this.runPinchActions=function(e){s.isPinching=!0,s.pinchedHypot=ke(e),ge(o[i.current],"fslightbox-source-inner-pinching"),1===n.zoom&&t.startZooming()}}function qe(e){var t,n,o;!function(e){var t=e.core.captionsActioner,n=e.data,o=e.elements.captions;t.changeActiveCaptionFromTo=function(e,t){n.isThumbing||(s(e,ve),s(t,ge))};var s=function(e,t){o[e]&&t(o[e],w)}}(e),n=(t=e).core.classFacade,o=t.elements,n.removeFromEachElementClassIfContains=function(e,t){for(var n=0;n<o[e].length;n++)ve(o[e][n],t)},function(e){var t=e.core,n=t.clickZoomer,o=t.zoomer,s=e.data;n.zoomIn=function(){i(),c(s.zoom+.25),r()},n.zoomOut=function(){.25!==s.zoom&&(i(),c(s.zoom-.25),r())};var i=function(){1===s.zoom&&o.startZooming()},r=function(){1===s.zoom&&o.stopZooming()},c=function(e){s.zoom=e,o.zoomTo(s.zoom)}}(e),function(e){var t=e.core.eventsDispatcher,n=e.props;t.dispatch=function(t){n[t]&&n[t](e)}}(e),function(e){var t=e.core.fullscreenToggler;t.enterFullscreen=function(){var e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullscreen?e.webkitRequestFullscreen():e.msRequestFullscreen&&e.msRequestFullscreen()},t.exitFullscreen=function(){document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen()}}(e),function(e){var t=e.core,n=t.inactiver,o=t.globalEventsController,s=t.windowResizeActioner,i=e.resolve,r=i(Ze),c=i(Ie);o.addListeners=function(){re()?(document.addEventListener("touchstart",n.listener,{passive:!0}),document.addEventListener("touchmove",ce(r.moveListener,ae),{passive:!0}),document.addEventListener("touchend",ce(r.upListener,ae))):(document.addEventListener("mousedown",n.listener),document.addEventListener("mousemove",r.moveListener),document.addEventListener("mouseup",r.upListener)),addEventListener("resize",s.runActions),document.addEventListener("keydown",c.listener)},o.removeListeners=function(){re()?(document.removeEventListener("touchstart",n.listener),document.removeEventListener("touchmove",r.moveListener),document.removeEventListener("touchend",r.upListener)):(document.removeEventListener("mousedown",n.listener),document.removeEventListener("mousemove",r.moveListener),document.removeEventListener("mouseup",r.upListener)),removeEventListener("resize",s.runActions),document.removeEventListener("keydown",c.listener)}}(e),function(e){var t=e.core.inactiver,n=e.data,o=e.elements,s=e.props.UIFadeOutTime,i=!1,r=we((function(){i=!0,c(a)}),s);t.listener=function(){r(),i&&(c(u),i=!1)};var c=function(e){e(o.nav),1===n.zoom&&o.slideButtonPrevious&&(e(o.slideButtonPrevious),e(o.slideButtonNext)),n.isThumbing&&e(o.thumbsContainer)},a=function(e){e.classList.add(y)},u=function(e){e.classList.remove(y)}}(e),function(e){var t=e.core.lightboxCloser,n=(0,e.resolve)(Te);t.close=function(){n.isLightboxFadingOut||n.runActions()}}(e),Ge(e),function(e){var t=e.core.pointeringBucket,n=e.elements;t.runSwipingDownActionsForPropsAndEvent=function(e,t){e.isPointering=!0,e.downClientX=He(t),e.swipedX=0},t.runSwipingMoveActionsForPropsAndEvent=function(e,t){ge(n.container,c),e.swipedX=He(t)-e.downClientX},t.runSwipingTopActionsForPropsAndEvent=function(e){ve(n.container,c),e.isPointering=!1}}(e),function(e){var t=e.data,n=e.core.scrollbarRecompensor;n.addRecompense=function(){"complete"===document.readyState?o():window.addEventListener("load",(function(){o(),n.addRecompense=o}))};var o=function(){document.body.offsetHeight>window.innerHeight&&(document.body.style.marginRight=t.scrollbarWidth+"px")};n.removeRecompense=function(){document.body.style.removeProperty("margin-right")}}(e),Ae(e),function(e){var t=e.core,n=t.slideChangeFacade,o=t.slideIndexChanger,s=t.stageManager;e.props.sources.length>1?(n.changeToPrevious=function(){o.jumpTo(s.getPreviousSlideIndex())},n.changeToNext=function(){o.jumpTo(s.getNextSlideIndex())}):(n.changeToPrevious=function(){},n.changeToNext=function(){})}(e),function(e){var t=e.collections.sourcesOutersTransformers,n=e.componentsServices,o=e.core,s=o.captionsActioner,i=o.classFacade,r=o.eventsDispatcher,c=o.slideIndexChanger,a=o.sourceDisplayFacade,u=o.stageManager,d=o.thumbsTransformer,h=o.zoomer,p=e.elements,m=e.props,g=m.disableThumbs,b=m.initialAnimation,v=m.slideChangeAnimation,x=e.stageIndexes,w=we((function(){i.removeFromEachElementClassIfContains("sourcesInners",f)}),300);c.changeTo=function(t){Le(e,t),s.changeActiveCaptionFromTo(x.current,t),h.ifZoomingResetZoom(),x.current=t,u.updateStageIndexes(),g||d.transformToCurrentWithTransition(),n.setSlideNumber(t+1),a.displaySourcesWhichShouldBeDisplayed(),r.dispatch("onSlideChange")},c.jumpTo=function(e){var n=x.current;c.changeTo(e),i.removeFromEachElementClassIfContains("sourcesOuters",l),ve(p.sourcesInners[n],b),ve(p.sourcesInners[n],v),p.sourcesInners[n].classList.add(f),ve(p.sourcesInners[e],b),ve(p.sourcesInners[e],f),p.sourcesInners[e].classList.add(v),w(),t[e].zero(),setTimeout((function(){n!==x.current&&t[n].negative()}),270)}}(e),function(e){var t=e.collections.sourcesRenderFunctions,n=e.core.sourceDisplayFacade,o=e.props.loadOnlyCurrentSource,s=e.stageIndexes;function i(e){t[e]&&(t[e](),delete t[e])}n.displaySourcesWhichShouldBeDisplayed=function(){if(o)i(s.current);else for(var e in s)i(s[e])}}(e),function(e){var t=e.core,n=t.classFacade,o=t.sourcesPointerDown,s=t.pointeringBucket,i=e.elements.sources,r=e.resolve,c=e.sourcesPointerProps,a=e.stageIndexes,u=r(Ve);o.listener=function(e){"VIDEO"===e.target.tagName||e.touches||e.preventDefault(),s.runSwipingDownActionsForPropsAndEvent(c,e),c.isMoveCallFirst=!0,c.downClientY=Me(e),2===Ye(e)?u.runPinchActions(e):n.removeFromEachElementClassIfContains("sourcesOuters",l);var t=i[a.current];t&&t.contains(e.target)?c.isSourceDownEventTarget=!0:c.isSourceDownEventTarget=!1}}(e),function(e){var t=e.stageIndexes,n=e.core.stageManager,o=e.props.sources.length-1;n.getPreviousSlideIndex=function(){return 0===t.current?o:t.current-1},n.getNextSlideIndex=function(){return t.current===o?0:t.current+1},n.updateStageIndexes=0===o?function(){}:1===o?function(){0===t.current?(t.next=1,delete t.previous):(t.previous=0,delete t.next)}:function(){t.previous=n.getPreviousSlideIndex(),t.next=n.getNextSlideIndex()},n.isSourceInStage=o<=2?function(){return!0}:function(e){var n=t.current;if(0===n&&e===o||n===o&&0===e)return!0;var s=n-e;return-1===s||0===s||1===s}}(e),function(e){var t=e.collections.sourcesStylers,n=e.core,o=n.windowResizeActioner,s=n.thumbsTransformer,i=e.data,r=e.elements,c=e.props,a=c.disableThumbs,u=c.sources,d=e.resolve,h=e.stageIndexes,p=d(Ce),m=i.captionedSourcesOutersScales,f=i.sourcesOutersNoThumbsTranslatesY,g=r.captions,b=r.sourcesOuters,v=r.thumbs;o.runActions=function(){innerWidth<992?i.maxSourceWidth=innerWidth:i.maxSourceWidth=.9*innerWidth,i.maxSourceHeight=.9*innerHeight,a||(i.thumbedSourcesScale=1-r.thumbsContainer.offsetHeight/innerHeight,i.sourcesOutersThumbsTranslateY=-r.thumbsContainer.offsetHeight/2),i.isFullscreenOpen&&p.handleFullscreenChange(),0===i.unloadedThumbsCount&&o.runThumbsActions();for(var e=0;e<u.length;e++){if(g[e]){var n=g[e].offsetHeight-25;m[e]=1-n/innerHeight,f[e]=-n/2}else m[e]=1,f[e]=0;ve(b[e],l),e===h.current?p.scaleSourceOuterAtIndex(e):p.negativeAndScaleSourceOuterAtIndex(e),t[e]&&t[e].styleAll()}},o.runThumbsActions=function(){i.thumbsInnerWidth=0;for(var e=0;e<u.length;e++)i.thumbsInnerWidth+=v[e].offsetWidth+8;s.transformToCurrent()}}(e),function(e){var t=e.core.zoomer,n=e.data,o=e.elements,s=o.sources,i=o.sourcesInners,r=e.resolve,c=e.sourcesPointerProps,a=e.stageIndexes,u=r(je);t.zoomTo=function(e){n.zoom=e,i[a.current].style.transform="scale(".concat(e,")")},t.ifZoomingResetZoom=function(){1!==n.zoom&&(t.zoomTo(1),t.stopZooming())},t.startZooming=function(){l("grab"),u.runOpacity0ActionUsingMethod("add"),u.runActiveEnhancementActionUsingMethod("remove"),u.translateYSourceOuterTo(0),u.translateYSourceIfSupposed(0)},t.stopZooming=function(){l("zoom-in"),u.runOpacity0ActionUsingMethod("remove"),u.runActiveEnhancementActionUsingMethod("add");var e=n.sourcesOutersThumbsTranslateY;n.isThumbing||(e=n.sourcesOutersNoThumbsTranslatesY[a.current]),u.translateYSourceOuterTo(e),u.translateYSourceIfSupposed(n.sourcesTranslatesY[a.current]),c.upSwipedX=0,c.upSwipedY=0};var l=function(e){s[a.current]&&(s[a.current].style.cursor=e)}}(e)}function _e(e,t){var n=e.data.isThumbing,o=e.elements,s=o.captions,i=o.container,r=e.props.captions,c=e.stageIndexes.current;s[t]=document.createElement("div");var u="".concat(v," ").concat(a);c!==t||n||(u+=" ".concat(w)),s[t].className=u;var l=document.createElement("div");l.className=x,l.innerHTML=r[t],s[t].appendChild(l),i.appendChild(s[t])}function Je(e){var t=e.core.eventsDispatcher,n=e.data,o=e.elements,i=e.props,c=i.disableThumbs,a=i.showThumbsOnMount,u=i.sources;n.isInitialized=!0,n.unloadedThumbsCount=u.length,function(e){for(var t=e.collections.sourcesOutersTransformers,n=e.props.sources,o=e.resolve,s=0;s<n.length;s++)t[s]=o(me,[s])}(e),c||(n.isThumbing=a,Se(e)),qe(e),o.container=document.createElement("div"),o.container.className="".concat(s,"container ").concat(r," ").concat(g),function(e){var t=e.elements;t.slideSwipingHoverer=document.createElement("div"),t.slideSwipingHoverer.className="".concat(s,"slide-swiping-hoverer ").concat(r," ").concat(d)}(e),pe(e),function(e){var t=e.elements;t.slideshowBar=document.createElement("div"),t.slideshowBar.className="".concat(s,"slideshow-bar ").concat(d),t.container.appendChild(t.slideshowBar)}(e),function(e){var t=e.core.sourcesPointerDown.listener,n=e.elements,o=e.props.sources,s=new ue;n.sourcesOutersWrapper=document.createElement("div"),n.sourcesOutersWrapper.className="".concat(I," ").concat(d," ").concat(r),n.container.appendChild(n.sourcesOutersWrapper),n.sourcesOutersWrapper.addEventListener("mousedown",s.getMouseDownListenerFunc(t)),n.sourcesOutersWrapper.addEventListener("touchstart",s.getTouchStartListenerForFunc(t));for(var i=0;i<o.length;i++)ie(e,i)}(e),function(e){for(var t=e.props.captions,n=0;n<t.length;n++)t[n]&&_e(e,n)}(e),u.length>1&&function(e){fe(e,"previous"),fe(e,"next")}(e),c||ye(e),function(e){for(var t=e.props.sources,n=e.resolve,o=n(Y),s=n(ne),i=n(se,[o,s]),r=0;r<t.length;r++)if("string"==typeof t[r]){var c=i.getTypeSetByClientForIndex(r);if(c)s.runActionsForSourceTypeAndIndex(c,r);else{var a=o.getSourceTypeFromLocalStorageByUrl(t[r]);a?s.runActionsForSourceTypeAndIndex(a,r):i.retrieveTypeWithXhrForIndex(r)}}else s.runActionsForSourceTypeAndIndex("custom",r)}(e),t.dispatch("onInit")}function Ge(e){var t=e.collections.sourcesOutersTransformers,n=e.componentsServices,o=e.core,s=o.captionsActioner,i=o.eventsDispatcher,r=o.lightboxOpener,c=o.globalEventsController,a=o.scrollbarRecompensor,l=o.sourceDisplayFacade,d=o.stageManager,h=o.windowResizeActioner,p=e.data,m=e.elements,f=e.stageIndexes;r.open=function(){var o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,r=f.current;Le(e,o),f.current=o,p.isInitialized?i.dispatch("onShow"):Je(e),d.updateStageIndexes(),l.displaySourcesWhichShouldBeDisplayed(),s.changeActiveCaptionFromTo(r,o),n.setSlideNumber(f.current+1),document.body.appendChild(m.container),document.documentElement.classList.add(u),h.runActions(),a.addRecompense(),c.addListeners(),t[f.current].zero(),i.dispatch("onOpen")}}function $e(){var e=localStorage.getItem("fslightbox-scrollbar-width");if(e)return e;var t=function(){var e=document.createElement("div"),t=e.style;return t.visibility="hidden",t.width="100px",t.msOverflowStyle="scrollbar",t.overflow="scroll",e}(),n=function(){var e=document.createElement("div");return e.style.width="100%",e}();document.body.appendChild(t);var o=t.offsetWidth;t.appendChild(n);var s=n.offsetWidth;document.body.removeChild(t);var i=o-s;return localStorage.setItem("fslightbox-scrollbar-width",i.toString()),i}function Ke(e,t,n){return(Ke=Qe()?Reflect.construct:function(e,t,n){var o=[null];o.push.apply(o,t);var s=new(Function.bind.apply(e,o));return n&&et(s,n.prototype),s}).apply(null,arguments)}function Qe(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function et(e,t){return(et=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function tt(e){return function(e){if(Array.isArray(e))return nt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return nt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return nt(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function nt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function ot(){for(var e=document.getElementsByTagName("a"),t=function(t){if(!e[t].hasAttribute("data-fslightbox"))return"continue";var n=e[t].getAttribute("data-fslightbox"),o=e[t].getAttribute("href");fsLightboxInstances[n]||(fsLightboxInstances[n]=new FsLightbox,fsLightboxInstances[n].setup());var s=null;s="#"===o.charAt(0)?document.getElementById(o.substring(1)):o,fsLightboxInstances[n].props.sources.push(s),fsLightboxInstances[n].elements.a.push(e[t]);var i=fsLightboxInstances[n].props.sources.length-1;function r(o,s){e[t].hasAttribute(s)&&(fsLightboxInstances[n].props[o][i]=e[t].getAttribute(s))}e[t].onclick=function(e){e.preventDefault(),fsLightboxInstances[n].open(i)},r("types","data-type"),r("videosPosters","data-video-poster"),r("customClasses","data-custom-class"),r("captions","data-caption"),r("thumbs","data-thumb")},n=0;n<e.length;n++)t(n);var o=Object.keys(fsLightboxInstances);window.fsLightbox=fsLightboxInstances[o[o.length-1]]}window.FsLightbox=function(){var e=this;this.props={sources:[],maxYoutubeDimensions:null,customClasses:[],types:[],thumbs:[],thumbsIcons:[],captions:[],videosPosters:[],customToolbarButtons:[],initialAnimation:g,slideChangeAnimation:m,slideDistance:.3,slideshowTime:8e3,UIFadeOutTime:8e3,toolbarButtons:{thumbs:{width:"17px",height:"17px",viewBox:"0 0 22 22",d:"M 3 2 C 2.448 2 2 2.448 2 3 L 2 6 C 2 6.552 2.448 7 3 7 L 6 7 C 6.552 7 7 6.552 7 6 L 7 3 C 7 2.448 6.552 2 6 2 L 3 2 z M 10 2 C 9.448 2 9 2.448 9 3 L 9 6 C 9 6.552 9.448 7 10 7 L 13 7 C 13.552 7 14 6.552 14 6 L 14 3 C 14 2.448 13.552 2 13 2 L 10 2 z M 17 2 C 16.448 2 16 2.448 16 3 L 16 6 C 16 6.552 16.448 7 17 7 L 20 7 C 20.552 7 21 6.552 21 6 L 21 3 C 21 2.448 20.552 2 20 2 L 17 2 z M 3 9 C 2.448 9 2 9.448 2 10 L 2 13 C 2 13.552 2.448 14 3 14 L 6 14 C 6.552 14 7 13.552 7 13 L 7 10 C 7 9.448 6.552 9 6 9 L 3 9 z M 10 9 C 9.448 9 9 9.448 9 10 L 9 13 C 9 13.552 9.448 14 10 14 L 13 14 C 13.552 14 14 13.552 14 13 L 14 10 C 14 9.448 13.552 9 13 9 L 10 9 z M 17 9 C 16.448 9 16 9.448 16 10 L 16 13 C 16 13.552 16.448 14 17 14 L 20 14 C 20.552 14 21 13.552 21 13 L 21 10 C 21 9.448 20.552 9 20 9 L 17 9 z M 3 16 C 2.448 16 2 16.448 2 17 L 2 20 C 2 20.552 2.448 21 3 21 L 6 21 C 6.552 21 7 20.552 7 20 L 7 17 C 7 16.448 6.552 16 6 16 L 3 16 z M 10 16 C 9.448 16 9 16.448 9 17 L 9 20 C 9 20.552 9.448 21 10 21 L 13 21 C 13.552 21 14 20.552 14 20 L 14 17 C 14 16.448 13.552 16 13 16 L 10 16 z M 17 16 C 16.448 16 16 16.448 16 17 L 16 20 C 16 20.552 16.448 21 17 21 L 20 21 C 20.552 21 21 20.552 21 20 L 21 17 C 21 16.448 20.552 16 20 16 L 17 16 z",title:"Thumbnails"},zoomIn:{width:"20px",height:"20px",viewBox:"0 0 30 30",d:"M 13 3 C 7.4889971 3 3 7.4889971 3 13 C 3 18.511003 7.4889971 23 13 23 C 15.396508 23 17.597385 22.148986 19.322266 20.736328 L 25.292969 26.707031 A 1.0001 1.0001 0 1 0 26.707031 25.292969 L 20.736328 19.322266 C 22.148986 17.597385 23 15.396508 23 13 C 23 7.4889971 18.511003 3 13 3 z M 13 5 C 17.430123 5 21 8.5698774 21 13 C 21 17.430123 17.430123 21 13 21 C 8.5698774 21 5 17.430123 5 13 C 5 8.5698774 8.5698774 5 13 5 z M 12.984375 7.9863281 A 1.0001 1.0001 0 0 0 12 9 L 12 12 L 9 12 A 1.0001 1.0001 0 1 0 9 14 L 12 14 L 12 17 A 1.0001 1.0001 0 1 0 14 17 L 14 14 L 17 14 A 1.0001 1.0001 0 1 0 17 12 L 14 12 L 14 9 A 1.0001 1.0001 0 0 0 12.984375 7.9863281 z",title:"Zoom In"},zoomOut:{width:"20px",height:"20px",viewBox:"0 0 30 30",d:"M 13 3 C 7.4889971 3 3 7.4889971 3 13 C 3 18.511003 7.4889971 23 13 23 C 15.396508 23 17.597385 22.148986 19.322266 20.736328 L 25.292969 26.707031 A 1.0001 1.0001 0 1 0 26.707031 25.292969 L 20.736328 19.322266 C 22.148986 17.597385 23 15.396508 23 13 C 23 7.4889971 18.511003 3 13 3 z M 13 5 C 17.430123 5 21 8.5698774 21 13 C 21 17.430123 17.430123 21 13 21 C 8.5698774 21 5 17.430123 5 13 C 5 8.5698774 8.5698774 5 13 5 z M 9 12 A 1.0001 1.0001 0 1 0 9 14 L 17 14 A 1.0001 1.0001 0 1 0 17 12 L 9 12 z",title:"Zoom Out"},slideshow:{start:{width:"16px",height:"16px",viewBox:"0 0 30 30",d:"M 6 3 A 1 1 0 0 0 5 4 A 1 1 0 0 0 5 4.0039062 L 5 15 L 5 25.996094 A 1 1 0 0 0 5 26 A 1 1 0 0 0 6 27 A 1 1 0 0 0 6.5800781 26.8125 L 6.5820312 26.814453 L 26.416016 15.908203 A 1 1 0 0 0 27 15 A 1 1 0 0 0 26.388672 14.078125 L 6.5820312 3.1855469 L 6.5800781 3.1855469 A 1 1 0 0 0 6 3 z",title:"Turn on slideshow"},pause:{width:"14px",height:"14px",viewBox:"0 0 356.19 356.19",d:"M121,0c18,0,33,15,33,33v372c0,18-15,33-33,33s-32-15-32-33V33C89,15,103,0,121,0zM317,0c18,0,32,15,32,33v372c0,18-14,33-32,33s-33-15-33-33V33C284,15,299,0,317,0z",title:"Turn off slideshow"}},fullscreen:{enter:{width:"20px",height:"20px",viewBox:"0 0 18 18",d:"M4.5 11H3v4h4v-1.5H4.5V11zM3 7h1.5V4.5H7V3H3v4zm10.5 6.5H11V15h4v-4h-1.5v2.5zM11 3v1.5h2.5V7H15V3h-4z",title:"Enter fullscreen"},exit:{width:"24px",height:"24px",viewBox:"0 0 950 1024",d:"M682 342h128v84h-212v-212h84v128zM598 810v-212h212v84h-128v128h-84zM342 342v-128h84v212h-212v-84h128zM214 682v-84h212v212h-84v-128h-128z",title:"Exit fullscreen"}},close:{width:"20px",height:"20px",viewBox:"0 0 24 24",d:"M 4.7070312 3.2929688 L 3.2929688 4.7070312 L 10.585938 12 L 3.2929688 19.292969 L 4.7070312 20.707031 L 12 13.414062 L 19.292969 20.707031 L 20.707031 19.292969 L 13.414062 12 L 20.707031 4.7070312 L 19.292969 3.2929688 L 12 10.585938 L 4.7070312 3.2929688 z",title:"Close"}},slideButtons:{previous:{width:"20px",height:"20px",viewBox:"0 0 20 20",d:"M18.271,9.212H3.615l4.184-4.184c0.306-0.306,0.306-0.801,0-1.107c-0.306-0.306-0.801-0.306-1.107,0L1.21,9.403C1.194,9.417,1.174,9.421,1.158,9.437c-0.181,0.181-0.242,0.425-0.209,0.66c0.005,0.038,0.012,0.071,0.022,0.109c0.028,0.098,0.075,0.188,0.142,0.271c0.021,0.026,0.021,0.061,0.045,0.085c0.015,0.016,0.034,0.02,0.05,0.033l5.484,5.483c0.306,0.307,0.801,0.307,1.107,0c0.306-0.305,0.306-0.801,0-1.105l-4.184-4.185h14.656c0.436,0,0.788-0.353,0.788-0.788S18.707,9.212,18.271,9.212z",title:"Previous"},next:{width:"20px",height:"20px",viewBox:"0 0 20 20",d:"M1.729,9.212h14.656l-4.184-4.184c-0.307-0.306-0.307-0.801,0-1.107c0.305-0.306,0.801-0.306,1.106,0l5.481,5.482c0.018,0.014,0.037,0.019,0.053,0.034c0.181,0.181,0.242,0.425,0.209,0.66c-0.004,0.038-0.012,0.071-0.021,0.109c-0.028,0.098-0.075,0.188-0.143,0.271c-0.021,0.026-0.021,0.061-0.045,0.085c-0.015,0.016-0.034,0.02-0.051,0.033l-5.483,5.483c-0.306,0.307-0.802,0.307-1.106,0c-0.307-0.305-0.307-0.801,0-1.105l4.184-4.185H1.729c-0.436,0-0.788-0.353-0.788-0.788S1.293,9.212,1.729,9.212z",title:"Next"}}},this.data={isInitialized:!1,isThumbing:!1,maxSourceWidth:0,maxSourceHeight:0,scrollbarWidth:$e(),isFullscreenOpen:!1,isSlideshowOn:!1,captionedSourcesOutersScales:[],sourcesTranslatesY:[],sourcesOutersThumbsTranslateY:null,sourcesOutersNoThumbsTranslatesY:[],zoom:1},this.sourcesPointerProps={isPointering:!1,downClientX:null,downClientY:null,isSourceDownEventTarget:!1,isMoveCallFirst:!1,swipedX:0,swipedY:0,upSwipedX:0,upSwipedY:0,pinchedHypot:0},this.stageIndexes={},this.elements={a:[],captions:[],container:null,nav:null,slideSwipingHoverer:null,slideButtonPrevious:null,slideButtonNext:null,sourcesOutersWrapper:null,slideshowBar:null,sources:[],sourcesOuters:[],sourcesInners:[]},this.componentsServices={setSlideNumber:function(){},enterFullscreen:null,exitFullscreen:null,startSlideshow:null,stopSlideshow:null},this.resolve=function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return n.unshift(e),Ke(t,tt(n))},this.collections={sourcesTransformers:[],sourcesOutersTransformers:[],sourcesLoadsHandlers:[],sourcesRenderFunctions:[],sourcesStylers:[]},this.core={captionsActioner:{},classFacade:{},clickZoomer:{},eventsDispatcher:{},fullscreenToggler:{},globalEventsController:{},inactiver:{},lightboxCloser:{},lightboxOpener:{},lightboxUpdater:{},pointeringBucket:{},scrollbarRecompensor:{},slideshowManager:{},slideChangeFacade:{},slideIndexChanger:{},sourceDisplayFacade:{},sourcesPointerDown:{},stageManager:{},swipingActioner:{},windowResizeActioner:{},zoomer:{}},this.setup=function(){Ge(e)},this.open=function(t){return e.core.lightboxOpener.open(t)},this.close=function(){return e.core.lightboxCloser.close()}},window.fsLightboxInstances={},window.refreshFsLightbox=function(){for(var e in fsLightboxInstances){var t=fsLightboxInstances[e].props;fsLightboxInstances[e]=new FsLightbox,fsLightboxInstances[e].props=t,fsLightboxInstances[e].props.sources=[],fsLightboxInstances[e].elements.a=[],fsLightboxInstances[e].setup()}ot()},ot()}])}));;/*! WOW - v1.1.3 - 2016-05-06
 * Copyright (c) 2016 Matthieu Aussaguel;*/
(function(){var a,b,c,d,e,f=function(a,b){return function(){return a.apply(b,arguments)}},g=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};b=function(){function a(){}return a.prototype.extend=function(a,b){var c,d;for(c in b)d=b[c],null==a[c]&&(a[c]=d);return a},a.prototype.isMobile=function(a){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(a)},a.prototype.createEvent=function(a,b,c,d){var e;return null==b&&(b=!1),null==c&&(c=!1),null==d&&(d=null),null!=document.createEvent?(e=document.createEvent("CustomEvent"),e.initCustomEvent(a,b,c,d)):null!=document.createEventObject?(e=document.createEventObject(),e.eventType=a):e.eventName=a,e},a.prototype.emitEvent=function(a,b){return null!=a.dispatchEvent?a.dispatchEvent(b):b in(null!=a)?a[b]():"on"+b in(null!=a)?a["on"+b]():void 0},a.prototype.addEvent=function(a,b,c){return null!=a.addEventListener?a.addEventListener(b,c,!1):null!=a.attachEvent?a.attachEvent("on"+b,c):a[b]=c},a.prototype.removeEvent=function(a,b,c){return null!=a.removeEventListener?a.removeEventListener(b,c,!1):null!=a.detachEvent?a.detachEvent("on"+b,c):delete a[b]},a.prototype.innerHeight=function(){return"innerHeight"in window?window.innerHeight:document.documentElement.clientHeight},a}(),c=this.WeakMap||this.MozWeakMap||(c=function(){function a(){this.keys=[],this.values=[]}return a.prototype.get=function(a){var b,c,d,e,f;for(f=this.keys,b=d=0,e=f.length;e>d;b=++d)if(c=f[b],c===a)return this.values[b]},a.prototype.set=function(a,b){var c,d,e,f,g;for(g=this.keys,c=e=0,f=g.length;f>e;c=++e)if(d=g[c],d===a)return void(this.values[c]=b);return this.keys.push(a),this.values.push(b)},a}()),a=this.MutationObserver||this.WebkitMutationObserver||this.MozMutationObserver||(a=function(){function a(){"undefined"!=typeof console&&null!==console&&console.warn("MutationObserver is not supported by your browser."),"undefined"!=typeof console&&null!==console&&console.warn("WOW.js cannot detect dom mutations, please call .sync() after loading new content.")}return a.notSupported=!0,a.prototype.observe=function(){},a}()),d=this.getComputedStyle||function(a,b){return this.getPropertyValue=function(b){var c;return"float"===b&&(b="styleFloat"),e.test(b)&&b.replace(e,function(a,b){return b.toUpperCase()}),(null!=(c=a.currentStyle)?c[b]:void 0)||null},this},e=/(\-([a-z]){1})/g,this.WOW=function(){function e(a){null==a&&(a={}),this.scrollCallback=f(this.scrollCallback,this),this.scrollHandler=f(this.scrollHandler,this),this.resetAnimation=f(this.resetAnimation,this),this.start=f(this.start,this),this.scrolled=!0,this.config=this.util().extend(a,this.defaults),null!=a.scrollContainer&&(this.config.scrollContainer=document.querySelector(a.scrollContainer)),this.animationNameCache=new c,this.wowEvent=this.util().createEvent(this.config.boxClass)}return e.prototype.defaults={boxClass:"wow",animateClass:"animated",offset:0,mobile:!0,live:!0,callback:null,scrollContainer:null},e.prototype.init=function(){var a;return this.element=window.document.documentElement,"interactive"===(a=document.readyState)||"complete"===a?this.start():this.util().addEvent(document,"DOMContentLoaded",this.start),this.finished=[]},e.prototype.start=function(){var b,c,d,e;if(this.stopped=!1,this.boxes=function(){var a,c,d,e;for(d=this.element.querySelectorAll("."+this.config.boxClass),e=[],a=0,c=d.length;c>a;a++)b=d[a],e.push(b);return e}.call(this),this.all=function(){var a,c,d,e;for(d=this.boxes,e=[],a=0,c=d.length;c>a;a++)b=d[a],e.push(b);return e}.call(this),this.boxes.length)if(this.disabled())this.resetStyle();else for(e=this.boxes,c=0,d=e.length;d>c;c++)b=e[c],this.applyStyle(b,!0);return this.disabled()||(this.util().addEvent(this.config.scrollContainer||window,"scroll",this.scrollHandler),this.util().addEvent(window,"resize",this.scrollHandler),this.interval=setInterval(this.scrollCallback,50)),this.config.live?new a(function(a){return function(b){var c,d,e,f,g;for(g=[],c=0,d=b.length;d>c;c++)f=b[c],g.push(function(){var a,b,c,d;for(c=f.addedNodes||[],d=[],a=0,b=c.length;b>a;a++)e=c[a],d.push(this.doSync(e));return d}.call(a));return g}}(this)).observe(document.body,{childList:!0,subtree:!0}):void 0},e.prototype.stop=function(){return this.stopped=!0,this.util().removeEvent(this.config.scrollContainer||window,"scroll",this.scrollHandler),this.util().removeEvent(window,"resize",this.scrollHandler),null!=this.interval?clearInterval(this.interval):void 0},e.prototype.sync=function(b){return a.notSupported?this.doSync(this.element):void 0},e.prototype.doSync=function(a){var b,c,d,e,f;if(null==a&&(a=this.element),1===a.nodeType){for(a=a.parentNode||a,e=a.querySelectorAll("."+this.config.boxClass),f=[],c=0,d=e.length;d>c;c++)b=e[c],g.call(this.all,b)<0?(this.boxes.push(b),this.all.push(b),this.stopped||this.disabled()?this.resetStyle():this.applyStyle(b,!0),f.push(this.scrolled=!0)):f.push(void 0);return f}},e.prototype.show=function(a){return this.applyStyle(a),a.className=a.className+" "+this.config.animateClass,null!=this.config.callback&&this.config.callback(a),this.util().emitEvent(a,this.wowEvent),this.util().addEvent(a,"animationend",this.resetAnimation),this.util().addEvent(a,"oanimationend",this.resetAnimation),this.util().addEvent(a,"webkitAnimationEnd",this.resetAnimation),this.util().addEvent(a,"MSAnimationEnd",this.resetAnimation),a},e.prototype.applyStyle=function(a,b){var c,d,e;return d=a.getAttribute("data-wow-duration"),c=a.getAttribute("data-wow-delay"),e=a.getAttribute("data-wow-iteration"),this.animate(function(f){return function(){return f.customStyle(a,b,d,c,e)}}(this))},e.prototype.animate=function(){return"requestAnimationFrame"in window?function(a){return window.requestAnimationFrame(a)}:function(a){return a()}}(),e.prototype.resetStyle=function(){var a,b,c,d,e;for(d=this.boxes,e=[],b=0,c=d.length;c>b;b++)a=d[b],e.push(a.style.visibility="visible");return e},e.prototype.resetAnimation=function(a){var b;return a.type.toLowerCase().indexOf("animationend")>=0?(b=a.target||a.srcElement,b.className=b.className.replace(this.config.animateClass,"").trim()):void 0},e.prototype.customStyle=function(a,b,c,d,e){return b&&this.cacheAnimationName(a),a.style.visibility=b?"hidden":"visible",c&&this.vendorSet(a.style,{animationDuration:c}),d&&this.vendorSet(a.style,{animationDelay:d}),e&&this.vendorSet(a.style,{animationIterationCount:e}),this.vendorSet(a.style,{animationName:b?"none":this.cachedAnimationName(a)}),a},e.prototype.vendors=["moz","webkit"],e.prototype.vendorSet=function(a,b){var c,d,e,f;d=[];for(c in b)e=b[c],a[""+c]=e,d.push(function(){var b,d,g,h;for(g=this.vendors,h=[],b=0,d=g.length;d>b;b++)f=g[b],h.push(a[""+f+c.charAt(0).toUpperCase()+c.substr(1)]=e);return h}.call(this));return d},e.prototype.vendorCSS=function(a,b){var c,e,f,g,h,i;for(h=d(a),g=h.getPropertyCSSValue(b),f=this.vendors,c=0,e=f.length;e>c;c++)i=f[c],g=g||h.getPropertyCSSValue("-"+i+"-"+b);return g},e.prototype.animationName=function(a){var b;try{b=this.vendorCSS(a,"animation-name").cssText}catch(c){b=d(a).getPropertyValue("animation-name")}return"none"===b?"":b},e.prototype.cacheAnimationName=function(a){return this.animationNameCache.set(a,this.animationName(a))},e.prototype.cachedAnimationName=function(a){return this.animationNameCache.get(a)},e.prototype.scrollHandler=function(){return this.scrolled=!0},e.prototype.scrollCallback=function(){var a;return!this.scrolled||(this.scrolled=!1,this.boxes=function(){var b,c,d,e;for(d=this.boxes,e=[],b=0,c=d.length;c>b;b++)a=d[b],a&&(this.isVisible(a)?this.show(a):e.push(a));return e}.call(this),this.boxes.length||this.config.live)?void 0:this.stop()},e.prototype.offsetTop=function(a){for(var b;void 0===a.offsetTop;)a=a.parentNode;for(b=a.offsetTop;a=a.offsetParent;)b+=a.offsetTop;return b},e.prototype.isVisible=function(a){var b,c,d,e,f;return c=a.getAttribute("data-wow-offset")||this.config.offset,f=this.config.scrollContainer&&this.config.scrollContainer.scrollTop||window.pageYOffset,e=f+Math.min(this.element.clientHeight,this.util().innerHeight())-c,d=this.offsetTop(a),b=d+a.clientHeight,e>=d&&b>=f},e.prototype.util=function(){return null!=this._util?this._util:this._util=new b},e.prototype.disabled=function(){return!this.config.mobile&&this.util().isMobile(navigator.userAgent)},e}()}).call(this);;/*!
FullCalendar Premium Bundle v6.1.14
Docs & License: https://fullcalendar.io/docs/initialize-globals
(c) 2024 Adam Shaw
*/
var FullCalendar=(function(exports){'use strict';var n,l$1,u$1,i$1,t,r$1,o,f$1,e$1,c$1={},s=[],a$1=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function h(n,l){for(var u in l)n[u]=l[u];return n}function v$1(n){var l=n.parentNode;l&&l.removeChild(n);}function y(l,u,i){var t,r,o,f={};for(o in u)"key"==o?t=u[o]:"ref"==o?r=u[o]:f[o]=u[o];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),"function"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===f[o]&&(f[o]=l.defaultProps[o]);return p(l,f,t,r,null)}function p(n,i,t,r,o){var f={type:n,props:i,key:t,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++u$1:o};return null==o&&null!=l$1.vnode&&l$1.vnode(f),f}function d(){return{current:null}}function _(n){return n.children}function k$1(n,l,u,i,t){var r;for(r in u)"children"===r||"key"===r||r in l||g$2(n,r,null,u[r],i);for(r in l)t&&"function"!=typeof l[r]||"children"===r||"key"===r||"value"===r||"checked"===r||u[r]===l[r]||g$2(n,r,l[r],u[r],i);}function b$1(n,l,u){"-"===l[0]?n.setProperty(l,null==u?"":u):n[l]=null==u?"":"number"!=typeof u||a$1.test(l)?u:u+"px";}function g$2(n,l,u,i,t){var r;n:if("style"===l)if("string"==typeof u)n.style.cssText=u;else{if("string"==typeof i&&(n.style.cssText=i=""),i)for(l in i)u&&l in u||b$1(n.style,l,"");if(u)for(l in u)i&&u[l]===i[l]||b$1(n.style,l,u[l]);}else if("o"===l[0]&&"n"===l[1])r=l!==(l=l.replace(/Capture$/,"")),l=l.toLowerCase()in n?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?i||n.addEventListener(l,r?w$2:m$1,r):n.removeEventListener(l,r?w$2:m$1,r);else if("dangerouslySetInnerHTML"!==l){if(t)l=l.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if("width"!==l&&"height"!==l&&"href"!==l&&"list"!==l&&"form"!==l&&"tabIndex"!==l&&"download"!==l&&l in n)try{n[l]=null==u?"":u;break n}catch(n){}"function"==typeof u||(null==u||!1===u&&-1==l.indexOf("-")?n.removeAttribute(l):n.setAttribute(l,u));}}function m$1(n){t=!0;try{return this.l[n.type+!1](l$1.event?l$1.event(n):n)}finally{t=!1;}}function w$2(n){t=!0;try{return this.l[n.type+!0](l$1.event?l$1.event(n):n)}finally{t=!1;}}function x$1(n,l){this.props=n,this.context=l;}function A(n,l){if(null==l)return n.__?A(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return"function"==typeof n.type?A(n):null}function P$1(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return P$1(n)}}function C$1(n){t?setTimeout(n):f$1(n);}function T$1(n){(!n.__d&&(n.__d=!0)&&r$1.push(n)&&!$$1.__r++||o!==l$1.debounceRendering)&&((o=l$1.debounceRendering)||C$1)($$1);}function $$1(){var n,l,u,i,t,o,f,e;for(r$1.sort(function(n,l){return n.__v.__b-l.__v.__b});n=r$1.shift();)n.__d&&(l=r$1.length,i=void 0,t=void 0,f=(o=(u=n).__v).__e,(e=u.__P)&&(i=[],(t=h({},o)).__v=o.__v+1,M(e,o,t,u.__n,void 0!==e.ownerSVGElement,null!=o.__h?[f]:null,i,null==f?A(o):f,o.__h),N(i,o),o.__e!=f&&P$1(o)),r$1.length>l&&r$1.sort(function(n,l){return n.__v.__b-l.__v.__b}));$$1.__r=0;}function H$1(n,l,u,i,t,r,o,f,e,a){var h,v,y,d,k,b,g,m=i&&i.__k||s,w=m.length;for(u.__k=[],h=0;h<l.length;h++)if(null!=(d=u.__k[h]=null==(d=l[h])||"boolean"==typeof d?null:"string"==typeof d||"number"==typeof d||"bigint"==typeof d?p(null,d,null,null,d):Array.isArray(d)?p(_,{children:d},null,null,null):d.__b>0?p(d.type,d.props,d.key,d.ref?d.ref:null,d.__v):d)){if(d.__=u,d.__b=u.__b+1,null===(y=m[h])||y&&d.key==y.key&&d.type===y.type)m[h]=void 0;else for(v=0;v<w;v++){if((y=m[v])&&d.key==y.key&&d.type===y.type){m[v]=void 0;break}y=null;}M(n,d,y=y||c$1,t,r,o,f,e,a),k=d.__e,(v=d.ref)&&y.ref!=v&&(g||(g=[]),y.ref&&g.push(y.ref,null,d),g.push(v,d.__c||k,d)),null!=k?(null==b&&(b=k),"function"==typeof d.type&&d.__k===y.__k?d.__d=e=I$1(d,e,n):e=z$1(n,d,y,m,k,e),"function"==typeof u.type&&(u.__d=e)):e&&y.__e==e&&e.parentNode!=n&&(e=A(y));}for(u.__e=b,h=w;h--;)null!=m[h]&&("function"==typeof u.type&&null!=m[h].__e&&m[h].__e==u.__d&&(u.__d=L$1(i).nextSibling),q(m[h],m[h]));if(g)for(h=0;h<g.length;h++)S(g[h],g[++h],g[++h]);}function I$1(n,l,u){for(var i,t=n.__k,r=0;t&&r<t.length;r++)(i=t[r])&&(i.__=n,l="function"==typeof i.type?I$1(i,l,u):z$1(u,i,i,t,i.__e,l));return l}function j$2(n,l){return l=l||[],null==n||"boolean"==typeof n||(Array.isArray(n)?n.some(function(n){j$2(n,l);}):l.push(n)),l}function z$1(n,l,u,i,t,r){var o,f,e;if(void 0!==l.__d)o=l.__d,l.__d=void 0;else if(null==u||t!=r||null==t.parentNode)n:if(null==r||r.parentNode!==n)n.appendChild(t),o=null;else{for(f=r,e=0;(f=f.nextSibling)&&e<i.length;e+=1)if(f==t)break n;n.insertBefore(t,r),o=r;}return void 0!==o?o:t.nextSibling}function L$1(n){var l,u,i;if(null==n.type||"string"==typeof n.type)return n.__e;if(n.__k)for(l=n.__k.length-1;l>=0;l--)if((u=n.__k[l])&&(i=L$1(u)))return i;return null}function M(n,u,i,t,r,o,f,e,c){var s,a,v,y,p,d,k,b,g,m,w,A,P,C,T,$=u.type;if(void 0!==u.constructor)return null;null!=i.__h&&(c=i.__h,e=u.__e=i.__e,u.__h=null,o=[e]),(s=l$1.__b)&&s(u);try{n:if("function"==typeof $){if(b=u.props,g=(s=$.contextType)&&t[s.__c],m=s?g?g.props.value:s.__:t,i.__c?k=(a=u.__c=i.__c).__=a.__E:("prototype"in $&&$.prototype.render?u.__c=a=new $(b,m):(u.__c=a=new x$1(b,m),a.constructor=$,a.render=B$1),g&&g.sub(a),a.props=b,a.state||(a.state={}),a.context=m,a.__n=t,v=a.__d=!0,a.__h=[],a._sb=[]),null==a.__s&&(a.__s=a.state),null!=$.getDerivedStateFromProps&&(a.__s==a.state&&(a.__s=h({},a.__s)),h(a.__s,$.getDerivedStateFromProps(b,a.__s))),y=a.props,p=a.state,a.__v=u,v)null==$.getDerivedStateFromProps&&null!=a.componentWillMount&&a.componentWillMount(),null!=a.componentDidMount&&a.__h.push(a.componentDidMount);else{if(null==$.getDerivedStateFromProps&&b!==y&&null!=a.componentWillReceiveProps&&a.componentWillReceiveProps(b,m),!a.__e&&null!=a.shouldComponentUpdate&&!1===a.shouldComponentUpdate(b,a.__s,m)||u.__v===i.__v){for(u.__v!==i.__v&&(a.props=b,a.state=a.__s,a.__d=!1),u.__e=i.__e,u.__k=i.__k,u.__k.forEach(function(n){n&&(n.__=u);}),w=0;w<a._sb.length;w++)a.__h.push(a._sb[w]);a._sb=[],a.__h.length&&f.push(a);break n}null!=a.componentWillUpdate&&a.componentWillUpdate(b,a.__s,m),null!=a.componentDidUpdate&&a.__h.push(function(){a.componentDidUpdate(y,p,d);});}if(a.context=m,a.props=b,a.__P=n,A=l$1.__r,P=0,"prototype"in $&&$.prototype.render){for(a.state=a.__s,a.__d=!1,A&&A(u),s=a.render(a.props,a.state,a.context),C=0;C<a._sb.length;C++)a.__h.push(a._sb[C]);a._sb=[];}else do{a.__d=!1,A&&A(u),s=a.render(a.props,a.state,a.context),a.state=a.__s;}while(a.__d&&++P<25);a.state=a.__s,null!=a.getChildContext&&(t=h(h({},t),a.getChildContext())),v||null==a.getSnapshotBeforeUpdate||(d=a.getSnapshotBeforeUpdate(y,p)),T=null!=s&&s.type===_&&null==s.key?s.props.children:s,H$1(n,Array.isArray(T)?T:[T],u,i,t,r,o,f,e,c),a.base=u.__e,u.__h=null,a.__h.length&&f.push(a),k&&(a.__E=a.__=null),a.__e=!1;}else null==o&&u.__v===i.__v?(u.__k=i.__k,u.__e=i.__e):u.__e=O(i.__e,u,i,t,r,o,f,c);(s=l$1.diffed)&&s(u);}catch(n){u.__v=null,(c||null!=o)&&(u.__e=e,u.__h=!!c,o[o.indexOf(e)]=null),l$1.__e(n,u,i);}}function N(n,u){l$1.__c&&l$1.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u);});}catch(n){l$1.__e(n,u.__v);}});}function O(l,u,i,t,r,o,f,e){var s,a,h,y=i.props,p=u.props,d=u.type,_=0;if("svg"===d&&(r=!0),null!=o)for(;_<o.length;_++)if((s=o[_])&&"setAttribute"in s==!!d&&(d?s.localName===d:3===s.nodeType)){l=s,o[_]=null;break}if(null==l){if(null===d)return document.createTextNode(p);l=r?document.createElementNS("http://www.w3.org/2000/svg",d):document.createElement(d,p.is&&p),o=null,e=!1;}if(null===d)y===p||e&&l.data===p||(l.data=p);else{if(o=o&&n.call(l.childNodes),a=(y=i.props||c$1).dangerouslySetInnerHTML,h=p.dangerouslySetInnerHTML,!e){if(null!=o)for(y={},_=0;_<l.attributes.length;_++)y[l.attributes[_].name]=l.attributes[_].value;(h||a)&&(h&&(a&&h.__html==a.__html||h.__html===l.innerHTML)||(l.innerHTML=h&&h.__html||""));}if(k$1(l,p,y,r,e),h)u.__k=[];else if(_=u.props.children,H$1(l,Array.isArray(_)?_:[_],u,i,t,r&&"foreignObject"!==d,o,f,o?o[0]:i.__k&&A(i,0),e),null!=o)for(_=o.length;_--;)null!=o[_]&&v$1(o[_]);e||("value"in p&&void 0!==(_=p.value)&&(_!==l.value||"progress"===d&&!_||"option"===d&&_!==y.value)&&g$2(l,"value",_,y.value,!1),"checked"in p&&void 0!==(_=p.checked)&&_!==l.checked&&g$2(l,"checked",_,y.checked,!1));}return l}function S(n,u,i){try{"function"==typeof n?n(u):n.current=u;}catch(n){l$1.__e(n,i);}}function q(n,u,i){var t,r;if(l$1.unmount&&l$1.unmount(n),(t=n.ref)&&(t.current&&t.current!==n.__e||S(t,null,u)),null!=(t=n.__c)){if(t.componentWillUnmount)try{t.componentWillUnmount();}catch(n){l$1.__e(n,u);}t.base=t.__P=null,n.__c=void 0;}if(t=n.__k)for(r=0;r<t.length;r++)t[r]&&q(t[r],u,i||"function"!=typeof n.type);i||null==n.__e||v$1(n.__e),n.__=n.__e=n.__d=void 0;}function B$1(n,l,u){return this.constructor(n,u)}function D$1(u,i,t){var r,o,f;l$1.__&&l$1.__(u,i),o=(r="function"==typeof t)?null:t&&t.__k||i.__k,f=[],M(i,u=(!r&&t||i).__k=y(_,null,[u]),o||c$1,c$1,void 0!==i.ownerSVGElement,!r&&t?[t]:o?null:i.firstChild?n.call(i.childNodes):null,f,!r&&t?t:o?o.__e:i.firstChild,r),N(f,u);}function G$1(n,l){var u={__c:l="__cC"+e$1++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,i;return this.getChildContext||(u=[],(i={})[l]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(function(n){n.__e=!0,T$1(n);});},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n);};}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=s.slice,l$1={__e:function(n,l,u,i){for(var t,r,o;l=l.__;)if((t=l.__c)&&!t.__)try{if((r=t.constructor)&&null!=r.getDerivedStateFromError&&(t.setState(r.getDerivedStateFromError(n)),o=t.__d),null!=t.componentDidCatch&&(t.componentDidCatch(n,i||{}),o=t.__d),o)return t.__E=t}catch(l){n=l;}throw n}},u$1=0,i$1=function(n){return null!=n&&void 0===n.constructor},t=!1,x$1.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=h({},this.state),"function"==typeof n&&(n=n(h({},u),this.props)),n&&h(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),T$1(this));},x$1.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),T$1(this));},x$1.prototype.render=_,r$1=[],f$1="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,$$1.__r=0,e$1=0;var r,u,i,f=[],c=[],e=l$1.__b,a=l$1.__r,v=l$1.diffed,l=l$1.__c,m=l$1.unmount;function b(){for(var t;t=f.shift();)if(t.__P&&t.__H)try{t.__H.__h.forEach(k),t.__H.__h.forEach(w$1),t.__H.__h=[];}catch(r){t.__H.__h=[],l$1.__e(r,t.__v);}}l$1.__b=function(n){r=null,e&&e(n);},l$1.__r=function(n){a&&a(n);var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.__V=c,n.__N=n.i=void 0;})):(i.__h.forEach(k),i.__h.forEach(w$1),i.__h=[])),u=r;},l$1.diffed=function(t){v&&v(t);var o=t.__c;o&&o.__H&&(o.__H.__h.length&&(1!==f.push(o)&&i===l$1.requestAnimationFrame||((i=l$1.requestAnimationFrame)||j$1)(b)),o.__H.__.forEach(function(n){n.i&&(n.__H=n.i),n.__V!==c&&(n.__=n.__V),n.i=void 0,n.__V=c;})),u=r=null;},l$1.__c=function(t,r){r.some(function(t){try{t.__h.forEach(k),t.__h=t.__h.filter(function(n){return!n.__||w$1(n)});}catch(u){r.some(function(n){n.__h&&(n.__h=[]);}),r=[],l$1.__e(u,t.__v);}}),l&&l(t,r);},l$1.unmount=function(t){m&&m(t);var r,u=t.__c;u&&u.__H&&(u.__H.__.forEach(function(n){try{k(n);}catch(n){r=n;}}),u.__H=void 0,r&&l$1.__e(r,u.__v));};var g$1="function"==typeof requestAnimationFrame;function j$1(n){var t,r=function(){clearTimeout(u),g$1&&cancelAnimationFrame(t),setTimeout(n);},u=setTimeout(r,100);g$1&&(t=requestAnimationFrame(r));}function k(n){var t=r,u=n.__c;"function"==typeof u&&(n.__c=void 0,u()),r=t;}function w$1(n){var t=r;n.__c=n.__(),r=t;}
function g(n,t){for(var e in t)n[e]=t[e];return n}function C(n,t){for(var e in n)if("__source"!==e&&!(e in t))return!0;for(var r in t)if("__source"!==r&&n[r]!==t[r])return!0;return!1}function w(n){this.props=n;}(w.prototype=new x$1).isPureReactComponent=!0,w.prototype.shouldComponentUpdate=function(n,t){return C(this.props,n)||C(this.state,t)};var x=l$1.__b;l$1.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),x&&x(n);};var T=l$1.__e;l$1.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);T(n,t,e,r);};var I=l$1.unmount;function L(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){"function"==typeof n.__c&&n.__c();}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return L(n,t,e)})),n}function U(n,t,e){return n&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return U(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.insertBefore(n.__e,n.__d),n.__c.__e=!0,n.__c.__P=e)),n}function D(){this.__u=0,this.t=null,this.__b=null;}function F(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function V(){this.u=null,this.o=null;}l$1.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&!0===n.__h&&(n.type=null),I&&I(n);},(D.prototype=new x$1).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=F(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l());};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=U(n,n.__c.__P,n.__c.__O);}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate();}},c=!0===t.__h;r.__u++||c||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i);},D.prototype.componentWillUnmount=function(){this.t=[];},D.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement("div"),o=this.__v.__k[0].__c;this.__v.__k[0]=L(this.__b,r,o.__O=o.__P);}this.__b=null;}var i=e.__a&&y(_,null,n.fallback);return i&&(i.__h=null),[y(_,null,e.__a?null:n.children),i]};var W=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&("t"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]<e[0])break;n.u=e=e[2];}};function P(n){return this.getChildContext=function(){return n.context},n.children}function $(n){var e=this,r=n.i;e.componentWillUnmount=function(){D$1(null,e.l),e.l=null,e.i=null;},e.i&&e.i!==r&&e.componentWillUnmount(),n.__v?(e.l||(e.i=r,e.l={nodeType:1,parentNode:r,childNodes:[],appendChild:function(n){this.childNodes.push(n),e.i.appendChild(n);},insertBefore:function(n,t){this.childNodes.push(n),e.i.appendChild(n);},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),e.i.removeChild(n);}}),D$1(y(P,{context:e.context},n.__v),e.l)):e.l&&e.componentWillUnmount();}function j(n,e){var r=y($,{__v:n,i:e});return r.containerInfo=e,r}(V.prototype=new x$1).__a=function(n){var t=this,e=F(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),W(t,n,r)):u();};e?e(o):o();}},V.prototype.render=function(n){this.u=null,this.o=new Map;var t=j$2(n.children);n.revealOrder&&"b"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},V.prototype.componentDidUpdate=V.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){W(n,e,t);});};var z="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,B=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,H="undefined"!=typeof document,Z=function(n){return("undefined"!=typeof Symbol&&"symbol"==typeof Symbol()?/fil|che|rad/i:/fil|che|ra/i).test(n)};x$1.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(t){Object.defineProperty(x$1.prototype,t,{configurable:!0,get:function(){return this["UNSAFE_"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n});}});});var G=l$1.event;function J(){}function K(){return this.cancelBubble}function Q(){return this.defaultPrevented}l$1.event=function(n){return G&&(n=G(n)),n.persist=J,n.isPropagationStopped=K,n.isDefaultPrevented=Q,n.nativeEvent=n};var nn={configurable:!0,get:function(){return this.class}},tn=l$1.vnode;l$1.vnode=function(n){var t=n.type,e=n.props,u=e;if("string"==typeof t){var o=-1===t.indexOf("-");for(var i in u={},e){var l=e[i];H&&"children"===i&&"noscript"===t||"value"===i&&"defaultValue"in e&&null==l||("defaultValue"===i&&"value"in e&&null==e.value?i="value":"download"===i&&!0===l?l="":/ondoubleclick/i.test(i)?i="ondblclick":/^onchange(textarea|input)/i.test(i+t)&&!Z(e.type)?i="oninput":/^onfocus$/i.test(i)?i="onfocusin":/^onblur$/i.test(i)?i="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(i)?i=i.toLowerCase():o&&B.test(i)?i=i.replace(/[A-Z0-9]/g,"-$&").toLowerCase():null===l&&(l=void 0),/^oninput$/i.test(i)&&(i=i.toLowerCase(),u[i]&&(i="oninputCapture")),u[i]=l);}"select"==t&&u.multiple&&Array.isArray(u.value)&&(u.value=j$2(e.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value);})),"select"==t&&null!=u.defaultValue&&(u.value=j$2(e.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value;})),n.props=u,e.class!=e.className&&(nn.enumerable="className"in e,null!=e.className&&(u.class=e.className),Object.defineProperty(u,"className",nn));}n.$$typeof=z,tn&&tn(n);};var en=l$1.__r;l$1.__r=function(n){en&&en(n),n.__c;};const styleTexts=[];const styleEls=new Map();function injectStyles(styleText){styleTexts.push(styleText);styleEls.forEach((styleEl)=>{appendStylesTo(styleEl,styleText);});}
function ensureElHasStyles(el){if(el.isConnected&&el.getRootNode){registerStylesRoot(el.getRootNode());}}
function registerStylesRoot(rootNode){let styleEl=styleEls.get(rootNode);if(!styleEl||!styleEl.isConnected){styleEl=rootNode.querySelector('style[data-fullcalendar]');if(!styleEl){styleEl=document.createElement('style');styleEl.setAttribute('data-fullcalendar','');const nonce=getNonceValue();if(nonce){styleEl.nonce=nonce;}
const parentEl=rootNode===document?document.head:rootNode;const insertBefore=rootNode===document?parentEl.querySelector('script,link[rel=stylesheet],link[as=style],style'):parentEl.firstChild;parentEl.insertBefore(styleEl,insertBefore);}
styleEls.set(rootNode,styleEl);hydrateStylesRoot(styleEl);}}
function hydrateStylesRoot(styleEl){for(const styleText of styleTexts){appendStylesTo(styleEl,styleText);}}
function appendStylesTo(styleEl,styleText){const{sheet}=styleEl;const ruleCnt=sheet.cssRules.length;styleText.split('}').forEach((styleStr,i)=>{styleStr=styleStr.trim();if(styleStr){sheet.insertRule(styleStr+'}',ruleCnt+i);}});}
let queriedNonceValue;function getNonceValue(){if(queriedNonceValue===undefined){queriedNonceValue=queryNonceValue();}
return queriedNonceValue;}
function queryNonceValue(){const metaWithNonce=document.querySelector('meta[name="csp-nonce"]');if(metaWithNonce&&metaWithNonce.hasAttribute('content')){return metaWithNonce.getAttribute('content');}
const elWithNonce=document.querySelector('script[nonce]');if(elWithNonce){return elWithNonce.nonce||'';}
return'';}
if(typeof document!=='undefined'){registerStylesRoot(document);}
var css_248z$7=":root{--fc-small-font-size:.85em;--fc-page-bg-color:#fff;--fc-neutral-bg-color:hsla(0,0%,82%,.3);--fc-neutral-text-color:grey;--fc-border-color:#ddd;--fc-button-text-color:#fff;--fc-button-bg-color:#2c3e50;--fc-button-border-color:#2c3e50;--fc-button-hover-bg-color:#1e2b37;--fc-button-hover-border-color:#1a252f;--fc-button-active-bg-color:#1a252f;--fc-button-active-border-color:#151e27;--fc-event-bg-color:#3788d8;--fc-event-border-color:#3788d8;--fc-event-text-color:#fff;--fc-event-selected-overlay-color:rgba(0,0,0,.25);--fc-more-link-bg-color:#d0d0d0;--fc-more-link-text-color:inherit;--fc-event-resizer-thickness:8px;--fc-event-resizer-dot-total-width:8px;--fc-event-resizer-dot-border-width:1px;--fc-non-business-color:hsla(0,0%,84%,.3);--fc-bg-event-color:#8fdf82;--fc-bg-event-opacity:0.3;--fc-highlight-color:rgba(188,232,241,.3);--fc-today-bg-color:rgba(255,220,40,.15);--fc-now-indicator-color:red}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc{display:flex;flex-direction:column;font-size:1em}.fc,.fc *,.fc :after,.fc :before{box-sizing:border-box}.fc table{border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{padding:0;vertical-align:top}.fc a[data-navlink]{cursor:pointer}.fc a[data-navlink]:hover{text-decoration:underline}.fc-direction-ltr{direction:ltr;text-align:left}.fc-direction-rtl{direction:rtl;text-align:right}.fc-theme-standard td,.fc-theme-standard th{border:1px solid var(--fc-border-color)}.fc-liquid-hack td,.fc-liquid-hack th{position:relative}@font-face{font-family:fcicons;font-style:normal;font-weight:400;src:url(\"data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBfAAAAC8AAAAYGNtYXAXVtKNAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZgYydxIAAAF4AAAFNGhlYWQUJ7cIAAAGrAAAADZoaGVhB20DzAAABuQAAAAkaG10eCIABhQAAAcIAAAALGxvY2ED4AU6AAAHNAAAABhtYXhwAA8AjAAAB0wAAAAgbmFtZXsr690AAAdsAAABhnBvc3QAAwAAAAAI9AAAACAAAwPAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpBgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6Qb//f//AAAAAAAg6QD//f//AAH/4xcEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAWIAjQKeAskAEwAAJSc3NjQnJiIHAQYUFwEWMjc2NCcCnuLiDQ0MJAz/AA0NAQAMJAwNDcni4gwjDQwM/wANIwz/AA0NDCMNAAAAAQFiAI0CngLJABMAACUBNjQnASYiBwYUHwEHBhQXFjI3AZ4BAA0N/wAMJAwNDeLiDQ0MJAyNAQAMIw0BAAwMDSMM4uINIwwNDQAAAAIA4gC3Ax4CngATACcAACUnNzY0JyYiDwEGFB8BFjI3NjQnISc3NjQnJiIPAQYUHwEWMjc2NCcB87e3DQ0MIw3VDQ3VDSMMDQ0BK7e3DQ0MJAzVDQ3VDCQMDQ3zuLcMJAwNDdUNIwzWDAwNIwy4twwkDA0N1Q0jDNYMDA0jDAAAAgDiALcDHgKeABMAJwAAJTc2NC8BJiIHBhQfAQcGFBcWMjchNzY0LwEmIgcGFB8BBwYUFxYyNwJJ1Q0N1Q0jDA0Nt7cNDQwjDf7V1Q0N1QwkDA0Nt7cNDQwkDLfWDCMN1Q0NDCQMt7gMIw0MDNYMIw3VDQ0MJAy3uAwjDQwMAAADAFUAAAOrA1UAMwBoAHcAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMhMjY1NCYjISIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAAVYRGRkR/qoRGRkRA1UFBAUOCQkVDAsZDf2rDRkLDBUJCA4FBQUFBQUOCQgVDAsZDQJVDRkLDBUJCQ4FBAVVAgECBQMCBwQECAX9qwQJAwQHAwMFAQICAgIBBQMDBwQDCQQCVQUIBAQHAgMFAgEC/oAZEhEZGRESGQAAAAADAFUAAAOrA1UAMwBoAIkAABMiBgcOAQcOAQcOARURFBYXHgEXHgEXHgEzITI2Nz4BNz4BNz4BNRE0JicuAScuAScuASMFITIWFx4BFx4BFx4BFREUBgcOAQcOAQcOASMhIiYnLgEnLgEnLgE1ETQ2Nz4BNz4BNz4BMxMzFRQWMzI2PQEzMjY1NCYrATU0JiMiBh0BIyIGFRQWM9UNGAwLFQkJDgUFBQUFBQ4JCRULDBgNAlYNGAwLFQkJDgUFBQUFBQ4JCRULDBgN/aoCVgQIBAQHAwMFAQIBAQIBBQMDBwQECAT9qgQIBAQHAwMFAQIBAQIBBQMDBwQECASAgBkSEhmAERkZEYAZEhIZgBEZGREDVQUEBQ4JCRUMCxkN/asNGQsMFQkIDgUFBQUFBQ4JCBUMCxkNAlUNGQsMFQkJDgUEBVUCAQIFAwIHBAQIBf2rBAkDBAcDAwUBAgICAgEFAwMHBAMJBAJVBQgEBAcCAwUCAQL+gIASGRkSgBkSERmAEhkZEoAZERIZAAABAOIAjQMeAskAIAAAExcHBhQXFjI/ARcWMjc2NC8BNzY0JyYiDwEnJiIHBhQX4uLiDQ0MJAzi4gwkDA0N4uINDQwkDOLiDCQMDQ0CjeLiDSMMDQ3h4Q0NDCMN4uIMIw0MDOLiDAwNIwwAAAABAAAAAQAAa5n0y18PPPUACwQAAAAAANivOVsAAAAA2K85WwAAAAADqwNVAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAOrAAEAAAAAAAAAAAAAAAAAAAALBAAAAAAAAAAAAAAAAgAAAAQAAWIEAAFiBAAA4gQAAOIEAABVBAAAVQQAAOIAAAAAAAoAFAAeAEQAagCqAOoBngJkApoAAQAAAAsAigADAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGZjaWNvbnMAZgBjAGkAYwBvAG4Ac1ZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGZjaWNvbnMAZgBjAGkAYwBvAG4Ac2ZjaWNvbnMAZgBjAGkAYwBvAG4Ac1JlZ3VsYXIAUgBlAGcAdQBsAGEAcmZjaWNvbnMAZgBjAGkAYwBvAG4Ac0ZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\") format(\"truetype\")}.fc-icon{speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-family:fcicons!important;font-style:normal;font-variant:normal;font-weight:400;height:1em;line-height:1;text-align:center;text-transform:none;-moz-user-select:none;user-select:none;width:1em}.fc-icon-chevron-left:before{content:\"\\e900\"}.fc-icon-chevron-right:before{content:\"\\e901\"}.fc-icon-chevrons-left:before{content:\"\\e902\"}.fc-icon-chevrons-right:before{content:\"\\e903\"}.fc-icon-minus-square:before{content:\"\\e904\"}.fc-icon-plus-square:before{content:\"\\e905\"}.fc-icon-x:before{content:\"\\e906\"}.fc .fc-button{border-radius:0;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible;text-transform:none}.fc .fc-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.fc .fc-button{-webkit-appearance:button}.fc .fc-button:not(:disabled){cursor:pointer}.fc .fc-button{background-color:transparent;border:1px solid transparent;border-radius:.25em;display:inline-block;font-size:1em;font-weight:400;line-height:1.5;padding:.4em .65em;text-align:center;-moz-user-select:none;user-select:none;vertical-align:middle}.fc .fc-button:hover{text-decoration:none}.fc .fc-button:focus{box-shadow:0 0 0 .2rem rgba(44,62,80,.25);outline:0}.fc .fc-button:disabled{opacity:.65}.fc .fc-button-primary{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:hover{background-color:var(--fc-button-hover-bg-color);border-color:var(--fc-button-hover-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:disabled{background-color:var(--fc-button-bg-color);border-color:var(--fc-button-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button-primary:not(:disabled).fc-button-active,.fc .fc-button-primary:not(:disabled):active{background-color:var(--fc-button-active-bg-color);border-color:var(--fc-button-active-border-color);color:var(--fc-button-text-color)}.fc .fc-button-primary:not(:disabled).fc-button-active:focus,.fc .fc-button-primary:not(:disabled):active:focus{box-shadow:0 0 0 .2rem rgba(76,91,106,.5)}.fc .fc-button .fc-icon{font-size:1.5em;vertical-align:middle}.fc .fc-button-group{display:inline-flex;position:relative;vertical-align:middle}.fc .fc-button-group>.fc-button{flex:1 1 auto;position:relative}.fc .fc-button-group>.fc-button.fc-button-active,.fc .fc-button-group>.fc-button:active,.fc .fc-button-group>.fc-button:focus,.fc .fc-button-group>.fc-button:hover{z-index:1}.fc-direction-ltr .fc-button-group>.fc-button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-1px}.fc-direction-ltr .fc-button-group>.fc-button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.fc-direction-rtl .fc-button-group>.fc-button:not(:first-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.fc-direction-rtl .fc-button-group>.fc-button:not(:last-child){border-bottom-left-radius:0;border-top-left-radius:0}.fc .fc-toolbar{align-items:center;display:flex;justify-content:space-between}.fc .fc-toolbar.fc-header-toolbar{margin-bottom:1.5em}.fc .fc-toolbar.fc-footer-toolbar{margin-top:1.5em}.fc .fc-toolbar-title{font-size:1.75em;margin:0}.fc-direction-ltr .fc-toolbar>*>:not(:first-child){margin-left:.75em}.fc-direction-rtl .fc-toolbar>*>:not(:first-child){margin-right:.75em}.fc-direction-rtl .fc-toolbar-ltr{flex-direction:row-reverse}.fc .fc-scroller{-webkit-overflow-scrolling:touch;position:relative}.fc .fc-scroller-liquid{height:100%}.fc .fc-scroller-liquid-absolute{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-scroller-harness{direction:ltr;overflow:hidden;position:relative}.fc .fc-scroller-harness-liquid{height:100%}.fc-direction-rtl .fc-scroller-harness>.fc-scroller{direction:rtl}.fc-theme-standard .fc-scrollgrid{border:1px solid var(--fc-border-color)}.fc .fc-scrollgrid,.fc .fc-scrollgrid table{table-layout:fixed;width:100%}.fc .fc-scrollgrid table{border-left-style:hidden;border-right-style:hidden;border-top-style:hidden}.fc .fc-scrollgrid{border-bottom-width:0;border-collapse:separate;border-right-width:0}.fc .fc-scrollgrid-liquid{height:100%}.fc .fc-scrollgrid-section,.fc .fc-scrollgrid-section table,.fc .fc-scrollgrid-section>td{height:1px}.fc .fc-scrollgrid-section-liquid>td{height:100%}.fc .fc-scrollgrid-section>*{border-left-width:0;border-top-width:0}.fc .fc-scrollgrid-section-footer>*,.fc .fc-scrollgrid-section-header>*{border-bottom-width:0}.fc .fc-scrollgrid-section-body table,.fc .fc-scrollgrid-section-footer table{border-bottom-style:hidden}.fc .fc-scrollgrid-section-sticky>*{background:var(--fc-page-bg-color);position:sticky;z-index:3}.fc .fc-scrollgrid-section-header.fc-scrollgrid-section-sticky>*{top:0}.fc .fc-scrollgrid-section-footer.fc-scrollgrid-section-sticky>*{bottom:0}.fc .fc-scrollgrid-sticky-shim{height:1px;margin-bottom:-1px}.fc-sticky{position:sticky}.fc .fc-view-harness{flex-grow:1;position:relative}.fc .fc-view-harness-active>.fc-view{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-col-header-cell-cushion{display:inline-block;padding:2px 4px}.fc .fc-bg-event,.fc .fc-highlight,.fc .fc-non-business{bottom:0;left:0;position:absolute;right:0;top:0}.fc .fc-non-business{background:var(--fc-non-business-color)}.fc .fc-bg-event{background:var(--fc-bg-event-color);opacity:var(--fc-bg-event-opacity)}.fc .fc-bg-event .fc-event-title{font-size:var(--fc-small-font-size);font-style:italic;margin:.5em}.fc .fc-highlight{background:var(--fc-highlight-color)}.fc .fc-cell-shaded,.fc .fc-day-disabled{background:var(--fc-neutral-bg-color)}a.fc-event,a.fc-event:hover{text-decoration:none}.fc-event.fc-event-draggable,.fc-event[href]{cursor:pointer}.fc-event .fc-event-main{position:relative;z-index:2}.fc-event-dragging:not(.fc-event-selected){opacity:.75}.fc-event-dragging.fc-event-selected{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-event .fc-event-resizer{display:none;position:absolute;z-index:4}.fc-event-selected .fc-event-resizer,.fc-event:hover .fc-event-resizer{display:block}.fc-event-selected .fc-event-resizer{background:var(--fc-page-bg-color);border-color:inherit;border-radius:calc(var(--fc-event-resizer-dot-total-width)/2);border-style:solid;border-width:var(--fc-event-resizer-dot-border-width);height:var(--fc-event-resizer-dot-total-width);width:var(--fc-event-resizer-dot-total-width)}.fc-event-selected .fc-event-resizer:before{bottom:-20px;content:\"\";left:-20px;position:absolute;right:-20px;top:-20px}.fc-event-selected,.fc-event:focus{box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event-selected:before,.fc-event:focus:before{bottom:0;content:\"\";left:0;position:absolute;right:0;top:0;z-index:3}.fc-event-selected:after,.fc-event:focus:after{background:var(--fc-event-selected-overlay-color);bottom:-1px;content:\"\";left:-1px;position:absolute;right:-1px;top:-1px;z-index:1}.fc-h-event{background-color:var(--fc-event-bg-color);border:1px solid var(--fc-event-border-color);display:block}.fc-h-event .fc-event-main{color:var(--fc-event-text-color)}.fc-h-event .fc-event-main-frame{display:flex}.fc-h-event .fc-event-time{max-width:100%;overflow:hidden}.fc-h-event .fc-event-title-container{flex-grow:1;flex-shrink:1;min-width:0}.fc-h-event .fc-event-title{display:inline-block;left:0;max-width:100%;overflow:hidden;right:0;vertical-align:top}.fc-h-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-start),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-end){border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}.fc-direction-ltr .fc-daygrid-block-event:not(.fc-event-end),.fc-direction-rtl .fc-daygrid-block-event:not(.fc-event-start){border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.fc-h-event:not(.fc-event-selected) .fc-event-resizer{bottom:0;top:0;width:var(--fc-event-resizer-thickness)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end{cursor:w-resize;left:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-direction-ltr .fc-h-event:not(.fc-event-selected) .fc-event-resizer-end,.fc-direction-rtl .fc-h-event:not(.fc-event-selected) .fc-event-resizer-start{cursor:e-resize;right:calc(var(--fc-event-resizer-thickness)*-.5)}.fc-h-event.fc-event-selected .fc-event-resizer{margin-top:calc(var(--fc-event-resizer-dot-total-width)*-.5);top:50%}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-start,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-end{left:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc-direction-ltr .fc-h-event.fc-event-selected .fc-event-resizer-end,.fc-direction-rtl .fc-h-event.fc-event-selected .fc-event-resizer-start{right:calc(var(--fc-event-resizer-dot-total-width)*-.5)}.fc .fc-popover{box-shadow:0 2px 6px rgba(0,0,0,.15);position:absolute;z-index:9999}.fc .fc-popover-header{align-items:center;display:flex;flex-direction:row;justify-content:space-between;padding:3px 4px}.fc .fc-popover-title{margin:0 2px}.fc .fc-popover-close{cursor:pointer;font-size:1.1em;opacity:.65}.fc-theme-standard .fc-popover{background:var(--fc-page-bg-color);border:1px solid var(--fc-border-color)}.fc-theme-standard .fc-popover-header{background:var(--fc-neutral-bg-color)}";injectStyles(css_248z$7);class DelayedRunner{constructor(drainedOption){this.drainedOption=drainedOption;this.isRunning=false;this.isDirty=false;this.pauseDepths={};this.timeoutId=0;}
request(delay){this.isDirty=true;if(!this.isPaused()){this.clearTimeout();if(delay==null){this.tryDrain();}
else{this.timeoutId=setTimeout(this.tryDrain.bind(this),delay);}}}
pause(scope=''){let{pauseDepths}=this;pauseDepths[scope]=(pauseDepths[scope]||0)+1;this.clearTimeout();}
resume(scope='',force){let{pauseDepths}=this;if(scope in pauseDepths){if(force){delete pauseDepths[scope];}
else{pauseDepths[scope]-=1;let depth=pauseDepths[scope];if(depth<=0){delete pauseDepths[scope];}}
this.tryDrain();}}
isPaused(){return Object.keys(this.pauseDepths).length;}
tryDrain(){if(!this.isRunning&&!this.isPaused()){this.isRunning=true;while(this.isDirty){this.isDirty=false;this.drained();}
this.isRunning=false;}}
clear(){this.clearTimeout();this.isDirty=false;this.pauseDepths={};}
clearTimeout(){if(this.timeoutId){clearTimeout(this.timeoutId);this.timeoutId=0;}}
drained(){if(this.drainedOption){this.drainedOption();}}}
function removeElement(el){if(el.parentNode){el.parentNode.removeChild(el);}}
function elementClosest(el,selector){if(el.closest){return el.closest(selector);}
if(!document.documentElement.contains(el)){return null;}
do{if(elementMatches(el,selector)){return el;}
el=(el.parentElement||el.parentNode);}while(el!==null&&el.nodeType===1);return null;}
function elementMatches(el,selector){let method=el.matches||el.matchesSelector||el.msMatchesSelector;return method.call(el,selector);}
function findElements(container,selector){let containers=container instanceof HTMLElement?[container]:container;let allMatches=[];for(let i=0;i<containers.length;i+=1){let matches=containers[i].querySelectorAll(selector);for(let j=0;j<matches.length;j+=1){allMatches.push(matches[j]);}}
return allMatches;}
function findDirectChildren(parent,selector){let parents=parent instanceof HTMLElement?[parent]:parent;let allMatches=[];for(let i=0;i<parents.length;i+=1){let childNodes=parents[i].children;for(let j=0;j<childNodes.length;j+=1){let childNode=childNodes[j];if(!selector||elementMatches(childNode,selector)){allMatches.push(childNode);}}}
return allMatches;}
const PIXEL_PROP_RE=/(top|left|right|bottom|width|height)$/i;function applyStyle(el,props){for(let propName in props){applyStyleProp(el,propName,props[propName]);}}
function applyStyleProp(el,name,val){if(val==null){el.style[name]='';}
else if(typeof val==='number'&&PIXEL_PROP_RE.test(name)){el.style[name]=`${val}px`;}
else{el.style[name]=val;}}
function getEventTargetViaRoot(ev){var _a,_b;return(_b=(_a=ev.composedPath)===null||_a===void 0?void 0:_a.call(ev)[0])!==null&&_b!==void 0?_b:ev.target;}
let guid$1=0;function getUniqueDomId(){guid$1+=1;return'fc-dom-'+guid$1;}
function preventDefault(ev){ev.preventDefault();}
function buildDelegationHandler(selector,handler){return(ev)=>{let matchedChild=elementClosest(ev.target,selector);if(matchedChild){handler.call(matchedChild,ev,matchedChild);}};}
function listenBySelector(container,eventType,selector,handler){let attachedHandler=buildDelegationHandler(selector,handler);container.addEventListener(eventType,attachedHandler);return()=>{container.removeEventListener(eventType,attachedHandler);};}
function listenToHoverBySelector(container,selector,onMouseEnter,onMouseLeave){let currentMatchedChild;return listenBySelector(container,'mouseover',selector,(mouseOverEv,matchedChild)=>{if(matchedChild!==currentMatchedChild){currentMatchedChild=matchedChild;onMouseEnter(mouseOverEv,matchedChild);let realOnMouseLeave=(mouseLeaveEv)=>{currentMatchedChild=null;onMouseLeave(mouseLeaveEv,matchedChild);matchedChild.removeEventListener('mouseleave',realOnMouseLeave);};matchedChild.addEventListener('mouseleave',realOnMouseLeave);}});}
const transitionEventNames=['webkitTransitionEnd','otransitionend','oTransitionEnd','msTransitionEnd','transitionend',];function whenTransitionDone(el,callback){let realCallback=(ev)=>{callback(ev);transitionEventNames.forEach((eventName)=>{el.removeEventListener(eventName,realCallback);});};transitionEventNames.forEach((eventName)=>{el.addEventListener(eventName,realCallback);});}
function createAriaClickAttrs(handler){return Object.assign({onClick:handler},createAriaKeyboardAttrs(handler));}
function createAriaKeyboardAttrs(handler){return{tabIndex:0,onKeyDown(ev){if(ev.key==='Enter'||ev.key===' '){handler(ev);ev.preventDefault();}},};}
let guidNumber=0;function guid(){guidNumber+=1;return String(guidNumber);}
function disableCursor(){document.body.classList.add('fc-not-allowed');}
function enableCursor(){document.body.classList.remove('fc-not-allowed');}
function preventSelection(el){el.style.userSelect='none';el.style.webkitUserSelect='none';el.addEventListener('selectstart',preventDefault);}
function allowSelection(el){el.style.userSelect='';el.style.webkitUserSelect='';el.removeEventListener('selectstart',preventDefault);}
function preventContextMenu(el){el.addEventListener('contextmenu',preventDefault);}
function allowContextMenu(el){el.removeEventListener('contextmenu',preventDefault);}
function parseFieldSpecs(input){let specs=[];let tokens=[];let i;let token;if(typeof input==='string'){tokens=input.split(/\s*,\s*/);}
else if(typeof input==='function'){tokens=[input];}
else if(Array.isArray(input)){tokens=input;}
for(i=0;i<tokens.length;i+=1){token=tokens[i];if(typeof token==='string'){specs.push(token.charAt(0)==='-'?{field:token.substring(1),order:-1}:{field:token,order:1});}
else if(typeof token==='function'){specs.push({func:token});}}
return specs;}
function compareByFieldSpecs(obj0,obj1,fieldSpecs){let i;let cmp;for(i=0;i<fieldSpecs.length;i+=1){cmp=compareByFieldSpec(obj0,obj1,fieldSpecs[i]);if(cmp){return cmp;}}
return 0;}
function compareByFieldSpec(obj0,obj1,fieldSpec){if(fieldSpec.func){return fieldSpec.func(obj0,obj1);}
return flexibleCompare(obj0[fieldSpec.field],obj1[fieldSpec.field])*(fieldSpec.order||1);}
function flexibleCompare(a,b){if(!a&&!b){return 0;}
if(b==null){return-1;}
if(a==null){return 1;}
if(typeof a==='string'||typeof b==='string'){return String(a).localeCompare(String(b));}
return a-b;}
function padStart(val,len){let s=String(val);return'000'.substr(0,len-s.length)+s;}
function formatWithOrdinals(formatter,args,fallbackText){if(typeof formatter==='function'){return formatter(...args);}
if(typeof formatter==='string'){return args.reduce((str,arg,index)=>(str.replace('$'+index,arg||'')),formatter);}
return fallbackText;}
function compareNumbers(a,b){return a-b;}
function isInt(n){return n%1===0;}
function computeSmallestCellWidth(cellEl){let allWidthEl=cellEl.querySelector('.fc-scrollgrid-shrink-frame');let contentWidthEl=cellEl.querySelector('.fc-scrollgrid-shrink-cushion');if(!allWidthEl){throw new Error('needs fc-scrollgrid-shrink-frame className');}
if(!contentWidthEl){throw new Error('needs fc-scrollgrid-shrink-cushion className');}
return cellEl.getBoundingClientRect().width-allWidthEl.getBoundingClientRect().width+
contentWidthEl.getBoundingClientRect().width;}
const INTERNAL_UNITS=['years','months','days','milliseconds'];const PARSE_RE=/^(-?)(?:(\d+)\.)?(\d+):(\d\d)(?::(\d\d)(?:\.(\d\d\d))?)?/;function createDuration(input,unit){if(typeof input==='string'){return parseString(input);}
if(typeof input==='object'&&input){return parseObject(input);}
if(typeof input==='number'){return parseObject({[unit||'milliseconds']:input});}
return null;}
function parseString(s){let m=PARSE_RE.exec(s);if(m){let sign=m[1]?-1:1;return{years:0,months:0,days:sign*(m[2]?parseInt(m[2],10):0),milliseconds:sign*((m[3]?parseInt(m[3],10):0)*60*60*1000+
(m[4]?parseInt(m[4],10):0)*60*1000+
(m[5]?parseInt(m[5],10):0)*1000+
(m[6]?parseInt(m[6],10):0)),};}
return null;}
function parseObject(obj){let duration={years:obj.years||obj.year||0,months:obj.months||obj.month||0,days:obj.days||obj.day||0,milliseconds:(obj.hours||obj.hour||0)*60*60*1000+
(obj.minutes||obj.minute||0)*60*1000+
(obj.seconds||obj.second||0)*1000+
(obj.milliseconds||obj.millisecond||obj.ms||0),};let weeks=obj.weeks||obj.week;if(weeks){duration.days+=weeks*7;duration.specifiedWeeks=true;}
return duration;}
function durationsEqual(d0,d1){return d0.years===d1.years&&d0.months===d1.months&&d0.days===d1.days&&d0.milliseconds===d1.milliseconds;}
function asCleanDays(dur){if(!dur.years&&!dur.months&&!dur.milliseconds){return dur.days;}
return 0;}
function addDurations(d0,d1){return{years:d0.years+d1.years,months:d0.months+d1.months,days:d0.days+d1.days,milliseconds:d0.milliseconds+d1.milliseconds,};}
function subtractDurations(d1,d0){return{years:d1.years-d0.years,months:d1.months-d0.months,days:d1.days-d0.days,milliseconds:d1.milliseconds-d0.milliseconds,};}
function multiplyDuration(d,n){return{years:d.years*n,months:d.months*n,days:d.days*n,milliseconds:d.milliseconds*n,};}
function asRoughYears(dur){return asRoughDays(dur)/365;}
function asRoughMonths(dur){return asRoughDays(dur)/30;}
function asRoughDays(dur){return asRoughMs(dur)/864e5;}
function asRoughMinutes(dur){return asRoughMs(dur)/(1000*60);}
function asRoughSeconds(dur){return asRoughMs(dur)/1000;}
function asRoughMs(dur){return dur.years*(365*864e5)+
dur.months*(30*864e5)+
dur.days*864e5+
dur.milliseconds;}
function wholeDivideDurations(numerator,denominator){let res=null;for(let i=0;i<INTERNAL_UNITS.length;i+=1){let unit=INTERNAL_UNITS[i];if(denominator[unit]){let localRes=numerator[unit]/denominator[unit];if(!isInt(localRes)||(res!==null&&res!==localRes)){return null;}
res=localRes;}
else if(numerator[unit]){return null;}}
return res;}
function greatestDurationDenominator(dur){let ms=dur.milliseconds;if(ms){if(ms%1000!==0){return{unit:'millisecond',value:ms};}
if(ms%(1000*60)!==0){return{unit:'second',value:ms/1000};}
if(ms%(1000*60*60)!==0){return{unit:'minute',value:ms/(1000*60)};}
if(ms){return{unit:'hour',value:ms/(1000*60*60)};}}
if(dur.days){if(dur.specifiedWeeks&&dur.days%7===0){return{unit:'week',value:dur.days/7};}
return{unit:'day',value:dur.days};}
if(dur.months){return{unit:'month',value:dur.months};}
if(dur.years){return{unit:'year',value:dur.years};}
return{unit:'millisecond',value:0};}
function removeExact(array,exactVal){let removeCnt=0;let i=0;while(i<array.length){if(array[i]===exactVal){array.splice(i,1);removeCnt+=1;}
else{i+=1;}}
return removeCnt;}
function isArraysEqual(a0,a1,equalityFunc){if(a0===a1){return true;}
let len=a0.length;let i;if(len!==a1.length){return false;}
for(i=0;i<len;i+=1){if(!(equalityFunc?equalityFunc(a0[i],a1[i]):a0[i]===a1[i])){return false;}}
return true;}
const DAY_IDS=['sun','mon','tue','wed','thu','fri','sat'];function addWeeks(m,n){let a=dateToUtcArray(m);a[2]+=n*7;return arrayToUtcDate(a);}
function addDays(m,n){let a=dateToUtcArray(m);a[2]+=n;return arrayToUtcDate(a);}
function addMs(m,n){let a=dateToUtcArray(m);a[6]+=n;return arrayToUtcDate(a);}
function diffWeeks(m0,m1){return diffDays(m0,m1)/7;}
function diffDays(m0,m1){return(m1.valueOf()-m0.valueOf())/(1000*60*60*24);}
function diffHours(m0,m1){return(m1.valueOf()-m0.valueOf())/(1000*60*60);}
function diffMinutes(m0,m1){return(m1.valueOf()-m0.valueOf())/(1000*60);}
function diffSeconds(m0,m1){return(m1.valueOf()-m0.valueOf())/1000;}
function diffDayAndTime(m0,m1){let m0day=startOfDay(m0);let m1day=startOfDay(m1);return{years:0,months:0,days:Math.round(diffDays(m0day,m1day)),milliseconds:(m1.valueOf()-m1day.valueOf())-(m0.valueOf()-m0day.valueOf()),};}
function diffWholeWeeks(m0,m1){let d=diffWholeDays(m0,m1);if(d!==null&&d%7===0){return d/7;}
return null;}
function diffWholeDays(m0,m1){if(timeAsMs(m0)===timeAsMs(m1)){return Math.round(diffDays(m0,m1));}
return null;}
function startOfDay(m){return arrayToUtcDate([m.getUTCFullYear(),m.getUTCMonth(),m.getUTCDate(),]);}
function startOfHour(m){return arrayToUtcDate([m.getUTCFullYear(),m.getUTCMonth(),m.getUTCDate(),m.getUTCHours(),]);}
function startOfMinute(m){return arrayToUtcDate([m.getUTCFullYear(),m.getUTCMonth(),m.getUTCDate(),m.getUTCHours(),m.getUTCMinutes(),]);}
function startOfSecond(m){return arrayToUtcDate([m.getUTCFullYear(),m.getUTCMonth(),m.getUTCDate(),m.getUTCHours(),m.getUTCMinutes(),m.getUTCSeconds(),]);}
function weekOfYear(marker,dow,doy){let y=marker.getUTCFullYear();let w=weekOfGivenYear(marker,y,dow,doy);if(w<1){return weekOfGivenYear(marker,y-1,dow,doy);}
let nextW=weekOfGivenYear(marker,y+1,dow,doy);if(nextW>=1){return Math.min(w,nextW);}
return w;}
function weekOfGivenYear(marker,year,dow,doy){let firstWeekStart=arrayToUtcDate([year,0,1+firstWeekOffset(year,dow,doy)]);let dayStart=startOfDay(marker);let days=Math.round(diffDays(firstWeekStart,dayStart));return Math.floor(days/7)+1;}
function firstWeekOffset(year,dow,doy){let fwd=7+dow-doy;let fwdlw=(7+arrayToUtcDate([year,0,fwd]).getUTCDay()-dow)%7;return-fwdlw+fwd-1;}
function dateToLocalArray(date){return[date.getFullYear(),date.getMonth(),date.getDate(),date.getHours(),date.getMinutes(),date.getSeconds(),date.getMilliseconds(),];}
function arrayToLocalDate(a){return new Date(a[0],a[1]||0,a[2]==null?1:a[2],a[3]||0,a[4]||0,a[5]||0);}
function dateToUtcArray(date){return[date.getUTCFullYear(),date.getUTCMonth(),date.getUTCDate(),date.getUTCHours(),date.getUTCMinutes(),date.getUTCSeconds(),date.getUTCMilliseconds(),];}
function arrayToUtcDate(a){if(a.length===1){a=a.concat([0]);}
return new Date(Date.UTC(...a));}
function isValidDate$1(m){return!isNaN(m.valueOf());}
function timeAsMs(m){return m.getUTCHours()*1000*60*60+
m.getUTCMinutes()*1000*60+
m.getUTCSeconds()*1000+
m.getUTCMilliseconds();}
function buildIsoString(marker,timeZoneOffset,stripZeroTime=false){let s=marker.toISOString();s=s.replace('.000','');if(stripZeroTime){s=s.replace('T00:00:00Z','');}
if(s.length>10){if(timeZoneOffset==null){s=s.replace('Z','');}
else if(timeZoneOffset!==0){s=s.replace('Z',formatTimeZoneOffset(timeZoneOffset,true));}}
return s;}
function formatDayString(marker){return marker.toISOString().replace(/T.*$/,'');}
function formatIsoMonthStr(marker){return marker.toISOString().match(/^\d{4}-\d{2}/)[0];}
function formatIsoTimeString(marker){return padStart(marker.getUTCHours(),2)+':'+
padStart(marker.getUTCMinutes(),2)+':'+
padStart(marker.getUTCSeconds(),2);}
function formatTimeZoneOffset(minutes,doIso=false){let sign=minutes<0?'-':'+';let abs=Math.abs(minutes);let hours=Math.floor(abs/60);let mins=Math.round(abs%60);if(doIso){return`${sign+padStart(hours,2)}:${padStart(mins,2)}`;}
return`GMT${sign}${hours}${mins?`:${padStart(mins,2)}`:''}`;}
function memoize(workerFunc,resEquality,teardownFunc){let currentArgs;let currentRes;return function(...newArgs){if(!currentArgs){currentRes=workerFunc.apply(this,newArgs);}
else if(!isArraysEqual(currentArgs,newArgs)){if(teardownFunc){teardownFunc(currentRes);}
let res=workerFunc.apply(this,newArgs);if(!resEquality||!resEquality(res,currentRes)){currentRes=res;}}
currentArgs=newArgs;return currentRes;};}
function memoizeObjArg(workerFunc,resEquality,teardownFunc){let currentArg;let currentRes;return(newArg)=>{if(!currentArg){currentRes=workerFunc.call(this,newArg);}
else if(!isPropsEqual(currentArg,newArg)){if(teardownFunc){teardownFunc(currentRes);}
let res=workerFunc.call(this,newArg);if(!resEquality||!resEquality(res,currentRes)){currentRes=res;}}
currentArg=newArg;return currentRes;};}
function memoizeArraylike(workerFunc,resEquality,teardownFunc){let currentArgSets=[];let currentResults=[];return(newArgSets)=>{let currentLen=currentArgSets.length;let newLen=newArgSets.length;let i=0;for(;i<currentLen;i+=1){if(!newArgSets[i]){if(teardownFunc){teardownFunc(currentResults[i]);}}
else if(!isArraysEqual(currentArgSets[i],newArgSets[i])){if(teardownFunc){teardownFunc(currentResults[i]);}
let res=workerFunc.apply(this,newArgSets[i]);if(!resEquality||!resEquality(res,currentResults[i])){currentResults[i]=res;}}}
for(;i<newLen;i+=1){currentResults[i]=workerFunc.apply(this,newArgSets[i]);}
currentArgSets=newArgSets;currentResults.splice(newLen);return currentResults;};}
function memoizeHashlike(workerFunc,resEquality,teardownFunc){let currentArgHash={};let currentResHash={};return(newArgHash)=>{let newResHash={};for(let key in newArgHash){if(!currentResHash[key]){newResHash[key]=workerFunc.apply(this,newArgHash[key]);}
else if(!isArraysEqual(currentArgHash[key],newArgHash[key])){if(teardownFunc){teardownFunc(currentResHash[key]);}
let res=workerFunc.apply(this,newArgHash[key]);newResHash[key]=(resEquality&&resEquality(res,currentResHash[key]))?currentResHash[key]:res;}
else{newResHash[key]=currentResHash[key];}}
currentArgHash=newArgHash;currentResHash=newResHash;return newResHash;};}
const EXTENDED_SETTINGS_AND_SEVERITIES={week:3,separator:0,omitZeroMinute:0,meridiem:0,omitCommas:0,};const STANDARD_DATE_PROP_SEVERITIES={timeZoneName:7,era:6,year:5,month:4,day:2,weekday:2,hour:1,minute:1,second:1,};const MERIDIEM_RE=/\s*([ap])\.?m\.?/i;const COMMA_RE=/,/g;const MULTI_SPACE_RE=/\s+/g;const LTR_RE=/\u200e/g;const UTC_RE=/UTC|GMT/;class NativeFormatter{constructor(formatSettings){let standardDateProps={};let extendedSettings={};let severity=0;for(let name in formatSettings){if(name in EXTENDED_SETTINGS_AND_SEVERITIES){extendedSettings[name]=formatSettings[name];severity=Math.max(EXTENDED_SETTINGS_AND_SEVERITIES[name],severity);}
else{standardDateProps[name]=formatSettings[name];if(name in STANDARD_DATE_PROP_SEVERITIES){severity=Math.max(STANDARD_DATE_PROP_SEVERITIES[name],severity);}}}
this.standardDateProps=standardDateProps;this.extendedSettings=extendedSettings;this.severity=severity;this.buildFormattingFunc=memoize(buildFormattingFunc);}
format(date,context){return this.buildFormattingFunc(this.standardDateProps,this.extendedSettings,context)(date);}
formatRange(start,end,context,betterDefaultSeparator){let{standardDateProps,extendedSettings}=this;let diffSeverity=computeMarkerDiffSeverity(start.marker,end.marker,context.calendarSystem);if(!diffSeverity){return this.format(start,context);}
let biggestUnitForPartial=diffSeverity;if(biggestUnitForPartial>1&&(standardDateProps.year==='numeric'||standardDateProps.year==='2-digit')&&(standardDateProps.month==='numeric'||standardDateProps.month==='2-digit')&&(standardDateProps.day==='numeric'||standardDateProps.day==='2-digit')){biggestUnitForPartial=1;}
let full0=this.format(start,context);let full1=this.format(end,context);if(full0===full1){return full0;}
let partialDateProps=computePartialFormattingOptions(standardDateProps,biggestUnitForPartial);let partialFormattingFunc=buildFormattingFunc(partialDateProps,extendedSettings,context);let partial0=partialFormattingFunc(start);let partial1=partialFormattingFunc(end);let insertion=findCommonInsertion(full0,partial0,full1,partial1);let separator=extendedSettings.separator||betterDefaultSeparator||context.defaultSeparator||'';if(insertion){return insertion.before+partial0+separator+partial1+insertion.after;}
return full0+separator+full1;}
getLargestUnit(){switch(this.severity){case 7:case 6:case 5:return'year';case 4:return'month';case 3:return'week';case 2:return'day';default:return'time';}}}
function buildFormattingFunc(standardDateProps,extendedSettings,context){let standardDatePropCnt=Object.keys(standardDateProps).length;if(standardDatePropCnt===1&&standardDateProps.timeZoneName==='short'){return(date)=>(formatTimeZoneOffset(date.timeZoneOffset));}
if(standardDatePropCnt===0&&extendedSettings.week){return(date)=>(formatWeekNumber(context.computeWeekNumber(date.marker),context.weekText,context.weekTextLong,context.locale,extendedSettings.week));}
return buildNativeFormattingFunc(standardDateProps,extendedSettings,context);}
function buildNativeFormattingFunc(standardDateProps,extendedSettings,context){standardDateProps=Object.assign({},standardDateProps);extendedSettings=Object.assign({},extendedSettings);sanitizeSettings(standardDateProps,extendedSettings);standardDateProps.timeZone='UTC';let normalFormat=new Intl.DateTimeFormat(context.locale.codes,standardDateProps);let zeroFormat;if(extendedSettings.omitZeroMinute){let zeroProps=Object.assign({},standardDateProps);delete zeroProps.minute;zeroFormat=new Intl.DateTimeFormat(context.locale.codes,zeroProps);}
return(date)=>{let{marker}=date;let format;if(zeroFormat&&!marker.getUTCMinutes()){format=zeroFormat;}
else{format=normalFormat;}
let s=format.format(marker);return postProcess(s,date,standardDateProps,extendedSettings,context);};}
function sanitizeSettings(standardDateProps,extendedSettings){if(standardDateProps.timeZoneName){if(!standardDateProps.hour){standardDateProps.hour='2-digit';}
if(!standardDateProps.minute){standardDateProps.minute='2-digit';}}
if(standardDateProps.timeZoneName==='long'){standardDateProps.timeZoneName='short';}
if(extendedSettings.omitZeroMinute&&(standardDateProps.second||standardDateProps.millisecond)){delete extendedSettings.omitZeroMinute;}}
function postProcess(s,date,standardDateProps,extendedSettings,context){s=s.replace(LTR_RE,'');if(standardDateProps.timeZoneName==='short'){s=injectTzoStr(s,(context.timeZone==='UTC'||date.timeZoneOffset==null)?'UTC':formatTimeZoneOffset(date.timeZoneOffset));}
if(extendedSettings.omitCommas){s=s.replace(COMMA_RE,'').trim();}
if(extendedSettings.omitZeroMinute){s=s.replace(':00','');}
if(extendedSettings.meridiem===false){s=s.replace(MERIDIEM_RE,'').trim();}
else if(extendedSettings.meridiem==='narrow'){s=s.replace(MERIDIEM_RE,(m0,m1)=>m1.toLocaleLowerCase());}
else if(extendedSettings.meridiem==='short'){s=s.replace(MERIDIEM_RE,(m0,m1)=>`${m1.toLocaleLowerCase()}m`);}
else if(extendedSettings.meridiem==='lowercase'){s=s.replace(MERIDIEM_RE,(m0)=>m0.toLocaleLowerCase());}
s=s.replace(MULTI_SPACE_RE,' ');s=s.trim();return s;}
function injectTzoStr(s,tzoStr){let replaced=false;s=s.replace(UTC_RE,()=>{replaced=true;return tzoStr;});if(!replaced){s+=`${tzoStr}`;}
return s;}
function formatWeekNumber(num,weekText,weekTextLong,locale,display){let parts=[];if(display==='long'){parts.push(weekTextLong);}
else if(display==='short'||display==='narrow'){parts.push(weekText);}
if(display==='long'||display==='short'){parts.push(' ');}
parts.push(locale.simpleNumberFormat.format(num));if(locale.options.direction==='rtl'){parts.reverse();}
return parts.join('');}
function computeMarkerDiffSeverity(d0,d1,ca){if(ca.getMarkerYear(d0)!==ca.getMarkerYear(d1)){return 5;}
if(ca.getMarkerMonth(d0)!==ca.getMarkerMonth(d1)){return 4;}
if(ca.getMarkerDay(d0)!==ca.getMarkerDay(d1)){return 2;}
if(timeAsMs(d0)!==timeAsMs(d1)){return 1;}
return 0;}
function computePartialFormattingOptions(options,biggestUnit){let partialOptions={};for(let name in options){if(!(name in STANDARD_DATE_PROP_SEVERITIES)||STANDARD_DATE_PROP_SEVERITIES[name]<=biggestUnit){partialOptions[name]=options[name];}}
return partialOptions;}
function findCommonInsertion(full0,partial0,full1,partial1){let i0=0;while(i0<full0.length){let found0=full0.indexOf(partial0,i0);if(found0===-1){break;}
let before0=full0.substr(0,found0);i0=found0+partial0.length;let after0=full0.substr(i0);let i1=0;while(i1<full1.length){let found1=full1.indexOf(partial1,i1);if(found1===-1){break;}
let before1=full1.substr(0,found1);i1=found1+partial1.length;let after1=full1.substr(i1);if(before0===before1&&after0===after1){return{before:before0,after:after0,};}}}
return null;}
function expandZonedMarker(dateInfo,calendarSystem){let a=calendarSystem.markerToArray(dateInfo.marker);return{marker:dateInfo.marker,timeZoneOffset:dateInfo.timeZoneOffset,array:a,year:a[0],month:a[1],day:a[2],hour:a[3],minute:a[4],second:a[5],millisecond:a[6],};}
function createVerboseFormattingArg(start,end,context,betterDefaultSeparator){let startInfo=expandZonedMarker(start,context.calendarSystem);let endInfo=end?expandZonedMarker(end,context.calendarSystem):null;return{date:startInfo,start:startInfo,end:endInfo,timeZone:context.timeZone,localeCodes:context.locale.codes,defaultSeparator:betterDefaultSeparator||context.defaultSeparator,};}
class CmdFormatter{constructor(cmdStr){this.cmdStr=cmdStr;}
format(date,context,betterDefaultSeparator){return context.cmdFormatter(this.cmdStr,createVerboseFormattingArg(date,null,context,betterDefaultSeparator));}
formatRange(start,end,context,betterDefaultSeparator){return context.cmdFormatter(this.cmdStr,createVerboseFormattingArg(start,end,context,betterDefaultSeparator));}}
class FuncFormatter{constructor(func){this.func=func;}
format(date,context,betterDefaultSeparator){return this.func(createVerboseFormattingArg(date,null,context,betterDefaultSeparator));}
formatRange(start,end,context,betterDefaultSeparator){return this.func(createVerboseFormattingArg(start,end,context,betterDefaultSeparator));}}
function createFormatter(input){if(typeof input==='object'&&input){return new NativeFormatter(input);}
if(typeof input==='string'){return new CmdFormatter(input);}
if(typeof input==='function'){return new FuncFormatter(input);}
return null;}
const BASE_OPTION_REFINERS={navLinkDayClick:identity,navLinkWeekClick:identity,duration:createDuration,bootstrapFontAwesome:identity,buttonIcons:identity,customButtons:identity,defaultAllDayEventDuration:createDuration,defaultTimedEventDuration:createDuration,nextDayThreshold:createDuration,scrollTime:createDuration,scrollTimeReset:Boolean,slotMinTime:createDuration,slotMaxTime:createDuration,dayPopoverFormat:createFormatter,slotDuration:createDuration,snapDuration:createDuration,headerToolbar:identity,footerToolbar:identity,defaultRangeSeparator:String,titleRangeSeparator:String,forceEventDuration:Boolean,dayHeaders:Boolean,dayHeaderFormat:createFormatter,dayHeaderClassNames:identity,dayHeaderContent:identity,dayHeaderDidMount:identity,dayHeaderWillUnmount:identity,dayCellClassNames:identity,dayCellContent:identity,dayCellDidMount:identity,dayCellWillUnmount:identity,initialView:String,aspectRatio:Number,weekends:Boolean,weekNumberCalculation:identity,weekNumbers:Boolean,weekNumberClassNames:identity,weekNumberContent:identity,weekNumberDidMount:identity,weekNumberWillUnmount:identity,editable:Boolean,viewClassNames:identity,viewDidMount:identity,viewWillUnmount:identity,nowIndicator:Boolean,nowIndicatorClassNames:identity,nowIndicatorContent:identity,nowIndicatorDidMount:identity,nowIndicatorWillUnmount:identity,showNonCurrentDates:Boolean,lazyFetching:Boolean,startParam:String,endParam:String,timeZoneParam:String,timeZone:String,locales:identity,locale:identity,themeSystem:String,dragRevertDuration:Number,dragScroll:Boolean,allDayMaintainDuration:Boolean,unselectAuto:Boolean,dropAccept:identity,eventOrder:parseFieldSpecs,eventOrderStrict:Boolean,handleWindowResize:Boolean,windowResizeDelay:Number,longPressDelay:Number,eventDragMinDistance:Number,expandRows:Boolean,height:identity,contentHeight:identity,direction:String,weekNumberFormat:createFormatter,eventResizableFromStart:Boolean,displayEventTime:Boolean,displayEventEnd:Boolean,weekText:String,weekTextLong:String,progressiveEventRendering:Boolean,businessHours:identity,initialDate:identity,now:identity,eventDataTransform:identity,stickyHeaderDates:identity,stickyFooterScrollbar:identity,viewHeight:identity,defaultAllDay:Boolean,eventSourceFailure:identity,eventSourceSuccess:identity,eventDisplay:String,eventStartEditable:Boolean,eventDurationEditable:Boolean,eventOverlap:identity,eventConstraint:identity,eventAllow:identity,eventBackgroundColor:String,eventBorderColor:String,eventTextColor:String,eventColor:String,eventClassNames:identity,eventContent:identity,eventDidMount:identity,eventWillUnmount:identity,selectConstraint:identity,selectOverlap:identity,selectAllow:identity,droppable:Boolean,unselectCancel:String,slotLabelFormat:identity,slotLaneClassNames:identity,slotLaneContent:identity,slotLaneDidMount:identity,slotLaneWillUnmount:identity,slotLabelClassNames:identity,slotLabelContent:identity,slotLabelDidMount:identity,slotLabelWillUnmount:identity,dayMaxEvents:identity,dayMaxEventRows:identity,dayMinWidth:Number,slotLabelInterval:createDuration,allDayText:String,allDayClassNames:identity,allDayContent:identity,allDayDidMount:identity,allDayWillUnmount:identity,slotMinWidth:Number,navLinks:Boolean,eventTimeFormat:createFormatter,rerenderDelay:Number,moreLinkText:identity,moreLinkHint:identity,selectMinDistance:Number,selectable:Boolean,selectLongPressDelay:Number,eventLongPressDelay:Number,selectMirror:Boolean,eventMaxStack:Number,eventMinHeight:Number,eventMinWidth:Number,eventShortHeight:Number,slotEventOverlap:Boolean,plugins:identity,firstDay:Number,dayCount:Number,dateAlignment:String,dateIncrement:createDuration,hiddenDays:identity,fixedWeekCount:Boolean,validRange:identity,visibleRange:identity,titleFormat:identity,eventInteractive:Boolean,noEventsText:String,viewHint:identity,navLinkHint:identity,closeHint:String,timeHint:String,eventHint:String,moreLinkClick:identity,moreLinkClassNames:identity,moreLinkContent:identity,moreLinkDidMount:identity,moreLinkWillUnmount:identity,monthStartFormat:createFormatter,handleCustomRendering:identity,customRenderingMetaMap:identity,customRenderingReplaces:Boolean,};const BASE_OPTION_DEFAULTS={eventDisplay:'auto',defaultRangeSeparator:' - ',titleRangeSeparator:' \u2013 ',defaultTimedEventDuration:'01:00:00',defaultAllDayEventDuration:{day:1},forceEventDuration:false,nextDayThreshold:'00:00:00',dayHeaders:true,initialView:'',aspectRatio:1.35,headerToolbar:{start:'title',center:'',end:'today prev,next',},weekends:true,weekNumbers:false,weekNumberCalculation:'local',editable:false,nowIndicator:false,scrollTime:'06:00:00',scrollTimeReset:true,slotMinTime:'00:00:00',slotMaxTime:'24:00:00',showNonCurrentDates:true,lazyFetching:true,startParam:'start',endParam:'end',timeZoneParam:'timeZone',timeZone:'local',locales:[],locale:'',themeSystem:'standard',dragRevertDuration:500,dragScroll:true,allDayMaintainDuration:false,unselectAuto:true,dropAccept:'*',eventOrder:'start,-duration,allDay,title',dayPopoverFormat:{month:'long',day:'numeric',year:'numeric'},handleWindowResize:true,windowResizeDelay:100,longPressDelay:1000,eventDragMinDistance:5,expandRows:false,navLinks:false,selectable:false,eventMinHeight:15,eventMinWidth:30,eventShortHeight:30,monthStartFormat:{month:'long',day:'numeric'},};const CALENDAR_LISTENER_REFINERS={datesSet:identity,eventsSet:identity,eventAdd:identity,eventChange:identity,eventRemove:identity,windowResize:identity,eventClick:identity,eventMouseEnter:identity,eventMouseLeave:identity,select:identity,unselect:identity,loading:identity,_unmount:identity,_beforeprint:identity,_afterprint:identity,_noEventDrop:identity,_noEventResize:identity,_resize:identity,_scrollRequest:identity,};const CALENDAR_OPTION_REFINERS={buttonText:identity,buttonHints:identity,views:identity,plugins:identity,initialEvents:identity,events:identity,eventSources:identity,};const COMPLEX_OPTION_COMPARATORS={headerToolbar:isMaybeObjectsEqual,footerToolbar:isMaybeObjectsEqual,buttonText:isMaybeObjectsEqual,buttonHints:isMaybeObjectsEqual,buttonIcons:isMaybeObjectsEqual,dateIncrement:isMaybeObjectsEqual,plugins:isMaybeArraysEqual,events:isMaybeArraysEqual,eventSources:isMaybeArraysEqual,['resources']:isMaybeArraysEqual,};function isMaybeObjectsEqual(a,b){if(typeof a==='object'&&typeof b==='object'&&a&&b){return isPropsEqual(a,b);}
return a===b;}
function isMaybeArraysEqual(a,b){if(Array.isArray(a)&&Array.isArray(b)){return isArraysEqual(a,b);}
return a===b;}
const VIEW_OPTION_REFINERS={type:String,component:identity,buttonText:String,buttonTextKey:String,dateProfileGeneratorClass:identity,usesMinMaxTime:Boolean,classNames:identity,content:identity,didMount:identity,willUnmount:identity,};function mergeRawOptions(optionSets){return mergeProps(optionSets,COMPLEX_OPTION_COMPARATORS);}
function refineProps(input,refiners){let refined={};let extra={};for(let propName in refiners){if(propName in input){refined[propName]=refiners[propName](input[propName]);}}
for(let propName in input){if(!(propName in refiners)){extra[propName]=input[propName];}}
return{refined,extra};}
function identity(raw){return raw;}
const{hasOwnProperty}=Object.prototype;function mergeProps(propObjs,complexPropsMap){let dest={};if(complexPropsMap){for(let name in complexPropsMap){if(complexPropsMap[name]===isMaybeObjectsEqual){let complexObjs=[];for(let i=propObjs.length-1;i>=0;i-=1){let val=propObjs[i][name];if(typeof val==='object'&&val){complexObjs.unshift(val);}
else if(val!==undefined){dest[name]=val;break;}}
if(complexObjs.length){dest[name]=mergeProps(complexObjs);}}}}
for(let i=propObjs.length-1;i>=0;i-=1){let props=propObjs[i];for(let name in props){if(!(name in dest)){dest[name]=props[name];}}}
return dest;}
function filterHash(hash,func){let filtered={};for(let key in hash){if(func(hash[key],key)){filtered[key]=hash[key];}}
return filtered;}
function mapHash(hash,func){let newHash={};for(let key in hash){newHash[key]=func(hash[key],key);}
return newHash;}
function arrayToHash(a){let hash={};for(let item of a){hash[item]=true;}
return hash;}
function hashValuesToArray(obj){let a=[];for(let key in obj){a.push(obj[key]);}
return a;}
function isPropsEqual(obj0,obj1){if(obj0===obj1){return true;}
for(let key in obj0){if(hasOwnProperty.call(obj0,key)){if(!(key in obj1)){return false;}}}
for(let key in obj1){if(hasOwnProperty.call(obj1,key)){if(obj0[key]!==obj1[key]){return false;}}}
return true;}
const HANDLER_RE=/^on[A-Z]/;function isNonHandlerPropsEqual(obj0,obj1){const keys=getUnequalProps(obj0,obj1);for(let key of keys){if(!HANDLER_RE.test(key)){return false;}}
return true;}
function getUnequalProps(obj0,obj1){let keys=[];for(let key in obj0){if(hasOwnProperty.call(obj0,key)){if(!(key in obj1)){keys.push(key);}}}
for(let key in obj1){if(hasOwnProperty.call(obj1,key)){if(obj0[key]!==obj1[key]){keys.push(key);}}}
return keys;}
function compareObjs(oldProps,newProps,equalityFuncs={}){if(oldProps===newProps){return true;}
for(let key in newProps){if(key in oldProps&&isObjValsEqual(oldProps[key],newProps[key],equalityFuncs[key]));else{return false;}}
for(let key in oldProps){if(!(key in newProps)){return false;}}
return true;}
function isObjValsEqual(val0,val1,comparator){if(val0===val1||comparator===true){return true;}
if(comparator){return comparator(val0,val1);}
return false;}
function collectFromHash(hash,startIndex=0,endIndex,step=1){let res=[];if(endIndex==null){endIndex=Object.keys(hash).length;}
for(let i=startIndex;i<endIndex;i+=step){let val=hash[i];if(val!==undefined){res.push(val);}}
return res;}
let calendarSystemClassMap={};function registerCalendarSystem(name,theClass){calendarSystemClassMap[name]=theClass;}
function createCalendarSystem(name){return new calendarSystemClassMap[name]();}
class GregorianCalendarSystem{getMarkerYear(d){return d.getUTCFullYear();}
getMarkerMonth(d){return d.getUTCMonth();}
getMarkerDay(d){return d.getUTCDate();}
arrayToMarker(arr){return arrayToUtcDate(arr);}
markerToArray(marker){return dateToUtcArray(marker);}}
registerCalendarSystem('gregory',GregorianCalendarSystem);const ISO_RE=/^\s*(\d{4})(-?(\d{2})(-?(\d{2})([T ](\d{2}):?(\d{2})(:?(\d{2})(\.(\d+))?)?(Z|(([-+])(\d{2})(:?(\d{2}))?))?)?)?)?$/;function parse(str){let m=ISO_RE.exec(str);if(m){let marker=new Date(Date.UTC(Number(m[1]),m[3]?Number(m[3])-1:0,Number(m[5]||1),Number(m[7]||0),Number(m[8]||0),Number(m[10]||0),m[12]?Number(`0.${m[12]}`)*1000:0));if(isValidDate$1(marker)){let timeZoneOffset=null;if(m[13]){timeZoneOffset=(m[15]==='-'?-1:1)*(Number(m[16]||0)*60+
Number(m[18]||0));}
return{marker,isTimeUnspecified:!m[6],timeZoneOffset,};}}
return null;}
class DateEnv{constructor(settings){let timeZone=this.timeZone=settings.timeZone;let isNamedTimeZone=timeZone!=='local'&&timeZone!=='UTC';if(settings.namedTimeZoneImpl&&isNamedTimeZone){this.namedTimeZoneImpl=new settings.namedTimeZoneImpl(timeZone);}
this.canComputeOffset=Boolean(!isNamedTimeZone||this.namedTimeZoneImpl);this.calendarSystem=createCalendarSystem(settings.calendarSystem);this.locale=settings.locale;this.weekDow=settings.locale.week.dow;this.weekDoy=settings.locale.week.doy;if(settings.weekNumberCalculation==='ISO'){this.weekDow=1;this.weekDoy=4;}
if(typeof settings.firstDay==='number'){this.weekDow=settings.firstDay;}
if(typeof settings.weekNumberCalculation==='function'){this.weekNumberFunc=settings.weekNumberCalculation;}
this.weekText=settings.weekText!=null?settings.weekText:settings.locale.options.weekText;this.weekTextLong=(settings.weekTextLong!=null?settings.weekTextLong:settings.locale.options.weekTextLong)||this.weekText;this.cmdFormatter=settings.cmdFormatter;this.defaultSeparator=settings.defaultSeparator;}
createMarker(input){let meta=this.createMarkerMeta(input);if(meta===null){return null;}
return meta.marker;}
createNowMarker(){if(this.canComputeOffset){return this.timestampToMarker(new Date().valueOf());}
return arrayToUtcDate(dateToLocalArray(new Date()));}
createMarkerMeta(input){if(typeof input==='string'){return this.parse(input);}
let marker=null;if(typeof input==='number'){marker=this.timestampToMarker(input);}
else if(input instanceof Date){input=input.valueOf();if(!isNaN(input)){marker=this.timestampToMarker(input);}}
else if(Array.isArray(input)){marker=arrayToUtcDate(input);}
if(marker===null||!isValidDate$1(marker)){return null;}
return{marker,isTimeUnspecified:false,forcedTzo:null};}
parse(s){let parts=parse(s);if(parts===null){return null;}
let{marker}=parts;let forcedTzo=null;if(parts.timeZoneOffset!==null){if(this.canComputeOffset){marker=this.timestampToMarker(marker.valueOf()-parts.timeZoneOffset*60*1000);}
else{forcedTzo=parts.timeZoneOffset;}}
return{marker,isTimeUnspecified:parts.isTimeUnspecified,forcedTzo};}
getYear(marker){return this.calendarSystem.getMarkerYear(marker);}
getMonth(marker){return this.calendarSystem.getMarkerMonth(marker);}
getDay(marker){return this.calendarSystem.getMarkerDay(marker);}
add(marker,dur){let a=this.calendarSystem.markerToArray(marker);a[0]+=dur.years;a[1]+=dur.months;a[2]+=dur.days;a[6]+=dur.milliseconds;return this.calendarSystem.arrayToMarker(a);}
subtract(marker,dur){let a=this.calendarSystem.markerToArray(marker);a[0]-=dur.years;a[1]-=dur.months;a[2]-=dur.days;a[6]-=dur.milliseconds;return this.calendarSystem.arrayToMarker(a);}
addYears(marker,n){let a=this.calendarSystem.markerToArray(marker);a[0]+=n;return this.calendarSystem.arrayToMarker(a);}
addMonths(marker,n){let a=this.calendarSystem.markerToArray(marker);a[1]+=n;return this.calendarSystem.arrayToMarker(a);}
diffWholeYears(m0,m1){let{calendarSystem}=this;if(timeAsMs(m0)===timeAsMs(m1)&&calendarSystem.getMarkerDay(m0)===calendarSystem.getMarkerDay(m1)&&calendarSystem.getMarkerMonth(m0)===calendarSystem.getMarkerMonth(m1)){return calendarSystem.getMarkerYear(m1)-calendarSystem.getMarkerYear(m0);}
return null;}
diffWholeMonths(m0,m1){let{calendarSystem}=this;if(timeAsMs(m0)===timeAsMs(m1)&&calendarSystem.getMarkerDay(m0)===calendarSystem.getMarkerDay(m1)){return(calendarSystem.getMarkerMonth(m1)-calendarSystem.getMarkerMonth(m0))+
(calendarSystem.getMarkerYear(m1)-calendarSystem.getMarkerYear(m0))*12;}
return null;}
greatestWholeUnit(m0,m1){let n=this.diffWholeYears(m0,m1);if(n!==null){return{unit:'year',value:n};}
n=this.diffWholeMonths(m0,m1);if(n!==null){return{unit:'month',value:n};}
n=diffWholeWeeks(m0,m1);if(n!==null){return{unit:'week',value:n};}
n=diffWholeDays(m0,m1);if(n!==null){return{unit:'day',value:n};}
n=diffHours(m0,m1);if(isInt(n)){return{unit:'hour',value:n};}
n=diffMinutes(m0,m1);if(isInt(n)){return{unit:'minute',value:n};}
n=diffSeconds(m0,m1);if(isInt(n)){return{unit:'second',value:n};}
return{unit:'millisecond',value:m1.valueOf()-m0.valueOf()};}
countDurationsBetween(m0,m1,d){let diff;if(d.years){diff=this.diffWholeYears(m0,m1);if(diff!==null){return diff/asRoughYears(d);}}
if(d.months){diff=this.diffWholeMonths(m0,m1);if(diff!==null){return diff/asRoughMonths(d);}}
if(d.days){diff=diffWholeDays(m0,m1);if(diff!==null){return diff/asRoughDays(d);}}
return(m1.valueOf()-m0.valueOf())/asRoughMs(d);}
startOf(m,unit){if(unit==='year'){return this.startOfYear(m);}
if(unit==='month'){return this.startOfMonth(m);}
if(unit==='week'){return this.startOfWeek(m);}
if(unit==='day'){return startOfDay(m);}
if(unit==='hour'){return startOfHour(m);}
if(unit==='minute'){return startOfMinute(m);}
if(unit==='second'){return startOfSecond(m);}
return null;}
startOfYear(m){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m),]);}
startOfMonth(m){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m),this.calendarSystem.getMarkerMonth(m),]);}
startOfWeek(m){return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m),this.calendarSystem.getMarkerMonth(m),m.getUTCDate()-((m.getUTCDay()-this.weekDow+7)%7),]);}
computeWeekNumber(marker){if(this.weekNumberFunc){return this.weekNumberFunc(this.toDate(marker));}
return weekOfYear(marker,this.weekDow,this.weekDoy);}
format(marker,formatter,dateOptions={}){return formatter.format({marker,timeZoneOffset:dateOptions.forcedTzo!=null?dateOptions.forcedTzo:this.offsetForMarker(marker),},this);}
formatRange(start,end,formatter,dateOptions={}){if(dateOptions.isEndExclusive){end=addMs(end,-1);}
return formatter.formatRange({marker:start,timeZoneOffset:dateOptions.forcedStartTzo!=null?dateOptions.forcedStartTzo:this.offsetForMarker(start),},{marker:end,timeZoneOffset:dateOptions.forcedEndTzo!=null?dateOptions.forcedEndTzo:this.offsetForMarker(end),},this,dateOptions.defaultSeparator);}
formatIso(marker,extraOptions={}){let timeZoneOffset=null;if(!extraOptions.omitTimeZoneOffset){if(extraOptions.forcedTzo!=null){timeZoneOffset=extraOptions.forcedTzo;}
else{timeZoneOffset=this.offsetForMarker(marker);}}
return buildIsoString(marker,timeZoneOffset,extraOptions.omitTime);}
timestampToMarker(ms){if(this.timeZone==='local'){return arrayToUtcDate(dateToLocalArray(new Date(ms)));}
if(this.timeZone==='UTC'||!this.namedTimeZoneImpl){return new Date(ms);}
return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms));}
offsetForMarker(m){if(this.timeZone==='local'){return-arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset();}
if(this.timeZone==='UTC'){return 0;}
if(this.namedTimeZoneImpl){return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m));}
return null;}
toDate(m,forcedTzo){if(this.timeZone==='local'){return arrayToLocalDate(dateToUtcArray(m));}
if(this.timeZone==='UTC'){return new Date(m.valueOf());}
if(!this.namedTimeZoneImpl){return new Date(m.valueOf()-(forcedTzo||0));}
return new Date(m.valueOf()-
this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m))*1000*60);}}
class Theme{constructor(calendarOptions){if(this.iconOverrideOption){this.setIconOverride(calendarOptions[this.iconOverrideOption]);}}
setIconOverride(iconOverrideHash){let iconClassesCopy;let buttonName;if(typeof iconOverrideHash==='object'&&iconOverrideHash){iconClassesCopy=Object.assign({},this.iconClasses);for(buttonName in iconOverrideHash){iconClassesCopy[buttonName]=this.applyIconOverridePrefix(iconOverrideHash[buttonName]);}
this.iconClasses=iconClassesCopy;}
else if(iconOverrideHash===false){this.iconClasses={};}}
applyIconOverridePrefix(className){let prefix=this.iconOverridePrefix;if(prefix&&className.indexOf(prefix)!==0){className=prefix+className;}
return className;}
getClass(key){return this.classes[key]||'';}
getIconClass(buttonName,isRtl){let className;if(isRtl&&this.rtlIconClasses){className=this.rtlIconClasses[buttonName]||this.iconClasses[buttonName];}
else{className=this.iconClasses[buttonName];}
if(className){return`${this.baseIconClass}${className}`;}
return'';}
getCustomButtonIconClass(customButtonProps){let className;if(this.iconOverrideCustomButtonOption){className=customButtonProps[this.iconOverrideCustomButtonOption];if(className){return`${this.baseIconClass}${this.applyIconOverridePrefix(className)}`;}}
return'';}}
Theme.prototype.classes={};Theme.prototype.iconClasses={};Theme.prototype.baseIconClass='';Theme.prototype.iconOverridePrefix='';function flushSync(runBeforeFlush){runBeforeFlush();let oldDebounceRendering=l$1.debounceRendering;let callbackQ=[];function execCallbackSync(callback){callbackQ.push(callback);}
l$1.debounceRendering=execCallbackSync;D$1(y(FakeComponent,{}),document.createElement('div'));while(callbackQ.length){callbackQ.shift()();}
l$1.debounceRendering=oldDebounceRendering;}
class FakeComponent extends x$1{render(){return y('div',{});}
componentDidMount(){this.setState({});}}
function createContext(defaultValue){let ContextType=G$1(defaultValue);let origProvider=ContextType.Provider;ContextType.Provider=function(){let isNew=!this.getChildContext;let children=origProvider.apply(this,arguments);if(isNew){let subs=[];this.shouldComponentUpdate=(_props)=>{if(this.props.value!==_props.value){subs.forEach((c)=>{c.context=_props.value;c.forceUpdate();});}};this.sub=(c)=>{subs.push(c);let old=c.componentWillUnmount;c.componentWillUnmount=()=>{subs.splice(subs.indexOf(c),1);old&&old.call(c);};};}
return children;};return ContextType;}
class ScrollResponder{constructor(execFunc,emitter,scrollTime,scrollTimeReset){this.execFunc=execFunc;this.emitter=emitter;this.scrollTime=scrollTime;this.scrollTimeReset=scrollTimeReset;this.handleScrollRequest=(request)=>{this.queuedRequest=Object.assign({},this.queuedRequest||{},request);this.drain();};emitter.on('_scrollRequest',this.handleScrollRequest);this.fireInitialScroll();}
detach(){this.emitter.off('_scrollRequest',this.handleScrollRequest);}
update(isDatesNew){if(isDatesNew&&this.scrollTimeReset){this.fireInitialScroll();}
else{this.drain();}}
fireInitialScroll(){this.handleScrollRequest({time:this.scrollTime,});}
drain(){if(this.queuedRequest&&this.execFunc(this.queuedRequest)){this.queuedRequest=null;}}}
const ViewContextType=createContext({});function buildViewContext(viewSpec,viewApi,viewOptions,dateProfileGenerator,dateEnv,theme,pluginHooks,dispatch,getCurrentData,emitter,calendarApi,registerInteractiveComponent,unregisterInteractiveComponent){return{dateEnv,options:viewOptions,pluginHooks,emitter,dispatch,getCurrentData,calendarApi,viewSpec,viewApi,dateProfileGenerator,theme,isRtl:viewOptions.direction==='rtl',addResizeHandler(handler){emitter.on('_resize',handler);},removeResizeHandler(handler){emitter.off('_resize',handler);},createScrollResponder(execFunc){return new ScrollResponder(execFunc,emitter,createDuration(viewOptions.scrollTime),viewOptions.scrollTimeReset);},registerInteractiveComponent,unregisterInteractiveComponent,};}
class PureComponent extends x$1{shouldComponentUpdate(nextProps,nextState){if(this.debug){console.log(getUnequalProps(nextProps,this.props),getUnequalProps(nextState,this.state));}
return!compareObjs(this.props,nextProps,this.propEquality)||!compareObjs(this.state,nextState,this.stateEquality);}
safeSetState(newState){if(!compareObjs(this.state,Object.assign(Object.assign({},this.state),newState),this.stateEquality)){this.setState(newState);}}}
PureComponent.addPropsEquality=addPropsEquality;PureComponent.addStateEquality=addStateEquality;PureComponent.contextType=ViewContextType;PureComponent.prototype.propEquality={};PureComponent.prototype.stateEquality={};class BaseComponent extends PureComponent{}
BaseComponent.contextType=ViewContextType;function addPropsEquality(propEquality){let hash=Object.create(this.prototype.propEquality);Object.assign(hash,propEquality);this.prototype.propEquality=hash;}
function addStateEquality(stateEquality){let hash=Object.create(this.prototype.stateEquality);Object.assign(hash,stateEquality);this.prototype.stateEquality=hash;}
function setRef(ref,current){if(typeof ref==='function'){ref(current);}
else if(ref){ref.current=current;}}
class ContentInjector extends BaseComponent{constructor(){super(...arguments);this.id=guid();this.queuedDomNodes=[];this.currentDomNodes=[];this.handleEl=(el)=>{const{options}=this.context;const{generatorName}=this.props;if(!options.customRenderingReplaces||!hasCustomRenderingHandler(generatorName,options)){this.updateElRef(el);}};this.updateElRef=(el)=>{if(this.props.elRef){setRef(this.props.elRef,el);}};}
render(){const{props,context}=this;const{options}=context;const{customGenerator,defaultGenerator,renderProps}=props;const attrs=buildElAttrs(props,[],this.handleEl);let useDefault=false;let innerContent;let queuedDomNodes=[];let currentGeneratorMeta;if(customGenerator!=null){const customGeneratorRes=typeof customGenerator==='function'?customGenerator(renderProps,y):customGenerator;if(customGeneratorRes===true){useDefault=true;}
else{const isObject=customGeneratorRes&&typeof customGeneratorRes==='object';if(isObject&&('html'in customGeneratorRes)){attrs.dangerouslySetInnerHTML={__html:customGeneratorRes.html};}
else if(isObject&&('domNodes'in customGeneratorRes)){queuedDomNodes=Array.prototype.slice.call(customGeneratorRes.domNodes);}
else if(isObject?i$1(customGeneratorRes):typeof customGeneratorRes!=='function'){innerContent=customGeneratorRes;}
else{currentGeneratorMeta=customGeneratorRes;}}}
else{useDefault=!hasCustomRenderingHandler(props.generatorName,options);}
if(useDefault&&defaultGenerator){innerContent=defaultGenerator(renderProps);}
this.queuedDomNodes=queuedDomNodes;this.currentGeneratorMeta=currentGeneratorMeta;return y(props.elTag,attrs,innerContent);}
componentDidMount(){this.applyQueueudDomNodes();this.triggerCustomRendering(true);}
componentDidUpdate(){this.applyQueueudDomNodes();this.triggerCustomRendering(true);}
componentWillUnmount(){this.triggerCustomRendering(false);}
triggerCustomRendering(isActive){var _a;const{props,context}=this;const{handleCustomRendering,customRenderingMetaMap}=context.options;if(handleCustomRendering){const generatorMeta=(_a=this.currentGeneratorMeta)!==null&&_a!==void 0?_a:customRenderingMetaMap===null||customRenderingMetaMap===void 0?void 0:customRenderingMetaMap[props.generatorName];if(generatorMeta){handleCustomRendering(Object.assign(Object.assign({id:this.id,isActive,containerEl:this.base,reportNewContainerEl:this.updateElRef,generatorMeta},props),{elClasses:(props.elClasses||[]).filter(isTruthy)}));}}}
applyQueueudDomNodes(){const{queuedDomNodes,currentDomNodes}=this;const el=this.base;if(!isArraysEqual(queuedDomNodes,currentDomNodes)){currentDomNodes.forEach(removeElement);for(let newNode of queuedDomNodes){el.appendChild(newNode);}
this.currentDomNodes=queuedDomNodes;}}}
ContentInjector.addPropsEquality({elClasses:isArraysEqual,elStyle:isPropsEqual,elAttrs:isNonHandlerPropsEqual,renderProps:isPropsEqual,});function hasCustomRenderingHandler(generatorName,options){var _a;return Boolean(options.handleCustomRendering&&generatorName&&((_a=options.customRenderingMetaMap)===null||_a===void 0?void 0:_a[generatorName]));}
function buildElAttrs(props,extraClassNames,elRef){const attrs=Object.assign(Object.assign({},props.elAttrs),{ref:elRef});if(props.elClasses||extraClassNames){attrs.className=(props.elClasses||[]).concat(extraClassNames||[]).concat(attrs.className||[]).filter(Boolean).join(' ');}
if(props.elStyle){attrs.style=props.elStyle;}
return attrs;}
function isTruthy(val){return Boolean(val);}
const RenderId=createContext(0);class ContentContainer extends x$1{constructor(){super(...arguments);this.InnerContent=InnerContentInjector.bind(undefined,this);this.handleEl=(el)=>{this.el=el;if(this.props.elRef){setRef(this.props.elRef,el);if(el&&this.didMountMisfire){this.componentDidMount();}}};}
render(){const{props}=this;const generatedClassNames=generateClassNames(props.classNameGenerator,props.renderProps);if(props.children){const elAttrs=buildElAttrs(props,generatedClassNames,this.handleEl);const children=props.children(this.InnerContent,props.renderProps,elAttrs);if(props.elTag){return y(props.elTag,elAttrs,children);}
else{return children;}}
else{return y((ContentInjector),Object.assign(Object.assign({},props),{elRef:this.handleEl,elTag:props.elTag||'div',elClasses:(props.elClasses||[]).concat(generatedClassNames),renderId:this.context}));}}
componentDidMount(){var _a,_b;if(this.el){(_b=(_a=this.props).didMount)===null||_b===void 0?void 0:_b.call(_a,Object.assign(Object.assign({},this.props.renderProps),{el:this.el}));}
else{this.didMountMisfire=true;}}
componentWillUnmount(){var _a,_b;(_b=(_a=this.props).willUnmount)===null||_b===void 0?void 0:_b.call(_a,Object.assign(Object.assign({},this.props.renderProps),{el:this.el}));}}
ContentContainer.contextType=RenderId;function InnerContentInjector(containerComponent,props){const parentProps=containerComponent.props;return y((ContentInjector),Object.assign({renderProps:parentProps.renderProps,generatorName:parentProps.generatorName,customGenerator:parentProps.customGenerator,defaultGenerator:parentProps.defaultGenerator,renderId:containerComponent.context},props));}
function generateClassNames(classNameGenerator,renderProps){const classNames=typeof classNameGenerator==='function'?classNameGenerator(renderProps):classNameGenerator||[];return typeof classNames==='string'?[classNames]:classNames;}
class ViewContainer extends BaseComponent{render(){let{props,context}=this;let{options}=context;let renderProps={view:context.viewApi};return(y(ContentContainer,Object.assign({},props,{elTag:props.elTag||'div',elClasses:[...buildViewClassNames(props.viewSpec),...(props.elClasses||[]),],renderProps:renderProps,classNameGenerator:options.viewClassNames,generatorName:undefined,didMount:options.viewDidMount,willUnmount:options.viewWillUnmount}),()=>props.children));}}
function buildViewClassNames(viewSpec){return[`fc-${viewSpec.type}-view`,'fc-view',];}
function parseRange(input,dateEnv){let start=null;let end=null;if(input.start){start=dateEnv.createMarker(input.start);}
if(input.end){end=dateEnv.createMarker(input.end);}
if(!start&&!end){return null;}
if(start&&end&&end<start){return null;}
return{start,end};}
function invertRanges(ranges,constraintRange){let invertedRanges=[];let{start}=constraintRange;let i;let dateRange;ranges.sort(compareRanges);for(i=0;i<ranges.length;i+=1){dateRange=ranges[i];if(dateRange.start>start){invertedRanges.push({start,end:dateRange.start});}
if(dateRange.end>start){start=dateRange.end;}}
if(start<constraintRange.end){invertedRanges.push({start,end:constraintRange.end});}
return invertedRanges;}
function compareRanges(range0,range1){return range0.start.valueOf()-range1.start.valueOf();}
function intersectRanges(range0,range1){let{start,end}=range0;let newRange=null;if(range1.start!==null){if(start===null){start=range1.start;}
else{start=new Date(Math.max(start.valueOf(),range1.start.valueOf()));}}
if(range1.end!=null){if(end===null){end=range1.end;}
else{end=new Date(Math.min(end.valueOf(),range1.end.valueOf()));}}
if(start===null||end===null||start<end){newRange={start,end};}
return newRange;}
function rangesEqual(range0,range1){return(range0.start===null?null:range0.start.valueOf())===(range1.start===null?null:range1.start.valueOf())&&(range0.end===null?null:range0.end.valueOf())===(range1.end===null?null:range1.end.valueOf());}
function rangesIntersect(range0,range1){return(range0.end===null||range1.start===null||range0.end>range1.start)&&(range0.start===null||range1.end===null||range0.start<range1.end);}
function rangeContainsRange(outerRange,innerRange){return(outerRange.start===null||(innerRange.start!==null&&innerRange.start>=outerRange.start))&&(outerRange.end===null||(innerRange.end!==null&&innerRange.end<=outerRange.end));}
function rangeContainsMarker(range,date){return(range.start===null||date>=range.start)&&(range.end===null||date<range.end);}
function constrainMarkerToRange(date,range){if(range.start!=null&&date<range.start){return range.start;}
if(range.end!=null&&date>=range.end){return new Date(range.end.valueOf()-1);}
return date;}
function computeAlignedDayRange(timedRange){let dayCnt=Math.floor(diffDays(timedRange.start,timedRange.end))||1;let start=startOfDay(timedRange.start);let end=addDays(start,dayCnt);return{start,end};}
function computeVisibleDayRange(timedRange,nextDayThreshold=createDuration(0)){let startDay=null;let endDay=null;if(timedRange.end){endDay=startOfDay(timedRange.end);let endTimeMS=timedRange.end.valueOf()-endDay.valueOf();if(endTimeMS&&endTimeMS>=asRoughMs(nextDayThreshold)){endDay=addDays(endDay,1);}}
if(timedRange.start){startDay=startOfDay(timedRange.start);if(endDay&&endDay<=startDay){endDay=addDays(startDay,1);}}
return{start:startDay,end:endDay};}
function isMultiDayRange(range){let visibleRange=computeVisibleDayRange(range);return diffDays(visibleRange.start,visibleRange.end)>1;}
function diffDates(date0,date1,dateEnv,largeUnit){if(largeUnit==='year'){return createDuration(dateEnv.diffWholeYears(date0,date1),'year');}
if(largeUnit==='month'){return createDuration(dateEnv.diffWholeMonths(date0,date1),'month');}
return diffDayAndTime(date0,date1);}
function reduceCurrentDate(currentDate,action){switch(action.type){case'CHANGE_DATE':return action.dateMarker;default:return currentDate;}}
function getInitialDate(options,dateEnv){let initialDateInput=options.initialDate;if(initialDateInput!=null){return dateEnv.createMarker(initialDateInput);}
return getNow(options.now,dateEnv);}
function getNow(nowInput,dateEnv){if(typeof nowInput==='function'){nowInput=nowInput();}
if(nowInput==null){return dateEnv.createNowMarker();}
return dateEnv.createMarker(nowInput);}
class DateProfileGenerator{constructor(props){this.props=props;this.nowDate=getNow(props.nowInput,props.dateEnv);this.initHiddenDays();}
buildPrev(currentDateProfile,currentDate,forceToValid){let{dateEnv}=this.props;let prevDate=dateEnv.subtract(dateEnv.startOf(currentDate,currentDateProfile.currentRangeUnit),currentDateProfile.dateIncrement);return this.build(prevDate,-1,forceToValid);}
buildNext(currentDateProfile,currentDate,forceToValid){let{dateEnv}=this.props;let nextDate=dateEnv.add(dateEnv.startOf(currentDate,currentDateProfile.currentRangeUnit),currentDateProfile.dateIncrement);return this.build(nextDate,1,forceToValid);}
build(currentDate,direction,forceToValid=true){let{props}=this;let validRange;let currentInfo;let isRangeAllDay;let renderRange;let activeRange;let isValid;validRange=this.buildValidRange();validRange=this.trimHiddenDays(validRange);if(forceToValid){currentDate=constrainMarkerToRange(currentDate,validRange);}
currentInfo=this.buildCurrentRangeInfo(currentDate,direction);isRangeAllDay=/^(year|month|week|day)$/.test(currentInfo.unit);renderRange=this.buildRenderRange(this.trimHiddenDays(currentInfo.range),currentInfo.unit,isRangeAllDay);renderRange=this.trimHiddenDays(renderRange);activeRange=renderRange;if(!props.showNonCurrentDates){activeRange=intersectRanges(activeRange,currentInfo.range);}
activeRange=this.adjustActiveRange(activeRange);activeRange=intersectRanges(activeRange,validRange);isValid=rangesIntersect(currentInfo.range,validRange);if(!rangeContainsMarker(renderRange,currentDate)){currentDate=renderRange.start;}
return{currentDate,validRange,currentRange:currentInfo.range,currentRangeUnit:currentInfo.unit,isRangeAllDay,activeRange,renderRange,slotMinTime:props.slotMinTime,slotMaxTime:props.slotMaxTime,isValid,dateIncrement:this.buildDateIncrement(currentInfo.duration),};}
buildValidRange(){let input=this.props.validRangeInput;let simpleInput=typeof input==='function'?input.call(this.props.calendarApi,this.nowDate):input;return this.refineRange(simpleInput)||{start:null,end:null};}
buildCurrentRangeInfo(date,direction){let{props}=this;let duration=null;let unit=null;let range=null;let dayCount;if(props.duration){duration=props.duration;unit=props.durationUnit;range=this.buildRangeFromDuration(date,direction,duration,unit);}
else if((dayCount=this.props.dayCount)){unit='day';range=this.buildRangeFromDayCount(date,direction,dayCount);}
else if((range=this.buildCustomVisibleRange(date))){unit=props.dateEnv.greatestWholeUnit(range.start,range.end).unit;}
else{duration=this.getFallbackDuration();unit=greatestDurationDenominator(duration).unit;range=this.buildRangeFromDuration(date,direction,duration,unit);}
return{duration,unit,range};}
getFallbackDuration(){return createDuration({day:1});}
adjustActiveRange(range){let{dateEnv,usesMinMaxTime,slotMinTime,slotMaxTime}=this.props;let{start,end}=range;if(usesMinMaxTime){if(asRoughDays(slotMinTime)<0){start=startOfDay(start);start=dateEnv.add(start,slotMinTime);}
if(asRoughDays(slotMaxTime)>1){end=startOfDay(end);end=addDays(end,-1);end=dateEnv.add(end,slotMaxTime);}}
return{start,end};}
buildRangeFromDuration(date,direction,duration,unit){let{dateEnv,dateAlignment}=this.props;let start;let end;let res;if(!dateAlignment){let{dateIncrement}=this.props;if(dateIncrement){if(asRoughMs(dateIncrement)<asRoughMs(duration)){dateAlignment=greatestDurationDenominator(dateIncrement).unit;}
else{dateAlignment=unit;}}
else{dateAlignment=unit;}}
if(asRoughDays(duration)<=1){if(this.isHiddenDay(start)){start=this.skipHiddenDays(start,direction);start=startOfDay(start);}}
function computeRes(){start=dateEnv.startOf(date,dateAlignment);end=dateEnv.add(start,duration);res={start,end};}
computeRes();if(!this.trimHiddenDays(res)){date=this.skipHiddenDays(date,direction);computeRes();}
return res;}
buildRangeFromDayCount(date,direction,dayCount){let{dateEnv,dateAlignment}=this.props;let runningCount=0;let start=date;let end;if(dateAlignment){start=dateEnv.startOf(start,dateAlignment);}
start=startOfDay(start);start=this.skipHiddenDays(start,direction);end=start;do{end=addDays(end,1);if(!this.isHiddenDay(end)){runningCount+=1;}}while(runningCount<dayCount);return{start,end};}
buildCustomVisibleRange(date){let{props}=this;let input=props.visibleRangeInput;let simpleInput=typeof input==='function'?input.call(props.calendarApi,props.dateEnv.toDate(date)):input;let range=this.refineRange(simpleInput);if(range&&(range.start==null||range.end==null)){return null;}
return range;}
buildRenderRange(currentRange,currentRangeUnit,isRangeAllDay){return currentRange;}
buildDateIncrement(fallback){let{dateIncrement}=this.props;let customAlignment;if(dateIncrement){return dateIncrement;}
if((customAlignment=this.props.dateAlignment)){return createDuration(1,customAlignment);}
if(fallback){return fallback;}
return createDuration({days:1});}
refineRange(rangeInput){if(rangeInput){let range=parseRange(rangeInput,this.props.dateEnv);if(range){range=computeVisibleDayRange(range);}
return range;}
return null;}
initHiddenDays(){let hiddenDays=this.props.hiddenDays||[];let isHiddenDayHash=[];let dayCnt=0;let i;if(this.props.weekends===false){hiddenDays.push(0,6);}
for(i=0;i<7;i+=1){if(!(isHiddenDayHash[i]=hiddenDays.indexOf(i)!==-1)){dayCnt+=1;}}
if(!dayCnt){throw new Error('invalid hiddenDays');}
this.isHiddenDayHash=isHiddenDayHash;}
trimHiddenDays(range){let{start,end}=range;if(start){start=this.skipHiddenDays(start);}
if(end){end=this.skipHiddenDays(end,-1,true);}
if(start==null||end==null||start<end){return{start,end};}
return null;}
isHiddenDay(day){if(day instanceof Date){day=day.getUTCDay();}
return this.isHiddenDayHash[day];}
skipHiddenDays(date,inc=1,isExclusive=false){while(this.isHiddenDayHash[(date.getUTCDay()+(isExclusive?inc:0)+7)%7]){date=addDays(date,inc);}
return date;}}
function createEventInstance(defId,range,forcedStartTzo,forcedEndTzo){return{instanceId:guid(),defId,range,forcedStartTzo:forcedStartTzo==null?null:forcedStartTzo,forcedEndTzo:forcedEndTzo==null?null:forcedEndTzo,};}
function parseRecurring(refined,defaultAllDay,dateEnv,recurringTypes){for(let i=0;i<recurringTypes.length;i+=1){let parsed=recurringTypes[i].parse(refined,dateEnv);if(parsed){let{allDay}=refined;if(allDay==null){allDay=defaultAllDay;if(allDay==null){allDay=parsed.allDayGuess;if(allDay==null){allDay=false;}}}
return{allDay,duration:parsed.duration,typeData:parsed.typeData,typeId:i,};}}
return null;}
function expandRecurring(eventStore,framingRange,context){let{dateEnv,pluginHooks,options}=context;let{defs,instances}=eventStore;instances=filterHash(instances,(instance)=>!defs[instance.defId].recurringDef);for(let defId in defs){let def=defs[defId];if(def.recurringDef){let{duration}=def.recurringDef;if(!duration){duration=def.allDay?options.defaultAllDayEventDuration:options.defaultTimedEventDuration;}
let starts=expandRecurringRanges(def,duration,framingRange,dateEnv,pluginHooks.recurringTypes);for(let start of starts){let instance=createEventInstance(defId,{start,end:dateEnv.add(start,duration),});instances[instance.instanceId]=instance;}}}
return{defs,instances};}
function expandRecurringRanges(eventDef,duration,framingRange,dateEnv,recurringTypes){let typeDef=recurringTypes[eventDef.recurringDef.typeId];let markers=typeDef.expand(eventDef.recurringDef.typeData,{start:dateEnv.subtract(framingRange.start,duration),end:framingRange.end,},dateEnv);if(eventDef.allDay){markers=markers.map(startOfDay);}
return markers;}
const EVENT_NON_DATE_REFINERS={id:String,groupId:String,title:String,url:String,interactive:Boolean,};const EVENT_DATE_REFINERS={start:identity,end:identity,date:identity,allDay:Boolean,};const EVENT_REFINERS$1=Object.assign(Object.assign(Object.assign({},EVENT_NON_DATE_REFINERS),EVENT_DATE_REFINERS),{extendedProps:identity});function parseEvent(raw,eventSource,context,allowOpenRange,refiners=buildEventRefiners(context),defIdMap,instanceIdMap){let{refined,extra}=refineEventDef(raw,context,refiners);let defaultAllDay=computeIsDefaultAllDay(eventSource,context);let recurringRes=parseRecurring(refined,defaultAllDay,context.dateEnv,context.pluginHooks.recurringTypes);if(recurringRes){let def=parseEventDef(refined,extra,eventSource?eventSource.sourceId:'',recurringRes.allDay,Boolean(recurringRes.duration),context,defIdMap);def.recurringDef={typeId:recurringRes.typeId,typeData:recurringRes.typeData,duration:recurringRes.duration,};return{def,instance:null};}
let singleRes=parseSingle(refined,defaultAllDay,context,allowOpenRange);if(singleRes){let def=parseEventDef(refined,extra,eventSource?eventSource.sourceId:'',singleRes.allDay,singleRes.hasEnd,context,defIdMap);let instance=createEventInstance(def.defId,singleRes.range,singleRes.forcedStartTzo,singleRes.forcedEndTzo);if(instanceIdMap&&def.publicId&&instanceIdMap[def.publicId]){instance.instanceId=instanceIdMap[def.publicId];}
return{def,instance};}
return null;}
function refineEventDef(raw,context,refiners=buildEventRefiners(context)){return refineProps(raw,refiners);}
function buildEventRefiners(context){return Object.assign(Object.assign(Object.assign({},EVENT_UI_REFINERS),EVENT_REFINERS$1),context.pluginHooks.eventRefiners);}
function parseEventDef(refined,extra,sourceId,allDay,hasEnd,context,defIdMap){let def={title:refined.title||'',groupId:refined.groupId||'',publicId:refined.id||'',url:refined.url||'',recurringDef:null,defId:((defIdMap&&refined.id)?defIdMap[refined.id]:'')||guid(),sourceId,allDay,hasEnd,interactive:refined.interactive,ui:createEventUi(refined,context),extendedProps:Object.assign(Object.assign({},(refined.extendedProps||{})),extra),};for(let memberAdder of context.pluginHooks.eventDefMemberAdders){Object.assign(def,memberAdder(refined));}
Object.freeze(def.ui.classNames);Object.freeze(def.extendedProps);return def;}
function parseSingle(refined,defaultAllDay,context,allowOpenRange){let{allDay}=refined;let startMeta;let startMarker=null;let hasEnd=false;let endMeta;let endMarker=null;let startInput=refined.start!=null?refined.start:refined.date;startMeta=context.dateEnv.createMarkerMeta(startInput);if(startMeta){startMarker=startMeta.marker;}
else if(!allowOpenRange){return null;}
if(refined.end!=null){endMeta=context.dateEnv.createMarkerMeta(refined.end);}
if(allDay==null){if(defaultAllDay!=null){allDay=defaultAllDay;}
else{allDay=(!startMeta||startMeta.isTimeUnspecified)&&(!endMeta||endMeta.isTimeUnspecified);}}
if(allDay&&startMarker){startMarker=startOfDay(startMarker);}
if(endMeta){endMarker=endMeta.marker;if(allDay){endMarker=startOfDay(endMarker);}
if(startMarker&&endMarker<=startMarker){endMarker=null;}}
if(endMarker){hasEnd=true;}
else if(!allowOpenRange){hasEnd=context.options.forceEventDuration||false;endMarker=context.dateEnv.add(startMarker,allDay?context.options.defaultAllDayEventDuration:context.options.defaultTimedEventDuration);}
return{allDay,hasEnd,range:{start:startMarker,end:endMarker},forcedStartTzo:startMeta?startMeta.forcedTzo:null,forcedEndTzo:endMeta?endMeta.forcedTzo:null,};}
function computeIsDefaultAllDay(eventSource,context){let res=null;if(eventSource){res=eventSource.defaultAllDay;}
if(res==null){res=context.options.defaultAllDay;}
return res;}
function parseEvents(rawEvents,eventSource,context,allowOpenRange,defIdMap,instanceIdMap){let eventStore=createEmptyEventStore();let eventRefiners=buildEventRefiners(context);for(let rawEvent of rawEvents){let tuple=parseEvent(rawEvent,eventSource,context,allowOpenRange,eventRefiners,defIdMap,instanceIdMap);if(tuple){eventTupleToStore(tuple,eventStore);}}
return eventStore;}
function eventTupleToStore(tuple,eventStore=createEmptyEventStore()){eventStore.defs[tuple.def.defId]=tuple.def;if(tuple.instance){eventStore.instances[tuple.instance.instanceId]=tuple.instance;}
return eventStore;}
function getRelevantEvents(eventStore,instanceId){let instance=eventStore.instances[instanceId];if(instance){let def=eventStore.defs[instance.defId];let newStore=filterEventStoreDefs(eventStore,(lookDef)=>isEventDefsGrouped(def,lookDef));newStore.defs[def.defId]=def;newStore.instances[instance.instanceId]=instance;return newStore;}
return createEmptyEventStore();}
function isEventDefsGrouped(def0,def1){return Boolean(def0.groupId&&def0.groupId===def1.groupId);}
function createEmptyEventStore(){return{defs:{},instances:{}};}
function mergeEventStores(store0,store1){return{defs:Object.assign(Object.assign({},store0.defs),store1.defs),instances:Object.assign(Object.assign({},store0.instances),store1.instances),};}
function filterEventStoreDefs(eventStore,filterFunc){let defs=filterHash(eventStore.defs,filterFunc);let instances=filterHash(eventStore.instances,(instance)=>(defs[instance.defId]));return{defs,instances};}
function excludeSubEventStore(master,sub){let{defs,instances}=master;let filteredDefs={};let filteredInstances={};for(let defId in defs){if(!sub.defs[defId]){filteredDefs[defId]=defs[defId];}}
for(let instanceId in instances){if(!sub.instances[instanceId]&&filteredDefs[instances[instanceId].defId]){filteredInstances[instanceId]=instances[instanceId];}}
return{defs:filteredDefs,instances:filteredInstances,};}
function normalizeConstraint(input,context){if(Array.isArray(input)){return parseEvents(input,null,context,true);}
if(typeof input==='object'&&input){return parseEvents([input],null,context,true);}
if(input!=null){return String(input);}
return null;}
function parseClassNames(raw){if(Array.isArray(raw)){return raw;}
if(typeof raw==='string'){return raw.split(/\s+/);}
return[];}
const EVENT_UI_REFINERS={display:String,editable:Boolean,startEditable:Boolean,durationEditable:Boolean,constraint:identity,overlap:identity,allow:identity,className:parseClassNames,classNames:parseClassNames,color:String,backgroundColor:String,borderColor:String,textColor:String,};const EMPTY_EVENT_UI={display:null,startEditable:null,durationEditable:null,constraints:[],overlap:null,allows:[],backgroundColor:'',borderColor:'',textColor:'',classNames:[],};function createEventUi(refined,context){let constraint=normalizeConstraint(refined.constraint,context);return{display:refined.display||null,startEditable:refined.startEditable!=null?refined.startEditable:refined.editable,durationEditable:refined.durationEditable!=null?refined.durationEditable:refined.editable,constraints:constraint!=null?[constraint]:[],overlap:refined.overlap!=null?refined.overlap:null,allows:refined.allow!=null?[refined.allow]:[],backgroundColor:refined.backgroundColor||refined.color||'',borderColor:refined.borderColor||refined.color||'',textColor:refined.textColor||'',classNames:(refined.className||[]).concat(refined.classNames||[]),};}
function combineEventUis(uis){return uis.reduce(combineTwoEventUis,EMPTY_EVENT_UI);}
function combineTwoEventUis(item0,item1){return{display:item1.display!=null?item1.display:item0.display,startEditable:item1.startEditable!=null?item1.startEditable:item0.startEditable,durationEditable:item1.durationEditable!=null?item1.durationEditable:item0.durationEditable,constraints:item0.constraints.concat(item1.constraints),overlap:typeof item1.overlap==='boolean'?item1.overlap:item0.overlap,allows:item0.allows.concat(item1.allows),backgroundColor:item1.backgroundColor||item0.backgroundColor,borderColor:item1.borderColor||item0.borderColor,textColor:item1.textColor||item0.textColor,classNames:item0.classNames.concat(item1.classNames),};}
const EVENT_SOURCE_REFINERS={id:String,defaultAllDay:Boolean,url:String,format:String,events:identity,eventDataTransform:identity,success:identity,failure:identity,};function parseEventSource(raw,context,refiners=buildEventSourceRefiners(context)){let rawObj;if(typeof raw==='string'){rawObj={url:raw};}
else if(typeof raw==='function'||Array.isArray(raw)){rawObj={events:raw};}
else if(typeof raw==='object'&&raw){rawObj=raw;}
if(rawObj){let{refined,extra}=refineProps(rawObj,refiners);let metaRes=buildEventSourceMeta(refined,context);if(metaRes){return{_raw:raw,isFetching:false,latestFetchId:'',fetchRange:null,defaultAllDay:refined.defaultAllDay,eventDataTransform:refined.eventDataTransform,success:refined.success,failure:refined.failure,publicId:refined.id||'',sourceId:guid(),sourceDefId:metaRes.sourceDefId,meta:metaRes.meta,ui:createEventUi(refined,context),extendedProps:extra,};}}
return null;}
function buildEventSourceRefiners(context){return Object.assign(Object.assign(Object.assign({},EVENT_UI_REFINERS),EVENT_SOURCE_REFINERS),context.pluginHooks.eventSourceRefiners);}
function buildEventSourceMeta(raw,context){let defs=context.pluginHooks.eventSourceDefs;for(let i=defs.length-1;i>=0;i-=1){let def=defs[i];let meta=def.parseMeta(raw);if(meta){return{sourceDefId:i,meta};}}
return null;}
function reduceEventStore(eventStore,action,eventSources,dateProfile,context){switch(action.type){case'RECEIVE_EVENTS':return receiveRawEvents(eventStore,eventSources[action.sourceId],action.fetchId,action.fetchRange,action.rawEvents,context);case'RESET_RAW_EVENTS':return resetRawEvents(eventStore,eventSources[action.sourceId],action.rawEvents,dateProfile.activeRange,context);case'ADD_EVENTS':return addEvent(eventStore,action.eventStore,dateProfile?dateProfile.activeRange:null,context);case'RESET_EVENTS':return action.eventStore;case'MERGE_EVENTS':return mergeEventStores(eventStore,action.eventStore);case'PREV':case'NEXT':case'CHANGE_DATE':case'CHANGE_VIEW_TYPE':if(dateProfile){return expandRecurring(eventStore,dateProfile.activeRange,context);}
return eventStore;case'REMOVE_EVENTS':return excludeSubEventStore(eventStore,action.eventStore);case'REMOVE_EVENT_SOURCE':return excludeEventsBySourceId(eventStore,action.sourceId);case'REMOVE_ALL_EVENT_SOURCES':return filterEventStoreDefs(eventStore,(eventDef)=>(!eventDef.sourceId));case'REMOVE_ALL_EVENTS':return createEmptyEventStore();default:return eventStore;}}
function receiveRawEvents(eventStore,eventSource,fetchId,fetchRange,rawEvents,context){if(eventSource&&fetchId===eventSource.latestFetchId){let subset=parseEvents(transformRawEvents(rawEvents,eventSource,context),eventSource,context);if(fetchRange){subset=expandRecurring(subset,fetchRange,context);}
return mergeEventStores(excludeEventsBySourceId(eventStore,eventSource.sourceId),subset);}
return eventStore;}
function resetRawEvents(existingEventStore,eventSource,rawEvents,activeRange,context){const{defIdMap,instanceIdMap}=buildPublicIdMaps(existingEventStore);let newEventStore=parseEvents(transformRawEvents(rawEvents,eventSource,context),eventSource,context,false,defIdMap,instanceIdMap);return expandRecurring(newEventStore,activeRange,context);}
function transformRawEvents(rawEvents,eventSource,context){let calEachTransform=context.options.eventDataTransform;let sourceEachTransform=eventSource?eventSource.eventDataTransform:null;if(sourceEachTransform){rawEvents=transformEachRawEvent(rawEvents,sourceEachTransform);}
if(calEachTransform){rawEvents=transformEachRawEvent(rawEvents,calEachTransform);}
return rawEvents;}
function transformEachRawEvent(rawEvents,func){let refinedEvents;if(!func){refinedEvents=rawEvents;}
else{refinedEvents=[];for(let rawEvent of rawEvents){let refinedEvent=func(rawEvent);if(refinedEvent){refinedEvents.push(refinedEvent);}
else if(refinedEvent==null){refinedEvents.push(rawEvent);}}}
return refinedEvents;}
function addEvent(eventStore,subset,expandRange,context){if(expandRange){subset=expandRecurring(subset,expandRange,context);}
return mergeEventStores(eventStore,subset);}
function rezoneEventStoreDates(eventStore,oldDateEnv,newDateEnv){let{defs}=eventStore;let instances=mapHash(eventStore.instances,(instance)=>{let def=defs[instance.defId];if(def.allDay){return instance;}
return Object.assign(Object.assign({},instance),{range:{start:newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start,instance.forcedStartTzo)),end:newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end,instance.forcedEndTzo)),},forcedStartTzo:newDateEnv.canComputeOffset?null:instance.forcedStartTzo,forcedEndTzo:newDateEnv.canComputeOffset?null:instance.forcedEndTzo});});return{defs,instances};}
function excludeEventsBySourceId(eventStore,sourceId){return filterEventStoreDefs(eventStore,(eventDef)=>eventDef.sourceId!==sourceId);}
function excludeInstances(eventStore,removals){return{defs:eventStore.defs,instances:filterHash(eventStore.instances,(instance)=>!removals[instance.instanceId]),};}
function buildPublicIdMaps(eventStore){const{defs,instances}=eventStore;const defIdMap={};const instanceIdMap={};for(let defId in defs){const def=defs[defId];const{publicId}=def;if(publicId){defIdMap[publicId]=defId;}}
for(let instanceId in instances){const instance=instances[instanceId];const def=defs[instance.defId];const{publicId}=def;if(publicId){instanceIdMap[publicId]=instanceId;}}
return{defIdMap,instanceIdMap};}
class Emitter{constructor(){this.handlers={};this.thisContext=null;}
setThisContext(thisContext){this.thisContext=thisContext;}
setOptions(options){this.options=options;}
on(type,handler){addToHash(this.handlers,type,handler);}
off(type,handler){removeFromHash(this.handlers,type,handler);}
trigger(type,...args){let attachedHandlers=this.handlers[type]||[];let optionHandler=this.options&&this.options[type];let handlers=[].concat(optionHandler||[],attachedHandlers);for(let handler of handlers){handler.apply(this.thisContext,args);}}
hasHandlers(type){return Boolean((this.handlers[type]&&this.handlers[type].length)||(this.options&&this.options[type]));}}
function addToHash(hash,type,handler){(hash[type]||(hash[type]=[])).push(handler);}
function removeFromHash(hash,type,handler){if(handler){if(hash[type]){hash[type]=hash[type].filter((func)=>func!==handler);}}
else{delete hash[type];}}
const DEF_DEFAULTS={startTime:'09:00',endTime:'17:00',daysOfWeek:[1,2,3,4,5],display:'inverse-background',classNames:'fc-non-business',groupId:'_businessHours',};function parseBusinessHours(input,context){return parseEvents(refineInputs(input),null,context);}
function refineInputs(input){let rawDefs;if(input===true){rawDefs=[{}];}
else if(Array.isArray(input)){rawDefs=input.filter((rawDef)=>rawDef.daysOfWeek);}
else if(typeof input==='object'&&input){rawDefs=[input];}
else{rawDefs=[];}
rawDefs=rawDefs.map((rawDef)=>(Object.assign(Object.assign({},DEF_DEFAULTS),rawDef)));return rawDefs;}
function triggerDateSelect(selection,pev,context){context.emitter.trigger('select',Object.assign(Object.assign({},buildDateSpanApiWithContext(selection,context)),{jsEvent:pev?pev.origEvent:null,view:context.viewApi||context.calendarApi.view}));}
function triggerDateUnselect(pev,context){context.emitter.trigger('unselect',{jsEvent:pev?pev.origEvent:null,view:context.viewApi||context.calendarApi.view,});}
function buildDateSpanApiWithContext(dateSpan,context){let props={};for(let transform of context.pluginHooks.dateSpanTransforms){Object.assign(props,transform(dateSpan,context));}
Object.assign(props,buildDateSpanApi(dateSpan,context.dateEnv));return props;}
function getDefaultEventEnd(allDay,marker,context){let{dateEnv,options}=context;let end=marker;if(allDay){end=startOfDay(end);end=dateEnv.add(end,options.defaultAllDayEventDuration);}
else{end=dateEnv.add(end,options.defaultTimedEventDuration);}
return end;}
function applyMutationToEventStore(eventStore,eventConfigBase,mutation,context){let eventConfigs=compileEventUis(eventStore.defs,eventConfigBase);let dest=createEmptyEventStore();for(let defId in eventStore.defs){let def=eventStore.defs[defId];dest.defs[defId]=applyMutationToEventDef(def,eventConfigs[defId],mutation,context);}
for(let instanceId in eventStore.instances){let instance=eventStore.instances[instanceId];let def=dest.defs[instance.defId];dest.instances[instanceId]=applyMutationToEventInstance(instance,def,eventConfigs[instance.defId],mutation,context);}
return dest;}
function applyMutationToEventDef(eventDef,eventConfig,mutation,context){let standardProps=mutation.standardProps||{};if(standardProps.hasEnd==null&&eventConfig.durationEditable&&(mutation.startDelta||mutation.endDelta)){standardProps.hasEnd=true;}
let copy=Object.assign(Object.assign(Object.assign({},eventDef),standardProps),{ui:Object.assign(Object.assign({},eventDef.ui),standardProps.ui)});if(mutation.extendedProps){copy.extendedProps=Object.assign(Object.assign({},copy.extendedProps),mutation.extendedProps);}
for(let applier of context.pluginHooks.eventDefMutationAppliers){applier(copy,mutation,context);}
if(!copy.hasEnd&&context.options.forceEventDuration){copy.hasEnd=true;}
return copy;}
function applyMutationToEventInstance(eventInstance,eventDef,eventConfig,mutation,context){let{dateEnv}=context;let forceAllDay=mutation.standardProps&&mutation.standardProps.allDay===true;let clearEnd=mutation.standardProps&&mutation.standardProps.hasEnd===false;let copy=Object.assign({},eventInstance);if(forceAllDay){copy.range=computeAlignedDayRange(copy.range);}
if(mutation.datesDelta&&eventConfig.startEditable){copy.range={start:dateEnv.add(copy.range.start,mutation.datesDelta),end:dateEnv.add(copy.range.end,mutation.datesDelta),};}
if(mutation.startDelta&&eventConfig.durationEditable){copy.range={start:dateEnv.add(copy.range.start,mutation.startDelta),end:copy.range.end,};}
if(mutation.endDelta&&eventConfig.durationEditable){copy.range={start:copy.range.start,end:dateEnv.add(copy.range.end,mutation.endDelta),};}
if(clearEnd){copy.range={start:copy.range.start,end:getDefaultEventEnd(eventDef.allDay,copy.range.start,context),};}
if(eventDef.allDay){copy.range={start:startOfDay(copy.range.start),end:startOfDay(copy.range.end),};}
if(copy.range.end<copy.range.start){copy.range.end=getDefaultEventEnd(eventDef.allDay,copy.range.start,context);}
return copy;}
class EventSourceImpl{constructor(context,internalEventSource){this.context=context;this.internalEventSource=internalEventSource;}
remove(){this.context.dispatch({type:'REMOVE_EVENT_SOURCE',sourceId:this.internalEventSource.sourceId,});}
refetch(){this.context.dispatch({type:'FETCH_EVENT_SOURCES',sourceIds:[this.internalEventSource.sourceId],isRefetch:true,});}
get id(){return this.internalEventSource.publicId;}
get url(){return this.internalEventSource.meta.url;}
get format(){return this.internalEventSource.meta.format;}}
class EventImpl{constructor(context,def,instance){this._context=context;this._def=def;this._instance=instance||null;}
setProp(name,val){if(name in EVENT_DATE_REFINERS){console.warn('Could not set date-related prop \'name\'. Use one of the date-related methods instead.');}
else if(name==='id'){val=EVENT_NON_DATE_REFINERS[name](val);this.mutate({standardProps:{publicId:val},});}
else if(name in EVENT_NON_DATE_REFINERS){val=EVENT_NON_DATE_REFINERS[name](val);this.mutate({standardProps:{[name]:val},});}
else if(name in EVENT_UI_REFINERS){let ui=EVENT_UI_REFINERS[name](val);if(name==='color'){ui={backgroundColor:val,borderColor:val};}
else if(name==='editable'){ui={startEditable:val,durationEditable:val};}
else{ui={[name]:val};}
this.mutate({standardProps:{ui},});}
else{console.warn(`Could not set prop'${name}'.Use setExtendedProp instead.`);}}
setExtendedProp(name,val){this.mutate({extendedProps:{[name]:val},});}
setStart(startInput,options={}){let{dateEnv}=this._context;let start=dateEnv.createMarker(startInput);if(start&&this._instance){let instanceRange=this._instance.range;let startDelta=diffDates(instanceRange.start,start,dateEnv,options.granularity);if(options.maintainDuration){this.mutate({datesDelta:startDelta});}
else{this.mutate({startDelta});}}}
setEnd(endInput,options={}){let{dateEnv}=this._context;let end;if(endInput!=null){end=dateEnv.createMarker(endInput);if(!end){return;}}
if(this._instance){if(end){let endDelta=diffDates(this._instance.range.end,end,dateEnv,options.granularity);this.mutate({endDelta});}
else{this.mutate({standardProps:{hasEnd:false}});}}}
setDates(startInput,endInput,options={}){let{dateEnv}=this._context;let standardProps={allDay:options.allDay};let start=dateEnv.createMarker(startInput);let end;if(!start){return;}
if(endInput!=null){end=dateEnv.createMarker(endInput);if(!end){return;}}
if(this._instance){let instanceRange=this._instance.range;if(options.allDay===true){instanceRange=computeAlignedDayRange(instanceRange);}
let startDelta=diffDates(instanceRange.start,start,dateEnv,options.granularity);if(end){let endDelta=diffDates(instanceRange.end,end,dateEnv,options.granularity);if(durationsEqual(startDelta,endDelta)){this.mutate({datesDelta:startDelta,standardProps});}
else{this.mutate({startDelta,endDelta,standardProps});}}
else{standardProps.hasEnd=false;this.mutate({datesDelta:startDelta,standardProps});}}}
moveStart(deltaInput){let delta=createDuration(deltaInput);if(delta){this.mutate({startDelta:delta});}}
moveEnd(deltaInput){let delta=createDuration(deltaInput);if(delta){this.mutate({endDelta:delta});}}
moveDates(deltaInput){let delta=createDuration(deltaInput);if(delta){this.mutate({datesDelta:delta});}}
setAllDay(allDay,options={}){let standardProps={allDay};let{maintainDuration}=options;if(maintainDuration==null){maintainDuration=this._context.options.allDayMaintainDuration;}
if(this._def.allDay!==allDay){standardProps.hasEnd=maintainDuration;}
this.mutate({standardProps});}
formatRange(formatInput){let{dateEnv}=this._context;let instance=this._instance;let formatter=createFormatter(formatInput);if(this._def.hasEnd){return dateEnv.formatRange(instance.range.start,instance.range.end,formatter,{forcedStartTzo:instance.forcedStartTzo,forcedEndTzo:instance.forcedEndTzo,});}
return dateEnv.format(instance.range.start,formatter,{forcedTzo:instance.forcedStartTzo,});}
mutate(mutation){let instance=this._instance;if(instance){let def=this._def;let context=this._context;let{eventStore}=context.getCurrentData();let relevantEvents=getRelevantEvents(eventStore,instance.instanceId);let eventConfigBase={'':{display:'',startEditable:true,durationEditable:true,constraints:[],overlap:null,allows:[],backgroundColor:'',borderColor:'',textColor:'',classNames:[],},};relevantEvents=applyMutationToEventStore(relevantEvents,eventConfigBase,mutation,context);let oldEvent=new EventImpl(context,def,instance);this._def=relevantEvents.defs[def.defId];this._instance=relevantEvents.instances[instance.instanceId];context.dispatch({type:'MERGE_EVENTS',eventStore:relevantEvents,});context.emitter.trigger('eventChange',{oldEvent,event:this,relatedEvents:buildEventApis(relevantEvents,context,instance),revert(){context.dispatch({type:'RESET_EVENTS',eventStore,});},});}}
remove(){let context=this._context;let asStore=eventApiToStore(this);context.dispatch({type:'REMOVE_EVENTS',eventStore:asStore,});context.emitter.trigger('eventRemove',{event:this,relatedEvents:[],revert(){context.dispatch({type:'MERGE_EVENTS',eventStore:asStore,});},});}
get source(){let{sourceId}=this._def;if(sourceId){return new EventSourceImpl(this._context,this._context.getCurrentData().eventSources[sourceId]);}
return null;}
get start(){return this._instance?this._context.dateEnv.toDate(this._instance.range.start):null;}
get end(){return(this._instance&&this._def.hasEnd)?this._context.dateEnv.toDate(this._instance.range.end):null;}
get startStr(){let instance=this._instance;if(instance){return this._context.dateEnv.formatIso(instance.range.start,{omitTime:this._def.allDay,forcedTzo:instance.forcedStartTzo,});}
return'';}
get endStr(){let instance=this._instance;if(instance&&this._def.hasEnd){return this._context.dateEnv.formatIso(instance.range.end,{omitTime:this._def.allDay,forcedTzo:instance.forcedEndTzo,});}
return'';}
get id(){return this._def.publicId;}
get groupId(){return this._def.groupId;}
get allDay(){return this._def.allDay;}
get title(){return this._def.title;}
get url(){return this._def.url;}
get display(){return this._def.ui.display||'auto';}
get startEditable(){return this._def.ui.startEditable;}
get durationEditable(){return this._def.ui.durationEditable;}
get constraint(){return this._def.ui.constraints[0]||null;}
get overlap(){return this._def.ui.overlap;}
get allow(){return this._def.ui.allows[0]||null;}
get backgroundColor(){return this._def.ui.backgroundColor;}
get borderColor(){return this._def.ui.borderColor;}
get textColor(){return this._def.ui.textColor;}
get classNames(){return this._def.ui.classNames;}
get extendedProps(){return this._def.extendedProps;}
toPlainObject(settings={}){let def=this._def;let{ui}=def;let{startStr,endStr}=this;let res={allDay:def.allDay,};if(def.title){res.title=def.title;}
if(startStr){res.start=startStr;}
if(endStr){res.end=endStr;}
if(def.publicId){res.id=def.publicId;}
if(def.groupId){res.groupId=def.groupId;}
if(def.url){res.url=def.url;}
if(ui.display&&ui.display!=='auto'){res.display=ui.display;}
if(settings.collapseColor&&ui.backgroundColor&&ui.backgroundColor===ui.borderColor){res.color=ui.backgroundColor;}
else{if(ui.backgroundColor){res.backgroundColor=ui.backgroundColor;}
if(ui.borderColor){res.borderColor=ui.borderColor;}}
if(ui.textColor){res.textColor=ui.textColor;}
if(ui.classNames.length){res.classNames=ui.classNames;}
if(Object.keys(def.extendedProps).length){if(settings.collapseExtendedProps){Object.assign(res,def.extendedProps);}
else{res.extendedProps=def.extendedProps;}}
return res;}
toJSON(){return this.toPlainObject();}}
function eventApiToStore(eventApi){let def=eventApi._def;let instance=eventApi._instance;return{defs:{[def.defId]:def},instances:instance?{[instance.instanceId]:instance}:{},};}
function buildEventApis(eventStore,context,excludeInstance){let{defs,instances}=eventStore;let eventApis=[];let excludeInstanceId=excludeInstance?excludeInstance.instanceId:'';for(let id in instances){let instance=instances[id];let def=defs[instance.defId];if(instance.instanceId!==excludeInstanceId){eventApis.push(new EventImpl(context,def,instance));}}
return eventApis;}
function sliceEventStore(eventStore,eventUiBases,framingRange,nextDayThreshold){let inverseBgByGroupId={};let inverseBgByDefId={};let defByGroupId={};let bgRanges=[];let fgRanges=[];let eventUis=compileEventUis(eventStore.defs,eventUiBases);for(let defId in eventStore.defs){let def=eventStore.defs[defId];let ui=eventUis[def.defId];if(ui.display==='inverse-background'){if(def.groupId){inverseBgByGroupId[def.groupId]=[];if(!defByGroupId[def.groupId]){defByGroupId[def.groupId]=def;}}
else{inverseBgByDefId[defId]=[];}}}
for(let instanceId in eventStore.instances){let instance=eventStore.instances[instanceId];let def=eventStore.defs[instance.defId];let ui=eventUis[def.defId];let origRange=instance.range;let normalRange=(!def.allDay&&nextDayThreshold)?computeVisibleDayRange(origRange,nextDayThreshold):origRange;let slicedRange=intersectRanges(normalRange,framingRange);if(slicedRange){if(ui.display==='inverse-background'){if(def.groupId){inverseBgByGroupId[def.groupId].push(slicedRange);}
else{inverseBgByDefId[instance.defId].push(slicedRange);}}
else if(ui.display!=='none'){(ui.display==='background'?bgRanges:fgRanges).push({def,ui,instance,range:slicedRange,isStart:normalRange.start&&normalRange.start.valueOf()===slicedRange.start.valueOf(),isEnd:normalRange.end&&normalRange.end.valueOf()===slicedRange.end.valueOf(),});}}}
for(let groupId in inverseBgByGroupId){let ranges=inverseBgByGroupId[groupId];let invertedRanges=invertRanges(ranges,framingRange);for(let invertedRange of invertedRanges){let def=defByGroupId[groupId];let ui=eventUis[def.defId];bgRanges.push({def,ui,instance:null,range:invertedRange,isStart:false,isEnd:false,});}}
for(let defId in inverseBgByDefId){let ranges=inverseBgByDefId[defId];let invertedRanges=invertRanges(ranges,framingRange);for(let invertedRange of invertedRanges){bgRanges.push({def:eventStore.defs[defId],ui:eventUis[defId],instance:null,range:invertedRange,isStart:false,isEnd:false,});}}
return{bg:bgRanges,fg:fgRanges};}
function hasBgRendering(def){return def.ui.display==='background'||def.ui.display==='inverse-background';}
function setElSeg(el,seg){el.fcSeg=seg;}
function getElSeg(el){return el.fcSeg||el.parentNode.fcSeg||null;}
function compileEventUis(eventDefs,eventUiBases){return mapHash(eventDefs,(eventDef)=>compileEventUi(eventDef,eventUiBases));}
function compileEventUi(eventDef,eventUiBases){let uis=[];if(eventUiBases['']){uis.push(eventUiBases['']);}
if(eventUiBases[eventDef.defId]){uis.push(eventUiBases[eventDef.defId]);}
uis.push(eventDef.ui);return combineEventUis(uis);}
function sortEventSegs(segs,eventOrderSpecs){let objs=segs.map(buildSegCompareObj);objs.sort((obj0,obj1)=>compareByFieldSpecs(obj0,obj1,eventOrderSpecs));return objs.map((c)=>c._seg);}
function buildSegCompareObj(seg){let{eventRange}=seg;let eventDef=eventRange.def;let range=eventRange.instance?eventRange.instance.range:eventRange.range;let start=range.start?range.start.valueOf():0;let end=range.end?range.end.valueOf():0;return Object.assign(Object.assign(Object.assign({},eventDef.extendedProps),eventDef),{id:eventDef.publicId,start,end,duration:end-start,allDay:Number(eventDef.allDay),_seg:seg});}
function computeSegDraggable(seg,context){let{pluginHooks}=context;let transformers=pluginHooks.isDraggableTransformers;let{def,ui}=seg.eventRange;let val=ui.startEditable;for(let transformer of transformers){val=transformer(val,def,ui,context);}
return val;}
function computeSegStartResizable(seg,context){return seg.isStart&&seg.eventRange.ui.durationEditable&&context.options.eventResizableFromStart;}
function computeSegEndResizable(seg,context){return seg.isEnd&&seg.eventRange.ui.durationEditable;}
function buildSegTimeText(seg,timeFormat,context,defaultDisplayEventTime,defaultDisplayEventEnd,startOverride,endOverride){let{dateEnv,options}=context;let{displayEventTime,displayEventEnd}=options;let eventDef=seg.eventRange.def;let eventInstance=seg.eventRange.instance;if(displayEventTime==null){displayEventTime=defaultDisplayEventTime!==false;}
if(displayEventEnd==null){displayEventEnd=defaultDisplayEventEnd!==false;}
let wholeEventStart=eventInstance.range.start;let wholeEventEnd=eventInstance.range.end;let segStart=startOverride||seg.start||seg.eventRange.range.start;let segEnd=endOverride||seg.end||seg.eventRange.range.end;let isStartDay=startOfDay(wholeEventStart).valueOf()===startOfDay(segStart).valueOf();let isEndDay=startOfDay(addMs(wholeEventEnd,-1)).valueOf()===startOfDay(addMs(segEnd,-1)).valueOf();if(displayEventTime&&!eventDef.allDay&&(isStartDay||isEndDay)){segStart=isStartDay?wholeEventStart:segStart;segEnd=isEndDay?wholeEventEnd:segEnd;if(displayEventEnd&&eventDef.hasEnd){return dateEnv.formatRange(segStart,segEnd,timeFormat,{forcedStartTzo:startOverride?null:eventInstance.forcedStartTzo,forcedEndTzo:endOverride?null:eventInstance.forcedEndTzo,});}
return dateEnv.format(segStart,timeFormat,{forcedTzo:startOverride?null:eventInstance.forcedStartTzo,});}
return'';}
function getSegMeta(seg,todayRange,nowDate){let segRange=seg.eventRange.range;return{isPast:segRange.end<=(nowDate||todayRange.start),isFuture:segRange.start>=(nowDate||todayRange.end),isToday:todayRange&&rangeContainsMarker(todayRange,segRange.start),};}
function getEventClassNames(props){let classNames=['fc-event'];if(props.isMirror){classNames.push('fc-event-mirror');}
if(props.isDraggable){classNames.push('fc-event-draggable');}
if(props.isStartResizable||props.isEndResizable){classNames.push('fc-event-resizable');}
if(props.isDragging){classNames.push('fc-event-dragging');}
if(props.isResizing){classNames.push('fc-event-resizing');}
if(props.isSelected){classNames.push('fc-event-selected');}
if(props.isStart){classNames.push('fc-event-start');}
if(props.isEnd){classNames.push('fc-event-end');}
if(props.isPast){classNames.push('fc-event-past');}
if(props.isToday){classNames.push('fc-event-today');}
if(props.isFuture){classNames.push('fc-event-future');}
return classNames;}
function buildEventRangeKey(eventRange){return eventRange.instance?eventRange.instance.instanceId:`${eventRange.def.defId}:${eventRange.range.start.toISOString()}`;}
function getSegAnchorAttrs(seg,context){let{def,instance}=seg.eventRange;let{url}=def;if(url){return{href:url};}
let{emitter,options}=context;let{eventInteractive}=options;if(eventInteractive==null){eventInteractive=def.interactive;if(eventInteractive==null){eventInteractive=Boolean(emitter.hasHandlers('eventClick'));}}
if(eventInteractive){return createAriaKeyboardAttrs((ev)=>{emitter.trigger('eventClick',{el:ev.target,event:new EventImpl(context,def,instance),jsEvent:ev,view:context.viewApi,});});}
return{};}
const STANDARD_PROPS={start:identity,end:identity,allDay:Boolean,};function parseDateSpan(raw,dateEnv,defaultDuration){let span=parseOpenDateSpan(raw,dateEnv);let{range}=span;if(!range.start){return null;}
if(!range.end){if(defaultDuration==null){return null;}
range.end=dateEnv.add(range.start,defaultDuration);}
return span;}
function parseOpenDateSpan(raw,dateEnv){let{refined:standardProps,extra}=refineProps(raw,STANDARD_PROPS);let startMeta=standardProps.start?dateEnv.createMarkerMeta(standardProps.start):null;let endMeta=standardProps.end?dateEnv.createMarkerMeta(standardProps.end):null;let{allDay}=standardProps;if(allDay==null){allDay=(startMeta&&startMeta.isTimeUnspecified)&&(!endMeta||endMeta.isTimeUnspecified);}
return Object.assign({range:{start:startMeta?startMeta.marker:null,end:endMeta?endMeta.marker:null,},allDay},extra);}
function isDateSpansEqual(span0,span1){return rangesEqual(span0.range,span1.range)&&span0.allDay===span1.allDay&&isSpanPropsEqual(span0,span1);}
function isSpanPropsEqual(span0,span1){for(let propName in span1){if(propName!=='range'&&propName!=='allDay'){if(span0[propName]!==span1[propName]){return false;}}}
for(let propName in span0){if(!(propName in span1)){return false;}}
return true;}
function buildDateSpanApi(span,dateEnv){return Object.assign(Object.assign({},buildRangeApi(span.range,dateEnv,span.allDay)),{allDay:span.allDay});}
function buildRangeApiWithTimeZone(range,dateEnv,omitTime){return Object.assign(Object.assign({},buildRangeApi(range,dateEnv,omitTime)),{timeZone:dateEnv.timeZone});}
function buildRangeApi(range,dateEnv,omitTime){return{start:dateEnv.toDate(range.start),end:dateEnv.toDate(range.end),startStr:dateEnv.formatIso(range.start,{omitTime}),endStr:dateEnv.formatIso(range.end,{omitTime}),};}
function fabricateEventRange(dateSpan,eventUiBases,context){let res=refineEventDef({editable:false},context);let def=parseEventDef(res.refined,res.extra,'',dateSpan.allDay,true,context);return{def,ui:compileEventUi(def,eventUiBases),instance:createEventInstance(def.defId,dateSpan.range),range:dateSpan.range,isStart:true,isEnd:true,};}
function unpromisify(func,normalizedSuccessCallback,normalizedFailureCallback){let isResolved=false;let wrappedSuccess=function(res){if(!isResolved){isResolved=true;normalizedSuccessCallback(res);}};let wrappedFailure=function(error){if(!isResolved){isResolved=true;normalizedFailureCallback(error);}};let res=func(wrappedSuccess,wrappedFailure);if(res&&typeof res.then==='function'){res.then(wrappedSuccess,wrappedFailure);}}
class JsonRequestError extends Error{constructor(message,response){super(message);this.response=response;}}
function requestJson(method,url,params){method=method.toUpperCase();const fetchOptions={method,};if(method==='GET'){url+=(url.indexOf('?')===-1?'?':'&')+
new URLSearchParams(params);}
else{fetchOptions.body=new URLSearchParams(params);fetchOptions.headers={'Content-Type':'application/x-www-form-urlencoded',};}
return fetch(url,fetchOptions).then((fetchRes)=>{if(fetchRes.ok){return fetchRes.json().then((parsedResponse)=>{return[parsedResponse,fetchRes];},()=>{throw new JsonRequestError('Failure parsing JSON',fetchRes);});}
else{throw new JsonRequestError('Request failed',fetchRes);}});}
let canVGrowWithinCell;function getCanVGrowWithinCell(){if(canVGrowWithinCell==null){canVGrowWithinCell=computeCanVGrowWithinCell();}
return canVGrowWithinCell;}
function computeCanVGrowWithinCell(){if(typeof document==='undefined'){return true;}
let el=document.createElement('div');el.style.position='absolute';el.style.top='0px';el.style.left='0px';el.innerHTML='<table><tr><td><div></div></td></tr></table>';el.querySelector('table').style.height='100px';el.querySelector('div').style.height='100%';document.body.appendChild(el);let div=el.querySelector('div');let possible=div.offsetHeight>0;document.body.removeChild(el);return possible;}
class CalendarRoot extends BaseComponent{constructor(){super(...arguments);this.state={forPrint:false,};this.handleBeforePrint=()=>{flushSync(()=>{this.setState({forPrint:true});});};this.handleAfterPrint=()=>{flushSync(()=>{this.setState({forPrint:false});});};}
render(){let{props}=this;let{options}=props;let{forPrint}=this.state;let isHeightAuto=forPrint||options.height==='auto'||options.contentHeight==='auto';let height=(!isHeightAuto&&options.height!=null)?options.height:'';let classNames=['fc',forPrint?'fc-media-print':'fc-media-screen',`fc-direction-${options.direction}`,props.theme.getClass('root'),];if(!getCanVGrowWithinCell()){classNames.push('fc-liquid-hack');}
return props.children(classNames,height,isHeightAuto,forPrint);}
componentDidMount(){let{emitter}=this.props;emitter.on('_beforeprint',this.handleBeforePrint);emitter.on('_afterprint',this.handleAfterPrint);}
componentWillUnmount(){let{emitter}=this.props;emitter.off('_beforeprint',this.handleBeforePrint);emitter.off('_afterprint',this.handleAfterPrint);}}
class Interaction{constructor(settings){this.component=settings.component;this.isHitComboAllowed=settings.isHitComboAllowed||null;}
destroy(){}}
function parseInteractionSettings(component,input){return{component,el:input.el,useEventCenter:input.useEventCenter!=null?input.useEventCenter:true,isHitComboAllowed:input.isHitComboAllowed||null,};}
function interactionSettingsToStore(settings){return{[settings.component.uid]:settings,};}
const interactionSettingsStore={};class CalendarImpl{getCurrentData(){return this.currentDataManager.getCurrentData();}
dispatch(action){this.currentDataManager.dispatch(action);}
get view(){return this.getCurrentData().viewApi;}
batchRendering(callback){callback();}
updateSize(){this.trigger('_resize',true);}
setOption(name,val){this.dispatch({type:'SET_OPTION',optionName:name,rawOptionValue:val,});}
getOption(name){return this.currentDataManager.currentCalendarOptionsInput[name];}
getAvailableLocaleCodes(){return Object.keys(this.getCurrentData().availableRawLocales);}
on(handlerName,handler){let{currentDataManager}=this;if(currentDataManager.currentCalendarOptionsRefiners[handlerName]){currentDataManager.emitter.on(handlerName,handler);}
else{console.warn(`Unknown listener name'${handlerName}'`);}}
off(handlerName,handler){this.currentDataManager.emitter.off(handlerName,handler);}
trigger(handlerName,...args){this.currentDataManager.emitter.trigger(handlerName,...args);}
changeView(viewType,dateOrRange){this.batchRendering(()=>{this.unselect();if(dateOrRange){if(dateOrRange.start&&dateOrRange.end){this.dispatch({type:'CHANGE_VIEW_TYPE',viewType,});this.dispatch({type:'SET_OPTION',optionName:'visibleRange',rawOptionValue:dateOrRange,});}
else{let{dateEnv}=this.getCurrentData();this.dispatch({type:'CHANGE_VIEW_TYPE',viewType,dateMarker:dateEnv.createMarker(dateOrRange),});}}
else{this.dispatch({type:'CHANGE_VIEW_TYPE',viewType,});}});}
zoomTo(dateMarker,viewType){let state=this.getCurrentData();let spec;viewType=viewType||'day';spec=state.viewSpecs[viewType]||this.getUnitViewSpec(viewType);this.unselect();if(spec){this.dispatch({type:'CHANGE_VIEW_TYPE',viewType:spec.type,dateMarker,});}
else{this.dispatch({type:'CHANGE_DATE',dateMarker,});}}
getUnitViewSpec(unit){let{viewSpecs,toolbarConfig}=this.getCurrentData();let viewTypes=[].concat(toolbarConfig.header?toolbarConfig.header.viewsWithButtons:[],toolbarConfig.footer?toolbarConfig.footer.viewsWithButtons:[]);let i;let spec;for(let viewType in viewSpecs){viewTypes.push(viewType);}
for(i=0;i<viewTypes.length;i+=1){spec=viewSpecs[viewTypes[i]];if(spec){if(spec.singleUnit===unit){return spec;}}}
return null;}
prev(){this.unselect();this.dispatch({type:'PREV'});}
next(){this.unselect();this.dispatch({type:'NEXT'});}
prevYear(){let state=this.getCurrentData();this.unselect();this.dispatch({type:'CHANGE_DATE',dateMarker:state.dateEnv.addYears(state.currentDate,-1),});}
nextYear(){let state=this.getCurrentData();this.unselect();this.dispatch({type:'CHANGE_DATE',dateMarker:state.dateEnv.addYears(state.currentDate,1),});}
today(){let state=this.getCurrentData();this.unselect();this.dispatch({type:'CHANGE_DATE',dateMarker:getNow(state.calendarOptions.now,state.dateEnv),});}
gotoDate(zonedDateInput){let state=this.getCurrentData();this.unselect();this.dispatch({type:'CHANGE_DATE',dateMarker:state.dateEnv.createMarker(zonedDateInput),});}
incrementDate(deltaInput){let state=this.getCurrentData();let delta=createDuration(deltaInput);if(delta){this.unselect();this.dispatch({type:'CHANGE_DATE',dateMarker:state.dateEnv.add(state.currentDate,delta),});}}
getDate(){let state=this.getCurrentData();return state.dateEnv.toDate(state.currentDate);}
formatDate(d,formatter){let{dateEnv}=this.getCurrentData();return dateEnv.format(dateEnv.createMarker(d),createFormatter(formatter));}
formatRange(d0,d1,settings){let{dateEnv}=this.getCurrentData();return dateEnv.formatRange(dateEnv.createMarker(d0),dateEnv.createMarker(d1),createFormatter(settings),settings);}
formatIso(d,omitTime){let{dateEnv}=this.getCurrentData();return dateEnv.formatIso(dateEnv.createMarker(d),{omitTime});}
select(dateOrObj,endDate){let selectionInput;if(endDate==null){if(dateOrObj.start!=null){selectionInput=dateOrObj;}
else{selectionInput={start:dateOrObj,end:null,};}}
else{selectionInput={start:dateOrObj,end:endDate,};}
let state=this.getCurrentData();let selection=parseDateSpan(selectionInput,state.dateEnv,createDuration({days:1}));if(selection){this.dispatch({type:'SELECT_DATES',selection});triggerDateSelect(selection,null,state);}}
unselect(pev){let state=this.getCurrentData();if(state.dateSelection){this.dispatch({type:'UNSELECT_DATES'});triggerDateUnselect(pev,state);}}
addEvent(eventInput,sourceInput){if(eventInput instanceof EventImpl){let def=eventInput._def;let instance=eventInput._instance;let currentData=this.getCurrentData();if(!currentData.eventStore.defs[def.defId]){this.dispatch({type:'ADD_EVENTS',eventStore:eventTupleToStore({def,instance}),});this.triggerEventAdd(eventInput);}
return eventInput;}
let state=this.getCurrentData();let eventSource;if(sourceInput instanceof EventSourceImpl){eventSource=sourceInput.internalEventSource;}
else if(typeof sourceInput==='boolean'){if(sourceInput){[eventSource]=hashValuesToArray(state.eventSources);}}
else if(sourceInput!=null){let sourceApi=this.getEventSourceById(sourceInput);if(!sourceApi){console.warn(`Could not find an event source with ID"${sourceInput}"`);return null;}
eventSource=sourceApi.internalEventSource;}
let tuple=parseEvent(eventInput,eventSource,state,false);if(tuple){let newEventApi=new EventImpl(state,tuple.def,tuple.def.recurringDef?null:tuple.instance);this.dispatch({type:'ADD_EVENTS',eventStore:eventTupleToStore(tuple),});this.triggerEventAdd(newEventApi);return newEventApi;}
return null;}
triggerEventAdd(eventApi){let{emitter}=this.getCurrentData();emitter.trigger('eventAdd',{event:eventApi,relatedEvents:[],revert:()=>{this.dispatch({type:'REMOVE_EVENTS',eventStore:eventApiToStore(eventApi),});},});}
getEventById(id){let state=this.getCurrentData();let{defs,instances}=state.eventStore;id=String(id);for(let defId in defs){let def=defs[defId];if(def.publicId===id){if(def.recurringDef){return new EventImpl(state,def,null);}
for(let instanceId in instances){let instance=instances[instanceId];if(instance.defId===def.defId){return new EventImpl(state,def,instance);}}}}
return null;}
getEvents(){let currentData=this.getCurrentData();return buildEventApis(currentData.eventStore,currentData);}
removeAllEvents(){this.dispatch({type:'REMOVE_ALL_EVENTS'});}
getEventSources(){let state=this.getCurrentData();let sourceHash=state.eventSources;let sourceApis=[];for(let internalId in sourceHash){sourceApis.push(new EventSourceImpl(state,sourceHash[internalId]));}
return sourceApis;}
getEventSourceById(id){let state=this.getCurrentData();let sourceHash=state.eventSources;id=String(id);for(let sourceId in sourceHash){if(sourceHash[sourceId].publicId===id){return new EventSourceImpl(state,sourceHash[sourceId]);}}
return null;}
addEventSource(sourceInput){let state=this.getCurrentData();if(sourceInput instanceof EventSourceImpl){if(!state.eventSources[sourceInput.internalEventSource.sourceId]){this.dispatch({type:'ADD_EVENT_SOURCES',sources:[sourceInput.internalEventSource],});}
return sourceInput;}
let eventSource=parseEventSource(sourceInput,state);if(eventSource){this.dispatch({type:'ADD_EVENT_SOURCES',sources:[eventSource]});return new EventSourceImpl(state,eventSource);}
return null;}
removeAllEventSources(){this.dispatch({type:'REMOVE_ALL_EVENT_SOURCES'});}
refetchEvents(){this.dispatch({type:'FETCH_EVENT_SOURCES',isRefetch:true});}
scrollToTime(timeInput){let time=createDuration(timeInput);if(time){this.trigger('_scrollRequest',{time});}}}
function pointInsideRect(point,rect){return point.left>=rect.left&&point.left<rect.right&&point.top>=rect.top&&point.top<rect.bottom;}
function intersectRects(rect1,rect2){let res={left:Math.max(rect1.left,rect2.left),right:Math.min(rect1.right,rect2.right),top:Math.max(rect1.top,rect2.top),bottom:Math.min(rect1.bottom,rect2.bottom),};if(res.left<res.right&&res.top<res.bottom){return res;}
return false;}
function translateRect(rect,deltaX,deltaY){return{left:rect.left+deltaX,right:rect.right+deltaX,top:rect.top+deltaY,bottom:rect.bottom+deltaY,};}
function constrainPoint(point,rect){return{left:Math.min(Math.max(point.left,rect.left),rect.right),top:Math.min(Math.max(point.top,rect.top),rect.bottom),};}
function getRectCenter(rect){return{left:(rect.left+rect.right)/2,top:(rect.top+rect.bottom)/2,};}
function diffPoints(point1,point2){return{left:point1.left-point2.left,top:point1.top-point2.top,};}
const EMPTY_EVENT_STORE=createEmptyEventStore();class Splitter{constructor(){this.getKeysForEventDefs=memoize(this._getKeysForEventDefs);this.splitDateSelection=memoize(this._splitDateSpan);this.splitEventStore=memoize(this._splitEventStore);this.splitIndividualUi=memoize(this._splitIndividualUi);this.splitEventDrag=memoize(this._splitInteraction);this.splitEventResize=memoize(this._splitInteraction);this.eventUiBuilders={};}
splitProps(props){let keyInfos=this.getKeyInfo(props);let defKeys=this.getKeysForEventDefs(props.eventStore);let dateSelections=this.splitDateSelection(props.dateSelection);let individualUi=this.splitIndividualUi(props.eventUiBases,defKeys);let eventStores=this.splitEventStore(props.eventStore,defKeys);let eventDrags=this.splitEventDrag(props.eventDrag);let eventResizes=this.splitEventResize(props.eventResize);let splitProps={};this.eventUiBuilders=mapHash(keyInfos,(info,key)=>this.eventUiBuilders[key]||memoize(buildEventUiForKey));for(let key in keyInfos){let keyInfo=keyInfos[key];let eventStore=eventStores[key]||EMPTY_EVENT_STORE;let buildEventUi=this.eventUiBuilders[key];splitProps[key]={businessHours:keyInfo.businessHours||props.businessHours,dateSelection:dateSelections[key]||null,eventStore,eventUiBases:buildEventUi(props.eventUiBases[''],keyInfo.ui,individualUi[key]),eventSelection:eventStore.instances[props.eventSelection]?props.eventSelection:'',eventDrag:eventDrags[key]||null,eventResize:eventResizes[key]||null,};}
return splitProps;}
_splitDateSpan(dateSpan){let dateSpans={};if(dateSpan){let keys=this.getKeysForDateSpan(dateSpan);for(let key of keys){dateSpans[key]=dateSpan;}}
return dateSpans;}
_getKeysForEventDefs(eventStore){return mapHash(eventStore.defs,(eventDef)=>this.getKeysForEventDef(eventDef));}
_splitEventStore(eventStore,defKeys){let{defs,instances}=eventStore;let splitStores={};for(let defId in defs){for(let key of defKeys[defId]){if(!splitStores[key]){splitStores[key]=createEmptyEventStore();}
splitStores[key].defs[defId]=defs[defId];}}
for(let instanceId in instances){let instance=instances[instanceId];for(let key of defKeys[instance.defId]){if(splitStores[key]){splitStores[key].instances[instanceId]=instance;}}}
return splitStores;}
_splitIndividualUi(eventUiBases,defKeys){let splitHashes={};for(let defId in eventUiBases){if(defId){for(let key of defKeys[defId]){if(!splitHashes[key]){splitHashes[key]={};}
splitHashes[key][defId]=eventUiBases[defId];}}}
return splitHashes;}
_splitInteraction(interaction){let splitStates={};if(interaction){let affectedStores=this._splitEventStore(interaction.affectedEvents,this._getKeysForEventDefs(interaction.affectedEvents));let mutatedKeysByDefId=this._getKeysForEventDefs(interaction.mutatedEvents);let mutatedStores=this._splitEventStore(interaction.mutatedEvents,mutatedKeysByDefId);let populate=(key)=>{if(!splitStates[key]){splitStates[key]={affectedEvents:affectedStores[key]||EMPTY_EVENT_STORE,mutatedEvents:mutatedStores[key]||EMPTY_EVENT_STORE,isEvent:interaction.isEvent,};}};for(let key in affectedStores){populate(key);}
for(let key in mutatedStores){populate(key);}}
return splitStates;}}
function buildEventUiForKey(allUi,eventUiForKey,individualUi){let baseParts=[];if(allUi){baseParts.push(allUi);}
if(eventUiForKey){baseParts.push(eventUiForKey);}
let stuff={'':combineEventUis(baseParts),};if(individualUi){Object.assign(stuff,individualUi);}
return stuff;}
function getDateMeta(date,todayRange,nowDate,dateProfile){return{dow:date.getUTCDay(),isDisabled:Boolean(dateProfile&&!rangeContainsMarker(dateProfile.activeRange,date)),isOther:Boolean(dateProfile&&!rangeContainsMarker(dateProfile.currentRange,date)),isToday:Boolean(todayRange&&rangeContainsMarker(todayRange,date)),isPast:Boolean(nowDate?(date<nowDate):todayRange?(date<todayRange.start):false),isFuture:Boolean(nowDate?(date>nowDate):todayRange?(date>=todayRange.end):false),};}
function getDayClassNames(meta,theme){let classNames=['fc-day',`fc-day-${DAY_IDS[meta.dow]}`,];if(meta.isDisabled){classNames.push('fc-day-disabled');}
else{if(meta.isToday){classNames.push('fc-day-today');classNames.push(theme.getClass('today'));}
if(meta.isPast){classNames.push('fc-day-past');}
if(meta.isFuture){classNames.push('fc-day-future');}
if(meta.isOther){classNames.push('fc-day-other');}}
return classNames;}
function getSlotClassNames(meta,theme){let classNames=['fc-slot',`fc-slot-${DAY_IDS[meta.dow]}`,];if(meta.isDisabled){classNames.push('fc-slot-disabled');}
else{if(meta.isToday){classNames.push('fc-slot-today');classNames.push(theme.getClass('today'));}
if(meta.isPast){classNames.push('fc-slot-past');}
if(meta.isFuture){classNames.push('fc-slot-future');}}
return classNames;}
const DAY_FORMAT=createFormatter({year:'numeric',month:'long',day:'numeric'});const WEEK_FORMAT=createFormatter({week:'long'});function buildNavLinkAttrs(context,dateMarker,viewType='day',isTabbable=true){const{dateEnv,options,calendarApi}=context;let dateStr=dateEnv.format(dateMarker,viewType==='week'?WEEK_FORMAT:DAY_FORMAT);if(options.navLinks){let zonedDate=dateEnv.toDate(dateMarker);const handleInteraction=(ev)=>{let customAction=viewType==='day'?options.navLinkDayClick:viewType==='week'?options.navLinkWeekClick:null;if(typeof customAction==='function'){customAction.call(calendarApi,dateEnv.toDate(dateMarker),ev);}
else{if(typeof customAction==='string'){viewType=customAction;}
calendarApi.zoomTo(dateMarker,viewType);}};return Object.assign({title:formatWithOrdinals(options.navLinkHint,[dateStr,zonedDate],dateStr),'data-navlink':''},(isTabbable?createAriaClickAttrs(handleInteraction):{onClick:handleInteraction}));}
return{'aria-label':dateStr};}
let _isRtlScrollbarOnLeft=null;function getIsRtlScrollbarOnLeft(){if(_isRtlScrollbarOnLeft===null){_isRtlScrollbarOnLeft=computeIsRtlScrollbarOnLeft();}
return _isRtlScrollbarOnLeft;}
function computeIsRtlScrollbarOnLeft(){let outerEl=document.createElement('div');applyStyle(outerEl,{position:'absolute',top:-1000,left:0,border:0,padding:0,overflow:'scroll',direction:'rtl',});outerEl.innerHTML='<div></div>';document.body.appendChild(outerEl);let innerEl=outerEl.firstChild;let res=innerEl.getBoundingClientRect().left>outerEl.getBoundingClientRect().left;removeElement(outerEl);return res;}
let _scrollbarWidths;function getScrollbarWidths(){if(!_scrollbarWidths){_scrollbarWidths=computeScrollbarWidths();}
return _scrollbarWidths;}
function computeScrollbarWidths(){let el=document.createElement('div');el.style.overflow='scroll';el.style.position='absolute';el.style.top='-9999px';el.style.left='-9999px';document.body.appendChild(el);let res=computeScrollbarWidthsForEl(el);document.body.removeChild(el);return res;}
function computeScrollbarWidthsForEl(el){return{x:el.offsetHeight-el.clientHeight,y:el.offsetWidth-el.clientWidth,};}
function computeEdges(el,getPadding=false){let computedStyle=window.getComputedStyle(el);let borderLeft=parseInt(computedStyle.borderLeftWidth,10)||0;let borderRight=parseInt(computedStyle.borderRightWidth,10)||0;let borderTop=parseInt(computedStyle.borderTopWidth,10)||0;let borderBottom=parseInt(computedStyle.borderBottomWidth,10)||0;let badScrollbarWidths=computeScrollbarWidthsForEl(el);let scrollbarLeftRight=badScrollbarWidths.y-borderLeft-borderRight;let scrollbarBottom=badScrollbarWidths.x-borderTop-borderBottom;let res={borderLeft,borderRight,borderTop,borderBottom,scrollbarBottom,scrollbarLeft:0,scrollbarRight:0,};if(getIsRtlScrollbarOnLeft()&&computedStyle.direction==='rtl'){res.scrollbarLeft=scrollbarLeftRight;}
else{res.scrollbarRight=scrollbarLeftRight;}
if(getPadding){res.paddingLeft=parseInt(computedStyle.paddingLeft,10)||0;res.paddingRight=parseInt(computedStyle.paddingRight,10)||0;res.paddingTop=parseInt(computedStyle.paddingTop,10)||0;res.paddingBottom=parseInt(computedStyle.paddingBottom,10)||0;}
return res;}
function computeInnerRect(el,goWithinPadding=false,doFromWindowViewport){let outerRect=doFromWindowViewport?el.getBoundingClientRect():computeRect(el);let edges=computeEdges(el,goWithinPadding);let res={left:outerRect.left+edges.borderLeft+edges.scrollbarLeft,right:outerRect.right-edges.borderRight-edges.scrollbarRight,top:outerRect.top+edges.borderTop,bottom:outerRect.bottom-edges.borderBottom-edges.scrollbarBottom,};if(goWithinPadding){res.left+=edges.paddingLeft;res.right-=edges.paddingRight;res.top+=edges.paddingTop;res.bottom-=edges.paddingBottom;}
return res;}
function computeRect(el){let rect=el.getBoundingClientRect();return{left:rect.left+window.scrollX,top:rect.top+window.scrollY,right:rect.right+window.scrollX,bottom:rect.bottom+window.scrollY,};}
function computeClippedClientRect(el){let clippingParents=getClippingParents(el);let rect=el.getBoundingClientRect();for(let clippingParent of clippingParents){let intersection=intersectRects(rect,clippingParent.getBoundingClientRect());if(intersection){rect=intersection;}
else{return null;}}
return rect;}
function getClippingParents(el){let parents=[];while(el instanceof HTMLElement){let computedStyle=window.getComputedStyle(el);if(computedStyle.position==='fixed'){break;}
if((/(auto|scroll)/).test(computedStyle.overflow+computedStyle.overflowY+computedStyle.overflowX)){parents.push(el);}
el=el.parentNode;}
return parents;}
class PositionCache{constructor(originEl,els,isHorizontal,isVertical){this.els=els;let originClientRect=this.originClientRect=originEl.getBoundingClientRect();if(isHorizontal){this.buildElHorizontals(originClientRect.left);}
if(isVertical){this.buildElVerticals(originClientRect.top);}}
buildElHorizontals(originClientLeft){let lefts=[];let rights=[];for(let el of this.els){let rect=el.getBoundingClientRect();lefts.push(rect.left-originClientLeft);rights.push(rect.right-originClientLeft);}
this.lefts=lefts;this.rights=rights;}
buildElVerticals(originClientTop){let tops=[];let bottoms=[];for(let el of this.els){let rect=el.getBoundingClientRect();tops.push(rect.top-originClientTop);bottoms.push(rect.bottom-originClientTop);}
this.tops=tops;this.bottoms=bottoms;}
leftToIndex(leftPosition){let{lefts,rights}=this;let len=lefts.length;let i;for(i=0;i<len;i+=1){if(leftPosition>=lefts[i]&&leftPosition<rights[i]){return i;}}
return undefined;}
topToIndex(topPosition){let{tops,bottoms}=this;let len=tops.length;let i;for(i=0;i<len;i+=1){if(topPosition>=tops[i]&&topPosition<bottoms[i]){return i;}}
return undefined;}
getWidth(leftIndex){return this.rights[leftIndex]-this.lefts[leftIndex];}
getHeight(topIndex){return this.bottoms[topIndex]-this.tops[topIndex];}
similarTo(otherCache){return similarNumArrays(this.tops||[],otherCache.tops||[])&&similarNumArrays(this.bottoms||[],otherCache.bottoms||[])&&similarNumArrays(this.lefts||[],otherCache.lefts||[])&&similarNumArrays(this.rights||[],otherCache.rights||[]);}}
function similarNumArrays(a,b){const len=a.length;if(len!==b.length){return false;}
for(let i=0;i<len;i++){if(Math.round(a[i])!==Math.round(b[i])){return false;}}
return true;}
class ScrollController{getMaxScrollTop(){return this.getScrollHeight()-this.getClientHeight();}
getMaxScrollLeft(){return this.getScrollWidth()-this.getClientWidth();}
canScrollVertically(){return this.getMaxScrollTop()>0;}
canScrollHorizontally(){return this.getMaxScrollLeft()>0;}
canScrollUp(){return this.getScrollTop()>0;}
canScrollDown(){return this.getScrollTop()<this.getMaxScrollTop();}
canScrollLeft(){return this.getScrollLeft()>0;}
canScrollRight(){return this.getScrollLeft()<this.getMaxScrollLeft();}}
class ElementScrollController extends ScrollController{constructor(el){super();this.el=el;}
getScrollTop(){return this.el.scrollTop;}
getScrollLeft(){return this.el.scrollLeft;}
setScrollTop(top){this.el.scrollTop=top;}
setScrollLeft(left){this.el.scrollLeft=left;}
getScrollWidth(){return this.el.scrollWidth;}
getScrollHeight(){return this.el.scrollHeight;}
getClientHeight(){return this.el.clientHeight;}
getClientWidth(){return this.el.clientWidth;}}
class WindowScrollController extends ScrollController{getScrollTop(){return window.scrollY;}
getScrollLeft(){return window.scrollX;}
setScrollTop(n){window.scroll(window.scrollX,n);}
setScrollLeft(n){window.scroll(n,window.scrollY);}
getScrollWidth(){return document.documentElement.scrollWidth;}
getScrollHeight(){return document.documentElement.scrollHeight;}
getClientHeight(){return document.documentElement.clientHeight;}
getClientWidth(){return document.documentElement.clientWidth;}}
class DateComponent extends BaseComponent{constructor(){super(...arguments);this.uid=guid();}
prepareHits(){}
queryHit(positionLeft,positionTop,elWidth,elHeight){return null;}
isValidSegDownEl(el){return!this.props.eventDrag&&!this.props.eventResize&&!elementClosest(el,'.fc-event-mirror');}
isValidDateDownEl(el){return!elementClosest(el,'.fc-event:not(.fc-bg-event)')&&!elementClosest(el,'.fc-more-link')&&!elementClosest(el,'a[data-navlink]')&&!elementClosest(el,'.fc-popover');}}
class NamedTimeZoneImpl{constructor(timeZoneName){this.timeZoneName=timeZoneName;}}
class SegHierarchy{constructor(getEntryThickness=(entry)=>{return entry.thickness||1;}){this.getEntryThickness=getEntryThickness;this.strictOrder=false;this.allowReslicing=false;this.maxCoord=-1;this.maxStackCnt=-1;this.levelCoords=[];this.entriesByLevel=[];this.stackCnts={};}
addSegs(inputs){let hiddenEntries=[];for(let input of inputs){this.insertEntry(input,hiddenEntries);}
return hiddenEntries;}
insertEntry(entry,hiddenEntries){let insertion=this.findInsertion(entry);if(this.isInsertionValid(insertion,entry)){this.insertEntryAt(entry,insertion);}
else{this.handleInvalidInsertion(insertion,entry,hiddenEntries);}}
isInsertionValid(insertion,entry){return(this.maxCoord===-1||insertion.levelCoord+this.getEntryThickness(entry)<=this.maxCoord)&&(this.maxStackCnt===-1||insertion.stackCnt<this.maxStackCnt);}
handleInvalidInsertion(insertion,entry,hiddenEntries){if(this.allowReslicing&&insertion.touchingEntry){const hiddenEntry=Object.assign(Object.assign({},entry),{span:intersectSpans(entry.span,insertion.touchingEntry.span)});hiddenEntries.push(hiddenEntry);this.splitEntry(entry,insertion.touchingEntry,hiddenEntries);}
else{hiddenEntries.push(entry);}}
splitEntry(entry,barrier,hiddenEntries){let entrySpan=entry.span;let barrierSpan=barrier.span;if(entrySpan.start<barrierSpan.start){this.insertEntry({index:entry.index,thickness:entry.thickness,span:{start:entrySpan.start,end:barrierSpan.start},},hiddenEntries);}
if(entrySpan.end>barrierSpan.end){this.insertEntry({index:entry.index,thickness:entry.thickness,span:{start:barrierSpan.end,end:entrySpan.end},},hiddenEntries);}}
insertEntryAt(entry,insertion){let{entriesByLevel,levelCoords}=this;if(insertion.lateral===-1){insertAt(levelCoords,insertion.level,insertion.levelCoord);insertAt(entriesByLevel,insertion.level,[entry]);}
else{insertAt(entriesByLevel[insertion.level],insertion.lateral,entry);}
this.stackCnts[buildEntryKey(entry)]=insertion.stackCnt;}
findInsertion(newEntry){let{levelCoords,entriesByLevel,strictOrder,stackCnts}=this;let levelCnt=levelCoords.length;let candidateCoord=0;let touchingLevel=-1;let touchingLateral=-1;let touchingEntry=null;let stackCnt=0;for(let trackingLevel=0;trackingLevel<levelCnt;trackingLevel+=1){const trackingCoord=levelCoords[trackingLevel];if(!strictOrder&&trackingCoord>=candidateCoord+this.getEntryThickness(newEntry)){break;}
let trackingEntries=entriesByLevel[trackingLevel];let trackingEntry;let searchRes=binarySearch(trackingEntries,newEntry.span.start,getEntrySpanEnd);let lateralIndex=searchRes[0]+searchRes[1];while((trackingEntry=trackingEntries[lateralIndex])&&trackingEntry.span.start<newEntry.span.end){let trackingEntryBottom=trackingCoord+this.getEntryThickness(trackingEntry);if(trackingEntryBottom>candidateCoord){candidateCoord=trackingEntryBottom;touchingEntry=trackingEntry;touchingLevel=trackingLevel;touchingLateral=lateralIndex;}
if(trackingEntryBottom===candidateCoord){stackCnt=Math.max(stackCnt,stackCnts[buildEntryKey(trackingEntry)]+1);}
lateralIndex+=1;}}
let destLevel=0;if(touchingEntry){destLevel=touchingLevel+1;while(destLevel<levelCnt&&levelCoords[destLevel]<candidateCoord){destLevel+=1;}}
let destLateral=-1;if(destLevel<levelCnt&&levelCoords[destLevel]===candidateCoord){destLateral=binarySearch(entriesByLevel[destLevel],newEntry.span.end,getEntrySpanEnd)[0];}
return{touchingLevel,touchingLateral,touchingEntry,stackCnt,levelCoord:candidateCoord,level:destLevel,lateral:destLateral,};}
toRects(){let{entriesByLevel,levelCoords}=this;let levelCnt=entriesByLevel.length;let rects=[];for(let level=0;level<levelCnt;level+=1){let entries=entriesByLevel[level];let levelCoord=levelCoords[level];for(let entry of entries){rects.push(Object.assign(Object.assign({},entry),{thickness:this.getEntryThickness(entry),levelCoord}));}}
return rects;}}
function getEntrySpanEnd(entry){return entry.span.end;}
function buildEntryKey(entry){return entry.index+':'+entry.span.start;}
function groupIntersectingEntries(entries){let merges=[];for(let entry of entries){let filteredMerges=[];let hungryMerge={span:entry.span,entries:[entry],};for(let merge of merges){if(intersectSpans(merge.span,hungryMerge.span)){hungryMerge={entries:merge.entries.concat(hungryMerge.entries),span:joinSpans(merge.span,hungryMerge.span),};}
else{filteredMerges.push(merge);}}
filteredMerges.push(hungryMerge);merges=filteredMerges;}
return merges;}
function joinSpans(span0,span1){return{start:Math.min(span0.start,span1.start),end:Math.max(span0.end,span1.end),};}
function intersectSpans(span0,span1){let start=Math.max(span0.start,span1.start);let end=Math.min(span0.end,span1.end);if(start<end){return{start,end};}
return null;}
function insertAt(arr,index,item){arr.splice(index,0,item);}
function binarySearch(a,searchVal,getItemVal){let startIndex=0;let endIndex=a.length;if(!endIndex||searchVal<getItemVal(a[startIndex])){return[0,0];}
if(searchVal>getItemVal(a[endIndex-1])){return[endIndex,0];}
while(startIndex<endIndex){let middleIndex=Math.floor(startIndex+(endIndex-startIndex)/2);let middleVal=getItemVal(a[middleIndex]);if(searchVal<middleVal){endIndex=middleIndex;}
else if(searchVal>middleVal){startIndex=middleIndex+1;}
else{return[middleIndex,1];}}
return[startIndex,0];}
class ElementDragging{constructor(el,selector){this.emitter=new Emitter();}
destroy(){}
setMirrorIsVisible(bool){}
setMirrorNeedsRevert(bool){}
setAutoScrollEnabled(bool){}}
const config={};const DRAG_META_REFINERS={startTime:createDuration,duration:createDuration,create:Boolean,sourceId:String,};function parseDragMeta(raw){let{refined,extra}=refineProps(raw,DRAG_META_REFINERS);return{startTime:refined.startTime||null,duration:refined.duration||null,create:refined.create!=null?refined.create:true,sourceId:refined.sourceId,leftoverProps:extra,};}
function computeFallbackHeaderFormat(datesRepDistinctDays,dayCnt){if(!datesRepDistinctDays||dayCnt>10){return createFormatter({weekday:'short'});}
if(dayCnt>1){return createFormatter({weekday:'short',month:'numeric',day:'numeric',omitCommas:true});}
return createFormatter({weekday:'long'});}
const CLASS_NAME='fc-col-header-cell';function renderInner$1(renderProps){return renderProps.text;}
class TableDateCell extends BaseComponent{render(){let{dateEnv,options,theme,viewApi}=this.context;let{props}=this;let{date,dateProfile}=props;let dayMeta=getDateMeta(date,props.todayRange,null,dateProfile);let classNames=[CLASS_NAME].concat(getDayClassNames(dayMeta,theme));let text=dateEnv.format(date,props.dayHeaderFormat);let navLinkAttrs=(!dayMeta.isDisabled&&props.colCnt>1)?buildNavLinkAttrs(this.context,date):{};let renderProps=Object.assign(Object.assign(Object.assign({date:dateEnv.toDate(date),view:viewApi},props.extraRenderProps),{text}),dayMeta);return(y(ContentContainer,{elTag:"th",elClasses:classNames,elAttrs:Object.assign({role:'columnheader',colSpan:props.colSpan,'data-date':!dayMeta.isDisabled?formatDayString(date):undefined},props.extraDataAttrs),renderProps:renderProps,generatorName:"dayHeaderContent",customGenerator:options.dayHeaderContent,defaultGenerator:renderInner$1,classNameGenerator:options.dayHeaderClassNames,didMount:options.dayHeaderDidMount,willUnmount:options.dayHeaderWillUnmount},(InnerContainer)=>(y("div",{className:"fc-scrollgrid-sync-inner"},!dayMeta.isDisabled&&(y(InnerContainer,{elTag:"a",elAttrs:navLinkAttrs,elClasses:['fc-col-header-cell-cushion',props.isSticky&&'fc-sticky',]}))))));}}
const WEEKDAY_FORMAT=createFormatter({weekday:'long'});class TableDowCell extends BaseComponent{render(){let{props}=this;let{dateEnv,theme,viewApi,options}=this.context;let date=addDays(new Date(259200000),props.dow);let dateMeta={dow:props.dow,isDisabled:false,isFuture:false,isPast:false,isToday:false,isOther:false,};let text=dateEnv.format(date,props.dayHeaderFormat);let renderProps=Object.assign(Object.assign(Object.assign(Object.assign({date},dateMeta),{view:viewApi}),props.extraRenderProps),{text});return(y(ContentContainer,{elTag:"th",elClasses:[CLASS_NAME,...getDayClassNames(dateMeta,theme),...(props.extraClassNames||[]),],elAttrs:Object.assign({role:'columnheader',colSpan:props.colSpan},props.extraDataAttrs),renderProps:renderProps,generatorName:"dayHeaderContent",customGenerator:options.dayHeaderContent,defaultGenerator:renderInner$1,classNameGenerator:options.dayHeaderClassNames,didMount:options.dayHeaderDidMount,willUnmount:options.dayHeaderWillUnmount},(InnerContent)=>(y("div",{className:"fc-scrollgrid-sync-inner"},y(InnerContent,{elTag:"a",elClasses:['fc-col-header-cell-cushion',props.isSticky&&'fc-sticky',],elAttrs:{'aria-label':dateEnv.format(date,WEEKDAY_FORMAT),}})))));}}
class NowTimer extends x$1{constructor(props,context){super(props,context);this.initialNowDate=getNow(context.options.now,context.dateEnv);this.initialNowQueriedMs=new Date().valueOf();this.state=this.computeTiming().currentState;}
render(){let{props,state}=this;return props.children(state.nowDate,state.todayRange);}
componentDidMount(){this.setTimeout();}
componentDidUpdate(prevProps){if(prevProps.unit!==this.props.unit){this.clearTimeout();this.setTimeout();}}
componentWillUnmount(){this.clearTimeout();}
computeTiming(){let{props,context}=this;let unroundedNow=addMs(this.initialNowDate,new Date().valueOf()-this.initialNowQueriedMs);let currentUnitStart=context.dateEnv.startOf(unroundedNow,props.unit);let nextUnitStart=context.dateEnv.add(currentUnitStart,createDuration(1,props.unit));let waitMs=nextUnitStart.valueOf()-unroundedNow.valueOf();waitMs=Math.min(1000*60*60*24,waitMs);return{currentState:{nowDate:currentUnitStart,todayRange:buildDayRange(currentUnitStart)},nextState:{nowDate:nextUnitStart,todayRange:buildDayRange(nextUnitStart)},waitMs,};}
setTimeout(){let{nextState,waitMs}=this.computeTiming();this.timeoutId=setTimeout(()=>{this.setState(nextState,()=>{this.setTimeout();});},waitMs);}
clearTimeout(){if(this.timeoutId){clearTimeout(this.timeoutId);}}}
NowTimer.contextType=ViewContextType;function buildDayRange(date){let start=startOfDay(date);let end=addDays(start,1);return{start,end};}
class DayHeader extends BaseComponent{constructor(){super(...arguments);this.createDayHeaderFormatter=memoize(createDayHeaderFormatter);}
render(){let{context}=this;let{dates,dateProfile,datesRepDistinctDays,renderIntro}=this.props;let dayHeaderFormat=this.createDayHeaderFormatter(context.options.dayHeaderFormat,datesRepDistinctDays,dates.length);return(y(NowTimer,{unit:"day"},(nowDate,todayRange)=>(y("tr",{role:"row"},renderIntro&&renderIntro('day'),dates.map((date)=>(datesRepDistinctDays?(y(TableDateCell,{key:date.toISOString(),date:date,dateProfile:dateProfile,todayRange:todayRange,colCnt:dates.length,dayHeaderFormat:dayHeaderFormat})):(y(TableDowCell,{key:date.getUTCDay(),dow:date.getUTCDay(),dayHeaderFormat:dayHeaderFormat}))))))));}}
function createDayHeaderFormatter(explicitFormat,datesRepDistinctDays,dateCnt){return explicitFormat||computeFallbackHeaderFormat(datesRepDistinctDays,dateCnt);}
class DaySeriesModel{constructor(range,dateProfileGenerator){let date=range.start;let{end}=range;let indices=[];let dates=[];let dayIndex=-1;while(date<end){if(dateProfileGenerator.isHiddenDay(date)){indices.push(dayIndex+0.5);}
else{dayIndex+=1;indices.push(dayIndex);dates.push(date);}
date=addDays(date,1);}
this.dates=dates;this.indices=indices;this.cnt=dates.length;}
sliceRange(range){let firstIndex=this.getDateDayIndex(range.start);let lastIndex=this.getDateDayIndex(addDays(range.end,-1));let clippedFirstIndex=Math.max(0,firstIndex);let clippedLastIndex=Math.min(this.cnt-1,lastIndex);clippedFirstIndex=Math.ceil(clippedFirstIndex);clippedLastIndex=Math.floor(clippedLastIndex);if(clippedFirstIndex<=clippedLastIndex){return{firstIndex:clippedFirstIndex,lastIndex:clippedLastIndex,isStart:firstIndex===clippedFirstIndex,isEnd:lastIndex===clippedLastIndex,};}
return null;}
getDateDayIndex(date){let{indices}=this;let dayOffset=Math.floor(diffDays(this.dates[0],date));if(dayOffset<0){return indices[0]-1;}
if(dayOffset>=indices.length){return indices[indices.length-1]+1;}
return indices[dayOffset];}}
class DayTableModel{constructor(daySeries,breakOnWeeks){let{dates}=daySeries;let daysPerRow;let firstDay;let rowCnt;if(breakOnWeeks){firstDay=dates[0].getUTCDay();for(daysPerRow=1;daysPerRow<dates.length;daysPerRow+=1){if(dates[daysPerRow].getUTCDay()===firstDay){break;}}
rowCnt=Math.ceil(dates.length/daysPerRow);}
else{rowCnt=1;daysPerRow=dates.length;}
this.rowCnt=rowCnt;this.colCnt=daysPerRow;this.daySeries=daySeries;this.cells=this.buildCells();this.headerDates=this.buildHeaderDates();}
buildCells(){let rows=[];for(let row=0;row<this.rowCnt;row+=1){let cells=[];for(let col=0;col<this.colCnt;col+=1){cells.push(this.buildCell(row,col));}
rows.push(cells);}
return rows;}
buildCell(row,col){let date=this.daySeries.dates[row*this.colCnt+col];return{key:date.toISOString(),date,};}
buildHeaderDates(){let dates=[];for(let col=0;col<this.colCnt;col+=1){dates.push(this.cells[0][col].date);}
return dates;}
sliceRange(range){let{colCnt}=this;let seriesSeg=this.daySeries.sliceRange(range);let segs=[];if(seriesSeg){let{firstIndex,lastIndex}=seriesSeg;let index=firstIndex;while(index<=lastIndex){let row=Math.floor(index/colCnt);let nextIndex=Math.min((row+1)*colCnt,lastIndex+1);segs.push({row,firstCol:index%colCnt,lastCol:(nextIndex-1)%colCnt,isStart:seriesSeg.isStart&&index===firstIndex,isEnd:seriesSeg.isEnd&&(nextIndex-1)===lastIndex,});index=nextIndex;}}
return segs;}}
class Slicer{constructor(){this.sliceBusinessHours=memoize(this._sliceBusinessHours);this.sliceDateSelection=memoize(this._sliceDateSpan);this.sliceEventStore=memoize(this._sliceEventStore);this.sliceEventDrag=memoize(this._sliceInteraction);this.sliceEventResize=memoize(this._sliceInteraction);this.forceDayIfListItem=false;}
sliceProps(props,dateProfile,nextDayThreshold,context,...extraArgs){let{eventUiBases}=props;let eventSegs=this.sliceEventStore(props.eventStore,eventUiBases,dateProfile,nextDayThreshold,...extraArgs);return{dateSelectionSegs:this.sliceDateSelection(props.dateSelection,dateProfile,nextDayThreshold,eventUiBases,context,...extraArgs),businessHourSegs:this.sliceBusinessHours(props.businessHours,dateProfile,nextDayThreshold,context,...extraArgs),fgEventSegs:eventSegs.fg,bgEventSegs:eventSegs.bg,eventDrag:this.sliceEventDrag(props.eventDrag,eventUiBases,dateProfile,nextDayThreshold,...extraArgs),eventResize:this.sliceEventResize(props.eventResize,eventUiBases,dateProfile,nextDayThreshold,...extraArgs),eventSelection:props.eventSelection,};}
sliceNowDate(date,dateProfile,nextDayThreshold,context,...extraArgs){return this._sliceDateSpan({range:{start:date,end:addMs(date,1)},allDay:false},dateProfile,nextDayThreshold,{},context,...extraArgs);}
_sliceBusinessHours(businessHours,dateProfile,nextDayThreshold,context,...extraArgs){if(!businessHours){return[];}
return this._sliceEventStore(expandRecurring(businessHours,computeActiveRange(dateProfile,Boolean(nextDayThreshold)),context),{},dateProfile,nextDayThreshold,...extraArgs).bg;}
_sliceEventStore(eventStore,eventUiBases,dateProfile,nextDayThreshold,...extraArgs){if(eventStore){let rangeRes=sliceEventStore(eventStore,eventUiBases,computeActiveRange(dateProfile,Boolean(nextDayThreshold)),nextDayThreshold);return{bg:this.sliceEventRanges(rangeRes.bg,extraArgs),fg:this.sliceEventRanges(rangeRes.fg,extraArgs),};}
return{bg:[],fg:[]};}
_sliceInteraction(interaction,eventUiBases,dateProfile,nextDayThreshold,...extraArgs){if(!interaction){return null;}
let rangeRes=sliceEventStore(interaction.mutatedEvents,eventUiBases,computeActiveRange(dateProfile,Boolean(nextDayThreshold)),nextDayThreshold);return{segs:this.sliceEventRanges(rangeRes.fg,extraArgs),affectedInstances:interaction.affectedEvents.instances,isEvent:interaction.isEvent,};}
_sliceDateSpan(dateSpan,dateProfile,nextDayThreshold,eventUiBases,context,...extraArgs){if(!dateSpan){return[];}
let activeRange=computeActiveRange(dateProfile,Boolean(nextDayThreshold));let activeDateSpanRange=intersectRanges(dateSpan.range,activeRange);if(activeDateSpanRange){dateSpan=Object.assign(Object.assign({},dateSpan),{range:activeDateSpanRange});let eventRange=fabricateEventRange(dateSpan,eventUiBases,context);let segs=this.sliceRange(dateSpan.range,...extraArgs);for(let seg of segs){seg.eventRange=eventRange;}
return segs;}
return[];}
sliceEventRanges(eventRanges,extraArgs){let segs=[];for(let eventRange of eventRanges){segs.push(...this.sliceEventRange(eventRange,extraArgs));}
return segs;}
sliceEventRange(eventRange,extraArgs){let dateRange=eventRange.range;if(this.forceDayIfListItem&&eventRange.ui.display==='list-item'){dateRange={start:dateRange.start,end:addDays(dateRange.start,1),};}
let segs=this.sliceRange(dateRange,...extraArgs);for(let seg of segs){seg.eventRange=eventRange;seg.isStart=eventRange.isStart&&seg.isStart;seg.isEnd=eventRange.isEnd&&seg.isEnd;}
return segs;}}
function computeActiveRange(dateProfile,isComponentAllDay){let range=dateProfile.activeRange;if(isComponentAllDay){return range;}
return{start:addMs(range.start,dateProfile.slotMinTime.milliseconds),end:addMs(range.end,dateProfile.slotMaxTime.milliseconds-864e5),};}
function isInteractionValid(interaction,dateProfile,context){let{instances}=interaction.mutatedEvents;for(let instanceId in instances){if(!rangeContainsRange(dateProfile.validRange,instances[instanceId].range)){return false;}}
return isNewPropsValid({eventDrag:interaction},context);}
function isDateSelectionValid(dateSelection,dateProfile,context){if(!rangeContainsRange(dateProfile.validRange,dateSelection.range)){return false;}
return isNewPropsValid({dateSelection},context);}
function isNewPropsValid(newProps,context){let calendarState=context.getCurrentData();let props=Object.assign({businessHours:calendarState.businessHours,dateSelection:'',eventStore:calendarState.eventStore,eventUiBases:calendarState.eventUiBases,eventSelection:'',eventDrag:null,eventResize:null},newProps);return(context.pluginHooks.isPropsValid||isPropsValid)(props,context);}
function isPropsValid(state,context,dateSpanMeta={},filterConfig){if(state.eventDrag&&!isInteractionPropsValid(state,context,dateSpanMeta,filterConfig)){return false;}
if(state.dateSelection&&!isDateSelectionPropsValid(state,context,dateSpanMeta,filterConfig)){return false;}
return true;}
function isInteractionPropsValid(state,context,dateSpanMeta,filterConfig){let currentState=context.getCurrentData();let interaction=state.eventDrag;let subjectEventStore=interaction.mutatedEvents;let subjectDefs=subjectEventStore.defs;let subjectInstances=subjectEventStore.instances;let subjectConfigs=compileEventUis(subjectDefs,interaction.isEvent?state.eventUiBases:{'':currentState.selectionConfig});if(filterConfig){subjectConfigs=mapHash(subjectConfigs,filterConfig);}
let otherEventStore=excludeInstances(state.eventStore,interaction.affectedEvents.instances);let otherDefs=otherEventStore.defs;let otherInstances=otherEventStore.instances;let otherConfigs=compileEventUis(otherDefs,state.eventUiBases);for(let subjectInstanceId in subjectInstances){let subjectInstance=subjectInstances[subjectInstanceId];let subjectRange=subjectInstance.range;let subjectConfig=subjectConfigs[subjectInstance.defId];let subjectDef=subjectDefs[subjectInstance.defId];if(!allConstraintsPass(subjectConfig.constraints,subjectRange,otherEventStore,state.businessHours,context)){return false;}
let{eventOverlap}=context.options;let eventOverlapFunc=typeof eventOverlap==='function'?eventOverlap:null;for(let otherInstanceId in otherInstances){let otherInstance=otherInstances[otherInstanceId];if(rangesIntersect(subjectRange,otherInstance.range)){let otherOverlap=otherConfigs[otherInstance.defId].overlap;if(otherOverlap===false&&interaction.isEvent){return false;}
if(subjectConfig.overlap===false){return false;}
if(eventOverlapFunc&&!eventOverlapFunc(new EventImpl(context,otherDefs[otherInstance.defId],otherInstance),new EventImpl(context,subjectDef,subjectInstance))){return false;}}}
let calendarEventStore=currentState.eventStore;for(let subjectAllow of subjectConfig.allows){let subjectDateSpan=Object.assign(Object.assign({},dateSpanMeta),{range:subjectInstance.range,allDay:subjectDef.allDay});let origDef=calendarEventStore.defs[subjectDef.defId];let origInstance=calendarEventStore.instances[subjectInstanceId];let eventApi;if(origDef){eventApi=new EventImpl(context,origDef,origInstance);}
else{eventApi=new EventImpl(context,subjectDef);}
if(!subjectAllow(buildDateSpanApiWithContext(subjectDateSpan,context),eventApi)){return false;}}}
return true;}
function isDateSelectionPropsValid(state,context,dateSpanMeta,filterConfig){let relevantEventStore=state.eventStore;let relevantDefs=relevantEventStore.defs;let relevantInstances=relevantEventStore.instances;let selection=state.dateSelection;let selectionRange=selection.range;let{selectionConfig}=context.getCurrentData();if(filterConfig){selectionConfig=filterConfig(selectionConfig);}
if(!allConstraintsPass(selectionConfig.constraints,selectionRange,relevantEventStore,state.businessHours,context)){return false;}
let{selectOverlap}=context.options;let selectOverlapFunc=typeof selectOverlap==='function'?selectOverlap:null;for(let relevantInstanceId in relevantInstances){let relevantInstance=relevantInstances[relevantInstanceId];if(rangesIntersect(selectionRange,relevantInstance.range)){if(selectionConfig.overlap===false){return false;}
if(selectOverlapFunc&&!selectOverlapFunc(new EventImpl(context,relevantDefs[relevantInstance.defId],relevantInstance),null)){return false;}}}
for(let selectionAllow of selectionConfig.allows){let fullDateSpan=Object.assign(Object.assign({},dateSpanMeta),selection);if(!selectionAllow(buildDateSpanApiWithContext(fullDateSpan,context),null)){return false;}}
return true;}
function allConstraintsPass(constraints,subjectRange,otherEventStore,businessHoursUnexpanded,context){for(let constraint of constraints){if(!anyRangesContainRange(constraintToRanges(constraint,subjectRange,otherEventStore,businessHoursUnexpanded,context),subjectRange)){return false;}}
return true;}
function constraintToRanges(constraint,subjectRange,otherEventStore,businessHoursUnexpanded,context){if(constraint==='businessHours'){return eventStoreToRanges(expandRecurring(businessHoursUnexpanded,subjectRange,context));}
if(typeof constraint==='string'){return eventStoreToRanges(filterEventStoreDefs(otherEventStore,(eventDef)=>eventDef.groupId===constraint));}
if(typeof constraint==='object'&&constraint){return eventStoreToRanges(expandRecurring(constraint,subjectRange,context));}
return[];}
function eventStoreToRanges(eventStore){let{instances}=eventStore;let ranges=[];for(let instanceId in instances){ranges.push(instances[instanceId].range);}
return ranges;}
function anyRangesContainRange(outerRanges,innerRange){for(let outerRange of outerRanges){if(rangeContainsRange(outerRange,innerRange)){return true;}}
return false;}
const VISIBLE_HIDDEN_RE=/^(visible|hidden)$/;class Scroller extends BaseComponent{constructor(){super(...arguments);this.handleEl=(el)=>{this.el=el;setRef(this.props.elRef,el);};}
render(){let{props}=this;let{liquid,liquidIsAbsolute}=props;let isAbsolute=liquid&&liquidIsAbsolute;let className=['fc-scroller'];if(liquid){if(liquidIsAbsolute){className.push('fc-scroller-liquid-absolute');}
else{className.push('fc-scroller-liquid');}}
return(y("div",{ref:this.handleEl,className:className.join(' '),style:{overflowX:props.overflowX,overflowY:props.overflowY,left:(isAbsolute&&-(props.overcomeLeft||0))||'',right:(isAbsolute&&-(props.overcomeRight||0))||'',bottom:(isAbsolute&&-(props.overcomeBottom||0))||'',marginLeft:(!isAbsolute&&-(props.overcomeLeft||0))||'',marginRight:(!isAbsolute&&-(props.overcomeRight||0))||'',marginBottom:(!isAbsolute&&-(props.overcomeBottom||0))||'',maxHeight:props.maxHeight||'',}},props.children));}
needsXScrolling(){if(VISIBLE_HIDDEN_RE.test(this.props.overflowX)){return false;}
let{el}=this;let realClientWidth=this.el.getBoundingClientRect().width-this.getYScrollbarWidth();let{children}=el;for(let i=0;i<children.length;i+=1){let childEl=children[i];if(childEl.getBoundingClientRect().width>realClientWidth){return true;}}
return false;}
needsYScrolling(){if(VISIBLE_HIDDEN_RE.test(this.props.overflowY)){return false;}
let{el}=this;let realClientHeight=this.el.getBoundingClientRect().height-this.getXScrollbarWidth();let{children}=el;for(let i=0;i<children.length;i+=1){let childEl=children[i];if(childEl.getBoundingClientRect().height>realClientHeight){return true;}}
return false;}
getXScrollbarWidth(){if(VISIBLE_HIDDEN_RE.test(this.props.overflowX)){return 0;}
return this.el.offsetHeight-this.el.clientHeight;}
getYScrollbarWidth(){if(VISIBLE_HIDDEN_RE.test(this.props.overflowY)){return 0;}
return this.el.offsetWidth-this.el.clientWidth;}}
class RefMap{constructor(masterCallback){this.masterCallback=masterCallback;this.currentMap={};this.depths={};this.callbackMap={};this.handleValue=(val,key)=>{let{depths,currentMap}=this;let removed=false;let added=false;if(val!==null){removed=(key in currentMap);currentMap[key]=val;depths[key]=(depths[key]||0)+1;added=true;}
else{depths[key]-=1;if(!depths[key]){delete currentMap[key];delete this.callbackMap[key];removed=true;}}
if(this.masterCallback){if(removed){this.masterCallback(null,String(key));}
if(added){this.masterCallback(val,String(key));}}};}
createRef(key){let refCallback=this.callbackMap[key];if(!refCallback){refCallback=this.callbackMap[key]=(val)=>{this.handleValue(val,String(key));};}
return refCallback;}
collect(startIndex,endIndex,step){return collectFromHash(this.currentMap,startIndex,endIndex,step);}
getAll(){return hashValuesToArray(this.currentMap);}}
function computeShrinkWidth(chunkEls){let shrinkCells=findElements(chunkEls,'.fc-scrollgrid-shrink');let largestWidth=0;for(let shrinkCell of shrinkCells){largestWidth=Math.max(largestWidth,computeSmallestCellWidth(shrinkCell));}
return Math.ceil(largestWidth);}
function getSectionHasLiquidHeight(props,sectionConfig){return props.liquid&&sectionConfig.liquid;}
function getAllowYScrolling(props,sectionConfig){return sectionConfig.maxHeight!=null||getSectionHasLiquidHeight(props,sectionConfig);}
function renderChunkContent(sectionConfig,chunkConfig,arg,isHeader){let{expandRows}=arg;let content=typeof chunkConfig.content==='function'?chunkConfig.content(arg):y('table',{role:'presentation',className:[chunkConfig.tableClassName,sectionConfig.syncRowHeights?'fc-scrollgrid-sync-table':'',].join(' '),style:{minWidth:arg.tableMinWidth,width:arg.clientWidth,height:expandRows?arg.clientHeight:'',},},arg.tableColGroupNode,y(isHeader?'thead':'tbody',{role:'presentation',},typeof chunkConfig.rowContent==='function'?chunkConfig.rowContent(arg):chunkConfig.rowContent));return content;}
function isColPropsEqual(cols0,cols1){return isArraysEqual(cols0,cols1,isPropsEqual);}
function renderMicroColGroup(cols,shrinkWidth){let colNodes=[];for(let colProps of cols){let span=colProps.span||1;for(let i=0;i<span;i+=1){colNodes.push(y("col",{style:{width:colProps.width==='shrink'?sanitizeShrinkWidth(shrinkWidth):(colProps.width||''),minWidth:colProps.minWidth||'',}}));}}
return y('colgroup',{},...colNodes);}
function sanitizeShrinkWidth(shrinkWidth){return shrinkWidth==null?4:shrinkWidth;}
function hasShrinkWidth(cols){for(let col of cols){if(col.width==='shrink'){return true;}}
return false;}
function getScrollGridClassNames(liquid,context){let classNames=['fc-scrollgrid',context.theme.getClass('table'),];if(liquid){classNames.push('fc-scrollgrid-liquid');}
return classNames;}
function getSectionClassNames(sectionConfig,wholeTableVGrow){let classNames=['fc-scrollgrid-section',`fc-scrollgrid-section-${sectionConfig.type}`,sectionConfig.className,];if(wholeTableVGrow&&sectionConfig.liquid&&sectionConfig.maxHeight==null){classNames.push('fc-scrollgrid-section-liquid');}
if(sectionConfig.isSticky){classNames.push('fc-scrollgrid-section-sticky');}
return classNames;}
function renderScrollShim(arg){return(y("div",{className:"fc-scrollgrid-sticky-shim",style:{width:arg.clientWidth,minWidth:arg.tableMinWidth,}}));}
function getStickyHeaderDates(options){let{stickyHeaderDates}=options;if(stickyHeaderDates==null||stickyHeaderDates==='auto'){stickyHeaderDates=options.height==='auto'||options.viewHeight==='auto';}
return stickyHeaderDates;}
function getStickyFooterScrollbar(options){let{stickyFooterScrollbar}=options;if(stickyFooterScrollbar==null||stickyFooterScrollbar==='auto'){stickyFooterScrollbar=options.height==='auto'||options.viewHeight==='auto';}
return stickyFooterScrollbar;}
class SimpleScrollGrid extends BaseComponent{constructor(){super(...arguments);this.processCols=memoize((a)=>a,isColPropsEqual);this.renderMicroColGroup=memoize(renderMicroColGroup);this.scrollerRefs=new RefMap();this.scrollerElRefs=new RefMap(this._handleScrollerEl.bind(this));this.state={shrinkWidth:null,forceYScrollbars:false,scrollerClientWidths:{},scrollerClientHeights:{},};this.handleSizing=()=>{this.safeSetState(Object.assign({shrinkWidth:this.computeShrinkWidth()},this.computeScrollerDims()));};}
render(){let{props,state,context}=this;let sectionConfigs=props.sections||[];let cols=this.processCols(props.cols);let microColGroupNode=this.renderMicroColGroup(cols,state.shrinkWidth);let classNames=getScrollGridClassNames(props.liquid,context);if(props.collapsibleWidth){classNames.push('fc-scrollgrid-collapsible');}
let configCnt=sectionConfigs.length;let configI=0;let currentConfig;let headSectionNodes=[];let bodySectionNodes=[];let footSectionNodes=[];while(configI<configCnt&&(currentConfig=sectionConfigs[configI]).type==='header'){headSectionNodes.push(this.renderSection(currentConfig,microColGroupNode,true));configI+=1;}
while(configI<configCnt&&(currentConfig=sectionConfigs[configI]).type==='body'){bodySectionNodes.push(this.renderSection(currentConfig,microColGroupNode,false));configI+=1;}
while(configI<configCnt&&(currentConfig=sectionConfigs[configI]).type==='footer'){footSectionNodes.push(this.renderSection(currentConfig,microColGroupNode,true));configI+=1;}
let isBuggy=!getCanVGrowWithinCell();const roleAttrs={role:'rowgroup'};return y('table',{role:'grid',className:classNames.join(' '),style:{height:props.height},},Boolean(!isBuggy&&headSectionNodes.length)&&y('thead',roleAttrs,...headSectionNodes),Boolean(!isBuggy&&bodySectionNodes.length)&&y('tbody',roleAttrs,...bodySectionNodes),Boolean(!isBuggy&&footSectionNodes.length)&&y('tfoot',roleAttrs,...footSectionNodes),isBuggy&&y('tbody',roleAttrs,...headSectionNodes,...bodySectionNodes,...footSectionNodes));}
renderSection(sectionConfig,microColGroupNode,isHeader){if('outerContent'in sectionConfig){return(y(_,{key:sectionConfig.key},sectionConfig.outerContent));}
return(y("tr",{key:sectionConfig.key,role:"presentation",className:getSectionClassNames(sectionConfig,this.props.liquid).join(' ')},this.renderChunkTd(sectionConfig,microColGroupNode,sectionConfig.chunk,isHeader)));}
renderChunkTd(sectionConfig,microColGroupNode,chunkConfig,isHeader){if('outerContent'in chunkConfig){return chunkConfig.outerContent;}
let{props}=this;let{forceYScrollbars,scrollerClientWidths,scrollerClientHeights}=this.state;let needsYScrolling=getAllowYScrolling(props,sectionConfig);let isLiquid=getSectionHasLiquidHeight(props,sectionConfig);let overflowY=!props.liquid?'visible':forceYScrollbars?'scroll':!needsYScrolling?'hidden':'auto';let sectionKey=sectionConfig.key;let content=renderChunkContent(sectionConfig,chunkConfig,{tableColGroupNode:microColGroupNode,tableMinWidth:'',clientWidth:(!props.collapsibleWidth&&scrollerClientWidths[sectionKey]!==undefined)?scrollerClientWidths[sectionKey]:null,clientHeight:scrollerClientHeights[sectionKey]!==undefined?scrollerClientHeights[sectionKey]:null,expandRows:sectionConfig.expandRows,syncRowHeights:false,rowSyncHeights:[],reportRowHeightChange:()=>{},},isHeader);return y(isHeader?'th':'td',{ref:chunkConfig.elRef,role:'presentation',},y("div",{className:`fc-scroller-harness${isLiquid?' fc-scroller-harness-liquid':''}`},y(Scroller,{ref:this.scrollerRefs.createRef(sectionKey),elRef:this.scrollerElRefs.createRef(sectionKey),overflowY:overflowY,overflowX:!props.liquid?'visible':'hidden',maxHeight:sectionConfig.maxHeight,liquid:isLiquid,liquidIsAbsolute:true},content)));}
_handleScrollerEl(scrollerEl,key){let section=getSectionByKey(this.props.sections,key);if(section){setRef(section.chunk.scrollerElRef,scrollerEl);}}
componentDidMount(){this.handleSizing();this.context.addResizeHandler(this.handleSizing);}
componentDidUpdate(){this.handleSizing();}
componentWillUnmount(){this.context.removeResizeHandler(this.handleSizing);}
computeShrinkWidth(){return hasShrinkWidth(this.props.cols)?computeShrinkWidth(this.scrollerElRefs.getAll()):0;}
computeScrollerDims(){let scrollbarWidth=getScrollbarWidths();let{scrollerRefs,scrollerElRefs}=this;let forceYScrollbars=false;let scrollerClientWidths={};let scrollerClientHeights={};for(let sectionKey in scrollerRefs.currentMap){let scroller=scrollerRefs.currentMap[sectionKey];if(scroller&&scroller.needsYScrolling()){forceYScrollbars=true;break;}}
for(let section of this.props.sections){let sectionKey=section.key;let scrollerEl=scrollerElRefs.currentMap[sectionKey];if(scrollerEl){let harnessEl=scrollerEl.parentNode;scrollerClientWidths[sectionKey]=Math.floor(harnessEl.getBoundingClientRect().width-(forceYScrollbars?scrollbarWidth.y:0));scrollerClientHeights[sectionKey]=Math.floor(harnessEl.getBoundingClientRect().height);}}
return{forceYScrollbars,scrollerClientWidths,scrollerClientHeights};}}
SimpleScrollGrid.addStateEquality({scrollerClientWidths:isPropsEqual,scrollerClientHeights:isPropsEqual,});function getSectionByKey(sections,key){for(let section of sections){if(section.key===key){return section;}}
return null;}
class EventContainer extends BaseComponent{constructor(){super(...arguments);this.handleEl=(el)=>{this.el=el;if(el){setElSeg(el,this.props.seg);}};}
render(){const{props,context}=this;const{options}=context;const{seg}=props;const{eventRange}=seg;const{ui}=eventRange;const renderProps={event:new EventImpl(context,eventRange.def,eventRange.instance),view:context.viewApi,timeText:props.timeText,textColor:ui.textColor,backgroundColor:ui.backgroundColor,borderColor:ui.borderColor,isDraggable:!props.disableDragging&&computeSegDraggable(seg,context),isStartResizable:!props.disableResizing&&computeSegStartResizable(seg,context),isEndResizable:!props.disableResizing&&computeSegEndResizable(seg),isMirror:Boolean(props.isDragging||props.isResizing||props.isDateSelecting),isStart:Boolean(seg.isStart),isEnd:Boolean(seg.isEnd),isPast:Boolean(props.isPast),isFuture:Boolean(props.isFuture),isToday:Boolean(props.isToday),isSelected:Boolean(props.isSelected),isDragging:Boolean(props.isDragging),isResizing:Boolean(props.isResizing),};return(y(ContentContainer,Object.assign({},props,{elRef:this.handleEl,elClasses:[...getEventClassNames(renderProps),...seg.eventRange.ui.classNames,...(props.elClasses||[]),],renderProps:renderProps,generatorName:"eventContent",customGenerator:options.eventContent,defaultGenerator:props.defaultGenerator,classNameGenerator:options.eventClassNames,didMount:options.eventDidMount,willUnmount:options.eventWillUnmount})));}
componentDidUpdate(prevProps){if(this.el&&this.props.seg!==prevProps.seg){setElSeg(this.el,this.props.seg);}}}
class StandardEvent extends BaseComponent{render(){let{props,context}=this;let{options}=context;let{seg}=props;let{ui}=seg.eventRange;let timeFormat=options.eventTimeFormat||props.defaultTimeFormat;let timeText=buildSegTimeText(seg,timeFormat,context,props.defaultDisplayEventTime,props.defaultDisplayEventEnd);return(y(EventContainer,Object.assign({},props,{elTag:"a",elStyle:{borderColor:ui.borderColor,backgroundColor:ui.backgroundColor,},elAttrs:getSegAnchorAttrs(seg,context),defaultGenerator:renderInnerContent$1$1,timeText:timeText}),(InnerContent,eventContentArg)=>(y(_,null,y(InnerContent,{elTag:"div",elClasses:['fc-event-main'],elStyle:{color:eventContentArg.textColor}}),Boolean(eventContentArg.isStartResizable)&&(y("div",{className:"fc-event-resizer fc-event-resizer-start"})),Boolean(eventContentArg.isEndResizable)&&(y("div",{className:"fc-event-resizer fc-event-resizer-end"}))))));}}
function renderInnerContent$1$1(innerProps){return(y("div",{className:"fc-event-main-frame"},innerProps.timeText&&(y("div",{className:"fc-event-time"},innerProps.timeText)),y("div",{className:"fc-event-title-container"},y("div",{className:"fc-event-title fc-sticky"},innerProps.event.title||y(_,null,"\u00A0")))));}
const NowIndicatorContainer=(props)=>(y(ViewContextType.Consumer,null,(context)=>{let{options}=context;let renderProps={isAxis:props.isAxis,date:context.dateEnv.toDate(props.date),view:context.viewApi,};return(y(ContentContainer,Object.assign({},props,{elTag:props.elTag||'div',renderProps:renderProps,generatorName:"nowIndicatorContent",customGenerator:options.nowIndicatorContent,classNameGenerator:options.nowIndicatorClassNames,didMount:options.nowIndicatorDidMount,willUnmount:options.nowIndicatorWillUnmount})));}));const DAY_NUM_FORMAT=createFormatter({day:'numeric'});class DayCellContainer extends BaseComponent{constructor(){super(...arguments);this.refineRenderProps=memoizeObjArg(refineRenderProps$4);}
render(){let{props,context}=this;let{options}=context;let renderProps=this.refineRenderProps({date:props.date,dateProfile:props.dateProfile,todayRange:props.todayRange,isMonthStart:props.isMonthStart||false,showDayNumber:props.showDayNumber,extraRenderProps:props.extraRenderProps,viewApi:context.viewApi,dateEnv:context.dateEnv,monthStartFormat:options.monthStartFormat,});return(y(ContentContainer,Object.assign({},props,{elClasses:[...getDayClassNames(renderProps,context.theme),...(props.elClasses||[]),],elAttrs:Object.assign(Object.assign({},props.elAttrs),(renderProps.isDisabled?{}:{'data-date':formatDayString(props.date)})),renderProps:renderProps,generatorName:"dayCellContent",customGenerator:options.dayCellContent,defaultGenerator:props.defaultGenerator,classNameGenerator:renderProps.isDisabled?undefined:options.dayCellClassNames,didMount:options.dayCellDidMount,willUnmount:options.dayCellWillUnmount})));}}
function hasCustomDayCellContent(options){return Boolean(options.dayCellContent||hasCustomRenderingHandler('dayCellContent',options));}
function refineRenderProps$4(raw){let{date,dateEnv,dateProfile,isMonthStart}=raw;let dayMeta=getDateMeta(date,raw.todayRange,null,dateProfile);let dayNumberText=raw.showDayNumber?(dateEnv.format(date,isMonthStart?raw.monthStartFormat:DAY_NUM_FORMAT)):'';return Object.assign(Object.assign(Object.assign({date:dateEnv.toDate(date),view:raw.viewApi},dayMeta),{isMonthStart,dayNumberText}),raw.extraRenderProps);}
class BgEvent extends BaseComponent{render(){let{props}=this;let{seg}=props;return(y(EventContainer,{elTag:"div",elClasses:['fc-bg-event'],elStyle:{backgroundColor:seg.eventRange.ui.backgroundColor},defaultGenerator:renderInnerContent$5,seg:seg,timeText:"",isDragging:false,isResizing:false,isDateSelecting:false,isSelected:false,isPast:props.isPast,isFuture:props.isFuture,isToday:props.isToday,disableDragging:true,disableResizing:true}));}}
function renderInnerContent$5(props){let{title}=props.event;return title&&(y("div",{className:"fc-event-title"},props.event.title));}
function renderFill(fillType){return(y("div",{className:`fc-${fillType}`}));}
const WeekNumberContainer=(props)=>(y(ViewContextType.Consumer,null,(context)=>{let{dateEnv,options}=context;let{date}=props;let format=options.weekNumberFormat||props.defaultFormat;let num=dateEnv.computeWeekNumber(date);let text=dateEnv.format(date,format);let renderProps={num,text,date};return(y(ContentContainer,Object.assign({},props,{renderProps:renderProps,generatorName:"weekNumberContent",customGenerator:options.weekNumberContent,defaultGenerator:renderInner,classNameGenerator:options.weekNumberClassNames,didMount:options.weekNumberDidMount,willUnmount:options.weekNumberWillUnmount})));}));function renderInner(innerProps){return innerProps.text;}
const PADDING_FROM_VIEWPORT=10;class Popover extends BaseComponent{constructor(){super(...arguments);this.state={titleId:getUniqueDomId(),};this.handleRootEl=(el)=>{this.rootEl=el;if(this.props.elRef){setRef(this.props.elRef,el);}};this.handleDocumentMouseDown=(ev)=>{const target=getEventTargetViaRoot(ev);if(!this.rootEl.contains(target)){this.handleCloseClick();}};this.handleDocumentKeyDown=(ev)=>{if(ev.key==='Escape'){this.handleCloseClick();}};this.handleCloseClick=()=>{let{onClose}=this.props;if(onClose){onClose();}};}
render(){let{theme,options}=this.context;let{props,state}=this;let classNames=['fc-popover',theme.getClass('popover'),].concat(props.extraClassNames||[]);return j(y("div",Object.assign({},props.extraAttrs,{id:props.id,className:classNames.join(' '),"aria-labelledby":state.titleId,ref:this.handleRootEl}),y("div",{className:'fc-popover-header '+theme.getClass('popoverHeader')},y("span",{className:"fc-popover-title",id:state.titleId},props.title),y("span",{className:'fc-popover-close '+theme.getIconClass('close'),title:options.closeHint,onClick:this.handleCloseClick})),y("div",{className:'fc-popover-body '+theme.getClass('popoverContent')},props.children)),props.parentEl);}
componentDidMount(){document.addEventListener('mousedown',this.handleDocumentMouseDown);document.addEventListener('keydown',this.handleDocumentKeyDown);this.updateSize();}
componentWillUnmount(){document.removeEventListener('mousedown',this.handleDocumentMouseDown);document.removeEventListener('keydown',this.handleDocumentKeyDown);}
updateSize(){let{isRtl}=this.context;let{alignmentEl,alignGridTop}=this.props;let{rootEl}=this;let alignmentRect=computeClippedClientRect(alignmentEl);if(alignmentRect){let popoverDims=rootEl.getBoundingClientRect();let popoverTop=alignGridTop?elementClosest(alignmentEl,'.fc-scrollgrid').getBoundingClientRect().top:alignmentRect.top;let popoverLeft=isRtl?alignmentRect.right-popoverDims.width:alignmentRect.left;popoverTop=Math.max(popoverTop,PADDING_FROM_VIEWPORT);popoverLeft=Math.min(popoverLeft,document.documentElement.clientWidth-PADDING_FROM_VIEWPORT-popoverDims.width);popoverLeft=Math.max(popoverLeft,PADDING_FROM_VIEWPORT);let origin=rootEl.offsetParent.getBoundingClientRect();applyStyle(rootEl,{top:popoverTop-origin.top,left:popoverLeft-origin.left,});}}}
class MorePopover extends DateComponent{constructor(){super(...arguments);this.handleRootEl=(rootEl)=>{this.rootEl=rootEl;if(rootEl){this.context.registerInteractiveComponent(this,{el:rootEl,useEventCenter:false,});}
else{this.context.unregisterInteractiveComponent(this);}};}
render(){let{options,dateEnv}=this.context;let{props}=this;let{startDate,todayRange,dateProfile}=props;let title=dateEnv.format(startDate,options.dayPopoverFormat);return(y(DayCellContainer,{elRef:this.handleRootEl,date:startDate,dateProfile:dateProfile,todayRange:todayRange},(InnerContent,renderProps,elAttrs)=>(y(Popover,{elRef:elAttrs.ref,id:props.id,title:title,extraClassNames:['fc-more-popover'].concat(elAttrs.className||[]),extraAttrs:elAttrs,parentEl:props.parentEl,alignmentEl:props.alignmentEl,alignGridTop:props.alignGridTop,onClose:props.onClose},hasCustomDayCellContent(options)&&(y(InnerContent,{elTag:"div",elClasses:['fc-more-popover-misc']})),props.children))));}
queryHit(positionLeft,positionTop,elWidth,elHeight){let{rootEl,props}=this;if(positionLeft>=0&&positionLeft<elWidth&&positionTop>=0&&positionTop<elHeight){return{dateProfile:props.dateProfile,dateSpan:Object.assign({allDay:!props.forceTimed,range:{start:props.startDate,end:props.endDate,}},props.extraDateSpan),dayEl:rootEl,rect:{left:0,top:0,right:elWidth,bottom:elHeight,},layer:1,};}
return null;}}
class MoreLinkContainer extends BaseComponent{constructor(){super(...arguments);this.state={isPopoverOpen:false,popoverId:getUniqueDomId(),};this.handleLinkEl=(linkEl)=>{this.linkEl=linkEl;if(this.props.elRef){setRef(this.props.elRef,linkEl);}};this.handleClick=(ev)=>{let{props,context}=this;let{moreLinkClick}=context.options;let date=computeRange(props).start;function buildPublicSeg(seg){let{def,instance,range}=seg.eventRange;return{event:new EventImpl(context,def,instance),start:context.dateEnv.toDate(range.start),end:context.dateEnv.toDate(range.end),isStart:seg.isStart,isEnd:seg.isEnd,};}
if(typeof moreLinkClick==='function'){moreLinkClick=moreLinkClick({date,allDay:Boolean(props.allDayDate),allSegs:props.allSegs.map(buildPublicSeg),hiddenSegs:props.hiddenSegs.map(buildPublicSeg),jsEvent:ev,view:context.viewApi,});}
if(!moreLinkClick||moreLinkClick==='popover'){this.setState({isPopoverOpen:true});}
else if(typeof moreLinkClick==='string'){context.calendarApi.zoomTo(date,moreLinkClick);}};this.handlePopoverClose=()=>{this.setState({isPopoverOpen:false});};}
render(){let{props,state}=this;return(y(ViewContextType.Consumer,null,(context)=>{let{viewApi,options,calendarApi}=context;let{moreLinkText}=options;let{moreCnt}=props;let range=computeRange(props);let text=typeof moreLinkText==='function'?moreLinkText.call(calendarApi,moreCnt):`+${moreCnt}${moreLinkText}`;let hint=formatWithOrdinals(options.moreLinkHint,[moreCnt],text);let renderProps={num:moreCnt,shortText:`+${moreCnt}`,text,view:viewApi,};return(y(_,null,Boolean(props.moreCnt)&&(y(ContentContainer,{elTag:props.elTag||'a',elRef:this.handleLinkEl,elClasses:[...(props.elClasses||[]),'fc-more-link',],elStyle:props.elStyle,elAttrs:Object.assign(Object.assign(Object.assign({},props.elAttrs),createAriaClickAttrs(this.handleClick)),{title:hint,'aria-expanded':state.isPopoverOpen,'aria-controls':state.isPopoverOpen?state.popoverId:''}),renderProps:renderProps,generatorName:"moreLinkContent",customGenerator:options.moreLinkContent,defaultGenerator:props.defaultGenerator||renderMoreLinkInner$1,classNameGenerator:options.moreLinkClassNames,didMount:options.moreLinkDidMount,willUnmount:options.moreLinkWillUnmount},props.children)),state.isPopoverOpen&&(y(MorePopover,{id:state.popoverId,startDate:range.start,endDate:range.end,dateProfile:props.dateProfile,todayRange:props.todayRange,extraDateSpan:props.extraDateSpan,parentEl:this.parentEl,alignmentEl:props.alignmentElRef?props.alignmentElRef.current:this.linkEl,alignGridTop:props.alignGridTop,forceTimed:props.forceTimed,onClose:this.handlePopoverClose},props.popoverContent()))));}));}
componentDidMount(){this.updateParentEl();}
componentDidUpdate(){this.updateParentEl();}
updateParentEl(){if(this.linkEl){this.parentEl=elementClosest(this.linkEl,'.fc-view-harness');}}}
function renderMoreLinkInner$1(props){return props.text;}
function computeRange(props){if(props.allDayDate){return{start:props.allDayDate,end:addDays(props.allDayDate,1),};}
let{hiddenSegs}=props;return{start:computeEarliestSegStart(hiddenSegs),end:computeLatestSegEnd(hiddenSegs),};}
function computeEarliestSegStart(segs){return segs.reduce(pickEarliestStart).eventRange.range.start;}
function pickEarliestStart(seg0,seg1){return seg0.eventRange.range.start<seg1.eventRange.range.start?seg0:seg1;}
function computeLatestSegEnd(segs){return segs.reduce(pickLatestEnd).eventRange.range.end;}
function pickLatestEnd(seg0,seg1){return seg0.eventRange.range.end>seg1.eventRange.range.end?seg0:seg1;}
class Store{constructor(){this.handlers=[];}
set(value){this.currentValue=value;for(let handler of this.handlers){handler(value);}}
subscribe(handler){this.handlers.push(handler);if(this.currentValue!==undefined){handler(this.currentValue);}}}
class CustomRenderingStore extends Store{constructor(){super(...arguments);this.map=new Map();}
handle(customRendering){const{map}=this;let updated=false;if(customRendering.isActive){map.set(customRendering.id,customRendering);updated=true;}
else if(map.has(customRendering.id)){map.delete(customRendering.id);updated=true;}
if(updated){this.set(map);}}}
var internal={__proto__:null,BASE_OPTION_DEFAULTS:BASE_OPTION_DEFAULTS,BaseComponent:BaseComponent,BgEvent:BgEvent,CalendarImpl:CalendarImpl,CalendarRoot:CalendarRoot,ContentContainer:ContentContainer,CustomRenderingStore:CustomRenderingStore,DateComponent:DateComponent,DateEnv:DateEnv,DateProfileGenerator:DateProfileGenerator,DayCellContainer:DayCellContainer,DayHeader:DayHeader,DaySeriesModel:DaySeriesModel,DayTableModel:DayTableModel,DelayedRunner:DelayedRunner,ElementDragging:ElementDragging,ElementScrollController:ElementScrollController,Emitter:Emitter,EventContainer:EventContainer,EventImpl:EventImpl,Interaction:Interaction,MoreLinkContainer:MoreLinkContainer,NamedTimeZoneImpl:NamedTimeZoneImpl,NowIndicatorContainer:NowIndicatorContainer,NowTimer:NowTimer,PositionCache:PositionCache,RefMap:RefMap,ScrollController:ScrollController,ScrollResponder:ScrollResponder,Scroller:Scroller,SegHierarchy:SegHierarchy,SimpleScrollGrid:SimpleScrollGrid,Slicer:Slicer,Splitter:Splitter,StandardEvent:StandardEvent,TableDateCell:TableDateCell,TableDowCell:TableDowCell,Theme:Theme,ViewContainer:ViewContainer,ViewContextType:ViewContextType,WeekNumberContainer:WeekNumberContainer,WindowScrollController:WindowScrollController,addDays:addDays,addDurations:addDurations,addMs:addMs,addWeeks:addWeeks,allowContextMenu:allowContextMenu,allowSelection:allowSelection,applyMutationToEventStore:applyMutationToEventStore,applyStyle:applyStyle,asCleanDays:asCleanDays,asRoughMinutes:asRoughMinutes,asRoughMs:asRoughMs,asRoughSeconds:asRoughSeconds,binarySearch:binarySearch,buildElAttrs:buildElAttrs,buildEntryKey:buildEntryKey,buildEventApis:buildEventApis,buildEventRangeKey:buildEventRangeKey,buildIsoString:buildIsoString,buildNavLinkAttrs:buildNavLinkAttrs,buildSegTimeText:buildSegTimeText,collectFromHash:collectFromHash,combineEventUis:combineEventUis,compareByFieldSpecs:compareByFieldSpecs,compareNumbers:compareNumbers,compareObjs:compareObjs,computeEarliestSegStart:computeEarliestSegStart,computeEdges:computeEdges,computeFallbackHeaderFormat:computeFallbackHeaderFormat,computeInnerRect:computeInnerRect,computeRect:computeRect,computeShrinkWidth:computeShrinkWidth,computeVisibleDayRange:computeVisibleDayRange,config:config,constrainPoint:constrainPoint,createDuration:createDuration,createEmptyEventStore:createEmptyEventStore,createEventInstance:createEventInstance,createEventUi:createEventUi,createFormatter:createFormatter,diffDates:diffDates,diffDayAndTime:diffDayAndTime,diffDays:diffDays,diffPoints:diffPoints,diffWeeks:diffWeeks,diffWholeDays:diffWholeDays,diffWholeWeeks:diffWholeWeeks,disableCursor:disableCursor,elementClosest:elementClosest,elementMatches:elementMatches,enableCursor:enableCursor,eventTupleToStore:eventTupleToStore,filterHash:filterHash,findDirectChildren:findDirectChildren,findElements:findElements,flexibleCompare:flexibleCompare,formatDayString:formatDayString,formatIsoMonthStr:formatIsoMonthStr,formatIsoTimeString:formatIsoTimeString,getAllowYScrolling:getAllowYScrolling,getCanVGrowWithinCell:getCanVGrowWithinCell,getClippingParents:getClippingParents,getDateMeta:getDateMeta,getDayClassNames:getDayClassNames,getDefaultEventEnd:getDefaultEventEnd,getElSeg:getElSeg,getEntrySpanEnd:getEntrySpanEnd,getEventTargetViaRoot:getEventTargetViaRoot,getIsRtlScrollbarOnLeft:getIsRtlScrollbarOnLeft,getRectCenter:getRectCenter,getRelevantEvents:getRelevantEvents,getScrollGridClassNames:getScrollGridClassNames,getScrollbarWidths:getScrollbarWidths,getSectionClassNames:getSectionClassNames,getSectionHasLiquidHeight:getSectionHasLiquidHeight,getSegAnchorAttrs:getSegAnchorAttrs,getSegMeta:getSegMeta,getSlotClassNames:getSlotClassNames,getStickyFooterScrollbar:getStickyFooterScrollbar,getStickyHeaderDates:getStickyHeaderDates,getUniqueDomId:getUniqueDomId,greatestDurationDenominator:greatestDurationDenominator,groupIntersectingEntries:groupIntersectingEntries,guid:guid,hasBgRendering:hasBgRendering,hasCustomDayCellContent:hasCustomDayCellContent,hasShrinkWidth:hasShrinkWidth,identity:identity,injectStyles:injectStyles,interactionSettingsStore:interactionSettingsStore,interactionSettingsToStore:interactionSettingsToStore,intersectRanges:intersectRanges,intersectRects:intersectRects,intersectSpans:intersectSpans,isArraysEqual:isArraysEqual,isColPropsEqual:isColPropsEqual,isDateSelectionValid:isDateSelectionValid,isDateSpansEqual:isDateSpansEqual,isInt:isInt,isInteractionValid:isInteractionValid,isMultiDayRange:isMultiDayRange,isPropsEqual:isPropsEqual,isPropsValid:isPropsValid,isValidDate:isValidDate$1,mapHash:mapHash,memoize:memoize,memoizeArraylike:memoizeArraylike,memoizeHashlike:memoizeHashlike,memoizeObjArg:memoizeObjArg,mergeEventStores:mergeEventStores,multiplyDuration:multiplyDuration,padStart:padStart,parseBusinessHours:parseBusinessHours,parseClassNames:parseClassNames,parseDragMeta:parseDragMeta,parseEventDef:parseEventDef,parseFieldSpecs:parseFieldSpecs,parseMarker:parse,pointInsideRect:pointInsideRect,preventContextMenu:preventContextMenu,preventDefault:preventDefault,preventSelection:preventSelection,rangeContainsMarker:rangeContainsMarker,rangeContainsRange:rangeContainsRange,rangesEqual:rangesEqual,rangesIntersect:rangesIntersect,refineEventDef:refineEventDef,refineProps:refineProps,removeElement:removeElement,removeExact:removeExact,renderChunkContent:renderChunkContent,renderFill:renderFill,renderMicroColGroup:renderMicroColGroup,renderScrollShim:renderScrollShim,requestJson:requestJson,sanitizeShrinkWidth:sanitizeShrinkWidth,setRef:setRef,sliceEventStore:sliceEventStore,sortEventSegs:sortEventSegs,startOfDay:startOfDay,translateRect:translateRect,triggerDateSelect:triggerDateSelect,unpromisify:unpromisify,whenTransitionDone:whenTransitionDone,wholeDivideDurations:wholeDivideDurations};const globalLocales=[];const MINIMAL_RAW_EN_LOCALE={code:'en',week:{dow:0,doy:4,},direction:'ltr',buttonText:{prev:'prev',next:'next',prevYear:'prev year',nextYear:'next year',year:'year',today:'today',month:'month',week:'week',day:'day',list:'list',},weekText:'W',weekTextLong:'Week',closeHint:'Close',timeHint:'Time',eventHint:'Event',allDayText:'all-day',moreLinkText:'more',noEventsText:'No events to display',};const RAW_EN_LOCALE=Object.assign(Object.assign({},MINIMAL_RAW_EN_LOCALE),{buttonHints:{prev:'Previous $0',next:'Next $0',today(buttonText,unit){return(unit==='day')?'Today':`This ${buttonText}`;},},viewHint:'$0 view',navLinkHint:'Go to $0',moreLinkHint(eventCnt){return`Show ${eventCnt}more event${eventCnt===1?'':'s'}`;}});function organizeRawLocales(explicitRawLocales){let defaultCode=explicitRawLocales.length>0?explicitRawLocales[0].code:'en';let allRawLocales=globalLocales.concat(explicitRawLocales);let rawLocaleMap={en:RAW_EN_LOCALE,};for(let rawLocale of allRawLocales){rawLocaleMap[rawLocale.code]=rawLocale;}
return{map:rawLocaleMap,defaultCode,};}
function buildLocale(inputSingular,available){if(typeof inputSingular==='object'&&!Array.isArray(inputSingular)){return parseLocale(inputSingular.code,[inputSingular.code],inputSingular);}
return queryLocale(inputSingular,available);}
function queryLocale(codeArg,available){let codes=[].concat(codeArg||[]);let raw=queryRawLocale(codes,available)||RAW_EN_LOCALE;return parseLocale(codeArg,codes,raw);}
function queryRawLocale(codes,available){for(let i=0;i<codes.length;i+=1){let parts=codes[i].toLocaleLowerCase().split('-');for(let j=parts.length;j>0;j-=1){let simpleId=parts.slice(0,j).join('-');if(available[simpleId]){return available[simpleId];}}}
return null;}
function parseLocale(codeArg,codes,raw){let merged=mergeProps([MINIMAL_RAW_EN_LOCALE,raw],['buttonText']);delete merged.code;let{week}=merged;delete merged.week;return{codeArg,codes,week,simpleNumberFormat:new Intl.NumberFormat(codeArg),options:merged,};}
function createPlugin(input){return{id:guid(),name:input.name,premiumReleaseDate:input.premiumReleaseDate?new Date(input.premiumReleaseDate):undefined,deps:input.deps||[],reducers:input.reducers||[],isLoadingFuncs:input.isLoadingFuncs||[],contextInit:[].concat(input.contextInit||[]),eventRefiners:input.eventRefiners||{},eventDefMemberAdders:input.eventDefMemberAdders||[],eventSourceRefiners:input.eventSourceRefiners||{},isDraggableTransformers:input.isDraggableTransformers||[],eventDragMutationMassagers:input.eventDragMutationMassagers||[],eventDefMutationAppliers:input.eventDefMutationAppliers||[],dateSelectionTransformers:input.dateSelectionTransformers||[],datePointTransforms:input.datePointTransforms||[],dateSpanTransforms:input.dateSpanTransforms||[],views:input.views||{},viewPropsTransformers:input.viewPropsTransformers||[],isPropsValid:input.isPropsValid||null,externalDefTransforms:input.externalDefTransforms||[],viewContainerAppends:input.viewContainerAppends||[],eventDropTransformers:input.eventDropTransformers||[],componentInteractions:input.componentInteractions||[],calendarInteractions:input.calendarInteractions||[],themeClasses:input.themeClasses||{},eventSourceDefs:input.eventSourceDefs||[],cmdFormatter:input.cmdFormatter,recurringTypes:input.recurringTypes||[],namedTimeZonedImpl:input.namedTimeZonedImpl,initialView:input.initialView||'',elementDraggingImpl:input.elementDraggingImpl,optionChangeHandlers:input.optionChangeHandlers||{},scrollGridImpl:input.scrollGridImpl||null,listenerRefiners:input.listenerRefiners||{},optionRefiners:input.optionRefiners||{},propSetHandlers:input.propSetHandlers||{},};}
function buildPluginHooks(pluginDefs,globalDefs){let currentPluginIds={};let hooks={premiumReleaseDate:undefined,reducers:[],isLoadingFuncs:[],contextInit:[],eventRefiners:{},eventDefMemberAdders:[],eventSourceRefiners:{},isDraggableTransformers:[],eventDragMutationMassagers:[],eventDefMutationAppliers:[],dateSelectionTransformers:[],datePointTransforms:[],dateSpanTransforms:[],views:{},viewPropsTransformers:[],isPropsValid:null,externalDefTransforms:[],viewContainerAppends:[],eventDropTransformers:[],componentInteractions:[],calendarInteractions:[],themeClasses:{},eventSourceDefs:[],cmdFormatter:null,recurringTypes:[],namedTimeZonedImpl:null,initialView:'',elementDraggingImpl:null,optionChangeHandlers:{},scrollGridImpl:null,listenerRefiners:{},optionRefiners:{},propSetHandlers:{},};function addDefs(defs){for(let def of defs){const pluginName=def.name;const currentId=currentPluginIds[pluginName];if(currentId===undefined){currentPluginIds[pluginName]=def.id;addDefs(def.deps);hooks=combineHooks(hooks,def);}
else if(currentId!==def.id){console.warn(`Duplicate plugin'${pluginName}'`);}}}
if(pluginDefs){addDefs(pluginDefs);}
addDefs(globalDefs);return hooks;}
function buildBuildPluginHooks(){let currentOverrideDefs=[];let currentGlobalDefs=[];let currentHooks;return(overrideDefs,globalDefs)=>{if(!currentHooks||!isArraysEqual(overrideDefs,currentOverrideDefs)||!isArraysEqual(globalDefs,currentGlobalDefs)){currentHooks=buildPluginHooks(overrideDefs,globalDefs);}
currentOverrideDefs=overrideDefs;currentGlobalDefs=globalDefs;return currentHooks;};}
function combineHooks(hooks0,hooks1){return{premiumReleaseDate:compareOptionalDates(hooks0.premiumReleaseDate,hooks1.premiumReleaseDate),reducers:hooks0.reducers.concat(hooks1.reducers),isLoadingFuncs:hooks0.isLoadingFuncs.concat(hooks1.isLoadingFuncs),contextInit:hooks0.contextInit.concat(hooks1.contextInit),eventRefiners:Object.assign(Object.assign({},hooks0.eventRefiners),hooks1.eventRefiners),eventDefMemberAdders:hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),eventSourceRefiners:Object.assign(Object.assign({},hooks0.eventSourceRefiners),hooks1.eventSourceRefiners),isDraggableTransformers:hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),eventDragMutationMassagers:hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),eventDefMutationAppliers:hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),dateSelectionTransformers:hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),datePointTransforms:hooks0.datePointTransforms.concat(hooks1.datePointTransforms),dateSpanTransforms:hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),views:Object.assign(Object.assign({},hooks0.views),hooks1.views),viewPropsTransformers:hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),isPropsValid:hooks1.isPropsValid||hooks0.isPropsValid,externalDefTransforms:hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),viewContainerAppends:hooks0.viewContainerAppends.concat(hooks1.viewContainerAppends),eventDropTransformers:hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),calendarInteractions:hooks0.calendarInteractions.concat(hooks1.calendarInteractions),componentInteractions:hooks0.componentInteractions.concat(hooks1.componentInteractions),themeClasses:Object.assign(Object.assign({},hooks0.themeClasses),hooks1.themeClasses),eventSourceDefs:hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),cmdFormatter:hooks1.cmdFormatter||hooks0.cmdFormatter,recurringTypes:hooks0.recurringTypes.concat(hooks1.recurringTypes),namedTimeZonedImpl:hooks1.namedTimeZonedImpl||hooks0.namedTimeZonedImpl,initialView:hooks0.initialView||hooks1.initialView,elementDraggingImpl:hooks0.elementDraggingImpl||hooks1.elementDraggingImpl,optionChangeHandlers:Object.assign(Object.assign({},hooks0.optionChangeHandlers),hooks1.optionChangeHandlers),scrollGridImpl:hooks1.scrollGridImpl||hooks0.scrollGridImpl,listenerRefiners:Object.assign(Object.assign({},hooks0.listenerRefiners),hooks1.listenerRefiners),optionRefiners:Object.assign(Object.assign({},hooks0.optionRefiners),hooks1.optionRefiners),propSetHandlers:Object.assign(Object.assign({},hooks0.propSetHandlers),hooks1.propSetHandlers),};}
function compareOptionalDates(date0,date1){if(date0===undefined){return date1;}
if(date1===undefined){return date0;}
return new Date(Math.max(date0.valueOf(),date1.valueOf()));}
class StandardTheme extends Theme{}
StandardTheme.prototype.classes={root:'fc-theme-standard',tableCellShaded:'fc-cell-shaded',buttonGroup:'fc-button-group',button:'fc-button fc-button-primary',buttonActive:'fc-button-active',};StandardTheme.prototype.baseIconClass='fc-icon';StandardTheme.prototype.iconClasses={close:'fc-icon-x',prev:' fc-icon-chevron-left',next:' fc-icon-chevron-right',prevYear:'fc-icon-chevrons-left',nextYear:'fc-icon-chevrons-right',};StandardTheme.prototype.rtlIconClasses={prev:'fc-icon-chevron-right',next:'fc-icon-chevron-left',prevYear:'fc-icon-chevrons-right',nextYear:'fc-icon-chevrons-left',};StandardTheme.prototype.iconOverrideOption='buttonIcons';StandardTheme.prototype.iconOverrideCustomButtonOption='icon';StandardTheme.prototype.iconOverridePrefix='fc-icon-';function compileViewDefs(defaultConfigs,overrideConfigs){let hash={};let viewType;for(viewType in defaultConfigs){ensureViewDef(viewType,hash,defaultConfigs,overrideConfigs);}
for(viewType in overrideConfigs){ensureViewDef(viewType,hash,defaultConfigs,overrideConfigs);}
return hash;}
function ensureViewDef(viewType,hash,defaultConfigs,overrideConfigs){if(hash[viewType]){return hash[viewType];}
let viewDef=buildViewDef(viewType,hash,defaultConfigs,overrideConfigs);if(viewDef){hash[viewType]=viewDef;}
return viewDef;}
function buildViewDef(viewType,hash,defaultConfigs,overrideConfigs){let defaultConfig=defaultConfigs[viewType];let overrideConfig=overrideConfigs[viewType];let queryProp=(name)=>((defaultConfig&&defaultConfig[name]!==null)?defaultConfig[name]:((overrideConfig&&overrideConfig[name]!==null)?overrideConfig[name]:null));let theComponent=queryProp('component');let superType=queryProp('superType');let superDef=null;if(superType){if(superType===viewType){throw new Error('Can\'t have a custom view type that references itself');}
superDef=ensureViewDef(superType,hash,defaultConfigs,overrideConfigs);}
if(!theComponent&&superDef){theComponent=superDef.component;}
if(!theComponent){return null;}
return{type:viewType,component:theComponent,defaults:Object.assign(Object.assign({},(superDef?superDef.defaults:{})),(defaultConfig?defaultConfig.rawOptions:{})),overrides:Object.assign(Object.assign({},(superDef?superDef.overrides:{})),(overrideConfig?overrideConfig.rawOptions:{})),};}
function parseViewConfigs(inputs){return mapHash(inputs,parseViewConfig);}
function parseViewConfig(input){let rawOptions=typeof input==='function'?{component:input}:input;let{component}=rawOptions;if(rawOptions.content){component=createViewHookComponent(rawOptions);}
else if(component&&!(component.prototype instanceof BaseComponent)){component=createViewHookComponent(Object.assign(Object.assign({},rawOptions),{content:component}));}
return{superType:rawOptions.type,component:component,rawOptions,};}
function createViewHookComponent(options){return(viewProps)=>(y(ViewContextType.Consumer,null,(context)=>(y(ContentContainer,{elTag:"div",elClasses:buildViewClassNames(context.viewSpec),renderProps:Object.assign(Object.assign({},viewProps),{nextDayThreshold:context.options.nextDayThreshold}),generatorName:undefined,customGenerator:options.content,classNameGenerator:options.classNames,didMount:options.didMount,willUnmount:options.willUnmount}))));}
function buildViewSpecs(defaultInputs,optionOverrides,dynamicOptionOverrides,localeDefaults){let defaultConfigs=parseViewConfigs(defaultInputs);let overrideConfigs=parseViewConfigs(optionOverrides.views);let viewDefs=compileViewDefs(defaultConfigs,overrideConfigs);return mapHash(viewDefs,(viewDef)=>buildViewSpec(viewDef,overrideConfigs,optionOverrides,dynamicOptionOverrides,localeDefaults));}
function buildViewSpec(viewDef,overrideConfigs,optionOverrides,dynamicOptionOverrides,localeDefaults){let durationInput=viewDef.overrides.duration||viewDef.defaults.duration||dynamicOptionOverrides.duration||optionOverrides.duration;let duration=null;let durationUnit='';let singleUnit='';let singleUnitOverrides={};if(durationInput){duration=createDurationCached(durationInput);if(duration){let denom=greatestDurationDenominator(duration);durationUnit=denom.unit;if(denom.value===1){singleUnit=durationUnit;singleUnitOverrides=overrideConfigs[durationUnit]?overrideConfigs[durationUnit].rawOptions:{};}}}
let queryButtonText=(optionsSubset)=>{let buttonTextMap=optionsSubset.buttonText||{};let buttonTextKey=viewDef.defaults.buttonTextKey;if(buttonTextKey!=null&&buttonTextMap[buttonTextKey]!=null){return buttonTextMap[buttonTextKey];}
if(buttonTextMap[viewDef.type]!=null){return buttonTextMap[viewDef.type];}
if(buttonTextMap[singleUnit]!=null){return buttonTextMap[singleUnit];}
return null;};let queryButtonTitle=(optionsSubset)=>{let buttonHints=optionsSubset.buttonHints||{};let buttonKey=viewDef.defaults.buttonTextKey;if(buttonKey!=null&&buttonHints[buttonKey]!=null){return buttonHints[buttonKey];}
if(buttonHints[viewDef.type]!=null){return buttonHints[viewDef.type];}
if(buttonHints[singleUnit]!=null){return buttonHints[singleUnit];}
return null;};return{type:viewDef.type,component:viewDef.component,duration,durationUnit,singleUnit,optionDefaults:viewDef.defaults,optionOverrides:Object.assign(Object.assign({},singleUnitOverrides),viewDef.overrides),buttonTextOverride:queryButtonText(dynamicOptionOverrides)||queryButtonText(optionOverrides)||viewDef.overrides.buttonText,buttonTextDefault:queryButtonText(localeDefaults)||viewDef.defaults.buttonText||queryButtonText(BASE_OPTION_DEFAULTS)||viewDef.type,buttonTitleOverride:queryButtonTitle(dynamicOptionOverrides)||queryButtonTitle(optionOverrides)||viewDef.overrides.buttonHint,buttonTitleDefault:queryButtonTitle(localeDefaults)||viewDef.defaults.buttonHint||queryButtonTitle(BASE_OPTION_DEFAULTS),};}
let durationInputMap={};function createDurationCached(durationInput){let json=JSON.stringify(durationInput);let res=durationInputMap[json];if(res===undefined){res=createDuration(durationInput);durationInputMap[json]=res;}
return res;}
function reduceViewType(viewType,action){switch(action.type){case'CHANGE_VIEW_TYPE':viewType=action.viewType;}
return viewType;}
function reduceDynamicOptionOverrides(dynamicOptionOverrides,action){switch(action.type){case'SET_OPTION':return Object.assign(Object.assign({},dynamicOptionOverrides),{[action.optionName]:action.rawOptionValue});default:return dynamicOptionOverrides;}}
function reduceDateProfile(currentDateProfile,action,currentDate,dateProfileGenerator){let dp;switch(action.type){case'CHANGE_VIEW_TYPE':return dateProfileGenerator.build(action.dateMarker||currentDate);case'CHANGE_DATE':return dateProfileGenerator.build(action.dateMarker);case'PREV':dp=dateProfileGenerator.buildPrev(currentDateProfile,currentDate);if(dp.isValid){return dp;}
break;case'NEXT':dp=dateProfileGenerator.buildNext(currentDateProfile,currentDate);if(dp.isValid){return dp;}
break;}
return currentDateProfile;}
function initEventSources(calendarOptions,dateProfile,context){let activeRange=dateProfile?dateProfile.activeRange:null;return addSources({},parseInitialSources(calendarOptions,context),activeRange,context);}
function reduceEventSources(eventSources,action,dateProfile,context){let activeRange=dateProfile?dateProfile.activeRange:null;switch(action.type){case'ADD_EVENT_SOURCES':return addSources(eventSources,action.sources,activeRange,context);case'REMOVE_EVENT_SOURCE':return removeSource(eventSources,action.sourceId);case'PREV':case'NEXT':case'CHANGE_DATE':case'CHANGE_VIEW_TYPE':if(dateProfile){return fetchDirtySources(eventSources,activeRange,context);}
return eventSources;case'FETCH_EVENT_SOURCES':return fetchSourcesByIds(eventSources,action.sourceIds?arrayToHash(action.sourceIds):excludeStaticSources(eventSources,context),activeRange,action.isRefetch||false,context);case'RECEIVE_EVENTS':case'RECEIVE_EVENT_ERROR':return receiveResponse$1(eventSources,action.sourceId,action.fetchId,action.fetchRange);case'REMOVE_ALL_EVENT_SOURCES':return{};default:return eventSources;}}
function reduceEventSourcesNewTimeZone(eventSources,dateProfile,context){let activeRange=dateProfile?dateProfile.activeRange:null;return fetchSourcesByIds(eventSources,excludeStaticSources(eventSources,context),activeRange,true,context);}
function computeEventSourcesLoading(eventSources){for(let sourceId in eventSources){if(eventSources[sourceId].isFetching){return true;}}
return false;}
function addSources(eventSourceHash,sources,fetchRange,context){let hash={};for(let source of sources){hash[source.sourceId]=source;}
if(fetchRange){hash=fetchDirtySources(hash,fetchRange,context);}
return Object.assign(Object.assign({},eventSourceHash),hash);}
function removeSource(eventSourceHash,sourceId){return filterHash(eventSourceHash,(eventSource)=>eventSource.sourceId!==sourceId);}
function fetchDirtySources(sourceHash,fetchRange,context){return fetchSourcesByIds(sourceHash,filterHash(sourceHash,(eventSource)=>isSourceDirty(eventSource,fetchRange,context)),fetchRange,false,context);}
function isSourceDirty(eventSource,fetchRange,context){if(!doesSourceNeedRange(eventSource,context)){return!eventSource.latestFetchId;}
return!context.options.lazyFetching||!eventSource.fetchRange||eventSource.isFetching||fetchRange.start<eventSource.fetchRange.start||fetchRange.end>eventSource.fetchRange.end;}
function fetchSourcesByIds(prevSources,sourceIdHash,fetchRange,isRefetch,context){let nextSources={};for(let sourceId in prevSources){let source=prevSources[sourceId];if(sourceIdHash[sourceId]){nextSources[sourceId]=fetchSource$1(source,fetchRange,isRefetch,context);}
else{nextSources[sourceId]=source;}}
return nextSources;}
function fetchSource$1(eventSource,fetchRange,isRefetch,context){let{options,calendarApi}=context;let sourceDef=context.pluginHooks.eventSourceDefs[eventSource.sourceDefId];let fetchId=guid();sourceDef.fetch({eventSource,range:fetchRange,isRefetch,context,},(res)=>{let{rawEvents}=res;if(options.eventSourceSuccess){rawEvents=options.eventSourceSuccess.call(calendarApi,rawEvents,res.response)||rawEvents;}
if(eventSource.success){rawEvents=eventSource.success.call(calendarApi,rawEvents,res.response)||rawEvents;}
context.dispatch({type:'RECEIVE_EVENTS',sourceId:eventSource.sourceId,fetchId,fetchRange,rawEvents,});},(error)=>{let errorHandled=false;if(options.eventSourceFailure){options.eventSourceFailure.call(calendarApi,error);errorHandled=true;}
if(eventSource.failure){eventSource.failure(error);errorHandled=true;}
if(!errorHandled){console.warn(error.message,error);}
context.dispatch({type:'RECEIVE_EVENT_ERROR',sourceId:eventSource.sourceId,fetchId,fetchRange,error,});});return Object.assign(Object.assign({},eventSource),{isFetching:true,latestFetchId:fetchId});}
function receiveResponse$1(sourceHash,sourceId,fetchId,fetchRange){let eventSource=sourceHash[sourceId];if(eventSource&&fetchId===eventSource.latestFetchId){return Object.assign(Object.assign({},sourceHash),{[sourceId]:Object.assign(Object.assign({},eventSource),{isFetching:false,fetchRange})});}
return sourceHash;}
function excludeStaticSources(eventSources,context){return filterHash(eventSources,(eventSource)=>doesSourceNeedRange(eventSource,context));}
function parseInitialSources(rawOptions,context){let refiners=buildEventSourceRefiners(context);let rawSources=[].concat(rawOptions.eventSources||[]);let sources=[];if(rawOptions.initialEvents){rawSources.unshift(rawOptions.initialEvents);}
if(rawOptions.events){rawSources.unshift(rawOptions.events);}
for(let rawSource of rawSources){let source=parseEventSource(rawSource,context,refiners);if(source){sources.push(source);}}
return sources;}
function doesSourceNeedRange(eventSource,context){let defs=context.pluginHooks.eventSourceDefs;return!defs[eventSource.sourceDefId].ignoreRange;}
function reduceDateSelection(currentSelection,action){switch(action.type){case'UNSELECT_DATES':return null;case'SELECT_DATES':return action.selection;default:return currentSelection;}}
function reduceSelectedEvent(currentInstanceId,action){switch(action.type){case'UNSELECT_EVENT':return'';case'SELECT_EVENT':return action.eventInstanceId;default:return currentInstanceId;}}
function reduceEventDrag(currentDrag,action){let newDrag;switch(action.type){case'UNSET_EVENT_DRAG':return null;case'SET_EVENT_DRAG':newDrag=action.state;return{affectedEvents:newDrag.affectedEvents,mutatedEvents:newDrag.mutatedEvents,isEvent:newDrag.isEvent,};default:return currentDrag;}}
function reduceEventResize(currentResize,action){let newResize;switch(action.type){case'UNSET_EVENT_RESIZE':return null;case'SET_EVENT_RESIZE':newResize=action.state;return{affectedEvents:newResize.affectedEvents,mutatedEvents:newResize.mutatedEvents,isEvent:newResize.isEvent,};default:return currentResize;}}
function parseToolbars(calendarOptions,calendarOptionOverrides,theme,viewSpecs,calendarApi){let header=calendarOptions.headerToolbar?parseToolbar(calendarOptions.headerToolbar,calendarOptions,calendarOptionOverrides,theme,viewSpecs,calendarApi):null;let footer=calendarOptions.footerToolbar?parseToolbar(calendarOptions.footerToolbar,calendarOptions,calendarOptionOverrides,theme,viewSpecs,calendarApi):null;return{header,footer};}
function parseToolbar(sectionStrHash,calendarOptions,calendarOptionOverrides,theme,viewSpecs,calendarApi){let sectionWidgets={};let viewsWithButtons=[];let hasTitle=false;for(let sectionName in sectionStrHash){let sectionStr=sectionStrHash[sectionName];let sectionRes=parseSection(sectionStr,calendarOptions,calendarOptionOverrides,theme,viewSpecs,calendarApi);sectionWidgets[sectionName]=sectionRes.widgets;viewsWithButtons.push(...sectionRes.viewsWithButtons);hasTitle=hasTitle||sectionRes.hasTitle;}
return{sectionWidgets,viewsWithButtons,hasTitle};}
function parseSection(sectionStr,calendarOptions,calendarOptionOverrides,theme,viewSpecs,calendarApi){let isRtl=calendarOptions.direction==='rtl';let calendarCustomButtons=calendarOptions.customButtons||{};let calendarButtonTextOverrides=calendarOptionOverrides.buttonText||{};let calendarButtonText=calendarOptions.buttonText||{};let calendarButtonHintOverrides=calendarOptionOverrides.buttonHints||{};let calendarButtonHints=calendarOptions.buttonHints||{};let sectionSubstrs=sectionStr?sectionStr.split(' '):[];let viewsWithButtons=[];let hasTitle=false;let widgets=sectionSubstrs.map((buttonGroupStr)=>(buttonGroupStr.split(',').map((buttonName)=>{if(buttonName==='title'){hasTitle=true;return{buttonName};}
let customButtonProps;let viewSpec;let buttonClick;let buttonIcon;let buttonText;let buttonHint;if((customButtonProps=calendarCustomButtons[buttonName])){buttonClick=(ev)=>{if(customButtonProps.click){customButtonProps.click.call(ev.target,ev,ev.target);}};(buttonIcon=theme.getCustomButtonIconClass(customButtonProps))||(buttonIcon=theme.getIconClass(buttonName,isRtl))||(buttonText=customButtonProps.text);buttonHint=customButtonProps.hint||customButtonProps.text;}
else if((viewSpec=viewSpecs[buttonName])){viewsWithButtons.push(buttonName);buttonClick=()=>{calendarApi.changeView(buttonName);};(buttonText=viewSpec.buttonTextOverride)||(buttonIcon=theme.getIconClass(buttonName,isRtl))||(buttonText=viewSpec.buttonTextDefault);let textFallback=viewSpec.buttonTextOverride||viewSpec.buttonTextDefault;buttonHint=formatWithOrdinals(viewSpec.buttonTitleOverride||viewSpec.buttonTitleDefault||calendarOptions.viewHint,[textFallback,buttonName],textFallback);}
else if(calendarApi[buttonName]){buttonClick=()=>{calendarApi[buttonName]();};(buttonText=calendarButtonTextOverrides[buttonName])||(buttonIcon=theme.getIconClass(buttonName,isRtl))||(buttonText=calendarButtonText[buttonName]);if(buttonName==='prevYear'||buttonName==='nextYear'){let prevOrNext=buttonName==='prevYear'?'prev':'next';buttonHint=formatWithOrdinals(calendarButtonHintOverrides[prevOrNext]||calendarButtonHints[prevOrNext],[calendarButtonText.year||'year','year',],calendarButtonText[buttonName]);}
else{buttonHint=(navUnit)=>formatWithOrdinals(calendarButtonHintOverrides[buttonName]||calendarButtonHints[buttonName],[calendarButtonText[navUnit]||navUnit,navUnit,],calendarButtonText[buttonName]);}}
return{buttonName,buttonClick,buttonIcon,buttonText,buttonHint};})));return{widgets,viewsWithButtons,hasTitle};}
class ViewImpl{constructor(type,getCurrentData,dateEnv){this.type=type;this.getCurrentData=getCurrentData;this.dateEnv=dateEnv;}
get calendar(){return this.getCurrentData().calendarApi;}
get title(){return this.getCurrentData().viewTitle;}
get activeStart(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start);}
get activeEnd(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end);}
get currentStart(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start);}
get currentEnd(){return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end);}
getOption(name){return this.getCurrentData().options[name];}}
let eventSourceDef$2={ignoreRange:true,parseMeta(refined){if(Array.isArray(refined.events)){return refined.events;}
return null;},fetch(arg,successCallback){successCallback({rawEvents:arg.eventSource.meta,});},};const arrayEventSourcePlugin=createPlugin({name:'array-event-source',eventSourceDefs:[eventSourceDef$2],});let eventSourceDef$1={parseMeta(refined){if(typeof refined.events==='function'){return refined.events;}
return null;},fetch(arg,successCallback,errorCallback){const{dateEnv}=arg.context;const func=arg.eventSource.meta;unpromisify(func.bind(null,buildRangeApiWithTimeZone(arg.range,dateEnv)),(rawEvents)=>successCallback({rawEvents}),errorCallback);},};const funcEventSourcePlugin=createPlugin({name:'func-event-source',eventSourceDefs:[eventSourceDef$1],});const JSON_FEED_EVENT_SOURCE_REFINERS={method:String,extraParams:identity,startParam:String,endParam:String,timeZoneParam:String,};let eventSourceDef={parseMeta(refined){if(refined.url&&(refined.format==='json'||!refined.format)){return{url:refined.url,format:'json',method:(refined.method||'GET').toUpperCase(),extraParams:refined.extraParams,startParam:refined.startParam,endParam:refined.endParam,timeZoneParam:refined.timeZoneParam,};}
return null;},fetch(arg,successCallback,errorCallback){const{meta}=arg.eventSource;const requestParams=buildRequestParams$1(meta,arg.range,arg.context);requestJson(meta.method,meta.url,requestParams).then(([rawEvents,response])=>{successCallback({rawEvents,response});},errorCallback);},};const jsonFeedEventSourcePlugin=createPlugin({name:'json-event-source',eventSourceRefiners:JSON_FEED_EVENT_SOURCE_REFINERS,eventSourceDefs:[eventSourceDef],});function buildRequestParams$1(meta,range,context){let{dateEnv,options}=context;let startParam;let endParam;let timeZoneParam;let customRequestParams;let params={};startParam=meta.startParam;if(startParam==null){startParam=options.startParam;}
endParam=meta.endParam;if(endParam==null){endParam=options.endParam;}
timeZoneParam=meta.timeZoneParam;if(timeZoneParam==null){timeZoneParam=options.timeZoneParam;}
if(typeof meta.extraParams==='function'){customRequestParams=meta.extraParams();}
else{customRequestParams=meta.extraParams||{};}
Object.assign(params,customRequestParams);params[startParam]=dateEnv.formatIso(range.start);params[endParam]=dateEnv.formatIso(range.end);if(dateEnv.timeZone!=='local'){params[timeZoneParam]=dateEnv.timeZone;}
return params;}
const SIMPLE_RECURRING_REFINERS={daysOfWeek:identity,startTime:createDuration,endTime:createDuration,duration:createDuration,startRecur:identity,endRecur:identity,};let recurring={parse(refined,dateEnv){if(refined.daysOfWeek||refined.startTime||refined.endTime||refined.startRecur||refined.endRecur){let recurringData={daysOfWeek:refined.daysOfWeek||null,startTime:refined.startTime||null,endTime:refined.endTime||null,startRecur:refined.startRecur?dateEnv.createMarker(refined.startRecur):null,endRecur:refined.endRecur?dateEnv.createMarker(refined.endRecur):null,};let duration;if(refined.duration){duration=refined.duration;}
if(!duration&&refined.startTime&&refined.endTime){duration=subtractDurations(refined.endTime,refined.startTime);}
return{allDayGuess:Boolean(!refined.startTime&&!refined.endTime),duration,typeData:recurringData,};}
return null;},expand(typeData,framingRange,dateEnv){let clippedFramingRange=intersectRanges(framingRange,{start:typeData.startRecur,end:typeData.endRecur});if(clippedFramingRange){return expandRanges(typeData.daysOfWeek,typeData.startTime,clippedFramingRange,dateEnv);}
return[];},};const simpleRecurringEventsPlugin=createPlugin({name:'simple-recurring-event',recurringTypes:[recurring],eventRefiners:SIMPLE_RECURRING_REFINERS,});function expandRanges(daysOfWeek,startTime,framingRange,dateEnv){let dowHash=daysOfWeek?arrayToHash(daysOfWeek):null;let dayMarker=startOfDay(framingRange.start);let endMarker=framingRange.end;let instanceStarts=[];while(dayMarker<endMarker){let instanceStart;if(!dowHash||dowHash[dayMarker.getUTCDay()]){if(startTime){instanceStart=dateEnv.add(dayMarker,startTime);}
else{instanceStart=dayMarker;}
instanceStarts.push(instanceStart);}
dayMarker=addDays(dayMarker,1);}
return instanceStarts;}
const changeHandlerPlugin=createPlugin({name:'change-handler',optionChangeHandlers:{events(events,context){handleEventSources([events],context);},eventSources:handleEventSources,},});function handleEventSources(inputs,context){let unfoundSources=hashValuesToArray(context.getCurrentData().eventSources);if(unfoundSources.length===1&&inputs.length===1&&Array.isArray(unfoundSources[0]._raw)&&Array.isArray(inputs[0])){context.dispatch({type:'RESET_RAW_EVENTS',sourceId:unfoundSources[0].sourceId,rawEvents:inputs[0],});return;}
let newInputs=[];for(let input of inputs){let inputFound=false;for(let i=0;i<unfoundSources.length;i+=1){if(unfoundSources[i]._raw===input){unfoundSources.splice(i,1);inputFound=true;break;}}
if(!inputFound){newInputs.push(input);}}
for(let unfoundSource of unfoundSources){context.dispatch({type:'REMOVE_EVENT_SOURCE',sourceId:unfoundSource.sourceId,});}
for(let newInput of newInputs){context.calendarApi.addEventSource(newInput);}}
function handleDateProfile(dateProfile,context){context.emitter.trigger('datesSet',Object.assign(Object.assign({},buildRangeApiWithTimeZone(dateProfile.activeRange,context.dateEnv)),{view:context.viewApi}));}
function handleEventStore(eventStore,context){let{emitter}=context;if(emitter.hasHandlers('eventsSet')){emitter.trigger('eventsSet',buildEventApis(eventStore,context));}}
const globalPlugins=[arrayEventSourcePlugin,funcEventSourcePlugin,jsonFeedEventSourcePlugin,simpleRecurringEventsPlugin,changeHandlerPlugin,createPlugin({name:'misc',isLoadingFuncs:[(state)=>computeEventSourcesLoading(state.eventSources),],propSetHandlers:{dateProfile:handleDateProfile,eventStore:handleEventStore,},}),];class TaskRunner{constructor(runTaskOption,drainedOption){this.runTaskOption=runTaskOption;this.drainedOption=drainedOption;this.queue=[];this.delayedRunner=new DelayedRunner(this.drain.bind(this));}
request(task,delay){this.queue.push(task);this.delayedRunner.request(delay);}
pause(scope){this.delayedRunner.pause(scope);}
resume(scope,force){this.delayedRunner.resume(scope,force);}
drain(){let{queue}=this;while(queue.length){let completedTasks=[];let task;while((task=queue.shift())){this.runTask(task);completedTasks.push(task);}
this.drained(completedTasks);}}
runTask(task){if(this.runTaskOption){this.runTaskOption(task);}}
drained(completedTasks){if(this.drainedOption){this.drainedOption(completedTasks);}}}
function buildTitle(dateProfile,viewOptions,dateEnv){let range;if(/^(year|month)$/.test(dateProfile.currentRangeUnit)){range=dateProfile.currentRange;}
else{range=dateProfile.activeRange;}
return dateEnv.formatRange(range.start,range.end,createFormatter(viewOptions.titleFormat||buildTitleFormat(dateProfile)),{isEndExclusive:dateProfile.isRangeAllDay,defaultSeparator:viewOptions.titleRangeSeparator,});}
function buildTitleFormat(dateProfile){let{currentRangeUnit}=dateProfile;if(currentRangeUnit==='year'){return{year:'numeric'};}
if(currentRangeUnit==='month'){return{year:'numeric',month:'long'};}
let days=diffWholeDays(dateProfile.currentRange.start,dateProfile.currentRange.end);if(days!==null&&days>1){return{year:'numeric',month:'short',day:'numeric'};}
return{year:'numeric',month:'long',day:'numeric'};}
class CalendarDataManager{constructor(props){this.computeCurrentViewData=memoize(this._computeCurrentViewData);this.organizeRawLocales=memoize(organizeRawLocales);this.buildLocale=memoize(buildLocale);this.buildPluginHooks=buildBuildPluginHooks();this.buildDateEnv=memoize(buildDateEnv$1);this.buildTheme=memoize(buildTheme);this.parseToolbars=memoize(parseToolbars);this.buildViewSpecs=memoize(buildViewSpecs);this.buildDateProfileGenerator=memoizeObjArg(buildDateProfileGenerator);this.buildViewApi=memoize(buildViewApi);this.buildViewUiProps=memoizeObjArg(buildViewUiProps);this.buildEventUiBySource=memoize(buildEventUiBySource,isPropsEqual);this.buildEventUiBases=memoize(buildEventUiBases);this.parseContextBusinessHours=memoizeObjArg(parseContextBusinessHours);this.buildTitle=memoize(buildTitle);this.emitter=new Emitter();this.actionRunner=new TaskRunner(this._handleAction.bind(this),this.updateData.bind(this));this.currentCalendarOptionsInput={};this.currentCalendarOptionsRefined={};this.currentViewOptionsInput={};this.currentViewOptionsRefined={};this.currentCalendarOptionsRefiners={};this.optionsForRefining=[];this.optionsForHandling=[];this.getCurrentData=()=>this.data;this.dispatch=(action)=>{this.actionRunner.request(action);};this.props=props;this.actionRunner.pause();let dynamicOptionOverrides={};let optionsData=this.computeOptionsData(props.optionOverrides,dynamicOptionOverrides,props.calendarApi);let currentViewType=optionsData.calendarOptions.initialView||optionsData.pluginHooks.initialView;let currentViewData=this.computeCurrentViewData(currentViewType,optionsData,props.optionOverrides,dynamicOptionOverrides);props.calendarApi.currentDataManager=this;this.emitter.setThisContext(props.calendarApi);this.emitter.setOptions(currentViewData.options);let currentDate=getInitialDate(optionsData.calendarOptions,optionsData.dateEnv);let dateProfile=currentViewData.dateProfileGenerator.build(currentDate);if(!rangeContainsMarker(dateProfile.activeRange,currentDate)){currentDate=dateProfile.currentRange.start;}
let calendarContext={dateEnv:optionsData.dateEnv,options:optionsData.calendarOptions,pluginHooks:optionsData.pluginHooks,calendarApi:props.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData,};for(let callback of optionsData.pluginHooks.contextInit){callback(calendarContext);}
let eventSources=initEventSources(optionsData.calendarOptions,dateProfile,calendarContext);let initialState={dynamicOptionOverrides,currentViewType,currentDate,dateProfile,businessHours:this.parseContextBusinessHours(calendarContext),eventSources,eventUiBases:{},eventStore:createEmptyEventStore(),renderableEventStore:createEmptyEventStore(),dateSelection:null,eventSelection:'',eventDrag:null,eventResize:null,selectionConfig:this.buildViewUiProps(calendarContext).selectionConfig,};let contextAndState=Object.assign(Object.assign({},calendarContext),initialState);for(let reducer of optionsData.pluginHooks.reducers){Object.assign(initialState,reducer(null,null,contextAndState));}
if(computeIsLoading(initialState,calendarContext)){this.emitter.trigger('loading',true);}
this.state=initialState;this.updateData();this.actionRunner.resume();}
resetOptions(optionOverrides,changedOptionNames){let{props}=this;if(changedOptionNames===undefined){props.optionOverrides=optionOverrides;}
else{props.optionOverrides=Object.assign(Object.assign({},(props.optionOverrides||{})),optionOverrides);this.optionsForRefining.push(...changedOptionNames);}
if(changedOptionNames===undefined||changedOptionNames.length){this.actionRunner.request({type:'NOTHING',});}}
_handleAction(action){let{props,state,emitter}=this;let dynamicOptionOverrides=reduceDynamicOptionOverrides(state.dynamicOptionOverrides,action);let optionsData=this.computeOptionsData(props.optionOverrides,dynamicOptionOverrides,props.calendarApi);let currentViewType=reduceViewType(state.currentViewType,action);let currentViewData=this.computeCurrentViewData(currentViewType,optionsData,props.optionOverrides,dynamicOptionOverrides);props.calendarApi.currentDataManager=this;emitter.setThisContext(props.calendarApi);emitter.setOptions(currentViewData.options);let calendarContext={dateEnv:optionsData.dateEnv,options:optionsData.calendarOptions,pluginHooks:optionsData.pluginHooks,calendarApi:props.calendarApi,dispatch:this.dispatch,emitter,getCurrentData:this.getCurrentData,};let{currentDate,dateProfile}=state;if(this.data&&this.data.dateProfileGenerator!==currentViewData.dateProfileGenerator){dateProfile=currentViewData.dateProfileGenerator.build(currentDate);}
currentDate=reduceCurrentDate(currentDate,action);dateProfile=reduceDateProfile(dateProfile,action,currentDate,currentViewData.dateProfileGenerator);if(action.type==='PREV'||action.type==='NEXT'||!rangeContainsMarker(dateProfile.currentRange,currentDate)){currentDate=dateProfile.currentRange.start;}
let eventSources=reduceEventSources(state.eventSources,action,dateProfile,calendarContext);let eventStore=reduceEventStore(state.eventStore,action,eventSources,dateProfile,calendarContext);let isEventsLoading=computeEventSourcesLoading(eventSources);let renderableEventStore=(isEventsLoading&&!currentViewData.options.progressiveEventRendering)?(state.renderableEventStore||eventStore):eventStore;let{eventUiSingleBase,selectionConfig}=this.buildViewUiProps(calendarContext);let eventUiBySource=this.buildEventUiBySource(eventSources);let eventUiBases=this.buildEventUiBases(renderableEventStore.defs,eventUiSingleBase,eventUiBySource);let newState={dynamicOptionOverrides,currentViewType,currentDate,dateProfile,eventSources,eventStore,renderableEventStore,selectionConfig,eventUiBases,businessHours:this.parseContextBusinessHours(calendarContext),dateSelection:reduceDateSelection(state.dateSelection,action),eventSelection:reduceSelectedEvent(state.eventSelection,action),eventDrag:reduceEventDrag(state.eventDrag,action),eventResize:reduceEventResize(state.eventResize,action),};let contextAndState=Object.assign(Object.assign({},calendarContext),newState);for(let reducer of optionsData.pluginHooks.reducers){Object.assign(newState,reducer(state,action,contextAndState));}
let wasLoading=computeIsLoading(state,calendarContext);let isLoading=computeIsLoading(newState,calendarContext);if(!wasLoading&&isLoading){emitter.trigger('loading',true);}
else if(wasLoading&&!isLoading){emitter.trigger('loading',false);}
this.state=newState;if(props.onAction){props.onAction(action);}}
updateData(){let{props,state}=this;let oldData=this.data;let optionsData=this.computeOptionsData(props.optionOverrides,state.dynamicOptionOverrides,props.calendarApi);let currentViewData=this.computeCurrentViewData(state.currentViewType,optionsData,props.optionOverrides,state.dynamicOptionOverrides);let data=this.data=Object.assign(Object.assign(Object.assign({viewTitle:this.buildTitle(state.dateProfile,currentViewData.options,optionsData.dateEnv),calendarApi:props.calendarApi,dispatch:this.dispatch,emitter:this.emitter,getCurrentData:this.getCurrentData},optionsData),currentViewData),state);let changeHandlers=optionsData.pluginHooks.optionChangeHandlers;let oldCalendarOptions=oldData&&oldData.calendarOptions;let newCalendarOptions=optionsData.calendarOptions;if(oldCalendarOptions&&oldCalendarOptions!==newCalendarOptions){if(oldCalendarOptions.timeZone!==newCalendarOptions.timeZone){state.eventSources=data.eventSources=reduceEventSourcesNewTimeZone(data.eventSources,state.dateProfile,data);state.eventStore=data.eventStore=rezoneEventStoreDates(data.eventStore,oldData.dateEnv,data.dateEnv);state.renderableEventStore=data.renderableEventStore=rezoneEventStoreDates(data.renderableEventStore,oldData.dateEnv,data.dateEnv);}
for(let optionName in changeHandlers){if(this.optionsForHandling.indexOf(optionName)!==-1||oldCalendarOptions[optionName]!==newCalendarOptions[optionName]){changeHandlers[optionName](newCalendarOptions[optionName],data);}}}
this.optionsForHandling=[];if(props.onData){props.onData(data);}}
computeOptionsData(optionOverrides,dynamicOptionOverrides,calendarApi){if(!this.optionsForRefining.length&&optionOverrides===this.stableOptionOverrides&&dynamicOptionOverrides===this.stableDynamicOptionOverrides){return this.stableCalendarOptionsData;}
let{refinedOptions,pluginHooks,localeDefaults,availableLocaleData,extra,}=this.processRawCalendarOptions(optionOverrides,dynamicOptionOverrides);warnUnknownOptions(extra);let dateEnv=this.buildDateEnv(refinedOptions.timeZone,refinedOptions.locale,refinedOptions.weekNumberCalculation,refinedOptions.firstDay,refinedOptions.weekText,pluginHooks,availableLocaleData,refinedOptions.defaultRangeSeparator);let viewSpecs=this.buildViewSpecs(pluginHooks.views,this.stableOptionOverrides,this.stableDynamicOptionOverrides,localeDefaults);let theme=this.buildTheme(refinedOptions,pluginHooks);let toolbarConfig=this.parseToolbars(refinedOptions,this.stableOptionOverrides,theme,viewSpecs,calendarApi);return this.stableCalendarOptionsData={calendarOptions:refinedOptions,pluginHooks,dateEnv,viewSpecs,theme,toolbarConfig,localeDefaults,availableRawLocales:availableLocaleData.map,};}
processRawCalendarOptions(optionOverrides,dynamicOptionOverrides){let{locales,locale}=mergeRawOptions([BASE_OPTION_DEFAULTS,optionOverrides,dynamicOptionOverrides,]);let availableLocaleData=this.organizeRawLocales(locales);let availableRawLocales=availableLocaleData.map;let localeDefaults=this.buildLocale(locale||availableLocaleData.defaultCode,availableRawLocales).options;let pluginHooks=this.buildPluginHooks(optionOverrides.plugins||[],globalPlugins);let refiners=this.currentCalendarOptionsRefiners=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},BASE_OPTION_REFINERS),CALENDAR_LISTENER_REFINERS),CALENDAR_OPTION_REFINERS),pluginHooks.listenerRefiners),pluginHooks.optionRefiners);let extra={};let raw=mergeRawOptions([BASE_OPTION_DEFAULTS,localeDefaults,optionOverrides,dynamicOptionOverrides,]);let refined={};let currentRaw=this.currentCalendarOptionsInput;let currentRefined=this.currentCalendarOptionsRefined;let anyChanges=false;for(let optionName in raw){if(this.optionsForRefining.indexOf(optionName)===-1&&(raw[optionName]===currentRaw[optionName]||(COMPLEX_OPTION_COMPARATORS[optionName]&&(optionName in currentRaw)&&COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName],raw[optionName])))){refined[optionName]=currentRefined[optionName];}
else if(refiners[optionName]){refined[optionName]=refiners[optionName](raw[optionName]);anyChanges=true;}
else{extra[optionName]=currentRaw[optionName];}}
if(anyChanges){this.currentCalendarOptionsInput=raw;this.currentCalendarOptionsRefined=refined;this.stableOptionOverrides=optionOverrides;this.stableDynamicOptionOverrides=dynamicOptionOverrides;}
this.optionsForHandling.push(...this.optionsForRefining);this.optionsForRefining=[];return{rawOptions:this.currentCalendarOptionsInput,refinedOptions:this.currentCalendarOptionsRefined,pluginHooks,availableLocaleData,localeDefaults,extra,};}
_computeCurrentViewData(viewType,optionsData,optionOverrides,dynamicOptionOverrides){let viewSpec=optionsData.viewSpecs[viewType];if(!viewSpec){throw new Error(`viewType"${viewType}"is not available.Please make sure youve loaded all neccessary plugins`);}
let{refinedOptions,extra}=this.processRawViewOptions(viewSpec,optionsData.pluginHooks,optionsData.localeDefaults,optionOverrides,dynamicOptionOverrides);warnUnknownOptions(extra);let dateProfileGenerator=this.buildDateProfileGenerator({dateProfileGeneratorClass:viewSpec.optionDefaults.dateProfileGeneratorClass,duration:viewSpec.duration,durationUnit:viewSpec.durationUnit,usesMinMaxTime:viewSpec.optionDefaults.usesMinMaxTime,dateEnv:optionsData.dateEnv,calendarApi:this.props.calendarApi,slotMinTime:refinedOptions.slotMinTime,slotMaxTime:refinedOptions.slotMaxTime,showNonCurrentDates:refinedOptions.showNonCurrentDates,dayCount:refinedOptions.dayCount,dateAlignment:refinedOptions.dateAlignment,dateIncrement:refinedOptions.dateIncrement,hiddenDays:refinedOptions.hiddenDays,weekends:refinedOptions.weekends,nowInput:refinedOptions.now,validRangeInput:refinedOptions.validRange,visibleRangeInput:refinedOptions.visibleRange,fixedWeekCount:refinedOptions.fixedWeekCount,});let viewApi=this.buildViewApi(viewType,this.getCurrentData,optionsData.dateEnv);return{viewSpec,options:refinedOptions,dateProfileGenerator,viewApi};}
processRawViewOptions(viewSpec,pluginHooks,localeDefaults,optionOverrides,dynamicOptionOverrides){let raw=mergeRawOptions([BASE_OPTION_DEFAULTS,viewSpec.optionDefaults,localeDefaults,optionOverrides,viewSpec.optionOverrides,dynamicOptionOverrides,]);let refiners=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},BASE_OPTION_REFINERS),CALENDAR_LISTENER_REFINERS),CALENDAR_OPTION_REFINERS),VIEW_OPTION_REFINERS),pluginHooks.listenerRefiners),pluginHooks.optionRefiners);let refined={};let currentRaw=this.currentViewOptionsInput;let currentRefined=this.currentViewOptionsRefined;let anyChanges=false;let extra={};for(let optionName in raw){if(raw[optionName]===currentRaw[optionName]||(COMPLEX_OPTION_COMPARATORS[optionName]&&COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName],currentRaw[optionName]))){refined[optionName]=currentRefined[optionName];}
else{if(raw[optionName]===this.currentCalendarOptionsInput[optionName]||(COMPLEX_OPTION_COMPARATORS[optionName]&&COMPLEX_OPTION_COMPARATORS[optionName](raw[optionName],this.currentCalendarOptionsInput[optionName]))){if(optionName in this.currentCalendarOptionsRefined){refined[optionName]=this.currentCalendarOptionsRefined[optionName];}}
else if(refiners[optionName]){refined[optionName]=refiners[optionName](raw[optionName]);}
else{extra[optionName]=raw[optionName];}
anyChanges=true;}}
if(anyChanges){this.currentViewOptionsInput=raw;this.currentViewOptionsRefined=refined;}
return{rawOptions:this.currentViewOptionsInput,refinedOptions:this.currentViewOptionsRefined,extra,};}}
function buildDateEnv$1(timeZone,explicitLocale,weekNumberCalculation,firstDay,weekText,pluginHooks,availableLocaleData,defaultSeparator){let locale=buildLocale(explicitLocale||availableLocaleData.defaultCode,availableLocaleData.map);return new DateEnv({calendarSystem:'gregory',timeZone,namedTimeZoneImpl:pluginHooks.namedTimeZonedImpl,locale,weekNumberCalculation,firstDay,weekText,cmdFormatter:pluginHooks.cmdFormatter,defaultSeparator,});}
function buildTheme(options,pluginHooks){let ThemeClass=pluginHooks.themeClasses[options.themeSystem]||StandardTheme;return new ThemeClass(options);}
function buildDateProfileGenerator(props){let DateProfileGeneratorClass=props.dateProfileGeneratorClass||DateProfileGenerator;return new DateProfileGeneratorClass(props);}
function buildViewApi(type,getCurrentData,dateEnv){return new ViewImpl(type,getCurrentData,dateEnv);}
function buildEventUiBySource(eventSources){return mapHash(eventSources,(eventSource)=>eventSource.ui);}
function buildEventUiBases(eventDefs,eventUiSingleBase,eventUiBySource){let eventUiBases={'':eventUiSingleBase};for(let defId in eventDefs){let def=eventDefs[defId];if(def.sourceId&&eventUiBySource[def.sourceId]){eventUiBases[defId]=eventUiBySource[def.sourceId];}}
return eventUiBases;}
function buildViewUiProps(calendarContext){let{options}=calendarContext;return{eventUiSingleBase:createEventUi({display:options.eventDisplay,editable:options.editable,startEditable:options.eventStartEditable,durationEditable:options.eventDurationEditable,constraint:options.eventConstraint,overlap:typeof options.eventOverlap==='boolean'?options.eventOverlap:undefined,allow:options.eventAllow,backgroundColor:options.eventBackgroundColor,borderColor:options.eventBorderColor,textColor:options.eventTextColor,color:options.eventColor,},calendarContext),selectionConfig:createEventUi({constraint:options.selectConstraint,overlap:typeof options.selectOverlap==='boolean'?options.selectOverlap:undefined,allow:options.selectAllow,},calendarContext),};}
function computeIsLoading(state,context){for(let isLoadingFunc of context.pluginHooks.isLoadingFuncs){if(isLoadingFunc(state)){return true;}}
return false;}
function parseContextBusinessHours(calendarContext){return parseBusinessHours(calendarContext.options.businessHours,calendarContext);}
function warnUnknownOptions(options,viewName){for(let optionName in options){console.warn(`Unknown option'${optionName}'`+
(viewName?`for view'${viewName}'`:''));}}
class ToolbarSection extends BaseComponent{render(){let children=this.props.widgetGroups.map((widgetGroup)=>this.renderWidgetGroup(widgetGroup));return y('div',{className:'fc-toolbar-chunk'},...children);}
renderWidgetGroup(widgetGroup){let{props}=this;let{theme}=this.context;let children=[];let isOnlyButtons=true;for(let widget of widgetGroup){let{buttonName,buttonClick,buttonText,buttonIcon,buttonHint}=widget;if(buttonName==='title'){isOnlyButtons=false;children.push(y("h2",{className:"fc-toolbar-title",id:props.titleId},props.title));}
else{let isPressed=buttonName===props.activeButton;let isDisabled=(!props.isTodayEnabled&&buttonName==='today')||(!props.isPrevEnabled&&buttonName==='prev')||(!props.isNextEnabled&&buttonName==='next');let buttonClasses=[`fc-${buttonName}-button`,theme.getClass('button')];if(isPressed){buttonClasses.push(theme.getClass('buttonActive'));}
children.push(y("button",{type:"button",title:typeof buttonHint==='function'?buttonHint(props.navUnit):buttonHint,disabled:isDisabled,"aria-pressed":isPressed,className:buttonClasses.join(' '),onClick:buttonClick},buttonText||(buttonIcon?y("span",{className:buttonIcon,role:"img"}):'')));}}
if(children.length>1){let groupClassName=(isOnlyButtons&&theme.getClass('buttonGroup'))||'';return y('div',{className:groupClassName},...children);}
return children[0];}}
class Toolbar extends BaseComponent{render(){let{model,extraClassName}=this.props;let forceLtr=false;let startContent;let endContent;let sectionWidgets=model.sectionWidgets;let centerContent=sectionWidgets.center;if(sectionWidgets.left){forceLtr=true;startContent=sectionWidgets.left;}
else{startContent=sectionWidgets.start;}
if(sectionWidgets.right){forceLtr=true;endContent=sectionWidgets.right;}
else{endContent=sectionWidgets.end;}
let classNames=[extraClassName||'','fc-toolbar',forceLtr?'fc-toolbar-ltr':'',];return(y("div",{className:classNames.join(' ')},this.renderSection('start',startContent||[]),this.renderSection('center',centerContent||[]),this.renderSection('end',endContent||[])));}
renderSection(key,widgetGroups){let{props}=this;return(y(ToolbarSection,{key:key,widgetGroups:widgetGroups,title:props.title,navUnit:props.navUnit,activeButton:props.activeButton,isTodayEnabled:props.isTodayEnabled,isPrevEnabled:props.isPrevEnabled,isNextEnabled:props.isNextEnabled,titleId:props.titleId}));}}
class ViewHarness extends BaseComponent{constructor(){super(...arguments);this.state={availableWidth:null,};this.handleEl=(el)=>{this.el=el;setRef(this.props.elRef,el);this.updateAvailableWidth();};this.handleResize=()=>{this.updateAvailableWidth();};}
render(){let{props,state}=this;let{aspectRatio}=props;let classNames=['fc-view-harness',(aspectRatio||props.liquid||props.height)?'fc-view-harness-active':'fc-view-harness-passive',];let height='';let paddingBottom='';if(aspectRatio){if(state.availableWidth!==null){height=state.availableWidth/aspectRatio;}
else{paddingBottom=`${(1/aspectRatio)*100}%`;}}
else{height=props.height||'';}
return(y("div",{"aria-labelledby":props.labeledById,ref:this.handleEl,className:classNames.join(' '),style:{height,paddingBottom}},props.children));}
componentDidMount(){this.context.addResizeHandler(this.handleResize);}
componentWillUnmount(){this.context.removeResizeHandler(this.handleResize);}
updateAvailableWidth(){if(this.el&&this.props.aspectRatio){this.setState({availableWidth:this.el.offsetWidth});}}}
class EventClicking extends Interaction{constructor(settings){super(settings);this.handleSegClick=(ev,segEl)=>{let{component}=this;let{context}=component;let seg=getElSeg(segEl);if(seg&&component.isValidSegDownEl(ev.target)){let hasUrlContainer=elementClosest(ev.target,'.fc-event-forced-url');let url=hasUrlContainer?hasUrlContainer.querySelector('a[href]').href:'';context.emitter.trigger('eventClick',{el:segEl,event:new EventImpl(component.context,seg.eventRange.def,seg.eventRange.instance),jsEvent:ev,view:context.viewApi,});if(url&&!ev.defaultPrevented){window.location.href=url;}}};this.destroy=listenBySelector(settings.el,'click','.fc-event',this.handleSegClick);}}
class EventHovering extends Interaction{constructor(settings){super(settings);this.handleEventElRemove=(el)=>{if(el===this.currentSegEl){this.handleSegLeave(null,this.currentSegEl);}};this.handleSegEnter=(ev,segEl)=>{if(getElSeg(segEl)){this.currentSegEl=segEl;this.triggerEvent('eventMouseEnter',ev,segEl);}};this.handleSegLeave=(ev,segEl)=>{if(this.currentSegEl){this.currentSegEl=null;this.triggerEvent('eventMouseLeave',ev,segEl);}};this.removeHoverListeners=listenToHoverBySelector(settings.el,'.fc-event',this.handleSegEnter,this.handleSegLeave);}
destroy(){this.removeHoverListeners();}
triggerEvent(publicEvName,ev,segEl){let{component}=this;let{context}=component;let seg=getElSeg(segEl);if(!ev||component.isValidSegDownEl(ev.target)){context.emitter.trigger(publicEvName,{el:segEl,event:new EventImpl(context,seg.eventRange.def,seg.eventRange.instance),jsEvent:ev,view:context.viewApi,});}}}
class CalendarContent extends PureComponent{constructor(){super(...arguments);this.buildViewContext=memoize(buildViewContext);this.buildViewPropTransformers=memoize(buildViewPropTransformers);this.buildToolbarProps=memoize(buildToolbarProps);this.headerRef=d();this.footerRef=d();this.interactionsStore={};this.state={viewLabelId:getUniqueDomId(),};this.registerInteractiveComponent=(component,settingsInput)=>{let settings=parseInteractionSettings(component,settingsInput);let DEFAULT_INTERACTIONS=[EventClicking,EventHovering,];let interactionClasses=DEFAULT_INTERACTIONS.concat(this.props.pluginHooks.componentInteractions);let interactions=interactionClasses.map((TheInteractionClass)=>new TheInteractionClass(settings));this.interactionsStore[component.uid]=interactions;interactionSettingsStore[component.uid]=settings;};this.unregisterInteractiveComponent=(component)=>{let listeners=this.interactionsStore[component.uid];if(listeners){for(let listener of listeners){listener.destroy();}
delete this.interactionsStore[component.uid];}
delete interactionSettingsStore[component.uid];};this.resizeRunner=new DelayedRunner(()=>{this.props.emitter.trigger('_resize',true);this.props.emitter.trigger('windowResize',{view:this.props.viewApi});});this.handleWindowResize=(ev)=>{let{options}=this.props;if(options.handleWindowResize&&ev.target===window){this.resizeRunner.request(options.windowResizeDelay);}};}
render(){let{props}=this;let{toolbarConfig,options}=props;let toolbarProps=this.buildToolbarProps(props.viewSpec,props.dateProfile,props.dateProfileGenerator,props.currentDate,getNow(props.options.now,props.dateEnv),props.viewTitle);let viewVGrow=false;let viewHeight='';let viewAspectRatio;if(props.isHeightAuto||props.forPrint){viewHeight='';}
else if(options.height!=null){viewVGrow=true;}
else if(options.contentHeight!=null){viewHeight=options.contentHeight;}
else{viewAspectRatio=Math.max(options.aspectRatio,0.5);}
let viewContext=this.buildViewContext(props.viewSpec,props.viewApi,props.options,props.dateProfileGenerator,props.dateEnv,props.theme,props.pluginHooks,props.dispatch,props.getCurrentData,props.emitter,props.calendarApi,this.registerInteractiveComponent,this.unregisterInteractiveComponent);let viewLabelId=(toolbarConfig.header&&toolbarConfig.header.hasTitle)?this.state.viewLabelId:undefined;return(y(ViewContextType.Provider,{value:viewContext},toolbarConfig.header&&(y(Toolbar,Object.assign({ref:this.headerRef,extraClassName:"fc-header-toolbar",model:toolbarConfig.header,titleId:viewLabelId},toolbarProps))),y(ViewHarness,{liquid:viewVGrow,height:viewHeight,aspectRatio:viewAspectRatio,labeledById:viewLabelId},this.renderView(props),this.buildAppendContent()),toolbarConfig.footer&&(y(Toolbar,Object.assign({ref:this.footerRef,extraClassName:"fc-footer-toolbar",model:toolbarConfig.footer,titleId:""},toolbarProps)))));}
componentDidMount(){let{props}=this;this.calendarInteractions=props.pluginHooks.calendarInteractions.map((CalendarInteractionClass)=>new CalendarInteractionClass(props));window.addEventListener('resize',this.handleWindowResize);let{propSetHandlers}=props.pluginHooks;for(let propName in propSetHandlers){propSetHandlers[propName](props[propName],props);}}
componentDidUpdate(prevProps){let{props}=this;let{propSetHandlers}=props.pluginHooks;for(let propName in propSetHandlers){if(props[propName]!==prevProps[propName]){propSetHandlers[propName](props[propName],props);}}}
componentWillUnmount(){window.removeEventListener('resize',this.handleWindowResize);this.resizeRunner.clear();for(let interaction of this.calendarInteractions){interaction.destroy();}
this.props.emitter.trigger('_unmount');}
buildAppendContent(){let{props}=this;let children=props.pluginHooks.viewContainerAppends.map((buildAppendContent)=>buildAppendContent(props));return y(_,{},...children);}
renderView(props){let{pluginHooks}=props;let{viewSpec}=props;let viewProps={dateProfile:props.dateProfile,businessHours:props.businessHours,eventStore:props.renderableEventStore,eventUiBases:props.eventUiBases,dateSelection:props.dateSelection,eventSelection:props.eventSelection,eventDrag:props.eventDrag,eventResize:props.eventResize,isHeightAuto:props.isHeightAuto,forPrint:props.forPrint,};let transformers=this.buildViewPropTransformers(pluginHooks.viewPropsTransformers);for(let transformer of transformers){Object.assign(viewProps,transformer.transform(viewProps,props));}
let ViewComponent=viewSpec.component;return(y(ViewComponent,Object.assign({},viewProps)));}}
function buildToolbarProps(viewSpec,dateProfile,dateProfileGenerator,currentDate,now,title){let todayInfo=dateProfileGenerator.build(now,undefined,false);let prevInfo=dateProfileGenerator.buildPrev(dateProfile,currentDate,false);let nextInfo=dateProfileGenerator.buildNext(dateProfile,currentDate,false);return{title,activeButton:viewSpec.type,navUnit:viewSpec.singleUnit,isTodayEnabled:todayInfo.isValid&&!rangeContainsMarker(dateProfile.currentRange,now),isPrevEnabled:prevInfo.isValid,isNextEnabled:nextInfo.isValid,};}
function buildViewPropTransformers(theClasses){return theClasses.map((TheClass)=>new TheClass());}
class Calendar extends CalendarImpl{constructor(el,optionOverrides={}){super();this.isRendering=false;this.isRendered=false;this.currentClassNames=[];this.customContentRenderId=0;this.handleAction=(action)=>{switch(action.type){case'SET_EVENT_DRAG':case'SET_EVENT_RESIZE':this.renderRunner.tryDrain();}};this.handleData=(data)=>{this.currentData=data;this.renderRunner.request(data.calendarOptions.rerenderDelay);};this.handleRenderRequest=()=>{if(this.isRendering){this.isRendered=true;let{currentData}=this;flushSync(()=>{D$1(y(CalendarRoot,{options:currentData.calendarOptions,theme:currentData.theme,emitter:currentData.emitter},(classNames,height,isHeightAuto,forPrint)=>{this.setClassNames(classNames);this.setHeight(height);return(y(RenderId.Provider,{value:this.customContentRenderId},y(CalendarContent,Object.assign({isHeightAuto:isHeightAuto,forPrint:forPrint},currentData))));}),this.el);});}
else if(this.isRendered){this.isRendered=false;D$1(null,this.el);this.setClassNames([]);this.setHeight('');}};ensureElHasStyles(el);this.el=el;this.renderRunner=new DelayedRunner(this.handleRenderRequest);new CalendarDataManager({optionOverrides,calendarApi:this,onAction:this.handleAction,onData:this.handleData,});}
render(){let wasRendering=this.isRendering;if(!wasRendering){this.isRendering=true;}
else{this.customContentRenderId+=1;}
this.renderRunner.request();if(wasRendering){this.updateSize();}}
destroy(){if(this.isRendering){this.isRendering=false;this.renderRunner.request();}}
updateSize(){flushSync(()=>{super.updateSize();});}
batchRendering(func){this.renderRunner.pause('batchRendering');func();this.renderRunner.resume('batchRendering');}
pauseRendering(){this.renderRunner.pause('pauseRendering');}
resumeRendering(){this.renderRunner.resume('pauseRendering',true);}
resetOptions(optionOverrides,changedOptionNames){this.currentDataManager.resetOptions(optionOverrides,changedOptionNames);}
setClassNames(classNames){if(!isArraysEqual(classNames,this.currentClassNames)){let{classList}=this.el;for(let className of this.currentClassNames){classList.remove(className);}
for(let className of classNames){classList.add(className);}
this.currentClassNames=classNames;}}
setHeight(height){applyStyleProp(this.el,'height',height);}}
function formatDate(dateInput,options={}){let dateEnv=buildDateEnv(options);let formatter=createFormatter(options);let dateMeta=dateEnv.createMarkerMeta(dateInput);if(!dateMeta){return'';}
return dateEnv.format(dateMeta.marker,formatter,{forcedTzo:dateMeta.forcedTzo,});}
function formatRange(startInput,endInput,options){let dateEnv=buildDateEnv(typeof options==='object'&&options?options:{});let formatter=createFormatter(options);let startMeta=dateEnv.createMarkerMeta(startInput);let endMeta=dateEnv.createMarkerMeta(endInput);if(!startMeta||!endMeta){return'';}
return dateEnv.formatRange(startMeta.marker,endMeta.marker,formatter,{forcedStartTzo:startMeta.forcedTzo,forcedEndTzo:endMeta.forcedTzo,isEndExclusive:options.isEndExclusive,defaultSeparator:BASE_OPTION_DEFAULTS.defaultRangeSeparator,});}
function buildDateEnv(settings){let locale=buildLocale(settings.locale||'en',organizeRawLocales([]).map);return new DateEnv(Object.assign(Object.assign({timeZone:BASE_OPTION_DEFAULTS.timeZone,calendarSystem:'gregory'},settings),{locale}));}
function sliceEvents(props,allDay){return sliceEventStore(props.eventStore,props.eventUiBases,props.dateProfile.activeRange,allDay?props.nextDayThreshold:null).fg;}
const version='6.1.14';config.touchMouseIgnoreWait=500;let ignoreMouseDepth=0;let listenerCnt=0;let isWindowTouchMoveCancelled=false;class PointerDragging{constructor(containerEl){this.subjectEl=null;this.selector='';this.handleSelector='';this.shouldIgnoreMove=false;this.shouldWatchScroll=true;this.isDragging=false;this.isTouchDragging=false;this.wasTouchScroll=false;this.handleMouseDown=(ev)=>{if(!this.shouldIgnoreMouse()&&isPrimaryMouseButton(ev)&&this.tryStart(ev)){let pev=this.createEventFromMouse(ev,true);this.emitter.trigger('pointerdown',pev);this.initScrollWatch(pev);if(!this.shouldIgnoreMove){document.addEventListener('mousemove',this.handleMouseMove);}
document.addEventListener('mouseup',this.handleMouseUp);}};this.handleMouseMove=(ev)=>{let pev=this.createEventFromMouse(ev);this.recordCoords(pev);this.emitter.trigger('pointermove',pev);};this.handleMouseUp=(ev)=>{document.removeEventListener('mousemove',this.handleMouseMove);document.removeEventListener('mouseup',this.handleMouseUp);this.emitter.trigger('pointerup',this.createEventFromMouse(ev));this.cleanup();};this.handleTouchStart=(ev)=>{if(this.tryStart(ev)){this.isTouchDragging=true;let pev=this.createEventFromTouch(ev,true);this.emitter.trigger('pointerdown',pev);this.initScrollWatch(pev);let targetEl=ev.target;if(!this.shouldIgnoreMove){targetEl.addEventListener('touchmove',this.handleTouchMove);}
targetEl.addEventListener('touchend',this.handleTouchEnd);targetEl.addEventListener('touchcancel',this.handleTouchEnd);window.addEventListener('scroll',this.handleTouchScroll,true);}};this.handleTouchMove=(ev)=>{let pev=this.createEventFromTouch(ev);this.recordCoords(pev);this.emitter.trigger('pointermove',pev);};this.handleTouchEnd=(ev)=>{if(this.isDragging){let targetEl=ev.target;targetEl.removeEventListener('touchmove',this.handleTouchMove);targetEl.removeEventListener('touchend',this.handleTouchEnd);targetEl.removeEventListener('touchcancel',this.handleTouchEnd);window.removeEventListener('scroll',this.handleTouchScroll,true);this.emitter.trigger('pointerup',this.createEventFromTouch(ev));this.cleanup();this.isTouchDragging=false;startIgnoringMouse();}};this.handleTouchScroll=()=>{this.wasTouchScroll=true;};this.handleScroll=(ev)=>{if(!this.shouldIgnoreMove){let pageX=(window.scrollX-this.prevScrollX)+this.prevPageX;let pageY=(window.scrollY-this.prevScrollY)+this.prevPageY;this.emitter.trigger('pointermove',{origEvent:ev,isTouch:this.isTouchDragging,subjectEl:this.subjectEl,pageX,pageY,deltaX:pageX-this.origPageX,deltaY:pageY-this.origPageY,});}};this.containerEl=containerEl;this.emitter=new Emitter();containerEl.addEventListener('mousedown',this.handleMouseDown);containerEl.addEventListener('touchstart',this.handleTouchStart,{passive:true});listenerCreated();}
destroy(){this.containerEl.removeEventListener('mousedown',this.handleMouseDown);this.containerEl.removeEventListener('touchstart',this.handleTouchStart,{passive:true});listenerDestroyed();}
tryStart(ev){let subjectEl=this.querySubjectEl(ev);let downEl=ev.target;if(subjectEl&&(!this.handleSelector||elementClosest(downEl,this.handleSelector))){this.subjectEl=subjectEl;this.isDragging=true;this.wasTouchScroll=false;return true;}
return false;}
cleanup(){isWindowTouchMoveCancelled=false;this.isDragging=false;this.subjectEl=null;this.destroyScrollWatch();}
querySubjectEl(ev){if(this.selector){return elementClosest(ev.target,this.selector);}
return this.containerEl;}
shouldIgnoreMouse(){return ignoreMouseDepth||this.isTouchDragging;}
cancelTouchScroll(){if(this.isDragging){isWindowTouchMoveCancelled=true;}}
initScrollWatch(ev){if(this.shouldWatchScroll){this.recordCoords(ev);window.addEventListener('scroll',this.handleScroll,true);}}
recordCoords(ev){if(this.shouldWatchScroll){this.prevPageX=ev.pageX;this.prevPageY=ev.pageY;this.prevScrollX=window.scrollX;this.prevScrollY=window.scrollY;}}
destroyScrollWatch(){if(this.shouldWatchScroll){window.removeEventListener('scroll',this.handleScroll,true);}}
createEventFromMouse(ev,isFirst){let deltaX=0;let deltaY=0;if(isFirst){this.origPageX=ev.pageX;this.origPageY=ev.pageY;}
else{deltaX=ev.pageX-this.origPageX;deltaY=ev.pageY-this.origPageY;}
return{origEvent:ev,isTouch:false,subjectEl:this.subjectEl,pageX:ev.pageX,pageY:ev.pageY,deltaX,deltaY,};}
createEventFromTouch(ev,isFirst){let touches=ev.touches;let pageX;let pageY;let deltaX=0;let deltaY=0;if(touches&&touches.length){pageX=touches[0].pageX;pageY=touches[0].pageY;}
else{pageX=ev.pageX;pageY=ev.pageY;}
if(isFirst){this.origPageX=pageX;this.origPageY=pageY;}
else{deltaX=pageX-this.origPageX;deltaY=pageY-this.origPageY;}
return{origEvent:ev,isTouch:true,subjectEl:this.subjectEl,pageX,pageY,deltaX,deltaY,};}}
function isPrimaryMouseButton(ev){return ev.button===0&&!ev.ctrlKey;}
function startIgnoringMouse(){ignoreMouseDepth+=1;setTimeout(()=>{ignoreMouseDepth-=1;},config.touchMouseIgnoreWait);}
function listenerCreated(){listenerCnt+=1;if(listenerCnt===1){window.addEventListener('touchmove',onWindowTouchMove,{passive:false});}}
function listenerDestroyed(){listenerCnt-=1;if(!listenerCnt){window.removeEventListener('touchmove',onWindowTouchMove,{passive:false});}}
function onWindowTouchMove(ev){if(isWindowTouchMoveCancelled){ev.preventDefault();}}
class ElementMirror{constructor(){this.isVisible=false;this.sourceEl=null;this.mirrorEl=null;this.sourceElRect=null;this.parentNode=document.body;this.zIndex=9999;this.revertDuration=0;}
start(sourceEl,pageX,pageY){this.sourceEl=sourceEl;this.sourceElRect=this.sourceEl.getBoundingClientRect();this.origScreenX=pageX-window.scrollX;this.origScreenY=pageY-window.scrollY;this.deltaX=0;this.deltaY=0;this.updateElPosition();}
handleMove(pageX,pageY){this.deltaX=(pageX-window.scrollX)-this.origScreenX;this.deltaY=(pageY-window.scrollY)-this.origScreenY;this.updateElPosition();}
setIsVisible(bool){if(bool){if(!this.isVisible){if(this.mirrorEl){this.mirrorEl.style.display='';}
this.isVisible=bool;this.updateElPosition();}}
else if(this.isVisible){if(this.mirrorEl){this.mirrorEl.style.display='none';}
this.isVisible=bool;}}
stop(needsRevertAnimation,callback){let done=()=>{this.cleanup();callback();};if(needsRevertAnimation&&this.mirrorEl&&this.isVisible&&this.revertDuration&&(this.deltaX||this.deltaY)){this.doRevertAnimation(done,this.revertDuration);}
else{setTimeout(done,0);}}
doRevertAnimation(callback,revertDuration){let mirrorEl=this.mirrorEl;let finalSourceElRect=this.sourceEl.getBoundingClientRect();mirrorEl.style.transition='top '+revertDuration+'ms,'+'left '+revertDuration+'ms';applyStyle(mirrorEl,{left:finalSourceElRect.left,top:finalSourceElRect.top,});whenTransitionDone(mirrorEl,()=>{mirrorEl.style.transition='';callback();});}
cleanup(){if(this.mirrorEl){removeElement(this.mirrorEl);this.mirrorEl=null;}
this.sourceEl=null;}
updateElPosition(){if(this.sourceEl&&this.isVisible){applyStyle(this.getMirrorEl(),{left:this.sourceElRect.left+this.deltaX,top:this.sourceElRect.top+this.deltaY,});}}
getMirrorEl(){let sourceElRect=this.sourceElRect;let mirrorEl=this.mirrorEl;if(!mirrorEl){mirrorEl=this.mirrorEl=this.sourceEl.cloneNode(true);mirrorEl.style.userSelect='none';mirrorEl.style.webkitUserSelect='none';mirrorEl.style.pointerEvents='none';mirrorEl.classList.add('fc-event-dragging');applyStyle(mirrorEl,{position:'fixed',zIndex:this.zIndex,visibility:'',boxSizing:'border-box',width:sourceElRect.right-sourceElRect.left,height:sourceElRect.bottom-sourceElRect.top,right:'auto',bottom:'auto',margin:0,});this.parentNode.appendChild(mirrorEl);}
return mirrorEl;}}
class ScrollGeomCache extends ScrollController{constructor(scrollController,doesListening){super();this.handleScroll=()=>{this.scrollTop=this.scrollController.getScrollTop();this.scrollLeft=this.scrollController.getScrollLeft();this.handleScrollChange();};this.scrollController=scrollController;this.doesListening=doesListening;this.scrollTop=this.origScrollTop=scrollController.getScrollTop();this.scrollLeft=this.origScrollLeft=scrollController.getScrollLeft();this.scrollWidth=scrollController.getScrollWidth();this.scrollHeight=scrollController.getScrollHeight();this.clientWidth=scrollController.getClientWidth();this.clientHeight=scrollController.getClientHeight();this.clientRect=this.computeClientRect();if(this.doesListening){this.getEventTarget().addEventListener('scroll',this.handleScroll);}}
destroy(){if(this.doesListening){this.getEventTarget().removeEventListener('scroll',this.handleScroll);}}
getScrollTop(){return this.scrollTop;}
getScrollLeft(){return this.scrollLeft;}
setScrollTop(top){this.scrollController.setScrollTop(top);if(!this.doesListening){this.scrollTop=Math.max(Math.min(top,this.getMaxScrollTop()),0);this.handleScrollChange();}}
setScrollLeft(top){this.scrollController.setScrollLeft(top);if(!this.doesListening){this.scrollLeft=Math.max(Math.min(top,this.getMaxScrollLeft()),0);this.handleScrollChange();}}
getClientWidth(){return this.clientWidth;}
getClientHeight(){return this.clientHeight;}
getScrollWidth(){return this.scrollWidth;}
getScrollHeight(){return this.scrollHeight;}
handleScrollChange(){}}
class ElementScrollGeomCache extends ScrollGeomCache{constructor(el,doesListening){super(new ElementScrollController(el),doesListening);}
getEventTarget(){return this.scrollController.el;}
computeClientRect(){return computeInnerRect(this.scrollController.el);}}
class WindowScrollGeomCache extends ScrollGeomCache{constructor(doesListening){super(new WindowScrollController(),doesListening);}
getEventTarget(){return window;}
computeClientRect(){return{left:this.scrollLeft,right:this.scrollLeft+this.clientWidth,top:this.scrollTop,bottom:this.scrollTop+this.clientHeight,};}
handleScrollChange(){this.clientRect=this.computeClientRect();}}
const getTime=typeof performance==='function'?performance.now:Date.now;class AutoScroller{constructor(){this.isEnabled=true;this.scrollQuery=[window,'.fc-scroller'];this.edgeThreshold=50;this.maxVelocity=300;this.pointerScreenX=null;this.pointerScreenY=null;this.isAnimating=false;this.scrollCaches=null;this.everMovedUp=false;this.everMovedDown=false;this.everMovedLeft=false;this.everMovedRight=false;this.animate=()=>{if(this.isAnimating){let edge=this.computeBestEdge(this.pointerScreenX+window.scrollX,this.pointerScreenY+window.scrollY);if(edge){let now=getTime();this.handleSide(edge,(now-this.msSinceRequest)/1000);this.requestAnimation(now);}
else{this.isAnimating=false;}}};}
start(pageX,pageY,scrollStartEl){if(this.isEnabled){this.scrollCaches=this.buildCaches(scrollStartEl);this.pointerScreenX=null;this.pointerScreenY=null;this.everMovedUp=false;this.everMovedDown=false;this.everMovedLeft=false;this.everMovedRight=false;this.handleMove(pageX,pageY);}}
handleMove(pageX,pageY){if(this.isEnabled){let pointerScreenX=pageX-window.scrollX;let pointerScreenY=pageY-window.scrollY;let yDelta=this.pointerScreenY===null?0:pointerScreenY-this.pointerScreenY;let xDelta=this.pointerScreenX===null?0:pointerScreenX-this.pointerScreenX;if(yDelta<0){this.everMovedUp=true;}
else if(yDelta>0){this.everMovedDown=true;}
if(xDelta<0){this.everMovedLeft=true;}
else if(xDelta>0){this.everMovedRight=true;}
this.pointerScreenX=pointerScreenX;this.pointerScreenY=pointerScreenY;if(!this.isAnimating){this.isAnimating=true;this.requestAnimation(getTime());}}}
stop(){if(this.isEnabled){this.isAnimating=false;for(let scrollCache of this.scrollCaches){scrollCache.destroy();}
this.scrollCaches=null;}}
requestAnimation(now){this.msSinceRequest=now;requestAnimationFrame(this.animate);}
handleSide(edge,seconds){let{scrollCache}=edge;let{edgeThreshold}=this;let invDistance=edgeThreshold-edge.distance;let velocity=((invDistance*invDistance)/(edgeThreshold*edgeThreshold))*this.maxVelocity*seconds;let sign=1;switch(edge.name){case'left':sign=-1;case'right':scrollCache.setScrollLeft(scrollCache.getScrollLeft()+velocity*sign);break;case'top':sign=-1;case'bottom':scrollCache.setScrollTop(scrollCache.getScrollTop()+velocity*sign);break;}}
computeBestEdge(left,top){let{edgeThreshold}=this;let bestSide=null;let scrollCaches=this.scrollCaches||[];for(let scrollCache of scrollCaches){let rect=scrollCache.clientRect;let leftDist=left-rect.left;let rightDist=rect.right-left;let topDist=top-rect.top;let bottomDist=rect.bottom-top;if(leftDist>=0&&rightDist>=0&&topDist>=0&&bottomDist>=0){if(topDist<=edgeThreshold&&this.everMovedUp&&scrollCache.canScrollUp()&&(!bestSide||bestSide.distance>topDist)){bestSide={scrollCache,name:'top',distance:topDist};}
if(bottomDist<=edgeThreshold&&this.everMovedDown&&scrollCache.canScrollDown()&&(!bestSide||bestSide.distance>bottomDist)){bestSide={scrollCache,name:'bottom',distance:bottomDist};}
if(leftDist<=edgeThreshold&&this.everMovedLeft&&scrollCache.canScrollLeft()&&(!bestSide||bestSide.distance>leftDist)){bestSide={scrollCache,name:'left',distance:leftDist};}
if(rightDist<=edgeThreshold&&this.everMovedRight&&scrollCache.canScrollRight()&&(!bestSide||bestSide.distance>rightDist)){bestSide={scrollCache,name:'right',distance:rightDist};}}}
return bestSide;}
buildCaches(scrollStartEl){return this.queryScrollEls(scrollStartEl).map((el)=>{if(el===window){return new WindowScrollGeomCache(false);}
return new ElementScrollGeomCache(el,false);});}
queryScrollEls(scrollStartEl){let els=[];for(let query of this.scrollQuery){if(typeof query==='object'){els.push(query);}
else{els.push(...Array.prototype.slice.call(scrollStartEl.getRootNode().querySelectorAll(query)));}}
return els;}}
class FeaturefulElementDragging extends ElementDragging{constructor(containerEl,selector){super(containerEl);this.containerEl=containerEl;this.delay=null;this.minDistance=0;this.touchScrollAllowed=true;this.mirrorNeedsRevert=false;this.isInteracting=false;this.isDragging=false;this.isDelayEnded=false;this.isDistanceSurpassed=false;this.delayTimeoutId=null;this.onPointerDown=(ev)=>{if(!this.isDragging){this.isInteracting=true;this.isDelayEnded=false;this.isDistanceSurpassed=false;preventSelection(document.body);preventContextMenu(document.body);if(!ev.isTouch){ev.origEvent.preventDefault();}
this.emitter.trigger('pointerdown',ev);if(this.isInteracting&&!this.pointer.shouldIgnoreMove){this.mirror.setIsVisible(false);this.mirror.start(ev.subjectEl,ev.pageX,ev.pageY);this.startDelay(ev);if(!this.minDistance){this.handleDistanceSurpassed(ev);}}}};this.onPointerMove=(ev)=>{if(this.isInteracting){this.emitter.trigger('pointermove',ev);if(!this.isDistanceSurpassed){let minDistance=this.minDistance;let distanceSq;let{deltaX,deltaY}=ev;distanceSq=deltaX*deltaX+deltaY*deltaY;if(distanceSq>=minDistance*minDistance){this.handleDistanceSurpassed(ev);}}
if(this.isDragging){if(ev.origEvent.type!=='scroll'){this.mirror.handleMove(ev.pageX,ev.pageY);this.autoScroller.handleMove(ev.pageX,ev.pageY);}
this.emitter.trigger('dragmove',ev);}}};this.onPointerUp=(ev)=>{if(this.isInteracting){this.isInteracting=false;allowSelection(document.body);allowContextMenu(document.body);this.emitter.trigger('pointerup',ev);if(this.isDragging){this.autoScroller.stop();this.tryStopDrag(ev);}
if(this.delayTimeoutId){clearTimeout(this.delayTimeoutId);this.delayTimeoutId=null;}}};let pointer=this.pointer=new PointerDragging(containerEl);pointer.emitter.on('pointerdown',this.onPointerDown);pointer.emitter.on('pointermove',this.onPointerMove);pointer.emitter.on('pointerup',this.onPointerUp);if(selector){pointer.selector=selector;}
this.mirror=new ElementMirror();this.autoScroller=new AutoScroller();}
destroy(){this.pointer.destroy();this.onPointerUp({});}
startDelay(ev){if(typeof this.delay==='number'){this.delayTimeoutId=setTimeout(()=>{this.delayTimeoutId=null;this.handleDelayEnd(ev);},this.delay);}
else{this.handleDelayEnd(ev);}}
handleDelayEnd(ev){this.isDelayEnded=true;this.tryStartDrag(ev);}
handleDistanceSurpassed(ev){this.isDistanceSurpassed=true;this.tryStartDrag(ev);}
tryStartDrag(ev){if(this.isDelayEnded&&this.isDistanceSurpassed){if(!this.pointer.wasTouchScroll||this.touchScrollAllowed){this.isDragging=true;this.mirrorNeedsRevert=false;this.autoScroller.start(ev.pageX,ev.pageY,this.containerEl);this.emitter.trigger('dragstart',ev);if(this.touchScrollAllowed===false){this.pointer.cancelTouchScroll();}}}}
tryStopDrag(ev){this.mirror.stop(this.mirrorNeedsRevert,this.stopDrag.bind(this,ev));}
stopDrag(ev){this.isDragging=false;this.emitter.trigger('dragend',ev);}
setIgnoreMove(bool){this.pointer.shouldIgnoreMove=bool;}
setMirrorIsVisible(bool){this.mirror.setIsVisible(bool);}
setMirrorNeedsRevert(bool){this.mirrorNeedsRevert=bool;}
setAutoScrollEnabled(bool){this.autoScroller.isEnabled=bool;}}
class OffsetTracker{constructor(el){this.el=el;this.origRect=computeRect(el);this.scrollCaches=getClippingParents(el).map((scrollEl)=>new ElementScrollGeomCache(scrollEl,true));}
destroy(){for(let scrollCache of this.scrollCaches){scrollCache.destroy();}}
computeLeft(){let left=this.origRect.left;for(let scrollCache of this.scrollCaches){left+=scrollCache.origScrollLeft-scrollCache.getScrollLeft();}
return left;}
computeTop(){let top=this.origRect.top;for(let scrollCache of this.scrollCaches){top+=scrollCache.origScrollTop-scrollCache.getScrollTop();}
return top;}
isWithinClipping(pageX,pageY){let point={left:pageX,top:pageY};for(let scrollCache of this.scrollCaches){if(!isIgnoredClipping(scrollCache.getEventTarget())&&!pointInsideRect(point,scrollCache.clientRect)){return false;}}
return true;}}
function isIgnoredClipping(node){let tagName=node.tagName;return tagName==='HTML'||tagName==='BODY';}
class HitDragging{constructor(dragging,droppableStore){this.useSubjectCenter=false;this.requireInitial=true;this.disablePointCheck=false;this.initialHit=null;this.movingHit=null;this.finalHit=null;this.handlePointerDown=(ev)=>{let{dragging}=this;this.initialHit=null;this.movingHit=null;this.finalHit=null;this.prepareHits();this.processFirstCoord(ev);if(this.initialHit||!this.requireInitial){dragging.setIgnoreMove(false);this.emitter.trigger('pointerdown',ev);}
else{dragging.setIgnoreMove(true);}};this.handleDragStart=(ev)=>{this.emitter.trigger('dragstart',ev);this.handleMove(ev,true);};this.handleDragMove=(ev)=>{this.emitter.trigger('dragmove',ev);this.handleMove(ev);};this.handlePointerUp=(ev)=>{this.releaseHits();this.emitter.trigger('pointerup',ev);};this.handleDragEnd=(ev)=>{if(this.movingHit){this.emitter.trigger('hitupdate',null,true,ev);}
this.finalHit=this.movingHit;this.movingHit=null;this.emitter.trigger('dragend',ev);};this.droppableStore=droppableStore;dragging.emitter.on('pointerdown',this.handlePointerDown);dragging.emitter.on('dragstart',this.handleDragStart);dragging.emitter.on('dragmove',this.handleDragMove);dragging.emitter.on('pointerup',this.handlePointerUp);dragging.emitter.on('dragend',this.handleDragEnd);this.dragging=dragging;this.emitter=new Emitter();}
processFirstCoord(ev){let origPoint={left:ev.pageX,top:ev.pageY};let adjustedPoint=origPoint;let subjectEl=ev.subjectEl;let subjectRect;if(subjectEl instanceof HTMLElement){subjectRect=computeRect(subjectEl);adjustedPoint=constrainPoint(adjustedPoint,subjectRect);}
let initialHit=this.initialHit=this.queryHitForOffset(adjustedPoint.left,adjustedPoint.top);if(initialHit){if(this.useSubjectCenter&&subjectRect){let slicedSubjectRect=intersectRects(subjectRect,initialHit.rect);if(slicedSubjectRect){adjustedPoint=getRectCenter(slicedSubjectRect);}}
this.coordAdjust=diffPoints(adjustedPoint,origPoint);}
else{this.coordAdjust={left:0,top:0};}}
handleMove(ev,forceHandle){let hit=this.queryHitForOffset(ev.pageX+this.coordAdjust.left,ev.pageY+this.coordAdjust.top);if(forceHandle||!isHitsEqual(this.movingHit,hit)){this.movingHit=hit;this.emitter.trigger('hitupdate',hit,false,ev);}}
prepareHits(){this.offsetTrackers=mapHash(this.droppableStore,(interactionSettings)=>{interactionSettings.component.prepareHits();return new OffsetTracker(interactionSettings.el);});}
releaseHits(){let{offsetTrackers}=this;for(let id in offsetTrackers){offsetTrackers[id].destroy();}
this.offsetTrackers={};}
queryHitForOffset(offsetLeft,offsetTop){let{droppableStore,offsetTrackers}=this;let bestHit=null;for(let id in droppableStore){let component=droppableStore[id].component;let offsetTracker=offsetTrackers[id];if(offsetTracker&&offsetTracker.isWithinClipping(offsetLeft,offsetTop)){let originLeft=offsetTracker.computeLeft();let originTop=offsetTracker.computeTop();let positionLeft=offsetLeft-originLeft;let positionTop=offsetTop-originTop;let{origRect}=offsetTracker;let width=origRect.right-origRect.left;let height=origRect.bottom-origRect.top;if(positionLeft>=0&&positionLeft<width&&positionTop>=0&&positionTop<height){let hit=component.queryHit(positionLeft,positionTop,width,height);if(hit&&(rangeContainsRange(hit.dateProfile.activeRange,hit.dateSpan.range))&&(this.disablePointCheck||offsetTracker.el.contains(document.elementFromPoint(positionLeft+originLeft-window.scrollX,positionTop+originTop-window.scrollY)))&&(!bestHit||hit.layer>bestHit.layer)){hit.componentId=id;hit.context=component.context;hit.rect.left+=originLeft;hit.rect.right+=originLeft;hit.rect.top+=originTop;hit.rect.bottom+=originTop;bestHit=hit;}}}}
return bestHit;}}
function isHitsEqual(hit0,hit1){if(!hit0&&!hit1){return true;}
if(Boolean(hit0)!==Boolean(hit1)){return false;}
return isDateSpansEqual(hit0.dateSpan,hit1.dateSpan);}
function buildDatePointApiWithContext(dateSpan,context){let props={};for(let transform of context.pluginHooks.datePointTransforms){Object.assign(props,transform(dateSpan,context));}
Object.assign(props,buildDatePointApi(dateSpan,context.dateEnv));return props;}
function buildDatePointApi(span,dateEnv){return{date:dateEnv.toDate(span.range.start),dateStr:dateEnv.formatIso(span.range.start,{omitTime:span.allDay}),allDay:span.allDay,};}
class DateClicking extends Interaction{constructor(settings){super(settings);this.handlePointerDown=(pev)=>{let{dragging}=this;let downEl=pev.origEvent.target;dragging.setIgnoreMove(!this.component.isValidDateDownEl(downEl));};this.handleDragEnd=(ev)=>{let{component}=this;let{pointer}=this.dragging;if(!pointer.wasTouchScroll){let{initialHit,finalHit}=this.hitDragging;if(initialHit&&finalHit&&isHitsEqual(initialHit,finalHit)){let{context}=component;let arg=Object.assign(Object.assign({},buildDatePointApiWithContext(initialHit.dateSpan,context)),{dayEl:initialHit.dayEl,jsEvent:ev.origEvent,view:context.viewApi||context.calendarApi.view});context.emitter.trigger('dateClick',arg);}}};this.dragging=new FeaturefulElementDragging(settings.el);this.dragging.autoScroller.isEnabled=false;let hitDragging=this.hitDragging=new HitDragging(this.dragging,interactionSettingsToStore(settings));hitDragging.emitter.on('pointerdown',this.handlePointerDown);hitDragging.emitter.on('dragend',this.handleDragEnd);}
destroy(){this.dragging.destroy();}}
class DateSelecting extends Interaction{constructor(settings){super(settings);this.dragSelection=null;this.handlePointerDown=(ev)=>{let{component,dragging}=this;let{options}=component.context;let canSelect=options.selectable&&component.isValidDateDownEl(ev.origEvent.target);dragging.setIgnoreMove(!canSelect);dragging.delay=ev.isTouch?getComponentTouchDelay$1(component):null;};this.handleDragStart=(ev)=>{this.component.context.calendarApi.unselect(ev);};this.handleHitUpdate=(hit,isFinal)=>{let{context}=this.component;let dragSelection=null;let isInvalid=false;if(hit){let initialHit=this.hitDragging.initialHit;let disallowed=hit.componentId===initialHit.componentId&&this.isHitComboAllowed&&!this.isHitComboAllowed(initialHit,hit);if(!disallowed){dragSelection=joinHitsIntoSelection(initialHit,hit,context.pluginHooks.dateSelectionTransformers);}
if(!dragSelection||!isDateSelectionValid(dragSelection,hit.dateProfile,context)){isInvalid=true;dragSelection=null;}}
if(dragSelection){context.dispatch({type:'SELECT_DATES',selection:dragSelection});}
else if(!isFinal){context.dispatch({type:'UNSELECT_DATES'});}
if(!isInvalid){enableCursor();}
else{disableCursor();}
if(!isFinal){this.dragSelection=dragSelection;}};this.handlePointerUp=(pev)=>{if(this.dragSelection){triggerDateSelect(this.dragSelection,pev,this.component.context);this.dragSelection=null;}};let{component}=settings;let{options}=component.context;let dragging=this.dragging=new FeaturefulElementDragging(settings.el);dragging.touchScrollAllowed=false;dragging.minDistance=options.selectMinDistance||0;dragging.autoScroller.isEnabled=options.dragScroll;let hitDragging=this.hitDragging=new HitDragging(this.dragging,interactionSettingsToStore(settings));hitDragging.emitter.on('pointerdown',this.handlePointerDown);hitDragging.emitter.on('dragstart',this.handleDragStart);hitDragging.emitter.on('hitupdate',this.handleHitUpdate);hitDragging.emitter.on('pointerup',this.handlePointerUp);}
destroy(){this.dragging.destroy();}}
function getComponentTouchDelay$1(component){let{options}=component.context;let delay=options.selectLongPressDelay;if(delay==null){delay=options.longPressDelay;}
return delay;}
function joinHitsIntoSelection(hit0,hit1,dateSelectionTransformers){let dateSpan0=hit0.dateSpan;let dateSpan1=hit1.dateSpan;let ms=[dateSpan0.range.start,dateSpan0.range.end,dateSpan1.range.start,dateSpan1.range.end,];ms.sort(compareNumbers);let props={};for(let transformer of dateSelectionTransformers){let res=transformer(hit0,hit1);if(res===false){return null;}
if(res){Object.assign(props,res);}}
props.range={start:ms[0],end:ms[3]};props.allDay=dateSpan0.allDay;return props;}
class EventDragging extends Interaction{constructor(settings){super(settings);this.subjectEl=null;this.subjectSeg=null;this.isDragging=false;this.eventRange=null;this.relevantEvents=null;this.receivingContext=null;this.validMutation=null;this.mutatedRelevantEvents=null;this.handlePointerDown=(ev)=>{let origTarget=ev.origEvent.target;let{component,dragging}=this;let{mirror}=dragging;let{options}=component.context;let initialContext=component.context;this.subjectEl=ev.subjectEl;let subjectSeg=this.subjectSeg=getElSeg(ev.subjectEl);let eventRange=this.eventRange=subjectSeg.eventRange;let eventInstanceId=eventRange.instance.instanceId;this.relevantEvents=getRelevantEvents(initialContext.getCurrentData().eventStore,eventInstanceId);dragging.minDistance=ev.isTouch?0:options.eventDragMinDistance;dragging.delay=(ev.isTouch&&eventInstanceId!==component.props.eventSelection)?getComponentTouchDelay(component):null;if(options.fixedMirrorParent){mirror.parentNode=options.fixedMirrorParent;}
else{mirror.parentNode=elementClosest(origTarget,'.fc');}
mirror.revertDuration=options.dragRevertDuration;let isValid=component.isValidSegDownEl(origTarget)&&!elementClosest(origTarget,'.fc-event-resizer');dragging.setIgnoreMove(!isValid);this.isDragging=isValid&&ev.subjectEl.classList.contains('fc-event-draggable');};this.handleDragStart=(ev)=>{let initialContext=this.component.context;let eventRange=this.eventRange;let eventInstanceId=eventRange.instance.instanceId;if(ev.isTouch){if(eventInstanceId!==this.component.props.eventSelection){initialContext.dispatch({type:'SELECT_EVENT',eventInstanceId});}}
else{initialContext.dispatch({type:'UNSELECT_EVENT'});}
if(this.isDragging){initialContext.calendarApi.unselect(ev);initialContext.emitter.trigger('eventDragStart',{el:this.subjectEl,event:new EventImpl(initialContext,eventRange.def,eventRange.instance),jsEvent:ev.origEvent,view:initialContext.viewApi,});}};this.handleHitUpdate=(hit,isFinal)=>{if(!this.isDragging){return;}
let relevantEvents=this.relevantEvents;let initialHit=this.hitDragging.initialHit;let initialContext=this.component.context;let receivingContext=null;let mutation=null;let mutatedRelevantEvents=null;let isInvalid=false;let interaction={affectedEvents:relevantEvents,mutatedEvents:createEmptyEventStore(),isEvent:true,};if(hit){receivingContext=hit.context;let receivingOptions=receivingContext.options;if(initialContext===receivingContext||(receivingOptions.editable&&receivingOptions.droppable)){mutation=computeEventMutation(initialHit,hit,this.eventRange.instance.range.start,receivingContext.getCurrentData().pluginHooks.eventDragMutationMassagers);if(mutation){mutatedRelevantEvents=applyMutationToEventStore(relevantEvents,receivingContext.getCurrentData().eventUiBases,mutation,receivingContext);interaction.mutatedEvents=mutatedRelevantEvents;if(!isInteractionValid(interaction,hit.dateProfile,receivingContext)){isInvalid=true;mutation=null;mutatedRelevantEvents=null;interaction.mutatedEvents=createEmptyEventStore();}}}
else{receivingContext=null;}}
this.displayDrag(receivingContext,interaction);if(!isInvalid){enableCursor();}
else{disableCursor();}
if(!isFinal){if(initialContext===receivingContext&&isHitsEqual(initialHit,hit)){mutation=null;}
this.dragging.setMirrorNeedsRevert(!mutation);this.dragging.setMirrorIsVisible(!hit||!this.subjectEl.getRootNode().querySelector('.fc-event-mirror'));this.receivingContext=receivingContext;this.validMutation=mutation;this.mutatedRelevantEvents=mutatedRelevantEvents;}};this.handlePointerUp=()=>{if(!this.isDragging){this.cleanup();}};this.handleDragEnd=(ev)=>{if(this.isDragging){let initialContext=this.component.context;let initialView=initialContext.viewApi;let{receivingContext,validMutation}=this;let eventDef=this.eventRange.def;let eventInstance=this.eventRange.instance;let eventApi=new EventImpl(initialContext,eventDef,eventInstance);let relevantEvents=this.relevantEvents;let mutatedRelevantEvents=this.mutatedRelevantEvents;let{finalHit}=this.hitDragging;this.clearDrag();initialContext.emitter.trigger('eventDragStop',{el:this.subjectEl,event:eventApi,jsEvent:ev.origEvent,view:initialView,});if(validMutation){if(receivingContext===initialContext){let updatedEventApi=new EventImpl(initialContext,mutatedRelevantEvents.defs[eventDef.defId],eventInstance?mutatedRelevantEvents.instances[eventInstance.instanceId]:null);initialContext.dispatch({type:'MERGE_EVENTS',eventStore:mutatedRelevantEvents,});let eventChangeArg={oldEvent:eventApi,event:updatedEventApi,relatedEvents:buildEventApis(mutatedRelevantEvents,initialContext,eventInstance),revert(){initialContext.dispatch({type:'MERGE_EVENTS',eventStore:relevantEvents,});},};let transformed={};for(let transformer of initialContext.getCurrentData().pluginHooks.eventDropTransformers){Object.assign(transformed,transformer(validMutation,initialContext));}
initialContext.emitter.trigger('eventDrop',Object.assign(Object.assign(Object.assign({},eventChangeArg),transformed),{el:ev.subjectEl,delta:validMutation.datesDelta,jsEvent:ev.origEvent,view:initialView}));initialContext.emitter.trigger('eventChange',eventChangeArg);}
else if(receivingContext){let eventRemoveArg={event:eventApi,relatedEvents:buildEventApis(relevantEvents,initialContext,eventInstance),revert(){initialContext.dispatch({type:'MERGE_EVENTS',eventStore:relevantEvents,});},};initialContext.emitter.trigger('eventLeave',Object.assign(Object.assign({},eventRemoveArg),{draggedEl:ev.subjectEl,view:initialView}));initialContext.dispatch({type:'REMOVE_EVENTS',eventStore:relevantEvents,});initialContext.emitter.trigger('eventRemove',eventRemoveArg);let addedEventDef=mutatedRelevantEvents.defs[eventDef.defId];let addedEventInstance=mutatedRelevantEvents.instances[eventInstance.instanceId];let addedEventApi=new EventImpl(receivingContext,addedEventDef,addedEventInstance);receivingContext.dispatch({type:'MERGE_EVENTS',eventStore:mutatedRelevantEvents,});let eventAddArg={event:addedEventApi,relatedEvents:buildEventApis(mutatedRelevantEvents,receivingContext,addedEventInstance),revert(){receivingContext.dispatch({type:'REMOVE_EVENTS',eventStore:mutatedRelevantEvents,});},};receivingContext.emitter.trigger('eventAdd',eventAddArg);if(ev.isTouch){receivingContext.dispatch({type:'SELECT_EVENT',eventInstanceId:eventInstance.instanceId,});}
receivingContext.emitter.trigger('drop',Object.assign(Object.assign({},buildDatePointApiWithContext(finalHit.dateSpan,receivingContext)),{draggedEl:ev.subjectEl,jsEvent:ev.origEvent,view:finalHit.context.viewApi}));receivingContext.emitter.trigger('eventReceive',Object.assign(Object.assign({},eventAddArg),{draggedEl:ev.subjectEl,view:finalHit.context.viewApi}));}}
else{initialContext.emitter.trigger('_noEventDrop');}}
this.cleanup();};let{component}=this;let{options}=component.context;let dragging=this.dragging=new FeaturefulElementDragging(settings.el);dragging.pointer.selector=EventDragging.SELECTOR;dragging.touchScrollAllowed=false;dragging.autoScroller.isEnabled=options.dragScroll;let hitDragging=this.hitDragging=new HitDragging(this.dragging,interactionSettingsStore);hitDragging.useSubjectCenter=settings.useEventCenter;hitDragging.emitter.on('pointerdown',this.handlePointerDown);hitDragging.emitter.on('dragstart',this.handleDragStart);hitDragging.emitter.on('hitupdate',this.handleHitUpdate);hitDragging.emitter.on('pointerup',this.handlePointerUp);hitDragging.emitter.on('dragend',this.handleDragEnd);}
destroy(){this.dragging.destroy();}
displayDrag(nextContext,state){let initialContext=this.component.context;let prevContext=this.receivingContext;if(prevContext&&prevContext!==nextContext){if(prevContext===initialContext){prevContext.dispatch({type:'SET_EVENT_DRAG',state:{affectedEvents:state.affectedEvents,mutatedEvents:createEmptyEventStore(),isEvent:true,},});}
else{prevContext.dispatch({type:'UNSET_EVENT_DRAG'});}}
if(nextContext){nextContext.dispatch({type:'SET_EVENT_DRAG',state});}}
clearDrag(){let initialCalendar=this.component.context;let{receivingContext}=this;if(receivingContext){receivingContext.dispatch({type:'UNSET_EVENT_DRAG'});}
if(initialCalendar!==receivingContext){initialCalendar.dispatch({type:'UNSET_EVENT_DRAG'});}}
cleanup(){this.subjectSeg=null;this.isDragging=false;this.eventRange=null;this.relevantEvents=null;this.receivingContext=null;this.validMutation=null;this.mutatedRelevantEvents=null;}}
EventDragging.SELECTOR='.fc-event-draggable, .fc-event-resizable';function computeEventMutation(hit0,hit1,eventInstanceStart,massagers){let dateSpan0=hit0.dateSpan;let dateSpan1=hit1.dateSpan;let date0=dateSpan0.range.start;let date1=dateSpan1.range.start;let standardProps={};if(dateSpan0.allDay!==dateSpan1.allDay){standardProps.allDay=dateSpan1.allDay;standardProps.hasEnd=hit1.context.options.allDayMaintainDuration;if(dateSpan1.allDay){date0=startOfDay(eventInstanceStart);}
else{date0=eventInstanceStart;}}
let delta=diffDates(date0,date1,hit0.context.dateEnv,hit0.componentId===hit1.componentId?hit0.largeUnit:null);if(delta.milliseconds){standardProps.allDay=false;}
let mutation={datesDelta:delta,standardProps,};for(let massager of massagers){massager(mutation,hit0,hit1);}
return mutation;}
function getComponentTouchDelay(component){let{options}=component.context;let delay=options.eventLongPressDelay;if(delay==null){delay=options.longPressDelay;}
return delay;}
class EventResizing extends Interaction{constructor(settings){super(settings);this.draggingSegEl=null;this.draggingSeg=null;this.eventRange=null;this.relevantEvents=null;this.validMutation=null;this.mutatedRelevantEvents=null;this.handlePointerDown=(ev)=>{let{component}=this;let segEl=this.querySegEl(ev);let seg=getElSeg(segEl);let eventRange=this.eventRange=seg.eventRange;this.dragging.minDistance=component.context.options.eventDragMinDistance;this.dragging.setIgnoreMove(!this.component.isValidSegDownEl(ev.origEvent.target)||(ev.isTouch&&this.component.props.eventSelection!==eventRange.instance.instanceId));};this.handleDragStart=(ev)=>{let{context}=this.component;let eventRange=this.eventRange;this.relevantEvents=getRelevantEvents(context.getCurrentData().eventStore,this.eventRange.instance.instanceId);let segEl=this.querySegEl(ev);this.draggingSegEl=segEl;this.draggingSeg=getElSeg(segEl);context.calendarApi.unselect();context.emitter.trigger('eventResizeStart',{el:segEl,event:new EventImpl(context,eventRange.def,eventRange.instance),jsEvent:ev.origEvent,view:context.viewApi,});};this.handleHitUpdate=(hit,isFinal,ev)=>{let{context}=this.component;let relevantEvents=this.relevantEvents;let initialHit=this.hitDragging.initialHit;let eventInstance=this.eventRange.instance;let mutation=null;let mutatedRelevantEvents=null;let isInvalid=false;let interaction={affectedEvents:relevantEvents,mutatedEvents:createEmptyEventStore(),isEvent:true,};if(hit){let disallowed=hit.componentId===initialHit.componentId&&this.isHitComboAllowed&&!this.isHitComboAllowed(initialHit,hit);if(!disallowed){mutation=computeMutation(initialHit,hit,ev.subjectEl.classList.contains('fc-event-resizer-start'),eventInstance.range);}}
if(mutation){mutatedRelevantEvents=applyMutationToEventStore(relevantEvents,context.getCurrentData().eventUiBases,mutation,context);interaction.mutatedEvents=mutatedRelevantEvents;if(!isInteractionValid(interaction,hit.dateProfile,context)){isInvalid=true;mutation=null;mutatedRelevantEvents=null;interaction.mutatedEvents=null;}}
if(mutatedRelevantEvents){context.dispatch({type:'SET_EVENT_RESIZE',state:interaction,});}
else{context.dispatch({type:'UNSET_EVENT_RESIZE'});}
if(!isInvalid){enableCursor();}
else{disableCursor();}
if(!isFinal){if(mutation&&isHitsEqual(initialHit,hit)){mutation=null;}
this.validMutation=mutation;this.mutatedRelevantEvents=mutatedRelevantEvents;}};this.handleDragEnd=(ev)=>{let{context}=this.component;let eventDef=this.eventRange.def;let eventInstance=this.eventRange.instance;let eventApi=new EventImpl(context,eventDef,eventInstance);let relevantEvents=this.relevantEvents;let mutatedRelevantEvents=this.mutatedRelevantEvents;context.emitter.trigger('eventResizeStop',{el:this.draggingSegEl,event:eventApi,jsEvent:ev.origEvent,view:context.viewApi,});if(this.validMutation){let updatedEventApi=new EventImpl(context,mutatedRelevantEvents.defs[eventDef.defId],eventInstance?mutatedRelevantEvents.instances[eventInstance.instanceId]:null);context.dispatch({type:'MERGE_EVENTS',eventStore:mutatedRelevantEvents,});let eventChangeArg={oldEvent:eventApi,event:updatedEventApi,relatedEvents:buildEventApis(mutatedRelevantEvents,context,eventInstance),revert(){context.dispatch({type:'MERGE_EVENTS',eventStore:relevantEvents,});},};context.emitter.trigger('eventResize',Object.assign(Object.assign({},eventChangeArg),{el:this.draggingSegEl,startDelta:this.validMutation.startDelta||createDuration(0),endDelta:this.validMutation.endDelta||createDuration(0),jsEvent:ev.origEvent,view:context.viewApi}));context.emitter.trigger('eventChange',eventChangeArg);}
else{context.emitter.trigger('_noEventResize');}
this.draggingSeg=null;this.relevantEvents=null;this.validMutation=null;};let{component}=settings;let dragging=this.dragging=new FeaturefulElementDragging(settings.el);dragging.pointer.selector='.fc-event-resizer';dragging.touchScrollAllowed=false;dragging.autoScroller.isEnabled=component.context.options.dragScroll;let hitDragging=this.hitDragging=new HitDragging(this.dragging,interactionSettingsToStore(settings));hitDragging.emitter.on('pointerdown',this.handlePointerDown);hitDragging.emitter.on('dragstart',this.handleDragStart);hitDragging.emitter.on('hitupdate',this.handleHitUpdate);hitDragging.emitter.on('dragend',this.handleDragEnd);}
destroy(){this.dragging.destroy();}
querySegEl(ev){return elementClosest(ev.subjectEl,'.fc-event');}}
function computeMutation(hit0,hit1,isFromStart,instanceRange){let dateEnv=hit0.context.dateEnv;let date0=hit0.dateSpan.range.start;let date1=hit1.dateSpan.range.start;let delta=diffDates(date0,date1,dateEnv,hit0.largeUnit);if(isFromStart){if(dateEnv.add(instanceRange.start,delta)<instanceRange.end){return{startDelta:delta};}}
else if(dateEnv.add(instanceRange.end,delta)>instanceRange.start){return{endDelta:delta};}
return null;}
class UnselectAuto{constructor(context){this.context=context;this.isRecentPointerDateSelect=false;this.matchesCancel=false;this.matchesEvent=false;this.onSelect=(selectInfo)=>{if(selectInfo.jsEvent){this.isRecentPointerDateSelect=true;}};this.onDocumentPointerDown=(pev)=>{let unselectCancel=this.context.options.unselectCancel;let downEl=getEventTargetViaRoot(pev.origEvent);this.matchesCancel=!!elementClosest(downEl,unselectCancel);this.matchesEvent=!!elementClosest(downEl,EventDragging.SELECTOR);};this.onDocumentPointerUp=(pev)=>{let{context}=this;let{documentPointer}=this;let calendarState=context.getCurrentData();if(!documentPointer.wasTouchScroll){if(calendarState.dateSelection&&!this.isRecentPointerDateSelect){let unselectAuto=context.options.unselectAuto;if(unselectAuto&&(!unselectAuto||!this.matchesCancel)){context.calendarApi.unselect(pev);}}
if(calendarState.eventSelection&&!this.matchesEvent){context.dispatch({type:'UNSELECT_EVENT'});}}
this.isRecentPointerDateSelect=false;};let documentPointer=this.documentPointer=new PointerDragging(document);documentPointer.shouldIgnoreMove=true;documentPointer.shouldWatchScroll=false;documentPointer.emitter.on('pointerdown',this.onDocumentPointerDown);documentPointer.emitter.on('pointerup',this.onDocumentPointerUp);context.emitter.on('select',this.onSelect);}
destroy(){this.context.emitter.off('select',this.onSelect);this.documentPointer.destroy();}}
const OPTION_REFINERS$5={fixedMirrorParent:identity,};const LISTENER_REFINERS$1={dateClick:identity,eventDragStart:identity,eventDragStop:identity,eventDrop:identity,eventResizeStart:identity,eventResizeStop:identity,eventResize:identity,drop:identity,eventReceive:identity,eventLeave:identity,};class ExternalElementDragging{constructor(dragging,suppliedDragMeta){this.receivingContext=null;this.droppableEvent=null;this.suppliedDragMeta=null;this.dragMeta=null;this.handleDragStart=(ev)=>{this.dragMeta=this.buildDragMeta(ev.subjectEl);};this.handleHitUpdate=(hit,isFinal,ev)=>{let{dragging}=this.hitDragging;let receivingContext=null;let droppableEvent=null;let isInvalid=false;let interaction={affectedEvents:createEmptyEventStore(),mutatedEvents:createEmptyEventStore(),isEvent:this.dragMeta.create,};if(hit){receivingContext=hit.context;if(this.canDropElOnCalendar(ev.subjectEl,receivingContext)){droppableEvent=computeEventForDateSpan(hit.dateSpan,this.dragMeta,receivingContext);interaction.mutatedEvents=eventTupleToStore(droppableEvent);isInvalid=!isInteractionValid(interaction,hit.dateProfile,receivingContext);if(isInvalid){interaction.mutatedEvents=createEmptyEventStore();droppableEvent=null;}}}
this.displayDrag(receivingContext,interaction);dragging.setMirrorIsVisible(isFinal||!droppableEvent||!document.querySelector('.fc-event-mirror'));if(!isInvalid){enableCursor();}
else{disableCursor();}
if(!isFinal){dragging.setMirrorNeedsRevert(!droppableEvent);this.receivingContext=receivingContext;this.droppableEvent=droppableEvent;}};this.handleDragEnd=(pev)=>{let{receivingContext,droppableEvent}=this;this.clearDrag();if(receivingContext&&droppableEvent){let finalHit=this.hitDragging.finalHit;let finalView=finalHit.context.viewApi;let dragMeta=this.dragMeta;receivingContext.emitter.trigger('drop',Object.assign(Object.assign({},buildDatePointApiWithContext(finalHit.dateSpan,receivingContext)),{draggedEl:pev.subjectEl,jsEvent:pev.origEvent,view:finalView}));if(dragMeta.create){let addingEvents=eventTupleToStore(droppableEvent);receivingContext.dispatch({type:'MERGE_EVENTS',eventStore:addingEvents,});if(pev.isTouch){receivingContext.dispatch({type:'SELECT_EVENT',eventInstanceId:droppableEvent.instance.instanceId,});}
receivingContext.emitter.trigger('eventReceive',{event:new EventImpl(receivingContext,droppableEvent.def,droppableEvent.instance),relatedEvents:[],revert(){receivingContext.dispatch({type:'REMOVE_EVENTS',eventStore:addingEvents,});},draggedEl:pev.subjectEl,view:finalView,});}}
this.receivingContext=null;this.droppableEvent=null;};let hitDragging=this.hitDragging=new HitDragging(dragging,interactionSettingsStore);hitDragging.requireInitial=false;hitDragging.emitter.on('dragstart',this.handleDragStart);hitDragging.emitter.on('hitupdate',this.handleHitUpdate);hitDragging.emitter.on('dragend',this.handleDragEnd);this.suppliedDragMeta=suppliedDragMeta;}
buildDragMeta(subjectEl){if(typeof this.suppliedDragMeta==='object'){return parseDragMeta(this.suppliedDragMeta);}
if(typeof this.suppliedDragMeta==='function'){return parseDragMeta(this.suppliedDragMeta(subjectEl));}
return getDragMetaFromEl(subjectEl);}
displayDrag(nextContext,state){let prevContext=this.receivingContext;if(prevContext&&prevContext!==nextContext){prevContext.dispatch({type:'UNSET_EVENT_DRAG'});}
if(nextContext){nextContext.dispatch({type:'SET_EVENT_DRAG',state});}}
clearDrag(){if(this.receivingContext){this.receivingContext.dispatch({type:'UNSET_EVENT_DRAG'});}}
canDropElOnCalendar(el,receivingContext){let dropAccept=receivingContext.options.dropAccept;if(typeof dropAccept==='function'){return dropAccept.call(receivingContext.calendarApi,el);}
if(typeof dropAccept==='string'&&dropAccept){return Boolean(elementMatches(el,dropAccept));}
return true;}}
function computeEventForDateSpan(dateSpan,dragMeta,context){let defProps=Object.assign({},dragMeta.leftoverProps);for(let transform of context.pluginHooks.externalDefTransforms){Object.assign(defProps,transform(dateSpan,dragMeta));}
let{refined,extra}=refineEventDef(defProps,context);let def=parseEventDef(refined,extra,dragMeta.sourceId,dateSpan.allDay,context.options.forceEventDuration||Boolean(dragMeta.duration),context);let start=dateSpan.range.start;if(dateSpan.allDay&&dragMeta.startTime){start=context.dateEnv.add(start,dragMeta.startTime);}
let end=dragMeta.duration?context.dateEnv.add(start,dragMeta.duration):getDefaultEventEnd(dateSpan.allDay,start,context);let instance=createEventInstance(def.defId,{start,end});return{def,instance};}
function getDragMetaFromEl(el){let str=getEmbeddedElData(el,'event');let obj=str?JSON.parse(str):{create:false};return parseDragMeta(obj);}
config.dataAttrPrefix='';function getEmbeddedElData(el,name){let prefix=config.dataAttrPrefix;let prefixedName=(prefix?prefix+'-':'')+name;return el.getAttribute('data-'+prefixedName)||'';}
class ExternalDraggable{constructor(el,settings={}){this.handlePointerDown=(ev)=>{let{dragging}=this;let{minDistance,longPressDelay}=this.settings;dragging.minDistance=minDistance!=null?minDistance:(ev.isTouch?0:BASE_OPTION_DEFAULTS.eventDragMinDistance);dragging.delay=ev.isTouch?(longPressDelay!=null?longPressDelay:BASE_OPTION_DEFAULTS.longPressDelay):0;};this.handleDragStart=(ev)=>{if(ev.isTouch&&this.dragging.delay&&ev.subjectEl.classList.contains('fc-event')){this.dragging.mirror.getMirrorEl().classList.add('fc-event-selected');}};this.settings=settings;let dragging=this.dragging=new FeaturefulElementDragging(el);dragging.touchScrollAllowed=false;if(settings.itemSelector!=null){dragging.pointer.selector=settings.itemSelector;}
if(settings.appendTo!=null){dragging.mirror.parentNode=settings.appendTo;}
dragging.emitter.on('pointerdown',this.handlePointerDown);dragging.emitter.on('dragstart',this.handleDragStart);new ExternalElementDragging(dragging,settings.eventData);}
destroy(){this.dragging.destroy();}}
class InferredElementDragging extends ElementDragging{constructor(containerEl){super(containerEl);this.shouldIgnoreMove=false;this.mirrorSelector='';this.currentMirrorEl=null;this.handlePointerDown=(ev)=>{this.emitter.trigger('pointerdown',ev);if(!this.shouldIgnoreMove){this.emitter.trigger('dragstart',ev);}};this.handlePointerMove=(ev)=>{if(!this.shouldIgnoreMove){this.emitter.trigger('dragmove',ev);}};this.handlePointerUp=(ev)=>{this.emitter.trigger('pointerup',ev);if(!this.shouldIgnoreMove){this.emitter.trigger('dragend',ev);}};let pointer=this.pointer=new PointerDragging(containerEl);pointer.emitter.on('pointerdown',this.handlePointerDown);pointer.emitter.on('pointermove',this.handlePointerMove);pointer.emitter.on('pointerup',this.handlePointerUp);}
destroy(){this.pointer.destroy();}
setIgnoreMove(bool){this.shouldIgnoreMove=bool;}
setMirrorIsVisible(bool){if(bool){if(this.currentMirrorEl){this.currentMirrorEl.style.visibility='';this.currentMirrorEl=null;}}
else{let mirrorEl=this.mirrorSelector?document.querySelector(this.mirrorSelector):null;if(mirrorEl){this.currentMirrorEl=mirrorEl;mirrorEl.style.visibility='hidden';}}}}
class ThirdPartyDraggable{constructor(containerOrSettings,settings){let containerEl=document;if(containerOrSettings===document||containerOrSettings instanceof Element){containerEl=containerOrSettings;settings=settings||{};}
else{settings=(containerOrSettings||{});}
let dragging=this.dragging=new InferredElementDragging(containerEl);if(typeof settings.itemSelector==='string'){dragging.pointer.selector=settings.itemSelector;}
else if(containerEl===document){dragging.pointer.selector='[data-event]';}
if(typeof settings.mirrorSelector==='string'){dragging.mirrorSelector=settings.mirrorSelector;}
let externalDragging=new ExternalElementDragging(dragging,settings.eventData);externalDragging.hitDragging.disablePointCheck=true;}
destroy(){this.dragging.destroy();}}
var index$c=createPlugin({name:'@fullcalendar/interaction',componentInteractions:[DateClicking,DateSelecting,EventDragging,EventResizing],calendarInteractions:[UnselectAuto],elementDraggingImpl:FeaturefulElementDragging,optionRefiners:OPTION_REFINERS$5,listenerRefiners:LISTENER_REFINERS$1,});class TableView extends DateComponent{constructor(){super(...arguments);this.headerElRef=d();}
renderSimpleLayout(headerRowContent,bodyContent){let{props,context}=this;let sections=[];let stickyHeaderDates=getStickyHeaderDates(context.options);if(headerRowContent){sections.push({type:'header',key:'header',isSticky:stickyHeaderDates,chunk:{elRef:this.headerElRef,tableClassName:'fc-col-header',rowContent:headerRowContent,},});}
sections.push({type:'body',key:'body',liquid:true,chunk:{content:bodyContent},});return(y(ViewContainer,{elClasses:['fc-daygrid'],viewSpec:context.viewSpec},y(SimpleScrollGrid,{liquid:!props.isHeightAuto&&!props.forPrint,collapsibleWidth:props.forPrint,cols:[],sections:sections})));}
renderHScrollLayout(headerRowContent,bodyContent,colCnt,dayMinWidth){let ScrollGrid=this.context.pluginHooks.scrollGridImpl;if(!ScrollGrid){throw new Error('No ScrollGrid implementation');}
let{props,context}=this;let stickyHeaderDates=!props.forPrint&&getStickyHeaderDates(context.options);let stickyFooterScrollbar=!props.forPrint&&getStickyFooterScrollbar(context.options);let sections=[];if(headerRowContent){sections.push({type:'header',key:'header',isSticky:stickyHeaderDates,chunks:[{key:'main',elRef:this.headerElRef,tableClassName:'fc-col-header',rowContent:headerRowContent,}],});}
sections.push({type:'body',key:'body',liquid:true,chunks:[{key:'main',content:bodyContent,}],});if(stickyFooterScrollbar){sections.push({type:'footer',key:'footer',isSticky:true,chunks:[{key:'main',content:renderScrollShim,}],});}
return(y(ViewContainer,{elClasses:['fc-daygrid'],viewSpec:context.viewSpec},y(ScrollGrid,{liquid:!props.isHeightAuto&&!props.forPrint,forPrint:props.forPrint,collapsibleWidth:props.forPrint,colGroups:[{cols:[{span:colCnt,minWidth:dayMinWidth}]}],sections:sections})));}}
function splitSegsByRow(segs,rowCnt){let byRow=[];for(let i=0;i<rowCnt;i+=1){byRow[i]=[];}
for(let seg of segs){byRow[seg.row].push(seg);}
return byRow;}
function splitSegsByFirstCol(segs,colCnt){let byCol=[];for(let i=0;i<colCnt;i+=1){byCol[i]=[];}
for(let seg of segs){byCol[seg.firstCol].push(seg);}
return byCol;}
function splitInteractionByRow(ui,rowCnt){let byRow=[];if(!ui){for(let i=0;i<rowCnt;i+=1){byRow[i]=null;}}
else{for(let i=0;i<rowCnt;i+=1){byRow[i]={affectedInstances:ui.affectedInstances,isEvent:ui.isEvent,segs:[],};}
for(let seg of ui.segs){byRow[seg.row].segs.push(seg);}}
return byRow;}
const DEFAULT_TABLE_EVENT_TIME_FORMAT=createFormatter({hour:'numeric',minute:'2-digit',omitZeroMinute:true,meridiem:'narrow',});function hasListItemDisplay(seg){let{display}=seg.eventRange.ui;return display==='list-item'||(display==='auto'&&!seg.eventRange.def.allDay&&seg.firstCol===seg.lastCol&&seg.isStart&&seg.isEnd);}
class TableBlockEvent extends BaseComponent{render(){let{props}=this;return(y(StandardEvent,Object.assign({},props,{elClasses:['fc-daygrid-event','fc-daygrid-block-event','fc-h-event'],defaultTimeFormat:DEFAULT_TABLE_EVENT_TIME_FORMAT,defaultDisplayEventEnd:props.defaultDisplayEventEnd,disableResizing:!props.seg.eventRange.def.allDay})));}}
class TableListItemEvent extends BaseComponent{render(){let{props,context}=this;let{options}=context;let{seg}=props;let timeFormat=options.eventTimeFormat||DEFAULT_TABLE_EVENT_TIME_FORMAT;let timeText=buildSegTimeText(seg,timeFormat,context,true,props.defaultDisplayEventEnd);return(y(EventContainer,Object.assign({},props,{elTag:"a",elClasses:['fc-daygrid-event','fc-daygrid-dot-event'],elAttrs:getSegAnchorAttrs(props.seg,context),defaultGenerator:renderInnerContent$4,timeText:timeText,isResizing:false,isDateSelecting:false})));}}
function renderInnerContent$4(renderProps){return(y(_,null,y("div",{className:"fc-daygrid-event-dot",style:{borderColor:renderProps.borderColor||renderProps.backgroundColor}}),renderProps.timeText&&(y("div",{className:"fc-event-time"},renderProps.timeText)),y("div",{className:"fc-event-title"},renderProps.event.title||y(_,null,"\u00A0"))));}
class TableCellMoreLink extends BaseComponent{constructor(){super(...arguments);this.compileSegs=memoize(compileSegs);}
render(){let{props}=this;let{allSegs,invisibleSegs}=this.compileSegs(props.singlePlacements);return(y(MoreLinkContainer,{elClasses:['fc-daygrid-more-link'],dateProfile:props.dateProfile,todayRange:props.todayRange,allDayDate:props.allDayDate,moreCnt:props.moreCnt,allSegs:allSegs,hiddenSegs:invisibleSegs,alignmentElRef:props.alignmentElRef,alignGridTop:props.alignGridTop,extraDateSpan:props.extraDateSpan,popoverContent:()=>{let isForcedInvisible=(props.eventDrag?props.eventDrag.affectedInstances:null)||(props.eventResize?props.eventResize.affectedInstances:null)||{};return(y(_,null,allSegs.map((seg)=>{let instanceId=seg.eventRange.instance.instanceId;return(y("div",{className:"fc-daygrid-event-harness",key:instanceId,style:{visibility:isForcedInvisible[instanceId]?'hidden':'',}},hasListItemDisplay(seg)?(y(TableListItemEvent,Object.assign({seg:seg,isDragging:false,isSelected:instanceId===props.eventSelection,defaultDisplayEventEnd:false},getSegMeta(seg,props.todayRange)))):(y(TableBlockEvent,Object.assign({seg:seg,isDragging:false,isResizing:false,isDateSelecting:false,isSelected:instanceId===props.eventSelection,defaultDisplayEventEnd:false},getSegMeta(seg,props.todayRange))))));})));}}));}}
function compileSegs(singlePlacements){let allSegs=[];let invisibleSegs=[];for(let placement of singlePlacements){allSegs.push(placement.seg);if(!placement.isVisible){invisibleSegs.push(placement.seg);}}
return{allSegs,invisibleSegs};}
const DEFAULT_WEEK_NUM_FORMAT$1=createFormatter({week:'narrow'});class TableCell extends DateComponent{constructor(){super(...arguments);this.rootElRef=d();this.state={dayNumberId:getUniqueDomId(),};this.handleRootEl=(el)=>{setRef(this.rootElRef,el);setRef(this.props.elRef,el);};}
render(){let{context,props,state,rootElRef}=this;let{options,dateEnv}=context;let{date,dateProfile}=props;const isMonthStart=props.showDayNumber&&shouldDisplayMonthStart(date,dateProfile.currentRange,dateEnv);return(y(DayCellContainer,{elTag:"td",elRef:this.handleRootEl,elClasses:['fc-daygrid-day',...(props.extraClassNames||[]),],elAttrs:Object.assign(Object.assign(Object.assign({},props.extraDataAttrs),(props.showDayNumber?{'aria-labelledby':state.dayNumberId}:{})),{role:'gridcell'}),defaultGenerator:renderTopInner,date:date,dateProfile:dateProfile,todayRange:props.todayRange,showDayNumber:props.showDayNumber,isMonthStart:isMonthStart,extraRenderProps:props.extraRenderProps},(InnerContent,renderProps)=>(y("div",{ref:props.innerElRef,className:"fc-daygrid-day-frame fc-scrollgrid-sync-inner",style:{minHeight:props.minHeight}},props.showWeekNumber&&(y(WeekNumberContainer,{elTag:"a",elClasses:['fc-daygrid-week-number'],elAttrs:buildNavLinkAttrs(context,date,'week'),date:date,defaultFormat:DEFAULT_WEEK_NUM_FORMAT$1})),!renderProps.isDisabled&&(props.showDayNumber||hasCustomDayCellContent(options)||props.forceDayTop)?(y("div",{className:"fc-daygrid-day-top"},y(InnerContent,{elTag:"a",elClasses:['fc-daygrid-day-number',isMonthStart&&'fc-daygrid-month-start',],elAttrs:Object.assign(Object.assign({},buildNavLinkAttrs(context,date)),{id:state.dayNumberId})}))):props.showDayNumber?(y("div",{className:"fc-daygrid-day-top",style:{visibility:'hidden'}},y("a",{className:"fc-daygrid-day-number"},"\u00A0"))):undefined,y("div",{className:"fc-daygrid-day-events",ref:props.fgContentElRef},props.fgContent,y("div",{className:"fc-daygrid-day-bottom",style:{marginTop:props.moreMarginTop}},y(TableCellMoreLink,{allDayDate:date,singlePlacements:props.singlePlacements,moreCnt:props.moreCnt,alignmentElRef:rootElRef,alignGridTop:!props.showDayNumber,extraDateSpan:props.extraDateSpan,dateProfile:props.dateProfile,eventSelection:props.eventSelection,eventDrag:props.eventDrag,eventResize:props.eventResize,todayRange:props.todayRange}))),y("div",{className:"fc-daygrid-day-bg"},props.bgContent)))));}}
function renderTopInner(props){return props.dayNumberText||y(_,null,"\u00A0");}
function shouldDisplayMonthStart(date,currentRange,dateEnv){const{start:currentStart,end:currentEnd}=currentRange;const currentEndIncl=addMs(currentEnd,-1);const currentFirstYear=dateEnv.getYear(currentStart);const currentFirstMonth=dateEnv.getMonth(currentStart);const currentLastYear=dateEnv.getYear(currentEndIncl);const currentLastMonth=dateEnv.getMonth(currentEndIncl);return!(currentFirstYear===currentLastYear&&currentFirstMonth===currentLastMonth)&&Boolean(date.valueOf()===currentStart.valueOf()||(dateEnv.getDay(date)===1&&date.valueOf()<currentEnd.valueOf()));}
function generateSegKey(seg){return seg.eventRange.instance.instanceId+':'+seg.firstCol;}
function generateSegUid(seg){return generateSegKey(seg)+':'+seg.lastCol;}
function computeFgSegPlacement(segs,dayMaxEvents,dayMaxEventRows,strictOrder,segHeights,maxContentHeight,cells){let hierarchy=new DayGridSegHierarchy((segEntry)=>{let segUid=segs[segEntry.index].eventRange.instance.instanceId+':'+segEntry.span.start+':'+(segEntry.span.end-1);return segHeights[segUid]||1;});hierarchy.allowReslicing=true;hierarchy.strictOrder=strictOrder;if(dayMaxEvents===true||dayMaxEventRows===true){hierarchy.maxCoord=maxContentHeight;hierarchy.hiddenConsumes=true;}
else if(typeof dayMaxEvents==='number'){hierarchy.maxStackCnt=dayMaxEvents;}
else if(typeof dayMaxEventRows==='number'){hierarchy.maxStackCnt=dayMaxEventRows;hierarchy.hiddenConsumes=true;}
let segInputs=[];let unknownHeightSegs=[];for(let i=0;i<segs.length;i+=1){let seg=segs[i];let segUid=generateSegUid(seg);let eventHeight=segHeights[segUid];if(eventHeight!=null){segInputs.push({index:i,span:{start:seg.firstCol,end:seg.lastCol+1,},});}
else{unknownHeightSegs.push(seg);}}
let hiddenEntries=hierarchy.addSegs(segInputs);let segRects=hierarchy.toRects();let{singleColPlacements,multiColPlacements,leftoverMargins}=placeRects(segRects,segs,cells);let moreCnts=[];let moreMarginTops=[];for(let seg of unknownHeightSegs){multiColPlacements[seg.firstCol].push({seg,isVisible:false,isAbsolute:true,absoluteTop:0,marginTop:0,});for(let col=seg.firstCol;col<=seg.lastCol;col+=1){singleColPlacements[col].push({seg:resliceSeg(seg,col,col+1,cells),isVisible:false,isAbsolute:false,absoluteTop:0,marginTop:0,});}}
for(let col=0;col<cells.length;col+=1){moreCnts.push(0);}
for(let hiddenEntry of hiddenEntries){let seg=segs[hiddenEntry.index];let hiddenSpan=hiddenEntry.span;multiColPlacements[hiddenSpan.start].push({seg:resliceSeg(seg,hiddenSpan.start,hiddenSpan.end,cells),isVisible:false,isAbsolute:true,absoluteTop:0,marginTop:0,});for(let col=hiddenSpan.start;col<hiddenSpan.end;col+=1){moreCnts[col]+=1;singleColPlacements[col].push({seg:resliceSeg(seg,col,col+1,cells),isVisible:false,isAbsolute:false,absoluteTop:0,marginTop:0,});}}
for(let col=0;col<cells.length;col+=1){moreMarginTops.push(leftoverMargins[col]);}
return{singleColPlacements,multiColPlacements,moreCnts,moreMarginTops};}
function placeRects(allRects,segs,cells){let rectsByEachCol=groupRectsByEachCol(allRects,cells.length);let singleColPlacements=[];let multiColPlacements=[];let leftoverMargins=[];for(let col=0;col<cells.length;col+=1){let rects=rectsByEachCol[col];let singlePlacements=[];let currentHeight=0;let currentMarginTop=0;for(let rect of rects){let seg=segs[rect.index];singlePlacements.push({seg:resliceSeg(seg,col,col+1,cells),isVisible:true,isAbsolute:false,absoluteTop:rect.levelCoord,marginTop:rect.levelCoord-currentHeight,});currentHeight=rect.levelCoord+rect.thickness;}
let multiPlacements=[];currentHeight=0;currentMarginTop=0;for(let rect of rects){let seg=segs[rect.index];let isAbsolute=rect.span.end-rect.span.start>1;let isFirstCol=rect.span.start===col;currentMarginTop+=rect.levelCoord-currentHeight;currentHeight=rect.levelCoord+rect.thickness;if(isAbsolute){currentMarginTop+=rect.thickness;if(isFirstCol){multiPlacements.push({seg:resliceSeg(seg,rect.span.start,rect.span.end,cells),isVisible:true,isAbsolute:true,absoluteTop:rect.levelCoord,marginTop:0,});}}
else if(isFirstCol){multiPlacements.push({seg:resliceSeg(seg,rect.span.start,rect.span.end,cells),isVisible:true,isAbsolute:false,absoluteTop:rect.levelCoord,marginTop:currentMarginTop,});currentMarginTop=0;}}
singleColPlacements.push(singlePlacements);multiColPlacements.push(multiPlacements);leftoverMargins.push(currentMarginTop);}
return{singleColPlacements,multiColPlacements,leftoverMargins};}
function groupRectsByEachCol(rects,colCnt){let rectsByEachCol=[];for(let col=0;col<colCnt;col+=1){rectsByEachCol.push([]);}
for(let rect of rects){for(let col=rect.span.start;col<rect.span.end;col+=1){rectsByEachCol[col].push(rect);}}
return rectsByEachCol;}
function resliceSeg(seg,spanStart,spanEnd,cells){if(seg.firstCol===spanStart&&seg.lastCol===spanEnd-1){return seg;}
let eventRange=seg.eventRange;let origRange=eventRange.range;let slicedRange=intersectRanges(origRange,{start:cells[spanStart].date,end:addDays(cells[spanEnd-1].date,1),});return Object.assign(Object.assign({},seg),{firstCol:spanStart,lastCol:spanEnd-1,eventRange:{def:eventRange.def,ui:Object.assign(Object.assign({},eventRange.ui),{durationEditable:false}),instance:eventRange.instance,range:slicedRange,},isStart:seg.isStart&&slicedRange.start.valueOf()===origRange.start.valueOf(),isEnd:seg.isEnd&&slicedRange.end.valueOf()===origRange.end.valueOf()});}
class DayGridSegHierarchy extends SegHierarchy{constructor(){super(...arguments);this.hiddenConsumes=false;this.forceHidden={};}
addSegs(segInputs){const hiddenSegs=super.addSegs(segInputs);const{entriesByLevel}=this;const excludeHidden=(entry)=>!this.forceHidden[buildEntryKey(entry)];for(let level=0;level<entriesByLevel.length;level+=1){entriesByLevel[level]=entriesByLevel[level].filter(excludeHidden);}
return hiddenSegs;}
handleInvalidInsertion(insertion,entry,hiddenEntries){const{entriesByLevel,forceHidden}=this;const{touchingEntry,touchingLevel,touchingLateral}=insertion;if(this.hiddenConsumes&&touchingEntry){const touchingEntryId=buildEntryKey(touchingEntry);if(!forceHidden[touchingEntryId]){if(this.allowReslicing){const hiddenEntry=Object.assign(Object.assign({},touchingEntry),{span:intersectSpans(touchingEntry.span,entry.span)});const hiddenEntryId=buildEntryKey(hiddenEntry);forceHidden[hiddenEntryId]=true;entriesByLevel[touchingLevel][touchingLateral]=hiddenEntry;hiddenEntries.push(hiddenEntry);this.splitEntry(touchingEntry,entry,hiddenEntries);}
else{forceHidden[touchingEntryId]=true;hiddenEntries.push(touchingEntry);}}}
super.handleInvalidInsertion(insertion,entry,hiddenEntries);}}
class TableRow extends DateComponent{constructor(){super(...arguments);this.cellElRefs=new RefMap();this.frameElRefs=new RefMap();this.fgElRefs=new RefMap();this.segHarnessRefs=new RefMap();this.rootElRef=d();this.state={framePositions:null,maxContentHeight:null,segHeights:{},};this.handleResize=(isForced)=>{if(isForced){this.updateSizing(true);}};}
render(){let{props,state,context}=this;let{options}=context;let colCnt=props.cells.length;let businessHoursByCol=splitSegsByFirstCol(props.businessHourSegs,colCnt);let bgEventSegsByCol=splitSegsByFirstCol(props.bgEventSegs,colCnt);let highlightSegsByCol=splitSegsByFirstCol(this.getHighlightSegs(),colCnt);let mirrorSegsByCol=splitSegsByFirstCol(this.getMirrorSegs(),colCnt);let{singleColPlacements,multiColPlacements,moreCnts,moreMarginTops}=computeFgSegPlacement(sortEventSegs(props.fgEventSegs,options.eventOrder),props.dayMaxEvents,props.dayMaxEventRows,options.eventOrderStrict,state.segHeights,state.maxContentHeight,props.cells);let isForcedInvisible=(props.eventDrag&&props.eventDrag.affectedInstances)||(props.eventResize&&props.eventResize.affectedInstances)||{};return(y("tr",{ref:this.rootElRef,role:"row"},props.renderIntro&&props.renderIntro(),props.cells.map((cell,col)=>{let normalFgNodes=this.renderFgSegs(col,props.forPrint?singleColPlacements[col]:multiColPlacements[col],props.todayRange,isForcedInvisible);let mirrorFgNodes=this.renderFgSegs(col,buildMirrorPlacements$1(mirrorSegsByCol[col],multiColPlacements),props.todayRange,{},Boolean(props.eventDrag),Boolean(props.eventResize),false);return(y(TableCell,{key:cell.key,elRef:this.cellElRefs.createRef(cell.key),innerElRef:this.frameElRefs.createRef(cell.key),dateProfile:props.dateProfile,date:cell.date,showDayNumber:props.showDayNumbers,showWeekNumber:props.showWeekNumbers&&col===0,forceDayTop:props.showWeekNumbers,todayRange:props.todayRange,eventSelection:props.eventSelection,eventDrag:props.eventDrag,eventResize:props.eventResize,extraRenderProps:cell.extraRenderProps,extraDataAttrs:cell.extraDataAttrs,extraClassNames:cell.extraClassNames,extraDateSpan:cell.extraDateSpan,moreCnt:moreCnts[col],moreMarginTop:moreMarginTops[col],singlePlacements:singleColPlacements[col],fgContentElRef:this.fgElRefs.createRef(cell.key),fgContent:(y(_,null,y(_,null,normalFgNodes),y(_,null,mirrorFgNodes))),bgContent:(y(_,null,this.renderFillSegs(highlightSegsByCol[col],'highlight'),this.renderFillSegs(businessHoursByCol[col],'non-business'),this.renderFillSegs(bgEventSegsByCol[col],'bg-event'))),minHeight:props.cellMinHeight}));})));}
componentDidMount(){this.updateSizing(true);this.context.addResizeHandler(this.handleResize);}
componentDidUpdate(prevProps,prevState){let currentProps=this.props;this.updateSizing(!isPropsEqual(prevProps,currentProps));}
componentWillUnmount(){this.context.removeResizeHandler(this.handleResize);}
getHighlightSegs(){let{props}=this;if(props.eventDrag&&props.eventDrag.segs.length){return props.eventDrag.segs;}
if(props.eventResize&&props.eventResize.segs.length){return props.eventResize.segs;}
return props.dateSelectionSegs;}
getMirrorSegs(){let{props}=this;if(props.eventResize&&props.eventResize.segs.length){return props.eventResize.segs;}
return[];}
renderFgSegs(col,segPlacements,todayRange,isForcedInvisible,isDragging,isResizing,isDateSelecting){let{context}=this;let{eventSelection}=this.props;let{framePositions}=this.state;let defaultDisplayEventEnd=this.props.cells.length===1;let isMirror=isDragging||isResizing||isDateSelecting;let nodes=[];if(framePositions){for(let placement of segPlacements){let{seg}=placement;let{instanceId}=seg.eventRange.instance;let isVisible=placement.isVisible&&!isForcedInvisible[instanceId];let isAbsolute=placement.isAbsolute;let left='';let right='';if(isAbsolute){if(context.isRtl){right=0;left=framePositions.lefts[seg.lastCol]-framePositions.lefts[seg.firstCol];}
else{left=0;right=framePositions.rights[seg.firstCol]-framePositions.rights[seg.lastCol];}}
nodes.push(y("div",{className:'fc-daygrid-event-harness'+(isAbsolute?' fc-daygrid-event-harness-abs':''),key:generateSegKey(seg),ref:isMirror?null:this.segHarnessRefs.createRef(generateSegUid(seg)),style:{visibility:isVisible?'':'hidden',marginTop:isAbsolute?'':placement.marginTop,top:isAbsolute?placement.absoluteTop:'',left,right,}},hasListItemDisplay(seg)?(y(TableListItemEvent,Object.assign({seg:seg,isDragging:isDragging,isSelected:instanceId===eventSelection,defaultDisplayEventEnd:defaultDisplayEventEnd},getSegMeta(seg,todayRange)))):(y(TableBlockEvent,Object.assign({seg:seg,isDragging:isDragging,isResizing:isResizing,isDateSelecting:isDateSelecting,isSelected:instanceId===eventSelection,defaultDisplayEventEnd:defaultDisplayEventEnd},getSegMeta(seg,todayRange))))));}}
return nodes;}
renderFillSegs(segs,fillType){let{isRtl}=this.context;let{todayRange}=this.props;let{framePositions}=this.state;let nodes=[];if(framePositions){for(let seg of segs){let leftRightCss=isRtl?{right:0,left:framePositions.lefts[seg.lastCol]-framePositions.lefts[seg.firstCol],}:{left:0,right:framePositions.rights[seg.firstCol]-framePositions.rights[seg.lastCol],};nodes.push(y("div",{key:buildEventRangeKey(seg.eventRange),className:"fc-daygrid-bg-harness",style:leftRightCss},fillType==='bg-event'?y(BgEvent,Object.assign({seg:seg},getSegMeta(seg,todayRange))):renderFill(fillType)));}}
return y(_,{},...nodes);}
updateSizing(isExternalSizingChange){let{props,state,frameElRefs}=this;if(!props.forPrint&&props.clientWidth!==null){if(isExternalSizingChange){let frameEls=props.cells.map((cell)=>frameElRefs.currentMap[cell.key]);if(frameEls.length){let originEl=this.rootElRef.current;let newPositionCache=new PositionCache(originEl,frameEls,true,false);if(!state.framePositions||!state.framePositions.similarTo(newPositionCache)){this.setState({framePositions:new PositionCache(originEl,frameEls,true,false),});}}}
const oldSegHeights=this.state.segHeights;const newSegHeights=this.querySegHeights();const limitByContentHeight=props.dayMaxEvents===true||props.dayMaxEventRows===true;this.safeSetState({segHeights:Object.assign(Object.assign({},oldSegHeights),newSegHeights),maxContentHeight:limitByContentHeight?this.computeMaxContentHeight():null,});}}
querySegHeights(){let segElMap=this.segHarnessRefs.currentMap;let segHeights={};for(let segUid in segElMap){let height=Math.round(segElMap[segUid].getBoundingClientRect().height);segHeights[segUid]=Math.max(segHeights[segUid]||0,height);}
return segHeights;}
computeMaxContentHeight(){let firstKey=this.props.cells[0].key;let cellEl=this.cellElRefs.currentMap[firstKey];let fcContainerEl=this.fgElRefs.currentMap[firstKey];return cellEl.getBoundingClientRect().bottom-fcContainerEl.getBoundingClientRect().top;}
getCellEls(){let elMap=this.cellElRefs.currentMap;return this.props.cells.map((cell)=>elMap[cell.key]);}}
TableRow.addStateEquality({segHeights:isPropsEqual,});function buildMirrorPlacements$1(mirrorSegs,colPlacements){if(!mirrorSegs.length){return[];}
let topsByInstanceId=buildAbsoluteTopHash$1(colPlacements);return mirrorSegs.map((seg)=>({seg,isVisible:true,isAbsolute:true,absoluteTop:topsByInstanceId[seg.eventRange.instance.instanceId],marginTop:0,}));}
function buildAbsoluteTopHash$1(colPlacements){let topsByInstanceId={};for(let placements of colPlacements){for(let placement of placements){topsByInstanceId[placement.seg.eventRange.instance.instanceId]=placement.absoluteTop;}}
return topsByInstanceId;}
class TableRows extends DateComponent{constructor(){super(...arguments);this.splitBusinessHourSegs=memoize(splitSegsByRow);this.splitBgEventSegs=memoize(splitSegsByRow);this.splitFgEventSegs=memoize(splitSegsByRow);this.splitDateSelectionSegs=memoize(splitSegsByRow);this.splitEventDrag=memoize(splitInteractionByRow);this.splitEventResize=memoize(splitInteractionByRow);this.rowRefs=new RefMap();}
render(){let{props,context}=this;let rowCnt=props.cells.length;let businessHourSegsByRow=this.splitBusinessHourSegs(props.businessHourSegs,rowCnt);let bgEventSegsByRow=this.splitBgEventSegs(props.bgEventSegs,rowCnt);let fgEventSegsByRow=this.splitFgEventSegs(props.fgEventSegs,rowCnt);let dateSelectionSegsByRow=this.splitDateSelectionSegs(props.dateSelectionSegs,rowCnt);let eventDragByRow=this.splitEventDrag(props.eventDrag,rowCnt);let eventResizeByRow=this.splitEventResize(props.eventResize,rowCnt);let cellMinHeight=(rowCnt>=7&&props.clientWidth)?props.clientWidth/context.options.aspectRatio/6:null;return(y(NowTimer,{unit:"day"},(nowDate,todayRange)=>(y(_,null,props.cells.map((cells,row)=>(y(TableRow,{ref:this.rowRefs.createRef(row),key:cells.length?cells[0].date.toISOString():row,showDayNumbers:rowCnt>1,showWeekNumbers:props.showWeekNumbers,todayRange:todayRange,dateProfile:props.dateProfile,cells:cells,renderIntro:props.renderRowIntro,businessHourSegs:businessHourSegsByRow[row],eventSelection:props.eventSelection,bgEventSegs:bgEventSegsByRow[row].filter(isSegAllDay),fgEventSegs:fgEventSegsByRow[row],dateSelectionSegs:dateSelectionSegsByRow[row],eventDrag:eventDragByRow[row],eventResize:eventResizeByRow[row],dayMaxEvents:props.dayMaxEvents,dayMaxEventRows:props.dayMaxEventRows,clientWidth:props.clientWidth,clientHeight:props.clientHeight,cellMinHeight:cellMinHeight,forPrint:props.forPrint})))))));}
componentDidMount(){this.registerInteractiveComponent();}
componentDidUpdate(){this.registerInteractiveComponent();}
registerInteractiveComponent(){if(!this.rootEl){const firstCellEl=this.rowRefs.currentMap[0].getCellEls()[0];const rootEl=firstCellEl?firstCellEl.closest('.fc-daygrid-body'):null;if(rootEl){this.rootEl=rootEl;this.context.registerInteractiveComponent(this,{el:rootEl,isHitComboAllowed:this.props.isHitComboAllowed,});}}}
componentWillUnmount(){if(this.rootEl){this.context.unregisterInteractiveComponent(this);this.rootEl=null;}}
prepareHits(){this.rowPositions=new PositionCache(this.rootEl,this.rowRefs.collect().map((rowObj)=>rowObj.getCellEls()[0]),false,true);this.colPositions=new PositionCache(this.rootEl,this.rowRefs.currentMap[0].getCellEls(),true,false);}
queryHit(positionLeft,positionTop){let{colPositions,rowPositions}=this;let col=colPositions.leftToIndex(positionLeft);let row=rowPositions.topToIndex(positionTop);if(row!=null&&col!=null){let cell=this.props.cells[row][col];return{dateProfile:this.props.dateProfile,dateSpan:Object.assign({range:this.getCellRange(row,col),allDay:true},cell.extraDateSpan),dayEl:this.getCellEl(row,col),rect:{left:colPositions.lefts[col],right:colPositions.rights[col],top:rowPositions.tops[row],bottom:rowPositions.bottoms[row],},layer:0,};}
return null;}
getCellEl(row,col){return this.rowRefs.currentMap[row].getCellEls()[col];}
getCellRange(row,col){let start=this.props.cells[row][col].date;let end=addDays(start,1);return{start,end};}}
function isSegAllDay(seg){return seg.eventRange.def.allDay;}
class Table extends DateComponent{constructor(){super(...arguments);this.elRef=d();this.needsScrollReset=false;}
render(){let{props}=this;let{dayMaxEventRows,dayMaxEvents,expandRows}=props;let limitViaBalanced=dayMaxEvents===true||dayMaxEventRows===true;if(limitViaBalanced&&!expandRows){limitViaBalanced=false;dayMaxEventRows=null;dayMaxEvents=null;}
let classNames=['fc-daygrid-body',limitViaBalanced?'fc-daygrid-body-balanced':'fc-daygrid-body-unbalanced',expandRows?'':'fc-daygrid-body-natural',];return(y("div",{ref:this.elRef,className:classNames.join(' '),style:{width:props.clientWidth,minWidth:props.tableMinWidth,}},y("table",{role:"presentation",className:"fc-scrollgrid-sync-table",style:{width:props.clientWidth,minWidth:props.tableMinWidth,height:expandRows?props.clientHeight:'',}},props.colGroupNode,y("tbody",{role:"presentation"},y(TableRows,{dateProfile:props.dateProfile,cells:props.cells,renderRowIntro:props.renderRowIntro,showWeekNumbers:props.showWeekNumbers,clientWidth:props.clientWidth,clientHeight:props.clientHeight,businessHourSegs:props.businessHourSegs,bgEventSegs:props.bgEventSegs,fgEventSegs:props.fgEventSegs,dateSelectionSegs:props.dateSelectionSegs,eventSelection:props.eventSelection,eventDrag:props.eventDrag,eventResize:props.eventResize,dayMaxEvents:dayMaxEvents,dayMaxEventRows:dayMaxEventRows,forPrint:props.forPrint,isHitComboAllowed:props.isHitComboAllowed})))));}
componentDidMount(){this.requestScrollReset();}
componentDidUpdate(prevProps){if(prevProps.dateProfile!==this.props.dateProfile){this.requestScrollReset();}
else{this.flushScrollReset();}}
requestScrollReset(){this.needsScrollReset=true;this.flushScrollReset();}
flushScrollReset(){if(this.needsScrollReset&&this.props.clientWidth){const subjectEl=getScrollSubjectEl(this.elRef.current,this.props.dateProfile);if(subjectEl){const originEl=subjectEl.closest('.fc-daygrid-body');const scrollEl=originEl.closest('.fc-scroller');const scrollTop=subjectEl.getBoundingClientRect().top-
originEl.getBoundingClientRect().top;scrollEl.scrollTop=scrollTop?(scrollTop+1):0;}
this.needsScrollReset=false;}}}
function getScrollSubjectEl(containerEl,dateProfile){let el;if(dateProfile.currentRangeUnit.match(/year|month/)){el=containerEl.querySelector(`[data-date="${formatIsoMonthStr(dateProfile.currentDate)}-01"]`);}
if(!el){el=containerEl.querySelector(`[data-date="${formatDayString(dateProfile.currentDate)}"]`);}
return el;}
class DayTableSlicer extends Slicer{constructor(){super(...arguments);this.forceDayIfListItem=true;}
sliceRange(dateRange,dayTableModel){return dayTableModel.sliceRange(dateRange);}}
class DayTable extends DateComponent{constructor(){super(...arguments);this.slicer=new DayTableSlicer();this.tableRef=d();}
render(){let{props,context}=this;return(y(Table,Object.assign({ref:this.tableRef},this.slicer.sliceProps(props,props.dateProfile,props.nextDayThreshold,context,props.dayTableModel),{dateProfile:props.dateProfile,cells:props.dayTableModel.cells,colGroupNode:props.colGroupNode,tableMinWidth:props.tableMinWidth,renderRowIntro:props.renderRowIntro,dayMaxEvents:props.dayMaxEvents,dayMaxEventRows:props.dayMaxEventRows,showWeekNumbers:props.showWeekNumbers,expandRows:props.expandRows,headerAlignElRef:props.headerAlignElRef,clientWidth:props.clientWidth,clientHeight:props.clientHeight,forPrint:props.forPrint})));}}
class DayTableView extends TableView{constructor(){super(...arguments);this.buildDayTableModel=memoize(buildDayTableModel);this.headerRef=d();this.tableRef=d();}
render(){let{options,dateProfileGenerator}=this.context;let{props}=this;let dayTableModel=this.buildDayTableModel(props.dateProfile,dateProfileGenerator);let headerContent=options.dayHeaders&&(y(DayHeader,{ref:this.headerRef,dateProfile:props.dateProfile,dates:dayTableModel.headerDates,datesRepDistinctDays:dayTableModel.rowCnt===1}));let bodyContent=(contentArg)=>(y(DayTable,{ref:this.tableRef,dateProfile:props.dateProfile,dayTableModel:dayTableModel,businessHours:props.businessHours,dateSelection:props.dateSelection,eventStore:props.eventStore,eventUiBases:props.eventUiBases,eventSelection:props.eventSelection,eventDrag:props.eventDrag,eventResize:props.eventResize,nextDayThreshold:options.nextDayThreshold,colGroupNode:contentArg.tableColGroupNode,tableMinWidth:contentArg.tableMinWidth,dayMaxEvents:options.dayMaxEvents,dayMaxEventRows:options.dayMaxEventRows,showWeekNumbers:options.weekNumbers,expandRows:!props.isHeightAuto,headerAlignElRef:this.headerElRef,clientWidth:contentArg.clientWidth,clientHeight:contentArg.clientHeight,forPrint:props.forPrint}));return options.dayMinWidth?this.renderHScrollLayout(headerContent,bodyContent,dayTableModel.colCnt,options.dayMinWidth):this.renderSimpleLayout(headerContent,bodyContent);}}
function buildDayTableModel(dateProfile,dateProfileGenerator){let daySeries=new DaySeriesModel(dateProfile.renderRange,dateProfileGenerator);return new DayTableModel(daySeries,/year|month|week/.test(dateProfile.currentRangeUnit));}
class TableDateProfileGenerator extends DateProfileGenerator{buildRenderRange(currentRange,currentRangeUnit,isRangeAllDay){let renderRange=super.buildRenderRange(currentRange,currentRangeUnit,isRangeAllDay);let{props}=this;return buildDayTableRenderRange({currentRange:renderRange,snapToWeek:/^(year|month)$/.test(currentRangeUnit),fixedWeekCount:props.fixedWeekCount,dateEnv:props.dateEnv,});}}
function buildDayTableRenderRange(props){let{dateEnv,currentRange}=props;let{start,end}=currentRange;let endOfWeek;if(props.snapToWeek){start=dateEnv.startOfWeek(start);endOfWeek=dateEnv.startOfWeek(end);if(endOfWeek.valueOf()!==end.valueOf()){end=addWeeks(endOfWeek,1);}}
if(props.fixedWeekCount){let lastMonthRenderStart=dateEnv.startOfWeek(dateEnv.startOfMonth(addDays(currentRange.end,-1)));let rowCnt=Math.ceil(diffWeeks(lastMonthRenderStart,end));end=addWeeks(end,6-rowCnt);}
return{start,end};}
var css_248z$6=":root{--fc-daygrid-event-dot-width:8px}.fc-daygrid-day-events:after,.fc-daygrid-day-events:before,.fc-daygrid-day-frame:after,.fc-daygrid-day-frame:before,.fc-daygrid-event-harness:after,.fc-daygrid-event-harness:before{clear:both;content:\"\";display:table}.fc .fc-daygrid-body{position:relative;z-index:1}.fc .fc-daygrid-day.fc-day-today{background-color:var(--fc-today-bg-color)}.fc .fc-daygrid-day-frame{min-height:100%;position:relative}.fc .fc-daygrid-day-top{display:flex;flex-direction:row-reverse}.fc .fc-day-other .fc-daygrid-day-top{opacity:.3}.fc .fc-daygrid-day-number{padding:4px;position:relative;z-index:4}.fc .fc-daygrid-month-start{font-size:1.1em;font-weight:700}.fc .fc-daygrid-day-events{margin-top:1px}.fc .fc-daygrid-body-balanced .fc-daygrid-day-events{left:0;position:absolute;right:0}.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{min-height:2em;position:relative}.fc .fc-daygrid-body-natural .fc-daygrid-day-events{margin-bottom:1em}.fc .fc-daygrid-event-harness{position:relative}.fc .fc-daygrid-event-harness-abs{left:0;position:absolute;right:0;top:0}.fc .fc-daygrid-bg-harness{bottom:0;position:absolute;top:0}.fc .fc-daygrid-day-bg .fc-non-business{z-index:1}.fc .fc-daygrid-day-bg .fc-bg-event{z-index:2}.fc .fc-daygrid-day-bg .fc-highlight{z-index:3}.fc .fc-daygrid-event{margin-top:1px;z-index:6}.fc .fc-daygrid-event.fc-event-mirror{z-index:7}.fc .fc-daygrid-day-bottom{font-size:.85em;margin:0 2px}.fc .fc-daygrid-day-bottom:after,.fc .fc-daygrid-day-bottom:before{clear:both;content:\"\";display:table}.fc .fc-daygrid-more-link{border-radius:3px;cursor:pointer;line-height:1;margin-top:1px;max-width:100%;overflow:hidden;padding:2px;position:relative;white-space:nowrap;z-index:4}.fc .fc-daygrid-more-link:hover{background-color:rgba(0,0,0,.1)}.fc .fc-daygrid-week-number{background-color:var(--fc-neutral-bg-color);color:var(--fc-neutral-text-color);min-width:1.5em;padding:2px;position:absolute;text-align:center;top:0;z-index:5}.fc .fc-more-popover .fc-popover-body{min-width:220px;padding:10px}.fc-direction-ltr .fc-daygrid-event.fc-event-start,.fc-direction-rtl .fc-daygrid-event.fc-event-end{margin-left:2px}.fc-direction-ltr .fc-daygrid-event.fc-event-end,.fc-direction-rtl .fc-daygrid-event.fc-event-start{margin-right:2px}.fc-direction-ltr .fc-daygrid-more-link{float:left}.fc-direction-ltr .fc-daygrid-week-number{border-radius:0 0 3px 0;left:0}.fc-direction-rtl .fc-daygrid-more-link{float:right}.fc-direction-rtl .fc-daygrid-week-number{border-radius:0 0 0 3px;right:0}.fc-liquid-hack .fc-daygrid-day-frame{position:static}.fc-daygrid-event{border-radius:3px;font-size:var(--fc-small-font-size);position:relative;white-space:nowrap}.fc-daygrid-block-event .fc-event-time{font-weight:700}.fc-daygrid-block-event .fc-event-time,.fc-daygrid-block-event .fc-event-title{padding:1px}.fc-daygrid-dot-event{align-items:center;display:flex;padding:2px 0}.fc-daygrid-dot-event .fc-event-title{flex-grow:1;flex-shrink:1;font-weight:700;min-width:0;overflow:hidden}.fc-daygrid-dot-event.fc-event-mirror,.fc-daygrid-dot-event:hover{background:rgba(0,0,0,.1)}.fc-daygrid-dot-event.fc-event-selected:before{bottom:-10px;top:-10px}.fc-daygrid-event-dot{border:calc(var(--fc-daygrid-event-dot-width)/2) solid var(--fc-event-border-color);border-radius:calc(var(--fc-daygrid-event-dot-width)/2);box-sizing:content-box;height:0;margin:0 4px;width:0}.fc-direction-ltr .fc-daygrid-event .fc-event-time{margin-right:3px}.fc-direction-rtl .fc-daygrid-event .fc-event-time{margin-left:3px}";injectStyles(css_248z$6);var index$b=createPlugin({name:'@fullcalendar/daygrid',initialView:'dayGridMonth',views:{dayGrid:{component:DayTableView,dateProfileGeneratorClass:TableDateProfileGenerator,},dayGridDay:{type:'dayGrid',duration:{days:1},},dayGridWeek:{type:'dayGrid',duration:{weeks:1},},dayGridMonth:{type:'dayGrid',duration:{months:1},fixedWeekCount:true,},dayGridYear:{type:'dayGrid',duration:{years:1},},},});class AllDaySplitter extends Splitter{getKeyInfo(){return{allDay:{},timed:{},};}
getKeysForDateSpan(dateSpan){if(dateSpan.allDay){return['allDay'];}
return['timed'];}
getKeysForEventDef(eventDef){if(!eventDef.allDay){return['timed'];}
if(hasBgRendering(eventDef)){return['timed','allDay'];}
return['allDay'];}}
const DEFAULT_SLAT_LABEL_FORMAT=createFormatter({hour:'numeric',minute:'2-digit',omitZeroMinute:true,meridiem:'short',});function TimeColsAxisCell(props){let classNames=['fc-timegrid-slot','fc-timegrid-slot-label',props.isLabeled?'fc-scrollgrid-shrink':'fc-timegrid-slot-minor',];return(y(ViewContextType.Consumer,null,(context)=>{if(!props.isLabeled){return(y("td",{className:classNames.join(' '),"data-time":props.isoTimeStr}));}
let{dateEnv,options,viewApi}=context;let labelFormat=options.slotLabelFormat==null?DEFAULT_SLAT_LABEL_FORMAT:Array.isArray(options.slotLabelFormat)?createFormatter(options.slotLabelFormat[0]):createFormatter(options.slotLabelFormat);let renderProps={level:0,time:props.time,date:dateEnv.toDate(props.date),view:viewApi,text:dateEnv.format(props.date,labelFormat),};return(y(ContentContainer,{elTag:"td",elClasses:classNames,elAttrs:{'data-time':props.isoTimeStr,},renderProps:renderProps,generatorName:"slotLabelContent",customGenerator:options.slotLabelContent,defaultGenerator:renderInnerContent$3,classNameGenerator:options.slotLabelClassNames,didMount:options.slotLabelDidMount,willUnmount:options.slotLabelWillUnmount},(InnerContent)=>(y("div",{className:"fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame"},y(InnerContent,{elTag:"div",elClasses:['fc-timegrid-slot-label-cushion','fc-scrollgrid-shrink-cushion',]})))));}));}
function renderInnerContent$3(props){return props.text;}
class TimeBodyAxis extends BaseComponent{render(){return this.props.slatMetas.map((slatMeta)=>(y("tr",{key:slatMeta.key},y(TimeColsAxisCell,Object.assign({},slatMeta)))));}}
const DEFAULT_WEEK_NUM_FORMAT=createFormatter({week:'short'});const AUTO_ALL_DAY_MAX_EVENT_ROWS=5;class TimeColsView extends DateComponent{constructor(){super(...arguments);this.allDaySplitter=new AllDaySplitter();this.headerElRef=d();this.rootElRef=d();this.scrollerElRef=d();this.state={slatCoords:null,};this.handleScrollTopRequest=(scrollTop)=>{let scrollerEl=this.scrollerElRef.current;if(scrollerEl){scrollerEl.scrollTop=scrollTop;}};this.renderHeadAxis=(rowKey,frameHeight='')=>{let{options}=this.context;let{dateProfile}=this.props;let range=dateProfile.renderRange;let dayCnt=diffDays(range.start,range.end);let navLinkAttrs=(dayCnt===1)?buildNavLinkAttrs(this.context,range.start,'week'):{};if(options.weekNumbers&&rowKey==='day'){return(y(WeekNumberContainer,{elTag:"th",elClasses:['fc-timegrid-axis','fc-scrollgrid-shrink',],elAttrs:{'aria-hidden':true,},date:range.start,defaultFormat:DEFAULT_WEEK_NUM_FORMAT},(InnerContent)=>(y("div",{className:['fc-timegrid-axis-frame','fc-scrollgrid-shrink-frame','fc-timegrid-axis-frame-liquid',].join(' '),style:{height:frameHeight}},y(InnerContent,{elTag:"a",elClasses:['fc-timegrid-axis-cushion','fc-scrollgrid-shrink-cushion','fc-scrollgrid-sync-inner',],elAttrs:navLinkAttrs})))));}
return(y("th",{"aria-hidden":true,className:"fc-timegrid-axis"},y("div",{className:"fc-timegrid-axis-frame",style:{height:frameHeight}})));};this.renderTableRowAxis=(rowHeight)=>{let{options,viewApi}=this.context;let renderProps={text:options.allDayText,view:viewApi,};return(y(ContentContainer,{elTag:"td",elClasses:['fc-timegrid-axis','fc-scrollgrid-shrink',],elAttrs:{'aria-hidden':true,},renderProps:renderProps,generatorName:"allDayContent",customGenerator:options.allDayContent,defaultGenerator:renderAllDayInner$1,classNameGenerator:options.allDayClassNames,didMount:options.allDayDidMount,willUnmount:options.allDayWillUnmount},(InnerContent)=>(y("div",{className:['fc-timegrid-axis-frame','fc-scrollgrid-shrink-frame',rowHeight==null?' fc-timegrid-axis-frame-liquid':'',].join(' '),style:{height:rowHeight}},y(InnerContent,{elTag:"span",elClasses:['fc-timegrid-axis-cushion','fc-scrollgrid-shrink-cushion','fc-scrollgrid-sync-inner',]})))));};this.handleSlatCoords=(slatCoords)=>{this.setState({slatCoords});};}
renderSimpleLayout(headerRowContent,allDayContent,timeContent){let{context,props}=this;let sections=[];let stickyHeaderDates=getStickyHeaderDates(context.options);if(headerRowContent){sections.push({type:'header',key:'header',isSticky:stickyHeaderDates,chunk:{elRef:this.headerElRef,tableClassName:'fc-col-header',rowContent:headerRowContent,},});}
if(allDayContent){sections.push({type:'body',key:'all-day',chunk:{content:allDayContent},});sections.push({type:'body',key:'all-day-divider',outerContent:(y("tr",{role:"presentation",className:"fc-scrollgrid-section"},y("td",{className:'fc-timegrid-divider '+context.theme.getClass('tableCellShaded')}))),});}
sections.push({type:'body',key:'body',liquid:true,expandRows:Boolean(context.options.expandRows),chunk:{scrollerElRef:this.scrollerElRef,content:timeContent,},});return(y(ViewContainer,{elRef:this.rootElRef,elClasses:['fc-timegrid'],viewSpec:context.viewSpec},y(SimpleScrollGrid,{liquid:!props.isHeightAuto&&!props.forPrint,collapsibleWidth:props.forPrint,cols:[{width:'shrink'}],sections:sections})));}
renderHScrollLayout(headerRowContent,allDayContent,timeContent,colCnt,dayMinWidth,slatMetas,slatCoords){let ScrollGrid=this.context.pluginHooks.scrollGridImpl;if(!ScrollGrid){throw new Error('No ScrollGrid implementation');}
let{context,props}=this;let stickyHeaderDates=!props.forPrint&&getStickyHeaderDates(context.options);let stickyFooterScrollbar=!props.forPrint&&getStickyFooterScrollbar(context.options);let sections=[];if(headerRowContent){sections.push({type:'header',key:'header',isSticky:stickyHeaderDates,syncRowHeights:true,chunks:[{key:'axis',rowContent:(arg)=>(y("tr",{role:"presentation"},this.renderHeadAxis('day',arg.rowSyncHeights[0]))),},{key:'cols',elRef:this.headerElRef,tableClassName:'fc-col-header',rowContent:headerRowContent,},],});}
if(allDayContent){sections.push({type:'body',key:'all-day',syncRowHeights:true,chunks:[{key:'axis',rowContent:(contentArg)=>(y("tr",{role:"presentation"},this.renderTableRowAxis(contentArg.rowSyncHeights[0]))),},{key:'cols',content:allDayContent,},],});sections.push({key:'all-day-divider',type:'body',outerContent:(y("tr",{role:"presentation",className:"fc-scrollgrid-section"},y("td",{colSpan:2,className:'fc-timegrid-divider '+context.theme.getClass('tableCellShaded')}))),});}
let isNowIndicator=context.options.nowIndicator;sections.push({type:'body',key:'body',liquid:true,expandRows:Boolean(context.options.expandRows),chunks:[{key:'axis',content:(arg)=>(y("div",{className:"fc-timegrid-axis-chunk"},y("table",{"aria-hidden":true,style:{height:arg.expandRows?arg.clientHeight:''}},arg.tableColGroupNode,y("tbody",null,y(TimeBodyAxis,{slatMetas:slatMetas}))),y("div",{className:"fc-timegrid-now-indicator-container"},y(NowTimer,{unit:isNowIndicator?'minute':'day'},(nowDate)=>{let nowIndicatorTop=isNowIndicator&&slatCoords&&slatCoords.safeComputeTop(nowDate);if(typeof nowIndicatorTop==='number'){return(y(NowIndicatorContainer,{elClasses:['fc-timegrid-now-indicator-arrow'],elStyle:{top:nowIndicatorTop},isAxis:true,date:nowDate}));}
return null;})))),},{key:'cols',scrollerElRef:this.scrollerElRef,content:timeContent,},],});if(stickyFooterScrollbar){sections.push({key:'footer',type:'footer',isSticky:true,chunks:[{key:'axis',content:renderScrollShim,},{key:'cols',content:renderScrollShim,},],});}
return(y(ViewContainer,{elRef:this.rootElRef,elClasses:['fc-timegrid'],viewSpec:context.viewSpec},y(ScrollGrid,{liquid:!props.isHeightAuto&&!props.forPrint,forPrint:props.forPrint,collapsibleWidth:false,colGroups:[{width:'shrink',cols:[{width:'shrink'}]},{cols:[{span:colCnt,minWidth:dayMinWidth}]},],sections:sections})));}
getAllDayMaxEventProps(){let{dayMaxEvents,dayMaxEventRows}=this.context.options;if(dayMaxEvents===true||dayMaxEventRows===true){dayMaxEvents=undefined;dayMaxEventRows=AUTO_ALL_DAY_MAX_EVENT_ROWS;}
return{dayMaxEvents,dayMaxEventRows};}}
function renderAllDayInner$1(renderProps){return renderProps.text;}
class TimeColsSlatsCoords{constructor(positions,dateProfile,slotDuration){this.positions=positions;this.dateProfile=dateProfile;this.slotDuration=slotDuration;}
safeComputeTop(date){let{dateProfile}=this;if(rangeContainsMarker(dateProfile.currentRange,date)){let startOfDayDate=startOfDay(date);let timeMs=date.valueOf()-startOfDayDate.valueOf();if(timeMs>=asRoughMs(dateProfile.slotMinTime)&&timeMs<asRoughMs(dateProfile.slotMaxTime)){return this.computeTimeTop(createDuration(timeMs));}}
return null;}
computeDateTop(when,startOfDayDate){if(!startOfDayDate){startOfDayDate=startOfDay(when);}
return this.computeTimeTop(createDuration(when.valueOf()-startOfDayDate.valueOf()));}
computeTimeTop(duration){let{positions,dateProfile}=this;let len=positions.els.length;let slatCoverage=(duration.milliseconds-asRoughMs(dateProfile.slotMinTime))/asRoughMs(this.slotDuration);let slatIndex;let slatRemainder;slatCoverage=Math.max(0,slatCoverage);slatCoverage=Math.min(len,slatCoverage);slatIndex=Math.floor(slatCoverage);slatIndex=Math.min(slatIndex,len-1);slatRemainder=slatCoverage-slatIndex;return positions.tops[slatIndex]+
positions.getHeight(slatIndex)*slatRemainder;}}
class TimeColsSlatsBody extends BaseComponent{render(){let{props,context}=this;let{options}=context;let{slatElRefs}=props;return(y("tbody",null,props.slatMetas.map((slatMeta,i)=>{let renderProps={time:slatMeta.time,date:context.dateEnv.toDate(slatMeta.date),view:context.viewApi,};return(y("tr",{key:slatMeta.key,ref:slatElRefs.createRef(slatMeta.key)},props.axis&&(y(TimeColsAxisCell,Object.assign({},slatMeta))),y(ContentContainer,{elTag:"td",elClasses:['fc-timegrid-slot','fc-timegrid-slot-lane',!slatMeta.isLabeled&&'fc-timegrid-slot-minor',],elAttrs:{'data-time':slatMeta.isoTimeStr,},renderProps:renderProps,generatorName:"slotLaneContent",customGenerator:options.slotLaneContent,classNameGenerator:options.slotLaneClassNames,didMount:options.slotLaneDidMount,willUnmount:options.slotLaneWillUnmount})));})));}}
class TimeColsSlats extends BaseComponent{constructor(){super(...arguments);this.rootElRef=d();this.slatElRefs=new RefMap();}
render(){let{props,context}=this;return(y("div",{ref:this.rootElRef,className:"fc-timegrid-slots"},y("table",{"aria-hidden":true,className:context.theme.getClass('table'),style:{minWidth:props.tableMinWidth,width:props.clientWidth,height:props.minHeight,}},props.tableColGroupNode,y(TimeColsSlatsBody,{slatElRefs:this.slatElRefs,axis:props.axis,slatMetas:props.slatMetas}))));}
componentDidMount(){this.updateSizing();}
componentDidUpdate(){this.updateSizing();}
componentWillUnmount(){if(this.props.onCoords){this.props.onCoords(null);}}
updateSizing(){let{context,props}=this;if(props.onCoords&&props.clientWidth!==null){let rootEl=this.rootElRef.current;if(rootEl.offsetHeight){props.onCoords(new TimeColsSlatsCoords(new PositionCache(this.rootElRef.current,collectSlatEls(this.slatElRefs.currentMap,props.slatMetas),false,true),this.props.dateProfile,context.options.slotDuration));}}}}
function collectSlatEls(elMap,slatMetas){return slatMetas.map((slatMeta)=>elMap[slatMeta.key]);}
function splitSegsByCol(segs,colCnt){let segsByCol=[];let i;for(i=0;i<colCnt;i+=1){segsByCol.push([]);}
if(segs){for(i=0;i<segs.length;i+=1){segsByCol[segs[i].col].push(segs[i]);}}
return segsByCol;}
function splitInteractionByCol(ui,colCnt){let byRow=[];if(!ui){for(let i=0;i<colCnt;i+=1){byRow[i]=null;}}
else{for(let i=0;i<colCnt;i+=1){byRow[i]={affectedInstances:ui.affectedInstances,isEvent:ui.isEvent,segs:[],};}
for(let seg of ui.segs){byRow[seg.col].segs.push(seg);}}
return byRow;}
class TimeColMoreLink extends BaseComponent{render(){let{props}=this;return(y(MoreLinkContainer,{elClasses:['fc-timegrid-more-link'],elStyle:{top:props.top,bottom:props.bottom,},allDayDate:null,moreCnt:props.hiddenSegs.length,allSegs:props.hiddenSegs,hiddenSegs:props.hiddenSegs,extraDateSpan:props.extraDateSpan,dateProfile:props.dateProfile,todayRange:props.todayRange,popoverContent:()=>renderPlainFgSegs(props.hiddenSegs,props),defaultGenerator:renderMoreLinkInner,forceTimed:true},(InnerContent)=>(y(InnerContent,{elTag:"div",elClasses:['fc-timegrid-more-link-inner','fc-sticky']}))));}}
function renderMoreLinkInner(props){return props.shortText;}
function buildPositioning(segInputs,strictOrder,maxStackCnt){let hierarchy=new SegHierarchy();if(strictOrder!=null){hierarchy.strictOrder=strictOrder;}
if(maxStackCnt!=null){hierarchy.maxStackCnt=maxStackCnt;}
let hiddenEntries=hierarchy.addSegs(segInputs);let hiddenGroups=groupIntersectingEntries(hiddenEntries);let web=buildWeb(hierarchy);web=stretchWeb(web,1);let segRects=webToRects(web);return{segRects,hiddenGroups};}
function buildWeb(hierarchy){const{entriesByLevel}=hierarchy;const buildNode=cacheable((level,lateral)=>level+':'+lateral,(level,lateral)=>{let siblingRange=findNextLevelSegs(hierarchy,level,lateral);let nextLevelRes=buildNodes(siblingRange,buildNode);let entry=entriesByLevel[level][lateral];return[Object.assign(Object.assign({},entry),{nextLevelNodes:nextLevelRes[0]}),entry.thickness+nextLevelRes[1],];});return buildNodes(entriesByLevel.length?{level:0,lateralStart:0,lateralEnd:entriesByLevel[0].length}:null,buildNode)[0];}
function buildNodes(siblingRange,buildNode){if(!siblingRange){return[[],0];}
let{level,lateralStart,lateralEnd}=siblingRange;let lateral=lateralStart;let pairs=[];while(lateral<lateralEnd){pairs.push(buildNode(level,lateral));lateral+=1;}
pairs.sort(cmpDescPressures);return[pairs.map(extractNode),pairs[0][1],];}
function cmpDescPressures(a,b){return b[1]-a[1];}
function extractNode(a){return a[0];}
function findNextLevelSegs(hierarchy,subjectLevel,subjectLateral){let{levelCoords,entriesByLevel}=hierarchy;let subjectEntry=entriesByLevel[subjectLevel][subjectLateral];let afterSubject=levelCoords[subjectLevel]+subjectEntry.thickness;let levelCnt=levelCoords.length;let level=subjectLevel;for(;level<levelCnt&&levelCoords[level]<afterSubject;level+=1);for(;level<levelCnt;level+=1){let entries=entriesByLevel[level];let entry;let searchIndex=binarySearch(entries,subjectEntry.span.start,getEntrySpanEnd);let lateralStart=searchIndex[0]+searchIndex[1];let lateralEnd=lateralStart;while((entry=entries[lateralEnd])&&entry.span.start<subjectEntry.span.end){lateralEnd+=1;}
if(lateralStart<lateralEnd){return{level,lateralStart,lateralEnd};}}
return null;}
function stretchWeb(topLevelNodes,totalThickness){const stretchNode=cacheable((node,startCoord,prevThickness)=>buildEntryKey(node),(node,startCoord,prevThickness)=>{let{nextLevelNodes,thickness}=node;let allThickness=thickness+prevThickness;let thicknessFraction=thickness/allThickness;let endCoord;let newChildren=[];if(!nextLevelNodes.length){endCoord=totalThickness;}
else{for(let childNode of nextLevelNodes){if(endCoord===undefined){let res=stretchNode(childNode,startCoord,allThickness);endCoord=res[0];newChildren.push(res[1]);}
else{let res=stretchNode(childNode,endCoord,0);newChildren.push(res[1]);}}}
let newThickness=(endCoord-startCoord)*thicknessFraction;return[endCoord-newThickness,Object.assign(Object.assign({},node),{thickness:newThickness,nextLevelNodes:newChildren})];});return topLevelNodes.map((node)=>stretchNode(node,0,0)[1]);}
function webToRects(topLevelNodes){let rects=[];const processNode=cacheable((node,levelCoord,stackDepth)=>buildEntryKey(node),(node,levelCoord,stackDepth)=>{let rect=Object.assign(Object.assign({},node),{levelCoord,stackDepth,stackForward:0});rects.push(rect);return(rect.stackForward=processNodes(node.nextLevelNodes,levelCoord+node.thickness,stackDepth+1)+1);});function processNodes(nodes,levelCoord,stackDepth){let stackForward=0;for(let node of nodes){stackForward=Math.max(processNode(node,levelCoord,stackDepth),stackForward);}
return stackForward;}
processNodes(topLevelNodes,0,0);return rects;}
function cacheable(keyFunc,workFunc){const cache={};return(...args)=>{let key=keyFunc(...args);return(key in cache)?cache[key]:(cache[key]=workFunc(...args));};}
function computeSegVCoords(segs,colDate,slatCoords=null,eventMinHeight=0){let vcoords=[];if(slatCoords){for(let i=0;i<segs.length;i+=1){let seg=segs[i];let spanStart=slatCoords.computeDateTop(seg.start,colDate);let spanEnd=Math.max(spanStart+(eventMinHeight||0),slatCoords.computeDateTop(seg.end,colDate));vcoords.push({start:Math.round(spanStart),end:Math.round(spanEnd),});}}
return vcoords;}
function computeFgSegPlacements$1(segs,segVCoords,eventOrderStrict,eventMaxStack){let segInputs=[];let dumbSegs=[];for(let i=0;i<segs.length;i+=1){let vcoords=segVCoords[i];if(vcoords){segInputs.push({index:i,thickness:1,span:vcoords,});}
else{dumbSegs.push(segs[i]);}}
let{segRects,hiddenGroups}=buildPositioning(segInputs,eventOrderStrict,eventMaxStack);let segPlacements=[];for(let segRect of segRects){segPlacements.push({seg:segs[segRect.index],rect:segRect,});}
for(let dumbSeg of dumbSegs){segPlacements.push({seg:dumbSeg,rect:null});}
return{segPlacements,hiddenGroups};}
const DEFAULT_TIME_FORMAT$2=createFormatter({hour:'numeric',minute:'2-digit',meridiem:false,});class TimeColEvent extends BaseComponent{render(){return(y(StandardEvent,Object.assign({},this.props,{elClasses:['fc-timegrid-event','fc-v-event',this.props.isShort&&'fc-timegrid-event-short',],defaultTimeFormat:DEFAULT_TIME_FORMAT$2})));}}
class TimeCol extends BaseComponent{constructor(){super(...arguments);this.sortEventSegs=memoize(sortEventSegs);}
render(){let{props,context}=this;let{options}=context;let isSelectMirror=options.selectMirror;let mirrorSegs=(props.eventDrag&&props.eventDrag.segs)||(props.eventResize&&props.eventResize.segs)||(isSelectMirror&&props.dateSelectionSegs)||[];let interactionAffectedInstances=(props.eventDrag&&props.eventDrag.affectedInstances)||(props.eventResize&&props.eventResize.affectedInstances)||{};let sortedFgSegs=this.sortEventSegs(props.fgEventSegs,options.eventOrder);return(y(DayCellContainer,{elTag:"td",elRef:props.elRef,elClasses:['fc-timegrid-col',...(props.extraClassNames||[]),],elAttrs:Object.assign({role:'gridcell'},props.extraDataAttrs),date:props.date,dateProfile:props.dateProfile,todayRange:props.todayRange,extraRenderProps:props.extraRenderProps},(InnerContent)=>(y("div",{className:"fc-timegrid-col-frame"},y("div",{className:"fc-timegrid-col-bg"},this.renderFillSegs(props.businessHourSegs,'non-business'),this.renderFillSegs(props.bgEventSegs,'bg-event'),this.renderFillSegs(props.dateSelectionSegs,'highlight')),y("div",{className:"fc-timegrid-col-events"},this.renderFgSegs(sortedFgSegs,interactionAffectedInstances,false,false,false)),y("div",{className:"fc-timegrid-col-events"},this.renderFgSegs(mirrorSegs,{},Boolean(props.eventDrag),Boolean(props.eventResize),Boolean(isSelectMirror),'mirror')),y("div",{className:"fc-timegrid-now-indicator-container"},this.renderNowIndicator(props.nowIndicatorSegs)),hasCustomDayCellContent(options)&&(y(InnerContent,{elTag:"div",elClasses:['fc-timegrid-col-misc']}))))));}
renderFgSegs(sortedFgSegs,segIsInvisible,isDragging,isResizing,isDateSelecting,forcedKey){let{props}=this;if(props.forPrint){return renderPlainFgSegs(sortedFgSegs,props);}
return this.renderPositionedFgSegs(sortedFgSegs,segIsInvisible,isDragging,isResizing,isDateSelecting,forcedKey);}
renderPositionedFgSegs(segs,segIsInvisible,isDragging,isResizing,isDateSelecting,forcedKey){let{eventMaxStack,eventShortHeight,eventOrderStrict,eventMinHeight}=this.context.options;let{date,slatCoords,eventSelection,todayRange,nowDate}=this.props;let isMirror=isDragging||isResizing||isDateSelecting;let segVCoords=computeSegVCoords(segs,date,slatCoords,eventMinHeight);let{segPlacements,hiddenGroups}=computeFgSegPlacements$1(segs,segVCoords,eventOrderStrict,eventMaxStack);return(y(_,null,this.renderHiddenGroups(hiddenGroups,segs),segPlacements.map((segPlacement)=>{let{seg,rect}=segPlacement;let instanceId=seg.eventRange.instance.instanceId;let isVisible=isMirror||Boolean(!segIsInvisible[instanceId]&&rect);let vStyle=computeSegVStyle(rect&&rect.span);let hStyle=(!isMirror&&rect)?this.computeSegHStyle(rect):{left:0,right:0};let isInset=Boolean(rect)&&rect.stackForward>0;let isShort=Boolean(rect)&&(rect.span.end-rect.span.start)<eventShortHeight;return(y("div",{className:'fc-timegrid-event-harness'+
(isInset?' fc-timegrid-event-harness-inset':''),key:forcedKey||instanceId,style:Object.assign(Object.assign({visibility:isVisible?'':'hidden'},vStyle),hStyle)},y(TimeColEvent,Object.assign({seg:seg,isDragging:isDragging,isResizing:isResizing,isDateSelecting:isDateSelecting,isSelected:instanceId===eventSelection,isShort:isShort},getSegMeta(seg,todayRange,nowDate)))));})));}
renderHiddenGroups(hiddenGroups,segs){let{extraDateSpan,dateProfile,todayRange,nowDate,eventSelection,eventDrag,eventResize}=this.props;return(y(_,null,hiddenGroups.map((hiddenGroup)=>{let positionCss=computeSegVStyle(hiddenGroup.span);let hiddenSegs=compileSegsFromEntries(hiddenGroup.entries,segs);return(y(TimeColMoreLink,{key:buildIsoString(computeEarliestSegStart(hiddenSegs)),hiddenSegs:hiddenSegs,top:positionCss.top,bottom:positionCss.bottom,extraDateSpan:extraDateSpan,dateProfile:dateProfile,todayRange:todayRange,nowDate:nowDate,eventSelection:eventSelection,eventDrag:eventDrag,eventResize:eventResize}));})));}
renderFillSegs(segs,fillType){let{props,context}=this;let segVCoords=computeSegVCoords(segs,props.date,props.slatCoords,context.options.eventMinHeight);let children=segVCoords.map((vcoords,i)=>{let seg=segs[i];return(y("div",{key:buildEventRangeKey(seg.eventRange),className:"fc-timegrid-bg-harness",style:computeSegVStyle(vcoords)},fillType==='bg-event'?y(BgEvent,Object.assign({seg:seg},getSegMeta(seg,props.todayRange,props.nowDate))):renderFill(fillType)));});return y(_,null,children);}
renderNowIndicator(segs){let{slatCoords,date}=this.props;if(!slatCoords){return null;}
return segs.map((seg,i)=>(y(NowIndicatorContainer,{key:i,elClasses:['fc-timegrid-now-indicator-line'],elStyle:{top:slatCoords.computeDateTop(seg.start,date),},isAxis:false,date:date})));}
computeSegHStyle(segHCoords){let{isRtl,options}=this.context;let shouldOverlap=options.slotEventOverlap;let nearCoord=segHCoords.levelCoord;let farCoord=segHCoords.levelCoord+segHCoords.thickness;let left;let right;if(shouldOverlap){farCoord=Math.min(1,nearCoord+(farCoord-nearCoord)*2);}
if(isRtl){left=1-farCoord;right=nearCoord;}
else{left=nearCoord;right=1-farCoord;}
let props={zIndex:segHCoords.stackDepth+1,left:left*100+'%',right:right*100+'%',};if(shouldOverlap&&!segHCoords.stackForward){props[isRtl?'marginLeft':'marginRight']=10*2;}
return props;}}
function renderPlainFgSegs(sortedFgSegs,{todayRange,nowDate,eventSelection,eventDrag,eventResize}){let hiddenInstances=(eventDrag?eventDrag.affectedInstances:null)||(eventResize?eventResize.affectedInstances:null)||{};return(y(_,null,sortedFgSegs.map((seg)=>{let instanceId=seg.eventRange.instance.instanceId;return(y("div",{key:instanceId,style:{visibility:hiddenInstances[instanceId]?'hidden':''}},y(TimeColEvent,Object.assign({seg:seg,isDragging:false,isResizing:false,isDateSelecting:false,isSelected:instanceId===eventSelection,isShort:false},getSegMeta(seg,todayRange,nowDate)))));})));}
function computeSegVStyle(segVCoords){if(!segVCoords){return{top:'',bottom:''};}
return{top:segVCoords.start,bottom:-segVCoords.end,};}
function compileSegsFromEntries(segEntries,allSegs){return segEntries.map((segEntry)=>allSegs[segEntry.index]);}
class TimeColsContent extends BaseComponent{constructor(){super(...arguments);this.splitFgEventSegs=memoize(splitSegsByCol);this.splitBgEventSegs=memoize(splitSegsByCol);this.splitBusinessHourSegs=memoize(splitSegsByCol);this.splitNowIndicatorSegs=memoize(splitSegsByCol);this.splitDateSelectionSegs=memoize(splitSegsByCol);this.splitEventDrag=memoize(splitInteractionByCol);this.splitEventResize=memoize(splitInteractionByCol);this.rootElRef=d();this.cellElRefs=new RefMap();}
render(){let{props,context}=this;let nowIndicatorTop=context.options.nowIndicator&&props.slatCoords&&props.slatCoords.safeComputeTop(props.nowDate);let colCnt=props.cells.length;let fgEventSegsByRow=this.splitFgEventSegs(props.fgEventSegs,colCnt);let bgEventSegsByRow=this.splitBgEventSegs(props.bgEventSegs,colCnt);let businessHourSegsByRow=this.splitBusinessHourSegs(props.businessHourSegs,colCnt);let nowIndicatorSegsByRow=this.splitNowIndicatorSegs(props.nowIndicatorSegs,colCnt);let dateSelectionSegsByRow=this.splitDateSelectionSegs(props.dateSelectionSegs,colCnt);let eventDragByRow=this.splitEventDrag(props.eventDrag,colCnt);let eventResizeByRow=this.splitEventResize(props.eventResize,colCnt);return(y("div",{className:"fc-timegrid-cols",ref:this.rootElRef},y("table",{role:"presentation",style:{minWidth:props.tableMinWidth,width:props.clientWidth,}},props.tableColGroupNode,y("tbody",{role:"presentation"},y("tr",{role:"row"},props.axis&&(y("td",{"aria-hidden":true,className:"fc-timegrid-col fc-timegrid-axis"},y("div",{className:"fc-timegrid-col-frame"},y("div",{className:"fc-timegrid-now-indicator-container"},typeof nowIndicatorTop==='number'&&(y(NowIndicatorContainer,{elClasses:['fc-timegrid-now-indicator-arrow'],elStyle:{top:nowIndicatorTop},isAxis:true,date:props.nowDate})))))),props.cells.map((cell,i)=>(y(TimeCol,{key:cell.key,elRef:this.cellElRefs.createRef(cell.key),dateProfile:props.dateProfile,date:cell.date,nowDate:props.nowDate,todayRange:props.todayRange,extraRenderProps:cell.extraRenderProps,extraDataAttrs:cell.extraDataAttrs,extraClassNames:cell.extraClassNames,extraDateSpan:cell.extraDateSpan,fgEventSegs:fgEventSegsByRow[i],bgEventSegs:bgEventSegsByRow[i],businessHourSegs:businessHourSegsByRow[i],nowIndicatorSegs:nowIndicatorSegsByRow[i],dateSelectionSegs:dateSelectionSegsByRow[i],eventDrag:eventDragByRow[i],eventResize:eventResizeByRow[i],slatCoords:props.slatCoords,eventSelection:props.eventSelection,forPrint:props.forPrint}))))))));}
componentDidMount(){this.updateCoords();}
componentDidUpdate(){this.updateCoords();}
updateCoords(){let{props}=this;if(props.onColCoords&&props.clientWidth!==null){props.onColCoords(new PositionCache(this.rootElRef.current,collectCellEls$1(this.cellElRefs.currentMap,props.cells),true,false));}}}
function collectCellEls$1(elMap,cells){return cells.map((cell)=>elMap[cell.key]);}
class TimeCols extends DateComponent{constructor(){super(...arguments);this.processSlotOptions=memoize(processSlotOptions);this.state={slatCoords:null,};this.handleRootEl=(el)=>{if(el){this.context.registerInteractiveComponent(this,{el,isHitComboAllowed:this.props.isHitComboAllowed,});}
else{this.context.unregisterInteractiveComponent(this);}};this.handleScrollRequest=(request)=>{let{onScrollTopRequest}=this.props;let{slatCoords}=this.state;if(onScrollTopRequest&&slatCoords){if(request.time){let top=slatCoords.computeTimeTop(request.time);top=Math.ceil(top);if(top){top+=1;}
onScrollTopRequest(top);}
return true;}
return false;};this.handleColCoords=(colCoords)=>{this.colCoords=colCoords;};this.handleSlatCoords=(slatCoords)=>{this.setState({slatCoords});if(this.props.onSlatCoords){this.props.onSlatCoords(slatCoords);}};}
render(){let{props,state}=this;return(y("div",{className:"fc-timegrid-body",ref:this.handleRootEl,style:{width:props.clientWidth,minWidth:props.tableMinWidth,}},y(TimeColsSlats,{axis:props.axis,dateProfile:props.dateProfile,slatMetas:props.slatMetas,clientWidth:props.clientWidth,minHeight:props.expandRows?props.clientHeight:'',tableMinWidth:props.tableMinWidth,tableColGroupNode:props.axis?props.tableColGroupNode:null,onCoords:this.handleSlatCoords}),y(TimeColsContent,{cells:props.cells,axis:props.axis,dateProfile:props.dateProfile,businessHourSegs:props.businessHourSegs,bgEventSegs:props.bgEventSegs,fgEventSegs:props.fgEventSegs,dateSelectionSegs:props.dateSelectionSegs,eventSelection:props.eventSelection,eventDrag:props.eventDrag,eventResize:props.eventResize,todayRange:props.todayRange,nowDate:props.nowDate,nowIndicatorSegs:props.nowIndicatorSegs,clientWidth:props.clientWidth,tableMinWidth:props.tableMinWidth,tableColGroupNode:props.tableColGroupNode,slatCoords:state.slatCoords,onColCoords:this.handleColCoords,forPrint:props.forPrint})));}
componentDidMount(){this.scrollResponder=this.context.createScrollResponder(this.handleScrollRequest);}
componentDidUpdate(prevProps){this.scrollResponder.update(prevProps.dateProfile!==this.props.dateProfile);}
componentWillUnmount(){this.scrollResponder.detach();}
queryHit(positionLeft,positionTop){let{dateEnv,options}=this.context;let{colCoords}=this;let{dateProfile}=this.props;let{slatCoords}=this.state;let{snapDuration,snapsPerSlot}=this.processSlotOptions(this.props.slotDuration,options.snapDuration);let colIndex=colCoords.leftToIndex(positionLeft);let slatIndex=slatCoords.positions.topToIndex(positionTop);if(colIndex!=null&&slatIndex!=null){let cell=this.props.cells[colIndex];let slatTop=slatCoords.positions.tops[slatIndex];let slatHeight=slatCoords.positions.getHeight(slatIndex);let partial=(positionTop-slatTop)/slatHeight;let localSnapIndex=Math.floor(partial*snapsPerSlot);let snapIndex=slatIndex*snapsPerSlot+localSnapIndex;let dayDate=this.props.cells[colIndex].date;let time=addDurations(dateProfile.slotMinTime,multiplyDuration(snapDuration,snapIndex));let start=dateEnv.add(dayDate,time);let end=dateEnv.add(start,snapDuration);return{dateProfile,dateSpan:Object.assign({range:{start,end},allDay:false},cell.extraDateSpan),dayEl:colCoords.els[colIndex],rect:{left:colCoords.lefts[colIndex],right:colCoords.rights[colIndex],top:slatTop,bottom:slatTop+slatHeight,},layer:0,};}
return null;}}
function processSlotOptions(slotDuration,snapDurationOverride){let snapDuration=snapDurationOverride||slotDuration;let snapsPerSlot=wholeDivideDurations(slotDuration,snapDuration);if(snapsPerSlot===null){snapDuration=slotDuration;snapsPerSlot=1;}
return{snapDuration,snapsPerSlot};}
class DayTimeColsSlicer extends Slicer{sliceRange(range,dayRanges){let segs=[];for(let col=0;col<dayRanges.length;col+=1){let segRange=intersectRanges(range,dayRanges[col]);if(segRange){segs.push({start:segRange.start,end:segRange.end,isStart:segRange.start.valueOf()===range.start.valueOf(),isEnd:segRange.end.valueOf()===range.end.valueOf(),col,});}}
return segs;}}
class DayTimeCols extends DateComponent{constructor(){super(...arguments);this.buildDayRanges=memoize(buildDayRanges);this.slicer=new DayTimeColsSlicer();this.timeColsRef=d();}
render(){let{props,context}=this;let{dateProfile,dayTableModel}=props;let{nowIndicator,nextDayThreshold}=context.options;let dayRanges=this.buildDayRanges(dayTableModel,dateProfile,context.dateEnv);return(y(NowTimer,{unit:nowIndicator?'minute':'day'},(nowDate,todayRange)=>(y(TimeCols,Object.assign({ref:this.timeColsRef},this.slicer.sliceProps(props,dateProfile,null,context,dayRanges),{forPrint:props.forPrint,axis:props.axis,dateProfile:dateProfile,slatMetas:props.slatMetas,slotDuration:props.slotDuration,cells:dayTableModel.cells[0],tableColGroupNode:props.tableColGroupNode,tableMinWidth:props.tableMinWidth,clientWidth:props.clientWidth,clientHeight:props.clientHeight,expandRows:props.expandRows,nowDate:nowDate,nowIndicatorSegs:nowIndicator&&this.slicer.sliceNowDate(nowDate,dateProfile,nextDayThreshold,context,dayRanges),todayRange:todayRange,onScrollTopRequest:props.onScrollTopRequest,onSlatCoords:props.onSlatCoords})))));}}
function buildDayRanges(dayTableModel,dateProfile,dateEnv){let ranges=[];for(let date of dayTableModel.headerDates){ranges.push({start:dateEnv.add(date,dateProfile.slotMinTime),end:dateEnv.add(date,dateProfile.slotMaxTime),});}
return ranges;}
const STOCK_SUB_DURATIONS$1=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15},];function buildSlatMetas(slotMinTime,slotMaxTime,explicitLabelInterval,slotDuration,dateEnv){let dayStart=new Date(0);let slatTime=slotMinTime;let slatIterator=createDuration(0);let labelInterval=explicitLabelInterval||computeLabelInterval(slotDuration);let metas=[];while(asRoughMs(slatTime)<asRoughMs(slotMaxTime)){let date=dateEnv.add(dayStart,slatTime);let isLabeled=wholeDivideDurations(slatIterator,labelInterval)!==null;metas.push({date,time:slatTime,key:date.toISOString(),isoTimeStr:formatIsoTimeString(date),isLabeled,});slatTime=addDurations(slatTime,slotDuration);slatIterator=addDurations(slatIterator,slotDuration);}
return metas;}
function computeLabelInterval(slotDuration){let i;let labelInterval;let slotsPerLabel;for(i=STOCK_SUB_DURATIONS$1.length-1;i>=0;i-=1){labelInterval=createDuration(STOCK_SUB_DURATIONS$1[i]);slotsPerLabel=wholeDivideDurations(labelInterval,slotDuration);if(slotsPerLabel!==null&&slotsPerLabel>1){return labelInterval;}}
return slotDuration;}
class DayTimeColsView extends TimeColsView{constructor(){super(...arguments);this.buildTimeColsModel=memoize(buildTimeColsModel);this.buildSlatMetas=memoize(buildSlatMetas);}
render(){let{options,dateEnv,dateProfileGenerator}=this.context;let{props}=this;let{dateProfile}=props;let dayTableModel=this.buildTimeColsModel(dateProfile,dateProfileGenerator);let splitProps=this.allDaySplitter.splitProps(props);let slatMetas=this.buildSlatMetas(dateProfile.slotMinTime,dateProfile.slotMaxTime,options.slotLabelInterval,options.slotDuration,dateEnv);let{dayMinWidth}=options;let hasAttachedAxis=!dayMinWidth;let hasDetachedAxis=dayMinWidth;let headerContent=options.dayHeaders&&(y(DayHeader,{dates:dayTableModel.headerDates,dateProfile:dateProfile,datesRepDistinctDays:true,renderIntro:hasAttachedAxis?this.renderHeadAxis:null}));let allDayContent=(options.allDaySlot!==false)&&((contentArg)=>(y(DayTable,Object.assign({},splitProps.allDay,{dateProfile:dateProfile,dayTableModel:dayTableModel,nextDayThreshold:options.nextDayThreshold,tableMinWidth:contentArg.tableMinWidth,colGroupNode:contentArg.tableColGroupNode,renderRowIntro:hasAttachedAxis?this.renderTableRowAxis:null,showWeekNumbers:false,expandRows:false,headerAlignElRef:this.headerElRef,clientWidth:contentArg.clientWidth,clientHeight:contentArg.clientHeight,forPrint:props.forPrint},this.getAllDayMaxEventProps()))));let timeGridContent=(contentArg)=>(y(DayTimeCols,Object.assign({},splitProps.timed,{dayTableModel:dayTableModel,dateProfile:dateProfile,axis:hasAttachedAxis,slotDuration:options.slotDuration,slatMetas:slatMetas,forPrint:props.forPrint,tableColGroupNode:contentArg.tableColGroupNode,tableMinWidth:contentArg.tableMinWidth,clientWidth:contentArg.clientWidth,clientHeight:contentArg.clientHeight,onSlatCoords:this.handleSlatCoords,expandRows:contentArg.expandRows,onScrollTopRequest:this.handleScrollTopRequest})));return hasDetachedAxis?this.renderHScrollLayout(headerContent,allDayContent,timeGridContent,dayTableModel.colCnt,dayMinWidth,slatMetas,this.state.slatCoords):this.renderSimpleLayout(headerContent,allDayContent,timeGridContent);}}
function buildTimeColsModel(dateProfile,dateProfileGenerator){let daySeries=new DaySeriesModel(dateProfile.renderRange,dateProfileGenerator);return new DayTableModel(daySeries,false);}
var css_248z$5=".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$5);const OPTION_REFINERS$4={allDaySlot:Boolean,};var index$a=createPlugin({name:'@fullcalendar/timegrid',initialView:'timeGridWeek',optionRefiners:OPTION_REFINERS$4,views:{timeGrid:{component:DayTimeColsView,usesMinMaxTime:true,allDaySlot:true,slotDuration:'00:30:00',slotEventOverlap:true,},timeGridDay:{type:'timeGrid',duration:{days:1},},timeGridWeek:{type:'timeGrid',duration:{weeks:1},},},});class ListViewHeaderRow extends BaseComponent{constructor(){super(...arguments);this.state={textId:getUniqueDomId(),};}
render(){let{theme,dateEnv,options,viewApi}=this.context;let{cellId,dayDate,todayRange}=this.props;let{textId}=this.state;let dayMeta=getDateMeta(dayDate,todayRange);let text=options.listDayFormat?dateEnv.format(dayDate,options.listDayFormat):'';let sideText=options.listDaySideFormat?dateEnv.format(dayDate,options.listDaySideFormat):'';let renderProps=Object.assign({date:dateEnv.toDate(dayDate),view:viewApi,textId,text,sideText,navLinkAttrs:buildNavLinkAttrs(this.context,dayDate),sideNavLinkAttrs:buildNavLinkAttrs(this.context,dayDate,'day',false)},dayMeta);return(y(ContentContainer,{elTag:"tr",elClasses:['fc-list-day',...getDayClassNames(dayMeta,theme),],elAttrs:{'data-date':formatDayString(dayDate),},renderProps:renderProps,generatorName:"dayHeaderContent",customGenerator:options.dayHeaderContent,defaultGenerator:renderInnerContent$2,classNameGenerator:options.dayHeaderClassNames,didMount:options.dayHeaderDidMount,willUnmount:options.dayHeaderWillUnmount},(InnerContent)=>(y("th",{scope:"colgroup",colSpan:3,id:cellId,"aria-labelledby":textId},y(InnerContent,{elTag:"div",elClasses:['fc-list-day-cushion',theme.getClass('tableCellShaded'),]})))));}}
function renderInnerContent$2(props){return(y(_,null,props.text&&(y("a",Object.assign({id:props.textId,className:"fc-list-day-text"},props.navLinkAttrs),props.text)),props.sideText&&(y("a",Object.assign({"aria-hidden":true,className:"fc-list-day-side-text"},props.sideNavLinkAttrs),props.sideText))));}
const DEFAULT_TIME_FORMAT$1=createFormatter({hour:'numeric',minute:'2-digit',meridiem:'short',});class ListViewEventRow extends BaseComponent{render(){let{props,context}=this;let{options}=context;let{seg,timeHeaderId,eventHeaderId,dateHeaderId}=props;let timeFormat=options.eventTimeFormat||DEFAULT_TIME_FORMAT$1;return(y(EventContainer,Object.assign({},props,{elTag:"tr",elClasses:['fc-list-event',seg.eventRange.def.url&&'fc-event-forced-url',],defaultGenerator:()=>renderEventInnerContent(seg,context),seg:seg,timeText:"",disableDragging:true,disableResizing:true}),(InnerContent,eventContentArg)=>(y(_,null,buildTimeContent(seg,timeFormat,context,timeHeaderId,dateHeaderId),y("td",{"aria-hidden":true,className:"fc-list-event-graphic"},y("span",{className:"fc-list-event-dot",style:{borderColor:eventContentArg.borderColor||eventContentArg.backgroundColor,}})),y(InnerContent,{elTag:"td",elClasses:['fc-list-event-title'],elAttrs:{headers:`${eventHeaderId}${dateHeaderId}`}})))));}}
function renderEventInnerContent(seg,context){let interactiveAttrs=getSegAnchorAttrs(seg,context);return(y("a",Object.assign({},interactiveAttrs),seg.eventRange.def.title));}
function buildTimeContent(seg,timeFormat,context,timeHeaderId,dateHeaderId){let{options}=context;if(options.displayEventTime!==false){let eventDef=seg.eventRange.def;let eventInstance=seg.eventRange.instance;let doAllDay=false;let timeText;if(eventDef.allDay){doAllDay=true;}
else if(isMultiDayRange(seg.eventRange.range)){if(seg.isStart){timeText=buildSegTimeText(seg,timeFormat,context,null,null,eventInstance.range.start,seg.end);}
else if(seg.isEnd){timeText=buildSegTimeText(seg,timeFormat,context,null,null,seg.start,eventInstance.range.end);}
else{doAllDay=true;}}
else{timeText=buildSegTimeText(seg,timeFormat,context);}
if(doAllDay){let renderProps={text:context.options.allDayText,view:context.viewApi,};return(y(ContentContainer,{elTag:"td",elClasses:['fc-list-event-time'],elAttrs:{headers:`${timeHeaderId}${dateHeaderId}`,},renderProps:renderProps,generatorName:"allDayContent",customGenerator:options.allDayContent,defaultGenerator:renderAllDayInner,classNameGenerator:options.allDayClassNames,didMount:options.allDayDidMount,willUnmount:options.allDayWillUnmount}));}
return(y("td",{className:"fc-list-event-time"},timeText));}
return null;}
function renderAllDayInner(renderProps){return renderProps.text;}
class ListView extends DateComponent{constructor(){super(...arguments);this.computeDateVars=memoize(computeDateVars);this.eventStoreToSegs=memoize(this._eventStoreToSegs);this.state={timeHeaderId:getUniqueDomId(),eventHeaderId:getUniqueDomId(),dateHeaderIdRoot:getUniqueDomId(),};this.setRootEl=(rootEl)=>{if(rootEl){this.context.registerInteractiveComponent(this,{el:rootEl,});}
else{this.context.unregisterInteractiveComponent(this);}};}
render(){let{props,context}=this;let{dayDates,dayRanges}=this.computeDateVars(props.dateProfile);let eventSegs=this.eventStoreToSegs(props.eventStore,props.eventUiBases,dayRanges);return(y(ViewContainer,{elRef:this.setRootEl,elClasses:['fc-list',context.theme.getClass('table'),context.options.stickyHeaderDates!==false?'fc-list-sticky':'',],viewSpec:context.viewSpec},y(Scroller,{liquid:!props.isHeightAuto,overflowX:props.isHeightAuto?'visible':'hidden',overflowY:props.isHeightAuto?'visible':'auto'},eventSegs.length>0?this.renderSegList(eventSegs,dayDates):this.renderEmptyMessage())));}
renderEmptyMessage(){let{options,viewApi}=this.context;let renderProps={text:options.noEventsText,view:viewApi,};return(y(ContentContainer,{elTag:"div",elClasses:['fc-list-empty'],renderProps:renderProps,generatorName:"noEventsContent",customGenerator:options.noEventsContent,defaultGenerator:renderNoEventsInner,classNameGenerator:options.noEventsClassNames,didMount:options.noEventsDidMount,willUnmount:options.noEventsWillUnmount},(InnerContent)=>(y(InnerContent,{elTag:"div",elClasses:['fc-list-empty-cushion']}))));}
renderSegList(allSegs,dayDates){let{theme,options}=this.context;let{timeHeaderId,eventHeaderId,dateHeaderIdRoot}=this.state;let segsByDay=groupSegsByDay(allSegs);return(y(NowTimer,{unit:"day"},(nowDate,todayRange)=>{let innerNodes=[];for(let dayIndex=0;dayIndex<segsByDay.length;dayIndex+=1){let daySegs=segsByDay[dayIndex];if(daySegs){let dayStr=formatDayString(dayDates[dayIndex]);let dateHeaderId=dateHeaderIdRoot+'-'+dayStr;innerNodes.push(y(ListViewHeaderRow,{key:dayStr,cellId:dateHeaderId,dayDate:dayDates[dayIndex],todayRange:todayRange}));daySegs=sortEventSegs(daySegs,options.eventOrder);for(let seg of daySegs){innerNodes.push(y(ListViewEventRow,Object.assign({key:dayStr+':'+seg.eventRange.instance.instanceId,seg:seg,isDragging:false,isResizing:false,isDateSelecting:false,isSelected:false,timeHeaderId:timeHeaderId,eventHeaderId:eventHeaderId,dateHeaderId:dateHeaderId},getSegMeta(seg,todayRange,nowDate))));}}}
return(y("table",{className:'fc-list-table '+theme.getClass('table')},y("thead",null,y("tr",null,y("th",{scope:"col",id:timeHeaderId},options.timeHint),y("th",{scope:"col","aria-hidden":true}),y("th",{scope:"col",id:eventHeaderId},options.eventHint))),y("tbody",null,innerNodes)));}));}
_eventStoreToSegs(eventStore,eventUiBases,dayRanges){return this.eventRangesToSegs(sliceEventStore(eventStore,eventUiBases,this.props.dateProfile.activeRange,this.context.options.nextDayThreshold).fg,dayRanges);}
eventRangesToSegs(eventRanges,dayRanges){let segs=[];for(let eventRange of eventRanges){segs.push(...this.eventRangeToSegs(eventRange,dayRanges));}
return segs;}
eventRangeToSegs(eventRange,dayRanges){let{dateEnv}=this.context;let{nextDayThreshold}=this.context.options;let range=eventRange.range;let allDay=eventRange.def.allDay;let dayIndex;let segRange;let seg;let segs=[];for(dayIndex=0;dayIndex<dayRanges.length;dayIndex+=1){segRange=intersectRanges(range,dayRanges[dayIndex]);if(segRange){seg={component:this,eventRange,start:segRange.start,end:segRange.end,isStart:eventRange.isStart&&segRange.start.valueOf()===range.start.valueOf(),isEnd:eventRange.isEnd&&segRange.end.valueOf()===range.end.valueOf(),dayIndex,};segs.push(seg);if(!seg.isEnd&&!allDay&&dayIndex+1<dayRanges.length&&range.end<dateEnv.add(dayRanges[dayIndex+1].start,nextDayThreshold)){seg.end=range.end;seg.isEnd=true;break;}}}
return segs;}}
function renderNoEventsInner(renderProps){return renderProps.text;}
function computeDateVars(dateProfile){let dayStart=startOfDay(dateProfile.renderRange.start);let viewEnd=dateProfile.renderRange.end;let dayDates=[];let dayRanges=[];while(dayStart<viewEnd){dayDates.push(dayStart);dayRanges.push({start:dayStart,end:addDays(dayStart,1),});dayStart=addDays(dayStart,1);}
return{dayDates,dayRanges};}
function groupSegsByDay(segs){let segsByDay=[];let i;let seg;for(i=0;i<segs.length;i+=1){seg=segs[i];(segsByDay[seg.dayIndex]||(segsByDay[seg.dayIndex]=[])).push(seg);}
return segsByDay;}
var css_248z$4=":root{--fc-list-event-dot-width:10px;--fc-list-event-hover-bg-color:#f5f5f5}.fc-theme-standard .fc-list{border:1px solid var(--fc-border-color)}.fc .fc-list-empty{align-items:center;background-color:var(--fc-neutral-bg-color);display:flex;height:100%;justify-content:center}.fc .fc-list-empty-cushion{margin:5em 0}.fc .fc-list-table{border-style:hidden;width:100%}.fc .fc-list-table tr>*{border-left:0;border-right:0}.fc .fc-list-sticky .fc-list-day>*{background:var(--fc-page-bg-color);position:sticky;top:0}.fc .fc-list-table thead{left:-10000px;position:absolute}.fc .fc-list-table tbody>tr:first-child th{border-top:0}.fc .fc-list-table th{padding:0}.fc .fc-list-day-cushion,.fc .fc-list-table td{padding:8px 14px}.fc .fc-list-day-cushion:after{clear:both;content:\"\";display:table}.fc-theme-standard .fc-list-day-cushion{background-color:var(--fc-neutral-bg-color)}.fc-direction-ltr .fc-list-day-text,.fc-direction-rtl .fc-list-day-side-text{float:left}.fc-direction-ltr .fc-list-day-side-text,.fc-direction-rtl .fc-list-day-text{float:right}.fc-direction-ltr .fc-list-table .fc-list-event-graphic{padding-right:0}.fc-direction-rtl .fc-list-table .fc-list-event-graphic{padding-left:0}.fc .fc-list-event.fc-event-forced-url{cursor:pointer}.fc .fc-list-event:hover td{background-color:var(--fc-list-event-hover-bg-color)}.fc .fc-list-event-graphic,.fc .fc-list-event-time{white-space:nowrap;width:1px}.fc .fc-list-event-dot{border:calc(var(--fc-list-event-dot-width)/2) solid var(--fc-event-border-color);border-radius:calc(var(--fc-list-event-dot-width)/2);box-sizing:content-box;display:inline-block;height:0;width:0}.fc .fc-list-event-title a{color:inherit;text-decoration:none}.fc .fc-list-event.fc-event-forced-url:hover a{text-decoration:underline}";injectStyles(css_248z$4);const OPTION_REFINERS$3={listDayFormat:createFalsableFormatter,listDaySideFormat:createFalsableFormatter,noEventsClassNames:identity,noEventsContent:identity,noEventsDidMount:identity,noEventsWillUnmount:identity,};function createFalsableFormatter(input){return input===false?null:createFormatter(input);}
var index$9=createPlugin({name:'@fullcalendar/list',optionRefiners:OPTION_REFINERS$3,views:{list:{component:ListView,buttonTextKey:'list',listDayFormat:{month:'long',day:'numeric',year:'numeric'},},listDay:{type:'list',duration:{days:1},listDayFormat:{weekday:'long'},},listWeek:{type:'list',duration:{weeks:1},listDayFormat:{weekday:'long'},listDaySideFormat:{month:'long',day:'numeric',year:'numeric'},},listMonth:{type:'list',duration:{month:1},listDaySideFormat:{weekday:'long'},},listYear:{type:'list',duration:{year:1},listDaySideFormat:{weekday:'long'},},},});class SingleMonth extends DateComponent{constructor(){super(...arguments);this.buildDayTableModel=memoize(buildDayTableModel);this.slicer=new DayTableSlicer();this.state={labelId:getUniqueDomId(),};}
render(){const{props,state,context}=this;const{dateProfile,forPrint}=props;const{options}=context;const dayTableModel=this.buildDayTableModel(dateProfile,context.dateProfileGenerator);const slicedProps=this.slicer.sliceProps(props,dateProfile,options.nextDayThreshold,context,dayTableModel);const tableHeight=props.tableWidth!=null?props.tableWidth/options.aspectRatio:null;const rowCnt=dayTableModel.cells.length;const rowHeight=tableHeight!=null?tableHeight/rowCnt:null;return(y("div",{ref:props.elRef,"data-date":props.isoDateStr,className:"fc-multimonth-month",style:{width:props.width},role:"grid","aria-labelledby":state.labelId},y("div",{className:"fc-multimonth-header",style:{marginBottom:rowHeight},role:"presentation"},y("div",{className:"fc-multimonth-title",id:state.labelId},context.dateEnv.format(props.dateProfile.currentRange.start,props.titleFormat)),y("table",{className:['fc-multimonth-header-table',context.theme.getClass('table'),].join(' '),role:"presentation"},y("thead",{role:"rowgroup"},y(DayHeader,{dateProfile:props.dateProfile,dates:dayTableModel.headerDates,datesRepDistinctDays:false})))),y("div",{className:['fc-multimonth-daygrid','fc-daygrid','fc-daygrid-body',!forPrint&&'fc-daygrid-body-balanced',forPrint&&'fc-daygrid-body-unbalanced',forPrint&&'fc-daygrid-body-natural',].join(' '),style:{marginTop:-rowHeight}},y("table",{className:['fc-multimonth-daygrid-table',context.theme.getClass('table'),].join(' '),style:{height:forPrint?'':tableHeight},role:"presentation"},y("tbody",{role:"rowgroup"},y(TableRows,Object.assign({},slicedProps,{dateProfile:dateProfile,cells:dayTableModel.cells,eventSelection:props.eventSelection,dayMaxEvents:!forPrint,dayMaxEventRows:!forPrint,showWeekNumbers:options.weekNumbers,clientWidth:props.clientWidth,clientHeight:props.clientHeight,forPrint:forPrint})))))));}}
class MultiMonthView extends DateComponent{constructor(){super(...arguments);this.splitDateProfileByMonth=memoize(splitDateProfileByMonth);this.buildMonthFormat=memoize(buildMonthFormat);this.scrollElRef=d();this.firstMonthElRef=d();this.needsScrollReset=false;this.handleSizing=(isForced)=>{if(isForced){this.updateSize();}};}
render(){const{context,props,state}=this;const{options}=context;const{clientWidth,clientHeight}=state;const monthHPadding=state.monthHPadding||0;const colCount=Math.min(clientWidth!=null?Math.floor(clientWidth/(options.multiMonthMinWidth+monthHPadding)):1,options.multiMonthMaxColumns)||1;const monthWidthPct=(100/colCount)+'%';const monthTableWidth=clientWidth==null?null:(clientWidth/colCount)-monthHPadding;const isLegitSingleCol=clientWidth!=null&&colCount===1;const monthDateProfiles=this.splitDateProfileByMonth(context.dateProfileGenerator,props.dateProfile,context.dateEnv,isLegitSingleCol?false:options.fixedWeekCount,options.showNonCurrentDates);const monthTitleFormat=this.buildMonthFormat(options.multiMonthTitleFormat,monthDateProfiles);const rootClassNames=['fc-multimonth',isLegitSingleCol?'fc-multimonth-singlecol':'fc-multimonth-multicol',(monthTableWidth!=null&&monthTableWidth<400)?'fc-multimonth-compact':'',];return(y(ViewContainer,{elRef:this.scrollElRef,elClasses:rootClassNames,viewSpec:context.viewSpec},monthDateProfiles.map((monthDateProfile,i)=>{const monthStr=formatIsoMonthStr(monthDateProfile.currentRange.start);return(y(SingleMonth,Object.assign({},props,{key:monthStr,isoDateStr:monthStr,elRef:i===0?this.firstMonthElRef:undefined,titleFormat:monthTitleFormat,dateProfile:monthDateProfile,width:monthWidthPct,tableWidth:monthTableWidth,clientWidth:clientWidth,clientHeight:clientHeight})));})));}
componentDidMount(){this.updateSize();this.context.addResizeHandler(this.handleSizing);this.requestScrollReset();}
componentDidUpdate(prevProps){if(!isPropsEqual(prevProps,this.props)){this.handleSizing(false);}
if(prevProps.dateProfile!==this.props.dateProfile){this.requestScrollReset();}
else{this.flushScrollReset();}}
componentWillUnmount(){this.context.removeResizeHandler(this.handleSizing);}
updateSize(){const scrollEl=this.scrollElRef.current;const firstMonthEl=this.firstMonthElRef.current;if(scrollEl){this.setState({clientWidth:scrollEl.clientWidth,clientHeight:scrollEl.clientHeight,});}
if(firstMonthEl&&scrollEl){if(this.state.monthHPadding==null){this.setState({monthHPadding:scrollEl.clientWidth-
firstMonthEl.firstChild.offsetWidth,});}}}
requestScrollReset(){this.needsScrollReset=true;this.flushScrollReset();}
flushScrollReset(){if(this.needsScrollReset&&this.state.monthHPadding!=null){const{currentDate}=this.props.dateProfile;const scrollEl=this.scrollElRef.current;const monthEl=scrollEl.querySelector(`[data-date="${formatIsoMonthStr(currentDate)}"]`);scrollEl.scrollTop=monthEl.getBoundingClientRect().top-
this.firstMonthElRef.current.getBoundingClientRect().top;this.needsScrollReset=false;}}
shouldComponentUpdate(){return true;}}
const oneMonthDuration=createDuration(1,'month');function splitDateProfileByMonth(dateProfileGenerator,dateProfile,dateEnv,fixedWeekCount,showNonCurrentDates){const{start,end}=dateProfile.currentRange;let monthStart=start;const monthDateProfiles=[];while(monthStart.valueOf()<end.valueOf()){const monthEnd=dateEnv.add(monthStart,oneMonthDuration);const currentRange={start:dateProfileGenerator.skipHiddenDays(monthStart),end:dateProfileGenerator.skipHiddenDays(monthEnd,-1,true),};let renderRange=buildDayTableRenderRange({currentRange,snapToWeek:true,fixedWeekCount,dateEnv,});renderRange={start:dateProfileGenerator.skipHiddenDays(renderRange.start),end:dateProfileGenerator.skipHiddenDays(renderRange.end,-1,true),};const activeRange=dateProfile.activeRange?intersectRanges(dateProfile.activeRange,showNonCurrentDates?renderRange:currentRange):null;monthDateProfiles.push({currentDate:dateProfile.currentDate,isValid:dateProfile.isValid,validRange:dateProfile.validRange,renderRange,activeRange,currentRange,currentRangeUnit:'month',isRangeAllDay:true,dateIncrement:dateProfile.dateIncrement,slotMinTime:dateProfile.slotMaxTime,slotMaxTime:dateProfile.slotMinTime,});monthStart=monthEnd;}
return monthDateProfiles;}
const YEAR_MONTH_FORMATTER=createFormatter({year:'numeric',month:'long'});const YEAR_FORMATTER=createFormatter({month:'long'});function buildMonthFormat(formatOverride,monthDateProfiles){return formatOverride||((monthDateProfiles[0].currentRange.start.getUTCFullYear()!==monthDateProfiles[monthDateProfiles.length-1].currentRange.start.getUTCFullYear())?YEAR_MONTH_FORMATTER:YEAR_FORMATTER);}
const OPTION_REFINERS$2={multiMonthTitleFormat:createFormatter,multiMonthMaxColumns:Number,multiMonthMinWidth:Number,};var css_248z$3=".fc .fc-multimonth{border:1px solid var(--fc-border-color);display:flex;flex-wrap:wrap;overflow-x:hidden;overflow-y:auto}.fc .fc-multimonth-title{font-size:1.2em;font-weight:700;padding:1em 0;text-align:center}.fc .fc-multimonth-daygrid{background:var(--fc-page-bg-color)}.fc .fc-multimonth-daygrid-table,.fc .fc-multimonth-header-table{table-layout:fixed;width:100%}.fc .fc-multimonth-daygrid-table{border-top-style:hidden!important}.fc .fc-multimonth-singlecol .fc-multimonth{position:relative}.fc .fc-multimonth-singlecol .fc-multimonth-header{background:var(--fc-page-bg-color);position:relative;top:0;z-index:2}.fc .fc-multimonth-singlecol .fc-multimonth-daygrid{position:relative;z-index:1}.fc .fc-multimonth-singlecol .fc-multimonth-daygrid-table,.fc .fc-multimonth-singlecol .fc-multimonth-header-table{border-left-style:hidden;border-right-style:hidden}.fc .fc-multimonth-singlecol .fc-multimonth-month:last-child .fc-multimonth-daygrid-table{border-bottom-style:hidden}.fc .fc-multimonth-multicol{line-height:1}.fc .fc-multimonth-multicol .fc-multimonth-month{padding:0 1.2em 1.2em}.fc .fc-multimonth-multicol .fc-daygrid-more-link{border:1px solid var(--fc-event-border-color);display:block;float:none;padding:1px}.fc .fc-multimonth-compact{line-height:1}.fc .fc-multimonth-compact .fc-multimonth-daygrid-table,.fc .fc-multimonth-compact .fc-multimonth-header-table{font-size:.9em}.fc-media-screen .fc-multimonth-singlecol .fc-multimonth-header{position:sticky}.fc-media-print .fc-multimonth{overflow:visible}";injectStyles(css_248z$3);var index$8=createPlugin({name:'@fullcalendar/multimonth',initialView:'multiMonthYear',optionRefiners:OPTION_REFINERS$2,views:{multiMonth:{component:MultiMonthView,dateProfileGeneratorClass:TableDateProfileGenerator,multiMonthMinWidth:350,multiMonthMaxColumns:3,},multiMonthYear:{type:'multiMonth',duration:{years:1},fixedWeekCount:true,showNonCurrentDates:false,},},});const UPGRADE_WINDOW=365+7;const INVALID_LICENSE_URL='https://fullcalendar.io/docs/schedulerLicenseKey#invalid';const OUTDATED_LICENSE_URL='https://fullcalendar.io/docs/schedulerLicenseKey#outdated';const PRESET_LICENSE_KEYS=['GPL-My-Project-Is-Open-Source','CC-Attribution-NonCommercial-NoDerivatives',];const CSS={position:'absolute',zIndex:99999,bottom:'1px',left:'1px',background:'#eee',borderColor:'#ddd',borderStyle:'solid',borderWidth:'1px 1px 0 0',padding:'2px 4px',fontSize:'12px',borderTopRightRadius:'3px',};function buildLicenseWarning(context){let key=context.options.schedulerLicenseKey;let currentUrl=typeof window!=='undefined'?window.location.href:'';if(!isImmuneUrl(currentUrl)){let status=processLicenseKey(key,context.pluginHooks.premiumReleaseDate);if(status!=='valid'){return(y("div",{className:"fc-license-message",style:CSS},(status==='outdated')?(y(_,null,'Your license key is too old to work with this version. ',y("a",{href:OUTDATED_LICENSE_URL},"More Info"))):(y(_,null,'Your license key is invalid. ',y("a",{href:INVALID_LICENSE_URL},"More Info")))));}}
return null;}
function processLicenseKey(key,premiumReleaseDate){if(PRESET_LICENSE_KEYS.indexOf(key)!==-1){return'valid';}
const parts=(key||'').match(/^(\d+)-fcs-(\d+)$/);if(parts&&(parts[1].length===10)){const purchaseDate=new Date(parseInt(parts[2],10)*1000);const releaseDate=config.mockSchedulerReleaseDate||premiumReleaseDate;if(isValidDate$1(releaseDate)){const minPurchaseDate=addDays(releaseDate,-UPGRADE_WINDOW);if(minPurchaseDate<purchaseDate){return'valid';}
return'outdated';}}
return'invalid';}
function isImmuneUrl(url){return /\w+:\/\/fullcalendar\.io\/|\/examples\/[\w-]+\.html$/.test(url);}
const OPTION_REFINERS$1={schedulerLicenseKey:String,};var index$7=createPlugin({name:'@fullcalendar/premium-common',premiumReleaseDate:'2024-06-05',optionRefiners:OPTION_REFINERS$1,viewContainerAppends:[buildLicenseWarning],});function getScrollCanvasOrigin(scrollEl){let rect=scrollEl.getBoundingClientRect();let edges=computeEdges(scrollEl);return{left:rect.left+edges.borderLeft+edges.scrollbarLeft-getScrollFromLeftEdge(scrollEl),top:rect.top+edges.borderTop-scrollEl.scrollTop,};}
function getScrollFromLeftEdge(el){let scrollLeft=el.scrollLeft;let computedStyles=window.getComputedStyle(el);if(computedStyles.direction==='rtl'){switch(getRtlScrollSystem()){case'negative':scrollLeft*=-1;case'reverse':scrollLeft=el.scrollWidth-scrollLeft-el.clientWidth;}}
return scrollLeft;}
function setScrollFromLeftEdge(el,scrollLeft){let computedStyles=window.getComputedStyle(el);if(computedStyles.direction==='rtl'){switch(getRtlScrollSystem()){case'reverse':scrollLeft=el.scrollWidth-scrollLeft;break;case'negative':scrollLeft=-(el.scrollWidth-scrollLeft);break;}}
el.scrollLeft=scrollLeft;}
let _rtlScrollSystem;function getRtlScrollSystem(){return _rtlScrollSystem||(_rtlScrollSystem=detectRtlScrollSystem());}
function detectRtlScrollSystem(){let el=document.createElement('div');el.style.position='absolute';el.style.top='-1000px';el.style.width='100px';el.style.height='100px';el.style.overflow='scroll';el.style.direction='rtl';let innerEl=document.createElement('div');innerEl.style.width='200px';innerEl.style.height='200px';el.appendChild(innerEl);document.body.appendChild(el);let system;if(el.scrollLeft>0){system='positive';}
else{el.scrollLeft=1;if(el.scrollLeft>0){system='reverse';}
else{system='negative';}}
removeElement(el);return system;}
const STICKY_SELECTOR='.fc-sticky';class StickyScrolling{constructor(scrollEl,isRtl){this.scrollEl=scrollEl;this.isRtl=isRtl;this.updateSize=()=>{let{scrollEl}=this;let els=findElements(scrollEl,STICKY_SELECTOR);let elGeoms=this.queryElGeoms(els);let viewportWidth=scrollEl.clientWidth;assignStickyPositions(els,elGeoms,viewportWidth);};}
queryElGeoms(els){let{scrollEl,isRtl}=this;let canvasOrigin=getScrollCanvasOrigin(scrollEl);let elGeoms=[];for(let el of els){let parentBound=translateRect(computeInnerRect(el.parentNode,true,true),-canvasOrigin.left,-canvasOrigin.top);let elRect=el.getBoundingClientRect();let computedStyles=window.getComputedStyle(el);let textAlign=window.getComputedStyle(el.parentNode).textAlign;let naturalBound=null;if(textAlign==='start'){textAlign=isRtl?'right':'left';}
else if(textAlign==='end'){textAlign=isRtl?'left':'right';}
if(computedStyles.position!=='sticky'){naturalBound=translateRect(elRect,-canvasOrigin.left-(parseFloat(computedStyles.left)||0),-canvasOrigin.top-(parseFloat(computedStyles.top)||0));}
elGeoms.push({parentBound,naturalBound,elWidth:elRect.width,elHeight:elRect.height,textAlign,});}
return elGeoms;}}
function assignStickyPositions(els,elGeoms,viewportWidth){els.forEach((el,i)=>{let{textAlign,elWidth,parentBound}=elGeoms[i];let parentWidth=parentBound.right-parentBound.left;let left;if(textAlign==='center'&&parentWidth>viewportWidth){left=(viewportWidth-elWidth)/2;}
else{left='';}
applyStyle(el,{left,right:left,top:0,});});}
class ClippedScroller extends BaseComponent{constructor(){super(...arguments);this.elRef=d();this.state={xScrollbarWidth:0,yScrollbarWidth:0,};this.handleScroller=(scroller)=>{this.scroller=scroller;setRef(this.props.scrollerRef,scroller);};this.handleSizing=()=>{let{props}=this;if(props.overflowY==='scroll-hidden'){this.setState({yScrollbarWidth:this.scroller.getYScrollbarWidth()});}
if(props.overflowX==='scroll-hidden'){this.setState({xScrollbarWidth:this.scroller.getXScrollbarWidth()});}};}
render(){let{props,state,context}=this;let isScrollbarOnLeft=context.isRtl&&getIsRtlScrollbarOnLeft();let overcomeLeft=0;let overcomeRight=0;let overcomeBottom=0;let{overflowX,overflowY}=props;if(props.forPrint){overflowX='visible';overflowY='visible';}
if(overflowX==='scroll-hidden'){overcomeBottom=state.xScrollbarWidth;}
if(overflowY==='scroll-hidden'){if(state.yScrollbarWidth!=null){if(isScrollbarOnLeft){overcomeLeft=state.yScrollbarWidth;}
else{overcomeRight=state.yScrollbarWidth;}}}
return(y("div",{ref:this.elRef,className:'fc-scroller-harness'+(props.liquid?' fc-scroller-harness-liquid':'')},y(Scroller,{ref:this.handleScroller,elRef:this.props.scrollerElRef,overflowX:overflowX==='scroll-hidden'?'scroll':overflowX,overflowY:overflowY==='scroll-hidden'?'scroll':overflowY,overcomeLeft:overcomeLeft,overcomeRight:overcomeRight,overcomeBottom:overcomeBottom,maxHeight:typeof props.maxHeight==='number'?(props.maxHeight+(overflowX==='scroll-hidden'?state.xScrollbarWidth:0)):'',liquid:props.liquid,liquidIsAbsolute:true},props.children)));}
componentDidMount(){this.handleSizing();this.context.addResizeHandler(this.handleSizing);}
getSnapshotBeforeUpdate(prevProps){if(this.props.forPrint&&!prevProps.forPrint){return{simulateScrollLeft:this.scroller.el.scrollLeft};}
return{};}
componentDidUpdate(prevProps,prevState,snapshot){const{props,scroller:{el:scrollerEl}}=this;if(!isPropsEqual(prevProps,props)){this.handleSizing();}
if(snapshot.simulateScrollLeft!==undefined){scrollerEl.style.left=-snapshot.simulateScrollLeft+'px';}
else if(!props.forPrint&&prevProps.forPrint){const restoredScrollLeft=-parseInt(scrollerEl.style.left);scrollerEl.style.left='';scrollerEl.scrollLeft=restoredScrollLeft;}}
componentWillUnmount(){this.context.removeResizeHandler(this.handleSizing);}
needsXScrolling(){return this.scroller.needsXScrolling();}
needsYScrolling(){return this.scroller.needsYScrolling();}}
const WHEEL_EVENT_NAMES='wheel mousewheel DomMouseScroll MozMousePixelScroll'.split(' ');class ScrollListener{constructor(el){this.el=el;this.emitter=new Emitter();this.isScrolling=false;this.isTouching=false;this.isRecentlyWheeled=false;this.isRecentlyScrolled=false;this.wheelWaiter=new DelayedRunner(this._handleWheelWaited.bind(this));this.scrollWaiter=new DelayedRunner(this._handleScrollWaited.bind(this));this.handleScroll=()=>{this.startScroll();this.emitter.trigger('scroll',this.isRecentlyWheeled,this.isTouching);this.isRecentlyScrolled=true;this.scrollWaiter.request(500);};this.handleWheel=()=>{this.isRecentlyWheeled=true;this.wheelWaiter.request(500);};this.handleTouchStart=()=>{this.isTouching=true;};this.handleTouchEnd=()=>{this.isTouching=false;if(!this.isRecentlyScrolled){this.endScroll();}};el.addEventListener('scroll',this.handleScroll);el.addEventListener('touchstart',this.handleTouchStart,{passive:true});el.addEventListener('touchend',this.handleTouchEnd);for(let eventName of WHEEL_EVENT_NAMES){el.addEventListener(eventName,this.handleWheel);}}
destroy(){let{el}=this;el.removeEventListener('scroll',this.handleScroll);el.removeEventListener('touchstart',this.handleTouchStart,{passive:true});el.removeEventListener('touchend',this.handleTouchEnd);for(let eventName of WHEEL_EVENT_NAMES){el.removeEventListener(eventName,this.handleWheel);}}
startScroll(){if(!this.isScrolling){this.isScrolling=true;this.emitter.trigger('scrollStart',this.isRecentlyWheeled,this.isTouching);}}
endScroll(){if(this.isScrolling){this.emitter.trigger('scrollEnd');this.isScrolling=false;this.isRecentlyScrolled=true;this.isRecentlyWheeled=false;this.scrollWaiter.clear();this.wheelWaiter.clear();}}
_handleScrollWaited(){this.isRecentlyScrolled=false;if(!this.isTouching){this.endScroll();}}
_handleWheelWaited(){this.isRecentlyWheeled=false;}}
class ScrollSyncer{constructor(isVertical,scrollEls){this.isVertical=isVertical;this.scrollEls=scrollEls;this.isPaused=false;this.scrollListeners=scrollEls.map((el)=>this.bindScroller(el));}
destroy(){for(let scrollListener of this.scrollListeners){scrollListener.destroy();}}
bindScroller(el){let{scrollEls,isVertical}=this;let scrollListener=new ScrollListener(el);const onScroll=(isWheel,isTouch)=>{if(!this.isPaused){if(!this.masterEl||(this.masterEl!==el&&(isWheel||isTouch))){this.assignMaster(el);}
if(this.masterEl===el){for(let otherEl of scrollEls){if(otherEl!==el){if(isVertical){otherEl.scrollTop=el.scrollTop;}
else{otherEl.scrollLeft=el.scrollLeft;}}}}}};const onScrollEnd=()=>{if(this.masterEl===el){this.masterEl=null;}};scrollListener.emitter.on('scroll',onScroll);scrollListener.emitter.on('scrollEnd',onScrollEnd);return scrollListener;}
assignMaster(el){this.masterEl=el;for(let scrollListener of this.scrollListeners){if(scrollListener.el!==el){scrollListener.endScroll();}}}
forceScrollLeft(scrollLeft){this.isPaused=true;for(let listener of this.scrollListeners){setScrollFromLeftEdge(listener.el,scrollLeft);}
this.isPaused=false;}
forceScrollTop(top){this.isPaused=true;for(let listener of this.scrollListeners){listener.el.scrollTop=top;}
this.isPaused=false;}}
config.SCROLLGRID_RESIZE_INTERVAL=500;class ScrollGrid extends BaseComponent{constructor(){super(...arguments);this.compileColGroupStats=memoizeArraylike(compileColGroupStat,isColGroupStatsEqual);this.renderMicroColGroups=memoizeArraylike(renderMicroColGroup);this.clippedScrollerRefs=new RefMap();this.scrollerElRefs=new RefMap(this._handleScrollerEl.bind(this));this.chunkElRefs=new RefMap(this._handleChunkEl.bind(this));this.scrollSyncersBySection={};this.scrollSyncersByColumn={};this.rowUnstableMap=new Map();this.rowInnerMaxHeightMap=new Map();this.anyRowHeightsChanged=false;this.recentSizingCnt=0;this.state={shrinkWidths:[],forceYScrollbars:false,forceXScrollbars:false,scrollerClientWidths:{},scrollerClientHeights:{},sectionRowMaxHeights:[],};this.handleSizing=(isForcedResize,sectionRowMaxHeightsChanged)=>{if(!this.allowSizing()){return;}
if(!sectionRowMaxHeightsChanged){this.anyRowHeightsChanged=true;}
let otherState={};if(isForcedResize||(!sectionRowMaxHeightsChanged&&!this.rowUnstableMap.size)){otherState.sectionRowMaxHeights=this.computeSectionRowMaxHeights();}
this.setState(Object.assign(Object.assign({shrinkWidths:this.computeShrinkWidths()},this.computeScrollerDims()),otherState),()=>{if(!this.rowUnstableMap.size){this.updateStickyScrolling();}});};this.handleRowHeightChange=(rowEl,isStable)=>{let{rowUnstableMap,rowInnerMaxHeightMap}=this;if(!isStable){rowUnstableMap.set(rowEl,true);}
else{rowUnstableMap.delete(rowEl);let innerMaxHeight=getRowInnerMaxHeight(rowEl);if(!rowInnerMaxHeightMap.has(rowEl)||rowInnerMaxHeightMap.get(rowEl)!==innerMaxHeight){rowInnerMaxHeightMap.set(rowEl,innerMaxHeight);this.anyRowHeightsChanged=true;}
if(!rowUnstableMap.size&&this.anyRowHeightsChanged){this.anyRowHeightsChanged=false;this.setState({sectionRowMaxHeights:this.computeSectionRowMaxHeights(),});}}};}
render(){let{props,state,context}=this;let{shrinkWidths}=state;let colGroupStats=this.compileColGroupStats(props.colGroups.map((colGroup)=>[colGroup]));let microColGroupNodes=this.renderMicroColGroups(colGroupStats.map((stat,i)=>[stat.cols,shrinkWidths[i]]));let classNames=getScrollGridClassNames(props.liquid,context);this.getDims();let sectionConfigs=props.sections;let configCnt=sectionConfigs.length;let configI=0;let currentConfig;let headSectionNodes=[];let bodySectionNodes=[];let footSectionNodes=[];while(configI<configCnt&&(currentConfig=sectionConfigs[configI]).type==='header'){headSectionNodes.push(this.renderSection(currentConfig,configI,colGroupStats,microColGroupNodes,state.sectionRowMaxHeights,true));configI+=1;}
while(configI<configCnt&&(currentConfig=sectionConfigs[configI]).type==='body'){bodySectionNodes.push(this.renderSection(currentConfig,configI,colGroupStats,microColGroupNodes,state.sectionRowMaxHeights,false));configI+=1;}
while(configI<configCnt&&(currentConfig=sectionConfigs[configI]).type==='footer'){footSectionNodes.push(this.renderSection(currentConfig,configI,colGroupStats,microColGroupNodes,state.sectionRowMaxHeights,true));configI+=1;}
const isBuggy=!getCanVGrowWithinCell();const roleAttrs={role:'rowgroup'};return y('table',{ref:props.elRef,role:'grid',className:classNames.join(' '),},renderMacroColGroup(colGroupStats,shrinkWidths),Boolean(!isBuggy&&headSectionNodes.length)&&y('thead',roleAttrs,...headSectionNodes),Boolean(!isBuggy&&bodySectionNodes.length)&&y('tbody',roleAttrs,...bodySectionNodes),Boolean(!isBuggy&&footSectionNodes.length)&&y('tfoot',roleAttrs,...footSectionNodes),isBuggy&&y('tbody',roleAttrs,...headSectionNodes,...bodySectionNodes,...footSectionNodes));}
renderSection(sectionConfig,sectionIndex,colGroupStats,microColGroupNodes,sectionRowMaxHeights,isHeader){if('outerContent'in sectionConfig){return(y(_,{key:sectionConfig.key},sectionConfig.outerContent));}
return(y("tr",{key:sectionConfig.key,role:"presentation",className:getSectionClassNames(sectionConfig,this.props.liquid).join(' ')},sectionConfig.chunks.map((chunkConfig,i)=>this.renderChunk(sectionConfig,sectionIndex,colGroupStats[i],microColGroupNodes[i],chunkConfig,i,(sectionRowMaxHeights[sectionIndex]||[])[i]||[],isHeader))));}
renderChunk(sectionConfig,sectionIndex,colGroupStat,microColGroupNode,chunkConfig,chunkIndex,rowHeights,isHeader){if('outerContent'in chunkConfig){return(y(_,{key:chunkConfig.key},chunkConfig.outerContent));}
let{state}=this;let{scrollerClientWidths,scrollerClientHeights}=state;let[sectionCnt,chunksPerSection]=this.getDims();let index=sectionIndex*chunksPerSection+chunkIndex;let sideScrollIndex=(!this.context.isRtl||getIsRtlScrollbarOnLeft())?chunksPerSection-1:0;let isVScrollSide=chunkIndex===sideScrollIndex;let isLastSection=sectionIndex===sectionCnt-1;let forceXScrollbars=isLastSection&&state.forceXScrollbars;let forceYScrollbars=isVScrollSide&&state.forceYScrollbars;let allowXScrolling=colGroupStat&&colGroupStat.allowXScrolling;let allowYScrolling=getAllowYScrolling(this.props,sectionConfig);let chunkVGrow=getSectionHasLiquidHeight(this.props,sectionConfig);let expandRows=sectionConfig.expandRows&&chunkVGrow;let tableMinWidth=(colGroupStat&&colGroupStat.totalColMinWidth)||'';let content=renderChunkContent(sectionConfig,chunkConfig,{tableColGroupNode:microColGroupNode,tableMinWidth,clientWidth:scrollerClientWidths[index]!==undefined?scrollerClientWidths[index]:null,clientHeight:scrollerClientHeights[index]!==undefined?scrollerClientHeights[index]:null,expandRows,syncRowHeights:Boolean(sectionConfig.syncRowHeights),rowSyncHeights:rowHeights,reportRowHeightChange:this.handleRowHeightChange,},isHeader);let overflowX=forceXScrollbars?(isLastSection?'scroll':'scroll-hidden'):!allowXScrolling?'hidden':(isLastSection?'auto':'scroll-hidden');let overflowY=forceYScrollbars?(isVScrollSide?'scroll':'scroll-hidden'):!allowYScrolling?'hidden':(isVScrollSide?'auto':'scroll-hidden');content=(y(ClippedScroller,{ref:this.clippedScrollerRefs.createRef(index),scrollerElRef:this.scrollerElRefs.createRef(index),overflowX:overflowX,overflowY:overflowY,forPrint:this.props.forPrint,liquid:chunkVGrow,maxHeight:sectionConfig.maxHeight},content));return y(isHeader?'th':'td',{key:chunkConfig.key,ref:this.chunkElRefs.createRef(index),role:'presentation',},content);}
componentDidMount(){this.getStickyScrolling=memoizeArraylike(initStickyScrolling);this.getScrollSyncersBySection=memoizeHashlike(initScrollSyncer.bind(this,true),null,destroyScrollSyncer);this.getScrollSyncersByColumn=memoizeHashlike(initScrollSyncer.bind(this,false),null,destroyScrollSyncer);this.updateScrollSyncers();this.handleSizing(false);this.context.addResizeHandler(this.handleSizing);}
componentDidUpdate(prevProps,prevState){this.updateScrollSyncers();this.handleSizing(false,prevState.sectionRowMaxHeights!==this.state.sectionRowMaxHeights);}
componentWillUnmount(){this.context.removeResizeHandler(this.handleSizing);this.destroyScrollSyncers();}
allowSizing(){let now=new Date();if(!this.lastSizingDate||now.valueOf()>this.lastSizingDate.valueOf()+config.SCROLLGRID_RESIZE_INTERVAL){this.lastSizingDate=now;this.recentSizingCnt=0;return true;}
return(this.recentSizingCnt+=1)<=10;}
computeShrinkWidths(){let colGroupStats=this.compileColGroupStats(this.props.colGroups.map((colGroup)=>[colGroup]));let[sectionCnt,chunksPerSection]=this.getDims();let cnt=sectionCnt*chunksPerSection;let shrinkWidths=[];colGroupStats.forEach((colGroupStat,i)=>{if(colGroupStat.hasShrinkCol){let chunkEls=this.chunkElRefs.collect(i,cnt,chunksPerSection);shrinkWidths[i]=computeShrinkWidth(chunkEls);}});return shrinkWidths;}
computeSectionRowMaxHeights(){let newHeightMap=new Map();let[sectionCnt,chunksPerSection]=this.getDims();let sectionRowMaxHeights=[];for(let sectionI=0;sectionI<sectionCnt;sectionI+=1){let sectionConfig=this.props.sections[sectionI];let assignableHeights=[];if(sectionConfig&&sectionConfig.syncRowHeights){let rowHeightsByChunk=[];for(let chunkI=0;chunkI<chunksPerSection;chunkI+=1){let index=sectionI*chunksPerSection+chunkI;let rowHeights=[];let chunkEl=this.chunkElRefs.currentMap[index];if(chunkEl){rowHeights=findElements(chunkEl,'.fc-scrollgrid-sync-table tr').map((rowEl)=>{let max=getRowInnerMaxHeight(rowEl);newHeightMap.set(rowEl,max);return max;});}
else{rowHeights=[];}
rowHeightsByChunk.push(rowHeights);}
let rowCnt=rowHeightsByChunk[0].length;let isEqualRowCnt=true;for(let chunkI=1;chunkI<chunksPerSection;chunkI+=1){let isOuterContent=sectionConfig.chunks[chunkI]&&sectionConfig.chunks[chunkI].outerContent!==undefined;if(!isOuterContent&&rowHeightsByChunk[chunkI].length!==rowCnt){isEqualRowCnt=false;break;}}
if(!isEqualRowCnt){let chunkHeightSums=[];for(let chunkI=0;chunkI<chunksPerSection;chunkI+=1){chunkHeightSums.push(sumNumbers(rowHeightsByChunk[chunkI])+rowHeightsByChunk[chunkI].length);}
let maxTotalSum=Math.max(...chunkHeightSums);for(let chunkI=0;chunkI<chunksPerSection;chunkI+=1){let rowInChunkCnt=rowHeightsByChunk[chunkI].length;let rowInChunkTotalHeight=maxTotalSum-rowInChunkCnt;let rowInChunkHeightOthers=Math.floor(rowInChunkTotalHeight/rowInChunkCnt);let rowInChunkHeightFirst=rowInChunkTotalHeight-rowInChunkHeightOthers*(rowInChunkCnt-1);let rowInChunkHeights=[];let row=0;if(row<rowInChunkCnt){rowInChunkHeights.push(rowInChunkHeightFirst);row+=1;}
while(row<rowInChunkCnt){rowInChunkHeights.push(rowInChunkHeightOthers);row+=1;}
assignableHeights.push(rowInChunkHeights);}}
else{for(let chunkI=0;chunkI<chunksPerSection;chunkI+=1){assignableHeights.push([]);}
for(let row=0;row<rowCnt;row+=1){let rowHeightsAcrossChunks=[];for(let chunkI=0;chunkI<chunksPerSection;chunkI+=1){let h=rowHeightsByChunk[chunkI][row];if(h!=null){rowHeightsAcrossChunks.push(h);}}
let maxHeight=Math.max(...rowHeightsAcrossChunks);for(let chunkI=0;chunkI<chunksPerSection;chunkI+=1){assignableHeights[chunkI].push(maxHeight);}}}}
sectionRowMaxHeights.push(assignableHeights);}
this.rowInnerMaxHeightMap=newHeightMap;return sectionRowMaxHeights;}
computeScrollerDims(){let scrollbarWidth=getScrollbarWidths();let[sectionCnt,chunksPerSection]=this.getDims();let sideScrollI=(!this.context.isRtl||getIsRtlScrollbarOnLeft())?chunksPerSection-1:0;let lastSectionI=sectionCnt-1;let currentScrollers=this.clippedScrollerRefs.currentMap;let scrollerEls=this.scrollerElRefs.currentMap;let forceYScrollbars=false;let forceXScrollbars=false;let scrollerClientWidths={};let scrollerClientHeights={};for(let sectionI=0;sectionI<sectionCnt;sectionI+=1){let index=sectionI*chunksPerSection+sideScrollI;let scroller=currentScrollers[index];if(scroller&&scroller.needsYScrolling()){forceYScrollbars=true;break;}}
for(let chunkI=0;chunkI<chunksPerSection;chunkI+=1){let index=lastSectionI*chunksPerSection+chunkI;let scroller=currentScrollers[index];if(scroller&&scroller.needsXScrolling()){forceXScrollbars=true;break;}}
for(let sectionI=0;sectionI<sectionCnt;sectionI+=1){for(let chunkI=0;chunkI<chunksPerSection;chunkI+=1){let index=sectionI*chunksPerSection+chunkI;let scrollerEl=scrollerEls[index];if(scrollerEl){let harnessEl=scrollerEl.parentNode;scrollerClientWidths[index]=Math.floor(harnessEl.getBoundingClientRect().width-((chunkI===sideScrollI&&forceYScrollbars)?scrollbarWidth.y:0));scrollerClientHeights[index]=Math.floor(harnessEl.getBoundingClientRect().height-((sectionI===lastSectionI&&forceXScrollbars)?scrollbarWidth.x:0));}}}
return{forceYScrollbars,forceXScrollbars,scrollerClientWidths,scrollerClientHeights};}
updateStickyScrolling(){let{isRtl}=this.context;let argsByKey=this.scrollerElRefs.getAll().map((scrollEl)=>[scrollEl,isRtl]);this.getStickyScrolling(argsByKey).forEach((stickyScrolling)=>stickyScrolling.updateSize());}
updateScrollSyncers(){let[sectionCnt,chunksPerSection]=this.getDims();let cnt=sectionCnt*chunksPerSection;let scrollElsBySection={};let scrollElsByColumn={};let scrollElMap=this.scrollerElRefs.currentMap;for(let sectionI=0;sectionI<sectionCnt;sectionI+=1){let startIndex=sectionI*chunksPerSection;let endIndex=startIndex+chunksPerSection;scrollElsBySection[sectionI]=collectFromHash(scrollElMap,startIndex,endIndex,1);}
for(let col=0;col<chunksPerSection;col+=1){scrollElsByColumn[col]=this.scrollerElRefs.collect(col,cnt,chunksPerSection);}
this.scrollSyncersBySection=this.getScrollSyncersBySection(scrollElsBySection);this.scrollSyncersByColumn=this.getScrollSyncersByColumn(scrollElsByColumn);}
destroyScrollSyncers(){mapHash(this.scrollSyncersBySection,destroyScrollSyncer);mapHash(this.scrollSyncersByColumn,destroyScrollSyncer);}
getChunkConfigByIndex(index){let chunksPerSection=this.getDims()[1];let sectionI=Math.floor(index/chunksPerSection);let chunkI=index%chunksPerSection;let sectionConfig=this.props.sections[sectionI];return sectionConfig&&sectionConfig.chunks[chunkI];}
forceScrollLeft(col,scrollLeft){let scrollSyncer=this.scrollSyncersByColumn[col];if(scrollSyncer){scrollSyncer.forceScrollLeft(scrollLeft);}}
forceScrollTop(sectionI,scrollTop){let scrollSyncer=this.scrollSyncersBySection[sectionI];if(scrollSyncer){scrollSyncer.forceScrollTop(scrollTop);}}
_handleChunkEl(chunkEl,key){let chunkConfig=this.getChunkConfigByIndex(parseInt(key,10));if(chunkConfig){setRef(chunkConfig.elRef,chunkEl);}}
_handleScrollerEl(scrollerEl,key){let chunkConfig=this.getChunkConfigByIndex(parseInt(key,10));if(chunkConfig){setRef(chunkConfig.scrollerElRef,scrollerEl);}}
getDims(){let sectionCnt=this.props.sections.length;let chunksPerSection=sectionCnt?this.props.sections[0].chunks.length:0;return[sectionCnt,chunksPerSection];}}
ScrollGrid.addStateEquality({shrinkWidths:isArraysEqual,scrollerClientWidths:isPropsEqual,scrollerClientHeights:isPropsEqual,});function sumNumbers(numbers){let sum=0;for(let n of numbers){sum+=n;}
return sum;}
function getRowInnerMaxHeight(rowEl){let innerHeights=findElements(rowEl,'.fc-scrollgrid-sync-inner').map(getElHeight);if(innerHeights.length){return Math.max(...innerHeights);}
return 0;}
function getElHeight(el){return el.offsetHeight;}
function renderMacroColGroup(colGroupStats,shrinkWidths){let children=colGroupStats.map((colGroupStat,i)=>{let width=colGroupStat.width;if(width==='shrink'){width=colGroupStat.totalColWidth+sanitizeShrinkWidth(shrinkWidths[i])+1;}
return(y("col",{style:{width}}));});return y('colgroup',{},...children);}
function compileColGroupStat(colGroupConfig){let totalColWidth=sumColProp(colGroupConfig.cols,'width');let totalColMinWidth=sumColProp(colGroupConfig.cols,'minWidth');let hasShrinkCol=hasShrinkWidth(colGroupConfig.cols);let allowXScrolling=colGroupConfig.width!=='shrink'&&Boolean(totalColWidth||totalColMinWidth||hasShrinkCol);return{hasShrinkCol,totalColWidth,totalColMinWidth,allowXScrolling,cols:colGroupConfig.cols,width:colGroupConfig.width,};}
function sumColProp(cols,propName){let total=0;for(let col of cols){let val=col[propName];if(typeof val==='number'){total+=val*(col.span||1);}}
return total;}
const COL_GROUP_STAT_EQUALITY={cols:isColPropsEqual,};function isColGroupStatsEqual(stat0,stat1){return compareObjs(stat0,stat1,COL_GROUP_STAT_EQUALITY);}
function initScrollSyncer(isVertical,...scrollEls){return new ScrollSyncer(isVertical,scrollEls);}
function destroyScrollSyncer(scrollSyncer){scrollSyncer.destroy();}
function initStickyScrolling(scrollEl,isRtl){return new StickyScrolling(scrollEl,isRtl);}
var index$6=createPlugin({name:'@fullcalendar/scrollgrid',premiumReleaseDate:'2024-06-05',deps:[index$7],scrollGridImpl:ScrollGrid,});config.COLLAPSIBLE_WIDTH_THRESHOLD=1200;let contexts=[];let undoFuncs=[];function contextInit(context){if(!contexts.length){attachGlobalHandlers();}
contexts.push(context);context.calendarApi.on('_unmount',()=>{removeExact(contexts,context);if(!contexts.length){removeGlobalHandlers();}});}
function attachGlobalHandlers(){window.addEventListener('beforeprint',handleBeforePrint);window.addEventListener('afterprint',handleAfterPrint);}
function removeGlobalHandlers(){window.removeEventListener('beforeprint',handleBeforePrint);window.removeEventListener('afterprint',handleAfterPrint);}
function handleBeforePrint(){for(let context of contexts){context.emitter.trigger('_beforeprint');}
flushSync(()=>{undoFuncs.push(freezeScrollgridWidths());});}
function handleAfterPrint(){for(let context of contexts){context.emitter.trigger('_afterprint');}
flushSync(()=>{while(undoFuncs.length){undoFuncs.shift()();}});}
function freezeScrollgridWidths(){let els=findElements(document.body,'.fc-scrollgrid');els.forEach(freezeScrollGridWidth);return()=>els.forEach(unfreezeScrollGridWidth);}
function freezeScrollGridWidth(el){let elWidth=el.getBoundingClientRect().width;if(!el.classList.contains('fc-scrollgrid-collapsible')||elWidth<config.COLLAPSIBLE_WIDTH_THRESHOLD){el.style.width=elWidth+'px';}}
function unfreezeScrollGridWidth(el){el.style.width='';}
var css_248z$2=".fc .fc-event,.fc .fc-scrollgrid table tr{-moz-column-break-inside:avoid;break-inside:avoid}.fc-media-print{display:block;max-width:100%}.fc-media-print .fc-bg-event,.fc-media-print .fc-non-business,.fc-media-print .fc-timegrid-axis-chunk,.fc-media-print .fc-timegrid-slots,.fc-media-print .fc-timeline-slots{display:none}.fc-media-print .fc-h-event,.fc-media-print .fc-toolbar button,.fc-media-print .fc-v-event{background:#fff!important;color:#000!important}.fc-media-print .fc-event,.fc-media-print .fc-event-main{color:#000!important}.fc-media-print .fc-timegrid-event{margin:.5em 0}";injectStyles(css_248z$2);var index$5=createPlugin({name:'@fullcalendar/adaptive',premiumReleaseDate:'2024-06-05',deps:[index$7],contextInit,});const MIN_AUTO_LABELS=18;const MAX_AUTO_SLOTS_PER_LABEL=6;const MAX_AUTO_CELLS=200;config.MAX_TIMELINE_SLOTS=1000;const STOCK_SUB_DURATIONS=[{years:1},{months:1},{days:1},{hours:1},{minutes:30},{minutes:15},{minutes:10},{minutes:5},{minutes:1},{seconds:30},{seconds:15},{seconds:10},{seconds:5},{seconds:1},{milliseconds:500},{milliseconds:100},{milliseconds:10},{milliseconds:1},];function buildTimelineDateProfile(dateProfile,dateEnv,allOptions,dateProfileGenerator){let tDateProfile={labelInterval:allOptions.slotLabelInterval,slotDuration:allOptions.slotDuration,};validateLabelAndSlot(tDateProfile,dateProfile,dateEnv);ensureLabelInterval(tDateProfile,dateProfile,dateEnv);ensureSlotDuration(tDateProfile,dateProfile,dateEnv);let input=allOptions.slotLabelFormat;let rawFormats=Array.isArray(input)?input:(input!=null)?[input]:computeHeaderFormats(tDateProfile,dateProfile,dateEnv,allOptions);tDateProfile.headerFormats=rawFormats.map((rawFormat)=>createFormatter(rawFormat));tDateProfile.isTimeScale=Boolean(tDateProfile.slotDuration.milliseconds);let largeUnit=null;if(!tDateProfile.isTimeScale){const slotUnit=greatestDurationDenominator(tDateProfile.slotDuration).unit;if(/year|month|week/.test(slotUnit)){largeUnit=slotUnit;}}
tDateProfile.largeUnit=largeUnit;tDateProfile.emphasizeWeeks=asCleanDays(tDateProfile.slotDuration)===1&&currentRangeAs('weeks',dateProfile,dateEnv)>=2&&!allOptions.businessHours;let rawSnapDuration=allOptions.snapDuration;let snapDuration;let snapsPerSlot;if(rawSnapDuration){snapDuration=createDuration(rawSnapDuration);snapsPerSlot=wholeDivideDurations(tDateProfile.slotDuration,snapDuration);}
if(snapsPerSlot==null){snapDuration=tDateProfile.slotDuration;snapsPerSlot=1;}
tDateProfile.snapDuration=snapDuration;tDateProfile.snapsPerSlot=snapsPerSlot;let timeWindowMs=asRoughMs(dateProfile.slotMaxTime)-asRoughMs(dateProfile.slotMinTime);let normalizedStart=normalizeDate(dateProfile.renderRange.start,tDateProfile,dateEnv);let normalizedEnd=normalizeDate(dateProfile.renderRange.end,tDateProfile,dateEnv);if(tDateProfile.isTimeScale){normalizedStart=dateEnv.add(normalizedStart,dateProfile.slotMinTime);normalizedEnd=dateEnv.add(addDays(normalizedEnd,-1),dateProfile.slotMaxTime);}
tDateProfile.timeWindowMs=timeWindowMs;tDateProfile.normalizedRange={start:normalizedStart,end:normalizedEnd};let slotDates=[];let date=normalizedStart;while(date<normalizedEnd){if(isValidDate(date,tDateProfile,dateProfile,dateProfileGenerator)){slotDates.push(date);}
date=dateEnv.add(date,tDateProfile.slotDuration);}
tDateProfile.slotDates=slotDates;let snapIndex=-1;let snapDiff=0;const snapDiffToIndex=[];const snapIndexToDiff=[];date=normalizedStart;while(date<normalizedEnd){if(isValidDate(date,tDateProfile,dateProfile,dateProfileGenerator)){snapIndex+=1;snapDiffToIndex.push(snapIndex);snapIndexToDiff.push(snapDiff);}
else{snapDiffToIndex.push(snapIndex+0.5);}
date=dateEnv.add(date,tDateProfile.snapDuration);snapDiff+=1;}
tDateProfile.snapDiffToIndex=snapDiffToIndex;tDateProfile.snapIndexToDiff=snapIndexToDiff;tDateProfile.snapCnt=snapIndex+1;tDateProfile.slotCnt=tDateProfile.snapCnt/tDateProfile.snapsPerSlot;tDateProfile.isWeekStarts=buildIsWeekStarts(tDateProfile,dateEnv);tDateProfile.cellRows=buildCellRows(tDateProfile,dateEnv);tDateProfile.slotsPerLabel=wholeDivideDurations(tDateProfile.labelInterval,tDateProfile.slotDuration);return tDateProfile;}
function normalizeDate(date,tDateProfile,dateEnv){let normalDate=date;if(!tDateProfile.isTimeScale){normalDate=startOfDay(normalDate);if(tDateProfile.largeUnit){normalDate=dateEnv.startOf(normalDate,tDateProfile.largeUnit);}}
return normalDate;}
function normalizeRange(range,tDateProfile,dateEnv){if(!tDateProfile.isTimeScale){range=computeVisibleDayRange(range);if(tDateProfile.largeUnit){let dayRange=range;range={start:dateEnv.startOf(range.start,tDateProfile.largeUnit),end:dateEnv.startOf(range.end,tDateProfile.largeUnit),};if(range.end.valueOf()!==dayRange.end.valueOf()||range.end<=range.start){range={start:range.start,end:dateEnv.add(range.end,tDateProfile.slotDuration),};}}}
return range;}
function isValidDate(date,tDateProfile,dateProfile,dateProfileGenerator){if(dateProfileGenerator.isHiddenDay(date)){return false;}
if(tDateProfile.isTimeScale){let day=startOfDay(date);let timeMs=date.valueOf()-day.valueOf();let ms=timeMs-asRoughMs(dateProfile.slotMinTime);ms=((ms%86400000)+86400000)%86400000;return ms<tDateProfile.timeWindowMs;}
return true;}
function validateLabelAndSlot(tDateProfile,dateProfile,dateEnv){const{currentRange}=dateProfile;if(tDateProfile.labelInterval){const labelCnt=dateEnv.countDurationsBetween(currentRange.start,currentRange.end,tDateProfile.labelInterval);if(labelCnt>config.MAX_TIMELINE_SLOTS){console.warn('slotLabelInterval results in too many cells');tDateProfile.labelInterval=null;}}
if(tDateProfile.slotDuration){const slotCnt=dateEnv.countDurationsBetween(currentRange.start,currentRange.end,tDateProfile.slotDuration);if(slotCnt>config.MAX_TIMELINE_SLOTS){console.warn('slotDuration results in too many cells');tDateProfile.slotDuration=null;}}
if(tDateProfile.labelInterval&&tDateProfile.slotDuration){const slotsPerLabel=wholeDivideDurations(tDateProfile.labelInterval,tDateProfile.slotDuration);if(slotsPerLabel===null||slotsPerLabel<1){console.warn('slotLabelInterval must be a multiple of slotDuration');tDateProfile.slotDuration=null;}}}
function ensureLabelInterval(tDateProfile,dateProfile,dateEnv){const{currentRange}=dateProfile;let{labelInterval}=tDateProfile;if(!labelInterval){let input;if(tDateProfile.slotDuration){for(input of STOCK_SUB_DURATIONS){const tryLabelInterval=createDuration(input);const slotsPerLabel=wholeDivideDurations(tryLabelInterval,tDateProfile.slotDuration);if(slotsPerLabel!==null&&slotsPerLabel<=MAX_AUTO_SLOTS_PER_LABEL){labelInterval=tryLabelInterval;break;}}
if(!labelInterval){labelInterval=tDateProfile.slotDuration;}}
else{for(input of STOCK_SUB_DURATIONS){labelInterval=createDuration(input);const labelCnt=dateEnv.countDurationsBetween(currentRange.start,currentRange.end,labelInterval);if(labelCnt>=MIN_AUTO_LABELS){break;}}}
tDateProfile.labelInterval=labelInterval;}
return labelInterval;}
function ensureSlotDuration(tDateProfile,dateProfile,dateEnv){const{currentRange}=dateProfile;let{slotDuration}=tDateProfile;if(!slotDuration){const labelInterval=ensureLabelInterval(tDateProfile,dateProfile,dateEnv);for(let input of STOCK_SUB_DURATIONS){const trySlotDuration=createDuration(input);const slotsPerLabel=wholeDivideDurations(labelInterval,trySlotDuration);if(slotsPerLabel!==null&&slotsPerLabel>1&&slotsPerLabel<=MAX_AUTO_SLOTS_PER_LABEL){slotDuration=trySlotDuration;break;}}
if(slotDuration){const slotCnt=dateEnv.countDurationsBetween(currentRange.start,currentRange.end,slotDuration);if(slotCnt>MAX_AUTO_CELLS){slotDuration=null;}}
if(!slotDuration){slotDuration=labelInterval;}
tDateProfile.slotDuration=slotDuration;}
return slotDuration;}
function computeHeaderFormats(tDateProfile,dateProfile,dateEnv,allOptions){let format1;let format2;const{labelInterval}=tDateProfile;let unit=greatestDurationDenominator(labelInterval).unit;const weekNumbersVisible=allOptions.weekNumbers;let format0=(format1=(format2=null));if((unit==='week')&&!weekNumbersVisible){unit='day';}
switch(unit){case'year':format0={year:'numeric'};break;case'month':if(currentRangeAs('years',dateProfile,dateEnv)>1){format0={year:'numeric'};}
format1={month:'short'};break;case'week':if(currentRangeAs('years',dateProfile,dateEnv)>1){format0={year:'numeric'};}
format1={week:'narrow'};break;case'day':if(currentRangeAs('years',dateProfile,dateEnv)>1){format0={year:'numeric',month:'long'};}
else if(currentRangeAs('months',dateProfile,dateEnv)>1){format0={month:'long'};}
if(weekNumbersVisible){format1={week:'short'};}
format2={weekday:'narrow',day:'numeric'};break;case'hour':if(weekNumbersVisible){format0={week:'short'};}
if(currentRangeAs('days',dateProfile,dateEnv)>1){format1={weekday:'short',day:'numeric',month:'numeric',omitCommas:true};}
format2={hour:'numeric',minute:'2-digit',omitZeroMinute:true,meridiem:'short',};break;case'minute':if((asRoughMinutes(labelInterval)/60)>=MAX_AUTO_SLOTS_PER_LABEL){format0={hour:'numeric',meridiem:'short',};format1=(params)=>(':'+padStart(params.date.minute,2));}
else{format0={hour:'numeric',minute:'numeric',meridiem:'short',};}
break;case'second':if((asRoughSeconds(labelInterval)/60)>=MAX_AUTO_SLOTS_PER_LABEL){format0={hour:'numeric',minute:'2-digit',meridiem:'lowercase'};format1=(params)=>(':'+padStart(params.date.second,2));}
else{format0={hour:'numeric',minute:'2-digit',second:'2-digit',meridiem:'lowercase'};}
break;case'millisecond':format0={hour:'numeric',minute:'2-digit',second:'2-digit',meridiem:'lowercase'};format1=(params)=>('.'+padStart(params.millisecond,3));break;}
return[].concat(format0||[],format1||[],format2||[]);}
function currentRangeAs(unit,dateProfile,dateEnv){let range=dateProfile.currentRange;let res=null;if(unit==='years'){res=dateEnv.diffWholeYears(range.start,range.end);}
else if(unit==='months'){res=dateEnv.diffWholeMonths(range.start,range.end);}
else if(unit==='weeks'){res=dateEnv.diffWholeMonths(range.start,range.end);}
else if(unit==='days'){res=diffWholeDays(range.start,range.end);}
return res||0;}
function buildIsWeekStarts(tDateProfile,dateEnv){let{slotDates,emphasizeWeeks}=tDateProfile;let prevWeekNumber=null;let isWeekStarts=[];for(let slotDate of slotDates){let weekNumber=dateEnv.computeWeekNumber(slotDate);let isWeekStart=emphasizeWeeks&&(prevWeekNumber!==null)&&(prevWeekNumber!==weekNumber);prevWeekNumber=weekNumber;isWeekStarts.push(isWeekStart);}
return isWeekStarts;}
function buildCellRows(tDateProfile,dateEnv){let slotDates=tDateProfile.slotDates;let formats=tDateProfile.headerFormats;let cellRows=formats.map(()=>[]);let slotAsDays=asCleanDays(tDateProfile.slotDuration);let guessedSlotUnit=slotAsDays===7?'week':slotAsDays===1?'day':null;let rowUnitsFromFormats=formats.map((format)=>(format.getLargestUnit?format.getLargestUnit():null));for(let i=0;i<slotDates.length;i+=1){let date=slotDates[i];let isWeekStart=tDateProfile.isWeekStarts[i];for(let row=0;row<formats.length;row+=1){let format=formats[row];let rowCells=cellRows[row];let leadingCell=rowCells[rowCells.length-1];let isLastRow=row===formats.length-1;let isSuperRow=formats.length>1&&!isLastRow;let newCell=null;let rowUnit=rowUnitsFromFormats[row]||(isLastRow?guessedSlotUnit:null);if(isSuperRow){let text=dateEnv.format(date,format);if(!leadingCell||(leadingCell.text!==text)){newCell=buildCellObject(date,text,rowUnit);}
else{leadingCell.colspan+=1;}}
else if(!leadingCell||isInt(dateEnv.countDurationsBetween(tDateProfile.normalizedRange.start,date,tDateProfile.labelInterval))){let text=dateEnv.format(date,format);newCell=buildCellObject(date,text,rowUnit);}
else{leadingCell.colspan+=1;}
if(newCell){newCell.weekStart=isWeekStart;rowCells.push(newCell);}}}
return cellRows;}
function buildCellObject(date,text,rowUnit){return{date,text,rowUnit,colspan:1,isWeekStart:false};}
class TimelineHeaderTh extends BaseComponent{constructor(){super(...arguments);this.refineRenderProps=memoizeObjArg(refineRenderProps$3);this.buildCellNavLinkAttrs=memoize(buildCellNavLinkAttrs);}
render(){let{props,context}=this;let{dateEnv,options}=context;let{cell,dateProfile,tDateProfile}=props;let dateMeta=getDateMeta(cell.date,props.todayRange,props.nowDate,dateProfile);let renderProps=this.refineRenderProps({level:props.rowLevel,dateMarker:cell.date,text:cell.text,dateEnv:context.dateEnv,viewApi:context.viewApi,});return(y(ContentContainer,{elTag:"th",elClasses:['fc-timeline-slot','fc-timeline-slot-label',cell.isWeekStart&&'fc-timeline-slot-em',...(cell.rowUnit==='time'?getSlotClassNames(dateMeta,context.theme):getDayClassNames(dateMeta,context.theme)),],elAttrs:{colSpan:cell.colspan,'data-date':dateEnv.formatIso(cell.date,{omitTime:!tDateProfile.isTimeScale,omitTimeZoneOffset:true,}),},renderProps:renderProps,generatorName:"slotLabelContent",customGenerator:options.slotLabelContent,defaultGenerator:renderInnerContent$1,classNameGenerator:options.slotLabelClassNames,didMount:options.slotLabelDidMount,willUnmount:options.slotLabelWillUnmount},(InnerContent)=>(y("div",{className:"fc-timeline-slot-frame",style:{height:props.rowInnerHeight}},y(InnerContent,{elTag:"a",elClasses:['fc-timeline-slot-cushion','fc-scrollgrid-sync-inner',props.isSticky&&'fc-sticky',],elAttrs:this.buildCellNavLinkAttrs(context,cell.date,cell.rowUnit)})))));}}
function buildCellNavLinkAttrs(context,cellDate,rowUnit){return(rowUnit&&rowUnit!=='time')?buildNavLinkAttrs(context,cellDate,rowUnit):{};}
function renderInnerContent$1(renderProps){return renderProps.text;}
function refineRenderProps$3(input){return{level:input.level,date:input.dateEnv.toDate(input.dateMarker),view:input.viewApi,text:input.text,};}
class TimelineHeaderRows extends BaseComponent{render(){let{dateProfile,tDateProfile,rowInnerHeights,todayRange,nowDate}=this.props;let{cellRows}=tDateProfile;return(y(_,null,cellRows.map((rowCells,rowLevel)=>{let isLast=rowLevel===cellRows.length-1;let isChrono=tDateProfile.isTimeScale&&isLast;let classNames=['fc-timeline-header-row',isChrono?'fc-timeline-header-row-chrono':'',];return(y("tr",{key:rowLevel,className:classNames.join(' ')},rowCells.map((cell)=>(y(TimelineHeaderTh,{key:cell.date.toISOString(),cell:cell,rowLevel:rowLevel,dateProfile:dateProfile,tDateProfile:tDateProfile,todayRange:todayRange,nowDate:nowDate,rowInnerHeight:rowInnerHeights&&rowInnerHeights[rowLevel],isSticky:!isLast})))));})));}}
class TimelineCoords{constructor(slatRootEl,slatEls,dateProfile,tDateProfile,dateEnv,isRtl){this.slatRootEl=slatRootEl;this.dateProfile=dateProfile;this.tDateProfile=tDateProfile;this.dateEnv=dateEnv;this.isRtl=isRtl;this.outerCoordCache=new PositionCache(slatRootEl,slatEls,true,false);this.innerCoordCache=new PositionCache(slatRootEl,findDirectChildren(slatEls,'div'),true,false);}
isDateInRange(date){return rangeContainsMarker(this.dateProfile.currentRange,date);}
dateToCoord(date){let{tDateProfile}=this;let snapCoverage=this.computeDateSnapCoverage(date);let slotCoverage=snapCoverage/tDateProfile.snapsPerSlot;let slotIndex=Math.floor(slotCoverage);slotIndex=Math.min(slotIndex,tDateProfile.slotCnt-1);let partial=slotCoverage-slotIndex;let{innerCoordCache,outerCoordCache}=this;if(this.isRtl){return outerCoordCache.originClientRect.width-(outerCoordCache.rights[slotIndex]-
(innerCoordCache.getWidth(slotIndex)*partial));}
return(outerCoordCache.lefts[slotIndex]+
(innerCoordCache.getWidth(slotIndex)*partial));}
rangeToCoords(range){return{start:this.dateToCoord(range.start),end:this.dateToCoord(range.end),};}
durationToCoord(duration){let{dateProfile,tDateProfile,dateEnv,isRtl}=this;let coord=0;if(dateProfile){let date=dateEnv.add(dateProfile.activeRange.start,duration);if(!tDateProfile.isTimeScale){date=startOfDay(date);}
coord=this.dateToCoord(date);if(!isRtl&&coord){coord+=1;}}
return coord;}
coordFromLeft(coord){if(this.isRtl){return this.outerCoordCache.originClientRect.width-coord;}
return coord;}
computeDateSnapCoverage(date){return computeDateSnapCoverage(date,this.tDateProfile,this.dateEnv);}}
function computeDateSnapCoverage(date,tDateProfile,dateEnv){let snapDiff=dateEnv.countDurationsBetween(tDateProfile.normalizedRange.start,date,tDateProfile.snapDuration);if(snapDiff<0){return 0;}
if(snapDiff>=tDateProfile.snapDiffToIndex.length){return tDateProfile.snapCnt;}
let snapDiffInt=Math.floor(snapDiff);let snapCoverage=tDateProfile.snapDiffToIndex[snapDiffInt];if(isInt(snapCoverage)){snapCoverage+=snapDiff-snapDiffInt;}
else{snapCoverage=Math.ceil(snapCoverage);}
return snapCoverage;}
function coordToCss(hcoord,isRtl){if(hcoord===null){return{left:'',right:''};}
if(isRtl){return{right:hcoord,left:''};}
return{left:hcoord,right:''};}
function coordsToCss(hcoords,isRtl){if(!hcoords){return{left:'',right:''};}
if(isRtl){return{right:hcoords.start,left:-hcoords.end};}
return{left:hcoords.start,right:-hcoords.end};}
class TimelineHeader extends BaseComponent{constructor(){super(...arguments);this.rootElRef=d();}
render(){let{props,context}=this;let timerUnit=greatestDurationDenominator(props.tDateProfile.slotDuration).unit;let slatCoords=props.slatCoords&&props.slatCoords.dateProfile===props.dateProfile?props.slatCoords:null;return(y(NowTimer,{unit:timerUnit},(nowDate,todayRange)=>(y("div",{className:"fc-timeline-header",ref:this.rootElRef},y("table",{"aria-hidden":true,className:"fc-scrollgrid-sync-table",style:{minWidth:props.tableMinWidth,width:props.clientWidth}},props.tableColGroupNode,y("tbody",null,y(TimelineHeaderRows,{dateProfile:props.dateProfile,tDateProfile:props.tDateProfile,nowDate:nowDate,todayRange:todayRange,rowInnerHeights:props.rowInnerHeights}))),context.options.nowIndicator&&(y("div",{className:"fc-timeline-now-indicator-container"},(slatCoords&&slatCoords.isDateInRange(nowDate))&&(y(NowIndicatorContainer,{elClasses:['fc-timeline-now-indicator-arrow'],elStyle:coordToCss(slatCoords.dateToCoord(nowDate),context.isRtl),isAxis:true,date:nowDate}))))))));}
componentDidMount(){this.updateSize();}
componentDidUpdate(){this.updateSize();}
updateSize(){if(this.props.onMaxCushionWidth){this.props.onMaxCushionWidth(this.computeMaxCushionWidth());}}
computeMaxCushionWidth(){return Math.max(...findElements(this.rootElRef.current,'.fc-timeline-header-row:last-child .fc-timeline-slot-cushion').map((el)=>el.getBoundingClientRect().width));}}
class TimelineSlatCell extends BaseComponent{render(){let{props,context}=this;let{dateEnv,options,theme}=context;let{date,tDateProfile,isEm}=props;let dateMeta=getDateMeta(props.date,props.todayRange,props.nowDate,props.dateProfile);let renderProps=Object.assign(Object.assign({date:dateEnv.toDate(props.date)},dateMeta),{view:context.viewApi});return(y(ContentContainer,{elTag:"td",elRef:props.elRef,elClasses:['fc-timeline-slot','fc-timeline-slot-lane',isEm&&'fc-timeline-slot-em',tDateProfile.isTimeScale?(isInt(dateEnv.countDurationsBetween(tDateProfile.normalizedRange.start,props.date,tDateProfile.labelInterval))?'fc-timeline-slot-major':'fc-timeline-slot-minor'):'',...(props.isDay?getDayClassNames(dateMeta,theme):getSlotClassNames(dateMeta,theme)),],elAttrs:{'data-date':dateEnv.formatIso(date,{omitTimeZoneOffset:true,omitTime:!tDateProfile.isTimeScale,}),},renderProps:renderProps,generatorName:"slotLaneContent",customGenerator:options.slotLaneContent,classNameGenerator:options.slotLaneClassNames,didMount:options.slotLaneDidMount,willUnmount:options.slotLaneWillUnmount},(InnerContent)=>(y(InnerContent,{elTag:"div"}))));}}
class TimelineSlatsBody extends BaseComponent{render(){let{props}=this;let{tDateProfile,cellElRefs}=props;let{slotDates,isWeekStarts}=tDateProfile;let isDay=!tDateProfile.isTimeScale&&!tDateProfile.largeUnit;return(y("tbody",null,y("tr",null,slotDates.map((slotDate,i)=>{let key=slotDate.toISOString();return(y(TimelineSlatCell,{key:key,elRef:cellElRefs.createRef(key),date:slotDate,dateProfile:props.dateProfile,tDateProfile:tDateProfile,nowDate:props.nowDate,todayRange:props.todayRange,isEm:isWeekStarts[i],isDay:isDay}));}))));}}
class TimelineSlats extends BaseComponent{constructor(){super(...arguments);this.rootElRef=d();this.cellElRefs=new RefMap();this.handleScrollRequest=(request)=>{let{onScrollLeftRequest}=this.props;let{coords}=this;if(onScrollLeftRequest&&coords){if(request.time){let scrollLeft=coords.coordFromLeft(coords.durationToCoord(request.time));onScrollLeftRequest(scrollLeft);}
return true;}
return null;};}
render(){let{props,context}=this;return(y("div",{className:"fc-timeline-slots",ref:this.rootElRef},y("table",{"aria-hidden":true,className:context.theme.getClass('table'),style:{minWidth:props.tableMinWidth,width:props.clientWidth,}},props.tableColGroupNode,y(TimelineSlatsBody,{cellElRefs:this.cellElRefs,dateProfile:props.dateProfile,tDateProfile:props.tDateProfile,nowDate:props.nowDate,todayRange:props.todayRange}))));}
componentDidMount(){this.updateSizing();this.scrollResponder=this.context.createScrollResponder(this.handleScrollRequest);}
componentDidUpdate(prevProps){this.updateSizing();this.scrollResponder.update(prevProps.dateProfile!==this.props.dateProfile);}
componentWillUnmount(){this.scrollResponder.detach();if(this.props.onCoords){this.props.onCoords(null);}}
updateSizing(){let{props,context}=this;if(props.clientWidth!==null&&this.scrollResponder){let rootEl=this.rootElRef.current;if(rootEl.offsetWidth){this.coords=new TimelineCoords(this.rootElRef.current,collectCellEls(this.cellElRefs.currentMap,props.tDateProfile.slotDates),props.dateProfile,props.tDateProfile,context.dateEnv,context.isRtl);if(props.onCoords){props.onCoords(this.coords);}
this.scrollResponder.update(false);}}}
positionToHit(leftPosition){let{outerCoordCache}=this.coords;let{dateEnv,isRtl}=this.context;let{tDateProfile}=this.props;let slatIndex=outerCoordCache.leftToIndex(leftPosition);if(slatIndex!=null){let slatWidth=outerCoordCache.getWidth(slatIndex);let partial=isRtl?(outerCoordCache.rights[slatIndex]-leftPosition)/slatWidth:(leftPosition-outerCoordCache.lefts[slatIndex])/slatWidth;let localSnapIndex=Math.floor(partial*tDateProfile.snapsPerSlot);let start=dateEnv.add(tDateProfile.slotDates[slatIndex],multiplyDuration(tDateProfile.snapDuration,localSnapIndex));let end=dateEnv.add(start,tDateProfile.snapDuration);return{dateSpan:{range:{start,end},allDay:!this.props.tDateProfile.isTimeScale,},dayEl:this.cellElRefs.currentMap[slatIndex],left:outerCoordCache.lefts[slatIndex],right:outerCoordCache.rights[slatIndex],};}
return null;}}
function collectCellEls(elMap,slotDates){return slotDates.map((slotDate)=>{let key=slotDate.toISOString();return elMap[key];});}
function computeSegHCoords(segs,minWidth,timelineCoords){let hcoords=[];if(timelineCoords){for(let seg of segs){let res=timelineCoords.rangeToCoords(seg);let start=Math.round(res.start);let end=Math.round(res.end);if(end-start<minWidth){end=start+minWidth;}
hcoords.push({start,end});}}
return hcoords;}
function computeFgSegPlacements(segs,segHCoords,eventInstanceHeights,moreLinkHeights,strictOrder,maxStackCnt){let segInputs=[];let crudePlacements=[];for(let i=0;i<segs.length;i+=1){let seg=segs[i];let instanceId=seg.eventRange.instance.instanceId;let height=eventInstanceHeights[instanceId];let hcoords=segHCoords[i];if(height&&hcoords){segInputs.push({index:i,span:hcoords,thickness:height,});}
else{crudePlacements.push({seg,hcoords,top:null,});}}
let hierarchy=new SegHierarchy();if(strictOrder!=null){hierarchy.strictOrder=strictOrder;}
if(maxStackCnt!=null){hierarchy.maxStackCnt=maxStackCnt;}
let hiddenEntries=hierarchy.addSegs(segInputs);let hiddenPlacements=hiddenEntries.map((entry)=>({seg:segs[entry.index],hcoords:entry.span,top:null,}));let hiddenGroups=groupIntersectingEntries(hiddenEntries);let moreLinkInputs=[];let moreLinkCrudePlacements=[];const extractSeg=(entry)=>segs[entry.index];for(let i=0;i<hiddenGroups.length;i+=1){let hiddenGroup=hiddenGroups[i];let sortedSegs=hiddenGroup.entries.map(extractSeg);let height=moreLinkHeights[buildIsoString(computeEarliestSegStart(sortedSegs))];if(height!=null){moreLinkInputs.push({index:segs.length+i,thickness:height,span:hiddenGroup.span,});}
else{moreLinkCrudePlacements.push({seg:sortedSegs,hcoords:hiddenGroup.span,top:null,});}}
hierarchy.maxStackCnt=-1;hierarchy.addSegs(moreLinkInputs);let visibleRects=hierarchy.toRects();let visiblePlacements=[];let maxHeight=0;for(let rect of visibleRects){let segIndex=rect.index;visiblePlacements.push({seg:segIndex<segs.length?segs[segIndex]:hiddenGroups[segIndex-segs.length].entries.map(extractSeg),hcoords:rect.span,top:rect.levelCoord,});maxHeight=Math.max(maxHeight,rect.levelCoord+rect.thickness);}
return[visiblePlacements.concat(crudePlacements,hiddenPlacements,moreLinkCrudePlacements),maxHeight,];}
class TimelineLaneBg extends BaseComponent{render(){let{props}=this;let highlightSeg=[].concat(props.eventResizeSegs,props.dateSelectionSegs);return props.timelineCoords&&(y("div",{className:"fc-timeline-bg"},this.renderSegs(props.businessHourSegs||[],props.timelineCoords,'non-business'),this.renderSegs(props.bgEventSegs||[],props.timelineCoords,'bg-event'),this.renderSegs(highlightSeg,props.timelineCoords,'highlight')));}
renderSegs(segs,timelineCoords,fillType){let{todayRange,nowDate}=this.props;let{isRtl}=this.context;let segHCoords=computeSegHCoords(segs,0,timelineCoords);let children=segs.map((seg,i)=>{let hcoords=segHCoords[i];let hStyle=coordsToCss(hcoords,isRtl);return(y("div",{key:buildEventRangeKey(seg.eventRange),className:"fc-timeline-bg-harness",style:hStyle},fillType==='bg-event'?y(BgEvent,Object.assign({seg:seg},getSegMeta(seg,todayRange,nowDate))):renderFill(fillType)));});return y(_,null,children);}}
class TimelineLaneSlicer extends Slicer{sliceRange(origRange,dateProfile,dateProfileGenerator,tDateProfile,dateEnv){let normalRange=normalizeRange(origRange,tDateProfile,dateEnv);let segs=[];if(computeDateSnapCoverage(normalRange.start,tDateProfile,dateEnv)<computeDateSnapCoverage(normalRange.end,tDateProfile,dateEnv)){let slicedRange=intersectRanges(normalRange,tDateProfile.normalizedRange);if(slicedRange){segs.push({start:slicedRange.start,end:slicedRange.end,isStart:slicedRange.start.valueOf()===normalRange.start.valueOf()&&isValidDate(slicedRange.start,tDateProfile,dateProfile,dateProfileGenerator),isEnd:slicedRange.end.valueOf()===normalRange.end.valueOf()&&isValidDate(addMs(slicedRange.end,-1),tDateProfile,dateProfile,dateProfileGenerator),});}}
return segs;}}
const DEFAULT_TIME_FORMAT=createFormatter({hour:'numeric',minute:'2-digit',omitZeroMinute:true,meridiem:'narrow',});class TimelineEvent extends BaseComponent{render(){let{props}=this;return(y(StandardEvent,Object.assign({},props,{elClasses:['fc-timeline-event','fc-h-event'],defaultTimeFormat:DEFAULT_TIME_FORMAT,defaultDisplayEventTime:!props.isTimeScale})));}}
class TimelineLaneMoreLink extends BaseComponent{render(){let{props,context}=this;let{hiddenSegs,placement,resourceId}=props;let{top,hcoords}=placement;let isVisible=hcoords&&top!==null;let hStyle=coordsToCss(hcoords,context.isRtl);let extraDateSpan=resourceId?{resourceId}:{};return(y(MoreLinkContainer,{elRef:props.elRef,elClasses:['fc-timeline-more-link'],elStyle:Object.assign({visibility:isVisible?'':'hidden',top:top||0},hStyle),allDayDate:null,moreCnt:hiddenSegs.length,allSegs:hiddenSegs,hiddenSegs:hiddenSegs,dateProfile:props.dateProfile,todayRange:props.todayRange,extraDateSpan:extraDateSpan,popoverContent:()=>(y(_,null,hiddenSegs.map((seg)=>{let instanceId=seg.eventRange.instance.instanceId;return(y("div",{key:instanceId,style:{visibility:props.isForcedInvisible[instanceId]?'hidden':''}},y(TimelineEvent,Object.assign({isTimeScale:props.isTimeScale,seg:seg,isDragging:false,isResizing:false,isDateSelecting:false,isSelected:instanceId===props.eventSelection},getSegMeta(seg,props.todayRange,props.nowDate)))));})))},(InnerContent)=>(y(InnerContent,{elTag:"div",elClasses:['fc-timeline-more-link-inner','fc-sticky']}))));}}
class TimelineLane extends BaseComponent{constructor(){super(...arguments);this.slicer=new TimelineLaneSlicer();this.sortEventSegs=memoize(sortEventSegs);this.harnessElRefs=new RefMap();this.moreElRefs=new RefMap();this.innerElRef=d();this.state={eventInstanceHeights:{},moreLinkHeights:{},};this.handleResize=(isForced)=>{if(isForced){this.updateSize();}};}
render(){let{props,state,context}=this;let{options}=context;let{dateProfile,tDateProfile}=props;let slicedProps=this.slicer.sliceProps(props,dateProfile,tDateProfile.isTimeScale?null:props.nextDayThreshold,context,dateProfile,context.dateProfileGenerator,tDateProfile,context.dateEnv);let mirrorSegs=(slicedProps.eventDrag?slicedProps.eventDrag.segs:null)||(slicedProps.eventResize?slicedProps.eventResize.segs:null)||[];let fgSegs=this.sortEventSegs(slicedProps.fgEventSegs,options.eventOrder);let fgSegHCoords=computeSegHCoords(fgSegs,options.eventMinWidth,props.timelineCoords);let[fgPlacements,fgHeight]=computeFgSegPlacements(fgSegs,fgSegHCoords,state.eventInstanceHeights,state.moreLinkHeights,options.eventOrderStrict,options.eventMaxStack);let isForcedInvisible=(slicedProps.eventDrag?slicedProps.eventDrag.affectedInstances:null)||(slicedProps.eventResize?slicedProps.eventResize.affectedInstances:null)||{};return(y(_,null,y(TimelineLaneBg,{businessHourSegs:slicedProps.businessHourSegs,bgEventSegs:slicedProps.bgEventSegs,timelineCoords:props.timelineCoords,eventResizeSegs:slicedProps.eventResize?slicedProps.eventResize.segs:[],dateSelectionSegs:slicedProps.dateSelectionSegs,nowDate:props.nowDate,todayRange:props.todayRange}),y("div",{className:"fc-timeline-events fc-scrollgrid-sync-inner",ref:this.innerElRef,style:{height:fgHeight}},this.renderFgSegs(fgPlacements,isForcedInvisible,false,false,false),this.renderFgSegs(buildMirrorPlacements(mirrorSegs,props.timelineCoords,fgPlacements),{},Boolean(slicedProps.eventDrag),Boolean(slicedProps.eventResize),false))));}
componentDidMount(){this.updateSize();this.context.addResizeHandler(this.handleResize);}
componentDidUpdate(prevProps,prevState){if(prevProps.eventStore!==this.props.eventStore||prevProps.timelineCoords!==this.props.timelineCoords||prevState.moreLinkHeights!==this.state.moreLinkHeights){this.updateSize();}}
componentWillUnmount(){this.context.removeResizeHandler(this.handleResize);}
updateSize(){let{props}=this;let{timelineCoords}=props;const innerEl=this.innerElRef.current;if(props.onHeightChange){props.onHeightChange(innerEl,false);}
if(timelineCoords){this.setState({eventInstanceHeights:mapHash(this.harnessElRefs.currentMap,(harnessEl)=>(Math.round(harnessEl.getBoundingClientRect().height))),moreLinkHeights:mapHash(this.moreElRefs.currentMap,(moreEl)=>(Math.round(moreEl.getBoundingClientRect().height))),},()=>{if(props.onHeightChange){props.onHeightChange(innerEl,true);}});}
if(props.syncParentMinHeight){innerEl.parentElement.style.minHeight=innerEl.style.height;}}
renderFgSegs(segPlacements,isForcedInvisible,isDragging,isResizing,isDateSelecting){let{harnessElRefs,moreElRefs,props,context}=this;let isMirror=isDragging||isResizing||isDateSelecting;return(y(_,null,segPlacements.map((segPlacement)=>{let{seg,hcoords,top}=segPlacement;if(Array.isArray(seg)){let isoStr=buildIsoString(computeEarliestSegStart(seg));return(y(TimelineLaneMoreLink,{key:'m:'+isoStr,elRef:moreElRefs.createRef(isoStr),hiddenSegs:seg,placement:segPlacement,dateProfile:props.dateProfile,nowDate:props.nowDate,todayRange:props.todayRange,isTimeScale:props.tDateProfile.isTimeScale,eventSelection:props.eventSelection,resourceId:props.resourceId,isForcedInvisible:isForcedInvisible}));}
let instanceId=seg.eventRange.instance.instanceId;let isVisible=isMirror||Boolean(!isForcedInvisible[instanceId]&&hcoords&&top!==null);let hStyle=coordsToCss(hcoords,context.isRtl);return(y("div",{key:'e:'+instanceId,ref:isMirror?null:harnessElRefs.createRef(instanceId),className:"fc-timeline-event-harness",style:Object.assign({visibility:isVisible?'':'hidden',top:top||0},hStyle)},y(TimelineEvent,Object.assign({isTimeScale:props.tDateProfile.isTimeScale,seg:seg,isDragging:isDragging,isResizing:isResizing,isDateSelecting:isDateSelecting,isSelected:instanceId===props.eventSelection},getSegMeta(seg,props.todayRange,props.nowDate)))));})));}}
TimelineLane.addStateEquality({eventInstanceHeights:isPropsEqual,moreLinkHeights:isPropsEqual,});function buildMirrorPlacements(mirrorSegs,timelineCoords,fgPlacements){if(!mirrorSegs.length||!timelineCoords){return[];}
let topsByInstanceId=buildAbsoluteTopHash(fgPlacements);return mirrorSegs.map((seg)=>({seg,hcoords:timelineCoords.rangeToCoords(seg),top:topsByInstanceId[seg.eventRange.instance.instanceId],}));}
function buildAbsoluteTopHash(placements){let topsByInstanceId={};for(let placement of placements){let{seg}=placement;if(!Array.isArray(seg)){topsByInstanceId[seg.eventRange.instance.instanceId]=placement.top;}}
return topsByInstanceId;}
class TimelineGrid extends DateComponent{constructor(){super(...arguments);this.slatsRef=d();this.state={coords:null,};this.handeEl=(el)=>{if(el){this.context.registerInteractiveComponent(this,{el});}
else{this.context.unregisterInteractiveComponent(this);}};this.handleCoords=(coords)=>{this.setState({coords});if(this.props.onSlatCoords){this.props.onSlatCoords(coords);}};}
render(){let{props,state,context}=this;let{options}=context;let{dateProfile,tDateProfile}=props;let timerUnit=greatestDurationDenominator(tDateProfile.slotDuration).unit;return(y("div",{className:"fc-timeline-body",ref:this.handeEl,style:{minWidth:props.tableMinWidth,height:props.clientHeight,width:props.clientWidth,}},y(NowTimer,{unit:timerUnit},(nowDate,todayRange)=>(y(_,null,y(TimelineSlats,{ref:this.slatsRef,dateProfile:dateProfile,tDateProfile:tDateProfile,nowDate:nowDate,todayRange:todayRange,clientWidth:props.clientWidth,tableColGroupNode:props.tableColGroupNode,tableMinWidth:props.tableMinWidth,onCoords:this.handleCoords,onScrollLeftRequest:props.onScrollLeftRequest}),y(TimelineLane,{dateProfile:dateProfile,tDateProfile:props.tDateProfile,nowDate:nowDate,todayRange:todayRange,nextDayThreshold:options.nextDayThreshold,businessHours:props.businessHours,eventStore:props.eventStore,eventUiBases:props.eventUiBases,dateSelection:props.dateSelection,eventSelection:props.eventSelection,eventDrag:props.eventDrag,eventResize:props.eventResize,timelineCoords:state.coords,syncParentMinHeight:true}),(options.nowIndicator&&state.coords&&state.coords.isDateInRange(nowDate))&&(y("div",{className:"fc-timeline-now-indicator-container"},y(NowIndicatorContainer,{elClasses:['fc-timeline-now-indicator-line'],elStyle:coordToCss(state.coords.dateToCoord(nowDate),context.isRtl),isAxis:false,date:nowDate}))))))));}
queryHit(positionLeft,positionTop,elWidth,elHeight){let slats=this.slatsRef.current;let slatHit=slats.positionToHit(positionLeft);if(slatHit){return{dateProfile:this.props.dateProfile,dateSpan:slatHit.dateSpan,rect:{left:slatHit.left,right:slatHit.right,top:0,bottom:elHeight,},dayEl:slatHit.dayEl,layer:0,};}
return null;}}
class TimelineView extends DateComponent{constructor(){super(...arguments);this.buildTimelineDateProfile=memoize(buildTimelineDateProfile);this.scrollGridRef=d();this.state={slatCoords:null,slotCushionMaxWidth:null,};this.handleSlatCoords=(slatCoords)=>{this.setState({slatCoords});};this.handleScrollLeftRequest=(scrollLeft)=>{let scrollGrid=this.scrollGridRef.current;scrollGrid.forceScrollLeft(0,scrollLeft);};this.handleMaxCushionWidth=(slotCushionMaxWidth)=>{this.setState({slotCushionMaxWidth:Math.ceil(slotCushionMaxWidth),});};}
render(){let{props,state,context}=this;let{options}=context;let stickyHeaderDates=!props.forPrint&&getStickyHeaderDates(options);let stickyFooterScrollbar=!props.forPrint&&getStickyFooterScrollbar(options);let tDateProfile=this.buildTimelineDateProfile(props.dateProfile,context.dateEnv,options,context.dateProfileGenerator);let{slotMinWidth}=options;let slatCols=buildSlatCols(tDateProfile,slotMinWidth||this.computeFallbackSlotMinWidth(tDateProfile));let sections=[{type:'header',key:'header',isSticky:stickyHeaderDates,chunks:[{key:'timeline',content:(contentArg)=>(y(TimelineHeader,{dateProfile:props.dateProfile,clientWidth:contentArg.clientWidth,clientHeight:contentArg.clientHeight,tableMinWidth:contentArg.tableMinWidth,tableColGroupNode:contentArg.tableColGroupNode,tDateProfile:tDateProfile,slatCoords:state.slatCoords,onMaxCushionWidth:slotMinWidth?null:this.handleMaxCushionWidth})),}],},{type:'body',key:'body',liquid:true,chunks:[{key:'timeline',content:(contentArg)=>(y(TimelineGrid,Object.assign({},props,{clientWidth:contentArg.clientWidth,clientHeight:contentArg.clientHeight,tableMinWidth:contentArg.tableMinWidth,tableColGroupNode:contentArg.tableColGroupNode,tDateProfile:tDateProfile,onSlatCoords:this.handleSlatCoords,onScrollLeftRequest:this.handleScrollLeftRequest}))),}],},];if(stickyFooterScrollbar){sections.push({type:'footer',key:'footer',isSticky:true,chunks:[{key:'timeline',content:renderScrollShim,}],});}
return(y(ViewContainer,{elClasses:['fc-timeline',options.eventOverlap===false?'fc-timeline-overlap-disabled':'',],viewSpec:context.viewSpec},y(ScrollGrid,{ref:this.scrollGridRef,liquid:!props.isHeightAuto&&!props.forPrint,forPrint:props.forPrint,collapsibleWidth:false,colGroups:[{cols:slatCols},],sections:sections})));}
computeFallbackSlotMinWidth(tDateProfile){return Math.max(30,((this.state.slotCushionMaxWidth||0)/tDateProfile.slotsPerLabel));}}
function buildSlatCols(tDateProfile,slotMinWidth){return[{span:tDateProfile.slotCnt,minWidth:slotMinWidth||1,}];}
var css_248z$1=".fc .fc-timeline-body{min-height:100%;position:relative;z-index:1}.fc .fc-timeline-slots{bottom:0;position:absolute;top:0;z-index:1}.fc .fc-timeline-slots>table{height:100%}.fc .fc-timeline-slot-minor{border-style:dotted}.fc .fc-timeline-slot-frame{align-items:center;display:flex;justify-content:center}.fc .fc-timeline-header-row-chrono .fc-timeline-slot-frame{justify-content:flex-start}.fc .fc-timeline-header-row:last-child .fc-timeline-slot-frame{overflow:hidden}.fc .fc-timeline-slot-cushion{padding:4px 5px;white-space:nowrap}.fc-direction-ltr .fc-timeline-slot{border-right:0!important}.fc-direction-rtl .fc-timeline-slot{border-left:0!important}.fc .fc-timeline-now-indicator-container{bottom:0;left:0;position:absolute;right:0;top:0;width:0;z-index:4}.fc .fc-timeline-now-indicator-arrow,.fc .fc-timeline-now-indicator-line{border-color:var(--fc-now-indicator-color);border-style:solid;position:absolute;top:0}.fc .fc-timeline-now-indicator-arrow{border-left-color:transparent;border-right-color:transparent;border-width:6px 5px 0;margin:0 -6px}.fc .fc-timeline-now-indicator-line{border-width:0 0 0 1px;bottom:0;margin:0 -1px}.fc .fc-timeline-events{position:relative;width:0;z-index:3}.fc .fc-timeline-event-harness,.fc .fc-timeline-more-link{position:absolute;top:0}.fc-timeline-event{z-index:1}.fc-timeline-event.fc-event-mirror{z-index:2}.fc-timeline-event{align-items:center;border-radius:0;display:flex;font-size:var(--fc-small-font-size);margin-bottom:1px;padding:2px 1px;position:relative}.fc-timeline-event .fc-event-main{flex-grow:1;flex-shrink:1;min-width:0}.fc-timeline-event .fc-event-time{font-weight:700}.fc-timeline-event .fc-event-time,.fc-timeline-event .fc-event-title{padding:0 2px;white-space:nowrap}.fc-direction-ltr .fc-timeline-event.fc-event-end,.fc-direction-ltr .fc-timeline-more-link{margin-right:1px}.fc-direction-rtl .fc-timeline-event.fc-event-end,.fc-direction-rtl .fc-timeline-more-link{margin-left:1px}.fc-timeline-overlap-disabled .fc-timeline-event{margin-bottom:0;padding-bottom:5px;padding-top:5px}.fc-timeline-event:not(.fc-event-end):after,.fc-timeline-event:not(.fc-event-start):before{border-color:transparent #000;border-style:solid;border-width:5px;content:\"\";flex-grow:0;flex-shrink:0;height:0;margin:0 1px;opacity:.5;width:0}.fc-direction-ltr .fc-timeline-event:not(.fc-event-start):before,.fc-direction-rtl .fc-timeline-event:not(.fc-event-end):after{border-left:0}.fc-direction-ltr .fc-timeline-event:not(.fc-event-end):after,.fc-direction-rtl .fc-timeline-event:not(.fc-event-start):before{border-right:0}.fc-timeline-more-link{background:var(--fc-more-link-bg-color);color:var(--fc-more-link-text-color);cursor:pointer;font-size:var(--fc-small-font-size);padding:1px}.fc-timeline-more-link-inner{display:inline-block;left:0;padding:2px;right:0}.fc .fc-timeline-bg{bottom:0;left:0;position:absolute;right:0;top:0;width:0;z-index:2}.fc .fc-timeline-bg .fc-non-business{z-index:1}.fc .fc-timeline-bg .fc-bg-event{z-index:2}.fc .fc-timeline-bg .fc-highlight{z-index:3}.fc .fc-timeline-bg-harness{bottom:0;position:absolute;top:0}";injectStyles(css_248z$1);var index$4=createPlugin({name:'@fullcalendar/timeline',premiumReleaseDate:'2024-06-05',deps:[index$7],initialView:'timelineDay',views:{timeline:{component:TimelineView,usesMinMaxTime:true,eventResizableFromStart:true,},timelineDay:{type:'timeline',duration:{days:1},},timelineWeek:{type:'timeline',duration:{weeks:1},},timelineMonth:{type:'timeline',duration:{months:1},},timelineYear:{type:'timeline',duration:{years:1},},},});const PRIVATE_ID_PREFIX='_fc:';const RESOURCE_REFINERS={id:String,parentId:String,children:identity,title:String,businessHours:identity,extendedProps:identity,eventEditable:Boolean,eventStartEditable:Boolean,eventDurationEditable:Boolean,eventConstraint:identity,eventOverlap:Boolean,eventAllow:identity,eventClassNames:parseClassNames,eventBackgroundColor:String,eventBorderColor:String,eventTextColor:String,eventColor:String,};function parseResource(raw,parentId='',store,context){let{refined,extra}=refineProps(raw,RESOURCE_REFINERS);let resource={id:refined.id||(PRIVATE_ID_PREFIX+guid()),parentId:refined.parentId||parentId,title:refined.title||'',businessHours:refined.businessHours?parseBusinessHours(refined.businessHours,context):null,ui:createEventUi({editable:refined.eventEditable,startEditable:refined.eventStartEditable,durationEditable:refined.eventDurationEditable,constraint:refined.eventConstraint,overlap:refined.eventOverlap,allow:refined.eventAllow,classNames:refined.eventClassNames,backgroundColor:refined.eventBackgroundColor,borderColor:refined.eventBorderColor,textColor:refined.eventTextColor,color:refined.eventColor,},context),extendedProps:Object.assign(Object.assign({},extra),refined.extendedProps),};Object.freeze(resource.ui.classNames);Object.freeze(resource.extendedProps);if(store[resource.id]);else{store[resource.id]=resource;if(refined.children){for(let childInput of refined.children){parseResource(childInput,resource.id,store,context);}}}
return resource;}
function getPublicId(id){if(id.indexOf(PRIVATE_ID_PREFIX)===0){return'';}
return id;}
class ResourceApi{constructor(_context,_resource){this._context=_context;this._resource=_resource;}
setProp(name,value){let oldResource=this._resource;this._context.dispatch({type:'SET_RESOURCE_PROP',resourceId:oldResource.id,propName:name,propValue:value,});this.sync(oldResource);}
setExtendedProp(name,value){let oldResource=this._resource;this._context.dispatch({type:'SET_RESOURCE_EXTENDED_PROP',resourceId:oldResource.id,propName:name,propValue:value,});this.sync(oldResource);}
sync(oldResource){let context=this._context;let resourceId=oldResource.id;this._resource=context.getCurrentData().resourceStore[resourceId];context.emitter.trigger('resourceChange',{oldResource:new ResourceApi(context,oldResource),resource:this,revert(){context.dispatch({type:'ADD_RESOURCE',resourceHash:{[resourceId]:oldResource,},});},});}
remove(){let context=this._context;let internalResource=this._resource;let resourceId=internalResource.id;context.dispatch({type:'REMOVE_RESOURCE',resourceId,});context.emitter.trigger('resourceRemove',{resource:this,revert(){context.dispatch({type:'ADD_RESOURCE',resourceHash:{[resourceId]:internalResource,},});},});}
getParent(){let context=this._context;let parentId=this._resource.parentId;if(parentId){return new ResourceApi(context,context.getCurrentData().resourceStore[parentId]);}
return null;}
getChildren(){let thisResourceId=this._resource.id;let context=this._context;let{resourceStore}=context.getCurrentData();let childApis=[];for(let resourceId in resourceStore){if(resourceStore[resourceId].parentId===thisResourceId){childApis.push(new ResourceApi(context,resourceStore[resourceId]));}}
return childApis;}
getEvents(){let thisResourceId=this._resource.id;let context=this._context;let{defs,instances}=context.getCurrentData().eventStore;let eventApis=[];for(let instanceId in instances){let instance=instances[instanceId];let def=defs[instance.defId];if(def.resourceIds.indexOf(thisResourceId)!==-1){eventApis.push(new EventImpl(context,def,instance));}}
return eventApis;}
get id(){return getPublicId(this._resource.id);}
get title(){return this._resource.title;}
get eventConstraint(){return this._resource.ui.constraints[0]||null;}
get eventOverlap(){return this._resource.ui.overlap;}
get eventAllow(){return this._resource.ui.allows[0]||null;}
get eventBackgroundColor(){return this._resource.ui.backgroundColor;}
get eventBorderColor(){return this._resource.ui.borderColor;}
get eventTextColor(){return this._resource.ui.textColor;}
get eventClassNames(){return this._resource.ui.classNames;}
get extendedProps(){return this._resource.extendedProps;}
toPlainObject(settings={}){let internal=this._resource;let{ui}=internal;let publicId=this.id;let res={};if(publicId){res.id=publicId;}
if(internal.title){res.title=internal.title;}
if(settings.collapseEventColor&&ui.backgroundColor&&ui.backgroundColor===ui.borderColor){res.eventColor=ui.backgroundColor;}
else{if(ui.backgroundColor){res.eventBackgroundColor=ui.backgroundColor;}
if(ui.borderColor){res.eventBorderColor=ui.borderColor;}}
if(ui.textColor){res.eventTextColor=ui.textColor;}
if(ui.classNames.length){res.eventClassNames=ui.classNames;}
if(Object.keys(internal.extendedProps).length){if(settings.collapseExtendedProps){Object.assign(res,internal.extendedProps);}
else{res.extendedProps=internal.extendedProps;}}
return res;}
toJSON(){return this.toPlainObject();}}
function buildResourceApis(resourceStore,context){let resourceApis=[];for(let resourceId in resourceStore){resourceApis.push(new ResourceApi(context,resourceStore[resourceId]));}
return resourceApis;}
class ResourceSplitter extends Splitter{getKeyInfo(props){return Object.assign({'':{}},props.resourceStore);}
getKeysForDateSpan(dateSpan){return[dateSpan.resourceId||''];}
getKeysForEventDef(eventDef){let resourceIds=eventDef.resourceIds;if(!resourceIds.length){return[''];}
return resourceIds;}}
const DEFAULT_RESOURCE_ORDER=parseFieldSpecs('id,title');function handleResourceStore(resourceStore,calendarData){let{emitter}=calendarData;if(emitter.hasHandlers('resourcesSet')){emitter.trigger('resourcesSet',buildResourceApis(resourceStore,calendarData));}}
function refineRenderProps$1(input){return{resource:new ResourceApi(input.context,input.resource),};}
class ResourceLabelContainer extends BaseComponent{constructor(){super(...arguments);this.refineRenderProps=memoizeObjArg(refineRenderProps$2);}
render(){const{props}=this;return(y(ViewContextType.Consumer,null,(context)=>{let{options}=context;let renderProps=this.refineRenderProps({resource:props.resource,date:props.date,context,});return(y(ContentContainer,Object.assign({},props,{elAttrs:Object.assign(Object.assign({},props.elAttrs),{'data-resource-id':props.resource.id,'data-date':props.date?formatDayString(props.date):undefined}),renderProps:renderProps,generatorName:"resourceLabelContent",customGenerator:options.resourceLabelContent,defaultGenerator:renderInnerContent,classNameGenerator:options.resourceLabelClassNames,didMount:options.resourceLabelDidMount,willUnmount:options.resourceLabelWillUnmount})));}));}}
function renderInnerContent(props){return props.resource.title||props.resource.id;}
function refineRenderProps$2(input){return{resource:new ResourceApi(input.context,input.resource),date:input.date?input.context.dateEnv.toDate(input.date):null,view:input.context.viewApi,};}
class ResourceCell extends BaseComponent{render(){let{props}=this;return(y(ResourceLabelContainer,{elTag:"th",elClasses:['fc-col-header-cell','fc-resource'],elAttrs:{role:'columnheader',colSpan:props.colSpan,},resource:props.resource,date:props.date},(InnerContent)=>(y("div",{className:"fc-scrollgrid-sync-inner"},y(InnerContent,{elTag:"span",elClasses:['fc-col-header-cell-cushion',props.isSticky&&'fc-sticky',]})))));}}
class ResourceDayHeader extends BaseComponent{constructor(){super(...arguments);this.buildDateFormat=memoize(buildDateFormat);}
render(){let{props,context}=this;let dateFormat=this.buildDateFormat(context.options.dayHeaderFormat,props.datesRepDistinctDays,props.dates.length);return(y(NowTimer,{unit:"day"},(nowDate,todayRange)=>{if(props.dates.length===1){return this.renderResourceRow(props.resources,props.dates[0]);}
if(context.options.datesAboveResources){return this.renderDayAndResourceRows(props.dates,dateFormat,todayRange,props.resources);}
return this.renderResourceAndDayRows(props.resources,props.dates,dateFormat,todayRange);}));}
renderResourceRow(resources,date){let resourceCells=resources.map((resource)=>(y(ResourceCell,{key:resource.id,resource:resource,colSpan:1,date:date})));return this.buildTr(resourceCells,'resources');}
renderDayAndResourceRows(dates,dateFormat,todayRange,resources){let dateCells=[];let resourceCells=[];for(let date of dates){dateCells.push(this.renderDateCell(date,dateFormat,todayRange,resources.length,null,true));for(let resource of resources){resourceCells.push(y(ResourceCell,{key:resource.id+':'+date.toISOString(),resource:resource,colSpan:1,date:date}));}}
return(y(_,null,this.buildTr(dateCells,'day'),this.buildTr(resourceCells,'resources')));}
renderResourceAndDayRows(resources,dates,dateFormat,todayRange){let resourceCells=[];let dateCells=[];for(let resource of resources){resourceCells.push(y(ResourceCell,{key:resource.id,resource:resource,colSpan:dates.length,isSticky:true}));for(let date of dates){dateCells.push(this.renderDateCell(date,dateFormat,todayRange,1,resource));}}
return(y(_,null,this.buildTr(resourceCells,'resources'),this.buildTr(dateCells,'day')));}
renderDateCell(date,dateFormat,todayRange,colSpan,resource,isSticky){let{props}=this;let keyPostfix=resource?`:${resource.id}`:'';let extraRenderProps=resource?{resource:new ResourceApi(this.context,resource)}:{};let extraDataAttrs=resource?{'data-resource-id':resource.id}:{};return props.datesRepDistinctDays?(y(TableDateCell,{key:date.toISOString()+keyPostfix,date:date,dateProfile:props.dateProfile,todayRange:todayRange,colCnt:props.dates.length*props.resources.length,dayHeaderFormat:dateFormat,colSpan:colSpan,isSticky:isSticky,extraRenderProps:extraRenderProps,extraDataAttrs:extraDataAttrs})):(y(TableDowCell,{key:date.getUTCDay()+keyPostfix,dow:date.getUTCDay(),dayHeaderFormat:dateFormat,colSpan:colSpan,isSticky:isSticky,extraRenderProps:extraRenderProps,extraDataAttrs:extraDataAttrs}));}
buildTr(cells,key){let{renderIntro}=this.props;if(!cells.length){cells=[y("td",{key:0},"\u00A0")];}
return(y("tr",{key:key,role:"row"},renderIntro&&renderIntro(key),cells));}}
function buildDateFormat(dayHeaderFormat,datesRepDistinctDays,dayCnt){return dayHeaderFormat||computeFallbackHeaderFormat(datesRepDistinctDays,dayCnt);}
class ResourceIndex{constructor(resources){let indicesById={};let ids=[];for(let i=0;i<resources.length;i+=1){let id=resources[i].id;ids.push(id);indicesById[id]=i;}
this.ids=ids;this.indicesById=indicesById;this.length=resources.length;}}
class AbstractResourceDayTableModel{constructor(dayTableModel,resources,context){this.dayTableModel=dayTableModel;this.resources=resources;this.context=context;this.resourceIndex=new ResourceIndex(resources);this.rowCnt=dayTableModel.rowCnt;this.colCnt=dayTableModel.colCnt*resources.length;this.cells=this.buildCells();}
buildCells(){let{rowCnt,dayTableModel,resources}=this;let rows=[];for(let row=0;row<rowCnt;row+=1){let rowCells=[];for(let dateCol=0;dateCol<dayTableModel.colCnt;dateCol+=1){for(let resourceCol=0;resourceCol<resources.length;resourceCol+=1){let resource=resources[resourceCol];let extraRenderProps={resource:new ResourceApi(this.context,resource)};let extraDataAttrs={'data-resource-id':resource.id};let extraClassNames=['fc-resource'];let extraDateSpan={resourceId:resource.id};let date=dayTableModel.cells[row][dateCol].date;rowCells[this.computeCol(dateCol,resourceCol)]={key:resource.id+':'+date.toISOString(),date,extraRenderProps,extraDataAttrs,extraClassNames,extraDateSpan,};}}
rows.push(rowCells);}
return rows;}}
class ResourceDayTableModel extends AbstractResourceDayTableModel{computeCol(dateI,resourceI){return resourceI*this.dayTableModel.colCnt+dateI;}
computeColRanges(dateStartI,dateEndI,resourceI){return[{firstCol:this.computeCol(dateStartI,resourceI),lastCol:this.computeCol(dateEndI,resourceI),isStart:true,isEnd:true,},];}}
class DayResourceTableModel extends AbstractResourceDayTableModel{computeCol(dateI,resourceI){return dateI*this.resources.length+resourceI;}
computeColRanges(dateStartI,dateEndI,resourceI){let segs=[];for(let i=dateStartI;i<=dateEndI;i+=1){let col=this.computeCol(i,resourceI);segs.push({firstCol:col,lastCol:col,isStart:i===dateStartI,isEnd:i===dateEndI,});}
return segs;}}
const NO_SEGS=[];class VResourceJoiner{constructor(){this.joinDateSelection=memoize(this.joinSegs);this.joinBusinessHours=memoize(this.joinSegs);this.joinFgEvents=memoize(this.joinSegs);this.joinBgEvents=memoize(this.joinSegs);this.joinEventDrags=memoize(this.joinInteractions);this.joinEventResizes=memoize(this.joinInteractions);}
joinProps(propSets,resourceDayTable){let dateSelectionSets=[];let businessHoursSets=[];let fgEventSets=[];let bgEventSets=[];let eventDrags=[];let eventResizes=[];let eventSelection='';let keys=resourceDayTable.resourceIndex.ids.concat(['']);for(let key of keys){let props=propSets[key];dateSelectionSets.push(props.dateSelectionSegs);businessHoursSets.push(key?props.businessHourSegs:NO_SEGS);fgEventSets.push(key?props.fgEventSegs:NO_SEGS);bgEventSets.push(props.bgEventSegs);eventDrags.push(props.eventDrag);eventResizes.push(props.eventResize);eventSelection=eventSelection||props.eventSelection;}
return{dateSelectionSegs:this.joinDateSelection(resourceDayTable,...dateSelectionSets),businessHourSegs:this.joinBusinessHours(resourceDayTable,...businessHoursSets),fgEventSegs:this.joinFgEvents(resourceDayTable,...fgEventSets),bgEventSegs:this.joinBgEvents(resourceDayTable,...bgEventSets),eventDrag:this.joinEventDrags(resourceDayTable,...eventDrags),eventResize:this.joinEventResizes(resourceDayTable,...eventResizes),eventSelection,};}
joinSegs(resourceDayTable,...segGroups){let resourceCnt=resourceDayTable.resources.length;let transformedSegs=[];for(let i=0;i<resourceCnt;i+=1){for(let seg of segGroups[i]){transformedSegs.push(...this.transformSeg(seg,resourceDayTable,i));}
for(let seg of segGroups[resourceCnt]){transformedSegs.push(...this.transformSeg(seg,resourceDayTable,i));}}
return transformedSegs;}
expandSegs(resourceDayTable,segs){let resourceCnt=resourceDayTable.resources.length;let transformedSegs=[];for(let i=0;i<resourceCnt;i+=1){for(let seg of segs){transformedSegs.push(...this.transformSeg(seg,resourceDayTable,i));}}
return transformedSegs;}
joinInteractions(resourceDayTable,...interactions){let resourceCnt=resourceDayTable.resources.length;let affectedInstances={};let transformedSegs=[];let anyInteractions=false;let isEvent=false;for(let i=0;i<resourceCnt;i+=1){let interaction=interactions[i];if(interaction){anyInteractions=true;for(let seg of interaction.segs){transformedSegs.push(...this.transformSeg(seg,resourceDayTable,i));}
Object.assign(affectedInstances,interaction.affectedInstances);isEvent=isEvent||interaction.isEvent;}
if(interactions[resourceCnt]){for(let seg of interactions[resourceCnt].segs){transformedSegs.push(...this.transformSeg(seg,resourceDayTable,i));}}}
if(anyInteractions){return{affectedInstances,segs:transformedSegs,isEvent,};}
return null;}}
class VResourceSplitter extends Splitter{getKeyInfo(props){let{resourceDayTableModel}=props;let hash=mapHash(resourceDayTableModel.resourceIndex.indicesById,(i)=>resourceDayTableModel.resources[i]);hash['']={};return hash;}
getKeysForDateSpan(dateSpan){return[dateSpan.resourceId||''];}
getKeysForEventDef(eventDef){let resourceIds=eventDef.resourceIds;if(!resourceIds.length){return[''];}
return resourceIds;}}
function flattenResources(resourceStore,orderSpecs){return buildRowNodes(resourceStore,[],orderSpecs,false,{},true).map((node)=>node.resource);}
function buildRowNodes(resourceStore,groupSpecs,orderSpecs,isVGrouping,expansions,expansionDefault){let complexNodes=buildHierarchy(resourceStore,isVGrouping?-1:1,groupSpecs,orderSpecs);let flatNodes=[];flattenNodes(complexNodes,flatNodes,isVGrouping,[],0,expansions,expansionDefault);return flatNodes;}
function flattenNodes(complexNodes,res,isVGrouping,rowSpans,depth,expansions,expansionDefault){for(let i=0;i<complexNodes.length;i+=1){let complexNode=complexNodes[i];let group=complexNode.group;if(group){if(isVGrouping){let firstRowIndex=res.length;let rowSpanIndex=rowSpans.length;flattenNodes(complexNode.children,res,isVGrouping,rowSpans.concat(0),depth,expansions,expansionDefault);if(firstRowIndex<res.length){let firstRow=res[firstRowIndex];let firstRowSpans=firstRow.rowSpans=firstRow.rowSpans.slice();firstRowSpans[rowSpanIndex]=res.length-firstRowIndex;}}
else{let id=group.spec.field+':'+group.value;let isExpanded=expansions[id]!=null?expansions[id]:expansionDefault;res.push({id,group,isExpanded});if(isExpanded){flattenNodes(complexNode.children,res,isVGrouping,rowSpans,depth+1,expansions,expansionDefault);}}}
else if(complexNode.resource){let id=complexNode.resource.id;let isExpanded=expansions[id]!=null?expansions[id]:expansionDefault;res.push({id,rowSpans,depth,isExpanded,hasChildren:Boolean(complexNode.children.length),resource:complexNode.resource,resourceFields:complexNode.resourceFields,});if(isExpanded){flattenNodes(complexNode.children,res,isVGrouping,rowSpans,depth+1,expansions,expansionDefault);}}}}
function buildHierarchy(resourceStore,maxDepth,groupSpecs,orderSpecs){let resourceNodes=buildResourceNodes(resourceStore,orderSpecs);let builtNodes=[];for(let resourceId in resourceNodes){let resourceNode=resourceNodes[resourceId];if(!resourceNode.resource.parentId){insertResourceNode(resourceNode,builtNodes,groupSpecs,0,maxDepth,orderSpecs);}}
return builtNodes;}
function buildResourceNodes(resourceStore,orderSpecs){let nodeHash={};for(let resourceId in resourceStore){let resource=resourceStore[resourceId];nodeHash[resourceId]={resource,resourceFields:buildResourceFields(resource),children:[],};}
for(let resourceId in resourceStore){let resource=resourceStore[resourceId];if(resource.parentId){let parentNode=nodeHash[resource.parentId];if(parentNode){insertResourceNodeInSiblings(nodeHash[resourceId],parentNode.children,orderSpecs);}}}
return nodeHash;}
function insertResourceNode(resourceNode,nodes,groupSpecs,depth,maxDepth,orderSpecs){if(groupSpecs.length&&(maxDepth===-1||depth<=maxDepth)){let groupNode=ensureGroupNodes(resourceNode,nodes,groupSpecs[0]);insertResourceNode(resourceNode,groupNode.children,groupSpecs.slice(1),depth+1,maxDepth,orderSpecs);}
else{insertResourceNodeInSiblings(resourceNode,nodes,orderSpecs);}}
function ensureGroupNodes(resourceNode,nodes,groupSpec){let groupValue=resourceNode.resourceFields[groupSpec.field];let groupNode;let newGroupIndex;if(groupSpec.order){for(newGroupIndex=0;newGroupIndex<nodes.length;newGroupIndex+=1){let node=nodes[newGroupIndex];if(node.group){let cmp=flexibleCompare(groupValue,node.group.value)*groupSpec.order;if(cmp===0){groupNode=node;break;}
else if(cmp<0){break;}}}}
else{for(newGroupIndex=0;newGroupIndex<nodes.length;newGroupIndex+=1){let node=nodes[newGroupIndex];if(node.group&&groupValue===node.group.value){groupNode=node;break;}}}
if(!groupNode){groupNode={group:{value:groupValue,spec:groupSpec,},children:[],};nodes.splice(newGroupIndex,0,groupNode);}
return groupNode;}
function insertResourceNodeInSiblings(resourceNode,siblings,orderSpecs){let i;for(i=0;i<siblings.length;i+=1){let cmp=compareByFieldSpecs(siblings[i].resourceFields,resourceNode.resourceFields,orderSpecs);if(cmp>0){break;}}
siblings.splice(i,0,resourceNode);}
function buildResourceFields(resource){let obj=Object.assign(Object.assign(Object.assign({},resource.extendedProps),resource.ui),resource);delete obj.ui;delete obj.extendedProps;return obj;}
function isGroupsEqual(group0,group1){return group0.spec===group1.spec&&group0.value===group1.value;}
function massageEventDragMutation(eventMutation,hit0,hit1){let resource0=hit0.dateSpan.resourceId;let resource1=hit1.dateSpan.resourceId;if(resource0&&resource1&&resource0!==resource1){eventMutation.resourceMutation={matchResourceId:resource0,setResourceId:resource1,};}}
function applyEventDefMutation(eventDef,mutation,context){let resourceMutation=mutation.resourceMutation;if(resourceMutation&&computeResourceEditable(eventDef,context)){let index=eventDef.resourceIds.indexOf(resourceMutation.matchResourceId);if(index!==-1){let resourceIds=eventDef.resourceIds.slice();resourceIds.splice(index,1);if(resourceIds.indexOf(resourceMutation.setResourceId)===-1){resourceIds.push(resourceMutation.setResourceId);}
eventDef.resourceIds=resourceIds;}}}
function computeResourceEditable(eventDef,context){let{resourceEditable}=eventDef;if(resourceEditable==null){let source=eventDef.sourceId&&context.getCurrentData().eventSources[eventDef.sourceId];if(source){resourceEditable=source.extendedProps.resourceEditable;}
if(resourceEditable==null){resourceEditable=context.options.eventResourceEditable;if(resourceEditable==null){resourceEditable=context.options.editable;}}}
return resourceEditable;}
function transformEventDrop(mutation,context){let{resourceMutation}=mutation;if(resourceMutation){let{calendarApi}=context;return{oldResource:calendarApi.getResourceById(resourceMutation.matchResourceId),newResource:calendarApi.getResourceById(resourceMutation.setResourceId),};}
return{oldResource:null,newResource:null,};}
class ResourceDataAdder{constructor(){this.filterResources=memoize(filterResources);}
transform(viewProps,calendarProps){if(calendarProps.viewSpec.optionDefaults.needsResourceData){return{resourceStore:this.filterResources(calendarProps.resourceStore,calendarProps.options.filterResourcesWithEvents,calendarProps.eventStore,calendarProps.dateProfile.activeRange),resourceEntityExpansions:calendarProps.resourceEntityExpansions,};}
return null;}}
function filterResources(resourceStore,doFilterResourcesWithEvents,eventStore,activeRange){if(doFilterResourcesWithEvents){let instancesInRange=filterEventInstancesInRange(eventStore.instances,activeRange);let hasEvents=computeHasEvents(instancesInRange,eventStore.defs);Object.assign(hasEvents,computeAncestorHasEvents(hasEvents,resourceStore));return filterHash(resourceStore,(resource,resourceId)=>hasEvents[resourceId]);}
return resourceStore;}
function filterEventInstancesInRange(eventInstances,activeRange){return filterHash(eventInstances,(eventInstance)=>rangesIntersect(eventInstance.range,activeRange));}
function computeHasEvents(eventInstances,eventDefs){let hasEvents={};for(let instanceId in eventInstances){let instance=eventInstances[instanceId];for(let resourceId of eventDefs[instance.defId].resourceIds){hasEvents[resourceId]=true;}}
return hasEvents;}
function computeAncestorHasEvents(hasEvents,resourceStore){let res={};for(let resourceId in hasEvents){let resource;while((resource=resourceStore[resourceId])){resourceId=resource.parentId;if(resourceId){res[resourceId]=true;}
else{break;}}}
return res;}
function transformIsDraggable(val,eventDef,eventUi,context){if(!val){let state=context.getCurrentData();let viewSpec=state.viewSpecs[state.currentViewType];if(viewSpec.optionDefaults.needsResourceData){if(computeResourceEditable(eventDef,context)){return true;}}}
return val;}
class ResourceEventConfigAdder{constructor(){this.buildResourceEventUis=memoize(buildResourceEventUis,isPropsEqual);this.injectResourceEventUis=memoize(injectResourceEventUis);}
transform(viewProps,calendarProps){if(!calendarProps.viewSpec.optionDefaults.needsResourceData){return{eventUiBases:this.injectResourceEventUis(viewProps.eventUiBases,viewProps.eventStore.defs,this.buildResourceEventUis(calendarProps.resourceStore)),};}
return null;}}
function buildResourceEventUis(resourceStore){return mapHash(resourceStore,(resource)=>resource.ui);}
function injectResourceEventUis(eventUiBases,eventDefs,resourceEventUis){return mapHash(eventUiBases,(eventUi,defId)=>{if(defId){return injectResourceEventUi(eventUi,eventDefs[defId],resourceEventUis);}
return eventUi;});}
function injectResourceEventUi(origEventUi,eventDef,resourceEventUis){let parts=[];for(let resourceId of eventDef.resourceIds){if(resourceEventUis[resourceId]){parts.unshift(resourceEventUis[resourceId]);}}
parts.unshift(origEventUi);return combineEventUis(parts);}
let defs=[];function registerResourceSourceDef(def){defs.push(def);}
function getResourceSourceDef(id){return defs[id];}
function getResourceSourceDefs(){return defs;}
const RESOURCE_SOURCE_REFINERS={id:String,resources:identity,url:String,method:String,startParam:String,endParam:String,timeZoneParam:String,extraParams:identity,};function parseResourceSource(input){let inputObj;if(typeof input==='string'){inputObj={url:input};}
else if(typeof input==='function'||Array.isArray(input)){inputObj={resources:input};}
else if(typeof input==='object'&&input){inputObj=input;}
if(inputObj){let{refined,extra}=refineProps(inputObj,RESOURCE_SOURCE_REFINERS);warnUnknownProps(extra);let metaRes=buildResourceSourceMeta(refined);if(metaRes){return{_raw:input,sourceId:guid(),sourceDefId:metaRes.sourceDefId,meta:metaRes.meta,publicId:refined.id||'',isFetching:false,latestFetchId:'',fetchRange:null,};}}
return null;}
function buildResourceSourceMeta(refined){let defs=getResourceSourceDefs();for(let i=defs.length-1;i>=0;i-=1){let def=defs[i];let meta=def.parseMeta(refined);if(meta){return{meta,sourceDefId:i};}}
return null;}
function warnUnknownProps(props){for(let propName in props){console.warn(`Unknown resource prop'${propName}'`);}}
function reduceResourceSource(source,action,context){let{options,dateProfile}=context;if(!source||!action){return createSource(options.initialResources||options.resources,dateProfile.activeRange,options.refetchResourcesOnNavigate,context);}
switch(action.type){case'RESET_RESOURCE_SOURCE':return createSource(action.resourceSourceInput,dateProfile.activeRange,options.refetchResourcesOnNavigate,context);case'PREV':case'NEXT':case'CHANGE_DATE':case'CHANGE_VIEW_TYPE':return handleRangeChange(source,dateProfile.activeRange,options.refetchResourcesOnNavigate,context);case'RECEIVE_RESOURCES':case'RECEIVE_RESOURCE_ERROR':return receiveResponse(source,action.fetchId,action.fetchRange);case'REFETCH_RESOURCES':return fetchSource(source,dateProfile.activeRange,context);default:return source;}}
function createSource(input,activeRange,refetchResourcesOnNavigate,context){if(input){let source=parseResourceSource(input);source=fetchSource(source,refetchResourcesOnNavigate?activeRange:null,context);return source;}
return null;}
function handleRangeChange(source,activeRange,refetchResourcesOnNavigate,context){if(refetchResourcesOnNavigate&&!doesSourceIgnoreRange(source)&&(!source.fetchRange||!rangesEqual(source.fetchRange,activeRange))){return fetchSource(source,activeRange,context);}
return source;}
function doesSourceIgnoreRange(source){return Boolean(getResourceSourceDef(source.sourceDefId).ignoreRange);}
function fetchSource(source,fetchRange,context){let sourceDef=getResourceSourceDef(source.sourceDefId);let fetchId=guid();sourceDef.fetch({resourceSource:source,range:fetchRange,context,},(res)=>{context.dispatch({type:'RECEIVE_RESOURCES',fetchId,fetchRange,rawResources:res.rawResources,});},(error)=>{context.dispatch({type:'RECEIVE_RESOURCE_ERROR',fetchId,fetchRange,error,});});return Object.assign(Object.assign({},source),{isFetching:true,latestFetchId:fetchId});}
function receiveResponse(source,fetchId,fetchRange){if(fetchId===source.latestFetchId){return Object.assign(Object.assign({},source),{isFetching:false,fetchRange});}
return source;}
function reduceResourceStore(store,action,source,context){if(!store||!action){return{};}
switch(action.type){case'RECEIVE_RESOURCES':return receiveRawResources(store,action.rawResources,action.fetchId,source,context);case'ADD_RESOURCE':return addResource(store,action.resourceHash);case'REMOVE_RESOURCE':return removeResource(store,action.resourceId);case'SET_RESOURCE_PROP':return setResourceProp(store,action.resourceId,action.propName,action.propValue);case'SET_RESOURCE_EXTENDED_PROP':return setResourceExtendedProp(store,action.resourceId,action.propName,action.propValue);default:return store;}}
function receiveRawResources(existingStore,inputs,fetchId,source,context){if(source.latestFetchId===fetchId){let nextStore={};for(let input of inputs){parseResource(input,'',nextStore,context);}
return nextStore;}
return existingStore;}
function addResource(existingStore,additions){return Object.assign(Object.assign({},existingStore),additions);}
function removeResource(existingStore,resourceId){let newStore=Object.assign({},existingStore);delete newStore[resourceId];for(let childResourceId in newStore){if(newStore[childResourceId].parentId===resourceId){newStore[childResourceId]=Object.assign(Object.assign({},newStore[childResourceId]),{parentId:''});}}
return newStore;}
function setResourceProp(existingStore,resourceId,name,value){let existingResource=existingStore[resourceId];if(existingResource){return Object.assign(Object.assign({},existingStore),{[resourceId]:Object.assign(Object.assign({},existingResource),{[name]:value})});}
return existingStore;}
function setResourceExtendedProp(existingStore,resourceId,name,value){let existingResource=existingStore[resourceId];if(existingResource){return Object.assign(Object.assign({},existingStore),{[resourceId]:Object.assign(Object.assign({},existingResource),{extendedProps:Object.assign(Object.assign({},existingResource.extendedProps),{[name]:value})})});}
return existingStore;}
function reduceResourceEntityExpansions(expansions,action){if(!expansions||!action){return{};}
switch(action.type){case'SET_RESOURCE_ENTITY_EXPANDED':return Object.assign(Object.assign({},expansions),{[action.id]:action.isExpanded});default:return expansions;}}
function reduceResources(state,action,context){let resourceSource=reduceResourceSource(state&&state.resourceSource,action,context);let resourceStore=reduceResourceStore(state&&state.resourceStore,action,resourceSource,context);let resourceEntityExpansions=reduceResourceEntityExpansions(state&&state.resourceEntityExpansions,action);return{resourceSource,resourceStore,resourceEntityExpansions,};}
const EVENT_REFINERS={resourceId:String,resourceIds:identity,resourceEditable:Boolean,};function generateEventDefResourceMembers(refined){return{resourceIds:ensureStringArray(refined.resourceIds).concat(refined.resourceId?[refined.resourceId]:[]),resourceEditable:refined.resourceEditable,};}
function ensureStringArray(items){return(items||[]).map((item)=>String(item));}
function transformDateSelectionJoin(hit0,hit1){let resourceId0=hit0.dateSpan.resourceId;let resourceId1=hit1.dateSpan.resourceId;if(resourceId0&&resourceId1){return{resourceId:resourceId0};}
return null;}
CalendarImpl.prototype.addResource=function(input,scrollTo=true){let currentState=this.getCurrentData();let resourceHash;let resource;if(input instanceof ResourceApi){resource=input._resource;resourceHash={[resource.id]:resource};}
else{resourceHash={};resource=parseResource(input,'',resourceHash,currentState);}
this.dispatch({type:'ADD_RESOURCE',resourceHash,});if(scrollTo){this.trigger('_scrollRequest',{resourceId:resource.id});}
let resourceApi=new ResourceApi(currentState,resource);currentState.emitter.trigger('resourceAdd',{resource:resourceApi,revert:()=>{this.dispatch({type:'REMOVE_RESOURCE',resourceId:resource.id,});},});return resourceApi;};CalendarImpl.prototype.getResourceById=function(id){id=String(id);let currentState=this.getCurrentData();if(currentState.resourceStore){let rawResource=currentState.resourceStore[id];if(rawResource){return new ResourceApi(currentState,rawResource);}}
return null;};CalendarImpl.prototype.getResources=function(){let currentState=this.getCurrentData();let{resourceStore}=currentState;let resourceApis=[];if(resourceStore){for(let resourceId in resourceStore){resourceApis.push(new ResourceApi(currentState,resourceStore[resourceId]));}}
return resourceApis;};CalendarImpl.prototype.getTopLevelResources=function(){let currentState=this.getCurrentData();let{resourceStore}=currentState;let resourceApis=[];if(resourceStore){for(let resourceId in resourceStore){if(!resourceStore[resourceId].parentId){resourceApis.push(new ResourceApi(currentState,resourceStore[resourceId]));}}}
return resourceApis;};CalendarImpl.prototype.refetchResources=function(){this.dispatch({type:'REFETCH_RESOURCES',});};function transformDatePoint(dateSpan,context){return dateSpan.resourceId?{resource:context.calendarApi.getResourceById(dateSpan.resourceId)}:{};}
function transformDateSpan(dateSpan,context){return dateSpan.resourceId?{resource:context.calendarApi.getResourceById(dateSpan.resourceId)}:{};}
function isPropsValidWithResources(combinedProps,context){let splitter=new ResourceSplitter();let sets=splitter.splitProps(Object.assign(Object.assign({},combinedProps),{resourceStore:context.getCurrentData().resourceStore}));for(let resourceId in sets){let props=sets[resourceId];if(resourceId&&sets['']){props=Object.assign(Object.assign({},props),{eventStore:mergeEventStores(sets[''].eventStore,props.eventStore),eventUiBases:Object.assign(Object.assign({},sets[''].eventUiBases),props.eventUiBases)});}
if(!isPropsValid(props,context,{resourceId},filterConfig.bind(null,resourceId))){return false;}}
return true;}
function filterConfig(resourceId,config){return Object.assign(Object.assign({},config),{constraints:filterConstraints(resourceId,config.constraints)});}
function filterConstraints(resourceId,constraints){return constraints.map((constraint)=>{let defs=constraint.defs;if(defs){for(let defId in defs){let resourceIds=defs[defId].resourceIds;if(resourceIds.length&&resourceIds.indexOf(resourceId)===-1){return false;}}}
return constraint;});}
function transformExternalDef(dateSpan){return dateSpan.resourceId?{resourceId:dateSpan.resourceId}:{};}
const optionChangeHandlers={resources:handleResources,};function handleResources(newSourceInput,context){let oldSourceInput=context.getCurrentData().resourceSource._raw;if(oldSourceInput!==newSourceInput){context.dispatch({type:'RESET_RESOURCE_SOURCE',resourceSourceInput:newSourceInput,});}}
const OPTION_REFINERS={initialResources:identity,resources:identity,eventResourceEditable:Boolean,refetchResourcesOnNavigate:Boolean,resourceOrder:parseFieldSpecs,filterResourcesWithEvents:Boolean,resourceGroupField:String,resourceAreaWidth:identity,resourceAreaColumns:identity,resourcesInitiallyExpanded:Boolean,datesAboveResources:Boolean,needsResourceData:Boolean,resourceAreaHeaderClassNames:identity,resourceAreaHeaderContent:identity,resourceAreaHeaderDidMount:identity,resourceAreaHeaderWillUnmount:identity,resourceGroupLabelClassNames:identity,resourceGroupLabelContent:identity,resourceGroupLabelDidMount:identity,resourceGroupLabelWillUnmount:identity,resourceLabelClassNames:identity,resourceLabelContent:identity,resourceLabelDidMount:identity,resourceLabelWillUnmount:identity,resourceLaneClassNames:identity,resourceLaneContent:identity,resourceLaneDidMount:identity,resourceLaneWillUnmount:identity,resourceGroupLaneClassNames:identity,resourceGroupLaneContent:identity,resourceGroupLaneDidMount:identity,resourceGroupLaneWillUnmount:identity,};const LISTENER_REFINERS={resourcesSet:identity,resourceAdd:identity,resourceChange:identity,resourceRemove:identity,};EventImpl.prototype.getResources=function(){let{calendarApi}=this._context;return this._def.resourceIds.map((resourceId)=>calendarApi.getResourceById(resourceId));};EventImpl.prototype.setResources=function(resources){let resourceIds=[];for(let resource of resources){let resourceId=null;if(typeof resource==='string'){resourceId=resource;}
else if(typeof resource==='number'){resourceId=String(resource);}
else if(resource instanceof ResourceApi){resourceId=resource.id;}
else{console.warn('unknown resource type: '+resource);}
if(resourceId){resourceIds.push(resourceId);}}
this.mutate({standardProps:{resourceIds,},});};registerResourceSourceDef({ignoreRange:true,parseMeta(refined){if(Array.isArray(refined.resources)){return refined.resources;}
return null;},fetch(arg,successCallback){successCallback({rawResources:arg.resourceSource.meta,});},});registerResourceSourceDef({parseMeta(refined){if(typeof refined.resources==='function'){return refined.resources;}
return null;},fetch(arg,successCallback,errorCallback){const dateEnv=arg.context.dateEnv;const func=arg.resourceSource.meta;const publicArg=arg.range?{start:dateEnv.toDate(arg.range.start),end:dateEnv.toDate(arg.range.end),startStr:dateEnv.formatIso(arg.range.start),endStr:dateEnv.formatIso(arg.range.end),timeZone:dateEnv.timeZone,}:{};unpromisify(func.bind(null,publicArg),(rawResources)=>successCallback({rawResources}),errorCallback);},});registerResourceSourceDef({parseMeta(refined){if(refined.url){return{url:refined.url,method:(refined.method||'GET').toUpperCase(),extraParams:refined.extraParams,};}
return null;},fetch(arg,successCallback,errorCallback){const meta=arg.resourceSource.meta;const requestParams=buildRequestParams(meta,arg.range,arg.context);requestJson(meta.method,meta.url,requestParams).then(([rawResources,response])=>{successCallback({rawResources,response});},errorCallback);},});function buildRequestParams(meta,range,context){let{dateEnv,options}=context;let startParam;let endParam;let timeZoneParam;let customRequestParams;let params={};if(range){startParam=meta.startParam;if(startParam==null){startParam=options.startParam;}
endParam=meta.endParam;if(endParam==null){endParam=options.endParam;}
timeZoneParam=meta.timeZoneParam;if(timeZoneParam==null){timeZoneParam=options.timeZoneParam;}
params[startParam]=dateEnv.formatIso(range.start);params[endParam]=dateEnv.formatIso(range.end);if(dateEnv.timeZone!=='local'){params[timeZoneParam]=dateEnv.timeZone;}}
if(typeof meta.extraParams==='function'){customRequestParams=meta.extraParams();}
else{customRequestParams=meta.extraParams||{};}
Object.assign(params,customRequestParams);return params;}
var index$3=createPlugin({name:'@fullcalendar/resource',premiumReleaseDate:'2024-06-05',deps:[index$7],reducers:[reduceResources],isLoadingFuncs:[(state)=>state.resourceSource&&state.resourceSource.isFetching,],eventRefiners:EVENT_REFINERS,eventDefMemberAdders:[generateEventDefResourceMembers],isDraggableTransformers:[transformIsDraggable],eventDragMutationMassagers:[massageEventDragMutation],eventDefMutationAppliers:[applyEventDefMutation],dateSelectionTransformers:[transformDateSelectionJoin],datePointTransforms:[transformDatePoint],dateSpanTransforms:[transformDateSpan],viewPropsTransformers:[ResourceDataAdder,ResourceEventConfigAdder],isPropsValid:isPropsValidWithResources,externalDefTransforms:[transformExternalDef],eventDropTransformers:[transformEventDrop],optionChangeHandlers,optionRefiners:OPTION_REFINERS,listenerRefiners:LISTENER_REFINERS,propSetHandlers:{resourceStore:handleResourceStore},});class ResourceDayTableJoiner extends VResourceJoiner{transformSeg(seg,resourceDayTableModel,resourceI){let colRanges=resourceDayTableModel.computeColRanges(seg.firstCol,seg.lastCol,resourceI);return colRanges.map((colRange)=>(Object.assign(Object.assign(Object.assign({},seg),colRange),{isStart:seg.isStart&&colRange.isStart,isEnd:seg.isEnd&&colRange.isEnd})));}}
class ResourceDayTable extends DateComponent{constructor(){super(...arguments);this.splitter=new VResourceSplitter();this.slicers={};this.joiner=new ResourceDayTableJoiner();this.tableRef=d();this.isHitComboAllowed=(hit0,hit1)=>{let allowAcrossResources=this.props.resourceDayTableModel.dayTableModel.colCnt===1;return allowAcrossResources||hit0.dateSpan.resourceId===hit1.dateSpan.resourceId;};}
render(){let{props,context}=this;let{resourceDayTableModel,nextDayThreshold,dateProfile}=props;let splitProps=this.splitter.splitProps(props);this.slicers=mapHash(splitProps,(split,resourceId)=>this.slicers[resourceId]||new DayTableSlicer());let slicedProps=mapHash(this.slicers,(slicer,resourceId)=>slicer.sliceProps(splitProps[resourceId],dateProfile,nextDayThreshold,context,resourceDayTableModel.dayTableModel));return(y(Table,Object.assign({forPrint:props.forPrint,ref:this.tableRef},this.joiner.joinProps(slicedProps,resourceDayTableModel),{cells:resourceDayTableModel.cells,dateProfile:dateProfile,colGroupNode:props.colGroupNode,tableMinWidth:props.tableMinWidth,renderRowIntro:props.renderRowIntro,dayMaxEvents:props.dayMaxEvents,dayMaxEventRows:props.dayMaxEventRows,showWeekNumbers:props.showWeekNumbers,expandRows:props.expandRows,headerAlignElRef:props.headerAlignElRef,clientWidth:props.clientWidth,clientHeight:props.clientHeight,isHitComboAllowed:this.isHitComboAllowed})));}}
class ResourceDayTableView extends TableView{constructor(){super(...arguments);this.flattenResources=memoize(flattenResources);this.buildResourceDayTableModel=memoize(buildResourceDayTableModel);this.headerRef=d();this.tableRef=d();}
render(){let{props,context}=this;let{options}=context;let resourceOrderSpecs=options.resourceOrder||DEFAULT_RESOURCE_ORDER;let resources=this.flattenResources(props.resourceStore,resourceOrderSpecs);let resourceDayTableModel=this.buildResourceDayTableModel(props.dateProfile,context.dateProfileGenerator,resources,options.datesAboveResources,context);let headerContent=options.dayHeaders&&(y(ResourceDayHeader,{ref:this.headerRef,resources:resources,dateProfile:props.dateProfile,dates:resourceDayTableModel.dayTableModel.headerDates,datesRepDistinctDays:true}));let bodyContent=(contentArg)=>(y(ResourceDayTable,{ref:this.tableRef,dateProfile:props.dateProfile,resourceDayTableModel:resourceDayTableModel,businessHours:props.businessHours,eventStore:props.eventStore,eventUiBases:props.eventUiBases,dateSelection:props.dateSelection,eventSelection:props.eventSelection,eventDrag:props.eventDrag,eventResize:props.eventResize,nextDayThreshold:options.nextDayThreshold,tableMinWidth:contentArg.tableMinWidth,colGroupNode:contentArg.tableColGroupNode,dayMaxEvents:options.dayMaxEvents,dayMaxEventRows:options.dayMaxEventRows,showWeekNumbers:options.weekNumbers,expandRows:!props.isHeightAuto,headerAlignElRef:this.headerElRef,clientWidth:contentArg.clientWidth,clientHeight:contentArg.clientHeight,forPrint:props.forPrint}));return options.dayMinWidth?this.renderHScrollLayout(headerContent,bodyContent,resourceDayTableModel.colCnt,options.dayMinWidth):this.renderSimpleLayout(headerContent,bodyContent);}}
function buildResourceDayTableModel(dateProfile,dateProfileGenerator,resources,datesAboveResources,context){let dayTable=buildDayTableModel(dateProfile,dateProfileGenerator);return datesAboveResources?new DayResourceTableModel(dayTable,resources,context):new ResourceDayTableModel(dayTable,resources,context);}
var index$2=createPlugin({name:'@fullcalendar/resource-daygrid',premiumReleaseDate:'2024-06-05',deps:[index$7,index$3,index$b,],initialView:'resourceDayGridDay',views:{resourceDayGrid:{type:'dayGrid',component:ResourceDayTableView,needsResourceData:true,},resourceDayGridDay:{type:'resourceDayGrid',duration:{days:1},},resourceDayGridWeek:{type:'resourceDayGrid',duration:{weeks:1},},resourceDayGridMonth:{type:'resourceDayGrid',duration:{months:1},fixedWeekCount:true,},},});class ResourceDayTimeColsJoiner extends VResourceJoiner{transformSeg(seg,resourceDayTable,resourceI){return[Object.assign(Object.assign({},seg),{col:resourceDayTable.computeCol(seg.col,resourceI)}),];}}
class ResourceDayTimeCols extends DateComponent{constructor(){super(...arguments);this.buildDayRanges=memoize(buildDayRanges);this.splitter=new VResourceSplitter();this.slicers={};this.joiner=new ResourceDayTimeColsJoiner();this.timeColsRef=d();this.isHitComboAllowed=(hit0,hit1)=>{let allowAcrossResources=this.dayRanges.length===1;return allowAcrossResources||hit0.dateSpan.resourceId===hit1.dateSpan.resourceId;};}
render(){let{props,context}=this;let{dateEnv,options}=context;let{dateProfile,resourceDayTableModel}=props;let dayRanges=this.dayRanges=this.buildDayRanges(resourceDayTableModel.dayTableModel,dateProfile,dateEnv);let splitProps=this.splitter.splitProps(props);this.slicers=mapHash(splitProps,(split,resourceId)=>this.slicers[resourceId]||new DayTimeColsSlicer());let slicedProps=mapHash(this.slicers,(slicer,resourceId)=>slicer.sliceProps(splitProps[resourceId],dateProfile,null,context,dayRanges));return(y(NowTimer,{unit:options.nowIndicator?'minute':'day'},(nowDate,todayRange)=>(y(TimeCols,Object.assign({ref:this.timeColsRef},this.joiner.joinProps(slicedProps,resourceDayTableModel),{dateProfile:dateProfile,axis:props.axis,slotDuration:props.slotDuration,slatMetas:props.slatMetas,cells:resourceDayTableModel.cells[0],tableColGroupNode:props.tableColGroupNode,tableMinWidth:props.tableMinWidth,clientWidth:props.clientWidth,clientHeight:props.clientHeight,expandRows:props.expandRows,nowDate:nowDate,nowIndicatorSegs:options.nowIndicator&&this.buildNowIndicatorSegs(nowDate),todayRange:todayRange,onScrollTopRequest:props.onScrollTopRequest,forPrint:props.forPrint,onSlatCoords:props.onSlatCoords,isHitComboAllowed:this.isHitComboAllowed})))));}
buildNowIndicatorSegs(date){let nonResourceSegs=this.slicers[''].sliceNowDate(date,this.props.dateProfile,this.context.options.nextDayThreshold,this.context,this.dayRanges);return this.joiner.expandSegs(this.props.resourceDayTableModel,nonResourceSegs);}}
class ResourceDayTimeColsView extends TimeColsView{constructor(){super(...arguments);this.flattenResources=memoize(flattenResources);this.buildResourceTimeColsModel=memoize(buildResourceTimeColsModel);this.buildSlatMetas=memoize(buildSlatMetas);}
render(){let{props,context}=this;let{options,dateEnv}=context;let{dateProfile}=props;let splitProps=this.allDaySplitter.splitProps(props);let resourceOrderSpecs=options.resourceOrder||DEFAULT_RESOURCE_ORDER;let resources=this.flattenResources(props.resourceStore,resourceOrderSpecs);let resourceDayTableModel=this.buildResourceTimeColsModel(dateProfile,context.dateProfileGenerator,resources,options.datesAboveResources,context);let slatMetas=this.buildSlatMetas(dateProfile.slotMinTime,dateProfile.slotMaxTime,options.slotLabelInterval,options.slotDuration,dateEnv);let{dayMinWidth}=options;let hasAttachedAxis=!dayMinWidth;let hasDetachedAxis=dayMinWidth;let headerContent=options.dayHeaders&&(y(ResourceDayHeader,{resources:resources,dates:resourceDayTableModel.dayTableModel.headerDates,dateProfile:dateProfile,datesRepDistinctDays:true,renderIntro:hasAttachedAxis?this.renderHeadAxis:null}));let allDayContent=(options.allDaySlot!==false)&&((contentArg)=>(y(ResourceDayTable,Object.assign({},splitProps.allDay,{dateProfile:dateProfile,resourceDayTableModel:resourceDayTableModel,nextDayThreshold:options.nextDayThreshold,tableMinWidth:contentArg.tableMinWidth,colGroupNode:contentArg.tableColGroupNode,renderRowIntro:hasAttachedAxis?this.renderTableRowAxis:null,showWeekNumbers:false,expandRows:false,headerAlignElRef:this.headerElRef,clientWidth:contentArg.clientWidth,clientHeight:contentArg.clientHeight,forPrint:props.forPrint},this.getAllDayMaxEventProps()))));let timeGridContent=(contentArg)=>(y(ResourceDayTimeCols,Object.assign({},splitProps.timed,{dateProfile:dateProfile,axis:hasAttachedAxis,slotDuration:options.slotDuration,slatMetas:slatMetas,resourceDayTableModel:resourceDayTableModel,tableColGroupNode:contentArg.tableColGroupNode,tableMinWidth:contentArg.tableMinWidth,clientWidth:contentArg.clientWidth,clientHeight:contentArg.clientHeight,onSlatCoords:this.handleSlatCoords,expandRows:contentArg.expandRows,forPrint:props.forPrint,onScrollTopRequest:this.handleScrollTopRequest})));return hasDetachedAxis?this.renderHScrollLayout(headerContent,allDayContent,timeGridContent,resourceDayTableModel.colCnt,dayMinWidth,slatMetas,this.state.slatCoords):this.renderSimpleLayout(headerContent,allDayContent,timeGridContent);}}
function buildResourceTimeColsModel(dateProfile,dateProfileGenerator,resources,datesAboveResources,context){let dayTable=buildTimeColsModel(dateProfile,dateProfileGenerator);return datesAboveResources?new DayResourceTableModel(dayTable,resources,context):new ResourceDayTableModel(dayTable,resources,context);}
var index$1=createPlugin({name:'@fullcalendar/resource-timegrid',premiumReleaseDate:'2024-06-05',deps:[index$7,index$3,index$a,],initialView:'resourceTimeGridDay',views:{resourceTimeGrid:{type:'timeGrid',component:ResourceDayTimeColsView,needsResourceData:true,},resourceTimeGridDay:{type:'resourceTimeGrid',duration:{days:1},},resourceTimeGridWeek:{type:'resourceTimeGrid',duration:{weeks:1},},},});function ExpanderIcon({depth,hasChildren,isExpanded,onExpanderClick}){let nodes=[];for(let i=0;i<depth;i+=1){nodes.push(y("span",{className:"fc-icon"}));}
let iconClassNames=['fc-icon'];if(hasChildren){if(isExpanded){iconClassNames.push('fc-icon-minus-square');}
else{iconClassNames.push('fc-icon-plus-square');}}
nodes.push(y("span",{className:'fc-datagrid-expander'+(hasChildren?'':' fc-datagrid-expander-placeholder'),onClick:onExpanderClick},y("span",{className:iconClassNames.join(' ')})));return y(_,{},...nodes);}
class SpreadsheetIndividualCell extends BaseComponent{constructor(){super(...arguments);this.refineRenderProps=memoizeObjArg(refineRenderProps);this.onExpanderClick=(ev)=>{let{props}=this;if(props.hasChildren){this.context.dispatch({type:'SET_RESOURCE_ENTITY_EXPANDED',id:props.resource.id,isExpanded:!props.isExpanded,});}};}
render(){let{props,context}=this;let{colSpec}=props;let renderProps=this.refineRenderProps({resource:props.resource,fieldValue:props.fieldValue,context,});return(y(ContentContainer,{elTag:"td",elClasses:['fc-datagrid-cell','fc-resource',],elAttrs:{role:'gridcell','data-resource-id':props.resource.id,},renderProps:renderProps,generatorName:colSpec.isMain?'resourceLabelContent':undefined,customGenerator:colSpec.cellContent,defaultGenerator:renderResourceInner,classNameGenerator:colSpec.cellClassNames,didMount:colSpec.cellDidMount,willUnmount:colSpec.cellWillUnmount},(InnerContent)=>(y("div",{className:"fc-datagrid-cell-frame",style:{height:props.innerHeight}},y("div",{className:"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner"},colSpec.isMain&&(y(ExpanderIcon,{depth:props.depth,hasChildren:props.hasChildren,isExpanded:props.isExpanded,onExpanderClick:this.onExpanderClick})),y(InnerContent,{elTag:"span",elClasses:['fc-datagrid-cell-main']}))))));}}
function renderResourceInner(renderProps){return renderProps.fieldValue||y(_,null,"\u00A0");}
function refineRenderProps(input){return{resource:new ResourceApi(input.context,input.resource),fieldValue:input.fieldValue,view:input.context.viewApi,};}
class SpreadsheetGroupCell extends BaseComponent{render(){let{props,context}=this;let{colSpec}=props;let renderProps={groupValue:props.fieldValue,view:context.viewApi,};return(y(ContentContainer,{elTag:"td",elClasses:['fc-datagrid-cell','fc-resource-group',],elAttrs:{role:'gridcell',rowSpan:props.rowSpan,},renderProps:renderProps,generatorName:"resourceGroupLabelContent",customGenerator:colSpec.cellContent,defaultGenerator:renderGroupInner,classNameGenerator:colSpec.cellClassNames,didMount:colSpec.cellDidMount,willUnmount:colSpec.cellWillUnmount},(InnerContent)=>(y("div",{className:"fc-datagrid-cell-frame fc-datagrid-cell-frame-liquid"},y(InnerContent,{elTag:"div",elClasses:['fc-datagrid-cell-cushion','fc-sticky']})))));}}
function renderGroupInner(renderProps){return renderProps.groupValue||y(_,null,"\u00A0");}
class SpreadsheetRow extends BaseComponent{render(){let{props}=this;let{resource,rowSpans,depth}=props;let resourceFields=buildResourceFields(resource);return(y("tr",{role:"row"},props.colSpecs.map((colSpec,i)=>{let rowSpan=rowSpans[i];if(rowSpan===0){return null;}
if(rowSpan==null){rowSpan=1;}
let fieldValue=colSpec.field?resourceFields[colSpec.field]:(resource.title||getPublicId(resource.id));if(rowSpan>1){return(y(SpreadsheetGroupCell,{key:i,colSpec:colSpec,fieldValue:fieldValue,rowSpan:rowSpan}));}
return(y(SpreadsheetIndividualCell,{key:i,colSpec:colSpec,resource:resource,fieldValue:fieldValue,depth:depth,hasChildren:props.hasChildren,isExpanded:props.isExpanded,innerHeight:props.innerHeight}));})));}}
SpreadsheetRow.addPropsEquality({rowSpans:isArraysEqual,});class SpreadsheetGroupRow extends BaseComponent{constructor(){super(...arguments);this.innerInnerRef=d();this.onExpanderClick=()=>{let{props}=this;this.context.dispatch({type:'SET_RESOURCE_ENTITY_EXPANDED',id:props.id,isExpanded:!props.isExpanded,});};}
render(){let{props,context}=this;let renderProps={groupValue:props.group.value,view:context.viewApi};let spec=props.group.spec;return(y("tr",{role:"row"},y(ContentContainer,{elTag:"th",elClasses:['fc-datagrid-cell','fc-resource-group',context.theme.getClass('tableCellShaded'),],elAttrs:{role:'columnheader',scope:'colgroup',colSpan:props.spreadsheetColCnt,},renderProps:renderProps,generatorName:"resourceGroupLabelContent",customGenerator:spec.labelContent,defaultGenerator:renderCellInner,classNameGenerator:spec.labelClassNames,didMount:spec.labelDidMount,willUnmount:spec.labelWillUnmount},(InnerContent)=>(y("div",{className:"fc-datagrid-cell-frame",style:{height:props.innerHeight}},y("div",{className:"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner",ref:this.innerInnerRef},y(ExpanderIcon,{depth:0,hasChildren:true,isExpanded:props.isExpanded,onExpanderClick:this.onExpanderClick}),y(InnerContent,{elTag:"span",elClasses:['fc-datagrid-cell-main']})))))));}}
SpreadsheetGroupRow.addPropsEquality({group:isGroupsEqual,});function renderCellInner(renderProps){return renderProps.groupValue||y(_,null,"\u00A0");}
const SPREADSHEET_COL_MIN_WIDTH=20;class SpreadsheetHeader extends BaseComponent{constructor(){super(...arguments);this.resizerElRefs=new RefMap(this._handleColResizerEl.bind(this));this.colDraggings={};}
render(){let{colSpecs,superHeaderRendering,rowInnerHeights}=this.props;let renderProps={view:this.context.viewApi};let rowNodes=[];rowInnerHeights=rowInnerHeights.slice();if(superHeaderRendering){let rowInnerHeight=rowInnerHeights.shift();rowNodes.push(y("tr",{key:"row-super",role:"row"},y(ContentContainer,{elTag:"th",elClasses:['fc-datagrid-cell','fc-datagrid-cell-super',],elAttrs:{role:'columnheader',scope:'colgroup',colSpan:colSpecs.length,},renderProps:renderProps,generatorName:"resourceAreaHeaderContent",customGenerator:superHeaderRendering.headerContent,defaultGenerator:superHeaderRendering.headerDefault,classNameGenerator:superHeaderRendering.headerClassNames,didMount:superHeaderRendering.headerDidMount,willUnmount:superHeaderRendering.headerWillUnmount},(InnerContent)=>(y("div",{className:"fc-datagrid-cell-frame",style:{height:rowInnerHeight}},y(InnerContent,{elTag:"div",elClasses:['fc-datagrid-cell-cushion','fc-scrollgrid-sync-inner']}))))));}
let rowInnerHeight=rowInnerHeights.shift();rowNodes.push(y("tr",{key:"row",role:"row"},colSpecs.map((colSpec,i)=>{let isLastCol=i===(colSpecs.length-1);return(y(ContentContainer,{key:i,elTag:"th",elClasses:['fc-datagrid-cell'],elAttrs:{role:'columnheader'},renderProps:renderProps,generatorName:"resourceAreaHeaderContent",customGenerator:colSpec.headerContent,defaultGenerator:colSpec.headerDefault,classNameGenerator:colSpec.headerClassNames,didMount:colSpec.headerDidMount,willUnmount:colSpec.headerWillUnmount},(InnerContent)=>(y("div",{className:"fc-datagrid-cell-frame",style:{height:rowInnerHeight}},y("div",{className:"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner"},colSpec.isMain&&(y("span",{className:"fc-datagrid-expander fc-datagrid-expander-placeholder"},y("span",{className:"fc-icon"}))),y(InnerContent,{elTag:"span",elClasses:['fc-datagrid-cell-main']})),!isLastCol&&(y("div",{className:"fc-datagrid-cell-resizer",ref:this.resizerElRefs.createRef(i)}))))));})));return(y(_,null,rowNodes));}
_handleColResizerEl(resizerEl,index){let{colDraggings}=this;if(!resizerEl){let dragging=colDraggings[index];if(dragging){dragging.destroy();delete colDraggings[index];}}
else{let dragging=this.initColResizing(resizerEl,parseInt(index,10));if(dragging){colDraggings[index]=dragging;}}}
initColResizing(resizerEl,index){let{pluginHooks,isRtl}=this.context;let{onColWidthChange}=this.props;let ElementDraggingImpl=pluginHooks.elementDraggingImpl;if(ElementDraggingImpl){let dragging=new ElementDraggingImpl(resizerEl);let startWidth;let currentWidths;dragging.emitter.on('dragstart',()=>{let allCells=findElements(elementClosest(resizerEl,'tr'),'th');currentWidths=allCells.map((cellEl)=>(cellEl.getBoundingClientRect().width));startWidth=currentWidths[index];});dragging.emitter.on('dragmove',(pev)=>{currentWidths[index]=Math.max(startWidth+pev.deltaX*(isRtl?-1:1),SPREADSHEET_COL_MIN_WIDTH);if(onColWidthChange){onColWidthChange(currentWidths.slice());}});dragging.setAutoScrollEnabled(false);return dragging;}
return null;}}
class ResourceTimelineLane extends BaseComponent{constructor(){super(...arguments);this.refineRenderProps=memoizeObjArg(refineRenderProps$1);this.handleHeightChange=(innerEl,isStable)=>{if(this.props.onHeightChange){this.props.onHeightChange(elementClosest(innerEl,'tr'),isStable);}};}
render(){let{props,context}=this;let{options}=context;let renderProps=this.refineRenderProps({resource:props.resource,context});return(y("tr",{ref:props.elRef},y(ContentContainer,{elTag:"td",elClasses:['fc-timeline-lane','fc-resource',],elAttrs:{'data-resource-id':props.resource.id,},renderProps:renderProps,generatorName:"resourceLaneContent",customGenerator:options.resourceLaneContent,classNameGenerator:options.resourceLaneClassNames,didMount:options.resourceLaneDidMount,willUnmount:options.resourceLaneWillUnmount},(InnerContent)=>(y("div",{className:"fc-timeline-lane-frame",style:{height:props.innerHeight}},y(InnerContent,{elTag:"div",elClasses:['fc-timeline-lane-misc']}),y(TimelineLane,{dateProfile:props.dateProfile,tDateProfile:props.tDateProfile,nowDate:props.nowDate,todayRange:props.todayRange,nextDayThreshold:props.nextDayThreshold,businessHours:props.businessHours,eventStore:props.eventStore,eventUiBases:props.eventUiBases,dateSelection:props.dateSelection,eventSelection:props.eventSelection,eventDrag:props.eventDrag,eventResize:props.eventResize,timelineCoords:props.timelineCoords,onHeightChange:this.handleHeightChange,resourceId:props.resource.id}))))));}}
class DividerRow extends BaseComponent{render(){let{props,context}=this;let{renderHooks}=props;let renderProps={groupValue:props.groupValue,view:context.viewApi,};return(y("tr",{ref:props.elRef},y(ContentContainer,{elTag:"td",elRef:props.elRef,elClasses:['fc-timeline-lane','fc-resource-group',context.theme.getClass('tableCellShaded'),],renderProps:renderProps,generatorName:"resourceGroupLaneContent",customGenerator:renderHooks.laneContent,classNameGenerator:renderHooks.laneClassNames,didMount:renderHooks.laneDidMount,willUnmount:renderHooks.laneWillUnmount},(InnerContainer)=>(y(InnerContainer,{elTag:"div",elStyle:{height:props.innerHeight}})))));}}
class ResourceTimelineLanesBody extends BaseComponent{render(){let{props,context}=this;let{rowElRefs,innerHeights}=props;return(y("tbody",null,props.rowNodes.map((node,index)=>{if(node.group){return(y(DividerRow,{key:node.id,elRef:rowElRefs.createRef(node.id),groupValue:node.group.value,renderHooks:node.group.spec,innerHeight:innerHeights[index]||''}));}
if(node.resource){let resource=node.resource;return(y(ResourceTimelineLane,Object.assign({key:node.id,elRef:rowElRefs.createRef(node.id)},props.splitProps[resource.id],{resource:resource,dateProfile:props.dateProfile,tDateProfile:props.tDateProfile,nowDate:props.nowDate,todayRange:props.todayRange,nextDayThreshold:context.options.nextDayThreshold,businessHours:resource.businessHours||props.fallbackBusinessHours,innerHeight:innerHeights[index]||'',timelineCoords:props.slatCoords,onHeightChange:props.onRowHeightChange})));}
return null;})));}}
class ResourceTimelineLanes extends BaseComponent{constructor(){super(...arguments);this.rootElRef=d();this.rowElRefs=new RefMap();}
render(){let{props,context}=this;return(y("table",{ref:this.rootElRef,"aria-hidden":true,className:'fc-scrollgrid-sync-table '+context.theme.getClass('table'),style:{minWidth:props.tableMinWidth,width:props.clientWidth,height:props.minHeight,}},y(ResourceTimelineLanesBody,{rowElRefs:this.rowElRefs,rowNodes:props.rowNodes,dateProfile:props.dateProfile,tDateProfile:props.tDateProfile,nowDate:props.nowDate,todayRange:props.todayRange,splitProps:props.splitProps,fallbackBusinessHours:props.fallbackBusinessHours,slatCoords:props.slatCoords,innerHeights:props.innerHeights,onRowHeightChange:props.onRowHeightChange})));}
componentDidMount(){this.updateCoords();}
componentDidUpdate(){this.updateCoords();}
componentWillUnmount(){if(this.props.onRowCoords){this.props.onRowCoords(null);}}
updateCoords(){let{props}=this;if(props.onRowCoords&&props.clientWidth!==null){this.props.onRowCoords(new PositionCache(this.rootElRef.current,collectRowEls(this.rowElRefs.currentMap,props.rowNodes),false,true));}}}
function collectRowEls(elMap,rowNodes){return rowNodes.map((rowNode)=>elMap[rowNode.id]);}
class ResourceTimelineGrid extends DateComponent{constructor(){super(...arguments);this.computeHasResourceBusinessHours=memoize(computeHasResourceBusinessHours);this.resourceSplitter=new ResourceSplitter();this.bgSlicer=new TimelineLaneSlicer();this.slatsRef=d();this.state={slatCoords:null,};this.handleEl=(el)=>{if(el){this.context.registerInteractiveComponent(this,{el});}
else{this.context.unregisterInteractiveComponent(this);}};this.handleSlatCoords=(slatCoords)=>{this.setState({slatCoords});if(this.props.onSlatCoords){this.props.onSlatCoords(slatCoords);}};this.handleRowCoords=(rowCoords)=>{this.rowCoords=rowCoords;if(this.props.onRowCoords){this.props.onRowCoords(rowCoords);}};}
render(){let{props,state,context}=this;let{dateProfile,tDateProfile}=props;let timerUnit=greatestDurationDenominator(tDateProfile.slotDuration).unit;let hasResourceBusinessHours=this.computeHasResourceBusinessHours(props.rowNodes);let splitProps=this.resourceSplitter.splitProps(props);let bgLaneProps=splitProps[''];let bgSlicedProps=this.bgSlicer.sliceProps(bgLaneProps,dateProfile,tDateProfile.isTimeScale?null:props.nextDayThreshold,context,dateProfile,context.dateProfileGenerator,tDateProfile,context.dateEnv);let slatCoords=state.slatCoords&&state.slatCoords.dateProfile===props.dateProfile?state.slatCoords:null;return(y("div",{ref:this.handleEl,className:['fc-timeline-body',props.expandRows?'fc-timeline-body-expandrows':'',].join(' '),style:{minWidth:props.tableMinWidth}},y(NowTimer,{unit:timerUnit},(nowDate,todayRange)=>(y(_,null,y(TimelineSlats,{ref:this.slatsRef,dateProfile:dateProfile,tDateProfile:tDateProfile,nowDate:nowDate,todayRange:todayRange,clientWidth:props.clientWidth,tableColGroupNode:props.tableColGroupNode,tableMinWidth:props.tableMinWidth,onCoords:this.handleSlatCoords,onScrollLeftRequest:props.onScrollLeftRequest}),y(TimelineLaneBg,{businessHourSegs:hasResourceBusinessHours?null:bgSlicedProps.businessHourSegs,bgEventSegs:bgSlicedProps.bgEventSegs,timelineCoords:slatCoords,eventResizeSegs:(bgSlicedProps.eventResize?bgSlicedProps.eventResize.segs:[]),dateSelectionSegs:bgSlicedProps.dateSelectionSegs,nowDate:nowDate,todayRange:todayRange}),y(ResourceTimelineLanes,{rowNodes:props.rowNodes,dateProfile:dateProfile,tDateProfile:props.tDateProfile,nowDate:nowDate,todayRange:todayRange,splitProps:splitProps,fallbackBusinessHours:hasResourceBusinessHours?props.businessHours:null,clientWidth:props.clientWidth,minHeight:props.expandRows?props.clientHeight:'',tableMinWidth:props.tableMinWidth,innerHeights:props.rowInnerHeights,slatCoords:slatCoords,onRowCoords:this.handleRowCoords,onRowHeightChange:props.onRowHeightChange}),(context.options.nowIndicator&&slatCoords&&slatCoords.isDateInRange(nowDate))&&(y("div",{className:"fc-timeline-now-indicator-container"},y(NowIndicatorContainer,{elClasses:['fc-timeline-now-indicator-line'],elStyle:coordToCss(slatCoords.dateToCoord(nowDate),context.isRtl),isAxis:false,date:nowDate}))))))));}
queryHit(positionLeft,positionTop){let rowCoords=this.rowCoords;let rowIndex=rowCoords.topToIndex(positionTop);if(rowIndex!=null){let resource=this.props.rowNodes[rowIndex].resource;if(resource){let slatHit=this.slatsRef.current.positionToHit(positionLeft);if(slatHit){return{dateProfile:this.props.dateProfile,dateSpan:{range:slatHit.dateSpan.range,allDay:slatHit.dateSpan.allDay,resourceId:resource.id,},rect:{left:slatHit.left,right:slatHit.right,top:rowCoords.tops[rowIndex],bottom:rowCoords.bottoms[rowIndex],},dayEl:slatHit.dayEl,layer:0,};}}}
return null;}}
function computeHasResourceBusinessHours(rowNodes){for(let node of rowNodes){let resource=node.resource;if(resource&&resource.businessHours){return true;}}
return false;}
const MIN_RESOURCE_AREA_WIDTH=30;class ResourceTimelineViewLayout extends BaseComponent{constructor(){super(...arguments);this.scrollGridRef=d();this.timeBodyScrollerElRef=d();this.spreadsheetHeaderChunkElRef=d();this.rootElRef=d();this.ensureScrollGridResizeId=0;this.state={resourceAreaWidthOverride:null,};this.ensureScrollGridResize=()=>{if(this.ensureScrollGridResizeId){clearTimeout(this.ensureScrollGridResizeId);}
this.ensureScrollGridResizeId=setTimeout(()=>{this.scrollGridRef.current.handleSizing(false);},config.SCROLLGRID_RESIZE_INTERVAL+1);};}
render(){let{props,state,context}=this;let{options}=context;let stickyHeaderDates=!props.forPrint&&getStickyHeaderDates(options);let stickyFooterScrollbar=!props.forPrint&&getStickyFooterScrollbar(options);let sections=[{type:'header',key:'header',syncRowHeights:true,isSticky:stickyHeaderDates,chunks:[{key:'datagrid',elRef:this.spreadsheetHeaderChunkElRef,tableClassName:'fc-datagrid-header',rowContent:props.spreadsheetHeaderRows,},{key:'divider',outerContent:(y("td",{role:"presentation",className:'fc-resource-timeline-divider '+context.theme.getClass('tableCellShaded')})),},{key:'timeline',content:props.timeHeaderContent,},],},{type:'body',key:'body',syncRowHeights:true,liquid:true,expandRows:Boolean(options.expandRows),chunks:[{key:'datagrid',tableClassName:'fc-datagrid-body',rowContent:props.spreadsheetBodyRows,},{key:'divider',outerContent:(y("td",{role:"presentation",className:'fc-resource-timeline-divider '+context.theme.getClass('tableCellShaded')})),},{key:'timeline',scrollerElRef:this.timeBodyScrollerElRef,content:props.timeBodyContent,},],},];if(stickyFooterScrollbar){sections.push({type:'footer',key:'footer',isSticky:true,chunks:[{key:'datagrid',content:renderScrollShim,},{key:'divider',outerContent:(y("td",{role:"presentation",className:'fc-resource-timeline-divider '+context.theme.getClass('tableCellShaded')})),},{key:'timeline',content:renderScrollShim,},],});}
let resourceAreaWidth=state.resourceAreaWidthOverride!=null?state.resourceAreaWidthOverride:options.resourceAreaWidth;return(y(ScrollGrid,{ref:this.scrollGridRef,elRef:this.rootElRef,liquid:!props.isHeightAuto&&!props.forPrint,forPrint:props.forPrint,collapsibleWidth:false,colGroups:[{cols:props.spreadsheetCols,width:resourceAreaWidth},{cols:[]},{cols:props.timeCols},],sections:sections}));}
forceTimeScroll(left){let scrollGrid=this.scrollGridRef.current;scrollGrid.forceScrollLeft(2,left);}
forceResourceScroll(top){let scrollGrid=this.scrollGridRef.current;scrollGrid.forceScrollTop(1,top);}
getResourceScroll(){let timeBodyScrollerEl=this.timeBodyScrollerElRef.current;return timeBodyScrollerEl.scrollTop;}
componentDidMount(){this.initSpreadsheetResizing();}
componentWillUnmount(){this.destroySpreadsheetResizing();}
initSpreadsheetResizing(){let{isRtl,pluginHooks}=this.context;let ElementDraggingImpl=pluginHooks.elementDraggingImpl;let spreadsheetHeadEl=this.spreadsheetHeaderChunkElRef.current;if(ElementDraggingImpl){let rootEl=this.rootElRef.current;let dragging=this.spreadsheetResizerDragging=new ElementDraggingImpl(rootEl,'.fc-resource-timeline-divider');let dragStartWidth;let viewWidth;dragging.emitter.on('dragstart',()=>{dragStartWidth=spreadsheetHeadEl.getBoundingClientRect().width;viewWidth=rootEl.getBoundingClientRect().width;});dragging.emitter.on('dragmove',(pev)=>{let newWidth=dragStartWidth+pev.deltaX*(isRtl?-1:1);newWidth=Math.max(newWidth,MIN_RESOURCE_AREA_WIDTH);newWidth=Math.min(newWidth,viewWidth-MIN_RESOURCE_AREA_WIDTH);this.setState({resourceAreaWidthOverride:newWidth,},this.ensureScrollGridResize);});dragging.setAutoScrollEnabled(false);}}
destroySpreadsheetResizing(){if(this.spreadsheetResizerDragging){this.spreadsheetResizerDragging.destroy();}}}
class ResourceTimelineView extends BaseComponent{constructor(props,context){super(props,context);this.processColOptions=memoize(processColOptions);this.buildTimelineDateProfile=memoize(buildTimelineDateProfile);this.hasNesting=memoize(hasNesting);this.buildRowNodes=memoize(buildRowNodes);this.layoutRef=d();this.rowNodes=[];this.renderedRowNodes=[];this.buildRowIndex=memoize(buildRowIndex);this.handleSlatCoords=(slatCoords)=>{this.setState({slatCoords});};this.handleRowCoords=(rowCoords)=>{this.rowCoords=rowCoords;this.scrollResponder.update(false);};this.handleMaxCushionWidth=(slotCushionMaxWidth)=>{this.setState({slotCushionMaxWidth:Math.ceil(slotCushionMaxWidth),});};this.handleScrollLeftRequest=(scrollLeft)=>{let layout=this.layoutRef.current;layout.forceTimeScroll(scrollLeft);};this.handleScrollRequest=(request)=>{let{rowCoords}=this;let layout=this.layoutRef.current;let rowId=request.rowId||request.resourceId;if(rowCoords){if(rowId){let rowIdToIndex=this.buildRowIndex(this.renderedRowNodes);let index=rowIdToIndex[rowId];if(index!=null){let scrollTop=(request.fromBottom!=null?rowCoords.bottoms[index]-request.fromBottom:rowCoords.tops[index]);layout.forceResourceScroll(scrollTop);}}
return true;}
return null;};this.handleColWidthChange=(colWidths)=>{this.setState({spreadsheetColWidths:colWidths,});};this.state={resourceAreaWidth:context.options.resourceAreaWidth,spreadsheetColWidths:[],};}
render(){let{props,state,context}=this;let{options,viewSpec}=context;let{superHeaderRendering,groupSpecs,orderSpecs,isVGrouping,colSpecs}=this.processColOptions(context.options);let tDateProfile=this.buildTimelineDateProfile(props.dateProfile,context.dateEnv,options,context.dateProfileGenerator);let rowNodes=this.rowNodes=this.buildRowNodes(props.resourceStore,groupSpecs,orderSpecs,isVGrouping,props.resourceEntityExpansions,options.resourcesInitiallyExpanded);let{slotMinWidth}=options;let slatCols=buildSlatCols(tDateProfile,slotMinWidth||this.computeFallbackSlotMinWidth(tDateProfile));return(y(ViewContainer,{elClasses:['fc-resource-timeline',!this.hasNesting(rowNodes)&&'fc-resource-timeline-flat','fc-timeline',options.eventOverlap===false?'fc-timeline-overlap-disabled':'fc-timeline-overlap-enabled',],viewSpec:viewSpec},y(ResourceTimelineViewLayout,{ref:this.layoutRef,forPrint:props.forPrint,isHeightAuto:props.isHeightAuto,spreadsheetCols:buildSpreadsheetCols(colSpecs,state.spreadsheetColWidths,''),spreadsheetHeaderRows:(contentArg)=>(y(SpreadsheetHeader,{superHeaderRendering:superHeaderRendering,colSpecs:colSpecs,onColWidthChange:this.handleColWidthChange,rowInnerHeights:contentArg.rowSyncHeights})),spreadsheetBodyRows:(contentArg)=>(y(_,null,this.renderSpreadsheetRows(rowNodes,colSpecs,contentArg.rowSyncHeights))),timeCols:slatCols,timeHeaderContent:(contentArg)=>(y(TimelineHeader,{clientWidth:contentArg.clientWidth,clientHeight:contentArg.clientHeight,tableMinWidth:contentArg.tableMinWidth,tableColGroupNode:contentArg.tableColGroupNode,dateProfile:props.dateProfile,tDateProfile:tDateProfile,slatCoords:state.slatCoords,rowInnerHeights:contentArg.rowSyncHeights,onMaxCushionWidth:slotMinWidth?null:this.handleMaxCushionWidth})),timeBodyContent:(contentArg)=>(y(ResourceTimelineGrid,{dateProfile:props.dateProfile,clientWidth:contentArg.clientWidth,clientHeight:contentArg.clientHeight,tableMinWidth:contentArg.tableMinWidth,tableColGroupNode:contentArg.tableColGroupNode,expandRows:contentArg.expandRows,tDateProfile:tDateProfile,rowNodes:rowNodes,businessHours:props.businessHours,dateSelection:props.dateSelection,eventStore:props.eventStore,eventUiBases:props.eventUiBases,eventSelection:props.eventSelection,eventDrag:props.eventDrag,eventResize:props.eventResize,resourceStore:props.resourceStore,nextDayThreshold:context.options.nextDayThreshold,rowInnerHeights:contentArg.rowSyncHeights,onSlatCoords:this.handleSlatCoords,onRowCoords:this.handleRowCoords,onScrollLeftRequest:this.handleScrollLeftRequest,onRowHeightChange:contentArg.reportRowHeightChange}))})));}
renderSpreadsheetRows(nodes,colSpecs,rowSyncHeights){return nodes.map((node,index)=>{if(node.group){return(y(SpreadsheetGroupRow,{key:node.id,id:node.id,spreadsheetColCnt:colSpecs.length,isExpanded:node.isExpanded,group:node.group,innerHeight:rowSyncHeights[index]||''}));}
if(node.resource){return(y(SpreadsheetRow,{key:node.id,colSpecs:colSpecs,rowSpans:node.rowSpans,depth:node.depth,isExpanded:node.isExpanded,hasChildren:node.hasChildren,resource:node.resource,innerHeight:rowSyncHeights[index]||''}));}
return null;});}
componentDidMount(){this.renderedRowNodes=this.rowNodes;this.scrollResponder=this.context.createScrollResponder(this.handleScrollRequest);}
getSnapshotBeforeUpdate(){if(!this.props.forPrint){return{resourceScroll:this.queryResourceScroll()};}
return{};}
componentDidUpdate(prevProps,prevState,snapshot){this.renderedRowNodes=this.rowNodes;this.scrollResponder.update(prevProps.dateProfile!==this.props.dateProfile);if(snapshot.resourceScroll){this.handleScrollRequest(snapshot.resourceScroll);}}
componentWillUnmount(){this.scrollResponder.detach();}
computeFallbackSlotMinWidth(tDateProfile){return Math.max(30,((this.state.slotCushionMaxWidth||0)/tDateProfile.slotsPerLabel));}
queryResourceScroll(){let{rowCoords,renderedRowNodes}=this;if(rowCoords){let layout=this.layoutRef.current;let trBottoms=rowCoords.bottoms;let scrollTop=layout.getResourceScroll();let scroll={};for(let i=0;i<trBottoms.length;i+=1){let rowNode=renderedRowNodes[i];let elBottom=trBottoms[i]-scrollTop;if(elBottom>0){scroll.rowId=rowNode.id;scroll.fromBottom=elBottom;break;}}
return scroll;}
return null;}}
ResourceTimelineView.addStateEquality({spreadsheetColWidths:isArraysEqual,});function buildRowIndex(rowNodes){let rowIdToIndex={};for(let i=0;i<rowNodes.length;i+=1){rowIdToIndex[rowNodes[i].id]=i;}
return rowIdToIndex;}
function buildSpreadsheetCols(colSpecs,forcedWidths,fallbackWidth=''){return colSpecs.map((colSpec,i)=>({className:colSpec.isMain?'fc-main-col':'',width:forcedWidths[i]||colSpec.width||fallbackWidth,}));}
function hasNesting(nodes){for(let node of nodes){if(node.group){return true;}
if(node.resource){if(node.hasChildren){return true;}}}
return false;}
function processColOptions(options){let allColSpecs=options.resourceAreaColumns||[];let superHeaderRendering=null;if(!allColSpecs.length){allColSpecs.push({headerClassNames:options.resourceAreaHeaderClassNames,headerContent:options.resourceAreaHeaderContent,headerDefault:()=>'Resources',headerDidMount:options.resourceAreaHeaderDidMount,headerWillUnmount:options.resourceAreaHeaderWillUnmount,});}
else if(options.resourceAreaHeaderContent){superHeaderRendering={headerClassNames:options.resourceAreaHeaderClassNames,headerContent:options.resourceAreaHeaderContent,headerDidMount:options.resourceAreaHeaderDidMount,headerWillUnmount:options.resourceAreaHeaderWillUnmount,};}
let plainColSpecs=[];let groupColSpecs=[];let groupSpecs=[];let isVGrouping=false;for(let colSpec of allColSpecs){if(colSpec.group){groupColSpecs.push(Object.assign(Object.assign({},colSpec),{cellClassNames:colSpec.cellClassNames||options.resourceGroupLabelClassNames,cellContent:colSpec.cellContent||options.resourceGroupLabelContent,cellDidMount:colSpec.cellDidMount||options.resourceGroupLabelDidMount,cellWillUnmount:colSpec.cellWillUnmount||options.resourceGroupLaneWillUnmount}));}
else{plainColSpecs.push(colSpec);}}
let mainColSpec=plainColSpecs[0];mainColSpec.isMain=true;mainColSpec.cellClassNames=mainColSpec.cellClassNames||options.resourceLabelClassNames;mainColSpec.cellContent=mainColSpec.cellContent||options.resourceLabelContent;mainColSpec.cellDidMount=mainColSpec.cellDidMount||options.resourceLabelDidMount;mainColSpec.cellWillUnmount=mainColSpec.cellWillUnmount||options.resourceLabelWillUnmount;if(groupColSpecs.length){groupSpecs=groupColSpecs;isVGrouping=true;}
else{let hGroupField=options.resourceGroupField;if(hGroupField){groupSpecs.push({field:hGroupField,labelClassNames:options.resourceGroupLabelClassNames,labelContent:options.resourceGroupLabelContent,labelDidMount:options.resourceGroupLabelDidMount,labelWillUnmount:options.resourceGroupLabelWillUnmount,laneClassNames:options.resourceGroupLaneClassNames,laneContent:options.resourceGroupLaneContent,laneDidMount:options.resourceGroupLaneDidMount,laneWillUnmount:options.resourceGroupLaneWillUnmount,});}}
let allOrderSpecs=options.resourceOrder||DEFAULT_RESOURCE_ORDER;let plainOrderSpecs=[];for(let orderSpec of allOrderSpecs){let isGroup=false;for(let groupSpec of groupSpecs){if(groupSpec.field===orderSpec.field){groupSpec.order=orderSpec.order;isGroup=true;break;}}
if(!isGroup){plainOrderSpecs.push(orderSpec);}}
return{superHeaderRendering,isVGrouping,groupSpecs,colSpecs:groupColSpecs.concat(plainColSpecs),orderSpecs:plainOrderSpecs,};}
var css_248z=".fc .fc-resource-timeline-divider{cursor:col-resize;width:3px}.fc .fc-resource-group{font-weight:inherit;text-align:inherit}.fc .fc-resource-timeline .fc-resource-group:not([rowspan]){background:var(--fc-neutral-bg-color)}.fc .fc-timeline-lane-frame{position:relative}.fc .fc-timeline-overlap-enabled .fc-timeline-lane-frame .fc-timeline-events{box-sizing:content-box;padding-bottom:10px}.fc-timeline-body-expandrows td.fc-timeline-lane{position:relative}.fc-timeline-body-expandrows .fc-timeline-lane-frame{position:static}.fc-datagrid-cell-frame-liquid{height:100%}.fc-liquid-hack .fc-datagrid-cell-frame-liquid{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc .fc-datagrid-header .fc-datagrid-cell-frame{align-items:center;display:flex;justify-content:flex-start;position:relative}.fc .fc-datagrid-cell-resizer{bottom:0;cursor:col-resize;position:absolute;top:0;width:5px;z-index:1}.fc .fc-datagrid-cell-cushion{overflow:hidden;padding:8px;white-space:nowrap}.fc .fc-datagrid-expander{cursor:pointer;opacity:.65}.fc .fc-datagrid-expander .fc-icon{display:inline-block;width:1em}.fc .fc-datagrid-expander-placeholder{cursor:auto}.fc .fc-resource-timeline-flat .fc-datagrid-expander-placeholder{display:none}.fc-direction-ltr .fc-datagrid-cell-resizer{right:-3px}.fc-direction-rtl .fc-datagrid-cell-resizer{left:-3px}.fc-direction-ltr .fc-datagrid-expander{margin-right:3px}.fc-direction-rtl .fc-datagrid-expander{margin-left:3px}";injectStyles(css_248z);var index=createPlugin({name:'@fullcalendar/resource-timeline',premiumReleaseDate:'2024-06-05',deps:[index$7,index$3,index$4,],initialView:'resourceTimelineDay',views:{resourceTimeline:{type:'timeline',component:ResourceTimelineView,needsResourceData:true,resourceAreaWidth:'30%',resourcesInitiallyExpanded:true,eventResizableFromStart:true,},resourceTimelineDay:{type:'resourceTimeline',duration:{days:1},},resourceTimelineWeek:{type:'resourceTimeline',duration:{weeks:1},},resourceTimelineMonth:{type:'resourceTimeline',duration:{months:1},},resourceTimelineYear:{type:'resourceTimeline',duration:{years:1},},},});globalPlugins.push(index$c,index$b,index$a,index$9,index$8,index$6,index$5,index$4,index$3,index$2,index$1,index);exports.Calendar=Calendar;exports.Draggable=ExternalDraggable;exports.Internal=internal;exports.JsonRequestError=JsonRequestError;exports.ThirdPartyDraggable=ThirdPartyDraggable;exports.createPlugin=createPlugin;exports.formatDate=formatDate;exports.formatRange=formatRange;exports.globalLocales=globalLocales;exports.globalPlugins=globalPlugins;exports.sliceEvents=sliceEvents;exports.version=version;Object.defineProperty(exports,'__esModule',{value:true});return exports;})({});;Aquarius.component.define('Frontend/Form',function($element,options){var defaults={action:null,validate:true,classes:{error:'error',errorList:'error-list',processing:'processing',},ignoredFields:['___parameters',]};function Form(){}
Form.prototype={init:function(){var self=this;var promise=this.parent.init();this.setOptions(Aquarius.extend(defaults,options));var $button=self.$element.find('button');this.$loader=self.$element.find('.loader:first');this.namespace.listen('submit:after',function(params){self.$loader.stop().fadeOut(200);self.removeErrors();$button.prop('disabled',false).addClass(self.options.classes.processing);if(params.result.isValid){if(params.result.redirectUrl){window.location=params.result.redirectUrl;}else if(self.$element.data('redirect-url')){window.location=self.$element.data('redirect-url');}else{$('.success-page').show();if(!self.$element.hasClass('profile-benchmark')){self.$element.hide().siblings('.success-page').show();}
if(self.$element.parent().data('redirect-url')){window.location=self.$element.parent().data('redirect-url');}}}else{self.addErrors(params.result.messages);}});this.namespace.listen('submit:before',function(params){self.$loader.stop().fadeIn(200);$button.prop('disabled',true).removeClass(self.options.classes.processing);});return promise;}};return Form;}).extends('Form');;Aquarius.component.define('Frontend/CookieConsent',function($element,options){var defaults={name:'cookie-consent',expires:365};function CookieConsent(){}
CookieConsent.prototype={init:function(){var self=this;this.$element=$element;this.defaults=defaults;this.options=Aquarius.extend(this.defaults,options);this.$element.on('click','.btn',function(event){self.$element.removeClass('delay-2s');self.$element.addClass('fadeOutDown');Aquarius.cookie(self.options.name,1,{expires:self.options.expires});});if(Aquarius.cookie(self.options.name)){this.$element.hide();}}};return CookieConsent;});;Aquarius.component.define('Frontend/Wizard',function($element,options){var defaults={paramsKey:'___parameters',paramsValue:null,stepType:'Wizard/Step',allowSkip:false,action:null,method:'POST',};function Wizard(){}
Wizard.prototype={init:function(){var self=this;var promise=this.parent.init();this.setOptions(Aquarius.extend(defaults,options));this.namespace.listen('wizard.submit:after',function(params){if(params.result.isValid){if(params.result.redirectUrl){window.location=params.result.redirectUrl;}else if(self.$element.data('redirect-url')){window.location=self.$element.data('redirect-url');}else{var $successPage=self.$element.siblings('.success-page');if($successPage.length){self.$element.hide();$successPage.show();}}}else{Aquarius.alert(Aquarius.translate('Error'),{text:params.result.error});}});return promise;}};return Wizard;}).extends('Wizard');;Aquarius.component.define('Frontend/Cart',function($element,options){var defaults={apiUrl:null};function Cart(){}
Cart.prototype={init:function(){var self=this;this.$element=$element;this.options=Aquarius.extend(defaults,options);this.cartId=this.$element.data('cart');this.$loader=this.$element.find('.loader');this.initActions();this.initEvents();},initActions:function(){var self=this;self.$element.on('click','[data-cart-action]',function(event){event.preventDefault();var $button=$(this);var $cartItem=$button.closest('[data-cart-item]');var $amountHolder=$cartItem.find('[data-cart-item-amount]');var $priceHolder=$cartItem.find('[data-cart-item-price]');var packingId=$cartItem.data('cart-packing');var currentAmount=$amountHolder.data('cart-item-amount');var amount;var price;switch($button.data('cart-action')){case'add':amount=1;break;case'increment':amount=currentAmount+1;break;case'decrement':amount=currentAmount-1;break;case'remove':amount=0
break;default:throw'Unknown action';}
self.updateItem(packingId,amount,price);return false;});},initEvents:function(){var self=this;this.$element.find('form').on({'form.submit:before':function(){self.showLoader();},'form.submit:after':function(event,data,formData,xhr,result){if(!result.isValid){self.hideLoader();}}});},updateItem:function(packingId,amount,price){var self=this;this.showLoader();if(!this.options.apiUrl){throw'API url is not set';}
Aquarius.ajax({method:'POST',url:this.options.apiUrl,data:{'packing/id':packingId,'amount':amount,'price':price},success:function(result){var $cartItem=self.$element.find('[data-cart-packing="'+packingId+'"]')
if(0===amount){$cartItem.remove();}else{$cartItem.find('[data-cart-item-amount]').attr('data-cart-item-amount',amount).data('cart-item-amount',amount);$cartItem.find('[data-cart-item-amount-holder]').html(amount);}
self.updateCart(result.cart);self.hideLoader();}});},updateCart:function(cartInfo){$('[data-cart-total]').html(cartInfo.total);$('[data-cart-original-total]').html(cartInfo.originalTotal);$('[data-cart-discount]').html(cartInfo.discount);var $cartCount=$('[data-cart-count]');if(cartInfo.count){$cartCount.html(cartInfo.count);$('[data-cart-checkout]').show();}else{$cartCount.html($cartCount.data('cart-empty-text'));$('[data-cart-checkout]').hide();$('[data-empty-cart]').show();}},showLoader:function(){this.$loader.show();},hideLoader:function(){this.$loader.hide();},};return Cart;});;Aquarius.component.define('Frontend/Tabs',function($element,options){var defaults={};function Tabs(){}
Tabs.prototype={init:function(){var self=this;this.$element=$element;this.options=Aquarius.extend(defaults,options);this.$navigation=this.$element.find('.nav .nav-item button');this.$contents=this.$element.find('.tab-content .tab-pane');this.$navigation.on('click',function(){var $button=$(this);var target=$button.attr('data-bs-target');$button.addClass('active').parent().siblings().find('button').removeClass('active');self.$contents.filter('#'+target).addClass('active').siblings().removeClass('active');$(window).trigger('resize');});},};return Tabs;});;Aquarius.component.define('MobileMenu/Main',function($element,options){var prevScrollpos=window.pageYOffset;var defaults={mobileToggler:'#mobile-menu-toggler',mobileMenu:'#mobile-menu',};function MobileMenu(){}
MobileMenu.prototype={init:function(){var self=this;this.options=Aquarius.extend(defaults,options);this.$element=$element;var $window=$(window);$window.on('scroll',function(){self.$element.toggleClass('scrolled',$window.scrollTop()>self.options.limit);self.hideToScroll();}).trigger('scroll');this.mobileToggler=this.$element.find(this.options.mobileToggler);this.mobileMenu=this.$element.find(this.options.mobileMenu);this.populate();},events:function(){var self=this;this.mobileToggler.off('click').on('click',function(){self.mobileMenu.toggleClass('active');});},populate:function(){var self=this;},hideToScroll:function(){var currentScrollPos=window.pageYOffset;let mainHeader=document.getElementById("main-header");if(!$('.navbar-collapse').hasClass('show')){if(currentScrollPos<100){mainHeader.classList.add('show');mainHeader.classList.add('scrolled');}else{if(prevScrollpos<currentScrollPos){mainHeader.classList.remove('show');}else{mainHeader.classList.add('show');}}
prevScrollpos=currentScrollPos;}}};return MobileMenu;});;Aquarius.component.define('Tools/Menu',function($element,options){var defaults={};function Menu(){}
Menu.prototype={init:function(){var self=this;this.$element=$element;this.options=$.extend(true,defaults,options);this.$window=$(window);this.buttonHamburger=$('#wp-menu-open');this.buttonClose=$('#wp-menu-close');this.wpMobileHolder=$('#wp-mobile-holder');this.wpDesktopHolder=$('#wp-desktop-holder');this.backdrop=$('#wp-backdrop');this.events();},events:function(){const self=this;this.buttonHamburger.off('click').on('click',function(){self.open();});this.backdrop.on('click',function(){self.close();});this.buttonClose.off('click').on('click',function(){self.close();});this.wpMobileHolder.find('a').on('click',function(e){if($(this).attr('href').indexOf('#')>-1){self.close();}});},close:function(){this.wpMobileHolder.removeClass('open');this.backdrop.removeClass('active');},open:function(){this.wpMobileHolder.addClass('open');this.backdrop.addClass('active');}};return Menu;});;Aquarius.component.define('Tools/Video',function($element,options){var defaults={};function Video(){}
Video.prototype={init:function(){var self=this;this.$element=$element;this.options=$.extend(true,defaults,options);this.mode=null;$(window).on('resize',function(){self.toggleMode();});this.toggleMode();},toggleMode:function(){this.setMode(window.innerWidth<992?'mobile':'desktop');},setMode:function(mode){if(mode===this.mode){return;}
this.mode=mode;this.$element.attr('src',this.$element.attr('data-'+mode));try{this.$element[0].play();}catch(error){}}};return Video;});;Aquarius.module.define('Module/Wow',{config:{},init:function(){new WOW().init();}});;Aquarius.component.define('Frontend/Calendar/SessionCalendar',function($element,options){var defaults={};function SessionCalendar(){}
SessionCalendar.prototype={init:function(){var self=this;this.$element=$element;this.options=Aquarius.extend(defaults,options);this.modal=$('#event-modal');const sessionType='group';this.modal.find('[data-deficit], [data-apply], [data-resign]').hide();self.setupCalendar(sessionType);this.events();},events:function(){var self=this;$('.calendar-filter_btn').on('change',function(e){const filterType=e.target.id;self.setupCalendar(filterType);});this.modal.find('.modal-backdrop').on('click',()=>{self.closeModal();});$('.modal-close').on('click',()=>{self.closeModal();});},setupCalendar:function(sessionType){var self=this;var websiteId=self.$element.find('.calendar-session').data('website');let filteredSessions=[];Aquarius.ajax(`/api/v1/companies/1053/timetables/${websiteId}/${sessionType}`).done(function(sessions){sessions.map((session)=>{const startDate=new Date(session.startDate+' '+session.startTime).toJSON();const endDate=new Date(session.endDate+' '+session.endTime).toJSON();const participants=(session.eventApplications&&session.eventApplications.length>0)?session.eventApplications[0].numberOfParticipants:0
const applicationId=(session.eventApplications&&session.eventApplications.length>0)?session.eventApplications[0].id:0;let coach='';let coachProfile='';if(session.coach){coach=session.coach.userCoach.name;coachProfile=`<a href="${location.origin}/hu/edzo/${session.coach.slug}">${coach}</a>`;}
var entry={id:session.id,title:session.workoutType.title,start:startDate,end:endDate,backgroundColor:session.workoutType.color,textColor:session.workoutType.fontColor,classNames:['event-block'],extendedProps:{websiteId:session.website.id,status:session.status,coach:coach,coachProfile:coachProfile,duration:session.duration,startDate:session.startDate,startTime:session.startTime,minParticipants:session.minParticipants,maxParticipants:session.maxParticipants,groupOccasionCredit:session.workoutType.groupOccasionCredit,roomUsageCredit:session.workoutType.roomUsageCredit,resignationTime:session.workoutType.resignationTime,applicationTime:session.workoutType.applicationTime,content:session.workoutType.content,description:session.trainingPlan,sumParticipants:session.sumParticipants,participants:participants,applicationId:applicationId,},}
filteredSessions.push(entry);});const calendarEl=document.getElementById('calendar-session');const calendar=new FullCalendar.Calendar(calendarEl,{schedulerLicenseKey:'0261724582-fcs-1719490405',timeZone:'local',locale:'hu-HU',firstDay:1,slotMinTime:'5:00',slotMaxTime:'21:30',height:840,allDaySlot:false,editable:false,selectable:false,forceEventDuration:true,displayEventEnd:false,nowIndicator:true,dayMaxEvents:true,eventTimeFormat:{hour:'2-digit',minute:'2-digit',},initialView:$(window).width()>980?'timeGridWeek':'timeGridDay',events:filteredSessions,eventClick:function(info){self.showModal(info);},eventDidMount:function(e){const coach=e.event.extendedProps.coach;const duration=e.event.extendedProps.duration;$(e.el).find('.fc-event-time').append(`&apos;${duration}`);$(e.el).find('.fc-event-title').append(`<i>${coach}</i>`);},buttonText:{today:'Ma',week:'Hét',day:'Nap',list:'Lista',},headerToolbar:{left:'title',center:$(window).width()>980?'today':'',right:$(window).width()<980?'today,next':'timeGridWeek,timeGridDay next',},});calendar.render();}).fail(function(err){console.log(err);});},calculateHours:function(min){let time='';let hours=Math.floor(min/60);let minutes=min%60;if(hours<1){time=min+' perccel';}else if(hours>=1&&minutes===0){time=hours+' órával';}else if(hours>=1&&minutes>0){time=hours+' órával és '+minutes+' perccel';}
return time+' korábban';},closeModal:function(){this.modal.removeClass('active');$('body, html').removeClass('modal-is-active');this.modal.find('[data-deficit], [data-apply], [data-resign]').hide();this.modal.find('[data-id]').attr('data-id','').attr('data-event','').attr('data-state','').attr('data-application','');},showModal:function(props){var self=this;this.modal.addClass('active');$('body, html').addClass('modal-is-active');const sessionData=props.event;const userOpenBoxCredit=this.modal.find('[data-user-actions]').data('openbox-credit');const groupCredit=this.modal.find('[data-user-actions]').data('group-credit');const currentDate=new Date();const startDate=new Date(`${sessionData.extendedProps.startDate}${sessionData.extendedProps.startTime}`);const calculatedResignationTime=new Date(startDate.getTime()+-(sessionData.extendedProps.resignationTime*60000));const calculatedApplicationTime=new Date(startDate.getTime()+-(sessionData.extendedProps.applicationTime*60000));const applicationTime=self.calculateHours(sessionData.extendedProps.applicationTime);const resignationTime=self.calculateHours(sessionData.extendedProps.resignationTime);this.modal.find('[data-session-name]').html(sessionData.title+'  <br><span class="session-credits">Díja: '+sessionData.extendedProps.groupOccasionCredit+' CS és '+sessionData.extendedProps.roomUsageCredit+' T </span>');this.modal.find('[data-date-time]').text(sessionData.extendedProps.startDate+' '+sessionData.extendedProps.startTime);this.modal.find('[data-duration]').text(sessionData.extendedProps.duration);this.modal.find('[data-coach]').html(sessionData.extendedProps.coachProfile);this.modal.find('[data-room]').text(sessionData.extendedProps.roomUsageCredit);this.modal.find('[data-group]').text(sessionData.extendedProps.groupOccasionCredit);this.modal.find('[data-participants]').text('min. '+sessionData.extendedProps.minParticipants+' - max. '+sessionData.extendedProps.maxParticipants);this.modal.find('[data-application-sum]').text(sessionData.extendedProps.sumParticipants);this.modal.find('[data-application-time]').text(applicationTime);this.modal.find('[data-resignation]').text(resignationTime);this.modal.find('[data-description]').html(sessionData.extendedProps.description);this.modal.find('[data-content]').html(sessionData.extendedProps.content);this.modal.find('[data-id]').attr('data-id',sessionData.extendedProps.websiteId).attr('data-event',sessionData.id).attr('data-state',sessionData.extendedProps.status).attr('data-application',sessionData.extendedProps.applicationId);if(userOpenBoxCredit<sessionData.extendedProps.roomUsageCredit||groupCredit<sessionData.extendedProps.groupOccasionCredit){this.modal.find('[data-deficit]').show();}else{if(sessionData.extendedProps.participants>0){this.modal.find('[data-resign]').show();this.modal.find('[data-applicant]').text(sessionData.extendedProps.participants);if(currentDate>=calculatedResignationTime){this.modal.find('[data-resign] .content').text('Az edzésre szóló lemondási idő lejárt.');this.modal.find('[data-resign] button').hide();}}else{this.modal.find('[data-apply]').show();if(currentDate>=calculatedApplicationTime){this.modal.find('[data-apply] .title.main').text('A jelentkezési határidő lejárt.');this.modal.find('[data-apply] .apply').hide();}else{this.modal.find('[data-apply] .title.main').text('Jelentkezés az órára:');this.modal.find('[data-apply] .apply').show();}}}}}
return SessionCalendar});Aquarius.component.define('Frontend/Calendar/Form',function($element,options){var defaults={apiURL:null};function Form(){}
Form.prototype={init:function(){var self=this;this.$element=$element;this.options=Aquarius.extend(defaults,options);self.$element.on('click','[data-user-action]',function(e){e.preventDefault();const $button=self.$element.find('button')
const action=$button.data('user-action');const websiteId=self.$element.data('id');const eventId=self.$element.attr('data-event');const state=self.$element.attr('data-state');const participants=self.$element.find('select').val();const applicationId=self.$element.attr('data-application');$button.attr('disabled',true);if(action==='apply'){Aquarius.ajax({method:'POST',url:`/api/v1/companies/1053/me/applications/${websiteId}`,data:{numberOfParticipants:participants,'event/id':eventId,state:state},success:function(res){if(res.isValid){self.$element.find('.apply').hide();self.$element.find('.success').show();location.reload();}else{self.$element.find('.errors').append(res.messages[''].creditError);}},fail:function(err){self.$element.find('.errors').append('Hiba történt');}})}
if(action==='resign'){Aquarius.ajax({method:'POST',url:`/api/v1/companies/1053/me/applications/${websiteId}/resignation/${applicationId}`,success:function(res){if(res.isValid){self.$element.find('.resign-content').hide();self.$element.find('.success').show();location.reload();}else{self.$element.find('.errors').append('Hiba történt');}},fail:function(err){self.$element.find('.errors').append('Hiba történt');}})}});}}
return Form});Aquarius.component.define('Frontend/Events',function($element,options){var defaults={};function Events(){}
Events.prototype={init:function(){var self=this;this.$element=$element;this.options=Aquarius.extend(defaults,options);this.modal=$('#event-modal');this.events();},events:function(){var self=this;$('input[name="today"]').on('change',function(e){const today=new Date();const date=today.toISOString()?.split('T')[0];if(e.target.checked){$(`.event-item:not([data-event-day=${date}])`).hide();return;}
$('.event-item').show();});$('.filter select').on('change',function(e){const value=e.target.value;$('.event-item').show();if(value==="all"){return;}
if($(this).attr('name')==='session_type'){$(`.event-item:not([data-event-type="${value}"])`).hide();if($('input[name="today"]:checked').length>0){self.filterByDate();}}
if($(this).attr('name')==='coach'){$(`.event-item:not([data-event-coach="${value}"])`).hide();if($('input[name="today"]:checked').length>0){self.filterByDate();}}})
self.$element.on('click','[data-event-action]',function(e){e.preventDefault();const $button=$(this);const $eventItem=$button.closest('[data-event-id]');const eventId=$eventItem.attr('data-event-id');const websiteId=$eventItem.data('website-id');self.showModal();switch($button.data('event-action')){case'resign':self.modal.find('h2').text('Biztos, hogy lemondod az edzést?');self.modal.find('[data-action-btn]').attr('data-action','resign').attr('data-event',eventId).attr('data-website',websiteId).text('Lemondom');break;case'delete':self.modal.find('h2').text('Biztos, hogy törlöd az edzést?');self.modal.find('[data-action-btn]').attr('data-action','delete').attr('data-event',eventId).attr('data-website',websiteId).text('Törlöm');break;case'copy':self.modal.find('h2').text('Biztos, hogy másolni szeretnéd a hetet?');self.modal.find('span').text('A másolás 1-2 percig is eltarthat. Kérjük az órarend menüpont alatt másolás előtt győződj meg róla, hogy még nem lett lemásolva a következő hétre az órarend. A gomb megnyomása után várj és az órarend menüpont alatt frissítsd az órarendet, amíg minden hiánytalanul lemásolódik.');self.modal.find('[data-action-btn]').attr('data-action','copy').attr('data-website',websiteId).text('Másolás');self.modal.find('button').attr('disabled',false);break;default:break;}});this.modal.find('[data-action-btn]').on('click',function(e){e.preventDefault();const $button=$(this);const eventId=$(this).attr('data-event');const websiteId=$(this).attr('data-website');const firstDayOfWeek=$(this).attr('data-week');$button.attr('disabled',true);switch($button.attr('data-action')){case'resign':self.handleUpdate(websiteId,eventId,2);break;case'delete':self.handleUpdate(websiteId,eventId,0);break;case'copy':self.handleWeekCopy();break;default:break;}});this.modal.find('.modal-backdrop, [data-modal-close]').on('click',()=>{self.closeModal();});$('.modal-close').on('click',()=>{self.closeModal();});},filterByDate:function(){const today=new Date();const date=today.toISOString()?.split('T')[0];$(`.event-item:not([data-event-day=${date}])`).hide();},handleUpdate:function(websiteId,eventId,eventState){var self=this;Aquarius.ajax({url:`/api/v1/companies/1053/timetables/${websiteId}/${eventId}`,method:'PATCH',data:JSON.stringify({'eventState':eventState,}),success:function(res){if(res.isValid){self.closeModal();location.reload();}}})},handleWeekCopy:function(){const self=this;Aquarius.ajax({url:`/hu/week-copy`,method:'POST',success:function(res){if(res.isValid){this.modal.find('h2').text('A másolás több időbe telhet, kérlek, várj!');this.modal.find('button').hide();location.reload();}}});},closeModal:function(){this.modal.removeClass('active');$('body, html').removeClass('modal-is-active');this.modal.find('h2').text('');this.modal.find('[data-action-btn]').attr('data-action','').attr('data-event','').attr('data-website','').text('');this.modal.find('.btn-holder').show();},showModal:function(){this.modal.addClass('active');$('body, html').addClass('modal-is-active');}}
return Events});Aquarius.component.define('Frontend/Profile',function($element,options){var defaults={};function Profile(){}
Profile.prototype={init:function(){var self=this;this.$element=$element;this.options=Aquarius.extend(defaults,options);this.modal=$('#event-modal');this.events();},events:function(){var self=this;self.$element.on('click','[data-action-btn]',function(){const $button=$(this);const $eventItem=$button.closest('[data-event-id]');const eventId=$eventItem.attr('data-event-id');const websiteId=$eventItem.attr('data-website-id');const applicationId=$eventItem.attr('data-application-id');self.showModal(websiteId,eventId,applicationId);});this.modal.on('click','[data-action]',function(){const $button=$(this);const action=$button.data('action');const websiteId=$button.attr('data-website');const applicationId=$button.attr('data-application');if(action==='resign'){Aquarius.ajax({method:'POST',url:`/api/v1/companies/1053/me/applications/${websiteId}/resignation/${applicationId}`,success:function(res){if(res.isValid){self.closeModal();location.reload();}else{self.$element.find('.errors').append('Hiba történt');}},fail:function(err){self.$element.find('.errors').append('Hiba történt');}})}})
this.modal.find('.modal-backdrop, [data-modal-close]').on('click',()=>{self.closeModal();});$('.modal-close').on('click',()=>{self.closeModal();});},closeModal:function(){this.modal.removeClass('active');$('body, html').removeClass('modal-is-active');},showModal:function(websiteId,eventId,applicationId){this.modal.addClass('active');$('body, html').addClass('modal-is-active');this.modal.find('h2').text('Biztos, hogy lemondod az edzést?');this.modal.find('[data-action-btn]').attr('data-action','resign').attr('data-event',eventId).attr('data-website',websiteId).attr('data-application',applicationId).text('Lemondom');}}
return Profile});!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).EffectMaterial=t()}(this,(function(){"use strict";function e({swiper:e,duration:t,transformElements:a,allSlides:s}){const{activeIndex:i}=e;if(e.params.virtualTranslate&&0!==t){let t,r=!1;t=s?a:a.filter((t=>{const a=t.classList.contains("swiper-slide-transform")?(t=>{if(!t.parentElement)return e.slides.filter((e=>e.shadowRoot&&e.shadowRoot===t.parentNode))[0];return t.parentElement})(t):t;return e.getSlideIndex(a)===i})),t.forEach((t=>{!function(e,t){t&&e.addEventListener("transitionend",(function a(s){s.target===e&&(t.call(e,s),e.removeEventListener("transitionend",a))}))}(t,(()=>{if(r)return;if(!e||e.destroyed)return;r=!0,e.animating=!1;const t=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});e.wrapperEl.dispatchEvent(t)}))}))}}return"undefined"!=typeof window&&window.SwiperElementRegisterParams&&window.SwiperElementRegisterParams(["materialEffect"]),function({swiper:t,on:a,extendParams:s}){s({materialEffect:{slideSplitRatio:.65}}),a("beforeInit",(()=>{if("material"!==t.params.effect)return;t.classNames.push(`${t.params.containerModifierClass}material`),t.isElement&&t.hostEl&&t.hostEl.classList.add(`swiper-${t.params.direction}`);const e={loopAdditionalSlides:1,watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode};Object.assign(t.params,e),Object.assign(t.originalParams,e)})),a("setTranslate",(()=>{"material"===t.params.effect&&(()=>{const{slides:e,slidesSizesGrid:a,params:s,size:i}=t,{slidesPerView:r,spaceBetween:l,cssMode:n,centeredSlides:o}=s,d=o?.5:Math.min(Math.max(s.materialEffect.slideSplitRatio,0),1),c=o?.5:1-Math.min(Math.max(s.materialEffect.slideSplitRatio,0),1);for(let s=0;s<e.length;s+=1){const p=e[s],f=p.querySelector(".swiper-material-wrapper"),m=p.querySelectorAll(".swiper-material-animate-opacity"),h=p.querySelectorAll("[data-swiper-material-scale]"),u=-p.progress,w=p.swiperSlideOffset,M=t.translate;let y,E=0,S=0;const b=a[s],g=0!==c||o?l/2/b:0,x=n?M:0,P=o&&r%2==1,v=o&&r%2==0;if(u<=0)if(o&&r>1){if(u<=0&&u>=-(r-2)&&(E=M,y=1,S=1),P&&u<-(r-Math.ceil(r/2))){const e=Math.ceil(r/2)-Math.abs(u);y=e,S=y**4,E=M+b*(1-e)*(1+2*g)}if(v&&u<-(r/2-1)&&u>=-r/2){const e=r/2-Math.abs(u);y=d-g+(c+2*g)*(r/2-Math.abs(u)),S=((y-d)/(1-d))**4,E=M+b*(c+g)*(1-e)}if(v&&u<-r/2){let e=r/2+1-Math.abs(u);y=0,e>=0&&(e=2*-g+e*(1+2*g),e=Math.max(Math.min(e,1),0),y=(c-g)*e),E=M+b*(c+g)*(2-e)+b*(c-g)*(1-e)}}else y=1+u,E=-w,S=y**4;if(1===r)u>0&&(y=1-u,E=-w+i*Math.min(u,1),S=y**4);else{if(u>0&&u<=r-2&&(E=M,y=1,S=1),v?u>r/2-1&&u<=r/2:u>r-2&&u<=r-1){const e=v?Math.floor(r/2):1;y=d-g+(c+2*g)*(r-e-Math.abs(u)),E=M,S=1===d?y**4:((y-d)/(1-d))**4}if(P&&u>r-Math.ceil(r/2)){const e=Math.ceil(r/2)-(r-Math.abs(u));E=M-b*(2*g)*e,y=1-e,S=y**4}if(u>r-1&&u<=r&&!o){const e=r-Math.abs(u),t=c-g;y=t+(d-g-t)*e,E=M-b*(c+g)*(1-e),0===c&&(S=y**4)}if(u>(o?r/2:r)&&!P){let e=(o?r/2+1:r+1)-Math.abs(u),t=0;y=0,e>=0&&(e=2*-g+e*(1+2*g),e=Math.max(Math.min(e,1),0),y=(c-g)*e,t=-e*(c+g)*b+e*l),E=-w+i*Math.min(u,1)+t,S=0}}y<0&&(y=0),y>1&&(y=1),p.style.setProperty("--swiper-material-scale",y),m.forEach((e=>{e.style.opacity=S})),h.forEach((e=>{let t=parseFloat(e.getAttribute("data-swiper-material-scale"));(Number.isNaN(t)||!t&&0!==t)&&(t=1),e.style.transform=`scale(${1+(t-1)*(1-y)})`})),t.isHorizontal()?(f.style.width=100*y+"%",f.style.transform=`translate3d(${E-x}px,0,0)`):(f.style.height=100*y+"%",f.style.transform=`translate3d(0,${E-x}px,0)`)}})()})),a("setTransition",((a,s)=>{"material"===t.params.effect&&(a=>{const{slides:s}=t,i=[];for(let e=0;e<s.length;e+=1){const t=s[e],r=t.querySelector(".swiper-material-wrapper"),l=t.querySelectorAll(".swiper-material-animate-opacity");[r,...t.querySelectorAll("[data-swiper-material-scale]"),...l].forEach((e=>{e.style.transitionDuration=`${a}ms`})),i.push(r)}e({swiper:t,duration:a,transformElements:i,allSlides:!0})})(s)})),a("slidesUpdated",(()=>{if(!t.params.centeredSlides&&t.params.slidesPerView>1&&!t.params.loop&&t.params.materialEffect.slideSplitRatio<1){const e=t.snapGrid[t.snapGrid.length-1];t.snapGrid.push(e+t.slidesSizesGrid[0]+t.params.spaceBetween)}t.el.style.setProperty("--swiper-material-slide-size",`${t.slidesSizesGrid[0]}px`)}))}}));;Aquarius.register([{id:'loader',type:'Loader',config:{events:['content.load:after','ajax.load:after'],factories:{'Factory/Target':['Target/Modal','Target/Side','Target/Window'],'Factory/Panel':['Panel/Table','Panel/Tree','Panel/Login','Panel/Chooser','Panel/Browser']}}},{id:'module.wow',type:'Module/Wow'},{id:'analytics',type:'Analytics'}]);$(document).ready(function(){Aquarius.startAll();Aquarius.hub.get('main').broadcast('content.load:after',{element:$('body'),url:top.location.href});});;