var FullCalendar=(function (exports){
'use strict';
var extendStatics=function(d, b){
extendStatics=Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array&&function (d, b){ d.__proto__=b; }) ||
function (d, b){ for (var p in b) if(b.hasOwnProperty(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=Object.assign||function __assign(t){
for (var s, i=1, n=arguments.length; i < n; i++){
s=arguments[i];
for (var p in s) if(Object.prototype.hasOwnProperty.call(s, p)) t[p]=s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
function __spreadArrays(){
for (var s=0, i=0, il=arguments.length; i < il; i++) s +=arguments[i].length;
for (var r=Array(s), k=0, i=0; i < il; i++)
for (var a=arguments[i], j=0, jl=a.length; j < jl; j++, k++)
r[k]=a[j];
return r;
}
var n,u,i,t,r,o,f,e={},c=[],s=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;function a(n,l){for(var u in l)n[u]=l[u];return n}function v(n){var l=n.parentNode;l&&l.removeChild(n);}function h(n,l,u){var i,t=arguments,r={};for(i in l)"key"!==i&&"ref"!==i&&(r[i]=l[i]);if(arguments.length>3)for(u=[u],i=3;i<arguments.length;i++)u.push(t[i]);if(null!=u&&(r.children=u),"function"==typeof n&&null!=n.defaultProps)for(i in n.defaultProps)void 0===r[i]&&(r[i]=n.defaultProps[i]);return p(n,r,l&&l.key,l&&l.ref,null)}function p(l,u,i,t,r){var o={type:l,props:u,key:i,ref:t,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:r};return null==r&&(o.__v=o),n.vnode&&n.vnode(o),o}function y(){return {}}function d(n){return n.children}function m(n,l){this.props=n,this.context=l;}function w(n,l){if(null==l)return n.__?w(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return "function"==typeof n.type?w(n):null}function k(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return k(n)}}function g(l){(!l.__d&&(l.__d=!0)&&u.push(l)&&!i++||r!==n.debounceRendering)&&((r=n.debounceRendering)||t)(_);}function _(){for(var n;i=u.length;)n=u.sort(function(n,l){return n.__v.__b-l.__v.__b}),u=[],n.some(function(n){var l,u,i,t,r,o,f;n.__d&&(o=(r=(l=n).__v).__e,(f=l.__P)&&(u=[],(i=a({},r)).__v=i,t=A(f,r,i,l.__n,void 0!==f.ownerSVGElement,null,u,null==o?w(r):o),T(u,r),t!=o&&k(r)));});}function b(n,l,u,i,t,r,o,f,s){var a,h,p,y,d,m,k,g=u&&u.__k||c,_=g.length;if(f==e&&(f=null!=r?r[0]:_?w(u,0):null),a=0,l.__k=x(l.__k,function(u){if(null!=u){if(u.__=l,u.__b=l.__b+1,null===(p=g[a])||p&&u.key==p.key&&u.type===p.type)g[a]=void 0;else for(h=0;h<_;h++){if((p=g[h])&&u.key==p.key&&u.type===p.type){g[h]=void 0;break}p=null;}if(y=A(n,u,p=p||e,i,t,r,o,f,s),(h=u.ref)&&p.ref!=h&&(k||(k=[]),p.ref&&k.push(p.ref,null,u),k.push(h,u.__c||y,u)),null!=y){var c;if(null==m&&(m=y),void 0!==u.__d)c=u.__d,u.__d=void 0;else if(r==p||y!=f||null==y.parentNode){n:if(null==f||f.parentNode!==n)n.appendChild(y),c=null;else {for(d=f,h=0;(d=d.nextSibling)&&h<_;h+=2)if(d==y)break n;n.insertBefore(y,f),c=f;}"option"==l.type&&(n.value="");}f=void 0!==c?c:y.nextSibling,"function"==typeof l.type&&(l.__d=f);}else f&&p.__e==f&&f.parentNode!=n&&(f=w(p));}return a++,u}),l.__e=m,null!=r&&"function"!=typeof l.type)for(a=r.length;a--;)null!=r[a]&&v(r[a]);for(a=_;a--;)null!=g[a]&&D(g[a],g[a]);if(k)for(a=0;a<k.length;a++)j(k[a],k[++a],k[++a]);}function x(n,l,u){if(null==u&&(u=[]),null==n||"boolean"==typeof n)l&&u.push(l(null));else if(Array.isArray(n))for(var i=0;i<n.length;i++)x(n[i],l,u);else u.push(l?l("string"==typeof n||"number"==typeof n?p(null,n,null,null,n):null!=n.__e||null!=n.__c?p(n.type,n.props,n.key,null,n.__v):n):n);return u}function P(n,l,u,i,t){var r;for(r in u)"children"===r||"key"===r||r in l||N(n,r,null,u[r],i);for(r in l)t&&"function"!=typeof l[r]||"children"===r||"key"===r||"value"===r||"checked"===r||u[r]===l[r]||N(n,r,l[r],u[r],i);}function C(n,l,u){"-"===l[0]?n.setProperty(l,u):n[l]="number"==typeof u&&!1===s.test(l)?u+"px":null==u?"":u;}function N(n,l,u,i,t){var r,o,f,e,c;if(t?"className"===l&&(l="class"):"class"===l&&(l="className"),"style"===l)if(r=n.style,"string"==typeof u)r.cssText=u;else {if("string"==typeof i&&(r.cssText="",i=null),i)for(e in i)u&&e in u||C(r,e,"");if(u)for(c in u)i&&u[c]===i[c]||C(r,c,u[c]);}else "o"===l[0]&&"n"===l[1]?(o=l!==(l=l.replace(/Capture$/,"")),f=l.toLowerCase(),l=(f in n?f:l).slice(2),u?(i||n.addEventListener(l,z,o),(n.l||(n.l={}))[l]=u):n.removeEventListener(l,z,o)):"list"!==l&&"tagName"!==l&&"form"!==l&&"type"!==l&&"size"!==l&&!t&&l in n?n[l]=null==u?"":u:"function"!=typeof u&&"dangerouslySetInnerHTML"!==l&&(l!==(l=l.replace(/^xlink:?/,""))?null==u||!1===u?n.removeAttributeNS("http://www.w3.org/1999/xlink",l.toLowerCase()):n.setAttributeNS("http://www.w3.org/1999/xlink",l.toLowerCase(),u):null==u||!1===u&&!/^ar/.test(l)?n.removeAttribute(l):n.setAttribute(l,u));}function z(l){this.l[l.type](n.event?n.event(l):l);}function A(l,u,i,t,r,o,f,e,c){var s,v,h,p,y,w,k,g,_,x,P=u.type;if(void 0!==u.constructor)return null;(s=n.__b)&&s(u);try{n:if("function"==typeof P){if(g=u.props,_=(s=P.contextType)&&t[s.__c],x=s?_?_.props.value:s.__:t,i.__c?k=(v=u.__c=i.__c).__=v.__E:("prototype"in P&&P.prototype.render?u.__c=v=new P(g,x):(u.__c=v=new m(g,x),v.constructor=P,v.render=E),_&&_.sub(v),v.props=g,v.state||(v.state={}),v.context=x,v.__n=t,h=v.__d=!0,v.__h=[]),null==v.__s&&(v.__s=v.state),null!=P.getDerivedStateFromProps&&(v.__s==v.state&&(v.__s=a({},v.__s)),a(v.__s,P.getDerivedStateFromProps(g,v.__s))),p=v.props,y=v.state,h)null==P.getDerivedStateFromProps&&null!=v.componentWillMount&&v.componentWillMount(),null!=v.componentDidMount&&v.__h.push(v.componentDidMount);else {if(null==P.getDerivedStateFromProps&&g!==p&&null!=v.componentWillReceiveProps&&v.componentWillReceiveProps(g,x),!v.__e&&null!=v.shouldComponentUpdate&&!1===v.shouldComponentUpdate(g,v.__s,x)||u.__v===i.__v&&!v.__){for(v.props=g,v.state=v.__s,u.__v!==i.__v&&(v.__d=!1),v.__v=u,u.__e=i.__e,u.__k=i.__k,v.__h.length&&f.push(v),s=0;s<u.__k.length;s++)u.__k[s]&&(u.__k[s].__=u);break n}null!=v.componentWillUpdate&&v.componentWillUpdate(g,v.__s,x),null!=v.componentDidUpdate&&v.__h.push(function(){v.componentDidUpdate(p,y,w);});}v.context=x,v.props=g,v.state=v.__s,(s=n.__r)&&s(u),v.__d=!1,v.__v=u,v.__P=l,s=v.render(v.props,v.state,v.context),u.__k=null!=s&&s.type==d&&null==s.key?s.props.children:Array.isArray(s)?s:[s],null!=v.getChildContext&&(t=a(a({},t),v.getChildContext())),h||null==v.getSnapshotBeforeUpdate||(w=v.getSnapshotBeforeUpdate(p,y)),b(l,u,i,t,r,o,f,e,c),v.base=u.__e,v.__h.length&&f.push(v),k&&(v.__E=v.__=null),v.__e=!1;}else null==o&&u.__v===i.__v?(u.__k=i.__k,u.__e=i.__e):u.__e=$(i.__e,u,i,t,r,o,f,c);(s=n.diffed)&&s(u);}catch(l){u.__v=null,n.__e(l,u,i);}return u.__e}function T(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 $(n,l,u,i,t,r,o,f){var s,a,v,h,p,y=u.props,d=l.props;if(t="svg"===l.type||t,null!=r)for(s=0;s<r.length;s++)if(null!=(a=r[s])&&((null===l.type?3===a.nodeType:a.localName===l.type)||n==a)){n=a,r[s]=null;break}if(null==n){if(null===l.type)return document.createTextNode(d);n=t?document.createElementNS("http://www.w3.org/2000/svg",l.type):document.createElement(l.type,d.is&&{is:d.is}),r=null,f=!1;}if(null===l.type)y!==d&&n.data!=d&&(n.data=d);else {if(null!=r&&(r=c.slice.call(n.childNodes)),v=(y=u.props||e).dangerouslySetInnerHTML,h=d.dangerouslySetInnerHTML,!f){if(y===e)for(y={},p=0;p<n.attributes.length;p++)y[n.attributes[p].name]=n.attributes[p].value;(h||v)&&(h&&v&&h.__html==v.__html||(n.innerHTML=h&&h.__html||""));}P(n,d,y,t,f),h?l.__k=[]:(l.__k=l.props.children,b(n,l,u,i,"foreignObject"!==l.type&&t,r,o,e,f)),f||("value"in d&&void 0!==(s=d.value)&&s!==n.value&&N(n,"value",s,y.value,!1),"checked"in d&&void 0!==(s=d.checked)&&s!==n.checked&&N(n,"checked",s,y.checked,!1));}return n}function j(l,u,i){try{"function"==typeof l?l(u):l.current=u;}catch(l){n.__e(l,i);}}function D(l,u,i){var t,r,o;if(n.unmount&&n.unmount(l),(t=l.ref)&&(t.current&&t.current!==l.__e||j(t,null,u)),i||"function"==typeof l.type||(i=null!=(r=l.__e)),l.__e=l.__d=void 0,null!=(t=l.__c)){if(t.componentWillUnmount)try{t.componentWillUnmount();}catch(l){n.__e(l,u);}t.base=t.__P=null;}if(t=l.__k)for(o=0;o<t.length;o++)t[o]&&D(t[o],u,i);null!=r&&v(r);}function E(n,l,u){return this.constructor(n,u)}function H(l,u,i){var t,r,f;n.__&&n.__(l,u),r=(t=i===o)?null:i&&i.__k||u.__k,l=h(d,null,[l]),f=[],A(u,(t?u:i||u).__k=l,r||e,e,void 0!==u.ownerSVGElement,i&&!t?[i]:r?null:c.slice.call(u.childNodes),f,i||e,t),T(f,l);}function M(n){var l={},u={__c:"__cC"+f++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var i,t=this;return this.getChildContext||(i=[],this.getChildContext=function(){return l[u.__c]=t,l},this.shouldComponentUpdate=function(n){t.props.value!==n.value&&i.some(function(l){l.context=n.value,g(l);});},this.sub=function(n){i.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){i.splice(i.indexOf(n),1),l&&l.call(n);};}),n.children}};return u.Consumer.contextType=u,u.Provider.__=u,u}n={__e:function(n,l){for(var u,i;l=l.__;)if((u=l.__c)&&!u.__)try{if(u.constructor&&null!=u.constructor.getDerivedStateFromError&&(i=!0,u.setState(u.constructor.getDerivedStateFromError(n))),null!=u.componentDidCatch&&(i=!0,u.componentDidCatch(n)),i)return g(u.__E=u)}catch(l){n=l;}throw n}},m.prototype.setState=function(n,l){var u;u=this.__s!==this.state?this.__s:this.__s=a({},this.state),"function"==typeof n&&(n=n(u,this.props)),n&&a(u,n),null!=n&&this.__v&&(l&&this.__h.push(l),g(this));},m.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),g(this));},m.prototype.render=d,u=[],i=0,t="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,o=e,f=0;
(typeof globalThis!=='undefined' ? globalThis:window).FullCalendarVDom={
Component: m,
createElement: h,
render: H,
createRef: y,
Fragment: d,
createContext: createContext,
flushToDom: flushToDom
};
function flushToDom(){
var oldDebounceRendering=n.debounceRendering;
var callbackQ=[];
function execCallbackSync(callback){
callbackQ.push(callback);
}
n.debounceRendering=execCallbackSync;
H(h(FakeComponent, {}), document.createElement('div'));
while (callbackQ.length){
callbackQ.shift()();
}
n.debounceRendering=oldDebounceRendering;
}
var FakeComponent= (function (_super){
__extends(FakeComponent, _super);
function FakeComponent(){
return _super!==null&&_super.apply(this, arguments)||this;
}
FakeComponent.prototype.render=function (){ return h('div', {});};
FakeComponent.prototype.componentDidMount=function (){ this.setState({});};
return FakeComponent;
}(m));
function createContext(defaultValue){
var ContextType=M(defaultValue);
var origProvider=ContextType.Provider;
ContextType.Provider=function (){
var _this=this;
var isNew = !this.getChildContext;
var children=origProvider.apply(this, arguments);
if(isNew){
var subs_1=[];
this.shouldComponentUpdate=function (_props){
if(_this.props.value!==_props.value){
subs_1.some(function (c){
c.context=_props.value;
c.forceUpdate();
});
}};
this.sub=function (c){
subs_1.push(c);
var old=c.componentWillUnmount;
c.componentWillUnmount=function (){
subs_1.splice(subs_1.indexOf(c), 1);
old&&old.call(c);
};};
}
return children;
};
return ContextType;
}
var EventSourceApi= (function (){
function EventSourceApi(context, internalEventSource
){
this.context=context;
this.internalEventSource=internalEventSource;
}
EventSourceApi.prototype.remove=function (){
this.context.dispatch({
type: 'REMOVE_EVENT_SOURCE',
sourceId: this.internalEventSource.sourceId
});
};
EventSourceApi.prototype.refetch=function (){
this.context.dispatch({
type: 'FETCH_EVENT_SOURCES',
sourceIds: [this.internalEventSource.sourceId]
});
};
Object.defineProperty(EventSourceApi.prototype, "id", {
get: function (){
return this.internalEventSource.publicId;
},
enumerable: false,
configurable: true
});
Object.defineProperty(EventSourceApi.prototype, "url", {
get: function (){
return this.internalEventSource.meta.url;
},
enumerable: false,
configurable: true
});
return EventSourceApi;
}());
function removeElement(el){
if(el.parentNode){
el.parentNode.removeChild(el);
}}
function elementClosest(el, selector){
if(el.closest){
return el.closest(selector);
}else{
if(!document.documentElement.contains(el)){
return null;
}
do {
if(elementMatches(el, selector)){
return el;
}
el=(el.parentElement||el.parentNode);
} while (el!==null&&el.nodeType===1);
return null;
}}
function elementMatches(el, selector){
var method=el.matches||el.matchesSelector||el.msMatchesSelector;
return method.call(el, selector);
}
function findElements(container, selector){
var containers=container instanceof HTMLElement ? [container]:container;
var allMatches=[];
for (var i=0; i < containers.length; i++){
var matches=containers[i].querySelectorAll(selector);
for (var j=0; j < matches.length; j++){
allMatches.push(matches[j]);
}}
return allMatches;
}
function findDirectChildren(parent, selector){
var parents=parent instanceof HTMLElement ? [parent]:parent;
var allMatches=[];
for (var i=0; i < parents.length; i++){
var childNodes=parents[i].children;
for (var j=0; j < childNodes.length; j++){
var childNode=childNodes[j];
if(!selector||elementMatches(childNode, selector)){
allMatches.push(childNode);
}}
}
return allMatches;
}
var PIXEL_PROP_RE=/(top|left|right|bottom|width|height)$/i;
function applyStyle(el, props){
for (var propName in props){
applyStyleProp(el, propName, props[propName]);
}}
function applyStyleProp(el, name, val){
if(val==null){
el.style[name]='';
}
else if(typeof val==='number'&&PIXEL_PROP_RE.test(name)){
el.style[name]=val + 'px';
}else{
el.style[name]=val;
}}
function preventDefault(ev){
ev.preventDefault();
}
function buildDelegationHandler(selector, handler){
return function (ev){
var matchedChild=elementClosest(ev.target, selector);
if(matchedChild){
handler.call(matchedChild, ev, matchedChild);
}};}
function listenBySelector(container, eventType, selector, handler){
var attachedHandler=buildDelegationHandler(selector, handler);
container.addEventListener(eventType, attachedHandler);
return function (){
container.removeEventListener(eventType, attachedHandler);
};}
function listenToHoverBySelector(container, selector, onMouseEnter, onMouseLeave){
var currentMatchedChild;
return listenBySelector(container, 'mouseover', selector, function (ev, matchedChild){
if(matchedChild!==currentMatchedChild){
currentMatchedChild=matchedChild;
onMouseEnter(ev, matchedChild);
var realOnMouseLeave_1=function (ev){
currentMatchedChild=null;
onMouseLeave(ev, matchedChild);
matchedChild.removeEventListener('mouseleave', realOnMouseLeave_1);
};
matchedChild.addEventListener('mouseleave', realOnMouseLeave_1);
}});
}
var transitionEventNames=[
'webkitTransitionEnd',
'otransitionend',
'oTransitionEnd',
'msTransitionEnd',
'transitionend'
];
function whenTransitionDone(el, callback){
var realCallback=function (ev){
callback(ev);
transitionEventNames.forEach(function (eventName){
el.removeEventListener(eventName, realCallback);
});
};
transitionEventNames.forEach(function (eventName){
el.addEventListener(eventName, realCallback);
});
}
var guidNumber=0;
function guid(){
return String(guidNumber++);
}
function disableCursor(){
document.body.classList.add('fc-not-allowed');
}
function enableCursor(){
document.body.classList.remove('fc-not-allowed');
}
function preventSelection(el){
el.classList.add('fc-unselectable');
el.addEventListener('selectstart', preventDefault);
}
function allowSelection(el){
el.classList.remove('fc-unselectable');
el.removeEventListener('selectstart', preventDefault);
}
function preventContextMenu(el){
el.addEventListener('contextmenu', preventDefault);
}
function allowContextMenu(el){
el.removeEventListener('contextmenu', preventDefault);
}
function parseFieldSpecs(input){
var specs=[];
var tokens=[];
var i;
var token;
if(typeof input==='string'){
tokens=input.split(/\s*,\s*/);
}
else if(typeof input==='function'){
tokens=[input];
}
else if(Array.isArray(input)){
tokens=input;
}
for (i=0; i < tokens.length; i++){
token=tokens[i];
if(typeof token==='string'){
specs.push(token.charAt(0)==='-' ?
{ field: token.substring(1), order: -1 } :
{ field: token, order: 1 });
}
else if(typeof token==='function'){
specs.push({ func: token });
}}
return specs;
}
function compareByFieldSpecs(obj0, obj1, fieldSpecs){
var i;
var cmp;
for (i=0; i < fieldSpecs.length; i++){
cmp=compareByFieldSpec(obj0, obj1, fieldSpecs[i]);
if(cmp){
return cmp;
}}
return 0;
}
function compareByFieldSpec(obj0, obj1, fieldSpec){
if(fieldSpec.func){
return fieldSpec.func(obj0, obj1);
}
return flexibleCompare(obj0[fieldSpec.field], obj1[fieldSpec.field])
* (fieldSpec.order||1);
}
function flexibleCompare(a, b){
if(!a&&!b){
return 0;
}
if(b==null){
return -1;
}
if(a==null){
return 1;
}
if(typeof a==='string'||typeof b==='string'){
return String(a).localeCompare(String(b));
}
return a - b;
}
function padStart(val, len){
var s=String(val);
return '000'.substr(0, len - s.length) + s;
}
function compareNumbers(a, b){
return a - b;
}
function isInt(n){
return n % 1===0;
}
function computeSmallestCellWidth(cellEl){
var allWidthEl=cellEl.querySelector('.fc-scrollgrid-shrink-frame');
var contentWidthEl=cellEl.querySelector('.fc-scrollgrid-shrink-cushion');
if(!allWidthEl){
throw new Error('needs fc-scrollgrid-shrink-frame className');
}
if(!contentWidthEl){
throw new Error('needs fc-scrollgrid-shrink-cushion className');
}
return cellEl.getBoundingClientRect().width - allWidthEl.getBoundingClientRect().width +
contentWidthEl.getBoundingClientRect().width;
}
var DAY_IDS=['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];
function addWeeks(m, n){
var a=dateToUtcArray(m);
a[2] +=n * 7;
return arrayToUtcDate(a);
}
function addDays(m, n){
var a=dateToUtcArray(m);
a[2] +=n;
return arrayToUtcDate(a);
}
function addMs(m, n){
var a=dateToUtcArray(m);
a[6] +=n;
return arrayToUtcDate(a);
}
function diffWeeks(m0, m1){
return diffDays(m0, m1) / 7;
}
function diffDays(m0, m1){
return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60 * 24);
}
function diffHours(m0, m1){
return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60);
}
function diffMinutes(m0, m1){
return (m1.valueOf() - m0.valueOf()) / (1000 * 60);
}
function diffSeconds(m0, m1){
return (m1.valueOf() - m0.valueOf()) / 1000;
}
function diffDayAndTime(m0, m1){
var m0day=startOfDay(m0);
var m1day=startOfDay(m1);
return {
years: 0,
months: 0,
days: Math.round(diffDays(m0day, m1day)),
milliseconds: (m1.valueOf() - m1day.valueOf()) - (m0.valueOf() - m0day.valueOf())
};}
function diffWholeWeeks(m0, m1){
var d=diffWholeDays(m0, m1);
if(d!==null&&d % 7===0){
return d / 7;
}
return null;
}
function diffWholeDays(m0, m1){
if(timeAsMs(m0)===timeAsMs(m1)){
return Math.round(diffDays(m0, m1));
}
return null;
}
function startOfDay(m){
return arrayToUtcDate([
m.getUTCFullYear(),
m.getUTCMonth(),
m.getUTCDate()
]);
}
function startOfHour(m){
return arrayToUtcDate([
m.getUTCFullYear(),
m.getUTCMonth(),
m.getUTCDate(),
m.getUTCHours()
]);
}
function startOfMinute(m){
return arrayToUtcDate([
m.getUTCFullYear(),
m.getUTCMonth(),
m.getUTCDate(),
m.getUTCHours(),
m.getUTCMinutes()
]);
}
function startOfSecond(m){
return arrayToUtcDate([
m.getUTCFullYear(),
m.getUTCMonth(),
m.getUTCDate(),
m.getUTCHours(),
m.getUTCMinutes(),
m.getUTCSeconds()
]);
}
function weekOfYear(marker, dow, doy){
var y=marker.getUTCFullYear();
var w=weekOfGivenYear(marker, y, dow, doy);
if(w < 1){
return weekOfGivenYear(marker, y - 1, dow, doy);
}
var nextW=weekOfGivenYear(marker, y + 1, dow, doy);
if(nextW >=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;
}
function firstWeekOffset(year, dow, doy){
var fwd=7 + dow - doy;
var fwdlw=(7 + arrayToUtcDate([year, 0, fwd]).getUTCDay() - dow) % 7;
return -fwdlw + fwd - 1;
}
function dateToLocalArray(date){
return [
date.getFullYear(),
date.getMonth(),
date.getDate(),
date.getHours(),
date.getMinutes(),
date.getSeconds(),
date.getMilliseconds()
];
}
function arrayToLocalDate(a){
return new Date(a[0], a[1]||0, a[2]==null ? 1:a[2],
a[3]||0, a[4]||0, a[5]||0);
}
function dateToUtcArray(date){
return [
date.getUTCFullYear(),
date.getUTCMonth(),
date.getUTCDate(),
date.getUTCHours(),
date.getUTCMinutes(),
date.getUTCSeconds(),
date.getUTCMilliseconds()
];
}
function arrayToUtcDate(a){
if(a.length===1){
a=a.concat([0]);
}
return new Date(Date.UTC.apply(Date, a));
}
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;
function mergeProps(propObjs, complexPropsMap){
var dest={};
if(complexPropsMap){
for (var name_1 in complexPropsMap){
var complexObjs=[];
for (var i=propObjs.length - 1; i >=0; i--){
var val=propObjs[i][name_1];
if(typeof val==='object'&&val){
complexObjs.unshift(val);
}
else if(val!==undefined){
dest[name_1]=val;
break;
}}
if(complexObjs.length){
dest[name_1]=mergeProps(complexObjs);
}}
}
for (var i=propObjs.length - 1; i >=0; i--){
var props=propObjs[i];
for (var name_2 in props){
if(!(name_2 in dest)){
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; _i < a_1.length; _i++){
var item=a_1[_i];
hash[item]=true;
}
return hash;
}
function buildHashFromArray(a, func){
var hash={};
for (var i=0; i < a.length; i++){
var tuple=func(a[i], i);
hash[tuple[0]]=tuple[1];
}
return hash;
}
function hashValuesToArray(obj){
var a=[];
for (var key in obj){
a.push(obj[key]);
}
return a;
}
function isPropsEqual(obj0, obj1){
if(obj0===obj1){
return true;
}
for (var key in obj0){
if(hasOwnProperty.call(obj0, key)){
if(!(key in obj1)){
return false;
}}
}
for (var key in obj1){
if(hasOwnProperty.call(obj1, key)){
if(obj0[key]!==obj1[key]){
return false;
}}
}
return true;
}
function getUnequalProps(obj0, obj1){
var keys=[];
for (var key in obj0){
if(hasOwnProperty.call(obj0, key)){
if(!(key in obj1)){
keys.push(key);
}}
}
for (var key in obj1){
if(hasOwnProperty.call(obj1, key)){
if(obj0[key]!==obj1[key]){
keys.push(key);
}}
}
return keys;
}
function compareObjs(oldProps, newProps, equalityFuncs){
if(equalityFuncs===void 0){ equalityFuncs={};}
if(oldProps===newProps){
return true;
}
for (var key in newProps){
if(key in oldProps&&isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) ;
else {
return false;
}}
for (var key in oldProps){
if(!(key in newProps)){
return false;
}}
return true;
}
function isObjValsEqual(val0, val1, comparator){
if(val0===val1||comparator===true){
return true;
}
if(comparator){
return comparator(val0, val1);
}
return false;
}
function collectFromHash(hash, startIndex, endIndex, step){
if(startIndex===void 0){ startIndex=0; }
if(step===void 0){ step=1; }
var res=[];
if(endIndex==null){
endIndex=Object.keys(hash).length;
}
for (var i=startIndex; i < endIndex; i +=step){
var val=hash[i];
if(val!==undefined){
res.push(val);
}}
return res;
}
function parseRecurring(refined, defaultAllDay, dateEnv, recurringTypes){
for (var i=0; i < recurringTypes.length; i++){
var parsed=recurringTypes[i].parse(refined, dateEnv);
if(parsed){
var allDay=refined.allDay;
if(allDay==null){
allDay=defaultAllDay;
if(allDay==null){
allDay=parsed.allDayGuess;
if(allDay==null){
allDay=false;
}}
}
return {
allDay: allDay,
duration: parsed.duration,
typeData: parsed.typeData,
typeId: i
};}}
return null;
}
function expandRecurring(eventStore, framingRange, context){
var dateEnv=context.dateEnv, pluginHooks=context.pluginHooks, options=context.options;
var defs=eventStore.defs, instances=eventStore.instances;
instances=filterHash(instances, function (instance){
return !defs[instance.defId].recurringDef;
});
for (var defId in defs){
var def=defs[defId];
if(def.recurringDef){
var duration=def.recurringDef.duration;
if(!duration){
duration=def.allDay ?
options.defaultAllDayEventDuration :
options.defaultTimedEventDuration;
}
var starts=expandRecurringRanges(def, duration, framingRange, dateEnv, pluginHooks.recurringTypes);
for (var _i=0, starts_1=starts; _i < starts_1.length; _i++){
var start=starts_1[_i];
var instance=createEventInstance(defId, {
start: start,
end: dateEnv.add(start, duration)
});
instances[instance.instanceId]=instance;
}}
}
return { defs: defs, instances: instances };}
function expandRecurringRanges(eventDef, duration, framingRange, dateEnv, recurringTypes){
var typeDef=recurringTypes[eventDef.recurringDef.typeId];
var markers=typeDef.expand (eventDef.recurringDef.typeData, {
start: dateEnv.subtract(framingRange.start, duration),
end: framingRange.end
}, dateEnv);
if(eventDef.allDay){
markers=markers.map(startOfDay);
}
return markers;
}
var INTERNAL_UNITS=['years', 'months', 'days', 'milliseconds'];
var PARSE_RE=/^(-?)(?:(\d+)\.)?(\d+):(\d\d)(?::(\d\d)(?:\.(\d\d\d))?)?/;
function createDuration(input, unit){
var _a;
if(typeof input==='string'){
return parseString(input);
}
else if(typeof input==='object'&&input){
return parseObject(input);
}
else if(typeof input==='number'){
return parseObject((_a={}, _a[unit||'milliseconds']=input, _a));
}else{
return null;
}}
function parseString(s){
var m=PARSE_RE.exec(s);
if(m){
var sign=m[1] ? -1:1;
return {
years: 0,
months: 0,
days: sign * (m[2] ? parseInt(m[2], 10):0),
milliseconds: sign * ((m[3] ? parseInt(m[3], 10):0) * 60 * 60 * 1000 +
(m[4] ? parseInt(m[4], 10):0) * 60 * 1000 +
(m[5] ? parseInt(m[5], 10):0) * 1000 +
(m[6] ? parseInt(m[6], 10):0)
)
};}
return null;
}
function parseObject(obj){
var duration={
years: obj.years||obj.year||0,
months: obj.months||obj.month||0,
days: obj.days||obj.day||0,
milliseconds: (obj.hours||obj.hour||0) * 60 * 60 * 1000 +
(obj.minutes||obj.minute||0) * 60 * 1000 +
(obj.seconds||obj.second||0) * 1000 +
(obj.milliseconds||obj.millisecond||obj.ms||0)
};
var weeks=obj.weeks||obj.week;
if(weeks){
duration.days +=weeks * 7;
duration.specifiedWeeks=true;
}
return duration;
}
function durationsEqual(d0, d1){
return d0.years===d1.years &&
d0.months===d1.months &&
d0.days===d1.days &&
d0.milliseconds===d1.milliseconds;
}
function asCleanDays(dur){
if(!dur.years&&!dur.months&&!dur.milliseconds){
return dur.days;
}
return 0;
}
function addDurations(d0, d1){
return {
years: d0.years + d1.years,
months: d0.months + d1.months,
days: d0.days + d1.days,
milliseconds: d0.milliseconds + d1.milliseconds
};}
function subtractDurations(d1, d0){
return {
years: d1.years - d0.years,
months: d1.months - d0.months,
days: d1.days - d0.days,
milliseconds: d1.milliseconds - d0.milliseconds
};}
function multiplyDuration(d, n){
return {
years: d.years * n,
months: d.months * n,
days: d.days * n,
milliseconds: d.milliseconds * n
};}
function asRoughYears(dur){
return asRoughDays(dur) / 365;
}
function asRoughMonths(dur){
return asRoughDays(dur) / 30;
}
function asRoughDays(dur){
return asRoughMs(dur) / 864e5;
}
function asRoughMinutes(dur){
return asRoughMs(dur) / (1000 * 60);
}
function asRoughSeconds(dur){
return asRoughMs(dur) / 1000;
}
function asRoughMs(dur){
return dur.years * (365 * 864e5) +
dur.months * (30 * 864e5) +
dur.days * 864e5 +
dur.milliseconds;
}
function wholeDivideDurations(numerator, denominator){
var res=null;
for (var i=0; i < INTERNAL_UNITS.length; i++){
var unit=INTERNAL_UNITS[i];
if(denominator[unit]){
var localRes=numerator[unit] / denominator[unit];
if(!isInt(localRes)||(res!==null&&res!==localRes)){
return null;
}
res=localRes;
}
else if(numerator[unit]){
return null;
}}
return res;
}
function greatestDurationDenominator(dur){
var ms=dur.milliseconds;
if(ms){
if(ms % 1000!==0){
return { unit: 'millisecond', value: ms };}
if(ms % (1000 * 60)!==0){
return { unit: 'second', value: ms / 1000 };}
if(ms % (1000 * 60 * 60)!==0){
return { unit: 'minute', value: ms / (1000 * 60) };}
if(ms){
return { unit: 'hour', value: ms / (1000 * 60 * 60) };}}
if(dur.days){
if(dur.specifiedWeeks&&dur.days % 7===0){
return { unit: 'week', value: dur.days / 7 };}
return { unit: 'day', value: dur.days };}
if(dur.months){
return { unit: 'month', value: dur.months };}
if(dur.years){
return { unit: 'year', value: dur.years };}
return { unit: 'millisecond', value: 0 };}
function buildIsoString(marker, timeZoneOffset, stripZeroTime){
if(stripZeroTime===void 0){ stripZeroTime=false; }
var s=marker.toISOString();
s=s.replace('.000', '');
if(stripZeroTime){
s=s.replace('T00:00:00Z', '');
}
if(s.length > 10){
if(timeZoneOffset==null){
s=s.replace('Z', '');
}
else if(timeZoneOffset!==0){
s=s.replace('Z', formatTimeZoneOffset(timeZoneOffset, true));
}}
return s;
}
function formatDayString(marker){
return marker.toISOString().replace(/T.*$/, '');
}
function 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);
}else{
return 'GMT' + sign + hours + (mins ? ':' + padStart(mins, 2):'');
}}
function removeExact(array, exactVal){
var removeCnt=0;
var i=0;
while (i < array.length){
if(array[i]===exactVal){
array.splice(i, 1);
removeCnt++;
}else{
i++;
}}
return removeCnt;
}
function isArraysEqual(a0, a1, equalityFunc){
if(a0===a1){
return true;
}
var len=a0.length;
var i;
if(len!==a1.length){
return false;
}
for (i=0; i < len; i++){
if(!(equalityFunc ? equalityFunc(a0[i], a1[i]):a0[i]===a1[i])){
return false;
}}
return true;
}
function memoize(workerFunc, resEquality, teardownFunc){
var currentArgs;
var currentRes;
return function (){
var newArgs=[];
for (var _i=0; _i < arguments.length; _i++){
newArgs[_i]=arguments[_i];
}
if(!currentArgs){
currentRes=workerFunc.apply(this, newArgs);
}
else if(!isArraysEqual(currentArgs, newArgs)){
if(teardownFunc){
teardownFunc(currentRes);
}
var res=workerFunc.apply(this, newArgs);
if(!resEquality||!resEquality(res, currentRes)){
currentRes=res;
}}
currentArgs=newArgs;
return currentRes;
};}
function memoizeObjArg(workerFunc, resEquality, teardownFunc){
var currentArg;
var currentRes;
return function (newArg){
if(!currentArg){
currentRes=workerFunc.call(this, newArg);
}
else if(!isPropsEqual(currentArg, newArg)){
if(teardownFunc){
teardownFunc(currentRes);
}
var res=workerFunc.call(this, newArg);
if(!resEquality||!resEquality(res, currentRes)){
currentRes=res;
}}
currentArg=newArg;
return currentRes;
};}
function memoizeArraylike(
workerFunc, resEquality, teardownFunc){
var currentArgSets=[];
var currentResults=[];
return function (newArgSets){
var currentLen=currentArgSets.length;
var newLen=newArgSets.length;
var i=0;
for (; i < currentLen; i++){
if(!newArgSets[i]){
if(teardownFunc){
teardownFunc(currentResults[i]);
}}
else if(!isArraysEqual(currentArgSets[i], newArgSets[i])){
if(teardownFunc){
teardownFunc(currentResults[i]);
}
var res=workerFunc.apply(this, newArgSets[i]);
if(!resEquality||!resEquality(res, currentResults[i])){
currentResults[i]=res;
}}
}
for (; i < newLen; i++){
currentResults[i]=workerFunc.apply(this, newArgSets[i]);
}
currentArgSets=newArgSets;
currentResults.splice(newLen);
return currentResults;
};}
function memoizeHashlike(
workerFunc, resEquality, teardownFunc
){
var currentArgHash={};
var currentResHash={};
return function (newArgHash){
var newResHash={};
for (var key in newArgHash){
if(!currentResHash[key]){
newResHash[key]=workerFunc.apply(this, newArgHash[key]);
}
else if(!isArraysEqual(currentArgHash[key], newArgHash[key])){
if(teardownFunc){
teardownFunc(currentResHash[key]);
}
var res=workerFunc.apply(this, newArgHash[key]);
newResHash[key]=(resEquality&&resEquality(res, currentResHash[key]))
? currentResHash[key]
: res;
}else{
newResHash[key]=currentResHash[key];
}}
currentArgHash=newArgHash;
currentResHash=newResHash;
return newResHash;
};}
var EXTENDED_SETTINGS_AND_SEVERITIES={
week: 3,
separator: 0,
omitZeroMinute: 0,
meridiem: 0,
omitCommas: 0
};
var STANDARD_DATE_PROP_SEVERITIES={
timeZoneName: 7,
era: 6,
year: 5,
month: 4,
day: 2,
weekday: 2,
hour: 1,
minute: 1,
second: 1
};
var MERIDIEM_RE=/\s*([ap])\.?m\.?/i;
var COMMA_RE=/,/g;
var MULTI_SPACE_RE=/\s+/g;
var LTR_RE=/\u200e/g;
var UTC_RE=/UTC|GMT/;
var NativeFormatter= (function (){
function NativeFormatter(formatSettings){
var standardDateProps={};
var extendedSettings={};
var severity=0;
for (var name_1 in formatSettings){
if(name_1 in EXTENDED_SETTINGS_AND_SEVERITIES){
extendedSettings[name_1]=formatSettings[name_1];
severity=Math.max(EXTENDED_SETTINGS_AND_SEVERITIES[name_1], severity);
}else{
standardDateProps[name_1]=formatSettings[name_1];
if(name_1 in STANDARD_DATE_PROP_SEVERITIES){
severity=Math.max(STANDARD_DATE_PROP_SEVERITIES[name_1], severity);
}}
}
this.standardDateProps=standardDateProps;
this.extendedSettings=extendedSettings;
this.severity=severity;
this.buildFormattingFunc=memoize(buildFormattingFunc);
}
NativeFormatter.prototype.format=function (date, context){
return this.buildFormattingFunc(this.standardDateProps, this.extendedSettings, context)(date);
};
NativeFormatter.prototype.formatRange=function (start, end, context, betterDefaultSeparator){
var _a=this, standardDateProps=_a.standardDateProps, extendedSettings=_a.extendedSettings;
var diffSeverity=computeMarkerDiffSeverity(start.marker, end.marker, context.calendarSystem);
if(!diffSeverity){
return this.format(start, context);
}
var biggestUnitForPartial=diffSeverity;
if(biggestUnitForPartial > 1 &&
(standardDateProps.year==='numeric'||standardDateProps.year==='2-digit') &&
(standardDateProps.month==='numeric'||standardDateProps.month==='2-digit') &&
(standardDateProps.day==='numeric'||standardDateProps.day==='2-digit')){
biggestUnitForPartial=1;
}
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';
}};
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);
extendedSettings=__assign({}, extendedSettings);
sanitizeSettings(standardDateProps, extendedSettings);
standardDateProps.timeZone='UTC';
var normalFormat=new Intl.DateTimeFormat(context.locale.codes, standardDateProps);
var zeroFormat;
if(extendedSettings.omitZeroMinute){
var zeroProps=__assign({}, standardDateProps);
delete zeroProps.minute;
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){
if(standardDateProps.timeZoneName){
if(!standardDateProps.hour){
standardDateProps.hour='2-digit';
}
if(!standardDateProps.minute){
standardDateProps.minute='2-digit';
}}
if(standardDateProps.timeZoneName==='long'){
standardDateProps.timeZoneName='short';
}
if(extendedSettings.omitZeroMinute&&(standardDateProps.second||standardDateProps.millisecond)){
delete extendedSettings.omitZeroMinute;
}}
function postProcess(s, date, standardDateProps, extendedSettings, context){
s=s.replace(LTR_RE, '');
if(standardDateProps.timeZoneName==='short'){
s=injectTzoStr(s, (context.timeZone==='UTC'||date.timeZoneOffset==null) ?
'UTC' :
formatTimeZoneOffset(date.timeZoneOffset));
}
if(extendedSettings.omitCommas){
s=s.replace(COMMA_RE, '').trim();
}
if(extendedSettings.omitZeroMinute){
s=s.replace(':00', '');
}
if(extendedSettings.meridiem===false){
s=s.replace(MERIDIEM_RE, '').trim();
}
else if(extendedSettings.meridiem==='narrow'){
s=s.replace(MERIDIEM_RE, function (m0, m1){
return m1.toLocaleLowerCase();
});
}
else if(extendedSettings.meridiem==='short'){
s=s.replace(MERIDIEM_RE, function (m0, m1){
return m1.toLocaleLowerCase() + 'm';
});
}
else if(extendedSettings.meridiem==='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;
});
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, ' ');
}
parts.push(locale.simpleNumberFormat.format(num));
if(locale.options.direction==='rtl'){
parts.reverse();
}
return parts.join('');
}
function computeMarkerDiffSeverity(d0, d1, ca){
if(ca.getMarkerYear(d0)!==ca.getMarkerYear(d1)){
return 5;
}
if(ca.getMarkerMonth(d0)!==ca.getMarkerMonth(d1)){
return 4;
}
if(ca.getMarkerDay(d0)!==ca.getMarkerDay(d1)){
return 2;
}
if(timeAsMs(d0)!==timeAsMs(d1)){
return 1;
}
return 0;
}
function computePartialFormattingOptions(options, biggestUnit){
var partialOptions={};
for (var name_2 in options){
if(!(name_2 in STANDARD_DATE_PROP_SEVERITIES) ||
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 < full0.length){
var found0=full0.indexOf(partial0, i0);
if(found0===-1){
break;
}
var before0=full0.substr(0, found0);
i0=found0 + partial0.length;
var after0=full0.substr(i0);
var i1=0;
while (i1 < full1.length){
var found1=full1.indexOf(partial1, i1);
if(found1===-1){
break;
}
var before1=full1.substr(0, found1);
i1=found1 + partial1.length;
var after1=full1.substr(i1);
if(before0===before1&&after0===after1){
return {
before: before0,
after: after0
};}}
}
return null;
}
function expandZonedMarker(dateInfo, calendarSystem){
var a=calendarSystem.markerToArray(dateInfo.marker);
return {
marker: dateInfo.marker,
timeZoneOffset: dateInfo.timeZoneOffset,
array: a,
year: a[0],
month: a[1],
day: a[2],
hour: a[3],
minute: a[4],
second: a[5],
millisecond: a[6]
};}
function createVerboseFormattingArg(start, end, context, betterDefaultSeparator){
var startInfo=expandZonedMarker(start, context.calendarSystem);
var endInfo=end ? expandZonedMarker(end, context.calendarSystem):null;
return {
date: startInfo,
start: startInfo,
end: endInfo,
timeZone: context.timeZone,
localeCodes: context.locale.codes,
defaultSeparator: betterDefaultSeparator||context.defaultSeparator
};}
var CmdFormatter= (function (){
function CmdFormatter(cmdStr){
this.cmdStr=cmdStr;
}
CmdFormatter.prototype.format=function (date, context, betterDefaultSeparator){
return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(date, null, context, betterDefaultSeparator));
};
CmdFormatter.prototype.formatRange=function (start, end, context, betterDefaultSeparator){
return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(start, end, context, betterDefaultSeparator));
};
return CmdFormatter;
}());
var FuncFormatter= (function (){
function FuncFormatter(func){
this.func=func;
}
FuncFormatter.prototype.format=function (date, context, betterDefaultSeparator){
return this.func(createVerboseFormattingArg(date, null, context, betterDefaultSeparator));
};
FuncFormatter.prototype.formatRange=function (start, end, context, betterDefaultSeparator){
return this.func(createVerboseFormattingArg(start, end, context, betterDefaultSeparator));
};
return FuncFormatter;
}());
function createFormatter(input){
if(typeof input==='object'&&input){
return new NativeFormatter(input);
}
else if(typeof input==='string'){
return new CmdFormatter(input);
}
else if(typeof input==='function'){
return new FuncFormatter(input);
}}
var BASE_OPTION_REFINERS={
navLinkDayClick: identity,
navLinkWeekClick: identity,
duration: createDuration,
bootstrapFontAwesome: identity,
buttonIcons: identity,
customButtons: identity,
defaultAllDayEventDuration: createDuration,
defaultTimedEventDuration: createDuration,
nextDayThreshold: createDuration,
scrollTime: createDuration,
slotMinTime: createDuration,
slotMaxTime: createDuration,
dayPopoverFormat: createFormatter,
slotDuration: createDuration,
snapDuration: createDuration,
headerToolbar: identity,
footerToolbar: identity,
defaultRangeSeparator: String,
titleRangeSeparator: String,
forceEventDuration: Boolean,
dayHeaders: Boolean,
dayHeaderFormat: createFormatter,
dayHeaderClassNames: identity,
dayHeaderContent: identity,
dayHeaderDidMount: identity,
dayHeaderWillUnmount: identity,
dayCellClassNames: identity,
dayCellContent: identity,
dayCellDidMount: identity,
dayCellWillUnmount: identity,
initialView: String,
aspectRatio: Number,
weekends: Boolean,
weekNumberCalculation: identity,
weekNumbers: Boolean,
weekNumberClassNames: identity,
weekNumberContent: identity,
weekNumberDidMount: identity,
weekNumberWillUnmount: identity,
editable: Boolean,
viewClassNames: identity,
viewDidMount: identity,
viewWillUnmount: identity,
nowIndicator: Boolean,
nowIndicatorClassNames: identity,
nowIndicatorContent: identity,
nowIndicatorDidMount: identity,
nowIndicatorWillUnmount: identity,
showNonCurrentDates: Boolean,
lazyFetching: Boolean,
startParam: String,
endParam: String,
timeZoneParam: String,
timeZone: String,
locales: identity,
locale: identity,
themeSystem: String,
dragRevertDuration: Number,
dragScroll: Boolean,
allDayMaintainDuration: Boolean,
unselectAuto: Boolean,
dropAccept: identity,
eventOrder: parseFieldSpecs,
handleWindowResize: Boolean,
windowResizeDelay: Number,
longPressDelay: Number,
eventDragMinDistance: Number,
expandRows: Boolean,
height: identity,
contentHeight: identity,
direction: String,
weekNumberFormat: createFormatter,
eventResizableFromStart: Boolean,
displayEventTime: Boolean,
displayEventEnd: Boolean,
weekText: String,
progressiveEventRendering: Boolean,
businessHours: identity,
initialDate: identity,
now: identity,
eventDataTransform: identity,
stickyHeaderDates: identity,
stickyFooterScrollbar: identity,
viewHeight: identity,
defaultAllDay: Boolean,
eventSourceFailure: identity,
eventSourceSuccess: identity,
eventDisplay: String,
eventStartEditable: Boolean,
eventDurationEditable: Boolean,
eventOverlap: identity,
eventConstraint: identity,
eventAllow: identity,
eventBackgroundColor: String,
eventBorderColor: String,
eventTextColor: String,
eventColor: String,
eventClassNames: identity,
eventContent: identity,
eventDidMount: identity,
eventWillUnmount: identity,
selectConstraint: identity,
selectOverlap: identity,
selectAllow: identity,
droppable: Boolean,
unselectCancel: String,
slotLabelFormat: identity,
slotLaneClassNames: identity,
slotLaneContent: identity,
slotLaneDidMount: identity,
slotLaneWillUnmount: identity,
slotLabelClassNames: identity,
slotLabelContent: identity,
slotLabelDidMount: identity,
slotLabelWillUnmount: identity,
dayMaxEvents: identity,
dayMaxEventRows: identity,
dayMinWidth: Number,
slotLabelInterval: createDuration,
allDayText: String,
allDayClassNames: identity,
allDayContent: identity,
allDayDidMount: identity,
allDayWillUnmount: identity,
slotMinWidth: Number,
navLinks: Boolean,
eventTimeFormat: createFormatter,
rerenderDelay: Number,
moreLinkText: identity,
selectMinDistance: Number,
selectable: Boolean,
selectLongPressDelay: Number,
eventLongPressDelay: Number,
selectMirror: Boolean,
eventMinHeight: Number,
slotEventOverlap: Boolean,
plugins: identity,
firstDay: Number,
dayCount: Number,
dateAlignment: String,
dateIncrement: createDuration,
hiddenDays: identity,
monthMode: Boolean,
fixedWeekCount: Boolean,
validRange: identity,
visibleRange: identity,
titleFormat: identity,
noEventsText: String
};
var BASE_OPTION_DEFAULTS={
eventDisplay: 'auto',
defaultRangeSeparator: ' - ',
titleRangeSeparator: ' \u2013 ',
defaultTimedEventDuration: '01:00:00',
defaultAllDayEventDuration: { day: 1 },
forceEventDuration: false,
nextDayThreshold: '00:00:00',
dayHeaders: true,
initialView: '',
aspectRatio: 1.35,
headerToolbar: {
start: 'title',
center: '',
end: 'today prev,next'
},
weekends: true,
weekNumbers: false,
weekNumberCalculation: 'local',
editable: false,
nowIndicator: false,
scrollTime: '06:00:00',
slotMinTime: '00:00:00',
slotMaxTime: '24:00:00',
showNonCurrentDates: true,
lazyFetching: true,
startParam: 'start',
endParam: 'end',
timeZoneParam: 'timeZone',
timeZone: 'local',
locales: [],
locale: '',
themeSystem: 'standard',
dragRevertDuration: 500,
dragScroll: true,
allDayMaintainDuration: false,
unselectAuto: true,
dropAccept: '*',
eventOrder: 'start,-duration,allDay,title',
dayPopoverFormat: { month: 'long', day: 'numeric', year: 'numeric' },
handleWindowResize: true,
windowResizeDelay: 100,
longPressDelay: 1000,
eventDragMinDistance: 5,
expandRows: false,
navLinks: false,
selectable: false
};
var CALENDAR_LISTENER_REFINERS={
datesSet: identity,
eventsSet: identity,
eventAdd: identity,
eventChange: identity,
eventRemove: identity,
windowResize: identity,
eventClick: identity,
eventMouseEnter: identity,
eventMouseLeave: identity,
select: identity,
unselect: identity,
loading: identity,
_unmount: identity,
_beforeprint: identity,
_afterprint: identity,
_noEventDrop: identity,
_noEventResize: identity,
_resize: identity,
_scrollRequest: identity
};
var CALENDAR_OPTION_REFINERS={
buttonText: identity,
views: identity,
plugins: identity,
initialEvents: identity,
events: identity,
eventSources: identity
};
var COMPLEX_OPTION_COMPARATORS={
headerToolbar: isBoolComplexEqual,
footerToolbar: isBoolComplexEqual,
buttonText: isBoolComplexEqual,
buttonIcons: isBoolComplexEqual
};
function isBoolComplexEqual(a, b){
if(typeof a==='object'&&typeof b==='object'&&a && b){
return isPropsEqual(a, b);
}else{
return a===b;
}}
var VIEW_OPTION_REFINERS={
type: String,
component: identity,
buttonText: String,
buttonTextKey: String,
dateProfileGeneratorClass: identity,
usesMinMaxTime: Boolean,
classNames: identity,
content: identity,
didMount: identity,
willUnmount: identity
};
function mergeRawOptions(optionSets){
return mergeProps(optionSets, COMPLEX_OPTION_COMPARATORS);
}
function refineProps(input, refiners){
var refined={};
var extra={};
for (var propName in refiners){
if(propName in input){
refined[propName]=refiners[propName](input[propName]);
}}
for (var propName in input){
if(!(propName in refiners)){
extra[propName]=input[propName];
}}
return { refined: refined, extra: extra };}
function identity(raw){
return raw;
}
function parseEvents(rawEvents, eventSource, context, allowOpenRange){
var eventStore=createEmptyEventStore();
var eventRefiners=buildEventRefiners(context);
for (var _i=0, rawEvents_1=rawEvents; _i < rawEvents_1.length; _i++){
var rawEvent=rawEvents_1[_i];
var tuple=parseEvent(rawEvent, eventSource, context, allowOpenRange, eventRefiners);
if(tuple){
eventTupleToStore(tuple, eventStore);
}}
return eventStore;
}
function eventTupleToStore(tuple, eventStore){
if(eventStore===void 0){ eventStore=createEmptyEventStore(); }
eventStore.defs[tuple.def.defId]=tuple.def;
if(tuple.instance){
eventStore.instances[tuple.instance.instanceId]=tuple.instance;
}
return eventStore;
}
function getRelevantEvents(eventStore, instanceId){
var instance=eventStore.instances[instanceId];
if(instance){
var def_1=eventStore.defs[instance.defId];
var newStore=filterEventStoreDefs(eventStore, function (lookDef){
return isEventDefsGrouped(def_1, lookDef);
});
newStore.defs[def_1.defId]=def_1;
newStore.instances[instance.instanceId]=instance;
return newStore;
}
return createEmptyEventStore();
}
function isEventDefsGrouped(def0, def1){
return Boolean(def0.groupId&&def0.groupId===def1.groupId);
}
function createEmptyEventStore(){
return { defs: {}, instances: {}};}
function mergeEventStores(store0, store1){
return {
defs: __assign(__assign({}, store0.defs), store1.defs),
instances: __assign(__assign({}, store0.instances), store1.instances)
};}
function filterEventStoreDefs(eventStore, filterFunc){
var defs=filterHash(eventStore.defs, filterFunc);
var instances=filterHash(eventStore.instances, function (instance){
return defs[instance.defId];
});
return { defs: defs, instances: instances };}
function excludeSubEventStore(master, sub){
var defs=master.defs, instances=master.instances;
var filteredDefs={};
var filteredInstances={};
for (var defId in defs){
if(!sub.defs[defId]){
filteredDefs[defId]=defs[defId];
}}
for (var instanceId in instances){
if(!sub.instances[instanceId] &&
filteredDefs[instances[instanceId].defId]
){
filteredInstances[instanceId]=instances[instanceId];
}}
return {
defs: filteredDefs,
instances: filteredInstances
};}
function normalizeConstraint(input, context){
if(Array.isArray(input)){
return parseEvents(input, null, context, true);
}
else if(typeof input==='object'&&input){
return parseEvents([input], null, context, true);
}
else if(input!=null){
return String(input);
}else{
return null;
}}
function parseClassNames(raw){
if(Array.isArray(raw)){
return raw;
}
else if(typeof raw==='string'){
return raw.split(/\s+/);
}else{
return [];
}}
var EVENT_UI_REFINERS={
display: String,
editable: Boolean,
startEditable: Boolean,
durationEditable: Boolean,
constraint: identity,
overlap: identity,
allow: identity,
className: parseClassNames,
classNames: parseClassNames,
color: String,
backgroundColor: String,
borderColor: String,
textColor: String
};
function createEventUi(refined, context){
var constraint=normalizeConstraint(refined.constraint, context);
return {
display: refined.display||null,
startEditable: refined.startEditable!=null ? refined.startEditable:refined.editable,
durationEditable: refined.durationEditable!=null ? refined.durationEditable:refined.editable,
constraints: constraint!=null ? [constraint]:[],
overlap: refined.overlap!=null ? refined.overlap:null,
allows: refined.allow!=null ? [refined.allow]:[],
backgroundColor: refined.backgroundColor||refined.color||'',
borderColor: refined.borderColor||refined.color||'',
textColor: refined.textColor||'',
classNames: (refined.className||[]).concat(refined.classNames||[])
};}
function combineEventUis(uis){
return uis.reduce(combineTwoEventUis, EMPTY_EVENT_UI);
}
function combineTwoEventUis(item0, item1){
return {
display: item1.display!=null ? item1.display:item0.display,
startEditable: item1.startEditable!=null ? item1.startEditable:item0.startEditable,
durationEditable: item1.durationEditable!=null ? item1.durationEditable:item0.durationEditable,
constraints: item0.constraints.concat(item1.constraints),
overlap: typeof item1.overlap==='boolean' ? item1.overlap:item0.overlap,
allows: item0.allows.concat(item1.allows),
backgroundColor: item1.backgroundColor||item0.backgroundColor,
borderColor: item1.borderColor||item0.borderColor,
textColor: item1.textColor||item0.textColor,
classNames: item0.classNames.concat(item1.classNames)
};}
var EMPTY_EVENT_UI={
display: null,
startEditable: null,
durationEditable: null,
constraints: [],
overlap: null,
allows: [],
backgroundColor: '',
borderColor: '',
textColor: '',
classNames: []
};
var EVENT_NON_DATE_REFINERS={
id: String,
groupId: String,
title: String,
url: String
};
var EVENT_DATE_REFINERS={
start: identity,
end: identity,
date: identity,
allDay: Boolean
};
var EVENT_REFINERS=__assign(__assign(__assign({}, EVENT_NON_DATE_REFINERS), EVENT_DATE_REFINERS), { extendedProps: identity });
function parseEvent(raw, eventSource, context, allowOpenRange, refiners){
if(refiners===void 0){ refiners=buildEventRefiners(context); }
var _a=refineEventDef(raw, context, refiners), refined=_a.refined, extra=_a.extra;
var defaultAllDay=computeIsDefaultAllDay(eventSource, context);
var recurringRes=parseRecurring(refined, defaultAllDay, context.dateEnv, context.pluginHooks.recurringTypes);
if(recurringRes){
var def=parseEventDef(refined, extra, eventSource ? eventSource.sourceId:'', recurringRes.allDay, Boolean(recurringRes.duration), context);
def.recurringDef={
typeId: recurringRes.typeId,
typeData: recurringRes.typeData,
duration: recurringRes.duration
};
return { def: def, instance: null };}else{
var singleRes=parseSingle(refined, defaultAllDay, context, allowOpenRange);
if(singleRes){
var def=parseEventDef(refined, extra, eventSource ? eventSource.sourceId:'', singleRes.allDay, singleRes.hasEnd, context);
var instance=createEventInstance(def.defId, singleRes.range, singleRes.forcedStartTzo, singleRes.forcedEndTzo);
return { def: def, instance: instance };}}
return null;
}
function refineEventDef(raw, context, refiners){
if(refiners===void 0){ refiners=buildEventRefiners(context); }
return refineProps(raw, refiners);
}
function buildEventRefiners(context){
return __assign(__assign(__assign({}, EVENT_UI_REFINERS), EVENT_REFINERS), context.pluginHooks.eventRefiners);
}
function parseEventDef(refined, extra, sourceId, allDay, hasEnd, context){
var def={
title: refined.title||'',
groupId: refined.groupId||'',
publicId: refined.id||'',
url: refined.url||'',
recurringDef: null,
defId: guid(),
sourceId: sourceId,
allDay: allDay,
hasEnd: hasEnd,
ui: createEventUi(refined, context),
extendedProps: __assign(__assign({}, (refined.extendedProps||{})), extra)
};
for (var _i=0, _a=context.pluginHooks.eventDefMemberAdders; _i < _a.length; _i++){
var memberAdder=_a[_i];
__assign(def, memberAdder(refined));
}
Object.freeze(def.ui.classNames);
Object.freeze(def.extendedProps);
return def;
}
function parseSingle(refined, defaultAllDay, context, allowOpenRange){
var allDay=refined.allDay;
var startMeta;
var startMarker=null;
var hasEnd=false;
var endMeta;
var endMarker=null;
var startInput=refined.start!=null ? refined.start:refined.date;
startMeta=context.dateEnv.createMarkerMeta(startInput);
if(startMeta){
startMarker=startMeta.marker;
}
else if(!allowOpenRange){
return null;
}
if(refined.end!=null){
endMeta=context.dateEnv.createMarkerMeta(refined.end);
}
if(allDay==null){
if(defaultAllDay!=null){
allDay=defaultAllDay;
}else{
allDay=(!startMeta||startMeta.isTimeUnspecified) &&
(!endMeta||endMeta.isTimeUnspecified);
}}
if(allDay&&startMarker){
startMarker=startOfDay(startMarker);
}
if(endMeta){
endMarker=endMeta.marker;
if(allDay){
endMarker=startOfDay(endMarker);
}
if(startMarker&&endMarker <=startMarker){
endMarker=null;
}}
if(endMarker){
hasEnd=true;
}
else if(!allowOpenRange){
hasEnd=context.options.forceEventDuration||false;
endMarker=context.dateEnv.add(startMarker, allDay ?
context.options.defaultAllDayEventDuration :
context.options.defaultTimedEventDuration);
}
return {
allDay: allDay,
hasEnd: hasEnd,
range: { start: startMarker, end: endMarker },
forcedStartTzo: startMeta ? startMeta.forcedTzo:null,
forcedEndTzo: endMeta ? endMeta.forcedTzo:null
};}
function computeIsDefaultAllDay(eventSource, context){
var res=null;
if(eventSource){
res=eventSource.defaultAllDay;
}
if(res==null){
res=context.options.defaultAllDay;
}
return res;
}
function computeAlignedDayRange(timedRange){
var dayCnt=Math.floor(diffDays(timedRange.start, timedRange.end))||1;
var start=startOfDay(timedRange.start);
var end=addDays(start, dayCnt);
return { start: start, end: end };}
function computeVisibleDayRange(timedRange, nextDayThreshold){
if(nextDayThreshold===void 0){ nextDayThreshold=createDuration(0); }
var startDay=null;
var endDay=null;
if(timedRange.end){
endDay=startOfDay(timedRange.end);
var endTimeMS=timedRange.end.valueOf() - endDay.valueOf();
if(endTimeMS&&endTimeMS >=asRoughMs(nextDayThreshold)){
endDay=addDays(endDay, 1);
}}
if(timedRange.start){
startDay=startOfDay(timedRange.start);
if(endDay&&endDay <=startDay){
endDay=addDays(startDay, 1);
}}
return { start: startDay, end: endDay };}
function isMultiDayRange(range){
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');
}
else if(largeUnit==='month'){
return createDuration(dateEnv.diffWholeMonths(date0, date1), 'month');
}else{
return diffDayAndTime(date0, date1);
}}
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&&end < start){
return null;
}
return { start: start, end: end };}
function invertRanges(ranges, constraintRange){
var invertedRanges=[];
var start=constraintRange.start;
var i;
var dateRange;
ranges.sort(compareRanges);
for (i=0; i < ranges.length; i++){
dateRange=ranges[i];
if(dateRange.start > start){
invertedRanges.push({ start: start, end: dateRange.start });
}
if(dateRange.end > start){
start=dateRange.end;
}}
if(start < constraintRange.end){
invertedRanges.push({ start: start, end: constraintRange.end });
}
return invertedRanges;
}
function compareRanges(range0, range1){
return range0.start.valueOf() - range1.start.valueOf();
}
function intersectRanges(range0, range1){
var start=range0.start;
var end=range0.end;
var newRange=null;
if(range1.start!==null){
if(start===null){
start=range1.start;
}else{
start=new Date(Math.max(start.valueOf(), range1.start.valueOf()));
}}
if(range1.end!=null){
if(end===null){
end=range1.end;
}else{
end=new Date(Math.min(end.valueOf(), range1.end.valueOf()));
}}
if(start===null||end===null||start < end){
newRange={ start: start, end: end };}
return newRange;
}
function rangesEqual(range0, range1){
return (range0.start===null ? null:range0.start.valueOf())===(range1.start===null ? null:range1.start.valueOf()) &&
(range0.end===null ? null:range0.end.valueOf())===(range1.end===null ? null:range1.end.valueOf());
}
function rangesIntersect(range0, range1){
return (range0.end===null||range1.start===null||range0.end > range1.start) &&
(range0.start===null||range1.end===null||range0.start < range1.end);
}
function rangeContainsRange(outerRange, innerRange){
return (outerRange.start===null||(innerRange.start!==null&&innerRange.start >=outerRange.start)) &&
(outerRange.end===null||(innerRange.end!==null&&innerRange.end <=outerRange.end));
}
function rangeContainsMarker(range, date){
return (range.start===null||date >=range.start) &&
(range.end===null||date < range.end);
}
function constrainMarkerToRange(date, range){
if(range.start!=null&&date < range.start){
return range.start;
}
if(range.end!=null&&date >=range.end){
return new Date(range.end.valueOf() - 1);
}
return date;
}
function 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){
var ranges=inverseBgByGroupId[groupId];
var invertedRanges=invertRanges(ranges, framingRange);
for (var _i=0, invertedRanges_1=invertedRanges; _i < invertedRanges_1.length; _i++){
var invertedRange=invertedRanges_1[_i];
var def=defByGroupId[groupId];
var ui=eventUis[def.defId];
bgRanges.push({
def: def,
ui: ui,
instance: null,
range: invertedRange,
isStart: false,
isEnd: false
});
}}
for (var defId in inverseBgByDefId){
var ranges=inverseBgByDefId[defId];
var invertedRanges=invertRanges(ranges, framingRange);
for (var _a=0, invertedRanges_2=invertedRanges; _a < invertedRanges_2.length; _a++){
var invertedRange=invertedRanges_2[_a];
bgRanges.push({
def: eventStore.defs[defId],
ui: eventUis[defId],
instance: null,
range: invertedRange,
isStart: false,
isEnd: false
});
}}
return { bg: bgRanges, fg: fgRanges };}
function hasBgRendering(def){
return def.ui.display==='background'||def.ui.display==='inverse-background';
}
function setElSeg(el, seg){
el.fcSeg=seg;
}
function getElSeg(el){
return el.fcSeg ||
el.parentNode.fcSeg ||
null;
}
function compileEventUis(eventDefs, eventUiBases){
return mapHash(eventDefs, function (eventDef){
return compileEventUi(eventDef, eventUiBases);
});
}
function compileEventUi(eventDef, eventUiBases){
var uis=[];
if(eventUiBases['']){
uis.push(eventUiBases['']);
}
if(eventUiBases[eventDef.defId]){
uis.push(eventUiBases[eventDef.defId]);
}
uis.push(eventDef.ui);
return combineEventUis(uis);
}
function sortEventSegs(segs, eventOrderSpecs){
var objs=segs.map(buildSegCompareObj);
objs.sort(function (obj0, obj1){
return compareByFieldSpecs(obj0, obj1, eventOrderSpecs);
});
return objs.map(function (c){
return c._seg;
});
}
function buildSegCompareObj(seg){
var eventRange=seg.eventRange;
var eventDef=eventRange.def;
var range=eventRange.instance ? eventRange.instance.range:eventRange.range;
var start=range.start ? range.start.valueOf():0;
var end=range.end ? range.end.valueOf():0; // "
return __assign(__assign(__assign({}, eventDef.extendedProps), eventDef), { id: eventDef.publicId, start: start,
end: end, duration: end - start, allDay: Number(eventDef.allDay), _seg: seg
});
}
function computeSegDraggable(seg, context){
var pluginHooks=context.pluginHooks;
var transformers=pluginHooks.isDraggableTransformers;
var _a=seg.eventRange, def=_a.def, ui=_a.ui;
var val=ui.startEditable;
for (var _i=0, transformers_1=transformers; _i < transformers_1.length; _i++){
var transformer=transformers_1[_i];
val=transformer(val, def, ui, context);
}
return val;
}
function computeSegStartResizable(seg, context){
return seg.isStart&&seg.eventRange.ui.durationEditable&&context.options.eventResizableFromStart;
}
function computeSegEndResizable(seg, context){
return seg.isEnd&&seg.eventRange.ui.durationEditable;
}
function buildSegTimeText(seg, timeFormat, context, defaultDisplayEventTime,
defaultDisplayEventEnd,
startOverride, endOverride){
var dateEnv=context.dateEnv, options=context.options;
var displayEventTime=options.displayEventTime, displayEventEnd=options.displayEventEnd;
var eventDef=seg.eventRange.def;
var eventInstance=seg.eventRange.instance;
if(displayEventTime==null){
displayEventTime=defaultDisplayEventTime!==false;
}
if(displayEventEnd==null){
displayEventEnd=defaultDisplayEventEnd!==false;
}
if(displayEventTime&&!eventDef.allDay&&(seg.isStart||seg.isEnd)){
var segStart=startOverride||(seg.isStart ? eventInstance.range.start:(seg.start||seg.eventRange.range.start));
var segEnd=endOverride||(seg.isEnd ? eventInstance.range.end:(seg.end||seg.eventRange.range.end));
if(displayEventEnd&&eventDef.hasEnd){
return dateEnv.formatRange(segStart, segEnd, timeFormat, {
forcedStartTzo: startOverride ? null:eventInstance.forcedStartTzo,
forcedEndTzo: endOverride ? null:eventInstance.forcedEndTzo
});
}else{
return dateEnv.format(segStart, timeFormat, {
forcedTzo: startOverride ? null:eventInstance.forcedStartTzo
});
}}
return '';
}
function getSegMeta(seg, todayRange, nowDate){
var segRange=seg.eventRange.range;
return {
isPast: segRange.end < (nowDate||todayRange.start),
isFuture: segRange.start >=(nowDate||todayRange.end),
isToday: todayRange&&rangeContainsMarker(todayRange, segRange.start)
};}
function getEventClassNames(props){
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();
}
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;
}else{
range.end=dateEnv.add(range.start, defaultDuration);
}}
return span;
}
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);
}
function isSpanPropsEqual(span0, span1){
for (var propName in span1){
if(propName!=='range'&&propName!=='allDay'){
if(span0[propName]!==span1[propName]){
return false;
}}
}
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, '',
dateSpan.allDay, true,
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;
}
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;
}
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];
dest.instances[instanceId]=applyMutationToEventInstance(instance, def, eventConfigs[instance.defId], mutation, context);
}
return dest;
}
function applyMutationToEventDef(eventDef, eventConfig, mutation, context){
var standardProps=mutation.standardProps||{};
if(standardProps.hasEnd==null &&
eventConfig.durationEditable &&
(mutation.startDelta||mutation.endDelta)){
standardProps.hasEnd=true;
}
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,
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)
};}
if(eventDef.allDay){
copy.range={
start: startOfDay(copy.range.start),
end: startOfDay(copy.range.end)
};}
if(copy.range.end < copy.range.start){
copy.range.end=getDefaultEventEnd(eventDef.allDay, copy.range.start, context);
}
return copy;
}
var ViewApi= (function (){
function ViewApi(type, getCurrentData, dateEnv){
this.type=type;
this.getCurrentData=getCurrentData;
this.dateEnv=dateEnv;
}
Object.defineProperty(ViewApi.prototype, "calendar", {
get: function (){
return this.getCurrentData().calendarApi;
},
enumerable: false,
configurable: true
});
Object.defineProperty(ViewApi.prototype, "title", {
get: function (){
return this.getCurrentData().viewTitle;
},
enumerable: false,
configurable: true
});
Object.defineProperty(ViewApi.prototype, "activeStart", {
get: function (){
return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start);
},
enumerable: false,
configurable: true
});
Object.defineProperty(ViewApi.prototype, "activeEnd", {
get: function (){
return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end);
},
enumerable: false,
configurable: true
});
Object.defineProperty(ViewApi.prototype, "currentStart", {
get: function (){
return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start);
},
enumerable: false,
configurable: true
});
Object.defineProperty(ViewApi.prototype, "currentEnd", {
get: function (){
return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end);
},
enumerable: false,
configurable: true
});
ViewApi.prototype.getOption=function (name){
return this.getCurrentData().options[name];
};
return ViewApi;
}());
var EVENT_SOURCE_REFINERS={
id: String,
defaultAllDay: Boolean,
url: String,
events: identity,
eventDataTransform: identity,
success: identity,
failure: identity,
};
function parseEventSource(raw, context, refiners){
if(refiners===void 0){ refiners=buildEventSourceRefiners(context); }
var rawObj;
if(typeof raw==='string'){
rawObj={ url: raw };}
else if(typeof raw==='function'||Array.isArray(raw)){
rawObj={ events: raw };}
else if(typeof raw==='object'&&raw){
rawObj=raw;
}
if(rawObj){
var _a=refineProps(rawObj, refiners), refined=_a.refined, extra=_a.extra;
var metaRes=buildEventSourceMeta(refined, context);
if(metaRes){
return {
_raw: raw,
isFetching: false,
latestFetchId: '',
fetchRange: null,
defaultAllDay: refined.defaultAllDay,
eventDataTransform: refined.eventDataTransform,
success: refined.success,
failure: refined.failure,
publicId: refined.id||'',
sourceId: guid(),
sourceDefId: metaRes.sourceDefId,
meta: metaRes.meta,
ui: createEventUi(refined, context),
extendedProps: extra
};}}
return null;
}
function buildEventSourceRefiners(context){
return __assign(__assign(__assign({}, EVENT_UI_REFINERS), EVENT_SOURCE_REFINERS), context.pluginHooks.eventSourceRefiners);
}
function buildEventSourceMeta(raw, context){
var defs=context.pluginHooks.eventSourceDefs;
for (var i=defs.length - 1; i >=0; i--){
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;
if(initialDateInput!=null){
return dateEnv.createMarker(initialDateInput);
}else{
return getNow(options.now, dateEnv);
}}
function getNow(nowInput, dateEnv){
if(typeof nowInput==='function'){
nowInput=nowInput();
}
if(nowInput==null){
return dateEnv.createNowMarker();
}
return dateEnv.createMarker(nowInput);
}
var CalendarApi= (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 (){ return this.getCurrentData().viewApi; }
,
enumerable: false,
configurable: true
});
CalendarApi.prototype.batchRendering=function (callback){
callback();
};
CalendarApi.prototype.updateSize=function (){
this.trigger('_resize', true);
};
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);
};
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);
};
CalendarApi.prototype.trigger=function (handlerName){
var _a;
var args=[];
for (var _i=1; _i < arguments.length; _i++){
args[_i - 1]=arguments[_i];
}
(_a=this.currentDataManager.emitter).trigger.apply(_a, __spreadArrays([handlerName], args));
};
CalendarApi.prototype.changeView=function (viewType, dateOrRange){
var _this=this;
this.batchRendering(function (){
_this.unselect();
if(dateOrRange){
if(dateOrRange.start&&dateOrRange.end){
_this.dispatch({
type: 'CHANGE_VIEW_TYPE',
viewType: viewType,
});
_this.dispatch({
type: 'SET_OPTION',
optionName: 'visibleRange',
rawOptionValue: dateOrRange
});
}else{
var dateEnv=_this.getCurrentData().dateEnv;
_this.dispatch({
type: 'CHANGE_VIEW_TYPE',
viewType: viewType,
dateMarker: dateEnv.createMarker(dateOrRange)
});
}}else{
_this.dispatch({
type: 'CHANGE_VIEW_TYPE',
viewType: viewType
});
}});
};
CalendarApi.prototype.zoomTo=function (dateMarker, viewType){
var state=this.getCurrentData();
var spec;
viewType=viewType||'day';
spec=state.viewSpecs[viewType]||this.getUnitViewSpec(viewType);
this.unselect();
if(spec){
this.dispatch({
type: 'CHANGE_VIEW_TYPE',
viewType: spec.type,
dateMarker: dateMarker
});
}else{
this.dispatch({
type: 'CHANGE_DATE',
dateMarker: dateMarker
});
}};
CalendarApi.prototype.getUnitViewSpec=function (unit){
var _a=this.getCurrentData(), viewSpecs=_a.viewSpecs, toolbarConfig=_a.toolbarConfig;
var viewTypes=[].concat(toolbarConfig.viewsWithButtons);
var i;
var spec;
for (var viewType in viewSpecs){
viewTypes.push(viewType);
}
for (i=0; i < viewTypes.length; i++){
spec=viewSpecs[viewTypes[i]];
if(spec){
if(spec.singleUnit===unit){
return spec;
}}
}};
CalendarApi.prototype.prev=function (){
this.unselect();
this.dispatch({ type: 'PREV' });
};
CalendarApi.prototype.next=function (){
this.unselect();
this.dispatch({ type: 'NEXT' });
};
CalendarApi.prototype.prevYear=function (){
var state=this.getCurrentData();
this.unselect();
this.dispatch({
type: 'CHANGE_DATE',
dateMarker: state.dateEnv.addYears(state.currentDate, -1)
});
};
CalendarApi.prototype.nextYear=function (){
var state=this.getCurrentData();
this.unselect();
this.dispatch({
type: 'CHANGE_DATE',
dateMarker: state.dateEnv.addYears(state.currentDate, 1)
});
};
CalendarApi.prototype.today=function (){
var state=this.getCurrentData();
this.unselect();
this.dispatch({
type: 'CHANGE_DATE',
dateMarker: getNow(state.calendarOptions.now, state.dateEnv)
});
};
CalendarApi.prototype.gotoDate=function (zonedDateInput){
var state=this.getCurrentData();
this.unselect();
this.dispatch({
type: 'CHANGE_DATE',
dateMarker: state.dateEnv.createMarker(zonedDateInput)
});
};
CalendarApi.prototype.incrementDate=function (deltaInput){
var state=this.getCurrentData();
var delta=createDuration(deltaInput);
if(delta){
this.unselect();
this.dispatch({
type: 'CHANGE_DATE',
dateMarker: state.dateEnv.add(state.currentDate, delta)
});
}};
CalendarApi.prototype.getDate=function (){
var state=this.getCurrentData();
return state.dateEnv.toDate(state.currentDate);
};
CalendarApi.prototype.formatDate=function (d, formatter){
var dateEnv=this.getCurrentData().dateEnv;
return dateEnv.format(dateEnv.createMarker(d), createFormatter(formatter));
};
CalendarApi.prototype.formatRange=function (d0, d1, settings){
var dateEnv=this.getCurrentData().dateEnv;
return dateEnv.formatRange(dateEnv.createMarker(d0), dateEnv.createMarker(d1), createFormatter(settings), settings);
};
CalendarApi.prototype.formatIso=function (d, omitTime){
var dateEnv=this.getCurrentData().dateEnv;
return dateEnv.formatIso(dateEnv.createMarker(d), { omitTime: omitTime });
};
CalendarApi.prototype.select=function (dateOrObj, endDate){
var selectionInput;
if(endDate==null){
if(dateOrObj.start!=null){
selectionInput=dateOrObj;
}else{
selectionInput={
start: dateOrObj,
end: null
};}}else{
selectionInput={
start: dateOrObj,
end: endDate
};}
var state=this.getCurrentData();
var selection=parseDateSpan(selectionInput, state.dateEnv, createDuration({ days: 1 })
);
if(selection){
this.dispatch({ type: 'SELECT_DATES', selection: selection });
triggerDateSelect(selection, null, state);
}};
CalendarApi.prototype.unselect=function (pev){
var state=this.getCurrentData();
if(state.dateSelection){
this.dispatch({ type: 'UNSELECT_DATES' });
triggerDateUnselect(pev, state);
}};
CalendarApi.prototype.addEvent=function (eventInput, sourceInput){
if(eventInput instanceof EventApi){
var def=eventInput._def;
var instance=eventInput._instance;
var currentData=this.getCurrentData();
if(!currentData.eventStore.defs[def.defId]){
this.dispatch({
type: 'ADD_EVENTS',
eventStore: eventTupleToStore({ def: def, instance: instance })
});
this.triggerEventAdd(eventInput);
}
return eventInput;
}
var state=this.getCurrentData();
var eventSource;
if(sourceInput instanceof EventSourceApi){
eventSource=sourceInput.internalEventSource;
}
else if(typeof sourceInput==='boolean'){
if(sourceInput){
eventSource=hashValuesToArray(state.eventSources)[0];
}}
else if(sourceInput!=null){
var sourceApi=this.getEventSourceById(sourceInput);
if(!sourceApi){
console.warn('Could not find an event source with ID "' + sourceInput + '"');
return null;
}else{
eventSource=sourceApi.internalEventSource;
}}
var tuple=parseEvent(eventInput, eventSource, state, false);
if(tuple){
var newEventApi=new EventApi(state, tuple.def, tuple.def.recurringDef ? null:tuple.instance);
this.dispatch({
type: 'ADD_EVENTS',
eventStore: eventTupleToStore(tuple)
});
this.triggerEventAdd(newEventApi);
return newEventApi;
}
return null;
};
CalendarApi.prototype.triggerEventAdd=function (eventApi){
var _this=this;
var emitter=this.getCurrentData().emitter;
emitter.trigger('eventAdd', {
event: eventApi,
relatedEvents: [],
revert: function (){
_this.dispatch({
type: 'REMOVE_EVENTS',
eventStore: eventApiToStore(eventApi)
});
}});
};
CalendarApi.prototype.getEventById=function (id){
var state=this.getCurrentData();
var _a=state.eventStore, defs=_a.defs, instances=_a.instances;
id=String(id);
for (var defId in defs){
var def=defs[defId];
if(def.publicId===id){
if(def.recurringDef){
return new EventApi(state, def, null);
}else{
for (var instanceId in instances){
var instance=instances[instanceId];
if(instance.defId===def.defId){
return new EventApi(state, def, instance);
}}
}}
}
return null;
};
CalendarApi.prototype.getEvents=function (){
var currentData=this.getCurrentData();
return buildEventApis(currentData.eventStore, currentData);
};
CalendarApi.prototype.removeAllEvents=function (){
this.dispatch({ type: 'REMOVE_ALL_EVENTS' });
};
CalendarApi.prototype.getEventSources=function (){
var state=this.getCurrentData();
var sourceHash=state.eventSources;
var sourceApis=[];
for (var internalId in sourceHash){
sourceApis.push(new EventSourceApi(state, sourceHash[internalId]));
}
return sourceApis;
};
CalendarApi.prototype.getEventSourceById=function (id){
var state=this.getCurrentData();
var sourceHash=state.eventSources;
id=String(id);
for (var sourceId in sourceHash){
if(sourceHash[sourceId].publicId===id){
return new EventSourceApi(state, sourceHash[sourceId]);
}}
return null;
};
CalendarApi.prototype.addEventSource=function (sourceInput){
var state=this.getCurrentData();
if(sourceInput instanceof EventSourceApi){
if(!state.eventSources[sourceInput.internalEventSource.sourceId]){
this.dispatch({
type: 'ADD_EVENT_SOURCES',
sources: [sourceInput.internalEventSource]
});
}
return sourceInput;
}
var eventSource=parseEventSource(sourceInput, state);
if(eventSource){
this.dispatch({ type: 'ADD_EVENT_SOURCES', sources: [eventSource] });
return new EventSourceApi(state, eventSource);
}
return null;
};
CalendarApi.prototype.removeAllEventSources=function (){
this.dispatch({ type: 'REMOVE_ALL_EVENT_SOURCES' });
};
CalendarApi.prototype.refetchEvents=function (){
this.dispatch({ type: 'FETCH_EVENT_SOURCES' });
};
CalendarApi.prototype.scrollToTime=function (timeInput){
var time=createDuration(timeInput);
if(time){
this.trigger('_scrollRequest', { time: time });
}};
return CalendarApi;
}());
var EventApi= (function (){
function EventApi(context, def, instance){
this._context=context;
this._def=def;
this._instance=instance||null;
}
EventApi.prototype.setProp=function (name, val){
var _a, _b;
if(name in EVENT_DATE_REFINERS){
console.warn("Could not set date-related prop 'name'. Use one of the date-related methods instead.");
}
else if(name in EVENT_NON_DATE_REFINERS){
val=EVENT_NON_DATE_REFINERS[name](val);
this.mutate({
standardProps: (_a={}, _a[name]=val, _a)
});
}
else if(name in EVENT_UI_REFINERS){
var ui=EVENT_UI_REFINERS[name](val);
if(name==='color'){
ui={ backgroundColor: val, borderColor: val };}
else if(name==='editable'){
ui={ startEditable: val, durationEditable: val };}else{
ui=(_b={}, _b[name]=val, _b);
}
this.mutate({
standardProps: { ui: ui }});
}else{
console.warn("Could not set prop '" + name + "'. Use setExtendedProp instead.");
}};
EventApi.prototype.setExtendedProp=function (name, val){
var _a;
this.mutate({
extendedProps: (_a={}, _a[name]=val, _a)
});
};
EventApi.prototype.setStart=function (startInput, options){
if(options===void 0){ options={};}
var dateEnv=this._context.dateEnv;
var start=dateEnv.createMarker(startInput);
if(start&&this._instance){
var instanceRange=this._instance.range;
var startDelta=diffDates(instanceRange.start, start, dateEnv, options.granularity);
if(options.maintainDuration){
this.mutate({ datesDelta: startDelta });
}else{
this.mutate({ startDelta: startDelta });
}}
};
EventApi.prototype.setEnd=function (endInput, options){
if(options===void 0){ options={};}
var dateEnv=this._context.dateEnv;
var end;
if(endInput!=null){
end=dateEnv.createMarker(endInput);
if(!end){
return;
}}
if(this._instance){
if(end){
var endDelta=diffDates(this._instance.range.end, end, dateEnv, options.granularity);
this.mutate({ endDelta: endDelta });
}else{
this.mutate({ standardProps: { hasEnd: false }});
}}
};
EventApi.prototype.setDates=function (startInput, endInput, options){
if(options===void 0){ options={};}
var dateEnv=this._context.dateEnv;
var standardProps={ allDay: options.allDay };
var start=dateEnv.createMarker(startInput);
var end;
if(!start){
return;
}
if(endInput!=null){
end=dateEnv.createMarker(endInput);
if(!end){
return;
}}
if(this._instance){
var instanceRange=this._instance.range;
if(options.allDay===true){
instanceRange=computeAlignedDayRange(instanceRange);
}
var startDelta=diffDates(instanceRange.start, start, dateEnv, options.granularity);
if(end){
var endDelta=diffDates(instanceRange.end, end, dateEnv, options.granularity);
if(durationsEqual(startDelta, endDelta)){
this.mutate({ datesDelta: startDelta, standardProps: standardProps });
}else{
this.mutate({ startDelta: startDelta, endDelta: endDelta, standardProps: standardProps });
}}else{
standardProps.hasEnd=false;
this.mutate({ datesDelta: startDelta, standardProps: standardProps });
}}
};
EventApi.prototype.moveStart=function (deltaInput){
var delta=createDuration(deltaInput);
if(delta){
this.mutate({ startDelta: delta });
}};
EventApi.prototype.moveEnd=function (deltaInput){
var delta=createDuration(deltaInput);
if(delta){
this.mutate({ endDelta: delta });
}};
EventApi.prototype.moveDates=function (deltaInput){
var delta=createDuration(deltaInput);
if(delta){
this.mutate({ datesDelta: delta });
}};
EventApi.prototype.setAllDay=function (allDay, options){
if(options===void 0){ options={};}
var standardProps={ allDay: allDay };
var maintainDuration=options.maintainDuration;
if(maintainDuration==null){
maintainDuration=this._context.options.allDayMaintainDuration;
}
if(this._def.allDay!==allDay){
standardProps.hasEnd=maintainDuration;
}
this.mutate({ standardProps: standardProps });
};
EventApi.prototype.formatRange=function (formatInput){
var dateEnv=this._context.dateEnv;
var instance=this._instance;
var formatter=createFormatter(formatInput);
if(this._def.hasEnd){
return dateEnv.formatRange(instance.range.start, instance.range.end, formatter, {
forcedStartTzo: instance.forcedStartTzo,
forcedEndTzo: instance.forcedEndTzo
});
}else{
return dateEnv.format(instance.range.start, formatter, {
forcedTzo: instance.forcedStartTzo
});
}};
EventApi.prototype.mutate=function (mutation){
var instance=this._instance;
if(instance){
var def=this._def;
var context_1=this._context;
var eventStore=context_1.getCurrentData().eventStore;
var relevantEvents_1=getRelevantEvents(eventStore, instance.instanceId);
var eventConfigBase={
'': {
display: '',
startEditable: true,
durationEditable: true,
constraints: [],
overlap: null,
allows: [],
backgroundColor: '',
borderColor: '',
textColor: '',
classNames: []
}};
relevantEvents_1=applyMutationToEventStore(relevantEvents_1, eventConfigBase, mutation, context_1);
var oldEvent=new EventApi(context_1, def, instance);
this._def=relevantEvents_1.defs[def.defId];
this._instance=relevantEvents_1.instances[instance.instanceId];
context_1.dispatch({
type: 'MERGE_EVENTS',
eventStore: relevantEvents_1
});
context_1.emitter.trigger('eventChange', {
oldEvent: oldEvent,
event: this,
relatedEvents: buildEventApis(relevantEvents_1, context_1, instance),
revert: function (){
context_1.dispatch({
type: 'REMOVE_EVENTS',
eventStore: relevantEvents_1
});
}});
}};
EventApi.prototype.remove=function (){
var context=this._context;
var asStore=eventApiToStore(this);
context.dispatch({
type: 'REMOVE_EVENTS',
eventStore: asStore
});
context.emitter.trigger('eventRemove', {
event: this,
relatedEvents: [],
revert: function (){
context.dispatch({
type: 'MERGE_EVENTS',
eventStore: asStore
});
}});
};
Object.defineProperty(EventApi.prototype, "source", {
get: function (){
var sourceId=this._def.sourceId;
if(sourceId){
return new EventSourceApi(this._context, this._context.getCurrentData().eventSources[sourceId]);
}
return null;
},
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "start", {
get: function (){
return this._instance ?
this._context.dateEnv.toDate(this._instance.range.start) :
null;
},
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "end", {
get: function (){
return (this._instance&&this._def.hasEnd) ?
this._context.dateEnv.toDate(this._instance.range.end) :
null;
},
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "startStr", {
get: function (){
var instance=this._instance;
if(instance){
return this._context.dateEnv.formatIso(instance.range.start, {
omitTime: this._def.allDay,
forcedTzo: instance.forcedStartTzo
});
}
return '';
},
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "endStr", {
get: function (){
var instance=this._instance;
if(instance&&this._def.hasEnd){
return this._context.dateEnv.formatIso(instance.range.end, {
omitTime: this._def.allDay,
forcedTzo: instance.forcedEndTzo
});
}
return '';
},
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "id", {
get: function (){ return this._def.publicId; },
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "groupId", {
get: function (){ return this._def.groupId; },
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "allDay", {
get: function (){ return this._def.allDay; },
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "title", {
get: function (){ return this._def.title; },
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "url", {
get: function (){ return this._def.url; },
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "display", {
get: function (){ return this._def.ui.display||'auto'; }
,
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "startEditable", {
get: function (){ return this._def.ui.startEditable; },
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "durationEditable", {
get: function (){ return this._def.ui.durationEditable; },
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "constraint", {
get: function (){ return this._def.ui.constraints[0]||null; },
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "overlap", {
get: function (){ return this._def.ui.overlap; },
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "allow", {
get: function (){ return this._def.ui.allows[0]||null; },
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "backgroundColor", {
get: function (){ return this._def.ui.backgroundColor; },
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "borderColor", {
get: function (){ return this._def.ui.borderColor; },
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "textColor", {
get: function (){ return this._def.ui.textColor; },
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "classNames", {
get: function (){ return this._def.ui.classNames; },
enumerable: false,
configurable: true
});
Object.defineProperty(EventApi.prototype, "extendedProps", {
get: function (){ return this._def.extendedProps; },
enumerable: false,
configurable: true
});
EventApi.prototype.toPlainObject=function (settings){
if(settings===void 0){ settings={};}
var def=this._def;
var ui=def.ui;
var _a=this, startStr=_a.startStr, endStr=_a.endStr;
var res={};
if(def.title){
res.title=def.title;
}
if(startStr){
res.start=startStr;
}
if(endStr){
res.end=endStr;
}
if(def.publicId){
res.id=def.publicId;
}
if(def.groupId){
res.groupId=def.groupId;
}
if(def.url){
res.url=def.url;
}
if(ui.display&&ui.display!=='auto'){
res.display=ui.display;
}
if(settings.collapseColor&&ui.backgroundColor&&ui.backgroundColor===ui.borderColor){
res.color=ui.backgroundColor;
}else{
if(ui.backgroundColor){
res.backgroundColor=ui.backgroundColor;
}
if(ui.borderColor){
res.borderColor=ui.borderColor;
}}
if(ui.textColor){
res.textColor=ui.textColor;
}
if(ui.classNames.length){
res.classNames=ui.classNames;
}
if(Object.keys(def.extendedProps).length){
if(settings.collapseExtendedProps){
__assign(res, def.extendedProps);
}else{
res.extendedProps=def.extendedProps;
}}
return res;
};
EventApi.prototype.toJSON=function (){
return this.toPlainObject();
};
return EventApi;
}());
function eventApiToStore(eventApi){
var _a, _b;
var def=eventApi._def;
var instance=eventApi._instance;
return {
defs: (_a={}, _a[def.defId]=def, _a),
instances: instance
? (_b={}, _b[instance.instanceId]=instance, _b):{}};}
function buildEventApis(eventStore, context, excludeInstance){
var defs=eventStore.defs, instances=eventStore.instances;
var eventApis=[];
var excludeInstanceId=excludeInstance ? excludeInstance.instanceId:'';
for (var id in instances){
var instance=instances[id];
var def=defs[instance.defId];
if(instance.instanceId!==excludeInstanceId){
eventApis.push(new EventApi(context, def, instance));
}}
return eventApis;
}
var calendarSystemClassMap={};
function registerCalendarSystem(name, theClass){
calendarSystemClassMap[name]=theClass;
}
function createCalendarSystem(name){
return new calendarSystemClassMap[name]();
}
var GregorianCalendarSystem= (function (){
function GregorianCalendarSystem(){
}
GregorianCalendarSystem.prototype.getMarkerYear=function (d){
return d.getUTCFullYear();
};
GregorianCalendarSystem.prototype.getMarkerMonth=function (d){
return d.getUTCMonth();
};
GregorianCalendarSystem.prototype.getMarkerDay=function (d){
return d.getUTCDate();
};
GregorianCalendarSystem.prototype.arrayToMarker=function (arr){
return arrayToUtcDate(arr);
};
GregorianCalendarSystem.prototype.markerToArray=function (marker){
return dateToUtcArray(marker);
};
return GregorianCalendarSystem;
}());
registerCalendarSystem('gregory', GregorianCalendarSystem);
var ISO_RE=/^\s*(\d{4})(-?(\d{2})(-?(\d{2})([T ](\d{2}):?(\d{2})(:?(\d{2})(\.(\d+))?)?(Z|(([-+])(\d{2})(:?(\d{2}))?))?)?)?)?$/;
function parse(str){
var m=ISO_RE.exec(str);
if(m){
var marker=new Date(Date.UTC(Number(m[1]), m[3] ? Number(m[3]) - 1:0, Number(m[5]||1), Number(m[7]||0), Number(m[8]||0), Number(m[10]||0), m[12] ? Number('0.' + m[12]) * 1000:0));
if(isValidDate(marker)){
var timeZoneOffset=null;
if(m[13]){
timeZoneOffset=(m[15]==='-' ? -1:1) * (Number(m[16]||0) * 60 +
Number(m[18]||0));
}
return {
marker: marker,
isTimeUnspecified: !m[6],
timeZoneOffset: timeZoneOffset
};}}
return null;
}
var DateEnv= (function (){
function DateEnv(settings){
var timeZone=this.timeZone=settings.timeZone;
var isNamedTimeZone=timeZone!=='local'&&timeZone!=='UTC';
if(settings.namedTimeZoneImpl&&isNamedTimeZone){
this.namedTimeZoneImpl=new settings.namedTimeZoneImpl(timeZone);
}
this.canComputeOffset=Boolean(!isNamedTimeZone||this.namedTimeZoneImpl);
this.calendarSystem=createCalendarSystem(settings.calendarSystem);
this.locale=settings.locale;
this.weekDow=settings.locale.week.dow;
this.weekDoy=settings.locale.week.doy;
if(settings.weekNumberCalculation==='ISO'){
this.weekDow=1;
this.weekDoy=4;
}
if(typeof settings.firstDay==='number'){
this.weekDow=settings.firstDay;
}
if(typeof settings.weekNumberCalculation==='function'){
this.weekNumberFunc=settings.weekNumberCalculation;
}
this.weekText=settings.weekText!=null ? settings.weekText:settings.locale.options.weekText;
this.cmdFormatter=settings.cmdFormatter;
this.defaultSeparator=settings.defaultSeparator;
}
DateEnv.prototype.createMarker=function (input){
var meta=this.createMarkerMeta(input);
if(meta===null){
return null;
}
return meta.marker;
};
DateEnv.prototype.createNowMarker=function (){
if(this.canComputeOffset){
return this.timestampToMarker(new Date().valueOf());
}else{
return arrayToUtcDate(dateToLocalArray(new Date()));
}};
DateEnv.prototype.createMarkerMeta=function (input){
if(typeof input==='string'){
return this.parse(input);
}
var marker=null;
if(typeof input==='number'){
marker=this.timestampToMarker(input);
}
else if(input instanceof Date){
input=input.valueOf();
if(!isNaN(input)){
marker=this.timestampToMarker(input);
}}
else if(Array.isArray(input)){
marker=arrayToUtcDate(input);
}
if(marker===null||!isValidDate(marker)){
return null;
}
return { marker: marker, isTimeUnspecified: false, forcedTzo: null };};
DateEnv.prototype.parse=function (s){
var parts=parse(s);
if(parts===null){
return null;
}
var marker=parts.marker;
var forcedTzo=null;
if(parts.timeZoneOffset!==null){
if(this.canComputeOffset){
marker=this.timestampToMarker(marker.valueOf() - parts.timeZoneOffset * 60 * 1000);
}else{
forcedTzo=parts.timeZoneOffset;
}}
return { marker: marker, isTimeUnspecified: parts.isTimeUnspecified, forcedTzo: forcedTzo };};
DateEnv.prototype.getYear=function (marker){
return this.calendarSystem.getMarkerYear(marker);
};
DateEnv.prototype.getMonth=function (marker){
return this.calendarSystem.getMarkerMonth(marker);
};
DateEnv.prototype.add=function (marker, dur){
var a=this.calendarSystem.markerToArray(marker);
a[0] +=dur.years;
a[1] +=dur.months;
a[2] +=dur.days;
a[6] +=dur.milliseconds;
return this.calendarSystem.arrayToMarker(a);
};
DateEnv.prototype.subtract=function (marker, dur){
var a=this.calendarSystem.markerToArray(marker);
a[0] -=dur.years;
a[1] -=dur.months;
a[2] -=dur.days;
a[6] -=dur.milliseconds;
return this.calendarSystem.arrayToMarker(a);
};
DateEnv.prototype.addYears=function (marker, n){
var a=this.calendarSystem.markerToArray(marker);
a[0] +=n;
return this.calendarSystem.arrayToMarker(a);
};
DateEnv.prototype.addMonths=function (marker, n){
var a=this.calendarSystem.markerToArray(marker);
a[1] +=n;
return this.calendarSystem.arrayToMarker(a);
};
DateEnv.prototype.diffWholeYears=function (m0, m1){
var calendarSystem=this.calendarSystem;
if(timeAsMs(m0)===timeAsMs(m1) &&
calendarSystem.getMarkerDay(m0)===calendarSystem.getMarkerDay(m1) &&
calendarSystem.getMarkerMonth(m0)===calendarSystem.getMarkerMonth(m1)){
return calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0);
}
return null;
};
DateEnv.prototype.diffWholeMonths=function (m0, m1){
var calendarSystem=this.calendarSystem;
if(timeAsMs(m0)===timeAsMs(m1) &&
calendarSystem.getMarkerDay(m0)===calendarSystem.getMarkerDay(m1)){
return (calendarSystem.getMarkerMonth(m1) - calendarSystem.getMarkerMonth(m0)) +
(calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)) * 12;
}
return null;
};
DateEnv.prototype.greatestWholeUnit=function (m0, m1){
var n=this.diffWholeYears(m0, m1);
if(n!==null){
return { unit: 'year', value: n };}
n=this.diffWholeMonths(m0, m1);
if(n!==null){
return { unit: 'month', value: n };}
n=diffWholeWeeks(m0, m1);
if(n!==null){
return { unit: 'week', value: n };}
n=diffWholeDays(m0, m1);
if(n!==null){
return { unit: 'day', value: n };}
n=diffHours(m0, m1);
if(isInt(n)){
return { unit: 'hour', value: n };}
n=diffMinutes(m0, m1);
if(isInt(n)){
return { unit: 'minute', value: n };}
n=diffSeconds(m0, m1);
if(isInt(n)){
return { unit: 'second', value: n };}
return { unit: 'millisecond', value: m1.valueOf() - m0.valueOf() };};
DateEnv.prototype.countDurationsBetween=function (m0, m1, d){
var diff;
if(d.years){
diff=this.diffWholeYears(m0, m1);
if(diff!==null){
return diff / asRoughYears(d);
}}
if(d.months){
diff=this.diffWholeMonths(m0, m1);
if(diff!==null){
return diff / asRoughMonths(d);
}}
if(d.days){
diff=diffWholeDays(m0, m1);
if(diff!==null){
return diff / asRoughDays(d);
}}
return (m1.valueOf() - m0.valueOf()) / asRoughMs(d);
};
DateEnv.prototype.startOf=function (m, unit){
if(unit==='year'){
return this.startOfYear(m);
}
else if(unit==='month'){
return this.startOfMonth(m);
}
else if(unit==='week'){
return this.startOfWeek(m);
}
else if(unit==='day'){
return startOfDay(m);
}
else if(unit==='hour'){
return startOfHour(m);
}
else if(unit==='minute'){
return startOfMinute(m);
}
else if(unit==='second'){
return startOfSecond(m);
}};
DateEnv.prototype.startOfYear=function (m){
return this.calendarSystem.arrayToMarker([
this.calendarSystem.getMarkerYear(m)
]);
};
DateEnv.prototype.startOfMonth=function (m){
return this.calendarSystem.arrayToMarker([
this.calendarSystem.getMarkerYear(m),
this.calendarSystem.getMarkerMonth(m)
]);
};
DateEnv.prototype.startOfWeek=function (m){
return this.calendarSystem.arrayToMarker([
this.calendarSystem.getMarkerYear(m),
this.calendarSystem.getMarkerMonth(m),
m.getUTCDate() - ((m.getUTCDay() - this.weekDow + 7) % 7)
]);
};
DateEnv.prototype.computeWeekNumber=function (marker){
if(this.weekNumberFunc){
return this.weekNumberFunc(this.toDate(marker));
}else{
return weekOfYear(marker, this.weekDow, this.weekDoy);
}};
DateEnv.prototype.format=function (marker, formatter, dateOptions){
if(dateOptions===void 0){ dateOptions={};}
return formatter.format({
marker: marker,
timeZoneOffset: dateOptions.forcedTzo!=null ?
dateOptions.forcedTzo :
this.offsetForMarker(marker)
}, this);
};
DateEnv.prototype.formatRange=function (start, end, formatter, dateOptions){
if(dateOptions===void 0){ dateOptions={};}
if(dateOptions.isEndExclusive){
end=addMs(end, -1);
}
return formatter.formatRange({
marker: start,
timeZoneOffset: dateOptions.forcedStartTzo!=null ?
dateOptions.forcedStartTzo :
this.offsetForMarker(start)
}, {
marker: end,
timeZoneOffset: dateOptions.forcedEndTzo!=null ?
dateOptions.forcedEndTzo :
this.offsetForMarker(end)
}, this, dateOptions.defaultSeparator);
};
DateEnv.prototype.formatIso=function (marker, extraOptions){
if(extraOptions===void 0){ extraOptions={};}
var timeZoneOffset=null;
if(!extraOptions.omitTimeZoneOffset){
if(extraOptions.forcedTzo!=null){
timeZoneOffset=extraOptions.forcedTzo;
}else{
timeZoneOffset=this.offsetForMarker(marker);
}}
return buildIsoString(marker, timeZoneOffset, extraOptions.omitTime);
};
DateEnv.prototype.timestampToMarker=function (ms){
if(this.timeZone==='local'){
return arrayToUtcDate(dateToLocalArray(new Date(ms)));
}
else if(this.timeZone==='UTC'||!this.namedTimeZoneImpl){
return new Date(ms);
}else{
return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms));
}};
DateEnv.prototype.offsetForMarker=function (m){
if(this.timeZone==='local'){
return -arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset();
}
else if(this.timeZone==='UTC'){
return 0;
}
else if(this.namedTimeZoneImpl){
return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m));
}
return null;
};
DateEnv.prototype.toDate=function (m, forcedTzo){
if(this.timeZone==='local'){
return arrayToLocalDate(dateToUtcArray(m));
}
else if(this.timeZone==='UTC'){
return new Date(m.valueOf());
}
else if(!this.namedTimeZoneImpl){
return new Date(m.valueOf() - (forcedTzo||0));
}else{
return new Date(m.valueOf() -
this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60 
);
}};
return DateEnv;
}());
var globalLocales=[];
var RAW_EN_LOCALE={
code: 'en',
week: {
dow: 0,
doy: 4 
},
direction: 'ltr',
buttonText: {
prev: 'prev',
next: 'next',
prevYear: 'prev year',
nextYear: 'next year',
year: 'year',
today: 'today',
month: 'month',
week: 'week',
day: 'day',
list: 'list'
},
weekText: 'W',
allDayText: 'all-day',
moreLinkText: 'more',
noEventsText: 'No events to display'
};
function organizeRawLocales(explicitRawLocales){
var defaultCode=explicitRawLocales.length > 0 ? explicitRawLocales[0].code:'en';
var allRawLocales=globalLocales.concat(explicitRawLocales);
var rawLocaleMap={
en: RAW_EN_LOCALE
};
for (var _i=0, allRawLocales_1=allRawLocales; _i < allRawLocales_1.length; _i++){
var rawLocale=allRawLocales_1[_i];
rawLocaleMap[rawLocale.code]=rawLocale;
}
return {
map: rawLocaleMap,
defaultCode: defaultCode
};}
function buildLocale(inputSingular, available){
if(typeof inputSingular==='object'&&!Array.isArray(inputSingular)){
return parseLocale(inputSingular.code, [inputSingular.code], inputSingular);
}else{
return queryLocale(inputSingular, available);
}}
function queryLocale(codeArg, available){
var codes=[].concat(codeArg||[]);
var raw=queryRawLocale(codes, available)||RAW_EN_LOCALE;
return parseLocale(codeArg, codes, raw);
}
function queryRawLocale(codes, available){
for (var i=0; i < codes.length; i++){
var parts=codes[i].toLocaleLowerCase().split('-');
for (var j=parts.length; j > 0; j--){
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;
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){
return '';
}
return dateEnv.format(dateMeta.marker, formatter, {
forcedTzo: dateMeta.forcedTzo
});
}
function formatRange(startInput, endInput, options
){
var dateEnv=buildDateEnv(typeof options==='object'&&options ? options:{});
var formatter=createFormatter(options);
var startMeta=dateEnv.createMarkerMeta(startInput);
var endMeta=dateEnv.createMarkerMeta(endInput);
if(!startMeta||!endMeta){
return '';
}
return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, {
forcedStartTzo: startMeta.forcedTzo,
forcedEndTzo: endMeta.forcedTzo,
isEndExclusive: options.isEndExclusive,
defaultSeparator: BASE_OPTION_DEFAULTS.defaultRangeSeparator
});
}
function buildDateEnv(settings){
var locale=buildLocale(settings.locale||'en', organizeRawLocales([]).map);
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'
};
function parseBusinessHours(input, context){
return parseEvents(refineInputs(input), null, context);
}
function refineInputs(input){
var rawDefs;
if(input===true){
rawDefs=[{}];
}
else if(Array.isArray(input)){
rawDefs=input.filter(function (rawDef){
return rawDef.daysOfWeek;
});
}
else if(typeof input==='object'&&input){
rawDefs=[input];
}else{
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.right &&
point.top >=rect.top &&
point.top < rect.bottom;
}
function intersectRects(rect1, rect2){
var res={
left: Math.max(rect1.left, rect2.left),
right: Math.min(rect1.right, rect2.right),
top: Math.max(rect1.top, rect2.top),
bottom: Math.min(rect1.bottom, rect2.bottom)
};
if(res.left < res.right&&res.top < res.bottom){
return res;
}
return false;
}
function translateRect(rect, deltaX, deltaY){
return {
left: rect.left + deltaX,
right: rect.right + deltaX,
top: rect.top + deltaY,
bottom: rect.bottom + deltaY
};}
function constrainPoint(point, rect){
return {
left: Math.min(Math.max(point.left, rect.left), rect.right),
top: Math.min(Math.max(point.top, rect.top), rect.bottom)
};}
function getRectCenter(rect){
return {
left: (rect.left + rect.right) / 2,
top: (rect.top + rect.bottom) / 2
};}
function diffPoints(point1, point2){
return {
left: point1.left - point2.left,
top: point1.top - point2.top
};}
var canVGrowWithinCell;
function getCanVGrowWithinCell(){
if(canVGrowWithinCell==null){
canVGrowWithinCell=computeCanVGrowWithinCell();
}
return canVGrowWithinCell;
}
function computeCanVGrowWithinCell(){
if(typeof document==='undefined'){
return true;
}
var el=document.createElement('div');
el.style.position='absolute';
el.style.top='0px';
el.style.left='0px';
el.innerHTML='<table><tr><td><div></div></td></tr></table>';
el.querySelector('table').style.height='100px';
el.querySelector('div').style.height='100%';
document.body.appendChild(el);
var div=el.querySelector('div');
var possible=div.offsetHeight > 0;
document.body.removeChild(el);
return possible;
}
var EMPTY_EVENT_STORE=createEmptyEventStore();
var Splitter= (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={};}
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);
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; _i < keys_1.length; _i++){
var key=keys_1[_i];
dateSpans[key]=dateSpan;
}}
return dateSpans;
};
Splitter.prototype._getKeysForEventDefs=function (eventStore){
var _this=this;
return mapHash(eventStore.defs, function (eventDef){
return _this.getKeysForEventDef(eventDef);
});
};
Splitter.prototype._splitEventStore=function (eventStore, defKeys){
var defs=eventStore.defs, instances=eventStore.instances;
var splitStores={};
for (var defId in defs){
for (var _i=0, _a=defKeys[defId]; _i < _a.length; _i++){
var key=_a[_i];
if(!splitStores[key]){
splitStores[key]=createEmptyEventStore();
}
splitStores[key].defs[defId]=defs[defId];
}}
for (var instanceId in instances){
var instance=instances[instanceId];
for (var _b=0, _c=defKeys[instance.defId]; _b < _c.length; _b++){
var key=_c[_b];
if(splitStores[key]){
splitStores[key].instances[instanceId]=instance;
}}
}
return splitStores;
};
Splitter.prototype._splitIndividualUi=function (eventUiBases, defKeys){
var splitHashes={};
for (var defId in eventUiBases){
if(defId){
for (var _i=0, _a=defKeys[defId]; _i < _a.length; _i++){
var key=_a[_i];
if(!splitHashes[key]){
splitHashes[key]={};}
splitHashes[key][defId]=eventUiBases[defId];
}}
}
return splitHashes;
};
Splitter.prototype._splitInteraction=function (interaction){
var splitStates={};
if(interaction){
var affectedStores_1=this._splitEventStore(interaction.affectedEvents, this._getKeysForEventDefs(interaction.affectedEvents)
);
var mutatedKeysByDefId=this._getKeysForEventDefs(interaction.mutatedEvents);
var mutatedStores_1=this._splitEventStore(interaction.mutatedEvents, mutatedKeysByDefId);
var populate=function (key){
if(!splitStates[key]){
splitStates[key]={
affectedEvents: affectedStores_1[key]||EMPTY_EVENT_STORE,
mutatedEvents: mutatedStores_1[key]||EMPTY_EVENT_STORE,
isEvent: interaction.isEvent
};}};
for (var key in affectedStores_1){
populate(key);
}
for (var key in mutatedStores_1){
populate(key);
}}
return splitStates;
};
return Splitter;
}());
function buildEventUiForKey(allUi, eventUiForKey, individualUi){
var baseParts=[];
if(allUi){
baseParts.push(allUi);
}
if(eventUiForKey){
baseParts.push(eventUiForKey);
}
var stuff={
'': combineEventUis(baseParts)
};
if(individualUi){
__assign(stuff, individualUi);
}
return stuff;
}
function getDateMeta(date, todayRange, nowDate, dateProfile){
return {
dow: date.getUTCDay(),
isDisabled: Boolean(dateProfile&&!rangeContainsMarker(dateProfile.activeRange, date)),
isOther: Boolean(dateProfile&&!rangeContainsMarker(dateProfile.currentRange, date)),
isToday: Boolean(todayRange&&rangeContainsMarker(todayRange, date)),
isPast: Boolean(nowDate ? (date < nowDate):todayRange ? (date < todayRange.start):false),
isFuture: Boolean(nowDate ? (date > nowDate):todayRange ? (date >=todayRange.end):false)
};}
function getDayClassNames(meta, theme){
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='<div></div>';
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;
}
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);
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'){
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);
}
function getClippingParents(el){
var parents=[];
while (el instanceof HTMLElement){
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;
}
function unpromisify(func, success, failure){
var isResolved=false;
var wrappedSuccess=function (){
if(!isResolved){
isResolved=true;
success.apply(this, arguments);
}};
var wrappedFailure=function (){
if(!isResolved){
isResolved=true;
if(failure){
failure.apply(this, arguments);
}}
};
var res=func(wrappedSuccess, wrappedFailure);
if(res&&typeof res.then==='function'){
res.then(wrappedSuccess, wrappedFailure);
}}
var Emitter= (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 < arguments.length; _i++){
args[_i - 1]=arguments[_i];
}
var attachedHandlers=this.handlers[type]||[];
var optionHandler=this.options&&this.options[type];
var handlers=[].concat(optionHandler||[], attachedHandlers);
for (var _a=0, handlers_1=handlers; _a < handlers_1.length; _a++){
var handler=handlers_1[_a];
handler.apply(this.thisContext, args);
}};
Emitter.prototype.hasHandlers=function (type){
return (this.handlers[type]&&this.handlers[type].length) ||
(this.options&&this.options[type]);
};
return Emitter;
}());
function addToHash(hash, type, handler){
(hash[type]||(hash[type]=[]))
.push(handler);
}
function removeFromHash(hash, type, handler){
if(handler){
if(hash[type]){
hash[type]=hash[type].filter(function (func){
return func!==handler;
});
}}else{
delete hash[type];
}}
var PositionCache= (function (){
function PositionCache(originEl, els, isHorizontal, isVertical){
this.els=els;
var originClientRect=this.originClientRect=originEl.getBoundingClientRect();
if(isHorizontal){
this.buildElHorizontals(originClientRect.left);
}
if(isVertical){
this.buildElVerticals(originClientRect.top);
}}
PositionCache.prototype.buildElHorizontals=function (originClientLeft){
var lefts=[];
var rights=[];
for (var _i=0, _a=this.els; _i < _a.length; _i++){
var el=_a[_i];
var rect=el.getBoundingClientRect();
lefts.push(rect.left - originClientLeft);
rights.push(rect.right - originClientLeft);
}
this.lefts=lefts;
this.rights=rights;
};
PositionCache.prototype.buildElVerticals=function (originClientTop){
var tops=[];
var bottoms=[];
for (var _i=0, _a=this.els; _i < _a.length; _i++){
var el=_a[_i];
var rect=el.getBoundingClientRect();
tops.push(rect.top - originClientTop);
bottoms.push(rect.bottom - originClientTop);
}
this.tops=tops;
this.bottoms=bottoms;
};
PositionCache.prototype.leftToIndex=function (leftPosition){
var lefts=this.lefts;
var rights=this.rights;
var len=lefts.length;
var i;
for (i=0; i < len; i++){
if(leftPosition >=lefts[i]&&leftPosition < rights[i]){
return i;
}}
};
PositionCache.prototype.topToIndex=function (topPosition){
var tops=this.tops;
var bottoms=this.bottoms;
var len=tops.length;
var i;
for (i=0; i < len; i++){
if(topPosition >=tops[i]&&topPosition < bottoms[i]){
return i;
}}
};
PositionCache.prototype.getWidth=function (leftIndex){
return this.rights[leftIndex] - this.lefts[leftIndex];
};
PositionCache.prototype.getHeight=function (topIndex){
return this.bottoms[topIndex] - this.tops[topIndex];
};
return PositionCache;
}());
var ScrollController= (function (){
function ScrollController(){
}
ScrollController.prototype.getMaxScrollTop=function (){
return this.getScrollHeight() - this.getClientHeight();
};
ScrollController.prototype.getMaxScrollLeft=function (){
return this.getScrollWidth() - this.getClientWidth();
};
ScrollController.prototype.canScrollVertically=function (){
return this.getMaxScrollTop() > 0;
};
ScrollController.prototype.canScrollHorizontally=function (){
return this.getMaxScrollLeft() > 0;
};
ScrollController.prototype.canScrollUp=function (){
return this.getScrollTop() > 0;
};
ScrollController.prototype.canScrollDown=function (){
return this.getScrollTop() < this.getMaxScrollTop();
};
ScrollController.prototype.canScrollLeft=function (){
return this.getScrollLeft() > 0;
};
ScrollController.prototype.canScrollRight=function (){
return this.getScrollLeft() < this.getMaxScrollLeft();
};
return ScrollController;
}());
var ElementScrollController= (function (_super){
__extends(ElementScrollController, _super);
function ElementScrollController(el){
var _this=_super.call(this)||this;
_this.el=el;
return _this;
}
ElementScrollController.prototype.getScrollTop=function (){
return this.el.scrollTop;
};
ElementScrollController.prototype.getScrollLeft=function (){
return this.el.scrollLeft;
};
ElementScrollController.prototype.setScrollTop=function (top){
this.el.scrollTop=top;
};
ElementScrollController.prototype.setScrollLeft=function (left){
this.el.scrollLeft=left;
};
ElementScrollController.prototype.getScrollWidth=function (){
return this.el.scrollWidth;
};
ElementScrollController.prototype.getScrollHeight=function (){
return this.el.scrollHeight;
};
ElementScrollController.prototype.getClientHeight=function (){
return this.el.clientHeight;
};
ElementScrollController.prototype.getClientWidth=function (){
return this.el.clientWidth;
};
return ElementScrollController;
}(ScrollController));
var WindowScrollController= (function (_super){
__extends(WindowScrollController, _super);
function WindowScrollController(){
return _super!==null&&_super.apply(this, arguments)||this;
}
WindowScrollController.prototype.getScrollTop=function (){
return window.pageYOffset;
};
WindowScrollController.prototype.getScrollLeft=function (){
return window.pageXOffset;
};
WindowScrollController.prototype.setScrollTop=function (n){
window.scroll(window.pageXOffset, n);
};
WindowScrollController.prototype.setScrollLeft=function (n){
window.scroll(n, window.pageYOffset);
};
WindowScrollController.prototype.getScrollWidth=function (){
return document.documentElement.scrollWidth;
};
WindowScrollController.prototype.getScrollHeight=function (){
return document.documentElement.scrollHeight;
};
WindowScrollController.prototype.getClientHeight=function (){
return document.documentElement.clientHeight;
};
WindowScrollController.prototype.getClientWidth=function (){
return document.documentElement.clientWidth;
};
return WindowScrollController;
}(ScrollController));
var Theme= (function (){
function Theme(calendarOptions){
if(this.iconOverrideOption){
this.setIconOverride(calendarOptions[this.iconOverrideOption]);
}}
Theme.prototype.setIconOverride=function (iconOverrideHash){
var iconClassesCopy;
var buttonName;
if(typeof iconOverrideHash==='object'&&iconOverrideHash){
iconClassesCopy=__assign({}, this.iconClasses);
for (buttonName in iconOverrideHash){
iconClassesCopy[buttonName]=this.applyIconOverridePrefix(iconOverrideHash[buttonName]);
}
this.iconClasses=iconClassesCopy;
}
else if(iconOverrideHash===false){
this.iconClasses={};}};
Theme.prototype.applyIconOverridePrefix=function (className){
var prefix=this.iconOverridePrefix;
if(prefix&&className.indexOf(prefix)!==0){
className=prefix + className;
}
return className;
};
Theme.prototype.getClass=function (key){
return this.classes[key]||'';
};
Theme.prototype.getIconClass=function (buttonName, isRtl){
var className;
if(isRtl&&this.rtlIconClasses){
className=this.rtlIconClasses[buttonName]||this.iconClasses[buttonName];
}else{
className=this.iconClasses[buttonName];
}
if(className){
return this.baseIconClass + ' ' + className;
}
return '';
};
Theme.prototype.getCustomButtonIconClass=function (customButtonProps){
var className;
if(this.iconOverrideCustomButtonOption){
className=customButtonProps[this.iconOverrideCustomButtonOption];
if(className){
return this.baseIconClass + ' ' + this.applyIconOverridePrefix(className);
}}
return '';
};
return Theme;
}());
Theme.prototype.classes={};
Theme.prototype.iconClasses={};
Theme.prototype.baseIconClass='';
Theme.prototype.iconOverridePrefix='';
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 ScrollResponder= (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();
}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({});
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 (handler){
emitter.on('_resize', handler);
},
removeResizeHandler: function (handler){
emitter.off('_resize', handler);
},
createScrollResponder: function (execFunc){
return new ScrollResponder(execFunc, emitter, createDuration(viewOptions.scrollTime));
},
registerInteractiveComponent: registerInteractiveComponent,
unregisterInteractiveComponent: unregisterInteractiveComponent
};}
var PureComponent= (function (_super){
__extends(PureComponent, _super);
function PureComponent(){
return _super!==null&&_super.apply(this, arguments)||this;
}
PureComponent.prototype.shouldComponentUpdate=function (nextProps, nextState){
if(this.debug){
console.log(getUnequalProps(nextProps, this.props), getUnequalProps(nextState, this.state));
}
return !compareObjs(this.props, nextProps, this.propEquality) ||
!compareObjs(this.state, nextState, this.stateEquality);
};
PureComponent.addPropsEquality=addPropsEquality;
PureComponent.addStateEquality=addStateEquality;
PureComponent.contextType=ViewContextType;
return PureComponent;
}(Component));
PureComponent.prototype.propEquality={};
PureComponent.prototype.stateEquality={};
var BaseComponent= (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;
}
function setRef(ref, current){
if(typeof ref==='function'){
ref(current);
}
else if(ref){
ref.current=current;
}}
function reduceEventStore(eventStore, action, eventSources, dateProfile, context){
switch (action.type){
case 'RECEIVE_EVENTS':
return receiveRawEvents(eventStore, eventSources[action.sourceId], action.fetchId, action.fetchRange, action.rawEvents, context);
case 'ADD_EVENTS':
return addEvent(eventStore, action.eventStore,
dateProfile ? dateProfile.activeRange:null, context);
case 'MERGE_EVENTS':
return mergeEventStores(eventStore, action.eventStore);
case 'PREV':
case 'NEXT':
case 'CHANGE_DATE':
case 'CHANGE_VIEW_TYPE':
if(dateProfile){
return expandRecurring(eventStore, dateProfile.activeRange, context);
}else{
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;
});
case 'REMOVE_ALL_EVENTS':
return createEmptyEventStore();
default:
return eventStore;
}}
function receiveRawEvents(eventStore, eventSource, fetchId, fetchRange, rawEvents, context){
if(eventSource &&
fetchId===eventSource.latestFetchId
){
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 < rawEvents_1.length; _i++){
var rawEvent=rawEvents_1[_i];
var refinedEvent=func(rawEvent);
if(refinedEvent){
refinedEvents.push(refinedEvent);
}
else if(refinedEvent==null){
refinedEvents.push(rawEvent);
}}
}
return refinedEvents;
}
function addEvent(eventStore, subset, expandRange, context){
if(expandRange){
subset=expandRecurring(subset, expandRange, context);
}
return mergeEventStores(eventStore, subset);
}
function rezoneEventStoreDates(eventStore, oldDateEnv, newDateEnv){
var defs=eventStore.defs;
var instances=mapHash(eventStore.instances, function (instance){
var def=defs[instance.defId];
if(def.allDay||def.recurringDef){
return instance;
}else{
return __assign(__assign({}, instance), { range: {
start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)),
end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo))
}, forcedStartTzo: newDateEnv.canComputeOffset ? null:instance.forcedStartTzo, forcedEndTzo: newDateEnv.canComputeOffset ? null:instance.forcedEndTzo });
}});
return { defs: defs, instances: instances };}
function excludeEventsBySourceId(eventStore, sourceId){
return filterEventStoreDefs(eventStore, function (eventDef){
return eventDef.sourceId!==sourceId;
});
}
function excludeInstances(eventStore, removals){
return {
defs: eventStore.defs,
instances: filterHash(eventStore.instances, function (instance){
return !removals[instance.instanceId];
})
};}
function isInteractionValid(interaction, context){
return isNewPropsValid({ eventDrag: interaction }, context);
}
function isDateSelectionValid(dateSelection, context){
return isNewPropsValid({ dateSelection: dateSelection }, context);
}
function isNewPropsValid(newProps, context){
var calendarState=context.getCurrentData();
var props=__assign({ businessHours: calendarState.businessHours, dateSelection: '', eventStore: calendarState.eventStore, eventUiBases: calendarState.eventUiBases, eventSelection: '', eventDrag: null, eventResize: null }, newProps);
return (context.pluginHooks.isPropsValid||isPropsValid)(props, context);
}
function isPropsValid(state, context, dateSpanMeta, filterConfig){
if(dateSpanMeta===void 0){ dateSpanMeta={};}
if(state.eventDrag&&!isInteractionPropsValid(state, context, dateSpanMeta, filterConfig)){
return false;
}
if(state.dateSelection&&!isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig)){
return false;
}
return true;
}
function isInteractionPropsValid(state, context, dateSpanMeta, filterConfig){
var currentState=context.getCurrentData();
var interaction=state.eventDrag;
var subjectEventStore=interaction.mutatedEvents;
var subjectDefs=subjectEventStore.defs;
var subjectInstances=subjectEventStore.instances;
var subjectConfigs=compileEventUis(subjectDefs, interaction.isEvent ?
state.eventUiBases :
{ '': currentState.selectionConfig }
);
if(filterConfig){
subjectConfigs=mapHash(subjectConfigs, filterConfig);
}
var otherEventStore=excludeInstances(state.eventStore, interaction.affectedEvents.instances);
var otherDefs=otherEventStore.defs;
var otherInstances=otherEventStore.instances;
var otherConfigs=compileEventUis(otherDefs, state.eventUiBases);
for (var subjectInstanceId in subjectInstances){
var subjectInstance=subjectInstances[subjectInstanceId];
var subjectRange=subjectInstance.range;
var subjectConfig=subjectConfigs[subjectInstance.defId];
var subjectDef=subjectDefs[subjectInstance.defId];
if(!allConstraintsPass(subjectConfig.constraints, subjectRange, otherEventStore, state.businessHours, context)){
return false;
}
var eventOverlap=context.options.eventOverlap;
var eventOverlapFunc=typeof eventOverlap==='function' ? eventOverlap:null;
for (var otherInstanceId in otherInstances){
var otherInstance=otherInstances[otherInstanceId];
if(rangesIntersect(subjectRange, otherInstance.range)){
var otherOverlap=otherConfigs[otherInstance.defId].overlap;
if(otherOverlap===false&&interaction.isEvent){
return false;
}
if(subjectConfig.overlap===false){
return false;
}
if(eventOverlapFunc&&!eventOverlapFunc(new EventApi(context, otherDefs[otherInstance.defId], otherInstance),
new EventApi(context, subjectDef, subjectInstance)
)){
return false;
}}
}
var calendarEventStore=currentState.eventStore;
for (var _i=0, _a=subjectConfig.allows; _i < _a.length; _i++){
var subjectAllow=_a[_i];
var subjectDateSpan=__assign(__assign({}, dateSpanMeta), { range: subjectInstance.range, allDay: subjectDef.allDay });
var origDef=calendarEventStore.defs[subjectDef.defId];
var origInstance=calendarEventStore.instances[subjectInstanceId];
var eventApi=void 0;
if(origDef){
eventApi=new EventApi(context, origDef, origInstance);
}else{
eventApi=new EventApi(context, subjectDef);
}
if(!subjectAllow(buildDateSpanApiWithContext(subjectDateSpan, context), eventApi)){
return false;
}}
}
return true;
}
function isDateSelectionPropsValid(state, context, dateSpanMeta, filterConfig){
var relevantEventStore=state.eventStore;
var relevantDefs=relevantEventStore.defs;
var relevantInstances=relevantEventStore.instances;
var selection=state.dateSelection;
var selectionRange=selection.range;
var selectionConfig=context.getCurrentData().selectionConfig;
if(filterConfig){
selectionConfig=filterConfig(selectionConfig);
}
if(!allConstraintsPass(selectionConfig.constraints, selectionRange, relevantEventStore, state.businessHours, context)){
return false;
}
var selectOverlap=context.options.selectOverlap;
var selectOverlapFunc=typeof selectOverlap==='function' ? selectOverlap:null;
for (var relevantInstanceId in relevantInstances){
var relevantInstance=relevantInstances[relevantInstanceId];
if(rangesIntersect(selectionRange, relevantInstance.range)){
if(selectionConfig.overlap===false){
return false;
}
if(selectOverlapFunc&&!selectOverlapFunc(new EventApi(context, relevantDefs[relevantInstance.defId], relevantInstance), null)){
return false;
}}
}
for (var _i=0, _a=selectionConfig.allows; _i < _a.length; _i++){
var selectionAllow=_a[_i];
var fullDateSpan=__assign(__assign({}, dateSpanMeta), selection);
if(!selectionAllow(buildDateSpanApiWithContext(fullDateSpan, context), null)){
return false;
}}
return true;
}
function allConstraintsPass(constraints, subjectRange, otherEventStore, businessHoursUnexpanded, context){
for (var _i=0, constraints_1=constraints; _i < constraints_1.length; _i++){
var constraint=constraints_1[_i];
if(!anyRangesContainRange(constraintToRanges(constraint, subjectRange, otherEventStore, businessHoursUnexpanded, context), subjectRange)){
return false;
}}
return true;
}
function constraintToRanges(constraint, subjectRange,
otherEventStore,
businessHoursUnexpanded,
context
){
if(constraint==='businessHours'){
return eventStoreToRanges(expandRecurring(businessHoursUnexpanded, subjectRange, context));
}
else if(typeof constraint==='string'){
return eventStoreToRanges(filterEventStoreDefs(otherEventStore, function (eventDef){
return eventDef.groupId===constraint;
}));
}
else if(typeof constraint==='object'&&constraint){
return eventStoreToRanges(expandRecurring(constraint, subjectRange, context));
}
return [];
}
function eventStoreToRanges(eventStore){
var instances=eventStore.instances;
var ranges=[];
for (var instanceId in instances){
ranges.push(instances[instanceId].range);
}
return ranges;
}
function anyRangesContainRange(outerRanges, innerRange){
for (var _i=0, outerRanges_1=outerRanges; _i < outerRanges_1.length; _i++){
var outerRange=outerRanges_1[_i];
if(rangeContainsRange(outerRange, innerRange)){
return true;
}}
return false;
}
var DateComponent= (function (_super){
__extends(DateComponent, _super);
function DateComponent(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.uid=guid();
return _this;
}
DateComponent.prototype.prepareHits=function (){
};
DateComponent.prototype.queryHit=function (positionLeft, positionTop, elWidth, elHeight){
return null;
};
DateComponent.prototype.isInteractionValid=function (interaction){
var dateProfile=this.props.dateProfile;
var instances=interaction.mutatedEvents.instances;
if(dateProfile){
for (var instanceId in instances){
if(!rangeContainsRange(dateProfile.validRange, instances[instanceId].range)){
return false;
}}
}
return isInteractionValid(interaction, this.context);
};
DateComponent.prototype.isDateSelectionValid=function (selection){
var dateProfile=this.props.dateProfile;
if(dateProfile &&
!rangeContainsRange(dateProfile.validRange, selection.range)){
return false;
}
return isDateSelectionValid(selection, this.context);
};
DateComponent.prototype.isValidSegDownEl=function (el){
return !this.props.eventDrag &&
!this.props.eventResize &&
!elementClosest(el, '.fc-event-mirror') &&
(this.isPopover()||!this.isInPopover(el));
};
DateComponent.prototype.isValidDateDownEl=function (el){
return !elementClosest(el, '.fc-event:not(.fc-bg-event)') &&
!elementClosest(el, '.fc-daygrid-more-link') &&
!elementClosest(el, 'a[data-navlink]') &&
!this.isInPopover(el);
};
DateComponent.prototype.isPopover=function (){
return false;
};
DateComponent.prototype.isInPopover=function (el){
return Boolean(elementClosest(el, '.fc-popover'));
};
return DateComponent;
}(BaseComponent));
function createPlugin(input){
return {
id: guid(),
deps: input.deps||[],
reducers: input.reducers||[],
contextInit: [].concat(input.contextInit||[]),
eventRefiners: input.eventRefiners||{},
eventDefMemberAdders: input.eventDefMemberAdders||[],
eventSourceRefiners: input.eventSourceRefiners||{},
isDraggableTransformers: input.isDraggableTransformers||[],
eventDragMutationMassagers: input.eventDragMutationMassagers||[],
eventDefMutationAppliers: input.eventDefMutationAppliers||[],
dateSelectionTransformers: input.dateSelectionTransformers||[],
datePointTransforms: input.datePointTransforms||[],
dateSpanTransforms: input.dateSpanTransforms||[],
views: input.views||{},
viewPropsTransformers: input.viewPropsTransformers||[],
isPropsValid: input.isPropsValid||null,
externalDefTransforms: input.externalDefTransforms||[],
eventResizeJoinTransforms: input.eventResizeJoinTransforms||[],
viewContainerAppends: input.viewContainerAppends||[],
eventDropTransformers: input.eventDropTransformers||[],
componentInteractions: input.componentInteractions||[],
calendarInteractions: input.calendarInteractions||[],
themeClasses: input.themeClasses||{},
eventSourceDefs: input.eventSourceDefs||[],
cmdFormatter: input.cmdFormatter,
recurringTypes: input.recurringTypes||[],
namedTimeZonedImpl: input.namedTimeZonedImpl,
initialView: input.initialView||'',
elementDraggingImpl: input.elementDraggingImpl,
optionChangeHandlers: input.optionChangeHandlers||{},
scrollGridImpl: input.scrollGridImpl||null,
contentTypeHandlers: input.contentTypeHandlers||{},
listenerRefiners: input.listenerRefiners||{},
optionRefiners: input.optionRefiners||{},
propSetHandlers: input.propSetHandlers||{}};}
function buildPluginHooks(pluginDefs, globalDefs){
var isAdded={};
var hooks={
reducers: [],
contextInit: [],
eventRefiners: {},
eventDefMemberAdders: [],
eventSourceRefiners: {},
isDraggableTransformers: [],
eventDragMutationMassagers: [],
eventDefMutationAppliers: [],
dateSelectionTransformers: [],
datePointTransforms: [],
dateSpanTransforms: [],
views: {},
viewPropsTransformers: [],
isPropsValid: null,
externalDefTransforms: [],
eventResizeJoinTransforms: [],
viewContainerAppends: [],
eventDropTransformers: [],
componentInteractions: [],
calendarInteractions: [],
themeClasses: {},
eventSourceDefs: [],
cmdFormatter: null,
recurringTypes: [],
namedTimeZonedImpl: null,
initialView: '',
elementDraggingImpl: null,
optionChangeHandlers: {},
scrollGridImpl: null,
contentTypeHandlers: {},
listenerRefiners: {},
optionRefiners: {},
propSetHandlers: {}};
function addDefs(defs){
for (var _i=0, defs_1=defs; _i < defs_1.length; _i++){
var def=defs_1[_i];
if(!isAdded[def.id]){
isAdded[def.id]=true;
addDefs(def.deps);
hooks=combineHooks(hooks, def);
}}
}
if(pluginDefs){
addDefs(pluginDefs);
}
addDefs(globalDefs);
return hooks;
}
function buildBuildPluginHooks(){
var currentOverrideDefs=[];
var currentGlobalDefs=[];
var currentHooks;
return function (overrideDefs, globalDefs){
if(!currentHooks||!isArraysEqual(overrideDefs, currentOverrideDefs)||!isArraysEqual(globalDefs, currentGlobalDefs)){
currentHooks=buildPluginHooks(overrideDefs, globalDefs);
}
currentOverrideDefs=overrideDefs;
currentGlobalDefs=globalDefs;
return currentHooks;
};}
function combineHooks(hooks0, hooks1){
return {
reducers: hooks0.reducers.concat(hooks1.reducers),
contextInit: hooks0.contextInit.concat(hooks1.contextInit),
eventRefiners: __assign(__assign({}, hooks0.eventRefiners), hooks1.eventRefiners),
eventDefMemberAdders: hooks0.eventDefMemberAdders.concat(hooks1.eventDefMemberAdders),
eventSourceRefiners: __assign(__assign({}, hooks0.eventSourceRefiners), hooks1.eventSourceRefiners),
isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),
eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),
eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),
dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),
datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms),
dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),
views: __assign(__assign({}, hooks0.views), hooks1.views),
viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),
isPropsValid: hooks1.isPropsValid||hooks0.isPropsValid,
externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),
eventResizeJoinTransforms: hooks0.eventResizeJoinTransforms.concat(hooks1.eventResizeJoinTransforms),
viewContainerAppends: hooks0.viewContainerAppends.concat(hooks1.viewContainerAppends),
eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),
calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions),
componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions),
themeClasses: __assign(__assign({}, hooks0.themeClasses), hooks1.themeClasses),
eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),
cmdFormatter: hooks1.cmdFormatter||hooks0.cmdFormatter,
recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes),
namedTimeZonedImpl: hooks1.namedTimeZonedImpl||hooks0.namedTimeZonedImpl,
initialView: hooks0.initialView||hooks1.initialView,
elementDraggingImpl: hooks0.elementDraggingImpl||hooks1.elementDraggingImpl,
optionChangeHandlers: __assign(__assign({}, hooks0.optionChangeHandlers), hooks1.optionChangeHandlers),
scrollGridImpl: hooks1.scrollGridImpl||hooks0.scrollGridImpl,
contentTypeHandlers: __assign(__assign({}, hooks0.contentTypeHandlers), hooks1.contentTypeHandlers),
listenerRefiners: __assign(__assign({}, hooks0.listenerRefiners), hooks1.listenerRefiners),
optionRefiners: __assign(__assign({}, hooks0.optionRefiners), hooks1.optionRefiners),
propSetHandlers: __assign(__assign({}, hooks0.propSetHandlers), hooks1.propSetHandlers)
};}
var StandardTheme= (function (_super){
__extends(StandardTheme, _super);
function StandardTheme(){
return _super!==null&&_super.apply(this, arguments)||this;
}
return StandardTheme;
}(Theme));
StandardTheme.prototype.classes={
root: 'fc-theme-standard',
tableCellShaded: 'fc-cell-shaded',
buttonGroup: 'fc-button-group',
button: 'fc-button fc-button-primary',
buttonActive: 'fc-button-active'
};
StandardTheme.prototype.baseIconClass='fc-icon';
StandardTheme.prototype.iconClasses={
close: 'fc-icon-x',
prev: 'fc-icon-chevron-left',
next: 'fc-icon-chevron-right',
prevYear: 'fc-icon-chevrons-left',
nextYear: 'fc-icon-chevrons-right'
};
StandardTheme.prototype.rtlIconClasses={
prev: 'fc-icon-chevron-right',
next: 'fc-icon-chevron-left',
prevYear: 'fc-icon-chevrons-right',
nextYear: 'fc-icon-chevrons-left'
};
StandardTheme.prototype.iconOverrideOption='buttonIcons';
StandardTheme.prototype.iconOverrideCustomButtonOption='icon';
StandardTheme.prototype.iconOverridePrefix='fc-icon-';
function compileViewDefs(defaultConfigs, overrideConfigs){
var hash={};
var viewType;
for (viewType in defaultConfigs){
ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);
}
for (viewType in overrideConfigs){
ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);
}
return hash;
}
function ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs){
if(hash[viewType]){
return hash[viewType];
}
var viewDef=buildViewDef(viewType, hash, defaultConfigs, overrideConfigs);
if(viewDef){
hash[viewType]=viewDef;
}
return viewDef;
}
function buildViewDef(viewType, hash, defaultConfigs, overrideConfigs){
var defaultConfig=defaultConfigs[viewType];
var overrideConfig=overrideConfigs[viewType];
var queryProp=function (name){
return (defaultConfig&&defaultConfig[name]!==null) ? defaultConfig[name] :
((overrideConfig&&overrideConfig[name]!==null) ? overrideConfig[name]:null);
};
var theComponent=queryProp('component');
var superType=queryProp('superType');
var superDef=null;
if(superType){
if(superType===viewType){
throw new Error('Can\'t have a custom view type that references itself');
}
superDef=ensureViewDef(superType, hash, defaultConfigs, overrideConfigs);
}
if(!theComponent&&superDef){
theComponent=superDef.component;
}
if(!theComponent){
return null;
}
return {
type: viewType,
component: theComponent,
defaults: __assign(__assign({}, (superDef ? superDef.defaults:{})), (defaultConfig ? defaultConfig.rawOptions:{})),
overrides: __assign(__assign({}, (superDef ? superDef.overrides:{})), (overrideConfig ? overrideConfig.rawOptions:{}))
};}
var RenderHook= (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));
var CustomContentRenderContext=createContext$1(0);
function ContentHook(props){
return (createElement(CustomContentRenderContext.Consumer, null, function (renderId){ return (createElement(ContentHookInner, __assign({ renderId: renderId }, props))); }));
}
var ContentHookInner= (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.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){
innerContent=normalizeContent(props.defaultContent, props.hookProps);
}
if(innerContent!==undefined){
if(customContentInfo){
customContentInfo.contentVal=innerContent[customContentInfo.contentKey];
}
else if(typeof innerContent==='object'){
for (var contentKey in contentTypeHandlers){
if(innerContent[contentKey]!==undefined){
customContentInfo=this.customContentInfo={
contentKey: contentKey,
contentVal: innerContent[contentKey],
handler: contentTypeHandlers[contentKey]()
};
break;
}}
}
if(customContentInfo){
innerContentVDom=[];
}else{
innerContentVDom=innerContent;
}}
return innerContentVDom;
};
ContentHookInner.prototype.updateCustomContent=function (){
if(this.customContentInfo){
this.customContentInfo.handler(this.innerElRef.current||this.props.backupElRef.current,
this.customContentInfo.contentVal);
}};
return ContentHookInner;
}(BaseComponent));
var MountHook= (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;
callback&&callback(__assign(__assign({}, this.props.hookProps), { el: this.rootEl }));
};
MountHook.prototype.componentWillUnmount=function (){
var callback=this.props.willUnmount;
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);
}else{
return input;
}}
var ViewRoot= (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);
}
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 (rootElRef, 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: rootElRef }, 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){
var denom=greatestDurationDenominator(duration);
durationUnit=denom.unit;
if(denom.value===1){
singleUnit=durationUnit;
singleUnitOverrides=overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].rawOptions:{};}}
}
var queryButtonText=function (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 {
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) ||
viewDef.overrides.buttonText,
buttonTextDefault: queryButtonText(localeDefaults) ||
viewDef.defaults.buttonText ||
queryButtonText(BASE_OPTION_DEFAULTS) ||
viewDef.type
};}
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= (function (){
function DateProfileGenerator(props){
this.props=props;
this.nowDate=getNow(props.nowInput, props.dateEnv);
this.initHiddenDays();
}
DateProfileGenerator.prototype.buildPrev=function (currentDateProfile, currentDate, forceToValid){
var dateEnv=this.props.dateEnv;
var prevDate=dateEnv.subtract(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit),
currentDateProfile.dateIncrement);
return this.build(prevDate, -1, forceToValid);
};
DateProfileGenerator.prototype.buildNext=function (currentDateProfile, currentDate, forceToValid){
var dateEnv=this.props.dateEnv;
var nextDate=dateEnv.add(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit),
currentDateProfile.dateIncrement);
return this.build(nextDate, 1, forceToValid);
};
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);
isValid=rangesIntersect(currentInfo.range, validRange);
return {
validRange: validRange,
currentRange: currentInfo.range,
currentRangeUnit: currentInfo.unit,
isRangeAllDay: isRangeAllDay,
activeRange: activeRange,
renderRange: renderRange,
slotMinTime: props.slotMinTime,
slotMaxTime: props.slotMaxTime,
isValid: isValid,
dateIncrement: this.buildDateIncrement(currentInfo.duration)
};};
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 };};
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 });
};
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;
var end=range.end;
if(usesMinMaxTime){
if(asRoughDays(slotMinTime) < 0){
start=startOfDay(start);
start=dateEnv.add(start, slotMinTime);
}
if(asRoughDays(slotMaxTime) > 1){
end=startOfDay(end);
end=addDays(end, -1);
end=dateEnv.add(end, slotMaxTime);
}}
return { start: start, end: end };};
DateProfileGenerator.prototype.buildRangeFromDuration=function (date, direction, duration, unit){
var _a=this.props, dateEnv=_a.dateEnv, dateAlignment=_a.dateAlignment;
var start;
var end;
var res;
if(!dateAlignment){
var dateIncrement=this.props.dateIncrement;
if(dateIncrement){
if(asRoughMs(dateIncrement) < asRoughMs(duration)){
dateAlignment=greatestDurationDenominator(dateIncrement).unit;
}else{
dateAlignment=unit;
}}else{
dateAlignment=unit;
}}
if(asRoughDays(duration) <=1){
if(this.isHiddenDay(start)){
start=this.skipHiddenDays(start, direction);
start=startOfDay(start);
}}
function computeRes(){
start=dateEnv.startOf(date, dateAlignment);
end=dateEnv.add(start, duration);
res={ start: start, end: end };}
computeRes();
if(!this.trimHiddenDays(res)){
date=this.skipHiddenDays(date, direction);
computeRes();
}
return res;
};
DateProfileGenerator.prototype.buildRangeFromDayCount=function (date, direction, dayCount){
var _a=this.props, dateEnv=_a.dateEnv, dateAlignment=_a.dateAlignment;
var runningCount=0;
var start=date;
var end;
if(dateAlignment){
start=dateEnv.startOf(start, dateAlignment);
}
start=startOfDay(start);
start=this.skipHiddenDays(start, direction);
end=start;
do {
end=addDays(end, 1);
if(!this.isHiddenDay(end)){
runningCount++;
}} while (runningCount < dayCount);
return { start: start, end: end };};
DateProfileGenerator.prototype.buildCustomVisibleRange=function (date){
var props=this.props;
var input=props.visibleRangeInput;
var simpleInput=typeof input==='function'
? input.call(props.calendarApi, props.dateEnv.toDate(date))
: input;
var range=this.refineRange(simpleInput);
if(range&&(range.start==null||range.end==null)){
return null;
}
return range;
};
DateProfileGenerator.prototype.buildRenderRange=function (currentRange, currentRangeUnit, isRangeAllDay){
return currentRange;
};
DateProfileGenerator.prototype.buildDateIncrement=function (fallback){
var dateIncrement=this.props.dateIncrement;
var customAlignment;
if(dateIncrement){
return dateIncrement;
}
else if((customAlignment=this.props.dateAlignment)){
return createDuration(1, customAlignment);
}
else if(fallback){
return fallback;
}else{
return createDuration({ days: 1 });
}};
DateProfileGenerator.prototype.refineRange=function (rangeInput){
if(rangeInput){
var range=parseRange(rangeInput, this.props.dateEnv);
if(range){
range=computeVisibleDayRange(range);
}
return range;
}
return null;
};
DateProfileGenerator.prototype.initHiddenDays=function (){
var hiddenDays=this.props.hiddenDays||[];
var isHiddenDayHash=[];
var dayCnt=0;
var i;
if(this.props.weekends===false){
hiddenDays.push(0, 6);
}
for (i=0; i < 7; i++){
if(!(isHiddenDayHash[i]=hiddenDays.indexOf(i)!==-1)){
dayCnt++;
}}
if(!dayCnt){
throw new Error('invalid hiddenDays');
}
this.isHiddenDayHash=isHiddenDayHash;
};
DateProfileGenerator.prototype.trimHiddenDays=function (range){
var start=range.start;
var end=range.end;
if(start){
start=this.skipHiddenDays(start);
}
if(end){
end=this.skipHiddenDays(end, -1, true);
}
if(start==null||end==null||start < end){
return { start: start, end: end };}
return null;
};
DateProfileGenerator.prototype.isHiddenDay=function (day){
if(day instanceof Date){
day=day.getUTCDay();
}
return this.isHiddenDayHash[day];
};
DateProfileGenerator.prototype.skipHiddenDays=function (date, inc, isExclusive){
if(inc===void 0){ inc=1; }
if(isExclusive===void 0){ isExclusive=false; }
while (this.isHiddenDayHash[(date.getUTCDay() + (isExclusive ? inc:0) + 7) % 7]){
date=addDays(date, inc);
}
return date;
};
return DateProfileGenerator;
}());
function reduceViewType(viewType, action){
switch (action.type){
case 'CHANGE_VIEW_TYPE':
return viewType=action.viewType;
}
return viewType;
}
function reduceDynamicOptionOverrides(dynamicOptionOverrides, action){
var _a;
switch (action.type){
case 'SET_OPTION':
return __assign(__assign({}, dynamicOptionOverrides), (_a={}, _a[action.optionName]=action.rawOptionValue, _a));
default:
return dynamicOptionOverrides;
}}
function reduceDateProfile(currentDateProfile, action, currentDate, dateProfileGenerator){
var dp;
switch (action.type){
case 'CHANGE_VIEW_TYPE':
return dateProfileGenerator.build(action.dateMarker||currentDate);
case 'CHANGE_DATE':
if(!currentDateProfile.activeRange ||
!rangeContainsMarker(currentDateProfile.currentRange, action.dateMarker)
){
return dateProfileGenerator.build(action.dateMarker);
}
break;
case 'PREV':
dp=dateProfileGenerator.buildPrev(currentDateProfile, currentDate);
if(dp.isValid){
return dp;
}
break;
case 'NEXT':
dp=dateProfileGenerator.buildNext(currentDateProfile, currentDate);
if(dp.isValid){
return dp;
}
break;
}
return currentDateProfile;
}
function initEventSources(calendarOptions, dateProfile, context){
var activeRange=dateProfile ? dateProfile.activeRange:null;
return addSources({}, parseInitialSources(calendarOptions, context), activeRange, context);
}
function reduceEventSources(eventSources, action, dateProfile, context){
var activeRange=dateProfile ? dateProfile.activeRange:null;
switch (action.type){
case 'ADD_EVENT_SOURCES':
return addSources(eventSources, action.sources, activeRange, context);
case 'REMOVE_EVENT_SOURCE':
return removeSource(eventSources, action.sourceId);
case 'PREV':
case 'NEXT':
case 'CHANGE_DATE':
case 'CHANGE_VIEW_TYPE':
if(dateProfile){
return fetchDirtySources(eventSources, activeRange, context);
}else{
return eventSources;
}
case 'FETCH_EVENT_SOURCES':
return fetchSourcesByIds(eventSources, action.sourceIds ?
arrayToHash(action.sourceIds) :
excludeStaticSources(eventSources, context), activeRange, context);
case 'RECEIVE_EVENTS':
case 'RECEIVE_EVENT_ERROR':
return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange);
case 'REMOVE_ALL_EVENT_SOURCES':
return {};
default:
return eventSources;
}}
function reduceEventSourcesNewTimeZone(eventSources, dateProfile, context){
var activeRange=dateProfile ? dateProfile.activeRange:null;
return fetchSourcesByIds(eventSources, excludeStaticSources(eventSources, context), activeRange, context);
}
function computeEventSourceLoadingLevel(eventSources){
var cnt=0;
for (var sourceId in eventSources){
if(eventSources[sourceId].isFetching){
cnt++;
}}
return cnt;
}
function addSources(eventSourceHash, sources, fetchRange, context){
var hash={};
for (var _i=0, sources_1=sources; _i < sources_1.length; _i++){
var source=sources_1[_i];
hash[source.sourceId]=source;
}
if(fetchRange){
hash=fetchDirtySources(hash, fetchRange, context);
}
return __assign(__assign({}, eventSourceHash), hash);
}
function removeSource(eventSourceHash, sourceId){
return filterHash(eventSourceHash, function (eventSource){
return eventSource.sourceId!==sourceId;
});
}
function fetchDirtySources(sourceHash, fetchRange, context){
return fetchSourcesByIds(sourceHash, filterHash(sourceHash, function (eventSource){
return isSourceDirty(eventSource, fetchRange, context);
}), fetchRange, context);
}
function isSourceDirty(eventSource, fetchRange, context){
if(!doesSourceNeedRange(eventSource, context)){
return !eventSource.latestFetchId;
}else{
return !context.options.lazyFetching ||
!eventSource.fetchRange ||
eventSource.isFetching ||
fetchRange.start < eventSource.fetchRange.start ||
fetchRange.end > eventSource.fetchRange.end;
}}
function fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, context){
var nextSources={};
for (var sourceId in prevSources){
var source=prevSources[sourceId];
if(sourceIdHash[sourceId]){
nextSources[sourceId]=fetchSource(source, fetchRange, context);
}else{
nextSources[sourceId]=source;
}}
return nextSources;
}
function fetchSource(eventSource, fetchRange, context){
var options=context.options, calendarApi=context.calendarApi;
var sourceDef=context.pluginHooks.eventSourceDefs[eventSource.sourceDefId];
var fetchId=guid();
sourceDef.fetch({
eventSource: eventSource,
range: fetchRange,
context: context
}, function (res){
var rawEvents=res.rawEvents;
if(options.eventSourceSuccess){
rawEvents=options.eventSourceSuccess.call(calendarApi, rawEvents, res.xhr)||rawEvents;
}
if(eventSource.success){
rawEvents=eventSource.success.call(calendarApi, rawEvents, res.xhr)||rawEvents;
}
context.dispatch({
type: 'RECEIVE_EVENTS',
sourceId: eventSource.sourceId,
fetchId: fetchId,
fetchRange: fetchRange,
rawEvents: rawEvents
});
}, function (error){
console.warn(error.message, error);
if(options.eventSourceFailure){
options.eventSourceFailure.call(calendarApi, error);
}
if(eventSource.failure){
eventSource.failure(error);
}
context.dispatch({
type: 'RECEIVE_EVENT_ERROR',
sourceId: eventSource.sourceId,
fetchId: fetchId,
fetchRange: fetchRange,
error: error
});
});
return __assign(__assign({}, eventSource), { isFetching: true, latestFetchId: fetchId });
}
function receiveResponse(sourceHash, sourceId, fetchId, fetchRange){
var _a;
var eventSource=sourceHash[sourceId];
if(eventSource &&
fetchId===eventSource.latestFetchId){
return __assign(__assign({}, sourceHash), (_a={}, _a[sourceId]=__assign(__assign({}, eventSource), { isFetching: false, fetchRange: fetchRange
}), _a));
}
return sourceHash;
}
function excludeStaticSources(eventSources, context){
return filterHash(eventSources, function (eventSource){
return doesSourceNeedRange(eventSource, context);
});
}
function parseInitialSources(rawOptions, context){
var refiners=buildEventSourceRefiners(context);
var rawSources=[].concat(rawOptions.eventSources||[]);
var sources=[];
if(rawOptions.initialEvents){
rawSources.unshift(rawOptions.initialEvents);
}
if(rawOptions.events){
rawSources.unshift(rawOptions.events);
}
for (var _i=0, rawSources_1=rawSources; _i < rawSources_1.length; _i++){
var rawSource=rawSources_1[_i];
var source=parseEventSource(rawSource, context, refiners);
if(source){
sources.push(source);
}}
return sources;
}
function doesSourceNeedRange(eventSource, context){
var defs=context.pluginHooks.eventSourceDefs;
return !defs[eventSource.sourceDefId].ignoreRange;
}
function reduceDateSelection(currentSelection, action){
switch (action.type){
case 'UNSELECT_DATES':
return null;
case 'SELECT_DATES':
return action.selection;
default:
return currentSelection;
}}
function reduceSelectedEvent(currentInstanceId, action){
switch (action.type){
case 'UNSELECT_EVENT':
return '';
case 'SELECT_EVENT':
return action.eventInstanceId;
default:
return currentInstanceId;
}}
function reduceEventDrag(currentDrag, action){
var newDrag;
switch (action.type){
case 'UNSET_EVENT_DRAG':
return null;
case 'SET_EVENT_DRAG':
newDrag=action.state;
return {
affectedEvents: newDrag.affectedEvents,
mutatedEvents: newDrag.mutatedEvents,
isEvent: newDrag.isEvent
};
default:
return currentDrag;
}}
function reduceEventResize(currentResize, action){
var newResize;
switch (action.type){
case 'UNSET_EVENT_RESIZE':
return null;
case 'SET_EVENT_RESIZE':
newResize=action.state;
return {
affectedEvents: newResize.affectedEvents,
mutatedEvents: newResize.mutatedEvents,
isEvent: newResize.isEvent
};
default:
return currentResize;
}}
function parseToolbars(calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi){
var viewsWithButtons=[];
var headerToolbar=calendarOptions.headerToolbar ? parseToolbar(calendarOptions.headerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi, viewsWithButtons):null;
var footerToolbar=calendarOptions.footerToolbar ? parseToolbar(calendarOptions.footerToolbar, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi, viewsWithButtons):null;
return { headerToolbar: headerToolbar, footerToolbar: footerToolbar, viewsWithButtons: viewsWithButtons };}
function parseToolbar(sectionStrHash, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi, viewsWithButtons
){
return mapHash(sectionStrHash, function (sectionStr){ return parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi, viewsWithButtons); });
}
function parseSection(sectionStr, calendarOptions, calendarOptionOverrides, theme, viewSpecs, calendarApi, viewsWithButtons
){
var isRtl=calendarOptions.direction==='rtl';
var calendarCustomButtons=calendarOptions.customButtons||{};
var calendarButtonTextOverrides=calendarOptionOverrides.buttonText||{};
var calendarButtonText=calendarOptions.buttonText||{};
var sectionSubstrs=sectionStr ? sectionStr.split(' '):[];
return sectionSubstrs.map(function (buttonGroupStr){
return buttonGroupStr.split(',').map(function (buttonName){
if(buttonName==='title'){
return { buttonName: buttonName };}else{
var customButtonProps_1;
var viewSpec=void 0;
var buttonClick=void 0;
var buttonIcon=void 0;
var buttonText=void 0; // "
if((customButtonProps_1=calendarCustomButtons[buttonName])){
buttonClick=function (ev){
if(customButtonProps_1.click){
customButtonProps_1.click.call(ev.target, ev, ev.target);
}};
(buttonIcon=theme.getCustomButtonIconClass(customButtonProps_1)) ||
(buttonIcon=theme.getIconClass(buttonName, isRtl)) ||
(buttonText=customButtonProps_1.text);
}
else if((viewSpec=viewSpecs[buttonName])){
viewsWithButtons.push(buttonName);
buttonClick=function (){
calendarApi.changeView(buttonName);
};
(buttonText=viewSpec.buttonTextOverride) ||
(buttonIcon=theme.getIconClass(buttonName, isRtl)) ||
(buttonText=viewSpec.buttonTextDefault);
}
else if(calendarApi[buttonName]){
buttonClick=function (){
calendarApi[buttonName]();
};
(buttonText=calendarButtonTextOverrides[buttonName]) ||
(buttonIcon=theme.getIconClass(buttonName, isRtl)) ||
(buttonText=calendarButtonText[buttonName]);
}
return { buttonName: buttonName, buttonClick: buttonClick, buttonIcon: buttonIcon, buttonText: buttonText };}});
});
}
var eventSourceDef={
ignoreRange: true,
parseMeta: function (refined){
if(Array.isArray(refined.events)){
return refined.events;
}
return null;
},
fetch: function (arg, success){
success({
rawEvents: arg.eventSource.meta
});
}};
var arrayEventSourcePlugin=createPlugin({
eventSourceDefs: [eventSourceDef]
});
var eventSourceDef$1={
parseMeta: function (refined){
if(typeof refined.events==='function'){
return refined.events;
}
return null;
},
fetch: function (arg, success, failure){
var dateEnv=arg.context.dateEnv;
var func=arg.eventSource.meta;
unpromisify(func.bind(null, buildRangeApiWithTimeZone(arg.range, dateEnv)), function (rawEvents){
success({ rawEvents: rawEvents });
}, failure
);
}};
var funcEventSourcePlugin=createPlugin({
eventSourceDefs: [eventSourceDef$1]
});
function requestJson(method, url, params, successCallback, failureCallback){
method=method.toUpperCase();
var body=null;
if(method==='GET'){
url=injectQueryStringParams(url, params);
}else{
body=encodeParams(params);
}
var xhr=new XMLHttpRequest();
xhr.open(method, url, true);
if(method!=='GET'){
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
}
xhr.onload=function (){
if(xhr.status >=200&&xhr.status < 400){
var parsed=false;
var res=void 0;
try {
res=JSON.parse(xhr.responseText);
parsed=true;
}
catch (err){
}
if(parsed){
successCallback(res, xhr);
}else{
failureCallback('Failure parsing JSON', xhr);
}}else{
failureCallback('Request failed', xhr);
}};
xhr.onerror=function (){
failureCallback('Request failed', xhr);
};
xhr.send(body);
}
function injectQueryStringParams(url, params){
return url +
(url.indexOf('?')===-1 ? '?':'&') +
encodeParams(params);
}
function encodeParams(params){
var parts=[];
for (var key in params){
parts.push(encodeURIComponent(key) + '=' + encodeURIComponent(params[key]));
}
return parts.join('&');
}
var JSON_FEED_EVENT_SOURCE_REFINERS={
method: String,
extraParams: identity,
startParam: String,
endParam: String,
timeZoneParam: String
};
var eventSourceDef$2={
parseMeta: function (refined){
if(refined.url){
return {
url: refined.url,
method: (refined.method||'GET').toUpperCase(),
extraParams: refined.extraParams,
startParam: refined.startParam,
endParam: refined.endParam,
timeZoneParam: refined.timeZoneParam
};}
return null;
},
fetch: function (arg, success, failure){
var meta=arg.eventSource.meta;
var requestParams=buildRequestParams(meta, arg.range, arg.context);
requestJson(meta.method, meta.url, requestParams, function (rawEvents, xhr){
success({ rawEvents: rawEvents, xhr: xhr });
}, function (errorMessage, xhr){
failure({ message: errorMessage, xhr: xhr });
});
}};
var jsonFeedEventSourcePlugin=createPlugin({
eventSourceRefiners: JSON_FEED_EVENT_SOURCE_REFINERS,
eventSourceDefs: [eventSourceDef$2]
});
function buildRequestParams(meta, range, context){
var dateEnv=context.dateEnv, options=context.options;
var startParam;
var endParam;
var timeZoneParam;
var customRequestParams;
var params={};
startParam=meta.startParam;
if(startParam==null){
startParam=options.startParam;
}
endParam=meta.endParam;
if(endParam==null){
endParam=options.endParam;
}
timeZoneParam=meta.timeZoneParam;
if(timeZoneParam==null){
timeZoneParam=options.timeZoneParam;
}
if(typeof meta.extraParams==='function'){
customRequestParams=meta.extraParams();
}else{
customRequestParams=meta.extraParams||{};}
__assign(params, customRequestParams);
params[startParam]=dateEnv.formatIso(range.start);
params[endParam]=dateEnv.formatIso(range.end);
if(dateEnv.timeZone!=='local'){
params[timeZoneParam]=dateEnv.timeZone;
}
return params;
}
var SIMPLE_RECURRING_REFINERS={
daysOfWeek: identity,
startTime: createDuration,
endTime: createDuration,
duration: createDuration,
startRecur: identity,
endRecur: identity
};
var recurring={
parse: function (refined, dateEnv){
if(refined.daysOfWeek||refined.startTime||refined.endTime||refined.startRecur||refined.endRecur){
var recurringData={
daysOfWeek: refined.daysOfWeek||null,
startTime: refined.startTime||null,
endTime: refined.endTime||null,
startRecur: refined.startRecur ? dateEnv.createMarker(refined.startRecur):null,
endRecur: refined.endRecur ? dateEnv.createMarker(refined.endRecur):null
};
var duration=void 0;
if(refined.duration){
duration=refined.duration;
}
if(!duration&&refined.startTime&&refined.endTime){
duration=subtractDurations(refined.endTime, refined.startTime);
}
return {
allDayGuess: Boolean(!refined.startTime&&!refined.endTime),
duration: duration,
typeData: recurringData
};}
return null;
},
expand: function (typeData, framingRange, dateEnv){
var clippedFramingRange=intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur });
if(clippedFramingRange){
return expandRanges(typeData.daysOfWeek, typeData.startTime, clippedFramingRange, dateEnv);
}else{
return [];
}}
};
var simpleRecurringEventsPlugin=createPlugin({
recurringTypes: [recurring],
eventRefiners: SIMPLE_RECURRING_REFINERS
});
function expandRanges(daysOfWeek, startTime, framingRange, dateEnv){
var dowHash=daysOfWeek ? arrayToHash(daysOfWeek):null;
var dayMarker=startOfDay(framingRange.start);
var endMarker=framingRange.end;
var instanceStarts=[];
while (dayMarker < endMarker){
var instanceStart
= void 0;
if(!dowHash||dowHash[dayMarker.getUTCDay()]){
if(startTime){
instanceStart=dateEnv.add(dayMarker, startTime);
}else{
instanceStart=dayMarker;
}
instanceStarts.push(instanceStart);
}
dayMarker=addDays(dayMarker, 1);
}
return instanceStarts;
}
var changeHandlerPlugin=createPlugin({
optionChangeHandlers: {
events: function (events, context){
handleEventSources([events], context);
},
eventSources: handleEventSources
}});
function handleEventSources(inputs, context){
var unfoundSources=hashValuesToArray(context.getCurrentData().eventSources);
var newInputs=[];
for (var _i=0, inputs_1=inputs; _i < inputs_1.length; _i++){
var input=inputs_1[_i];
var inputFound=false;
for (var i=0; i < unfoundSources.length; i++){
if(unfoundSources[i]._raw===input){
unfoundSources.splice(i, 1);
inputFound=true;
break;
}}
if(!inputFound){
newInputs.push(input);
}}
for (var _a=0, unfoundSources_1=unfoundSources; _a < unfoundSources_1.length; _a++){
var unfoundSource=unfoundSources_1[_a];
context.dispatch({
type: 'REMOVE_EVENT_SOURCE',
sourceId: unfoundSource.sourceId
});
}
for (var _b=0, newInputs_1=newInputs; _b < newInputs_1.length; _b++){
var newInput=newInputs_1[_b];
context.calendarApi.addEventSource(newInput);
}}
function handleDateProfile(dateProfile, context){
context.emitter.trigger('datesSet', __assign(__assign({}, buildRangeApiWithTimeZone(dateProfile.activeRange, context.dateEnv)), { view: context.viewApi }));
}
function handleEventStore(eventStore, context){
var emitter=context.emitter;
if(emitter.hasHandlers('eventsSet')){
emitter.trigger('eventsSet', buildEventApis(eventStore, context));
}}
var globalPlugins=[
arrayEventSourcePlugin,
funcEventSourcePlugin,
jsonFeedEventSourcePlugin,
simpleRecurringEventsPlugin,
changeHandlerPlugin,
createPlugin({
contentTypeHandlers: {
html: function (){ return injectHtml; },
domNodes: function (){ return injectDomNodes; }},
propSetHandlers: {
dateProfile: handleDateProfile,
eventStore: handleEventStore
}})
];
function injectHtml(el, html){
el.innerHTML=html;
}
function injectDomNodes(el, domNodes){
var oldNodes=Array.prototype.slice.call(el.childNodes);
var newNodes=Array.prototype.slice.call(domNodes);
if(!isArraysEqual(oldNodes, newNodes)){
for (var _i=0, newNodes_1=newNodes; _i < newNodes_1.length; _i++){
var newNode=newNodes_1[_i];
el.appendChild(newNode);
}
oldNodes.forEach(removeElement);
}}
var DelayedRunner= (function (){
function DelayedRunner(drainedOption){
this.drainedOption=drainedOption;
this.isRunning=false;
this.isDirty=false;
this.pauseDepths={};
this.timeoutId=0;
}
DelayedRunner.prototype.request=function (delay){
this.isDirty=true;
if(!this.isPaused()){
this.clearTimeout();
if(delay==null){
this.tryDrain();
}else{
this.timeoutId=setTimeout(
this.tryDrain.bind(this), delay);
}}
};
DelayedRunner.prototype.pause=function (scope){
if(scope===void 0){ scope=''; }
var pauseDepths=this.pauseDepths;
pauseDepths[scope]=(pauseDepths[scope]||0) + 1;
this.clearTimeout();
};
DelayedRunner.prototype.resume=function (scope, force){
if(scope===void 0){ scope=''; }
var pauseDepths=this.pauseDepths;
if(scope in pauseDepths){
if(force){
delete pauseDepths[scope];
}else{
var depth=--pauseDepths[scope];
if(depth <=0){
delete pauseDepths[scope];
}}
this.tryDrain();
}};
DelayedRunner.prototype.isPaused=function (){
return Object.keys(this.pauseDepths).length;
};
DelayedRunner.prototype.tryDrain=function (){
if(!this.isRunning&&!this.isPaused()){
this.isRunning=true;
while (this.isDirty){
this.isDirty=false;
this.drained();
}
this.isRunning=false;
}};
DelayedRunner.prototype.clear=function (){
this.clearTimeout();
this.isDirty=false;
this.pauseDepths={};};
DelayedRunner.prototype.clearTimeout=function (){
if(this.timeoutId){
clearTimeout(this.timeoutId);
this.timeoutId=0;
}};
DelayedRunner.prototype.drained=function (){
if(this.drainedOption){
this.drainedOption();
}};
return DelayedRunner;
}());
var TaskRunner= (function (){
function TaskRunner(runTaskOption, drainedOption){
this.runTaskOption=runTaskOption;
this.drainedOption=drainedOption;
this.queue=[];
this.delayedRunner=new DelayedRunner(this.drain.bind(this));
}
TaskRunner.prototype.request=function (task, delay){
this.queue.push(task);
this.delayedRunner.request(delay);
};
TaskRunner.prototype.pause=function (scope){
this.delayedRunner.pause(scope);
};
TaskRunner.prototype.resume=function (scope, force){
this.delayedRunner.resume(scope, force);
};
TaskRunner.prototype.drain=function (){
var queue=this.queue;
while (queue.length){
var completedTasks=[];
var task=void 0;
while ((task=queue.shift())){
this.runTask(task);
completedTasks.push(task);
}
this.drained(completedTasks);
}};
TaskRunner.prototype.runTask=function (task){
if(this.runTaskOption){
this.runTaskOption(task);
}};
TaskRunner.prototype.drained=function (completedTasks){
if(this.drainedOption){
this.drainedOption(completedTasks);
}};
return TaskRunner;
}());
function buildTitle(dateProfile, viewOptions, dateEnv){
var range;
if(/^(year|month)$/.test(dateProfile.currentRangeUnit)){
range=dateProfile.currentRange;
}else{
range=dateProfile.activeRange;
}
return dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat||buildTitleFormat(dateProfile)), {
isEndExclusive: dateProfile.isRangeAllDay,
defaultSeparator: viewOptions.titleRangeSeparator
});
}
function buildTitleFormat(dateProfile){
var currentRangeUnit=dateProfile.currentRangeUnit;
if(currentRangeUnit==='year'){
return { year: 'numeric' };}
else if(currentRangeUnit==='month'){
return { year: 'numeric', month: 'long' };}else{
var days=diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);
if(days!==null&&days > 1){
return { year: 'numeric', month: 'short', day: 'numeric' };}else{
return { year: 'numeric', month: 'long', day: 'numeric' };}}
}
var CalendarDataManager= (function (){
function CalendarDataManager(props){
var _this=this;
this.computeOptionsData=memoize(this._computeOptionsData);
this.computeCurrentViewData=memoize(this._computeCurrentViewData);
this.organizeRawLocales=memoize(organizeRawLocales);
this.buildLocale=memoize(buildLocale);
this.buildPluginHooks=buildBuildPluginHooks();
this.buildDateEnv=memoize(buildDateEnv$1);
this.buildTheme=memoize(buildTheme);
this.parseToolbars=memoize(parseToolbars);
this.buildViewSpecs=memoize(buildViewSpecs);
this.buildDateProfileGenerator=memoizeObjArg(buildDateProfileGenerator);
this.buildViewApi=memoize(buildViewApi);
this.buildViewUiProps=memoizeObjArg(buildViewUiProps);
this.buildEventUiBySource=memoize(buildEventUiBySource, isPropsEqual);
this.buildEventUiBases=memoize(buildEventUiBases);
this.parseContextBusinessHours=memoizeObjArg(parseContextBusinessHours);
this.buildTitle=memoize(buildTitle);
this.emitter=new Emitter();
this.actionRunner=new TaskRunner(this._handleAction.bind(this), this.updateData.bind(this));
this.currentCalendarOptionsInput={};
this.currentCalendarOptionsRefined={};
this.currentViewOptionsInput={};
this.currentViewOptionsRefined={};
this.currentCalendarOptionsRefiners={};
this.getCurrentData=function (){
return _this.data;
};
this.dispatch=function (action){
_this.actionRunner.request(action);
};
this.props=props;
this.actionRunner.pause();
var dynamicOptionOverrides={};
var optionsData=this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);
var currentViewType=optionsData.calendarOptions.initialView||optionsData.pluginHooks.initialView;
var currentViewData=this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);
props.calendarApi.currentDataManager=this;
this.emitter.setThisContext(props.calendarApi);
this.emitter.setOptions(currentViewData.options);
var currentDate=getInitialDate(optionsData.calendarOptions, optionsData.dateEnv);
var dateProfile=currentViewData.dateProfileGenerator.build(currentDate);
if(!rangeContainsMarker(dateProfile.activeRange, currentDate)){
currentDate=dateProfile.currentRange.start;
}
var calendarContext={
dateEnv: optionsData.dateEnv,
options: optionsData.calendarOptions,
pluginHooks: optionsData.pluginHooks,
calendarApi: props.calendarApi,
dispatch: this.dispatch,
emitter: this.emitter,
getCurrentData: this.getCurrentData
};
for (var _i=0, _a=optionsData.pluginHooks.contextInit; _i < _a.length; _i++){
var callback=_a[_i];
callback(calendarContext);
}
var eventSources=initEventSources(optionsData.calendarOptions, dateProfile, calendarContext);
var initialState={
dynamicOptionOverrides: dynamicOptionOverrides,
currentViewType: currentViewType,
currentDate: currentDate,
dateProfile: dateProfile,
businessHours: this.parseContextBusinessHours(calendarContext),
eventSources: eventSources,
eventUiBases: {},
loadingLevel: computeEventSourceLoadingLevel(eventSources),
eventStore: createEmptyEventStore(),
renderableEventStore: createEmptyEventStore(),
dateSelection: null,
eventSelection: '',
eventDrag: null,
eventResize: null,
selectionConfig: this.buildViewUiProps(calendarContext).selectionConfig
};
var contextAndState=__assign(__assign({}, calendarContext), initialState);
for (var _b=0, _c=optionsData.pluginHooks.reducers; _b < _c.length; _b++){
var reducer=_c[_b];
__assign(initialState, reducer(null, null, contextAndState));
}
if(initialState.loadingLevel){
this.emitter.trigger('loading', true);
}
this.state=initialState;
this.updateData();
this.actionRunner.resume();
}
CalendarDataManager.prototype.resetOptions=function (optionOverrides, append){
var props=this.props;
props.optionOverrides=append
? __assign(__assign({}, props.optionOverrides), optionOverrides):optionOverrides;
this.actionRunner.request({
type: 'NOTHING'
});
};
CalendarDataManager.prototype._handleAction=function (action){
var _a=this, props=_a.props, state=_a.state, emitter=_a.emitter;
var dynamicOptionOverrides=reduceDynamicOptionOverrides(state.dynamicOptionOverrides, action);
var optionsData=this.computeOptionsData(props.optionOverrides, dynamicOptionOverrides, props.calendarApi);
var currentViewType=reduceViewType(state.currentViewType, action);
var currentViewData=this.computeCurrentViewData(currentViewType, optionsData, props.optionOverrides, dynamicOptionOverrides);
props.calendarApi.currentDataManager=this;
emitter.setThisContext(props.calendarApi);
emitter.setOptions(currentViewData.options);
var calendarContext={
dateEnv: optionsData.dateEnv,
options: optionsData.calendarOptions,
pluginHooks: optionsData.pluginHooks,
calendarApi: props.calendarApi,
dispatch: this.dispatch,
emitter: emitter,
getCurrentData: this.getCurrentData
};
var currentDate=state.currentDate;
var dateProfile=state.dateProfile;
if(this.data&&this.data.dateProfileGenerator!==currentViewData.dateProfileGenerator){
dateProfile=currentViewData.dateProfileGenerator.build(currentDate);
}
currentDate=reduceCurrentDate(currentDate, action);
dateProfile=reduceDateProfile(dateProfile, action, currentDate, currentViewData.dateProfileGenerator);
if(!rangeContainsMarker(dateProfile.currentRange, currentDate)){
currentDate=dateProfile.currentRange.start;
}
var eventSources=reduceEventSources(state.eventSources, action, dateProfile, calendarContext);
var eventSourceLoadingLevel=computeEventSourceLoadingLevel(eventSources);
var eventStore=reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendarContext);
var renderableEventStore=(eventSourceLoadingLevel&&!currentViewData.options.progressiveEventRendering) ?
(state.renderableEventStore||eventStore) :
eventStore;
var _b=this.buildViewUiProps(calendarContext), eventUiSingleBase=_b.eventUiSingleBase, selectionConfig=_b.selectionConfig;
var eventUiBySource=this.buildEventUiBySource(eventSources);
var eventUiBases=this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource);
var prevLoadingLevel=state.loadingLevel||0;
var loadingLevel=eventSourceLoadingLevel;
var newState={
dynamicOptionOverrides: dynamicOptionOverrides,
currentViewType: currentViewType,
currentDate: currentDate,
dateProfile: dateProfile,
eventSources: eventSources,
eventStore: eventStore,
renderableEventStore: renderableEventStore,
selectionConfig: selectionConfig,
eventUiBases: eventUiBases,
loadingLevel: loadingLevel,
businessHours: this.parseContextBusinessHours(calendarContext),
dateSelection: reduceDateSelection(state.dateSelection, action),
eventSelection: reduceSelectedEvent(state.eventSelection, action),
eventDrag: reduceEventDrag(state.eventDrag, action),
eventResize: reduceEventResize(state.eventResize, action)
};
var contextAndState=__assign(__assign({}, calendarContext), newState);
for (var _i=0, _c=optionsData.pluginHooks.reducers; _i < _c.length; _i++){
var reducer=_c[_i];
__assign(newState, reducer(state, action, contextAndState));
}
if(!prevLoadingLevel&&loadingLevel){
emitter.trigger('loading', true);
}
else if(prevLoadingLevel&&!loadingLevel){
emitter.trigger('loading', false);
}
this.state=newState;
if(props.onAction){
props.onAction(action);
}};
CalendarDataManager.prototype.updateData=function (){
var _a=this, props=_a.props, state=_a.state;
var oldData=this.data;
var optionsData=this.computeOptionsData(props.optionOverrides, state.dynamicOptionOverrides, props.calendarApi);
var currentViewData=this.computeCurrentViewData(state.currentViewType, optionsData, props.optionOverrides, state.dynamicOptionOverrides);
var data=this.data=__assign(__assign(__assign({ viewTitle: this.buildTitle(state.dateProfile, currentViewData.options, optionsData.dateEnv), calendarApi: props.calendarApi, dispatch: this.dispatch, emitter: this.emitter, getCurrentData: this.getCurrentData }, optionsData), currentViewData), state);
var changeHandlers=optionsData.pluginHooks.optionChangeHandlers;
var oldCalendarOptions=oldData&&oldData.calendarOptions;
var newCalendarOptions=optionsData.calendarOptions;
if(oldCalendarOptions&&oldCalendarOptions!==newCalendarOptions){
if(oldCalendarOptions.timeZone!==newCalendarOptions.timeZone){
state.eventSources=data.eventSources=reduceEventSourcesNewTimeZone(data.eventSources, state.dateProfile, data);
state.eventStore=data.eventStore=rezoneEventStoreDates(data.eventStore, oldData.dateEnv, data.dateEnv);
}
for (var optionName in changeHandlers){
if(oldCalendarOptions[optionName]!==newCalendarOptions[optionName]){
changeHandlers[optionName](newCalendarOptions[optionName], data);
}}
}
if(props.onData){
props.onData(data);
}};
CalendarDataManager.prototype._computeOptionsData=function (optionOverrides, dynamicOptionOverrides, calendarApi){
var _a=this.processRawCalendarOptions(optionOverrides, dynamicOptionOverrides), refinedOptions=_a.refinedOptions, pluginHooks=_a.pluginHooks, localeDefaults=_a.localeDefaults, availableLocaleData=_a.availableLocaleData, extra=_a.extra;
warnUnknownOptions(extra);
var dateEnv=this.buildDateEnv(refinedOptions.timeZone, refinedOptions.locale, refinedOptions.weekNumberCalculation, refinedOptions.firstDay, refinedOptions.weekText, pluginHooks, availableLocaleData, refinedOptions.defaultRangeSeparator);
var viewSpecs=this.buildViewSpecs(pluginHooks.views, optionOverrides, dynamicOptionOverrides, localeDefaults);
var theme=this.buildTheme(refinedOptions, pluginHooks);
var toolbarConfig=this.parseToolbars(refinedOptions, optionOverrides, theme, viewSpecs, calendarApi);
return {
calendarOptions: refinedOptions,
pluginHooks: pluginHooks,
dateEnv: dateEnv,
viewSpecs: viewSpecs,
theme: theme,
toolbarConfig: toolbarConfig,
localeDefaults: localeDefaults,
availableRawLocales: availableLocaleData.map
};};
CalendarDataManager.prototype.processRawCalendarOptions=function (optionOverrides, dynamicOptionOverrides){
var _a=mergeRawOptions([
BASE_OPTION_DEFAULTS,
optionOverrides,
dynamicOptionOverrides
]), locales=_a.locales, locale=_a.locale;
var availableLocaleData=this.organizeRawLocales(locales);
var availableRawLocales=availableLocaleData.map;
var localeDefaults=this.buildLocale(locale||availableLocaleData.defaultCode, availableRawLocales).options;
var pluginHooks=this.buildPluginHooks(optionOverrides.plugins||[], globalPlugins);
var refiners=this.currentCalendarOptionsRefiners=__assign(__assign(__assign(__assign(__assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);
var extra={};
var raw=mergeRawOptions([
BASE_OPTION_DEFAULTS,
localeDefaults,
optionOverrides,
dynamicOptionOverrides
]);
var refined={};
var currentRaw=this.currentCalendarOptionsInput;
var currentRefined=this.currentCalendarOptionsRefined;
var anyChanges=false;
for (var optionName in raw){
if(optionName!=='plugins'){
if(raw[optionName]===currentRaw[optionName] ||
(COMPLEX_OPTION_COMPARATORS[optionName]&&(optionName in currentRaw)&&COMPLEX_OPTION_COMPARATORS[optionName](currentRaw[optionName], raw[optionName]))){
refined[optionName]=currentRefined[optionName];
}
else if(refiners[optionName]){
refined[optionName]=refiners[optionName](raw[optionName]);
anyChanges=true;
}else{
extra[optionName]=currentRaw[optionName];
}}
}
if(anyChanges){
this.currentCalendarOptionsInput=raw;
this.currentCalendarOptionsRefined=refined;
}
return {
rawOptions: this.currentCalendarOptionsInput,
refinedOptions: this.currentCalendarOptionsRefined,
pluginHooks: pluginHooks,
availableLocaleData: availableLocaleData,
localeDefaults: localeDefaults,
extra: extra
};};
CalendarDataManager.prototype._computeCurrentViewData=function (viewType, optionsData, optionOverrides, dynamicOptionOverrides){
var viewSpec=optionsData.viewSpecs[viewType];
if(!viewSpec){
throw new Error("viewType \"" + viewType + "\" is not available. Please make sure you've loaded all neccessary plugins");
}
var _a=this.processRawViewOptions(viewSpec, optionsData.pluginHooks, optionsData.localeDefaults, optionOverrides, dynamicOptionOverrides), refinedOptions=_a.refinedOptions, extra=_a.extra;
warnUnknownOptions(extra);
var dateProfileGenerator=this.buildDateProfileGenerator({
dateProfileGeneratorClass: viewSpec.optionDefaults.dateProfileGeneratorClass,
duration: viewSpec.duration,
durationUnit: viewSpec.durationUnit,
usesMinMaxTime: viewSpec.optionDefaults.usesMinMaxTime,
dateEnv: optionsData.dateEnv,
calendarApi: this.props.calendarApi,
slotMinTime: refinedOptions.slotMinTime,
slotMaxTime: refinedOptions.slotMaxTime,
showNonCurrentDates: refinedOptions.showNonCurrentDates,
dayCount: refinedOptions.dayCount,
dateAlignment: refinedOptions.dateAlignment,
dateIncrement: refinedOptions.dateIncrement,
hiddenDays: refinedOptions.hiddenDays,
weekends: refinedOptions.weekends,
nowInput: refinedOptions.now,
validRangeInput: refinedOptions.validRange,
visibleRangeInput: refinedOptions.visibleRange,
monthMode: refinedOptions.monthMode,
fixedWeekCount: refinedOptions.fixedWeekCount
});
var viewApi=this.buildViewApi(viewType, this.getCurrentData, optionsData.dateEnv);
return { viewSpec: viewSpec, options: refinedOptions, dateProfileGenerator: dateProfileGenerator, viewApi: viewApi };};
CalendarDataManager.prototype.processRawViewOptions=function (viewSpec, pluginHooks, localeDefaults, optionOverrides, dynamicOptionOverrides){
var raw=mergeRawOptions([
BASE_OPTION_DEFAULTS,
viewSpec.optionDefaults,
localeDefaults,
optionOverrides,
viewSpec.optionOverrides,
dynamicOptionOverrides
]);
var refiners=__assign(__assign(__assign(__assign(__assign(__assign({}, BASE_OPTION_REFINERS), CALENDAR_LISTENER_REFINERS), CALENDAR_OPTION_REFINERS), VIEW_OPTION_REFINERS), pluginHooks.listenerRefiners), pluginHooks.optionRefiners);
var refined={};
var currentRaw=this.currentViewOptionsInput;
var currentRefined=this.currentViewOptionsRefined;
var anyChanges=false;
var extra={};
for (var optionName in raw){
if(raw[optionName]===currentRaw[optionName]){
refined[optionName]=currentRefined[optionName];
}else{
if(raw[optionName]===this.currentCalendarOptionsInput[optionName]){
if(optionName in this.currentCalendarOptionsRefined){
refined[optionName]=this.currentCalendarOptionsRefined[optionName];
}}
else if(refiners[optionName]){
refined[optionName]=refiners[optionName](raw[optionName]);
}else{
extra[optionName]=raw[optionName];
}
anyChanges=true;
}}
if(anyChanges){
this.currentViewOptionsInput=raw;
this.currentViewOptionsRefined=refined;
}
return {
rawOptions: this.currentViewOptionsInput,
refinedOptions: this.currentViewOptionsRefined,
extra: extra
};};
return CalendarDataManager;
}());
function buildDateEnv$1(timeZone, explicitLocale, weekNumberCalculation, firstDay, weekText, pluginHooks, availableLocaleData, defaultSeparator){
var locale=buildLocale(explicitLocale||availableLocaleData.defaultCode, availableLocaleData.map);
return new DateEnv({
calendarSystem: 'gregory',
timeZone: timeZone,
namedTimeZoneImpl: pluginHooks.namedTimeZonedImpl,
locale: locale,
weekNumberCalculation: weekNumberCalculation,
firstDay: firstDay,
weekText: weekText,
cmdFormatter: pluginHooks.cmdFormatter,
defaultSeparator: defaultSeparator
});
}
function buildTheme(options, pluginHooks){
var ThemeClass=pluginHooks.themeClasses[options.themeSystem]||StandardTheme;
return new ThemeClass(options);
}
function buildDateProfileGenerator(props){
var DateProfileGeneratorClass=props.dateProfileGeneratorClass||DateProfileGenerator;
return new DateProfileGeneratorClass(props);
}
function buildViewApi(type, getCurrentData, dateEnv){
return new ViewApi(type, getCurrentData, dateEnv);
}
function buildEventUiBySource(eventSources){
return mapHash(eventSources, function (eventSource){
return eventSource.ui;
});
}
function buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource){
var eventUiBases={ '': eventUiSingleBase };
for (var defId in eventDefs){
var def=eventDefs[defId];
if(def.sourceId&&eventUiBySource[def.sourceId]){
eventUiBases[defId]=eventUiBySource[def.sourceId];
}}
return eventUiBases;
}
function buildViewUiProps(calendarContext){
var options=calendarContext.options;
return {
eventUiSingleBase: createEventUi({
display: options.eventDisplay,
editable: options.editable,
startEditable: options.eventStartEditable,
durationEditable: options.eventDurationEditable,
constraint: options.eventConstraint,
overlap: typeof options.eventOverlap==='boolean' ? options.eventOverlap:undefined,
allow: options.eventAllow,
backgroundColor: options.eventBackgroundColor,
borderColor: options.eventBorderColor,
textColor: options.eventTextColor,
color: options.eventColor
}, calendarContext),
selectionConfig: createEventUi({
constraint: options.selectConstraint,
overlap: typeof options.selectOverlap==='boolean' ? options.selectOverlap:undefined,
allow: options.selectAllow
}, calendarContext)
};}
function parseContextBusinessHours(calendarContext){
return parseBusinessHours(calendarContext.options.businessHours, calendarContext);
}
function warnUnknownOptions(options, viewName){
for (var optionName in options){
console.warn("Unknown option '" + optionName + "'" +
(viewName ? " for view '" + viewName + "'":''));
}}
var CalendarDataProvider= (function (_super){
__extends(CalendarDataProvider, _super);
function CalendarDataProvider(props){
var _this=_super.call(this, props)||this;
_this.handleData=function (data){
if(!_this.dataManager){
_this.state=data;
}else{
_this.setState(data);
}};
_this.dataManager=new CalendarDataManager({
optionOverrides: props.optionOverrides,
calendarApi: props.calendarApi,
onData: _this.handleData
});
return _this;
}
CalendarDataProvider.prototype.render=function (){
return this.props.children(this.state);
};
CalendarDataProvider.prototype.componentDidUpdate=function (prevProps){
var newOptionOverrides=this.props.optionOverrides;
if(newOptionOverrides!==prevProps.optionOverrides){
this.dataManager.resetOptions(newOptionOverrides);
}};
return CalendarDataProvider;
}(Component));
function sliceEvents(props, allDay){
return sliceEventStore(props.eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? props.nextDayThreshold:null).fg;
}
var NamedTimeZoneImpl= (function (){
function NamedTimeZoneImpl(timeZoneName){
this.timeZoneName=timeZoneName;
}
return NamedTimeZoneImpl;
}());
var Interaction= (function (){
function Interaction(settings){
this.component=settings.component;
}
Interaction.prototype.destroy=function (){
};
return Interaction;
}());
function parseInteractionSettings(component, input){
return {
component: component,
el: input.el,
useEventCenter: input.useEventCenter!=null ? input.useEventCenter:true
};}
function interactionSettingsToStore(settings){
var _a;
return _a={},
_a[settings.component.uid]=settings,
_a;
}
var interactionSettingsStore={};
var ElementDragging= (function (){
function ElementDragging(el, selector){
this.emitter=new Emitter();
}
ElementDragging.prototype.destroy=function (){
};
ElementDragging.prototype.setMirrorIsVisible=function (bool){
};
ElementDragging.prototype.setMirrorNeedsRevert=function (bool){
};
ElementDragging.prototype.setAutoScrollEnabled=function (bool){
};
return ElementDragging;
}());
var config={};
var DRAG_META_REFINERS={
startTime: createDuration,
duration: createDuration,
create: Boolean,
sourceId: String
};
function parseDragMeta(raw){
var _a=refineProps(raw, DRAG_META_REFINERS), refined=_a.refined, extra=_a.extra;
return {
startTime: refined.startTime||null,
duration: refined.duration||null,
create: refined.create!=null ? refined.create:true,
sourceId: refined.sourceId,
leftoverProps: extra
};}
var Toolbar= (function (_super){
__extends(Toolbar, _super);
function Toolbar(){
return _super!==null&&_super.apply(this, arguments)||this;
}
Toolbar.prototype.render=function (){
var _a=this.props, model=_a.model, extraClassName=_a.extraClassName;
var forceLtr=false;
var startContent, endContent;
var centerContent=model.center;
if(model.left){
forceLtr=true;
startContent=model.left;
}else{
startContent=model.start;
}
if(model.right){
forceLtr=true;
endContent=model.right;
}else{
endContent=model.end;
}
var classNames=[
extraClassName||'',
'fc-toolbar',
forceLtr ? 'fc-toolbar-ltr':''
];
return (createElement("div", { className: classNames.join(' ') },
this.renderSection('start', startContent||[]),
this.renderSection('center', centerContent||[]),
this.renderSection('end', endContent||[])));
};
Toolbar.prototype.renderSection=function (key, widgetGroups){
var props=this.props;
return (createElement(ToolbarSection, { key: key, widgetGroups: widgetGroups, title: props.title, activeButton: props.activeButton, isTodayEnabled: props.isTodayEnabled, isPrevEnabled: props.isPrevEnabled, isNextEnabled: props.isNextEnabled }));
};
return Toolbar;
}(BaseComponent));
var ToolbarSection= (function (_super){
__extends(ToolbarSection, _super);
function ToolbarSection(){
return _super!==null&&_super.apply(this, arguments)||this;
}
ToolbarSection.prototype.render=function (){
var _this=this;
var children=this.props.widgetGroups.map(function (widgetGroup){ return _this.renderWidgetGroup(widgetGroup); });
return createElement.apply(void 0, __spreadArrays(['div', { className: 'fc-toolbar-chunk' }], children));
};
ToolbarSection.prototype.renderWidgetGroup=function (widgetGroup){
var props=this.props;
var theme=this.context.theme;
var children=[];
var isOnlyButtons=true;
for (var _i=0, widgetGroup_1=widgetGroup; _i < widgetGroup_1.length; _i++){
var widget=widgetGroup_1[_i];
var buttonName=widget.buttonName, buttonClick=widget.buttonClick, buttonText=widget.buttonText, buttonIcon=widget.buttonIcon;
if(buttonName==='title'){
isOnlyButtons=false;
children.push(createElement("h2", { className: 'fc-toolbar-title' }, props.title));
}else{
var ariaAttrs=buttonIcon ? { 'aria-label': buttonName }:{};
var buttonClasses=['fc-' + buttonName + '-button', theme.getClass('button')];
if(buttonName===props.activeButton){
buttonClasses.push(theme.getClass('buttonActive'));
}
var isDisabled=(!props.isTodayEnabled&&buttonName==='today') ||
(!props.isPrevEnabled&&buttonName==='prev') ||
(!props.isNextEnabled&&buttonName==='next');
children.push(createElement("button", __assign({ disabled: isDisabled, className: buttonClasses.join(' '), onClick: buttonClick, type: 'button' }, ariaAttrs), buttonText||(buttonIcon ? createElement("span", { className: buttonIcon }):'')));
}}
if(children.length > 1){
var groupClassName=(isOnlyButtons&&theme.getClass('buttonGroup'))||'';
return createElement.apply(void 0, __spreadArrays(['div', { className: groupClassName }], children));
}else{
return children[0];
}};
return ToolbarSection;
}(BaseComponent));
var ViewContainer= (function (_super){
__extends(ViewContainer, _super);
function ViewContainer(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.state={
availableWidth: null
};
_this.handleEl=function (el){
_this.el=el;
setRef(_this.props.elRef, el);
_this.updateAvailableWidth();
};
_this.handleResize=function (){
_this.updateAvailableWidth();
};
return _this;
}
ViewContainer.prototype.render=function (){
var _a=this, props=_a.props, state=_a.state;
var aspectRatio=props.aspectRatio;
var classNames=[
'fc-view-harness',
(aspectRatio||props.liquid||props.height)
? 'fc-view-harness-active'
: 'fc-view-harness-passive'
];
var height='';
var paddingBottom='';
if(aspectRatio){
if(state.availableWidth!==null){
height=state.availableWidth / aspectRatio;
}else{
paddingBottom=(1 / aspectRatio) * 100 + '%';
}}else{
height=props.height||'';
}
return (createElement("div", { ref: this.handleEl, onClick: props.onClick, className: classNames.join(' '), style: { height: height, paddingBottom: paddingBottom }}, props.children));
};
ViewContainer.prototype.componentDidMount=function (){
this.context.addResizeHandler(this.handleResize);
};
ViewContainer.prototype.componentWillUnmount=function (){
this.context.removeResizeHandler(this.handleResize);
};
ViewContainer.prototype.updateAvailableWidth=function (){
if(this.el &&
this.props.aspectRatio
){
this.setState({ availableWidth: this.el.offsetWidth });
}};
return ViewContainer;
}(BaseComponent));
var EventClicking= (function (_super){
__extends(EventClicking, _super);
function EventClicking(settings){
var _this=_super.call(this, settings)||this;
_this.handleSegClick=function (ev, segEl){
var component=_this.component;
var context=component.context;
var seg=getElSeg(segEl);
if(seg &&
component.isValidSegDownEl(ev.target)){
var hasUrlContainer=elementClosest(ev.target, '.fc-event-forced-url');
var url=hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href:'';
context.emitter.trigger('eventClick', {
el: segEl,
event: new EventApi(component.context, seg.eventRange.def, seg.eventRange.instance),
jsEvent: ev,
view: context.viewApi
});
if(url&&!ev.defaultPrevented){
window.location.href=url;
}}
};
_this.destroy=listenBySelector(settings.el, 'click', '.fc-event',
_this.handleSegClick);
return _this;
}
return EventClicking;
}(Interaction));
var EventHovering= (function (_super){
__extends(EventHovering, _super);
function EventHovering(settings){
var _this=_super.call(this, settings)||this;
_this.handleEventElRemove=function (el){
if(el===_this.currentSegEl){
_this.handleSegLeave(null, _this.currentSegEl);
}};
_this.handleSegEnter=function (ev, segEl){
if(getElSeg(segEl)){
_this.currentSegEl=segEl;
_this.triggerEvent('eventMouseEnter', ev, segEl);
}};
_this.handleSegLeave=function (ev, segEl){
if(_this.currentSegEl){
_this.currentSegEl=null;
_this.triggerEvent('eventMouseLeave', ev, segEl);
}};
_this.removeHoverListeners=listenToHoverBySelector(settings.el, '.fc-event',
_this.handleSegEnter, _this.handleSegLeave);
return _this;
}
EventHovering.prototype.destroy=function (){
this.removeHoverListeners();
};
EventHovering.prototype.triggerEvent=function (publicEvName, ev, segEl){
var component=this.component;
var context=component.context;
var seg=getElSeg(segEl);
if(!ev||component.isValidSegDownEl(ev.target)){
context.emitter.trigger(publicEvName, {
el: segEl,
event: new EventApi(context, seg.eventRange.def, seg.eventRange.instance),
jsEvent: ev,
view: context.viewApi
});
}};
return EventHovering;
}(Interaction));
var CalendarContent= (function (_super){
__extends(CalendarContent, _super);
function CalendarContent(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.buildViewContext=memoize(buildViewContext);
_this.buildViewPropTransformers=memoize(buildViewPropTransformers);
_this.buildToolbarProps=memoize(buildToolbarProps);
_this.handleNavLinkClick=buildDelegationHandler('a[data-navlink]', _this._handleNavLinkClick.bind(_this));
_this.headerRef=createRef();
_this.footerRef=createRef();
_this.interactionsStore={};
_this.registerInteractiveComponent=function (component, settingsInput){
var settings=parseInteractionSettings(component, settingsInput);
var DEFAULT_INTERACTIONS=[
EventClicking,
EventHovering
];
var interactionClasses=DEFAULT_INTERACTIONS.concat(_this.props.pluginHooks.componentInteractions);
var interactions=interactionClasses.map(function (interactionClass){
return new interactionClass(settings);
});
_this.interactionsStore[component.uid]=interactions;
interactionSettingsStore[component.uid]=settings;
};
_this.unregisterInteractiveComponent=function (component){
for (var _i=0, _a=_this.interactionsStore[component.uid]; _i < _a.length; _i++){
var listener=_a[_i];
listener.destroy();
}
delete _this.interactionsStore[component.uid];
delete interactionSettingsStore[component.uid];
};
_this.resizeRunner=new DelayedRunner(function (){
_this.props.emitter.trigger('_resize', true);
_this.props.emitter.trigger('windowResize', { view: _this.props.viewApi });
});
_this.handleWindowResize=function (ev){
var options=_this.props.options;
if(options.handleWindowResize &&
ev.target===window
){
_this.resizeRunner.request(options.windowResizeDelay);
}};
return _this;
}
CalendarContent.prototype.render=function (){
var props=this.props;
var toolbarConfig=props.toolbarConfig, options=props.options;
var toolbarProps=this.buildToolbarProps(props.viewSpec, props.dateProfile, props.dateProfileGenerator, props.currentDate, getNow(props.options.now, props.dateEnv),
props.viewTitle);
var viewVGrow=false;
var viewHeight='';
var viewAspectRatio;
if(props.isHeightAuto||props.forPrint){
viewHeight='';
}
else if(options.height!=null){
viewVGrow=true;
}
else if(options.contentHeight!=null){
viewHeight=options.contentHeight;
}else{
viewAspectRatio=Math.max(options.aspectRatio, 0.5);
}
var viewContext=this.buildViewContext(props.viewSpec, props.viewApi, props.options, props.dateProfileGenerator, props.dateEnv, props.theme, props.pluginHooks, props.dispatch, props.getCurrentData, props.emitter, props.calendarApi, this.registerInteractiveComponent, this.unregisterInteractiveComponent);
return (createElement(ViewContextType.Provider, { value: viewContext },
toolbarConfig.headerToolbar &&
createElement(Toolbar, __assign({ ref: this.headerRef, extraClassName: 'fc-header-toolbar', model: toolbarConfig.headerToolbar }, toolbarProps)),
createElement(ViewContainer, { liquid: viewVGrow, height: viewHeight, aspectRatio: viewAspectRatio, onClick: this.handleNavLinkClick },
this.renderView(props),
this.buildAppendContent()),
toolbarConfig.footerToolbar &&
createElement(Toolbar, __assign({ ref: this.footerRef, extraClassName: 'fc-footer-toolbar', model: toolbarConfig.footerToolbar }, toolbarProps))));
};
CalendarContent.prototype.componentDidMount=function (){
var props=this.props;
this.calendarInteractions=props.pluginHooks.calendarInteractions
.map(function (calendarInteractionClass){
return new calendarInteractionClass(props);
});
window.addEventListener('resize', this.handleWindowResize);
var propSetHandlers=props.pluginHooks.propSetHandlers;
for (var propName in propSetHandlers){
propSetHandlers[propName](props[propName], props);
}};
CalendarContent.prototype.componentDidUpdate=function (prevProps){
var props=this.props;
var propSetHandlers=props.pluginHooks.propSetHandlers;
for (var propName in propSetHandlers){
if(props[propName]!==prevProps[propName]){
propSetHandlers[propName](props[propName], props);
}}
};
CalendarContent.prototype.componentWillUnmount=function (){
window.removeEventListener('resize', this.handleWindowResize);
this.resizeRunner.clear();
for (var _i=0, _a=this.calendarInteractions; _i < _a.length; _i++){
var interaction=_a[_i];
interaction.destroy();
}
this.props.emitter.trigger('_unmount');
};
CalendarContent.prototype._handleNavLinkClick=function (ev, anchorEl){
var _a=this.props, dateEnv=_a.dateEnv, options=_a.options, calendarApi=_a.calendarApi;
var navLinkOptions=anchorEl.getAttribute('data-navlink');
navLinkOptions=navLinkOptions ? JSON.parse(navLinkOptions):{};
var dateMarker=dateEnv.createMarker(navLinkOptions.date);
var viewType=navLinkOptions.type;
var customAction=viewType==='day' ? options.navLinkDayClick :
viewType==='week' ? options.navLinkWeekClick:null;
if(typeof customAction==='function'){
customAction.call(calendarApi, dateEnv.toDate(dateMarker), ev);
}else{
if(typeof customAction==='string'){
viewType=customAction;
}
calendarApi.zoomTo(dateMarker, viewType);
}};
CalendarContent.prototype.buildAppendContent=function (){
var props=this.props;
var children=props.pluginHooks.viewContainerAppends.map(function (buildAppendContent){ return buildAppendContent(props); });
return createElement.apply(void 0, __spreadArrays([Fragment, {}], children));
};
CalendarContent.prototype.renderView=function (props){
var pluginHooks=props.pluginHooks;
var viewSpec=props.viewSpec;
var viewProps={
dateProfile: props.dateProfile,
businessHours: props.businessHours,
eventStore: props.renderableEventStore,
eventUiBases: props.eventUiBases,
dateSelection: props.dateSelection,
eventSelection: props.eventSelection,
eventDrag: props.eventDrag,
eventResize: props.eventResize,
isHeightAuto: props.isHeightAuto,
forPrint: props.forPrint
};
var transformers=this.buildViewPropTransformers(pluginHooks.viewPropsTransformers);
for (var _i=0, transformers_1=transformers; _i < transformers_1.length; _i++){
var transformer=transformers_1[_i];
__assign(viewProps, transformer.transform(viewProps, props));
}
var ViewComponent=viewSpec.component;
return (createElement(ViewComponent, __assign({}, viewProps)));
};
return CalendarContent;
}(PureComponent));
function buildToolbarProps(viewSpec, dateProfile, dateProfileGenerator, currentDate, now, title){
var todayInfo=dateProfileGenerator.build(now, undefined, false);
var prevInfo=dateProfileGenerator.buildPrev(dateProfile, currentDate, false);
var nextInfo=dateProfileGenerator.buildNext(dateProfile, currentDate, false);
return {
title: title,
activeButton: viewSpec.type,
isTodayEnabled: todayInfo.isValid&&!rangeContainsMarker(dateProfile.currentRange, now),
isPrevEnabled: prevInfo.isValid,
isNextEnabled: nextInfo.isValid
};}
function buildViewPropTransformers(theClasses){
return theClasses.map(function (theClass){
return new theClass();
});
}
var CalendarRoot= (function (_super){
__extends(CalendarRoot, _super);
function CalendarRoot(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.state={
forPrint: false
};
_this.handleBeforePrint=function (){
_this.setState({ forPrint: true });
};
_this.handleAfterPrint=function (){
_this.setState({ forPrint: false });
};
return _this;
}
CalendarRoot.prototype.render=function (){
var props=this.props;
var options=props.options;
var forPrint=this.state.forPrint;
var isHeightAuto=forPrint||options.height==='auto'||options.contentHeight==='auto';
var height=(!isHeightAuto&&options.height!=null) ? options.height:'';
var classNames=[
'fc',
forPrint ? 'fc-media-print':'fc-media-screen',
'fc-direction-' + options.direction,
props.theme.getClass('root')
];
if(!getCanVGrowWithinCell()){
classNames.push('fc-liquid-hack');
}
return props.children(classNames, height, isHeightAuto, forPrint);
};
CalendarRoot.prototype.componentDidMount=function (){
var emitter=this.props.emitter;
emitter.on('_beforeprint', this.handleBeforePrint);
emitter.on('_afterprint', this.handleAfterPrint);
};
CalendarRoot.prototype.componentWillUnmount=function (){
var emitter=this.props.emitter;
emitter.off('_beforeprint', this.handleBeforePrint);
emitter.off('_afterprint', this.handleAfterPrint);
};
return CalendarRoot;
}(BaseComponent));
function computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt){
if(!datesRepDistinctDays||dayCnt > 10){
return createFormatter({ weekday: 'short' });// "Sat"
}
else if(dayCnt > 1){
return createFormatter({ weekday: 'short', month: 'numeric', day: 'numeric', omitCommas: true });// "Sat 11/12"
}else{
return createFormatter({ weekday: 'long' });// "Saturday"
}}
var CLASS_NAME='fc-col-header-cell';
var TableDateCell= (function (_super){
__extends(TableDateCell, _super);
function TableDateCell(){
return _super!==null&&_super.apply(this, arguments)||this;
}
TableDateCell.prototype.render=function (){
var _a=this.context, dateEnv=_a.dateEnv, options=_a.options, theme=_a.theme, viewApi=_a.viewApi;
var props=this.props;
var date=props.date, dateProfile=props.dateProfile;
var dayMeta=getDateMeta(date, props.todayRange, null, dateProfile);
var classNames=[CLASS_NAME].concat(getDayClassNames(dayMeta, theme));
var text=dateEnv.format(date, props.dayHeaderFormat);
var navLinkAttrs=(options.navLinks&&!dayMeta.isDisabled&&props.colCnt > 1)
? { 'data-navlink': buildNavLinkData(date), tabIndex: 0 }
: {};
var hookProps=__assign(__assign(__assign({ date: dateEnv.toDate(date), view: viewApi }, props.extraHookProps), { text: text }), dayMeta);
return (createElement(RenderHook, { hookProps: hookProps, classNames: options.dayHeaderClassNames, content: options.dayHeaderContent, defaultContent: renderInner, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent){ return (createElement("th", __assign({ ref: rootElRef, className: classNames.concat(customClassNames).join(' '), "data-date": !dayMeta.isDisabled ? formatDayString(date):undefined, colSpan: props.colSpan }, props.extraDataAttrs),
createElement("div", { className: 'fc-scrollgrid-sync-inner' }, !dayMeta.isDisabled &&
createElement("a", __assign({ ref: innerElRef, className: [
'fc-col-header-cell-cushion',
props.isSticky ? 'fc-sticky':''
].join(' ') }, navLinkAttrs), innerContent)))); }));
};
return TableDateCell;
}(BaseComponent));
var TableDowCell= (function (_super){
__extends(TableDowCell, _super);
function TableDowCell(){
return _super!==null&&_super.apply(this, arguments)||this;
}
TableDowCell.prototype.render=function (){
var props=this.props;
var _a=this.context, dateEnv=_a.dateEnv, theme=_a.theme, viewApi=_a.viewApi, options=_a.options;
var date=addDays(new Date(259200000), props.dow);
var dateMeta={
dow: props.dow,
isDisabled: false,
isFuture: false,
isPast: false,
isToday: false,
isOther: false
};
var classNames=[CLASS_NAME].concat(getDayClassNames(dateMeta, theme), props.extraClassNames||[]);
var text=dateEnv.format(date, props.dayHeaderFormat);
var hookProps=__assign(__assign(__assign(__assign({
date: date }, dateMeta), { view: viewApi }), props.extraHookProps), { text: text });
return (createElement(RenderHook, { hookProps: hookProps, classNames: options.dayHeaderClassNames, content: options.dayHeaderContent, defaultContent: renderInner, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent){ return (createElement("th", __assign({ ref: rootElRef, className: classNames.concat(customClassNames).join(' '), colSpan: props.colSpan }, props.extraDataAttrs),
createElement("div", { className: 'fc-scrollgrid-sync-inner' },
createElement("a", { className: [
'fc-col-header-cell-cushion',
props.isSticky ? 'fc-sticky':''
].join(' '), ref: innerElRef }, innerContent)))); }));
};
return TableDowCell;
}(BaseComponent));
function renderInner(hookProps){
return hookProps.text;
}
var NowTimer= (function (_super){
__extends(NowTimer, _super);
function NowTimer(props, context){
var _this=_super.call(this, props, context)||this;
_this.initialNowDate=getNow(context.options.now, context.dateEnv);
_this.initialNowQueriedMs=new Date().valueOf();
_this.state=_this.computeTiming().currentState;
return _this;
}
NowTimer.prototype.render=function (){
var _a=this, props=_a.props, state=_a.state;
return props.children(state.nowDate, state.todayRange);
};
NowTimer.prototype.componentDidMount=function (){
this.setTimeout();
};
NowTimer.prototype.componentDidUpdate=function (prevProps){
if(prevProps.unit!==this.props.unit){
this.clearTimeout();
this.setTimeout();
}};
NowTimer.prototype.componentWillUnmount=function (){
this.clearTimeout();
};
NowTimer.prototype.computeTiming=function (){
var _a=this, props=_a.props, context=_a.context;
var unroundedNow=addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs);
var currentUnitStart=context.dateEnv.startOf(unroundedNow, props.unit);
var nextUnitStart=context.dateEnv.add(currentUnitStart, createDuration(1, props.unit));
var waitMs=nextUnitStart.valueOf() - unroundedNow.valueOf();
return {
currentState: { nowDate: currentUnitStart, todayRange: buildDayRange(currentUnitStart) },
nextState: { nowDate: nextUnitStart, todayRange: buildDayRange(nextUnitStart) },
waitMs: waitMs
};};
NowTimer.prototype.setTimeout=function (){
var _this=this;
var _a=this.computeTiming(), nextState=_a.nextState, waitMs=_a.waitMs;
this.timeoutId=setTimeout(function (){
_this.setState(nextState, function (){
_this.setTimeout();
});
}, waitMs);
};
NowTimer.prototype.clearTimeout=function (){
if(this.timeoutId){
clearTimeout(this.timeoutId);
}};
NowTimer.contextType=ViewContextType;
return NowTimer;
}(Component));
function buildDayRange(date){
var start=startOfDay(date);
var end=addDays(start, 1);
return { start: start, end: end };}
var DayHeader= (function (_super){
__extends(DayHeader, _super);
function DayHeader(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.createDayHeaderFormatter=memoize(createDayHeaderFormatter);
return _this;
}
DayHeader.prototype.render=function (){
var context=this.context;
var _a=this.props, dates=_a.dates, dateProfile=_a.dateProfile, datesRepDistinctDays=_a.datesRepDistinctDays, renderIntro=_a.renderIntro;
var dayHeaderFormat=this.createDayHeaderFormatter(context.options.dayHeaderFormat, datesRepDistinctDays, dates.length);
return (createElement(NowTimer, { unit: 'day' }, function (nowDate, todayRange){ return (createElement("tr", null,
renderIntro&&renderIntro(),
dates.map(function (date){ return (datesRepDistinctDays ?
createElement(TableDateCell, { key: date.toISOString(), date: date, dateProfile: dateProfile, todayRange: todayRange, colCnt: dates.length, dayHeaderFormat: dayHeaderFormat }) :
createElement(TableDowCell, { key: date.getUTCDay(), dow: date.getUTCDay(), dayHeaderFormat: dayHeaderFormat })); }))); }));
};
return DayHeader;
}(BaseComponent));
function createDayHeaderFormatter(explicitFormat, datesRepDistinctDays, dateCnt){
return explicitFormat||computeFallbackHeaderFormat(datesRepDistinctDays, dateCnt);
}
var DaySeriesModel= (function (){
function DaySeriesModel(range, dateProfileGenerator){
var date=range.start;
var end=range.end;
var indices=[];
var dates=[];
var dayIndex=-1;
while (date < end){
if(dateProfileGenerator.isHiddenDay(date)){
indices.push(dayIndex + 0.5);
}else{
dayIndex++;
indices.push(dayIndex);
dates.push(date);
}
date=addDays(date, 1);
}
this.dates=dates;
this.indices=indices;
this.cnt=dates.length;
}
DaySeriesModel.prototype.sliceRange=function (range){
var firstIndex=this.getDateDayIndex(range.start);
var lastIndex=this.getDateDayIndex(addDays(range.end, -1));
var clippedFirstIndex=Math.max(0, firstIndex);
var clippedLastIndex=Math.min(this.cnt - 1, lastIndex);
clippedFirstIndex=Math.ceil(clippedFirstIndex);
clippedLastIndex=Math.floor(clippedLastIndex);
if(clippedFirstIndex <=clippedLastIndex){
return {
firstIndex: clippedFirstIndex,
lastIndex: clippedLastIndex,
isStart: firstIndex===clippedFirstIndex,
isEnd: lastIndex===clippedLastIndex
};}else{
return null;
}};
DaySeriesModel.prototype.getDateDayIndex=function (date){
var indices=this.indices;
var dayOffset=Math.floor(diffDays(this.dates[0], date));
if(dayOffset < 0){
return indices[0] - 1;
}
else if(dayOffset >=indices.length){
return indices[indices.length - 1] + 1;
}else{
return indices[dayOffset];
}};
return DaySeriesModel;
}());
var DayTableModel= (function (){
function DayTableModel(daySeries, breakOnWeeks){
var dates=daySeries.dates;
var daysPerRow;
var firstDay;
var rowCnt;
if(breakOnWeeks){
firstDay=dates[0].getUTCDay();
for (daysPerRow=1; daysPerRow < dates.length; daysPerRow++){
if(dates[daysPerRow].getUTCDay()===firstDay){
break;
}}
rowCnt=Math.ceil(dates.length / daysPerRow);
}else{
rowCnt=1;
daysPerRow=dates.length;
}
this.rowCnt=rowCnt;
this.colCnt=daysPerRow;
this.daySeries=daySeries;
this.cells=this.buildCells();
this.headerDates=this.buildHeaderDates();
}
DayTableModel.prototype.buildCells=function (){
var rows=[];
for (var row=0; row < this.rowCnt; row++){
var cells=[];
for (var col=0; col < this.colCnt; col++){
cells.push(this.buildCell(row, col));
}
rows.push(cells);
}
return rows;
};
DayTableModel.prototype.buildCell=function (row, col){
var date=this.daySeries.dates[row * this.colCnt + col];
return {
key: date.toISOString(),
date: date
};};
DayTableModel.prototype.buildHeaderDates=function (){
var dates=[];
for (var col=0; col < this.colCnt; col++){
dates.push(this.cells[0][col].date);
}
return dates;
};
DayTableModel.prototype.sliceRange=function (range){
var colCnt=this.colCnt;
var seriesSeg=this.daySeries.sliceRange(range);
var segs=[];
if(seriesSeg){
var firstIndex=seriesSeg.firstIndex, lastIndex=seriesSeg.lastIndex;
var index=firstIndex;
while (index <=lastIndex){
var row=Math.floor(index / colCnt);
var nextIndex=Math.min((row + 1) * colCnt, lastIndex + 1);
segs.push({
row: row,
firstCol: index % colCnt,
lastCol: (nextIndex - 1) % colCnt,
isStart: seriesSeg.isStart&&index===firstIndex,
isEnd: seriesSeg.isEnd&&(nextIndex - 1)===lastIndex
});
index=nextIndex;
}}
return segs;
};
return DayTableModel;
}());
var Slicer= (function (){
function Slicer(){
this.sliceBusinessHours=memoize(this._sliceBusinessHours);
this.sliceDateSelection=memoize(this._sliceDateSpan);
this.sliceEventStore=memoize(this._sliceEventStore);
this.sliceEventDrag=memoize(this._sliceInteraction);
this.sliceEventResize=memoize(this._sliceInteraction);
this.forceDayIfListItem=false;
}
Slicer.prototype.sliceProps=function (props, dateProfile, nextDayThreshold, context){
var extraArgs=[];
for (var _i=4; _i < arguments.length; _i++){
extraArgs[_i - 4]=arguments[_i];
}
var eventUiBases=props.eventUiBases;
var eventSegs=this.sliceEventStore.apply(this, __spreadArrays([props.eventStore, eventUiBases, dateProfile, nextDayThreshold], extraArgs));
return {
dateSelectionSegs: this.sliceDateSelection.apply(this, __spreadArrays([props.dateSelection, eventUiBases, context], extraArgs)),
businessHourSegs: this.sliceBusinessHours.apply(this, __spreadArrays([props.businessHours, dateProfile, nextDayThreshold, context], extraArgs)),
fgEventSegs: eventSegs.fg,
bgEventSegs: eventSegs.bg,
eventDrag: this.sliceEventDrag.apply(this, __spreadArrays([props.eventDrag, eventUiBases, dateProfile, nextDayThreshold], extraArgs)),
eventResize: this.sliceEventResize.apply(this, __spreadArrays([props.eventResize, eventUiBases, dateProfile, nextDayThreshold], extraArgs)),
eventSelection: props.eventSelection
};};
Slicer.prototype.sliceNowDate=function (
date, context){
var extraArgs=[];
for (var _i=2; _i < arguments.length; _i++){
extraArgs[_i - 2]=arguments[_i];
}
return this._sliceDateSpan.apply(this, __spreadArrays([{ range: { start: date, end: addMs(date, 1) }, allDay: false },
{},
context], extraArgs));
};
Slicer.prototype._sliceBusinessHours=function (businessHours, dateProfile, nextDayThreshold, context){
var extraArgs=[];
for (var _i=4; _i < arguments.length; _i++){
extraArgs[_i - 4]=arguments[_i];
}
if(!businessHours){
return [];
}
return this._sliceEventStore.apply(this, __spreadArrays([expandRecurring(businessHours, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), context),
{},
dateProfile,
nextDayThreshold], extraArgs)).bg;
};
Slicer.prototype._sliceEventStore=function (eventStore, eventUiBases, dateProfile, nextDayThreshold){
var extraArgs=[];
for (var _i=4; _i < arguments.length; _i++){
extraArgs[_i - 4]=arguments[_i];
}
if(eventStore){
var rangeRes=sliceEventStore(eventStore, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);
return {
bg: this.sliceEventRanges(rangeRes.bg, extraArgs),
fg: this.sliceEventRanges(rangeRes.fg, extraArgs)
};}else{
return { bg: [], fg: [] };}};
Slicer.prototype._sliceInteraction=function (interaction, eventUiBases, dateProfile, nextDayThreshold){
var extraArgs=[];
for (var _i=4; _i < arguments.length; _i++){
extraArgs[_i - 4]=arguments[_i];
}
if(!interaction){
return null;
}
var rangeRes=sliceEventStore(interaction.mutatedEvents, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);
return {
segs: this.sliceEventRanges(rangeRes.fg, extraArgs),
affectedInstances: interaction.affectedEvents.instances,
isEvent: interaction.isEvent
};};
Slicer.prototype._sliceDateSpan=function (dateSpan, eventUiBases, context){
var extraArgs=[];
for (var _i=3; _i < arguments.length; _i++){
extraArgs[_i - 3]=arguments[_i];
}
if(!dateSpan){
return [];
}
var eventRange=fabricateEventRange(dateSpan, eventUiBases, context);
var segs=this.sliceRange.apply(this, __spreadArrays([dateSpan.range], extraArgs));
for (var _a=0, segs_1=segs; _a < segs_1.length; _a++){
var seg=segs_1[_a];
seg.eventRange=eventRange;
}
return segs;
};
/*
"complete" seg means it has component and eventRange
*/
Slicer.prototype.sliceEventRanges=function (eventRanges, extraArgs){
var segs=[];
for (var _i=0, eventRanges_1=eventRanges; _i < eventRanges_1.length; _i++){
var eventRange=eventRanges_1[_i];
segs.push.apply(segs, this.sliceEventRange(eventRange, extraArgs));
}
return segs;
};
/*
"complete" seg means it has component and eventRange
*/
Slicer.prototype.sliceEventRange=function (eventRange, extraArgs){
var dateRange=eventRange.range;
if(this.forceDayIfListItem&&eventRange.ui.display==='list-item'){
dateRange={
start: dateRange.start,
end: addDays(dateRange.start, 1)
};}
var segs=this.sliceRange.apply(this, __spreadArrays([dateRange], extraArgs));
for (var _i=0, segs_2=segs; _i < segs_2.length; _i++){
var seg=segs_2[_i];
seg.eventRange=eventRange;
seg.isStart=eventRange.isStart&&seg.isStart;
seg.isEnd=eventRange.isEnd&&seg.isEnd;
}
return segs;
};
return Slicer;
}());
function computeActiveRange(dateProfile, isComponentAllDay){
var range=dateProfile.activeRange;
if(isComponentAllDay){
return range;
}
return {
start: addMs(range.start, dateProfile.slotMinTime.milliseconds),
end: addMs(range.end, dateProfile.slotMaxTime.milliseconds - 864e5)
};}
var VISIBLE_HIDDEN_RE=/^(visible|hidden)$/;
var Scroller= (function (_super){
__extends(Scroller, _super);
function Scroller(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.handleEl=function (el){
_this.el=el;
setRef(_this.props.elRef, el);
};
return _this;
}
Scroller.prototype.render=function (){
var props=this.props;
var liquid=props.liquid, liquidIsAbsolute=props.liquidIsAbsolute;
var isAbsolute=liquid&&liquidIsAbsolute;
var className=['fc-scroller'];
if(liquid){
if(liquidIsAbsolute){
className.push('fc-scroller-liquid-absolute');
}else{
className.push('fc-scroller-liquid');
}}
return (createElement("div", { ref: this.handleEl, className: className.join(' '), style: {
overflowX: props.overflowX,
overflowY: props.overflowY,
left: (isAbsolute&&-(props.overcomeLeft||0))||'',
right: (isAbsolute&&-(props.overcomeRight||0))||'',
bottom: (isAbsolute&&-(props.overcomeBottom||0))||'',
marginLeft: (!isAbsolute&&-(props.overcomeLeft||0))||'',
marginRight: (!isAbsolute&&-(props.overcomeRight||0))||'',
marginBottom: (!isAbsolute&&-(props.overcomeBottom||0))||'',
maxHeight: props.maxHeight||''
}}, props.children));
};
Scroller.prototype.needsXScrolling=function (){
if(VISIBLE_HIDDEN_RE.test(this.props.overflowX)){
return false;
}
var el=this.el;
var realClientWidth=this.el.getBoundingClientRect().width - this.getYScrollbarWidth();
var children=el.children;
for (var i=0; i < children.length; i++){
var childEl=children[i];
if(childEl.getBoundingClientRect().width > realClientWidth){
return true;
}}
return false;
};
Scroller.prototype.needsYScrolling=function (){
if(VISIBLE_HIDDEN_RE.test(this.props.overflowY)){
return false;
}
var el=this.el;
var realClientHeight=this.el.getBoundingClientRect().height - this.getXScrollbarWidth();
var children=el.children;
for (var i=0; i < children.length; i++){
var childEl=children[i];
if(childEl.getBoundingClientRect().height > realClientHeight){
return true;
}}
return false;
};
Scroller.prototype.getXScrollbarWidth=function (){
if(VISIBLE_HIDDEN_RE.test(this.props.overflowX)){
return 0;
}else{
return this.el.offsetHeight - this.el.clientHeight;
}};
Scroller.prototype.getYScrollbarWidth=function (){
if(VISIBLE_HIDDEN_RE.test(this.props.overflowY)){
return 0;
}else{
return this.el.offsetWidth - this.el.clientWidth;
}};
return Scroller;
}(BaseComponent));
var RefMap= (function (){
function RefMap(masterCallback){
var _this=this;
this.masterCallback=masterCallback;
this.currentMap={};
this.depths={};
this.callbackMap={};
this.handleValue=function (val, key){
var _a=_this, depths=_a.depths, currentMap=_a.currentMap;
var removed=false;
var added=false;
if(val!==null){
removed=(key in currentMap);
currentMap[key]=val;
depths[key]=(depths[key]||0) + 1;
added=true;
}
else if(--depths[key]===0){
delete currentMap[key];
delete _this.callbackMap[key];
removed=true;
}
if(_this.masterCallback){
if(removed){
_this.masterCallback(null, String(key));
}
if(added){
_this.masterCallback(val, String(key));
}}
};}
RefMap.prototype.createRef=function (key){
var _this=this;
var refCallback=this.callbackMap[key];
if(!refCallback){
refCallback=this.callbackMap[key]=function (val){
_this.handleValue(val, String(key));
};}
return refCallback;
};
RefMap.prototype.collect=function (startIndex, endIndex, step){
return collectFromHash(this.currentMap, startIndex, endIndex, step);
};
RefMap.prototype.getAll=function (){
return hashValuesToArray(this.currentMap);
};
return RefMap;
}());
function computeShrinkWidth(chunkEls){
var shrinkCells=findElements(chunkEls, '.fc-scrollgrid-shrink');
var largestWidth=0;
for (var _i=0, shrinkCells_1=shrinkCells; _i < shrinkCells_1.length; _i++){
var shrinkCell=shrinkCells_1[_i];
largestWidth=Math.max(largestWidth, computeSmallestCellWidth(shrinkCell));
}
return Math.ceil(largestWidth);
}
function getSectionHasLiquidHeight(props, sectionConfig){
return props.liquid&&sectionConfig.liquid;
}
function getAllowYScrolling(props, sectionConfig){
return sectionConfig.maxHeight!=null ||
getSectionHasLiquidHeight(props, sectionConfig);
}
function renderChunkContent(sectionConfig, chunkConfig, arg){
var expandRows=arg.expandRows;
var content=typeof chunkConfig.content==='function' ?
chunkConfig.content(arg) :
createElement('table', {
className: [
chunkConfig.tableClassName,
sectionConfig.syncRowHeights ? 'fc-scrollgrid-sync-table':''
].join(' '),
style: {
minWidth: arg.tableMinWidth,
width: arg.clientWidth,
height: expandRows ? arg.clientHeight:''
}}, arg.tableColGroupNode, createElement('tbody', {}, typeof chunkConfig.rowContent==='function' ? chunkConfig.rowContent(arg):chunkConfig.rowContent));
return content;
}
function isColPropsEqual(cols0, cols1){
return isArraysEqual(cols0, cols1, isPropsEqual);
}
function renderMicroColGroup(cols, shrinkWidth){
var colNodes=[];
for (var _i=0, cols_1=cols; _i < cols_1.length; _i++){
var colProps=cols_1[_i];
var span=colProps.span||1;
for (var i=0; i < span; i++){
colNodes.push(createElement("col", { style: {
width: colProps.width==='shrink' ? sanitizeShrinkWidth(shrinkWidth):(colProps.width||''),
minWidth: colProps.minWidth||''
}}));
}}
return createElement.apply(void 0, __spreadArrays(['colgroup', {}], colNodes));
}
function sanitizeShrinkWidth(shrinkWidth){
return shrinkWidth==null ? 4:shrinkWidth;
}
function hasShrinkWidth(cols){
for (var _i=0, cols_2=cols; _i < cols_2.length; _i++){
var col=cols_2[_i];
if(col.width==='shrink'){
return true;
}}
return false;
}
function getScrollGridClassNames(liquid, context){
var classNames=[
'fc-scrollgrid',
context.theme.getClass('table')
];
if(liquid){
classNames.push('fc-scrollgrid-liquid');
}
return classNames;
}
function getSectionClassNames(sectionConfig, wholeTableVGrow){
var classNames=[
'fc-scrollgrid-section',
'fc-scrollgrid-section-' + sectionConfig.type,
sectionConfig.className
];
if(wholeTableVGrow&&sectionConfig.liquid&&sectionConfig.maxHeight==null){
classNames.push('fc-scrollgrid-section-liquid');
}
if(sectionConfig.isSticky){
classNames.push('fc-scrollgrid-section-sticky');
}
return classNames;
}
function renderScrollShim(arg){
return (createElement("div", { className: 'fc-scrollgrid-sticky-shim', style: {
width: arg.clientWidth,
minWidth: arg.tableMinWidth
}}));
}
function getStickyHeaderDates(options){
var stickyHeaderDates=options.stickyHeaderDates;
if(stickyHeaderDates==null||stickyHeaderDates==='auto'){
stickyHeaderDates=options.height==='auto'||options.viewHeight==='auto';
}
return stickyHeaderDates;
}
function getStickyFooterScrollbar(options){
var stickyFooterScrollbar=options.stickyFooterScrollbar;
if(stickyFooterScrollbar==null||stickyFooterScrollbar==='auto'){
stickyFooterScrollbar=options.height==='auto'||options.viewHeight==='auto';
}
return stickyFooterScrollbar;
}
var SimpleScrollGrid= (function (_super){
__extends(SimpleScrollGrid, _super);
function SimpleScrollGrid(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.processCols=memoize(function (a){ return a; }, isColPropsEqual);
_this.renderMicroColGroup=memoize(renderMicroColGroup);
_this.scrollerRefs=new RefMap();
_this.scrollerElRefs=new RefMap(_this._handleScrollerEl.bind(_this));
_this.state={
shrinkWidth: null,
forceYScrollbars: false,
scrollerClientWidths: {},
scrollerClientHeights: {}};
_this.handleSizing=function (){
_this.setState(__assign({ shrinkWidth: _this.computeShrinkWidth() }, _this.computeScrollerDims()));
};
return _this;
}
SimpleScrollGrid.prototype.render=function (){
var _a=this, props=_a.props, state=_a.state, context=_a.context;
var sectionConfigs=props.sections||[];
var cols=this.processCols(props.cols);
var microColGroupNode=this.renderMicroColGroup(cols, state.shrinkWidth);
var classNames=getScrollGridClassNames(props.liquid, context);
var configCnt=sectionConfigs.length;
var configI=0;
var currentConfig;
var headSectionNodes=[];
var bodySectionNodes=[];
var footSectionNodes=[];
while (configI < configCnt&&(currentConfig=sectionConfigs[configI]).type==='header'){
headSectionNodes.push(this.renderSection(currentConfig, configI, microColGroupNode));
configI++;
}
while (configI < configCnt&&(currentConfig=sectionConfigs[configI]).type==='body'){
bodySectionNodes.push(this.renderSection(currentConfig, configI, microColGroupNode));
configI++;
}
while (configI < configCnt&&(currentConfig=sectionConfigs[configI]).type==='footer'){
footSectionNodes.push(this.renderSection(currentConfig, configI, microColGroupNode));
configI++;
}
var isBuggy = !getCanVGrowWithinCell();
return createElement('table', {
className: classNames.join(' '),
style: { height: props.height }}, Boolean(!isBuggy&&headSectionNodes.length)&&createElement.apply(void 0, __spreadArrays(['thead', {}], headSectionNodes)), Boolean(!isBuggy&&bodySectionNodes.length)&&createElement.apply(void 0, __spreadArrays(['tbody', {}], bodySectionNodes)), Boolean(!isBuggy&&footSectionNodes.length)&&createElement.apply(void 0, __spreadArrays(['tfoot', {}], footSectionNodes)), isBuggy&&createElement.apply(void 0, __spreadArrays(['tbody', {}], headSectionNodes, bodySectionNodes, footSectionNodes)));
};
SimpleScrollGrid.prototype.renderSection=function (sectionConfig, sectionI, microColGroupNode){
if('outerContent' in sectionConfig){
return (createElement(Fragment, { key: sectionConfig.key }, sectionConfig.outerContent));
}
return (createElement("tr", { key: sectionConfig.key, className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, this.renderChunkTd(sectionConfig, sectionI, microColGroupNode, sectionConfig.chunk)));
};
SimpleScrollGrid.prototype.renderChunkTd=function (sectionConfig, sectionI, microColGroupNode, chunkConfig){
if('outerContent' in chunkConfig){
return chunkConfig.outerContent;
}
var props=this.props;
var _a=this.state, forceYScrollbars=_a.forceYScrollbars, scrollerClientWidths=_a.scrollerClientWidths, scrollerClientHeights=_a.scrollerClientHeights;
var needsYScrolling=getAllowYScrolling(props, sectionConfig);
var isLiquid=getSectionHasLiquidHeight(props, sectionConfig);
var overflowY = !props.liquid ? 'visible' :
forceYScrollbars ? 'scroll' :
!needsYScrolling ? 'hidden' :
'auto';
var content=renderChunkContent(sectionConfig, chunkConfig, {
tableColGroupNode: microColGroupNode,
tableMinWidth: '',
clientWidth: scrollerClientWidths[sectionI]!==undefined ? scrollerClientWidths[sectionI]:null,
clientHeight: scrollerClientHeights[sectionI]!==undefined ? scrollerClientHeights[sectionI]:null,
expandRows: sectionConfig.expandRows,
syncRowHeights: false,
rowSyncHeights: [],
reportRowHeightChange: function (){ }});
return (createElement("td", { ref: chunkConfig.elRef },
createElement("div", { className: 'fc-scroller-harness' + (isLiquid ? ' fc-scroller-harness-liquid':'') },
createElement(Scroller, { ref: this.scrollerRefs.createRef(sectionI), elRef: this.scrollerElRefs.createRef(sectionI), overflowY: overflowY, overflowX: !props.liquid ? 'visible':'hidden' , maxHeight: sectionConfig.maxHeight, liquid: isLiquid, liquidIsAbsolute: true  }, content))));
};
SimpleScrollGrid.prototype._handleScrollerEl=function (scrollerEl, key){
var sectionI=parseInt(key, 10);
var chunkConfig=this.props.sections[sectionI].chunk;
setRef(chunkConfig.scrollerElRef, scrollerEl);
};
SimpleScrollGrid.prototype.componentDidMount=function (){
this.handleSizing();
this.context.addResizeHandler(this.handleSizing);
};
SimpleScrollGrid.prototype.componentDidUpdate=function (){
this.handleSizing();
};
SimpleScrollGrid.prototype.componentWillUnmount=function (){
this.context.removeResizeHandler(this.handleSizing);
};
SimpleScrollGrid.prototype.computeShrinkWidth=function (){
return hasShrinkWidth(this.props.cols)
? computeShrinkWidth(this.scrollerElRefs.getAll())
: 0;
};
SimpleScrollGrid.prototype.computeScrollerDims=function (){
var scrollbarWidth=getScrollbarWidths();
var sectionCnt=this.props.sections.length;
var _a=this, scrollerRefs=_a.scrollerRefs, scrollerElRefs=_a.scrollerElRefs;
var forceYScrollbars=false;
var scrollerClientWidths={};
var scrollerClientHeights={};
for (var sectionI=0; sectionI < sectionCnt; sectionI++){
var scroller=scrollerRefs.currentMap[sectionI];
if(scroller&&scroller.needsYScrolling()){
forceYScrollbars=true;
break;
}}
for (var sectionI=0; sectionI < sectionCnt; sectionI++){
var scrollerEl=scrollerElRefs.currentMap[sectionI];
if(scrollerEl){
var harnessEl=scrollerEl.parentNode;
scrollerClientWidths[sectionI]=Math.floor(harnessEl.getBoundingClientRect().width - (forceYScrollbars
? scrollbarWidth.y
: 0));
scrollerClientHeights[sectionI]=Math.floor(harnessEl.getBoundingClientRect().height
);
}}
return { forceYScrollbars: forceYScrollbars, scrollerClientWidths: scrollerClientWidths, scrollerClientHeights: scrollerClientHeights };};
return SimpleScrollGrid;
}(BaseComponent));
SimpleScrollGrid.addStateEquality({
scrollerClientWidths: isPropsEqual,
scrollerClientHeights: isPropsEqual
});
var EventRoot= (function (_super){
__extends(EventRoot, _super);
function EventRoot(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.elRef=createRef();
return _this;
}
EventRoot.prototype.render=function (){
var _a=this, props=_a.props, context=_a.context;
var options=context.options;
var seg=props.seg;
var eventRange=seg.eventRange;
var ui=eventRange.ui;
var hookProps={
event: new EventApi(context, eventRange.def, eventRange.instance),
view: context.viewApi,
timeText: props.timeText,
textColor: ui.textColor,
backgroundColor: ui.backgroundColor,
borderColor: ui.borderColor,
isDraggable: !props.disableDragging&&computeSegDraggable(seg, context),
isStartResizable: !props.disableResizing&&computeSegStartResizable(seg, context),
isEndResizable: !props.disableResizing&&computeSegEndResizable(seg),
isMirror: Boolean(props.isDragging||props.isResizing||props.isDateSelecting),
isStart: Boolean(seg.isStart),
isEnd: Boolean(seg.isEnd),
isPast: Boolean(props.isPast),
isFuture: Boolean(props.isFuture),
isToday: Boolean(props.isToday),
isSelected: Boolean(props.isSelected),
isDragging: Boolean(props.isDragging),
isResizing: Boolean(props.isResizing)
};
var standardClassNames=getEventClassNames(hookProps).concat(ui.classNames);
return (createElement(RenderHook, { hookProps: hookProps, classNames: options.eventClassNames, content: options.eventContent, defaultContent: props.defaultContent, didMount: options.eventDidMount, willUnmount: options.eventWillUnmount, elRef: this.elRef }, function (rootElRef, customClassNames, innerElRef, innerContent){ return props.children(rootElRef, standardClassNames.concat(customClassNames), innerElRef, innerContent, hookProps); }));
};
EventRoot.prototype.componentDidMount=function (){
setElSeg(this.elRef.current, this.props.seg);
};
EventRoot.prototype.componentDidUpdate=function (prevProps){
var seg=this.props.seg;
if(seg!==prevProps.seg){
setElSeg(this.elRef.current, seg);
}};
return EventRoot;
}(BaseComponent));
var StandardEvent= (function (_super){
__extends(StandardEvent, _super);
function StandardEvent(){
return _super!==null&&_super.apply(this, arguments)||this;
}
StandardEvent.prototype.render=function (){
var _a=this, props=_a.props, context=_a.context;
var seg=props.seg;
var timeFormat=context.options.eventTimeFormat||props.defaultTimeFormat;
var timeText=buildSegTimeText(seg, timeFormat, context, props.defaultDisplayEventTime, props.defaultDisplayEventEnd);
return (createElement(EventRoot, { seg: seg, timeText: timeText, disableDragging: props.disableDragging, disableResizing: props.disableResizing, defaultContent: props.defaultContent||renderInnerContent, isDragging: props.isDragging, isResizing: props.isResizing, isDateSelecting: props.isDateSelecting, isSelected: props.isSelected, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, function (rootElRef, classNames, innerElRef, innerContent, hookProps){ return (createElement("a", __assign({ className: props.extraClassNames.concat(classNames).join(' '), style: {
borderColor: hookProps.borderColor,
backgroundColor: hookProps.backgroundColor
}, ref: rootElRef }, getSegAnchorAttrs(seg)),
createElement("div", { className: 'fc-event-main', ref: innerElRef, style: { color: hookProps.textColor }}, innerContent),
hookProps.isStartResizable &&
createElement("div", { className: 'fc-event-resizer fc-event-resizer-start' }),
hookProps.isEndResizable &&
createElement("div", { className: 'fc-event-resizer fc-event-resizer-end' }))); }));
};
return StandardEvent;
}(BaseComponent));
function renderInnerContent(innerProps){
return (createElement("div", { className: 'fc-event-main-frame' },
innerProps.timeText &&
createElement("div", { className: 'fc-event-time' }, innerProps.timeText),
createElement("div", { className: 'fc-event-title-container' },
createElement("div", { className: 'fc-event-title fc-sticky' }, innerProps.event.title||createElement(Fragment, null, "\u00A0")))));
}
function getSegAnchorAttrs(seg){
var url=seg.eventRange.def.url;
return url ? { href: url }:{};}
var NowIndicatorRoot=function (props){ return (createElement(ViewContextType.Consumer, null, function (context){
var options=context.options;
var hookProps={
isAxis: props.isAxis,
date: context.dateEnv.toDate(props.date),
view: context.viewApi
};
return (createElement(RenderHook, { hookProps: hookProps, classNames: options.nowIndicatorClassNames, content: options.nowIndicatorContent, didMount: options.nowIndicatorDidMount, willUnmount: options.nowIndicatorWillUnmount }, props.children));
})); };
var DAY_NUM_FORMAT=createFormatter({ day: 'numeric' });
var DayCellRoot= (function (_super){
__extends(DayCellRoot, _super);
function DayCellRoot(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.refineHookProps=memoizeObjArg(refineHookProps);
_this.normalizeClassNames=buildClassNameNormalizer();
return _this;
}
DayCellRoot.prototype.render=function (){
var _a=this, props=_a.props, context=_a.context;
var options=context.options;
var hookProps=this.refineHookProps({
date: props.date,
dateProfile: props.dateProfile,
todayRange: props.todayRange,
showDayNumber: props.showDayNumber,
extraProps: props.extraHookProps,
viewApi: context.viewApi,
dateEnv: context.dateEnv
});
var classNames=getDayClassNames(hookProps, context.theme).concat(hookProps.isDisabled
? []
: this.normalizeClassNames(options.dayCellClassNames, hookProps));
var dataAttrs=hookProps.isDisabled ? {}:{
'data-date': formatDayString(props.date)
};
return (createElement(MountHook, { hookProps: hookProps, didMount: options.dayCellDidMount, willUnmount: options.dayCellWillUnmount, elRef: props.elRef }, function (rootElRef){ return props.children(rootElRef, classNames, dataAttrs, hookProps.isDisabled); }));
};
return DayCellRoot;
}(BaseComponent));
var DayCellContent= (function (_super){
__extends(DayCellContent, _super);
function DayCellContent(){
return _super!==null&&_super.apply(this, arguments)||this;
}
DayCellContent.prototype.render=function (){
var _a=this, props=_a.props, context=_a.context;
var options=context.options;
var hookProps=refineHookProps({
date: props.date,
dateProfile: props.dateProfile,
todayRange: props.todayRange,
showDayNumber: props.showDayNumber,
extraProps: props.extraHookProps,
viewApi: context.viewApi,
dateEnv: context.dateEnv
});
return (createElement(ContentHook, { hookProps: hookProps, content: options.dayCellContent, defaultContent: props.defaultContent }, props.children));
};
return DayCellContent;
}(BaseComponent));
function refineHookProps(raw){
var date=raw.date, dateEnv=raw.dateEnv;
var dayMeta=getDateMeta(date, raw.todayRange, null, raw.dateProfile);
return __assign(__assign(__assign({ date: dateEnv.toDate(date), view: raw.viewApi }, dayMeta), { dayNumberText: raw.showDayNumber ? dateEnv.format(date, DAY_NUM_FORMAT):'' }), raw.extraProps);
}
function renderFill(fillType){
return (createElement("div", { className: "fc-" + fillType }));
}
var BgEvent=function (props){ return (createElement(EventRoot, { defaultContent: renderInnerContent$1, seg: props.seg , timeText: '' , disableDragging: true, disableResizing: true, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: false, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, function (rootElRef, classNames, innerElRef, innerContent, hookProps){ return (createElement("div", { ref: rootElRef, className: ['fc-bg-event'].concat(classNames).join(' '), style: {
backgroundColor: hookProps.backgroundColor
}}, innerContent)); })); };
function renderInnerContent$1(props){
var title=props.event.title;
return title&&(createElement("div", { className: 'fc-event-title' }, props.event.title));
}
var WeekNumberRoot=function (props){ return (createElement(ViewContextType.Consumer, null, function (context){
var dateEnv=context.dateEnv, options=context.options;
var date=props.date;
var format=options.weekNumberFormat||props.defaultFormat;
var num=dateEnv.computeWeekNumber(date);
var text=dateEnv.format(date, format);
var hookProps={ num: num, text: text, date: date };
return (createElement(RenderHook, { hookProps: hookProps, classNames: options.weekNumberClassNames, content: options.weekNumberContent, defaultContent: renderInner$1, didMount: options.weekNumberDidMount, willUnmount: options.weekNumberWillUnmount }, props.children));
})); };
function renderInner$1(innerProps){
return innerProps.text;
}
var version='<%=version %>';
var Calendar= (function (_super){
__extends(Calendar, _super);
function Calendar(el, optionOverrides){
if(optionOverrides===void 0){ optionOverrides={};}
var _this=_super.call(this)||this;
_this.isRendering=false;
_this.isRendered=false;
_this.currentClassNames=[];
_this.customContentRenderId=0;
_this.handleAction=function (action){
switch (action.type){
case 'SET_EVENT_DRAG':
case 'SET_EVENT_RESIZE':
_this.renderRunner.tryDrain();
}};
_this.handleData=function (data){
_this.currentData=data;
_this.renderRunner.request(data.calendarOptions.rerenderDelay);
};
_this.handleRenderRequest=function (){
if(_this.isRendering){
_this.isRendered=true;
var currentData_1=_this.currentData;
render(createElement(CalendarRoot, { options: currentData_1.calendarOptions, theme: currentData_1.theme, emitter: currentData_1.emitter }, function (classNames, height, isHeightAuto, forPrint){
_this.setClassNames(classNames);
_this.setHeight(height);
return (createElement(CustomContentRenderContext.Provider, { value: _this.customContentRenderId },
createElement(CalendarContent, __assign({ isHeightAuto: isHeightAuto, forPrint: forPrint }, currentData_1))));
}), _this.el);
}
else if(_this.isRendered){
_this.isRendered=false;
render(null, _this.el);
_this.setClassNames([]);
_this.setHeight('');
}
flushToDom$1();
};
_this.el=el;
_this.renderRunner=new DelayedRunner(_this.handleRenderRequest);
new CalendarDataManager({
optionOverrides: optionOverrides,
calendarApi: _this,
onAction: _this.handleAction,
onData: _this.handleData
});
return _this;
}
Object.defineProperty(Calendar.prototype, "view", {
get: function (){ return this.currentData.viewApi; }
,
enumerable: false,
configurable: true
});
Calendar.prototype.render=function (){
var wasRendering=this.isRendering;
if(!wasRendering){
this.isRendering=true;
}else{
this.customContentRenderId++;
}
this.renderRunner.request();
if(wasRendering){
this.updateSize();
}};
Calendar.prototype.destroy=function (){
if(this.isRendering){
this.isRendering=false;
this.renderRunner.request();
}};
Calendar.prototype.updateSize=function (){
_super.prototype.updateSize.call(this);
flushToDom$1();
};
Calendar.prototype.batchRendering=function (func){
this.renderRunner.pause('batchRendering');
func();
this.renderRunner.resume('batchRendering');
};
Calendar.prototype.pauseRendering=function (){
this.renderRunner.pause('pauseRendering');
};
Calendar.prototype.resumeRendering=function (){
this.renderRunner.resume('pauseRendering', true);
};
Calendar.prototype.resetOptions=function (optionOverrides, append){
this.currentDataManager.resetOptions(optionOverrides, append);
};
Calendar.prototype.setClassNames=function (classNames){
if(!isArraysEqual(classNames, this.currentClassNames)){
var classList=this.el.classList;
for (var _i=0, _a=this.currentClassNames; _i < _a.length; _i++){
var className=_a[_i];
classList.remove(className);
}
for (var _b=0, classNames_1=classNames; _b < classNames_1.length; _b++){
var className=classNames_1[_b];
classList.add(className);
}
this.currentClassNames=classNames;
}};
Calendar.prototype.setHeight=function (height){
applyStyleProp(this.el, 'height', height);
};
return Calendar;
}(CalendarApi));
config.touchMouseIgnoreWait=500;
var ignoreMouseDepth=0;
var listenerCnt=0;
var isWindowTouchMoveCancelled=false;
var PointerDragging= (function (){
function PointerDragging(containerEl){
var _this=this;
this.subjectEl=null;
this.selector='';
this.handleSelector='';
this.shouldIgnoreMove=false;
this.shouldWatchScroll=true;
this.isDragging=false;
this.isTouchDragging=false;
this.wasTouchScroll=false;
this.handleMouseDown=function (ev){
if(!_this.shouldIgnoreMouse() &&
isPrimaryMouseButton(ev) &&
_this.tryStart(ev)){
var pev=_this.createEventFromMouse(ev, true);
_this.emitter.trigger('pointerdown', pev);
_this.initScrollWatch(pev);
if(!_this.shouldIgnoreMove){
document.addEventListener('mousemove', _this.handleMouseMove);
}
document.addEventListener('mouseup', _this.handleMouseUp);
}};
this.handleMouseMove=function (ev){
var pev=_this.createEventFromMouse(ev);
_this.recordCoords(pev);
_this.emitter.trigger('pointermove', pev);
};
this.handleMouseUp=function (ev){
document.removeEventListener('mousemove', _this.handleMouseMove);
document.removeEventListener('mouseup', _this.handleMouseUp);
_this.emitter.trigger('pointerup', _this.createEventFromMouse(ev));
_this.cleanup();
};
this.handleTouchStart=function (ev){
if(_this.tryStart(ev)){
_this.isTouchDragging=true;
var pev=_this.createEventFromTouch(ev, true);
_this.emitter.trigger('pointerdown', pev);
_this.initScrollWatch(pev);
var targetEl=ev.target;
if(!_this.shouldIgnoreMove){
targetEl.addEventListener('touchmove', _this.handleTouchMove);
}
targetEl.addEventListener('touchend', _this.handleTouchEnd);
targetEl.addEventListener('touchcancel', _this.handleTouchEnd);
window.addEventListener('scroll', _this.handleTouchScroll, true
);
}};
this.handleTouchMove=function (ev){
var pev=_this.createEventFromTouch(ev);
_this.recordCoords(pev);
_this.emitter.trigger('pointermove', pev);
};
this.handleTouchEnd=function (ev){
if(_this.isDragging){
var targetEl=ev.target;
targetEl.removeEventListener('touchmove', _this.handleTouchMove);
targetEl.removeEventListener('touchend', _this.handleTouchEnd);
targetEl.removeEventListener('touchcancel', _this.handleTouchEnd);
window.removeEventListener('scroll', _this.handleTouchScroll, true);
_this.emitter.trigger('pointerup', _this.createEventFromTouch(ev));
_this.cleanup();
_this.isTouchDragging=false;
startIgnoringMouse();
}};
this.handleTouchScroll=function (){
_this.wasTouchScroll=true;
};
this.handleScroll=function (ev){
if(!_this.shouldIgnoreMove){
var pageX=(window.pageXOffset - _this.prevScrollX) + _this.prevPageX;
var pageY=(window.pageYOffset - _this.prevScrollY) + _this.prevPageY;
_this.emitter.trigger('pointermove', {
origEvent: ev,
isTouch: _this.isTouchDragging,
subjectEl: _this.subjectEl,
pageX: pageX,
pageY: pageY,
deltaX: pageX - _this.origPageX,
deltaY: pageY - _this.origPageY
});
}};
this.containerEl=containerEl;
this.emitter=new Emitter();
containerEl.addEventListener('mousedown', this.handleMouseDown);
containerEl.addEventListener('touchstart', this.handleTouchStart, { passive: true });
listenerCreated();
}
PointerDragging.prototype.destroy=function (){
this.containerEl.removeEventListener('mousedown', this.handleMouseDown);
this.containerEl.removeEventListener('touchstart', this.handleTouchStart, { passive: true });
listenerDestroyed();
};
PointerDragging.prototype.tryStart=function (ev){
var subjectEl=this.querySubjectEl(ev);
var downEl=ev.target;
if(subjectEl &&
(!this.handleSelector||elementClosest(downEl, this.handleSelector))){
this.subjectEl=subjectEl;
this.isDragging=true;
this.wasTouchScroll=false;
return true;
}
return false;
};
PointerDragging.prototype.cleanup=function (){
isWindowTouchMoveCancelled=false;
this.isDragging=false;
this.subjectEl=null;
this.destroyScrollWatch();
};
PointerDragging.prototype.querySubjectEl=function (ev){
if(this.selector){
return elementClosest(ev.target, this.selector);
}else{
return this.containerEl;
}};
PointerDragging.prototype.shouldIgnoreMouse=function (){
return ignoreMouseDepth||this.isTouchDragging;
};
PointerDragging.prototype.cancelTouchScroll=function (){
if(this.isDragging){
isWindowTouchMoveCancelled=true;
}};
PointerDragging.prototype.initScrollWatch=function (ev){
if(this.shouldWatchScroll){
this.recordCoords(ev);
window.addEventListener('scroll', this.handleScroll, true);
}};
PointerDragging.prototype.recordCoords=function (ev){
if(this.shouldWatchScroll){
this.prevPageX=ev.pageX;
this.prevPageY=ev.pageY;
this.prevScrollX=window.pageXOffset;
this.prevScrollY=window.pageYOffset;
}};
PointerDragging.prototype.destroyScrollWatch=function (){
if(this.shouldWatchScroll){
window.removeEventListener('scroll', this.handleScroll, true);
}};
PointerDragging.prototype.createEventFromMouse=function (ev, isFirst){
var deltaX=0;
var deltaY=0;
if(isFirst){
this.origPageX=ev.pageX;
this.origPageY=ev.pageY;
}else{
deltaX=ev.pageX - this.origPageX;
deltaY=ev.pageY - this.origPageY;
}
return {
origEvent: ev,
isTouch: false,
subjectEl: this.subjectEl,
pageX: ev.pageX,
pageY: ev.pageY,
deltaX: deltaX,
deltaY: deltaY
};};
PointerDragging.prototype.createEventFromTouch=function (ev, isFirst){
var touches=ev.touches;
var pageX;
var pageY;
var deltaX=0;
var deltaY=0;
if(touches&&touches.length){
pageX=touches[0].pageX;
pageY=touches[0].pageY;
}else{
pageX=ev.pageX;
pageY=ev.pageY;
}
if(isFirst){
this.origPageX=pageX;
this.origPageY=pageY;
}else{
deltaX=pageX - this.origPageX;
deltaY=pageY - this.origPageY;
}
return {
origEvent: ev,
isTouch: true,
subjectEl: this.subjectEl,
pageX: pageX,
pageY: pageY,
deltaX: deltaX,
deltaY: deltaY
};};
return PointerDragging;
}());
function isPrimaryMouseButton(ev){
return ev.button===0&&!ev.ctrlKey;
}
function startIgnoringMouse(){
ignoreMouseDepth++;
setTimeout(function (){
ignoreMouseDepth--;
}, config.touchMouseIgnoreWait);
}
function listenerCreated(){
if(!(listenerCnt++)){
window.addEventListener('touchmove', onWindowTouchMove, { passive: false });
}}
function listenerDestroyed(){
if(!(--listenerCnt)){
window.removeEventListener('touchmove', onWindowTouchMove, { passive: false });
}}
function onWindowTouchMove(ev){
if(isWindowTouchMoveCancelled){
ev.preventDefault();
}}
var ElementMirror= (function (){
function ElementMirror(){
this.isVisible=false;
this.sourceEl=null;
this.mirrorEl=null;
this.sourceElRect=null;
this.parentNode=document.body;
this.zIndex=9999;
this.revertDuration=0;
}
ElementMirror.prototype.start=function (sourceEl, pageX, pageY){
this.sourceEl=sourceEl;
this.sourceElRect=this.sourceEl.getBoundingClientRect();
this.origScreenX=pageX - window.pageXOffset;
this.origScreenY=pageY - window.pageYOffset;
this.deltaX=0;
this.deltaY=0;
this.updateElPosition();
};
ElementMirror.prototype.handleMove=function (pageX, pageY){
this.deltaX=(pageX - window.pageXOffset) - this.origScreenX;
this.deltaY=(pageY - window.pageYOffset) - this.origScreenY;
this.updateElPosition();
};
ElementMirror.prototype.setIsVisible=function (bool){
if(bool){
if(!this.isVisible){
if(this.mirrorEl){
this.mirrorEl.style.display='';
}
this.isVisible=bool;
this.updateElPosition();
}}else{
if(this.isVisible){
if(this.mirrorEl){
this.mirrorEl.style.display='none';
}
this.isVisible=bool;
}}
};
ElementMirror.prototype.stop=function (needsRevertAnimation, callback){
var _this=this;
var done=function (){
_this.cleanup();
callback();
};
if(needsRevertAnimation &&
this.mirrorEl &&
this.isVisible &&
this.revertDuration &&
(this.deltaX||this.deltaY)
){
this.doRevertAnimation(done, this.revertDuration);
}else{
setTimeout(done, 0);
}};
ElementMirror.prototype.doRevertAnimation=function (callback, revertDuration){
var mirrorEl=this.mirrorEl;
var finalSourceElRect=this.sourceEl.getBoundingClientRect();
mirrorEl.style.transition =
'top ' + revertDuration + 'ms,' +
'left ' + revertDuration + 'ms';
applyStyle(mirrorEl, {
left: finalSourceElRect.left,
top: finalSourceElRect.top
});
whenTransitionDone(mirrorEl, function (){
mirrorEl.style.transition='';
callback();
});
};
ElementMirror.prototype.cleanup=function (){
if(this.mirrorEl){
removeElement(this.mirrorEl);
this.mirrorEl=null;
}
this.sourceEl=null;
};
ElementMirror.prototype.updateElPosition=function (){
if(this.sourceEl&&this.isVisible){
applyStyle(this.getMirrorEl(), {
left: this.sourceElRect.left + this.deltaX,
top: this.sourceElRect.top + this.deltaY
});
}};
ElementMirror.prototype.getMirrorEl=function (){
var sourceElRect=this.sourceElRect;
var mirrorEl=this.mirrorEl;
if(!mirrorEl){
mirrorEl=this.mirrorEl=this.sourceEl.cloneNode(true);
mirrorEl.classList.add('fc-unselectable');
mirrorEl.classList.add('fc-event-dragging');
applyStyle(mirrorEl, {
position: 'fixed',
zIndex: this.zIndex,
visibility: '',
boxSizing: 'border-box',
width: sourceElRect.right - sourceElRect.left,
height: sourceElRect.bottom - sourceElRect.top,
right: 'auto',
bottom: 'auto',
margin: 0
});
this.parentNode.appendChild(mirrorEl);
}
return mirrorEl;
};
return ElementMirror;
}());
var ScrollGeomCache= (function (_super){
__extends(ScrollGeomCache, _super);
function ScrollGeomCache(scrollController, doesListening){
var _this=_super.call(this)||this;
_this.handleScroll=function (){
_this.scrollTop=_this.scrollController.getScrollTop();
_this.scrollLeft=_this.scrollController.getScrollLeft();
_this.handleScrollChange();
};
_this.scrollController=scrollController;
_this.doesListening=doesListening;
_this.scrollTop=_this.origScrollTop=scrollController.getScrollTop();
_this.scrollLeft=_this.origScrollLeft=scrollController.getScrollLeft();
_this.scrollWidth=scrollController.getScrollWidth();
_this.scrollHeight=scrollController.getScrollHeight();
_this.clientWidth=scrollController.getClientWidth();
_this.clientHeight=scrollController.getClientHeight();
_this.clientRect=_this.computeClientRect();
if(_this.doesListening){
_this.getEventTarget().addEventListener('scroll', _this.handleScroll);
}
return _this;
}
ScrollGeomCache.prototype.destroy=function (){
if(this.doesListening){
this.getEventTarget().removeEventListener('scroll', this.handleScroll);
}};
ScrollGeomCache.prototype.getScrollTop=function (){
return this.scrollTop;
};
ScrollGeomCache.prototype.getScrollLeft=function (){
return this.scrollLeft;
};
ScrollGeomCache.prototype.setScrollTop=function (top){
this.scrollController.setScrollTop(top);
if(!this.doesListening){
this.scrollTop=Math.max(Math.min(top, this.getMaxScrollTop()), 0);
this.handleScrollChange();
}};
ScrollGeomCache.prototype.setScrollLeft=function (top){
this.scrollController.setScrollLeft(top);
if(!this.doesListening){
this.scrollLeft=Math.max(Math.min(top, this.getMaxScrollLeft()), 0);
this.handleScrollChange();
}};
ScrollGeomCache.prototype.getClientWidth=function (){
return this.clientWidth;
};
ScrollGeomCache.prototype.getClientHeight=function (){
return this.clientHeight;
};
ScrollGeomCache.prototype.getScrollWidth=function (){
return this.scrollWidth;
};
ScrollGeomCache.prototype.getScrollHeight=function (){
return this.scrollHeight;
};
ScrollGeomCache.prototype.handleScrollChange=function (){
};
return ScrollGeomCache;
}(ScrollController));
var ElementScrollGeomCache= (function (_super){
__extends(ElementScrollGeomCache, _super);
function ElementScrollGeomCache(el, doesListening){
return _super.call(this, new ElementScrollController(el), doesListening)||this;
}
ElementScrollGeomCache.prototype.getEventTarget=function (){
return this.scrollController.el;
};
ElementScrollGeomCache.prototype.computeClientRect=function (){
return computeInnerRect(this.scrollController.el);
};
return ElementScrollGeomCache;
}(ScrollGeomCache));
var WindowScrollGeomCache= (function (_super){
__extends(WindowScrollGeomCache, _super);
function WindowScrollGeomCache(doesListening){
return _super.call(this, new WindowScrollController(), doesListening)||this;
}
WindowScrollGeomCache.prototype.getEventTarget=function (){
return window;
};
WindowScrollGeomCache.prototype.computeClientRect=function (){
return {
left: this.scrollLeft,
right: this.scrollLeft + this.clientWidth,
top: this.scrollTop,
bottom: this.scrollTop + this.clientHeight
};};
WindowScrollGeomCache.prototype.handleScrollChange=function (){
this.clientRect=this.computeClientRect();
};
return WindowScrollGeomCache;
}(ScrollGeomCache));
var getTime=typeof performance==='function' ? performance.now:Date.now;
var AutoScroller= (function (){
function AutoScroller(){
var _this=this;
this.isEnabled=true;
this.scrollQuery=[window, '.fc-scroller'];
this.edgeThreshold=50;
this.maxVelocity=300;
this.pointerScreenX=null;
this.pointerScreenY=null;
this.isAnimating=false;
this.scrollCaches=null;
this.everMovedUp=false;
this.everMovedDown=false;
this.everMovedLeft=false;
this.everMovedRight=false;
this.animate=function (){
if(_this.isAnimating){
var edge=_this.computeBestEdge(_this.pointerScreenX + window.pageXOffset, _this.pointerScreenY + window.pageYOffset);
if(edge){
var now=getTime();
_this.handleSide(edge, (now - _this.msSinceRequest) / 1000);
_this.requestAnimation(now);
}else{
_this.isAnimating=false;
}}
};}
AutoScroller.prototype.start=function (pageX, pageY){
if(this.isEnabled){
this.scrollCaches=this.buildCaches();
this.pointerScreenX=null;
this.pointerScreenY=null;
this.everMovedUp=false;
this.everMovedDown=false;
this.everMovedLeft=false;
this.everMovedRight=false;
this.handleMove(pageX, pageY);
}};
AutoScroller.prototype.handleMove=function (pageX, pageY){
if(this.isEnabled){
var pointerScreenX=pageX - window.pageXOffset;
var pointerScreenY=pageY - window.pageYOffset;
var yDelta=this.pointerScreenY===null ? 0:pointerScreenY - this.pointerScreenY;
var xDelta=this.pointerScreenX===null ? 0:pointerScreenX - this.pointerScreenX;
if(yDelta < 0){
this.everMovedUp=true;
}
else if(yDelta > 0){
this.everMovedDown=true;
}
if(xDelta < 0){
this.everMovedLeft=true;
}
else if(xDelta > 0){
this.everMovedRight=true;
}
this.pointerScreenX=pointerScreenX;
this.pointerScreenY=pointerScreenY;
if(!this.isAnimating){
this.isAnimating=true;
this.requestAnimation(getTime());
}}
};
AutoScroller.prototype.stop=function (){
if(this.isEnabled){
this.isAnimating=false;
for (var _i=0, _a=this.scrollCaches; _i < _a.length; _i++){
var scrollCache=_a[_i];
scrollCache.destroy();
}
this.scrollCaches=null;
}};
AutoScroller.prototype.requestAnimation=function (now){
this.msSinceRequest=now;
requestAnimationFrame(this.animate);
};
AutoScroller.prototype.handleSide=function (edge, seconds){
var scrollCache=edge.scrollCache;
var edgeThreshold=this.edgeThreshold;
var invDistance=edgeThreshold - edge.distance;
var velocity =
(invDistance * invDistance) / (edgeThreshold * edgeThreshold) *
this.maxVelocity * seconds;
var sign=1;
switch (edge.name){
case 'left':
sign=-1;
case 'right':
scrollCache.setScrollLeft(scrollCache.getScrollLeft() + velocity * sign);
break;
case 'top':
sign=-1;
case 'bottom':
scrollCache.setScrollTop(scrollCache.getScrollTop() + velocity * sign);
break;
}};
AutoScroller.prototype.computeBestEdge=function (left, top){
var edgeThreshold=this.edgeThreshold;
var bestSide=null;
for (var _i=0, _a=this.scrollCaches; _i < _a.length; _i++){
var scrollCache=_a[_i];
var rect=scrollCache.clientRect;
var leftDist=left - rect.left;
var rightDist=rect.right - left;
var topDist=top - rect.top;
var bottomDist=rect.bottom - top;
if(leftDist >=0&&rightDist >=0&&topDist >=0&&bottomDist >=0){
if(topDist <=edgeThreshold&&this.everMovedUp&&scrollCache.canScrollUp() &&
(!bestSide||bestSide.distance > topDist)){
bestSide={ scrollCache: scrollCache, name: 'top', distance: topDist };}
if(bottomDist <=edgeThreshold&&this.everMovedDown&&scrollCache.canScrollDown() &&
(!bestSide||bestSide.distance > bottomDist)){
bestSide={ scrollCache: scrollCache, name: 'bottom', distance: bottomDist };}
if(leftDist <=edgeThreshold&&this.everMovedLeft&&scrollCache.canScrollLeft() &&
(!bestSide||bestSide.distance > leftDist)){
bestSide={ scrollCache: scrollCache, name: 'left', distance: leftDist };}
if(rightDist <=edgeThreshold&&this.everMovedRight&&scrollCache.canScrollRight() &&
(!bestSide||bestSide.distance > rightDist)){
bestSide={ scrollCache: scrollCache, name: 'right', distance: rightDist };}}
}
return bestSide;
};
AutoScroller.prototype.buildCaches=function (){
return this.queryScrollEls().map(function (el){
if(el===window){
return new WindowScrollGeomCache(false);
}else{
return new ElementScrollGeomCache(el, false);
}});
};
AutoScroller.prototype.queryScrollEls=function (){
var els=[];
for (var _i=0, _a=this.scrollQuery; _i < _a.length; _i++){
var query=_a[_i];
if(typeof query==='object'){
els.push(query);
}else{
els.push.apply(els, Array.prototype.slice.call(document.querySelectorAll(query)));
}}
return els;
};
return AutoScroller;
}());
var FeaturefulElementDragging= (function (_super){
__extends(FeaturefulElementDragging, _super);
function FeaturefulElementDragging(containerEl, selector){
var _this=_super.call(this, containerEl)||this;
_this.delay=null;
_this.minDistance=0;
_this.touchScrollAllowed=true;
_this.mirrorNeedsRevert=false;
_this.isInteracting=false;
_this.isDragging=false;
_this.isDelayEnded=false;
_this.isDistanceSurpassed=false;
_this.delayTimeoutId=null;
_this.onPointerDown=function (ev){
if(!_this.isDragging){
_this.isInteracting=true;
_this.isDelayEnded=false;
_this.isDistanceSurpassed=false;
preventSelection(document.body);
preventContextMenu(document.body);
if(!ev.isTouch){
ev.origEvent.preventDefault();
}
_this.emitter.trigger('pointerdown', ev);
if(_this.isInteracting &&
!_this.pointer.shouldIgnoreMove){
_this.mirror.setIsVisible(false);
_this.mirror.start(ev.subjectEl, ev.pageX, ev.pageY);
_this.startDelay(ev);
if(!_this.minDistance){
_this.handleDistanceSurpassed(ev);
}}
}};
_this.onPointerMove=function (ev){
if(_this.isInteracting){
_this.emitter.trigger('pointermove', ev);
if(!_this.isDistanceSurpassed){
var minDistance=_this.minDistance;
var distanceSq=void 0;
var deltaX=ev.deltaX, deltaY=ev.deltaY;
distanceSq=deltaX * deltaX + deltaY * deltaY;
if(distanceSq >=minDistance * minDistance){
_this.handleDistanceSurpassed(ev);
}}
if(_this.isDragging){
if(ev.origEvent.type!=='scroll'){
_this.mirror.handleMove(ev.pageX, ev.pageY);
_this.autoScroller.handleMove(ev.pageX, ev.pageY);
}
_this.emitter.trigger('dragmove', ev);
}}
};
_this.onPointerUp=function (ev){
if(_this.isInteracting){
_this.isInteracting=false;
allowSelection(document.body);
allowContextMenu(document.body);
_this.emitter.trigger('pointerup', ev);
if(_this.isDragging){
_this.autoScroller.stop();
_this.tryStopDrag(ev);
}
if(_this.delayTimeoutId){
clearTimeout(_this.delayTimeoutId);
_this.delayTimeoutId=null;
}}
};
var pointer=_this.pointer=new PointerDragging(containerEl);
pointer.emitter.on('pointerdown', _this.onPointerDown);
pointer.emitter.on('pointermove', _this.onPointerMove);
pointer.emitter.on('pointerup', _this.onPointerUp);
if(selector){
pointer.selector=selector;
}
_this.mirror=new ElementMirror();
_this.autoScroller=new AutoScroller();
return _this;
}
FeaturefulElementDragging.prototype.destroy=function (){
this.pointer.destroy();
this.onPointerUp({});
};
FeaturefulElementDragging.prototype.startDelay=function (ev){
var _this=this;
if(typeof this.delay==='number'){
this.delayTimeoutId=setTimeout(function (){
_this.delayTimeoutId=null;
_this.handleDelayEnd(ev);
}, this.delay);
}else{
this.handleDelayEnd(ev);
}};
FeaturefulElementDragging.prototype.handleDelayEnd=function (ev){
this.isDelayEnded=true;
this.tryStartDrag(ev);
};
FeaturefulElementDragging.prototype.handleDistanceSurpassed=function (ev){
this.isDistanceSurpassed=true;
this.tryStartDrag(ev);
};
FeaturefulElementDragging.prototype.tryStartDrag=function (ev){
if(this.isDelayEnded&&this.isDistanceSurpassed){
if(!this.pointer.wasTouchScroll||this.touchScrollAllowed){
this.isDragging=true;
this.mirrorNeedsRevert=false;
this.autoScroller.start(ev.pageX, ev.pageY);
this.emitter.trigger('dragstart', ev);
if(this.touchScrollAllowed===false){
this.pointer.cancelTouchScroll();
}}
}};
FeaturefulElementDragging.prototype.tryStopDrag=function (ev){
this.mirror.stop(this.mirrorNeedsRevert, this.stopDrag.bind(this, ev)
);
};
FeaturefulElementDragging.prototype.stopDrag=function (ev){
this.isDragging=false;
this.emitter.trigger('dragend', ev);
};
FeaturefulElementDragging.prototype.setIgnoreMove=function (bool){
this.pointer.shouldIgnoreMove=bool;
};
FeaturefulElementDragging.prototype.setMirrorIsVisible=function (bool){
this.mirror.setIsVisible(bool);
};
FeaturefulElementDragging.prototype.setMirrorNeedsRevert=function (bool){
this.mirrorNeedsRevert=bool;
};
FeaturefulElementDragging.prototype.setAutoScrollEnabled=function (bool){
this.autoScroller.isEnabled=bool;
};
return FeaturefulElementDragging;
}(ElementDragging));
var OffsetTracker= (function (){
function OffsetTracker(el){
this.origRect=computeRect(el);
this.scrollCaches=getClippingParents(el).map(function (el){
return new ElementScrollGeomCache(el, true);
});
}
OffsetTracker.prototype.destroy=function (){
for (var _i=0, _a=this.scrollCaches; _i < _a.length; _i++){
var scrollCache=_a[_i];
scrollCache.destroy();
}};
OffsetTracker.prototype.computeLeft=function (){
var left=this.origRect.left;
for (var _i=0, _a=this.scrollCaches; _i < _a.length; _i++){
var scrollCache=_a[_i];
left +=scrollCache.origScrollLeft - scrollCache.getScrollLeft();
}
return left;
};
OffsetTracker.prototype.computeTop=function (){
var top=this.origRect.top;
for (var _i=0, _a=this.scrollCaches; _i < _a.length; _i++){
var scrollCache=_a[_i];
top +=scrollCache.origScrollTop - scrollCache.getScrollTop();
}
return top;
};
OffsetTracker.prototype.isWithinClipping=function (pageX, pageY){
var point={ left: pageX, top: pageY };
for (var _i=0, _a=this.scrollCaches; _i < _a.length; _i++){
var scrollCache=_a[_i];
if(!isIgnoredClipping(scrollCache.getEventTarget()) &&
!pointInsideRect(point, scrollCache.clientRect)){
return false;
}}
return true;
};
return OffsetTracker;
}());
function isIgnoredClipping(node){
var tagName=node.tagName;
return tagName==='HTML'||tagName==='BODY';
}
var HitDragging= (function (){
function HitDragging(dragging, droppableStore){
var _this=this;
this.useSubjectCenter=false;
this.requireInitial=true;
this.initialHit=null;
this.movingHit=null;
this.finalHit=null;
this.handlePointerDown=function (ev){
var dragging=_this.dragging;
_this.initialHit=null;
_this.movingHit=null;
_this.finalHit=null;
_this.prepareHits();
_this.processFirstCoord(ev);
if(_this.initialHit||!_this.requireInitial){
dragging.setIgnoreMove(false);
_this.emitter.trigger('pointerdown', ev);
}else{
dragging.setIgnoreMove(true);
}};
this.handleDragStart=function (ev){
_this.emitter.trigger('dragstart', ev);
_this.handleMove(ev, true);
};
this.handleDragMove=function (ev){
_this.emitter.trigger('dragmove', ev);
_this.handleMove(ev);
};
this.handlePointerUp=function (ev){
_this.releaseHits();
_this.emitter.trigger('pointerup', ev);
};
this.handleDragEnd=function (ev){
if(_this.movingHit){
_this.emitter.trigger('hitupdate', null, true, ev);
}
_this.finalHit=_this.movingHit;
_this.movingHit=null;
_this.emitter.trigger('dragend', ev);
};
this.droppableStore=droppableStore;
dragging.emitter.on('pointerdown', this.handlePointerDown);
dragging.emitter.on('dragstart', this.handleDragStart);
dragging.emitter.on('dragmove', this.handleDragMove);
dragging.emitter.on('pointerup', this.handlePointerUp);
dragging.emitter.on('dragend', this.handleDragEnd);
this.dragging=dragging;
this.emitter=new Emitter();
}
HitDragging.prototype.processFirstCoord=function (ev){
var origPoint={ left: ev.pageX, top: ev.pageY };
var adjustedPoint=origPoint;
var subjectEl=ev.subjectEl;
var subjectRect;
if(subjectEl!==document){
subjectRect=computeRect(subjectEl);
adjustedPoint=constrainPoint(adjustedPoint, subjectRect);
}
var initialHit=this.initialHit=this.queryHitForOffset(adjustedPoint.left, adjustedPoint.top);
if(initialHit){
if(this.useSubjectCenter&&subjectRect){
var slicedSubjectRect=intersectRects(subjectRect, initialHit.rect);
if(slicedSubjectRect){
adjustedPoint=getRectCenter(slicedSubjectRect);
}}
this.coordAdjust=diffPoints(adjustedPoint, origPoint);
}else{
this.coordAdjust={ left: 0, top: 0 };}};
HitDragging.prototype.handleMove=function (ev, forceHandle){
var hit=this.queryHitForOffset(ev.pageX + this.coordAdjust.left, ev.pageY + this.coordAdjust.top);
if(forceHandle||!isHitsEqual(this.movingHit, hit)){
this.movingHit=hit;
this.emitter.trigger('hitupdate', hit, false, ev);
}};
HitDragging.prototype.prepareHits=function (){
this.offsetTrackers=mapHash(this.droppableStore, function (interactionSettings){
interactionSettings.component.prepareHits();
return new OffsetTracker(interactionSettings.el);
});
};
HitDragging.prototype.releaseHits=function (){
var offsetTrackers=this.offsetTrackers;
for (var id in offsetTrackers){
offsetTrackers[id].destroy();
}
this.offsetTrackers={};};
HitDragging.prototype.queryHitForOffset=function (offsetLeft, offsetTop){
var _a=this, droppableStore=_a.droppableStore, offsetTrackers=_a.offsetTrackers;
var bestHit=null;
for (var id in droppableStore){
var component=droppableStore[id].component;
var offsetTracker=offsetTrackers[id];
if(offsetTracker &&
offsetTracker.isWithinClipping(offsetLeft, offsetTop)){
var originLeft=offsetTracker.computeLeft();
var originTop=offsetTracker.computeTop();
var positionLeft=offsetLeft - originLeft;
var positionTop=offsetTop - originTop;
var origRect=offsetTracker.origRect;
var width=origRect.right - origRect.left;
var height=origRect.bottom - origRect.top;
if(positionLeft >=0&&positionLeft < width &&
positionTop >=0&&positionTop < height){
var hit=component.queryHit(positionLeft, positionTop, width, height);
var dateProfile=component.context.getCurrentData().dateProfile;
if(hit &&
(
rangeContainsRange(dateProfile.activeRange, hit.dateSpan.range)) &&
(!bestHit||hit.layer > bestHit.layer)){
hit.rect.left +=originLeft;
hit.rect.right +=originLeft;
hit.rect.top +=originTop;
hit.rect.bottom +=originTop;
bestHit=hit;
}}
}}
return bestHit;
};
return HitDragging;
}());
function isHitsEqual(hit0, hit1){
if(!hit0&&!hit1){
return true;
}
if(Boolean(hit0)!==Boolean(hit1)){
return false;
}
return isDateSpansEqual(hit0.dateSpan, hit1.dateSpan);
}
function buildDatePointApiWithContext(dateSpan, context){
var props={};
for (var _i=0, _a=context.pluginHooks.datePointTransforms; _i < _a.length; _i++){
var transform=_a[_i];
__assign(props, transform(dateSpan, context));
}
__assign(props, buildDatePointApi(dateSpan, context.dateEnv));
return props;
}
function buildDatePointApi(span, dateEnv){
return {
date: dateEnv.toDate(span.range.start),
dateStr: dateEnv.formatIso(span.range.start, { omitTime: span.allDay }),
allDay: span.allDay
};}
var DateClicking= (function (_super){
__extends(DateClicking, _super);
function DateClicking(settings){
var _this=_super.call(this, settings)||this;
_this.handlePointerDown=function (pev){
var dragging=_this.dragging;
var downEl=pev.origEvent.target;
dragging.setIgnoreMove(!_this.component.isValidDateDownEl(downEl));
};
_this.handleDragEnd=function (ev){
var component=_this.component;
var pointer=_this.dragging.pointer;
if(!pointer.wasTouchScroll){
var _a=_this.hitDragging, initialHit=_a.initialHit, finalHit=_a.finalHit;
if(initialHit&&finalHit&&isHitsEqual(initialHit, finalHit)){
var context=component.context;
var arg=__assign(__assign({}, buildDatePointApiWithContext(initialHit.dateSpan, context)), { dayEl: initialHit.dayEl, jsEvent: ev.origEvent, view: context.viewApi||context.calendarApi.view });
context.emitter.trigger('dateClick', arg);
}}
};
_this.dragging=new FeaturefulElementDragging(settings.el);
_this.dragging.autoScroller.isEnabled=false;
var hitDragging=_this.hitDragging=new HitDragging(_this.dragging, interactionSettingsToStore(settings));
hitDragging.emitter.on('pointerdown', _this.handlePointerDown);
hitDragging.emitter.on('dragend', _this.handleDragEnd);
return _this;
}
DateClicking.prototype.destroy=function (){
this.dragging.destroy();
};
return DateClicking;
}(Interaction));
var DateSelecting= (function (_super){
__extends(DateSelecting, _super);
function DateSelecting(settings){
var _this=_super.call(this, settings)||this;
_this.dragSelection=null;
_this.handlePointerDown=function (ev){
var _a=_this, component=_a.component, dragging=_a.dragging;
var options=component.context.options;
var canSelect=options.selectable &&
component.isValidDateDownEl(ev.origEvent.target);
dragging.setIgnoreMove(!canSelect);
dragging.delay=ev.isTouch ? getComponentTouchDelay(component):null;
};
_this.handleDragStart=function (ev){
_this.component.context.calendarApi.unselect(ev);
};
_this.handleHitUpdate=function (hit, isFinal){
var context=_this.component.context;
var dragSelection=null;
var isInvalid=false;
if(hit){
dragSelection=joinHitsIntoSelection(_this.hitDragging.initialHit, hit, context.pluginHooks.dateSelectionTransformers);
if(!dragSelection||!_this.component.isDateSelectionValid(dragSelection)){
isInvalid=true;
dragSelection=null;
}}
if(dragSelection){
context.dispatch({ type: 'SELECT_DATES', selection: dragSelection });
}
else if(!isFinal){
context.dispatch({ type: 'UNSELECT_DATES' });
}
if(!isInvalid){
enableCursor();
}else{
disableCursor();
}
if(!isFinal){
_this.dragSelection=dragSelection;
}};
_this.handlePointerUp=function (pev){
if(_this.dragSelection){
triggerDateSelect(_this.dragSelection, pev, _this.component.context);
_this.dragSelection=null;
}};
var component=settings.component;
var options=component.context.options;
var dragging=_this.dragging=new FeaturefulElementDragging(settings.el);
dragging.touchScrollAllowed=false;
dragging.minDistance=options.selectMinDistance||0;
dragging.autoScroller.isEnabled=options.dragScroll;
var hitDragging=_this.hitDragging=new HitDragging(_this.dragging, interactionSettingsToStore(settings));
hitDragging.emitter.on('pointerdown', _this.handlePointerDown);
hitDragging.emitter.on('dragstart', _this.handleDragStart);
hitDragging.emitter.on('hitupdate', _this.handleHitUpdate);
hitDragging.emitter.on('pointerup', _this.handlePointerUp);
return _this;
}
DateSelecting.prototype.destroy=function (){
this.dragging.destroy();
};
return DateSelecting;
}(Interaction));
function getComponentTouchDelay(component){
var options=component.context.options;
var delay=options.selectLongPressDelay;
if(delay==null){
delay=options.longPressDelay;
}
return delay;
}
function joinHitsIntoSelection(hit0, hit1, dateSelectionTransformers){
var dateSpan0=hit0.dateSpan;
var dateSpan1=hit1.dateSpan;
var ms=[
dateSpan0.range.start,
dateSpan0.range.end,
dateSpan1.range.start,
dateSpan1.range.end
];
ms.sort(compareNumbers);
var props={};
for (var _i=0, dateSelectionTransformers_1=dateSelectionTransformers; _i < dateSelectionTransformers_1.length; _i++){
var transformer=dateSelectionTransformers_1[_i];
var res=transformer(hit0, hit1);
if(res===false){
return null;
}
else if(res){
__assign(props, res);
}}
props.range={ start: ms[0], end: ms[3] };
props.allDay=dateSpan0.allDay;
return props;
}
var EventDragging= (function (_super){
__extends(EventDragging, _super);
function EventDragging(settings){
var _this=_super.call(this, settings)||this;
_this.subjectEl=null;
_this.subjectSeg=null;
_this.isDragging=false;
_this.eventRange=null;
_this.relevantEvents=null;
_this.receivingContext=null;
_this.validMutation=null;
_this.mutatedRelevantEvents=null;
_this.handlePointerDown=function (ev){
var origTarget=ev.origEvent.target;
var _a=_this, component=_a.component, dragging=_a.dragging;
var mirror=dragging.mirror;
var options=component.context.options;
var initialContext=component.context;
_this.subjectEl=ev.subjectEl;
var subjectSeg=_this.subjectSeg=getElSeg(ev.subjectEl);
var eventRange=_this.eventRange=subjectSeg.eventRange;
var eventInstanceId=eventRange.instance.instanceId;
_this.relevantEvents=getRelevantEvents(initialContext.getCurrentData().eventStore, eventInstanceId);
dragging.minDistance=ev.isTouch ? 0:options.eventDragMinDistance;
dragging.delay =
(ev.isTouch&&eventInstanceId!==component.props.eventSelection) ?
getComponentTouchDelay$1(component) :
null;
mirror.parentNode=elementClosest(origTarget, '.fc');
mirror.revertDuration=options.dragRevertDuration;
var isValid=component.isValidSegDownEl(origTarget) &&
!elementClosest(origTarget, '.fc-event-resizer');
dragging.setIgnoreMove(!isValid);
_this.isDragging=isValid &&
ev.subjectEl.classList.contains('fc-event-draggable');
};
_this.handleDragStart=function (ev){
var initialContext=_this.component.context;
var eventRange=_this.eventRange;
var eventInstanceId=eventRange.instance.instanceId;
if(ev.isTouch){
if(eventInstanceId!==_this.component.props.eventSelection){
initialContext.dispatch({ type: 'SELECT_EVENT', eventInstanceId: eventInstanceId });
}}else{
initialContext.dispatch({ type: 'UNSELECT_EVENT' });
}
if(_this.isDragging){
initialContext.calendarApi.unselect(ev);
initialContext.emitter.trigger('eventDragStart', {
el: _this.subjectEl,
event: new EventApi(initialContext, eventRange.def, eventRange.instance),
jsEvent: ev.origEvent,
view: initialContext.viewApi
});
}};
_this.handleHitUpdate=function (hit, isFinal){
if(!_this.isDragging){
return;
}
var relevantEvents=_this.relevantEvents;
var initialHit=_this.hitDragging.initialHit;
var initialContext=_this.component.context;
var receivingContext=null;
var mutation=null;
var mutatedRelevantEvents=null;
var isInvalid=false;
var interaction={
affectedEvents: relevantEvents,
mutatedEvents: createEmptyEventStore(),
isEvent: true
};
if(hit){
var receivingComponent=hit.component;
receivingContext=receivingComponent.context;
var receivingOptions=receivingContext.options;
if(initialContext===receivingContext ||
receivingOptions.editable&&receivingOptions.droppable){
mutation=computeEventMutation(initialHit, hit, receivingContext.getCurrentData().pluginHooks.eventDragMutationMassagers);
if(mutation){
mutatedRelevantEvents=applyMutationToEventStore(relevantEvents, receivingContext.getCurrentData().eventUiBases, mutation, receivingContext);
interaction.mutatedEvents=mutatedRelevantEvents;
if(!receivingComponent.isInteractionValid(interaction)){
isInvalid=true;
mutation=null;
mutatedRelevantEvents=null;
interaction.mutatedEvents=createEmptyEventStore();
}}
}else{
receivingContext=null;
}}
_this.displayDrag(receivingContext, interaction);
if(!isInvalid){
enableCursor();
}else{
disableCursor();
}
if(!isFinal){
if(initialContext===receivingContext &&
isHitsEqual(initialHit, hit)){
mutation=null;
}
_this.dragging.setMirrorNeedsRevert(!mutation);
_this.dragging.setMirrorIsVisible(!hit||!document.querySelector('.fc-event-mirror'));
_this.receivingContext=receivingContext;
_this.validMutation=mutation;
_this.mutatedRelevantEvents=mutatedRelevantEvents;
}};
_this.handlePointerUp=function (){
if(!_this.isDragging){
_this.cleanup();
}};
_this.handleDragEnd=function (ev){
if(_this.isDragging){
var initialContext_1=_this.component.context;
var initialView=initialContext_1.viewApi;
var _a=_this, receivingContext_1=_a.receivingContext, validMutation=_a.validMutation;
var eventDef=_this.eventRange.def;
var eventInstance=_this.eventRange.instance;
var eventApi=new EventApi(initialContext_1, eventDef, eventInstance);
var relevantEvents_1=_this.relevantEvents;
var mutatedRelevantEvents_1=_this.mutatedRelevantEvents;
var finalHit=_this.hitDragging.finalHit;
_this.clearDrag();
initialContext_1.emitter.trigger('eventDragStop', {
el: _this.subjectEl,
event: eventApi,
jsEvent: ev.origEvent,
view: initialView
});
if(validMutation){
if(receivingContext_1===initialContext_1){
var updatedEventApi=new EventApi(initialContext_1, mutatedRelevantEvents_1.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents_1.instances[eventInstance.instanceId]:null);
initialContext_1.dispatch({
type: 'MERGE_EVENTS',
eventStore: mutatedRelevantEvents_1
});
var eventChangeArg={
oldEvent: eventApi,
event: updatedEventApi,
relatedEvents: buildEventApis(mutatedRelevantEvents_1, initialContext_1, eventInstance),
revert: function (){
initialContext_1.dispatch({
type: 'MERGE_EVENTS',
eventStore: relevantEvents_1 
});
}};
var transformed={};
for (var _i=0, _b=initialContext_1.getCurrentData().pluginHooks.eventDropTransformers; _i < _b.length; _i++){
var transformer=_b[_i];
__assign(transformed, transformer(validMutation, initialContext_1));
}
initialContext_1.emitter.trigger('eventDrop', __assign(__assign(__assign({}, eventChangeArg), transformed), { el: ev.subjectEl, delta: validMutation.datesDelta, jsEvent: ev.origEvent, view: initialView }));
initialContext_1.emitter.trigger('eventChange', eventChangeArg);
}
else if(receivingContext_1){
var eventRemoveArg={
event: eventApi,
relatedEvents: buildEventApis(relevantEvents_1, initialContext_1, eventInstance),
revert: function (){
initialContext_1.dispatch({
type: 'MERGE_EVENTS',
eventStore: relevantEvents_1
});
}};
initialContext_1.emitter.trigger('eventLeave', __assign(__assign({}, eventRemoveArg), { draggedEl: ev.subjectEl, view: initialView }));
initialContext_1.dispatch({
type: 'REMOVE_EVENTS',
eventStore: relevantEvents_1
});
initialContext_1.emitter.trigger('eventRemove', eventRemoveArg);
var addedEventDef=mutatedRelevantEvents_1.defs[eventDef.defId];
var addedEventInstance=mutatedRelevantEvents_1.instances[eventInstance.instanceId];
var addedEventApi=new EventApi(receivingContext_1, addedEventDef, addedEventInstance);
receivingContext_1.dispatch({
type: 'MERGE_EVENTS',
eventStore: mutatedRelevantEvents_1
});
var eventAddArg={
event: addedEventApi,
relatedEvents: buildEventApis(mutatedRelevantEvents_1, receivingContext_1, addedEventInstance),
revert: function (){
receivingContext_1.dispatch({
type: 'REMOVE_EVENTS',
eventStore: mutatedRelevantEvents_1
});
}};
receivingContext_1.emitter.trigger('eventAdd', eventAddArg);
if(ev.isTouch){
receivingContext_1.dispatch({
type: 'SELECT_EVENT',
eventInstanceId: eventInstance.instanceId
});
}
receivingContext_1.emitter.trigger('drop', __assign(__assign({}, buildDatePointApiWithContext(finalHit.dateSpan, receivingContext_1)), { draggedEl: ev.subjectEl, jsEvent: ev.origEvent, view: finalHit.component.context.viewApi }));
receivingContext_1.emitter.trigger('eventReceive', __assign(__assign({}, eventAddArg), { draggedEl: ev.subjectEl, view: finalHit.component.context.viewApi }));
}}else{
initialContext_1.emitter.trigger('_noEventDrop');
}}
_this.cleanup();
};
var component=_this.component;
var options=component.context.options;
var dragging=_this.dragging=new FeaturefulElementDragging(settings.el);
dragging.pointer.selector=EventDragging.SELECTOR;
dragging.touchScrollAllowed=false;
dragging.autoScroller.isEnabled=options.dragScroll;
var hitDragging=_this.hitDragging=new HitDragging(_this.dragging, interactionSettingsStore);
hitDragging.useSubjectCenter=settings.useEventCenter;
hitDragging.emitter.on('pointerdown', _this.handlePointerDown);
hitDragging.emitter.on('dragstart', _this.handleDragStart);
hitDragging.emitter.on('hitupdate', _this.handleHitUpdate);
hitDragging.emitter.on('pointerup', _this.handlePointerUp);
hitDragging.emitter.on('dragend', _this.handleDragEnd);
return _this;
}
EventDragging.prototype.destroy=function (){
this.dragging.destroy();
};
EventDragging.prototype.displayDrag=function (nextContext, state){
var initialContext=this.component.context;
var prevContext=this.receivingContext;
if(prevContext&&prevContext!==nextContext){
if(prevContext===initialContext){
prevContext.dispatch({
type: 'SET_EVENT_DRAG',
state: {
affectedEvents: state.affectedEvents,
mutatedEvents: createEmptyEventStore(),
isEvent: true
}});
}else{
prevContext.dispatch({ type: 'UNSET_EVENT_DRAG' });
}}
if(nextContext){
nextContext.dispatch({ type: 'SET_EVENT_DRAG', state: state });
}};
EventDragging.prototype.clearDrag=function (){
var initialCalendar=this.component.context;
var receivingContext=this.receivingContext;
if(receivingContext){
receivingContext.dispatch({ type: 'UNSET_EVENT_DRAG' });
}
if(initialCalendar!==receivingContext){
initialCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' });
}};
EventDragging.prototype.cleanup=function (){
this.subjectSeg=null;
this.isDragging=false;
this.eventRange=null;
this.relevantEvents=null;
this.receivingContext=null;
this.validMutation=null;
this.mutatedRelevantEvents=null;
};
EventDragging.SELECTOR='.fc-event-draggable, .fc-event-resizable';
return EventDragging;
}(Interaction));
function computeEventMutation(hit0, hit1, massagers){
var dateSpan0=hit0.dateSpan;
var dateSpan1=hit1.dateSpan;
var date0=dateSpan0.range.start;
var date1=dateSpan1.range.start;
var standardProps={};
if(dateSpan0.allDay!==dateSpan1.allDay){
standardProps.allDay=dateSpan1.allDay;
standardProps.hasEnd=hit1.component.context.options.allDayMaintainDuration;
if(dateSpan1.allDay){
date0=startOfDay(date0);
}}
var delta=diffDates(date0, date1, hit0.component.context.dateEnv, hit0.component===hit1.component ?
hit0.component.largeUnit :
null);
if(delta.milliseconds){
standardProps.allDay=false;
}
var mutation={
datesDelta: delta,
standardProps: standardProps
};
for (var _i=0, massagers_1=massagers; _i < massagers_1.length; _i++){
var massager=massagers_1[_i];
massager(mutation, hit0, hit1);
}
return mutation;
}
function getComponentTouchDelay$1(component){
var options=component.context.options;
var delay=options.eventLongPressDelay;
if(delay==null){
delay=options.longPressDelay;
}
return delay;
}
var EventResizing= (function (_super){
__extends(EventResizing, _super);
function EventResizing(settings){
var _this=_super.call(this, settings)||this;
_this.draggingSegEl=null;
_this.draggingSeg=null;
_this.eventRange=null;
_this.relevantEvents=null;
_this.validMutation=null;
_this.mutatedRelevantEvents=null;
_this.handlePointerDown=function (ev){
var component=_this.component;
var segEl=_this.querySegEl(ev);
var seg=getElSeg(segEl);
var eventRange=_this.eventRange=seg.eventRange;
_this.dragging.minDistance=component.context.options.eventDragMinDistance;
_this.dragging.setIgnoreMove(!_this.component.isValidSegDownEl(ev.origEvent.target) ||
(ev.isTouch&&_this.component.props.eventSelection!==eventRange.instance.instanceId));
};
_this.handleDragStart=function (ev){
var context=_this.component.context;
var eventRange=_this.eventRange;
_this.relevantEvents=getRelevantEvents(context.getCurrentData().eventStore, _this.eventRange.instance.instanceId);
var segEl=_this.querySegEl(ev);
_this.draggingSegEl=segEl;
_this.draggingSeg=getElSeg(segEl);
context.calendarApi.unselect();
context.emitter.trigger('eventResizeStart', {
el: segEl,
event: new EventApi(context, eventRange.def, eventRange.instance),
jsEvent: ev.origEvent,
view: context.viewApi
});
};
_this.handleHitUpdate=function (hit, isFinal, ev){
var context=_this.component.context;
var relevantEvents=_this.relevantEvents;
var initialHit=_this.hitDragging.initialHit;
var eventInstance=_this.eventRange.instance;
var mutation=null;
var mutatedRelevantEvents=null;
var isInvalid=false;
var interaction={
affectedEvents: relevantEvents,
mutatedEvents: createEmptyEventStore(),
isEvent: true
};
if(hit){
mutation=computeMutation(initialHit, hit, ev.subjectEl.classList.contains('fc-event-resizer-start'), eventInstance.range, context.pluginHooks.eventResizeJoinTransforms);
}
if(mutation){
mutatedRelevantEvents=applyMutationToEventStore(relevantEvents, context.getCurrentData().eventUiBases, mutation, context);
interaction.mutatedEvents=mutatedRelevantEvents;
if(!_this.component.isInteractionValid(interaction)){
isInvalid=true;
mutation=null;
mutatedRelevantEvents=null;
interaction.mutatedEvents=null;
}}
if(mutatedRelevantEvents){
context.dispatch({
type: 'SET_EVENT_RESIZE',
state: interaction
});
}else{
context.dispatch({ type: 'UNSET_EVENT_RESIZE' });
}
if(!isInvalid){
enableCursor();
}else{
disableCursor();
}
if(!isFinal){
if(mutation&&isHitsEqual(initialHit, hit)){
mutation=null;
}
_this.validMutation=mutation;
_this.mutatedRelevantEvents=mutatedRelevantEvents;
}};
_this.handleDragEnd=function (ev){
var context=_this.component.context;
var eventDef=_this.eventRange.def;
var eventInstance=_this.eventRange.instance;
var eventApi=new EventApi(context, eventDef, eventInstance);
var relevantEvents=_this.relevantEvents;
var mutatedRelevantEvents=_this.mutatedRelevantEvents;
context.emitter.trigger('eventResizeStop', {
el: _this.draggingSegEl,
event: eventApi,
jsEvent: ev.origEvent,
view: context.viewApi
});
if(_this.validMutation){
var updatedEventApi=new EventApi(context, mutatedRelevantEvents.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId]:null);
context.dispatch({
type: 'MERGE_EVENTS',
eventStore: mutatedRelevantEvents
});
var eventChangeArg={
oldEvent: eventApi,
event: updatedEventApi,
relatedEvents: buildEventApis(mutatedRelevantEvents, context, eventInstance),
revert: function (){
context.dispatch({
type: 'MERGE_EVENTS',
eventStore: relevantEvents
});
}};
context.emitter.trigger('eventResize', __assign(__assign({}, eventChangeArg), { el: _this.draggingSegEl, startDelta: _this.validMutation.startDelta||createDuration(0), endDelta: _this.validMutation.endDelta||createDuration(0), jsEvent: ev.origEvent, view: context.viewApi }));
context.emitter.trigger('eventChange', eventChangeArg);
}else{
context.emitter.trigger('_noEventResize');
}
_this.draggingSeg=null;
_this.relevantEvents=null;
_this.validMutation=null;
};
var component=settings.component;
var dragging=_this.dragging=new FeaturefulElementDragging(settings.el);
dragging.pointer.selector='.fc-event-resizer';
dragging.touchScrollAllowed=false;
dragging.autoScroller.isEnabled=component.context.options.dragScroll;
var hitDragging=_this.hitDragging=new HitDragging(_this.dragging, interactionSettingsToStore(settings));
hitDragging.emitter.on('pointerdown', _this.handlePointerDown);
hitDragging.emitter.on('dragstart', _this.handleDragStart);
hitDragging.emitter.on('hitupdate', _this.handleHitUpdate);
hitDragging.emitter.on('dragend', _this.handleDragEnd);
return _this;
}
EventResizing.prototype.destroy=function (){
this.dragging.destroy();
};
EventResizing.prototype.querySegEl=function (ev){
return elementClosest(ev.subjectEl, '.fc-event');
};
return EventResizing;
}(Interaction));
function computeMutation(hit0, hit1, isFromStart, instanceRange, transforms){
var dateEnv=hit0.component.context.dateEnv;
var date0=hit0.dateSpan.range.start;
var date1=hit1.dateSpan.range.start;
var delta=diffDates(date0, date1, dateEnv, hit0.component.largeUnit);
var props={};
for (var _i=0, transforms_1=transforms; _i < transforms_1.length; _i++){
var transform=transforms_1[_i];
var res=transform(hit0, hit1);
if(res===false){
return null;
}
else if(res){
__assign(props, res);
}}
if(isFromStart){
if(dateEnv.add(instanceRange.start, delta) < instanceRange.end){
props.startDelta=delta;
return props;
}}else{
if(dateEnv.add(instanceRange.end, delta) > instanceRange.start){
props.endDelta=delta;
return props;
}}
return null;
}
var UnselectAuto= (function (){
function UnselectAuto(context){
var _this=this;
this.context=context;
this.isRecentPointerDateSelect=false;
this.matchesCancel=false;
this.matchesEvent=false;
this.onSelect=function (selectInfo){
if(selectInfo.jsEvent){
_this.isRecentPointerDateSelect=true;
}};
this.onDocumentPointerDown=function (pev){
var unselectCancel=_this.context.options.unselectCancel;
var downEl=pev.origEvent.target;
_this.matchesCancel = !!elementClosest(downEl, unselectCancel);
_this.matchesEvent = !!elementClosest(downEl, EventDragging.SELECTOR);
};
this.onDocumentPointerUp=function (pev){
var context=_this.context;
var documentPointer=_this.documentPointer;
var calendarState=context.getCurrentData();
if(!documentPointer.wasTouchScroll){
if(calendarState.dateSelection &&
!_this.isRecentPointerDateSelect
){
var unselectAuto=context.options.unselectAuto;
if(unselectAuto&&(!unselectAuto||!_this.matchesCancel)){
context.calendarApi.unselect(pev);
}}
if(calendarState.eventSelection &&
!_this.matchesEvent
){
context.dispatch({ type: 'UNSELECT_EVENT' });
}}
_this.isRecentPointerDateSelect=false;
};
var documentPointer=this.documentPointer=new PointerDragging(document);
documentPointer.shouldIgnoreMove=true;
documentPointer.shouldWatchScroll=false;
documentPointer.emitter.on('pointerdown', this.onDocumentPointerDown);
documentPointer.emitter.on('pointerup', this.onDocumentPointerUp);
context.emitter.on('select', this.onSelect);
}
UnselectAuto.prototype.destroy=function (){
this.context.emitter.off('select', this.onSelect);
this.documentPointer.destroy();
};
return UnselectAuto;
}());
var LISTENER_REFINERS={
dateClick: identity,
eventDragStart: identity,
eventDragStop: identity,
eventDrop: identity,
eventResizeStart: identity,
eventResizeStop: identity,
eventResize: identity,
drop: identity,
eventReceive: identity,
eventLeave: identity
};
var ExternalElementDragging= (function (){
function ExternalElementDragging(dragging, suppliedDragMeta){
var _this=this;
this.receivingContext=null;
this.droppableEvent=null;
this.suppliedDragMeta=null;
this.dragMeta=null;
this.handleDragStart=function (ev){
_this.dragMeta=_this.buildDragMeta(ev.subjectEl);
};
this.handleHitUpdate=function (hit, isFinal, ev){
var dragging=_this.hitDragging.dragging;
var receivingContext=null;
var droppableEvent=null;
var isInvalid=false;
var interaction={
affectedEvents: createEmptyEventStore(),
mutatedEvents: createEmptyEventStore(),
isEvent: _this.dragMeta.create
};
if(hit){
receivingContext=hit.component.context;
if(_this.canDropElOnCalendar(ev.subjectEl, receivingContext)){
droppableEvent=computeEventForDateSpan(hit.dateSpan, _this.dragMeta, receivingContext);
interaction.mutatedEvents=eventTupleToStore(droppableEvent);
isInvalid = !isInteractionValid(interaction, receivingContext);
if(isInvalid){
interaction.mutatedEvents=createEmptyEventStore();
droppableEvent=null;
}}
}
_this.displayDrag(receivingContext, interaction);
dragging.setMirrorIsVisible(isFinal||!droppableEvent||!document.querySelector('.fc-event-mirror'));
if(!isInvalid){
enableCursor();
}else{
disableCursor();
}
if(!isFinal){
dragging.setMirrorNeedsRevert(!droppableEvent);
_this.receivingContext=receivingContext;
_this.droppableEvent=droppableEvent;
}};
this.handleDragEnd=function (pev){
var _a=_this, receivingContext=_a.receivingContext, droppableEvent=_a.droppableEvent;
_this.clearDrag();
if(receivingContext&&droppableEvent){
var finalHit=_this.hitDragging.finalHit;
var finalView=finalHit.component.context.viewApi;
var dragMeta=_this.dragMeta;
receivingContext.emitter.trigger('drop', __assign(__assign({}, buildDatePointApiWithContext(finalHit.dateSpan, receivingContext)), { draggedEl: pev.subjectEl, jsEvent: pev.origEvent, view: finalView }));
if(dragMeta.create){
var addingEvents_1=eventTupleToStore(droppableEvent);
receivingContext.dispatch({
type: 'MERGE_EVENTS',
eventStore: addingEvents_1
});
if(pev.isTouch){
receivingContext.dispatch({
type: 'SELECT_EVENT',
eventInstanceId: droppableEvent.instance.instanceId
});
}
receivingContext.emitter.trigger('eventReceive', {
event: new EventApi(receivingContext, droppableEvent.def, droppableEvent.instance),
relatedEvents: [],
revert: function (){
receivingContext.dispatch({
type: 'REMOVE_EVENTS',
eventStore: addingEvents_1
});
},
draggedEl: pev.subjectEl,
view: finalView
});
}}
_this.receivingContext=null;
_this.droppableEvent=null;
};
var hitDragging=this.hitDragging=new HitDragging(dragging, interactionSettingsStore);
hitDragging.requireInitial=false;
hitDragging.emitter.on('dragstart', this.handleDragStart);
hitDragging.emitter.on('hitupdate', this.handleHitUpdate);
hitDragging.emitter.on('dragend', this.handleDragEnd);
this.suppliedDragMeta=suppliedDragMeta;
}
ExternalElementDragging.prototype.buildDragMeta=function (subjectEl){
if(typeof this.suppliedDragMeta==='object'){
return parseDragMeta(this.suppliedDragMeta);
}
else if(typeof this.suppliedDragMeta==='function'){
return parseDragMeta(this.suppliedDragMeta(subjectEl));
}else{
return getDragMetaFromEl(subjectEl);
}};
ExternalElementDragging.prototype.displayDrag=function (nextContext, state){
var prevContext=this.receivingContext;
if(prevContext&&prevContext!==nextContext){
prevContext.dispatch({ type: 'UNSET_EVENT_DRAG' });
}
if(nextContext){
nextContext.dispatch({ type: 'SET_EVENT_DRAG', state: state });
}};
ExternalElementDragging.prototype.clearDrag=function (){
if(this.receivingContext){
this.receivingContext.dispatch({ type: 'UNSET_EVENT_DRAG' });
}};
ExternalElementDragging.prototype.canDropElOnCalendar=function (el, receivingContext){
var dropAccept=receivingContext.options.dropAccept;
if(typeof dropAccept==='function'){
return dropAccept.call(receivingContext.calendarApi, el);
}
else if(typeof dropAccept==='string'&&dropAccept){
return Boolean(elementMatches(el, dropAccept));
}
return true;
};
return ExternalElementDragging;
}());
function computeEventForDateSpan(dateSpan, dragMeta, context){
var defProps=__assign({}, dragMeta.leftoverProps);
for (var _i=0, _a=context.pluginHooks.externalDefTransforms; _i < _a.length; _i++){
var transform=_a[_i];
__assign(defProps, transform(dateSpan, dragMeta));
}
var _b=refineEventDef(defProps, context), refined=_b.refined, extra=_b.extra;
var def=parseEventDef(refined, extra, dragMeta.sourceId, dateSpan.allDay, context.options.forceEventDuration||Boolean(dragMeta.duration),
context);
var start=dateSpan.range.start;
if(dateSpan.allDay&&dragMeta.startTime){
start=context.dateEnv.add(start, dragMeta.startTime);
}
var end=dragMeta.duration ?
context.dateEnv.add(start, dragMeta.duration) :
getDefaultEventEnd(dateSpan.allDay, start, context);
var instance=createEventInstance(def.defId, { start: start, end: end });
return { def: def, instance: instance };}
function getDragMetaFromEl(el){
var str=getEmbeddedElData(el, 'event');
var obj=str ?
JSON.parse(str) :
{ create: false };
return parseDragMeta(obj);
}
config.dataAttrPrefix='';
function getEmbeddedElData(el, name){
var prefix=config.dataAttrPrefix;
var prefixedName=(prefix ? prefix + '-':'') + name;
return el.getAttribute('data-' + prefixedName)||'';
}
var ExternalDraggable= (function (){
function ExternalDraggable(el, settings){
var _this=this;
if(settings===void 0){ settings={};}
this.handlePointerDown=function (ev){
var dragging=_this.dragging;
var _a=_this.settings, minDistance=_a.minDistance, longPressDelay=_a.longPressDelay;
dragging.minDistance =
minDistance!=null ?
minDistance :
(ev.isTouch ? 0:BASE_OPTION_DEFAULTS.eventDragMinDistance);
dragging.delay =
ev.isTouch ?
(longPressDelay!=null ? longPressDelay:BASE_OPTION_DEFAULTS.longPressDelay) :
0;
};
this.handleDragStart=function (ev){
if(ev.isTouch &&
_this.dragging.delay &&
ev.subjectEl.classList.contains('fc-event')){
_this.dragging.mirror.getMirrorEl().classList.add('fc-event-selected');
}};
this.settings=settings;
var dragging=this.dragging=new FeaturefulElementDragging(el);
dragging.touchScrollAllowed=false;
if(settings.itemSelector!=null){
dragging.pointer.selector=settings.itemSelector;
}
if(settings.appendTo!=null){
dragging.mirror.parentNode=settings.appendTo;
}
dragging.emitter.on('pointerdown', this.handlePointerDown);
dragging.emitter.on('dragstart', this.handleDragStart);
new ExternalElementDragging(dragging, settings.eventData);
}
ExternalDraggable.prototype.destroy=function (){
this.dragging.destroy();
};
return ExternalDraggable;
}());
var InferredElementDragging= (function (_super){
__extends(InferredElementDragging, _super);
function InferredElementDragging(containerEl){
var _this=_super.call(this, containerEl)||this;
_this.shouldIgnoreMove=false;
_this.mirrorSelector='';
_this.currentMirrorEl=null;
_this.handlePointerDown=function (ev){
_this.emitter.trigger('pointerdown', ev);
if(!_this.shouldIgnoreMove){
_this.emitter.trigger('dragstart', ev);
}};
_this.handlePointerMove=function (ev){
if(!_this.shouldIgnoreMove){
_this.emitter.trigger('dragmove', ev);
}};
_this.handlePointerUp=function (ev){
_this.emitter.trigger('pointerup', ev);
if(!_this.shouldIgnoreMove){
_this.emitter.trigger('dragend', ev);
}};
var pointer=_this.pointer=new PointerDragging(containerEl);
pointer.emitter.on('pointerdown', _this.handlePointerDown);
pointer.emitter.on('pointermove', _this.handlePointerMove);
pointer.emitter.on('pointerup', _this.handlePointerUp);
return _this;
}
InferredElementDragging.prototype.destroy=function (){
this.pointer.destroy();
};
InferredElementDragging.prototype.setIgnoreMove=function (bool){
this.shouldIgnoreMove=bool;
};
InferredElementDragging.prototype.setMirrorIsVisible=function (bool){
if(bool){
if(this.currentMirrorEl){
this.currentMirrorEl.style.visibility='';
this.currentMirrorEl=null;
}}else{
var mirrorEl=this.mirrorSelector ?
document.querySelector(this.mirrorSelector) :
null;
if(mirrorEl){
this.currentMirrorEl=mirrorEl;
mirrorEl.style.visibility='hidden';
}}
};
return InferredElementDragging;
}(ElementDragging));
var ThirdPartyDraggable= (function (){
function ThirdPartyDraggable(containerOrSettings, settings){
var containerEl=document;
if(containerOrSettings===document ||
containerOrSettings instanceof Element){
containerEl=containerOrSettings;
settings=settings||{};}else{
settings=(containerOrSettings||{});
}
var dragging=this.dragging=new InferredElementDragging(containerEl);
if(typeof settings.itemSelector==='string'){
dragging.pointer.selector=settings.itemSelector;
}
else if(containerEl===document){
dragging.pointer.selector='[data-event]';
}
if(typeof settings.mirrorSelector==='string'){
dragging.mirrorSelector=settings.mirrorSelector;
}
new ExternalElementDragging(dragging, settings.eventData);
}
ThirdPartyDraggable.prototype.destroy=function (){
this.dragging.destroy();
};
return ThirdPartyDraggable;
}());
var interactionPlugin=createPlugin({
componentInteractions: [DateClicking, DateSelecting, EventDragging, EventResizing],
calendarInteractions: [UnselectAuto],
elementDraggingImpl: FeaturefulElementDragging,
listenerRefiners: LISTENER_REFINERS
});
var TableView= (function (_super){
__extends(TableView, _super);
function TableView(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.headerElRef=createRef();
return _this;
}
TableView.prototype.renderSimpleLayout=function (headerRowContent, bodyContent){
var _a=this, props=_a.props, context=_a.context;
var sections=[];
var stickyHeaderDates=getStickyHeaderDates(context.options);
if(headerRowContent){
sections.push({
type: 'header',
key: 'header',
isSticky: stickyHeaderDates,
chunk: {
elRef: this.headerElRef,
tableClassName: 'fc-col-header',
rowContent: headerRowContent
}});
}
sections.push({
type: 'body',
key: 'body',
liquid: true,
chunk: { content: bodyContent }});
return (createElement(ViewRoot, { viewSpec: context.viewSpec }, function (rootElRef, classNames){ return (createElement("div", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') },
createElement(SimpleScrollGrid, { liquid: !props.isHeightAuto&&!props.forPrint, cols: [] , sections: sections }))); }));
};
TableView.prototype.renderHScrollLayout=function (headerRowContent, bodyContent, colCnt, dayMinWidth){
var ScrollGrid=this.context.pluginHooks.scrollGridImpl;
if(!ScrollGrid){
throw new Error('No ScrollGrid implementation');
}
var _a=this, props=_a.props, context=_a.context;
var stickyHeaderDates = !props.forPrint&&getStickyHeaderDates(context.options);
var stickyFooterScrollbar = !props.forPrint&&getStickyFooterScrollbar(context.options);
var sections=[];
if(headerRowContent){
sections.push({
type: 'header',
key: 'header',
isSticky: stickyHeaderDates,
chunks: [{
key: 'main',
elRef: this.headerElRef,
tableClassName: 'fc-col-header',
rowContent: headerRowContent
}]
});
}
sections.push({
type: 'body',
key: 'body',
liquid: true,
chunks: [{
key: 'main',
content: bodyContent
}]
});
if(stickyFooterScrollbar){
sections.push({
type: 'footer',
key: 'footer',
isSticky: true,
chunks: [{
key: 'main',
content: renderScrollShim
}]
});
}
return (createElement(ViewRoot, { viewSpec: context.viewSpec }, function (rootElRef, classNames){ return (createElement("div", { ref: rootElRef, className: ['fc-daygrid'].concat(classNames).join(' ') },
createElement(ScrollGrid, { liquid: !props.isHeightAuto&&!props.forPrint, colGroups: [{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }], sections: sections }))); }));
};
return TableView;
}(DateComponent));
function splitSegsByRow(segs, rowCnt){
var byRow=[];
for (var i=0; i < rowCnt; i++){
byRow[i]=[];
}
for (var _i=0, segs_1=segs; _i < segs_1.length; _i++){
var seg=segs_1[_i];
byRow[seg.row].push(seg);
}
return byRow;
}
function splitSegsByFirstCol(segs, colCnt){
var byCol=[];
for (var i=0; i < colCnt; i++){
byCol[i]=[];
}
for (var _i=0, segs_2=segs; _i < segs_2.length; _i++){
var seg=segs_2[_i];
byCol[seg.firstCol].push(seg);
}
return byCol;
}
function splitInteractionByRow(ui, rowCnt){
var byRow=[];
if(!ui){
for (var i=0; i < rowCnt; i++){
byRow[i]=null;
}}else{
for (var i=0; i < rowCnt; i++){
byRow[i]={
affectedInstances: ui.affectedInstances,
isEvent: ui.isEvent,
segs: []
};}
for (var _i=0, _a=ui.segs; _i < _a.length; _i++){
var seg=_a[_i];
byRow[seg.row].segs.push(seg);
}}
return byRow;
}
var DEFAULT_WEEK_NUM_FORMAT=createFormatter({ week: 'narrow' });
var TableCell= (function (_super){
__extends(TableCell, _super);
function TableCell(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.handleRootEl=function (el){
_this.rootEl=el;
setRef(_this.props.elRef, el);
};
_this.handleMoreLinkClick=function (ev){
var props=_this.props;
if(props.onMoreClick){
var allSegs=props.segsByEachCol;
var hiddenSegs=allSegs.filter(function (seg){ return props.segIsHidden[seg.eventRange.instance.instanceId]; });
props.onMoreClick({
date: props.date,
allSegs: allSegs,
hiddenSegs: hiddenSegs,
moreCnt: props.moreCnt,
dayEl: _this.rootEl,
ev: ev
});
}};
return _this;
}
TableCell.prototype.render=function (){
var _this=this;
var _a=this.context, options=_a.options, viewApi=_a.viewApi;
var props=this.props;
var date=props.date, dateProfile=props.dateProfile;
var hookProps={
num: props.moreCnt,
text: props.buildMoreLinkText(props.moreCnt),
view: viewApi
};
var navLinkAttrs=options.navLinks
? { 'data-navlink': buildNavLinkData(date, 'week'), tabIndex: 0 }
: {};
return (createElement(DayCellRoot, { date: date, dateProfile: dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, elRef: this.handleRootEl }, function (rootElRef, classNames, rootDataAttrs, isDisabled){ return (createElement("td", __assign({ ref: rootElRef, className: ['fc-daygrid-day'].concat(classNames, props.extraClassNames||[]).join(' ') }, rootDataAttrs, props.extraDataAttrs),
createElement("div", { className: 'fc-daygrid-day-frame fc-scrollgrid-sync-inner', ref: props.innerElRef  },
props.showWeekNumber &&
createElement(WeekNumberRoot, { date: date, defaultFormat: DEFAULT_WEEK_NUM_FORMAT }, function (rootElRef, classNames, innerElRef, innerContent){ return (createElement("a", __assign({ ref: rootElRef, className: ['fc-daygrid-week-number'].concat(classNames).join(' ') }, navLinkAttrs), innerContent)); }),
!isDisabled &&
createElement(TableCellTop, { date: date, dateProfile: dateProfile, showDayNumber: props.showDayNumber, forceDayTop: props.forceDayTop, todayRange: props.todayRange, extraHookProps: props.extraHookProps }),
createElement("div", { className: 'fc-daygrid-day-events', ref: props.fgContentElRef, style: { paddingBottom: props.fgPaddingBottom }},
props.fgContent,
Boolean(props.moreCnt) &&
createElement("div", { className: 'fc-daygrid-day-bottom', style: { marginTop: props.moreMarginTop }},
createElement(RenderHook, { hookProps: hookProps, classNames: options.moreLinkClassNames, content: options.moreLinkContent, defaultContent: renderMoreLinkInner, didMount: options.moreLinkDidMount, willUnmount: options.moreLinkWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent){ return (createElement("a", { onClick: _this.handleMoreLinkClick, ref: rootElRef, className: ['fc-daygrid-more-link'].concat(classNames).join(' ') }, innerContent)); }))),
createElement("div", { className: 'fc-daygrid-day-bg' }, props.bgContent)))); }));
};
return TableCell;
}(DateComponent));
function renderTopInner(props){
return props.dayNumberText;
}
function renderMoreLinkInner(props){
return props.text;
}
var TableCellTop= (function (_super){
__extends(TableCellTop, _super);
function TableCellTop(){
return _super!==null&&_super.apply(this, arguments)||this;
}
TableCellTop.prototype.render=function (){
var props=this.props;
var navLinkAttrs=this.context.options.navLinks
? { 'data-navlink': buildNavLinkData(props.date), tabIndex: 0 }
: {};
return (createElement(DayCellContent, { date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, showDayNumber: props.showDayNumber, extraHookProps: props.extraHookProps, defaultContent: renderTopInner }, function (innerElRef, innerContent){ return ((innerContent||props.forceDayTop) &&
createElement("div", { className: 'fc-daygrid-day-top', ref: innerElRef },
createElement("a", __assign({ className: 'fc-daygrid-day-number' }, navLinkAttrs), innerContent||createElement(Fragment, null, "\u00A0")))); }));
};
return TableCellTop;
}(BaseComponent));
var DEFAULT_TABLE_EVENT_TIME_FORMAT=createFormatter({
hour: 'numeric',
minute: '2-digit',
omitZeroMinute: true,
meridiem: 'narrow'
});
function hasListItemDisplay(seg){
var display=seg.eventRange.ui.display;
return display==='list-item'||(display==='auto' &&
!seg.eventRange.def.allDay &&
seg.firstCol===seg.lastCol &&
seg.isStart&&// "
seg.isEnd // "
);
}
var TableListItemEvent= (function (_super){
__extends(TableListItemEvent, _super);
function TableListItemEvent(){
return _super!==null&&_super.apply(this, arguments)||this;
}
TableListItemEvent.prototype.render=function (){
var _a=this, props=_a.props, context=_a.context;
var timeFormat=context.options.eventTimeFormat||DEFAULT_TABLE_EVENT_TIME_FORMAT;
var timeText=buildSegTimeText(props.seg, timeFormat, context, true, props.defaultDisplayEventEnd);
return (createElement(EventRoot, { seg: props.seg, timeText: timeText, defaultContent: renderInnerContent$2, isDragging: props.isDragging, isResizing: false, isDateSelecting: false, isSelected: props.isSelected, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday }, function (rootElRef, classNames, innerElRef, innerContent){ return (
createElement("a", __assign({ className: ['fc-daygrid-event', 'fc-daygrid-dot-event'].concat(classNames).join(' '), ref: rootElRef }, getSegAnchorAttrs$1(props.seg)), innerContent)); }));
};
return TableListItemEvent;
}(BaseComponent));
function renderInnerContent$2(innerProps){
return (createElement(Fragment, null,
createElement("div", { className: 'fc-daygrid-event-dot', style: { borderColor: innerProps.borderColor||innerProps.backgroundColor }}),
innerProps.timeText &&
createElement("div", { className: 'fc-event-time' }, innerProps.timeText),
createElement("div", { className: 'fc-event-title' }, innerProps.event.title||createElement(Fragment, null, "\u00A0"))));
}
function getSegAnchorAttrs$1(seg){
var url=seg.eventRange.def.url;
return url ? { href: url }:{};}
var TableBlockEvent= (function (_super){
__extends(TableBlockEvent, _super);
function TableBlockEvent(){
return _super!==null&&_super.apply(this, arguments)||this;
}
TableBlockEvent.prototype.render=function (){
var props=this.props;
return (createElement(StandardEvent, __assign({}, props, { extraClassNames: ['fc-daygrid-event', 'fc-daygrid-block-event', 'fc-h-event'], defaultTimeFormat: DEFAULT_TABLE_EVENT_TIME_FORMAT, defaultDisplayEventEnd: props.defaultDisplayEventEnd, disableResizing: !props.seg.eventRange.def.allDay })));
};
return TableBlockEvent;
}(BaseComponent));
function computeFgSegPlacement(
cellModels, segs, dayMaxEvents, dayMaxEventRows, eventHeights, maxContentHeight, colCnt, eventOrderSpecs){
var colPlacements=[];
var moreCnts=[];
var segIsHidden={};
var segTops={};
var segMarginTops={};
var moreTops={};
var paddingBottoms={};
for (var i=0; i < colCnt; i++){
colPlacements.push([]);
moreCnts.push(0);
}
segs=sortEventSegs(segs, eventOrderSpecs);
for (var _i=0, segs_1=segs; _i < segs_1.length; _i++){
var seg=segs_1[_i];
var instanceId=seg.eventRange.instance.instanceId;
var eventHeight=eventHeights[instanceId + ':' + seg.firstCol];
placeSeg(seg, eventHeight||0);
}
if(dayMaxEvents===true||dayMaxEventRows===true){
limitByMaxHeight(moreCnts, segIsHidden, colPlacements, maxContentHeight);
}
else if(typeof dayMaxEvents==='number'){
limitByMaxEvents(moreCnts, segIsHidden, colPlacements, dayMaxEvents);
}
else if(typeof dayMaxEventRows==='number'){
limitByMaxRows(moreCnts, segIsHidden, colPlacements, dayMaxEventRows);
}
for (var col=0; col < colCnt; col++){
var placements=colPlacements[col];
var currentNonAbsBottom=0;
var runningAbsHeight=0;
for (var _a=0, placements_1=placements; _a < placements_1.length; _a++){
var placement=placements_1[_a];
var seg=placement.seg;
if(!segIsHidden[seg.eventRange.instance.instanceId]){
segTops[seg.eventRange.instance.instanceId]=placement.top;
if(seg.firstCol===seg.lastCol&&seg.isStart&&seg.isEnd){
segMarginTops[seg.eventRange.instance.instanceId] =
placement.top - currentNonAbsBottom;
runningAbsHeight=0;
currentNonAbsBottom=placement.bottom;
}else{
runningAbsHeight +=placement.bottom - placement.top;
}}
}
if(runningAbsHeight){
if(moreCnts[col]){
moreTops[col]=runningAbsHeight;
}else{
paddingBottoms[col]=runningAbsHeight;
}}
}
function placeSeg(seg, segHeight){
if(!tryPlaceSegAt(seg, segHeight, 0)){
for (var col=seg.firstCol; col <=seg.lastCol; col++){
for (var _i=0, _a=colPlacements[col]; _i < _a.length; _i++){
var placement=_a[_i];
if(tryPlaceSegAt(seg, segHeight, placement.bottom)){
return;
}}
}}
}
function tryPlaceSegAt(seg, segHeight, top){
if(canPlaceSegAt(seg, segHeight, top)){
for (var col=seg.firstCol; col <=seg.lastCol; col++){
var placements=colPlacements[col];
var insertionIndex=0;
while (insertionIndex < placements.length &&
top >=placements[insertionIndex].top){
insertionIndex++;
}
placements.splice(insertionIndex, 0, {
seg: seg,
top: top,
bottom: top + segHeight
});
}
return true;
}else{
return false;
}}
function canPlaceSegAt(seg, segHeight, top){
for (var col=seg.firstCol; col <=seg.lastCol; col++){
for (var _i=0, _a=colPlacements[col]; _i < _a.length; _i++){
var placement=_a[_i];
if(top < placement.bottom&&top + segHeight > placement.top){
return false;
}}
}
return true;
}
for (var instanceIdAndFirstCol in eventHeights){
if(!eventHeights[instanceIdAndFirstCol]){
segIsHidden[instanceIdAndFirstCol.split(':')[0]]=true;
}}
var segsByFirstCol=colPlacements.map(extractFirstColSegs);
var segsByEachCol=colPlacements.map(function (placements, col){
var segs=extractAllColSegs(placements);
segs=resliceDaySegs(segs, cellModels[col].date, col);
return segs;
});
return {
segsByFirstCol: segsByFirstCol,
segsByEachCol: segsByEachCol,
segIsHidden: segIsHidden,
segTops: segTops,
segMarginTops: segMarginTops,
moreCnts: moreCnts,
moreTops: moreTops,
paddingBottoms: paddingBottoms
};}
function extractFirstColSegs(oneColPlacements, col){
var segs=[];
for (var _i=0, oneColPlacements_1=oneColPlacements; _i < oneColPlacements_1.length; _i++){
var placement=oneColPlacements_1[_i];
if(placement.seg.firstCol===col){
segs.push(placement.seg);
}}
return segs;
}
function extractAllColSegs(oneColPlacements){
var segs=[];
for (var _i=0, oneColPlacements_2=oneColPlacements; _i < oneColPlacements_2.length; _i++){
var placement=oneColPlacements_2[_i];
segs.push(placement.seg);
}
return segs;
}
function limitByMaxHeight(hiddenCnts, segIsHidden, colPlacements, maxContentHeight){
limitEvents(hiddenCnts, segIsHidden, colPlacements, true, function (placement){
return placement.bottom <=maxContentHeight;
});
}
function limitByMaxEvents(hiddenCnts, segIsHidden, colPlacements, dayMaxEvents){
limitEvents(hiddenCnts, segIsHidden, colPlacements, false, function (placement, levelIndex){
return levelIndex < dayMaxEvents;
});
}
function limitByMaxRows(hiddenCnts, segIsHidden, colPlacements, dayMaxEventRows){
limitEvents(hiddenCnts, segIsHidden, colPlacements, true, function (placement, levelIndex){
return levelIndex < dayMaxEventRows;
});
}
function limitEvents(hiddenCnts, segIsHidden, colPlacements, moreLinkConsumesLevel, isPlacementInBounds){
var colCnt=hiddenCnts.length;
var segIsVisible={};
var visibleColPlacements=[];
for (var col=0; col < colCnt; col++){
visibleColPlacements.push([]);
}
for (var col=0; col < colCnt; col++){
var placements=colPlacements[col];
var level=0;
for (var _i=0, placements_2=placements; _i < placements_2.length; _i++){
var placement=placements_2[_i];
if(isPlacementInBounds(placement, level)){
recordVisible(placement);
}else{
recordHidden(placement);
}
if(placement.top!==placement.bottom){
level++;
}}
}
function recordVisible(placement){
var seg=placement.seg;
var instanceId=seg.eventRange.instance.instanceId;
if(!segIsVisible[instanceId]){
segIsVisible[instanceId]=true;
for (var col=seg.firstCol; col <=seg.lastCol; col++){
visibleColPlacements[col].push(placement);
}}
}
function recordHidden(placement){
var seg=placement.seg;
var instanceId=seg.eventRange.instance.instanceId;
if(!segIsHidden[instanceId]){
segIsHidden[instanceId]=true;
for (var col=seg.firstCol; col <=seg.lastCol; col++){
var hiddenCnt=++hiddenCnts[col];
if(moreLinkConsumesLevel&&hiddenCnt===1){
var lastVisiblePlacement=visibleColPlacements[col].pop();
if(lastVisiblePlacement){
recordHidden(lastVisiblePlacement);
}}
}}
}}
function resliceDaySegs(segs, dayDate, colIndex){
var dayStart=dayDate;
var dayEnd=addDays(dayStart, 1);
var dayRange={ start: dayStart, end: dayEnd };
var newSegs=[];
for (var _i=0, segs_2=segs; _i < segs_2.length; _i++){
var seg=segs_2[_i];
var eventRange=seg.eventRange;
var origRange=eventRange.range;
var slicedRange=intersectRanges(origRange, dayRange);
if(slicedRange){
newSegs.push(__assign(__assign({}, seg), { firstCol: colIndex, lastCol: colIndex, eventRange: {
def: eventRange.def,
ui: __assign(__assign({}, eventRange.ui), { durationEditable: false }),
instance: eventRange.instance,
range: slicedRange
}, isStart: seg.isStart&&slicedRange.start.valueOf()===origRange.start.valueOf(), isEnd: seg.isEnd&&slicedRange.end.valueOf()===origRange.end.valueOf() }));
}}
return newSegs;
}
var TableRow= (function (_super){
__extends(TableRow, _super);
function TableRow(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.cellElRefs=new RefMap();
_this.frameElRefs=new RefMap();
_this.fgElRefs=new RefMap();
_this.segHarnessRefs=new RefMap();
_this.rootElRef=createRef();
_this.state={
framePositions: null,
maxContentHeight: null,
segHeights: {}};
return _this;
}
TableRow.prototype.render=function (){
var _this=this;
var _a=this, props=_a.props, state=_a.state, context=_a.context;
var colCnt=props.cells.length;
var businessHoursByCol=splitSegsByFirstCol(props.businessHourSegs, colCnt);
var bgEventSegsByCol=splitSegsByFirstCol(props.bgEventSegs, colCnt);
var highlightSegsByCol=splitSegsByFirstCol(this.getHighlightSegs(), colCnt);
var mirrorSegsByCol=splitSegsByFirstCol(this.getMirrorSegs(), colCnt);
var _b=computeFgSegPlacement(props.cells, props.fgEventSegs, props.dayMaxEvents, props.dayMaxEventRows, state.segHeights, state.maxContentHeight, colCnt, context.options.eventOrder), paddingBottoms=_b.paddingBottoms, segsByFirstCol=_b.segsByFirstCol, segsByEachCol=_b.segsByEachCol, segIsHidden=_b.segIsHidden, segTops=_b.segTops, segMarginTops=_b.segMarginTops, moreCnts=_b.moreCnts, moreTops=_b.moreTops;
var selectedInstanceHash =
(props.eventDrag&&props.eventDrag.affectedInstances) ||
(props.eventResize&&props.eventResize.affectedInstances) ||
{};
return (createElement("tr", { ref: this.rootElRef },
props.renderIntro&&props.renderIntro(),
props.cells.map(function (cell, col){
var normalFgNodes=_this.renderFgSegs(segsByFirstCol[col], segIsHidden, segTops, segMarginTops, selectedInstanceHash, props.todayRange);
var mirrorFgNodes=_this.renderFgSegs(mirrorSegsByCol[col], {}, segTops,
{}, {}, props.todayRange, Boolean(props.eventDrag), Boolean(props.eventResize), false
);
return (createElement(TableCell, { key: cell.key, elRef: _this.cellElRefs.createRef(cell.key), innerElRef: _this.frameElRefs.createRef(cell.key) , dateProfile: props.dateProfile, date: cell.date, showDayNumber: props.showDayNumbers, showWeekNumber: props.showWeekNumbers&&col===0, forceDayTop: props.showWeekNumbers , todayRange: props.todayRange, extraHookProps: cell.extraHookProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, moreCnt: moreCnts[col], buildMoreLinkText: props.buildMoreLinkText, onMoreClick: props.onMoreClick, segIsHidden: segIsHidden, moreMarginTop: moreTops[col] , segsByEachCol: segsByEachCol[col], fgPaddingBottom: paddingBottoms[col], fgContentElRef: _this.fgElRefs.createRef(cell.key), fgContent: (
createElement(Fragment, null,
createElement(Fragment, null, normalFgNodes),
createElement(Fragment, null, mirrorFgNodes))), bgContent: (
createElement(Fragment, null,
_this.renderFillSegs(highlightSegsByCol[col], 'highlight'),
_this.renderFillSegs(businessHoursByCol[col], 'non-business'),
_this.renderFillSegs(bgEventSegsByCol[col], 'bg-event'))) }));
})));
};
TableRow.prototype.componentDidMount=function (){
this.updateSizing(true);
};
TableRow.prototype.componentDidUpdate=function (prevProps, prevState){
var currentProps=this.props;
this.updateSizing(!isPropsEqual(prevProps, currentProps));
};
TableRow.prototype.getHighlightSegs=function (){
var props=this.props;
if(props.eventDrag&&props.eventDrag.segs.length){
return props.eventDrag.segs;
}
else if(props.eventResize&&props.eventResize.segs.length){
return props.eventResize.segs;
}else{
return props.dateSelectionSegs;
}};
TableRow.prototype.getMirrorSegs=function (){
var props=this.props;
if(props.eventResize&&props.eventResize.segs.length){
return props.eventResize.segs;
}else{
return [];
}};
TableRow.prototype.renderFgSegs=function (segs, segIsHidden,
segTops, segMarginTops, selectedInstanceHash, todayRange, isDragging, isResizing, isDateSelecting){
var context=this.context;
var eventSelection=this.props.eventSelection;
var framePositions=this.state.framePositions;
var defaultDisplayEventEnd=this.props.cells.length===1;
var nodes=[];
if(framePositions){
for (var _i=0, segs_1=segs; _i < segs_1.length; _i++){
var seg=segs_1[_i];
var instanceId=seg.eventRange.instance.instanceId;
var isMirror=isDragging||isResizing||isDateSelecting;
var isSelected=selectedInstanceHash[instanceId];
var isInvisible=segIsHidden[instanceId]||isSelected;
var isAbsolute=segIsHidden[instanceId]||isMirror||seg.firstCol!==seg.lastCol||!seg.isStart||!seg.isEnd;
var marginTop=void 0;
var top_1=void 0;
var left=void 0;
var right=void 0;
if(isAbsolute){
top_1=segTops[instanceId];
if(context.isRtl){
right=0;
left=framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol];
}else{
left=0;
right=framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol];
}}else{
marginTop=segMarginTops[instanceId];
}
nodes.push(createElement("div", { className: 'fc-daygrid-event-harness' + (isAbsolute ? ' fc-daygrid-event-harness-abs':''), key: instanceId, ref: isMirror ? null:this.segHarnessRefs.createRef(instanceId + ':' + seg.firstCol) , style: {
visibility: isInvisible ? 'hidden':'',
marginTop: marginTop||'',
top: top_1||'',
left: left||'',
right: right||''
}}, hasListItemDisplay(seg) ?
createElement(TableListItemEvent, __assign({ seg: seg, isDragging: isDragging, isSelected: instanceId===eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getSegMeta(seg, todayRange))) :
createElement(TableBlockEvent, __assign({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId===eventSelection, defaultDisplayEventEnd: defaultDisplayEventEnd }, getSegMeta(seg, todayRange)))));
}}
return nodes;
};
TableRow.prototype.renderFillSegs=function (segs, fillType){
var isRtl=this.context.isRtl;
var todayRange=this.props.todayRange;
var framePositions=this.state.framePositions;
var nodes=[];
if(framePositions){
for (var _i=0, segs_2=segs; _i < segs_2.length; _i++){
var seg=segs_2[_i];
var leftRightCss=isRtl ? {
right: 0,
left: framePositions.lefts[seg.lastCol] - framePositions.lefts[seg.firstCol]
}:{
left: 0,
right: framePositions.rights[seg.firstCol] - framePositions.rights[seg.lastCol],
};
nodes.push(createElement("div", { key: buildEventRangeKey(seg.eventRange), className: 'fc-daygrid-bg-harness', style: leftRightCss }, fillType==='bg-event' ?
createElement(BgEvent, __assign({ seg: seg }, getSegMeta(seg, todayRange))) :
renderFill(fillType)));
}}
return createElement.apply(void 0, __spreadArrays([Fragment, {}], nodes));
};
TableRow.prototype.updateSizing=function (isExternalSizingChange){
var _a=this, props=_a.props, frameElRefs=_a.frameElRefs;
if(props.clientWidth!==null){
if(isExternalSizingChange){
var frameEls=props.cells.map(function (cell){ return frameElRefs.currentMap[cell.key]; });
if(frameEls.length){
var originEl=this.rootElRef.current;
this.setState({
framePositions: new PositionCache(originEl, frameEls, true,
false)
});
}}
var limitByContentHeight=props.dayMaxEvents===true||props.dayMaxEventRows===true;
this.setState({
segHeights: this.computeSegHeights(),
maxContentHeight: limitByContentHeight ? this.computeMaxContentHeight():null
});
}};
TableRow.prototype.computeSegHeights=function (){
return mapHash(this.segHarnessRefs.currentMap, function (eventHarnessEl){ return (eventHarnessEl.getBoundingClientRect().height); });
};
TableRow.prototype.computeMaxContentHeight=function (){
var firstKey=this.props.cells[0].key;
var cellEl=this.cellElRefs.currentMap[firstKey];
var fcContainerEl=this.fgElRefs.currentMap[firstKey];
return cellEl.getBoundingClientRect().bottom - fcContainerEl.getBoundingClientRect().top;
};
TableRow.prototype.getCellEls=function (){
var elMap=this.cellElRefs.currentMap;
return this.props.cells.map(function (cell){ return elMap[cell.key]; });
};
return TableRow;
}(DateComponent));
TableRow.addStateEquality({
segHeights: isPropsEqual
});
var PADDING_FROM_VIEWPORT=10;
var SCROLL_DEBOUNCE=10;
var Popover= (function (_super){
__extends(Popover, _super);
function Popover(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.repositioner=new DelayedRunner(_this.updateSize.bind(_this));
_this.handleRootEl=function (el){
_this.rootEl=el;
if(_this.props.elRef){
setRef(_this.props.elRef, el);
}};
_this.handleDocumentMousedown=function (ev){
var onClose=_this.props.onClose;
if(onClose&&!_this.rootEl.contains(ev.target)){
onClose();
}};
_this.handleDocumentScroll=function (){
_this.repositioner.request(SCROLL_DEBOUNCE);
};
_this.handleCloseClick=function (){
var onClose=_this.props.onClose;
if(onClose){
onClose();
}};
return _this;
}
Popover.prototype.render=function (){
var theme=this.context.theme;
var props=this.props;
var classNames=[
'fc-popover',
theme.getClass('popover')
].concat(props.extraClassNames||[]);
return (createElement("div", __assign({ className: classNames.join(' ') }, props.extraAttrs, { ref: this.handleRootEl }),
createElement("div", { className: 'fc-popover-header ' + theme.getClass('popoverHeader') },
createElement("span", { className: 'fc-popover-title' }, props.title),
createElement("span", { className: 'fc-popover-close ' + theme.getIconClass('close'), onClick: this.handleCloseClick })),
createElement("div", { className: 'fc-popover-body ' + theme.getClass('popoverContent') }, props.children)));
};
Popover.prototype.componentDidMount=function (){
document.addEventListener('mousedown', this.handleDocumentMousedown);
document.addEventListener('scroll', this.handleDocumentScroll);
this.updateSize();
};
Popover.prototype.componentWillUnmount=function (){
document.removeEventListener('mousedown', this.handleDocumentMousedown);
document.removeEventListener('scroll', this.handleDocumentScroll);
};
Popover.prototype.updateSize=function (){
var _a=this.props, alignmentEl=_a.alignmentEl, topAlignmentEl=_a.topAlignmentEl;
var rootEl=this.rootEl;
if(!rootEl){
return;
}
var dims=rootEl.getBoundingClientRect();
var alignment=alignmentEl.getBoundingClientRect();
var top=topAlignmentEl ? topAlignmentEl.getBoundingClientRect().top:alignment.top;
top=Math.min(top, window.innerHeight - dims.height - PADDING_FROM_VIEWPORT);
top=Math.max(top, PADDING_FROM_VIEWPORT);
var left;
if(this.context.isRtl){
left=alignment.right - dims.width;
}else{
left=alignment.left;
}
left=Math.min(left, window.innerWidth - dims.width - PADDING_FROM_VIEWPORT);
left=Math.max(left, PADDING_FROM_VIEWPORT);
applyStyle(rootEl, { top: top, left: left });
};
return Popover;
}(BaseComponent));
var MorePopover= (function (_super){
__extends(MorePopover, _super);
function MorePopover(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.handlePopoverEl=function (popoverEl){
_this.popoverEl=popoverEl;
if(popoverEl){
_this.context.registerInteractiveComponent(_this, {
el: popoverEl,
useEventCenter: false
});
}else{
_this.context.unregisterInteractiveComponent(_this);
}};
return _this;
}
MorePopover.prototype.render=function (){
var _a=this.context, options=_a.options, dateEnv=_a.dateEnv;
var props=this.props;
var date=props.date, hiddenInstances=props.hiddenInstances, todayRange=props.todayRange, dateProfile=props.dateProfile, selectedInstanceId=props.selectedInstanceId;
var title=dateEnv.format(date, options.dayPopoverFormat);
return (createElement(DayCellRoot, { date: date, dateProfile: dateProfile, todayRange: todayRange, elRef: this.handlePopoverEl }, function (rootElRef, dayClassNames, dataAttrs){ return (createElement(Popover, { elRef: rootElRef, title: title, extraClassNames: ['fc-more-popover'].concat(dayClassNames), extraAttrs: dataAttrs, onClose: props.onCloseClick, alignmentEl: props.alignmentEl, topAlignmentEl: props.topAlignmentEl },
createElement(DayCellContent, { date: date, dateProfile: dateProfile, todayRange: todayRange }, function (innerElRef, innerContent){ return (innerContent &&
createElement("div", { className: 'fc-more-popover-misc', ref: innerElRef }, innerContent)); }),
props.segs.map(function (seg){
var instanceId=seg.eventRange.instance.instanceId;
return (createElement("div", { className: 'fc-daygrid-event-harness', key: instanceId, style: {
visibility: hiddenInstances[instanceId] ? 'hidden':''
}}, hasListItemDisplay(seg) ?
createElement(TableListItemEvent, __assign({ seg: seg, isDragging: false, isSelected: instanceId===selectedInstanceId, defaultDisplayEventEnd: false }, getSegMeta(seg, todayRange))) :
createElement(TableBlockEvent, __assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: instanceId===selectedInstanceId, defaultDisplayEventEnd: false }, getSegMeta(seg, todayRange)))));
}))); }));
};
MorePopover.prototype.queryHit=function (positionLeft, positionTop, elWidth, elHeight){
var date=this.props.date;
if(positionLeft < elWidth&&positionTop < elHeight){
return {
component: this,
dateSpan: {
allDay: true,
range: { start: date, end: addDays(date, 1) }},
dayEl: this.popoverEl,
rect: {
left: 0,
top: 0,
right: elWidth,
bottom: elHeight
},
layer: 1
};}};
MorePopover.prototype.isPopover=function (){
return true;
};
return MorePopover;
}(DateComponent));
var Table= (function (_super){
__extends(Table, _super);
function Table(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.splitBusinessHourSegs=memoize(splitSegsByRow);
_this.splitBgEventSegs=memoize(splitSegsByRow);
_this.splitFgEventSegs=memoize(splitSegsByRow);
_this.splitDateSelectionSegs=memoize(splitSegsByRow);
_this.splitEventDrag=memoize(splitInteractionByRow);
_this.splitEventResize=memoize(splitInteractionByRow);
_this.buildBuildMoreLinkText=memoize(buildBuildMoreLinkText);
_this.rowRefs=new RefMap();
_this.state={
morePopoverState: null
};
_this.handleRootEl=function (rootEl){
_this.rootEl=rootEl;
setRef(_this.props.elRef, rootEl);
};
_this.handleMoreLinkClick=function (arg){
var context=_this.context;
var dateEnv=context.dateEnv;
var clickOption=context.options.moreLinkClick;
function segForPublic(seg){
var _a=seg.eventRange, def=_a.def, instance=_a.instance, range=_a.range;
return {
event: new EventApi(context, def, instance),
start: dateEnv.toDate(range.start),
end: dateEnv.toDate(range.end),
isStart: seg.isStart,
isEnd: seg.isEnd
};}
if(typeof clickOption==='function'){
clickOption=clickOption({
date: dateEnv.toDate(arg.date),
allDay: true,
allSegs: arg.allSegs.map(segForPublic),
hiddenSegs: arg.hiddenSegs.map(segForPublic),
jsEvent: arg.ev,
view: context.viewApi
});
}
if(!clickOption||clickOption==='popover'){
_this.setState({
morePopoverState: __assign(__assign({}, arg), { currentFgEventSegs: _this.props.fgEventSegs })
});
}
else if(typeof clickOption==='string'){
context.calendarApi.zoomTo(arg.date, clickOption);
}};
_this.handleMorePopoverClose=function (){
_this.setState({
morePopoverState: null
});
};
return _this;
}
Table.prototype.render=function (){
var _this=this;
var props=this.props;
var dateProfile=props.dateProfile, dayMaxEventRows=props.dayMaxEventRows, dayMaxEvents=props.dayMaxEvents, expandRows=props.expandRows;
var morePopoverState=this.state.morePopoverState;
var rowCnt=props.cells.length;
var businessHourSegsByRow=this.splitBusinessHourSegs(props.businessHourSegs, rowCnt);
var bgEventSegsByRow=this.splitBgEventSegs(props.bgEventSegs, rowCnt);
var fgEventSegsByRow=this.splitFgEventSegs(props.fgEventSegs, rowCnt);
var dateSelectionSegsByRow=this.splitDateSelectionSegs(props.dateSelectionSegs, rowCnt);
var eventDragByRow=this.splitEventDrag(props.eventDrag, rowCnt);
var eventResizeByRow=this.splitEventResize(props.eventResize, rowCnt);
var buildMoreLinkText=this.buildBuildMoreLinkText(this.context.options.moreLinkText);
var limitViaBalanced=dayMaxEvents===true||dayMaxEventRows===true;
if(limitViaBalanced&&!expandRows){
limitViaBalanced=false;
dayMaxEventRows=null;
dayMaxEvents=null;
}
var classNames=[
'fc-daygrid-body',
limitViaBalanced ? 'fc-daygrid-body-balanced':'fc-daygrid-body-unbalanced',
expandRows ? '':'fc-daygrid-body-natural'
];
return (createElement("div", { className: classNames.join(' '), ref: this.handleRootEl, style: {
width: props.clientWidth,
minWidth: props.tableMinWidth
}},
createElement(NowTimer, { unit: 'day' }, function (nowDate, todayRange){ return (createElement(Fragment, null,
createElement("table", { className: 'fc-scrollgrid-sync-table', style: {
width: props.clientWidth,
minWidth: props.tableMinWidth,
height: expandRows ? props.clientHeight:''
}},
props.colGroupNode,
createElement("tbody", null, props.cells.map(function (cells, row){ return (createElement(TableRow, { ref: _this.rowRefs.createRef(row), key: cells.length
? cells[0].date.toISOString() 
: row
, showDayNumbers: rowCnt > 1, showWeekNumbers: props.showWeekNumbers, todayRange: todayRange, dateProfile: dateProfile, cells: cells, renderIntro: props.renderRowIntro, businessHourSegs: businessHourSegsByRow[row], eventSelection: props.eventSelection, bgEventSegs: bgEventSegsByRow[row].filter(isSegAllDay) , fgEventSegs: fgEventSegsByRow[row], dateSelectionSegs: dateSelectionSegsByRow[row], eventDrag: eventDragByRow[row], eventResize: eventResizeByRow[row], dayMaxEvents: dayMaxEvents, dayMaxEventRows: dayMaxEventRows, clientWidth: props.clientWidth, clientHeight: props.clientHeight, buildMoreLinkText: buildMoreLinkText, onMoreClick: _this.handleMoreLinkClick })); }))),
(!props.forPrint&&morePopoverState&&morePopoverState.currentFgEventSegs===props.fgEventSegs) &&
createElement(MorePopover, { date: morePopoverState.date, dateProfile: dateProfile, segs: morePopoverState.allSegs, alignmentEl: morePopoverState.dayEl, topAlignmentEl: rowCnt===1 ? props.headerAlignElRef.current:null, onCloseClick: _this.handleMorePopoverClose, selectedInstanceId: props.eventSelection, hiddenInstances:
(props.eventDrag ? props.eventDrag.affectedInstances:null) ||
(props.eventResize ? props.eventResize.affectedInstances:null) ||
{}, todayRange: todayRange }))); })));
};
Table.prototype.prepareHits=function (){
this.rowPositions=new PositionCache(this.rootEl, this.rowRefs.collect().map(function (rowObj){ return rowObj.getCellEls()[0]; }),
false, true
);
this.colPositions=new PositionCache(this.rootEl, this.rowRefs.currentMap[0].getCellEls(),
true,
false);
};
Table.prototype.positionToHit=function (leftPosition, topPosition){
var _a=this, colPositions=_a.colPositions, rowPositions=_a.rowPositions;
var col=colPositions.leftToIndex(leftPosition);
var row=rowPositions.topToIndex(topPosition);
if(row!=null&&col!=null){
return {
row: row,
col: col,
dateSpan: {
range: this.getCellRange(row, col),
allDay: true
},
dayEl: this.getCellEl(row, col),
relativeRect: {
left: colPositions.lefts[col],
right: colPositions.rights[col],
top: rowPositions.tops[row],
bottom: rowPositions.bottoms[row]
}};}};
Table.prototype.getCellEl=function (row, col){
return this.rowRefs.currentMap[row].getCellEls()[col];
};
Table.prototype.getCellRange=function (row, col){
var start=this.props.cells[row][col].date;
var end=addDays(start, 1);
return { start: start, end: end };};
return Table;
}(DateComponent));
function buildBuildMoreLinkText(moreLinkTextInput){
if(typeof moreLinkTextInput==='function'){
return moreLinkTextInput;
}else{
return function (num){
return "+" + num + " " + moreLinkTextInput;
};}}
function isSegAllDay(seg){
return seg.eventRange.def.allDay;
}
var DayTable= (function (_super){
__extends(DayTable, _super);
function DayTable(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.slicer=new DayTableSlicer();
_this.tableRef=createRef();
_this.handleRootEl=function (rootEl){
if(rootEl){
_this.context.registerInteractiveComponent(_this, { el: rootEl });
}else{
_this.context.unregisterInteractiveComponent(_this);
}};
return _this;
}
DayTable.prototype.render=function (){
var _a=this, props=_a.props, context=_a.context;
return (createElement(Table, __assign({ ref: this.tableRef, elRef: this.handleRootEl }, this.slicer.sliceProps(props, props.dateProfile, props.nextDayThreshold, context, props.dayTableModel), { dateProfile: props.dateProfile, cells: props.dayTableModel.cells, colGroupNode: props.colGroupNode, tableMinWidth: props.tableMinWidth, renderRowIntro: props.renderRowIntro, dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, showWeekNumbers: props.showWeekNumbers, expandRows: props.expandRows, headerAlignElRef: props.headerAlignElRef, clientWidth: props.clientWidth, clientHeight: props.clientHeight, forPrint: props.forPrint })));
};
DayTable.prototype.prepareHits=function (){
this.tableRef.current.prepareHits();
};
DayTable.prototype.queryHit=function (positionLeft, positionTop){
var rawHit=this.tableRef.current.positionToHit(positionLeft, positionTop);
if(rawHit){
return {
component: this,
dateSpan: rawHit.dateSpan,
dayEl: rawHit.dayEl,
rect: {
left: rawHit.relativeRect.left,
right: rawHit.relativeRect.right,
top: rawHit.relativeRect.top,
bottom: rawHit.relativeRect.bottom
},
layer: 0
};}};
return DayTable;
}(DateComponent));
var DayTableSlicer= (function (_super){
__extends(DayTableSlicer, _super);
function DayTableSlicer(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.forceDayIfListItem=true;
return _this;
}
DayTableSlicer.prototype.sliceRange=function (dateRange, dayTableModel){
return dayTableModel.sliceRange(dateRange);
};
return DayTableSlicer;
}(Slicer));
var DayTableView= (function (_super){
__extends(DayTableView, _super);
function DayTableView(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.buildDayTableModel=memoize(buildDayTableModel);
_this.headerRef=createRef();
_this.tableRef=createRef();
return _this;
}
DayTableView.prototype.render=function (){
var _this=this;
var _a=this.context, options=_a.options, dateProfileGenerator=_a.dateProfileGenerator;
var props=this.props;
var dayTableModel=this.buildDayTableModel(props.dateProfile, dateProfileGenerator);
var headerContent=options.dayHeaders &&
createElement(DayHeader, { ref: this.headerRef, dateProfile: props.dateProfile, dates: dayTableModel.headerDates, datesRepDistinctDays: dayTableModel.rowCnt===1 });
var bodyContent=function (contentArg){ return (createElement(DayTable, { ref: _this.tableRef, dateProfile: props.dateProfile, dayTableModel: dayTableModel, businessHours: props.businessHours, dateSelection: props.dateSelection, eventStore: props.eventStore, eventUiBases: props.eventUiBases, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, nextDayThreshold: options.nextDayThreshold, colGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, dayMaxEvents: options.dayMaxEvents, dayMaxEventRows: options.dayMaxEventRows, showWeekNumbers: options.weekNumbers, expandRows: !props.isHeightAuto, headerAlignElRef: _this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint })); };
return options.dayMinWidth
? this.renderHScrollLayout(headerContent, bodyContent, dayTableModel.colCnt, options.dayMinWidth)
: this.renderSimpleLayout(headerContent, bodyContent);
};
return DayTableView;
}(TableView));
function buildDayTableModel(dateProfile, dateProfileGenerator){
var daySeries=new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator);
return new DayTableModel(daySeries, /year|month|week/.test(dateProfile.currentRangeUnit));
}
var TableDateProfileGenerator= (function (_super){
__extends(TableDateProfileGenerator, _super);
function TableDateProfileGenerator(){
return _super!==null&&_super.apply(this, arguments)||this;
}
TableDateProfileGenerator.prototype.buildRenderRange=function (currentRange, currentRangeUnit, isRangeAllDay){
var dateEnv=this.props.dateEnv;
var renderRange=_super.prototype.buildRenderRange.call(this, currentRange, currentRangeUnit, isRangeAllDay);
var start=renderRange.start;
var end=renderRange.end;
var endOfWeek;
if(/^(year|month)$/.test(currentRangeUnit)){
start=dateEnv.startOfWeek(start);
endOfWeek=dateEnv.startOfWeek(end);
if(endOfWeek.valueOf()!==end.valueOf()){
end=addWeeks(endOfWeek, 1);
}}
if(this.props.monthMode &&
this.props.fixedWeekCount){
var rowCnt=Math.ceil(diffWeeks(start, end));
end=addWeeks(end, 6 - rowCnt);
}
return { start: start, end: end };};
return TableDateProfileGenerator;
}(DateProfileGenerator));
var OPTION_REFINERS={
moreLinkClick: identity,
moreLinkClassNames: identity,
moreLinkContent: identity,
moreLinkDidMount: identity,
moreLinkWillUnmount: identity,
};
var dayGridPlugin=createPlugin({
initialView: 'dayGridMonth',
optionRefiners: OPTION_REFINERS,
views: {
dayGrid: {
component: DayTableView,
dateProfileGeneratorClass: TableDateProfileGenerator
},
dayGridDay: {
type: 'dayGrid',
duration: { days: 1 }},
dayGridWeek: {
type: 'dayGrid',
duration: { weeks: 1 }},
dayGridMonth: {
type: 'dayGrid',
duration: { months: 1 },
monthMode: true,
fixedWeekCount: true
}}
});
var AllDaySplitter= (function (_super){
__extends(AllDaySplitter, _super);
function AllDaySplitter(){
return _super!==null&&_super.apply(this, arguments)||this;
}
AllDaySplitter.prototype.getKeyInfo=function (){
return {
allDay: {},
timed: {}};};
AllDaySplitter.prototype.getKeysForDateSpan=function (dateSpan){
if(dateSpan.allDay){
return ['allDay'];
}else{
return ['timed'];
}};
AllDaySplitter.prototype.getKeysForEventDef=function (eventDef){
if(!eventDef.allDay){
return ['timed'];
}
else if(hasBgRendering(eventDef)){
return ['timed', 'allDay'];
}else{
return ['allDay'];
}};
return AllDaySplitter;
}(Splitter));
var TimeColsSlatsCoords= (function (){
function TimeColsSlatsCoords(positions, dateProfile, slatMetas){
this.positions=positions;
this.dateProfile=dateProfile;
this.slatMetas=slatMetas;
}
TimeColsSlatsCoords.prototype.safeComputeTop=function (date){
var dateProfile=this.dateProfile;
if(rangeContainsMarker(dateProfile.currentRange, date)){
var startOfDayDate=startOfDay(date);
var timeMs=date.valueOf() - startOfDayDate.valueOf();
if(timeMs >=asRoughMs(dateProfile.slotMinTime) &&
timeMs < asRoughMs(dateProfile.slotMaxTime)){
return this.computeTimeTop(createDuration(timeMs));
}}
};
TimeColsSlatsCoords.prototype.computeDateTop=function (when, startOfDayDate){
if(!startOfDayDate){
startOfDayDate=startOfDay(when);
}
return this.computeTimeTop(createDuration(when.valueOf() - startOfDayDate.valueOf()));
};
TimeColsSlatsCoords.prototype.computeTimeTop=function (duration){
var _a=this, positions=_a.positions, dateProfile=_a.dateProfile, slatMetas=_a.slatMetas;
var len=positions.els.length;
var slotDurationMs=slatMetas[1].date.valueOf() - slatMetas[0].date.valueOf();
var slatCoverage=(duration.milliseconds - asRoughMs(dateProfile.slotMinTime)) / slotDurationMs;
var slatIndex;
var slatRemainder;
slatCoverage=Math.max(0, slatCoverage);
slatCoverage=Math.min(len, slatCoverage);
slatIndex=Math.floor(slatCoverage);
slatIndex=Math.min(slatIndex, len - 1);
slatRemainder=slatCoverage - slatIndex;
return positions.tops[slatIndex] +
positions.getHeight(slatIndex) * slatRemainder;
};
return TimeColsSlatsCoords;
}());
var STOCK_SUB_DURATIONS=[
{ hours: 1 },
{ minutes: 30 },
{ minutes: 15 },
{ seconds: 30 },
{ seconds: 15 }
];
var TimeColsSlats= (function (_super){
__extends(TimeColsSlats, _super);
function TimeColsSlats(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.rootElRef=createRef();
_this.slatElRefs=new RefMap();
return _this;
}
TimeColsSlats.prototype.render=function (){
var _a=this, props=_a.props, context=_a.context;
return (createElement("div", { className: 'fc-timegrid-slots', ref: this.rootElRef },
createElement("table", { className: context.theme.getClass('table'), style: {
minWidth: props.tableMinWidth,
width: props.clientWidth,
height: props.minHeight
}},
props.tableColGroupNode ,
createElement(TimeColsSlatsBody, { slatElRefs: this.slatElRefs, axis: props.axis, slatMetas: props.slatMetas }))));
};
TimeColsSlats.prototype.componentDidMount=function (){
this.updateSizing();
};
TimeColsSlats.prototype.componentDidUpdate=function (){
this.updateSizing();
};
TimeColsSlats.prototype.componentWillUnmount=function (){
if(this.props.onCoords){
this.props.onCoords(null);
}};
TimeColsSlats.prototype.updateSizing=function (){
var props=this.props;
if(props.onCoords &&
props.clientWidth!==null
){
var rootEl=this.rootElRef.current;
if(rootEl.offsetHeight){
props.onCoords(new TimeColsSlatsCoords(new PositionCache(this.rootElRef.current, collectSlatEls(this.slatElRefs.currentMap, props.slatMetas), false, true
), this.props.dateProfile, props.slatMetas));
}}
};
return TimeColsSlats;
}(BaseComponent));
function collectSlatEls(elMap, slatMetas){
return slatMetas.map(function (slatMeta){ return elMap[slatMeta.key]; });
}
var TimeColsSlatsBody= (function (_super){
__extends(TimeColsSlatsBody, _super);
function TimeColsSlatsBody(){
return _super!==null&&_super.apply(this, arguments)||this;
}
TimeColsSlatsBody.prototype.render=function (){
var _a=this, props=_a.props, context=_a.context;
var options=context.options;
var slatElRefs=props.slatElRefs;
return (createElement("tbody", null, props.slatMetas.map(function (slatMeta, i){
var hookProps={
time: slatMeta.time,
date: context.dateEnv.toDate(slatMeta.date),
view: context.viewApi
};
var classNames=[
'fc-timegrid-slot',
'fc-timegrid-slot-lane',
slatMeta.isLabeled ? '':'fc-timegrid-slot-minor'
];
return (createElement("tr", { key: slatMeta.key, ref: slatElRefs.createRef(slatMeta.key) },
props.axis &&
createElement(TimeColsAxisCell, __assign({}, slatMeta)),
createElement(RenderHook, { hookProps: hookProps, classNames: options.slotLaneClassNames, content: options.slotLaneContent, didMount: options.slotLaneDidMount, willUnmount: options.slotLaneWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent){ return (createElement("td", { ref: rootElRef, className: classNames.concat(customClassNames).join(' '), "data-time": slatMeta.isoTimeStr }, innerContent)); })));
})));
};
return TimeColsSlatsBody;
}(BaseComponent));
var DEFAULT_SLAT_LABEL_FORMAT=createFormatter({
hour: 'numeric',
minute: '2-digit',
omitZeroMinute: true,
meridiem: 'short'
});
function TimeColsAxisCell(props){
var classNames=[
'fc-timegrid-slot',
'fc-timegrid-slot-label',
props.isLabeled ? 'fc-scrollgrid-shrink':'fc-timegrid-slot-minor'
];
return (createElement(ViewContextType.Consumer, null, function (context){
if(!props.isLabeled){
return (createElement("td", { className: classNames.join(' '), "data-time": props.isoTimeStr }));
}else{
var dateEnv=context.dateEnv, options=context.options, viewApi=context.viewApi;
var labelFormat =
options.slotLabelFormat==null ? DEFAULT_SLAT_LABEL_FORMAT :
Array.isArray(options.slotLabelFormat) ? createFormatter(options.slotLabelFormat[0]) :
createFormatter(options.slotLabelFormat);
var hookProps={
level: 0,
time: props.time,
date: dateEnv.toDate(props.date),
view: viewApi,
text: dateEnv.format(props.date, labelFormat)
};
return (createElement(RenderHook, { hookProps: hookProps, classNames: options.slotLabelClassNames, content: options.slotLabelContent, defaultContent: renderInnerContent$3, didMount: options.slotLabelDidMount, willUnmount: options.slotLabelWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent){ return (createElement("td", { ref: rootElRef, className: classNames.concat(customClassNames).join(' '), "data-time": props.isoTimeStr },
createElement("div", { className: 'fc-timegrid-slot-label-frame fc-scrollgrid-shrink-frame' },
createElement("div", { className: 'fc-timegrid-slot-label-cushion fc-scrollgrid-shrink-cushion', ref: innerElRef }, innerContent)))); }));
}}));
}
function renderInnerContent$3(props){
return props.text;
}
function buildSlatMetas(slotMinTime, slotMaxTime, explicitLabelInterval, slotDuration, dateEnv){
var dayStart=new Date(0);
var slatTime=slotMinTime;
var slatIterator=createDuration(0);
var labelInterval=explicitLabelInterval||computeLabelInterval(slotDuration);
var metas=[];
while (asRoughMs(slatTime) < asRoughMs(slotMaxTime)){
var date=dateEnv.add(dayStart, slatTime);
var isLabeled=wholeDivideDurations(slatIterator, labelInterval)!==null;
metas.push({
date: date,
time: slatTime,
key: date.toISOString(),
isoTimeStr: formatIsoTimeString(date),
isLabeled: isLabeled
});
slatTime=addDurations(slatTime, slotDuration);
slatIterator=addDurations(slatIterator, slotDuration);
}
return metas;
}
function computeLabelInterval(slotDuration){
var i;
var labelInterval;
var slotsPerLabel;
for (i=STOCK_SUB_DURATIONS.length - 1; i >=0; i--){
labelInterval=createDuration(STOCK_SUB_DURATIONS[i]);
slotsPerLabel=wholeDivideDurations(labelInterval, slotDuration);
if(slotsPerLabel!==null&&slotsPerLabel > 1){
return labelInterval;
}}
return slotDuration;
}
var DEFAULT_WEEK_NUM_FORMAT$1=createFormatter({ week: 'short' });
var AUTO_ALL_DAY_MAX_EVENT_ROWS=5;
var TimeColsView= (function (_super){
__extends(TimeColsView, _super);
function TimeColsView(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.allDaySplitter=new AllDaySplitter();
_this.headerElRef=createRef();
_this.rootElRef=createRef();
_this.scrollerElRef=createRef();
_this.state={
slatCoords: null
};
_this.handleScrollTopRequest=function (scrollTop){
var scrollerEl=_this.scrollerElRef.current;
if(scrollerEl){
scrollerEl.scrollTop=scrollTop;
}};
_this.renderHeadAxis=function (frameHeight){
if(frameHeight===void 0){ frameHeight=''; }
var options=_this.context.options;
var dateProfile=_this.props.dateProfile;
var range=dateProfile.renderRange;
var dayCnt=diffDays(range.start, range.end);
var navLinkAttrs=(options.navLinks&&dayCnt===1)
? { 'data-navlink': buildNavLinkData(range.start, 'week'), tabIndex: 0 }
: {};
if(options.weekNumbers){
return (createElement(WeekNumberRoot, { date: range.start, defaultFormat: DEFAULT_WEEK_NUM_FORMAT$1 }, function (rootElRef, classNames, innerElRef, innerContent){ return (createElement("th", { ref: rootElRef, className: [
'fc-timegrid-axis',
'fc-scrollgrid-shrink'
].concat(classNames).join(' ') },
createElement("div", { className: 'fc-timegrid-axis-frame fc-scrollgrid-shrink-frame fc-timegrid-axis-frame-liquid', style: { height: frameHeight }},
createElement("a", __assign({ ref: innerElRef, className: 'fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion fc-scrollgrid-sync-inner' }, navLinkAttrs), innerContent)))); }));
}
return (createElement("th", { className: 'fc-timegrid-axis' },
createElement("div", { className: 'fc-timegrid-axis-frame', style: { height: frameHeight }})));
};
_this.renderTableRowAxis=function (rowHeight){
var _a=_this.context, options=_a.options, viewApi=_a.viewApi;
var hookProps={
text: options.allDayText,
view: viewApi
};
return (
createElement(RenderHook, { hookProps: hookProps, classNames: options.allDayClassNames, content: options.allDayContent, defaultContent: renderAllDayInner, didMount: options.allDayDidMount, willUnmount: options.allDayWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent){ return (createElement("td", { ref: rootElRef, className: [
'fc-timegrid-axis',
'fc-scrollgrid-shrink'
].concat(classNames).join(' ') },
createElement("div", { className: 'fc-timegrid-axis-frame fc-scrollgrid-shrink-frame' + (rowHeight==null ? ' fc-timegrid-axis-frame-liquid':''), style: { height: rowHeight }},
createElement("span", { className: 'fc-timegrid-axis-cushion fc-scrollgrid-shrink-cushion fc-scrollgrid-sync-inner', ref: innerElRef }, innerContent)))); }));
};
_this.handleSlatCoords=function (slatCoords){
_this.setState({ slatCoords: slatCoords });
};
return _this;
}
TimeColsView.prototype.renderSimpleLayout=function (headerRowContent, allDayContent, timeContent){
var _a=this, context=_a.context, props=_a.props;
var sections=[];
var stickyHeaderDates=getStickyHeaderDates(context.options);
if(headerRowContent){
sections.push({
type: 'header',
key: 'header',
isSticky: stickyHeaderDates,
chunk: {
elRef: this.headerElRef,
tableClassName: 'fc-col-header',
rowContent: headerRowContent
}});
}
if(allDayContent){
sections.push({
type: 'body',
key: 'all-day',
chunk: { content: allDayContent }});
sections.push({
type: 'body',
key: 'all-day-divider',
outerContent: (
createElement("tr", { className: 'fc-scrollgrid-section' },
createElement("td", { className: 'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded') })))
});
}
sections.push({
type: 'body',
key: 'body',
liquid: true,
expandRows: Boolean(context.options.expandRows),
chunk: {
scrollerElRef: this.scrollerElRef,
content: timeContent
}});
return (createElement(ViewRoot, { viewSpec: context.viewSpec, elRef: this.rootElRef }, function (rootElRef, classNames){ return (createElement("div", { className: ['fc-timegrid'].concat(classNames).join(' '), ref: rootElRef },
createElement(SimpleScrollGrid, { liquid: !props.isHeightAuto&&!props.forPrint, cols: [{ width: 'shrink' }], sections: sections }))); }));
};
TimeColsView.prototype.renderHScrollLayout=function (headerRowContent, allDayContent, timeContent, colCnt, dayMinWidth, slatMetas, slatCoords
){
var _this=this;
var ScrollGrid=this.context.pluginHooks.scrollGridImpl;
if(!ScrollGrid){
throw new Error('No ScrollGrid implementation');
}
var _a=this, context=_a.context, props=_a.props;
var stickyHeaderDates = !props.forPrint&&getStickyHeaderDates(context.options);
var stickyFooterScrollbar = !props.forPrint&&getStickyFooterScrollbar(context.options);
var sections=[];
if(headerRowContent){
sections.push({
type: 'header',
key: 'header',
isSticky: stickyHeaderDates,
syncRowHeights: true,
chunks: [
{
key: 'axis',
rowContent: function (arg){ return (createElement("tr", null, _this.renderHeadAxis(arg.rowSyncHeights[0]))); }},
{
key: 'cols',
elRef: this.headerElRef,
tableClassName: 'fc-col-header',
rowContent: headerRowContent
}
]
});
}
if(allDayContent){
sections.push({
type: 'body',
key: 'all-day',
syncRowHeights: true,
chunks: [
{
key: 'axis',
rowContent: function (contentArg){ return (createElement("tr", null, _this.renderTableRowAxis(contentArg.rowSyncHeights[0]))); },
},
{
key: 'cols',
content: allDayContent
}
]
});
sections.push({
key: 'all-day-divider',
type: 'body',
outerContent: (
createElement("tr", { className: 'fc-scrollgrid-section' },
createElement("td", { colSpan: 2, className: 'fc-timegrid-divider ' + context.theme.getClass('tableCellShaded') })))
});
}
var isNowIndicator=context.options.nowIndicator;
sections.push({
type: 'body',
key: 'body',
liquid: true,
expandRows: Boolean(context.options.expandRows),
chunks: [
{
key: 'axis',
content: function (arg){
return (createElement("div", { className: 'fc-timegrid-axis-chunk' },
createElement("table", { style: { height: arg.expandRows ? arg.clientHeight:'' }},
arg.tableColGroupNode,
createElement("tbody", null,
createElement(TimeBodyAxis, { slatMetas: slatMetas }))),
createElement("div", { className: 'fc-timegrid-now-indicator-container' },
createElement(NowTimer, { unit: isNowIndicator ? 'minute':'day'  }, function (nowDate){
var nowIndicatorTop=isNowIndicator &&
slatCoords &&
slatCoords.safeComputeTop(nowDate);
if(typeof nowIndicatorTop==='number'){
return (createElement(NowIndicatorRoot, { isAxis: true, date: nowDate }, function (rootElRef, classNames, innerElRef, innerContent){ return (createElement("div", { ref: rootElRef, className: ['fc-timegrid-now-indicator-arrow'].concat(classNames).join(' '), style: { top: nowIndicatorTop }}, innerContent)); }));
}
return null;
}))));
}},
{
key: 'cols',
scrollerElRef: this.scrollerElRef,
content: timeContent
}
]
});
if(stickyFooterScrollbar){
sections.push({
key: 'footer',
type: 'footer',
isSticky: true,
chunks: [
{
key: 'axis',
content: renderScrollShim
},
{
key: 'cols',
content: renderScrollShim
}
]
});
}
return (createElement(ViewRoot, { viewSpec: context.viewSpec, elRef: this.rootElRef }, function (rootElRef, classNames){ return (createElement("div", { className: ['fc-timegrid'].concat(classNames).join(' '), ref: rootElRef },
createElement(ScrollGrid, { liquid: !props.isHeightAuto&&!props.forPrint, colGroups: [
{ width: 'shrink', cols: [{ width: 'shrink' }] },
{ cols: [{ span: colCnt, minWidth: dayMinWidth }] }
], sections: sections }))); }));
};
TimeColsView.prototype.getAllDayMaxEventProps=function (){
var _a=this.context.options, dayMaxEvents=_a.dayMaxEvents, dayMaxEventRows=_a.dayMaxEventRows;
if(dayMaxEvents===true||dayMaxEventRows===true){
dayMaxEvents=undefined;
dayMaxEventRows=AUTO_ALL_DAY_MAX_EVENT_ROWS;
}
return { dayMaxEvents: dayMaxEvents, dayMaxEventRows: dayMaxEventRows };};
return TimeColsView;
}(DateComponent));
function renderAllDayInner(hookProps){
return hookProps.text;
}
var TimeBodyAxis= (function (_super){
__extends(TimeBodyAxis, _super);
function TimeBodyAxis(){
return _super!==null&&_super.apply(this, arguments)||this;
}
TimeBodyAxis.prototype.render=function (){
return this.props.slatMetas.map(function (slatMeta){ return (createElement("tr", { key: slatMeta.key },
createElement(TimeColsAxisCell, __assign({}, slatMeta)))); });
};
return TimeBodyAxis;
}(BaseComponent));
function splitSegsByCol(segs, colCnt){
var segsByCol=[];
var i;
for (i=0; i < colCnt; i++){
segsByCol.push([]);
}
if(segs){
for (i=0; i < segs.length; i++){
segsByCol[segs[i].col].push(segs[i]);
}}
return segsByCol;
}
function splitInteractionByCol(ui, colCnt){
var byRow=[];
if(!ui){
for (var i=0; i < colCnt; i++){
byRow[i]=null;
}}else{
for (var i=0; i < colCnt; i++){
byRow[i]={
affectedInstances: ui.affectedInstances,
isEvent: ui.isEvent,
segs: []
};}
for (var _i=0, _a=ui.segs; _i < _a.length; _i++){
var seg=_a[_i];
byRow[seg.col].segs.push(seg);
}}
return byRow;
}
function computeSegCoords(segs, dayDate, slatCoords, eventMinHeight, eventOrderSpecs){
computeSegVerticals(segs, dayDate, slatCoords, eventMinHeight);
return computeSegHorizontals(segs, eventOrderSpecs);
}
function computeSegVerticals(segs, dayDate, slatCoords, eventMinHeight){
for (var _i=0, segs_1=segs; _i < segs_1.length; _i++){
var seg=segs_1[_i];
seg.top=slatCoords.computeDateTop(seg.start, dayDate);
seg.bottom=Math.max(seg.top + (eventMinHeight||0),
slatCoords.computeDateTop(seg.end, dayDate));
}}
function computeSegHorizontals(segs, eventOrderSpecs){
for (var _i=0, segs_2=segs; _i < segs_2.length; _i++){
var seg=segs_2[_i];
seg.level=null;
seg.forwardCoord=null;
seg.backwardCoord=null;
seg.forwardPressure=null;
}
segs=sortEventSegs(segs, eventOrderSpecs);
var level0;
var levels=buildSlotSegLevels(segs);
computeForwardSlotSegs(levels);
if((level0=levels[0])){
for (var _a=0, level0_1=level0; _a < level0_1.length; _a++){
var seg=level0_1[_a];
computeSlotSegPressures(seg);
}
for (var _b=0, level0_2=level0; _b < level0_2.length; _b++){
var seg=level0_2[_b];
computeSegForwardBack(seg, 0, 0, eventOrderSpecs);
}}
return segs;
}
function buildSlotSegLevels(segs){
var levels=[];
var i;
var seg;
var j;
for (i=0; i < segs.length; i++){
seg=segs[i];
for (j=0; j < levels.length; j++){
if(!computeSlotSegCollisions(seg, levels[j]).length){
break;
}}
seg.level=j;
(levels[j]||(levels[j]=[])).push(seg);
}
return levels;
}
function computeSlotSegCollisions(seg, otherSegs, results){
if(results===void 0){ results=[]; }
for (var i=0; i < otherSegs.length; i++){
if(isSlotSegCollision(seg, otherSegs[i])){
results.push(otherSegs[i]);
}}
return results;
}
function isSlotSegCollision(seg1, seg2){
return seg1.bottom > seg2.top&&seg1.top < seg2.bottom;
}
function computeForwardSlotSegs(levels){
var i;
var level;
var j;
var seg;
var k;
for (i=0; i < levels.length; i++){
level=levels[i];
for (j=0; j < level.length; j++){
seg=level[j];
seg.forwardSegs=[];
for (k=i + 1; k < levels.length; k++){
computeSlotSegCollisions(seg, levels[k], seg.forwardSegs);
}}
}}
function computeSlotSegPressures(seg){
var forwardSegs=seg.forwardSegs;
var forwardPressure=0;
var i;
var forwardSeg;
if(seg.forwardPressure==null){
for (i=0; i < forwardSegs.length; i++){
forwardSeg=forwardSegs[i];
computeSlotSegPressures(forwardSeg);
forwardPressure=Math.max(forwardPressure, 1 + forwardSeg.forwardPressure);
}
seg.forwardPressure=forwardPressure;
}}
function computeSegForwardBack(seg, seriesBackwardPressure, seriesBackwardCoord, eventOrderSpecs){
var forwardSegs=seg.forwardSegs;
var i;
if(seg.forwardCoord==null){
if(!forwardSegs.length){
seg.forwardCoord=1;
}else{
sortForwardSegs(forwardSegs, eventOrderSpecs);
computeSegForwardBack(forwardSegs[0], seriesBackwardPressure + 1, seriesBackwardCoord, eventOrderSpecs);
seg.forwardCoord=forwardSegs[0].backwardCoord;
}
seg.backwardCoord=seg.forwardCoord -
(seg.forwardCoord - seriesBackwardCoord) /
(seriesBackwardPressure + 1);
for (i=0; i < forwardSegs.length; i++){
computeSegForwardBack(forwardSegs[i], 0, seg.forwardCoord, eventOrderSpecs);
}}
}
function sortForwardSegs(forwardSegs, eventOrderSpecs){
var objs=forwardSegs.map(buildTimeGridSegCompareObj);
var specs=[
{ field: 'forwardPressure', order: -1 },
{ field: 'backwardCoord', order: 1 }
].concat(eventOrderSpecs);
objs.sort(function (obj0, obj1){
return compareByFieldSpecs(obj0, obj1, specs);
});
return objs.map(function (c){
return c._seg;
});
}
function buildTimeGridSegCompareObj(seg){
var obj=buildSegCompareObj(seg);
obj.forwardPressure=seg.forwardPressure;
obj.backwardCoord=seg.backwardCoord;
return obj;
}
var DEFAULT_TIME_FORMAT=createFormatter({
hour: 'numeric',
minute: '2-digit',
meridiem: false
});
var TimeColEvent= (function (_super){
__extends(TimeColEvent, _super);
function TimeColEvent(){
return _super!==null&&_super.apply(this, arguments)||this;
}
TimeColEvent.prototype.render=function (){
var classNames=[
'fc-timegrid-event',
'fc-v-event'
];
if(this.props.isCondensed){
classNames.push('fc-timegrid-event-condensed');
}
return (createElement(StandardEvent, __assign({}, this.props, { defaultTimeFormat: DEFAULT_TIME_FORMAT, extraClassNames: classNames })));
};
return TimeColEvent;
}(BaseComponent));
config.timeGridEventCondensedHeight=30;
var TimeCol= (function (_super){
__extends(TimeCol, _super);
function TimeCol(){
return _super!==null&&_super.apply(this, arguments)||this;
}
TimeCol.prototype.render=function (){
var _this=this;
var _a=this, props=_a.props, context=_a.context;
var isSelectMirror=context.options.selectMirror;
var mirrorSegs=(props.eventDrag&&props.eventDrag.segs) ||
(props.eventResize&&props.eventResize.segs) ||
(isSelectMirror&&props.dateSelectionSegs) ||
[];
var interactionAffectedInstances =
(props.eventDrag&&props.eventDrag.affectedInstances) ||
(props.eventResize&&props.eventResize.affectedInstances) ||
{};
return (createElement(DayCellRoot, { elRef: props.elRef, date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, extraHookProps: props.extraHookProps }, function (rootElRef, classNames, dataAttrs){ return (createElement("td", __assign({ ref: rootElRef, className: ['fc-timegrid-col'].concat(classNames, props.extraClassNames||[]).join(' ') }, dataAttrs, props.extraDataAttrs),
createElement("div", { className: 'fc-timegrid-col-frame' },
createElement("div", { className: 'fc-timegrid-col-bg' },
_this.renderFillSegs(props.businessHourSegs, 'non-business'),
_this.renderFillSegs(props.bgEventSegs, 'bg-event'),
_this.renderFillSegs(props.dateSelectionSegs, 'highlight')),
createElement("div", { className: 'fc-timegrid-col-events' }, _this.renderFgSegs(props.fgEventSegs, interactionAffectedInstances)),
createElement("div", { className: 'fc-timegrid-col-events' }, _this.renderFgSegs(mirrorSegs, {}, Boolean(props.eventDrag), Boolean(props.eventResize), Boolean(isSelectMirror)
)),
createElement("div", { className: 'fc-timegrid-now-indicator-container' }, _this.renderNowIndicator(props.nowIndicatorSegs)),
createElement(TimeColMisc, { date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, extraHookProps: props.extraHookProps })))); }));
};
TimeCol.prototype.renderFgSegs=function (segs, segIsInvisible, isDragging, isResizing, isDateSelecting){
var props=this.props;
if(props.forPrint){
return this.renderPrintFgSegs(segs);
}
else if(props.slatCoords){
return this.renderPositionedFgSegs(segs, segIsInvisible, isDragging, isResizing, isDateSelecting);
}};
TimeCol.prototype.renderPrintFgSegs=function (segs){
var _a=this, props=_a.props, context=_a.context;
segs=sortEventSegs(segs, context.options.eventOrder);
return segs.map(function (seg){ return (createElement("div", { className: 'fc-timegrid-event-harness', key: seg.eventRange.instance.instanceId },
createElement(TimeColEvent, __assign({ seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: false, isCondensed: false }, getSegMeta(seg, props.todayRange, props.nowDate))))); });
};
TimeCol.prototype.renderPositionedFgSegs=function (segs, segIsInvisible, isDragging, isResizing, isDateSelecting){
var _this=this;
var _a=this, context=_a.context, props=_a.props;
segs=computeSegCoords(segs, props.date, props.slatCoords, context.options.eventMinHeight, context.options.eventOrder);
return segs.map(function (seg){
var instanceId=seg.eventRange.instance.instanceId;
var isMirror=isDragging||isResizing||isDateSelecting;
var positionCss=isMirror ? __assign({ left: 0, right: 0 }, _this.computeSegTopBottomCss(seg)) :
_this.computeFgSegPositionCss(seg);
return (createElement("div", { className: 'fc-timegrid-event-harness' + (seg.level > 0 ? ' fc-timegrid-event-harness-inset':''), key: instanceId, style: __assign({ visibility: segIsInvisible[instanceId] ? 'hidden':'' }, positionCss) },
createElement(TimeColEvent, __assign({ seg: seg, isDragging: isDragging, isResizing: isResizing, isDateSelecting: isDateSelecting, isSelected: instanceId===props.eventSelection, isCondensed: (seg.bottom - seg.top) < config.timeGridEventCondensedHeight }, getSegMeta(seg, props.todayRange, props.nowDate)))));
});
};
TimeCol.prototype.renderFillSegs=function (segs, fillType){
var _this=this;
var _a=this, context=_a.context, props=_a.props;
if(!props.slatCoords){
return;
}
computeSegVerticals(segs, props.date, props.slatCoords, context.options.eventMinHeight);
var children=segs.map(function (seg){ return (createElement("div", { key: buildEventRangeKey(seg.eventRange), className: 'fc-timegrid-bg-harness', style: _this.computeSegTopBottomCss(seg) }, fillType==='bg-event' ?
createElement(BgEvent, __assign({ seg: seg }, getSegMeta(seg, props.todayRange, props.nowDate))) :
renderFill(fillType))); });
return createElement(Fragment, null, children);
};
TimeCol.prototype.renderNowIndicator=function (segs){
var _a=this.props, slatCoords=_a.slatCoords, date=_a.date;
if(!slatCoords){
return;
}
return segs.map(function (seg, i){ return (createElement(NowIndicatorRoot, { isAxis: false, date: date, key: i  }, function (rootElRef, classNames, innerElRef, innerContent){ return (createElement("div", { ref: rootElRef, className: ['fc-timegrid-now-indicator-line'].concat(classNames).join(' '), style: { top: slatCoords.computeDateTop(seg.start, date) }}, innerContent)); })); });
};
TimeCol.prototype.computeFgSegPositionCss=function (seg){
var _a=this.context, isRtl=_a.isRtl, options=_a.options;
var shouldOverlap=options.slotEventOverlap;
var backwardCoord=seg.backwardCoord;
var forwardCoord=seg.forwardCoord;
var left;
var right;
if(shouldOverlap){
forwardCoord=Math.min(1, backwardCoord + (forwardCoord - backwardCoord) * 2);
}
if(isRtl){
left=1 - forwardCoord;
right=backwardCoord;
}else{
left=backwardCoord;
right=1 - forwardCoord;
}
var props={
zIndex: seg.level + 1,
left: left * 100 + '%',
right: right * 100 + '%'
};
if(shouldOverlap&&seg.forwardPressure){
props[isRtl ? 'marginLeft':'marginRight']=10 * 2;
}
return __assign(__assign({}, props), this.computeSegTopBottomCss(seg));
};
TimeCol.prototype.computeSegTopBottomCss=function (seg){
return {
top: seg.top,
bottom: -seg.bottom
};};
return TimeCol;
}(BaseComponent));
var TimeColMisc= (function (_super){
__extends(TimeColMisc, _super);
function TimeColMisc(){
return _super!==null&&_super.apply(this, arguments)||this;
}
TimeColMisc.prototype.render=function (){
var props=this.props;
return (createElement(DayCellContent, { date: props.date, dateProfile: props.dateProfile, todayRange: props.todayRange, extraHookProps: props.extraHookProps }, function (innerElRef, innerContent){ return (innerContent &&
createElement("div", { className: 'fc-timegrid-col-misc', ref: innerElRef }, innerContent)); }));
};
return TimeColMisc;
}(BaseComponent));
var TimeColsContent= (function (_super){
__extends(TimeColsContent, _super);
function TimeColsContent(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.splitFgEventSegs=memoize(splitSegsByCol);
_this.splitBgEventSegs=memoize(splitSegsByCol);
_this.splitBusinessHourSegs=memoize(splitSegsByCol);
_this.splitNowIndicatorSegs=memoize(splitSegsByCol);
_this.splitDateSelectionSegs=memoize(splitSegsByCol);
_this.splitEventDrag=memoize(splitInteractionByCol);
_this.splitEventResize=memoize(splitInteractionByCol);
_this.rootElRef=createRef();
_this.cellElRefs=new RefMap();
return _this;
}
TimeColsContent.prototype.render=function (){
var _this=this;
var _a=this, props=_a.props, context=_a.context;
var nowIndicatorTop=context.options.nowIndicator &&
props.slatCoords &&
props.slatCoords.safeComputeTop(props.nowDate);
var colCnt=props.cells.length;
var fgEventSegsByRow=this.splitFgEventSegs(props.fgEventSegs, colCnt);
var bgEventSegsByRow=this.splitBgEventSegs(props.bgEventSegs, colCnt);
var businessHourSegsByRow=this.splitBusinessHourSegs(props.businessHourSegs, colCnt);
var nowIndicatorSegsByRow=this.splitNowIndicatorSegs(props.nowIndicatorSegs, colCnt);
var dateSelectionSegsByRow=this.splitDateSelectionSegs(props.dateSelectionSegs, colCnt);
var eventDragByRow=this.splitEventDrag(props.eventDrag, colCnt);
var eventResizeByRow=this.splitEventResize(props.eventResize, colCnt);
return (createElement("div", { className: 'fc-timegrid-cols', ref: this.rootElRef },
createElement("table", { style: {
minWidth: props.tableMinWidth,
width: props.clientWidth
}},
props.tableColGroupNode,
createElement("tbody", null,
createElement("tr", null,
props.axis &&
createElement("td", { className: 'fc-timegrid-col fc-timegrid-axis' },
createElement("div", { className: 'fc-timegrid-col-frame' },
createElement("div", { className: 'fc-timegrid-now-indicator-container' }, typeof nowIndicatorTop==='number' &&
createElement(NowIndicatorRoot, { isAxis: true, date: props.nowDate }, function (rootElRef, classNames, innerElRef, innerContent){ return (createElement("div", { ref: rootElRef, className: ['fc-timegrid-now-indicator-arrow'].concat(classNames).join(' '), style: { top: nowIndicatorTop }}, innerContent)); })))),
props.cells.map(function (cell, i){ return (createElement(TimeCol, { key: cell.key, elRef: _this.cellElRefs.createRef(cell.key), dateProfile: props.dateProfile, date: cell.date, nowDate: props.nowDate, todayRange: props.todayRange, extraHookProps: cell.extraHookProps, extraDataAttrs: cell.extraDataAttrs, extraClassNames: cell.extraClassNames, fgEventSegs: fgEventSegsByRow[i], bgEventSegs: bgEventSegsByRow[i], businessHourSegs: businessHourSegsByRow[i], nowIndicatorSegs: nowIndicatorSegsByRow[i], dateSelectionSegs: dateSelectionSegsByRow[i], eventDrag: eventDragByRow[i], eventResize: eventResizeByRow[i], slatCoords: props.slatCoords, eventSelection: props.eventSelection, forPrint: props.forPrint })); }))))));
};
TimeColsContent.prototype.componentDidMount=function (){
this.updateCoords();
};
TimeColsContent.prototype.componentDidUpdate=function (){
this.updateCoords();
};
TimeColsContent.prototype.updateCoords=function (){
var props=this.props;
if(props.onColCoords &&
props.clientWidth!==null
){
props.onColCoords(new PositionCache(this.rootElRef.current, collectCellEls(this.cellElRefs.currentMap, props.cells), true,
false));
}};
return TimeColsContent;
}(BaseComponent));
function collectCellEls(elMap, cells){
return cells.map(function (cell){ return elMap[cell.key]; });
}
var TimeCols= (function (_super){
__extends(TimeCols, _super);
function TimeCols(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.processSlotOptions=memoize(processSlotOptions);
_this.state={
slatCoords: null
};
_this.handleScrollRequest=function (request){
var onScrollTopRequest=_this.props.onScrollTopRequest;
var slatCoords=_this.state.slatCoords;
if(onScrollTopRequest&&slatCoords){
if(request.time){
var top_1=slatCoords.computeTimeTop(request.time);
top_1=Math.ceil(top_1);
if(top_1){
top_1++;
}
onScrollTopRequest(top_1);
}
return true;
}};
_this.handleColCoords=function (colCoords){
_this.colCoords=colCoords;
};
_this.handleSlatCoords=function (slatCoords){
_this.setState({ slatCoords: slatCoords });
if(_this.props.onSlatCoords){
_this.props.onSlatCoords(slatCoords);
}};
return _this;
}
TimeCols.prototype.render=function (){
var _a=this, props=_a.props, state=_a.state;
return (createElement("div", { className: 'fc-timegrid-body', ref: props.rootElRef, style: {
width: props.clientWidth,
minWidth: props.tableMinWidth
}},
createElement(TimeColsSlats, { axis: props.axis, dateProfile: props.dateProfile, slatMetas: props.slatMetas, clientWidth: props.clientWidth, minHeight: props.expandRows ? props.clientHeight:'', tableMinWidth: props.tableMinWidth, tableColGroupNode: props.axis ? props.tableColGroupNode:null , onCoords: this.handleSlatCoords }),
createElement(TimeColsContent, { cells: props.cells, axis: props.axis, dateProfile: props.dateProfile, businessHourSegs: props.businessHourSegs, bgEventSegs: props.bgEventSegs, fgEventSegs: props.fgEventSegs, dateSelectionSegs: props.dateSelectionSegs, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, todayRange: props.todayRange, nowDate: props.nowDate, nowIndicatorSegs: props.nowIndicatorSegs, clientWidth: props.clientWidth, tableMinWidth: props.tableMinWidth, tableColGroupNode: props.tableColGroupNode, slatCoords: state.slatCoords, onColCoords: this.handleColCoords, forPrint: props.forPrint })));
};
TimeCols.prototype.componentDidMount=function (){
this.scrollResponder=this.context.createScrollResponder(this.handleScrollRequest);
};
TimeCols.prototype.componentDidUpdate=function (prevProps){
this.scrollResponder.update(prevProps.dateProfile!==this.props.dateProfile);
};
TimeCols.prototype.componentWillUnmount=function (){
this.scrollResponder.detach();
};
TimeCols.prototype.positionToHit=function (positionLeft, positionTop){
var _a=this.context, dateEnv=_a.dateEnv, options=_a.options;
var colCoords=this.colCoords;
var dateProfile=this.props.dateProfile;
var slatCoords=this.state.slatCoords;
var _b=this.processSlotOptions(this.props.slotDuration, options.snapDuration), snapDuration=_b.snapDuration, snapsPerSlot=_b.snapsPerSlot;
var colIndex=colCoords.leftToIndex(positionLeft);
var slatIndex=slatCoords.positions.topToIndex(positionTop);
if(colIndex!=null&&slatIndex!=null){
var slatTop=slatCoords.positions.tops[slatIndex];
var slatHeight=slatCoords.positions.getHeight(slatIndex);
var partial=(positionTop - slatTop) / slatHeight;
var localSnapIndex=Math.floor(partial * snapsPerSlot);
var snapIndex=slatIndex * snapsPerSlot + localSnapIndex;
var dayDate=this.props.cells[colIndex].date;
var time=addDurations(dateProfile.slotMinTime, multiplyDuration(snapDuration, snapIndex));
var start=dateEnv.add(dayDate, time);
var end=dateEnv.add(start, snapDuration);
return {
col: colIndex,
dateSpan: {
range: { start: start, end: end },
allDay: false
},
dayEl: colCoords.els[colIndex],
relativeRect: {
left: colCoords.lefts[colIndex],
right: colCoords.rights[colIndex],
top: slatTop,
bottom: slatTop + slatHeight
}};}};
return TimeCols;
}(BaseComponent));
function processSlotOptions(slotDuration, snapDurationOverride){
var snapDuration=snapDurationOverride||slotDuration;
var snapsPerSlot=wholeDivideDurations(slotDuration, snapDuration);
if(snapsPerSlot===null){
snapDuration=slotDuration;
snapsPerSlot=1;
}
return { snapDuration: snapDuration, snapsPerSlot: snapsPerSlot };}
var DayTimeCols= (function (_super){
__extends(DayTimeCols, _super);
function DayTimeCols(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.buildDayRanges=memoize(buildDayRanges);
_this.slicer=new DayTimeColsSlicer();
_this.timeColsRef=createRef();
_this.handleRootEl=function (rootEl){
if(rootEl){
_this.context.registerInteractiveComponent(_this, { el: rootEl });
}else{
_this.context.unregisterInteractiveComponent(_this);
}};
return _this;
}
DayTimeCols.prototype.render=function (){
var _this=this;
var _a=this, props=_a.props, context=_a.context;
var dateProfile=props.dateProfile, dayTableModel=props.dayTableModel;
var isNowIndicator=context.options.nowIndicator;
var dayRanges=this.buildDayRanges(dayTableModel, dateProfile, context.dateEnv);
return (createElement(NowTimer, { unit: isNowIndicator ? 'minute':'day' }, function (nowDate, todayRange){ return (createElement(TimeCols, __assign({ ref: _this.timeColsRef, rootElRef: _this.handleRootEl }, _this.slicer.sliceProps(props, dateProfile, null, context, dayRanges), { forPrint: props.forPrint, axis: props.axis, dateProfile: dateProfile, slatMetas: props.slatMetas, slotDuration: props.slotDuration, cells: dayTableModel.cells[0], tableColGroupNode: props.tableColGroupNode, tableMinWidth: props.tableMinWidth, clientWidth: props.clientWidth, clientHeight: props.clientHeight, expandRows: props.expandRows, nowDate: nowDate, nowIndicatorSegs: isNowIndicator&&_this.slicer.sliceNowDate(nowDate, context, dayRanges), todayRange: todayRange, onScrollTopRequest: props.onScrollTopRequest, onSlatCoords: props.onSlatCoords }))); }));
};
DayTimeCols.prototype.queryHit=function (positionLeft, positionTop){
var rawHit=this.timeColsRef.current.positionToHit(positionLeft, positionTop);
if(rawHit){
return {
component: this,
dateSpan: rawHit.dateSpan,
dayEl: rawHit.dayEl,
rect: {
left: rawHit.relativeRect.left,
right: rawHit.relativeRect.right,
top: rawHit.relativeRect.top,
bottom: rawHit.relativeRect.bottom
},
layer: 0
};}};
return DayTimeCols;
}(DateComponent));
function buildDayRanges(dayTableModel, dateProfile, dateEnv){
var ranges=[];
for (var _i=0, _a=dayTableModel.headerDates; _i < _a.length; _i++){
var date=_a[_i];
ranges.push({
start: dateEnv.add(date, dateProfile.slotMinTime),
end: dateEnv.add(date, dateProfile.slotMaxTime)
});
}
return ranges;
}
var DayTimeColsSlicer= (function (_super){
__extends(DayTimeColsSlicer, _super);
function DayTimeColsSlicer(){
return _super!==null&&_super.apply(this, arguments)||this;
}
DayTimeColsSlicer.prototype.sliceRange=function (range, dayRanges){
var segs=[];
for (var col=0; col < dayRanges.length; col++){
var segRange=intersectRanges(range, dayRanges[col]);
if(segRange){
segs.push({
start: segRange.start,
end: segRange.end,
isStart: segRange.start.valueOf()===range.start.valueOf(),
isEnd: segRange.end.valueOf()===range.end.valueOf(),
col: col
});
}}
return segs;
};
return DayTimeColsSlicer;
}(Slicer));
var DayTimeColsView= (function (_super){
__extends(DayTimeColsView, _super);
function DayTimeColsView(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.buildTimeColsModel=memoize(buildTimeColsModel);
_this.buildSlatMetas=memoize(buildSlatMetas);
return _this;
}
DayTimeColsView.prototype.render=function (){
var _this=this;
var _a=this.context, options=_a.options, dateEnv=_a.dateEnv, dateProfileGenerator=_a.dateProfileGenerator;
var props=this.props;
var dateProfile=props.dateProfile;
var dayTableModel=this.buildTimeColsModel(dateProfile, dateProfileGenerator);
var splitProps=this.allDaySplitter.splitProps(props);
var slatMetas=this.buildSlatMetas(dateProfile.slotMinTime, dateProfile.slotMaxTime, options.slotLabelInterval, options.slotDuration, dateEnv);
var dayMinWidth=options.dayMinWidth;
var hasAttachedAxis = !dayMinWidth;
var hasDetachedAxis=dayMinWidth;
var headerContent=options.dayHeaders &&
createElement(DayHeader, { dates: dayTableModel.headerDates, dateProfile: dateProfile, datesRepDistinctDays: true, renderIntro: hasAttachedAxis ? this.renderHeadAxis:null });
var allDayContent=(options.allDaySlot!==false)&&(function (contentArg){ return (createElement(DayTable, __assign({}, splitProps['allDay'], { dateProfile: dateProfile, dayTableModel: dayTableModel, nextDayThreshold: options.nextDayThreshold, tableMinWidth: contentArg.tableMinWidth, colGroupNode: contentArg.tableColGroupNode, renderRowIntro: hasAttachedAxis ? _this.renderTableRowAxis:null, showWeekNumbers: false, expandRows: false, headerAlignElRef: _this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint }, _this.getAllDayMaxEventProps()))); });
var timeGridContent=function (contentArg){ return (createElement(DayTimeCols, __assign({}, splitProps['timed'], { dayTableModel: dayTableModel, dateProfile: dateProfile, axis: hasAttachedAxis, slotDuration: options.slotDuration, slatMetas: slatMetas, forPrint: props.forPrint, tableColGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, onSlatCoords: _this.handleSlatCoords, expandRows: contentArg.expandRows, onScrollTopRequest: _this.handleScrollTopRequest }))); };
return hasDetachedAxis
? this.renderHScrollLayout(headerContent, allDayContent, timeGridContent, dayTableModel.colCnt, dayMinWidth, slatMetas, this.state.slatCoords)
: this.renderSimpleLayout(headerContent, allDayContent, timeGridContent);
};
return DayTimeColsView;
}(TimeColsView));
function buildTimeColsModel(dateProfile, dateProfileGenerator){
var daySeries=new DaySeriesModel(dateProfile.renderRange, dateProfileGenerator);
return new DayTableModel(daySeries, false);
}
var OPTION_REFINERS$1={
allDaySlot: Boolean
};
var timeGridPlugin=createPlugin({
initialView: 'timeGridWeek',
optionRefiners: OPTION_REFINERS$1,
views: {
timeGrid: {
component: DayTimeColsView,
usesMinMaxTime: true,
allDaySlot: true,
slotDuration: '00:30:00',
slotEventOverlap: true
},
timeGridDay: {
type: 'timeGrid',
duration: { days: 1 }},
timeGridWeek: {
type: 'timeGrid',
duration: { weeks: 1 }}
}});
var ListViewHeaderRow= (function (_super){
__extends(ListViewHeaderRow, _super);
function ListViewHeaderRow(){
return _super!==null&&_super.apply(this, arguments)||this;
}
ListViewHeaderRow.prototype.render=function (){
var _a=this.props, dayDate=_a.dayDate, todayRange=_a.todayRange;
var _b=this.context, theme=_b.theme, dateEnv=_b.dateEnv, options=_b.options, viewApi=_b.viewApi;
var dayMeta=getDateMeta(dayDate, todayRange);
var text=options.listDayFormat ? dateEnv.format(dayDate, options.listDayFormat):'';
var sideText=options.listDaySideFormat ? dateEnv.format(dayDate, options.listDaySideFormat):'';
var navLinkData=options.navLinks
? buildNavLinkData(dayDate)
: null;
var hookProps=__assign({ date: dateEnv.toDate(dayDate), view: viewApi, text: text,
sideText: sideText,
navLinkData: navLinkData }, dayMeta);
var classNames=['fc-list-day'].concat(getDayClassNames(dayMeta, theme));
return (createElement(RenderHook, { hookProps: hookProps, classNames: options.dayHeaderClassNames, content: options.dayHeaderContent, defaultContent: renderInnerContent$4, didMount: options.dayHeaderDidMount, willUnmount: options.dayHeaderWillUnmount }, function (rootElRef, customClassNames, innerElRef, innerContent){ return (createElement("tr", { ref: rootElRef, className: classNames.concat(customClassNames).join(' '), "data-date": formatDayString(dayDate) },
createElement("th", { colSpan: 3 },
createElement("div", { className: 'fc-list-day-cushion ' + theme.getClass('tableCellShaded'), ref: innerElRef }, innerContent)))); }));
};
return ListViewHeaderRow;
}(BaseComponent));
function renderInnerContent$4(props){
var navLinkAttrs=props.navLinkData
? { 'data-navlink': props.navLinkData, tabIndex: 0 }
: {};
return (createElement(Fragment, null,
props.text &&
createElement("a", __assign({ className: 'fc-list-day-text' }, navLinkAttrs), props.text),
props.sideText &&
createElement("a", __assign({ className: 'fc-list-day-side-text' }, navLinkAttrs), props.sideText)));
}
var DEFAULT_TIME_FORMAT$1=createFormatter({
hour: 'numeric',
minute: '2-digit',
meridiem: 'short'
});
var ListViewEventRow= (function (_super){
__extends(ListViewEventRow, _super);
function ListViewEventRow(){
return _super!==null&&_super.apply(this, arguments)||this;
}
ListViewEventRow.prototype.render=function (){
var _a=this, props=_a.props, context=_a.context;
var seg=props.seg;
var timeFormat=context.options.eventTimeFormat||DEFAULT_TIME_FORMAT$1;
return (createElement(EventRoot, { seg: seg, timeText: '' , disableDragging: true, disableResizing: true, defaultContent: renderEventInnerContent, isPast: props.isPast, isFuture: props.isFuture, isToday: props.isToday, isSelected: props.isSelected, isDragging: props.isDragging, isResizing: props.isResizing, isDateSelecting: props.isDateSelecting }, function (rootElRef, classNames, innerElRef, innerContent, hookProps){ return (createElement("tr", { className: ['fc-list-event', hookProps.event.url ? 'fc-event-forced-url':''].concat(classNames).join(' '), ref: rootElRef },
buildTimeContent(seg, timeFormat, context),
createElement("td", { className: 'fc-list-event-graphic' },
createElement("span", { className: 'fc-list-event-dot', style: { borderColor: hookProps.borderColor||hookProps.backgroundColor }})),
createElement("td", { className: 'fc-list-event-title', ref: innerElRef }, innerContent))); }));
};
return ListViewEventRow;
}(BaseComponent));
function renderEventInnerContent(props){
var event=props.event;
var url=event.url;
var anchorAttrs=url ? { href: url }:{};
return (createElement("a", __assign({}, anchorAttrs), event.title));
}
function buildTimeContent(seg, timeFormat, context){
var options=context.options;
if(options.displayEventTime!==false){
var eventDef=seg.eventRange.def;
var eventInstance=seg.eventRange.instance;
var doAllDay=false;
var timeText=void 0;
if(eventDef.allDay){
doAllDay=true;
}
else if(isMultiDayRange(seg.eventRange.range)){
if(seg.isStart){
timeText=buildSegTimeText(seg, timeFormat, context, null, null, eventInstance.range.start, seg.end);
}
else if(seg.isEnd){
timeText=buildSegTimeText(seg, timeFormat, context, null, null, seg.start, eventInstance.range.end);
}else{
doAllDay=true;
}}else{
timeText=buildSegTimeText(seg, timeFormat, context);
}
if(doAllDay){
var hookProps={
text: context.options.allDayText,
view: context.viewApi
};
return (createElement(RenderHook, { hookProps: hookProps, classNames: options.allDayClassNames, content: options.allDayContent, defaultContent: renderAllDayInner$1, didMount: options.allDayDidMount, willUnmount: options.allDayWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent){ return (createElement("td", { className: ['fc-list-event-time'].concat(classNames).join(' '), ref: rootElRef }, innerContent)); }));
}else{
return (createElement("td", { className: 'fc-list-event-time' }, timeText));
}}
return null;
}
function renderAllDayInner$1(hookProps){
return hookProps.text;
}
var ListView= (function (_super){
__extends(ListView, _super);
function ListView(){
var _this=_super!==null&&_super.apply(this, arguments)||this;
_this.computeDateVars=memoize(computeDateVars);
_this.eventStoreToSegs=memoize(_this._eventStoreToSegs);
_this.setRootEl=function (rootEl){
if(rootEl){
_this.context.registerInteractiveComponent(_this, {
el: rootEl
});
}else{
_this.context.unregisterInteractiveComponent(_this);
}};
return _this;
}
ListView.prototype.render=function (){
var _this=this;
var _a=this, props=_a.props, context=_a.context;
var extraClassNames=[
'fc-list',
context.theme.getClass('table'),
context.options.stickyHeaderDates!==false ? 'fc-list-sticky':''
];
var _b=this.computeDateVars(props.dateProfile), dayDates=_b.dayDates, dayRanges=_b.dayRanges;
var eventSegs=this.eventStoreToSegs(props.eventStore, props.eventUiBases, dayRanges);
return (createElement(ViewRoot, { viewSpec: context.viewSpec, elRef: this.setRootEl }, function (rootElRef, classNames){ return (createElement("div", { ref: rootElRef, className: extraClassNames.concat(classNames).join(' ') },
createElement(Scroller, { liquid: !props.isHeightAuto, overflowX: props.isHeightAuto ? 'visible':'hidden', overflowY: props.isHeightAuto ? 'visible':'auto' }, eventSegs.length > 0 ?
_this.renderSegList(eventSegs, dayDates) :
_this.renderEmptyMessage()))); }));
};
ListView.prototype.renderEmptyMessage=function (){
var _a=this.context, options=_a.options, viewApi=_a.viewApi;
var hookProps={
text: options.noEventsText,
view: viewApi
};
return (createElement(RenderHook, { hookProps: hookProps, classNames: options.noEventsClassNames, content: options.noEventsContent, defaultContent: renderNoEventsInner, didMount: options.noEventsDidMount, willUnmount: options.noEventsWillUnmount }, function (rootElRef, classNames, innerElRef, innerContent){ return (createElement("div", { className: ['fc-list-empty'].concat(classNames).join(' '), ref: rootElRef },
createElement("div", { className: 'fc-list-empty-cushion', ref: innerElRef }, innerContent))); }));
};
ListView.prototype.renderSegList=function (allSegs, dayDates){
var _a=this.context, theme=_a.theme, options=_a.options;
var segsByDay=groupSegsByDay(allSegs);
return (createElement(NowTimer, { unit: 'day' }, function (nowDate, todayRange){
var innerNodes=[];
for (var dayIndex=0; dayIndex < segsByDay.length; dayIndex++){
var daySegs=segsByDay[dayIndex];
if(daySegs){
var dayStr=dayDates[dayIndex].toISOString();
innerNodes.push(createElement(ListViewHeaderRow, { key: dayStr, dayDate: dayDates[dayIndex], todayRange: todayRange }));
daySegs=sortEventSegs(daySegs, options.eventOrder);
for (var _i=0, daySegs_1=daySegs; _i < daySegs_1.length; _i++){
var seg=daySegs_1[_i];
innerNodes.push(createElement(ListViewEventRow, __assign({ key: dayStr + ':' + seg.eventRange.instance.instanceId , seg: seg, isDragging: false, isResizing: false, isDateSelecting: false, isSelected: false }, getSegMeta(seg, todayRange, nowDate))));
}}
}
return (createElement("table", { className: 'fc-list-table ' + theme.getClass('table') },
createElement("tbody", null, innerNodes)));
}));
};
ListView.prototype._eventStoreToSegs=function (eventStore, eventUiBases, dayRanges){
return this.eventRangesToSegs(sliceEventStore(eventStore, eventUiBases, this.props.dateProfile.activeRange, this.context.options.nextDayThreshold).fg, dayRanges);
};
ListView.prototype.eventRangesToSegs=function (eventRanges, dayRanges){
var segs=[];
for (var _i=0, eventRanges_1=eventRanges; _i < eventRanges_1.length; _i++){
var eventRange=eventRanges_1[_i];
segs.push.apply(segs, this.eventRangeToSegs(eventRange, dayRanges));
}
return segs;
};
ListView.prototype.eventRangeToSegs=function (eventRange, dayRanges){
var dateEnv=this.context.dateEnv;
var nextDayThreshold=this.context.options.nextDayThreshold;
var range=eventRange.range;
var allDay=eventRange.def.allDay;
var dayIndex;
var segRange;
var seg;
var segs=[];
for (dayIndex=0; dayIndex < dayRanges.length; dayIndex++){
segRange=intersectRanges(range, dayRanges[dayIndex]);
if(segRange){
seg={
component: this,
eventRange: eventRange,
start: segRange.start,
end: segRange.end,
isStart: eventRange.isStart&&segRange.start.valueOf()===range.start.valueOf(),
isEnd: eventRange.isEnd&&segRange.end.valueOf()===range.end.valueOf(),
dayIndex: dayIndex
};
segs.push(seg);
if(!seg.isEnd&&!allDay &&
dayIndex + 1 < dayRanges.length &&
range.end <
dateEnv.add(dayRanges[dayIndex + 1].start, nextDayThreshold)){
seg.end=range.end;
seg.isEnd=true;
break;
}}
}
return segs;
};
return ListView;
}(DateComponent));
function renderNoEventsInner(hookProps){
return hookProps.text;
}
function computeDateVars(dateProfile){
var dayStart=startOfDay(dateProfile.renderRange.start);
var viewEnd=dateProfile.renderRange.end;
var dayDates=[];
var dayRanges=[];
while (dayStart < viewEnd){
dayDates.push(dayStart);
dayRanges.push({
start: dayStart,
end: addDays(dayStart, 1)
});
dayStart=addDays(dayStart, 1);
}
return { dayDates: dayDates, dayRanges: dayRanges };}
function groupSegsByDay(segs){
var segsByDay=[];
var i;
var seg;
for (i=0; i < segs.length; i++){
seg=segs[i];
(segsByDay[seg.dayIndex]||(segsByDay[seg.dayIndex]=[]))
.push(seg);
}
return segsByDay;
}
var OPTION_REFINERS$2={
listDayFormat: createFalsableFormatter,
listDaySideFormat: createFalsableFormatter,
noEventsClassNames: identity,
noEventsContent: identity,
noEventsDidMount: identity,
noEventsWillUnmount: identity
};
function createFalsableFormatter(input){
return input===false ? null:createFormatter(input);
}
var listPlugin=createPlugin({
optionRefiners: OPTION_REFINERS$2,
views: {
list: {
component: ListView,
buttonTextKey: 'list',
listDayFormat: { month: 'long', day: 'numeric', year: 'numeric' }},
listDay: {
type: 'list',
duration: { days: 1 },
listDayFormat: { weekday: 'long' }},
listWeek: {
type: 'list',
duration: { weeks: 1 },
listDayFormat: { weekday: 'long' },
listDaySideFormat: { month: 'long', day: 'numeric', year: 'numeric' }},
listMonth: {
type: 'list',
duration: { month: 1 },
listDaySideFormat: { weekday: 'long' }},
listYear: {
type: 'list',
duration: { year: 1 },
listDaySideFormat: { weekday: 'long' }}
}});
var BootstrapTheme= (function (_super){
__extends(BootstrapTheme, _super);
function BootstrapTheme(){
return _super!==null&&_super.apply(this, arguments)||this;
}
return BootstrapTheme;
}(Theme));
BootstrapTheme.prototype.classes={
root: 'fc-theme-bootstrap',
table: 'table-bordered',
tableCellShaded: 'table-active',
buttonGroup: 'btn-group',
button: 'btn btn-primary',
buttonActive: 'active',
popover: 'popover',
popoverHeader: 'popover-header',
popoverContent: 'popover-body'
};
BootstrapTheme.prototype.baseIconClass='fa';
BootstrapTheme.prototype.iconClasses={
close: 'fa-times',
prev: 'fa-chevron-left',
next: 'fa-chevron-right',
prevYear: 'fa-angle-double-left',
nextYear: 'fa-angle-double-right'
};
BootstrapTheme.prototype.rtlIconClasses={
prev: 'fa-chevron-right',
next: 'fa-chevron-left',
prevYear: 'fa-angle-double-right',
nextYear: 'fa-angle-double-left'
};
BootstrapTheme.prototype.iconOverrideOption='bootstrapFontAwesome';
BootstrapTheme.prototype.iconOverrideCustomButtonOption='bootstrapFontAwesome';
BootstrapTheme.prototype.iconOverridePrefix='fa-';
var plugin=createPlugin({
themeClasses: {
bootstrap: BootstrapTheme
}});
var OPTION_REFINERS$3={
googleCalendarApiKey: String
};
var EVENT_SOURCE_REFINERS$1={
googleCalendarApiKey: String,
googleCalendarId: String,
googleCalendarApiBase: String,
extraParams: identity
};
var API_BASE='https://www.googleapis.com/calendar/v3/calendars';
var eventSourceDef$3={
parseMeta: function (refined){
var googleCalendarId=refined.googleCalendarId;
if(!googleCalendarId&&refined.url){
googleCalendarId=parseGoogleCalendarId(refined.url);
}
if(googleCalendarId){
return {
googleCalendarId: googleCalendarId,
googleCalendarApiKey: refined.googleCalendarApiKey,
googleCalendarApiBase: refined.googleCalendarApiBase,
extraParams: refined.extraParams
};}
return null;
},
fetch: function (arg, onSuccess, onFailure){
var _a=arg.context, dateEnv=_a.dateEnv, options=_a.options;
var meta=arg.eventSource.meta;
var apiKey=meta.googleCalendarApiKey||options.googleCalendarApiKey;
if(!apiKey){
onFailure({
message: 'Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/'
});
}else{
var url=buildUrl(meta);
var extraParams=meta.extraParams;
var extraParamsObj=typeof extraParams==='function' ? extraParams():extraParams;
var requestParams_1=buildRequestParams$1(arg.range, apiKey, extraParamsObj, dateEnv);
requestJson('GET', url, requestParams_1, function (body, xhr){
if(body.error){
onFailure({
message: 'Google Calendar API: ' + body.error.message,
errors: body.error.errors,
xhr: xhr
});
}else{
onSuccess({
rawEvents: gcalItemsToRawEventDefs(body.items, requestParams_1.timeZone),
xhr: xhr
});
}}, function (message, xhr){
onFailure({ message: message, xhr: xhr });
});
}}
};
function parseGoogleCalendarId(url){
var match;
if(/^[^/]+@([^/.]+\.)*(google|googlemail|gmail)\.com$/.test(url)){
return url;
}
else if((match=/^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^/]*)/.exec(url)) ||
(match=/^https?:\/\/www.google.com\/calendar\/feeds\/([^/]*)/.exec(url))){
return decodeURIComponent(match[1]);
}}
function buildUrl(meta){
var apiBase=meta.googleCalendarApiBase;
if(!apiBase){
apiBase=API_BASE;
}
return apiBase + '/' + encodeURIComponent(meta.googleCalendarId) + '/events';
}
function buildRequestParams$1(range, apiKey, extraParams, dateEnv){
var params;
var startStr;
var endStr;
if(dateEnv.canComputeOffset){
startStr=dateEnv.formatIso(range.start);
endStr=dateEnv.formatIso(range.end);
}else{
startStr=addDays(range.start, -1).toISOString();
endStr=addDays(range.end, 1).toISOString();
}
params=__assign(__assign({}, (extraParams||{})), { key: apiKey, timeMin: startStr, timeMax: endStr, singleEvents: true, maxResults: 9999 });
if(dateEnv.timeZone!=='local'){
params.timeZone=dateEnv.timeZone;
}
return params;
}
function gcalItemsToRawEventDefs(items, gcalTimezone){
return items.map(function (item){
return gcalItemToRawEventDef(item, gcalTimezone);
});
}
function gcalItemToRawEventDef(item, gcalTimezone){
var url=item.htmlLink||null;
if(url&&gcalTimezone){
url=injectQsComponent(url, 'ctz=' + gcalTimezone);
}
return {
id: item.id,
title: item.summary,
start: item.start.dateTime||item.start.date,
end: item.end.dateTime||item.end.date,
url: url,
location: item.location,
description: item.description
};}
function injectQsComponent(url, component){
return url.replace(/(\?.*?)?(#|$)/, function (whole, qs, hash){
return (qs ? qs + '&':'?') + component + hash;
});
}
var googleCalendarPlugin=createPlugin({
eventSourceDefs: [eventSourceDef$3],
optionRefiners: OPTION_REFINERS$3,
eventSourceRefiners: EVENT_SOURCE_REFINERS$1
});
globalPlugins.push(interactionPlugin, dayGridPlugin, timeGridPlugin, listPlugin, plugin, googleCalendarPlugin);
exports.BASE_OPTION_DEFAULTS=BASE_OPTION_DEFAULTS;
exports.BASE_OPTION_REFINERS=BASE_OPTION_REFINERS;
exports.BaseComponent=BaseComponent;
exports.BgEvent=BgEvent;
exports.BootstrapTheme=BootstrapTheme;
exports.Calendar=Calendar;
exports.CalendarApi=CalendarApi;
exports.CalendarContent=CalendarContent;
exports.CalendarDataManager=CalendarDataManager;
exports.CalendarDataProvider=CalendarDataProvider;
exports.CalendarRoot=CalendarRoot;
exports.Component=Component;
exports.ContentHook=ContentHook;
exports.CustomContentRenderContext=CustomContentRenderContext;
exports.DateComponent=DateComponent;
exports.DateEnv=DateEnv;
exports.DateProfileGenerator=DateProfileGenerator;
exports.DayCellContent=DayCellContent;
exports.DayCellRoot=DayCellRoot;
exports.DayGridView=DayTableView;
exports.DayHeader=DayHeader;
exports.DaySeriesModel=DaySeriesModel;
exports.DayTable=DayTable;
exports.DayTableModel=DayTableModel;
exports.DayTableSlicer=DayTableSlicer;
exports.DayTimeCols=DayTimeCols;
exports.DayTimeColsSlicer=DayTimeColsSlicer;
exports.DayTimeColsView=DayTimeColsView;
exports.DelayedRunner=DelayedRunner;
exports.Draggable=ExternalDraggable;
exports.ElementDragging=ElementDragging;
exports.ElementScrollController=ElementScrollController;
exports.Emitter=Emitter;
exports.EventApi=EventApi;
exports.EventRoot=EventRoot;
exports.EventSourceApi=EventSourceApi;
exports.FeaturefulElementDragging=FeaturefulElementDragging;
exports.Fragment=Fragment;
exports.Interaction=Interaction;
exports.ListView=ListView;
exports.MountHook=MountHook;
exports.NamedTimeZoneImpl=NamedTimeZoneImpl;
exports.NowIndicatorRoot=NowIndicatorRoot;
exports.NowTimer=NowTimer;
exports.PointerDragging=PointerDragging;
exports.PositionCache=PositionCache;
exports.RefMap=RefMap;
exports.RenderHook=RenderHook;
exports.ScrollController=ScrollController;
exports.ScrollResponder=ScrollResponder;
exports.Scroller=Scroller;
exports.SimpleScrollGrid=SimpleScrollGrid;
exports.Slicer=Slicer;
exports.Splitter=Splitter;
exports.StandardEvent=StandardEvent;
exports.Table=Table;
exports.TableDateCell=TableDateCell;
exports.TableDowCell=TableDowCell;
exports.TableView=TableView;
exports.Theme=Theme;
exports.ThirdPartyDraggable=ThirdPartyDraggable;
exports.TimeCols=TimeCols;
exports.TimeColsSlatsCoords=TimeColsSlatsCoords;
exports.TimeColsView=TimeColsView;
exports.ViewApi=ViewApi;
exports.ViewContextType=ViewContextType;
exports.ViewRoot=ViewRoot;
exports.WeekNumberRoot=WeekNumberRoot;
exports.WindowScrollController=WindowScrollController;
exports.addDays=addDays;
exports.addDurations=addDurations;
exports.addMs=addMs;
exports.addWeeks=addWeeks;
exports.allowContextMenu=allowContextMenu;
exports.allowSelection=allowSelection;
exports.applyMutationToEventStore=applyMutationToEventStore;
exports.applyStyle=applyStyle;
exports.applyStyleProp=applyStyleProp;
exports.asCleanDays=asCleanDays;
exports.asRoughMinutes=asRoughMinutes;
exports.asRoughMs=asRoughMs;
exports.asRoughSeconds=asRoughSeconds;
exports.buildClassNameNormalizer=buildClassNameNormalizer;
exports.buildDayRanges=buildDayRanges;
exports.buildDayTableModel=buildDayTableModel;
exports.buildEventApis=buildEventApis;
exports.buildEventRangeKey=buildEventRangeKey;
exports.buildHashFromArray=buildHashFromArray;
exports.buildNavLinkData=buildNavLinkData;
exports.buildSegCompareObj=buildSegCompareObj;
exports.buildSegTimeText=buildSegTimeText;
exports.buildSlatMetas=buildSlatMetas;
exports.buildTimeColsModel=buildTimeColsModel;
exports.collectFromHash=collectFromHash;
exports.combineEventUis=combineEventUis;
exports.compareByFieldSpec=compareByFieldSpec;
exports.compareByFieldSpecs=compareByFieldSpecs;
exports.compareNumbers=compareNumbers;
exports.compareObjs=compareObjs;
exports.computeEdges=computeEdges;
exports.computeFallbackHeaderFormat=computeFallbackHeaderFormat;
exports.computeHeightAndMargins=computeHeightAndMargins;
exports.computeInnerRect=computeInnerRect;
exports.computeRect=computeRect;
exports.computeSegDraggable=computeSegDraggable;
exports.computeSegEndResizable=computeSegEndResizable;
exports.computeSegStartResizable=computeSegStartResizable;
exports.computeShrinkWidth=computeShrinkWidth;
exports.computeSmallestCellWidth=computeSmallestCellWidth;
exports.computeVisibleDayRange=computeVisibleDayRange;
exports.config=config;
exports.constrainPoint=constrainPoint;
exports.createContext=createContext$1;
exports.createDuration=createDuration;
exports.createElement=createElement;
exports.createEmptyEventStore=createEmptyEventStore;
exports.createEventInstance=createEventInstance;
exports.createEventUi=createEventUi;
exports.createFormatter=createFormatter;
exports.createPlugin=createPlugin;
exports.createRef=createRef;
exports.diffDates=diffDates;
exports.diffDayAndTime=diffDayAndTime;
exports.diffDays=diffDays;
exports.diffPoints=diffPoints;
exports.diffWeeks=diffWeeks;
exports.diffWholeDays=diffWholeDays;
exports.diffWholeWeeks=diffWholeWeeks;
exports.disableCursor=disableCursor;
exports.elementClosest=elementClosest;
exports.elementMatches=elementMatches;
exports.enableCursor=enableCursor;
exports.eventTupleToStore=eventTupleToStore;
exports.filterEventStoreDefs=filterEventStoreDefs;
exports.filterHash=filterHash;
exports.findDirectChildren=findDirectChildren;
exports.findElements=findElements;
exports.flexibleCompare=flexibleCompare;
exports.flushToDom=flushToDom$1;
exports.formatDate=formatDate;
exports.formatDayString=formatDayString;
exports.formatIsoTimeString=formatIsoTimeString;
exports.formatRange=formatRange;
exports.getAllowYScrolling=getAllowYScrolling;
exports.getCanVGrowWithinCell=getCanVGrowWithinCell;
exports.getClippingParents=getClippingParents;
exports.getDateMeta=getDateMeta;
exports.getDayClassNames=getDayClassNames;
exports.getDefaultEventEnd=getDefaultEventEnd;
exports.getElSeg=getElSeg;
exports.getEventClassNames=getEventClassNames;
exports.getIsRtlScrollbarOnLeft=getIsRtlScrollbarOnLeft;
exports.getRectCenter=getRectCenter;
exports.getRelevantEvents=getRelevantEvents;
exports.getScrollGridClassNames=getScrollGridClassNames;
exports.getScrollbarWidths=getScrollbarWidths;
exports.getSectionClassNames=getSectionClassNames;
exports.getSectionHasLiquidHeight=getSectionHasLiquidHeight;
exports.getSegMeta=getSegMeta;
exports.getSlotClassNames=getSlotClassNames;
exports.getStickyFooterScrollbar=getStickyFooterScrollbar;
exports.getStickyHeaderDates=getStickyHeaderDates;
exports.getUnequalProps=getUnequalProps;
exports.globalLocales=globalLocales;
exports.globalPlugins=globalPlugins;
exports.greatestDurationDenominator=greatestDurationDenominator;
exports.guid=guid;
exports.hasBgRendering=hasBgRendering;
exports.hasShrinkWidth=hasShrinkWidth;
exports.identity=identity;
exports.interactionSettingsStore=interactionSettingsStore;
exports.interactionSettingsToStore=interactionSettingsToStore;
exports.intersectRanges=intersectRanges;
exports.intersectRects=intersectRects;
exports.isArraysEqual=isArraysEqual;
exports.isColPropsEqual=isColPropsEqual;
exports.isDateSpansEqual=isDateSpansEqual;
exports.isInt=isInt;
exports.isInteractionValid=isInteractionValid;
exports.isMultiDayRange=isMultiDayRange;
exports.isPropsEqual=isPropsEqual;
exports.isPropsValid=isPropsValid;
exports.isValidDate=isValidDate;
exports.listenBySelector=listenBySelector;
exports.mapHash=mapHash;
exports.memoize=memoize;
exports.memoizeArraylike=memoizeArraylike;
exports.memoizeHashlike=memoizeHashlike;
exports.memoizeObjArg=memoizeObjArg;
exports.mergeEventStores=mergeEventStores;
exports.multiplyDuration=multiplyDuration;
exports.padStart=padStart;
exports.parseBusinessHours=parseBusinessHours;
exports.parseClassNames=parseClassNames;
exports.parseDragMeta=parseDragMeta;
exports.parseEventDef=parseEventDef;
exports.parseFieldSpecs=parseFieldSpecs;
exports.parseMarker=parse;
exports.pointInsideRect=pointInsideRect;
exports.preventContextMenu=preventContextMenu;
exports.preventDefault=preventDefault;
exports.preventSelection=preventSelection;
exports.rangeContainsMarker=rangeContainsMarker;
exports.rangeContainsRange=rangeContainsRange;
exports.rangesEqual=rangesEqual;
exports.rangesIntersect=rangesIntersect;
exports.refineEventDef=refineEventDef;
exports.refineProps=refineProps;
exports.removeElement=removeElement;
exports.removeExact=removeExact;
exports.render=render;
exports.renderChunkContent=renderChunkContent;
exports.renderFill=renderFill;
exports.renderMicroColGroup=renderMicroColGroup;
exports.renderScrollShim=renderScrollShim;
exports.requestJson=requestJson;
exports.sanitizeShrinkWidth=sanitizeShrinkWidth;
exports.setElSeg=setElSeg;
exports.setRef=setRef;
exports.sliceEventStore=sliceEventStore;
exports.sliceEvents=sliceEvents;
exports.sortEventSegs=sortEventSegs;
exports.startOfDay=startOfDay;
exports.translateRect=translateRect;
exports.triggerDateSelect=triggerDateSelect;
exports.unpromisify=unpromisify;
exports.version=version;
exports.whenTransitionDone=whenTransitionDone;
exports.wholeDivideDurations=wholeDivideDurations;
return exports;
}({}));
[].push.apply(FullCalendar.globalLocales, function (){
'use strict';
var l0={
code: "af",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Vorige",
next: "Volgende",
today: "Vandag",
year: "Jaar",
month: "Maand",
week: "Week",
day: "Dag",
list: "Agenda"
},
allDayText: "Heeldag",
moreLinkText: "Addisionele",
noEventsText: "Daar is geen gebeurtenisse nie"
};
var l1={
code: "ar-dz",
week: {
dow: 0,
doy: 4 
},
direction: 'rtl',
buttonText: {
prev: "السابق",
next: "التالي",
today: "اليوم",
month: "شهر",
week: "أسبوع",
day: "يوم",
list: "أجندة"
},
weekText: "أسبوع",
allDayText: "اليوم كله",
moreLinkText: "أخرى",
noEventsText: "أي أحداث لعرض"
};
var l2={
code: "ar-kw",
week: {
dow: 0,
doy: 12 
},
direction: 'rtl',
buttonText: {
prev: "السابق",
next: "التالي",
today: "اليوم",
month: "شهر",
week: "أسبوع",
day: "يوم",
list: "أجندة"
},
weekText: "أسبوع",
allDayText: "اليوم كله",
moreLinkText: "أخرى",
noEventsText: "أي أحداث لعرض"
};
var l3={
code: "ar-ly",
week: {
dow: 6,
doy: 12 
},
direction: 'rtl',
buttonText: {
prev: "السابق",
next: "التالي",
today: "اليوم",
month: "شهر",
week: "أسبوع",
day: "يوم",
list: "أجندة"
},
weekText: "أسبوع",
allDayText: "اليوم كله",
moreLinkText: "أخرى",
noEventsText: "أي أحداث لعرض"
};
var l4={
code: "ar-ma",
week: {
dow: 6,
doy: 12 
},
direction: 'rtl',
buttonText: {
prev: "السابق",
next: "التالي",
today: "اليوم",
month: "شهر",
week: "أسبوع",
day: "يوم",
list: "أجندة"
},
weekText: "أسبوع",
allDayText: "اليوم كله",
moreLinkText: "أخرى",
noEventsText: "أي أحداث لعرض"
};
var l5={
code: "ar-sa",
week: {
dow: 0,
doy: 6 
},
direction: 'rtl',
buttonText: {
prev: "السابق",
next: "التالي",
today: "اليوم",
month: "شهر",
week: "أسبوع",
day: "يوم",
list: "أجندة"
},
weekText: "أسبوع",
allDayText: "اليوم كله",
moreLinkText: "أخرى",
noEventsText: "أي أحداث لعرض"
};
var l6={
code: "ar-tn",
week: {
dow: 1,
doy: 4 
},
direction: 'rtl',
buttonText: {
prev: "السابق",
next: "التالي",
today: "اليوم",
month: "شهر",
week: "أسبوع",
day: "يوم",
list: "أجندة"
},
weekText: "أسبوع",
allDayText: "اليوم كله",
moreLinkText: "أخرى",
noEventsText: "أي أحداث لعرض"
};
var l7={
code: "ar",
week: {
dow: 6,
doy: 12 
},
direction: 'rtl',
buttonText: {
prev: "السابق",
next: "التالي",
today: "اليوم",
month: "شهر",
week: "أسبوع",
day: "يوم",
list: "أجندة"
},
weekText: "أسبوع",
allDayText: "اليوم كله",
moreLinkText: "أخرى",
noEventsText: "أي أحداث لعرض"
};
var l8={
code: "az",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Əvvəl",
next: "Sonra",
today: "Bu Gün",
month: "Ay",
week: "Həftə",
day: "Gün",
list: "Gündəm"
},
weekText: "Həftə",
allDayText: "Bütün Gün",
moreLinkText: function(n){
return "+ daha çox " + n;
},
noEventsText: "Göstərmək üçün hadisə yoxdur"
};
var l9={
code: "bg",
week: {
dow: 1,
doy: 7 
},
buttonText: {
prev: "назад",
next: "напред",
today: "днес",
month: "Месец",
week: "Седмица",
day: "Ден",
list: "График"
},
allDayText: "Цял ден",
moreLinkText: function(n){
return "+още " + n;
},
noEventsText: "Няма събития за показване"
};
var l10={
code: "bs",
week: {
dow: 1,
doy: 7 
},
buttonText: {
prev: "Prošli",
next: "Sljedeći",
today: "Danas",
month: "Mjesec",
week: "Sedmica",
day: "Dan",
list: "Raspored"
},
weekText: "Sed",
allDayText: "Cijeli dan",
moreLinkText: function(n){
return "+ još " + n;
},
noEventsText: "Nema događaja za prikazivanje"
};
var l11={
code: "ca",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Anterior",
next: "Següent",
today: "Avui",
month: "Mes",
week: "Setmana",
day: "Dia",
list: "Agenda"
},
weekText: "Set",
allDayText: "Tot el dia",
moreLinkText: "més",
noEventsText: "No hi ha esdeveniments per mostrar"
};
var l12={
code: "cs",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Dříve",
next: "Později",
today: "Nyní",
month: "Měsíc",
week: "Týden",
day: "Den",
list: "Agenda"
},
weekText: "Týd",
allDayText: "Celý den",
moreLinkText: function(n){
return "+další: " + n;
},
noEventsText: "Žádné akce k zobrazení"
};
var l13={
code: "da",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Forrige",
next: "Næste",
today: "I dag",
month: "Måned",
week: "Uge",
day: "Dag",
list: "Agenda"
},
weekText: "Uge",
allDayText: "Hele dagen",
moreLinkText: "flere",
noEventsText: "Ingen arrangementer at vise"
};
var l14={
code: "de",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Zurück",
next: "Vor",
today: "Heute",
year: "Jahr",
month: "Monat",
week: "Woche",
day: "Tag",
list: "Terminübersicht"
},
weekText: "KW",
allDayText: "Ganztägig",
moreLinkText: function(n){
return "+ weitere " + n;
},
noEventsText: "Keine Ereignisse anzuzeigen"
};
var l15={
code: "el",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Προηγούμενος",
next: "Επόμενος",
today: "Σήμερα",
month: "Μήνας",
week: "Εβδομάδα",
day: "Ημέρα",
list: "Ατζέντα"
},
weekText: "Εβδ",
allDayText: "Ολοήμερο",
moreLinkText: "περισσότερα",
noEventsText: "Δεν υπάρχουν γεγονότα προς εμφάνιση"
};
var l16={
code: "en-au",
week: {
dow: 1,
doy: 4 
}};
var l17={
code: "en-gb",
week: {
dow: 1,
doy: 4 
}};
var l18={
code: "en-nz",
week: {
dow: 1,
doy: 4 
}};
var l19={
code: "es",
week: {
dow: 0,
doy: 6 
},
buttonText: {
prev: "Ant",
next: "Sig",
today: "Hoy",
month: "Mes",
week: "Semana",
day: "Día",
list: "Agenda"
},
weekText: "Sm",
allDayText: "Todo el día",
moreLinkText: "más",
noEventsText: "No hay eventos para mostrar"
};
var l20={
code: "es",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Ant",
next: "Sig",
today: "Hoy",
month: "Mes",
week: "Semana",
day: "Día",
list: "Agenda"
},
weekText: "Sm",
allDayText: "Todo el día",
moreLinkText: "más",
noEventsText: "No hay eventos para mostrar"
};
var l21={
code: "et",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Eelnev",
next: "Järgnev",
today: "Täna",
month: "Kuu",
week: "Nädal",
day: "Päev",
list: "Päevakord"
},
weekText: "näd",
allDayText: "Kogu päev",
moreLinkText: function(n){
return "+ veel " + n;
},
noEventsText: "Kuvamiseks puuduvad sündmused"
};
var l22={
code: "eu",
week: {
dow: 1,
doy: 7 
},
buttonText: {
prev: "Aur",
next: "Hur",
today: "Gaur",
month: "Hilabetea",
week: "Astea",
day: "Eguna",
list: "Agenda"
},
weekText: "As",
allDayText: "Egun osoa",
moreLinkText: "gehiago",
noEventsText: "Ez dago ekitaldirik erakusteko"
};
var l23={
code: "fa",
week: {
dow: 6,
doy: 12 
},
direction: 'rtl',
buttonText: {
prev: "قبلی",
next: "بعدی",
today: "امروز",
month: "ماه",
week: "هفته",
day: "روز",
list: "برنامه"
},
weekText: "هف",
allDayText: "تمام روز",
moreLinkText: function(n){
return "بیش از " + n;
},
noEventsText: "هیچ رویدادی به نمایش"
};
var l24={
code: "fi",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Edellinen",
next: "Seuraava",
today: "Tänään",
month: "Kuukausi",
week: "Viikko",
day: "Päivä",
list: "Tapahtumat"
},
weekText: "Vk",
allDayText: "Koko päivä",
moreLinkText: "lisää",
noEventsText: "Ei näytettäviä tapahtumia"
};
var l25={
code: "fr",
buttonText: {
prev: "Précédent",
next: "Suivant",
today: "Aujourd'hui",
year: "Année",
month: "Mois",
week: "Semaine",
day: "Jour",
list: "Mon planning"
},
weekText: "Sem.",
allDayText: "Toute la journée",
moreLinkText: "en plus",
noEventsText: "Aucun événement à afficher"
};
var l26={
code: "fr-ch",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Précédent",
next: "Suivant",
today: "Courant",
year: "Année",
month: "Mois",
week: "Semaine",
day: "Jour",
list: "Mon planning"
},
weekText: "Sm",
allDayText: "Toute la journée",
moreLinkText: "en plus",
noEventsText: "Aucun événement à afficher"
};
var l27={
code: "fr",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Précédent",
next: "Suivant",
today: "Aujourd'hui",
year: "Année",
month: "Mois",
week: "Semaine",
day: "Jour",
list: "Planning"
},
weekText: "Sem.",
allDayText: "Toute la journée",
moreLinkText: "en plus",
noEventsText: "Aucun événement à afficher"
};
var l28={
code: "gl",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Ant",
next: "Seg",
today: "Hoxe",
month: "Mes",
week: "Semana",
day: "Día",
list: "Axenda"
},
weekText: "Sm",
allDayText: "Todo o día",
moreLinkText: "máis",
noEventsText: "Non hai eventos para amosar"
};
var l29={
code: "he",
direction: 'rtl',
buttonText: {
prev: "הקודם",
next: "הבא",
today: "היום",
month: "חודש",
week: "שבוע",
day: "יום",
list: "סדר יום"
},
allDayText: "כל היום",
moreLinkText: "אחר",
noEventsText: "אין אירועים להצגה",
weekText: "שבוע"
};
var l30={
code: "hi",
week: {
dow: 0,
doy: 6 
},
buttonText: {
prev: "पिछला",
next: "अगला",
today: "आज",
month: "महीना",
week: "सप्ताह",
day: "दिन",
list: "कार्यसूची"
},
weekText: "हफ्ता",
allDayText: "सभी दिन",
moreLinkText: function(n){
return "+अधिक " + n;
},
noEventsText: "कोई घटनाओं को प्रदर्शित करने के लिए"
};
var l31={
code: "hr",
week: {
dow: 1,
doy: 7 
},
buttonText: {
prev: "Prijašnji",
next: "Sljedeći",
today: "Danas",
month: "Mjesec",
week: "Tjedan",
day: "Dan",
list: "Raspored"
},
weekText: "Tje",
allDayText: "Cijeli dan",
moreLinkText: function(n){
return "+ još " + n;
},
noEventsText: "Nema događaja za prikaz"
};
var l32={
code: "hu",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "vissza",
next: "előre",
today: "ma",
month: "Hónap",
week: "Hét",
day: "Nap",
list: "Napló"
},
weekText: "Hét",
allDayText: "Egész nap",
moreLinkText: "további",
noEventsText: "Nincs megjeleníthető esemény"
};
var l33={
code: "id",
week: {
dow: 1,
doy: 7 
},
buttonText: {
prev: "mundur",
next: "maju",
today: "hari ini",
month: "Bulan",
week: "Minggu",
day: "Hari",
list: "Agenda"
},
weekText: "Mg",
allDayText: "Sehari penuh",
moreLinkText: "lebih",
noEventsText: "Tidak ada acara untuk ditampilkan"
};
var l34={
code: "is",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Fyrri",
next: "Næsti",
today: "Í dag",
month: "Mánuður",
week: "Vika",
day: "Dagur",
list: "Dagskrá"
},
weekText: "Vika",
allDayText: "Allan daginn",
moreLinkText: "meira",
noEventsText: "Engir viðburðir til að sýna"
};
var l35={
code: "it",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Prec",
next: "Succ",
today: "Oggi",
month: "Mese",
week: "Settimana",
day: "Giorno",
list: "Agenda"
},
weekText: "Sm",
allDayText: "Tutto il giorno",
moreLinkText: function(n){
return "+altri " + n;
},
noEventsText: "Non ci sono eventi da visualizzare"
};
var l36={
code: "ja",
buttonText: {
prev: "前",
next: "次",
today: "今日",
month: "月",
week: "週",
day: "日",
list: "予定リスト"
},
weekText: "週",
allDayText: "終日",
moreLinkText: function(n){
return "他 " + n + " 件";
},
noEventsText: "表示する予定はありません"
};
var l37={
code: "ka",
week: {
dow: 1,
doy: 7
},
buttonText: {
prev: "წინა",
next: "შემდეგი",
today: "დღეს",
month: "თვე",
week: "კვირა",
day: "დღე",
list: "დღის წესრიგი"
},
weekText: "კვ",
allDayText: "მთელი დღე",
moreLinkText: function(n){
return "+ კიდევ " + n;
},
noEventsText: "ღონისძიებები არ არის"
};
var l38={
code: "kk",
week: {
dow: 1,
doy: 7 
},
buttonText: {
prev: "Алдыңғы",
next: "Келесі",
today: "Бүгін",
month: "Ай",
week: "Апта",
day: "Күн",
list: "Күн тәртібі"
},
weekText: "Не",
allDayText: "Күні бойы",
moreLinkText: function(n){
return "+ тағы " + n;
},
noEventsText: "Көрсету үшін оқиғалар жоқ"
};
var l39={
code: "ko",
buttonText: {
prev: "이전달",
next: "다음달",
today: "오늘",
month: "월",
week: "주",
day: "일",
list: "일정목록"
},
weekText: "주",
allDayText: "종일",
moreLinkText: "개",
noEventsText: "일정이 없습니다"
};
var l40={
code: "lb",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Zréck",
next: "Weider",
today: "Haut",
month: "Mount",
week: "Woch",
day: "Dag",
list: "Terminiwwersiicht"
},
weekText: "W",
allDayText: "Ganzen Dag",
moreLinkText: "méi",
noEventsText: "Nee Evenementer ze affichéieren"
};
var l41={
code: "lt",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Atgal",
next: "Pirmyn",
today: "Šiandien",
month: "Mėnuo",
week: "Savaitė",
day: "Diena",
list: "Darbotvarkė"
},
weekText: "SAV",
allDayText: "Visą dieną",
moreLinkText: "daugiau",
noEventsText: "Nėra įvykių rodyti"
};
var l42={
code: "lv",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Iepr.",
next: "Nāk.",
today: "Šodien",
month: "Mēnesis",
week: "Nedēļa",
day: "Diena",
list: "Dienas kārtība"
},
weekText: "Ned.",
allDayText: "Visu dienu",
moreLinkText: function(n){
return "+vēl " + n;
},
noEventsText: "Nav notikumu"
};
var l43={
code: "mk",
buttonText: {
prev: "претходно",
next: "следно",
today: "Денес",
month: "Месец",
week: "Недела",
day: "Ден",
list: "График"
},
weekText: "Сед",
allDayText: "Цел ден",
moreLinkText: function(n){
return "+повеќе " + n;
},
noEventsText: "Нема настани за прикажување"
};
var l44={
code: "ms",
week: {
dow: 1,
doy: 7 
},
buttonText: {
prev: "Sebelum",
next: "Selepas",
today: "hari ini",
month: "Bulan",
week: "Minggu",
day: "Hari",
list: "Agenda"
},
weekText: "Mg",
allDayText: "Sepanjang hari",
moreLinkText: function(n){
return "masih ada " + n + " acara";
},
noEventsText: "Tiada peristiwa untuk dipaparkan"
};
var l45={
code: "nb",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Forrige",
next: "Neste",
today: "I dag",
month: "Måned",
week: "Uke",
day: "Dag",
list: "Agenda"
},
weekText: "Uke",
allDayText: "Hele dagen",
moreLinkText: "til",
noEventsText: "Ingen hendelser å vise"
};
var l46={
code: "ne",
week: {
dow: 7,
doy: 1 
},
buttonText: {
prev: "अघिल्लो",
next: "अर्को",
today: "आज",
month: "महिना",
week: "हप्ता",
day: "दिन",
list: "सूची"
},
weekText: "हप्ता",
allDayText: "दिनभरि",
moreLinkText: "थप लिंक",
noEventsText: "देखाउनको लागि कुनै घटनाहरू छैनन्"
};
var l47={
code: "nl",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Voorgaand",
next: "Volgende",
today: "Vandaag",
year: "Jaar",
month: "Maand",
week: "Week",
day: "Dag",
list: "Agenda"
},
allDayText: "Hele dag",
moreLinkText: "extra",
noEventsText: "Geen evenementen om te laten zien"
};
var l48={
code: "nn",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Førre",
next: "Neste",
today: "I dag",
month: "Månad",
week: "Veke",
day: "Dag",
list: "Agenda"
},
weekText: "Veke",
allDayText: "Heile dagen",
moreLinkText: "til",
noEventsText: "Ingen hendelser å vise"
};
var l49={
code: "pl",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Poprzedni",
next: "Następny",
today: "Dziś",
month: "Miesiąc",
week: "Tydzień",
day: "Dzień",
list: "Plan dnia"
},
weekText: "Tydz",
allDayText: "Cały dzień",
moreLinkText: "więcej",
noEventsText: "Brak wydarzeń do wyświetlenia"
};
var l50={
code: "pt-br",
buttonText: {
prev: "Anterior",
next: "Próximo",
today: "Hoje",
month: "Mês",
week: "Semana",
day: "Dia",
list: "Lista"
},
weekText: "Sm",
allDayText: "dia inteiro",
moreLinkText: function(n){
return "mais +" + n;
},
noEventsText: "Não há eventos para mostrar"
};
var l51={
code: "pt",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Anterior",
next: "Seguinte",
today: "Hoje",
month: "Mês",
week: "Semana",
day: "Dia",
list: "Agenda"
},
weekText: "Sem",
allDayText: "Todo o dia",
moreLinkText: "mais",
noEventsText: "Não há eventos para mostrar"
};
var l52={
code: "ro",
week: {
dow: 1,
doy: 7 
},
buttonText: {
prev: "precedentă",
next: "următoare",
today: "Azi",
month: "Lună",
week: "Săptămână",
day: "Zi",
list: "Agendă"
},
weekText: "Săpt",
allDayText: "Toată ziua",
moreLinkText: function(n){
return "+alte " + n;
},
noEventsText: "Nu există evenimente de afișat"
};
var l53={
code: "ru",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Пред",
next: "След",
today: "Сегодня",
month: "Месяц",
week: "Неделя",
day: "День",
list: "Повестка дня"
},
weekText: "Нед",
allDayText: "Весь день",
moreLinkText: function(n){
return "+ ещё " + n;
},
noEventsText: "Нет событий для отображения"
};
var l54={
code: "sk",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Predchádzajúci",
next: "Nasledujúci",
today: "Dnes",
month: "Mesiac",
week: "Týždeň",
day: "Deň",
list: "Rozvrh"
},
weekText: "Ty",
allDayText: "Celý deň",
moreLinkText: function(n){
return "+ďalšie: " + n;
},
noEventsText: "Žiadne akcie na zobrazenie"
};
var l55={
code: "sl",
week: {
dow: 1,
doy: 7 
},
buttonText: {
prev: "Prejšnji",
next: "Naslednji",
today: "Trenutni",
month: "Mesec",
week: "Teden",
day: "Dan",
list: "Dnevni red"
},
weekText: "Teden",
allDayText: "Ves dan",
moreLinkText: "več",
noEventsText: "Ni dogodkov za prikaz"
};
var l56={
code: "sq",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "mbrapa",
next: "Përpara",
today: "sot",
month: "Muaj",
week: "Javë",
day: "Ditë",
list: "Listë"
},
weekText: "Ja",
allDayText: "Gjithë ditën",
moreLinkText: function(n){
return "+më tepër " + n;
},
noEventsText: "Nuk ka evente për të shfaqur"
};
var l57={
code: "sr-cyrl",
week: {
dow: 1,
doy: 7 
},
buttonText: {
prev: "Претходна",
next: "следећи",
today: "Данас",
month: "Месец",
week: "Недеља",
day: "Дан",
list: "Планер"
},
weekText: "Сед",
allDayText: "Цео дан",
moreLinkText: function(n){
return "+ још " + n;
},
noEventsText: "Нема догађаја за приказ"
};
var l58={
code: "sr",
week: {
dow: 1,
doy: 7 
},
buttonText: {
prev: "Prethodna",
next: "Sledeći",
today: "Danas",
month: "Mеsеc",
week: "Nеdеlja",
day: "Dan",
list: "Planеr"
},
weekText: "Sed",
allDayText: "Cеo dan",
moreLinkText: function(n){
return "+ još " + n;
},
noEventsText: "Nеma događaja za prikaz"
};
var l59={
code: "sv",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Förra",
next: "Nästa",
today: "Idag",
month: "Månad",
week: "Vecka",
day: "Dag",
list: "Program"
},
weekText: "v.",
allDayText: "Heldag",
moreLinkText: "till",
noEventsText: "Inga händelser att visa"
};
var l60={
code: "th",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "ก่อนหน้า",
next: "ถัดไป",
prevYear: 'ปีก่อนหน้า',
nextYear: 'ปีถัดไป',
year: 'ปี',
today: "วันนี้",
month: "เดือน",
week: "สัปดาห์",
day: "วัน",
list: "กำหนดการ"
},
weekText: "สัปดาห์",
allDayText: "ตลอดวัน",
moreLinkText: "เพิ่มเติม",
noEventsText: "ไม่มีกิจกรรมที่จะแสดง"
};
var l61={
code: "tr",
week: {
dow: 1,
doy: 7 
},
buttonText: {
prev: "geri",
next: "ileri",
today: "bugün",
month: "Ay",
week: "Hafta",
day: "Gün",
list: "Ajanda"
},
weekText: "Hf",
allDayText: "Tüm gün",
moreLinkText: "daha fazla",
noEventsText: "Gösterilecek etkinlik yok"
};
var l62={
code: "ug",
buttonText: {
month: "ئاي",
week: "ھەپتە",
day: "كۈن",
list: "كۈنتەرتىپ"
},
allDayText: "پۈتۈن كۈن"
};
var l63={
code: "uk",
week: {
dow: 1,
doy: 7 
},
buttonText: {
prev: "Попередній",
next: "далі",
today: "Сьогодні",
month: "Місяць",
week: "Тиждень",
day: "День",
list: "Порядок денний"
},
weekText: "Тиж",
allDayText: "Увесь день",
moreLinkText: function(n){
return "+ще " + n + "...";
},
noEventsText: "Немає подій для відображення"
};
var l64={
code: "uz",
buttonText: {
month: "Oy",
week: "Xafta",
day: "Kun",
list: "Kun tartibi"
},
allDayText: "Kun bo'yi",
moreLinkText: function(n){
return "+ yana " + n;
},
noEventsText: "Ko'rsatish uchun voqealar yo'q"
};
var l65={
code: "vi",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "Trước",
next: "Tiếp",
today: "Hôm nay",
month: "Tháng",
week: "Tuần",
day: "Ngày",
list: "Lịch biểu"
},
weekText: "Tu",
allDayText: "Cả ngày",
moreLinkText: function(n){
return "+ thêm " + n;
},
noEventsText: "Không có sự kiện để hiển thị"
};
var l66={
code: "zh-cn",
week: {
dow: 1,
doy: 4 
},
buttonText: {
prev: "上月",
next: "下月",
today: "今天",
month: "月",
week: "周",
day: "日",
list: "日程"
},
weekText: "周",
allDayText: "全天",
moreLinkText: function(n){
return "另外 " + n + " 个";
},
noEventsText: "没有事件显示"
};
var l67={
code: "zh-tw",
buttonText: {
prev: "上月",
next: "下月",
today: "今天",
month: "月",
week: "週",
day: "天",
list: "活動列表"
},
weekText: "周",
allDayText: "整天",
moreLinkText: '顯示更多',
noEventsText: "没有任何活動"
};
var localesAll=[
l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24, l25, l26, l27, l28, l29, l30, l31, l32, l33, l34, l35, l36, l37, l38, l39, l40, l41, l42, l43, l44, l45, l46, l47, l48, l49, l50, l51, l52, l53, l54, l55, l56, l57, l58, l59, l60, l61, l62, l63, l64, l65, l66, l67,
];
return localesAll;
}());
var DateFormatter;!function(){"use strict";var e,t,a,r,n,o;n=864e5,o=3600,e=function(e,t){return"string"==typeof e&&"string"==typeof t&&e.toLowerCase()===t.toLowerCase()},t=function(e,a,r){var n=r||"0",o=e.toString();return o.length<a?t(n+o,a):o},a=function(e){var t,r;for(e=e||{},t=1;t<arguments.length;t++)if(r=arguments[t])for(var n in r)r.hasOwnProperty(n)&&("object"==typeof r[n]?a(e[n],r[n]):e[n]=r[n]);return e},r={dateSettings:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],meridiem:["AM","PM"],ordinal:function(e){var t=e%10,a={1:"st",2:"nd",3:"rd"};return 1!==Math.floor(e%100/10)&&a[t]?a[t]:"th"}},separators:/[ \-+\/\.T:@]/g,validParts:/[dDjlNSwzWFmMntLoYyaABgGhHisueTIOPZcrU]/g,intParts:/[djwNzmnyYhHgGis]/g,tzParts:/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,tzClip:/[^-+\dA-Z]/g},DateFormatter=function(e){var t=this,n=a(r,e);t.dateSettings=n.dateSettings,t.separators=n.separators,t.validParts=n.validParts,t.intParts=n.intParts,t.tzParts=n.tzParts,t.tzClip=n.tzClip},DateFormatter.prototype={constructor:DateFormatter,parseDate:function(t,a){var r,n,o,i,s,d,u,l,f,c,m=this,h=!1,g=!1,p=m.dateSettings,y={date:null,year:null,month:null,day:null,hour:0,min:0,sec:0};if(!t)return void 0;if(t instanceof Date)return t;if("number"==typeof t)return new Date(t);if("U"===a)return o=parseInt(t),o?new Date(1e3*o):t;if("string"!=typeof t)return"";if(r=a.match(m.validParts),!r||0===r.length)throw new Error("Invalid date format definition.");for(n=t.replace(m.separators,"\x00").split("\x00"),o=0;o<n.length;o++)switch(i=n[o],s=parseInt(i),r[o]){case"y":case"Y":f=i.length,2===f?y.year=parseInt((70>s?"20":"19")+i):4===f&&(y.year=s),h=!0;break;case"m":case"n":case"M":case"F":isNaN(i)?(d=p.monthsShort.indexOf(i),d>-1&&(y.month=d+1),d=p.months.indexOf(i),d>-1&&(y.month=d+1)):s>=1&&12>=s&&(y.month=s),h=!0;break;case"d":case"j":s>=1&&31>=s&&(y.day=s),h=!0;break;case"g":case"h":u=r.indexOf("a")>-1?r.indexOf("a"):r.indexOf("A")>-1?r.indexOf("A"):-1,c=n[u],u>-1?(l=e(c,p.meridiem[0])?0:e(c,p.meridiem[1])?12:-1,s>=1&&12>=s&&l>-1?y.hour=s+l:s>=0&&23>=s&&(y.hour=s)):s>=0&&23>=s&&(y.hour=s),g=!0;break;case"G":case"H":s>=0&&23>=s&&(y.hour=s),g=!0;break;case"i":s>=0&&59>=s&&(y.min=s),g=!0;break;case"s":s>=0&&59>=s&&(y.sec=s),g=!0}if(h===!0&&y.year&&y.month&&y.day)y.date=new Date(y.year,y.month-1,y.day,y.hour,y.min,y.sec,0);else{if(g!==!0)return!1;y.date=new Date(0,0,0,y.hour,y.min,y.sec,0)}return y.date},guessDate:function(e,t){if("string"!=typeof e)return e;var a,r,n,o,i=this,s=e.replace(i.separators,"\x00").split("\x00"),d=/^[djmn]/g,u=t.match(i.validParts),l=new Date,f=0;if(!d.test(u[0]))return e;for(r=0;r<s.length;r++){switch(f=2,n=s[r],o=parseInt(n.substr(0,2)),r){case 0:"m"===u[0]||"n"===u[0]?l.setMonth(o-1):l.setDate(o);break;case 1:"m"===u[0]||"n"===u[0]?l.setDate(o):l.setMonth(o-1);break;case 2:a=l.getFullYear(),n.length<4?(l.setFullYear(parseInt(a.toString().substr(0,4-n.length)+n)),f=n.length):(l.setFullYear=parseInt(n.substr(0,4)),f=4);break;case 3:l.setHours(o);break;case 4:l.setMinutes(o);break;case 5:l.setSeconds(o)}n.substr(f).length>0&&s.splice(r+1,0,n.substr(f))}return l},parseFormat:function(e,a){var r,i=this,s=i.dateSettings,d=/\\?(.?)/gi,u=function(e,t){return r[e]?r[e]():t};return r={d:function(){return t(r.j(),2)},D:function(){return s.daysShort[r.w()]},j:function(){return a.getDate()},l:function(){return s.days[r.w()]},N:function(){return r.w()||7},w:function(){return a.getDay()},z:function(){var e=new Date(r.Y(),r.n()-1,r.j()),t=new Date(r.Y(),0,1);return Math.round((e-t)/n)},W:function(){var e=new Date(r.Y(),r.n()-1,r.j()-r.N()+3),a=new Date(e.getFullYear(),0,4);return t(1+Math.round((e-a)/n/7),2)},F:function(){return s.months[a.getMonth()]},m:function(){return t(r.n(),2)},M:function(){return s.monthsShort[a.getMonth()]},n:function(){return a.getMonth()+1},t:function(){return new Date(r.Y(),r.n(),0).getDate()},L:function(){var e=r.Y();return e%4===0&&e%100!==0||e%400===0?1:0},o:function(){var e=r.n(),t=r.W(),a=r.Y();return a+(12===e&&9>t?1:1===e&&t>9?-1:0)},Y:function(){return a.getFullYear()},y:function(){return r.Y().toString().slice(-2)},a:function(){return r.A().toLowerCase()},A:function(){var e=r.G()<12?0:1;return s.meridiem[e]},B:function(){var e=a.getUTCHours()*o,r=60*a.getUTCMinutes(),n=a.getUTCSeconds();return t(Math.floor((e+r+n+o)/86.4)%1e3,3)},g:function(){return r.G()%12||12},G:function(){return a.getHours()},h:function(){return t(r.g(),2)},H:function(){return t(r.G(),2)},i:function(){return t(a.getMinutes(),2)},s:function(){return t(a.getSeconds(),2)},u:function(){return t(1e3*a.getMilliseconds(),6)},e:function(){var e=/\((.*)\)/.exec(String(a))[1];return e||"Coordinated Universal Time"},T:function(){var e=(String(a).match(i.tzParts)||[""]).pop().replace(i.tzClip,"");return e||"UTC"},I:function(){var e=new Date(r.Y(),0),t=Date.UTC(r.Y(),0),a=new Date(r.Y(),6),n=Date.UTC(r.Y(),6);return e-t!==a-n?1:0},O:function(){var e=a.getTimezoneOffset(),r=Math.abs(e);return(e>0?"-":"+")+t(100*Math.floor(r/60)+r%60,4)},P:function(){var e=r.O();return e.substr(0,3)+":"+e.substr(3,2)},Z:function(){return 60*-a.getTimezoneOffset()},c:function(){return"Y-m-d\\TH:i:sP".replace(d,u)},r:function(){return"D, d M Y H:i:s O".replace(d,u)},U:function(){return a.getTime()/1e3||0}},u(e,e)},formatDate:function(e,t){var a,r,n,o,i,s=this,d="";if("string"==typeof e&&(e=s.parseDate(e,t),e===!1))return!1;if(e instanceof Date){for(n=t.length,a=0;n>a;a++)i=t.charAt(a),"S"!==i&&(o=s.parseFormat(i,e),a!==n-1&&s.intParts.test(i)&&"S"===t.charAt(a+1)&&(r=parseInt(o),o+=s.dateSettings.ordinal(r)),d+=o);return d}return""}}}(),function(e){"function"==typeof define&&define.amd?define(["jquery","jquery-mousewheel"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(e){"use strict";function t(e,t,a){this.date=e,this.desc=t,this.style=a}var a={i18n:{ar:{months:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],dayOfWeekShort:["ن","ث","ع","خ","ج","س","ح"],dayOfWeek:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"]},ro:{months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],dayOfWeekShort:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],dayOfWeek:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"]},id:{months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],dayOfWeekShort:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],dayOfWeek:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},is:{months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],dayOfWeekShort:["Sun","Mán","Þrið","Mið","Fim","Fös","Lau"],dayOfWeek:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"]},bg:{months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],dayOfWeekShort:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"]},fa:{months:["فروردین","اردیبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند"],dayOfWeekShort:["یکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayOfWeek:["یک‌شنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنج‌شنبه","جمعه","شنبه","یک‌شنبه"]},ru:{months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],dayOfWeekShort:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"]},uk:{months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],dayOfWeekShort:["Ндл","Пнд","Втр","Срд","Чтв","Птн","Сбт"],dayOfWeek:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"]},en:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},el:{months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],dayOfWeekShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayOfWeek:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"]},de:{months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],dayOfWeekShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayOfWeek:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},nl:{months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],dayOfWeekShort:["zo","ma","di","wo","do","vr","za"],dayOfWeek:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]},tr:{months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],dayOfWeekShort:["Paz","Pts","Sal","Çar","Per","Cum","Cts"],dayOfWeek:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"]},fr:{months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],dayOfWeekShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],dayOfWeek:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},es:{months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],dayOfWeekShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],dayOfWeek:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"]},th:{months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],dayOfWeekShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayOfWeek:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"]},pl:{months:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],dayOfWeekShort:["nd","pn","wt","śr","cz","pt","sb"],dayOfWeek:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"]},pt:{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sab"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},ch:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"]},se:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"]},kr:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},it:{months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayOfWeek:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"]},da:{months:["January","Februar","Marts","April","Maj","Juni","July","August","September","Oktober","November","December"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]},no:{months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"]},ja:{months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeekShort:["日","月","火","水","木","金","土"],dayOfWeek:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"]},vi:{months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayOfWeekShort:["CN","T2","T3","T4","T5","T6","T7"],dayOfWeek:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"]},sl:{months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],dayOfWeekShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayOfWeek:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"]},cs:{months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],dayOfWeekShort:["Ne","Po","Út","St","Čt","Pá","So"]},hu:{months:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],dayOfWeekShort:["Va","Hé","Ke","Sze","Cs","Pé","Szo"],dayOfWeek:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"]},az:{months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],dayOfWeekShort:["B","Be","Ça","Ç","Ca","C","Ş"],dayOfWeek:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"]},bs:{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ca:{months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],dayOfWeekShort:["Dg","Dl","Dt","Dc","Dj","Dv","Ds"],dayOfWeek:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"]},"en-GB":{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},et:{months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],dayOfWeekShort:["P","E","T","K","N","R","L"],dayOfWeek:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"]},eu:{months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],dayOfWeekShort:["Ig.","Al.","Ar.","Az.","Og.","Or.","La."],dayOfWeek:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"]},fi:{months:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],dayOfWeekShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayOfWeek:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"]},gl:{months:["Xan","Feb","Maz","Abr","Mai","Xun","Xul","Ago","Set","Out","Nov","Dec"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Xov","Ven","Sab"],dayOfWeek:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"]},hr:{months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ko:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},lt:{months:["Sausio","Vasario","Kovo","Balandžio","Gegužės","Birželio","Liepos","Rugpjūčio","Rugsėjo","Spalio","Lapkričio","Gruodžio"],dayOfWeekShort:["Sek","Pir","Ant","Tre","Ket","Pen","Šeš"],dayOfWeek:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"]},lv:{months:["Janvāris","Februāris","Marts","Aprīlis ","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],dayOfWeekShort:["Sv","Pr","Ot","Tr","Ct","Pk","St"],dayOfWeek:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"]},mk:{months:["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],dayOfWeekShort:["нед","пон","вто","сре","чет","пет","саб"],dayOfWeek:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"]},mn:{months:["1-р сар","2-р сар","3-р сар","4-р сар","5-р сар","6-р сар","7-р сар","8-р сар","9-р сар","10-р сар","11-р сар","12-р сар"],dayOfWeekShort:["Дав","Мяг","Лха","Пүр","Бсн","Бям","Ням"],dayOfWeek:["Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба","Ням"]},"pt-BR":{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},sk:{months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],dayOfWeekShort:["Ne","Po","Ut","St","Št","Pi","So"],dayOfWeek:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"]},sq:{months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],dayOfWeekShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],dayOfWeek:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"]},"sr-YU":{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sre","čet","Pet","Sub"],dayOfWeek:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"]},sr:{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],dayOfWeekShort:["нед","пон","уто","сре","чет","пет","суб"],dayOfWeek:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"]},sv:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayOfWeek:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"]},"zh-TW":{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},zh:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},he:{months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],dayOfWeekShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayOfWeek:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"]},hy:{months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],dayOfWeekShort:["Կի","Երկ","Երք","Չոր","Հնգ","Ուրբ","Շբթ"],dayOfWeek:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"]},kg:{months:["Үчтүн айы","Бирдин айы","Жалган Куран","Чын Куран","Бугу","Кулжа","Теке","Баш Оона","Аяк Оона","Тогуздун айы","Жетинин айы","Бештин айы"],dayOfWeekShort:["Жек","Дүй","Шей","Шар","Бей","Жум","Ише"],dayOfWeek:["Жекшемб","Дүйшөмб","Шейшемб","Шаршемб","Бейшемби","Жума","Ишенб"]},rm:{months:["Schaner","Favrer","Mars","Avrigl","Matg","Zercladur","Fanadur","Avust","Settember","October","November","December"],dayOfWeekShort:["Du","Gli","Ma","Me","Gie","Ve","So"],dayOfWeek:["Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda"]},ka:{months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],dayOfWeekShort:["კვ","ორშ","სამშ","ოთხ","ხუთ","პარ","შაბ"],dayOfWeek:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"]}},value:"",rtl:!1,format:"Y/m/d H:i",formatTime:"H:i",formatDate:"Y/m/d",startDate:!1,step:60,monthChangeSpinner:!0,closeOnDateSelect:!1,closeOnTimeSelect:!0,closeOnWithoutClick:!0,closeOnInputClick:!0,timepicker:!0,datepicker:!0,weeks:!1,defaultTime:!1,defaultDate:!1,minDate:!1,maxDate:!1,minTime:!1,maxTime:!1,disabledMinTime:!1,disabledMaxTime:!1,allowTimes:[],opened:!1,initTime:!0,inline:!1,theme:"",onSelectDate:function(){},onSelectTime:function(){},onChangeMonth:function(){},onGetWeekOfYear:function(){},onChangeYear:function(){},onChangeDateTime:function(){},onShow:function(){},onClose:function(){},onGenerate:function(){},withoutCopyright:!0,inverseButton:!1,hours12:!1,next:"xdsoft_next",prev:"xdsoft_prev",dayOfWeekStart:0,parentID:"body",timeHeightInTimePicker:25,timepickerScrollbar:!0,todayButton:!0,prevButton:!0,nextButton:!0,defaultSelect:!0,scrollMonth:!0,scrollTime:!0,scrollInput:!0,lazyInit:!1,mask:!1,validateOnBlur:!0,allowBlank:!0,yearStart:1950,yearEnd:2050,monthStart:0,monthEnd:11,style:"",id:"",fixed:!1,roundTime:"round",className:"",weekends:[],highlightedDates:[],highlightedPeriods:[],allowDates:[],allowDateRe:null,disabledDates:[],disabledWeekDays:[],yearOffset:0,beforeShowDay:null,enterLikeTab:!0,showApplyButton:!1},r=null,n="en",o="en",i={meridiem:["AM","PM"]},s=function(){var t=a.i18n[o],n={days:t.dayOfWeek,daysShort:t.dayOfWeekShort,months:t.months,monthsShort:e.map(t.months,function(e){return e.substring(0,3)})};r=new DateFormatter({dateSettings:e.extend({},i,n)})};e.datetimepicker={setLocale:function(e){var t=a.i18n[e]?e:n;o!=t&&(o=t,s())},setDateFormatter:function(e){r=e},RFC_2822:"D, d M Y H:i:s O",ATOM:"Y-m-dTH:i:sP",ISO_8601:"Y-m-dTH:i:sO",RFC_822:"D, d M y H:i:s O",RFC_850:"l, d-M-y H:i:s T",RFC_1036:"D, d M y H:i:s O",RFC_1123:"D, d M Y H:i:s O",RSS:"D, d M Y H:i:s O",W3C:"Y-m-dTH:i:sP"},s(),window.getComputedStyle||(window.getComputedStyle=function(e){return this.el=e,this.getPropertyValue=function(t){var a=/(\-([a-z]){1})/g;return"float"===t&&(t="styleFloat"),a.test(t)&&(t=t.replace(a,function(e,t,a){return a.toUpperCase()})),e.currentStyle[t]||null},this}),Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){var a,r;for(a=t||0,r=this.length;r>a;a+=1)if(this[a]===e)return a;return-1}),Date.prototype.countDaysInMonth=function(){return new Date(this.getFullYear(),this.getMonth()+1,0).getDate()},e.fn.xdsoftScroller=function(t){return this.each(function(){var a,r,n,o,i,s=e(this),d=function(e){var t,a={x:0,y:0};return"touchstart"===e.type||"touchmove"===e.type||"touchend"===e.type||"touchcancel"===e.type?(t=e.originalEvent.touches[0]||e.originalEvent.changedTouches[0],a.x=t.clientX,a.y=t.clientY):("mousedown"===e.type||"mouseup"===e.type||"mousemove"===e.type||"mouseover"===e.type||"mouseout"===e.type||"mouseenter"===e.type||"mouseleave"===e.type)&&(a.x=e.clientX,a.y=e.clientY),a},u=100,l=!1,f=0,c=0,m=0,h=!1,g=0,p=function(){};return"hide"===t?void s.find(".xdsoft_scrollbar").hide():(e(this).hasClass("xdsoft_scroller_box")||(a=s.children().eq(0),r=s[0].clientHeight,n=a[0].offsetHeight,o=e('<div class="xdsoft_scrollbar"></div>'),i=e('<div class="xdsoft_scroller"></div>'),o.append(i),s.addClass("xdsoft_scroller_box").append(o),p=function(e){var t=d(e).y-f+g;0>t&&(t=0),t+i[0].offsetHeight>m&&(t=m-i[0].offsetHeight),s.trigger("scroll_element.xdsoft_scroller",[u?t/u:0])},i.on("touchstart.xdsoft_scroller mousedown.xdsoft_scroller",function(a){r||s.trigger("resize_scroll.xdsoft_scroller",[t]),f=d(a).y,g=parseInt(i.css("margin-top"),10),m=o[0].offsetHeight,"mousedown"===a.type||"touchstart"===a.type?(document&&e(document.body).addClass("xdsoft_noselect"),e([document.body,window]).on("touchend mouseup.xdsoft_scroller",function n(){e([document.body,window]).off("touchend mouseup.xdsoft_scroller",n).off("mousemove.xdsoft_scroller",p).removeClass("xdsoft_noselect")}),e(document.body).on("mousemove.xdsoft_scroller",p)):(h=!0,a.stopPropagation(),a.preventDefault())}).on("touchmove",function(e){h&&(e.preventDefault(),p(e))}).on("touchend touchcancel",function(){h=!1,g=0}),s.on("scroll_element.xdsoft_scroller",function(e,t){r||s.trigger("resize_scroll.xdsoft_scroller",[t,!0]),t=t>1?1:0>t||isNaN(t)?0:t,i.css("margin-top",u*t),setTimeout(function(){a.css("marginTop",-parseInt((a[0].offsetHeight-r)*t,10))},10)}).on("resize_scroll.xdsoft_scroller",function(e,t,d){var l,f;r=s[0].clientHeight,n=a[0].offsetHeight,l=r/n,f=l*o[0].offsetHeight,l>1?i.hide():(i.show(),i.css("height",parseInt(f>10?f:10,10)),u=o[0].offsetHeight-i[0].offsetHeight,d!==!0&&s.trigger("scroll_element.xdsoft_scroller",[t||Math.abs(parseInt(a.css("marginTop"),10))/(n-r)]))}),s.on("mousewheel",function(e){var t=Math.abs(parseInt(a.css("marginTop"),10));return t-=20*e.deltaY,0>t&&(t=0),s.trigger("scroll_element.xdsoft_scroller",[t/(n-r)]),e.stopPropagation(),!1}),s.on("touchstart",function(e){l=d(e),c=Math.abs(parseInt(a.css("marginTop"),10))}),s.on("touchmove",function(e){if(l){e.preventDefault();var t=d(e);s.trigger("scroll_element.xdsoft_scroller",[(c-(t.y-l.y))/(n-r)])}}),s.on("touchend touchcancel",function(){l=!1,c=0})),void s.trigger("resize_scroll.xdsoft_scroller",[t]))})},e.fn.datetimepicker=function(n,i){var s,d,u=this,l=48,f=57,c=96,m=105,h=17,g=46,p=13,y=27,v=8,b=37,D=38,k=39,x=40,T=9,S=116,w=65,O=67,M=86,_=90,W=89,F=!1,C=e.isPlainObject(n)||!n?e.extend(!0,{},a,n):e.extend(!0,{},a),P=0,A=function(e){e.on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function t(){e.is(":disabled")||e.data("xdsoft_datetimepicker")||(clearTimeout(P),P=setTimeout(function(){e.data("xdsoft_datetimepicker")||s(e),e.off("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",t).trigger("open.xdsoft")},100))})};return s=function(a){function i(){var e,t=!1;return C.startDate?t=j.strToDate(C.startDate):(t=C.value||(a&&a.val&&a.val()?a.val():""),t?t=j.strToDateTime(t):C.defaultDate&&(t=j.strToDateTime(C.defaultDate),C.defaultTime&&(e=j.strtotime(C.defaultTime),t.setHours(e.getHours()),t.setMinutes(e.getMinutes())))),t&&j.isValidDate(t)?J.data("changed",!0):t="",t||0}function s(t){var r=function(e,t){var a=e.replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g,"\\$1").replace(/_/g,"{digit+}").replace(/([0-9]{1})/g,"{digit$1}").replace(/\{digit([0-9]{1})\}/g,"[0-$1_]{1}").replace(/\{digit[\+]\}/g,"[0-9_]{1}");return new RegExp(a).test(t)},n=function(e){try{if(document.selection&&document.selection.createRange){var t=document.selection.createRange();return t.getBookmark().charCodeAt(2)-2}if(e.setSelectionRange)return e.selectionStart}catch(a){return 0}},o=function(e,t){if(e="string"==typeof e||e instanceof String?document.getElementById(e):e,!e)return!1;if(e.createTextRange){var a=e.createTextRange();return a.collapse(!0),a.moveEnd("character",t),a.moveStart("character",t),a.select(),!0}return e.setSelectionRange?(e.setSelectionRange(t,t),!0):!1};t.mask&&a.off("keydown.xdsoft"),t.mask===!0&&(t.mask="undefined"!=typeof moment?t.format.replace(/Y{4}/g,"9999").replace(/Y{2}/g,"99").replace(/M{2}/g,"19").replace(/D{2}/g,"39").replace(/H{2}/g,"29").replace(/m{2}/g,"59").replace(/s{2}/g,"59"):t.format.replace(/Y/g,"9999").replace(/F/g,"9999").replace(/m/g,"19").replace(/d/g,"39").replace(/H/g,"29").replace(/i/g,"59").replace(/s/g,"59")),"string"===e.type(t.mask)&&(r(t.mask,a.val())||(a.val(t.mask.replace(/[0-9]/g,"_")),o(a[0],0)),a.on("keydown.xdsoft",function(i){var s,d,u=this.value,C=i.which;if(C>=l&&f>=C||C>=c&&m>=C||C===v||C===g){for(s=n(this),d=C!==v&&C!==g?String.fromCharCode(C>=c&&m>=C?C-l:C):"_",C!==v&&C!==g||!s||(s-=1,d="_");/[^0-9_]/.test(t.mask.substr(s,1))&&s<t.mask.length&&s>0;)s+=C===v||C===g?-1:1;if(u=u.substr(0,s)+d+u.substr(s+1),""===e.trim(u))u=t.mask.replace(/[0-9]/g,"_");else if(s===t.mask.length)return i.preventDefault(),!1;for(s+=C===v||C===g?0:1;/[^0-9_]/.test(t.mask.substr(s,1))&&s<t.mask.length&&s>0;)s+=C===v||C===g?-1:1;r(t.mask,u)?(this.value=u,o(this,s)):""===e.trim(u)?this.value=t.mask.replace(/[0-9]/g,"_"):a.trigger("error_input.xdsoft")}else if(-1!==[w,O,M,_,W].indexOf(C)&&F||-1!==[y,D,x,b,k,S,h,T,p].indexOf(C))return!0;return i.preventDefault(),!1}))}var d,u,P,A,Y,j,H,J=e('<div class="xdsoft_datetimepicker xdsoft_noselect"></div>'),z=e('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net</a></div>'),I=e('<div class="xdsoft_datepicker active"></div>'),N=e('<div class="xdsoft_monthpicker"><button type="button" class="xdsoft_prev"></button><button type="button" class="xdsoft_today_button"></button><div class="xdsoft_label xdsoft_month"><span></span><i></i></div><div class="xdsoft_label xdsoft_year"><span></span><i></i></div><button type="button" class="xdsoft_next"></button></div>'),L=e('<div class="xdsoft_calendar"></div>'),E=e('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"></button><div class="xdsoft_time_box"></div><button type="button" class="xdsoft_next"></button></div>'),R=E.find(".xdsoft_time_box").eq(0),B=e('<div class="xdsoft_time_variant"></div>'),V=e('<button type="button" class="xdsoft_save_selected blue-gradient-button">Save Selected</button>'),G=e('<div class="xdsoft_select xdsoft_monthselect"><div></div></div>'),U=e('<div class="xdsoft_select xdsoft_yearselect"><div></div></div>'),q=!1,X=0;C.id&&J.attr("id",C.id),C.style&&J.attr("style",C.style),C.weeks&&J.addClass("xdsoft_showweeks"),C.rtl&&J.addClass("xdsoft_rtl"),J.addClass("xdsoft_"+C.theme),J.addClass(C.className),N.find(".xdsoft_month span").after(G),N.find(".xdsoft_year span").after(U),N.find(".xdsoft_month,.xdsoft_year").on("touchstart mousedown.xdsoft",function(t){var a,r,n=e(this).find(".xdsoft_select").eq(0),o=0,i=0,s=n.is(":visible");for(N.find(".xdsoft_select").hide(),j.currentTime&&(o=j.currentTime[e(this).hasClass("xdsoft_month")?"getMonth":"getFullYear"]()),n[s?"hide":"show"](),a=n.find("div.xdsoft_option"),r=0;r<a.length&&a.eq(r).data("value")!==o;r+=1)i+=a[0].offsetHeight;return n.xdsoftScroller(i/(n.children()[0].offsetHeight-n[0].clientHeight)),t.stopPropagation(),!1}),N.find(".xdsoft_select").xdsoftScroller().on("touchstart mousedown.xdsoft",function(e){e.stopPropagation(),e.preventDefault()}).on("touchstart mousedown.xdsoft",".xdsoft_option",function(){(void 0===j.currentTime||null===j.currentTime)&&(j.currentTime=j.now());var t=j.currentTime.getFullYear();j&&j.currentTime&&j.currentTime[e(this).parent().parent().hasClass("xdsoft_monthselect")?"setMonth":"setFullYear"](e(this).data("value")),e(this).parent().parent().hide(),J.trigger("xchange.xdsoft"),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(J,j.currentTime,J.data("input")),t!==j.currentTime.getFullYear()&&e.isFunction(C.onChangeYear)&&C.onChangeYear.call(J,j.currentTime,J.data("input"))}),J.getValue=function(){return j.getCurrentTime()},J.setOptions=function(n){var o={};C=e.extend(!0,{},C,n),n.allowTimes&&e.isArray(n.allowTimes)&&n.allowTimes.length&&(C.allowTimes=e.extend(!0,[],n.allowTimes)),n.weekends&&e.isArray(n.weekends)&&n.weekends.length&&(C.weekends=e.extend(!0,[],n.weekends)),n.allowDates&&e.isArray(n.allowDates)&&n.allowDates.length&&(C.allowDates=e.extend(!0,[],n.allowDates)),n.allowDateRe&&"[object String]"===Object.prototype.toString.call(n.allowDateRe)&&(C.allowDateRe=new RegExp(n.allowDateRe)),n.highlightedDates&&e.isArray(n.highlightedDates)&&n.highlightedDates.length&&(e.each(n.highlightedDates,function(a,n){var i,s=e.map(n.split(","),e.trim),d=new t(r.parseDate(s[0],C.formatDate),s[1],s[2]),u=r.formatDate(d.date,C.formatDate);void 0!==o[u]?(i=o[u].desc,i&&i.length&&d.desc&&d.desc.length&&(o[u].desc=i+"\n"+d.desc)):o[u]=d}),C.highlightedDates=e.extend(!0,[],o)),n.highlightedPeriods&&e.isArray(n.highlightedPeriods)&&n.highlightedPeriods.length&&(o=e.extend(!0,[],C.highlightedDates),
e.each(n.highlightedPeriods,function(a,n){var i,s,d,u,l,f,c;if(e.isArray(n))i=n[0],s=n[1],d=n[2],c=n[3];else{var m=e.map(n.split(","),e.trim);i=r.parseDate(m[0],C.formatDate),s=r.parseDate(m[1],C.formatDate),d=m[2],c=m[3]}for(;s>=i;)u=new t(i,d,c),l=r.formatDate(i,C.formatDate),i.setDate(i.getDate()+1),void 0!==o[l]?(f=o[l].desc,f&&f.length&&u.desc&&u.desc.length&&(o[l].desc=f+"\n"+u.desc)):o[l]=u}),C.highlightedDates=e.extend(!0,[],o)),n.disabledDates&&e.isArray(n.disabledDates)&&n.disabledDates.length&&(C.disabledDates=e.extend(!0,[],n.disabledDates)),n.disabledWeekDays&&e.isArray(n.disabledWeekDays)&&n.disabledWeekDays.length&&(C.disabledWeekDays=e.extend(!0,[],n.disabledWeekDays)),!C.open&&!C.opened||C.inline||a.trigger("open.xdsoft"),C.inline&&(q=!0,J.addClass("xdsoft_inline"),a.after(J).hide()),C.inverseButton&&(C.next="xdsoft_prev",C.prev="xdsoft_next"),C.datepicker?I.addClass("active"):I.removeClass("active"),C.timepicker?E.addClass("active"):E.removeClass("active"),C.value&&(j.setCurrentTime(C.value),a&&a.val&&a.val(j.str)),C.dayOfWeekStart=isNaN(C.dayOfWeekStart)?0:parseInt(C.dayOfWeekStart,10)%7,C.timepickerScrollbar||R.xdsoftScroller("hide"),C.minDate&&/^[\+\-](.*)$/.test(C.minDate)&&(C.minDate=r.formatDate(j.strToDateTime(C.minDate),C.formatDate)),C.maxDate&&/^[\+\-](.*)$/.test(C.maxDate)&&(C.maxDate=r.formatDate(j.strToDateTime(C.maxDate),C.formatDate)),V.toggle(C.showApplyButton),N.find(".xdsoft_today_button").css("visibility",C.todayButton?"visible":"hidden"),N.find("."+C.prev).css("visibility",C.prevButton?"visible":"hidden"),N.find("."+C.next).css("visibility",C.nextButton?"visible":"hidden"),s(C),C.validateOnBlur&&a.off("blur.xdsoft").on("blur.xdsoft",function(){if(C.allowBlank&&(!e.trim(e(this).val()).length||"string"==typeof C.mask&&e.trim(e(this).val())===C.mask.replace(/[0-9]/g,"_")))e(this).val(null),J.data("xdsoft_datetime").empty();else{var t=r.parseDate(e(this).val(),C.format);if(t)e(this).val(r.formatDate(t,C.format));else{var a=+[e(this).val()[0],e(this).val()[1]].join(""),n=+[e(this).val()[2],e(this).val()[3]].join("");e(this).val(!C.datepicker&&C.timepicker&&a>=0&&24>a&&n>=0&&60>n?[a,n].map(function(e){return e>9?e:"0"+e}).join(":"):r.formatDate(j.now(),C.format))}J.data("xdsoft_datetime").setCurrentTime(e(this).val())}J.trigger("changedatetime.xdsoft"),J.trigger("close.xdsoft")}),C.dayOfWeekStartPrev=0===C.dayOfWeekStart?6:C.dayOfWeekStart-1,J.trigger("xchange.xdsoft").trigger("afterOpen.xdsoft")},J.data("options",C).on("touchstart mousedown.xdsoft",function(e){return e.stopPropagation(),e.preventDefault(),U.hide(),G.hide(),!1}),R.append(B),R.xdsoftScroller(),J.on("afterOpen.xdsoft",function(){R.xdsoftScroller()}),J.append(I).append(E),C.withoutCopyright!==!0&&J.append(z),I.append(N).append(L).append(V),e(C.parentID).append(J),d=function(){var t=this;t.now=function(e){var a,r,n=new Date;return!e&&C.defaultDate&&(a=t.strToDateTime(C.defaultDate),n.setFullYear(a.getFullYear()),n.setMonth(a.getMonth()),n.setDate(a.getDate())),C.yearOffset&&n.setFullYear(n.getFullYear()+C.yearOffset),!e&&C.defaultTime&&(r=t.strtotime(C.defaultTime),n.setHours(r.getHours()),n.setMinutes(r.getMinutes())),n},t.isValidDate=function(e){return"[object Date]"!==Object.prototype.toString.call(e)?!1:!isNaN(e.getTime())},t.setCurrentTime=function(e,a){t.currentTime="string"==typeof e?t.strToDateTime(e):t.isValidDate(e)?e:e||a||!C.allowBlank?t.now():null,J.trigger("xchange.xdsoft")},t.empty=function(){t.currentTime=null},t.getCurrentTime=function(){return t.currentTime},t.nextMonth=function(){(void 0===t.currentTime||null===t.currentTime)&&(t.currentTime=t.now());var a,r=t.currentTime.getMonth()+1;return 12===r&&(t.currentTime.setFullYear(t.currentTime.getFullYear()+1),r=0),a=t.currentTime.getFullYear(),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),r+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(r),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(J,j.currentTime,J.data("input")),a!==t.currentTime.getFullYear()&&e.isFunction(C.onChangeYear)&&C.onChangeYear.call(J,j.currentTime,J.data("input")),J.trigger("xchange.xdsoft"),r},t.prevMonth=function(){(void 0===t.currentTime||null===t.currentTime)&&(t.currentTime=t.now());var a=t.currentTime.getMonth()-1;return-1===a&&(t.currentTime.setFullYear(t.currentTime.getFullYear()-1),a=11),t.currentTime.setDate(Math.min(new Date(t.currentTime.getFullYear(),a+1,0).getDate(),t.currentTime.getDate())),t.currentTime.setMonth(a),C.onChangeMonth&&e.isFunction(C.onChangeMonth)&&C.onChangeMonth.call(J,j.currentTime,J.data("input")),J.trigger("xchange.xdsoft"),a},t.getWeekOfYear=function(t){if(C.onGetWeekOfYear&&e.isFunction(C.onGetWeekOfYear)){var a=C.onGetWeekOfYear.call(J,t);if("undefined"!=typeof a)return a}var r=new Date(t.getFullYear(),0,1);return 4!=r.getDay()&&r.setMonth(0,1+(4-r.getDay()+7)%7),Math.ceil(((t-r)/864e5+r.getDay()+1)/7)},t.strToDateTime=function(e){var a,n,o=[];return e&&e instanceof Date&&t.isValidDate(e)?e:(o=/^(\+|\-)(.*)$/.exec(e),o&&(o[2]=r.parseDate(o[2],C.formatDate)),o&&o[2]?(a=o[2].getTime()-6e4*o[2].getTimezoneOffset(),n=new Date(t.now(!0).getTime()+parseInt(o[1]+"1",10)*a)):n=e?r.parseDate(e,C.format):t.now(),t.isValidDate(n)||(n=t.now()),n)},t.strToDate=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?r.parseDate(e,C.formatDate):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.strtotime=function(e){if(e&&e instanceof Date&&t.isValidDate(e))return e;var a=e?r.parseDate(e,C.formatTime):t.now(!0);return t.isValidDate(a)||(a=t.now(!0)),a},t.str=function(){return r.formatDate(t.currentTime,C.format)},t.currentTime=this.now()},j=new d,V.on("touchend click",function(e){e.preventDefault(),J.data("changed",!0),j.setCurrentTime(i()),a.val(j.str()),J.trigger("close.xdsoft")}),N.find(".xdsoft_today_button").on("touchend mousedown.xdsoft",function(){J.data("changed",!0),j.setCurrentTime(0,!0),J.trigger("afterOpen.xdsoft")}).on("dblclick.xdsoft",function(){var e,t,r=j.getCurrentTime();r=new Date(r.getFullYear(),r.getMonth(),r.getDate()),e=j.strToDate(C.minDate),e=new Date(e.getFullYear(),e.getMonth(),e.getDate()),e>r||(t=j.strToDate(C.maxDate),t=new Date(t.getFullYear(),t.getMonth(),t.getDate()),r>t||(a.val(j.str()),a.trigger("change"),J.trigger("close.xdsoft")))}),N.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var t=e(this),a=0,r=!1;!function n(e){t.hasClass(C.next)?j.nextMonth():t.hasClass(C.prev)&&j.prevMonth(),C.monthChangeSpinner&&(r||(a=setTimeout(n,e||100)))}(500),e([document.body,window]).on("touchend mouseup.xdsoft",function o(){clearTimeout(a),r=!0,e([document.body,window]).off("touchend mouseup.xdsoft",o)})}),E.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var t=e(this),a=0,r=!1,n=110;!function o(e){var i=R[0].clientHeight,s=B[0].offsetHeight,d=Math.abs(parseInt(B.css("marginTop"),10));t.hasClass(C.next)&&s-i-C.timeHeightInTimePicker>=d?B.css("marginTop","-"+(d+C.timeHeightInTimePicker)+"px"):t.hasClass(C.prev)&&d-C.timeHeightInTimePicker>=0&&B.css("marginTop","-"+(d-C.timeHeightInTimePicker)+"px"),R.trigger("scroll_element.xdsoft_scroller",[Math.abs(parseInt(B[0].style.marginTop,10)/(s-i))]),n=n>10?10:n-10,r||(a=setTimeout(o,e||n))}(500),e([document.body,window]).on("touchend mouseup.xdsoft",function i(){clearTimeout(a),r=!0,e([document.body,window]).off("touchend mouseup.xdsoft",i)})}),u=0,J.on("xchange.xdsoft",function(t){clearTimeout(u),u=setTimeout(function(){if(void 0===j.currentTime||null===j.currentTime){if(C.allowBlank)return;j.currentTime=j.now()}for(var t,i,s,d,u,l,f,c,m,h,g="",p=new Date(j.currentTime.getFullYear(),j.currentTime.getMonth(),1,12,0,0),y=0,v=j.now(),b=!1,D=!1,k=[],x=!0,T="",S="";p.getDay()!==C.dayOfWeekStart;)p.setDate(p.getDate()-1);for(g+="<table><thead><tr>",C.weeks&&(g+="<th></th>"),t=0;7>t;t+=1)g+="<th>"+C.i18n[o].dayOfWeekShort[(t+C.dayOfWeekStart)%7]+"</th>";for(g+="</tr></thead>",g+="<tbody>",C.maxDate!==!1&&(b=j.strToDate(C.maxDate),b=new Date(b.getFullYear(),b.getMonth(),b.getDate(),23,59,59,999)),C.minDate!==!1&&(D=j.strToDate(C.minDate),D=new Date(D.getFullYear(),D.getMonth(),D.getDate()));y<j.currentTime.countDaysInMonth()||p.getDay()!==C.dayOfWeekStart||j.currentTime.getMonth()===p.getMonth();)k=[],y+=1,s=p.getDay(),d=p.getDate(),u=p.getFullYear(),l=p.getMonth(),f=j.getWeekOfYear(p),h="",k.push("xdsoft_date"),c=C.beforeShowDay&&e.isFunction(C.beforeShowDay.call)?C.beforeShowDay.call(J,p):null,C.allowDateRe&&"[object RegExp]"===Object.prototype.toString.call(C.allowDateRe)?C.allowDateRe.test(r.formatDate(p,C.formatDate))||k.push("xdsoft_disabled"):C.allowDates&&C.allowDates.length>0?-1===C.allowDates.indexOf(r.formatDate(p,C.formatDate))&&k.push("xdsoft_disabled"):b!==!1&&p>b||D!==!1&&D>p||c&&c[0]===!1?k.push("xdsoft_disabled"):-1!==C.disabledDates.indexOf(r.formatDate(p,C.formatDate))?k.push("xdsoft_disabled"):-1!==C.disabledWeekDays.indexOf(s)?k.push("xdsoft_disabled"):a.is("[readonly]")&&k.push("xdsoft_disabled"),c&&""!==c[1]&&k.push(c[1]),j.currentTime.getMonth()!==l&&k.push("xdsoft_other_month"),(C.defaultSelect||J.data("changed"))&&r.formatDate(j.currentTime,C.formatDate)===r.formatDate(p,C.formatDate)&&k.push("xdsoft_current"),r.formatDate(v,C.formatDate)===r.formatDate(p,C.formatDate)&&k.push("xdsoft_today"),(0===p.getDay()||6===p.getDay()||-1!==C.weekends.indexOf(r.formatDate(p,C.formatDate)))&&k.push("xdsoft_weekend"),void 0!==C.highlightedDates[r.formatDate(p,C.formatDate)]&&(i=C.highlightedDates[r.formatDate(p,C.formatDate)],k.push(void 0===i.style?"xdsoft_highlighted_default":i.style),h=void 0===i.desc?"":i.desc),C.beforeShowDay&&e.isFunction(C.beforeShowDay)&&k.push(C.beforeShowDay(p)),x&&(g+="<tr>",x=!1,C.weeks&&(g+="<th>"+f+"</th>")),g+='<td data-date="'+d+'" data-month="'+l+'" data-year="'+u+'" class="xdsoft_date xdsoft_day_of_week'+p.getDay()+" "+k.join(" ")+'" title="'+h+'"><div>'+d+"</div></td>",p.getDay()===C.dayOfWeekStartPrev&&(g+="</tr>",x=!0),p.setDate(d+1);if(g+="</tbody></table>",L.html(g),N.find(".xdsoft_label span").eq(0).text(C.i18n[o].months[j.currentTime.getMonth()]),N.find(".xdsoft_label span").eq(1).text(j.currentTime.getFullYear()),T="",S="",l="",m=function(t,n){var o,i,s=j.now(),d=C.allowTimes&&e.isArray(C.allowTimes)&&C.allowTimes.length;s.setHours(t),t=parseInt(s.getHours(),10),s.setMinutes(n),n=parseInt(s.getMinutes(),10),o=new Date(j.currentTime),o.setHours(t),o.setMinutes(n),k=[],C.minDateTime!==!1&&C.minDateTime>o||C.maxTime!==!1&&j.strtotime(C.maxTime).getTime()<s.getTime()||C.minTime!==!1&&j.strtotime(C.minTime).getTime()>s.getTime()?k.push("xdsoft_disabled"):C.minDateTime!==!1&&C.minDateTime>o||C.disabledMinTime!==!1&&s.getTime()>j.strtotime(C.disabledMinTime).getTime()&&C.disabledMaxTime!==!1&&s.getTime()<j.strtotime(C.disabledMaxTime).getTime()?k.push("xdsoft_disabled"):a.is("[readonly]")&&k.push("xdsoft_disabled"),i=new Date(j.currentTime),i.setHours(parseInt(j.currentTime.getHours(),10)),d||i.setMinutes(Math[C.roundTime](j.currentTime.getMinutes()/C.step)*C.step),(C.initTime||C.defaultSelect||J.data("changed"))&&i.getHours()===parseInt(t,10)&&(!d&&C.step>59||i.getMinutes()===parseInt(n,10))&&(C.defaultSelect||J.data("changed")?k.push("xdsoft_current"):C.initTime&&k.push("xdsoft_init_time")),parseInt(v.getHours(),10)===parseInt(t,10)&&parseInt(v.getMinutes(),10)===parseInt(n,10)&&k.push("xdsoft_today"),T+='<div class="xdsoft_time '+k.join(" ")+'" data-hour="'+t+'" data-minute="'+n+'">'+r.formatDate(s,C.formatTime)+"</div>"},C.allowTimes&&e.isArray(C.allowTimes)&&C.allowTimes.length)for(y=0;y<C.allowTimes.length;y+=1)S=j.strtotime(C.allowTimes[y]).getHours(),l=j.strtotime(C.allowTimes[y]).getMinutes(),m(S,l);else for(y=0,t=0;y<(C.hours12?12:24);y+=1)for(t=0;60>t;t+=C.step)S=(10>y?"0":"")+y,l=(10>t?"0":"")+t,m(S,l);for(B.html(T),n="",y=0,y=parseInt(C.yearStart,10)+C.yearOffset;y<=parseInt(C.yearEnd,10)+C.yearOffset;y+=1)n+='<div class="xdsoft_option '+(j.currentTime.getFullYear()===y?"xdsoft_current":"")+'" data-value="'+y+'">'+y+"</div>";for(U.children().eq(0).html(n),y=parseInt(C.monthStart,10),n="";y<=parseInt(C.monthEnd,10);y+=1)n+='<div class="xdsoft_option '+(j.currentTime.getMonth()===y?"xdsoft_current":"")+'" data-value="'+y+'">'+C.i18n[o].months[y]+"</div>";G.children().eq(0).html(n),e(J).trigger("generate.xdsoft")},10),t.stopPropagation()}).on("afterOpen.xdsoft",function(){if(C.timepicker){var e,t,a,r;B.find(".xdsoft_current").length?e=".xdsoft_current":B.find(".xdsoft_init_time").length&&(e=".xdsoft_init_time"),e?(t=R[0].clientHeight,a=B[0].offsetHeight,r=B.find(e).index()*C.timeHeightInTimePicker+1,r>a-t&&(r=a-t),R.trigger("scroll_element.xdsoft_scroller",[parseInt(r,10)/(a-t)])):R.trigger("scroll_element.xdsoft_scroller",[0])}}),P=0,L.on("touchend click.xdsoft","td",function(t){t.stopPropagation(),P+=1;var r=e(this),n=j.currentTime;return(void 0===n||null===n)&&(j.currentTime=j.now(),n=j.currentTime),r.hasClass("xdsoft_disabled")?!1:(n.setDate(1),n.setFullYear(r.data("year")),n.setMonth(r.data("month")),n.setDate(r.data("date")),J.trigger("select.xdsoft",[n]),a.val(j.str()),C.onSelectDate&&e.isFunction(C.onSelectDate)&&C.onSelectDate.call(J,j.currentTime,J.data("input"),t),J.data("changed",!0),J.trigger("xchange.xdsoft"),J.trigger("changedatetime.xdsoft"),(P>1||C.closeOnDateSelect===!0||C.closeOnDateSelect===!1&&!C.timepicker)&&!C.inline&&J.trigger("close.xdsoft"),void setTimeout(function(){P=0},200))}),B.on("touchend click.xdsoft","div",function(t){t.stopPropagation();var a=e(this),r=j.currentTime;return(void 0===r||null===r)&&(j.currentTime=j.now(),r=j.currentTime),a.hasClass("xdsoft_disabled")?!1:(r.setHours(a.data("hour")),r.setMinutes(a.data("minute")),J.trigger("select.xdsoft",[r]),J.data("input").val(j.str()),C.onSelectTime&&e.isFunction(C.onSelectTime)&&C.onSelectTime.call(J,j.currentTime,J.data("input"),t),J.data("changed",!0),J.trigger("xchange.xdsoft"),J.trigger("changedatetime.xdsoft"),void(C.inline!==!0&&C.closeOnTimeSelect===!0&&J.trigger("close.xdsoft")))}),I.on("mousewheel.xdsoft",function(e){return C.scrollMonth?(e.deltaY<0?j.nextMonth():j.prevMonth(),!1):!0}),a.on("mousewheel.xdsoft",function(e){return C.scrollInput?!C.datepicker&&C.timepicker?(A=B.find(".xdsoft_current").length?B.find(".xdsoft_current").eq(0).index():0,A+e.deltaY>=0&&A+e.deltaY<B.children().length&&(A+=e.deltaY),B.children().eq(A).length&&B.children().eq(A).trigger("mousedown"),!1):C.datepicker&&!C.timepicker?(I.trigger(e,[e.deltaY,e.deltaX,e.deltaY]),a.val&&a.val(j.str()),J.trigger("changedatetime.xdsoft"),!1):void 0:!0}),J.on("changedatetime.xdsoft",function(t){if(C.onChangeDateTime&&e.isFunction(C.onChangeDateTime)){var a=J.data("input");C.onChangeDateTime.call(J,j.currentTime,a,t),delete C.value,a.trigger("change")}}).on("generate.xdsoft",function(){C.onGenerate&&e.isFunction(C.onGenerate)&&C.onGenerate.call(J,j.currentTime,J.data("input")),q&&(J.trigger("afterOpen.xdsoft"),q=!1)}).on("click.xdsoft",function(e){e.stopPropagation()}),A=0,H=function(e,t){do if(e=e.parentNode,t(e)===!1)break;while("HTML"!==e.nodeName)},Y=function(){var t,a,r,n,o,i,s,d,u,l,f,c,m;if(d=J.data("input"),t=d.offset(),a=d[0],l="top",r=t.top+a.offsetHeight-1,n=t.left,o="absolute",u=e(window).width(),c=e(window).height(),m=e(window).scrollTop(),document.documentElement.clientWidth-t.left<I.parent().outerWidth(!0)){var h=I.parent().outerWidth(!0)-a.offsetWidth;n-=h}"rtl"===d.parent().css("direction")&&(n-=J.outerWidth()-d.outerWidth()),C.fixed?(r-=m,n-=e(window).scrollLeft(),o="fixed"):(s=!1,H(a,function(e){return"fixed"===window.getComputedStyle(e).getPropertyValue("position")?(s=!0,!1):void 0}),s?(o="fixed",r+J.outerHeight()>c+m?(l="bottom",r=c+m-t.top):r-=m):r+a.offsetHeight>c+m&&(r=t.top-a.offsetHeight+1),0>r&&(r=0),n+a.offsetWidth>u&&(n=u-a.offsetWidth)),i=J[0],H(i,function(e){var t;return t=window.getComputedStyle(e).getPropertyValue("position"),"relative"===t&&u>=e.offsetWidth?(n-=(u-e.offsetWidth)/2,!1):void 0}),f={position:o,left:n,top:"",bottom:""},f[l]=r,J.css(f)},J.on("open.xdsoft",function(t){var a=!0;C.onShow&&e.isFunction(C.onShow)&&(a=C.onShow.call(J,j.currentTime,J.data("input"),t)),a!==!1&&(J.show(),Y(),e(window).off("resize.xdsoft",Y).on("resize.xdsoft",Y),C.closeOnWithoutClick&&e([document.body,window]).on("touchstart mousedown.xdsoft",function r(){J.trigger("close.xdsoft"),e([document.body,window]).off("touchstart mousedown.xdsoft",r)}))}).on("close.xdsoft",function(t){var a=!0;N.find(".xdsoft_month,.xdsoft_year").find(".xdsoft_select").hide(),C.onClose&&e.isFunction(C.onClose)&&(a=C.onClose.call(J,j.currentTime,J.data("input"),t)),a===!1||C.opened||C.inline||J.hide(),t.stopPropagation()}).on("toggle.xdsoft",function(){J.trigger(J.is(":visible")?"close.xdsoft":"open.xdsoft")}).data("input",a),X=0,J.data("xdsoft_datetime",j),J.setOptions(C),j.setCurrentTime(i()),a.data("xdsoft_datetimepicker",J).on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function(){a.is(":disabled")||a.data("xdsoft_datetimepicker").is(":visible")&&C.closeOnInputClick||(clearTimeout(X),X=setTimeout(function(){a.is(":disabled")||(q=!0,j.setCurrentTime(i(),!0),C.mask&&s(C),J.trigger("open.xdsoft"))},100))}).on("keydown.xdsoft",function(t){var a,r=t.which;return-1!==[p].indexOf(r)&&C.enterLikeTab?(a=e("input:visible,textarea:visible,button:visible,a:visible"),J.trigger("close.xdsoft"),a.eq(a.index(this)+1).focus(),!1):-1!==[T].indexOf(r)?(J.trigger("close.xdsoft"),!0):void 0}).on("blur.xdsoft",function(){J.trigger("close.xdsoft")})},d=function(t){var a=t.data("xdsoft_datetimepicker");a&&(a.data("xdsoft_datetime",null),a.remove(),t.data("xdsoft_datetimepicker",null).off(".xdsoft"),e(window).off("resize.xdsoft"),e([window,document.body]).off("mousedown.xdsoft touchstart"),t.unmousewheel&&t.unmousewheel())},e(document).off("keydown.xdsoftctrl keyup.xdsoftctrl").on("keydown.xdsoftctrl",function(e){e.keyCode===h&&(F=!0)}).on("keyup.xdsoftctrl",function(e){e.keyCode===h&&(F=!1)}),this.each(function(){var t,a=e(this).data("xdsoft_datetimepicker");if(a){if("string"===e.type(n))switch(n){case"show":e(this).select().focus(),a.trigger("open.xdsoft");break;case"hide":a.trigger("close.xdsoft");break;case"toggle":a.trigger("toggle.xdsoft");break;case"destroy":d(e(this));break;case"reset":this.value=this.defaultValue,this.value&&a.data("xdsoft_datetime").isValidDate(r.parseDate(this.value,C.format))||a.data("changed",!1),a.data("xdsoft_datetime").setCurrentTime(this.value);break;case"validate":t=a.data("input"),t.trigger("blur.xdsoft");break;default:a[n]&&e.isFunction(a[n])&&(u=a[n](i))}else a.setOptions(n);return 0}"string"!==e.type(n)&&(!C.lazyInit||C.open||C.inline?s(e(this)):A(e(this)))}),u},e.fn.datetimepicker.defaults=a}),function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?module.exports=e:e(jQuery)}(function(e){function t(t){var i=t||window.event,s=d.call(arguments,1),u=0,f=0,c=0,m=0,h=0,g=0;if(t=e.event.fix(i),t.type="mousewheel","detail"in i&&(c=-1*i.detail),"wheelDelta"in i&&(c=i.wheelDelta),"wheelDeltaY"in i&&(c=i.wheelDeltaY),"wheelDeltaX"in i&&(f=-1*i.wheelDeltaX),"axis"in i&&i.axis===i.HORIZONTAL_AXIS&&(f=-1*c,c=0),u=0===c?f:c,"deltaY"in i&&(c=-1*i.deltaY,u=c),"deltaX"in i&&(f=i.deltaX,0===c&&(u=-1*f)),0!==c||0!==f){if(1===i.deltaMode){var p=e.data(this,"mousewheel-line-height");u*=p,c*=p,f*=p}else if(2===i.deltaMode){var y=e.data(this,"mousewheel-page-height");u*=y,c*=y,f*=y}if(m=Math.max(Math.abs(c),Math.abs(f)),(!o||o>m)&&(o=m,r(i,m)&&(o/=40)),r(i,m)&&(u/=40,f/=40,c/=40),u=Math[u>=1?"floor":"ceil"](u/o),f=Math[f>=1?"floor":"ceil"](f/o),c=Math[c>=1?"floor":"ceil"](c/o),l.settings.normalizeOffset&&this.getBoundingClientRect){var v=this.getBoundingClientRect();h=t.clientX-v.left,g=t.clientY-v.top}return t.deltaX=f,t.deltaY=c,t.deltaFactor=o,t.offsetX=h,t.offsetY=g,t.deltaMode=0,s.unshift(t,u,f,c),n&&clearTimeout(n),n=setTimeout(a,200),(e.event.dispatch||e.event.handle).apply(this,s)}}function a(){o=null}function r(e,t){return l.settings.adjustOldDeltas&&"mousewheel"===e.type&&t%120===0}var n,o,i=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],s="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],d=Array.prototype.slice;if(e.event.fixHooks)for(var u=i.length;u;)e.event.fixHooks[i[--u]]=e.event.mouseHooks;var l=e.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var a=s.length;a;)this.addEventListener(s[--a],t,!1);else this.onmousewheel=t;e.data(this,"mousewheel-line-height",l.getLineHeight(this)),e.data(this,"mousewheel-page-height",l.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var a=s.length;a;)this.removeEventListener(s[--a],t,!1);else this.onmousewheel=null;e.removeData(this,"mousewheel-line-height"),e.removeData(this,"mousewheel-page-height")},getLineHeight:function(t){var a=e(t),r=a["offsetParent"in e.fn?"offsetParent":"parent"]();return r.length||(r=e("body")),parseInt(r.css("fontSize"),10)||parseInt(a.css("fontSize"),10)||16},getPageHeight:function(t){return e(t).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};e.fn.extend({mousewheel:function(e){return e?this.bind("mousewheel",e):this.trigger("mousewheel")},unmousewheel:function(e){return this.unbind("mousewheel",e)}})});
!function(D){"use strict";var w={init:function(){this.brw_datepicker(),this.submit_button(),this.ova_collapsed(),this.ova_load_name_product(),this.ova_load_tag_product(),this.ova_field_search_changed(),this.ova_get_time_to_book_start(),this.ova_get_time_to_book_end(),this.ova_change_pickup_location_transport(),this.ova_change_pick_up_off_other_location(),this.ova_startdate_perido_time(),this.ova_ajax_show_total(),this.ova_ajax_show_total_after_load(),this.ova_search_map()},ova_change_pickup_location_transport:function(){D(".ovabrw-booking").on("change",'select[name="ovabrw_pickup_loc"].ovabrw-transport ',function(){D(this).closest(".wrap-item").find('select[name="ovabrw_pickoff_loc"]').empty();var a=D(this).val(),a=D(this).find('option[value="'+a+'"]').data("item_loc"),e="",e=a?(a.forEach(function(a){a&&(e+='<option value="'+a+'" >'+a+"</option>")}),e||'<option value="">Select Location</option>'):'<option value="">Select Location</option>';D(this).closest(".wrap-item").find('select[name="ovabrw_pickoff_loc"]').append(e)})},ova_change_pick_up_off_other_location:function(){D(".ovabrw-booking").on("change",'select[name="ovabrw_pickup_loc"] ',function(){"other_location"===D(this).val()?D(this).closest(".rental_item").find(".ovabrw-other-location").append('<input style="margin-top: 10px;" name="ovabrw_pickup_loc" type="text" placeholder="Other Location">'):D(this).closest(".rental_item").find(".ovabrw-other-location").empty()}),D(".ovabrw-booking").on("change",'select[name="ovabrw_pickoff_loc"] ',function(){"other_location"===D(this).val()?D(this).closest(".rental_item").find(".ovabrw-other-location").append('<input style="margin-top: 10px;" name="ovabrw_pickoff_loc" type="text" placeholder="Other Location">'):D(this).closest(".rental_item").find(".ovabrw-other-location").empty()})},ova_get_time_to_book_start:function(a){var e=[];return"undefined"!=typeof brw_time_to_book_general_calendar&&(e=brw_time_to_book_general_calendar.replace(/ /g,"").split(",")),void 0===a?e:"no"==a?[]:a.replace(/ /g,"").split(",")},ova_get_time_to_book_end:function(a){var e=[];return"undefined"!=typeof brw_time_to_book_general_calendar_endate&&(e=brw_time_to_book_general_calendar_endate.replace(/ /g,"").split(",")),void 0===a?e:"no"==a?[]:a.replace(/ /g,"").split(",")},ova_field_search_changed:function(){var a,e;D('.ovabrw_search select[name="ovabrw_attribute"]').each(function(){D(this).closest(".wrap_content").children(".s_field.ovabrw-value-attribute").css("display","none");var a=D(this).val();a&&D(this).closest(".wrap_content").children(".s_field#"+a).css("display","inline-block")}),D('.ovabrw_search select[name="ovabrw_attribute"]').on("change",function(){D(this).closest(".wrap_content").children(".s_field.ovabrw-value-attribute").css("display","none");var a=D(this).val();a&&D(this).closest(".wrap_content").children(".s_field#"+a).css("display","inline-block")}),D('.ovabrw_search select[name="cat"]').on("change",function(){p(D(this).closest("form"),D(this).val())}),D(".ovabrw_search").length&&p(D(".ovabrw_search"),""),D('.ovabrw_search select[name="cat"]').length&&(a=D("form.ovabrw_search"),(e=D('form.ovabrw_search select[name="cat"]').val())&&p(a,e))},ova_load_name_product:function(){D('.ovabrw_wd_search input[name="ovabrw_name_product"]').autocomplete({source:function(a,e){D.ajax({url:ajax_object.ajax_url,type:"POST",dataType:"json",data:{action:"ovabrw_load_name_product",keyword:a.term},success:function(a){e(a)}})},delay:0})},ova_load_tag_product:function(){D('.ovabrw_wd_search input[name="ovabrw_tag_product"]').autocomplete({source:function(a,e){D.ajax({url:ajax_object.ajax_url,type:"POST",dataType:"json",data:{action:"ovabrw_load_tag_product",keyword:a.term},success:function(a){e(a)}})},delay:0})},brw_datepicker:function(){var o=D(".ovabrw_datetimepicker").data("firstday");"undefined"!=typeof brw_lang_general_calendar&&D.datetimepicker.setLocale(brw_lang_general_calendar);var i="";"undefined"!=typeof brw_disable_week_day&&(i=brw_disable_week_day.split(",").map(function(a){return parseInt(a,10)}));var r="";"undefined"!=typeof brw_time_to_book_general_calendar&&(r=brw_time_to_book_general_calendar.replace(/ /g,"").split(","));var c=30;"undefined"!=typeof brw_data_step&&(c=brw_data_step);var n="";"undefined"!=typeof brw_format_time&&(n=brw_format_time);var l="";switch(l="undefined"!=typeof brw_date_format?brw_date_format:l){case"d-m-Y":l="DD-MM-Y";break;case"m/d/Y":l="MM/DD/Y";break;case"Y/m/d":l="Y/MM/DD";break;case"Y-m-d":l="Y-MM-DD";break;default:l="DD-MM-Y"}var s=new Date;D.datetimepicker.setDateFormatter({parseDate:function(a,e){e=moment(a,e);return!!e.isValid()&&e.toDate()},formatDate:function(a,e){return moment(a).format(e)}}),D(window).width()<=1024&&D(".ovabrw_datetimepicker").datetimepicker({closeOnTimeSelect:!1}),D(".ovabrw_datetimepicker").each(function(){var t=[],a=[],e=D(this).attr("order_time");(a=e?JSON.parse(e):a).forEach(function(a,e){a.hasOwnProperty("rendering")&&a.start_v2&&t.push(a.start_v2)});e="true"==(e=D(this).attr("timepicker")),a=D(this).attr("default_hour"),a={scrollInput:!1,dayOfWeekStart:o,minDate:s,disabledWeekDays:i,format:l+" "+n,formatDate:l,formatTime:n,step:c,allowTimes:r,timepicker:!0,autoclose:!0,disabledDates:t,defaultTime:a};!D(this).hasClass("no_time_picker")&&0!=r.length&&0!=e||(a={scrollInput:!1,dayOfWeekStart:o,minDate:s,disabledWeekDays:i,format:l,formatDate:l,step:c,allowTimes:r,timepicker:!1,autoclose:!0,disabledDates:t,defaultTime:!1}),D(this).datetimepicker(a)}),D(".ovabrw_datetimepicker.ovabrw_start_date").on("click",function(){var a=D(this).attr("default_hour"),e="";"undefined"!=typeof brw_format_time&&(e=brw_format_time);var t="true"==(t=D(this).attr("timepicker")),r=D(this).attr("time_to_book"),r=w.ova_get_time_to_book_start(r),a={scrollInput:!1,dayOfWeekStart:o,minDate:s,disabledWeekDays:i,autoclose:!0,step:c,format:l+" "+e,formatDate:l,formatTime:e,defaultTime:a,allowTimes:r,timepicker:t};!D(this).hasClass("no_time_picker")&&0!=r.length&&0!=t||(a={scrollInput:!1,dayOfWeekStart:o,minDate:s,disabledWeekDays:i,autoclose:!0,step:c,format:l,formatDate:l,defaultTime:!1,allowTimes:r,timepicker:!1}),D(this).datetimepicker(a)}),D(".ovabrw_datetimepicker.ovabrw_end_date").on("click",function(){var a="true"==(a=D(this).attr("timepicker")),e="";"undefined"!=typeof brw_format_time&&(e=brw_format_time);var t=D(this).attr("time_to_book"),r=w.ova_get_time_to_book_end(t),n=D(this).attr("default_hour");!D(this).hasClass("no_time_picker")&&0!=r.length&&0!=a||(e="",n=a=!1);t=(t=D(this).closest("form").find(".ovabrw_start_date").val())||D(".ovabrw_start_date.ovabrw_datetimepicker").val(),n={scrollInput:!1,dayOfWeekStart:o,disabledWeekDays:i,autoclose:!0,step:c,minDate:t||!1,format:l+" "+e,formatDate:l,formatTime:e,defaultTime:n,allowTimes:r,timepicker:a};!D(this).hasClass("no_time_picker")&&0!=r.length&&0!=a||(n={scrollInput:!1,dayOfWeekStart:o,disabledWeekDays:i,autoclose:!0,step:c,minDate:t||!1,format:l,formatDate:l,defaultTime:!1,allowTimes:r,timepicker:!1}),D(this).datetimepicker(n)}),D(".ovabrw_datetimepicker.date_picker_period").each(function(){D(this).data("hour_default"),D(this).data("time_step");var a={scrollInput:!1,dayOfWeekStart:o,minDate:s,format:l,timepicker:!1};D(this).datetimepicker(a)}),D(".ovabrw_datetimepicker.no_time_picker").each(function(){D(this).datetimepicker({timepicker:!1})})},submit_button:function(){D(".ovabrw_btn_submit").on("click",function(a){var e=D(this).closest(".ovabrw_search").data("mesg_required"),t=!0;if(D(this).closest(".ovabrw_search").find(".content .wrap-error").empty(),D(this).closest(".form_ovabrw").find(".required").each(function(){D(this).val()||(t=!1,D(this).parent(".content").children(".wrap-error").append('<p class="error">'+e+"</p>"))}),!t)return a.preventDefault(),!1}),D(".ovabrw_booking_form button.submit").on("click",function(a){var e=!0;D(this).closest(".ovabrw_booking_form").find(".error_item").css("display","none"),D(this).closest(".ovabrw_booking_form").find(".required").each(function(){D(this).val()||(e=!1,D(this).parent(".rental_item").children(".error_item").css("display","block"),0<D(this).parent(".period_package").length&&D(this).parent(".period_package").parent(".rental_item").children(".error_item").css("display","block"))}),e||a.preventDefault()}),D(".request_booking button.submit").on("click",function(a){var e=!0;D(this).closest(".request_booking").find(".error_item").css("display","none"),D(this).closest(".request_booking").find(".required").each(function(){D(this).val()||(e=!1,D(this).parent(".rental_item").children(".error_item").css("display","block"),0<D(this).parent(".period_package").length&&D(this).parent(".period_package").parent(".rental_item").children(".error_item").css("display","block"))}),e||a.preventDefault()})},ova_collapsed:function(){D(".ovabrw-according").off().on("click",function(a){a.preventDefault(),D(this).siblings(".ovabrw_collapse_content").slideToggle()}),D(".ovabrw_open_popup").off().on("click",function(a){a.preventDefault(),D(this).siblings(".popup").css("display","block")}),D(".popup-close").on("click",function(a){a.preventDefault(),D(this).parent(".popup-inner").parent(".popup").css("display","none")}),D(".popup-close-2").on("click",function(a){a.preventDefault(),D(this).parent(".close_discount").parent(".popup-inner").parent(".popup").css("display","none")})},ova_startdate_perido_time:function(){D("body").on("change",".startdate_perido_time",function(){var e=D(this),a=e.val(),t=e.data("pid");e.closest("form").find('select[name="ovabrw_period_package_id"]').attr("disabled","disabled"),D.ajax({url:ajax_object.ajax_url,type:"POST",data:{action:"ovabrw_get_package_by_time",startdate:a,post_id:t},success:function(a){e.closest("form").find('select[name="ovabrw_period_package_id"] option ').remove();var t="",a=D.parseJSON(a);a&&D.each(a,function(a,e){t+='<option value="'+a+'">'+e+"</option>"}),t&&e.closest("form").find('select[name="ovabrw_period_package_id"] ').append(t),e.closest("form").find('select[name="ovabrw_period_package_id"] ').hasClass("select2-hidden-accessible")&&e.closest("form").find('select[name="ovabrw_period_package_id"] ').select2(),e.closest("form").find('select[name="ovabrw_period_package_id"] ').prop("disabled",!1)}})})},ova_ajax_show_total:function(){D("body").on("change",".booking_form",function(){w.ova_ajax_show_total_after_load()})},ova_ajax_show_total_after_load:function(){var a,e,t,r,n,o,i,c,l,s,_=[],d=[],p=D(".booking_form"),m=p.closest("form");0<m.length&&(m.find(".ajax_loading").addClass("active"),m.find('input[name="car_id"]').val()&&(o=m.find('input[name="car_id"]').val()),m.find('select[name="ovabrw_pickup_loc"]').val()&&(a=m.find('select[name="ovabrw_pickup_loc"]').val()),m.find('select[name="ovabrw_pickoff_loc"]').val()&&(e=m.find('select[name="ovabrw_pickoff_loc"]').val()),m.find('input[name="ovabrw_pickup_date"]').val()&&(t=m.find('input[name="ovabrw_pickup_date"]').val()),m.find('input[name="ovabrw_pickoff_date"]').val()&&(r=m.find('input[name="ovabrw_pickoff_date"]').val()),m.find('select[name="ovabrw_period_package_id"]').val()&&(i=m.find('select[name="ovabrw_period_package_id"]').val()),m.find('input[name="ovabrw_number_vehicle"]').val()&&(n=m.find('input[name="ovabrw_number_vehicle"]').val()),m.find('input[name="ova_type_deposit"]:checked').val()&&(c=m.find('input[name="ova_type_deposit"]:checked').val()),m.find(".ovabrw_resource input[type=checkbox]:checked").each(function(){_[D(this).data("resource_key")]=D(this).val()}),l=D.extend({},_),m.find("select[name='ovabrw_service[]']").each(function(){D(this).val()&&d.push(D(this).val())}),s=D.extend({},d),D.ajax({url:ajax_object.ajax_url,type:"POST",data:{action:"ovabrw_calculate_total",pickup_loc:a,dropoff_loc:e,pickup_date:t,package_id:i,dropoff_date:r,quantity:n,deposit:c,resources:JSON.stringify(l),services:JSON.stringify(s),id:o},success:function(a){var e=JSON.parse(a);0!=a&&(p.closest("form").find(".show_ajax_content").addClass("active"),p.closest("form").find(".show_total").html("").append(e.line_total),0<e.number_vehicle_available?(p.closest("form").find(".show_availables_vehicle").html("").append(e.number_vehicle_available),p.closest("form").find('input[name="ovabrw_number_vehicle"]').attr("max",e.number_vehicle_available)):(p.closest("form").find(".show_availables_vehicle").html("").append(0),p.closest("form").find('input[name="ovabrw_number_vehicle"]').attr("max",1))),m.find(".ajax_loading").removeClass("active")}}))},ova_search_map:function(){let d;function a(){function k(){var u,a=[],e=[];D(document).find(".data_product").each(function(){a.push(JSON.parse(JSON.stringify({title:D(this).attr("data-title_product"),link:D(this).attr("data-link_product"),price:D(this).attr("data-html_price"),average_rating:D(this).attr("data-average_rating"),number_comment:D(this).attr("data-number_comment"),thumbnail:D(this).attr("data-thumbnail_product"),lat:D(this).attr("data-map_lat_product"),lng:D(this).attr("data-map_lng_product")}))),e.push(JSON.parse(JSON.stringify({lat:parseFloat(D(this).attr("data-map_lat_product")),lng:parseFloat(D(this).attr("data-map_lng_product"))})))}),e=function(e){if(1==e.length)return e[0];var a=e.length;let t=0,r=0,n=0;for(let a=0;a<e.length;a++){var o=e[a].lat*Math.PI/180,i=e[a].lng*Math.PI/180,c=Math.cos(o)*Math.cos(i),l=Math.cos(o)*Math.sin(i),s=Math.sin(o);t+=c,r+=l,n+=s}return t/=a,r/=a,n/=a,i=Math.atan2(r,t),a=Math.sqrt(t*t+r*r),{lat:180*(o=Math.atan2(n,a))/Math.PI,lng:180*i/Math.PI}}(e),u=isNaN(e.lat)||isNaN(e.lng)?new google.maps.Map(document.getElementById("show_map"),{center:{lat:parseFloat(o),lng:parseFloat(i)},zoom:n,gestureHandling:"cooperative"}):new google.maps.Map(document.getElementById("show_map"),{center:{lat:parseFloat(e.lat),lng:parseFloat(e.lng)},zoom:n,gestureHandling:"cooperative"});var h=new google.maps.InfoWindow,f=new OverlappingMarkerSpiderfier(u,{markersWontMove:!0,markersWontHide:!0,basicFormatEvents:!0});a.map(function(a,e){var t=parseFloat(a.lat),r=parseFloat(a.lng),n=a.average_rating,o=Math.floor(n),i=5-Math.ceil(n),c=a.number_comment,l="";if(0<o)for(var s=1;s<=o;s++)l+='<i class="fa fa-star"></i>';if(o!=Math.ceil(n)&&(l+='<i class="fa fa-star-half-alt"></i>'),0<i)for(var _=1;_<=i;_++)l+='<i class="fa fa-star-o"></i>';var d="";0!=c&&(d+='<span class="number second_font">('+a.number_comment+")</span>");var p,m='<div class="data_product_map"><a href="'+a.link+'"><img style="max-width: 100%; width: 100%;" src="'+a.thumbnail+'" ><h2 class="title"><a href="'+a.link+'">'+a.title+"</a></h2>"+a.price+'<div class="product_ratting"><span class="star">'+(l=!n||0==n?"":l)+"</span> "+d+" </div></a></div>",r=new google.maps.LatLng(t,r);"icon"==v&&(p=new google.maps.Marker({position:r,icon:w})),google.maps.event.addListener(p,"spider_click",function(a){h.setContent(m),h.open(u,p)}),f.addMarker(p)});window.map=u,window.oms=f}function r(){var t=D(document).find(".wrap_search_map"),a=t.find('[name="ovabrw_name_product"]').val(),e=t.find('[name="cat"]').val(),r=t.find('[name="sort"]').val(),n=t.find('[name="radius"]').val(),o=t.find('[name="map_lat"]').val(),i=t.find('[name="map_lng"]').val(),c=t.find('[name="ovabrw_pickup_loc"]').val(),l=t.find('[name="ovabrw_dropoff_loc"]').val(),s=t.find('[name="ovabrw_pickup_date"]').val(),_=t.find('[name="ovabrw_pickoff_date"]').val(),d=t.find(".search_result").attr("data-type"),p=t.find(".search_result").attr("data-column"),m=t.find(".search_result").attr("data-order"),u=t.find(".search_result").attr("data-orderby"),h=t.find(".search_result").attr("data-per_page"),f=t.find(".ovabrw_pagination_ajax .current").attr("data-paged"),v=t.find('[name="ovabrw_attribute"]').val(),w=t.find('[name="ovabrw_attribute_value"]').val(),b=t.find('[name="ovabrw_tag_product"]').val(),g=t.find(".search_result");D(document).find(".wrap_search_map .wrap_load_more").show(),D(document).find(".wrap_search_map .ovabrw_product_archive").hide();var y={action:"ovabrw_search_map",name:a,cat:e,radius:n,map_lat:o,map_lng:i,pickup_loc:c,dropoff_loc:l,start_date:s,end_date:_,sort:r,type:d,column:p,order:m,orderby:u,per_page:h,paged:f,attribute:v,attr_value:w,tags:b,show_featured:M,radius_lenght:T},w=t.find('[name="data_taxonomy_custom"]').val();w&&(y.taxonomies=w,b=JSON.parse(w),D.each(b,function(a,e){y[a]=t.find('[name="'+a+'_name"]').val()})),D.ajax({url:ajax_object.ajax_url,type:"POST",data:y,success:function(a){var e;a&&(e=JSON.parse(a),a=D(e.result).fadeOut(300).fadeIn(500),g.html(a),D(document).find(".wrap_search_filter_title .results_found").html(e.results_found),D(document).find(".wrap_search_map .wrap_load_more").hide(),"undefined"!=typeof google&&0<D("#show_map").length&&k())}})}function a(a){var e=a.coords.latitude,a=a.coords.longitude;D('[name="map_lat"]').attr("value",e),D('[name="map_lng"]').attr("value",a);a={lat:parseFloat(e),lng:parseFloat(a)};(new google.maps.Geocoder).geocode({location:a},function(a,e){"OK"===e?a[0]?(D('.wrap_search_map [name="map_address"]').val(a[0].formatted_address),D(".wrap_search_map .wrap_search_radius").show()):window.alert("No results found"):window.alert("Geocoder failed due to: "+e)}),r()}function e(){D(window).width()<1024?D(document).find(".wrap_search_map #show_map").css({height:"100%",width:"100%","min-height":"600px"}):D(document).find(".wrap_search_map #show_map").css({height:D(window).height(),width:"100%"})}var n,o,i,v,w,M,T,t,c,l,s,_;"object"==typeof google&&"object"==typeof google.maps.places&&(clearInterval(d),n=parseInt(D(document).find(".wrap_search_map .wrap_search .search_result").attr("data-zoom")),o=parseFloat(D(document).find(".wrap_search_map .wrap_search .search_result").attr("data-lat")),i=parseFloat(D(document).find(".wrap_search_map .wrap_search .search_result").attr("data-lng")),v=D(document).find(".wrap_search_map .wrap_search .search_result").attr("data-marker_option"),w=D(document).find(".wrap_search_map .wrap_search .search_result").attr("data-marker_icon"),M=D(document).find(".wrap_search_map .wrap_search .search_result").attr("data-show_featured"),T=D(document).find(".wrap_search_map .wrap_search .search_result").attr("data-radius"),D(".wrap_search_map select").each(function(){var a;0<D(this).length&&(a=D(this).find('option[value=""]').text(),"function"==typeof D.fn.select2&&D(this).select2({placeholder:a,allowClear:!0}))}),0<D("#locate_me").length&&D("#locate_me").attr("title")&&D("#locate_me").tooltip(),0<D(".wrap_search_map .show_taxonomy").length&&("yes"==D(".wrap_search_map .show_taxonomy").attr("data-show_taxonomy")?D(".wrap_search_map .wrap_search_taxonomies").hide():D(".wrap_search_map .wrap_search_taxonomies").show()),D.fn.event_map=function(a){a=D.extend({lat:o,lng:i,zoom:n},a);var a=document.getElementById("pac-input"),t="";a?(t=new google.maps.places.Autocomplete(a),D('.wrap_search_map input[name="map_address').val()&&D(".wrap_search_map .wrap_search_radius").show()):D(".wrap_search_map .wrap_search_radius").hide();var e=[];D(".data_product").each(function(){e.push(JSON.parse(JSON.stringify({title:D(this).attr("data-title_product"),thumbnail:D(this).attr("data-thumbnail_product"),average_rating:D(this).attr("data-average_rating"),number_comment:D(this).attr("data-number_comment"),lat:D(this).attr("data-map_lat_product"),lng:D(this).attr("data-map_lng_product"),link:D(this).attr("data-link_product")})))}),"undefined"!=typeof google&&0<D("#show_map").length&&k(),""!==t&&t.addListener("place_changed",function(){var a,e=t.getPlace();e.geometry&&("undefined"!=typeof google&&0<D("#show_map").length&&new google.maps.Map(document.getElementById("show_map"),{center:{lat:parseFloat(e.geometry.location.lat()),lng:parseFloat(e.geometry.location.lng())},zoom:n,gestureHandling:"cooperative"}),D("#map_name").val(e.name),D("#map_address").val(e.formatted_address),D("#map_lat").val(e.geometry.location.lat()),D("#map_lng").val(e.geometry.location.lng()),(a={}).lat=e.geometry.location.lat(),a.lng=e.geometry.location.lng(),D(document).find(".wrap_search_map .wrap_load_more").show(),D(document).find(".wrap_search_map .ovabrw_product_archive").hide(),r())})},"undefined"!=typeof google&&0<D('.wrap_search_map input[name="map_address"]').length?(s=parseFloat(D("input#map_lat").val()?D("input#map_lat").val():o),t=parseFloat(D("input#map_lng").val()?D("input#map_lng").val():i),D("#show_map").css("height",D(window).height()),D("#show_map").event_map({lat:s,lng:t,zoom:n}),D('.wrap_search_map input[name="map_address"]').val()||(D("input#map_lat").val(""),D("input#map_lng").val("")),r()):0<D(".wrap_search_map").length&&r(),D('.wrap_search_map [name="ovabrw_name_product"]').on("change",function(a){r()}),D('.wrap_search_map select[name="cat"]').length&&(c=D(".wrap_search_map"),(l=D('.wrap_search_map select[name="cat"]').val())&&p(c,l)),D('.wrap_search_map [name="cat"]').on("change",function(a){var e=D(".wrap_search_map .show_taxonomy").attr("data-show_taxonomy"),t=D('.wrap_search_map [name="data_taxonomy_custom"]').val();"yes"==e?(D(".wrap_search_map .wrap_search_taxonomies").hide(),t&&(t=JSON.parse(t),D.each(t,function(a,e){D('.wrap_search_map select[name="'+a+'_name"]').val()&&D(".wrap_search_map ."+a).show()}))):D(".wrap_search_map .wrap_search_taxonomies").show(),p(D(".wrap_search_map"),D(this).val()),r()}),D('.wrap_search_map [name="ovabrw_pickup_loc"], .wrap_search_map [name="ovabrw_dropoff_loc"]').on("change",function(a){r()}),D('.wrap_search_map [name="ovabrw_pickup_date"], .wrap_search_map [name="ovabrw_pickoff_date"]').on("change",function(a){r()}),D('.wrap_search_map [name="ovabrw_attribute"], .wrap_search_map [name="ovabrw_attribute_value"]').on("change",function(a){r()}),D('.wrap_search_map [name="ovabrw_tag_product"]').on("change",function(a){r()}),D('.wrap_search_map input[name="map_address"]').on("change",function(a){D(this).val()?D(".wrap_search_map .wrap_search_radius").show():(D(".wrap_search_map .wrap_search_radius").hide(),D('.wrap_search_map input[name="map_address"]').val()||(D("input#map_lat").val(""),D("input#map_lng").val(""))),r()}),(s=D('.wrap_search_map [name="data_taxonomy_custom"]').val())&&(_=JSON.parse(s),D.each(_,function(a,e){D('.wrap_search_map select[name="'+a+'_name"]').val()&&D(".wrap_search_map ."+a).show(),D('.wrap_search_map [name="'+a+'_name"]').on("change",function(a){r()})})),D('.wrap_search_map [name="sort"]').on("change",function(a){r()}),l=c=t=0,s=parseInt(D(document).find(".wrap_search_map .wrap_search_radius").attr("data-map_range_radius")),void 0!==(_=parseInt(D(document).find(".wrap_search_map .wrap_search_radius").attr("data-map_range_radius_min")))&&(t=_),void 0!==(_=parseInt(D(document).find(".wrap_search_map .wrap_search_radius").attr("data-map_range_radius_max")))&&(c=_),void 0!==s&&(l=s),0<D("#wrap_pointer").length&&D("#wrap_pointer").slider({min:t,max:c,step:1,value:l,change:function(a,e){D(this).parents(".wrap_search_map").find('[name="radius"]').val(e.value),D(this).parents(".wrap_search_map").find(".result_radius").html(e.value+T),r()}}),D(document).on("click",".wrap_search_map .ovabrw_pagination_ajax .page-numbers",function(a){a.preventDefault();a=D(this);D(".wrap_search_map .ovabrw_pagination_ajax .current").attr("data-paged")!=a.attr("data-paged")&&(D(window).scrollTop(0),D(".wrap_search_map .ovabrw_pagination_ajax .page-numbers").removeClass("current"),a.addClass("current"),r())}),D(document).on("click",".wrap_search_map .locate_me",function(){navigator.geolocation?navigator.geolocation.getCurrentPosition(a):x.innerHTML="Geolocation is not supported by this browser."}),D(".wrap_search_map .toggle_filters").on("click",function(){D(this).parents(".wrap_search_map").find(".form_search_map").slideToggle(300),D(this).find(".icon_down").toggle(300),D(this).find(".icon_up").toggle(300),D(this).toggleClass("active")}),D(".elementor_search_map .toggle_wrap span").on("click",function(){var a=D(this).attr("data-value");D(".wrap_search_map .wrap_search, .wrap_search_map .wrap_map").hide(),D("."+a).show(),D(".elementor_search_map .toggle_wrap span").removeClass("active"),D(this).addClass("active")}),e(),D(window).resize(function(){1024<=D(window).width()&&(D(document).find(".wrap_search_map .wrap_search").show(),D(document).find(".wrap_search_map .wrap_map").show()),e()}))}"undefined"!=typeof google&&"object"!=typeof google.maps.places?d=setInterval(a,1e3):a()}};function p(r,a){"undefined"!=typeof ova_brw_search_show_tax_depend_cat&&r.length&&("yes"==ova_brw_search_show_tax_depend_cat?r.find(".s_field_cus_tax").hide():r.find(".s_field_cus_tax").show()),a&&D.ajax({url:ajax_object.ajax_url,type:"POST",data:{action:"ovabrw_get_tax_in_cat",cat_val:a},success:function(a){if(a){var e=a.split(",");if(e.length)for(var t=0;t<e.length;t++)0<r.find("."+e[t]).length&&r.find("."+e[t]).show()}}})}D(document).ready(function(){w.init()}),document.addEventListener("DOMContentLoaded",function(){var p="";"undefined"!=typeof brw_date_format&&(p=brw_date_format),D(".wrap_calendar").each(function(a){D(this).data("id");var e,t,r,n,c,o,l,s,m,u,h,f,i,_,d,v=D(this).find(".ovabrw__product_calendar")[0];null!==v&&(e=v.getAttribute("data-nav"),t=v.getAttribute("data-default_view"),r=v.getAttribute("data-first-day")||0,"month"==t&&(t="dayGridMonth"),n=v.getAttribute("data-lang").replace(/\s/g,""),c=v.getAttribute("data-define_day"),o=parseInt(v.getAttribute("data_event_number")),l=v.getAttribute("default_hour_start"),s=v.getAttribute("time_to_book_start"),s=w.ova_get_time_to_book_start(s),d=v.getAttribute("price_calendar"),m=JSON.parse(d),i=v.getAttribute("data-special-time"),u=JSON.parse(i),h=v.getAttribute("data-background-day"),d=v.getAttribute("data-disable_week_day"),f="",d&&(f=JSON.parse(d)),i="",_=[],void 0!==(i=(d=v.getAttribute("order_time"))&&0<d.length?JSON.parse(d):i)&&0<i.length&&i.forEach(function(a,e){a.hasOwnProperty("rendering")&&_.push(a.start)}),new FullCalendar.Calendar(v,{editable:!1,events:i,firstDay:r,height:"100%",headerToolbar:{left:"prev,next,today,"+e,right:"title"},eventDisplay:"none",initialView:t,locale:n,dayMaxEventRows:!0,views:{dayGrid:{dayMaxEventRows:o},timeGrid:{dayMaxEventRows:o},week:{dayMaxEventRows:o},day:{dayMaxEventRows:o}},dayCellDidMount:function(r){var a,n=new Date(r.date),o=Date.UTC(n.getFullYear(),n.getMonth(),n.getDate())/1e3;if(""!=m){if("day"==(a=m[0].type_price)){var e=m[1].ovabrw_daily_monday,i=m[1].ovabrw_daily_tuesday,c=m[1].ovabrw_daily_wednesday,l=m[1].ovabrw_daily_thursday,s=m[1].ovabrw_daily_friday,_=m[1].ovabrw_daily_saturday,d=m[1].ovabrw_daily_sunday;switch(n.getDay()){case 0:{f&&D.each(f,function(a,e){e==n.getDay()&&(r.el.children[0].className=r.el.children[0].className+" unavailable_date",D(".unavailable_date").css("background-color",h))});let t=r.el.querySelectorAll(".fc-daygrid-day-bg")[0];if(t)return u?(t.innerHTML=d,D.each(u,function(a,e){o>=e[0]&&o<=e[1]&&(t.innerHTML=a)})):t.innerHTML=d,r;break}case 1:{f&&D.each(f,function(a,e){e==n.getDay()&&(r.el.children[0].className=r.el.children[0].className+" unavailable_date",D(".unavailable_date").css("background-color",h))});let t=r.el.querySelectorAll(".fc-daygrid-day-bg")[0];if(t)return u?(t.innerHTML=e,D.each(u,function(a,e){o>=e[0]&&o<=e[1]&&(t.innerHTML=a)})):t.innerHTML=e,r;break}case 2:{f&&D.each(f,function(a,e){e==n.getDay()&&(r.el.children[0].className=r.el.children[0].className+" unavailable_date",D(".unavailable_date").css("background-color",h))});let t=r.el.querySelectorAll(".fc-daygrid-day-bg")[0];if(t)return u?(t.innerHTML=i,D.each(u,function(a,e){o>=e[0]&&o<=e[1]&&(t.innerHTML=a)})):t.innerHTML=i,r;break}case 3:{f&&D.each(f,function(a,e){e==n.getDay()&&(r.el.children[0].className=r.el.children[0].className+" unavailable_date",D(".unavailable_date").css("background-color",h))});let t=r.el.querySelectorAll(".fc-daygrid-day-bg")[0];if(t)return u?(t.innerHTML=c,D.each(u,function(a,e){o>=e[0]&&o<=e[1]&&(t.innerHTML=a)})):t.innerHTML=c,r;break}case 4:{f&&D.each(f,function(a,e){e==n.getDay()&&(r.el.children[0].className=r.el.children[0].className+" unavailable_date",D(".unavailable_date").css("background-color",h))});let t=r.el.querySelectorAll(".fc-daygrid-day-bg")[0];if(t)return u?(t.innerHTML=l,D.each(u,function(a,e){o>=e[0]&&o<=e[1]&&(t.innerHTML=a)})):t.innerHTML=l,r;break}case 5:{f&&D.each(f,function(a,e){e==n.getDay()&&(r.el.children[0].className=r.el.children[0].className+" unavailable_date",D(".unavailable_date").css("background-color",h))});let t=r.el.querySelectorAll(".fc-daygrid-day-bg")[0];if(t)return u?(t.innerHTML=s,D.each(u,function(a,e){if(o>=e[0]&&o<=e[1])return t.innerHTML=a,r})):t.innerHTML=s,r;break}case 6:{f&&D.each(f,function(a,e){e==n.getDay()&&(r.el.children[0].className=r.el.children[0].className+" unavailable_date",D(".unavailable_date").css("background-color",h))});let t=r.el.querySelectorAll(".fc-daygrid-day-bg")[0];if(t)return u?(t.innerHTML=_,D.each(u,function(a,e){o>=e[0]&&o<=e[1]&&(t.innerHTML=a)})):t.innerHTML=_,r;break}}}else if("hour"==a){f&&D.each(f,function(a,e){e==n.getDay()&&(r.el.children[0].className=r.el.children[0].className+" unavailable_date",D(".unavailable_date").css("background-color",h))});var p=m[1].ovabrw_price_hour;let t=r.el.querySelectorAll(".fc-daygrid-day-bg")[0];if(t)return u?(t.innerHTML=p,D.each(u,function(a,e){o>=e[0]&&o<=e[1]&&(t.innerHTML=a)})):t.innerHTML=p,r}else if("mixed"==a){e=m[1].ovabrw_daily_monday,i=m[1].ovabrw_daily_tuesday,c=m[1].ovabrw_daily_wednesday,l=m[1].ovabrw_daily_thursday,s=m[1].ovabrw_daily_friday,_=m[1].ovabrw_daily_saturday,d=m[1].ovabrw_daily_sunday;switch(n.getDay()){case 0:{f&&D.each(f,function(a,e){e==n.getDay()&&(r.el.children[0].className=r.el.children[0].className+" unavailable_date",D(".unavailable_date").css("background-color",h))});let t=r.el.querySelectorAll(".fc-daygrid-day-bg")[0];if(t)return u?(t.innerHTML=d,D.each(u,function(a,e){o>=e[0]&&o<=e[1]&&(t.innerHTML=a)})):t.innerHTML=d,r;break}case 1:{f&&D.each(f,function(a,e){e==n.getDay()&&(r.el.children[0].className=r.el.children[0].className+" unavailable_date",D(".unavailable_date").css("background-color",h))});let t=r.el.querySelectorAll(".fc-daygrid-day-bg")[0];if(t)return u?(t.innerHTML=e,D.each(u,function(a,e){o>=e[0]&&o<=e[1]&&(t.innerHTML=a)})):t.innerHTML=e,r;break}case 2:{f&&D.each(f,function(a,e){e==n.getDay()&&(r.el.children[0].className=r.el.children[0].className+" unavailable_date",D(".unavailable_date").css("background-color",h))});let t=r.el.querySelectorAll(".fc-daygrid-day-bg")[0];if(t)return u?(t.innerHTML=i,D.each(u,function(a,e){o>=e[0]&&o<=e[1]&&(t.innerHTML=a)})):t.innerHTML=i,r;break}case 3:{f&&D.each(f,function(a,e){e==n.getDay()&&(r.el.children[0].className=r.el.children[0].className+" unavailable_date",D(".unavailable_date").css("background-color",h))});let t=r.el.querySelectorAll(".fc-daygrid-day-bg")[0];if(t)return u?(t.innerHTML=c,D.each(u,function(a,e){o>=e[0]&&o<=e[1]&&(t.innerHTML=a)})):t.innerHTML=c,r;break}case 4:{f&&D.each(f,function(a,e){e==n.getDay()&&(r.el.children[0].className=r.el.children[0].className+" unavailable_date",D(".unavailable_date").css("background-color",h))});let t=r.el.querySelectorAll(".fc-daygrid-day-bg")[0];if(t)return u?(t.innerHTML=l,D.each(u,function(a,e){o>=e[0]&&o<=e[1]&&(t.innerHTML=a)})):t.innerHTML=l,r;break}case 5:{f&&D.each(f,function(a,e){e==n.getDay()&&(r.el.children[0].className=r.el.children[0].className+" unavailable_date",D(".unavailable_date").css("background-color",h))});let t=r.el.querySelectorAll(".fc-daygrid-day-bg")[0];if(t)return u?(t.innerHTML=s,D.each(u,function(a,e){if(o>=e[0]&&o<=e[1])return t.innerHTML=a,r})):t.innerHTML=s,r;break}case 6:{f&&D.each(f,function(a,e){e==n.getDay()&&(r.el.children[0].className=r.el.children[0].className+" unavailable_date",D(".unavailable_date").css("background-color",h))});let t=r.el.querySelectorAll(".fc-daygrid-day-bg")[0];if(t)return u?(t.innerHTML=_,D.each(u,function(a,e){o>=e[0]&&o<=e[1]&&(t.innerHTML=a)})):t.innerHTML=_,r;break}}}}else if("period_time"==(a=v.getAttribute("type_price"))||"transportation"==a)return f&&D.each(f,function(a,e){e==n.getDay()&&(r.el.children[0].className=r.el.children[0].className+" unavailable_date",D(".unavailable_date").css("background-color",h))}),r},dateClick:function(a){var t=new Date(a.date),e=t.getFullYear(),r=(r=t.getMonth()+1)<10?"0"+r:r,n=(n=t.getDate())<10?"0"+n:n,o=new Date,i=new Date(e,r-1,n,24,0),a=e+"-"+r+"-"+n;("hotel"==c||D('.rental_item input[name="ovabrw_pickup_date"]').hasClass("no_time_picker")||s.length<=1)&&(l=""),f&&D.each(f,function(a,e){e==t.getDay()&&(alert(notifi_disable_day),i=0)}),!_.includes(a)&&o<=i&&(o=(o=(o=(o=p).replace("Y",e)).replace("m",r)).replace("d",n),D('input[name="ovabrw_pickup_date"]').val(o+" "+l),document.getElementById("ovabrw_booking_form")&&document.getElementById("ovabrw_booking_form").scrollIntoView({behavior:"smooth"}))}}).render())})})}(jQuery);
(function($){
"use strict";
if(typeof order_time!='undefined'){
document.addEventListener('DOMContentLoaded', function(){
$('.ovabrw__product_calendar').each(function(e){
var id=$(this).data('id');
var srcCalendarEl=document.getElementById(id);
if(srcCalendarEl===null) return;
var nav=srcCalendarEl.getAttribute('data-nav');
var default_view=srcCalendarEl.getAttribute('data-default_view');
var cal_lang=srcCalendarEl.getAttribute('data-lang').replace(/\s/g, '');
var data_event_number=parseInt(srcCalendarEl.getAttribute('data_event_number'));
var events=JSON.parse(order_time);
var srcCalendar=new FullCalendar.Calendar(srcCalendarEl, {
editable: true,
events: events,
height: '100%',
headerToolbar: {
left: 'prev,next,today,' + nav,
right: 'title',
},
eventDisplay: 'none',
initialView: default_view,
locale: cal_lang,
dayMaxEventRows: true,
views: {
dayGrid: {
dayMaxEventRows: data_event_number
},
timeGrid: {
dayMaxEventRows: data_event_number
},
week: {
dayMaxEventRows: data_event_number
},
day: {
dayMaxEventRows: data_event_number
}},
});
srcCalendar.render();
});
});
}}) (jQuery);
!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","../version","../keycode"],e):e(jQuery)}(function(V){"use strict";var n;function e(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:"",selectMonthLabel:"Select month",selectYearLabel:"Select year"},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,onUpdateDatepicker:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},V.extend(this._defaults,this.regional[""]),this.regional.en=V.extend(!0,{},this.regional[""]),this.regional["en-US"]=V.extend(!0,{},this.regional.en),this.dpDiv=a(V("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function a(e){var t="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",t,function(){V(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&V(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&V(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",t,d)}function d(){V.datepicker._isDisabledDatepicker((n.inline?n.dpDiv.parent():n.input)[0])||(V(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),V(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&V(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&V(this).addClass("ui-datepicker-next-hover"))}function c(e,t){for(var a in V.extend(e,t),t)null==t[a]&&(e[a]=t[a])}return V.extend(V.ui,{datepicker:{version:"1.13.3"}}),V.extend(e.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return c(this._defaults,e||{}),this},_attachDatepicker:function(e,t){var a,i=e.nodeName.toLowerCase(),s="div"===i||"span"===i;e.id||(this.uuid+=1,e.id="dp"+this.uuid),(a=this._newInst(V(e),s)).settings=V.extend({},t||{}),"input"===i?this._connectDatepicker(e,a):s&&this._inlineDatepicker(e,a)},_newInst:function(e,t){return{id:e[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1"),input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:t,dpDiv:t?a(V("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,t){var a=V(e);t.append=V([]),t.trigger=V([]),a.hasClass(this.markerClassName)||(this._attachments(a,t),a.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(t),V.data(e,"datepicker",t),t.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,t){var a,i=this._get(t,"appendText"),s=this._get(t,"isRTL");t.append&&t.append.remove(),i&&(t.append=V("<span>").addClass(this._appendClass).text(i),e[s?"before":"after"](t.append)),e.off("focus",this._showDatepicker),t.trigger&&t.trigger.remove(),"focus"!==(i=this._get(t,"showOn"))&&"both"!==i||e.on("focus",this._showDatepicker),"button"!==i&&"both"!==i||(i=this._get(t,"buttonText"),a=this._get(t,"buttonImage"),this._get(t,"buttonImageOnly")?t.trigger=V("<img>").addClass(this._triggerClass).attr({src:a,alt:i,title:i}):(t.trigger=V("<button type='button'>").addClass(this._triggerClass),a?t.trigger.html(V("<img>").attr({src:a,alt:i,title:i})):t.trigger.text(i)),e[s?"before":"after"](t.trigger),t.trigger.on("click",function(){return V.datepicker._datepickerShowing&&V.datepicker._lastInput===e[0]?V.datepicker._hideDatepicker():(V.datepicker._datepickerShowing&&V.datepicker._lastInput!==e[0]&&V.datepicker._hideDatepicker(),V.datepicker._showDatepicker(e[0])),!1}))},_autoSize:function(e){var t,a,i,s,r,n;this._get(e,"autoSize")&&!e.inline&&(r=new Date(2009,11,20),(n=this._get(e,"dateFormat")).match(/[DM]/)&&(r.setMonth((t=function(e){for(s=i=a=0;s<e.length;s++)e[s].length>a&&(a=e[s].length,i=s);return i})(this._get(e,n.match(/MM/)?"monthNames":"monthNamesShort"))),r.setDate(t(this._get(e,n.match(/DD/)?"dayNames":"dayNamesShort"))+20-r.getDay())),e.input.attr("size",this._formatDate(e,r).length))},_inlineDatepicker:function(e,t){var a=V(e);a.hasClass(this.markerClassName)||(a.addClass(this.markerClassName).append(t.dpDiv),V.data(e,"datepicker",t),this._setDate(t,this._getDefaultDate(t),!0),this._updateDatepicker(t),this._updateAlternate(t),t.settings.disabled&&this._disableDatepicker(e),t.dpDiv.css("display","block"))},_dialogDatepicker:function(e,t,a,i,s){var r,n=this._dialogInst;return n||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=V("<input type='text' id='"+r+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),V("body").append(this._dialogInput),(n=this._dialogInst=this._newInst(this._dialogInput,!1)).settings={},V.data(this._dialogInput[0],"datepicker",n)),c(n.settings,i||{}),t=t&&t.constructor===Date?this._formatDate(n,t):t,this._dialogInput.val(t),this._pos=s?s.length?s:[s.pageX,s.pageY]:null,this._pos||(r=document.documentElement.clientWidth,i=document.documentElement.clientHeight,t=document.documentElement.scrollLeft||document.body.scrollLeft,s=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[r/2-100+t,i/2-150+s]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),n.settings.onSelect=a,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),V.blockUI&&V.blockUI(this.dpDiv),V.data(this._dialogInput[0],"datepicker",n),this},_destroyDatepicker:function(e){var t,a=V(e),i=V.data(e,"datepicker");a.hasClass(this.markerClassName)&&(t=e.nodeName.toLowerCase(),V.removeData(e,"datepicker"),"input"===t?(i.append.remove(),i.trigger.remove(),a.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):"div"!==t&&"span"!==t||a.removeClass(this.markerClassName).empty(),n===i)&&(n=null,this._curInst=null)},_enableDatepicker:function(t){var e,a=V(t),i=V.data(t,"datepicker");a.hasClass(this.markerClassName)&&("input"===(e=t.nodeName.toLowerCase())?(t.disabled=!1,i.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):"div"!==e&&"span"!==e||((i=a.children("."+this._inlineClass)).children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=V.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var e,a=V(t),i=V.data(t,"datepicker");a.hasClass(this.markerClassName)&&("input"===(e=t.nodeName.toLowerCase())?(t.disabled=!0,i.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):"div"!==e&&"span"!==e||((i=a.children("."+this._inlineClass)).children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=V.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(e)for(var t=0;t<this._disabledInputs.length;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(e){try{return V.data(e,"datepicker")}catch(e){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,t,a){var i,s,r=this._getInst(e);if(2===arguments.length&&"string"==typeof t)return"defaults"===t?V.extend({},V.datepicker._defaults):r?"all"===t?V.extend({},r.settings):this._get(r,t):null;i=t||{},"string"==typeof t&&((i={})[t]=a),r&&(this._curInst===r&&this._hideDatepicker(),t=this._getDateDatepicker(e,!0),a=this._getMinMaxDate(r,"min"),s=this._getMinMaxDate(r,"max"),c(r.settings,i),null!==a&&void 0!==i.dateFormat&&void 0===i.minDate&&(r.settings.minDate=this._formatDate(r,a)),null!==s&&void 0!==i.dateFormat&&void 0===i.maxDate&&(r.settings.maxDate=this._formatDate(r,s)),"disabled"in i&&(i.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(V(e),r),this._autoSize(r),this._setDate(r,t),this._updateAlternate(r),this._updateDatepicker(r))},_changeDatepicker:function(e,t,a){this._optionDatepicker(e,t,a)},_refreshDatepicker:function(e){e=this._getInst(e);e&&this._updateDatepicker(e)},_setDateDatepicker:function(e,t){e=this._getInst(e);e&&(this._setDate(e,t),this._updateDatepicker(e),this._updateAlternate(e))},_getDateDatepicker:function(e,t){e=this._getInst(e);return e&&!e.inline&&this._setDateFromField(e,t),e?this._getDate(e):null},_doKeyDown:function(e){var t,a,i=V.datepicker._getInst(e.target),s=!0,r=i.dpDiv.is(".ui-datepicker-rtl");if(i._keyEvent=!0,V.datepicker._datepickerShowing)switch(e.keyCode){case 9:V.datepicker._hideDatepicker(),s=!1;break;case 13:return(a=V("td."+V.datepicker._dayOverClass+":not(."+V.datepicker._currentClass+")",i.dpDiv))[0]&&V.datepicker._selectDay(e.target,i.selectedMonth,i.selectedYear,a[0]),(a=V.datepicker._get(i,"onSelect"))?(t=V.datepicker._formatDate(i),a.apply(i.input?i.input[0]:null,[t,i])):V.datepicker._hideDatepicker(),!1;case 27:V.datepicker._hideDatepicker();break;case 33:V.datepicker._adjustDate(e.target,e.ctrlKey?-V.datepicker._get(i,"stepBigMonths"):-V.datepicker._get(i,"stepMonths"),"M");break;case 34:V.datepicker._adjustDate(e.target,e.ctrlKey?+V.datepicker._get(i,"stepBigMonths"):+V.datepicker._get(i,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&V.datepicker._clearDate(e.target),s=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&V.datepicker._gotoToday(e.target),s=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&V.datepicker._adjustDate(e.target,r?1:-1,"D"),s=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&V.datepicker._adjustDate(e.target,e.ctrlKey?-V.datepicker._get(i,"stepBigMonths"):-V.datepicker._get(i,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&V.datepicker._adjustDate(e.target,-7,"D"),s=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&V.datepicker._adjustDate(e.target,r?-1:1,"D"),s=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&V.datepicker._adjustDate(e.target,e.ctrlKey?+V.datepicker._get(i,"stepBigMonths"):+V.datepicker._get(i,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&V.datepicker._adjustDate(e.target,7,"D"),s=e.ctrlKey||e.metaKey;break;default:s=!1}else 36===e.keyCode&&e.ctrlKey?V.datepicker._showDatepicker(this):s=!1;s&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var t,a=V.datepicker._getInst(e.target);if(V.datepicker._get(a,"constrainInput"))return a=V.datepicker._possibleChars(V.datepicker._get(a,"dateFormat")),t=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||t<" "||!a||-1<a.indexOf(t)},_doKeyUp:function(e){e=V.datepicker._getInst(e.target);if(e.input.val()!==e.lastVal)try{V.datepicker.parseDate(V.datepicker._get(e,"dateFormat"),e.input?e.input.val():null,V.datepicker._getFormatConfig(e))&&(V.datepicker._setDateFromField(e),V.datepicker._updateAlternate(e),V.datepicker._updateDatepicker(e))}catch(e){}return!0},_showDatepicker:function(e){var t,a,i,s;"input"!==(e=e.target||e).nodeName.toLowerCase()&&(e=V("input",e.parentNode)[0]),V.datepicker._isDisabledDatepicker(e)||V.datepicker._lastInput===e||(s=V.datepicker._getInst(e),V.datepicker._curInst&&V.datepicker._curInst!==s&&(V.datepicker._curInst.dpDiv.stop(!0,!0),s)&&V.datepicker._datepickerShowing&&V.datepicker._hideDatepicker(V.datepicker._curInst.input[0]),!1===(a=(a=V.datepicker._get(s,"beforeShow"))?a.apply(e,[e,s]):{}))||(c(s.settings,a),s.lastVal=null,V.datepicker._lastInput=e,V.datepicker._setDateFromField(s),V.datepicker._inDialog&&(e.value=""),V.datepicker._pos||(V.datepicker._pos=V.datepicker._findPos(e),V.datepicker._pos[1]+=e.offsetHeight),t=!1,V(e).parents().each(function(){return!(t|="fixed"===V(this).css("position"))}),a={left:V.datepicker._pos[0],top:V.datepicker._pos[1]},V.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),V.datepicker._updateDatepicker(s),a=V.datepicker._checkOffset(s,a,t),s.dpDiv.css({position:V.datepicker._inDialog&&V.blockUI?"static":t?"fixed":"absolute",display:"none",left:a.left+"px",top:a.top+"px"}),s.inline)||(a=V.datepicker._get(s,"showAnim"),i=V.datepicker._get(s,"duration"),s.dpDiv.css("z-index",function(e){for(var t;e.length&&e[0]!==document;){if(("absolute"===(t=e.css("position"))||"relative"===t||"fixed"===t)&&(t=parseInt(e.css("zIndex"),10),!isNaN(t))&&0!==t)return t;e=e.parent()}return 0}(V(e))+1),V.datepicker._datepickerShowing=!0,V.effects&&V.effects.effect[a]?s.dpDiv.show(a,V.datepicker._get(s,"showOptions"),i):s.dpDiv[a||"show"](a?i:null),V.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),V.datepicker._curInst=s)},_updateDatepicker:function(e){this.maxRows=4,(n=e).dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var t,a=this._getNumberOfMonths(e),i=a[1],s=e.dpDiv.find("."+this._dayOverClass+" a"),r=V.datepicker._get(e,"onUpdateDatepicker");0<s.length&&d.apply(s.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),1<i&&e.dpDiv.addClass("ui-datepicker-multi-"+i).css("width",17*i+"em"),e.dpDiv[(1!==a[0]||1!==a[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===V.datepicker._curInst&&V.datepicker._datepickerShowing&&V.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(t=e.yearshtml,setTimeout(function(){t===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year").first().replaceWith(e.yearshtml),t=e.yearshtml=null},0)),r&&r.apply(e.input?e.input[0]:null,[e])},_shouldFocusInput:function(e){return e.input&&e.input.is(":visible")&&!e.input.is(":disabled")&&!e.input.is(":focus")},_checkOffset:function(e,t,a){var i=e.dpDiv.outerWidth(),s=e.dpDiv.outerHeight(),r=e.input?e.input.outerWidth():0,n=e.input?e.input.outerHeight():0,d=document.documentElement.clientWidth+(a?0:V(document).scrollLeft()),c=document.documentElement.clientHeight+(a?0:V(document).scrollTop());return t.left-=this._get(e,"isRTL")?i-r:0,t.left-=a&&t.left===e.input.offset().left?V(document).scrollLeft():0,t.top-=a&&t.top===e.input.offset().top+n?V(document).scrollTop():0,t.left-=Math.min(t.left,d<t.left+i&&i<d?Math.abs(t.left+i-d):0),t.top-=Math.min(t.top,c<t.top+s&&s<c?Math.abs(s+n):0),t},_findPos:function(e){for(var t=this._getInst(e),a=this._get(t,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||V.expr.pseudos.hidden(e));)e=e[a?"previousSibling":"nextSibling"];return[(t=V(e).offset()).left,t.top]},_hideDatepicker:function(e){var t,a,i=this._curInst;!i||e&&i!==V.data(e,"datepicker")||this._datepickerShowing&&(e=this._get(i,"showAnim"),a=this._get(i,"duration"),t=function(){V.datepicker._tidyDialog(i)},V.effects&&(V.effects.effect[e]||V.effects[e])?i.dpDiv.hide(e,V.datepicker._get(i,"showOptions"),a,t):i.dpDiv["slideDown"===e?"slideUp":"fadeIn"===e?"fadeOut":"hide"](e?a:null,t),e||t(),this._datepickerShowing=!1,(a=this._get(i,"onClose"))&&a.apply(i.input?i.input[0]:null,[i.input?i.input.val():"",i]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),V.blockUI)&&(V.unblockUI(),V("body").append(this.dpDiv)),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){var t;V.datepicker._curInst&&(e=V(e.target),t=V.datepicker._getInst(e[0]),!(e[0].id===V.datepicker._mainDivId||0!==e.parents("#"+V.datepicker._mainDivId).length||e.hasClass(V.datepicker.markerClassName)||e.closest("."+V.datepicker._triggerClass).length||!V.datepicker._datepickerShowing||V.datepicker._inDialog&&V.blockUI)||e.hasClass(V.datepicker.markerClassName)&&V.datepicker._curInst!==t)&&V.datepicker._hideDatepicker()},_adjustDate:function(e,t,a){var e=V(e),i=this._getInst(e[0]);this._isDisabledDatepicker(e[0])||(this._adjustInstDate(i,t,a),this._updateDatepicker(i))},_gotoToday:function(e){var t,e=V(e),a=this._getInst(e[0]);this._get(a,"gotoCurrent")&&a.currentDay?(a.selectedDay=a.currentDay,a.drawMonth=a.selectedMonth=a.currentMonth,a.drawYear=a.selectedYear=a.currentYear):(t=new Date,a.selectedDay=t.getDate(),a.drawMonth=a.selectedMonth=t.getMonth(),a.drawYear=a.selectedYear=t.getFullYear()),this._notifyChange(a),this._adjustDate(e)},_selectMonthYear:function(e,t,a){var e=V(e),i=this._getInst(e[0]);i["selected"+("M"===a?"Month":"Year")]=i["draw"+("M"===a?"Month":"Year")]=parseInt(t.options[t.selectedIndex].value,10),this._notifyChange(i),this._adjustDate(e)},_selectDay:function(e,t,a,i){var s=V(e);V(i).hasClass(this._unselectableClass)||this._isDisabledDatepicker(s[0])||((s=this._getInst(s[0])).selectedDay=s.currentDay=parseInt(V("a",i).attr("data-date")),s.selectedMonth=s.currentMonth=t,s.selectedYear=s.currentYear=a,this._selectDate(e,this._formatDate(s,s.currentDay,s.currentMonth,s.currentYear)))},_clearDate:function(e){e=V(e);this._selectDate(e,"")},_selectDate:function(e,t){var a,e=V(e),e=this._getInst(e[0]);t=null!=t?t:this._formatDate(e),e.input&&e.input.val(t),this._updateAlternate(e),(a=this._get(e,"onSelect"))?a.apply(e.input?e.input[0]:null,[t,e]):e.input&&e.input.trigger("change"),e.inline?this._updateDatepicker(e):(this._hideDatepicker(),this._lastInput=e.input[0],"object"!=typeof e.input[0]&&e.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var t,a,i=this._get(e,"altField");i&&(a=this._get(e,"altFormat")||this._get(e,"dateFormat"),t=this._getDate(e),a=this.formatDate(a,t,this._getFormatConfig(e)),V(document).find(i).val(a))},noWeekends:function(e){e=e.getDay();return[0<e&&e<6,""]},iso8601Week:function(e){var t,e=new Date(e.getTime());return e.setDate(e.getDate()+4-(e.getDay()||7)),t=e.getTime(),e.setMonth(0),e.setDate(1),Math.floor(Math.round((t-e)/864e5)/7)+1},parseDate:function(t,s,e){if(null==t||null==s)throw"Invalid arguments";if(""===(s="object"==typeof s?s.toString():s+""))return null;for(var a,i,r=0,n=(e?e.shortYearCutoff:null)||this._defaults.shortYearCutoff,n="string"!=typeof n?n:(new Date).getFullYear()%100+parseInt(n,10),d=(e?e.dayNamesShort:null)||this._defaults.dayNamesShort,c=(e?e.dayNames:null)||this._defaults.dayNames,o=(e?e.monthNamesShort:null)||this._defaults.monthNamesShort,l=(e?e.monthNames:null)||this._defaults.monthNames,h=-1,u=-1,p=-1,g=-1,_=!1,f=function(e){e=y+1<t.length&&t.charAt(y+1)===e;return e&&y++,e},k=function(e){var t=f(e),t="@"===e?14:"!"===e?20:"y"===e&&t?4:"o"===e?3:2,e=new RegExp("^\\d{"+("y"===e?t:1)+","+t+"}"),t=s.substring(r).match(e);if(t)return r+=t[0].length,parseInt(t[0],10);throw"Missing number at position "+r},D=function(e,t,a){var i=-1,e=V.map(f(e)?a:t,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(V.each(e,function(e,t){var a=t[1];if(s.substr(r,a.length).toLowerCase()===a.toLowerCase())return i=t[0],r+=a.length,!1}),-1!==i)return i+1;throw"Unknown name at position "+r},m=function(){if(s.charAt(r)!==t.charAt(y))throw"Unexpected literal at position "+r;r++},y=0;y<t.length;y++)if(_)"'"!==t.charAt(y)||f("'")?m():_=!1;else switch(t.charAt(y)){case"d":p=k("d");break;case"D":D("D",d,c);break;case"o":g=k("o");break;case"m":u=k("m");break;case"M":u=D("M",o,l);break;case"y":h=k("y");break;case"@":h=(i=new Date(k("@"))).getFullYear(),u=i.getMonth()+1,p=i.getDate();break;case"!":h=(i=new Date((k("!")-this._ticksTo1970)/1e4)).getFullYear(),u=i.getMonth()+1,p=i.getDate();break;case"'":f("'")?m():_=!0;break;default:m()}if(r<s.length&&(e=s.substr(r),!/^\s+/.test(e)))throw"Extra/unparsed characters found in date: "+e;if(-1===h?h=(new Date).getFullYear():h<100&&(h+=(new Date).getFullYear()-(new Date).getFullYear()%100+(h<=n?0:-100)),-1<g)for(u=1,p=g;;){if(p<=(a=this._getDaysInMonth(h,u-1)))break;u++,p-=a}if((i=this._daylightSavingAdjust(new Date(h,u-1,p))).getFullYear()!==h||i.getMonth()+1!==u||i.getDate()!==p)throw"Invalid date";return i},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*60*60*1e7,formatDate:function(t,e,a){if(!e)return"";function i(e,t,a){var i=""+t;if(l(e))for(;i.length<a;)i="0"+i;return i}function s(e,t,a,i){return(l(e)?i:a)[t]}var r,n=(a?a.dayNamesShort:null)||this._defaults.dayNamesShort,d=(a?a.dayNames:null)||this._defaults.dayNames,c=(a?a.monthNamesShort:null)||this._defaults.monthNamesShort,o=(a?a.monthNames:null)||this._defaults.monthNames,l=function(e){e=r+1<t.length&&t.charAt(r+1)===e;return e&&r++,e},h="",u=!1;if(e)for(r=0;r<t.length;r++)if(u)"'"!==t.charAt(r)||l("'")?h+=t.charAt(r):u=!1;else switch(t.charAt(r)){case"d":h+=i("d",e.getDate(),2);break;case"D":h+=s("D",e.getDay(),n,d);break;case"o":h+=i("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":h+=i("m",e.getMonth()+1,2);break;case"M":h+=s("M",e.getMonth(),c,o);break;case"y":h+=l("y")?e.getFullYear():(e.getFullYear()%100<10?"0":"")+e.getFullYear()%100;break;case"@":h+=e.getTime();break;case"!":h+=1e4*e.getTime()+this._ticksTo1970;break;case"'":l("'")?h+="'":u=!0;break;default:h+=t.charAt(r)}return h},_possibleChars:function(t){for(var e="",a=!1,i=function(e){e=s+1<t.length&&t.charAt(s+1)===e;return e&&s++,e},s=0;s<t.length;s++)if(a)"'"!==t.charAt(s)||i("'")?e+=t.charAt(s):a=!1;else switch(t.charAt(s)){case"d":case"m":case"y":case"@":e+="0123456789";break;case"D":case"M":return null;case"'":i("'")?e+="'":a=!0;break;default:e+=t.charAt(s)}return e},_get:function(e,t){return(void 0!==e.settings[t]?e.settings:this._defaults)[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var a=this._get(e,"dateFormat"),i=e.lastVal=e.input?e.input.val():null,s=this._getDefaultDate(e),r=s,n=this._getFormatConfig(e);try{r=this.parseDate(a,i,n)||s}catch(e){i=t?"":i}e.selectedDay=r.getDate(),e.drawMonth=e.selectedMonth=r.getMonth(),e.drawYear=e.selectedYear=r.getFullYear(),e.currentDay=i?r.getDate():0,e.currentMonth=i?r.getMonth():0,e.currentYear=i?r.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(d,e,t){var a,i=null==e||""===e?t:"string"==typeof e?function(e){try{return V.datepicker.parseDate(V.datepicker._get(d,"dateFormat"),e,V.datepicker._getFormatConfig(d))}catch(e){}for(var t=(e.toLowerCase().match(/^c/)?V.datepicker._getDate(d):null)||new Date,a=t.getFullYear(),i=t.getMonth(),s=t.getDate(),r=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,n=r.exec(e);n;){switch(n[2]||"d"){case"d":case"D":s+=parseInt(n[1],10);break;case"w":case"W":s+=7*parseInt(n[1],10);break;case"m":case"M":i+=parseInt(n[1],10),s=Math.min(s,V.datepicker._getDaysInMonth(a,i));break;case"y":case"Y":a+=parseInt(n[1],10),s=Math.min(s,V.datepicker._getDaysInMonth(a,i))}n=r.exec(e)}return new Date(a,i,s)}(e):"number"==typeof e?isNaN(e)?t:(i=e,(a=new Date).setDate(a.getDate()+i),a):new Date(e.getTime());return(i=i&&"Invalid Date"===i.toString()?t:i)&&(i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0)),this._daylightSavingAdjust(i)},_daylightSavingAdjust:function(e){return e?(e.setHours(12<e.getHours()?e.getHours()+2:0),e):null},_setDate:function(e,t,a){var i=!t,s=e.selectedMonth,r=e.selectedYear,t=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=t.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=t.getMonth(),e.drawYear=e.selectedYear=e.currentYear=t.getFullYear(),s===e.selectedMonth&&r===e.selectedYear||a||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(i?"":this._formatDate(e))},_getDate:function(e){return!e.currentYear||e.input&&""===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay))},_attachHandlers:function(e){var t=this._get(e,"stepMonths"),a="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){V.datepicker._adjustDate(a,-t,"M")},next:function(){V.datepicker._adjustDate(a,+t,"M")},hide:function(){V.datepicker._hideDatepicker()},today:function(){V.datepicker._gotoToday(a)},selectDay:function(){return V.datepicker._selectDay(a,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return V.datepicker._selectMonthYear(a,this,"M"),!1},selectYear:function(){return V.datepicker._selectMonthYear(a,this,"Y"),!1}};V(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,a,i,s,r,O,L,R,H,n,d,W,c,o,l,h,u,p,g,_,f,k,E,D,m,U,y,P,z,v,M,b,w=new Date,B=this._daylightSavingAdjust(new Date(w.getFullYear(),w.getMonth(),w.getDate())),C=this._get(e,"isRTL"),w=this._get(e,"showButtonPanel"),I=this._get(e,"hideIfNoPrevNext"),x=this._get(e,"navigationAsDateFormat"),Y=this._getNumberOfMonths(e),S=this._get(e,"showCurrentAtPos"),F=this._get(e,"stepMonths"),J=1!==Y[0]||1!==Y[1],N=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),T=this._getMinMaxDate(e,"min"),A=this._getMinMaxDate(e,"max"),K=e.drawMonth-S,j=e.drawYear;if(K<0&&(K+=12,j--),A)for(t=this._daylightSavingAdjust(new Date(A.getFullYear(),A.getMonth()-Y[0]*Y[1]+1,A.getDate())),t=T&&t<T?T:t;this._daylightSavingAdjust(new Date(j,K,1))>t;)--K<0&&(K=11,j--);for(e.drawMonth=K,e.drawYear=j,S=this._get(e,"prevText"),S=x?this.formatDate(S,this._daylightSavingAdjust(new Date(j,K-F,1)),this._getFormatConfig(e)):S,a=this._canAdjustMonth(e,-1,j,K)?V("<a>").attr({class:"ui-datepicker-prev ui-corner-all","data-handler":"prev","data-event":"click",title:S}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(C?"e":"w")).text(S))[0].outerHTML:I?"":V("<a>").attr({class:"ui-datepicker-prev ui-corner-all ui-state-disabled",title:S}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(C?"e":"w")).text(S))[0].outerHTML,S=this._get(e,"nextText"),S=x?this.formatDate(S,this._daylightSavingAdjust(new Date(j,K+F,1)),this._getFormatConfig(e)):S,i=this._canAdjustMonth(e,1,j,K)?V("<a>").attr({class:"ui-datepicker-next ui-corner-all","data-handler":"next","data-event":"click",title:S}).append(V("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(C?"w":"e")).text(S))[0].outerHTML:I?"":V("<a>").attr({class:"ui-datepicker-next ui-corner-all ui-state-disabled",title:S}).append(V("<span>").attr("class","ui-icon ui-icon-circle-triangle-"+(C?"w":"e")).text(S))[0].outerHTML,F=this._get(e,"currentText"),I=this._get(e,"gotoCurrent")&&e.currentDay?N:B,F=x?this.formatDate(F,I,this._getFormatConfig(e)):F,S="",e.inline||(S=V("<button>").attr({type:"button",class:"ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all","data-handler":"hide","data-event":"click"}).text(this._get(e,"closeText"))[0].outerHTML),x="",w&&(x=V("<div class='ui-datepicker-buttonpane ui-widget-content'>").append(C?S:"").append(this._isInRange(e,I)?V("<button>").attr({type:"button",class:"ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all","data-handler":"today","data-event":"click"}).text(F):"").append(C?"":S)[0].outerHTML),s=parseInt(this._get(e,"firstDay"),10),s=isNaN(s)?0:s,r=this._get(e,"showWeek"),O=this._get(e,"dayNames"),L=this._get(e,"dayNamesMin"),R=this._get(e,"monthNames"),H=this._get(e,"monthNamesShort"),n=this._get(e,"beforeShowDay"),d=this._get(e,"showOtherMonths"),W=this._get(e,"selectOtherMonths"),c=this._getDefaultDate(e),o="",h=0;h<Y[0];h++){for(u="",this.maxRows=4,p=0;p<Y[1];p++){if(g=this._daylightSavingAdjust(new Date(j,K,e.selectedDay)),_=" ui-corner-all",f="",J){if(f+="<div class='ui-datepicker-group",1<Y[1])switch(p){case 0:f+=" ui-datepicker-group-first",_=" ui-corner-"+(C?"right":"left");break;case Y[1]-1:f+=" ui-datepicker-group-last",_=" ui-corner-"+(C?"left":"right");break;default:f+=" ui-datepicker-group-middle",_=""}f+="'>"}for(f+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+_+"'>"+(/all|left/.test(_)&&0===h?C?i:a:"")+(/all|right/.test(_)&&0===h?C?a:i:"")+this._generateMonthYearHeader(e,K,j,T,A,0<h||0<p,R,H)+"</div><table class='ui-datepicker-calendar'><thead><tr>",k=r?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",l=0;l<7;l++)k+="<th scope='col'"+(5<=(l+s+6)%7?" class='ui-datepicker-week-end'":"")+"><span title='"+O[E=(l+s)%7]+"'>"+L[E]+"</span></th>";for(f+=k+"</tr></thead><tbody>",m=this._getDaysInMonth(j,K),j===e.selectedYear&&K===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,m)),D=(this._getFirstDayOfMonth(j,K)-s+7)%7,m=Math.ceil((D+m)/7),U=J&&this.maxRows>m?this.maxRows:m,this.maxRows=U,y=this._daylightSavingAdjust(new Date(j,K,1-D)),P=0;P<U;P++){for(f+="<tr>",z=r?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(y)+"</td>":"",l=0;l<7;l++)v=n?n.apply(e.input?e.input[0]:null,[y]):[!0,""],b=(M=y.getMonth()!==K)&&!W||!v[0]||T&&y<T||A&&A<y,z+="<td class='"+(5<=(l+s+6)%7?" ui-datepicker-week-end":"")+(M?" ui-datepicker-other-month":"")+(y.getTime()===g.getTime()&&K===e.selectedMonth&&e._keyEvent||c.getTime()===y.getTime()&&c.getTime()===g.getTime()?" "+this._dayOverClass:"")+(b?" "+this._unselectableClass+" ui-state-disabled":"")+(M&&!d?"":" "+v[1]+(y.getTime()===N.getTime()?" "+this._currentClass:"")+(y.getTime()===B.getTime()?" ui-datepicker-today":""))+"'"+(M&&!d||!v[2]?"":" title='"+v[2].replace(/'/g,"&#39;")+"'")+(b?"":" data-handler='selectDay' data-event='click' data-month='"+y.getMonth()+"' data-year='"+y.getFullYear()+"'")+">"+(M&&!d?"&#xa0;":b?"<span class='ui-state-default'>"+y.getDate()+"</span>":"<a class='ui-state-default"+(y.getTime()===B.getTime()?" ui-state-highlight":"")+(y.getTime()===N.getTime()?" ui-state-active":"")+(M?" ui-priority-secondary":"")+"' href='#' aria-current='"+(y.getTime()===N.getTime()?"true":"false")+"' data-date='"+y.getDate()+"'>"+y.getDate()+"</a>")+"</td>",y.setDate(y.getDate()+1),y=this._daylightSavingAdjust(y);f+=z+"</tr>"}11<++K&&(K=0,j++),u+=f+="</tbody></table>"+(J?"</div>"+(0<Y[0]&&p===Y[1]-1?"<div class='ui-datepicker-row-break'></div>":""):"")}o+=u}return o+=x,e._keyEvent=!1,o},_generateMonthYearHeader:function(e,t,a,i,s,r,n,d){var c,o,l,h,u,p,g=this._get(e,"changeMonth"),_=this._get(e,"changeYear"),f=this._get(e,"showMonthAfterYear"),k=this._get(e,"selectMonthLabel"),D=this._get(e,"selectYearLabel"),m="<div class='ui-datepicker-title'>",y="";if(r||!g)y+="<span class='ui-datepicker-month'>"+n[t]+"</span>";else{for(c=i&&i.getFullYear()===a,o=s&&s.getFullYear()===a,y+="<select class='ui-datepicker-month' aria-label='"+k+"' data-handler='selectMonth' data-event='change'>",l=0;l<12;l++)(!c||l>=i.getMonth())&&(!o||l<=s.getMonth())&&(y+="<option value='"+l+"'"+(l===t?" selected='selected'":"")+">"+d[l]+"</option>");y+="</select>"}if(f||(m+=y+(!r&&g&&_?"":"&#xa0;")),!e.yearshtml)if(e.yearshtml="",r||!_)m+="<span class='ui-datepicker-year'>"+a+"</span>";else{for(n=this._get(e,"yearRange").split(":"),h=(new Date).getFullYear(),u=(k=function(e){e=e.match(/c[+\-].*/)?a+parseInt(e.substring(1),10):e.match(/[+\-].*/)?h+parseInt(e,10):parseInt(e,10);return isNaN(e)?h:e})(n[0]),p=Math.max(u,k(n[1]||"")),u=i?Math.max(u,i.getFullYear()):u,p=s?Math.min(p,s.getFullYear()):p,e.yearshtml+="<select class='ui-datepicker-year' aria-label='"+D+"' data-handler='selectYear' data-event='change'>";u<=p;u++)e.yearshtml+="<option value='"+u+"'"+(u===a?" selected='selected'":"")+">"+u+"</option>";e.yearshtml+="</select>",m+=e.yearshtml,e.yearshtml=null}return m+=this._get(e,"yearSuffix"),f&&(m+=(!r&&g&&_?"":"&#xa0;")+y),m+="</div>"},_adjustInstDate:function(e,t,a){var i=e.selectedYear+("Y"===a?t:0),s=e.selectedMonth+("M"===a?t:0),t=Math.min(e.selectedDay,this._getDaysInMonth(i,s))+("D"===a?t:0),i=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(i,s,t)));e.selectedDay=i.getDate(),e.drawMonth=e.selectedMonth=i.getMonth(),e.drawYear=e.selectedYear=i.getFullYear(),"M"!==a&&"Y"!==a||this._notifyChange(e)},_restrictMinMax:function(e,t){var a=this._getMinMaxDate(e,"min"),e=this._getMinMaxDate(e,"max"),a=a&&t<a?a:t;return e&&e<a?e:a},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){e=this._get(e,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,a,i){var s=this._getNumberOfMonths(e),a=this._daylightSavingAdjust(new Date(a,i+(t<0?t:s[0]*s[1]),1));return t<0&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(e,a)},_isInRange:function(e,t){var a,i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),r=null,n=null,e=this._get(e,"yearRange");return e&&(e=e.split(":"),a=(new Date).getFullYear(),r=parseInt(e[0],10),n=parseInt(e[1],10),e[0].match(/[+\-].*/)&&(r+=a),e[1].match(/[+\-].*/))&&(n+=a),(!i||t.getTime()>=i.getTime())&&(!s||t.getTime()<=s.getTime())&&(!r||t.getFullYear()>=r)&&(!n||t.getFullYear()<=n)},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return{shortYearCutoff:"string"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,a,i){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);i=t?"object"==typeof t?t:this._daylightSavingAdjust(new Date(i,a,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),i,this._getFormatConfig(e))}}),V.fn.datepicker=function(e){if(!this.length)return this;V.datepicker.initialized||(V(document).on("mousedown",V.datepicker._checkExternalClick),V.datepicker.initialized=!0),0===V("#"+V.datepicker._mainDivId).length&&V("body").append(V.datepicker.dpDiv);var t=Array.prototype.slice.call(arguments,1);return"string"==typeof e&&("isDisabled"===e||"getDate"===e||"widget"===e)||"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?V.datepicker["_"+e+"Datepicker"].apply(V.datepicker,[this[0]].concat(t)):this.each(function(){"string"==typeof e?V.datepicker["_"+e+"Datepicker"].apply(V.datepicker,[this].concat(t)):V.datepicker._attachDatepicker(this,e)})},V.datepicker=new e,V.datepicker.initialized=!1,V.datepicker.uuid=(new Date).getTime(),V.datepicker.version="1.13.3",V.datepicker});