"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};function _toConsumableArray(arr){if(Array.isArray(arr)){for(var i=0,arr2=Array(arr.length);i0?n:null;}catch(t){return null;}},reflow:function reflow(t){return t.offsetHeight;},triggerTransitionEnd:function triggerTransitionEnd(t){e(t).trigger(r.end);},supportsTransitionEnd:function supportsTransitionEnd(){return Boolean(r);},isElement:function isElement(t){return(t[0]||t).nodeType;},typeCheckConfig:function typeCheckConfig(e,n,i){for(var s in i){if(Object.prototype.hasOwnProperty.call(i,s)){var r=i[s],o=n[s],l=o&&a.isElement(o)?"element":t(o);if(!new RegExp(r).test(l))throw new Error(e.toUpperCase()+': Option "'+s+'" provided type "'+l+'" but expected type "'+r+'".');}}}};return r=i(),e.fn.emulateTransitionEnd=s,a.supportsTransitionEnd()&&(e.event.special[a.TRANSITION_END]=n()),a;}(jQuery),r=function r(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t;},o=function o(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e;},a=function(){var t="alert",n=e.fn[t],i={DISMISS:'[data-dismiss="alert"]'},o={CLOSE:"close.bs.alert",CLOSED:"closed.bs.alert",CLICK_DATA_API:"click.bs.alert.data-api"},a={ALERT:"alert",FADE:"fade",SHOW:"show"},l=function(){function t(t){this._element=t;}var n=t.prototype;return n.close=function(t){t=t||this._element;var e=this._getRootElement(t);this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e);},n.dispose=function(){e.removeData(this._element,"bs.alert"),this._element=null;},n._getRootElement=function(t){var n=s.getSelectorFromElement(t),i=!1;return n&&(i=e(n)[0]),i||(i=e(t).closest("."+a.ALERT)[0]),i;},n._triggerCloseEvent=function(t){var n=e.Event(o.CLOSE);return e(t).trigger(n),n;},n._removeElement=function(t){var n=this;e(t).removeClass(a.SHOW),s.supportsTransitionEnd()&&e(t).hasClass(a.FADE)?e(t).one(s.TRANSITION_END,function(e){return n._destroyElement(t,e);}).emulateTransitionEnd(150):this._destroyElement(t);},n._destroyElement=function(t){e(t).detach().trigger(o.CLOSED).remove();},t._jQueryInterface=function(n){return this.each(function(){var i=e(this),s=i.data("bs.alert");s||(s=new t(this),i.data("bs.alert",s)),"close"===n&&s[n](this);});},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this);};},r(t,null,[{key:"VERSION",get:function get(){return"4.0.0-beta";}}]),t;}();return e(document).on(o.CLICK_DATA_API,i.DISMISS,l._handleDismiss(new l())),e.fn[t]=l._jQueryInterface,e.fn[t].Constructor=l,e.fn[t].noConflict=function(){return e.fn[t]=n,l._jQueryInterface;},l;}(jQuery),l=function(){var t="button",n=e.fn[t],i={ACTIVE:"active",BUTTON:"btn",FOCUS:"focus"},s={DATA_TOGGLE_CARROT:'[data-toggle^="button"]',DATA_TOGGLE:'[data-toggle="buttons"]',INPUT:"input",ACTIVE:".active",BUTTON:".btn"},o={CLICK_DATA_API:"click.bs.button.data-api",FOCUS_BLUR_DATA_API:"focus.bs.button.data-api blur.bs.button.data-api"},a=function(){function t(t){this._element=t;}var n=t.prototype;return n.toggle=function(){var t=!0,n=!0,r=e(this._element).closest(s.DATA_TOGGLE)[0];if(r){var o=e(this._element).find(s.INPUT)[0];if(o){if("radio"===o.type)if(o.checked&&e(this._element).hasClass(i.ACTIVE))t=!1;else{var a=e(r).find(s.ACTIVE)[0];a&&e(a).removeClass(i.ACTIVE);}if(t){if(o.hasAttribute("disabled")||r.hasAttribute("disabled")||o.classList.contains("disabled")||r.classList.contains("disabled"))return;o.checked=!e(this._element).hasClass(i.ACTIVE),e(o).trigger("change");}o.focus(),n=!1;}}n&&this._element.setAttribute("aria-pressed",!e(this._element).hasClass(i.ACTIVE)),t&&e(this._element).toggleClass(i.ACTIVE);},n.dispose=function(){e.removeData(this._element,"bs.button"),this._element=null;},t._jQueryInterface=function(n){return this.each(function(){var i=e(this).data("bs.button");i||(i=new t(this),e(this).data("bs.button",i)),"toggle"===n&&i[n]();});},r(t,null,[{key:"VERSION",get:function get(){return"4.0.0-beta";}}]),t;}();return e(document).on(o.CLICK_DATA_API,s.DATA_TOGGLE_CARROT,function(t){t.preventDefault();var n=t.target;e(n).hasClass(i.BUTTON)||(n=e(n).closest(s.BUTTON)),a._jQueryInterface.call(e(n),"toggle");}).on(o.FOCUS_BLUR_DATA_API,s.DATA_TOGGLE_CARROT,function(t){var n=e(t.target).closest(s.BUTTON)[0];e(n).toggleClass(i.FOCUS,/^focus(in)?$/.test(t.type));}),e.fn[t]=a._jQueryInterface,e.fn[t].Constructor=a,e.fn[t].noConflict=function(){return e.fn[t]=n,a._jQueryInterface;},a;}(jQuery),h=function(){var t="carousel",n="bs.carousel",i="."+n,o=e.fn[t],a={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},l={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},h={NEXT:"next",PREV:"prev",LEFT:"left",RIGHT:"right"},c={SLIDE:"slide"+i,SLID:"slid"+i,KEYDOWN:"keydown"+i,MOUSEENTER:"mouseenter"+i,MOUSELEAVE:"mouseleave"+i,TOUCHEND:"touchend"+i,LOAD_DATA_API:"load.bs.carousel.data-api",CLICK_DATA_API:"click.bs.carousel.data-api"},u={CAROUSEL:"carousel",ACTIVE:"active",SLIDE:"slide",RIGHT:"carousel-item-right",LEFT:"carousel-item-left",NEXT:"carousel-item-next",PREV:"carousel-item-prev",ITEM:"carousel-item"},d={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",NEXT_PREV:".carousel-item-next, .carousel-item-prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},f=function(){function o(t,n){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this._config=this._getConfig(n),this._element=e(t)[0],this._indicatorsElement=e(this._element).find(d.INDICATORS)[0],this._addEventListeners();}var f=o.prototype;return f.next=function(){this._isSliding||this._slide(h.NEXT);},f.nextWhenVisible=function(){!document.hidden&&e(this._element).is(":visible")&&"hidden"!==e(this._element).css("visibility")&&this.next();},f.prev=function(){this._isSliding||this._slide(h.PREV);},f.pause=function(t){t||(this._isPaused=!0),e(this._element).find(d.NEXT_PREV)[0]&&s.supportsTransitionEnd()&&(s.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null;},f.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval));},f.to=function(t){var n=this;this._activeElement=e(this._element).find(d.ACTIVE_ITEM)[0];var i=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)e(this._element).one(c.SLID,function(){return n.to(t);});else{if(i===t)return this.pause(),void this.cycle();var s=t>i?h.NEXT:h.PREV;this._slide(s,this._items[t]);}},f.dispose=function(){e(this._element).off(i),e.removeData(this._element,n),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null;},f._getConfig=function(n){return n=e.extend({},a,n),s.typeCheckConfig(t,n,l),n;},f._addEventListeners=function(){var t=this;this._config.keyboard&&e(this._element).on(c.KEYDOWN,function(e){return t._keydown(e);}),"hover"===this._config.pause&&(e(this._element).on(c.MOUSEENTER,function(e){return t.pause(e);}).on(c.MOUSELEAVE,function(e){return t.cycle(e);}),"ontouchstart"in document.documentElement&&e(this._element).on(c.TOUCHEND,function(){t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout(function(e){return t.cycle(e);},500+t._config.interval);}));},f._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next();break;default:return;}},f._getItemIndex=function(t){return this._items=e.makeArray(e(t).parent().find(d.ITEM)),this._items.indexOf(t);},f._getItemByDirection=function(t,e){var n=t===h.NEXT,i=t===h.PREV,s=this._getItemIndex(e),r=this._items.length-1;if((i&&0===s||n&&s===r)&&!this._config.wrap)return e;var o=(s+(t===h.PREV?-1:1))%this._items.length;return-1===o?this._items[this._items.length-1]:this._items[o];},f._triggerSlideEvent=function(t,n){var i=this._getItemIndex(t),s=this._getItemIndex(e(this._element).find(d.ACTIVE_ITEM)[0]),r=e.Event(c.SLIDE,{relatedTarget:t,direction:n,from:s,to:i});return e(this._element).trigger(r),r;},f._setActiveIndicatorElement=function(t){if(this._indicatorsElement){e(this._indicatorsElement).find(d.ACTIVE).removeClass(u.ACTIVE);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&e(n).addClass(u.ACTIVE);}},f._slide=function(t,n){var i,r,o,a=this,l=e(this._element).find(d.ACTIVE_ITEM)[0],f=this._getItemIndex(l),_=n||l&&this._getItemByDirection(t,l),g=this._getItemIndex(_),m=Boolean(this._interval);if(t===h.NEXT?(i=u.LEFT,r=u.NEXT,o=h.LEFT):(i=u.RIGHT,r=u.PREV,o=h.RIGHT),_&&e(_).hasClass(u.ACTIVE))this._isSliding=!1;else if(!this._triggerSlideEvent(_,o).isDefaultPrevented()&&l&&_){this._isSliding=!0,m&&this.pause(),this._setActiveIndicatorElement(_);var p=e.Event(c.SLID,{relatedTarget:_,direction:o,from:f,to:g});s.supportsTransitionEnd()&&e(this._element).hasClass(u.SLIDE)?(e(_).addClass(r),s.reflow(_),e(l).addClass(i),e(_).addClass(i),e(l).one(s.TRANSITION_END,function(){e(_).removeClass(i+" "+r).addClass(u.ACTIVE),e(l).removeClass(u.ACTIVE+" "+r+" "+i),a._isSliding=!1,setTimeout(function(){return e(a._element).trigger(p);},0);}).emulateTransitionEnd(600)):(e(l).removeClass(u.ACTIVE),e(_).addClass(u.ACTIVE),this._isSliding=!1,e(this._element).trigger(p)),m&&this.cycle();}},o._jQueryInterface=function(t){return this.each(function(){var i=e(this).data(n),s=e.extend({},a,e(this).data());"object"==(typeof t==="undefined"?"undefined":_typeof(t))&&e.extend(s,t);var r="string"==typeof t?t:s.slide;if(i||(i=new o(this,s),e(this).data(n,i)),"number"==typeof t)i.to(t);else if("string"==typeof r){if("undefined"==typeof i[r])throw new Error('No method named "'+r+'"');i[r]();}else s.interval&&(i.pause(),i.cycle());});},o._dataApiClickHandler=function(t){var i=s.getSelectorFromElement(this);if(i){var r=e(i)[0];if(r&&e(r).hasClass(u.CAROUSEL)){var a=e.extend({},e(r).data(),e(this).data()),l=this.getAttribute("data-slide-to");l&&(a.interval=!1),o._jQueryInterface.call(e(r),a),l&&e(r).data(n).to(l),t.preventDefault();}}},r(o,null,[{key:"VERSION",get:function get(){return"4.0.0-beta";}},{key:"Default",get:function get(){return a;}}]),o;}();return e(document).on(c.CLICK_DATA_API,d.DATA_SLIDE,f._dataApiClickHandler),e(window).on(c.LOAD_DATA_API,function(){e(d.DATA_RIDE).each(function(){var t=e(this);f._jQueryInterface.call(t,t.data());});}),e.fn[t]=f._jQueryInterface,e.fn[t].Constructor=f,e.fn[t].noConflict=function(){return e.fn[t]=o,f._jQueryInterface;},f;}(jQuery),c=function(){var t="collapse",n="bs.collapse",i=e.fn[t],o={toggle:!0,parent:""},a={toggle:"boolean",parent:"(string|element)"},l={SHOW:"show.bs.collapse",SHOWN:"shown.bs.collapse",HIDE:"hide.bs.collapse",HIDDEN:"hidden.bs.collapse",CLICK_DATA_API:"click.bs.collapse.data-api"},h={SHOW:"show",COLLAPSE:"collapse",COLLAPSING:"collapsing",COLLAPSED:"collapsed"},c={WIDTH:"width",HEIGHT:"height"},u={ACTIVES:".show, .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},d=function(){function i(t,n){this._isTransitioning=!1,this._element=t,this._config=this._getConfig(n),this._triggerArray=e.makeArray(e('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'));for(var i=e(u.DATA_TOGGLE),r=0;r0&&this._triggerArray.push(o);}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle();}var d=i.prototype;return d.toggle=function(){e(this._element).hasClass(h.SHOW)?this.hide():this.show();},d.show=function(){var t=this;if(!this._isTransitioning&&!e(this._element).hasClass(h.SHOW)){var r,o;if(this._parent&&((r=e.makeArray(e(this._parent).children().children(u.ACTIVES))).length||(r=null)),!(r&&(o=e(r).data(n))&&o._isTransitioning)){var a=e.Event(l.SHOW);if(e(this._element).trigger(a),!a.isDefaultPrevented()){r&&(i._jQueryInterface.call(e(r),"hide"),o||e(r).data(n,null));var c=this._getDimension();e(this._element).removeClass(h.COLLAPSE).addClass(h.COLLAPSING),this._element.style[c]=0,this._triggerArray.length&&e(this._triggerArray).removeClass(h.COLLAPSED).attr("aria-expanded",!0),this.setTransitioning(!0);var d=function d(){e(t._element).removeClass(h.COLLAPSING).addClass(h.COLLAPSE).addClass(h.SHOW),t._element.style[c]="",t.setTransitioning(!1),e(t._element).trigger(l.SHOWN);};if(s.supportsTransitionEnd()){var f="scroll"+(c[0].toUpperCase()+c.slice(1));e(this._element).one(s.TRANSITION_END,d).emulateTransitionEnd(600),this._element.style[c]=this._element[f]+"px";}else d();}}}},d.hide=function(){var t=this;if(!this._isTransitioning&&e(this._element).hasClass(h.SHOW)){var n=e.Event(l.HIDE);if(e(this._element).trigger(n),!n.isDefaultPrevented()){var i=this._getDimension();if(this._element.style[i]=this._element.getBoundingClientRect()[i]+"px",s.reflow(this._element),e(this._element).addClass(h.COLLAPSING).removeClass(h.COLLAPSE).removeClass(h.SHOW),this._triggerArray.length)for(var r=0;r0;},g._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:{offset:this._config.offset},flip:{enabled:this._config.flip}}};return this._inNavbar&&(t.modifiers.applyStyle={enabled:!this._inNavbar}),t;},a._jQueryInterface=function(t){return this.each(function(){var n=e(this).data(i),s="object"==(typeof t==="undefined"?"undefined":_typeof(t))?t:null;if(n||(n=new a(this,s),e(this).data(i,n)),"string"==typeof t){if("undefined"==typeof n[t])throw new Error('No method named "'+t+'"');n[t]();}});},a._clearMenus=function(t){if(!t||3!==t.which&&("keyup"!==t.type||9===t.which))for(var n=e.makeArray(e(u.DATA_TOGGLE)),s=0;s0&&r--,40===t.which&&rdocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px");},u._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight="";},u._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip"},u={SHOW:"show",OUT:"out"},d={HIDE:"hide"+i,HIDDEN:"hidden"+i,SHOW:"show"+i,SHOWN:"shown"+i,INSERTED:"inserted"+i,CLICK:"click"+i,FOCUSIN:"focusin"+i,FOCUSOUT:"focusout"+i,MOUSEENTER:"mouseenter"+i,MOUSELEAVE:"mouseleave"+i},f={FADE:"fade",SHOW:"show"},_={TOOLTIP:".tooltip",TOOLTIP_INNER:".tooltip-inner",ARROW:".arrow"},g={HOVER:"hover",FOCUS:"focus",CLICK:"click",MANUAL:"manual"},m=function(){function o(t,e){this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners();}var m=o.prototype;return m.enable=function(){this._isEnabled=!0;},m.disable=function(){this._isEnabled=!1;},m.toggleEnabled=function(){this._isEnabled=!this._isEnabled;},m.toggle=function(t){if(this._isEnabled)if(t){var n=this.constructor.DATA_KEY,i=e(t.currentTarget).data(n);i||(i=new this.constructor(t.currentTarget,this._getDelegateConfig()),e(t.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i);}else{if(e(this.getTipElement()).hasClass(f.SHOW))return void this._leave(null,this);this._enter(null,this);}},m.dispose=function(){clearTimeout(this._timeout),e.removeData(this.element,this.constructor.DATA_KEY),e(this.element).off(this.constructor.EVENT_KEY),e(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&e(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,null!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null;},m.show=function(){var t=this;if("none"===e(this.element).css("display"))throw new Error("Please use show on visible elements");var i=e.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){e(this.element).trigger(i);var r=e.contains(this.element.ownerDocument.documentElement,this.element);if(i.isDefaultPrevented()||!r)return;var a=this.getTipElement(),l=s.getUID(this.constructor.NAME);a.setAttribute("id",l),this.element.setAttribute("aria-describedby",l),this.setContent(),this.config.animation&&e(a).addClass(f.FADE);var h="function"==typeof this.config.placement?this.config.placement.call(this,a,this.element):this.config.placement,c=this._getAttachment(h);this.addAttachmentClass(c);var d=!1===this.config.container?document.body:e(this.config.container);e(a).data(this.constructor.DATA_KEY,this),e.contains(this.element.ownerDocument.documentElement,this.tip)||e(a).appendTo(d),e(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new n(this.element,a,{placement:c,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:_.ARROW}},onCreate:function onCreate(e){e.originalPlacement!==e.placement&&t._handlePopperPlacementChange(e);},onUpdate:function onUpdate(e){t._handlePopperPlacementChange(e);}}),e(a).addClass(f.SHOW),"ontouchstart"in document.documentElement&&e("body").children().on("mouseover",null,e.noop);var g=function g(){t.config.animation&&t._fixTransition();var n=t._hoverState;t._hoverState=null,e(t.element).trigger(t.constructor.Event.SHOWN),n===u.OUT&&t._leave(null,t);};s.supportsTransitionEnd()&&e(this.tip).hasClass(f.FADE)?e(this.tip).one(s.TRANSITION_END,g).emulateTransitionEnd(o._TRANSITION_DURATION):g();}},m.hide=function(t){var n=this,i=this.getTipElement(),r=e.Event(this.constructor.Event.HIDE),o=function o(){n._hoverState!==u.SHOW&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),e(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),t&&t();};e(this.element).trigger(r),r.isDefaultPrevented()||(e(i).removeClass(f.SHOW),"ontouchstart"in document.documentElement&&e("body").children().off("mouseover",null,e.noop),this._activeTrigger[g.CLICK]=!1,this._activeTrigger[g.FOCUS]=!1,this._activeTrigger[g.HOVER]=!1,s.supportsTransitionEnd()&&e(this.tip).hasClass(f.FADE)?e(i).one(s.TRANSITION_END,o).emulateTransitionEnd(150):o(),this._hoverState="");},m.update=function(){null!==this._popper&&this._popper.scheduleUpdate();},m.isWithContent=function(){return Boolean(this.getTitle());},m.addAttachmentClass=function(t){e(this.getTipElement()).addClass("bs-tooltip-"+t);},m.getTipElement=function(){return this.tip=this.tip||e(this.config.template)[0],this.tip;},m.setContent=function(){var t=e(this.getTipElement());this.setElementContent(t.find(_.TOOLTIP_INNER),this.getTitle()),t.removeClass(f.FADE+" "+f.SHOW);},m.setElementContent=function(t,n){var i=this.config.html;"object"==(typeof n==="undefined"?"undefined":_typeof(n))&&(n.nodeType||n.jquery)?i?e(n).parent().is(t)||t.empty().append(n):t.text(e(n).text()):t[i?"html":"text"](n);},m.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t;},m._getAttachment=function(t){return h[t.toUpperCase()];},m._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach(function(n){if("click"===n)e(t.element).on(t.constructor.Event.CLICK,t.config.selector,function(e){return t.toggle(e);});else if(n!==g.MANUAL){var i=n===g.HOVER?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,s=n===g.HOVER?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;e(t.element).on(i,t.config.selector,function(e){return t._enter(e);}).on(s,t.config.selector,function(e){return t._leave(e);});}e(t.element).closest(".modal").on("hide.bs.modal",function(){return t.hide();});}),this.config.selector?this.config=e.extend({},this.config,{trigger:"manual",selector:""}):this._fixTitle();},m._fixTitle=function(){var t=_typeof(this.element.getAttribute("data-original-title"));(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""));},m._enter=function(t,n){var i=this.constructor.DATA_KEY;(n=n||e(t.currentTarget).data(i))||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),e(t.currentTarget).data(i,n)),t&&(n._activeTrigger["focusin"===t.type?g.FOCUS:g.HOVER]=!0),e(n.getTipElement()).hasClass(f.SHOW)||n._hoverState===u.SHOW?n._hoverState=u.SHOW:(clearTimeout(n._timeout),n._hoverState=u.SHOW,n.config.delay&&n.config.delay.show?n._timeout=setTimeout(function(){n._hoverState===u.SHOW&&n.show();},n.config.delay.show):n.show());},m._leave=function(t,n){var i=this.constructor.DATA_KEY;(n=n||e(t.currentTarget).data(i))||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),e(t.currentTarget).data(i,n)),t&&(n._activeTrigger["focusout"===t.type?g.FOCUS:g.HOVER]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState=u.OUT,n.config.delay&&n.config.delay.hide?n._timeout=setTimeout(function(){n._hoverState===u.OUT&&n.hide();},n.config.delay.hide):n.hide());},m._isWithActiveTrigger=function(){for(var t in this._activeTrigger){if(this._activeTrigger[t])return!0;}return!1;},m._getConfig=function(n){return"number"==typeof(n=e.extend({},this.constructor.Default,e(this.element).data(),n)).delay&&(n.delay={show:n.delay,hide:n.delay}),"number"==typeof n.title&&(n.title=n.title.toString()),"number"==typeof n.content&&(n.content=n.content.toString()),s.typeCheckConfig(t,n,this.constructor.DefaultType),n;},m._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config){this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);}return t;},m._cleanTipClass=function(){var t=e(this.getTipElement()),n=t.attr("class").match(a);null!==n&&n.length>0&&t.removeClass(n.join(""));},m._handlePopperPlacementChange=function(t){this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement));},m._fixTransition=function(){var t=this.getTipElement(),n=this.config.animation;null===t.getAttribute("x-placement")&&(e(t).removeClass(f.FADE),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n);},o._jQueryInterface=function(t){return this.each(function(){var n=e(this).data("bs.tooltip"),i="object"==(typeof t==="undefined"?"undefined":_typeof(t))&&t;if((n||!/dispose|hide/.test(t))&&(n||(n=new o(this,i),e(this).data("bs.tooltip",n)),"string"==typeof t)){if("undefined"==typeof n[t])throw new Error('No method named "'+t+'"');n[t]();}});},r(o,null,[{key:"VERSION",get:function get(){return"4.0.0-beta";}},{key:"Default",get:function get(){return c;}},{key:"NAME",get:function get(){return t;}},{key:"DATA_KEY",get:function get(){return"bs.tooltip";}},{key:"Event",get:function get(){return d;}},{key:"EVENT_KEY",get:function get(){return i;}},{key:"DefaultType",get:function get(){return l;}}]),o;}();return e.fn[t]=m._jQueryInterface,e.fn[t].Constructor=m,e.fn[t].noConflict=function(){return e.fn[t]=o,m._jQueryInterface;},m;}(jQuery),_=function(){var t="popover",n=".bs.popover",i=e.fn[t],s=new RegExp("(^|\\s)bs-popover\\S+","g"),a=e.extend({},f.Default,{placement:"right",trigger:"click",content:"",template:''}),l=e.extend({},f.DefaultType,{content:"(string|element|function)"}),h={FADE:"fade",SHOW:"show"},c={TITLE:".popover-header",CONTENT:".popover-body"},u={HIDE:"hide"+n,HIDDEN:"hidden"+n,SHOW:"show"+n,SHOWN:"shown"+n,INSERTED:"inserted"+n,CLICK:"click"+n,FOCUSIN:"focusin"+n,FOCUSOUT:"focusout"+n,MOUSEENTER:"mouseenter"+n,MOUSELEAVE:"mouseleave"+n},d=function(i){function d(){return i.apply(this,arguments)||this;}o(d,i);var f=d.prototype;return f.isWithContent=function(){return this.getTitle()||this._getContent();},f.addAttachmentClass=function(t){e(this.getTipElement()).addClass("bs-popover-"+t);},f.getTipElement=function(){return this.tip=this.tip||e(this.config.template)[0],this.tip;},f.setContent=function(){var t=e(this.getTipElement());this.setElementContent(t.find(c.TITLE),this.getTitle()),this.setElementContent(t.find(c.CONTENT),this._getContent()),t.removeClass(h.FADE+" "+h.SHOW);},f._getContent=function(){return this.element.getAttribute("data-content")||("function"==typeof this.config.content?this.config.content.call(this.element):this.config.content);},f._cleanTipClass=function(){var t=e(this.getTipElement()),n=t.attr("class").match(s);null!==n&&n.length>0&&t.removeClass(n.join(""));},d._jQueryInterface=function(t){return this.each(function(){var n=e(this).data("bs.popover"),i="object"==(typeof t==="undefined"?"undefined":_typeof(t))?t:null;if((n||!/destroy|hide/.test(t))&&(n||(n=new d(this,i),e(this).data("bs.popover",n)),"string"==typeof t)){if("undefined"==typeof n[t])throw new Error('No method named "'+t+'"');n[t]();}});},r(d,null,[{key:"VERSION",get:function get(){return"4.0.0-beta";}},{key:"Default",get:function get(){return a;}},{key:"NAME",get:function get(){return t;}},{key:"DATA_KEY",get:function get(){return"bs.popover";}},{key:"Event",get:function get(){return u;}},{key:"EVENT_KEY",get:function get(){return n;}},{key:"DefaultType",get:function get(){return l;}}]),d;}(f);return e.fn[t]=d._jQueryInterface,e.fn[t].Constructor=d,e.fn[t].noConflict=function(){return e.fn[t]=i,d._jQueryInterface;},d;}(jQuery),g=function(){var t="scrollspy",n=e.fn[t],i={offset:10,method:"auto",target:""},o={offset:"number",method:"string",target:"(string|element)"},a={ACTIVATE:"activate.bs.scrollspy",SCROLL:"scroll.bs.scrollspy",LOAD_DATA_API:"load.bs.scrollspy.data-api"},l={DROPDOWN_ITEM:"dropdown-item",DROPDOWN_MENU:"dropdown-menu",ACTIVE:"active"},h={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",NAV_ITEMS:".nav-item",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},c={OFFSET:"offset",POSITION:"position"},u=function(){function n(t,n){var i=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(n),this._selector=this._config.target+" "+h.NAV_LINKS+","+this._config.target+" "+h.LIST_ITEMS+","+this._config.target+" "+h.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,e(this._scrollElement).on(a.SCROLL,function(t){return i._process(t);}),this.refresh(),this._process();}var u=n.prototype;return u.refresh=function(){var t=this,n=this._scrollElement!==this._scrollElement.window?c.POSITION:c.OFFSET,i="auto"===this._config.method?n:this._config.method,r=i===c.POSITION?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),e.makeArray(e(this._selector)).map(function(t){var n,o=s.getSelectorFromElement(t);if(o&&(n=e(o)[0]),n){var a=n.getBoundingClientRect();if(a.width||a.height)return[e(n)[i]().top+r,o];}return null;}).filter(function(t){return t;}).sort(function(t,e){return t[0]-e[0];}).forEach(function(e){t._offsets.push(e[0]),t._targets.push(e[1]);});},u.dispose=function(){e.removeData(this._element,"bs.scrollspy"),e(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null;},u._getConfig=function(n){if("string"!=typeof(n=e.extend({},i,n)).target){var r=e(n.target).attr("id");r||(r=s.getUID(t),e(n.target).attr("id",r)),n.target="#"+r;}return s.typeCheckConfig(t,n,o),n;},u._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop;},u._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight);},u._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height;},u._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i);}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var s=this._offsets.length;s--;){this._activeTarget!==this._targets[s]&&t>=this._offsets[s]&&("undefined"==typeof this._offsets[s+1]||t li > .active",DATA_TOGGLE:'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',DROPDOWN_TOGGLE:".dropdown-toggle",DROPDOWN_ACTIVE_CHILD:"> .dropdown-menu .active"},a=function(){function t(t){this._element=t;}var a=t.prototype;return a.show=function(){var t=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&e(this._element).hasClass(i.ACTIVE)||e(this._element).hasClass(i.DISABLED))){var r,a,l=e(this._element).closest(o.NAV_LIST_GROUP)[0],h=s.getSelectorFromElement(this._element);if(l){var c="UL"===l.nodeName?o.ACTIVE_UL:o.ACTIVE;a=e.makeArray(e(l).find(c)),a=a[a.length-1];}var u=e.Event(n.HIDE,{relatedTarget:this._element}),d=e.Event(n.SHOW,{relatedTarget:a});if(a&&e(a).trigger(u),e(this._element).trigger(d),!d.isDefaultPrevented()&&!u.isDefaultPrevented()){h&&(r=e(h)[0]),this._activate(this._element,l);var f=function f(){var i=e.Event(n.HIDDEN,{relatedTarget:t._element}),s=e.Event(n.SHOWN,{relatedTarget:a});e(a).trigger(i),e(t._element).trigger(s);};r?this._activate(r,r.parentNode,f):f();}}},a.dispose=function(){e.removeData(this._element,"bs.tab"),this._element=null;},a._activate=function(t,n,r){var a,l=this,h=(a="UL"===n.nodeName?e(n).find(o.ACTIVE_UL):e(n).children(o.ACTIVE))[0],c=r&&s.supportsTransitionEnd()&&h&&e(h).hasClass(i.FADE),u=function u(){return l._transitionComplete(t,h,c,r);};h&&c?e(h).one(s.TRANSITION_END,u).emulateTransitionEnd(150):u(),h&&e(h).removeClass(i.SHOW);},a._transitionComplete=function(t,n,r,a){if(n){e(n).removeClass(i.ACTIVE);var l=e(n.parentNode).find(o.DROPDOWN_ACTIVE_CHILD)[0];l&&e(l).removeClass(i.ACTIVE),"tab"===n.getAttribute("role")&&n.setAttribute("aria-selected",!1);}if(e(t).addClass(i.ACTIVE),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),r?(s.reflow(t),e(t).addClass(i.SHOW)):e(t).removeClass(i.FADE),t.parentNode&&e(t.parentNode).hasClass(i.DROPDOWN_MENU)){var h=e(t).closest(o.DROPDOWN)[0];h&&e(h).find(o.DROPDOWN_TOGGLE).addClass(i.ACTIVE),t.setAttribute("aria-expanded",!0);}a&&a();},t._jQueryInterface=function(n){return this.each(function(){var i=e(this),s=i.data("bs.tab");if(s||(s=new t(this),i.data("bs.tab",s)),"string"==typeof n){if("undefined"==typeof s[n])throw new Error('No method named "'+n+'"');s[n]();}});},r(t,null,[{key:"VERSION",get:function get(){return"4.0.0-beta";}}]),t;}();return e(document).on(n.CLICK_DATA_API,o.DATA_TOGGLE,function(t){t.preventDefault(),a._jQueryInterface.call(e(this),"show");}),e.fn.tab=a._jQueryInterface,e.fn.tab.Constructor=a,e.fn.tab.noConflict=function(){return e.fn.tab=t,a._jQueryInterface;},a;}(jQuery);return function(){if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=e.fn.jquery.split(" ")[0].split(".");if(t[0]<3||t[0]>=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v3.0.0 but less than v4.0.0");}(jQuery),t.Util=s,t.Alert=a,t.Button=l,t.Carousel=h,t.Collapse=c,t.Dropdown=u,t.Modal=d,t.Popover=_,t.Scrollspy=g,t.Tab=m,t.Tooltip=f,t;}({},$,Popper);// Older browsers don't support event options, feature detect it. // Adopted and modified solution from Bohdan Didukh (2017) // https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi var hasPassiveEvents=false;if(typeof window!=='undefined'){var passiveTestOptions={get passive(){hasPassiveEvents=true;return undefined;}};window.addEventListener('testPassive',null,passiveTestOptions);window.removeEventListener('testPassive',null,passiveTestOptions);}var isIosDevice=typeof window!=='undefined'&&window.navigator&&window.navigator.platform&&/iP(ad|hone|od)/.test(window.navigator.platform);var locks=[];var documentListenerAdded=false;var initialClientY=-1;var previousBodyOverflowSetting=void 0;var previousBodyPaddingRight=void 0;// returns true if `el` should be allowed to receive touchmove events var allowTouchMove=function allowTouchMove(el){return locks.some(function(lock){if(lock.options.allowTouchMove&&lock.options.allowTouchMove(el)){return true;}return false;});};var preventDefault=function preventDefault(rawEvent){var e=rawEvent||window.event;// For the case whereby consumers adds a touchmove event listener to document. // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false }) // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then // the touchmove event on document will break. if(allowTouchMove(e.target)){return true;}// Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom) if(e.touches.length>1)return true;if(e.preventDefault)e.preventDefault();return false;};var setOverflowHidden=function setOverflowHidden(options){// Setting overflow on body/documentElement synchronously in Desktop Safari slows down // the responsiveness for some reason. Setting within a setTimeout fixes this. setTimeout(function(){// If previousBodyPaddingRight is already set, don't set it again. if(previousBodyPaddingRight===undefined){var reserveScrollBarGap=!!options&&options.reserveScrollBarGap===true;var scrollBarGap=window.innerWidth-document.documentElement.clientWidth;if(reserveScrollBarGap&&scrollBarGap>0){previousBodyPaddingRight=document.body.style.paddingRight;document.body.style.paddingRight=scrollBarGap+"px";}}// If previousBodyOverflowSetting is already set, don't set it again. if(previousBodyOverflowSetting===undefined){previousBodyOverflowSetting=document.body.style.overflow;document.body.style.overflow='hidden';}});};var restoreOverflowSetting=function restoreOverflowSetting(){// Setting overflow on body/documentElement synchronously in Desktop Safari slows down // the responsiveness for some reason. Setting within a setTimeout fixes this. setTimeout(function(){if(previousBodyPaddingRight!==undefined){document.body.style.paddingRight=previousBodyPaddingRight;// Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it // can be set again. previousBodyPaddingRight=undefined;}if(previousBodyOverflowSetting!==undefined){document.body.style.overflow=previousBodyOverflowSetting;// Restore previousBodyOverflowSetting to undefined // so setOverflowHidden knows it can be set again. previousBodyOverflowSetting=undefined;}});};// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions var isTargetElementTotallyScrolled=function isTargetElementTotallyScrolled(targetElement){return targetElement?targetElement.scrollHeight-targetElement.scrollTop<=targetElement.clientHeight:false;};var handleScroll=function handleScroll(event,targetElement){var clientY=event.targetTouches[0].clientY-initialClientY;if(allowTouchMove(event.target)){return false;}if(targetElement&&targetElement.scrollTop===0&&clientY>0){// element is at the top of its scroll return preventDefault(event);}if(isTargetElementTotallyScrolled(targetElement)&&clientY<0){// element is at the top of its scroll return preventDefault(event);}event.stopPropagation();return true;};var disableBodyScroll=function disableBodyScroll(targetElement,options){if(isIosDevice){// targetElement must be provided, and disableBodyScroll must not have been // called on this targetElement before. if(!targetElement){// eslint-disable-next-line no-console console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');return;}if(targetElement&&!locks.some(function(lock){return lock.targetElement===targetElement;})){var lock={targetElement:targetElement,options:options||{}};locks=[].concat(_toConsumableArray(locks),[lock]);targetElement.ontouchstart=function(event){if(event.targetTouches.length===1){// detect single touch initialClientY=event.targetTouches[0].clientY;}};targetElement.ontouchmove=function(event){if(event.targetTouches.length===1){// detect single touch handleScroll(event,targetElement);}};if(!documentListenerAdded){document.addEventListener('touchmove',preventDefault,hasPassiveEvents?{passive:false}:undefined);documentListenerAdded=true;}}}else{setOverflowHidden(options);var _lock={targetElement:targetElement,options:options||{}};locks=[].concat(_toConsumableArray(locks),[_lock]);}};var clearAllBodyScrollLocks=function clearAllBodyScrollLocks(){if(isIosDevice){// Clear all locks ontouchstart/ontouchmove handlers, and the references locks.forEach(function(lock){lock.targetElement.ontouchstart=null;lock.targetElement.ontouchmove=null;});if(documentListenerAdded){document.removeEventListener('touchmove',preventDefault,hasPassiveEvents?{passive:false}:undefined);documentListenerAdded=false;}locks=[];// Reset initial clientY initialClientY=-1;}else{restoreOverflowSetting();locks=[];}};var enableBodyScroll=function enableBodyScroll(targetElement){if(isIosDevice){if(!targetElement){// eslint-disable-next-line no-console console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');return;}targetElement.ontouchstart=null;targetElement.ontouchmove=null;locks=locks.filter(function(lock){return lock.targetElement!==targetElement;});if(documentListenerAdded&&locks.length===0){document.removeEventListener('touchmove',preventDefault,hasPassiveEvents?{passive:false}:undefined);documentListenerAdded=false;}}else if(locks.length===1&&locks[0].targetElement===targetElement){restoreOverflowSetting();locks=[];}else{locks=locks.filter(function(lock){return lock.targetElement!==targetElement;});}};/*! FullCalendar v5.3.2 Docs & License: https://fullcalendar.io/ (c) 2020 Adam Shaw */var FullCalendar=function(exports){'use strict';/*! ** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ** *//* global Reflect, Promise */var _extendStatics=function extendStatics(d,b){_extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,b){d.__proto__=b;}||function(d,b){for(var p in b){if(Object.prototype.hasOwnProperty.call(b,p))d[p]=b[p];}};return _extendStatics(d,b);};function __extends(d,b){_extendStatics(d,b);function __(){this.constructor=d;}d.prototype=b===null?Object.create(b):(__.prototype=b.prototype,new __());}var _assign=function __assign(){_assign=Object.assign||function __assign(t){for(var s,i=1,n=arguments.length;i3)for(u=[u],o=3;o1&&T(t,l,u),l=x(u,t,t,n.__k,null,t.__e,l),"function"==typeof n.type&&(n.__d=l)));}}function $(l,u,i,t,o,r,f,e,c){var a,h,v,y,_,w,k,g,b,x,A,P=u.type;if(void 0!==u.constructor)return null;null!=i.__h&&(c=i.__h,e=u.__e=i.__e,u.__h=null,r=[e]),(a=n.__b)&&a(u);try{n:if("function"==typeof P){if(g=u.props,b=(a=P.contextType)&&t[a.__c],x=a?b?b.props.value:a.__:t,i.__c?k=(h=u.__c=i.__c).__=h.__E:("prototype"in P&&P.prototype.render?u.__c=h=new P(g,x):(u.__c=h=new d(g,x),h.constructor=P,h.render=M),b&&b.sub(h),h.props=g,h.state||(h.state={}),h.context=x,h.__n=t,v=h.__d=!0,h.__h=[]),null==h.__s&&(h.__s=h.state),null!=P.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=s({},h.__s)),s(h.__s,P.getDerivedStateFromProps(g,h.__s))),y=h.props,_=h.state,v)null==P.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(null==P.getDerivedStateFromProps&&g!==y&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(g,x),!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(g,h.__s,x)||u.__v===i.__v){h.props=g,h.state=h.__s,u.__v!==i.__v&&(h.__d=!1),h.__v=u,u.__e=i.__e,u.__k=i.__k,h.__h.length&&f.push(h),T(u,e,l);break n;}null!=h.componentWillUpdate&&h.componentWillUpdate(g,h.__s,x),null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(y,_,w);});}h.context=x,h.props=g,h.state=h.__s,(a=n.__r)&&a(u),h.__d=!1,h.__v=u,h.__P=l,a=h.render(h.props,h.state,h.context),h.state=h.__s,null!=h.getChildContext&&(t=s(s({},t),h.getChildContext())),v||null==h.getSnapshotBeforeUpdate||(w=h.getSnapshotBeforeUpdate(y,_)),A=null!=a&&a.type==p&&null==a.key?a.props.children:a,m(l,Array.isArray(A)?A:[A],u,i,t,o,r,f,e,c),h.base=u.__e,u.__h=null,h.__h.length&&f.push(h),k&&(h.__E=h.__=null),h.__e=!1;}else null==r&&u.__v===i.__v?(u.__k=i.__k,u.__e=i.__e):u.__e=H(i.__e,u,i,t,o,r,f,c);(a=n.diffed)&&a(u);}catch(l){u.__v=null,(c||null!=r)&&(u.__e=e,u.__h=!!c,r[r.indexOf(e)]=null),n.__e(l,u,i);}return u.__e;}function j(l,u){n.__c&&n.__c(u,l),l.some(function(u){try{l=u.__h,u.__h=[],l.some(function(n){n.call(u);});}catch(l){n.__e(l,u.__v);}});}function H(n,l,u,i,t,o,r,c){var s,a,h,v,y,p=u.props,d=l.props;if(t="svg"===l.type||t,null!=o)for(s=0;s=1){return Math.min(w,nextW);}return w;}function weekOfGivenYear(marker,year,dow,doy){var firstWeekStart=arrayToUtcDate([year,0,1+firstWeekOffset(year,dow,doy)]);var dayStart=startOfDay(marker);var days=Math.round(diffDays(firstWeekStart,dayStart));return Math.floor(days/7)+1;// zero-indexed }// start-of-first-week - start-of-year function firstWeekOffset(year,dow,doy){// first-week day -- which january is always in the first week (4 for iso, 1 for other) var fwd=7+dow-doy;// first-week day local weekday -- which local weekday is fwd var fwdlw=(7+arrayToUtcDate([year,0,fwd]).getUTCDay()-dow)%7;return-fwdlw+fwd-1;}// Array Conversion 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],// day of month 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){// according to web standards (and Safari), a month index is required. // massage if only given a year. if(a.length===1){a=a.concat([0]);}return new Date(Date.UTC.apply(Date,a));}// Other Utils function isValidDate(m){return!isNaN(m.valueOf());}function timeAsMs(m){return m.getUTCHours()*1000*60*60+m.getUTCMinutes()*1000*60+m.getUTCSeconds()*1000+m.getUTCMilliseconds();}function createEventInstance(defId,range,forcedStartTzo,forcedEndTzo){return{instanceId:guid(),defId:defId,range:range,forcedStartTzo:forcedStartTzo==null?null:forcedStartTzo,forcedEndTzo:forcedEndTzo==null?null:forcedEndTzo};}var hasOwnProperty=Object.prototype.hasOwnProperty;// Merges an array of objects into a single object. // The second argument allows for an array of property names who's object values will be merged together. function mergeProps(propObjs,complexPropsMap){var dest={};if(complexPropsMap){for(var name_1 in complexPropsMap){var complexObjs=[];// collect the trailing object values, stopping when a non-object is discovered for(var i=propObjs.length-1;i>=0;i-=1){var val=propObjs[i][name_1];if((typeof val==="undefined"?"undefined":_typeof(val))==='object'&&val){// non-null object complexObjs.unshift(val);}else if(val!==undefined){dest[name_1]=val;// if there were no objects, this value will be used break;}}// if the trailing values were objects, use the merged value if(complexObjs.length){dest[name_1]=mergeProps(complexObjs);}}}// copy values into the destination, going from last to first for(var i=propObjs.length-1;i>=0;i-=1){var props=propObjs[i];for(var name_2 in props){if(!(name_2 in dest)){// if already assigned by previous props or complex props, don't reassign dest[name_2]=props[name_2];}}}return dest;}function filterHash(hash,func){var filtered={};for(var key in hash){if(func(hash[key],key)){filtered[key]=hash[key];}}return filtered;}function mapHash(hash,func){var newHash={};for(var key in hash){newHash[key]=func(hash[key],key);}return newHash;}function arrayToHash(a){var hash={};for(var _i=0,a_1=a;_i10){// time part wasn't stripped, can add timezone info if(timeZoneOffset==null){s=s.replace('Z','');}else if(timeZoneOffset!==0){s=s.replace('Z',formatTimeZoneOffset(timeZoneOffset,true));}// otherwise, its UTC-0 and we want to keep the Z }return s;}// formats the date, but with no time part // TODO: somehow merge with buildIsoString and stripZeroTime // TODO: rename. omit "string" function formatDayString(marker){return marker.toISOString().replace(/T.*$/,'');}// TODO: use Date::toISOString and use everything after the T? function formatIsoTimeString(marker){return padStart(marker.getUTCHours(),2)+':'+padStart(marker.getUTCMinutes(),2)+':'+padStart(marker.getUTCSeconds(),2);}function formatTimeZoneOffset(minutes,doIso){if(doIso===void 0){doIso=false;}var sign=minutes<0?'-':'+';var abs=Math.abs(minutes);var hours=Math.floor(abs/60);var mins=Math.round(abs%60);if(doIso){return sign+padStart(hours,2)+":"+padStart(mins,2);}return"GMT"+sign+hours+(mins?":"+padStart(mins,2):'');}// TODO: new util arrayify? function removeExact(array,exactVal){var removeCnt=0;var i=0;while(i1&&(// the two dates are different in a way that's larger scale than time standardDateProps.year==='numeric'||standardDateProps.year==='2-digit')&&(standardDateProps.month==='numeric'||standardDateProps.month==='2-digit')&&(standardDateProps.day==='numeric'||standardDateProps.day==='2-digit')){biggestUnitForPartial=1;// make it look like the dates are only different in terms of time }var full0=this.format(start,context);var full1=this.format(end,context);if(full0===full1){return full0;}var partialDateProps=computePartialFormattingOptions(standardDateProps,biggestUnitForPartial);var partialFormattingFunc=buildFormattingFunc(partialDateProps,extendedSettings,context);var partial0=partialFormattingFunc(start);var partial1=partialFormattingFunc(end);var insertion=findCommonInsertion(full0,partial0,full1,partial1);var separator=extendedSettings.separator||betterDefaultSeparator||context.defaultSeparator||'';if(insertion){return insertion.before+partial0+separator+partial1+insertion.after;}return full0+separator+full1;};NativeFormatter.prototype.getLargestUnit=function(){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';// really? }};return NativeFormatter;}();function buildFormattingFunc(standardDateProps,extendedSettings,context){var standardDatePropCnt=Object.keys(standardDateProps).length;if(standardDatePropCnt===1&&standardDateProps.timeZoneName==='short'){return function(date){return formatTimeZoneOffset(date.timeZoneOffset);};}if(standardDatePropCnt===0&&extendedSettings.week){return function(date){return formatWeekNumber(context.computeWeekNumber(date.marker),context.weekText,context.locale,extendedSettings.week);};}return buildNativeFormattingFunc(standardDateProps,extendedSettings,context);}function buildNativeFormattingFunc(standardDateProps,extendedSettings,context){standardDateProps=_assign({},standardDateProps);// copy extendedSettings=_assign({},extendedSettings);// copy sanitizeSettings(standardDateProps,extendedSettings);standardDateProps.timeZone='UTC';// we leverage the only guaranteed timeZone for our UTC markers var normalFormat=new Intl.DateTimeFormat(context.locale.codes,standardDateProps);var zeroFormat;// needed? if(extendedSettings.omitZeroMinute){var zeroProps=_assign({},standardDateProps);delete zeroProps.minute;// seconds and ms were already considered in sanitizeSettings zeroFormat=new Intl.DateTimeFormat(context.locale.codes,zeroProps);}return function(date){var marker=date.marker;var format;if(zeroFormat&&!marker.getUTCMinutes()){format=zeroFormat;}else{format=normalFormat;}var s=format.format(marker);return postProcess(s,date,standardDateProps,extendedSettings,context);};}function sanitizeSettings(standardDateProps,extendedSettings){// deal with a browser inconsistency where formatting the timezone // requires that the hour/minute be present. if(standardDateProps.timeZoneName){if(!standardDateProps.hour){standardDateProps.hour='2-digit';}if(!standardDateProps.minute){standardDateProps.minute='2-digit';}}// only support short timezone names if(standardDateProps.timeZoneName==='long'){standardDateProps.timeZoneName='short';}// if requesting to display seconds, MUST display minutes if(extendedSettings.omitZeroMinute&&(standardDateProps.second||standardDateProps.millisecond)){delete extendedSettings.omitZeroMinute;}}function postProcess(s,date,standardDateProps,extendedSettings,context){s=s.replace(LTR_RE,'');// remove left-to-right control chars. do first. good for other regexes if(standardDateProps.timeZoneName==='short'){s=injectTzoStr(s,context.timeZone==='UTC'||date.timeZoneOffset==null?'UTC':// important to normalize for IE, which does "GMT" formatTimeZoneOffset(date.timeZoneOffset));}if(extendedSettings.omitCommas){s=s.replace(COMMA_RE,'').trim();}if(extendedSettings.omitZeroMinute){s=s.replace(':00','');// zeroFormat doesn't always achieve this }// ^ do anything that might create adjacent spaces before this point, // because MERIDIEM_RE likes to eat up loading spaces if(extendedSettings.meridiem===false){s=s.replace(MERIDIEM_RE,'').trim();}else if(extendedSettings.meridiem==='narrow'){// a/p s=s.replace(MERIDIEM_RE,function(m0,m1){return m1.toLocaleLowerCase();});}else if(extendedSettings.meridiem==='short'){// am/pm s=s.replace(MERIDIEM_RE,function(m0,m1){return m1.toLocaleLowerCase()+"m";});}else if(extendedSettings.meridiem==='lowercase'){// other meridiem transformers already converted to lowercase s=s.replace(MERIDIEM_RE,function(m0){return m0.toLocaleLowerCase();});}s=s.replace(MULTI_SPACE_RE,' ');s=s.trim();return s;}function injectTzoStr(s,tzoStr){var replaced=false;s=s.replace(UTC_RE,function(){replaced=true;return tzoStr;});// IE11 doesn't include UTC/GMT in the original string, so append to end if(!replaced){s+=" "+tzoStr;}return s;}function formatWeekNumber(num,weekText,locale,display){var parts=[];if(display==='narrow'){parts.push(weekText);}else if(display==='short'){parts.push(weekText,' ');}// otherwise, considered 'numeric' parts.push(locale.simpleNumberFormat.format(num));if(locale.options.direction==='rtl'){// TODO: use control characters instead? parts.reverse();}return parts.join('');}// Range Formatting Utils // 0 = exactly the same // 1 = different by time // and bigger 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){var partialOptions={};for(var name_2 in options){if(!(name_2 in STANDARD_DATE_PROP_SEVERITIES)||// not a date part prop (like timeZone) STANDARD_DATE_PROP_SEVERITIES[name_2]<=biggestUnit){partialOptions[name_2]=options[name_2];}}return partialOptions;}function findCommonInsertion(full0,partial0,full1,partial1){var i0=0;while(i0=asRoughMs(nextDayThreshold)){endDay=addDays(endDay,1);}}if(timedRange.start){startDay=startOfDay(timedRange.start);// the beginning of the day the range starts // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day. if(endDay&&endDay<=startDay){endDay=addDays(startDay,1);}}return{start:startDay,end:endDay};}// spans from one day into another? function isMultiDayRange(range){var 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);// returns a duration }function parseRange(input,dateEnv){var start=null;var 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&&endstart){// compare millisecond time (skip any ambig logic) invertedRanges.push({start:start,end:dateRange.start});}if(dateRange.end>start){start=dateRange.end;}}// add the span of time after the last event (if there is any) if(startrange1.start)&&(range0.start===null||range1.end===null||range0.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){return new Date(range.end.valueOf()-1);}return date;}/* Specifying nextDayThreshold signals that all-day ranges should be sliced. */function sliceEventStore(eventStore,eventUiBases,framingRange,nextDayThreshold){var inverseBgByGroupId={};var inverseBgByDefId={};var defByGroupId={};var bgRanges=[];var fgRanges=[];var eventUis=compileEventUis(eventStore.defs,eventUiBases);for(var defId in eventStore.defs){var def=eventStore.defs[defId];var 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(var instanceId in eventStore.instances){var instance=eventStore.instances[instanceId];var def=eventStore.defs[instance.defId];var ui=eventUis[def.defId];var origRange=instance.range;var normalRange=!def.allDay&&nextDayThreshold?computeVisibleDayRange(origRange,nextDayThreshold):origRange;var 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:def,ui:ui,instance:instance,range:slicedRange,isStart:normalRange.start&&normalRange.start.valueOf()===slicedRange.start.valueOf(),isEnd:normalRange.end&&normalRange.end.valueOf()===slicedRange.end.valueOf()});}}}for(var groupId in inverseBgByGroupId){// BY GROUP var ranges=inverseBgByGroupId[groupId];var invertedRanges=invertRanges(ranges,framingRange);for(var _i=0,invertedRanges_1=invertedRanges;_i=(nowDate||todayRange.end),isToday:todayRange&&rangeContainsMarker(todayRange,segRange.start)};}function getEventClassNames(props){var 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();// inverse-background events don't have specific instances. TODO: better solution }var STANDARD_PROPS={start:identity,end:identity,allDay:Boolean};function parseDateSpan(raw,dateEnv,defaultDuration){var span=parseOpenDateSpan(raw,dateEnv);var range=span.range;if(!range.start){return null;}if(!range.end){if(defaultDuration==null){return null;}range.end=dateEnv.add(range.start,defaultDuration);}return span;}/* TODO: somehow combine with parseRange? Will return null if the start/end props were present but parsed invalidly. */function parseOpenDateSpan(raw,dateEnv){var _a=refineProps(raw,STANDARD_PROPS),standardProps=_a.refined,extra=_a.extra;var startMeta=standardProps.start?dateEnv.createMarkerMeta(standardProps.start):null;var endMeta=standardProps.end?dateEnv.createMarkerMeta(standardProps.end):null;var allDay=standardProps.allDay;if(allDay==null){allDay=startMeta&&startMeta.isTimeUnspecified&&(!endMeta||endMeta.isTimeUnspecified);}return _assign({range:{start:startMeta?startMeta.marker:null,end:endMeta?endMeta.marker:null},allDay:allDay},extra);}function isDateSpansEqual(span0,span1){return rangesEqual(span0.range,span1.range)&&span0.allDay===span1.allDay&&isSpanPropsEqual(span0,span1);}// the NON-DATE-RELATED props function isSpanPropsEqual(span0,span1){for(var propName in span1){if(propName!=='range'&&propName!=='allDay'){if(span0[propName]!==span1[propName]){return false;}}}// are there any props that span0 has that span1 DOESN'T have? // both have range/allDay, so no need to special-case. for(var propName in span0){if(!(propName in span1)){return false;}}return true;}function buildDateSpanApi(span,dateEnv){return _assign(_assign({},buildRangeApi(span.range,dateEnv,span.allDay)),{allDay:span.allDay});}function buildRangeApiWithTimeZone(range,dateEnv,omitTime){return _assign(_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:omitTime}),endStr:dateEnv.formatIso(range.end,{omitTime:omitTime})};}function fabricateEventRange(dateSpan,eventUiBases,context){var res=refineEventDef({editable:false},context);var def=parseEventDef(res.refined,res.extra,'',// sourceId dateSpan.allDay,true,// hasEnd context);return{def:def,ui:compileEventUi(def,eventUiBases),instance:createEventInstance(def.defId,dateSpan.range),range:dateSpan.range,isStart:true,isEnd:true};}function triggerDateSelect(selection,pev,context){context.emitter.trigger('select',_assign(_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){var props={};for(var _i=0,_a=context.pluginHooks.dateSpanTransforms;_i<_a.length;_i++){var transform=_a[_i];_assign(props,transform(dateSpan,context));}_assign(props,buildDateSpanApi(dateSpan,context.dateEnv));return props;}// Given an event's allDay status and start date, return what its fallback end date should be. // TODO: rename to computeDefaultEventEnd function getDefaultEventEnd(allDay,marker,context){var dateEnv=context.dateEnv,options=context.options;var end=marker;if(allDay){end=startOfDay(end);end=dateEnv.add(end,options.defaultAllDayEventDuration);}else{end=dateEnv.add(end,options.defaultTimedEventDuration);}return end;}// applies the mutation to ALL defs/instances within the event store function applyMutationToEventStore(eventStore,eventConfigBase,mutation,context){var eventConfigs=compileEventUis(eventStore.defs,eventConfigBase);var dest=createEmptyEventStore();for(var defId in eventStore.defs){var def=eventStore.defs[defId];dest.defs[defId]=applyMutationToEventDef(def,eventConfigs[defId],mutation,context);}for(var instanceId in eventStore.instances){var instance=eventStore.instances[instanceId];var def=dest.defs[instance.defId];// important to grab the newly modified def dest.instances[instanceId]=applyMutationToEventInstance(instance,def,eventConfigs[instance.defId],mutation,context);}return dest;}function applyMutationToEventDef(eventDef,eventConfig,mutation,context){var standardProps=mutation.standardProps||{};// if hasEnd has not been specified, guess a good value based on deltas. // if duration will change, there's no way the default duration will persist, // and thus, we need to mark the event as having a real end if(standardProps.hasEnd==null&&eventConfig.durationEditable&&(mutation.startDelta||mutation.endDelta)){standardProps.hasEnd=true;// TODO: is this mutation okay? }var copy=_assign(_assign(_assign({},eventDef),standardProps),{ui:_assign(_assign({},eventDef.ui),standardProps.ui)});if(mutation.extendedProps){copy.extendedProps=_assign(_assign({},copy.extendedProps),mutation.extendedProps);}for(var _i=0,_a=context.pluginHooks.eventDefMutationAppliers;_i<_a.length;_i++){var applier=_a[_i];applier(copy,mutation,context);}if(!copy.hasEnd&&context.options.forceEventDuration){copy.hasEnd=true;}return copy;}function applyMutationToEventInstance(eventInstance,eventDef,// must first be modified by applyMutationToEventDef eventConfig,mutation,context){var dateEnv=context.dateEnv;var forceAllDay=mutation.standardProps&&mutation.standardProps.allDay===true;var clearEnd=mutation.standardProps&&mutation.standardProps.hasEnd===false;var copy=_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)};}// in case event was all-day but the supplied deltas were not // better util for this? if(eventDef.allDay){copy.range={start:startOfDay(copy.range.start),end:startOfDay(copy.range.end)};}// handle invalid durations if(copy.range.end=0;i-=1){// later-added plugins take precedence var def=defs[i];var meta=def.parseMeta(raw);if(meta){return{sourceDefId:i,meta:meta};}}return null;}function reduceCurrentDate(currentDate,action){switch(action.type){case'CHANGE_DATE':return action.dateMarker;default:return currentDate;}}function getInitialDate(options,dateEnv){var initialDateInput=options.initialDate;// compute the initial ambig-timezone date if(initialDateInput!=null){return dateEnv.createMarker(initialDateInput);}return getNow(options.now,dateEnv);// getNow already returns unzoned }function getNow(nowInput,dateEnv){if(typeof nowInput==='function'){nowInput=nowInput();}if(nowInput==null){return dateEnv.createNowMarker();}return dateEnv.createMarker(nowInput);}var CalendarApi=/** @class */function(){function CalendarApi(){}CalendarApi.prototype.getCurrentData=function(){return this.currentDataManager.getCurrentData();};CalendarApi.prototype.dispatch=function(action){return this.currentDataManager.dispatch(action);};Object.defineProperty(CalendarApi.prototype,"view",{get:function get(){return this.getCurrentData().viewApi;}// for public API ,enumerable:false,configurable:true});CalendarApi.prototype.batchRendering=function(callback){callback();};CalendarApi.prototype.updateSize=function(){this.trigger('_resize',true);};// Options // ----------------------------------------------------------------------------------------------------------------- CalendarApi.prototype.setOption=function(name,val){this.dispatch({type:'SET_OPTION',optionName:name,rawOptionValue:val});};CalendarApi.prototype.getOption=function(name){return this.currentDataManager.currentCalendarOptionsInput[name];};CalendarApi.prototype.getAvailableLocaleCodes=function(){return Object.keys(this.getCurrentData().availableRawLocales);};// Trigger // ----------------------------------------------------------------------------------------------------------------- CalendarApi.prototype.on=function(handlerName,handler){var currentDataManager=this.currentDataManager;if(currentDataManager.currentCalendarOptionsRefiners[handlerName]){currentDataManager.emitter.on(handlerName,handler);}else{console.warn("Unknown listener name '"+handlerName+"'");}};CalendarApi.prototype.off=function(handlerName,handler){this.currentDataManager.emitter.off(handlerName,handler);};// not meant for public use CalendarApi.prototype.trigger=function(handlerName){var _a;var args=[];for(var _i=1;_i0?explicitRawLocales[0].code:'en';var allRawLocales=globalLocales.concat(explicitRawLocales);var rawLocaleMap={en:RAW_EN_LOCALE};for(var _i=0,allRawLocales_1=allRawLocales;_i0;j-=1){var simpleId=parts.slice(0,j).join('-');if(available[simpleId]){return available[simpleId];}}}return null;}function parseLocale(codeArg,codes,raw){var merged=mergeProps([RAW_EN_LOCALE,raw],['buttonText']);delete merged.code;// don't want this part of the options var week=merged.week;delete merged.week;return{codeArg:codeArg,codes:codes,week:week,simpleNumberFormat:new Intl.NumberFormat(codeArg),options:merged};}function formatDate(dateInput,options){if(options===void 0){options={};}var dateEnv=buildDateEnv(options);var formatter=createFormatter(options);var dateMeta=dateEnv.createMarkerMeta(dateInput);if(!dateMeta){// TODO: warning? return'';}return dateEnv.format(dateMeta.marker,formatter,{forcedTzo:dateMeta.forcedTzo});}function formatRange(startInput,endInput,options){var dateEnv=buildDateEnv((typeof options==="undefined"?"undefined":_typeof(options))==='object'&&options?options:{});// pass in if non-null object var formatter=createFormatter(options);var startMeta=dateEnv.createMarkerMeta(startInput);var endMeta=dateEnv.createMarkerMeta(endInput);if(!startMeta||!endMeta){// TODO: warning? return'';}return dateEnv.formatRange(startMeta.marker,endMeta.marker,formatter,{forcedStartTzo:startMeta.forcedTzo,forcedEndTzo:endMeta.forcedTzo,isEndExclusive:options.isEndExclusive,defaultSeparator:BASE_OPTION_DEFAULTS.defaultRangeSeparator});}// TODO: more DRY and optimized function buildDateEnv(settings){var locale=buildLocale(settings.locale||'en',organizeRawLocales([]).map);// TODO: don't hardcode 'en' everywhere return new DateEnv(_assign(_assign({timeZone:BASE_OPTION_DEFAULTS.timeZone,calendarSystem:'gregory'},settings),{locale:locale}));}var DEF_DEFAULTS={startTime:'09:00',endTime:'17:00',daysOfWeek:[1,2,3,4,5],display:'inverse-background',classNames:'fc-non-business',groupId:'_businessHours'};/* TODO: pass around as EventDefHash!!! */function parseBusinessHours(input,context){return parseEvents(refineInputs(input),null,context);}function refineInputs(input){var rawDefs;if(input===true){rawDefs=[{}];// will get DEF_DEFAULTS verbatim }else if(Array.isArray(input)){// if specifying an array, every sub-definition NEEDS a day-of-week rawDefs=input.filter(function(rawDef){return rawDef.daysOfWeek;});}else if((typeof input==="undefined"?"undefined":_typeof(input))==='object'&&input){// non-null object rawDefs=[input];}else{// is probably false rawDefs=[];}rawDefs=rawDefs.map(function(rawDef){return _assign(_assign({},DEF_DEFAULTS),rawDef);});return rawDefs;}function pointInsideRect(point,rect){return point.left>=rect.left&&point.left=rect.top&&point.top
';el.querySelector('table').style.height='100px';el.querySelector('div').style.height='100%';document.body.appendChild(el);var div=el.querySelector('div');var possible=div.offsetHeight>0;document.body.removeChild(el);return possible;}var EMPTY_EVENT_STORE=createEmptyEventStore();// for purecomponents. TODO: keep elsewhere var Splitter=/** @class */function(){function Splitter(){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={};// TODO: typescript protection }Splitter.prototype.splitProps=function(props){var _this=this;var keyInfos=this.getKeyInfo(props);var defKeys=this.getKeysForEventDefs(props.eventStore);var dateSelections=this.splitDateSelection(props.dateSelection);var individualUi=this.splitIndividualUi(props.eventUiBases,defKeys);// the individual *bases* var eventStores=this.splitEventStore(props.eventStore,defKeys);var eventDrags=this.splitEventDrag(props.eventDrag);var eventResizes=this.splitEventResize(props.eventResize);var splitProps={};this.eventUiBuilders=mapHash(keyInfos,function(info,key){return _this.eventUiBuilders[key]||memoize(buildEventUiForKey);});for(var key in keyInfos){var keyInfo=keyInfos[key];var eventStore=eventStores[key]||EMPTY_EVENT_STORE;var buildEventUi=this.eventUiBuilders[key];splitProps[key]={businessHours:keyInfo.businessHours||props.businessHours,dateSelection:dateSelections[key]||null,eventStore: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;};Splitter.prototype._splitDateSpan=function(dateSpan){var dateSpans={};if(dateSpan){var keys=this.getKeysForDateSpan(dateSpan);for(var _i=0,keys_1=keys;_inowDate:todayRange?date>=todayRange.end:false)};}function getDayClassNames(meta,theme){var 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){var 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;}function buildNavLinkData(date,type){if(type===void 0){type='day';}return JSON.stringify({date:formatDayString(date),type:type});}var _isRtlScrollbarOnLeft=null;function getIsRtlScrollbarOnLeft(){if(_isRtlScrollbarOnLeft===null){_isRtlScrollbarOnLeft=computeIsRtlScrollbarOnLeft();}return _isRtlScrollbarOnLeft;}function computeIsRtlScrollbarOnLeft(){var outerEl=document.createElement('div');applyStyle(outerEl,{position:'absolute',top:-1000,left:0,border:0,padding:0,overflow:'scroll',direction:'rtl'});outerEl.innerHTML='
';document.body.appendChild(outerEl);var innerEl=outerEl.firstChild;var res=innerEl.getBoundingClientRect().left>outerEl.getBoundingClientRect().left;removeElement(outerEl);return res;}var _scrollbarWidths;function getScrollbarWidths(){if(!_scrollbarWidths){_scrollbarWidths=computeScrollbarWidths();}return _scrollbarWidths;}function computeScrollbarWidths(){var el=document.createElement('div');el.style.overflow='scroll';document.body.appendChild(el);var res=computeScrollbarWidthsForEl(el);document.body.removeChild(el);return res;}// WARNING: will include border function computeScrollbarWidthsForEl(el){return{x:el.offsetHeight-el.clientHeight,y:el.offsetWidth-el.clientWidth};}function computeEdges(el,getPadding){if(getPadding===void 0){getPadding=false;}var computedStyle=window.getComputedStyle(el);var borderLeft=parseInt(computedStyle.borderLeftWidth,10)||0;var borderRight=parseInt(computedStyle.borderRightWidth,10)||0;var borderTop=parseInt(computedStyle.borderTopWidth,10)||0;var borderBottom=parseInt(computedStyle.borderBottomWidth,10)||0;var badScrollbarWidths=computeScrollbarWidthsForEl(el);// includes border! var scrollbarLeftRight=badScrollbarWidths.y-borderLeft-borderRight;var scrollbarBottom=badScrollbarWidths.x-borderTop-borderBottom;var res={borderLeft:borderLeft,borderRight:borderRight,borderTop:borderTop,borderBottom:borderBottom,scrollbarBottom:scrollbarBottom,scrollbarLeft:0,scrollbarRight:0};if(getIsRtlScrollbarOnLeft()&&computedStyle.direction==='rtl'){// is the scrollbar on the left side? 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,doFromWindowViewport){if(goWithinPadding===void 0){goWithinPadding=false;}var outerRect=doFromWindowViewport?el.getBoundingClientRect():computeRect(el);var edges=computeEdges(el,goWithinPadding);var 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){var rect=el.getBoundingClientRect();return{left:rect.left+window.pageXOffset,top:rect.top+window.pageYOffset,right:rect.right+window.pageXOffset,bottom:rect.bottom+window.pageYOffset};}function computeHeightAndMargins(el){return el.getBoundingClientRect().height+computeVMargins(el);}function computeVMargins(el){var computed=window.getComputedStyle(el);return parseInt(computed.marginTop,10)+parseInt(computed.marginBottom,10);}// does not return window function getClippingParents(el){var parents=[];while(el instanceof HTMLElement){// will stop when gets to document or null var 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;}// given a function that resolves a result asynchronously. // the function can either call passed-in success and failure callbacks, // or it can return a promise. // if you need to pass additional params to func, bind them first. function unpromisify(func,success,failure){// guard against success/failure callbacks being called more than once // and guard against a promise AND callback being used together. var isResolved=false;var wrappedSuccess=function wrappedSuccess(){if(!isResolved){isResolved=true;success.apply(this,arguments);// eslint-disable-line prefer-rest-params }};var wrappedFailure=function wrappedFailure(){if(!isResolved){isResolved=true;if(failure){failure.apply(this,arguments);// eslint-disable-line prefer-rest-params }}};var res=func(wrappedSuccess,wrappedFailure);if(res&&typeof res.then==='function'){res.then(wrappedSuccess,wrappedFailure);}}var Emitter=/** @class */function(){function Emitter(){this.handlers={};this.thisContext=null;}Emitter.prototype.setThisContext=function(thisContext){this.thisContext=thisContext;};Emitter.prototype.setOptions=function(options){this.options=options;};Emitter.prototype.on=function(type,handler){addToHash(this.handlers,type,handler);};Emitter.prototype.off=function(type,handler){removeFromHash(this.handlers,type,handler);};Emitter.prototype.trigger=function(type){var args=[];for(var _i=1;_i=lefts[i]&&leftPosition=tops[i]&&topPosition0;};ScrollController.prototype.canScrollHorizontally=function(){return this.getMaxScrollLeft()>0;};ScrollController.prototype.canScrollUp=function(){return this.getScrollTop()>0;};ScrollController.prototype.canScrollDown=function(){return this.getScrollTop()0;};ScrollController.prototype.canScrollRight=function(){return this.getScrollLeft() if(typeof FullCalendarVDom==='undefined'){throw new Error('Please import the top-level fullcalendar lib before attempting to import a plugin.');}var Component=FullCalendarVDom.Component;var createElement=FullCalendarVDom.createElement;var render=FullCalendarVDom.render;var createRef=FullCalendarVDom.createRef;var Fragment=FullCalendarVDom.Fragment;var createContext$1=FullCalendarVDom.createContext;var flushToDom$1=FullCalendarVDom.flushToDom;var unmountComponentAtNode$1=FullCalendarVDom.unmountComponentAtNode;var ScrollResponder=/** @class */function(){function ScrollResponder(execFunc,emitter,scrollTime){var _this=this;this.execFunc=execFunc;this.emitter=emitter;this.scrollTime=scrollTime;this.handleScrollRequest=function(request){_this.queuedRequest=_assign({},_this.queuedRequest||{},request);_this.drain();};emitter.on('_scrollRequest',this.handleScrollRequest);this.fireInitialScroll();}ScrollResponder.prototype.detach=function(){this.emitter.off('_scrollRequest',this.handleScrollRequest);};ScrollResponder.prototype.update=function(isDatesNew){if(isDatesNew){this.fireInitialScroll();// will drain }else{this.drain();}};ScrollResponder.prototype.fireInitialScroll=function(){this.handleScrollRequest({time:this.scrollTime});};ScrollResponder.prototype.drain=function(){if(this.queuedRequest&&this.execFunc(this.queuedRequest)){this.queuedRequest=null;}};return ScrollResponder;}();var ViewContextType=createContext$1({});// for Components function buildViewContext(viewSpec,viewApi,viewOptions,dateProfileGenerator,dateEnv,theme,pluginHooks,dispatch,getCurrentData,emitter,calendarApi,registerInteractiveComponent,unregisterInteractiveComponent){return{dateEnv:dateEnv,options:viewOptions,pluginHooks:pluginHooks,emitter:emitter,dispatch:dispatch,getCurrentData:getCurrentData,calendarApi:calendarApi,viewSpec:viewSpec,viewApi:viewApi,dateProfileGenerator:dateProfileGenerator,theme:theme,isRtl:viewOptions.direction==='rtl',addResizeHandler:function addResizeHandler(handler){emitter.on('_resize',handler);},removeResizeHandler:function removeResizeHandler(handler){emitter.off('_resize',handler);},createScrollResponder:function createScrollResponder(execFunc){return new ScrollResponder(execFunc,emitter,createDuration(viewOptions.scrollTime));},registerInteractiveComponent:registerInteractiveComponent,unregisterInteractiveComponent:unregisterInteractiveComponent};}/* eslint max-classes-per-file: off */var PureComponent=/** @class */function(_super){__extends(PureComponent,_super);function PureComponent(){return _super!==null&&_super.apply(this,arguments)||this;}PureComponent.prototype.shouldComponentUpdate=function(nextProps,nextState){if(this.debug){// eslint-disable-next-line no-console console.log(getUnequalProps(nextProps,this.props),getUnequalProps(nextState,this.state));}return!compareObjs(this.props,nextProps,this.propEquality)||!compareObjs(this.state,nextState,this.stateEquality);};PureComponent.addPropsEquality=addPropsEquality;PureComponent.addStateEquality=addStateEquality;PureComponent.contextType=ViewContextType;return PureComponent;}(Component);PureComponent.prototype.propEquality={};PureComponent.prototype.stateEquality={};var BaseComponent=/** @class */function(_super){__extends(BaseComponent,_super);function BaseComponent(){return _super!==null&&_super.apply(this,arguments)||this;}BaseComponent.contextType=ViewContextType;return BaseComponent;}(PureComponent);function addPropsEquality(propEquality){var hash=Object.create(this.prototype.propEquality);_assign(hash,propEquality);this.prototype.propEquality=hash;}function addStateEquality(stateEquality){var hash=Object.create(this.prototype.stateEquality);_assign(hash,stateEquality);this.prototype.stateEquality=hash;}// use other one function setRef(ref,current){if(typeof ref==='function'){ref(current);}else if(ref){// see https://github.com/facebook/react/issues/13029 ref.current=current;}}function reduceEventStore(eventStore,action,eventSources,dateProfile,context){switch(action.type){case'RECEIVE_EVENTS':// raw return receiveRawEvents(eventStore,eventSources[action.sourceId],action.fetchId,action.fetchRange,action.rawEvents,context);case'ADD_EVENTS':// already parsed, but not expanded return addEvent(eventStore,action.eventStore,// new ones dateProfile?dateProfile.activeRange:null,context);case'MERGE_EVENTS':// already parsed and expanded return mergeEventStores(eventStore,action.eventStore);case'PREV':// TODO: how do we track all actions that affect dateProfile :( 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,function(eventDef){return!eventDef.sourceId// only keep events with no source id ;});case'REMOVE_ALL_EVENTS':return createEmptyEventStore();default:return eventStore;}}function receiveRawEvents(eventStore,eventSource,fetchId,fetchRange,rawEvents,context){if(eventSource&&// not already removed fetchId===eventSource.latestFetchId// TODO: wish this logic was always in event-sources ){var 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 transformRawEvents(rawEvents,eventSource,context){var calEachTransform=context.options.eventDataTransform;var sourceEachTransform=eventSource?eventSource.eventDataTransform:null;if(sourceEachTransform){rawEvents=transformEachRawEvent(rawEvents,sourceEachTransform);}if(calEachTransform){rawEvents=transformEachRawEvent(rawEvents,calEachTransform);}return rawEvents;}function transformEachRawEvent(rawEvents,func){var refinedEvents;if(!func){refinedEvents=rawEvents;}else{refinedEvents=[];for(var _i=0,rawEvents_1=rawEvents;_i arg. otherwise, will default to any??? var RenderHook=/** @class */function(_super){__extends(RenderHook,_super);function RenderHook(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.rootElRef=createRef();_this.handleRootEl=function(el){setRef(_this.rootElRef,el);if(_this.props.elRef){setRef(_this.props.elRef,el);}};return _this;}RenderHook.prototype.render=function(){var _this=this;var props=this.props;var hookProps=props.hookProps;return createElement(MountHook,{hookProps:hookProps,didMount:props.didMount,willUnmount:props.willUnmount,elRef:this.handleRootEl},function(rootElRef){return createElement(ContentHook,{hookProps:hookProps,content:props.content,defaultContent:props.defaultContent,backupElRef:_this.rootElRef},function(innerElRef,innerContent){return props.children(rootElRef,normalizeClassNames(props.classNames,hookProps),innerElRef,innerContent);});});};return RenderHook;}(BaseComponent);// TODO: rename to be about function, not default. use in above type // for forcing rerender of components that use the ContentHook var CustomContentRenderContext=createContext$1(0);function ContentHook(props){return createElement(CustomContentRenderContext.Consumer,null,function(renderId){return createElement(ContentHookInner,_assign({renderId:renderId},props));});}var ContentHookInner=/** @class */function(_super){__extends(ContentHookInner,_super);function ContentHookInner(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.innerElRef=createRef();return _this;}ContentHookInner.prototype.render=function(){return this.props.children(this.innerElRef,this.renderInnerContent());};ContentHookInner.prototype.componentDidMount=function(){this.updateCustomContent();};ContentHookInner.prototype.componentDidUpdate=function(){this.updateCustomContent();};ContentHookInner.prototype.componentWillUnmount=function(){if(this.customContentInfo&&this.customContentInfo.destroy){this.customContentInfo.destroy();}};ContentHookInner.prototype.renderInnerContent=function(){var contentTypeHandlers=this.context.pluginHooks.contentTypeHandlers;var _a=this,props=_a.props,customContentInfo=_a.customContentInfo;var rawVal=props.content;var innerContent=normalizeContent(rawVal,props.hookProps);var innerContentVDom=null;if(innerContent===undefined){// use the default innerContent=normalizeContent(props.defaultContent,props.hookProps);}if(innerContent!==undefined){// we allow custom content handlers to return nothing if(customContentInfo){customContentInfo.contentVal=innerContent[customContentInfo.contentKey];}else if((typeof innerContent==="undefined"?"undefined":_typeof(innerContent))==='object'){// look for a prop that would indicate a custom content handler is needed for(var contentKey in contentTypeHandlers){if(innerContent[contentKey]!==undefined){var stuff=contentTypeHandlers[contentKey]();customContentInfo=this.customContentInfo=_assign({contentKey:contentKey,contentVal:innerContent[contentKey]},stuff);break;}}}if(customContentInfo){innerContentVDom=[];// signal that something was specified }else{innerContentVDom=innerContent;// assume a [p]react vdom node. use it }}return innerContentVDom;};ContentHookInner.prototype.updateCustomContent=function(){if(this.customContentInfo){this.customContentInfo.render(this.innerElRef.current||this.props.backupElRef.current,// the element to render into this.customContentInfo.contentVal);}};return ContentHookInner;}(BaseComponent);var MountHook=/** @class */function(_super){__extends(MountHook,_super);function MountHook(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.handleRootEl=function(rootEl){_this.rootEl=rootEl;if(_this.props.elRef){setRef(_this.props.elRef,rootEl);}};return _this;}MountHook.prototype.render=function(){return this.props.children(this.handleRootEl);};MountHook.prototype.componentDidMount=function(){var callback=this.props.didMount;if(callback){callback(_assign(_assign({},this.props.hookProps),{el:this.rootEl}));}};MountHook.prototype.componentWillUnmount=function(){var callback=this.props.willUnmount;if(callback){callback(_assign(_assign({},this.props.hookProps),{el:this.rootEl}));}};return MountHook;}(BaseComponent);function buildClassNameNormalizer(){var currentGenerator;var currentHookProps;var currentClassNames=[];return function(generator,hookProps){if(!currentHookProps||!isPropsEqual(currentHookProps,hookProps)||generator!==currentGenerator){currentGenerator=generator;currentHookProps=hookProps;currentClassNames=normalizeClassNames(generator,hookProps);}return currentClassNames;};}function normalizeClassNames(classNames,hookProps){if(typeof classNames==='function'){classNames=classNames(hookProps);}return parseClassNames(classNames);}function normalizeContent(input,hookProps){if(typeof input==='function'){return input(hookProps,createElement);// give the function the vdom-creation func }return input;}var ViewRoot=/** @class */function(_super){__extends(ViewRoot,_super);function ViewRoot(){var _this=_super!==null&&_super.apply(this,arguments)||this;_this.normalizeClassNames=buildClassNameNormalizer();return _this;}ViewRoot.prototype.render=function(){var _a=this,props=_a.props,context=_a.context;var options=context.options;var hookProps={view:context.viewApi};var customClassNames=this.normalizeClassNames(options.viewClassNames,hookProps);return createElement(MountHook,{hookProps:hookProps,didMount:options.viewDidMount,willUnmount:options.viewWillUnmount,elRef:props.elRef},function(rootElRef){return props.children(rootElRef,["fc-"+props.viewSpec.type+"-view",'fc-view'].concat(customClassNames));});};return ViewRoot;}(BaseComponent);function parseViewConfigs(inputs){return mapHash(inputs,parseViewConfig);}function parseViewConfig(input){var rawOptions=typeof input==='function'?{component:input}:input;var component=rawOptions.component;if(rawOptions.content){component=createViewHookComponent(rawOptions);// TODO: remove content/classNames/didMount/etc from options? }return{superType:rawOptions.type,component:component,rawOptions:rawOptions};}function createViewHookComponent(options){return function(viewProps){return createElement(ViewContextType.Consumer,null,function(context){return createElement(ViewRoot,{viewSpec:context.viewSpec},function(viewElRef,viewClassNames){var hookProps=_assign(_assign({},viewProps),{nextDayThreshold:context.options.nextDayThreshold});return createElement(RenderHook,{hookProps:hookProps,classNames:options.classNames,content:options.content,didMount:options.didMount,willUnmount:options.willUnmount,elRef:viewElRef},function(rootElRef,customClassNames,innerElRef,innerContent){return createElement("div",{className:viewClassNames.concat(customClassNames).join(' '),ref:rootElRef},innerContent);});});});};}function buildViewSpecs(defaultInputs,optionOverrides,dynamicOptionOverrides,localeDefaults){var defaultConfigs=parseViewConfigs(defaultInputs);var overrideConfigs=parseViewConfigs(optionOverrides.views);var viewDefs=compileViewDefs(defaultConfigs,overrideConfigs);return mapHash(viewDefs,function(viewDef){return buildViewSpec(viewDef,overrideConfigs,optionOverrides,dynamicOptionOverrides,localeDefaults);});}function buildViewSpec(viewDef,overrideConfigs,optionOverrides,dynamicOptionOverrides,localeDefaults){var durationInput=viewDef.overrides.duration||viewDef.defaults.duration||dynamicOptionOverrides.duration||optionOverrides.duration;var duration=null;var durationUnit='';var singleUnit='';var singleUnitOverrides={};if(durationInput){duration=createDurationCached(durationInput);if(duration){// valid? var denom=greatestDurationDenominator(duration);durationUnit=denom.unit;if(denom.value===1){singleUnit=durationUnit;singleUnitOverrides=overrideConfigs[durationUnit]?overrideConfigs[durationUnit].rawOptions:{};}}}var queryButtonText=function queryButtonText(optionsSubset){var buttonTextMap=optionsSubset.buttonText||{};var 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;};return{type:viewDef.type,component:viewDef.component,duration:duration,durationUnit:durationUnit,singleUnit:singleUnit,optionDefaults:viewDef.defaults,optionOverrides:_assign(_assign({},singleUnitOverrides),viewDef.overrides),buttonTextOverride:queryButtonText(dynamicOptionOverrides)||queryButtonText(optionOverrides)||// constructor-specified buttonText lookup hash takes precedence viewDef.overrides.buttonText,buttonTextDefault:queryButtonText(localeDefaults)||viewDef.defaults.buttonText||queryButtonText(BASE_OPTION_DEFAULTS)||viewDef.type};}// hack to get memoization working var durationInputMap={};function createDurationCached(durationInput){var json=JSON.stringify(durationInput);var res=durationInputMap[json];if(res===undefined){res=createDuration(durationInput);durationInputMap[json]=res;}return res;}var DateProfileGenerator=/** @class */function(){function DateProfileGenerator(props){this.props=props;this.nowDate=getNow(props.nowInput,props.dateEnv);this.initHiddenDays();}/* Date Range Computation ------------------------------------------------------------------------------------------------------------------*/// Builds a structure with info about what the dates/ranges will be for the "prev" view. DateProfileGenerator.prototype.buildPrev=function(currentDateProfile,currentDate,forceToValid){var dateEnv=this.props.dateEnv;var prevDate=dateEnv.subtract(dateEnv.startOf(currentDate,currentDateProfile.currentRangeUnit),// important for start-of-month currentDateProfile.dateIncrement);return this.build(prevDate,-1,forceToValid);};// Builds a structure with info about what the dates/ranges will be for the "next" view. DateProfileGenerator.prototype.buildNext=function(currentDateProfile,currentDate,forceToValid){var dateEnv=this.props.dateEnv;var nextDate=dateEnv.add(dateEnv.startOf(currentDate,currentDateProfile.currentRangeUnit),// important for start-of-month currentDateProfile.dateIncrement);return this.build(nextDate,1,forceToValid);};// Builds a structure holding dates/ranges for rendering around the given date. // Optional direction param indicates whether the date is being incremented/decremented // from its previous value. decremented = -1, incremented = 1 (default). DateProfileGenerator.prototype.build=function(currentDate,direction,forceToValid){if(forceToValid===void 0){forceToValid=true;}var props=this.props;var validRange;var currentInfo;var isRangeAllDay;var renderRange;var activeRange;var 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);// might return null // it's invalid if the originally requested date is not contained, // or if the range is completely outside of the valid range. isValid=rangesIntersect(currentInfo.range,validRange);return{// constraint for where prev/next operations can go and where events can be dragged/resized to. // an object with optional start and end properties. validRange:validRange,// range the view is formally responsible for. // for example, a month view might have 1st-31st, excluding padded dates currentRange:currentInfo.range,// name of largest unit being displayed, like "month" or "week" currentRangeUnit:currentInfo.unit,isRangeAllDay:isRangeAllDay,// dates that display events and accept drag-n-drop // will be `null` if no dates accept events activeRange:activeRange,// date range with a rendered skeleton // includes not-active days that need some sort of DOM renderRange:renderRange,// Duration object that denotes the first visible time of any given day slotMinTime:props.slotMinTime,// Duration object that denotes the exclusive visible end time of any given day slotMaxTime:props.slotMaxTime,isValid:isValid,// how far the current date will move for a prev/next operation dateIncrement:this.buildDateIncrement(currentInfo.duration)};};// Builds an object with optional start/end properties. // Indicates the minimum/maximum dates to display. // not responsible for trimming hidden days. DateProfileGenerator.prototype.buildValidRange=function(){var input=this.props.validRangeInput;var simpleInput=typeof input==='function'?input.call(this.props.calendarApi,this.nowDate):input;return this.refineRange(simpleInput)||{start:null,end:null};// completely open-ended };// Builds a structure with info about the "current" range, the range that is // highlighted as being the current month for example. // See build() for a description of `direction`. // Guaranteed to have `range` and `unit` properties. `duration` is optional. DateProfileGenerator.prototype.buildCurrentRangeInfo=function(date,direction){var props=this.props;var duration=null;var unit=null;var range=null;var 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:duration,unit:unit,range:range};};DateProfileGenerator.prototype.getFallbackDuration=function(){return createDuration({day:1});};// Returns a new activeRange to have time values (un-ambiguate) // slotMinTime or slotMaxTime causes the range to expand. DateProfileGenerator.prototype.adjustActiveRange=function(range){var _a=this.props,dateEnv=_a.dateEnv,usesMinMaxTime=_a.usesMinMaxTime,slotMinTime=_a.slotMinTime,slotMaxTime=_a.slotMaxTime;var start=range.start,end=range.end;if(usesMinMaxTime){// expand active range if slotMinTime is negative (why not when positive?) if(asRoughDays(slotMinTime)<0){start=startOfDay(start);// necessary? start=dateEnv.add(start,slotMinTime);}// expand active range if slotMaxTime is beyond one day (why not when negative?) if(asRoughDays(slotMaxTime)>1){end=startOfDay(end);// necessary? end=addDays(end,-1);end=dateEnv.add(end,slotMaxTime);}}return{start:start,end:end};};// Builds the "current" range when it is specified as an explicit duration. // `unit` is the already-computed greatestDurationDenominator unit of duration. DateProfileGenerator.prototype.buildRangeFromDuration=function(date,direction,duration,unit){var _a=this.props,dateEnv=_a.dateEnv,dateAlignment=_a.dateAlignment;var start;var end;var res;// compute what the alignment should be if(!dateAlignment){var dateIncrement=this.props.dateIncrement;if(dateIncrement){// use the smaller of the two units if(asRoughMs(dateIncrement)