1/*1789765106000*/
vendor: 87,533 bytes, lines 2-3
2/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ 3!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}function fe(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}ce.fn=ce.prototype={jquery:t,constructor:ce,length:0,toArray:function(){return ae.call(this)},get:function(e){return null==e?ae.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=ce.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return ce.each(this,e)},map:function(n){return this.pushStack(ce.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(ae.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(ce.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(ce.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:oe.sort,splice:oe.splice},ce.extend=ce.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||v(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(ce.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||ce.isPlainObject(n)?n:{},i=!1,a[t]=ce.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},ce.extend({expando:"jQuery"+(t+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==i.call(e))&&(!(t=r(e))||"function"==typeof(n=ue.call(t,"constructor")&&t.constructor)&&o.call(n)===a)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){m(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(c(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},text:function(e){var t,n="",r=0,i=e.nodeType;if(!i)while(t=e[r++])n+=ce.text(t);return 1===i||11===i?e.textContent:9===i?e.documentElement.textContent:3===i||4===i?e.nodeValue:n},makeArray:function(e,t){var n=t||[];return null!=e&&(c(Object(e))?ce.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:se.call(t,e,n)},isXMLDoc:function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!l.test(t||n&&n.nodeName||"HTML")},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(c(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:le}),"function"==typeof Symbol&&(ce.fn[Symbol.iterator]=oe[Symbol.iterator]),ce.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var pe=oe.pop,de=oe.sort,he=oe.splice,ge="[\\x20\\t\\r\\n\\f]",ve=new RegExp("^"+ge+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ge+"+$","g");ce.contains=function(e,t){var n=t&&t.parentNode;return e===n||!(!n||1!==n.nodeType||!(e.contains?e.contains(n):e.compareDocumentPosition&&16&e.compareDocumentPosition(n)))};var f=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function p(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}ce.escapeSelector=function(e){return(e+"").replace(f,p)};var ye=C,me=s;!function(){var e,b,w,o,a,T,r,C,d,i,k=me,S=ce.expando,E=0,n=0,s=W(),c=W(),u=W(),h=W(),l=function(e,t){return e===t&&(a=!0),0},f="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",t="(?:\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",p="\\["+ge+"*("+t+")(?:"+ge+"*([*^$|!~]?=)"+ge+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+t+"))|)"+ge+"*\\]",g=":("+t+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+p+")*)|.*)\\)|)",v=new RegExp(ge+"+","g"),y=new RegExp("^"+ge+"*,"+ge+"*"),m=new RegExp("^"+ge+"*([>+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="<a id='"+S+"' href='' disabled='disabled'></a><select id='"+S+"-\r\\' disabled='disabled'><option selected=''></option></select>",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0<I(t,T,null,[e]).length},I.contains=function(e,t){return(e.ownerDocument||e)!=T&&V(e),ce.contains(e,t)},I.attr=function(e,t){(e.ownerDocument||e)!=T&&V(e);var n=b.attrHandle[t.toLowerCase()],r=n&&ue.call(b.attrHandle,t.toLowerCase())?n(e,t,!C):void 0;return void 0!==r?r:e.getAttribute(t)},I.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ce.uniqueSort=function(e){var t,n=[],r=0,i=0;if(a=!le.sortStable,o=!le.sortStable&&ae.call(e,0),de.call(e,l),a){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)he.call(e,n[r],1)}return o=null,e},ce.fn.uniqueSort=function(){return this.pushStack(ce.uniqueSort(ae.apply(this)))},(b=ce.expr={cacheLength:50,createPseudo:F,match:D,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(v," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(d,e,t,h,g){var v="nth"!==d.slice(0,3),y="last"!==d.slice(-4),m="of-type"===e;return 1===h&&0===g?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u=v!==y?"nextSibling":"previousSibling",l=e.parentNode,c=m&&e.nodeName.toLowerCase(),f=!n&&!m,p=!1;if(l){if(v){while(u){o=e;while(o=o[u])if(m?fe(o,c):1===o.nodeType)return!1;s=u="only"===d&&!s&&"nextSibling"}return!0}if(s=[y?l.firstChild:l.lastChild],y&&f){p=(a=(r=(i=l[S]||(l[S]={}))[d]||[])[0]===E&&r[1])&&r[2],o=a&&l.childNodes[a];while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if(1===o.nodeType&&++p&&o===e){i[d]=[E,a,p];break}}else if(f&&(p=a=(r=(i=e[S]||(e[S]={}))[d]||[])[0]===E&&r[1]),!1===p)while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if((m?fe(o,c):1===o.nodeType)&&++p&&(f&&((i=o[S]||(o[S]={}))[d]=[E,p]),o===e))break;return(p-=g)===h||p%h==0&&0<=p/h}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||I.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?F(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=se.call(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:F(function(e){var r=[],i=[],s=ne(e.replace(ve,"$1"));return s[S]?F(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:F(function(t){return function(e){return 0<I(t,e).length}}),contains:F(function(t){return t=t.replace(O,P),function(e){return-1<(e.textContent||ce.text(e)).indexOf(t)}}),lang:F(function(n){return A.test(n||"")||I.error("unsupported lang: "+n),n=n.replace(O,P).toLowerCase(),function(e){var t;do{if(t=C?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=ie.location&&ie.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===r},focus:function(e){return e===function(){try{return T.activeElement}catch(e){}}()&&T.hasFocus()&&!!(e.type||e.href||~e.tabIndex)},enabled:z(!1),disabled:z(!0),checked:function(e){return fe(e,"input")&&!!e.checked||fe(e,"option")&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return q.test(e.nodeName)},input:function(e){return N.test(e.nodeName)},button:function(e){return fe(e,"input")&&"button"===e.type||fe(e,"button")},text:function(e){var t;return fe(e,"input")&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:X(function(){return[0]}),last:X(function(e,t){return[t-1]}),eq:X(function(e,t,n){return[n<0?n+t:n]}),even:X(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:X(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:X(function(e,t,n){var r;for(r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:X(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=B(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=_(e);function G(){}function Y(e,t){var n,r,i,o,a,s,u,l=c[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=y.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=m.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(ve," ")}),a=a.slice(n.length)),b.filter)!(r=D[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?I.error(e):c(e,s).slice(0)}function Q(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function J(a,e,t){var s=e.dir,u=e.next,l=u||s,c=t&&"parentNode"===l,f=n++;return e.first?function(e,t,n){while(e=e[s])if(1===e.nodeType||c)return a(e,t,n);return!1}:function(e,t,n){var r,i,o=[E,f];if(n){while(e=e[s])if((1===e.nodeType||c)&&a(e,t,n))return!0}else while(e=e[s])if(1===e.nodeType||c)if(i=e[S]||(e[S]={}),u&&fe(e,u))e=e[s]||e;else{if((r=i[l])&&r[0]===E&&r[1]===f)return o[2]=r[2];if((i[l]=o)[2]=a(e,t,n))return!0}return!1}}function K(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Z(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function ee(d,h,g,v,y,e){return v&&!v[S]&&(v=ee(v)),y&&!y[S]&&(y=ee(y,e)),F(function(e,t,n,r){var i,o,a,s,u=[],l=[],c=t.length,f=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)I(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),p=!d||!e&&h?f:Z(f,u,d,n,r);if(g?g(p,s=y||(e?d:c||v)?[]:t,n,r):s=p,v){i=Z(s,l),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(s[l[o]]=!(p[l[o]]=a))}if(e){if(y||d){if(y){i=[],o=s.length;while(o--)(a=s[o])&&i.push(p[o]=a);y(null,s=[],i,r)}o=s.length;while(o--)(a=s[o])&&-1<(i=y?se.call(e,a):u[o])&&(e[i]=!(t[i]=a))}}else s=Z(s===t?s.splice(c,s.length):s),y?y(null,t,s,r):k.apply(t,s)})}function te(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=J(function(e){return e===i},a,!0),l=J(function(e){return-1<se.call(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!=w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[J(K(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return ee(1<s&&K(c),1<s&&Q(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(ve,"$1"),t,s<n&&te(e.slice(s,n)),n<r&&te(e=e.slice(n)),n<r&&Q(e))}c.push(t)}return K(c)}function ne(e,t){var n,v,y,m,x,r,i=[],o=[],a=u[e+" "];if(!a){t||(t=Y(e)),n=t.length;while(n--)(a=te(t[n]))[S]?i.push(a):o.push(a);(a=u(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=E+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==T||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==T||(V(o),n=!C);while(s=v[a++])if(s(o,t||T,n)){k.call(r,o);break}i&&(E=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=pe.call(r));f=Z(f)}k.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&ce.uniqueSort(r)}return i&&(E=h,w=p),c},m?F(r):r))).selector=e}return a}function re(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&Y(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&C&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(O,P),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=D.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(O,P),H.test(o[0].type)&&U(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&Q(o)))return k.apply(n,r),n;break}}}return(l||ne(e,c))(r,t,!C,n,!t||H.test(e)&&U(t.parentNode)||t),n}G.prototype=b.filters=b.pseudos,b.setFilters=new G,le.sortStable=S.split("").sort(l).join("")===S,V(),le.sortDetached=$(function(e){return 1&e.compareDocumentPosition(T.createElement("fieldset"))}),ce.find=I,ce.expr[":"]=ce.expr.pseudos,ce.unique=ce.uniqueSort,I.compile=ne,I.select=re,I.setDocument=V,I.tokenize=Y,I.escape=ce.escapeSelector,I.getText=ce.text,I.isXML=ce.isXMLDoc,I.selectors=ce.expr,I.support=ce.support,I.uniqueSort=ce.uniqueSort}();var d=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&ce(e).is(n))break;r.push(e)}return r},h=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},b=ce.expr.match.needsContext,w=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1<se.call(n,e)!==r}):ce.filter(n,e,r)}ce.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?ce.find.matchesSelector(r,e)?[r]:[]:ce.find.matches(e,ce.grep(t,function(e){return 1===e.nodeType}))},ce.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(ce(e).filter(function(){for(t=0;t<r;t++)if(ce.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)ce.find(e,i[t],n);return 1<r?ce.uniqueSort(n):n},filter:function(e){return this.pushStack(T(this,e||[],!1))},not:function(e){return this.pushStack(T(this,e||[],!0))},is:function(e){return!!T(this,"string"==typeof e&&b.test(e)?ce(e):e||[],!1).length}});var k,S=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(ce.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&ce(e);if(!b.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&ce.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?ce.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?se.call(ce(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ce.uniqueSort(ce.merge(this.get(),ce(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ce.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return d(e,"parentNode")},parentsUntil:function(e,t,n){return d(e,"parentNode",n)},next:function(e){return A(e,"nextSibling")},prev:function(e){return A(e,"previousSibling")},nextAll:function(e){return d(e,"nextSibling")},prevAll:function(e){return d(e,"previousSibling")},nextUntil:function(e,t,n){return d(e,"nextSibling",n)},prevUntil:function(e,t,n){return d(e,"previousSibling",n)},siblings:function(e){return h((e.parentNode||{}).firstChild,e)},children:function(e){return h(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(fe(e,"template")&&(e=e.content||e),ce.merge([],e.childNodes))}},function(r,i){ce.fn[r]=function(e,t){var n=ce.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=ce.filter(t,n)),1<this.length&&(j[r]||ce.uniqueSort(n),E.test(r)&&n.reverse()),this.pushStack(n)}});var D=/[^\x20\t\r\n\f]+/g;function N(e){return e}function q(e){throw e}function L(e,t,n,r){var i;try{e&&v(i=e.promise)?i.call(e).done(t).fail(n):e&&v(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}ce.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},ce.each(e.match(D)||[],function(e,t){n[t]=!0}),n):ce.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){ce.each(e,function(e,t){v(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==x(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return ce.each(arguments,function(e,t){var n;while(-1<(n=ce.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<ce.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},ce.extend({Deferred:function(e){var o=[["notify","progress",ce.Callbacks("memory"),ce.Callbacks("memory"),2],["resolve","done",ce.Callbacks("once memory"),ce.Callbacks("once memory"),0,"resolved"],["reject","fail",ce.Callbacks("once memory"),ce.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return ce.Deferred(function(r){ce.each(o,function(e,t){var n=v(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&v(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,v(t)?s?t.call(e,l(u,o,N,s),l(u,o,q,s)):(u++,t.call(e,l(u,o,N,s),l(u,o,q,s),l(u,o,N,o.notifyWith))):(a!==N&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){ce.Deferred.exceptionHook&&ce.Deferred.exceptionHook(e,t.error),u<=i+1&&(a!==q&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(ce.Deferred.getErrorHook?t.error=ce.Deferred.getErrorHook():ce.Deferred.getStackHook&&(t.error=ce.Deferred.getStackHook()),ie.setTimeout(t))}}return ce.Deferred(function(e){o[0][3].add(l(0,e,v(r)?r:N,e.notifyWith)),o[1][3].add(l(0,e,v(t)?t:N)),o[2][3].add(l(0,e,v(n)?n:q))}).promise()},promise:function(e){return null!=e?ce.extend(e,a):a}},s={};return ce.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=ae.call(arguments),o=ce.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?ae.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(L(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||v(i[t]&&i[t].then)))return o.then();while(t--)L(i[t],a(t),o.reject);return o.promise()}});var H=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;ce.Deferred.exceptionHook=function(e,t){ie.console&&ie.console.warn&&e&&H.test(e.name)&&ie.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},ce.readyException=function(e){ie.setTimeout(function(){throw e})};var O=ce.Deferred();function P(){C.removeEventListener("DOMContentLoaded",P),ie.removeEventListener("load",P),ce.ready()}ce.fn.ready=function(e){return O.then(e)["catch"](function(e){ce.readyException(e)}),this},ce.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--ce.readyWait:ce.isReady)||(ce.isReady=!0)!==e&&0<--ce.readyWait||O.resolveWith(C,[ce])}}),ce.ready.then=O.then,"complete"===C.readyState||"loading"!==C.readyState&&!C.documentElement.doScroll?ie.setTimeout(ce.ready):(C.addEventListener("DOMContentLoaded",P),ie.addEventListener("load",P));var M=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n))for(s in i=!0,n)M(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,v(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(ce(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},R=/^-ms-/,I=/-([a-z])/g;function W(e,t){return t.toUpperCase()}function F(e){return e.replace(R,"ms-").replace(I,W)}var $=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function B(){this.expando=ce.expando+B.uid++}B.uid=1,B.prototype={cache:function(e){var t=e[this.expando];return t||(t={},$(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[F(t)]=n;else for(r in t)i[F(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][F(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(F):(t=F(t))in r?[t]:t.match(D)||[]).length;while(n--)delete r[t[n]]}(void 0===t||ce.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!ce.isEmptyObject(t)}};var _=new B,z=new B,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,U=/[A-Z]/g;function V(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(U,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:X.test(i)?JSON.parse(i):i)}catch(e){}z.set(e,t,n)}else n=void 0;return n}ce.extend({hasData:function(e){return z.hasData(e)||_.hasData(e)},data:function(e,t,n){return z.access(e,t,n)},removeData:function(e,t){z.remove(e,t)},_data:function(e,t,n){return _.access(e,t,n)},_removeData:function(e,t){_.remove(e,t)}}),ce.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=z.get(o),1===o.nodeType&&!_.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=F(r.slice(5)),V(o,r,i[r]));_.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){z.set(this,n)}):M(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=z.get(o,n))?t:void 0!==(t=V(o,n))?t:void 0;this.each(function(){z.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){z.remove(this,e)})}}),ce.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=_.get(e,t),n&&(!r||Array.isArray(n)?r=_.access(e,t,ce.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=ce.queue(e,t),r=n.length,i=n.shift(),o=ce._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){ce.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return _.get(e,n)||_.access(e,n,{empty:ce.Callbacks("once memory").add(function(){_.remove(e,[t+"queue",n])})})}}),ce.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?ce.queue(this[0],t):void 0===n?this:this.each(function(){var e=ce.queue(this,t,n);ce._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&ce.dequeue(this,t)})},dequeue:function(e){return this.each(function(){ce.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=ce.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=_.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var G=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Y=new RegExp("^(?:([+-])=|)("+G+")([a-z%]*)$","i"),Q=["Top","Right","Bottom","Left"],J=C.documentElement,K=function(e){return ce.contains(e.ownerDocument,e)},Z={composed:!0};J.getRootNode&&(K=function(e){return ce.contains(e.ownerDocument,e)||e.getRootNode(Z)===e.ownerDocument});var ee=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&K(e)&&"none"===ce.css(e,"display")};function te(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return ce.css(e,t,"")},u=s(),l=n&&n[3]||(ce.cssNumber[t]?"":"px"),c=e.nodeType&&(ce.cssNumber[t]||"px"!==l&&+u)&&Y.exec(ce.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)ce.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,ce.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ne={};function re(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=_.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ee(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ne[s])||(o=a.body.appendChild(a.createElement(s)),u=ce.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ne[s]=u)))):"none"!==n&&(l[c]="none",_.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}ce.fn.extend({show:function(){return re(this,!0)},hide:function(){return re(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ee(this)?ce(this).show():ce(this).hide()})}});var xe,be,we=/^(?:checkbox|radio)$/i,Te=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="<textarea>x</textarea>",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="<option></option>",le.option=!!xe.lastChild;var ke={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n<r;n++)_.set(e[n],"globalEval",!t||_.get(t[n],"globalEval"))}ke.tbody=ke.tfoot=ke.colgroup=ke.caption=ke.thead,ke.th=ke.td,le.option||(ke.optgroup=ke.option=[1,"<select multiple='multiple'>","</select>"]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))ce.merge(p,o.nodeType?[o]:o);else if(je.test(o)){a=a||f.appendChild(t.createElement("div")),s=(Te.exec(o)||["",""])[1].toLowerCase(),u=ke[s]||ke._default,a.innerHTML=u[1]+ce.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;ce.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<ce.inArray(o,r))i&&i.push(o);else if(l=K(o),a=Se(f.appendChild(o),"script"),l&&Ee(a),n){c=0;while(o=a[c++])Ce.test(o.type||"")&&n.push(o)}return f}var De=/^([^.]*)(?:\.(.+)|)/;function Ne(){return!0}function qe(){return!1}function Le(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Le(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=qe;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return ce().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=ce.guid++)),e.each(function(){ce.event.add(this,t,i,r,n)})}function He(e,r,t){t?(_.set(e,r,!1),ce.event.add(e,r,{namespace:!1,handler:function(e){var t,n=_.get(this,r);if(1&e.isTrigger&&this[r]){if(n)(ce.event.special[r]||{}).delegateType&&e.stopPropagation();else if(n=ae.call(arguments),_.set(this,r,n),this[r](),t=_.get(this,r),_.set(this,r,!1),n!==t)return e.stopImmediatePropagation(),e.preventDefault(),t}else n&&(_.set(this,r,ce.event.trigger(n[0],n.slice(1),this)),e.stopPropagation(),e.isImmediatePropagationStopped=Ne)}})):void 0===_.get(e,r)&&ce.event.add(e,r,Ne)}ce.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.get(t);if($(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&ce.find.matchesSelector(J,i),n.guid||(n.guid=ce.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof ce&&ce.event.triggered!==e.type?ce.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(D)||[""]).length;while(l--)d=g=(s=De.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=ce.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=ce.event.special[d]||{},c=ce.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&ce.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),ce.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.hasData(e)&&_.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(D)||[""]).length;while(l--)if(d=g=(s=De.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=ce.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||ce.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)ce.event.remove(e,d+t[l],n,r,!0);ce.isEmptyObject(u)&&_.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=ce.event.fix(e),l=(_.get(this,"events")||Object.create(null))[u.type]||[],c=ce.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=ce.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((ce.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<ce(i,this).index(l):ce.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(ce.Event.prototype,t,{enumerable:!0,configurable:!0,get:v(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[ce.expando]?e:new ce.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,"input")&&He(t,"click",!0),!1},trigger:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,"input")&&He(t,"click"),!0},_default:function(e){var t=e.target;return we.test(t.type)&&t.click&&fe(t,"input")&&_.get(t,"click")||fe(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},ce.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},ce.Event=function(e,t){if(!(this instanceof ce.Event))return new ce.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ne:qe,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&ce.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[ce.expando]=!0},ce.Event.prototype={constructor:ce.Event,isDefaultPrevented:qe,isPropagationStopped:qe,isImmediatePropagationStopped:qe,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ne,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ne,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ne,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},ce.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},ce.event.addProp),ce.each({focus:"focusin",blur:"focusout"},function(r,i){function o(e){if(C.documentMode){var t=_.get(this,"handle"),n=ce.event.fix(e);n.type="focusin"===e.type?"focus":"blur",n.isSimulated=!0,t(e),n.target===n.currentTarget&&t(n)}else ce.event.simulate(i,e.target,ce.event.fix(e))}ce.event.special[r]={setup:function(){var e;if(He(this,r,!0),!C.documentMode)return!1;(e=_.get(this,i))||this.addEventListener(i,o),_.set(this,i,(e||0)+1)},trigger:function(){return He(this,r),!0},teardown:function(){var e;if(!C.documentMode)return!1;(e=_.get(this,i)-1)?_.set(this,i,e):(this.removeEventListener(i,o),_.remove(this,i))},_default:function(e){return _.get(e.target,r)},delegateType:i},ce.event.special[i]={setup:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i);n||(C.documentMode?this.addEventListener(i,o):e.addEventListener(r,o,!0)),_.set(t,i,(n||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i)-1;n?_.set(t,i,n):(C.documentMode?this.removeEventListener(i,o):e.removeEventListener(r,o,!0),_.remove(t,i))}}}),ce.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){ce.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||ce.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),ce.fn.extend({on:function(e,t,n,r){return Le(this,e,t,n,r)},one:function(e,t,n,r){return Le(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,ce(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=qe),this.each(function(){ce.event.remove(this,e,n,t)})}});var Oe=/<script|<style|<link/i,Pe=/checked\s*(?:[^=]|=\s*.checked.)/i,Me=/^\s*<!\[CDATA\[|\]\]>\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)ce.event.add(t,i,s[i][n]);z.hasData(e)&&(o=z.access(e),a=ce.extend({},o),z.set(t,a))}}function $e(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=v(d);if(h||1<f&&"string"==typeof d&&!le.checkClone&&Pe.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),$e(t,r,i,o)});if(f&&(t=(e=Ae(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=ce.map(Se(e,"script"),Ie)).length;c<f;c++)u=e,c!==p&&(u=ce.clone(u,!0,!0),s&&ce.merge(a,Se(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,ce.map(a,We),c=0;c<s;c++)u=a[c],Ce.test(u.type||"")&&!_.access(u,"globalEval")&&ce.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?ce._evalUrl&&!u.noModule&&ce._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):m(u.textContent.replace(Me,""),u,l))}return n}function Be(e,t,n){for(var r,i=t?ce.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||ce.cleanData(Se(r)),r.parentNode&&(n&&K(r)&&Ee(Se(r,"script")),r.parentNode.removeChild(r));return e}ce.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=K(e);if(!(le.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ce.isXMLDoc(e)))for(a=Se(c),r=0,i=(o=Se(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&we.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||Se(e),a=a||Se(c),r=0,i=o.length;r<i;r++)Fe(o[r],a[r]);else Fe(e,c);return 0<(a=Se(c,"script")).length&&Ee(a,!f&&Se(e,"script")),c},cleanData:function(e){for(var t,n,r,i=ce.event.special,o=0;void 0!==(n=e[o]);o++)if($(n)){if(t=n[_.expando]){if(t.events)for(r in t.events)i[r]?ce.event.remove(n,r):ce.removeEvent(n,r,t.handle);n[_.expando]=void 0}n[z.expando]&&(n[z.expando]=void 0)}}}),ce.fn.extend({detach:function(e){return Be(this,e,!0)},remove:function(e){return Be(this,e)},text:function(e){return M(this,function(e){return void 0===e?ce.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return $e(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Re(this,e).appendChild(e)})},prepend:function(){return $e(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Re(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(ce.cleanData(Se(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return ce.clone(this,e,t)})},html:function(e){return M(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Oe.test(e)&&!ke[(Te.exec(e)||["",""])[1].toLowerCase()]){e=ce.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(ce.cleanData(Se(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return $e(this,arguments,function(e){var t=this.parentNode;ce.inArray(this,n)<0&&(ce.cleanData(Se(this)),t&&t.replaceChild(e,this))},n)}}),ce.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){ce.fn[e]=function(e){for(var t,n=[],r=ce(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),ce(r[o])[a](t),s.apply(n,t.get());return this.pushStack(n)}});var _e=new RegExp("^("+G+")(?!px)[a-z%]+$","i"),ze=/^--/,Xe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=ie),t.getComputedStyle(e)},Ue=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ve=new RegExp(Q.join("|"),"i");function Ge(e,t,n){var r,i,o,a,s=ze.test(t),u=e.style;return(n=n||Xe(e))&&(a=n.getPropertyValue(t)||n[t],s&&a&&(a=a.replace(ve,"$1")||void 0),""!==a||K(e)||(a=ce.style(e,t)),!le.pixelBoxStyles()&&_e.test(a)&&Ve.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=n.width,u.width=r,u.minWidth=i,u.maxWidth=o)),void 0!==a?a+"":a}function Ye(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",J.appendChild(u).appendChild(l);var e=ie.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),J.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=C.createElement("div"),l=C.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",le.clearCloneStyle="content-box"===l.style.backgroundClip,ce.extend(le,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=C.createElement("table"),t=C.createElement("tr"),n=C.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="box-sizing:content-box;border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",J.appendChild(e).appendChild(t).appendChild(n),r=ie.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,J.removeChild(e)),a}}))}();var Qe=["Webkit","Moz","ms"],Je=C.createElement("div").style,Ke={};function Ze(e){var t=ce.cssProps[e]||Ke[e];return t||(e in Je?e:Ke[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Qe.length;while(n--)if((e=Qe[n]+t)in Je)return e}(e)||e)}var et=/^(none|table(?!-c[ea]).+)/,tt={position:"absolute",visibility:"hidden",display:"block"},nt={letterSpacing:"0",fontWeight:"400"};function rt(e,t,n){var r=Y.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function it(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0,l=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=ce.css(e,n+Q[a],!0,i)),r?("content"===n&&(u-=ce.css(e,"padding"+Q[a],!0,i)),"margin"!==n&&(u-=ce.css(e,"border"+Q[a]+"Width",!0,i))):(u+=ce.css(e,"padding"+Q[a],!0,i),"padding"!==n?u+=ce.css(e,"border"+Q[a]+"Width",!0,i):s+=ce.css(e,"border"+Q[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u+l}function ot(e,t,n){var r=Xe(e),i=(!le.boxSizingReliable()||n)&&"border-box"===ce.css(e,"boxSizing",!1,r),o=i,a=Ge(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(_e.test(a)){if(!n)return a;a="auto"}return(!le.boxSizingReliable()&&i||!le.reliableTrDimensions()&&fe(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===ce.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===ce.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+it(e,t,n||(i?"border":"content"),o,r,a)+"px"}function at(e,t,n,r,i){return new at.prototype.init(e,t,n,r,i)}ce.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ge(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=F(t),u=ze.test(t),l=e.style;if(u||(t=Ze(s)),a=ce.cssHooks[t]||ce.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=Y.exec(n))&&i[1]&&(n=te(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(ce.cssNumber[s]?"":"px")),le.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=F(t);return ze.test(t)||(t=Ze(s)),(a=ce.cssHooks[t]||ce.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Ge(e,t,r)),"normal"===i&&t in nt&&(i=nt[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),ce.each(["height","width"],function(e,u){ce.cssHooks[u]={get:function(e,t,n){if(t)return!et.test(ce.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?ot(e,u,n):Ue(e,tt,function(){return ot(e,u,n)})},set:function(e,t,n){var r,i=Xe(e),o=!le.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===ce.css(e,"boxSizing",!1,i),s=n?it(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-it(e,u,"border",!1,i)-.5)),s&&(r=Y.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=ce.css(e,u)),rt(0,t,s)}}}),ce.cssHooks.marginLeft=Ye(le.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ge(e,"marginLeft"))||e.getBoundingClientRect().left-Ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),ce.each({margin:"",padding:"",border:"Width"},function(i,o){ce.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+Q[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(ce.cssHooks[i+o].set=rt)}),ce.fn.extend({css:function(e,t){return M(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Xe(e),i=t.length;a<i;a++)o[t[a]]=ce.css(e,t[a],!1,r);return o}return void 0!==n?ce.style(e,t,n):ce.css(e,t)},e,t,1<arguments.length)}}),((ce.Tween=at).prototype={constructor:at,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||ce.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(ce.cssNumber[n]?"":"px")},cur:function(){var e=at.propHooks[this.prop];return e&&e.get?e.get(this):at.propHooks._default.get(this)},run:function(e){var t,n=at.propHooks[this.prop];return this.options.duration?this.pos=t=ce.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):at.propHooks._default.set(this),this}}).init.prototype=at.prototype,(at.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=ce.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){ce.fx.step[e.prop]?ce.fx.step[e.prop](e):1!==e.elem.nodeType||!ce.cssHooks[e.prop]&&null==e.elem.style[Ze(e.prop)]?e.elem[e.prop]=e.now:ce.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=at.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ce.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},ce.fx=at.prototype.init,ce.fx.step={};var st,ut,lt,ct,ft=/^(?:toggle|show|hide)$/,pt=/queueHooks$/;function dt(){ut&&(!1===C.hidden&&ie.requestAnimationFrame?ie.requestAnimationFrame(dt):ie.setTimeout(dt,ce.fx.interval),ce.fx.tick())}function ht(){return ie.setTimeout(function(){st=void 0}),st=Date.now()}function gt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=Q[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function vt(e,t,n){for(var r,i=(yt.tweeners[t]||[]).concat(yt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function yt(o,e,t){var n,a,r=0,i=yt.prefilters.length,s=ce.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=st||ht(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:ce.extend({},e),opts:ce.extend(!0,{specialEasing:{},easing:ce.easing._default},t),originalProperties:e,originalOptions:t,startTime:st||ht(),duration:t.duration,tweens:[],createTween:function(e,t){var n=ce.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=F(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=ce.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=yt.prefilters[r].call(l,o,c,l.opts))return v(n.stop)&&(ce._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return ce.map(c,vt,l),v(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),ce.fx.timer(ce.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}ce.Animation=ce.extend(yt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return te(n.elem,e,Y.exec(t),n),n}]},tweener:function(e,t){v(e)?(t=e,e=["*"]):e=e.match(D);for(var n,r=0,i=e.length;r<i;r++)n=e[r],yt.tweeners[n]=yt.tweeners[n]||[],yt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ee(e),v=_.get(e,"fxshow");for(r in n.queue||(null==(a=ce._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,ce.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ft.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||ce.style(e,r)}if((u=!ce.isEmptyObject(t))||!ce.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=_.get(e,"display")),"none"===(c=ce.css(e,"display"))&&(l?c=l:(re([e],!0),l=e.style.display||l,c=ce.css(e,"display"),re([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===ce.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=_.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&re([e],!0),p.done(function(){for(r in g||re([e]),_.remove(e,"fxshow"),d)ce.style(e,r,d[r])})),u=vt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?yt.prefilters.unshift(e):yt.prefilters.push(e)}}),ce.speed=function(e,t,n){var r=e&&"object"==typeof e?ce.extend({},e):{complete:n||!n&&t||v(e)&&e,duration:e,easing:n&&t||t&&!v(t)&&t};return ce.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in ce.fx.speeds?r.duration=ce.fx.speeds[r.duration]:r.duration=ce.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){v(r.old)&&r.old.call(this),r.queue&&ce.dequeue(this,r.queue)},r},ce.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ee).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=ce.isEmptyObject(t),o=ce.speed(e,n,r),a=function(){var e=yt(this,ce.extend({},t),o);(i||_.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=ce.timers,r=_.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&pt.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||ce.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=_.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=ce.timers,o=n?n.length:0;for(t.finish=!0,ce.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),ce.each(["toggle","show","hide"],function(e,r){var i=ce.fn[r];ce.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(gt(r,!0),e,t,n)}}),ce.each({slideDown:gt("show"),slideUp:gt("hide"),slideToggle:gt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){ce.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),ce.timers=[],ce.fx.tick=function(){var e,t=0,n=ce.timers;for(st=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||ce.fx.stop(),st=void 0},ce.fx.timer=function(e){ce.timers.push(e),ce.fx.start()},ce.fx.interval=13,ce.fx.start=function(){ut||(ut=!0,dt())},ce.fx.stop=function(){ut=null},ce.fx.speeds={slow:600,fast:200,_default:400},ce.fn.delay=function(r,e){return r=ce.fx&&ce.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=ie.setTimeout(e,r);t.stop=function(){ie.clearTimeout(n)}})},lt=C.createElement("input"),ct=C.createElement("select").appendChild(C.createElement("option")),lt.type="checkbox",le.checkOn=""!==lt.value,le.optSelected=ct.selected,(lt=C.createElement("input")).value="t",lt.type="radio",le.radioValue="t"===lt.value;var mt,xt=ce.expr.attrHandle;ce.fn.extend({attr:function(e,t){return M(this,ce.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){ce.removeAttr(this,e)})}}),ce.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ce.prop(e,t,n):(1===o&&ce.isXMLDoc(e)||(i=ce.attrHooks[t.toLowerCase()]||(ce.expr.match.bool.test(t)?mt:void 0)),void 0!==n?null===n?void ce.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=ce.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!le.radioValue&&"radio"===t&&fe(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(D);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),mt={set:function(e,t,n){return!1===t?ce.removeAttr(e,n):e.setAttribute(n,n),n}},ce.each(ce.expr.match.bool.source.match(/\w+/g),function(e,t){var a=xt[t]||ce.find.attr;xt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=xt[o],xt[o]=r,r=null!=a(e,t,n)?o:null,xt[o]=i),r}});var bt=/^(?:input|select|textarea|button)$/i,wt=/^(?:a|area)$/i;function Tt(e){return(e.match(D)||[]).join(" ")}function Ct(e){return e.getAttribute&&e.getAttribute("class")||""}function kt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(D)||[]}ce.fn.extend({prop:function(e,t){return M(this,ce.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[ce.propFix[e]||e]})}}),ce.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ce.isXMLDoc(e)||(t=ce.propFix[t]||t,i=ce.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=ce.find.attr(e,"tabindex");return t?parseInt(t,10):bt.test(e.nodeName)||wt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),le.optSelected||(ce.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ce.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ce.propFix[this.toLowerCase()]=this}),ce.fn.extend({addClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).addClass(t.call(this,e,Ct(this)))}):(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&" "+Tt(r)+" "){for(o=0;o<e.length;o++)i=e[o],n.indexOf(" "+i+" ")<0&&(n+=i+" ");a=Tt(n),r!==a&&this.setAttribute("class",a)}}):this},removeClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).removeClass(t.call(this,e,Ct(this)))}):arguments.length?(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&" "+Tt(r)+" "){for(o=0;o<e.length;o++){i=e[o];while(-1<n.indexOf(" "+i+" "))n=n.replace(" "+i+" "," ")}a=Tt(n),r!==a&&this.setAttribute("class",a)}}):this:this.attr("class","")},toggleClass:function(t,n){var e,r,i,o,a=typeof t,s="string"===a||Array.isArray(t);return v(t)?this.each(function(e){ce(this).toggleClass(t.call(this,e,Ct(this),n),n)}):"boolean"==typeof n&&s?n?this.addClass(t):this.removeClass(t):(e=kt(t),this.each(function(){if(s)for(o=ce(this),i=0;i<e.length;i++)r=e[i],o.hasClass(r)?o.removeClass(r):o.addClass(r);else void 0!==t&&"boolean"!==a||((r=Ct(this))&&_.set(this,"__className__",r),this.setAttribute&&this.setAttribute("class",r||!1===t?"":_.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+Tt(Ct(n))+" ").indexOf(t))return!0;return!1}});var St=/\r/g;ce.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=v(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,ce(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=ce.map(t,function(e){return null==e?"":e+""})),(r=ce.valHooks[this.type]||ce.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=ce.valHooks[t.type]||ce.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(St,""):null==e?"":e:void 0}}),ce.extend({valHooks:{option:{get:function(e){var t=ce.find.attr(e,"value");return null!=t?t:Tt(ce.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!fe(n.parentNode,"optgroup"))){if(t=ce(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=ce.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<ce.inArray(ce.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),ce.each(["radio","checkbox"],function(){ce.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<ce.inArray(ce(e).val(),t)}},le.checkOn||(ce.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Et=ie.location,jt={guid:Date.now()},At=/\?/;ce.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new ie.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||ce.error("Invalid XML: "+(n?ce.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Dt=/^(?:focusinfocus|focusoutblur)$/,Nt=function(e){e.stopPropagation()};ce.extend(ce.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||C],d=ue.call(e,"type")?e.type:e,h=ue.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||C,3!==n.nodeType&&8!==n.nodeType&&!Dt.test(d+ce.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[ce.expando]?e:new ce.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:ce.makeArray(t,[e]),c=ce.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!y(n)){for(s=c.delegateType||d,Dt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||C)&&p.push(a.defaultView||a.parentWindow||ie)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(_.get(o,"events")||Object.create(null))[e.type]&&_.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&$(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!$(n)||u&&v(n[d])&&!y(n)&&((a=n[u])&&(n[u]=null),ce.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Nt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Nt),ce.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=ce.extend(new ce.Event,n,{type:e,isSimulated:!0});ce.event.trigger(r,null,t)}}),ce.fn.extend({trigger:function(e,t){return this.each(function(){ce.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return ce.event.trigger(e,t,n,!0)}});var qt=/\[\]$/,Lt=/\r?\n/g,Ht=/^(?:submit|button|image|reset|file)$/i,Ot=/^(?:input|select|textarea|keygen)/i;function Pt(n,e,r,i){var t;if(Array.isArray(e))ce.each(e,function(e,t){r||qt.test(n)?i(n,t):Pt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==x(e))i(n,e);else for(t in e)Pt(n+"["+t+"]",e[t],r,i)}ce.param=function(e,t){var n,r=[],i=function(e,t){var n=v(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!ce.isPlainObject(e))ce.each(e,function(){i(this.name,this.value)});else for(n in e)Pt(n,e[n],t,i);return r.join("&")},ce.fn.extend({serialize:function(){return ce.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ce.prop(this,"elements");return e?ce.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ce(this).is(":disabled")&&Ot.test(this.nodeName)&&!Ht.test(e)&&(this.checked||!we.test(e))}).map(function(e,t){var n=ce(this).val();return null==n?null:Array.isArray(n)?ce.map(n,function(e){return{name:t.name,value:e.replace(Lt,"\r\n")}}):{name:t.name,value:n.replace(Lt,"\r\n")}}).get()}});var Mt=/%20/g,Rt=/#.*$/,It=/([?&])_=[^&]*/,Wt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ft=/^(?:GET|HEAD)$/,$t=/^\/\//,Bt={},_t={},zt="*/".concat("*"),Xt=C.createElement("a");function Ut(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(D)||[];if(v(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Vt(t,i,o,a){var s={},u=t===_t;function l(e){var r;return s[e]=!0,ce.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Gt(e,t){var n,r,i=ce.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&ce.extend(!0,e,r),e}Xt.href=Et.href,ce.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":zt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":ce.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Gt(Gt(e,ce.ajaxSettings),t):Gt(ce.ajaxSettings,e)},ajaxPrefilter:Ut(Bt),ajaxTransport:Ut(_t),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=ce.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?ce(y):ce.event,x=ce.Deferred(),b=ce.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Wt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace($t,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(D)||[""],null==v.crossDomain){r=C.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Xt.protocol+"//"+Xt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=ce.param(v.data,v.traditional)),Vt(Bt,v,t,T),h)return T;for(i in(g=ce.event&&v.global)&&0==ce.active++&&ce.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ft.test(v.type),f=v.url.replace(Rt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Mt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(At.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(It,"$1"),o=(At.test(f)?"&":"?")+"_="+jt.guid+++o),v.url=f+o),v.ifModified&&(ce.lastModified[f]&&T.setRequestHeader("If-Modified-Since",ce.lastModified[f]),ce.etag[f]&&T.setRequestHeader("If-None-Match",ce.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+zt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Vt(_t,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=ie.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&ie.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<ce.inArray("script",v.dataTypes)&&ce.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(ce.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(ce.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--ce.active||ce.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return ce.get(e,t,n,"json")},getScript:function(e,t){return ce.get(e,void 0,t,"script")}}),ce.each(["get","post"],function(e,i){ce[i]=function(e,t,n,r){return v(t)&&(r=r||n,n=t,t=void 0),ce.ajax(ce.extend({url:e,type:i,dataType:r,data:t,success:n},ce.isPlainObject(e)&&e))}}),ce.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),ce._evalUrl=function(e,t,n){return ce.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){ce.globalEval(e,t,n)}})},ce.fn.extend({wrapAll:function(e){var t;return this[0]&&(v(e)&&(e=e.call(this[0])),t=ce(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return v(n)?this.each(function(e){ce(this).wrapInner(n.call(this,e))}):this.each(function(){var e=ce(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=v(t);return this.each(function(e){ce(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){ce(this).replaceWith(this.childNodes)}),this}}),ce.expr.pseudos.hidden=function(e){return!ce.expr.pseudos.visible(e)},ce.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},ce.ajaxSettings.xhr=function(){try{return new ie.XMLHttpRequest}catch(e){}};var Yt={0:200,1223:204},Qt=ce.ajaxSettings.xhr();le.cors=!!Qt&&"withCredentials"in Qt,le.ajax=Qt=!!Qt,ce.ajaxTransport(function(i){var o,a;if(le.cors||Qt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Yt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&ie.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),ce.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),ce.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return ce.globalEval(e),e}}}),ce.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),ce.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=ce("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=Tt(e.slice(s)),e=e.slice(0,s)),v(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&ce.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?ce("<div>").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var en=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;ce.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),v(e))return r=ae.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(ae.call(arguments)))}).guid=e.guid=e.guid||ce.guid++,i},ce.holdReady=function(e){e?ce.readyWait++:ce.ready(!0)},ce.isArray=Array.isArray,ce.parseJSON=JSON.parse,ce.nodeName=fe,ce.isFunction=v,ce.isWindow=y,ce.camelCase=F,ce.type=x,ce.now=Date.now,ce.isNumeric=function(e){var t=ce.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},ce.trim=function(e){return null==e?"":(e+"").replace(en,"$1")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return ce});var tn=ie.jQuery,nn=ie.$;return ce.noConflict=function(e){return ie.$===ce&&(ie.$=nn),e&&ie.jQuery===ce&&(ie.jQuery=tn),ce},"undefined"==typeof e&&(ie.jQuery=ie.$=ce),ce});
vendor: 10,197 bytes, lines 4-10
4 5/** 6 * Owl Carousel v2.3.4 7 * Copyright 2013-2018 David Deutsch 8 * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE 9 */ 10!function(a,b,c,d){function e(b,c){this.settings=null,this.options=a.extend({},e.Defaults,c),this.$element=a(b),this._handlers={},this._plugins={},this._supress={},this._current=null,this._speed=null,this._coordinates=[],this._breakpoint=null,this._width=null,this._items=[],this._clones=[],this._mergers=[],this._widths=[],this._invalidated={},this._pipe=[],this._drag={time:null,target:null,pointer:null,stage:{start:null,current:null},direction:null},this._states={current:{},tags:{initializing:["busy"],animating:["busy"],dragging:["interacting"]}},a.each(["onResize","onThrottledResize"],a.proxy(function(b,c){this._handlers[c]=a.proxy(this[c],this)},this)),a.each(e.Plugins,a.proxy(function(a,b){this._plugins[a.charAt(0).toLowerCase()+a.slice(1)]=new b(this)},this)),a.each(e.Workers,a.proxy(function(b,c){this._pipe.push({filter:c.filter,run:a.proxy(c.run,this)})},this)),this.setup(),this.initialize()}e.Defaults={items:3,loop:!1,center:!1,rewind:!1,checkVisibility:!0,mouseDrag:!0,touchDrag:!0,pullDrag:!0,freeDrag:!1,margin:0,stagePadding:0,merge:!1,mergeFit:!0,autoWidth:!1,startPosition:0,rtl:!1,smartSpeed:250,fluidSpeed:!1,dragEndSpeed:!1,responsive:{},responsiveRefreshRate:200,responsiveBaseElement:b,fallbackEasing:"swing",slideTransition:"",info:!1,nestedItemSelector:!1,itemElement:"div",stageElement:"div",refreshClass:"owl-refresh",loadedClass:"owl-loaded",loadingClass:"owl-loading",rtlClass:"owl-rtl",responsiveClass:"owl-responsive",dragClass:"owl-drag",itemClass:"owl-item",stageClass:"owl-stage",stageOuterClass:"owl-stage-outer",grabClass:"owl-grab"},e.Width={Default:"default",Inner:"inner",Outer:"outer"},e.Type={Event:"event",State:"state"},e.Plugins={},e.Workers=[{filter:["width","settings"],run:function(){this._width=this.$element.width()}},{filter:["width","items","settings"],run:function(a){a.current=this._items&&this._items[this.relative(this._current)]}},{filter:["items","settings"],run:function(){this.$stage.children(".cloned").remove()}},{filter:["width","items","settings"],run:function(a){var b=this.settings.margin||"",c=!this.settings.autoWidth,d=this.settings.rtl,e={width:"auto","margin-left":d?b:"","margin-right":d?"":b};!c&&this.$stage.children().css(e),a.css=e}},{filter:["width","items","settings"],run:function(a){var b=(this.width()/this.settings.items).toFixed(3)-this.settings.margin,c=null,d=this._items.length,e=!this.settings.autoWidth,f=[];for(a.items={merge:!1,width:b};d--;)c=this._mergers[d],c=this.settings.mergeFit&&Math.min(c,this.settings.items)||c,a.items.merge=c>1||a.items.merge,f[d]=e?b*c:this._items[d].width();this._widths=f}},{filter:["items","settings"],run:function(){var b=[],c=this._items,d=this.settings,e=Math.max(2*d.items,4),f=2*Math.ceil(c.length/2),g=d.loop&&c.length?d.rewind?e:Math.max(e,f):0,h="",i="";for(g/=2;g>0;)b.push(this.normalize(b.length/2,!0)),h+=c[b[b.length-1]][0].outerHTML,b.push(this.normalize(c.length-1-(b.length-1)/2,!0)),i=c[b[b.length-1]][0].outerHTML+i,g-=1;this._clones=b,a(h).addClass("cloned").appendTo(this.$stage),a(i).addClass("cloned").prependTo(this.$stage)}},{filter:["width","items","settings"],run:function(){for(var a=this.settings.rtl?1:-1,b=this._clones.length+this._items.length,c=-1,d=0,e=0,f=[];++c<b;)d=f[c-1]||0,e=this._widths[this.relative(c)]+this.settings.margin,f.push(d+e*a);this._coordinates=f}},{filter:["width","items","settings"],run:function(){var a=this.settings.stagePadding,b=this._coordinates,c={width:Math.ceil(Math.abs(b[b.length-1]))+2*a,"padding-left":a||"","padding-right":a||""};this.$stage.css(c)}},{filter:["width","items","settings"],run:function(a){var b=this._coordinates.length,c=!this.settings.autoWidth,d=this.$stage.children();if(c&&a.items.merge)for(;b--;)a.css.width=this._widths[this.relative(b)],d.eq(b).css(a.css);else c&&(a.css.width=a.items.width,d.css(a.css))}},{filter:["items"],run:function(){this._coordinates.length<1&&this.$stage.removeAttr("style")}},{filter:["width","items","settings"],run:function(a){a.current=a.current?this.$stage.children().index(a.current):0,a.current=Math.max(this.minimum(),Math.min(this.maximum(),a.current)),this.reset(a.current)}},{filter:["position"],run:function(){this.animate(this.coordinates(this._current))}},{filter:["width","position","items","settings"],run:function(){var a,b,c,d,e=this.settings.rtl?1:-1,f=2*this.settings.stagePadding,g=this.coordinates(this.current())+f,h=g+this.width()*e,i=[];for(c=0,d=this._coordinates.length;c<d;c++)a=this._coordinates[c-1]||0,b=Math.abs(this._coordinates[c])+f*e,(this.op(a,"<=",g)&&this.op(a,">",h)||this.op(b,"<",g)&&this.op(b,">",h))&&i.push(c);this.$stage.children(".active").removeClass("active"),this.$stage.children(":eq("+i.join("), :eq(")+")").addClass("active"),this.$stage.children(".center").removeClass("center"),this.settings.center&&this.$stage.children().eq(this.current()).addClass("center")}}],e.prototype.initializeStage=function(){this.$stage=this.$element.find("."+this.settings.stageClass),this.$stage.length||(this.$element.addClass(this.options.loadingClass),this.$stage=a("<"+this.settings.stageElement+">",{class:this.settings.stageClass}).wrap(a("<div/>",{class:this.settings.stageOuterClass})),this.$element.append(this.$stage.parent()))},e.prototype.initializeItems=function(){var b=this.$element.find(".owl-item");if(b.length)return this._items=b.get().map(function(b){return a(b)}),this._mergers=this._items.map(function(){return 1}),void this.refresh();this.replace(this.$element.children().not(this.$stage.parent())),this.isVisible()?this.refresh():this.invalidate("width"),this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass)},e.prototype.initialize=function(){if(this.enter("initializing"),this.trigger("initialize"),this.$element.toggleClass(this.settings.rtlClass,this.settings.rtl),this.settings.autoWidth&&!this.is("pre-loading")){var a,b,c;a=this.$element.find("img"),b=this.settings.nestedItemSelector?"."+this.settings.nestedItemSelector:d,c=this.$element.children(b).width(),a.length&&c<=0&&this.preloadAutoWidthImages(a)}this.initializeStage(),this.initializeItems(),this.registerEventHandlers(),this.leave("initializing"),this.trigger("initialized")},e.prototype.isVisible=function(){return!this.settings.checkVisibility||this.$element.is(":visible")},e.prototype.setup=function(){var b=this.viewport(),c=this.options.responsive,d=-1,e=null;c?(a.each(c,function(a){a<=b&&a>d&&(d=Number(a))}),e=a.extend({},this.options,c[d]),"function"==typeof e.stagePadding&&(e.stagePadding=e.stagePadding()),delete e.responsive,e.responsiveClass&&this.$element.attr("class",this.$element.attr("class").replace(new RegExp("("+this.options.responsiveClass+"-)\\S+\\s","g"),"$1"+d))):e=a.extend({},this.options),this.trigger("change",{property:{name:"settings",value:e}}),this._breakpoint=d,this.settings=e,this.invalidate("settings"),this.trigger("changed",{property:{name:"settings",value:this.settings}})},e.prototype.optionsLogic=function(){this.settings.autoWidth&&(this.settings.stagePadding=!1,this.settings.merge=!1)},e.prototype.prepare=function(b){var c=this.trigger("prepare",{content:b});return c.data||(c.data=a("<"+this.settings.itemElement+"/>").addClass(this.options.itemClass).append(b)),this.trigger("prepared",{content:c.data}),c.data},e.prototype.update=function(){for(var b=0,c=this._pipe.length,d=a.proxy(function(a){return this[a]},this._invalidated),e={};b<c;)(this._invalidated.all||a.grep(this._pipe[b].filter,d).length>0)&&this._pipe[b].run(e),b++;this._invalidated={},!this.is("valid")&&this.enter("valid")},e.prototype.width=function(a){switch(a=a||e.Width.Default){case e.Width.Inner:case e.Width.Outer:return this._width;default:return this._width-2*this.settings.stagePadding+this.settings.margin}},e.prototype.refresh=function(){this.enter("refreshing"),this.trigger("refresh"),this.setup(),this.optionsLogic(),this.$element.addClass(this.options.refreshClass),this.update(),this.$element.removeClass(this.options.refreshClass),this.leave("refreshing"),this.trigger("refreshed")},e.prototype.onThrottledResize=function(){b.clearTimeout(this.resizeTimer),this.resizeTimer=b.setTimeout(this._handlers.onResize,this.settings.responsiveRefreshRate)},e.prototype.onResize=function(){return!!this._items.length&&(this._width!==this.$element.width()&&(!!this.isVisible()&&(this.enter("resizing"),this.trigger("resize").isDefaultPrevented()?(this.leave("resizing"),!1):(this.invalidate("width"),this.refresh(),this.leave("resizing"),void this.trigger("resized")))))},e.prototype.registerEventHandlers=function(){a.support.transition&&this.$stage.on(a.support.transition.end+".owl.core",a.proxy(this.onTransitionEnd,this)),!1!==this.settings.responsive&&this.on(b,"resize",this._handlers.onThrottledResize),this.settings.mouseDrag&&(this.$element.addClass(this.options.dragClass),this.$stage.on("mousedown.owl.core",a.proxy(this.onDragStart,this)),this.$stage.on("dragstart.owl.core selectstart.owl.core",function(){return!1})),this.settings.touchDrag&&(this.$stage.on("touchstart.owl.core",a.proxy(this.onDragStart,this)),this.$stage.on("touchcancel.owl.core",a.proxy(this.onDragEnd,this)))},e.prototype.onDragStart=function(b){var d=null;3!==b.which&&(a.support.transform?(d=this.$stage.css("transform").replace(/.*\(|\)| /g,"").split(","),d={x:d[16===d.length?12:4],y:d[16===d.length?13:5]}):(d=this.$stage.position(),d={x:this.settings.rtl?d.left+this.$stage.width()-this.width()+this.settings.margin:d.left,y:d.top}),this.is("animating")&&(a.support.transform?this.animate(d.x):this.$stage.stop(),this.invalidate("position")),this.$element.toggleClass(this.options.grabClass,"mousedown"===b.type),this.speed(0),this._drag.time=(new Date).getTime(),this._drag.target=a(b.target),this._drag.stage.start=d,this._drag.stage.current=d,this._drag.pointer=this.pointer(b),a(c).on("mouseup.owl.core touchend.owl.core",a.proxy(this.onDragEnd,this)),a(c).one("mousemove.owl.core touchmove.owl.core",a.proxy(function(b){var d=this.difference(this._drag.pointer,this.pointer(b));a(c).on("mousem
10ove.owl.core touchmove.owl.core",a.proxy(this.onDragMove,this)),Math.abs(d.x)<Math.abs(d.y)&&this.is("valid")||(b.preventDefault(),this.enter("dragging"),this.trigger("drag"))},this)))},e.prototype.onDragMove=function(a){var b=null,c=null,d=null,e=this.difference(this._drag.pointer,this.pointer(a)),f=this.difference(this._drag.stage.start,e);this.is("dragging")&&(a.preventDefault(),this.settings.loop?(b=this.coordinates(this.minimum()),c=this.coordinates(this.maximum()+1)-b,f.x=((f.x-b)%c+c)%c+b):(b=this.settings.rtl?this.coordinates(this.maximum()):this.coordinates(this.minimum()),c=this.settings.rtl?this.coordinates(this.minimum()):this.coordinates(this.maximum()),d=this.settings.pullDrag?-1*e.x/5:0,f.x=Math.max(Math.min(f.x,b+d),c+d)),this._drag.stage.current=f,this.animate(f.x))},e.prototype.onDragEnd=function(b){var d=this.difference(this._drag.pointer,this.pointer(b)),e=this._drag.stage.current,f=d.x>0^this.settings.rtl?"left":"right";a(c).off(".owl.core"),this.$element.removeClass(this.options.grabClass),(0!==d.x&&this.is("dragging")||!this.is("valid"))&&(this.speed(this.settings.dragEndSpeed||this.settings.smartSpeed),this.current(this.closest(e.x,0!==d.x?f:this._drag.direction)),this.invalidate("position"),this.update(),this._drag.direction=f,(Math.abs(d.x)>3||(new Date).getTime()-this._drag.time>300)&&this._drag.target.one("click.owl.core",function(){return!1})),this.is("dragging")&&(this.leave("dragging"),this.trigger("dragged"))},e.prototype.closest=function(b,c){var e=-1,f=30,g=this.width(),h=this.coordinates();return this.settings.freeDrag||a.each(h,a.proxy(function(a,i){return"left"===c&&b>i-f&&b<i+f?e=a:"right"===c&&b>i-g-f&&b<i-g+f?e=a+1:this.op(b,"<",i)&&this.op(b,">",h[a+1]!==d?h[a+1]:i-g)&&(e="left"===c?a+1:a),-1===e},this)),this.settings.loop||(this.op(b,">",h[this.minimum()])?e=b=this.minimum():this.op(b,"<",h[this.maximum()])&&(e=b=this.maximum())),e},e.prototype.animate=function(b){var c=this.speed()>0;this.is("animating")&&this.onTransitionEnd(),c&&(this.enter("animating"),this.trigger("translate")),a.support.transform3d&&a.support.transition?this.$stage.css({transform:"translate3d("+b+"px,0px,0px)",transition:this.speed()/1e3+"s"+(this.settings.slideTransition?" "+this.settings.slideTransition:"")}):c?this.$stage.animate({left:b+"px"},this.speed(),this.settings.fallbackEasing,a.proxy(this.onTransitionEnd,this)):this.$stage.css({left:b+"px"})},e.prototype.is=function(a){return this._states.current[a]&&this._states.current[a]>0},e.prototype.current=function(a){if(a===d)return this._current;if(0===this._items.length)return d;if(a=this.normalize(a),this._current!==a){var b=this.trigger("change",{property:{name:"position",value:a}});b.data!==d&&(a=this.normalize(b.data)),this._current=a,this.invalidate("position"),this.trigger("changed",{property:{name:"position",value:this._current}})}return this._current},e.prototype.invalidate=function(b){return"string"===a.type(b)&&(this._invalidated[b]=!0,this.is("valid")&&this.leave("valid")),a.map(this._invalidated,function(a,b){return b})},e.prototype.reset=function(a){(a=this.normalize(a))!==d&&(this._speed=0,this._current=a,this.suppress(["translate","translated"]),this.animate(this.coordinates(a)),this.release(["translate","translated"]))},e.prototype.normalize=function(a,b){var c=this._items.length,e=b?0:this._clones.length;return!this.isNumeric(a)||c<1?a=d:(a<0||a>=c+e)&&(a=((a-e/2)%c+c)%c+e/2),a},e.prototype.relative=function(a){return a-=this._clones.length/2,this.normalize(a,!0)},e.prototype.maximum=function(a){var b,c,d,e=this.settings,f=this._coordinates.length;if(e.loop)f=this._clones.length/2+this._items.length-1;else if(e.autoWidth||e.merge){if(b=this._items.length)for(c=this._items[--b].width(),d=this.$element.width();b--&&!((c+=this._items[b].width()+this.settings.margin)>d););f=b+1}else f=e.center?this._items.length-1:this._items.length-e.items;return a&&(f-=this._clones.length/2),Math.max(f,0)},e.prototype.minimum=function(a){return a?0:this._clones.length/2},e.prototype.items=function(a){return a===d?this._items.slice():(a=this.normalize(a,!0),this._items[a])},e.prototype.mergers=function(a){return a===d?this._mergers.slice():(a=this.normalize(a,!0),this._mergers[a])},e.prototype.clones=function(b){var c=this._clones.length/2,e=c+this._items.length,f=function(a){return a%2==0?e+a/2:c-(a+1)/2};return b===d?a.map(this._clones,function(a,b){return f(b)}):a.map(this._clones,function(a,c){return a===b?f(c):null})},e.prototype.speed=function(a){return a!==d&&(this._speed=a),this._speed},e.prototype.coordinates=function(b){var c,e=1,f=b-1;return b===d?a.map(this._coordinates,a.proxy(function(a,b){return this.coordinates(b)},this)):(this.settings.center?(this.settings.rtl&&(e=-1,f=b+1),c=this._coordinates[b],c+=(this.width()-c+(this._coordinates[f]||0))/2*e):c=this._coordinates[f]||0,c=Math.ceil(c))},e.prototype.duration=function(a,b,c){return 0===c?0:Math.min(Math.max(Math.abs(b-a),1),6)*Math.abs(c||this.settings.smartSpeed)},e.prototype.to=function(a,b){var c=this.current(),d=null,e=a-this.relative(c),f=(e>0)-(e<0),g=this._items.length,h=this.minimum(),i=this.maximum();this.settings.loop?(!this.settings.rewind&&Math.abs(e)>g/2&&(e+=-1*f*g),a=c+e,(d=((a-h)%g+g)%g+h)!==a&&d-e<=i&&d-e>0&&(c=d-e,a=d,this.reset(c))):this.settings.rewind?(i+=1,a=(a%i+i)%i):a=Math.max(h,Math.min(i,a)),this.speed(this.duration(c,a,b)),this.current(a),this.isVisible()&&this.update()},e.prototype.next=function(a){a=a||!1,this.to(this.relative(this.current())+1,a)},e.prototype.prev=function(a){a=a||!1,this.to(this.relative(this.current())-1,a)}
vendor: 4,770 bytes, line 10
10,e.prototype.onTransitionEnd=function(a){if(a!==d&&(a.stopPropagation(),(a.target||a.srcElement||a.originalTarget)!==this.$stage.get(0)))return!1;this.leave("animating"),this.trigger("translated")},e.prototype.viewport=function(){var d;return this.options.responsiveBaseElement!==b?d=a(this.options.responsiveBaseElement).width():b.innerWidth?d=b.innerWidth:c.documentElement&&c.documentElement.clientWidth?d=c.documentElement.clientWidth:console.warn("Can not detect viewport width."),d},e.prototype.replace=function(b){this.$stage.empty(),this._items=[],b&&(b=b instanceof jQuery?b:a(b)),this.settings.nestedItemSelector&&(b=b.find("."+this.settings.nestedItemSelector)),b.filter(function(){return 1===this.nodeType}).each(a.proxy(function(a,b){b=this.prepare(b),this.$stage.append(b),this._items.push(b),this._mergers.push(1*b.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)},this)),this.reset(this.isNumeric(this.settings.startPosition)?this.settings.startPosition:0),this.invalidate("items")},e.prototype.add=function(b,c){var e=this.relative(this._current);c=c===d?this._items.length:this.normalize(c,!0),b=b instanceof jQuery?b:a(b),this.trigger("add",{content:b,position:c}),b=this.prepare(b),0===this._items.length||c===this._items.length?(0===this._items.length&&this.$stage.append(b),0!==this._items.length&&this._items[c-1].after(b),this._items.push(b),this._mergers.push(1*b.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)):(this._items[c].before(b),this._items.splice(c,0,b),this._mergers.splice(c,0,1*b.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)),this._items[e]&&this.reset(this._items[e].index()),this.invalidate("items"),this.trigger("added",{content:b,position:c})},e.prototype.remove=function(a){(a=this.normalize(a,!0))!==d&&(this.trigger("remove",{content:this._items[a],position:a}),this._items[a].remove(),this._items.splice(a,1),this._mergers.splice(a,1),this.invalidate("items"),this.trigger("removed",{content:null,position:a}))},e.prototype.preloadAutoWidthImages=function(b){b.each(a.proxy(function(b,c){this.enter("pre-loading"),c=a(c),a(new Image).one("load",a.proxy(function(a){c.attr("src",a.target.src),c.css("opacity",1),this.leave("pre-loading"),!this.is("pre-loading")&&!this.is("initializing")&&this.refresh()},this)).attr("src",c.attr("src")||c.attr("data-src")||c.attr("data-src-retina"))},this))},e.prototype.destroy=function(){this.$element.off(".owl.core"),this.$stage.off(".owl.core"),a(c).off(".owl.core"),!1!==this.settings.responsive&&(b.clearTimeout(this.resizeTimer),this.off(b,"resize",this._handlers.onThrottledResize));for(var d in this._plugins)this._plugins[d].destroy();this.$stage.children(".cloned").remove(),this.$stage.unwrap(),this.$stage.children().contents().unwrap(),this.$stage.children().unwrap(),this.$stage.remove(),this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr("class",this.$element.attr("class").replace(new RegExp(this.options.responsiveClass+"-\\S+\\s","g"),"")).removeData("owl.carousel")},e.prototype.op=function(a,b,c){var d=this.settings.rtl;switch(b){case"<":return d?a>c:a<c;case">":return d?a<c:a>c;case">=":return d?a<=c:a>=c;case"<=":return d?a>=c:a<=c}},e.prototype.on=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,d):a.attachEvent&&a.attachEvent("on"+b,c)},e.prototype.off=function(a,b,c,d){a.removeEventListener?a.removeEventListener(b,c,d):a.detachEvent&&a.detachEvent("on"+b,c)},e.prototype.trigger=function(b,c,d,f,g){var h={item:{count:this._items.length,index:this.current()}},i=a.camelCase(a.grep(["on",b,d],function(a){return a}).join("-").toLowerCase()),j=a.Event([b,"owl",d||"carousel"].join(".").toLowerCase(),a.extend({relatedTarget:this},h,c));return this._supress[b]||(a.each(this._plugins,function(a,b){b.onTrigger&&b.onTrigger(j)}),this.register({type:e.Type.Event,name:b}),this.$element.trigger(j),this.settings&&"function"==typeof this.settings[i]&&this.settings[i].call(this,j)),j},e.prototype.enter=function(b){a.each([b].concat(this._states.tags[b]||[]),a.proxy(function(a,b){this._states.current[b]===d&&(this._states.current[b]=0),this._states.current[b]++},this))},e.prototype.leave=function(b){a.each([b].concat(this._states.tags[b]||[]),a.proxy(function(a,b){this._states.current[b]--},this))},e.prototype.register=function(b){if(b.type===e.Type.Event){if(a.event.special[b.name]||(a.event.special[b.name]={}),!a.event.special[b.name].owl){var c=a.event.special[b.name]._default;a.event.special[b.name]._default=function(a){return!c||!c.apply||a.namespace&&-1!==a.namespace.indexOf("owl")
vendor: 1,311 bytes, line 10
10?a.namespace&&a.namespace.indexOf("owl")>-1:c.apply(this,arguments)},a.event.special[b.name].owl=!0}}else b.type===e.Type.State&&(this._states.tags[b.name]?this._states.tags[b.name]=this._states.tags[b.name].concat(b.tags):this._states.tags[b.name]=b.tags,this._states.tags[b.name]=a.grep(this._states.tags[b.name],a.proxy(function(c,d){return a.inArray(c,this._states.tags[b.name])===d},this)))},e.prototype.suppress=function(b){a.each(b,a.proxy(function(a,b){this._supress[b]=!0},this))},e.prototype.release=function(b){a.each(b,a.proxy(function(a,b){delete this._supress[b]},this))},e.prototype.pointer=function(a){var c={x:null,y:null};return a=a.originalEvent||a||b.event,a=a.touches&&a.touches.length?a.touches[0]:a.changedTouches&&a.changedTouches.length?a.changedTouches[0]:a,a.pageX?(c.x=a.pageX,c.y=a.pageY):(c.x=a.clientX,c.y=a.clientY),c},e.prototype.isNumeric=function(a){return!isNaN(parseFloat(a))},e.prototype.difference=function(a,b){return{x:a.x-b.x,y:a.y-b.y}},a.fn.owlCarousel=function(b){var c=Array.prototype.slice.call(arguments,1);return this.each(function(){var d=a(this),f=d.data("owl.carousel");f||(f=new e(this,"object"==typeof b&&b),d.data("owl.carousel",f),a.each(["next","prev","to","destroy","refresh","replace","add","remove"],function(b,c){f.register({type:e.Type.Event,name:c}
vendor: 14,213 bytes, lines 10-11
10),f.$element.on(c+".owl.carousel.core",a.proxy(function(a){a.namespace&&a.relatedTarget!==this&&(this.suppress([c]),f[c].apply(this,[].slice.call(arguments,1)),this.release([c]))},f))})),"string"==typeof b&&"_"!==b.charAt(0)&&f[b].apply(f,c)})},a.fn.owlCarousel.Constructor=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._interval=null,this._visible=null,this._handlers={"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoRefresh&&this.watch()},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};e.Defaults={autoRefresh:!0,autoRefreshInterval:500},e.prototype.watch=function(){this._interval||(this._visible=this._core.isVisible(),this._interval=b.setInterval(a.proxy(this.refresh,this),this._core.settings.autoRefreshInterval))},e.prototype.refresh=function(){this._core.isVisible()!==this._visible&&(this._visible=!this._visible,this._core.$element.toggleClass("owl-hidden",!this._visible),this._visible&&this._core.invalidate("width")&&this._core.refresh())},e.prototype.destroy=function(){var a,c;b.clearInterval(this._interval);for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},a.fn.owlCarousel.Constructor.Plugins.AutoRefresh=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._loaded=[],this._handlers={"initialized.owl.carousel change.owl.carousel resized.owl.carousel":a.proxy(function(b){if(b.namespace&&this._core.settings&&this._core.settings.lazyLoad&&(b.property&&"position"==b.property.name||"initialized"==b.type)){var c=this._core.settings,e=c.center&&Math.ceil(c.items/2)||c.items,f=c.center&&-1*e||0,g=(b.property&&b.property.value!==d?b.property.value:this._core.current())+f,h=this._core.clones().length,i=a.proxy(function(a,b){this.load(b)},this);for(c.lazyLoadEager>0&&(e+=c.lazyLoadEager,c.loop&&(g-=c.lazyLoadEager,e++));f++<e;)this.load(h/2+this._core.relative(g)),h&&a.each(this._core.clones(this._core.relative(g)),i),g++}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};e.Defaults={lazyLoad:!1,lazyLoadEager:0},e.prototype.load=function(c){var d=this._core.$stage.children().eq(c),e=d&&d.find(".owl-lazy");!e||a.inArray(d.get(0),this._loaded)>-1||(e.each(a.proxy(function(c,d){var e,f=a(d),g=b.devicePixelRatio>1&&f.attr("data-src-retina")||f.attr("data-src")||f.attr("data-srcset");this._core.trigger("load",{element:f,url:g},"lazy"),f.is("img")?f.one("load.owl.lazy",a.proxy(function(){f.css("opacity",1),this._core.trigger("loaded",{element:f,url:g},"lazy")},this)).attr("src",g):f.is("source")?f.one("load.owl.lazy",a.proxy(function(){this._core.trigger("loaded",{element:f,url:g},"lazy")},this)).attr("srcset",g):(e=new Image,e.onload=a.proxy(function(){f.css({"background-image":'url("'+g+'")',opacity:"1"}),this._core.trigger("loaded",{element:f,url:g},"lazy")},this),e.src=g)},this)),this._loaded.push(d.get(0)))},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this._core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Lazy=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(c){this._core=c,this._previousHeight=null,this._handlers={"initialized.owl.carousel refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&this.update()},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&"position"===a.property.name&&this.update()},this),"loaded.owl.lazy":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&a.element.closest("."+this._core.settings.itemClass).index()===this._core.current()&&this.update()},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers),this._intervalId=null;var d=this;a(b).on("load",function(){d._core.settings.autoHeight&&d.update()}),a(b).resize(function(){d._core.settings.autoHeight&&(null!=d._intervalId&&clearTimeout(d._intervalId),d._intervalId=setTimeout(function(){d.update()},250))})};e.Defaults={autoHeight:!1,autoHeightClass:"owl-height"},e.prototype.update=function(){var b=this._core._current,c=b+this._core.settings.items,d=this._core.settings.lazyLoad,e=this._core.$stage.children().toArray().slice(b,c),f=[],g=0;a.each(e,function(b,c){f.push(a(c).height())}),g=Math.max.apply(null,f),g<=1&&d&&this._previousHeight&&(g=this._previousHeight),this._previousHeight=g,this._core.$stage.parent().height(g).addClass(this._core.settings.autoHeightClass)},e.prototype.destroy=function(){var a,b;for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.AutoHeight=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._videos={},this._playing=null,this._handlers={"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.register({type:"state",name:"playing",tags:["interacting"]})},this),"resize.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.video&&this.isInFullScreen()&&a.preventDefault()},this),"refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.is("resizing")&&this._core.$stage.find(".cloned .owl-video-frame").remove()},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&"position"===a.property.name&&this._playing&&this.stop()},this),"prepared.owl.carousel":a.proxy(function(b){if(b.namespace){var c=a(b.content).find(".owl-video");c.length&&(c.css("display","none"),this.fetch(c,a(b.content)))}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers),this._core.$element.on("click.owl.video",".owl-video-play-icon",a.proxy(function(a){this.play(a)},this))};e.Defaults={video:!1,videoHeight:!1,videoWidth:!1},e.prototype.fetch=function(a,b){var c=function(){return a.attr("data-vimeo-id")?"vimeo":a.attr("data-vzaar-id")?"vzaar":"youtube"}(),d=a.attr("data-vimeo-id")||a.attr("data-youtube-id")||a.attr("data-vzaar-id"),e=a.attr("data-width")||this._core.settings.videoWidth,f=a.attr("data-height")||this._core.settings.videoHeight,g=a.attr("href");if(!g)throw new Error("Missing video URL.");if(d=g.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com|be\-nocookie\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/),d[3].indexOf("youtu")>-1)c="youtube";else if(d[3].indexOf("vimeo")>-1)c="vimeo";else{if(!(d[3].indexOf("vzaar")>-1))throw new Error("Video URL not supported.");c="vzaar"}d=d[6],this._videos[g]={type:c,id:d,width:e,height:f},b.attr("data-video",g),this.thumbnail(a,this._videos[g])},e.prototype.thumbnail=function(b,c){var d,e,f,g=c.width&&c.height?"width:"+c.width+"px;height:"+c.height+"px;":"",h=b.find("img"),i="src",j="",k=this._core.settings,l=function(c){e='<div class="owl-video-play-icon"></div>',d=k.lazyLoad?a("<div/>",{class:"owl-video-tn "+j,srcType:c}):a("<div/>",{class:"owl-video-tn",style:"opacity:1;background-image:url("+c+")"}),b.after(d),b.after(e)};if(b.wrap(a("<div/>",{class:"owl-video-wrapper",style:g})),this._core.settings.lazyLoad&&(i="data-src",j="owl-lazy"),h.length)return l(h.attr(i)),h.remove(),!1;"youtube"===c.type?(f="//img.youtube.com/vi/"+c.id+"/hqdefault.jpg",l(f)):"vimeo"===c.type?a.ajax({type:"GET",url:"//vimeo.com/api/v2/video/"+c.id+".json",jsonp:"callback",dataType:"jsonp",success:function(a){f=a[0].thumbnail_large,l(f)}}):"vzaar"===c.type&&a.ajax({type:"GET",url:"//vzaar.com/api/videos/"+c.id+".json",jsonp:"callback",dataType:"jsonp",success:function(a){f=a.framegrab_url,l(f)}})},e.prototype.stop=function(){this._core.trigger("stop",null,"video"),this._playing.find(".owl-video-frame").remove(),this._playing.removeClass("owl-video-playing"),this._playing=null,this._core.leave("playing"),this._core.trigger("stopped",null,"video")},e.prototype.play=function(b){var c,d=a(b.target),e=d.closest("."+this._core.settings.itemClass),f=this._videos[e.attr("data-video")],g=f.width||"100%",h=f.height||this._core.$stage.height();this._playing||(this._core.enter("playing"),this._core.trigger("play",null,"video"),e=this._core.items(this._core.relative(e.index())),this._core.reset(e.index()),c=a('<iframe frameborder="0" allowfullscreen mozallowfullscreen webkitAllowFullScreen ></iframe>'),c.attr("height",h),c.attr("width",g),"youtube"===f.type?c.attr("src","//www.youtube.com/embed/"+f.id+"?autoplay=1&rel=0&v="+f.id):"vimeo"===f.type?c.attr("src","//player.vimeo.com/video/"+f.id+"?autoplay=1"):"vzaar"===f.type&&c.attr("src","//view.vzaar.com/"+f.id+"/player?autoplay=true"),a(c).wrap('<div class="owl-video-frame" />').insertAfter(e.find(".owl-video")),this._playing=e.addClass("owl-video-playing"))},e.prototype.isInFullScreen=function(){var b=c.fullscreenElement||c.mozFullScreenElement||c.webkitFullscreenElement;return b&&a(b).parent().hasClass("owl-video-frame")},e.prototype.destroy=function(){var a,b;this._core.$element.off("click.owl.video");for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Video=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this.core=b,this.core.options=a.extend({},e.Defaults,this.core.options),this.swapping=!0,this.previous=d,this.next=d,this.handlers={"change.owl.carousel":a.proxy(function(a){a.namespace&&"position"==a.property.name&&(this.previous=this.core.current(),this.next=a.property.value)},this),"drag.owl.carousel dragged.owl.carousel translated.owl.carousel":a.proxy(function(a){a.namespace&&(this.swapping="translated"==a.type)},this),"translate.owl.carousel":a.proxy(function(a){a.namespace&&this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()},this)},this.core.$element.on(this.handlers)};e.Defaults={animateOut:!1, 11animateIn:!1},e.prototype.swap=function(){if(1===this.core.settings.items&&a.support.animation&&a.support.transition){this.core.speed(0);var b,c=a.proxy(this.clear,this),d=this.core.$stage.children().eq(this.previous),e=this.core.$stage.children().eq(this.next),f=this.core.settings.animateIn,g=this.core.settings.animateOut;this.core.current()!==this.previous&&(g&&(b=this.core.coordinates(this.previous)-this.core.coordinates(this.next),d.one(a.support.animation.end,c).css({left:b+"px"}).addClass("animated owl-animated-out").addClass(g)),f&&e.one(a.support.animation.end,c).addClass("animated owl-animated-in").addClass(f))}},e.prototype.clear=function(b){a(b.target).css({left:""}).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.onTransitionEnd()},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Animate=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._call=null,this._time=0,this._timeout=0,this._paused=!0,this._handlers={"changed.owl.carousel":a.proxy(function(a){a.namespace&&"settings"===a.property.name?this._core.settings.autoplay?this.play():this.stop():a.namespace&&"position"===a.property.name&&this._paused&&(this._time=0)},this),"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoplay&&this.play()},this),"play.owl.autoplay":a.proxy(function(a,b,c){a.namespace&&this.play(b,c)},this),"stop.owl.autoplay":a.proxy(function(a){a.namespace&&this.stop()},this),"mouseover.owl.autoplay":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"mouseleave.owl.autoplay":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.play()},this),"touchstart.owl.core":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"touchend.owl.core":a.proxy(function(){this._core.settings.autoplayHoverPause&&this.play()},this)},this._core.$element.on(this._handlers),this._core.options=a.extend({},e.Defaults,this._core.options)};e.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},e.prototype._next=function(d){this._call=b.setTimeout(a.proxy(this._next,this,d),this._timeout*(Math.round(this.read()/this._timeout)+1)-this.read()),this._core.is("interacting")||c.hidden||this._core.next(d||this._core.settings.autoplaySpeed)},e.prototype.read=function(){return(new Date).getTime()-this._time},e.prototype.play=function(c,d){var e;this._core.is("rotating")||this._core.enter("rotating"),c=c||this._core.settings.autoplayTimeout,e=Math.min(this._time%(this._timeout||c),c),this._paused?(this._time=this.read(),this._paused=!1):b.clearTimeout(this._call),this._time+=this.read()%c-e,this._timeout=c,this._call=b.setTimeout(a.proxy(this._next,this,d),c-e)},e.prototype.stop=function(){this._core.is("rotating")&&(this._time=0,this._paused=!0,b.clearTimeout(this._call),this._core.leave("rotating"))},e.prototype.pause=function(){this._core.is("rotating")&&!this._paused&&(this._time=this.read(),this._paused=!0,b.clearTimeout(this._call))},e.prototype.destroy=function(){var a,b;this.stop();for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.autoplay=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){"use strict";var e=function(b){this._core=b,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to}
vendor: 5,569 bytes, line 11
11,this._handlers={"prepared.owl.carousel":a.proxy(function(b){b.namespace&&this._core.settings.dotsData&&this._templates.push('<div class="'+this._core.settings.dotClass+'">'+a(b.content).find("[data-dot]").addBack("[data-dot]").attr("data-dot")+"</div>")},this),"added.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,0,this._templates.pop())},this),"remove.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,1)},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&"position"==a.property.name&&this.draw()},this),"initialized.owl.carousel":a.proxy(function(a){a.namespace&&!this._initialized&&(this._core.trigger("initialize",null,"navigation"),this.initialize(),this.update(),this.draw(),this._initialized=!0,this._core.trigger("initialized",null,"navigation"))},this),"refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._initialized&&(this._core.trigger("refresh",null,"navigation"),this.update(),this.draw(),this._core.trigger("refreshed",null,"navigation"))},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers)};e.Defaults={nav:!1,navText:['<span aria-label="Previous">‹</span>','<span aria-label="Next">›</span>'],navSpeed:!1,navElement:'button type="button" role="presentation"',navContainer:!1,navContainerClass:"owl-nav",navClass:["owl-prev","owl-next"],slideBy:1,dotClass:"owl-dot",dotsClass:"owl-dots",dots:!0,dotsEach:!1,dotsData:!1,dotsSpeed:!1,dotsContainer:!1},e.prototype.initialize=function(){var b,c=this._core.settings;this._controls.$relative=(c.navContainer?a(c.navContainer):a("<div>").addClass(c.navContainerClass).appendTo(this.$element)).addClass("disabled"),this._controls.$previous=a("<"+c.navElement+">").addClass(c.navClass[0]).html(c.navText[0]).prependTo(this._controls.$relative).on("click",a.proxy(function(a){this.prev(c.navSpeed)},this)),this._controls.$next=a("<"+c.navElement+">").addClass(c.navClass[1]).html(c.navText[1]).appendTo(this._controls.$relative).on("click",a.proxy(function(a){this.next(c.navSpeed)},this)),c.dotsData||(this._templates=[a('<button role="button">').addClass(c.dotClass).append(a("<span>")).prop("outerHTML")]),this._controls.$absolute=(c.dotsContainer?a(c.dotsContainer):a("<div>").addClass(c.dotsClass).appendTo(this.$element)).addClass("disabled"),this._controls.$absolute.on("click","button",a.proxy(function(b){var d=a(b.target).parent().is(this._controls.$absolute)?a(b.target).index():a(b.target).parent().index();b.preventDefault(),this.to(d,c.dotsSpeed)},this));for(b in this._overrides)this._core[b]=a.proxy(this[b],this)},e.prototype.destroy=function(){var a,b,c,d,e;e=this._core.settings;for(a in this._handlers)this.$element.off(a,this._handlers[a]);for(b in this._controls)"$relative"===b&&e.navContainer?this._controls[b].html(""):this._controls[b].remove();for(d in this.overides)this._core[d]=this._overrides[d];for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},e.prototype.update=function(){var a,b,c,d=this._core.clones().length/2,e=d+this._core.items().length,f=this._core.maximum(!0),g=this._core.settings,h=g.center||g.autoWidth||g.dotsData?1:g.dotsEach||g.items;if("page"!==g.slideBy&&(g.slideBy=Math.min(g.slideBy,g.items)),g.dots||"page"==g.slideBy)for(this._pages=[],a=d,b=0,c=0;a<e;a++){if(b>=h||0===b){if(this._pages.push({start:Math.min(f,a-d),end:a-d+h-1}),Math.min(f,a-d)===f)break;b=0,++c}b+=this._core.mergers(this._core.relative(a))}},e.prototype.draw=function(){var b,c=this._core.settings,d=this._core.items().length<=c.items,e=this._core.relative(this._core.current()),f=c.loop||c.rewind;this._controls.$relative.toggleClass("disabled",!c.nav||d),c.nav&&(this._controls.$previous.toggleClass("disabled",!f&&e<=this._core.minimum(!0)),this._controls.$next.toggleClass("disabled",!f&&e>=this._core.maximum(!0))),this._controls.$absolute.toggleClass("disabled",!c.dots||d),c.dots&&(b=this._pages.length-this._controls.$absolute.children().length,c.dotsData&&0!==b?this._controls.$absolute.html(this._templates.join("")):b>0?this._controls.$absolute.append(new Array(b+1).join(this._templates[0])):b<0&&this._controls.$absolute.children().slice(b).remove(),this._controls.$absolute.find(".active").removeClass("active"),this._controls.$absolute.children().eq(a.inArray(this.current(),this._pages)).addClass("active"))},e.prototype.onTrigger=function(b){var c=this._core.settings;b.page={index:a.inArray(this.current(),this._pages),count:this._pages.length,size:c&&(c.center||c.autoWidth||c.dotsData?1:c.dotsEach||c.items)}},e.prototype.current=function(){var b=this._core.relative(this._core.current());return a.grep(this._pages,a.proxy(function(a,c){return a.start<=b&&a.end>=b},this)).pop()},e.prototype.getPosition=function(b){var c,d,e=this._core.settings;return"page"==e.slideBy?(c=a.inArray(this.current(),this._pages),d=this._pages.length,b?++c:--c,c=this._pages[(c%d+d)%d].start):(c=this._core.relative(this._core.current()),d=this._core.items().length,b?c+=e.slideBy:c-=e.slideBy),c},e.prototype.next=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!0),b)},e.prototype.prev=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!1),b)},e.prototype.to=function(b,c,d){var e;!d&&this._pages.length?(e=this._pages.length,a.proxy(this._overrides.to,this._core)(this._pages[(b%e+e)%e].start,c)):a.proxy(this._overrides.to,this._core)(b,c)},a.fn.owlCarousel.Constructor.Plugins.Navigation=e}(
11window.Zepto||window.jQuery,window,document),function(a,b,c,d){"use strict";var e=function(c){this._core=c,this._hashes={},this.$element=this._core.$element,this._handlers={"initialized.owl.carousel":a.proxy(function(c){c.namespace&&"URLHash"===this._core.settings.startPosition&&a(b).trigger("hashchange.owl.navigation")},this),"prepared.owl.carousel":a.proxy(function(b){if(b.namespace){var c=a(b.content).find("[data-hash]").addBack("[data-hash]").attr("data-hash");if(!c)return;this._hashes[c]=b.content}},this),"changed.owl.carousel":a.proxy(function(c){if(c.namespace&&"position"===c.property.name){var d=this._core.items(this._core.relative(this._core.current())),e=a.map(this._hashes,function(a,b){return a===d?b:null}).join();if(!e||b.location.hash.slice(1)===e)return;b.location.hash=e}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers),a(b).on("hashchange.owl.navigation",a.proxy(function(a){var c=b.location.hash.substring(1),e=this._core.$stage.children(),f=this._hashes[c]&&e.index(this._hashes[c]);f!==d&&f!==this._core.current()&&this._core.to(this._core.relative(f),!1,!0)},this))};e.Defaults={URLhashListener:!1},e.prototype.destroy=function(){var c,d;a(b).off("hashchange.owl.navigation");for(c in this._handlers)this._core.$element.off(c,this._handlers[c]);for(d in Object.getOwnPropertyNames(this))"function"!=typeof this[d]&&(this[d]=null)},a.fn.owlCarousel.Constructor.Plugins.Hash=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){function e(b,c){var e=!1,f=b.charAt(0).toUpperCase()+b.slice(1);return a.each((b+" "+h.join(f+" ")+f).split(" "),function(a,b){if(g[b]!==d)return e=!c||b,!1}),e}function f(a){return e(a,!0)}var g=a("<support>").get(0).style,h="Webkit Moz O ms".split(" "),i={transition:{end:{WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",transition:"transitionend"}},animation:{end:{WebkitAnimation:"webkitAnimationEnd",MozAnimation:"animationend",OAnimation:"oAnimationEnd",animation:"animationend"}}},j={csstransforms:function(){return!!e("transform")},csstransforms3d:function(){return!!e("perspective")},csstransitions:function(){return!!e("transition")},cssanimations:function(){return!!e("animation")}};j.csstransitions()&&(a.support.transition=new String(f("transition")),a.support.transition.end=i.transition.end[a.support.transition]),j.cssanimations()&&(a.support.animation=new String(f("animation")),a.support.animation.end=i.animation.end[a.support.animation]),j.csstransforms()&&(a.support.transform=new String(f("transform")),a.support.transform3d=j.csstransforms3d())}(window.Zepto||window.jQuery,window,document); 12!function(i){"use strict";"function"==typeof define&&define.amd?define(["jquery"],i):"undefined"!=typeof exports?module.exports=i(require("jquery")):i(jQuery)}(function(i){"use strict";var e=window.Slick||{};(e=function(){var e=0;return function(t,o){var s,n=this;n.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:i(t),appendDots:i(t),arrows:!0,asNavFor:null,prevArrow:'<button class="slick-prev" aria-label="Previous" type="button">Previous</button>',nextArrow:'<button class="slick-next" aria-label="Next" type="button">Next</button>',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(e,t){return i('<button type="button" />').text(t+1)},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,focusOnChange:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnFocus:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},n.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,scrolling:!1,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,
vendor: 6,594 bytes, line 12
12sliding:!1,slideOffset:0,swipeLeft:null,swiping:!1,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},i.extend(n,n.initials),n.activeBreakpoint=null,n.animType=null,n.animProp=null,n.breakpoints=[],n.breakpointSettings=[],n.cssTransitions=!1,n.focussed=!1,n.interrupted=!1,n.hidden="hidden",n.paused=!0,n.positionProp=null,n.respondTo=null,n.rowCount=1,n.shouldClick=!0,n.$slider=i(t),n.$slidesCache=null,n.transformType=null,n.transitionType=null,n.visibilityChange="visibilitychange",n.windowWidth=0,n.windowTimer=null,s=i(t).data("slick")||{},n.options=i.extend({},n.defaults,o,s),n.currentSlide=n.options.initialSlide,n.originalSettings=n.options,void 0!==document.mozHidden?(n.hidden="mozHidden",n.visibilityChange="mozvisibilitychange"):void 0!==document.webkitHidden&&(n.hidden="webkitHidden",n.visibilityChange="webkitvisibilitychange"),n.autoPlay=i.proxy(n.autoPlay,n),n.autoPlayClear=i.proxy(n.autoPlayClear,n),n.autoPlayIterator=i.proxy(n.autoPlayIterator,n),n.changeSlide=i.proxy(n.changeSlide,n),n.clickHandler=i.proxy(n.clickHandler,n),n.selectHandler=i.proxy(n.selectHandler,n),n.setPosition=i.proxy(n.setPosition,n),n.swipeHandler=i.proxy(n.swipeHandler,n),n.dragHandler=i.proxy(n.dragHandler,n),n.keyHandler=i.proxy(n.keyHandler,n),n.instanceUid=e++,n.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,n.registerBreakpoints(),n.init(!0)}}()).prototype.activateADA=function(){this.$slideTrack.find(".slick-active").attr({"aria-hidden":"false"}).find("a, input, button, select").attr({tabindex:"0"})},e.prototype.addSlide=e.prototype.slickAdd=function(e,t,o){var s=this;if("boolean"==typeof t)o=t,t=null;else if(t<0||t>=s.slideCount)return!1;s.unload(),"number"==typeof t?0===t&&0===s.$slides.length?i(e).appendTo(s.$slideTrack):o?i(e).insertBefore(s.$slides.eq(t)):i(e).insertAfter(s.$slides.eq(t)):!0===o?i(e).prependTo(s.$slideTrack):i(e).appendTo(s.$slideTrack),s.$slides=s.$slideTrack.children(this.options.slide),s.$slideTrack.children(this.options.slide).detach(),s.$slideTrack.append(s.$slides),s.$slides.each(function(e,t){i(t).attr("data-slick-index",e)}),s.$slidesCache=s.$slides,s.reinit()},e.prototype.animateHeight=function(){var i=this;if(1===i.options.slidesToShow&&!0===i.options.adaptiveHeight&&!1===i.options.vertical){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.animate({height:e},i.options.speed)}},e.prototype.animateSlide=function(e,t){var o={},s=this;s.animateHeight(),!0===s.options.rtl&&!1===s.options.vertical&&(e=-e),!1===s.transformsEnabled?!1===s.options.vertical?s.$slideTrack.animate({left:e},s.options.speed,s.options.easing,t):s.$slideTrack.animate({top:e},s.options.speed,s.options.easing,t):!1===s.cssTransitions?(!0===s.options.rtl&&(s.currentLeft=-s.currentLeft),i({animStart:s.currentLeft}).animate({animStart:e},{duration:s.options.speed,easing:s.options.easing,step:function(i){i=Math.ceil(i),!1===s.options.vertical?(o[s.animType]="translate("+i+"px, 0px)",s.$slideTrack.css(o)):(o[s.animType]="translate(0px,"+i+"px)",s.$slideTrack.css(o))},complete:function(){t&&t.call()}})):(s.applyTransition(),e=Math.ceil(e),!1===s.options.vertical?o[s.animType]="translate3d("+e+"px, 0px, 0px)":o[s.animType]="translate3d(0px,"+e+"px, 0px)",s.$slideTrack.css(o),t&&setTimeout(function(){s.disableTransition(),t.call()},s.options.speed))},e.prototype.getNavTarget=function(){var e=this,t=e.options.asNavFor;return t&&null!==t&&(t=i(t).not(e.$slider)),t},e.prototype.asNavFor=function(e){var t=this.getNavTarget();null!==t&&"object"==typeof t&&t.each(function(){var t=i(this).slick("getSlick");t.unslicked||t.slideHandler(e,!0)})},e.prototype.applyTransition=function(i){var e=this,t={};!1===e.options.fade?t[e.transitionType]=e.transformType+" "+e.options.speed+"ms "+e.options.cssEase:t[e.transitionType]="opacity "+e.options.speed+"ms "+e.options.cssEase,!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.autoPlay=function(){var i=this;i.autoPlayClear(),i.slideCount>i.options.slidesToShow&&(i.autoPlayTimer=setInterval(i.autoPlayIterator,i.options.autoplaySpeed))},e.prototype.autoPlayClear=function(){var i=this;i.autoPlayTimer&&clearInterval(i.autoPlayTimer)},e.prototype.autoPlayIterator=function(){var i=this,e=i.currentSlide+i.options.slidesToScroll;i.paused||i.interrupted||i.focussed||(!1===i.options.infinite&&(1===i.direction&&i.currentSlide+1===i.slideCount-1?i.direction=0:0===i.direction&&(e=i.currentSlide-i.options.slidesToScroll,i.currentSlide-1==0&&(i.direction=1))),i.slideHandler(e))},e.prototype.buildArrows=function(){var e=this;!0===e.options.arrows&&(e.$prevArrow=i(e.options.prevArrow).addClass("slick-arrow"),e.$nextArrow=i(e.options.nextArrow).addClass("slick-arrow"),e.slideCount>e.options.slidesToShow?(e.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.prependTo(e.options.appendArrows),e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.appendTo(e.options.appendArrows),!0!==e.options.infinite&&e.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):e.$prevArrow.add(e.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},e.prototype.buildDots=function(){var e,t,o=this;if(!0===o.options.dots){for(o.$slider.addClass("slick-dotted"),t=i("<ul />").addClass(o.options.dotsClass),e=0;e<=o.getDotCount();e+=1)t.append(i("<li />").append(o.options.customPaging.call(this,o,e)));o.$dots=t.appendTo(o.options.appendDots),o.$dots.find("li").first().addClass("slick-active")}},e.prototype.buildOut=function(){var e=this;e.$slides=e.$slider.children(e.options.slide+":not(.slick-cloned)").addClass("slick-slide"),e.slideCount=e.$slides.length,e.$slides.each(function(e,t){i(t).attr("data-slick-index",e).data("originalStyling",i(t).attr("style")||"")}),e.$slider.addClass("slick-slider"),e.$slideTrack=0===e.slideCount?i('<div class="slick-track"/>').appendTo(e.$slider):e.$slides.wrapAll('<div class="slick-track"/>').parent(),e.$list=e.$slideTrack.wrap('<div class="slick-list"/>').parent(),e.$slideTrack.css("opacity",0),!0!==e.options.centerMode&&!0!==e.options.swipeToSlide||(e.options.slidesToScroll=1),i("img[data-lazy]",e.$slider).not("[src]").addClass("slick-loading"),e.setupInfinite(),e.buildArrows(),e.buildDots(),e.updateDots(),e.setSlideClasses("number"==typeof e.currentSlide?e.currentSlide:0),!0===e.options.draggable&&e.$list.addClass("draggable")},e.prototype.buildRows=function(){var i,e,t,o,s,n,r,l=this;if(o=document.createDocumentFragment(),n=l.$slider.children(),l.o
vendor: 3,442 bytes, line 12
12ptions.rows>1){for(r=l.options.slidesPerRow*l.options.rows,s=Math.ceil(n.length/r),i=0;i<s;i++){var d=document.createElement("div");for(e=0;e<l.options.rows;e++){var a=document.createElement("div");for(t=0;t<l.options.slidesPerRow;t++){var c=i*r+(e*l.options.slidesPerRow+t);n.get(c)&&a.appendChild(n.get(c))}d.appendChild(a)}o.appendChild(d)}l.$slider.empty().append(o),l.$slider.children().children().children().css({width:100/l.options.slidesPerRow+"%",display:"inline-block"})}},e.prototype.checkResponsive=function(e,t){var o,s,n,r=this,l=!1,d=r.$slider.width(),a=window.innerWidth||i(window).width();if("window"===r.respondTo?n=a:"slider"===r.respondTo?n=d:"min"===r.respondTo&&(n=Math.min(a,d)),r.options.responsive&&r.options.responsive.length&&null!==r.options.responsive){s=null;for(o in r.breakpoints)r.breakpoints.hasOwnProperty(o)&&(!1===r.originalSettings.mobileFirst?n<r.breakpoints[o]&&(s=r.breakpoints[o]):n>r.breakpoints[o]&&(s=r.breakpoints[o]));null!==s?null!==r.activeBreakpoint?(s!==r.activeBreakpoint||t)&&(r.activeBreakpoint=s,"unslick"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):(r.activeBreakpoint=s,"unslick"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):null!==r.activeBreakpoint&&(r.activeBreakpoint=null,r.options=r.originalSettings,!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e),l=s),e||!1===l||r.$slider.trigger("breakpoint",[r,l])}},e.prototype.changeSlide=function(e,t){var o,s,n,r=this,l=i(e.currentTarget);switch(l.is("a")&&e.preventDefault(),l.is("li")||(l=l.closest("li")),n=r.slideCount%r.options.slidesToScroll!=0,o=n?0:(r.slideCount-r.currentSlide)%r.options.slidesToScroll,e.data.message){case"previous":s=0===o?r.options.slidesToScroll:r.options.slidesToShow-o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide-s,!1,t);break;case"next":s=0===o?r.options.slidesToScroll:o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide+s,!1,t);break;case"index":var d=0===e.data.index?0:e.data.index||l.index()*r.options.slidesToScroll;r.slideHandler(r.checkNavigable(d),!1,t),l.children().trigger("focus");break;default:return}},e.prototype.checkNavigable=function(i){var e,t;if(e=this.getNavigableIndexes(),t=0,i>e[e.length-1])i=e[e.length-1];else for(var o in e){if(i<e[o]){i=t;break}t=e[o]}return i},e.prototype.cleanUpEvents=function(){var e=this;e.options.dots&&null!==e.$dots&&(i("li",e.$dots).off("click.slick",e.changeSlide).off("mouseenter.slick",i.proxy(e.interrupt,e,!0)).off("mouseleave.slick",i.proxy(e.interrupt,e,!1)),!0===e.options.accessibility&&e.$dots.off("keydown.slick",e.keyHandler)),e.$slider.off("focus.slick blur.slick"),!0===e.options.arrows&&e.slideCount>e.options.slidesToShow&&(e.$prevArrow&&e.$prevArrow.off("click.slick",e.changeSlide),e.$nextArrow&&e.$nextArrow.off("click.slick",e.changeSlide),!0===e.options.accessibility&&(e.$prevArrow&&e.$prevArrow.off("keydown.slick",e.keyHandler),e.$nextArrow&&e.$nextArrow.off("keydown.slick",e.keyHandler))),e.$list.off("touchstart.slick mousedown.slick",e.swipeHandler),e.$list.off("touchmove.slick mousemove.slick",e.swipeHandler),e.$list.off("touchend.slick mouseup.slick",e.swipeHandler),e.$list.off("touchcancel.slick mouseleave.
12slick",e.swipeHandler),e.$list.off("click.slick",e.clickHandler),i(document).off(e.visibilityChange,e.visibility),e.cleanUpSlideEvents(),!0===e.options.accessibility&&e.$list.off("keydown.slick",e.keyHandler),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().off("click.slick",e.selectHandler),i(window).off("orientationchange.slick.slick-"+e.instanceUid,e.orientationChange),i(window).off("resize.slick.slick-"+e.instanceUid,e.resize),i("[draggable!=true]",e.$slideTrack).off("dragstart",e.preventDefault),i(window).off("load.slick.slick-"+e.instanceUid,e.setPosition)},e.prototype.cleanUpSlideEvents=function(){var e=this;e.$list.off("mouseenter.slick",i.proxy(e.interrupt,e,!0)),e.$list.off("mouseleave.slick",i.proxy(e.interrupt,e,!1))},e.prototype.cleanUpRows=function(){var i,e=this;e.options.rows>1&&((i=e.$slides.children().children()).removeAttr("style"),e.$slider.empty().append(i))},e.prototype.clickHandler=function(i){!1===this.shouldClick&&(i.stopImmediatePropagation(),i.stopPropagation(),i.preventDefault())},e.prototype.destroy=function(e){var t=this;t.autoPlayClear(),t.touchObject={},t.cleanUpEvents(),i(".slick-cloned",t.$slider).detach(),t.$dots&&t.$dots.remove(),t.$prevArrow&&t.$prevArrow.length&&(t.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),t.htmlExpr.test(t.options.prevArrow)&&t.$prevArrow.remove()),t.$nextArrow&&t.$nextArrow.length&&(t.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),t.htmlExpr.test(t.options.nextArrow)&&t.$nextArrow.remove()),t.$slides&&(t.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){i(this).attr("style",i(this).data("originalStyling"))}),t.$slideTrack.children(this.options.slide).detach(),t.$slideTrack.detach(),t.$list.detach(),t.$slider.append(t.$slides)),t.cleanUpRows(),t.$slider.removeClass("slick-slider"),t.$slider.removeClass("slick-initialized"),t.$slider.removeClass("slick-dotted"),t.unslicked=!0,e||t.$slider.trigger("destroy",[t])},e.prototype.disableTransition=function(i){var e=this,t={};t[e.transitionType]="",!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.fadeSlide=function(i,e){var t=this;!1===t.cssTransitions?(t.$slides.eq(i).css({zIndex:t.options.zIndex}),t.$slides.eq(i).animate({opacity:1},t.options.speed,t.options.easing,e)):(t.applyTransition(i),t.$slides.eq(i).css({opacity:1,zIndex:t.options.zIndex}),e&&setTimeout(function(){t.disableTransition(i),e.call()},t.options.speed))},e.prototype.fadeSlideOut=function(i){var e=this;!1===e.cssTransitions?e.$slides.eq(i).animate({opacity:0,zIndex:e.options.zIndex-2},e.options.speed,e.options.easing):(e.applyTransition(i),e.$slides.eq(i).css({opacity:0,zIndex:e.options.zIndex-2}))},e.prototype.filterSlides=e.prototype.slickFilter=function(i){var e=this;null!==i&&(e.$slidesCache=e.$slides,e.unload(),e.$slideTrack.children(this.options.slide).detach(),e.$slidesCache.filter(i).appendTo(e.$slideTrack),e.reinit())},e.prototype.focusHandler=function(){var e=this;e.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick","*",function(t){t.stopImmediatePropagation();var o=i(this);setTimeout(function(){e.options.pauseOnFocus&&(e.focussed=o.is(":focus"),e.autoPlay())},0)})},e.prototype.getCurrent=e.prototype.slickCurrentSlide=function(){return this.currentSlide},e.prototype.getDotCount=function(){var i=this,e=0,t=0,o=0;if(!0===i.options.infinite)if(i.slideCount<=i.options.slidesToShow)++o;else for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else if(!0===i.options.centerMode)o=i.slideCount;else if(i.options.asNavFor)for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else o=1+Math.ceil((i.slideCount-i.options.slidesToShow)/i.options.slidesToScroll);return o-1},e.prototype.getLeft=function(i){var e,t,o,s,n=this,r=0;return n.slideOffset=0,t=n.$slides.first().outerHeight(!0),!0===n.options.infinite?(n.slideCount>n.options.slidesToShow&&(n.slideOffset=n.slideWidth*n.options.slidesToShow*-1,s=-1,!0===n.options.vertical&&!0===n.options.centerMode&&(2===n.options.slidesToShow?s=-1.5:1===n.options.slidesToShow&&(s=-2)),r=t*n.options.slidesToShow*s),n.slideCount%n.options.slidesToScroll!=0&&i+n.options.slidesToScroll>n.slideCount&&n.slideCount>n.options.slidesToShow&&(i>n.slideCount?(n.slideOffset=(n.options.slidesToShow-(i-n.slideCount))*n.slideWidth*-1,r=(n.options.slidesToShow-(i-n.slideCount))*t*-1):(n.slideOffset=n.slideCount%n.options.slidesToScroll*n.slideWidth*-1,r=n.slideCount%n.options.slidesToScroll*t*-1))):i+n.options.slidesToShow>n.slideCount&&(n.slideOffset=(i+n.options.slidesToShow-n.slideCount)*n.slideWidth,r=(i+n.options.slidesToShow-n.slideCount)*t),n.slideCount<=n.options.slidesToShow&&(n.slideOffset=0,r=0),!0===n.options.centerMode&&n.slideCount<=n.options.slidesToShow?n.slideOffset=n.slideWidth*Math.floor(n.options.slidesToShow)/2-n.slideWidth*n.slideCount/2:!0===n.options.centerMode&&!0===n.options.infinite?n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)-n.slideWidth:!0===n.options.centerMode&&(n.slideOffset=0,n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)),e=!1===n.options.vertical?i*n.slideWidth*-1+n.slideOffset:i*t*-1+r,!0===n.options.variableWidth&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,!0===n.options.centerMode&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow+1),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,e+=(n.$list.width()-o.outerWidth())/2)),e},e.prototype.getOption=e.prototype.slickGetOption=function(i){return this.options[i]},e.prototype.getNavigableIndexes=function(){var i,e=this,t=0,o=0,s=[];for(!1===e.options.infinite?i=e.slideCount:(t=-1*e.options.slidesToScroll,o=-1*e.options.slidesToScroll,i=2*e.slideCount);t<i;)s.push(t),t=o+e.options.slidesToScroll,o+=e.options.slidesToScroll<=e.options.slidesToShow?e.options.slidesToScroll:e.options.slidesToShow;return s},e.prototype.getSlick=function(){return this},e.prototype.getSlideCount=function(){var e,t,o=this;return t=!0===o.options.centerMode?o.slideWidth*Math.floor(o.options.slidesToShow/2):0,!0===o.options.swipeToSlide?(o.$slideTrack.find(".slick-slide").each(function(s,n){if(n.offsetLeft-t+i(n).outerWidth()/2>-1*o.swipeLeft)return e=n,!1}),Math.abs(i(e).attr("data-slick-index")-o.currentSlide)||1):o.options.slidesToScroll},e.prototype.goTo=e.prototype.slickGoTo=function(i,e){this.changeSlide({data:{message:"index",index:
12parseInt(i)}},e)},e.prototype.init=function(e){var t=this;i(t.$slider).hasClass("slick-initialized")||(i(t.$slider).addClass("slick-initialized"),t.buildRows(),t.buildOut(),t.setProps(),t.startLoad(),t.loadSlider(),t.initializeEvents(),t.updateArrows(),t.updateDots(),t.checkResponsive(!0),t.focusHandler()),e&&t.$slider.trigger("init",[t]),!0===t.options.accessibility&&t.initADA(),t.options.autoplay&&(t.paused=!1,t.autoPlay())},e.prototype.initADA=function(){var e=this,t=Math.ceil(e.slideCount/e.options.slidesToShow),o=e.getNavigableIndexes().filter(function(i){return i>=0&&i<e.slideCount});e.$slides.add(e.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),null!==e.$dots&&(e.$slides.not(e.$slideTrack.find(".slick-cloned")).each(function(t){var s=o.indexOf(t);i(this).attr({role:"tabpanel",id:"slick-slide"+e.instanceUid+t,tabindex:-1}),-1!==s&&i(this).attr({"aria-describedby":"slick-slide-control"+e.instanceUid+s})}),e.$dots.attr("role","tablist").find("li").each(function(s){var n=o[s];i(this).attr({role:"presentation"}),i(this).find("button").first().attr({role:"tab",id:"slick-slide-control"+e.instanceUid+s,"aria-controls":"slick-slide"+e.instanceUid+n,"aria-label":s+1+" of "+t,"aria-selected":null,tabindex:"-1"})}).eq(e.currentSlide).find("button").attr({"aria-selected":"true",tabindex:"0"}).end());for(var s=e.currentSlide,n=s+e.options.slidesToShow;s<n;s++)e.$slides.eq(s).attr("tabindex",0);e.activateADA()},e.prototype.initArrowEvents=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.off("click.slick").on("click.slick",{message:"previous"},i.changeSlide),i.$nextArrow.off("click.slick").on("click.slick",{message:"next"},i.changeSlide),!0===i.options.accessibility&&(i.$prevArrow.on("keydown.slick",i.keyHandler),i.$nextArrow.on("keydown.slick",i.keyHandler)))},e.prototype.initDotEvents=function(){var e=this;!0===e.options.dots&&(i("li",e.$dots).on("click.slick",{message:"index"},e.changeSlide),!0===e.options.accessibility&&e.$dots.on("keydown.slick",e.keyHandler)),!0===e.options.dots&&!0===e.options.pauseOnDotsHover&&i("li",e.$dots).on("mouseenter.slick",i.proxy(e.interrupt,e,!0)).on("mouseleave.slick",i.proxy(e.interrupt,e,!1))},e.prototype.initSlideEvents=function(){var e=this;e.options.pauseOnHover&&(e.$list.on("mouseenter.slick",i.proxy(e.interrupt,e,!0)),e.$list.on("mouseleave.slick",i.proxy(e.interrupt,e,!1)))},e.prototype.initializeEvents=function(){var e=this;e.initArrowEvents(),e.initDotEvents(),e.initSlideEvents(),e.$list.on("touchstart.slick mousedown.slick",{action:"start"},e.swipeHandler),e.$list.on("touchmove.slick mousemove.slick",{action:"move"},e.swipeHandler),e.$list.on("touchend.slick mouseup.slick",{action:"end"}
12,e.swipeHandler),e.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},e.swipeHandler),e.$list.on("click.slick",e.clickHandler),i(document).on(e.visibilityChange,i.proxy(e.visibility,e)),!0===e.options.accessibility&&e.$list.on("keydown.slick",e.keyHandler),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().on("click.slick",e.selectHandler),i(window).on("orientationchange.slick.slick-"+e.instanceUid,i.proxy(e.orientationChange,e)),i(window).on("resize.slick.slick-"+e.instanceUid,i.proxy(e.resize,e)),i("[draggable!=true]",e.$slideTrack).on("dragstart",e.preventDefault),i(window).on("load.slick.slick-"+e.instanceUid,e.setPosition),i(e.setPosition)},e.prototype.initUI=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.show(),i.$nextArrow.show()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.show()},e.prototype.keyHandler=function(i){var e=this;i.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===i.keyCode&&!0===e.options.accessibility?e.changeSlide({data:{message:!0===e.options.rtl?"next":"previous"}}):39===i.keyCode&&!0===e.options.accessibility&&e.changeSlide({data:{message:!0===e.options.rtl?"previous":"next"}}))},e.prototype.lazyLoad=function(){function e(e){i("img[data-lazy]",e).each(function(){var e=i(this),t=i(this).attr("data-lazy"),o=i(this).attr("data-srcset"),s=i(this).attr("data-sizes")||n.$slider.attr("data-sizes"),r=document.createElement("img");r.onload=function(){e.animate({opacity:0}
vendor: 5,619 bytes, line 12
12,100,function(){o&&(e.attr("srcset",o),s&&e.attr("sizes",s)),e.attr("src",t).animate({opacity:1},200,function(){e.removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading")}),n.$slider.trigger("lazyLoaded",[n,e,t])})},r.onerror=function(){e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),n.$slider.trigger("lazyLoadError",[n,e,t])},r.src=t})}var t,o,s,n=this;if(!0===n.options.centerMode?!0===n.options.infinite?s=(o=n.currentSlide+(n.options.slidesToShow/2+1))+n.options.slidesToShow+2:(o=Math.max(0,n.currentSlide-(n.options.slidesToShow/2+1)),s=n.options.slidesToShow/2+1+2+n.currentSlide):(o=n.options.infinite?n.options.slidesToShow+n.currentSlide:n.currentSlide,s=Math.ceil(o+n.options.slidesToShow),!0===n.options.fade&&(o>0&&o--,s<=n.slideCount&&s++)),t=n.$slider.find(".slick-slide").slice(o,s),"anticipated"===n.options.lazyLoad)for(var r=o-1,l=s,d=n.$slider.find(".slick-slide"),a=0;a<n.options.slidesToScroll;a++)r<0&&(r=n.slideCount-1),t=(t=t.add(d.eq(r))).add(d.eq(l)),r--,l++;e(t),n.slideCount<=n.options.slidesToShow?e(n.$slider.find(".slick-slide")):n.currentSlide>=n.slideCount-n.options.slidesToShow?e(n.$slider.find(".slick-cloned").slice(0,n.options.slidesToShow)):0===n.currentSlide&&e(n.$slider.find(".slick-cloned").slice(-1*n.options.slidesToShow))},e.prototype.loadSlider=function(){var i=this;i.setPosition(),i.$slideTrack.css({opacity:1}),i.$slider.removeClass("slick-loading"),i.initUI(),"progressive"===i.options.lazyLoad&&i.progressiveLazyLoad()},e.prototype.next=e.prototype.slickNext=function(){this.changeSlide({data:{message:"next"}})},e.prototype.orientationChange=function(){var i=this;i.checkResponsive(),i.setPosition()},e.prototype.pause=e.prototype.slickPause=function(){var i=this;i.autoPlayClear(),i.paused=!0},e.prototype.play=e.prototype.slickPlay=function(){var i=this;i.autoPlay(),i.options.autoplay=!0,i.paused=!1,i.focussed=!1,i.interrupted=!1},e.prototype.postSlide=function(e){var t=this;t.unslicked||(t.$slider.trigger("afterChange",[t,e]),t.animating=!1,t.slideCount>t.options.slidesToShow&&t.setPosition(),t.swipeLeft=null,t.options.autoplay&&t.autoPlay(),!0===t.options.accessibility&&(t.initADA(),t.options.focusOnChange&&i(t.$slides.get(t.currentSlide)).attr("tabindex",0).focus()))},e.prototype.prev=e.prototype.slickPrev=function(){this.changeSlide({data:{message:"previous"}})},e.prototype.preventDefault=function(i){i.preventDefault()},e.prototype.progressiveLazyLoad=function(e){e=e||1;var t,o,s,n,r,l=this,d=i("img[data-lazy]",l.$slider);d.length?(t=d.first(),o=t.attr("data-lazy"),s=t.attr("data-srcset"),n=t.attr("data-sizes")||l.$slider.attr("data-sizes"),(r=document.createElement("img")).onload=function(){s&&(t.attr("srcset",s),n&&t.attr("sizes",n)),t.attr("src",o).removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"),!0===l.options.adaptiveHeight&&l.setPosition(),l.$slider.trigger("lazyLoaded",[l,t,o]),l.progressiveLazyLoad()},r.onerror=function(){e<3?setTimeout(function(){l.progressiveLazyLoad(e+1)},500):(t.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),l.$slider.trigger("lazyLoadError",[l,t,o]),l.progressiveLazyLoad())},r.src=o):l.$slider.trigger("allImagesLoaded",[l])},e.prototype.refresh=function(e){var t,o,s=this;o=s.slideCount-s.options.slidesToShow,!s.options.infinite&&s.currentSlide>o&&(s.currentSlide=o),s.slideCount<=s.options.slidesToShow&&(s.currentSlide=0),t=s.currentSlide,s.destroy(!0),i.extend(s,s.initials,{currentSlide:t}),s.init(),e||s.changeSlide({data:{message:"index",index:t}},!1)},e.prototype.registerBreakpoints=function(){var e,t,o,s=this,n=s.options.responsive||null;if("array"===i.type(n)&&n.length){s.respondTo=s.options.respondTo||"window";for(e in n)if(o=s.breakpoints.length-1,n.hasOwnProperty(e)){for(t=n[e].breakpoint;o>=0;)s.breakpoints[o]&&s.breakpoints[o]===t&&s.breakpoints.splice(o,1),o--;s.breakpoints.push(t),s.breakpointSettings[t]=n[e].settings}s.breakpoints.sort(function(i,e){return s.options.mobileFirst?i-e:e-i})}},e.prototype.reinit=function(){var e=this;e.$slides=e.$slideTrack.children(e.options.slide).addClass("slick-slide"),e.slideCount=e.$slides.length,e.currentSlide>=e.slideCount&&0!==e.currentSlide&&(e.currentSlide=e.currentSlide-e.options.slidesToScroll),e.slideCount<=e.options.slidesToShow&&(e.currentSlide=0),e.registerBreakpoints(),e.setProps(),e.setupInfinite(),e.buildArrows(),e.updateArrows(),e.initArrowEvents(),e.buildDots(),e.updateDots(),e.initDotEvents(),e.cleanUpSlideEvents(),e.initSlideEvents(),e.checkResponsive(!1,!0),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().on("click.slick",e.selectHandler),e.setSlideClasses("number"==typeof e.currentSlide?e.currentSlide:0),e.setPosition(),e.focusHandler(),e.paused=!e.options.autoplay,e.autoPlay(),e.$slider.trigger("reInit",[e])},e.prototype.resize=function(){var e=this;i(window).width()!==e.windowWidth&&(clearTimeout(e.windowDelay),e.windowDelay=window.setTimeout(function(){e.windowWidth=i(window).width(),e.checkResponsive(),e.unslicked||e.setPosition()},50))},e.prototype.removeSlide=e.prototype.slickRemove=function(i,e,t){var o=this;if(i="boolean"==typeof i?!0===(e=i)?0:o.slideCount-1:!0===e?--i:i,o.slideCount<1||i<0||i>o.slideCount-1)return!1;o.unload(),!0===t?o.$slideTrack.children().remove():o.$slideTrack.children(this.options.slide).eq(i).remove(),o.$slides=o.$slideTrack.children(this.options.slide),o.$slideTrack.children(this.options.slide).detach(),o.$slideTrack.append(o.$slides),o.$slidesCache=o.$slides,o.reinit()},e.prototype.setCSS=function(i){var e,t,o=this,s={};
12!0===o.options.rtl&&(i=-i),e="left"==o.positionProp?Math.ceil(i)+"px":"0px",t="top"==o.positionProp?Math.ceil(i)+"px":"0px",s[o.positionProp]=i,!1===o.transformsEnabled?o.$slideTrack.css(s):(s={},!1===o.cssTransitions?(s[o.animType]="translate("+e+", "+t+")",o.$slideTrack.css(s)):(s[o.animType]="translate3d("+e+", "+t+", 0px)",o.$slideTrack.css(s)))},e.prototype.setDimensions=function(){var i=this;!1===i.options.vertical?!0===i.options.centerMode&&i.$list.css({padding:"0px "+i.options.centerPadding}):(i.$list.height(i.$slides.first().outerHeight(!0)*i.options.slidesToShow),!0===i.options.centerMode&&i.$list.css({padding:i.options.centerPadding+" 0px"})),i.listWidth=i.$list.width(),i.listHeight=i.$list.height(),!1===i.options.vertical&&!1===i.options.variableWidth?(i.slideWidth=Math.ceil(i.listWidth/i.options.slidesToShow),i.$slideTrack.width(Math.ceil(i.slideWidth*i.$slideTrack.children(".slick-slide").length))):!0===i.options.variableWidth?i.$slideTrack.width(5e3*i.slideCount):(i.slideWidth=Math.ceil(i.listWidth),i.$slideTrack.height(Math.ceil(i.$slides.first().outerHeight(!0)*i.$slideTrack.children(".slick-slide").length)));var e=i.$slides.first().outerWidth(!0)-i.$slides.first().width();!1===i.options.variableWidth&&i.$slideTrack.children(".slick-slide").width(i.slideWidth-e)},e.prototype.setFade=function(){var e,t=this;t.$slides.each(function(o,s){e=t.slideWidth*o*-1,!0===t.options.rtl?i(s).css({position:"relative",right:e,top:0,zIndex:t.options.zIndex-2,opacity:0}
12):i(s).css({position:"relative",left:e,top:0,zIndex:t.options.zIndex-2,opacity:0})}),t.$slides.eq(t.currentSlide).css({zIndex:t.options.zIndex-1,opacity:1})},e.prototype.setHeight=function(){var i=this;if(1===i.options.slidesToShow&&!0===i.options.adaptiveHeight&&!1===i.options.vertical){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.css("height",e)}},e.prototype.setOption=e.prototype.slickSetOption=function(){var e,t,o,s,n,r=this,l=!1;if("object"===i.type(arguments[0])?(o=arguments[0],l=arguments[1],n="multiple"):"string"===i.type(arguments[0])&&(o=arguments[0],s=arguments[1],l=arguments[2],"responsive"===arguments[0]&&"array"===i.type(arguments[1])?n="responsive":void 0!==arguments[1]&&(n="single")),"single"===n)r.options[o]=s;else if("multiple"===n)i.each(o,function(i,e){r.options[i]=e});else if("responsive"===n)for(t in s)if("array"!==i.type(r.options.responsive))r.options.responsive=[s[t]];else{for(e=r.options.responsive.length-1;e>=0;)r.options.responsive[e].breakpoint===s[t].breakpoint&&r.options.responsive.splice(e,1),e--;r.options.responsive.push(s[t])}l&&(r.unload(),r.reinit())},e.prototype.setPosition=function(){var i=this;i.setDimensions(),i.setHeight(),!1===i.options.fade?i.setCSS(i.getLeft(i.currentSlide)):i.setFade(),i.$slider.trigger("setPosition",[i])},e.prototype.setProps=function(){var i=this,e=document.body.style;i.positionProp=!0===i.options.vertical?"top":"left","top"===i.positionProp?i.$slider.addClass("slick-vertical"):i.$slider.removeClass("slick-vertical"),void 0===e.WebkitTransition&&void 0===e.MozTransition&&void 0===e.msTransition||!0===i.options.useCSS&&(i.cssTransitions=!0),i.options.fade&&("number"==typeof i.options.zIndex?i.options.zIndex<3&&(i.options.zIndex=3):i.options.zIndex=i.defaults.zIndex),void 0!==e.OTransform&&(i.animType="OTransform",i.transformType="-o-transform",i.transitionType="OTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.MozTransform&&(i.animType="MozTransform",i.transformType="-moz-transform",i.transitionType="MozTransition",void 0===e.perspectiveProperty&&void 0===e.MozPerspective&&(i.animType=!1)),void 0!==e.webkitTransform&&(i.animType="webkitTransform",i.transformType="-webkit-transform",i.transitionType="webkitTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.msTransform&&(i.animType="msTransform",i.transformType="-ms-transform",i.transitionType="msTransition",void 0===e.msTransform&&(i.animType=!1)),void 0!==e.transform&&!1!==i.animType&&(i.animType="transform",i.transformType="transform",i.transitionType="transition"),i.transformsEnabled=i.options.useTransform&&null!==i.animType&&!1!==i.animType},e.prototype.setSlideClasses=function(i){var e,t,o,s,n=this;if(t=n.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),n.$slides.eq(i).addClass("slick-current"),!0===n.options.centerMode){var r=n.options.slidesToShow%2==0?1:0;e=Math.floor(n.options.slidesToShow/2),!0===n.options.infinite&&(i>=e&&i<=n.slideCount-1-e?n.$slides.slice(i-e+r,i+e+1).addClass("slick-active").attr("aria-hidden","false"):(o=n.options.slidesToShow+i,t.slice(o-e+1+r,o+e+2).addClass("slick-active").attr("aria-hidden","false")),0===i?t.eq(t.length-1-n.options.slidesToShow).addClass("slick-center"):i===n.slideCount-1&&t.eq(n.options.slidesToShow).addClass("slick-center")),n.$slides.eq(i).addClass("slick-center")}else i>=0&&i<=n.slideCount-n.options.slidesToShow?n.$slides.slice(i,i+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):t.length<=n.options.slidesToShow?t.addClass("slick-active").attr("aria-hidden","false"):(s=n.slideCount%n.options.slidesToShow,o=!0===n.options.infinite?n.options.slidesToShow+i:i,n.options.slidesToShow==n.options.slidesToScroll&&n.slideCount-i<n.options.slidesToShow?t.slice(o-(n.options.slidesToShow-s),o+s).addClass("slick-active").attr("aria-hidden","false"):t.slice(o,o+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"));"ondemand"!==n.options.lazyLoad&&"anticipated"!==n.options.lazyLoad||n.lazyLoad()},e.prototype.setupInfinite=function(){var e,t,o,s=this;if(!0===s.options.fade&&(s.options.centerMode=!1),!0===s.options.infinite&&!1===s.options.fade&&(t=null,s.slideCount>s.options.slidesToShow)){for(o=!0===s.options.centerMode?s.options.slidesToShow+1:s.options.slidesToShow,e=s.slideCount;e>s.slideCount-o;e-=1)t=e-1,i(s.$slides[t]).clone(!0).attr("id","").attr("data-slick-index",t-s.slideCount).prependTo(s.$slideTrack).addClass("slick-cloned");for(e=0;e<o+s.slideCount;e+=1)t=e,i(s.$slides[t]).clone(!0).attr("id","").attr("data-slick-index",t+s.slideCount).appendTo(s.$slideTrack).addClass("slick-cloned");s.$slideTrack.find(".slick-cloned").find("[id]").each(function(){i(this).attr("id","")})}},e.prototype.interrupt=function(i){var e=this;i||e.autoPlay(),e.interrupted=i},e.prototype.selectHandler=function(e){var t=this,o=i(e.target).is(".slick-slide")?i(e.target):i(e.target).parents(".slick-slide"),s=parseInt(o.attr("data-slick-index"));s||(s=0),t.slideCount<=t.options.slidesToShow?t.slideHandler(s,!1,!0):t.slideHandler(s)},e.prototype.slideHandler=function(i,e,t){var o,s,n,r,l,d=null,a=this;if(e=e||!1,!(!0===a.animating&&!0===a.options.waitForAnimate||!0===a.options.fade&&a.currentSlide===i))if(!1===e&&a.asNavFor(i),o=i,d=a.getLeft(o),r=a.getLeft(a.currentSlide),a.currentLeft=null===a.swipeLeft?r:a.swipeLeft,!1===a.options.infinite&&!1===a.options.centerMode&&(i<0||i>a.getDotCount()*a.options.slidesToScroll))!1===a.options.fade&&(o=a.currentSlide,!0!==t?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o));else if(!1===a.options.infinite&&!0===a.options.centerMode&&(i<0||i>a.slideCount-a.options.slidesToScroll))!1===a.options.fade&&(o=a.currentSlide,!0!==t?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o));else{if(a.options.autoplay&&clearInterval(a.autoPlayTimer),s=o<0?a.slideCount%a.options.slidesToScroll!=0?a.slideCount-a.slideCount%a.options.slidesToScroll:a.slideCount+
12o:o>=a.slideCount?a.slideCount%a.options.slidesToScroll!=0?0:o-a.slideCount:o,a.animating=!0,a.$slider.trigger("beforeChange",[a,a.currentSlide,s]),n=a.currentSlide,a.currentSlide=s,a.setSlideClasses(a.currentSlide),a.options.asNavFor&&(l=(l=a.getNavTarget()).slick("getSlick")).slideCount<=l.options.slidesToShow&&l.setSlideClasses(a.currentSlide),a.updateDots(),a.updateArrows(),!0===a.options.fade)return!0!==t?(a.fadeSlideOut(n),a.fadeSlide(s,function(){a.postSlide(s)})):a.postSlide(s),void a.animateHeight();!0!==t?a.animateSlide(d,function(){a.postSlide(s)}):a.postSlide(s)}},e.prototype.startLoad=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.hide(),i.$nextArrow.hide()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.hide(),i.$slider.addClass("slick-loading")},e.prototype.swipeDirection=function(){var i,e,t,o,s=this;return i=s.touchObject.startX-s.touchObject.curX,e=s.touchObject.startY-s.touchObject.curY,t=Math.atan2(e,i),(o=Math.round(180*t/Math.PI))<0&&(o=360-Math.abs(o)),o<=45&&o>=0?!1===s.options.rtl?"left":"right":o<=360&&o>=315?!1===s.options.rtl?"left":"right":o>=135&&o<=225?!1===s.options.rtl?"right":"left":!0===s.options.verticalSwiping?o>=35&&o<=135?"down":"up":"vertical"},e.prototype.swipeEnd=function(i){var e,t,o=this;if(o.dragging=!1,o.swiping=!1,o.scrolling)return o.scrolling=!1,!1;if(o.interrupted=!1,o.shouldClick=!(o.touchObject.swipeLength>10),void 0===o.touchObject.curX)return!1;if(!0===o.touchObject.edgeHit&&o.$slider.trigger("edge",[o,o.swipeDirection()]),o.touchObject.swipeLength>=o.touchObject.minSwipe){switch(t=o.swipeDirection()){case"left":case"down":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide+o.getSlideCount()):o.currentSlide+o.getSlideCount(),o.currentDirection=0;break;case"right":case"up":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide-o.getSlideCount()):o.currentSlide-o.getSlideCount(),o.currentDirection=1}"vertical"!=t&&(o.slideHandler(e),o.touchObject={},o.$slider.trigger("swipe",[o,t]))}else o.touchObject.startX!==o.touchObject.curX&&(o.slideHandler(o.currentSlide),o.touchObject={})},e.prototype.swipeHandler=function(i){var e=this;if(!(!1===e.options.swipe||"ontouchend"in document&&!1===e.options.swipe||!1===e.options.draggable&&-1!==i.type.indexOf("mouse")))switch(e.touchObject.fingerCount=i.originalEvent&&void 0!==i.originalEvent.touches?i.originalEvent.touches.length:1,e.touchObject.minSwipe=e.listWidth/e.options.touchThreshold,!0===e.options.verticalSwiping&&(e.touchObject.minSwipe=e.listHeight/e.options.touchThreshold),i.data.action){case"start":e.swipeStart(i);break;case"move":e.swipeMove(i);break;case"end":e.swipeEnd(i)}},e.prototype.swipeMove=function(i){var e,t,o,s,n,r,l=this;return n=void 0!==i.originalEvent?i.originalEvent.touches:null,!(!l.dragging||l.scrolling||n&&1!==n.length)&&(e=l.getLeft(l.currentSlide),l.touchObject.curX=void 0!==n?n[0].pageX:i.clientX,l.touchObject.curY=void 0!==n?n[0].pageY:i.clientY,l.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(l.touchObject.curX-l.touchObject.startX,2))),r=Math.round(Math.sqrt(Math.pow(l.touchObject.curY-l.touchObject.startY,2))),!l.options.verticalSwiping&&!l.swiping&&r>4?(l.scrolling=!0,!1):(!0===l.options.verticalSwiping&&(l.touchObject.swipeLength=r),t=l.swipeDirection(),void 0!==i.originalEvent&&l.touchObject.swipeLength>4&&(l.swiping=!0,i.preventDefault()),s=(!1===l.options.rtl?1:-1)*(l.touchObject.curX>l.touchObject.startX?1:-1),!0===l.options.verticalSwiping&&(s=l.touchObject.curY>l.touchObject.startY?1:-1),o=l.touchObject.swipeLength,l.touchObject.edgeHit=!1,!1===l.options.infinite&&(0===l.currentSlide&&"right"===t||l.currentSlide>=l.getDotCount()&&"left"===t)&&(o=l.touchObject.swipeLength*l.options.edgeFriction,l.touchObject.edgeHit=!0),!1===l.options.vertical?l.swipeLeft=e+o*s:l.swipeLeft=e+o*(l.$list.height()/l.listWidth)*s,!0===l.options.verticalSwiping&&(l.swipeLeft=e+o*s),!0!==l.options.fade&&!1!==l.options.touchMove&&(!0===l.animating?(l.swipeLeft=null,!1):void l.setCSS(l.swipeLeft))))},e.prototype.swipeStart=function(i){var e,t=this;if(t.interrupted=!0,1!==t.touchObject.fingerCount||t.slideCount<=t.options.slidesToShow)return t.touchObject={},!1;void 0!==i.originalEvent&&void 0!==i.originalEvent.touches&&(e=i.originalEvent.touches[0]),t.touchObject.startX=t.touchObject.curX=void 0!==e?e.pageX:i.clientX,t.touchObject.startY=t.touchObject.curY=void 0!==e?e.pageY:i.clientY,t.dragging=!0},e.prototype.unfilterSlides=e.prototype.slickUnfilter=function(){var i=this;null!==i.$slidesCache&&(i.unload(),i.$slideTrack.children(this.options.slide).detach(),i.$slidesCache.appendTo(i.$slideTrack),i.reinit())},e.prototype.unload=function(){var e=this;i(".slick-cloned",e.$slider).remove(),e.$dots&&e.$dots.remove(),e.$prevArrow&&e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.remove(),e.$nextArrow&&e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.remove(),e.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")}
vendor: 9,057 bytes, lines 12-14
12,e.prototype.unslick=function(i){var e=this;e.$slider.trigger("unslick",[e,i]),e.destroy()},e.prototype.updateArrows=function(){var i=this;Math.floor(i.options.slidesToShow/2),!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&!i.options.infinite&&(i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===i.currentSlide?(i.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):i.currentSlide>=i.slideCount-i.options.slidesToShow&&!1===i.options.centerMode?(i.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):i.currentSlide>=i.slideCount-1&&!0===i.options.centerMode&&(i.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},e.prototype.updateDots=function(){var i=this;null!==i.$dots&&(i.$dots.find("li").removeClass("slick-active").end(),i.$dots.find("li").eq(Math.floor(i.currentSlide/i.options.slidesToScroll)).addClass("slick-active"))},e.prototype.visibility=function(){var i=this;i.options.autoplay&&(document[i.hidden]?i.interrupted=!0:i.interrupted=!1)},i.fn.slick=function(){var i,t,o=this,s=arguments[0],n=Array.prototype.slice.call(arguments,1),r=o.length;for(i=0;i<r;i++)if("object"==typeof s||void 0===s?o[i].slick=new e(o[i],s):t=o[i].slick[s].apply(o[i].slick,n),void 0!==t)return t;return o}}); 13 14"use strict";!function(t){var i,n;i=function(){function i(i,n){var o;this.options=n,this.$element=t(i),this.didInit=!1,o=this,this.$element.on("click.slickLightbox",this.options.itemSelector,function(i){var n,e;if(i.preventDefault(),n=t(this),n.blur(),"function"!=typeof o.options.shouldOpen||o.options.shouldOpen(o,n,i))return e=o.$element.find(o.options.itemSelector),o.elementIsSlick()&&(e=o.filterOutSlickClones(e),n=o.handlePossibleCloneClick(n,e)),o.init(e.index(n))})}return i.prototype.init=function(t){return this.didInit=!0,this.detectIE(),this.createModal(),this.bindEvents(),this.initSlick(t),this.open()},i.prototype.createModalItems=function(){var i,n,o,e,s,l;return e=this.options.lazyPlaceholder||"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",o=function(t,i,n){return'<div class="slick-lightbox-slick-item">\n <div class="slick-lightbox-slick-item-inner">\n <img class="slick-lightbox-slick-img" '+(!0===n?' data-lazy="'+t+'" src="'+e+'" ':' src="'+t+'" ')+" />\n "+i+"\n </div>\n</div>"},this.options.images?l=t.map(this.options.images,function(t){return function(i){return o(i,t.options.lazy)}}(this)):(i=this.filterOutSlickClones(this.$element.find(this.options.itemSelector)),s=i.length,n=function(t){return function(i,n){var e,l,r;return l={index:n,length:s},e=t.getElementCaption(i,l),r=t.getElementSrc(i),o(r,e,t.options.lazy)}}(this),l=t.map(i,n)),l},i.prototype.createModal=function(){var i,n;return n=this.createModalItems(),i='<div class="slick-lightbox slick-lightbox-hide-init'+(this.isIE?" slick-lightbox-ie":"")+'" style="background: '+this.options.background+';">\n <div class="slick-lightbox-inner">\n <div class="slick-lightbox-slick slick-caption-'+this.options.captionPosition+'">'+n.join("")+"</div>\n <div>\n<div>",this.$modalElement=t(i),this.$parts={},this.$parts.closeButton=t(this.options.layouts.closeButton),this.$modalElement.find(".slick-lightbox-inner").append(this.$parts.closeButton),t("body").append(this.$modalElement)},i.prototype.initSlick=function(i){var n;return n={initialSlide:i},this.options.lazy&&(n.lazyLoad="ondemand"),null!=this.options.slick?"function"==typeof this.options.slick?this.slick=this.options.slick(this.$modalElement):this.slick=this.$modalElement.find(".slick-lightbox-slick").slick(t.extend({},this.options.slick,n)):this.slick=this.$modalElement.find(".slick-lightbox-slick").slick(n),this.$modalElement.trigger("init.slickLightbox")},i.prototype.open=function(){return this.options.useHistoryApi&&this.writeHistory(),this.$element.trigger("show.slickLightbox"),setTimeout(function(t){return function(){return t.$element.trigger("shown.slickLightbox")}}(this),this.getTransitionDuration()),this.$modalElement.removeClass("slick-lightbox-hide-init")},i.prototype.close=function(){return this.$element.trigger("hide.slickLightbox"),setTimeout(function(t){return function(){return t.$element.trigger("hidden.slickLightbox")}}(this),this.getTransitionDuration()),this.$modalElement.addClass("slick-lightbox-hide"),this.destroy()},i.prototype.bindEvents=function(){var i;if(i=function(t){return function(){var i;return i=t.$modalElement.find(".slick-lightbox-inner").height(),t.$modalElement.find(".slick-lightbox-slick-item").height(i),t.$modalElement.find(".slick-lightbox-slick-img, .slick-lightbox-slick-item-inner").css("max-height",Math.round(t.options.imageMaxHeight*i))}}(this),t(window).on("orientationchange.slickLightbox resize.slickLightbox",i),this.options.useHistoryApi&&t(window).on("popstate.slickLightbox",function(t){return function(){return t.close()}}(this)),this.$modalElement.on("init.slickLightbox",i),this.$modalElement.on("destroy.slickLightbox",function(t){return function(){return t.destroy()}}(this)),this.$element.on("destroy.slickLightbox",function(t){return function(){return t.destroy(!0)}}(this)),this.$parts.closeButton.on("click.slickLightbox touchstart.slickLightbox",function(t){return function(i){return i.preventDefault(),t.close()}}(this)),(this.options.closeOnEscape||this.options.navigateByKeyboard)&&t(document).on("keydown.slickLightbox",function(t){return function(i){var n;if(n=i.keyCode?i.keyCode:i.which,t.options.navigateByKeyboard&&(37===n?t.slideSlick("left"):39===n&&t.slideSlick("right")),t.options.closeOnEscape&&27===n)return t.close()}}(this)),this.options.closeOnBackdropClick)return this.$modalElement.on("click.slickLightbox touchstart.slickLightbox",".slick-lightbox-slick-img",function(t){return t.stopPropagation()}),this.$modalElement.on("click.slickLightbox",".slick-lightbox-slick-item",function(t){return function(i){return i.preventDefault(),t.close()}}(this))},i.prototype.slideSlick=function(t){return"left"===t?this.slick.slick("slickPrev"):this.slick.slick("slickNext")},i.prototype.detectIE=function(){if(this.isIE=!1,/MSIE (\d+\.\d+);/.test(navigator.userAgent)&&new Number(RegExp.$1)<9)return this.isIE=!0},i.prototype.getElementCaption=function(i,n){return this.options.caption?'<span class="slick-lightbox-slick-caption">'+function(){switch(typeof this.options.caption){case"function":return this.options.caption(i,n);case"string":return t(i).data(this.options.caption)}}.call(this)+"</span>":""},i.prototype.getElementSrc=function(i){switch(typeof this.options.src){case"function":return this.options.src(i);case"string":return t(i).attr(this.options.src);default:return i.href}},i.prototype.unbindEvents=function(){return t(window).off(".slickLightbox"),t(document).off(".slickLightbox"),this.$modalElement.off(".slickLightbox")},i.prototype.destroy=function(t){if(null==t&&(t=!1),this.didInit&&(this.unbindEvents(),setTimeout(function(t){return function(){return t.$modalElement.remove()}}(this),this.options.destroyTimeout)),t)return this.$element.off(".slickLightbox"),this.$element.off(".slickLightbox",this.options.itemSelector)},i.prototype.destroyPrevious=function(){return t("body").children(".slick-lightbox").trigger("destroy.slickLightbox")},i.prototype.getTransitionDuration=function(){var t;return this.transitionDuration?this.transitionDuration:(t=this.$modalElement.css("transition-duration"),this.transitionDuration=void 0===t?500:t.indexOf("ms")>-1?parseFloat(t):1e3*parseFloat(t))},i.prototype.writeHistory=function(){return"undefined"!=typeof history&&null!==history&&"function"==typeof history.pushState?history.pushState(null,null,""):void 0},i.prototype.filterOutSlickClones=function(i){return this.elementIsSlick()?i=i.filter(function(){var i;return i=t(this),!i.hasClass("slick-cloned")&&0===i.parents(".slick-cloned").length}):i},i.prototype.handlePossibleCloneClick=function(i,n){var o;return this.elementIsSlick()&&i.closest(".slick-slide").hasClass("slick-cloned")?(o=i.attr("href"),n.filter(function(){return t(this).attr("href")===o}).first()):i},i.prototype.elementIsSlick=function(){return this.$element.hasClass("slick-slider")},i}(),n={background:"rgba(0,0,0,.8)",closeOnEscape:!0,closeOnBackdropClick:!0,destroyTimeout:500,itemSelector:"a",navigateByKeyboard:!0,src:!1,caption:!1,captionPosition:"dynamic",images:!1,slick:{},useHistoryApi:!1,layouts:{closeButton:'<button type="button" class="slick-lightbox-close"></button>'},shouldOpen:null,imageMaxHeight:.9,lazy:!1},t.fn.slickLightbox=function(o){return o=t.extend({},n,o),t(this).each(function(){return this.slickLightbox=new i(this,o)}),this},t.fn.unslickLightbox=function(){return t(this).trigger("destroy.slickLightbox").each(function(){return this.slickLightbox=null})}}(jQuery);
vendor: 10,986 bytes, lines 15-362
15//# sourceMappingURL=slick-lightbox.min.js.map 16// Sticky Plugin v1.0.4 for jQuery 17// ============= 18// Author: Anthony Garand 19// Improvements by German M. Bravo (Kronuz) and Ruud Kamphuis (ruudk) 20// Improvements by Leonardo C. Daronco (daronco) 21// Created: 02/14/2011 22// Date: 07/20/2015 23// Website: http://stickyjs.com/ 24// Description: Makes an element on the page stick on the screen as you scroll 25// It will only set the 'top' and 'position' of your element, you 26// might need to adjust the width in some cases. 27 28(function (factory) { 29 if (typeof define === 'function' && define.amd) { 30 // AMD. Register as an anonymous module. 31 define(['jquery'], factory); 32 } else if (typeof module === 'object' && module.exports) { 33 // Node/CommonJS 34 module.exports = factory(require('jquery')); 35 } else { 36 // Browser globals 37 factory(jQuery); 38 } 39}(function ($) { 40 var slice = Array.prototype.slice; // save ref to original slice() 41 var splice = Array.prototype.splice; // save ref to original slice() 42 43 var defaults = { 44 topSpacing: 0, 45 bottomSpacing: 0, 46 className: 'is-sticky', 47 wrapperClassName: 'sticky-wrapper', 48 center: false, 49 getWidthFrom: '', 50 widthFromWrapper: true, // works only when .getWidthFrom is empty 51 responsiveWidth: false, 52 zIndex: 'auto' 53 }, 54 $window = $(window), 55 $document = $(document), 56 sticked = [], 57 windowHeight = $window.height(), 58 scroller = function() { 59 var scrollTop = $window.scrollTop(), 60 documentHeight = $document.height(), 61 dwh = documentHeight - windowHeight, 62 extra = (scrollTop > dwh) ? dwh - scrollTop : 0; 63 64 for (var i = 0, l = sticked.length; i < l; i++) { 65 var s = sticked[i], 66 elementTop = s.stickyWrapper.offset().top, 67 etse = elementTop - s.topSpacing - extra; 68 69 //update height in case of dynamic content 70 s.stickyWrapper.css('height', s.stickyElement.outerHeight()); 71 72 if (scrollTop <= etse) { 73 if (s.currentTop !== null) { 74 s.stickyElement 75 .css({ 76 'width': '', 77 'position': '', 78 'top': '', 79 'z-index': '' 80 }); 81 s.stickyElement.parent().removeClass(s.className); 82 s.stickyElement.trigger('sticky-end', [s]); 83 s.currentTop = null; 84 } 85 } 86 else { 87 var newTop = documentHeight - s.stickyElement.outerHeight() 88 - s.topSpacing - s.bottomSpacing - scrollTop - extra; 89 if (newTop < 0) { 90 newTop = newTop + s.topSpacing; 91 } else { 92 newTop = s.topSpacing; 93 } 94 if (s.currentTop !== newTop) { 95 var newWidth; 96 if (s.getWidthFrom) { 97 newWidth = $(s.getWidthFrom).width() || null; 98 } else if (s.widthFromWrapper) { 99 newWidth = s.stickyWrapper.width(); 100 } 101 if (newWidth == null) { 102 newWidth = s.stickyElement.width(); 103 } 104 s.stickyElement 105 .css('width', newWidth) 106 .css('position', 'fixed') 107 .css('top', newTop) 108 .css('z-index', s.zIndex); 109 110 s.stickyElement.parent().addClass(s.className); 111 112 if (s.currentTop === null) { 113 s.stickyElement.trigger('sticky-start', [s]); 114 } else { 115 // sticky is started but it have to be repositioned 116 s.stickyElement.trigger('sticky-update', [s]); 117 } 118 119 if (s.currentTop === s.topSpacing && s.currentTop > newTop || s.currentTop === null && newTop < s.topSpacing) { 120 // just reached bottom || just started to stick but bottom is already reached 121 s.stickyElement.trigger('sticky-bottom-reached', [s]); 122 } else if(s.currentTop !== null && newTop === s.topSpacing && s.currentTop < newTop) { 123 // sticky is started && sticked at topSpacing && overflowing from top just finished 124 s.stickyElement.trigger('sticky-bottom-unreached', [s]); 125 } 126 127 s.currentTop = newTop; 128 } 129 130 // Check if sticky has reached end of container and stop sticking 131 var stickyWrapperContainer = s.stickyWrapper.parent(); 132 var unstick = (s.stickyElement.offset().top + s.stickyElement.outerHeight() >= stickyWrapperContainer.offset().top + stickyWrapperContainer.outerHeight()) && (s.stickyElement.offset().top <= s.topSpacing); 133 134 if( unstick ) { 135 s.stickyElement 136 .css('position', 'absolute') 137 .css('top', '') 138 .css('bottom', 0) 139 .css('z-index', ''); 140 } else { 141 s.stickyElement 142 .css('position', 'fixed') 143 .css('top', newTop) 144 .css('bottom', '') 145 .css('z-index', s.zIndex); 146 } 147 } 148 } 149 }, 150 resizer = function() { 151 windowHeight = $window.height(); 152 153 for (var i = 0, l = sticked.length; i < l; i++) { 154 var s = sticked[i]; 155 var newWidth = null; 156 if (s.getWidthFrom) { 157 if (s.responsiveWidth) { 158 newWidth = $(s.getWidthFrom).width(); 159 } 160 } else if(s.widthFromWrapper) { 161 newWidth = s.stickyWrapper.width(); 162 } 163 if (newWidth != null) { 164 s.stickyElement.css('width', newWidth); 165 } 166 } 167 }, 168 methods = { 169 init: function(options) { 170 var o = $.extend({}, defaults, options); 171 return this.each(function() { 172 var stickyElement = $(this); 173 174 var stickyId = stickyElement.attr('id'); 175 var wrapperId = stickyId ? stickyId + '-' + defaults.wrapperClassName : defaults.wrapperClassName; 176 var wrapper = $('<div></div>') 177 .attr('id', wrapperId) 178 .addClass(o.wrapperClassName); 179 180 stickyElement.wrapAll(wrapper); 181 182 var stickyWrapper = stickyElement.parent(); 183 184 if (o.center) { 185 stickyWrapper.css({width:stickyElement.outerWidth(),marginLeft:"auto",marginRight:"auto"}); 186 } 187 188 if (stickyElement.css("float") === "right") { 189 stickyElement.css({"float":"none"}).parent().css({"float":"right"}); 190 } 191 192 o.stickyElement = stickyElement; 193 o.stickyWrapper = stickyWrapper; 194 o.currentTop = null; 195 196 sticked.push(o); 197 198 methods.setWrapperHeight(this); 199 methods.setupChangeListeners(this); 200 }); 201 }, 202 203 setWrapperHeight: function(stickyElement) { 204 var element = $(stickyElement); 205 var stickyWrapper = element.parent(); 206 if (stickyWrapper) { 207 stickyWrapper.css('height', element.outerHeight()); 208 } 209 }, 210 211 setupChangeListeners: function(stickyElement) { 212 if (window.MutationObserver) { 213 var mutationObserver = new window.MutationObserver(function(mutations) { 214 if (mutations[0].addedNodes.length || mutations[0].removedNodes.length) { 215 methods.setWrapperHeight(stickyElement); 216 } 217 }); 218 mutationObserver.observe(stickyElement, {subtree: true, childList: true}); 219 } else { 220 stickyElement.addEventListener('DOMNodeInserted', function() { 221 methods.setWrapperHeight(stickyElement); 222 }, false); 223 stickyElement.addEventListener('DOMNodeRemoved', function() { 224 methods.setWrapperHeight(stickyElement); 225 }, false); 226 } 227 }, 228 update: scroller, 229 unstick: function(options) { 230 return this.each(function() { 231 var that = this; 232 var unstickyElement = $(that); 233 234 var removeIdx = -1; 235 var i = sticked.length; 236 while (i-- > 0) { 237 if (sticked[i].stickyElement.get(0) === that) { 238 splice.call(sticked,i,1); 239 removeIdx = i; 240 } 241 } 242 if(removeIdx !== -1) { 243 unstickyElement.unwrap(); 244 unstickyElement 245 .css({ 246 'width': '', 247 'position': '', 248 'top': '', 249 'float': '', 250 'z-index': '' 251 }) 252 ; 253 } 254 }); 255 } 256 }; 257 258 // should be more efficient than using $window.scroll(scroller) and $window.resize(resizer): 259 if (window.addEventListener) { 260 window.addEventListener('scroll', scroller, false); 261 window.addEventListener('resize', resizer, false); 262 } else if (window.attachEvent) { 263 window.attachEvent('onscroll', scroller); 264 window.attachEvent('onresize', resizer); 265 } 266 267 $.fn.sticky = function(method) { 268 if (methods[method]) { 269 return methods[method].apply(this, slice.call(arguments, 1)); 270 } else if (typeof method === 'object' || !method ) { 271 return methods.init.apply( this, arguments ); 272 } else { 273 $.error('Method ' + method + ' does not exist on jQuery.sticky'); 274 } 275 }; 276 277 $.fn.unstick = function(method) { 278 if (methods[method]) { 279 return methods[method].apply(this, slice.call(arguments, 1)); 280 } else if (typeof method === 'object' || !method ) { 281 return methods.unstick.apply( this, arguments ); 282 } else { 283 $.error('Method ' + method + ' does not exist on jQuery.sticky'); 284 } 285 }; 286 $(function() { 287 setTimeout(scroller, 0); 288 }); 289})); 290 291/*jslint browser: true*/ 292/*jslint jquery: true*/ 293 294/* 295 * jQuery Hotkeys Plugin 296 * Copyright 2010, John Resig 297 * Dual licensed under the MIT or GPL Version 2 licenses. 298 * 299 * Based upon the plugin by Tzury Bar Yochay: 300 * https://github.com/tzuryby/jquery.hotkeys 301 * 302 * Original idea by: 303 * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/ 304 */ 305 306/* 307 * One small change is: now keys are passed by object { keys: '...' } 308 * Might be useful, when you want to pass some other data to your handler 309 */ 310 311(function(jQuery) { 312 313 jQuery.hotkeys = { 314 version: "0.2.0", 315 316 specialKeys: { 317 8: "backspace", 318 9: "tab", 319 10: "return", 320 13: "return", 321 16: "shift", 322 17: "ctrl", 323 18: "alt", 324 19: "pause", 325 20: "capslock", 326 27: "esc", 327 32: "space", 328 33: "pageup", 329 34: "pagedown", 330 35: "end", 331 36: "home", 332 37: "left", 333 38: "up", 334 39: "right", 335 40: "down", 336 45: "insert", 337 46: "del", 338 59: ";", 339 61: "=", 340 96: "0", 341 97: "1", 342 98: "2", 343 99: "3", 344 100: "4", 345 101: "5", 346 102: "6", 347 103: "7", 348 104: "8", 349 105: "9", 350 106: "*", 351 107: "+", 352 109: "-", 353 110: ".", 354 111: "/", 355 112: "f1", 356 113: "f2", 357 114: "f3", 358 115: "f4", 359 116: "f5", 360 117: "f6", 361 118: "f7", 362 119: "f8",
363 120: "f9", 364 121: "f10", 365 122: "f11", 366 123: "f12", 367 144: "numlock", 368 145: "scroll", 369 173: "-", 370 186: ";", 371 187: "=", 372 188: ",", 373 189: "-", 374 190: ".", 375 191: "/", 376 192: "`", 377 219: "[", 378 220: "\\", 379 221: "]", 380 222: "'" 381 }, 382 383 shiftNums: { 384 "`": "~", 385 "1": "!", 386 "2": "@", 387 "3": "#", 388 "4": "$", 389 "5": "%", 390 "6": "^", 391 "7": "&", 392 "8": "*", 393 "9": "(", 394 "0": ")", 395 "-": "_", 396 "=": "+", 397 ";": ": ", 398 "'": "\"", 399 ",": "<", 400 ".": ">", 401 "/": "?", 402 "\\": "|" 403 }, 404 405 // excludes: button, checkbox, file, hidden, image, password, radio, reset, search, submit, url 406 textAcceptingInputTypes: [ 407 "text", "password", "number", "email", "url", "range", "date", "month", "week", "time", "datetime", 408 "datetime-local", "search", "color", "tel"], 409 410 // default input types not to bind to unless bound directly 411 textInputTypes: /textarea|input|select/i, 412 413 options: { 414 filterInputAcceptingElements: true, 415 filterTextInputs: true, 416 filterContentEditable: true 417 } 418 }; 419 420 function keyHandler(handleObj) { 421 if (typeof handleObj.data === "string") { 422 handleObj.data = { 423 keys: handleObj.data 424 }; 425 } 426 427 // Only care when a possible input has been specified 428 if (!handleObj.data || !handleObj.data.keys || typeof handleObj.data.keys !== "string") { 429 return; 430 } 431 432 var origHandler = handleObj.handler, 433 keys = handleObj.data.keys.toLowerCase().split(" "); 434 435 handleObj.handler = function(event) { 436 // Don't fire in text-accepting inputs that we didn't directly bind to 437 if (this !== event.target && 438 (jQuery.hotkeys.options.filterInputAcceptingElements && 439 jQuery.hotkeys.textInputTypes.test(event.target.nodeName) || 440 (jQuery.hotkeys.options.filterContentEditable && jQuery(event.target).attr('contenteditable')) || 441 (jQuery.hotkeys.options.filterTextInputs && 442 jQuery.inArray(event.target.type, jQuery.hotkeys.textAcceptingInputTypes) > -1))) { 443 return; 444 } 445 446 var special = event.type !== "keypress" && jQuery.hotkeys.specialKeys[event.which], 447 character = String.fromCharCode(event.which).toLowerCase(), 448 modif = "", 449 possible = {}; 450 451 jQuery.each(["alt", "ctrl", "shift"], function(index, specialKey) { 452 453 if (event[specialKey + 'Key'] && special !== specialKey) { 454 modif += specialKey + '+'; 455 } 456 }); 457 458 // metaKey is triggered off ctrlKey erronously 459 if (event.metaKey && !event.ctrlKey && special !== "meta") { 460 modif += "meta+"; 461 } 462 463 if (event.metaKey && special !== "meta" && modif.indexOf("alt+ctrl+shift+") > -1) { 464 modif = modif.replace("alt+ctrl+shift+", "hyper+"); 465 } 466 467 if (special) { 468 possible[modif + special] = true; 469 } 470 else { 471 possible[modif + character] = true; 472 possible[modif + jQuery.hotkeys.shiftNums[character]] = true; 473 474 // "$" can be triggered as "Shift+4" or "Shift+$" or just "$" 475 if (modif === "shift+") { 476 possible[jQuery.hotkeys.shiftNums[character]] = true; 477 } 478 } 479 480 for (var i = 0, l = keys.length; i < l; i++) { 481 if (possible[keys[i]]) { 482 return origHandler.apply(this, arguments); 483 } 484 } 485 }; 486 } 487 488 jQuery.each(["keydown", "keyup", "keypress"], function() { 489 jQuery.event.special[this] = { 490 add: keyHandler 491 }; 492 }); 493 494})(jQuery || this.jQuery || window.jQuery); 495 496!function(a,b){"function"==typeof define&&define.amd?define([],function(){return a.svg4everybody=b()}):"object"==typeof module&&module.exports?module.exports=b():a.svg4everybody=b()}(this,function(){function a(a,b,c){if(c){var d=document.createDocumentFragment(),e=!b.hasAttribute("viewBox")&&c.getAttribute("viewBox");e&&b.setAttribute("viewBox",e);for(var f=c.cloneNode(!0);f.childNodes.length;)d.appendChild(f.firstChild);a.appendChild(d)}}function b(b){b.onreadystatechange=function(){if(4===b.readyState){var c=b._cachedDocument;c||(c=b._cachedDocument=document.implementation.createHTMLDocument(""),c.body.innerHTML=b.responseText,b._cachedTarget={}),b._embeds.splice(0).map(function(d){var e=b._cachedTarget[d.id];e||(e=b._cachedTarget[d.id]=c.getElementById(d.id)),a(d.parent,d.svg,e)})}},b.onreadystatechange()}function c(c){function e(){for(var c=0;c<o.length;){var h=o[c],i=h.parentNode,j=d(i),k=h.getAttribute("xlink:href")||h.getAttribute("href");if(!k&&g.attributeName&&(k=h.getAttribute(g.attributeName)),j&&k){if(f)if(!g.validate||g.validate(k,j,h)){i.removeChild(h);var l=k.split("#"),q=l.shift(),r=l.join("#");if(q.length){var s=m[q];
vendor: 745 bytes, line 496
496s||(s=m[q]=new XMLHttpRequest,s.open("GET",q),s.send(),s._embeds=[]),s._embeds.push({parent:i,svg:j,id:r}),b(s)}else a(i,j,document.getElementById(r))}else++c,++p}else++c}(!o.length||o.length-p>0)&&n(e,67)}var f,g=Object(c),h=/\bTrident\/[567]\b|\bMSIE (?:9|10)\.0\b/,i=/\bAppleWebKit\/(\d+)\b/,j=/\bEdge\/12\.(\d+)\b/,k=/\bEdge\/.(\d+)\b/,l=window.top!==window.self;f="polyfill"in g?g.polyfill:h.test(navigator.userAgent)||(navigator.userAgent.match(j)||[])[1]<10547||(navigator.userAgent.match(i)||[])[1]<537||k.test(navigator.userAgent)&&l;var m={},n=window.requestAnimationFrame||setTimeout,o=document.getElementsByTagName("use"),p=0;f&&e()}function d(a){for(var b=a;"svg"!==b.nodeName.toLowerCase()&&(b=b.parentNode););return b}return c});
vendor: 60,887 bytes, lines 497-505
497//! moment.js 498//! version : 2.31.0 499//! authors : Tim Wood, Iskren Chernev, Moment.js contributors 500//! license : MIT 501//! momentjs.com 502((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()})(this,function(){var U;function y(){return U.apply(null,arguments)}function g(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function F(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function c(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function L(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;for(var t in e)if(c(e,t))return;return 1}function w(e){return void 0===e}function p(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function V(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function G(e,t){for(var n=[],s=e.length,i=0;i<s;++i)n.push(t(e[i],i));return n}function k(e,t){for(var n in t)c(t,n)&&(e[n]=t[n]);return c(t,"toString")&&(e.toString=t.toString),c(t,"valueOf")&&(e.valueOf=t.valueOf),e}function l(e,t,n,s){return Lt(e,t,n,s,!0).utc()}function M(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidOffset:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function E(e){var t,n,s=e._d&&!isNaN(e._d.getTime());return s&&(t=M(e),n=I.call(t.parsedDateParts,function(e){return null!=e}),s=t.overflow<0&&!t.empty&&!t.invalidEra&&!t.invalidMonth&&!t.invalidOffset&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||(t.meridiem,n)),e._strict)&&(s=s&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e)?s:(e._isValid=s,e._isValid)}function A(e){var t=l(NaN);return null!=e?k(M(t),e):M(t).userInvalidated=!0,t}var I=Array.prototype.some||function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1},j=y.momentProperties=[],z=!1;function Z(e,t){var n,s,i,r=j.length;if(w(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),w(t._i)||(e._i=t._i),w(t._f)||(e._f=t._f),w(t._l)||(e._l=t._l),w(t._strict)||(e._strict=t._strict),w(t._tzm)||(e._tzm=t._tzm),w(t._isUTC)||(e._isUTC=t._isUTC),w(t._offset)||(e._offset=t._offset),w(t._pf)||(e._pf=M(t)),w(t._locale)||(e._locale=t._locale),0<r)for(n=0;n<r;n++)w(i=t[s=j[n]])||(e[s]=i);return e}function $(e){Z(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===z&&(z=!0,y.updateOffset(this),z=!1)}function D(e){return e instanceof $||null!=e&&null!=e._isAMomentObject}function q(e){!1===y.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function e(r,a){var o=!0;return k(function(){if(null!=y.deprecationHandler&&y.deprecationHandler(null,r),o){for(var e,t,n=[],s=arguments.length,i=0;i<s;i++){if(e="","object"==typeof arguments[i]){for(t in e+="\n["+i+"] ",arguments[0])c(arguments[0],t)&&(e+=t+": "+arguments[0][t]+", ");e=e.slice(0,-2)}else e=arguments[i];n.push(e)}q(r+"\nArguments: "+Array.prototype.slice.call(n).join("")+"\n"+(new Error).stack),o=!1}return a.apply(this,arguments)},a)}var B={};function J(e,t){null!=y.deprecationHandler&&y.deprecationHandler(e,t),B[e]||(q(t+"\n"+(new Error).stack),B[e]=!0)}function h(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}y.suppressDeprecationWarnings=!1,y.deprecationHandler=null;var Q={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function a(e){return"string"==typeof e?Q[e]||Q[e.toLowerCase()]:void 0}function X(e){var t,n,s={};for(n in e)c(e,n)&&(t=a(n))&&(s[t]=e[n]);return s}var K={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};function r(e,t,n){var s=""+Math.abs(e);return(0<=e?n?"+":"":"-")+Math.pow(10,Math.max(0,t-s.length)).toString().substr(1)+s}var ee=/(\[[^\[]*\])|(\\e)|(\\)?(eHHmm|[Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,te=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,ne={},se={};function s(e,t,n,s){var i="string"==typeof s?function(){return this[s]()}:s;e&&(se[e]=i),t&&(se[t[0]]=function(){return r(i.apply(this,arguments),t[1],t[2])}),n&&(se[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function ie(e,t){var n;return e.isValid()?(n="$"+(t=re(t,e.localeData())),c(ne,n)||(ne[n]=(s=>{for(var e,i=s.match(ee),t=0,r=i.length;t<r;t++)se[i[t]]?i[t]=se[i[t]]:i[t]=(e=i[t]).match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"");return function(e){for(var t="",n=0;n<r;n++)t+=h(i[n])?i[n].call(e,s):i[n];return t}})(t)),ne[n](e)):e.localeData().invalidDate()}function re(e,t){var n=5;function s(e){return t.longDateFormat(e)||e}for(te.lastIndex=0;0<=n&&te.test(e);)e=e.replace(te,s),te.lastIndex=0,--n;return e}var ae=/\d/,t=/\d\d/,oe=/\d{3}/,ue=/\d{4}/,le=/[+-]?\d{6}/,n=/\d\d?/,de=/\d\d\d\d?/,he=/\d\d\d\d\d\d?/,ce=/\d{1,3}/,fe=/\d{1,4}/,me=/[+-]?\d{1,6}/,_e=/\d+/,ye=/[+-]?\d+/,ge=/Z|[+-]\d\d:?\d\d/gi,we=/Z|[+-]\d\d(?::?\d\d)?/gi,i=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,o=/^[1-9]\d?/,u=/^([1-9]\d|\d)/;function d(e,n,s){ke[e]=h(n)?n:function(e,t){return e&&s?s:n}}function pe(e,t){return c(ke,e)?ke[e](t._strict,t._locale):new RegExp(f(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i})))}function f(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function m(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function _(e){var e=+e,t=0;return t=0!=e&&isFinite(e)?m(e):t}var ke={},Me={};function v(e,n){var t,s,i=n;for("string"==typeof e&&(e=[e]),p(n)&&(i=function(e,t){t[n]=_(e)}),s=e.length,t=0;t<s;t++)Me[e[t]]=i}function De(e,i){v(e,function(e,t,n,s){n._w=n._w||{},i(e,n._w,n,s)})}function ve(e){return e%4==0&&e%100!=0||e%400==0}var S=0,Y=1,O=2,b=3,x=4,T=5,Se=6,Ye=7,Oe=8;function be(e){return ve(e)?366:365}s("Y",0,0,function(){var e=this.year();return e<=9999?r(e,4):"+"+e}),s(0,["YY",2],0,function(){return this.year()%100}),s(0,["YYYY",4],0,"year"),s(0,["YYYYY",5],0,"year"),s(0,["YYYYYY",6,!0],0,"year"),d("Y",ye),d("YY",n,t),d("YYYY",fe,ue),d("YYYYY",me,le),d("YYYYYY",me,le),v(["YYYYY","YYYYYY"],S),v("YYYY",function(e,t){t[S]=2===e.length?y.parseTwoDigitYear(e):_(e)}),v("YY",function(e,t){t[S]=y.parseTwoDigitYear(e)}),v("Y",function(e,t){t[S]=parseInt(e,10)}),y.parseTwoDigitYear=function(e){return _(e)+(68<_(e)?1900:2e3)};var N,xe=Te("FullYear",!0);function Te(t,n){return function(e){return null!=e?(Pe(this,t,e),y.updateOffset(this,n),this):Ne(this,t)}}function Ne(e,t){if(!e.isValid())return NaN;var n=e._d,s=e._isUTC;switch(t){case"Milliseconds":return s?n.getUTCMilliseconds():n.getMilliseconds();case"Seconds":return s?n.getUTCSeconds():n.getSeconds();case"Minutes":return s?n.getUTCMinutes():n.getMinutes();case"Hours":return s?n.getUTCHours():n.getHours();case"Date":return s?n.getUTCDate():n.getDate();case"Day":return s?n.getUTCDay():n.getDay();case"Month":return s?n.getUTCMonth():n.getMonth();case"FullYear":return s?n.getUTCFullYear():n.getFullYear();default:return NaN}}function Pe(e,t,n){var s,i,r;if(e.isValid()&&!isNaN(n)){switch(s=e._d,i=e._isUTC,t){case"Milliseconds":return i?s.setUTCMilliseconds(n):s.setMilliseconds(n);case"Seconds":return i?s.setUTCSeconds(n):s.setSeconds(n);case"Minutes":return i?s.setUTCMinutes(n):s.setMinutes(n);case"Hours":return i?s.setUTCHours(n):s.setHours(n);case"Date":return i?s.setUTCDate(n):s.setDate(n);case"FullYear":break;default:return}t=n,r=e.month(),e=29!==(e=e.date())||1!==r||ve(t)?e:28,i?s.setUTCFullYear(t,r,e):s.setFullYear(t,r,e)}}function We(e,t){var n;return isNaN(e)||isNaN(t)?NaN:(n=(t%(n=12)+n)%n,e+=(t-n)/12,1==n?ve(e)?29:28:31-n%7%2)}N=Array.prototype.indexOf||function(e){for(var t=0;t<this.length;++t)if(this[t]===e)return t;return-1},s("M",["MM",2],"Mo",function(){return this.month()+1}),s("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),s("MMMM",0,0,function(e){return this.localeData().months(this,e)}),d("M",n,o),d("MM",n,t),d("MMM",function(e,t){return t.monthsShortRegex(e)}),d("MMMM",function(e,t){return t.monthsRegex(e)}),v(["M","MM"],function(e,t){t[Y]=_(e)-1}),v(["MMM","MMMM"],function(e,t,n,s){s=n._locale.monthsParse(e,s,n._strict);null!=s?t[Y]=s:M(n).invalidMonth=e});var Re="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Ce="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),He=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Ue=i,Fe=i,Le=["monthsParse","longMonthsParse","shortMonthsParse","monthsRegex","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex"];function Ve(e,t){if(e.isValid()){if("string"==typeof t)if(/^\d+$/.test(t))t=_(t);else if(!p(t=e.localeData().monthsParse(t)))return;var n=(n=e.date())<29?n:Math.min(n,We(e.year(),t));e._isUTC?e._d.setUTCMonth(t,n):e._d.setMonth(t,n)}}function Ge(e){return null!=e?(Ve(this,e),y.updateOffset(this,!0),this):Ne(this,"Month")}function Ee(){function e(e,t){return t.length-e.length}for(var t,n,s=[],i=[],r=[],a=0;a<12;a++)n=l([2e3,a]),t=f(this.monthsShort(n,"")),n=f(this.months(n,"")),s.push(t),i.push(n),r.push(n),r.push(t);s.sort(e),i.sort(e),r.sort(e),this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Ae(e,t){return e.slice(t,7).concat(e.slice(0,t))}s("d",0,"do","day"),s("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),s("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),s("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),s("e",0,0,"weekday"),s("E",0,0,"isoWeekday"),s("eHHmm",0,0,function(){return""+this.weekday()+r(this.hours(),2)+r(this.minutes(),2)}),d("d",n),d("e",n),d("E",n),d("eHHmm",he),d("dd",function(e,t){return t.weekdaysMinRegex(e)}),d("ddd",function(e,t){return t.weekdaysShortRegex(e)}),d("dddd",function(e,t){return t.weekdaysRegex(e)}),De(["dd","ddd","dddd"],function(e,t,n,s){s=n._locale.weekdaysParse(e,s,n._strict);null!=s?t.d=s:M(n).invalidWeekday=e}),De(["d","e","E"],function(e,t,n,s){t[s]=_(e)}),De("eHHmm",function(e,t,n){var s=e.length-4;t.e=_(e.substr(0,s)),n._a[b]=_(e.substr(s,2)),n._a[x]=_(e.substr(2+s))});var Ie="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),je="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),ze="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Ze=i,$e=i,qe=i,Be=["weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","weekdaysRegex","weekdaysShortRegex","weekdaysMinRegex","weekdaysStrictRegex","weekdaysShortStrictRegex","weekdaysMinStrictRegex"];function Je(){function e(e,t){return t.length-e.length}for(var t,n,s,i=[],r=[],a=[],o=[],u=0;u<7;u++)s=l([2e3,1]).day(u),t=f(this.weekdaysMin(s,"")),n=f(this.weekdaysShort(s,"")),s=f(this.weekdays(s,"")),i.push(t),r.push(n),a.push(s),o.push(t),o.push(n),o.push(s);i.sort(e),r.sort(e),a.sort(e),o.sort(e),this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+i.join("|")+")","i")}function Qe(e,t){var n,s=k({},e);for(n in t)c(t,n)&&(F(e[n])&&F(t[n])?(s[n]={},k(s[n],e[n]),k(s[n],t[n])):null!=t[n]?s[n]=t[n]:delete s[n]);for(n in e)c(e,n)&&!c(t,n)&&F(e[n])&&(s[n]=k({},s[n]));return s}function Xe(e){null!=e&&this.set(e)}var Ke=Object.keys||function(e){var t,n=[];for(t in e)c(e,t)&&n.push(t);return n};function et(e,t,n,s){var i=this._relativeTime[n];return h(i)?i(e,t,n,s):i.replace(/%d/i,e)}function tt(e,t){e=this._relativeTime[0<e?"future":"past"];return h(e)?e(t):e.replace(/%s/i,t)}function nt(e,t,n,s,i,r,a){var o;return e<100&&0<=e?(o=new Date(e+400,t,n,s,i,r,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,s,i,r,a),o}function st(e){var t;return e<100&&0<=e?((t=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,t)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function it(e,t,n){n=7+t-n;return n-(7+st(e,0,n).getUTCDay()-t)%7-1}function rt(e,t,n,s,i){var r,t=1+7*(t-1)+(7+n-s)%7+it(e,s,i),n=t<=0?be(r=e-1)+t:t>be(e)?(r=e+1,t-be(e)):(r=e,t);return{year:r,dayOfYear:n}}function at(e,t,n,s){var i,r,a=it(e,n,s),t=Math.floor((t-a-1)/7)+1;return t<1?i=t+P(r=e-1,n,s):t>P(e,n,s)?(i=t-P(e,n,s),r=e+1):(r=e,i=t),{week:i,year:r}}function ot(e,t,n){return at(e.year(),e.dayOfYear(),t,n)}function ut(e,t,n,s,i){return at(e,Math.round((st(e,t,n)-st(e,0,1))/864e5)+1,s,i)}function P(e,t,n){var s=it(e,t,n),t=it(e+1,t,n);return(be(e)-s+t)/7}s("w",["ww",2],"wo","week"),s("W",["WW",2],"Wo","isoWeek"),d("w",n,o),d("ww",n,t),d("W",n,o),d("WW",n,t),De(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=_(e)});function lt(){return this.hours()%12||12}function dt(e,t){s(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function ht(e,t){return t._meridiemParse}s("H",["HH",2],0,"hour"),s("h",["hh",2],0,lt),s("k",["kk",2],0,function(){return this.hours()||24}),s("hmm",0,0,function(){return""+lt.apply(this)+r(this.minutes(),2)}),s("hmmss",0,0,function(){return""+lt.apply(this)+r(this.minutes(),2)+r(this.seconds(),2)}),s("Hmm",0,0,function(){return""+this.hours()+r(this.minutes(),2)}),s("Hmmss",0,0,function(){return""+this.hours()+r(this.minutes(),2)+r(this.seconds(),2)}),dt("a",!0),dt("A",!1),d("a",ht),d("A",ht),d("H",n,u),d("h",n,o),d("k",n,o),d("HH",n,t),d("hh",n,t),d("kk",n,t),d("hmm",de),d("hmmss",he),d("Hmm",de),d("Hmmss",he),v(["H","HH"],b),v(["k","kk"],function(e,t,n){e=_(e);t[b]=24===e?0:e}),v(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),v(["h","hh"],function(e,t,n){t[b]=_(e),M(n).bigHour=!0}),v("hmm",function(e,t,n){var s=e.length-2;t[b]=_(e.substr(0,s)),t[x]=_(e.substr(s)),M(n).bigHour=!0}),v("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[b]=_(e.substr(0,s)),t[x]=_(e.substr(s,2)),t[T]=_(e.substr(i)),M(n).bigHour=!0}),v("Hmm",function(e,t,n){var s=e.length-2;t[b]=_(e.substr(0,s)),t[x]=_(e.substr(s))}),v("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[b]=_(e.substr(0,s)),t[x]=_(e.substr(s,2)),t[T]=_(e.substr(i))});i=Te("Hours",!0);var ct,ft={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Re,monthsShort:Ce,week:{dow:0,doy:6},weekdays:Ie,weekdaysMin:ze,weekdaysShort:je,meridiemParse:/[ap]\.?m?\.?/i},W={},mt={};function _t(e){return e&&e.toLowerCase().replace("_","-")}function yt(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=_t(e[r]).split("-")).length,n=(n=_t(e[r+1]))?n.split("-"):null;0<t;){if(s=gt(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&((e,t)=>{for(var n=Math.min(e.length,t.length),s=0;s<n;s+=1)if(e[s]!==t[s])return s;return n})(i,n)>=t-1)break;t--}r++}return ct}function gt(t){var e,n;if(c(W,t))return W[t];if(t=_t(t),c(W,t))return W[t];if("undefined"!=typeof module&&module&&module.exports&&"string"==typeof(n=t)&&/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(n))try{e=ct._abbr,require("./locale/"+t),wt(e)}catch(e){W[t]=null}return c(W,t)?W[t]:void 0}function wt(e,t){return e&&((t=w(t)?kt(e):pt(e,t))?ct=t:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),ct._abbr}function pt(e,t){if(null===t)return delete W[e],null;var n,s=ft;if(t.abbr=e,null!=W[e])J("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=W[e]._config;else if(null!=t.parentLocale)if(null!=W[t.parentLocale])s=W[t.parentLocale]._config;else{if(null==(n=gt(t.parentLocale)))return mt[t.parentLocale]||(mt[t.parentLocale]=[]),mt[t.parentLocale].push({name:e,config:t}),null;s=n._config}return W[e]=new Xe(Qe(s,t)),mt[e]&&mt[e].forEach(function(e){pt(e.name,e.config)}),wt(e),W[e]}function kt(e){var t;if(!(e=e&&e._locale&&e._locale._abbr?e._locale._abbr:e))return ct;if(!g(e)){if(t=gt(e))return t;e=[e]}return yt(e)}function Mt(e){var t=e._a;return t&&-2===M(e).overflow&&(t=t[Y]<0||11<t[Y]?Y:t[O]<1||t[O]>We(t[S],t[Y])?O:t[b]<0||24<t[b]||24===t[b]&&(0!==t[x]||0!==t[T]||0!==t[Se])?b:t[x]<0||59<t[x]?x:t[T]<0||59<t[T]?T:t[Se]<0||999<t[Se]?Se:-1,M(e)._overflowDayOfYear&&(t<S||O<t)&&(t=O),M(e)._overflowWeeks&&-1===t&&(t=Ye),M(e)._overflowWeekday&&-1===t&&(t=Oe),M(e).overflow=t),e}var Dt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,vt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,St=/Z|[+-]\d\d(?::?\d\d)?/,Yt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Ot=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],bt=/^\/?Date\((-?\d+)/i,xt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Tt={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Nt(e){var t,n,s,i,r,a,o=e._i,u=Dt.exec(o)||vt.exec(o),o=Yt.length,l=Ot.length;if(u){for(M(e).iso=!0,t=0,n=o;t<n;t++)if(Yt[t][1].exec(u[1])){i=Yt[t][0],s=!1!==Yt[t][2];break}if(null==i)e._isValid=!1;else{if(u[3]){for(t=0,n=l;t<n;t++)if(Ot[t][1].exec(u[3])){r=(u[2]||" ")+Ot[t][0];break}if(null==r)return void(e._isValid=!1)}if(s||null==r){if(u[4]){if(!St.exec(u[4]))return void(e._isValid=!1);a="Z"}e._f=i+(r||"")+(a||""),Ut(e)}else e._isValid=!1}}else e._isValid=!1}function Pt(e,t,n,s,i,r){e=[(e=>(e=parseInt(e,10))<=49?2e3+e:e<=999?1900+e:e)(e),Ce.indexOf(t),parseInt(n,10),parseInt(s,10),parseInt(i,10)];return r&&e.push(parseInt(r,10)),e}function Wt(e){var t,n,s=xt.exec(e._i.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));s?(t=Pt(s[4],s[3],s[2],s[5],s[6],s[7]),((e,t,n)=>{if(!e||je.indexOf(e)===new Date(t[0],t[1],t[2]).getDay())return 1;M(n).weekdayMismatch=!0,n._isValid=!1})(s[1],t,e)&&(e._a=t,e._tzm=(t=s[8],n=s[9],s=s[10],t?Tt[t]:n?0:60*(((t=parseInt(s,10))-(n=t%100))/100)+n),e._d=st.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),M(e).rfc2822=!0)):e._isValid=!1}function Rt(e,t,n){return null!=e?e:null!=t?t:n}function Ct(e,t,n){var s=Object.prototype.hasOwnProperty.call(e,"_isDefaultDatePartsForWeek"),i=e._isDefaultDatePartsForWeek;e._isDefaultDatePartsForWeek=!!n;try{return y._getDefaultDateParts(e,t,n)}finally{s?e._isDefaultDatePartsForWeek=i:delete e._isDefaultDatePartsForWeek}}function Ht(e){var t,n,s,i,r,a,o,u,l,d,h,c,f=[];if(!e._d){for(null!=e._a[S]&&null!=e._a[Y]&&null!=e._a[O]||(n=Ct(s=e,s=(s=s._defaultDatePartsNow)?(s.hasValue||(s.value=y.now(),s.hasValue=!0),s.value):y.now())),e._w&&null==e._a[O]&&null==e._a[Y]&&(r=Ct(i=e,s,!0),null!=(a=i._w).GG||null!=a.W||null!=a.E?(d=1,h=4,o=Rt(a.GG,i._a[S],ut(r[S],r[Y],r[O],1,4).year),u=Rt(a.W,1),((l=Rt(a.E,1))<1||7<l)&&(c=!0)):(d=i._locale._week.dow,h=i._locale._week.doy,r=ut(r[S],r[Y],r[O],d,h),o=Rt(a.gg,i._a[S],r.year),u=Rt(a.w,r.week),null!=a.d?((l=a.d)<0||6<l)&&(c=!0):null!=a.e?(l=a.e+d,(a.e<0||6<a.e)&&(c=!0)):l=d),u<1||u>P(o,d,h)?M(i)._overflowWeeks=!0:null!=c?M(i)._overflowWeekday=!0:(r=rt(o,u,l,d,h),i._a[S]=r.year,i._dayOfYear=r.dayOfYear)),null!=e._dayOfYear&&(a=(null!=e._a[S]?e._a:n)[S],(e._dayOfYear>be(a)||0===e._dayOfYear)&&(M(e)._overflowDayOfYear=!0),c=st(a,0,e._dayOfYear),e._a[Y]=c.getUTCMonth(),e._a[O]=c.getUTCDate()),o=null==e._a[S]||null==e._a[Y]||null==e._a[O],t=0;t<3&&null==e._a[t];++t)e._a[t]=f[t]=n[t];for(;t<7;t++)e._a[t]=f[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[b]&&0===e._a[x]&&0===e._a[T]&&0===e._a[Se]&&(e._nextDay=!0,e._a[b]=0),e._d=(e._useUTC?st:nt).apply(null,f),u=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[b]=24),e._w&&void 0!==e._w.d&&!o&&e._w.d!==u&&(M(e).weekdayMismatch=!0)}}function Ut(e){if(e._f===y.ISO_8601)Nt(e);else if(e._f===y.RFC_2822)Wt(e);else{e._a=[],M(e).empty=!0;for(var t,n,s,i,r,a=""+e._i,o=a.length,u=0,l=re(e._f,e._locale).match(ee)||[],d=l.length,h=0;h<d;h++)n=l[h],(t=(a.match(pe(n,e))||[])[0])&&(0<(s=a.substr(0,a.indexOf(t))).length&&M(e).unusedInput.push(s),a=a.slice(a.indexOf(t)+t.length),u+=t.length),se[n]?(t?M(e).empty=!1:M(e).unusedTokens.push(n),s=n,r=e,null!=(i=t)&&c(Me,s)&&Me[s](i,r._a,r,s)):e._strict&&!t&&M(e).unusedTokens.push(n);M(e).charsLeftOver=o-u,0<a.length&&M(e).unusedInput.push(a),e._a[b]<=12&&!0===M(e).bigHour&&0<e._a[b]&&(M(e).bigHour=void 0),M(e).parsedDateParts=e._a.slice(0),M(e).meridiem=e._meridiem,e._a[b]=((e,t,n)=>null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((e=e.isPM(n))&&t<12&&(t+=12),t=e||12!==t?t:0):t)(e._locale,e._a[b],e._meridiem),null!==(o=M(e).era)&&(e._a[S]=e._locale.erasConvertYear(o,e._a[S])),Ht(e),Mt(e)}}function Ft(e){var t,n,s,i=e._i,r=e._f;if(e._locale=e._locale||kt(e._l),null===i||void 0===r&&""===i)return A({nullInput:!0});if("string"==typeof i&&(e._i=i=e._locale.preparse(i)),D(i))return new $(Mt(i));if(V(i))e._d=i;else if(g(r)){var a,o,u,l,d,h,c=e,f=!1,m={},_=c._f.length;if(0===_)M(c).invalidFormat=!0,c._d=new Date(NaN);else{for(l=0;l<_;l++)d=0,h=!1,a=Z({},c),null!=c._useUTC&&(a._useUTC=c._useUTC),a._defaultDatePartsNow=m,a._f=c._f[l],Ut(a),E(a)&&(h=!0),d=(d+=M(a).charsLeftOver)+10*M(a).unusedTokens.length,M(a).score=d,f?d<u&&(u=d,o=a):(null==u||d<u||h)&&(u=d,o=a,h)&&(f=!0);k(c,o||a)}}else if(r)Ut(e);else if(w(r=(i=e)._i))i._d=new Date(y.now());else V(r)?i._d=new Date(r.valueOf()):"string"==typeof r?(n=i,null!==(t=bt.exec(n._i))?n._d=new Date(+t[1]):(Nt(n),!1===n._isValid&&(delete n._isValid,Wt(n),!1===n._isValid)&&(delete n._isValid,n._strict?n._isValid=!1:y.createFromInputFallback(n)))):g(r)?(i._a=G(r.slice(0),function(e){return parseInt(e,10)}),Ht(i)):F(r)?(t=i)._d||(s=void 0===(n=X(t._i)).day?n.date:n.day,t._a=G([n.year,n.month,s,n.hour,n.minute,n.second,n.millisecond],function(e){return e&&parseInt(e,10)}),Ht(t)):p(r)?i._d=new Date(r):y.createFromInputFallback(i);return E(e)||(e._d=null),e}function Lt(e,t,n,s,i){var r={};return!0!==t&&!1!==t||(s=t,t=void 0),!0!==n&&!1!==n||(s=n,n=void 0),(F(e)&&L(e)||g(e)&&0===e.length)&&(e=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=i,r._l=n,r._i=e,r._f=t,r._strict=s,(i=new $(Mt(Ft(i=r))))._nextDay&&(i.add(1,"d"),i._nextDay=void 0),i}function R(e,t,n,s){return Lt(e,t,n,s,!1)}y.createFromInputFallback=e("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),y._getDefaultDateParts=function(e,t,n){return n=n||e._isDefaultDatePartsForWeek,t=n?R(t):new Date(t),n?[t.year(),t.month(),t.date()]:e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]},y.ISO_8601=function(){},y.RFC_2822=function(){};de=e("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=R.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:A()}),he=e("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=R.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:A()});function Vt(e,t){var n,s;if(!(t=1===t.length&&g(t[0])?t[0]:t).length)return R();for(s=0;s<t.length;++s)if(D(t[s])){n=t[s];break}if(!n)return A();for(++s;s<t.length;++s)!D(t[s])||t[s].isValid()&&!t[s][e](n)||(n=t[s]);return n}var Gt=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Et(e){var e=X(e),t=e.year||0,n=e.quarter||0,s=e.month||0,i=e.week||e.isoWeek||0,r=e.day||0,a=e.hour||0,o=e.minute||0,u=e.second||0,l=e.millisecond||0;this._isValid=(e=>{var t,n,s=!1,i=Gt.length;for(t in e)if(c(e,t)&&(-1===N.call(Gt,t)||null!=e[t]&&isNaN(e[t])))return!1;for(n=0;n<i;++n)if(e[Gt[n]]){if(s)return!1;parseFloat(e[Gt[n]])!==_(e[Gt[n]])&&(s=!0)}return!0})(e),this._milliseconds=+l+1e3*u+6e4*o+1e3*a*60*60,this._days=+r+7*i,this._months=+s+3*n+12*t,this._data={},this._locale=kt(),this._bubble()}function At(e){return e instanceof Et}function It(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function jt(e,n){s(e,0,0,function(){var e=this.utcOffset(),t="+";return e<0&&(e=-e,t="-"),t+r(~~(e/60),2)+n+r(~~e%60,2)})}jt("Z",":"),jt("ZZ",""),d("Z",we),d("ZZ",we),v(["Z","ZZ"],function(e,t,n){var s=Zt(we,e);n._useUTC=!0,null===(n._tzm=s)&&(M(n).invalidOffset=e)});var zt=/([\+\-]|\d\d)/gi;function Zt(e,t){var t=(t||"").match(e);return null===t||(t=60*(e=((t[t.length-1]||[])+"").match(zt)||["-",0,0])[1]+_(e[2]),59<_(e[2]))||("+"===e[0]?840<t:720<t)?null:0===t?0:"+"===e[0]?t:-t}function $t(e,t){var n;return t._isUTC?(t=t.clone(),n=(D(e)||V(e)?e:R(e)).valueOf()-t.valueOf(),t._d.setTime(t._d.valueOf()+n),y.updateOffset(t,!1),t):R(e).local()}function qt(e){return-Math.round(e._d.getTimezoneOffset())}function Bt(){return!!this.isValid()&&this._isUTC&&0===this._offset}y.updateOffset=function(){};var Jt=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Qt=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function C(e,t){var n,s=e;return At(e)?s={ms:e._milliseconds,d:e._days,M:e._months}:p(e)||!isNaN(+e)?(s={},t?s[t]=+e:s.milliseconds=+e):(t=Jt.exec(e))?(n="-"===t[1]?-1:1,s={y:0,d:_(t[O])*n,h:_(t[b])*n,m:_(t[x])*n,s:_(t[T])*n,ms:_(It(1e3*t[Se]))*n}):(t=Qt.exec(e))?(n="-"===t[1]?-1:1,s={y:Xt(t[2],n),M:Xt(t[3],n),w:Xt(t[4],n),d:Xt(t[5],n),h:Xt(t[6],n),m:Xt(t[7],n),s:Xt(t[8],n)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(t=((e,t)=>{var n;return e.isValid()&&t.isValid()?(t=$t(t,e),e.isBefore(t)?n=Kt(e,t):((n=Kt(t,e)).milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}})(R(s.from),R(s.to)),(s={}).ms=t.milliseconds,s.M=t.months),n=new Et(s),At(e)&&c(e,"_locale")&&(n._locale=e._locale),At(e)&&c(e,"_isValid")&&(n._isValid=e._isValid),n}function Xt(e,t){e=e&&parseFloat(e.replace(",","."));return(isNaN(e)?0:e)*t}function Kt(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function en(s,i){return function(e,t){var n;return null===t||isNaN(+t)||(J(i,"moment()."+i+"(period, number) is deprecated. Please use moment()."+i+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),n=e,e=t,t=n),tn(this,C(e,t),s),this}}function tn(e,t,n,s){var i=t._milliseconds,r=It(t._days),t=It(t._months);e.isValid()&&(s=null==s||s,t&&Ve(e,Ne(e,"Month")+t*n),r&&Pe(e,"Date",Ne(e,"Date")+r*n),i&&e._d.setTime(e._d.valueOf()+i*n),s)&&y.updateOffset(e,r||t)}C.fn=Et.prototype,C.invalid=function(){return C(NaN)};Re=en(1,"add"),Ie=en(-1,"subtract");function nn(e){return"string"==typeof e||e instanceof String}function sn(e){return D(e)||V(e)||nn(e)||p(e)||(t=>{var e=g(t),n=!1;return e&&(n=0===t.filter(function(e){return!p(e)&&nn(t)}).length),e&&n})(e)||(e=>{var t,n,s=F(e)&&!L(e),i=!1,r=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],a=r.length;for(t=0;t<a;t+=1)n=r[t],i=i||c(e,n);return s&&i})(e)||null==e}function rn(e,t){var n,s;return e.date()<t.date()?-rn(t,e):-((n=12*(t.year()-e.year())+(t.month()-e.month()))+(t-(s=e.clone().add(n,"months"))<0?(t-s)/(s-e.clone().add(n-1,"months")):(t-s)/(e.clone().add(1+n,"months")-s)))||0}function an(e){return void 0===e?this._locale._abbr:(null!=(e=kt(e))&&(this._locale=e),this)}y.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",y.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";ze=e("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function on(){return this._locale}var un=126227808e5;function ln(e,t){return(e%t+t)%t}function dn(e,t,n){return e<100&&0<=e?new Date(e+400,t,n)-un:new Date(e,t,n).valueOf()}function hn(e,t,n){return e<100&&0<=e?Date.UTC(e+400,t,n)-un:Date.UTC(e,t,n)}function cn(e,t){return t.erasAbbrRegex(e)}function fn(){for(var e,t,n,s=[],i=[],r=[],a=[],o=this.eras(),u=0,l=o.length;u<l;++u)e=f(o[u].name),t=f(o[u].abbr),n=f(o[u].narrow),i.push(e),s.push(t),r.push(n),a.push(e),a.push(t),a.push(n);this._erasRegex=new RegExp("^("+a.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+i.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+s.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+r.join("|")+")","i")}function mn(e,t){s(0,[e,e.length],0,t)}function _n(e,t,n,s,i){var r;return null==e?ot(this,s,i).year:(r=P(e,s,i),function(e,t,n,s,i){e=rt(e,t,n,s,i),t=st(e.year,0,e.dayOfYear);return this.year(t.getUTCFullYear()),this.month(t.getUTCMonth()),this.date(t.getUTCDate()),this}.call(this,e,t=r<t?r:t,n,s,i))}s("N",0,0,"eraAbbr"),s("NN",0,0,"eraAbbr"),s("NNN",0,0,"eraAbbr"),s("NNNN",0,0,"eraName"),s("NNNNN",0,0,"eraNarrow"),s("y",["y",1],"yo","eraYear"),s("y",["yy",2],0,"eraYear"),s("y",["yyy",3],0,"eraYear"),s("y",["yyyy",4],0,"eraYear"),d("N",cn),d("NN",cn),d("NNN",cn),d("NNNN",function(e,t){return t.erasNameRegex(e)}),d("NNNNN",function(e,t){return t.erasNarrowRegex(e)}),v(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,s){s=n._locale.erasParse(e,s,n._strict);s?M(n).era=s:M(n).invalidEra=e}),d("y",_e),d("yy",_e),d("yyy",_e),d("yyyy",_e),d("yo",function(e,t){return t._eraYearOrdinalRegex||_e}),v(["y","yy","yyy","yyyy"],S),v(["yo"],function(e,t,n,s){var i;n._locale._eraYearOrdinalRegex&&(i=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[S]=n._locale.eraYearOrdinalParse(e,i):t[S]=parseInt(e,10)}),s(0,["gg",2],0,function(){return this.weekYear()%100}),s(0,["GG",2],0,function(){return this.isoWeekYear()%100}),mn("gggg","weekYear"),mn("ggggg","weekYear"),mn("GGGG","isoWeekYear"),mn("GGGGG","isoWeekYear"),d("G",ye),d("g",ye),d("GG",n,t),d("gg",n,t),d("GGGG",fe,ue),d("gggg",fe,ue),d("GGGGG",me,le),d("ggggg",me,le),De(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=_(e)}),De(["gg","GG"],function(e,t,n,s){t[s]=y.parseTwoDigitYear(e)}),s("Q",0,"Qo","quarter"),d("Q",ae),v("Q",function(e,t){t[Y]=3*(_(e)-1)}),s("D",["DD",2],"Do","date"),d("D",n,o),d("DD",n,t),d("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),v(["D","DD"],O),v("Do",function(e,t){t[O]=_(e.match(n)[0])});fe=Te("Date",!0);s("DDD",["DDDD",3],"DDDo","dayOfYear"),d("DDD",ce),d("DDDD",oe),v(["DDD","DDDD"],function(e,t,n){n._dayOfYear=_(e)}),s("m",["mm",2],0,"minute"),d("m",n,u),d("mm",n,t),v(["m","mm"],x);var yn,ue=Te("Minutes",!1),me=(s("s",["ss",2],0,"second"),d("s",n,u),d("ss",n,t),v(["s","ss"],T),Te("Seconds",!1));for(s("S",0,0,function(){return~~(this.millisecond()/100)}),s(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),s(0,["SSS",3],0,"millisecond"),s(0,["SSSS",4],0,function(){return 10*this.millisecond()}),s(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),s(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),s(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),s(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),s(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),d("S",ce,ae),d("SS",ce,t),d("SSS",ce,oe),yn="SSSS";yn.length<=9;yn+="S")d(yn,_e);function gn(e,t){t[Se]=_(1e3*("0."+e))}for(yn="S";yn.length<=9;yn+="S")v(yn,gn);le=Te("Milliseconds",!1),s("z",0,0,"zoneAbbr"),s("zz",0,0,"zoneName");o=$.prototype;function wn(e){return e}o.add=Re,o.calendar=function(e,t){1===arguments.length&&(arguments[0]?sn(arguments[0])?(e=arguments[0],t=void 0):(e=>{for(var t=F(e)&&!L(e),n=!1,s=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"],i=0;i<s.length;i+=1)n=n||c(e,s[i]);return t&&n})(arguments[0])&&(t=arguments[0],e=void 0):t=e=void 0);var e=e||R(),n=$t(e,this).startOf("day"),n=y.calendarFormat(this,n)||"sameElse",t=t&&(h(t[n])?t[n].call(this,e):t[n]);return this.format(t||this.localeData().calendar(n,this,R(e)))},o.clone=function(){return new $(this)},o.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=$t(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=a(t)){case"year":r=rn(this,s)/12;break;case"month":r=rn(this,s);break;case"quarter":r=rn(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:m(r)},o.endOf=function(e){var t,n;if(void 0!==(e=a(e))&&"millisecond"!==e&&this.isValid()){switch(n=this._isUTC?hn:dn,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=36e5-ln(t+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":t=this._d.valueOf(),t+=6e4-ln(t,6e4)-1;break;case"second":t=this._d.valueOf(),t+=1e3-ln(t,1e3)-1;break}this._d.setTime(t),y.updateOffset(this,!0)}return this},o.format=function(e){return e=e||(this.isUtc()?y.defaultFormatUtc:y.defaultFormat),e=ie(this,e),this.localeData().postformat(e)},o.from=function(e,t){return this.isValid()&&(D(e)&&e.isValid()||R(e).isValid())?C({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},o.fromNow=function(e){return this.from(R(),e)},o.to=function(e,t){return this.isValid()&&(D(e)&&e.isValid()||R(e).isValid())?C({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},o.toNow=function(e){return this.to(R(),e)},o.get=function(e){return h(this[e=a(e)])?this[e]():this},o.invalidAt=function(){return M(this).overflow},o.isAfter=function(e,t){return e=D(e)?e:R(e),!(!this.isValid()||!e.isValid())&&("millisecond"===(t=a(t)||"millisecond")?this.valueOf()>e.valueOf():e.valueOf()<this.clone().startOf(t).valueOf())},o.isBefore=function(e,t){return e=D(e)?e:R(e),!(!this.isValid()||!e.isValid())&&("millisecond"===(t=a(t)||"millisecond")?this.valueOf()<e.valueOf():this.clone().endOf(t).valueOf()<e.valueOf())},o.isBetween=function(e,t,n,s){return e=D(e)?e:R(e),t=D(t)?t:R(t),!!(this.isValid()&&e.isValid()&&t.isValid())&&("("===(s=s||"()")[0]?this.isAfter(e,n):!this.isBefore(e,n))&&(")"===s[1]?this.isBefore(t,n):!this.isAfter(t,n))},o.isSame=function(e,t){var e=D(e)?e:R(e);return!(!this.isValid()||!e.isValid())&&("millisecond"===(t=a(t)||"millisecond")?this.valueOf()===e.valueOf():(e=e.valueOf(),this.clone().startOf(t).valueOf()<=e&&e<=this.clone().endOf(t).valueOf()))},o.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},o.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},o.isValid=function(){return E(this)},o.lang=ze,o.locale=an,o.localeData=on,o.max=he,o.min=de,o.parsingFlags=function(){return k({},M(this))},o.set=function(e,t){if("object"==typeof e)for(var n=(e=>{var t,n=[];for(t in e)c(e,t)&&n.push({unit:t,priority:K[t]});return n.sort(function(e,t){return e.priority-t.priority}),n})(e=X(e)),s=n.length,i=0;i<s;i++)this[n[i].unit](e[n[i].unit]);else if(h(this[e=a(e)]))return this[e](t);return this},o.startOf=function(e){var t,n;if(void 0!==(e=a(e))&&"millisecond"!==e&&this.isValid()){switch(n=this._isUTC?hn:dn,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=ln(t+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":t=this._d.valueOf(),t-=ln(t,6e4);break;case"second":t=this._d.valueOf(),t-=ln(t,1e3);break}this._d.setTime(t),y.updateOffset(this,!0)}return this},o.subtract=Ie,o.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},o.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},o.toDate=function(){return new Date(this.valueOf())},o.toISOString=function(e){var t;return this.isValid()?(t=(e=!0!==e)?this.clone().utc():this).year()<0||9999<t.year()?ie(t,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):h(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",ie(t,"Z")):ie(t,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ"):null},o.inspect=function(){var e,t,n;return this.isValid()?(t="moment",e="",this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z"),t="["+t+'("]',n=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",this.format(t+n+"-MM-DD[T]HH:mm:ss.SSS"+(e+'[")]'))):"moment.invalid(/* "+this._i+" */)"},"undefined"!=typeof Symbol&&null!=Symbol.for&&(o[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),o.toJSON=function(){return this.isValid()?this.toISOString():null},o.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},o.unix=function(){return Math.floor(this.valueOf()/1e3)},o.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},o.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},o.eraName=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;n<s;++n){if(e=this.clone().startOf("day").valueOf(),t[n].since<=e&&e<=t[n].until)return t[n].name;if(t[n].until<=e&&e<=t[n].since)return t[n].name}return""},o.eraNarrow=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;n<s;++n){if(e=this.clone().startOf("day").valueOf(),t[n].since<=e&&e<=t[n].until)return t[n].narrow;if(t[n].until<=e&&e<=t[n].since)return t[n].narrow}return""},o.eraAbbr=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;n<s;++n){if(e=this.clone().startOf("day").valueOf(),t[n].since<=e&&e<=t[n].until)return t[n].abbr;if(t[n].until<=e&&e<=t[n].since)return t[n].abbr}return""},o.eraYear=function(){for(var e,t,n=this.localeData().eras(),s=0,i=n.length;s<i;++s)if(e=n[s].since<=n[s].until?1:-1,t=this.clone().startOf("day").valueOf(),n[s].since<=t&&t<=n[s].until||n[s].until<=t&&t<=n[s].since)return(this.year()-y(n[s].since).year())*e+n[s].offset;return this.year()},o.year=xe,o.isLeapYear=function(){return ve(this.year())},o.weekYear=function(e){return _n.call(this,e,this.week(),this.weekday()+this.localeData()._week.dow,this.localeData()._week.dow,this.localeData()._week.doy)},o.isoWeekYear=function(e){return _n.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},o.quarter=o.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},o.month=Ge,o.daysInMonth=function(){return We(this.year(),this.month())},o.week=o.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},o.isoWeek=o.isoWeeks=function(e){var t=ot(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},o.weeksInYear=function(){var e=this.localeData()._week;return P(this.year(),e.dow,e.doy)},o.weeksInWeekYear=function(){var e=this.localeData()._week;return P(this.weekYear(),e.dow,e.doy)},o.isoWeeksInYear=function(){return P(this.year(),1,4)},o.isoWeeksInISOWeekYear=function(){return P(this.isoWeekYear(),1,4)},o.date=fe,o.day=o.days=function(e){var t,n,s;return this.isValid()?(t=Ne(this,"Day"),null!=e?(n=e,s=this.localeData(),e="string"!=typeof n?n:isNaN(n)?"number"==typeof(n=s.weekdaysParse(n))?n:null:parseInt(n,10),this.add(e-t,"d")):t):null!=e?this:NaN},o.weekday=function(e){var t;return this.isValid()?(t=(this.day()+7-this.localeData()._week.dow)%7,null==e?t:this.add(e-t,"d")):null!=e?this:NaN},o.isoWeekday=function(e){var t,n;return this.isValid()?null!=e?(t=e,n=this.localeData(),n="string"==typeof t?n.weekdaysParse(t)%7||7:isNaN(t)?null:t,this.day(this.day()%7?n:n-7)):this.day()||7:null!=e?this:NaN},o.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},o.hour=o.hours=i,o.minute=o.minutes=ue,o.second=o.seconds=me,o.millisecond=o.milliseconds=le,o.utcOffset=function(e,t,n){var s,i=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?i:qt(this);if("string"==typeof e){if(null===(e=Zt(we,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(s=qt(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),i!==e&&(!t||this._changeInProgress?tn(this,C(e-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,y.updateOffset(this,!0),this._changeInProgress=null)),this},o.utc=function(e){return this.utcOffset(0,e)},o.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e)&&this.subtract(qt(this),"m"),this},o.parseZone=function(){var e;return null!=this._tzm?this.utcOffset(this._tzm,!1,!0):"string"==typeof this._i&&(null!=(e=Zt(ge,this._i))?this.utcOffset(e):this.utcOffset(0,!0)),this},o.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?R(e).utcOffset():0,(this.utcOffset()-e)%60==0)},o.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},o.isLocal=function(){return!!this.isValid()&&!this._isUTC},o.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},o.isUtc=Bt,o.isUTC=Bt,o.zoneAbbr=function(){return this._isUTC?"UTC":""},o.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},o.dates=e("dates accessor is deprecated. Use date instead.",fe),o.months=e("months accessor is deprecated. Use month instead",Ge),o.years=e("years accessor is deprecated. Use year instead",xe),o.zone=e("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?(this.utcOffset(e="string"!=typeof e?-e:e,t),this):-this.utcOffset()}),o.isDSTShifted=e("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){var e,t;return w(this._isDSTShifted)&&(Z(e={},this),(e=Ft(e))._a?(t=(e._isUTC?l:R)(e._a),this._isDSTShifted=this.isValid()&&0<((e,t)=>{for(var n=Math.min(e.length,t.length),s=Math.abs(e.length-t.length),i=0,r=0;r<n;r++)_(e[r])!==_(t[r])&&i++;return i+s})(e._a,t.toArray())):this._isDSTShifted=!1),this._isDSTShifted});u=Xe.prototype;function pn(e,t,n,s){var i=kt(),s=l().set(s,t);return i[n](s,e)}function kn(e,t,n){if(p(e)&&(t=e,e=void 0),e=e||"",null!=t)return pn(e,t,n,"month");for(var s=[],i=0;i<12;i++)s[i]=pn(e,i,n,"month");return s}function Mn(e,t,n,s){t=("boolean"==typeof e?p(t)&&(n=t,t=void 0):(t=e,e=!1,p(n=t)&&(n=t,t=void 0)),t||"");var i,r=kt(),a=e?r._week.dow:0,o=[];if(null!=n)return pn(t,(n+a)%7,s,"day");for(i=0;i<7;i++)o[i]=pn(t,(i+a)%7,s,"day");return o}u.calendar=function(e,t,n){return h(e=this._calendar[e]||this._calendar.sameElse)?e.call(t,n):e},u.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()],s=this._longDateFormatCache;if(!t&&n){if(s&&s[e]&&s[e].formatUpper===n)return s[e].format;t=n.match(ee).map(function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e}).join(""),(s=s||(this._longDateFormatCache={}))[e]={formatUpper:n,format:t}}return t},u.invalidDate=function(){return this._invalidDate},u.ordinal=function(e){return this._ordinal.replace("%d",e)},u.preparse=wn,u.postformat=wn,u.relativeTime=function(e,t,n,s){return this.postformat(et.call(this,e,t,n,s))},u.pastFuture=function(e,t){return this.postformat(tt.call(this,e,t))},u.set=function(e){for(var t,n,s,i=this,r=e,a=0;a<Le.length;a++)c(r,s=Le[a])||delete i["_"+s];for(var o,u=this,l=e,d=0;d<Be.length;d++)c(l,o=Be[d])||delete u["_"+o];for(n in e)c(e,n)&&(h(t=e[n])?this[n]=t:this["_"+n]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},u.eras=function(e,t){for(var n,s=this._eras||kt("en")._eras,i=0,r=s.length;i<r;++i){switch(typeof s[i].since){case"string":n=y(s[i].since).startOf("day"),s[i].since=n.valueOf();break}switch(typeof s[i].until){case"undefined":s[i].until=1/0;break;case"string":n=y(s[i].until).startOf("day").valueOf(),s[i].until=n.valueOf();break}}return s},u.erasParse=function(e,t,n){var s,i,r,a,o,u=this.eras();for(e=e.toUpperCase(),s=0,i=u.length;s<i;++s)if(r=u[s].name.toUpperCase(),a=u[s].abbr.toUpperCase(),o=u[s].narrow.toUpperCase(),n)switch(t){case"N":case"NN":case"NNN":if(a===e)return u[s];break;case"NNNN":if(r===e)return u[s];break;case"NNNNN":if(o===e)return u[s];break}else if(0<=[r,a,o].indexOf(e))return u[s]},u.erasConvertYear=function(e,t){var n=e.since<=e.until?1:-1;return void 0===t?y(e.since).year():y(e.since).year()+(t-e.offset)*n},u.erasAbbrRegex=function(e){return c(this,"_erasAbbrRegex")||fn.call(this),e?this._erasAbbrRegex:this._erasRegex},u.erasNameRegex=function(e){return c(this,"_erasNameRegex")||fn.call(this),e?this._erasNameRegex:this._erasRegex},u.erasNarrowRegex=function(e){return c(this,"_erasNarrowRegex")||fn.call(this),e?this._erasNarrowRegex:this._erasRegex},u.months=function(e,t){return e?(g(this._months)?this._months:this._months[(this._months.isFormat||He).test(t)?"format":"standalone"])[e.month()]:g(this._months)?this._months:this._months.standalone},u.monthsShort=function(e,t){return e?(g(this._monthsShort)?this._monthsShort:this._monthsShort[He.test(t)?"format":"standalone"])[e.month()]:g(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},u.monthsParse=function(e,t,n){var s,i;if(this._monthsParseExact)return function(e,t,n){var s,i,r,e=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=l([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=N.call(this._shortMonthsParse,e))?i:null:-1!==(i=N.call(this._longMonthsParse,e))?i:null:"MMM"===t?-1!==(i=N.call(this._shortMonthsParse,e))||-1!==(i=N.call(this._longMonthsParse,e))?i:null:-1!==(i=N.call(this._longMonthsParse,e))||-1!==(i=N.call(this._shortMonthsParse,e))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=l([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(i="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(i.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},u.monthsRegex=function(e){return this._monthsParseExact?(c(this,"_monthsRegex")||Ee.call(this),e?this._monthsStrictRegex:this._monthsRegex):(c(this,"_monthsRegex")||(this._monthsRegex=Fe),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},u.monthsShortRegex=function(e){return this._monthsParseExact?(c(this,"_monthsRegex")||Ee.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(c(this,"_monthsShortRegex")||(this._monthsShortRegex=Ue),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},u.week=function(e){return ot(e,this._week.dow,this._week.doy).week},u.firstDayOfYear=function(){return this._week.doy},u.firstDayOfWeek=function(){return this._week.dow},u.weekdays=function(e,t){return t=g(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"],!0===e?Ae(t,this._week.dow):e?t[e.day()]:t},u.weekdaysMin=function(e){return!0===e?Ae(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},u.weekdaysShort=function(e){return!0===e?Ae(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},u.weekdaysParse=function(e,t,n){var s,i;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,e=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=l([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=N.call(this._weekdaysParse,e))?i:null:"ddd"===t?-1!==(i=N.call(this._shortWeekdaysParse,e))?i:null:-1!==(i=N.call(this._minWeekdaysParse,e))?i:null:"dddd"===t?-1!==(i=N.call(this._weekdaysParse,e))||-1!==(i=N.call(this._shortWeekdaysParse,e))||-1!==(i=N.call(this._minWeekdaysParse,e))?i:null:"ddd"===t?-1!==(i=N.call(this._shortWeekdaysParse,e))||-1!==(i=N.call(this._weekdaysParse,e))||-1!==(i=N.call(this._minWeekdaysParse,e))?i:null:-1!==(i=N.call(this._minWeekdaysParse,e))||-1!==(i=N.call(this._weekdaysParse,e))||-1!==(i=N.call(this._shortWeekdaysParse,e))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=l([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(i="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(i.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},u.weekdaysRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Je.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,"_weekdaysRegex")||(this._weekdaysRegex=Ze),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},u.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Je.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=$e),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},u.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Je.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=qe),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},u.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},u.meridiem=function(e,t,n){return 11<e?n?"pm":"PM":n?"am":"AM"},wt("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===_(e%100/10)?"th":1==t?"st":2==t?"nd":3==t?"rd":"th")}}),y.lang=e("moment.lang is deprecated. Use moment.locale instead.",wt),y.langData=e("moment.langData is deprecated. Use moment.localeData instead.",kt);var Dn=Math.abs;function vn(e,t,n,s){t=C(t,n);return e._milliseconds+=s*t._milliseconds,e._days+=s*t._days,e._months+=s*t._months,e._bubble()}function Sn(e){return e<0?Math.floor(e):Math.ceil(e)}function Yn(e){return 4800*e/146097}function On(e){return 146097*e/4800}function bn(e){return function(){return this.as(e)}}ae=bn("ms"),t=bn("s"),ce=bn("m"),oe=bn("h"),Re=bn("d"),he=bn("w"),de=bn("M"),Ie=bn("Q"),i=bn("y"),ue=ae;function xn(e){return function(){return this.isValid()?this._data[e]:NaN}}var me=xn("milliseconds"),le=xn("seconds"),fe=xn("minutes"),xe=xn("hours"),u=xn("days"),Tn=xn("months"),Nn=xn("years");var Pn=Math.round,Wn={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function Rn(e,t,n,s){var i=C(e).abs(),r=Pn(i.as("s")),a=Pn(i.as("m")),o=Pn(i.as("h")),u=Pn(i.as("d")),l=Pn(i.as("M")),d=Pn(i.as("w")),i=Pn(i.as("y")),r=(r<=n.ss?["s",r]:r<n.s&&["ss",r])||(a<=1?["m"]:a<n.m&&["mm",a])||(o<=1?["h"]:o<n.h&&["hh",o])||(u<=1?["d"]:u<n.d&&["dd",u]);return(r=(r=null!=n.w?r||(d<=1?["w"]:d<n.w&&["ww",d]):r)||(l<=1?["M"]:l<n.M&&["MM",l])||(i<=1?["y"]:["yy",i]))[2]=t,r[3]=0<+e,r[4]=s,function(e,t,n,s,i){return et.call(i,t||1,!!n,e,s)}.apply(null,r)}var Cn=Math.abs;function Hn(e){return(0<e)-(e<0)||+e}function Un(){var e,t,n,s,i,r,a,o,u,l,d;return this.isValid()?(e=Cn(this._milliseconds)/1e3,t=Cn(this._days),n=Cn(this._months),(o=this.asSeconds())?(s=m(e/60),i=m(s/60),e%=60,s%=60,r=m(n/12),n%=12,a=e?e.toFixed(3).replace(/\.?0+$/,""):"",u=Hn(this._months)!==Hn(o)?"-":"",l=Hn(this._days)!==Hn(o)?"-":"",d=Hn(this._milliseconds)!==Hn(o)?"-":"",(o<0?"-":"")+"P"+(r?u+r+"Y":"")+(n?u+n+"M":"")+(t?l+t+"D":"")+(i||s||e?"T":"")+(i?d+i+"H":"")+(s?d+s+"M":"")+(e?d+a+"S":"")):"P0D"):this.localeData().invalidDate()}var H=Et.prototype;return H.isValid=function(){return this._isValid},H.abs=function(){var e=this._data;return this._milliseconds=Dn(this._milliseconds),this._days=Dn(this._days),this._months=Dn(this._months),e.milliseconds=Dn(e.milliseconds),e.seconds=Dn(e.seconds),e.minutes=Dn(e.minutes),e.hours=Dn(e.hours),e.months=Dn(e.months),e.years=Dn(e.years),this},H.add=function(e,t){return vn(this,e,t,1)},H.subtract=function(e,t){return vn(this,e,t,-1)},H.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=a(e))||"quarter"===e||"year"===e)switch(t=this._days+s/864e5,n=this._months+Yn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(On(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},H.asMilliseconds=ae,H.asSeconds=t,H.asMinutes=ce,H.asHours=oe,H.asDays=Re,H.asWeeks=he,H.asMonths=de,H.asQuarters=Ie,H.asYears=i,H.valueOf=ue,H._bubble=function(){var e=this._milliseconds,t=this._days,n=this._months,s=this._data;return 0<=e&&0<=t&&0<=n||e<=0&&t<=0&&n<=0||(e+=864e5*Sn(On(n)+t),n=t=0),s.milliseconds=e%1e3,e=m(e/1e3),s.seconds=e%60,e=m(e/60),s.minutes=e%60,e=m(e/60),s.hours=e%24,t+=m(e/24),n+=e=m(Yn(t)),t-=Sn(On(e)),e=m(n/12),n%=12,s.days=t,s.months=n,s.years=e,this},H.clone=function(){return C(this)},H.get=function(e){return e=a(e),this.isValid()?this[e+"s"]():NaN},H.milliseconds=me,H.seconds=le,H.minutes=fe,H.hours=xe,H.days=u,H.weeks=function(){return m(this.days()/7)},H.months=Tn,H.years=Nn,H.humanize=function(e,t){var n,s;return this.isValid()?(n=!1,s=Wn,"object"==typeof e&&(t=e,e=!1),"boolean"==typeof e&&(n=e),"object"==typeof t&&(s=k(k({},Wn),t||{}),null!=t.s)&&null==t.ss&&(s.ss=t.s-1),e=this.localeData(),t=Rn(this,!n,s,e),n&&(t=tt.call(e,+this,t)),e.postformat(t)):this.localeData().invalidDate()},H.toISOString=Un,H.toString=Un,H.toJSON=Un,H.locale=an,H.localeData=on,H.toIsoString=e("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Un),H.lang=ze,s("X",0,0,"unix"),s("x",0,0,"valueOf"),d("x",ye),d("X",/[+-]?\d+(\.\d{1,3})?/),v("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e))}),v("x",function(e,t,n){n._d=new Date(_(e))}), 503//! moment.js 504y.version="2.31.0",U=R,y.fn=o,y.min=function(){return Vt("isBefore",[].slice.call(arguments,0))},y.max=function(){return Vt("isAfter",[].slice.call(arguments,0))},y.now=function(){return Date.now?Date.now():+new Date},y.utc=l,y.unix=function(e){return R(1e3*e)},y.months=function(e,t){return kn(e,t,"months")},y.isDate=V,y.locale=wt,y.invalid=A,y.duration=C,y.isMoment=D,y.weekdays=function(e,t,n){return Mn(e,t,n,"weekdays")},y.parseZone=function(){return R.apply(null,arguments).parseZone()},y.localeData=kt,y.isDuration=At,y.monthsShort=function(e,t){return kn(e,t,"monthsShort")},y.weekdaysMin=function(e,t,n){return Mn(e,t,n,"weekdaysMin")},y.defineLocale=pt,y.updateLocale=function(e,t){var n=gt(e),s=ft;return null!=n&&(e=n._abbr),null!=t?(null!=W[e]&&null!=W[e].parentLocale?W[e].set(Qe(W[e]._config,t)):(t=Qe(s=null!=n?n._config:s,t),null==n&&(t.abbr=e),(s=new Xe(t)).parentLocale=W[e],W[e]=s),wt(e)):null!=W[e]&&(null!=W[e].parentLocale?(W[e]=W[e].parentLocale,e===wt()&&wt(e)):null!=W[e]&&delete W[e]),W[e]},y.locales=function(){return Ke(W)},y.weekdaysShort=function(e,t,n){return Mn(e,t,n,"weekdaysShort")},y.normalizeUnits=a,y.relativeTimeRounding=function(e){return void 0===e?Pn:"function"==typeof e&&(Pn=e,!0)},y.relativeTimeThreshold=function(e,t){return void 0!==Wn[e]&&(void 0===t?Wn[e]:(Wn[e]=t,"s"===e&&(Wn.ss=t-1),!0))},y.calendarFormat=function(e,t){return(e=e.diff(t,"days",!0))<-6?"sameElse":e<-1?"lastWeek":e<0?"lastDay":e<1?"sameDay":e<2?"nextDay":e<7?"nextWeek":"sameElse"},y.prototype=o,y.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},y}); 505//# sourceMappingURL=moment.min.js.map
vendor: 1,465 bytes, lines 505-542
505 506/*! 507 * FullCalendar v3.10.5 508 * Docs & License: https://fullcalendar.io/ 509 * (c) 2019 Adam Shaw 510 */ 511(function webpackUniversalModuleDefinition(root, factory) { 512 if(typeof exports === 'object' && typeof module === 'object') 513 module.exports = factory(require("moment"), require("jquery")); 514 else if(typeof define === 'function' && define.amd) 515 define(["moment", "jquery"], factory); 516 else if(typeof exports === 'object') 517 exports["FullCalendar"] = factory(require("moment"), require("jquery")); 518 else 519 root["FullCalendar"] = factory(root["moment"], root["jQuery"]); 520})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_3__) { 521return /******/ (function(modules) { // webpackBootstrap 522/******/ // The module cache 523/******/ var installedModules = {}; 524/******/ 525/******/ // The require function 526/******/ function __webpack_require__(moduleId) { 527/******/ 528/******/ // Check if module is in cache 529/******/ if(installedModules[moduleId]) { 530/******/ return installedModules[moduleId].exports; 531/******/ } 532/******/ // Create a new module (and put it into the cache) 533/******/ var module = installedModules[moduleId] = { 534/******/ i: moduleId, 535/******/ l: false, 536/******/ exports: {} 537/******/ }; 538/******/ 539/******/ // Execute the module function 540/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 541/******/ 542/******/ // Flag the module as loaded
543/******/ module.l = true; 544/******/ 545/******/ // Return the exports of the module 546/******/ return module.exports; 547/******/ } 548/******/ 549/******/ 550/******/ // expose the modules object (__webpack_modules__) 551/******/ __webpack_require__.m = modules; 552/******/ 553/******/ // expose the module cache 554/******/ __webpack_require__.c = installedModules; 555/******/ 556/******/ // define getter function for harmony exports 557/******/ __webpack_require__.d = function(exports, name, getter) { 558/******/ if(!__webpack_require__.o(exports, name)) { 559/******/ Object.defineProperty(exports, name, { 560/******/ configurable: false, 561/******/ enumerable: true, 562/******/ get: getter 563/******/ }); 564/******/ } 565/******/ }; 566/******/ 567/******/ // getDefaultExport function for compatibility with non-harmony modules 568/******/ __webpack_require__.n = function(module) { 569/******/ var getter = module && module.__esModule ? 570/******/ function getDefault() { return module['default']; } : 571/******/ function getModuleExports() { return module; }; 572/******/ __webpack_require__.d(getter, 'a', getter); 573/******/ return getter; 574/******/ }; 575/******/ 576/******/ // Object.prototype.hasOwnProperty.call 577/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 578/******/ 579/******/ // __webpack_public_path__ 580/******/ __webpack_require__.p = ""; 581/******/ 582/******/ // Load entry module and return exports 583/******/ return __webpack_require__(__webpack_require__.s = 256); 584/******/ }) 585/************************************************************************/ 586/******/ ([ 587/* 0 */ 588/***/ (function(module, exports) { 589 590module.exports = __WEBPACK_EXTERNAL_MODULE_0__; 591 592/***/ }), 593/* 1 */, 594/* 2 */ 595/***/ (function(module, exports) { 596 597/* 598derived from: 599https://github.com/Microsoft/tslib/blob/v1.6.0/tslib.js 600 601only include the helpers we need, to keep down filesize 602*/ 603var extendStatics = Object.setPrototypeOf || 604 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 605 function (d, b) { for (var p in b) 606 if (b.hasOwnProperty(p)) 607 d[p] = b[p]; }; 608exports.__extends = function (d, b) { 609 extendStatics(d, b); 610 function __() { this.constructor = d; } 611 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 612}; 613 614 615/***/ }), 616/* 3 */ 617/***/ (function(module, exports) { 618 619module.exports = __WEBPACK_EXTERNAL_MODULE_3__; 620 621/***/ }), 622/* 4 */ 623/***/ (function(module, exports, __webpack_require__) { 624 625Object.defineProperty(exports, "__esModule", { value: true }); 626var moment = __webpack_require__(0); 627var $ = __webpack_require__(3); 628/* FullCalendar-specific DOM Utilities 629----------------------------------------------------------------------------------------------------------------------*/ 630// Given the scrollbar widths of some other container, create borders/margins on rowEls in order to match the left 631// and right space that was offset by the scrollbars. A 1-pixel border first, then margin beyond that. 632function compensateScroll(rowEls, scrollbarWidths) { 633 if (scrollbarWidths.left) { 634 rowEls.css({ 635 'border-left-width': 1, 636 'margin-left': scrollbarWidths.left - 1 637 }); 638 } 639 if (scrollbarWidths.right) { 640 rowEls.css({ 641 'border-right-width': 1, 642 'margin-right': scrollbarWidths.right - 1 643 }); 644 } 645} 646exports.compensateScroll = compensateScroll; 647// Undoes compensateScroll and restores all borders/margins 648function uncompensateScroll(rowEls) { 649 rowEls.css({ 650 'margin-left': '', 651 'margin-right': '', 652 'border-left-width': '', 653 'border-right-width': '' 654 }); 655} 656exports.uncompensateScroll = uncompensateScroll; 657// Make the mouse cursor express that an event is not allowed in the current area 658function disableCursor() { 659 $('body').addClass('fc-not-allowed'); 660} 661exports.disableCursor = disableCursor; 662// Returns the mouse cursor to its original look 663function enableCursor() { 664 $('body').removeClass('fc-not-allowed'); 665} 666exports.enableCursor = enableCursor; 667// Given a total available height to fill, have `els` (essentially child rows) expand to accomodate. 668// By default, all elements that are shorter than the recommended height are expanded uniformly, not considering 669// any other els that are already too tall. if `shouldRedistribute` is on, it considers these tall rows and 670// reduces the available height. 671function distributeHeight(els, availableHeight, shouldRedistribute) { 672 // *FLOORING NOTE*: we floor in certain places because zoom can give inaccurate floating-point dimensions, 673 // and it is better to be shorter than taller, to avoid creating unnecessary scrollbars. 674 var minOffset1 = Math.floor(availableHeight / els.length); // for non-last element 675 var minOffset2 = Math.floor(availableHeight - minOffset1 * (els.length - 1)); // for last element *FLOORING NOTE* 676 var flexEls = []; // elements that are allowed to expand. array of DOM nodes 677 var flexOffsets = []; // amount of vertical space it takes up 678 var flexHeights = []; // actual css height 679 var usedHeight = 0; 680 undistributeHeight(els); // give all elements their natural height 681 // find elements that are below the recommended height (expandable). 682 // important to query for heights in a single first pass (to avoid reflow oscillation). 683 els.each(function (i, el) { 684 var minOffset = i === els.length - 1 ? minOffset2 : minOffset1; 685 var naturalOffset = $(el).outerHeight(true); 686 if (naturalOffset < minOffset) { 687 flexEls.push(el); 688 flexOffsets.push(naturalOffset); 689 flexHeights.push($(el).height()); 690 } 691 else { 692 // this element stretches past recommended height (non-expandable). mark the space as occupied. 693 usedHeight += naturalOffset; 694 } 695 });
696 // readjust the recommended height to only consider the height available to non-maxed-out rows. 697 if (shouldRedistribute) { 698 availableHeight -= usedHeight; 699 minOffset1 = Math.floor(availableHeight / flexEls.length); 700 minOffset2 = Math.floor(availableHeight - minOffset1 * (flexEls.length - 1)); // *FLOORING NOTE* 701 } 702 // assign heights to all expandable elements 703 $(flexEls).each(function (i, el) { 704 var minOffset = i === flexEls.length - 1 ? minOffset2 : minOffset1; 705 var naturalOffset = flexOffsets[i]; 706 var naturalHeight = flexHeights[i]; 707 var newHeight = minOffset - (naturalOffset - naturalHeight); // subtract the margin/padding 708 if (naturalOffset < minOffset) { // we check this again because redistribution might have changed things 709 $(el).height(newHeight); 710 } 711 }); 712} 713exports.distributeHeight = distributeHeight; 714// Undoes distrubuteHeight, restoring all els to their natural height 715function undistributeHeight(els) { 716 els.height(''); 717} 718exports.undistributeHeight = undistributeHeight; 719// Given `els`, a jQuery set of <td> cells, find the cell with the largest natural width and set the widths of all the 720// cells to be that width. 721// PREREQUISITE: if you want a cell to take up width, it needs to have a single inner element w/ display:inline 722function matchCellWidths(els) { 723 var maxInnerWidth = 0; 724 els.find('> *').each(function (i, innerEl) { 725 var innerWidth = $(innerEl).outerWidth(); 726 if (innerWidth > maxInnerWidth) { 727 maxInnerWidth = innerWidth; 728 } 729 }); 730 maxInnerWidth++; // sometimes not accurate of width the text needs to stay on one line. insurance 731 els.width(maxInnerWidth); 732 return maxInnerWidth; 733} 734exports.matchCellWidths = matchCellWidths; 735// Given one element that resides inside another, 736// Subtracts the height of the inner element from the outer element. 737function subtractInnerElHeight(outerEl, innerEl) { 738 var both = outerEl.add(innerEl); 739 var diff; 740 // effin' IE8/9/10/11 sometimes returns 0 for dimensions. this weird hack was the only thing that worked 741 both.css({ 742 position: 'relative', 743 left: -1 // ensure reflow in case the el was already relative. negative is less likely to cause new scroll 744 }); 745 diff = outerEl.outerHeight() - innerEl.outerHeight(); // grab the dimensions 746 both.css({ position: '', left: '' }); // undo hack 747 return diff; 748} 749exports.subtractInnerElHeight = subtractInnerElHeight; 750/* Element Geom Utilities 751----------------------------------------------------------------------------------------------------------------------*/ 752// borrowed from https://github.com/jquery/jquery-ui/blob/1.11.0/ui/core.js#L51 753function getScrollParent(el) { 754 var position = el.css('position'); 755 var scrollParent = el.parents().filter(function () { 756 var parent = $(this); 757 return (/(auto|scroll)/).test(parent.css('overflow') + parent.css('overflow-y') + parent.css('overflow-x')); 758 }).eq(0); 759 return position === 'fixed' || !scrollParent.length ? $(el[0].ownerDocument || document) : scrollParent; 760} 761exports.getScrollParent = getScrollParent; 762// Queries the outer bounding area of a jQuery element. 763// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive). 764// Origin is optional. 765function getOuterRect(el, origin) { 766 var offset = el.offset(); 767 var left = offset.left - (origin ? origin.left : 0); 768 var top = offset.top - (origin ? origin.top : 0); 769 return { 770 left: left, 771 right: left + el.outerWidth(), 772 top: top, 773 bottom: top + el.outerHeight() 774 }; 775} 776exports.getOuterRect = getOuterRect; 777// Queries the area within the margin/border/scrollbars of a jQuery element. Does not go within the padding. 778// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive). 779// Origin is optional. 780// WARNING: given element can't have borders 781// NOTE: should use clientLeft/clientTop, but very unreliable cross-browser. 782function getClientRect(el, origin) { 783 var offset = el.offset();
784 var scrollbarWidths = getScrollbarWidths(el); 785 var left = offset.left + getCssFloat(el, 'border-left-width') + scrollbarWidths.left - (origin ? origin.left : 0); 786 var top = offset.top + getCssFloat(el, 'border-top-width') + scrollbarWidths.top - (origin ? origin.top : 0); 787 return { 788 left: left, 789 right: left + el[0].clientWidth, 790 top: top, 791 bottom: top + el[0].clientHeight // clientHeight includes padding but NOT scrollbars 792 }; 793} 794exports.getClientRect = getClientRect; 795// Queries the area within the margin/border/padding of a jQuery element. Assumed not to have scrollbars. 796// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive). 797// Origin is optional. 798function getContentRect(el, origin) { 799 var offset = el.offset(); // just outside of border, margin not included 800 var left = offset.left + getCssFloat(el, 'border-left-width') + getCssFloat(el, 'padding-left') - 801 (origin ? origin.left : 0); 802 var top = offset.top + getCssFloat(el, 'border-top-width') + getCssFloat(el, 'padding-top') - 803 (origin ? origin.top : 0); 804 return { 805 left: left, 806 right: left + el.width(), 807 top: top, 808 bottom: top + el.height() 809 }; 810} 811exports.getContentRect = getContentRect; 812// Returns the computed left/right/top/bottom scrollbar widths for the given jQuery element. 813// WARNING: given element can't have borders (which will cause offsetWidth/offsetHeight to be larger). 814// NOTE: should use clientLeft/clientTop, but very unreliable cross-browser. 815function getScrollbarWidths(el) { 816 var leftRightWidth = el[0].offsetWidth - el[0].clientWidth; 817 var bottomWidth = el[0].offsetHeight - el[0].clientHeight; 818 var widths; 819 leftRightWidth = sanitizeScrollbarWidth(leftRightWidth); 820 bottomWidth = sanitizeScrollbarWidth(bottomWidth); 821 widths = { left: 0, right: 0, top: 0, bottom: bottomWidth }; 822 if (getIsLeftRtlScrollbars() && el.css('direction') === 'rtl') { // is the scrollbar on the left side? 823 widths.left = leftRightWidth; 824 } 825 else { 826 widths.right = leftRightWidth; 827 } 828 return widths; 829} 830exports.getScrollbarWidths = getScrollbarWidths; 831// The scrollbar width computations in getScrollbarWidths are sometimes flawed when it comes to 832// retina displays, rounding, and IE11. Massage them into a usable value. 833function sanitizeScrollbarWidth(width) { 834 width = Math.max(0, width); // no negatives 835 width = Math.round(width); 836 return width; 837} 838// Logic for determining if, when the element is right-to-left, the scrollbar appears on the left side 839var _isLeftRtlScrollbars = null; 840function getIsLeftRtlScrollbars() { 841 if (_isLeftRtlScrollbars === null) { 842 _isLeftRtlScrollbars = computeIsLeftRtlScrollbars(); 843 } 844 return _isLeftRtlScrollbars; 845} 846function computeIsLeftRtlScrollbars() { 847 var el = $('<div><div></div></div>') 848 .css({ 849 position: 'absolute', 850 top: -1000, 851 left: 0, 852 border: 0, 853 padding: 0, 854 overflow: 'scroll', 855 direction: 'rtl' 856 }) 857 .appendTo('body'); 858 var innerEl = el.children(); 859 var res = innerEl.offset().left > el.offset().left; // is the inner div shifted to accommodate a left scrollbar? 860 el.remove(); 861 return res; 862} 863// Retrieves a jQuery element's computed CSS value as a floating-point number. 864// If the queried value is non-numeric (ex: IE can return "medium" for border width), will just return zero. 865function getCssFloat(el, prop) { 866 return parseFloat(el.css(prop)) || 0; 867} 868/* Mouse / Touch Utilities 869----------------------------------------------------------------------------------------------------------------------*/ 870// Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac) 871function isPrimaryMouseButton(ev) { 872 return ev.which === 1 && !ev.ctrlKey; 873} 874exports.isPrimaryMouseButton = isPrimaryMouseButton; 875function getEvX(ev) { 876 var touches = ev.originalEvent.touches; 877 // on mobile FF, pageX for touch events is present, but incorrect, 878 // so, look at touch coordinates first. 879 if (touches && touches.length) { 880 return touches[0].pageX; 881 } 882 return ev.pageX; 883} 884exports.getEvX = getEvX; 885function getEvY(ev) { 886 var touches = ev.originalEvent.touches; 887 // on mobile FF, pageX for touch events is present, but incorrect, 888 // so, look at touch coordinates first. 889 if (touches && touches.length) { 890 return touches[0].pageY; 891 } 892 return ev.pageY; 893} 894exports.getEvY = getEvY; 895function getEvIsTouch(ev) { 896 return /^touch/.test(ev.type); 897} 898exports.getEvIsTouch = getEvIsTouch; 899function preventSelection(el) { 900 el.addClass('fc-unselectable') 901 .on('selectstart', preventDefault); 902} 903exports.preventSelection = preventSelection; 904function allowSelection(el) { 905 el.removeClass('fc-unselectable') 906 .off('selectstart', preventDefault); 907} 908exports.allowSelection = allowSelection; 909// Stops a mouse/touch event from doing it's native browser action 910function preventDefault(ev) { 911 ev.preventDefault(); 912} 913exports.preventDefault = preventDefault; 914/* General Geometry Utils 915----------------------------------------------------------------------------------------------------------------------*/ 916// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false 917function intersectRects(rect1, rect2) { 918 var res = { 919 left: Math.max(rect1.left, rect2.left), 920 right: Math.min(rect1.right, rect2.right), 921 top: Math.max(rect1.top, rect2.top), 922 bottom: Math.min(rect1.bottom, rect2.bottom) 923 }; 924 if (res.left < res.right && res.top < res.bottom) { 925 return res; 926 } 927 return false; 928} 929exports.intersectRects = intersectRects; 930// Returns a new point that will have been moved to reside within the given rectangle 931function constrainPoint(point, rect) { 932 return { 933 left: Math.min(Math.max(point.left, rect.left), rect.right),
934 top: Math.min(Math.max(point.top, rect.top), rect.bottom) 935 }; 936} 937exports.constrainPoint = constrainPoint; 938// Returns a point that is the center of the given rectangle 939function getRectCenter(rect) { 940 return { 941 left: (rect.left + rect.right) / 2, 942 top: (rect.top + rect.bottom) / 2 943 }; 944} 945exports.getRectCenter = getRectCenter; 946// Subtracts point2's coordinates from point1's coordinates, returning a delta 947function diffPoints(point1, point2) { 948 return { 949 left: point1.left - point2.left, 950 top: point1.top - point2.top 951 }; 952} 953exports.diffPoints = diffPoints; 954/* Object Ordering by Field 955----------------------------------------------------------------------------------------------------------------------*/ 956function parseFieldSpecs(input) { 957 var specs = []; 958 var tokens = []; 959 var i; 960 var token; 961 if (typeof input === 'string') { 962 tokens = input.split(/\s*,\s*/); 963 } 964 else if (typeof input === 'function') { 965 tokens = [input]; 966 } 967 else if ($.isArray(input)) { 968 tokens = input; 969 } 970 for (i = 0; i < tokens.length; i++) { 971 token = tokens[i]; 972 if (typeof token === 'string') { 973 specs.push(token.charAt(0) === '-' ? 974 { field: token.substring(1), order: -1 } : 975 { field: token, order: 1 }); 976 } 977 else if (typeof token === 'function') { 978 specs.push({ func: token }); 979 } 980 } 981 return specs; 982} 983exports.parseFieldSpecs = parseFieldSpecs; 984function compareByFieldSpecs(obj1, obj2, fieldSpecs, obj1fallback, obj2fallback) { 985 var i; 986 var cmp; 987 for (i = 0; i < fieldSpecs.length; i++) { 988 cmp = compareByFieldSpec(obj1, obj2, fieldSpecs[i], obj1fallback, obj2fallback); 989 if (cmp) { 990 return cmp; 991 } 992 } 993 return 0; 994} 995exports.compareByFieldSpecs = compareByFieldSpecs; 996function compareByFieldSpec(obj1, obj2, fieldSpec, obj1fallback, obj2fallback) { 997 if (fieldSpec.func) { 998 return fieldSpec.func(obj1, obj2); 999 } 1000 var val1 = obj1[fieldSpec.field]; 1001 var val2 = obj2[fieldSpec.field]; 1002 if (val1 == null && obj1fallback) { 1003 val1 = obj1fallback[fieldSpec.field]; 1004 } 1005 if (val2 == null && obj2fallback) { 1006 val2 = obj2fallback[fieldSpec.field]; 1007 } 1008 return flexibleCompare(val1, val2) * (fieldSpec.order || 1); 1009} 1010exports.compareByFieldSpec = compareByFieldSpec; 1011function flexibleCompare(a, b) { 1012 if (!a && !b) { 1013 return 0; 1014 } 1015 if (b == null) { 1016 return -1; 1017 } 1018 if (a == null) { 1019 return 1; 1020 } 1021 if ($.type(a) === 'string' || $.type(b) === 'string') { 1022 return String(a).localeCompare(String(b)); 1023 } 1024 return a - b; 1025} 1026exports.flexibleCompare = flexibleCompare; 1027/* Date Utilities 1028----------------------------------------------------------------------------------------------------------------------*/ 1029exports.dayIDs = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat']; 1030exports.unitsDesc = ['year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];
1030 // descending 1031// Diffs the two moments into a Duration where full-days are recorded first, then the remaining time. 1032// Moments will have their timezones normalized. 1033function diffDayTime(a, b) { 1034 return moment.duration({ 1035 days: a.clone().stripTime().diff(b.clone().stripTime(), 'days'), 1036 ms: a.time() - b.time() // time-of-day from day start. disregards timezone 1037 }); 1038} 1039exports.diffDayTime = diffDayTime; 1040// Diffs the two moments via their start-of-day (regardless of timezone). Produces whole-day durations. 1041function diffDay(a, b) { 1042 return moment.duration({ 1043 days: a.clone().stripTime().diff(b.clone().stripTime(), 'days') 1044 }); 1045} 1046exports.diffDay = diffDay; 1047// Diffs two moments, producing a duration, made of a whole-unit-increment of the given unit. Uses rounding. 1048function diffByUnit(a, b, unit) { 1049 return moment.duration(Math.round(a.diff(b, unit, true)), // returnFloat=true 1050 unit); 1051} 1052exports.diffByUnit = diffByUnit; 1053// Computes the unit name of the largest whole-unit period of time. 1054// For example, 48 hours will be "days" whereas 49 hours will be "hours". 1055// Accepts start/end, a range object, or an original duration object. 1056function computeGreatestUnit(start, end) { 1057 var i; 1058 var unit; 1059 var val; 1060 for (i = 0; i < exports.unitsDesc.length; i++) { 1061 unit = exports.unitsDesc[i]; 1062 val = computeRangeAs(unit, start, end); 1063 if (val >= 1 && isInt(val)) { 1064 break; 1065 } 1066 } 1067 return unit; // will be "milliseconds" if nothing else matches 1068} 1069exports.computeGreatestUnit = computeGreatestUnit; 1070// like computeGreatestUnit, but has special abilities to interpret the source input for clues 1071function computeDurationGreatestUnit(duration, durationInput) { 1072 var unit = computeGreatestUnit(duration); 1073 // prevent days:7 from being interpreted as a week 1074 if (unit === 'week' && typeof durationInput === 'object' && durationInput.days) { 1075 unit = 'day'; 1076 } 1077 return unit; 1078} 1079exports.computeDurationGreatestUnit = computeDurationGreatestUnit; 1080// Computes the number of units (like "hours") in the given range. 1081// Range can be a {start,end} object, separate start/end args, or a Duration. 1082// Results are based on Moment's .as() and .diff() methods, so results can depend on internal handling 1083// of month-diffing logic (which tends to vary from version to version). 1084function computeRangeAs(unit, start, end) { 1085 if (end != null) { // given start, end 1086 return end.diff(start, unit, true); 1087 } 1088 else if (moment.isDuration(start)) { // given duration 1089 return start.as(unit); 1090 } 1091 else { // given { start, end } range object 1092 return start.end.diff(start.start, unit, true); 1093 } 1094} 1095// Intelligently divides a range (specified by a start/end params) by a duration 1096function divideRangeByDuration(start, end, dur) { 1097 var months; 1098 if (durationHasTime(dur)) { 1099 return (end - start) / dur; 1100 } 1101 months = dur.asMonths(); 1102 if (Math.abs(months) >= 1 && isInt(months)) { 1103 return end.diff(start, 'months', true) / months; 1104 } 1105 return end.diff(start, 'days', true) / dur.asDays(); 1106} 1107exports.divideRangeByDuration = divideRangeByDuration; 1108// Intelligently divides one duration by another 1109function divideDurationByDuration(dur1, dur2) { 1110 var months1; 1111 var months2; 1112 if (durationHasTime(dur1) || durationHasTime(dur2)) { 1113 return dur1 / dur2; 1114 } 1115 months1 = dur1.asMonths(); 1116 months2 = dur2.asMonths(); 1117 if (Math.abs(months1) >= 1 && isInt(months1) && 1118 Math.abs(months2) >= 1 && isInt(months2)) { 1119 return months1 / months2; 1120 } 1121 return dur1.asDays() / dur2.asDays(); 1122} 1123exports.divideDurationByDuration = divideDurationByDuration; 1124// Intelligently multiplies a duration by a number 1125function multiplyDuration(dur, n) { 1126 var months; 1127 if (durationHasTime(dur)) { 1128 return moment.duration(dur * n); 1129 } 1130 months = dur.asMonths(); 1131 if (Math.abs(months) >= 1 && isInt(months)) { 1132 return moment.duration({ months: months * n }); 1133 } 1134 return moment.duration({ days: dur.asDays() * n }); 1135} 1136exports.multiplyDuration = multiplyDuration; 1137// Returns a boolean about whether the given duration has any time parts (hours/minutes/seconds/ms) 1138function durationHasTime(dur) { 1139 return Boolean(dur.hours() || dur.minutes() || dur.seconds() || dur.milliseconds()); 1140} 1141exports.durationHasTime = durationHasTime; 1142function isNativeDate(input) { 1143 return Object.prototype.toString.call(input) === '[object Date]' || input instanceof Date; 1144} 1145exports.isNativeDate = isNativeDate; 1146// Returns a boolean about whether the given input is a time string, like "06:40:00" or "06:00"
1147function isTimeString(str) { 1148 return typeof str === 'string' && 1149 /^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(str); 1150} 1151exports.isTimeString = isTimeString; 1152/* Logging and Debug 1153----------------------------------------------------------------------------------------------------------------------*/ 1154function log() { 1155 var args = []; 1156 for (var _i = 0; _i < arguments.length; _i++) { 1157 args[_i] = arguments[_i]; 1158 } 1159 var console = window.console; 1160 if (console && console.log) { 1161 return console.log.apply(console, args); 1162 } 1163} 1164exports.log = log; 1165function warn() { 1166 var args = []; 1167 for (var _i = 0; _i < arguments.length; _i++) { 1168 args[_i] = arguments[_i]; 1169 } 1170 var console = window.console; 1171 if (console && console.warn) { 1172 return console.warn.apply(console, args); 1173 } 1174 else { 1175 return log.apply(null, args); 1176 } 1177} 1178exports.warn = warn; 1179/* General Utilities 1180----------------------------------------------------------------------------------------------------------------------*/ 1181var hasOwnPropMethod = {}.hasOwnProperty; 1182// Merges an array of objects into a single object. 1183// The second argument allows for an array of property names who's object values will be merged together. 1184function mergeProps(propObjs, complexProps) { 1185 var dest = {}; 1186 var i; 1187 var name; 1188 var complexObjs; 1189 var j; 1190 var val; 1191 var props; 1192 if (complexProps) { 1193 for (i = 0; i < complexProps.length; i++) { 1194 name = complexProps[i]; 1195 complexObjs = []; 1196 // collect the trailing object values, stopping when a non-object is discovered 1197 for (j = propObjs.length - 1; j >= 0; j--) { 1198 val = propObjs[j][name]; 1199 if (typeof val === 'object') { 1200 complexObjs.unshift(val); 1201 } 1202 else if (val !== undefined) { 1203 dest[name] = val; // if there were no objects, this value will be used 1204 break; 1205 } 1206 } 1207 // if the trailing values were objects, use the merged value 1208 if (complexObjs.length) { 1209 dest[name] = mergeProps(complexObjs); 1210 } 1211 } 1212 } 1213 // copy values into the destination, going from last to first 1214 for (i = propObjs.length - 1; i >= 0; i--) { 1215 props = propObjs[i]; 1216 for (name in props) { 1217 if (!(name in dest)) { // if already assigned by previous props or complex props, don't reassign 1218 dest[name] = props[name]; 1219 } 1220 } 1221 } 1222 return dest; 1223} 1224exports.mergeProps = mergeProps; 1225function copyOwnProps(src, dest) { 1226 for (var name_1 in src) { 1227 if (hasOwnProp(src, name_1)) { 1228 dest[name_1] = src[name_1]; 1229 } 1230 } 1231} 1232exports.copyOwnProps = copyOwnProps; 1233function hasOwnProp(obj, name) { 1234 return hasOwnPropMethod.call(obj, name); 1235} 1236exports.hasOwnProp = hasOwnProp; 1237function applyAll(functions, thisObj, args) { 1238 if ($.isFunction(functions)) { 1239 functions = [functions]; 1240 } 1241 if (functions) { 1242 var i = void 0; 1243 var ret = void 0; 1244 for (i = 0; i < functions.length; i++) { 1245 ret = functions[i].apply(thisObj, args) || ret; 1246 } 1247 return ret; 1248 } 1249} 1250exports.applyAll = applyAll; 1251function removeMatching(array, testFunc) { 1252 var removeCnt = 0; 1253 var i = 0; 1254 while (i < array.length) { 1255 if (testFunc(array[i])) { // truthy value means *remove* 1256 array.splice(i, 1); 1257 removeCnt++; 1258 } 1259 else { 1260 i++; 1261 } 1262 } 1263 return removeCnt; 1264} 1265exports.removeMatching = removeMatching; 1266function removeExact(array, exactVal) { 1267 var removeCnt = 0; 1268 var i = 0; 1269 while (i < array.length) { 1270 if (array[i] === exactVal) { 1271 array.splice(i, 1); 1272 removeCnt++; 1273 } 1274 else { 1275 i++; 1276 } 1277 } 1278 return removeCnt; 1279} 1280exports.removeExact = removeExact; 1281function isArraysEqual(a0, a1) { 1282 var len = a0.length; 1283 var i; 1284 if (len == null || len !== a1.length) { // not array? or not same length? 1285 return false; 1286 } 1287 for (i = 0; i < len; i++) { 1288 if (a0[i] !== a1[i]) { 1289 return false; 1290 } 1291 } 1292 return true; 1293} 1294exports.isArraysEqual = isArraysEqual; 1295function firstDefined() { 1296 var args = []; 1297 for (var _i = 0; _i < arguments.length; _i++) { 1298 args[_i] = arguments[_i]; 1299 } 1300 for (var i = 0; i < args.length; i++) { 1301 if (args[i] !== undefined) { 1302 return args[i];
1303 } 1304 } 1305} 1306exports.firstDefined = firstDefined; 1307function htmlEscape(s) { 1308 return (s + '').replace(/&/g, '&') 1309 .replace(/</g, '<') 1310 .replace(/>/g, '>') 1311 .replace(/'/g, ''') 1312 .replace(/"/g, '"') 1313 .replace(/\n/g, '<br>'); 1314} 1315exports.htmlEscape = htmlEscape; 1316function stripHtmlEntities(text) { 1317 return text.replace(/&.*?;/g, ''); 1318} 1319exports.stripHtmlEntities = stripHtmlEntities; 1320// Given a hash of CSS properties, returns a string of CSS. 1321// Uses property names as-is (no camel-case conversion). Will not make statements for null/undefined values. 1322function cssToStr(cssProps) { 1323 var statements = []; 1324 $.each(cssProps, function (name, val) { 1325 if (val != null) { 1326 statements.push(name + ':' + val); 1327 } 1328 }); 1329 return statements.join(';'); 1330} 1331exports.cssToStr = cssToStr; 1332// Given an object hash of HTML attribute names to values, 1333// generates a string that can be injected between < > in HTML 1334function attrsToStr(attrs) { 1335 var parts = []; 1336 $.each(attrs, function (name, val) { 1337 if (val != null) { 1338 parts.push(name + '="' + htmlEscape(val) + '"'); 1339 } 1340 }); 1341 return parts.join(' '); 1342} 1343exports.attrsToStr = attrsToStr; 1344function capitaliseFirstLetter(str) { 1345 return str.charAt(0).toUpperCase() + str.slice(1); 1346} 1347exports.capitaliseFirstLetter = capitaliseFirstLetter; 1348function compareNumbers(a, b) { 1349 return a - b; 1350} 1351exports.compareNumbers = compareNumbers; 1352function isInt(n) { 1353 return n % 1 === 0; 1354} 1355exports.isInt = isInt; 1356// Returns a method bound to the given object context. 1357// Just like one of the jQuery.proxy signatures, but without the undesired behavior of treating the same method with 1358// different contexts as identical when binding/unbinding events. 1359function proxy(obj, methodName) { 1360 var method = obj[methodName]; 1361 return function () { 1362 return method.apply(obj, arguments); 1363 }; 1364} 1365exports.proxy = proxy; 1366// Returns a function, that, as long as it continues to be invoked, will not 1367// be triggered. The function will be called after it stops being called for 1368// N milliseconds. If `immediate` is passed, trigger the function on the 1369// leading edge, instead of the trailing. 1370// https://github.com/jashkenas/underscore/blob/1.6.0/underscore.js#L714 1371function debounce(func, wait, immediate) { 1372 if (immediate === void 0) { immediate = false; } 1373 var timeout; 1374 var args; 1375 var context; 1376 var timestamp; 1377 var result; 1378 var later = function () { 1379 var last = +new Date() - timestamp; 1380 if (last < wait) { 1381 timeout = setTimeout(later, wait - last); 1382 } 1383 else { 1384 timeout = null; 1385 if (!immediate) { 1386 result = func.apply(context, args); 1387 context = args = null; 1388 } 1389 } 1390 }; 1391 return function () { 1392 context = this; 1393 args = arguments; 1394 timestamp = +new Date(); 1395 var callNow = immediate && !timeout; 1396 if (!timeout) { 1397 timeout = setTimeout(later, wait); 1398 } 1399 if (callNow) { 1400 result = func.apply(context, args); 1401 context = args = null; 1402 } 1403 return result; 1404 }; 1405} 1406exports.debounce = debounce; 1407 1408 1409/***/ }), 1410/* 5 */ 1411/***/ (function(module, exports, __webpack_require__) { 1412 1413Object.defineProperty(exports, "__esModule", { value: true }); 1414var moment = __webpack_require__(0); 1415var moment_ext_1 = __webpack_require__(11); 1416var UnzonedRange = /** @class */ (function () { 1417 function UnzonedRange(startInput, endInput) { 1418 // TODO: move these into footprint. 1419 // Especially, doesn't make sense for null startMs/endMs. 1420 this.isStart = true; 1421 this.isEnd = true; 1422 if (moment.isMoment(startInput)) { 1423 startInput = startInput.clone().stripZone(); 1424 } 1425 if (moment.isMoment(endInput)) { 1426 endInput = endInput.clone().stripZone(); 1427 } 1428 if (startInput) { 1429 this.startMs = startInput.valueOf(); 1430 } 1431 if (endInput) { 1432 this.endMs = endInput.valueOf(); 1433 } 1434 } 1435 /* 1436 SIDEEFFECT: will mutate eventRanges. 1437 Will return a new array result.
1438 Only works for non-open-ended ranges. 1439 */ 1440 UnzonedRange.invertRanges = function (ranges, constraintRange) { 1441 var invertedRanges = []; 1442 var startMs = constraintRange.startMs; // the end of the previous range. the start of the new range 1443 var i; 1444 var dateRange; 1445 // ranges need to be in order. required for our date-walking algorithm 1446 ranges.sort(compareUnzonedRanges); 1447 for (i = 0; i < ranges.length; i++) { 1448 dateRange = ranges[i]; 1449 // add the span of time before the event (if there is any) 1450 if (dateRange.startMs > startMs) { // compare millisecond time (skip any ambig logic) 1451 invertedRanges.push(new UnzonedRange(startMs, dateRange.startMs)); 1452 } 1453 if (dateRange.endMs > startMs) { 1454 startMs = dateRange.endMs; 1455 } 1456 } 1457 // add the span of time after the last event (if there is any) 1458 if (startMs < constraintRange.endMs) { // compare millisecond time (skip any ambig logic) 1459 invertedRanges.push(new UnzonedRange(startMs, constraintRange.endMs)); 1460 } 1461 return invertedRanges; 1462 }; 1463 UnzonedRange.prototype.intersect = function (otherRange) { 1464 var startMs = this.startMs; 1465 var endMs = this.endMs; 1466 var newRange = null; 1467 if (otherRange.startMs != null) { 1468 if (startMs == null) { 1469 startMs = otherRange.startMs; 1470 } 1471 else { 1472 startMs = Math.max(startMs, otherRange.startMs); 1473 } 1474 } 1475 if (otherRange.endMs != null) { 1476 if (endMs == null) { 1477 endMs = otherRange.endMs; 1478 } 1479 else { 1480 endMs = Math.min(endMs, otherRange.endMs); 1481 } 1482 } 1483 if (startMs == null || endMs == null || startMs < endMs) { 1484 newRange = new UnzonedRange(startMs, endMs); 1485 newRange.isStart = this.isStart && startMs === this.startMs; 1486 newRange.isEnd = this.isEnd && endMs === this.endMs; 1487 } 1488 return newRange; 1489 }; 1490 UnzonedRange.prototype.intersectsWith = function (otherRange) { 1491 return (this.endMs == null || otherRange.startMs == null || this.endMs > otherRange.startMs) && 1492 (this.startMs == null || otherRange.endMs == null || this.startMs < otherRange.endMs); 1493 }; 1494 UnzonedRange.prototype.containsRange = function (innerRange) { 1495 return (this.startMs == null || (innerRange.startMs != null && innerRange.startMs >= this.startMs)) && 1496 (this.endMs == null || (innerRange.endMs != null && innerRange.endMs <= this.endMs)); 1497 }; 1498 // `date` can be a moment, a Date, or a millisecond time. 1499 UnzonedRange.prototype.containsDate = function (date) { 1500 var ms = date.valueOf(); 1501 return (this.startMs == null || ms >= this.startMs) && 1502 (this.endMs == null || ms < this.endMs); 1503 }; 1504 // If the given date is not within the given range, move it inside. 1505 // (If it's past the end, make it one millisecond before the end). 1506 // `date` can be a moment, a Date, or a millisecond time. 1507 // Returns a MS-time. 1508 UnzonedRange.prototype.constrainDate = function (date) { 1509 var ms = date.valueOf(); 1510 if (this.startMs != null && ms < this.startMs) { 1511 ms = this.startMs; 1512 } 1513 if (this.endMs != null && ms >= this.endMs) { 1514 ms = this.endMs - 1; 1515 } 1516 return ms; 1517 }; 1518 UnzonedRange.prototype.equals = function (otherRange) { 1519 return this.startMs === otherRange.startMs && this.endMs === otherRange.endMs; 1520 }; 1521 UnzonedRange.prototype.clone = function () { 1522 var range = new UnzonedRange(this.startMs, this.endMs); 1523 range.isStart = this.isStart; 1524 range.isEnd = this.isEnd; 1525 return range; 1526 }; 1527 // Returns an ambig-zoned moment from startMs. 1528 // BEWARE: returned moment is not localized. 1529 // Formatting and start-of-week will be default. 1530 UnzonedRange.prototype.getStart = function () { 1531 if (this.startMs != null) { 1532 return moment_ext_1.default.utc(this.startMs).stripZone(); 1533 } 1534 return null; 1535 }; 1536 // Returns an ambig-zoned moment from startMs. 1537 // BEWARE: returned moment is not localized. 1538 // Formatting and start-of-week will be default. 1539 UnzonedRange.prototype.getEnd = function () { 1540 if (this.endMs != null) { 1541 return moment_ext_1.default.utc(this.endMs).stripZone(); 1542 } 1543 return null; 1544 }; 1545 UnzonedRange.prototype.as = function (unit) { 1546 return moment.utc(this.endMs).diff(moment.utc(this.startMs), unit, true); 1547 }; 1548 return UnzonedRange; 1549}()); 1550exports.default = UnzonedRange; 1551/* 1552Only works for non-open-ended ranges. 1553*/ 1554function compareUnzonedRanges(range1, range2) { 1555 return range1.startMs - range2.startMs; // earlier ranges go first 1556} 1557 1558 1559/***/ }), 1560/* 6 */ 1561/***/ (function(module, exports, __webpack_require__) { 1562 1563Object.defineProperty(exports, "__esModule", { value: true });
1564var tslib_1 = __webpack_require__(2); 1565var $ = __webpack_require__(3); 1566var ParsableModelMixin_1 = __webpack_require__(52); 1567var Class_1 = __webpack_require__(35); 1568var EventDefParser_1 = __webpack_require__(36); 1569var EventSource = /** @class */ (function (_super) { 1570 tslib_1.__extends(EventSource, _super); 1571 // can we do away with calendar? at least for the abstract? 1572 // useful for buildEventDef 1573 function EventSource(calendar) { 1574 var _this = _super.call(this) || this; 1575 _this.calendar = calendar; 1576 _this.className = []; 1577 _this.uid = String(EventSource.uuid++); 1578 return _this; 1579 } 1580 /* 1581 rawInput can be any data type! 1582 */ 1583 EventSource.parse = function (rawInput, calendar) { 1584 var source = new this(calendar); 1585 if (typeof rawInput === 'object') { 1586 if (source.applyProps(rawInput)) { 1587 return source; 1588 } 1589 } 1590 return false; 1591 }; 1592 EventSource.normalizeId = function (id) { 1593 if (id) { 1594 return String(id); 1595 } 1596 return null; 1597 }; 1598 EventSource.prototype.fetch = function (start, end, timezone) { 1599 // subclasses must implement. must return a promise. 1600 }; 1601 EventSource.prototype.removeEventDefsById = function (eventDefId) { 1602 // optional for subclasses to implement 1603 }; 1604 EventSource.prototype.removeAllEventDefs = function () { 1605 // optional for subclasses to implement 1606 }; 1607 /* 1608 For compairing/matching 1609 */ 1610 EventSource.prototype.getPrimitive = function (otherSource) { 1611 // subclasses must implement 1612 }; 1613 EventSource.prototype.parseEventDefs = function (rawEventDefs) { 1614 var i; 1615 var eventDef; 1616 var eventDefs = []; 1617 for (i = 0; i < rawEventDefs.length; i++) { 1618 eventDef = this.parseEventDef(rawEventDefs[i]); 1619 if (eventDef) { 1620 eventDefs.push(eventDef); 1621 } 1622 } 1623 return eventDefs; 1624 }; 1625 EventSource.prototype.parseEventDef = function (rawInput) { 1626 var calendarTransform = this.calendar.opt('eventDataTransform'); 1627 var sourceTransform = this.eventDataTransform; 1628 if (calendarTransform) { 1629 rawInput = calendarTransform(rawInput, this.calendar); 1630 } 1631 if (sourceTransform) { 1632 rawInput = sourceTransform(rawInput, this.calendar); 1633 } 1634 return EventDefParser_1.default.parse(rawInput, this); 1635 }; 1636 EventSource.prototype.applyManualStandardProps = function (rawProps) { 1637 if (rawProps.id != null) { 1638 this.id = EventSource.normalizeId(rawProps.id); 1639 } 1640 // TODO: converge with EventDef 1641 if ($.isArray(rawProps.className)) { 1642 this.className = rawProps.className; 1643 } 1644 else if (typeof rawProps.className === 'string') { 1645 this.className = rawProps.className.split(/\s+/); 1646 } 1647 return true; 1648 }; 1649 EventSource.uuid = 0; 1650 EventSource.defineStandardProps = ParsableModelMixin_1.default.defineStandardProps; 1651 EventSource.copyVerbatimStandardProps = ParsableModelMixin_1.default.copyVerbatimStandardProps; 1652 return EventSource; 1653}(Class_1.default)); 1654exports.default = EventSource; 1655ParsableModelMixin_1.default.mixInto(EventSource); 1656// Parsing 1657// --------------------------------------------------------------------------------------------------------------------- 1658EventSource.defineStandardProps({ 1659 // manually process... 1660 id: false, 1661 className: false, 1662 // automatically transfer... 1663 color: true, 1664 backgroundColor: true, 1665 borderColor: true, 1666 textColor: true, 1667 editable: true, 1668 startEditable: true, 1669 durationEditable: true, 1670 rendering: true, 1671 overlap: true, 1672 constraint: true, 1673 allDayDefault: true, 1674 eventDataTransform: true 1675}); 1676 1677 1678/***/ }), 1679/* 7 */ 1680/***/ (function(module, exports, __webpack_require__) { 1681 1682/* 1683Utility methods for easily listening to events on another object, 1684and more importantly, easily unlistening from them. 1685 1686USAGE: 1687 import { default as ListenerMixin, ListenerInterface } from './ListenerMixin' 1688in class: 1689 listenTo: ListenerInterface['listenTo'] 1690 stopListeningTo: ListenerInterface['stopListeningTo'] 1691after class: 1692 ListenerMixin.mixInto(TheClass) 1693*/ 1694Object.defineProperty(exports, "__esModule", { value: true });
1695var tslib_1 = __webpack_require__(2); 1696var $ = __webpack_require__(3); 1697var Mixin_1 = __webpack_require__(15); 1698var guid = 0; 1699var ListenerMixin = /** @class */ (function (_super) { 1700 tslib_1.__extends(ListenerMixin, _super); 1701 function ListenerMixin() { 1702 return _super !== null && _super.apply(this, arguments) || this; 1703 } 1704 /* 1705 Given an `other` object that has on/off methods, bind the given `callback` to an event by the given name. 1706 The `callback` will be called with the `this` context of the object that .listenTo is being called on. 1707 Can be called: 1708 .listenTo(other, eventName, callback) 1709 OR 1710 .listenTo(other, { 1711 eventName1: callback1, 1712 eventName2: callback2 1713 }) 1714 */ 1715 ListenerMixin.prototype.listenTo = function (other, arg, callback) { 1716 if (typeof arg === 'object') { // given dictionary of callbacks 1717 for (var eventName in arg) { 1718 if (arg.hasOwnProperty(eventName)) { 1719 this.listenTo(other, eventName, arg[eventName]); 1720 } 1721 } 1722 } 1723 else if (typeof arg === 'string') { 1724 other.on(arg + '.' + this.getListenerNamespace(), // use event namespacing to identify this object 1725 $.proxy(callback, this) // always use `this` context 1726 // the usually-undesired jQuery guid behavior doesn't matter, 1727 // because we always unbind via namespace 1728 ); 1729 } 1730 }; 1731 /* 1732 Causes the current object to stop listening to events on the `other` object. 1733 `eventName` is optional. If omitted, will stop listening to ALL events on `other`. 1734 */ 1735 ListenerMixin.prototype.stopListeningTo = function (other, eventName) { 1736 other.off((eventName || '') + '.' + this.getListenerNamespace()); 1737 }; 1738 /* 1739 Returns a string, unique to this object, to be used for event namespacing 1740 */ 1741 ListenerMixin.prototype.getListenerNamespace = function () { 1742 if (this.listenerId == null) { 1743 this.listenerId = guid++; 1744 } 1745 return '_listener' + this.listenerId; 1746 }; 1747 return ListenerMixin; 1748}(Mixin_1.default)); 1749exports.default = ListenerMixin; 1750 1751 1752/***/ }), 1753/* 8 */, 1754/* 9 */ 1755/***/ (function(module, exports, __webpack_require__) { 1756 1757Object.defineProperty(exports, "__esModule", { value: true }); 1758var tslib_1 = __webpack_require__(2); 1759var EventDef_1 = __webpack_require__(37); 1760var EventInstance_1 = __webpack_require__(53); 1761var EventDateProfile_1 = __webpack_require__(16); 1762var SingleEventDef = /** @class */ (function (_super) { 1763 tslib_1.__extends(SingleEventDef, _super); 1764 function SingleEventDef() { 1765 return _super !== null && _super.apply(this, arguments) || this; 1766 } 1767 /* 1768 Will receive start/end params, but will be ignored. 1769 */ 1770 SingleEventDef.prototype.buildInstances = function () { 1771 return [this.buildInstance()]; 1772 }; 1773 SingleEventDef.prototype.buildInstance = function () { 1774 return new EventInstance_1.default(this, // definition 1775 this.dateProfile); 1776 }; 1777 SingleEventDef.prototype.isAllDay = function () { 1778 return this.dateProfile.isAllDay(); 1779 }; 1780 SingleEventDef.prototype.clone = function () { 1781 var def = _super.prototype.clone.call(this); 1782 def.dateProfile = this.dateProfile; 1783 return def; 1784 }; 1785 SingleEventDef.prototype.rezone = function () { 1786 var calendar = this.source.calendar; 1787 var dateProfile = this.dateProfile; 1788 this.dateProfile = new EventDateProfile_1.default(calendar.moment(dateProfile.start), dateProfile.end ? calendar.moment(dateProfile.end) : null, calendar); 1789 }; 1790 /* 1791 NOTE: if super-method fails, should still attempt to apply 1792 */ 1793 SingleEventDef.prototype.applyManualStandardProps = function (rawProps) { 1794 var superSuccess = _super.prototype.applyManualStandardProps.call(this, rawProps); 1795 var dateProfile = EventDateProfile_1.default.parse(rawProps, this.source); // returns null on failure 1796 if (dateProfile) { 1797 this.dateProfile = dateProfile; 1798 // make sure `date` shows up in the legacy event objects as-is 1799 if (rawProps.date != null) { 1800 this.miscProps.date = rawProps.date; 1801 } 1802 return superSuccess; 1803 } 1804 else { 1805 return false; 1806 } 1807 }; 1808 return SingleEventDef; 1809}(EventDef_1.default)); 1810exports.default = SingleEventDef; 1811// Parsing 1812// --------------------------------------------------------------------------------------------------------------------- 1813SingleEventDef.defineStandardProps({ 1814 start: false, 1815 date: false, 1816 end: false, 1817 allDay: false 1818}); 1819 1820 1821/***/ }), 1822/* 10 */, 1823/* 11 */ 1824/***/ (function(module, exports, __webpack_require__) { 1825 1826Object.defineProperty(exports, "__esModule", { value: true });
1827var moment = __webpack_require__(0); 1828var $ = __webpack_require__(3); 1829var util_1 = __webpack_require__(4); 1830var ambigDateOfMonthRegex = /^\s*\d{4}-\d\d$/; 1831var ambigTimeOrZoneRegex = /^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?)?$/; 1832var newMomentProto = moment.fn; // where we will attach our new methods 1833exports.newMomentProto = newMomentProto; 1834var oldMomentProto = $.extend({}, newMomentProto); // copy of original moment methods 1835exports.oldMomentProto = oldMomentProto; 1836// tell momentjs to transfer these properties upon clone 1837var momentProperties = moment.momentProperties; 1838momentProperties.push('_fullCalendar'); 1839momentProperties.push('_ambigTime'); 1840momentProperties.push('_ambigZone'); 1841/* 1842Call this if you want Moment's original format method to be used 1843*/ 1844function oldMomentFormat(mom, formatStr) { 1845 return oldMomentProto.format.call(mom, formatStr); // oldMomentProto defined in moment-ext.js 1846} 1847exports.oldMomentFormat = oldMomentFormat; 1848// Creating 1849// ------------------------------------------------------------------------------------------------- 1850// Creates a new moment, similar to the vanilla moment(...) constructor, but with 1851// extra features (ambiguous time, enhanced formatting). When given an existing moment, 1852// it will function as a clone (and retain the zone of the moment). Anything else will 1853// result in a moment in the local zone. 1854var momentExt = function () { 1855 return makeMoment(arguments); 1856}; 1857exports.default = momentExt; 1858// Sames as momentExt, but forces the resulting moment to be in the UTC timezone. 1859momentExt.utc = function () { 1860 var mom = makeMoment(arguments, true); 1861 // Force it into UTC because makeMoment doesn't guarantee it 1862 // (if given a pre-existing moment for example) 1863 if (mom.hasTime()) { // don't give ambiguously-timed moments a UTC zone 1864 mom.utc(); 1865 } 1866 return mom; 1867}; 1868// Same as momentExt, but when given an ISO8601 string, the timezone offset is preserved. 1869// ISO8601 strings with no timezone offset will become ambiguously zoned. 1870momentExt.parseZone = function () { 1871 return makeMoment(arguments, true, true); 1872}; 1873// Builds an enhanced moment from args. When given an existing moment, it clones. When given a 1874// native Date, or called with no arguments (the current time), the resulting moment will be local. 1875// Anything else needs to be "parsed" (a string or an array), and will be affected by: 1876// parseAsUTC - if there is no zone information, should we parse the input in UTC? 1877// parseZone - if there is zone information, should we force the zone of the moment? 1878function makeMoment(args, parseAsUTC, parseZone) { 1879 if (parseAsUTC === void 0) { parseAsUTC = false; } 1880 if (parseZone === void 0) { parseZone = false; } 1881 var input = args[0]; 1882 var isSingleString = args.length === 1 && typeof input === 'string'; 1883 var isAmbigTime; 1884 var isAmbigZone; 1885 var ambigMatch; 1886 var mom; 1887 if (moment.isMoment(input) || util_1.isNativeDate(input) || input === undefined) { 1888 mom = moment.apply(null, args); 1889 } 1890 else { // "parsing" is required 1891 isAmbigTime = false; 1892 isAmbigZone = false; 1893 if (isSingleString) { 1894 if (ambigDateOfMonthRegex.test(input)) { 1895 // accept strings like '2014-05', but convert to the first of the month 1896 input += '-01'; 1897 args = [input]; // for when we pass it on to moment's constructor 1898 isAmbigTime = true; 1899 isAmbigZone = true; 1900 } 1901 else if ((ambigMatch = ambigTimeOrZoneRegex.exec(input))) { 1902 isAmbigTime = !ambigMatch[5]; // no time part? 1903 isAmbigZone = true; 1904 } 1905 } 1906 else if ($.isArray(input)) { 1907 // arrays have no timezone information, so assume ambiguous zone 1908 isAmbigZone = true; 1909 } 1910 // otherwise, probably a string with a format 1911 if (parseAsUTC || isAmbigTime) { 1912 mom = moment.utc.apply(moment, args); 1913 } 1914 else {
1915 mom = moment.apply(null, args); 1916 } 1917 if (isAmbigTime) { 1918 mom._ambigTime = true; 1919 mom._ambigZone = true; // ambiguous time always means ambiguous zone 1920 } 1921 else if (parseZone) { // let's record the inputted zone somehow 1922 if (isAmbigZone) { 1923 mom._ambigZone = true; 1924 } 1925 else if (isSingleString) { 1926 mom.utcOffset(input); // if not a valid zone, will assign UTC 1927 } 1928 } 1929 } 1930 mom._fullCalendar = true; // flag for extended functionality 1931 return mom; 1932} 1933// Week Number 1934// ------------------------------------------------------------------------------------------------- 1935// Returns the week number, considering the locale's custom week number calcuation 1936// `weeks` is an alias for `week` 1937newMomentProto.week = newMomentProto.weeks = function (input) { 1938 var weekCalc = this._locale._fullCalendar_weekCalc; 1939 if (input == null && typeof weekCalc === 'function') { // custom function only works for getter 1940 return weekCalc(this); 1941 } 1942 else if (weekCalc === 'ISO') { 1943 return oldMomentProto.isoWeek.apply(this, arguments); // ISO getter/setter 1944 } 1945 return oldMomentProto.week.apply(this, arguments); // local getter/setter 1946}; 1947// Time-of-day 1948// ------------------------------------------------------------------------------------------------- 1949// GETTER 1950// Returns a Duration with the hours/minutes/seconds/ms values of the moment. 1951// If the moment has an ambiguous time, a duration of 00:00 will be returned. 1952// 1953// SETTER 1954// You can supply a Duration, a Moment, or a Duration-like argument. 1955// When setting the time, and the moment has an ambiguous time, it then becomes unambiguous. 1956newMomentProto.time = function (time) { 1957 // Fallback to the original method (if there is one) if this moment wasn't created via FullCalendar. 1958 // `time` is a generic enough method name where this precaution is necessary to avoid collisions w/ other plugins. 1959 if (!this._fullCalendar) { 1960 return oldMomentProto.time.apply(this, arguments); 1961 } 1962 if (time == null) { // getter 1963 return moment.duration({ 1964 hours: this.hours(), 1965 minutes: this.minutes(), 1966 seconds: this.seconds(), 1967 milliseconds: this.milliseconds() 1968 }); 1969 } 1970 else { // setter 1971 this._ambigTime = false; // mark that the moment now has a time 1972 if (!moment.isDuration(time) && !moment.isMoment(time)) { 1973 time = moment.duration(time); 1974 } 1975 // The day value should cause overflow (so 24 hours becomes 00:00:00 of next day). 1976 // Only for Duration times, not Moment times. 1977 var dayHours = 0; 1978 if (moment.isDuration(time)) { 1979 dayHours = Math.floor(time.asDays()) * 24; 1980 } 1981 // We need to set the individual fields. 1982 // Can't use startOf('day') then add duration. In case of DST at start of day. 1983 return this.hours(dayHours + time.hours()) 1984 .minutes(time.minutes()) 1985 .seconds(time.seconds()) 1986 .milliseconds(time.milliseconds()); 1987 } 1988}; 1989// Converts the moment to UTC, stripping out its time-of-day and timezone offset, 1990// but preserving its YMD. A moment with a stripped time will display no time 1991// nor timezone offset when .format() is called. 1992newMomentProto.stripTime = function () { 1993 if (!this._ambigTime) { 1994 this.utc(true); // keepLocalTime=true (for keeping *date* value) 1995 // set time to zero 1996 this.set({ 1997 hours: 0, 1998 minutes: 0, 1999 seconds: 0, 2000 ms: 0 2001 }); 2002 // Mark the time as ambiguous. This needs to happen after the .utc() call, which might call .utcOffset(), 2003 // which clears all ambig flags. 2004 this._ambigTime = true; 2005 this._ambigZone = true; // if ambiguous time, also ambiguous timezone offset 2006 } 2007 return this; // for chaining 2008};
2009// Returns if the moment has a non-ambiguous time (boolean) 2010newMomentProto.hasTime = function () { 2011 return !this._ambigTime; 2012}; 2013// Timezone 2014// ------------------------------------------------------------------------------------------------- 2015// Converts the moment to UTC, stripping out its timezone offset, but preserving its 2016// YMD and time-of-day. A moment with a stripped timezone offset will display no 2017// timezone offset when .format() is called. 2018newMomentProto.stripZone = function () { 2019 var wasAmbigTime; 2020 if (!this._ambigZone) { 2021 wasAmbigTime = this._ambigTime; 2022 this.utc(true); // keepLocalTime=true (for keeping date and time values) 2023 // the above call to .utc()/.utcOffset() unfortunately might clear the ambig flags, so restore 2024 this._ambigTime = wasAmbigTime || false; 2025 // Mark the zone as ambiguous. This needs to happen after the .utc() call, which might call .utcOffset(), 2026 // which clears the ambig flags. 2027 this._ambigZone = true; 2028 } 2029 return this; // for chaining 2030}; 2031// Returns of the moment has a non-ambiguous timezone offset (boolean) 2032newMomentProto.hasZone = function () { 2033 return !this._ambigZone; 2034}; 2035// implicitly marks a zone 2036newMomentProto.local = function (keepLocalTime) { 2037 // for when converting from ambiguously-zoned to local, 2038 // keep the time values when converting from UTC -> local 2039 oldMomentProto.local.call(this, this._ambigZone || keepLocalTime); 2040 // ensure non-ambiguous 2041 // this probably already happened via local() -> utcOffset(), but don't rely on Moment's internals 2042 this._ambigTime = false; 2043 this._ambigZone = false; 2044 return this; // for chaining 2045}; 2046// implicitly marks a zone 2047newMomentProto.utc = function (keepLocalTime) { 2048 oldMomentProto.utc.call(this, keepLocalTime); 2049 // ensure non-ambiguous 2050 // this probably already happened via utc() -> utcOffset(), but don't rely on Moment's internals 2051 this._ambigTime = false; 2052 this._ambigZone = false; 2053 return this; 2054}; 2055// implicitly marks a zone (will probably get called upon .utc() and .local()) 2056newMomentProto.utcOffset = function (tzo) { 2057 if (tzo != null) { // setter 2058 // these assignments needs to happen before the original zone method is called. 2059 // I forget why, something to do with a browser crash. 2060 this._ambigTime = false; 2061 this._ambigZone = false; 2062 } 2063 return oldMomentProto.utcOffset.apply(this, arguments); 2064}; 2065 2066 2067/***/ }), 2068/* 12 */ 2069/***/ (function(module, exports) { 2070 2071Object.defineProperty(exports, "__esModule", { value: true }); 2072/* 2073Meant to be immutable 2074*/ 2075var ComponentFootprint = /** @class */ (function () { 2076 function ComponentFootprint(unzonedRange, isAllDay) { 2077 this.isAllDay = false; // component can choose to ignore this 2078 this.unzonedRange = unzonedRange; 2079 this.isAllDay = isAllDay; 2080 } 2081 /* 2082 Only works for non-open-ended ranges. 2083 */ 2084 ComponentFootprint.prototype.toLegacy = function (calendar) { 2085 return { 2086 start: calendar.msToMoment(this.unzonedRange.startMs, this.isAllDay), 2087 end: calendar.msToMoment(this.unzonedRange.endMs, this.isAllDay) 2088 }; 2089 }; 2090 return ComponentFootprint; 2091}()); 2092exports.default = ComponentFootprint; 2093 2094 2095/***/ }), 2096/* 13 */ 2097/***/ (function(module, exports, __webpack_require__) { 2098 2099/* 2100USAGE: 2101 import { default as EmitterMixin, EmitterInterface } from './EmitterMixin' 2102in class: 2103 on: EmitterInterface['on'] 2104 one: EmitterInterface['one'] 2105 off: EmitterInterface['off'] 2106 trigger: EmitterInterface['trigger'] 2107 triggerWith: EmitterInterface['triggerWith'] 2108 hasHandlers: EmitterInterface['hasHandlers'] 2109after class: 2110 EmitterMixin.mixInto(TheClass) 2111*/ 2112Object.defineProperty(exports, "__esModule", { value: true }); 2113var tslib_1 = __webpack_require__(2); 2114var $ = __webpack_require__(3); 2115var Mixin_1 = __webpack_require__(15); 2116var EmitterMixin = /** @class */ (function (_super) { 2117 tslib_1.__extends(EmitterMixin, _super); 2118 function EmitterMixin() { 2119 return _super !== null && _super.apply(this, arguments) || this; 2120 } 2121 // jQuery-ification via $(this) allows a non-DOM object to have 2122 // the same event handling capabilities (including namespaces). 2123 EmitterMixin.prototype.on = function (types, handler) { 2124 $(this).on(types, this._prepareIntercept(handler)); 2125 return this; // for chaining 2126 }; 2127 EmitterMixin.prototype.one = function (types, handler) { 2128 $(this).one(types, this._prepareIntercept(handler)); 2129 return this; // for chaining 2130 }; 2131 EmitterMixin.prototype._prepareIntercept = function (handler) { 2132 // handlers are always called with an "event" object as their first param. 2133 // sneak the `this` context and arguments into the extra parameter object 2134 // and forward them on to the original handler. 2135 var intercept = function (ev, extra) { 2136 return handler.apply(extra.context || this, extra.args || []); 2137 }; 2138 // mimick jQuery's internal "proxy" system (risky, I know) 2139 // causing all functions with the same .guid to appear to be the same. 2140 // https://github.com/jquery/jquery/blob/2.2.4/src/core.js#L448 2141 // this is needed for calling .off with the original non-intercept handler. 2142 if (!handler.guid) { 2143 handler.guid = $.guid++; 2144 } 2145 intercept.guid = handler.guid; 2146 return intercept; 2147 }; 2148 EmitterMixin.prototype.off = function (types, handler) { 2149 $(this).off(types, handler); 2150 return this; // for chaining 2151 }; 2152 EmitterMixin.prototype.trigger = function (types) { 2153 var args = []; 2154 for (var _i = 1; _i < arguments.length; _i++) { 2155 args[_i - 1] = arguments[_i]; 2156 } 2157 // pass in "extra" info to the intercept 2158 $(this).triggerHandler(types, { args: args }); 2159 return this; // for chaining 2160 }; 2161 EmitterMixin.prototype.triggerWith = function (types, context, args
2161) { 2162 // `triggerHandler` is less reliant on the DOM compared to `trigger`. 2163 // pass in "extra" info to the intercept. 2164 $(this).triggerHandler(types, { context: context, args: args }); 2165 return this; // for chaining 2166 }; 2167 EmitterMixin.prototype.hasHandlers = function (type) { 2168 var hash = $._data(this, 'events'); // http://blog.jquery.com/2012/08/09/jquery-1-8-released/ 2169 return hash && hash[type] && hash[type].length > 0; 2170 }; 2171 return EmitterMixin; 2172}(Mixin_1.default)); 2173exports.default = EmitterMixin; 2174 2175 2176/***/ }), 2177/* 14 */ 2178/***/ (function(module, exports) { 2179 2180Object.defineProperty(exports, "__esModule", { value: true }); 2181var Interaction = /** @class */ (function () { 2182 function Interaction(component) { 2183 this.view = component._getView(); 2184 this.component = component; 2185 } 2186 Interaction.prototype.opt = function (name) { 2187 return this.view.opt(name); 2188 }; 2189 Interaction.prototype.end = function () { 2190 // subclasses can implement 2191 }; 2192 return Interaction; 2193}()); 2194exports.default = Interaction; 2195 2196 2197/***/ }), 2198/* 15 */ 2199/***/ (function(module, exports) { 2200 2201Object.defineProperty(exports, "__esModule", { value: true }); 2202var Mixin = /** @class */ (function () { 2203 function Mixin() { 2204 } 2205 Mixin.mixInto = function (destClass) { 2206 var _this = this; 2207 Object.getOwnPropertyNames(this.prototype).forEach(function (name) { 2208 if (!destClass.prototype[name]) { // if destination class doesn't already define it 2209 destClass.prototype[name] = _this.prototype[name]; 2210 } 2211 }); 2212 }; 2213 /* 2214 will override existing methods 2215 TODO: remove! not used anymore 2216 */ 2217 Mixin.mixOver = function (destClass) { 2218 var _this = this; 2219 Object.getOwnPropertyNames(this.prototype).forEach(function (name) { 2220 destClass.prototype[name] = _this.prototype[name]; 2221 }); 2222 }; 2223 return Mixin; 2224}()); 2225exports.default = Mixin; 2226 2227 2228/***/ }), 2229/* 16 */ 2230/***/ (function(module, exports, __webpack_require__) { 2231 2232Object.defineProperty(exports, "__esModule", { value: true }); 2233var UnzonedRange_1 = __webpack_require__(5); 2234/* 2235Meant to be immutable 2236*/ 2237var EventDateProfile = /** @class */ (function () { 2238 function EventDateProfile(start, end, calendar) { 2239 this.start = start; 2240 this.end = end || null; 2241 this.unzonedRange = this.buildUnzonedRange(calendar); 2242 } 2243 /* 2244 Needs an EventSource object 2245 */ 2246 EventDateProfile.parse = function (rawProps, source) { 2247 var startInput = rawProps.start || rawProps.date; 2248 var endInput = rawProps.end; 2249 if (!startInput) { 2250 return false; 2251 } 2252 var calendar = source.calendar; 2253 var start = calendar.moment(startInput); 2254 var end = endInput ? calendar.moment(endInput) : null; 2255 var forcedAllDay = rawProps.allDay; 2256 var forceEventDuration = calendar.opt('forceEventDuration'); 2257 if (!start.isValid()) { 2258 return false; 2259 } 2260 if (forcedAllDay == null) { 2261 forcedAllDay = source.allDayDefault; 2262 if (forcedAllDay == null) { 2263 forcedAllDay = calendar.opt('allDayDefault'); 2264 } 2265 } 2266 if (forcedAllDay === true) { 2267 start.stripTime(); 2268 if (end) { 2269 end.stripTime(); 2270 } 2271 } 2272 else if (forcedAllDay === false) { 2273 if (!start.hasTime()) { 2274 start.time(0); 2275 } 2276 if (end && !end.hasTime()) { 2277 end.time(0); 2278 } 2279 } 2280 if (end && (!end.isValid() || !end.isAfter(start))) { 2281 end = null; 2282 } 2283 if (!end && forceEventDuration) { 2284 end = calendar.getDefaultEventEnd(!start.hasTime(), start); 2285 } 2286 return new EventDateProfile(start, end, calendar); 2287 }; 2288 EventDateProfile.isStandardProp = function (propName) { 2289 return propName === 'start' || propName === 'date' || propName === 'end' || propName === 'allDay'; 2290 }; 2291 EventDateProfile.prototype.isAllDay = function () { 2292 return !(this.start.hasTime() || (this.end && this.end.hasTime())); 2293 }; 2294 /* 2295 Needs a Calendar object 2296 */ 2297 EventDateProfile.prototype.buildUnzonedRange = function (calendar) { 2298 var startMs = this.start.clone().stripZone().valueOf(); 2299 var endMs = this.getEnd(calendar).stripZone().valueOf(); 2300 return new UnzonedRange_1.default(startMs, endMs); 2301 }; 2302 /* 2303 Needs a Calendar object 2304 */ 2305 EventDateProfile.prototype.getEnd = function (calendar) { 2306 return this.end ? 2307 this.end.clone() : 2308 // derive the end from the start and allDay. compute allDay if necessary 2309 calendar.getDefaultEventEnd(this.isAllDay(), this.start); 2310 }; 2311 return EventDateProfile; 2312}()); 2313exports.default = EventDateProfile; 2314 2315 2316/***/ }), 2317/* 17 */ 2318/***/ (function(module, exports, __webpack_require__) { 2319 2320Object.defineProperty(exports, "__esModule", { value: true });
2321var tslib_1 = __webpack_require__(2); 2322var util_1 = __webpack_require__(4); 2323var DragListener_1 = __webpack_require__(59); 2324/* Tracks mouse movements over a component and raises events about which hit the mouse is over. 2325------------------------------------------------------------------------------------------------------------------------ 2326options: 2327- subjectEl 2328- subjectCenter 2329*/ 2330var HitDragListener = /** @class */ (function (_super) { 2331 tslib_1.__extends(HitDragListener, _super); 2332 function HitDragListener(component, options) { 2333 var _this = _super.call(this, options) || this; 2334 _this.component = component; 2335 return _this; 2336 } 2337 // Called when drag listening starts (but a real drag has not necessarily began). 2338 // ev might be undefined if dragging was started manually. 2339 HitDragListener.prototype.handleInteractionStart = function (ev) { 2340 var subjectEl = this.subjectEl; 2341 var subjectRect; 2342 var origPoint; 2343 var point; 2344 this.component.hitsNeeded(); 2345 this.computeScrollBounds(); // for autoscroll 2346 if (ev) { 2347 origPoint = { left: util_1.getEvX(ev), top: util_1.getEvY(ev) }; 2348 point = origPoint; 2349 // constrain the point to bounds of the element being dragged 2350 if (subjectEl) { 2351 subjectRect = util_1.getOuterRect(subjectEl); // used for centering as well 2352 point = util_1.constrainPoint(point, subjectRect); 2353 } 2354 this.origHit = this.queryHit(point.left, point.top); 2355 // treat the center of the subject as the collision point? 2356 if (subjectEl && this.options.subjectCenter) { 2357 // only consider the area the subject overlaps the hit. best for large subjects. 2358 // TODO: skip this if hit didn't supply left/right/top/bottom 2359 if (this.origHit) { 2360 subjectRect = util_1.intersectRects(this.origHit, subjectRect) || 2361 subjectRect; // in case there is no intersection 2362 } 2363 point = util_1.getRectCenter(subjectRect); 2364 } 2365 this.coordAdjust = util_1.diffPoints(point, origPoint); // point - origPoint 2366 } 2367 else { 2368 this.origHit = null; 2369 this.coordAdjust = null; 2370 } 2371 // call the super-method. do it after origHit has been computed 2372 _super.prototype.handleInteractionStart.call(this, ev); 2373 }; 2374 // Called when the actual drag has started 2375 HitDragListener.prototype.handleDragStart = function (ev) { 2376 var hit; 2377 _super.prototype.handleDragStart.call(this, ev); 2378 // might be different from this.origHit if the min-distance is large 2379 hit = this.queryHit(util_1.getEvX(ev), util_1.getEvY(ev)); 2380 // report the initial hit the mouse is over 2381 // especially important if no min-distance and drag starts immediately 2382 if (hit) { 2383 this.handleHitOver(hit); 2384 } 2385 }; 2386 // Called when the drag moves 2387 HitDragListener.prototype.handleDrag = function (dx, dy, ev) { 2388 var hit; 2389 _super.prototype.handleDrag.call(this, dx, dy, ev); 2390 hit = this.queryHit(util_1.getEvX(ev), util_1.getEvY(ev)); 2391 if (!isHitsEqual(hit, this.hit)) { // a different hit than before? 2392 if (this.hit) { 2393 this.handleHitOut(); 2394 } 2395 if (hit) { 2396 this.handleHitOver(hit); 2397 } 2398 } 2399 }; 2400 // Called when dragging has been stopped 2401 HitDragListener.prototype.handleDragEnd = function (ev) { 2402 this.handleHitDone(); 2403 _super.prototype.handleDragEnd.call(this, ev); 2404 }; 2405 // Called when a the mouse has just moved over a new hit 2406 HitDragListener.prototype.handleHitOver = function (hit) { 2407 var isOrig = isHitsEqual(hit, this.origHit); 2408 this.hit = hit; 2409 this.trigger('hitOver', this.hit, isOrig, this.origHit); 2410 }; 2411 // Called when the mouse has just moved out of a hit 2412 HitDragListener.prototype.handleHitOut = function () { 2413 if (this.hit) { 2414 this.trigger('hitOut', this.hit); 2415 this.handleHitDone(); 2416 this.hit = null; 2417 } 2418 }; 2419 // Called after a hitOut. Also called before a dragStop 2420 HitDragListener.prototype.handleHitDone = function () { 2421 if (this.hit) { 2422 this.trigger('hitDone', this.hit); 2423 } 2424 }; 2425 // Called when the interaction ends, whether there was a real drag or not 2426 HitDragListener.prototype.handleInteractionEnd = function (ev, isCancelled) { 2427 _super.prototype.handleInteractionEnd.call(this, ev, isCancelled); 2428 this.origHit = null; 2429 this.hit = null; 2430 this.component.hitsNotNeeded(); 2431 }; 2432 // Called when scrolling has stopped, whether through auto scroll, or the user scrolling 2433 HitDragListener.prototype.handleScrollEnd = function () { 2434 _super.prototype.handleScrollEnd.call(this); 2435 // hits' absolute positions will be in new places after a user's scroll. 2436 // HACK for recomputing. 2437 if (this.isDragging) { 2438 this.component.releaseHits();
2439 this.component.prepareHits(); 2440 } 2441 }; 2442 // Gets the hit underneath the coordinates for the given mouse event 2443 HitDragListener.prototype.queryHit = function (left, top) { 2444 if (this.coordAdjust) { 2445 left += this.coordAdjust.left; 2446 top += this.coordAdjust.top; 2447 } 2448 return this.component.queryHit(left, top); 2449 }; 2450 return HitDragListener; 2451}(DragListener_1.default)); 2452exports.default = HitDragListener; 2453// Returns `true` if the hits are identically equal. `false` otherwise. Must be from the same component. 2454// Two null values will be considered equal, as two "out of the component" states are the same. 2455function isHitsEqual(hit0, hit1) { 2456 if (!hit0 && !hit1) { 2457 return true; 2458 } 2459 if (hit0 && hit1) { 2460 return hit0.component === hit1.component && 2461 isHitPropsWithin(hit0, hit1) && 2462 isHitPropsWithin(hit1, hit0); // ensures all props are identical 2463 } 2464 return false; 2465} 2466// Returns true if all of subHit's non-standard properties are within superHit 2467function isHitPropsWithin(subHit, superHit) { 2468 for (var propName in subHit) { 2469 if (!/^(component|left|right|top|bottom)$/.test(propName)) { 2470 if (subHit[propName] !== superHit[propName]) { 2471 return false; 2472 } 2473 } 2474 } 2475 return true; 2476} 2477 2478 2479/***/ }), 2480/* 18 */ 2481/***/ (function(module, exports, __webpack_require__) { 2482 2483Object.defineProperty(exports, "__esModule", { value: true }); 2484exports.version = '3.10.5'; 2485// When introducing internal API incompatibilities (where fullcalendar plugins would break), 2486// the minor version of the calendar should be upped (ex: 2.7.2 -> 2.8.0) 2487// and the below integer should be incremented. 2488exports.internalApiVersion = 12; 2489var util_1 = __webpack_require__(4); 2490exports.applyAll = util_1.applyAll; 2491exports.debounce = util_1.debounce; 2492exports.isInt = util_1.isInt; 2493exports.htmlEscape = util_1.htmlEscape; 2494exports.cssToStr = util_1.cssToStr; 2495exports.proxy = util_1.proxy; 2496exports.capitaliseFirstLetter = util_1.capitaliseFirstLetter; 2497exports.getOuterRect = util_1.getOuterRect; 2498exports.getClientRect = util_1.getClientRect; 2499exports.getContentRect = util_1.getContentRect; 2500exports.getScrollbarWidths = util_1.getScrollbarWidths; 2501exports.preventDefault = util_1.preventDefault; 2502exports.parseFieldSpecs = util_1.parseFieldSpecs; 2503exports.compareByFieldSpecs = util_1.compareByFieldSpecs; 2504exports.compareByFieldSpec = util_1.compareByFieldSpec; 2505exports.flexibleCompare = util_1.flexibleCompare; 2506exports.computeGreatestUnit = util_1.computeGreatestUnit; 2507exports.divideRangeByDuration = util_1.divideRangeByDuration; 2508exports.divideDurationByDuration = util_1.divideDurationByDuration; 2509exports.multiplyDuration = util_1.multiplyDuration; 2510exports.durationHasTime = util_1.durationHasTime; 2511exports.log = util_1.log; 2512exports.warn = util_1.warn; 2513exports.removeExact = util_1.removeExact; 2514exports.intersectRects = util_1.intersectRects; 2515exports.allowSelection = util_1.allowSelection; 2516exports.attrsToStr = util_1.attrsToStr; 2517exports.compareNumbers = util_1.compareNumbers; 2518exports.compensateScroll = util_1.compensateScroll; 2519exports.computeDurationGreatestUnit = util_1.computeDurationGreatestUnit; 2520exports.constrainPoint = util_1.constrainPoint; 2521exports.copyOwnProps = util_1.copyOwnProps; 2522exports.diffByUnit = util_1.diffByUnit; 2523exports.diffDay = util_1.diffDay; 2524exports.diffDayTime = util_1.diffDayTime; 2525exports.diffPoints = util_1.diffPoints; 2526exports.disableCursor = util_1.disableCursor; 2527exports.distributeHeight = util_1.distributeHeight; 2528exports.enableCursor = util_1.enableCursor; 2529exports.firstDefined = util_1.firstDefined; 2530exports.getEvIsTouch = util_1.getEvIsTouch; 2531exports.getEvX = util_1.getEvX; 2532exports.getEvY = util_1.getEvY; 2533exports.getRectCenter = util_1.getRectCenter; 2534exports.getScrollParent = util_1.getScrollParent; 2535exports.hasOwnProp = util_1.hasOwnProp; 2536exports.isArraysEqual = util_1.isArraysEqual; 2537exports.isNativeDate = util_1.isNativeDate; 2538exports.isPrimaryMouseButton = util_1.isPrimaryMouseButton;
2539exports.isTimeString = util_1.isTimeString; 2540exports.matchCellWidths = util_1.matchCellWidths; 2541exports.mergeProps = util_1.mergeProps; 2542exports.preventSelection = util_1.preventSelection; 2543exports.removeMatching = util_1.removeMatching; 2544exports.stripHtmlEntities = util_1.stripHtmlEntities; 2545exports.subtractInnerElHeight = util_1.subtractInnerElHeight; 2546exports.uncompensateScroll = util_1.uncompensateScroll; 2547exports.undistributeHeight = util_1.undistributeHeight; 2548exports.dayIDs = util_1.dayIDs; 2549exports.unitsDesc = util_1.unitsDesc; 2550var date_formatting_1 = __webpack_require__(49); 2551exports.formatDate = date_formatting_1.formatDate; 2552exports.formatRange = date_formatting_1.formatRange; 2553exports.queryMostGranularFormatUnit = date_formatting_1.queryMostGranularFormatUnit; 2554var locale_1 = __webpack_require__(32); 2555exports.datepickerLocale = locale_1.datepickerLocale; 2556exports.locale = locale_1.locale; 2557exports.getMomentLocaleData = locale_1.getMomentLocaleData; 2558exports.populateInstanceComputableOptions = locale_1.populateInstanceComputableOptions; 2559var util_2 = __webpack_require__(19); 2560exports.eventDefsToEventInstances = util_2.eventDefsToEventInstances; 2561exports.eventFootprintToComponentFootprint = util_2.eventFootprintToComponentFootprint; 2562exports.eventInstanceToEventRange = util_2.eventInstanceToEventRange; 2563exports.eventInstanceToUnzonedRange = util_2.eventInstanceToUnzonedRange; 2564exports.eventRangeToEventFootprint = util_2.eventRangeToEventFootprint; 2565var moment_ext_1 = __webpack_require__(11); 2566exports.moment = moment_ext_1.default; 2567var EmitterMixin_1 = __webpack_require__(13); 2568exports.EmitterMixin = EmitterMixin_1.default; 2569var ListenerMixin_1 = __webpack_require__(7); 2570exports.ListenerMixin = ListenerMixin_1.default; 2571var Model_1 = __webpack_require__(51); 2572exports.Model = Model_1.default; 2573var Constraints_1 = __webpack_require__(217); 2574exports.Constraints = Constraints_1.default; 2575var DateProfileGenerator_1 = __webpack_require__(55); 2576exports.DateProfileGenerator = DateProfileGenerator_1.default; 2577var UnzonedRange_1 = __webpack_require__(5); 2578exports.UnzonedRange = UnzonedRange_1.default; 2579var ComponentFootprint_1 = __webpack_require__(12); 2580exports.ComponentFootprint = ComponentFootprint_1.default; 2581var BusinessHourGenerator_1 = __webpack_require__(218); 2582exports.BusinessHourGenerator = BusinessHourGenerator_1.default; 2583var EventPeriod_1 = __webpack_require__(219); 2584exports.EventPeriod = EventPeriod_1.default; 2585var EventManager_1 = __webpack_require__(220); 2586exports.EventManager = EventManager_1.default; 2587var EventDef_1 = __webpack_require__(37); 2588exports.EventDef = EventDef_1.default; 2589var EventDefMutation_1 = __webpack_require__(39); 2590exports.EventDefMutation = EventDefMutation_1.default; 2591var EventDefParser_1 = __webpack_require__(36); 2592exports.EventDefParser = EventDefParser_1.default; 2593var EventInstance_1 = __webpack_require__(53); 2594exports.EventInstance = EventInstance_1.default; 2595var EventRange_1 = __webpack_require__(50); 2596exports.EventRange = EventRange_1.default; 2597var RecurringEventDef_1 = __webpack_require__(54); 2598exports.RecurringEventDef = RecurringEventDef_1.default; 2599var SingleEventDef_1 = __webpack_require__(9); 2600exports.SingleEventDef = SingleEventDef_1.default; 2601var EventDefDateMutation_1 = __webpack_require__(40); 2602exports.EventDefDateMutation = EventDefDateMutation_1.default; 2603var EventDateProfile_1 = __webpack_require__(16); 2604exports.EventDateProfile = EventDateProfile_1.default; 2605var EventSourceParser_1 = __webpack_require__(38); 2606exports.EventSourceParser = EventSourceParser_1.default; 2607var EventSource_1 = __webpack_require__(6); 2608exports.EventSource = EventSource_1.default; 2609var ThemeRegistry_1 = __webpack_require__(57); 2610exports.defineThemeSystem = ThemeRegistry_1.defineThemeSystem; 2611exports.getThemeSystemClass = ThemeRegistry_1.getThemeSystemClass; 2612var EventInstanceGroup_1 = __webpack_require__(20); 2613exports.EventInstanceGroup = EventInstanceGroup_1.default; 2614var ArrayEventSource_1 = __webpack_require__(56); 2615exports.ArrayEventSource = ArrayEventSource_1.default; 2616var FuncEventSource_1 = __webpack_require__(223); 2617exports.FuncEventSource = FuncEventSource_1.default; 2618var JsonFeedEventSource_1 = __webpack_require__(224); 2619exports.JsonFeedEventSource = JsonFeedEventSource_1.default; 2620var EventFootprint_1 = __webpack_require__(34); 2621exports.EventFootprint = EventFootprint_1.default; 2622var Class_1 = __webpack_require__(35); 2623exports.Class = Class_1.default; 2624var Mixin_1 = __webpack_require__(15); 2625exports.Mixin = Mixin_1.default;
2626var CoordCache_1 = __webpack_require__(58); 2627exports.CoordCache = CoordCache_1.default; 2628var Iterator_1 = __webpack_require__(225); 2629exports.Iterator = Iterator_1.default; 2630var DragListener_1 = __webpack_require__(59); 2631exports.DragListener = DragListener_1.default; 2632var HitDragListener_1 = __webpack_require__(17); 2633exports.HitDragListener = HitDragListener_1.default; 2634var MouseFollower_1 = __webpack_require__(226); 2635exports.MouseFollower = MouseFollower_1.default; 2636var ParsableModelMixin_1 = __webpack_require__(52); 2637exports.ParsableModelMixin = ParsableModelMixin_1.default; 2638var Popover_1 = __webpack_require__(227); 2639exports.Popover = Popover_1.default; 2640var Promise_1 = __webpack_require__(21); 2641exports.Promise = Promise_1.default; 2642var TaskQueue_1 = __webpack_require__(228); 2643exports.TaskQueue = TaskQueue_1.default; 2644var RenderQueue_1 = __webpack_require__(229); 2645exports.RenderQueue = RenderQueue_1.default; 2646var Scroller_1 = __webpack_require__(41); 2647exports.Scroller = Scroller_1.default; 2648var Theme_1 = __webpack_require__(22); 2649exports.Theme = Theme_1.default; 2650var Component_1 = __webpack_require__(230); 2651exports.Component = Component_1.default; 2652var DateComponent_1 = __webpack_require__(231); 2653exports.DateComponent = DateComponent_1.default; 2654var InteractiveDateComponent_1 = __webpack_require__(42); 2655exports.InteractiveDateComponent = InteractiveDateComponent_1.default; 2656var Calendar_1 = __webpack_require__(232); 2657exports.Calendar = Calendar_1.default; 2658var View_1 = __webpack_require__(43); 2659exports.View = View_1.default; 2660var ViewRegistry_1 = __webpack_require__(24); 2661exports.defineView = ViewRegistry_1.defineView; 2662exports.getViewConfig = ViewRegistry_1.getViewConfig; 2663var DayTableMixin_1 = __webpack_require__(60); 2664exports.DayTableMixin = DayTableMixin_1.default; 2665var BusinessHourRenderer_1 = __webpack_require__(61); 2666exports.BusinessHourRenderer = BusinessHourRenderer_1.default; 2667var EventRenderer_1 = __webpack_require__(44); 2668exports.EventRenderer = EventRenderer_1.default; 2669var FillRenderer_1 = __webpack_require__(62); 2670exports.FillRenderer = FillRenderer_1.default; 2671var HelperRenderer_1 = __webpack_require__(63); 2672exports.HelperRenderer = HelperRenderer_1.default; 2673var ExternalDropping_1 = __webpack_require__(233); 2674exports.ExternalDropping = ExternalDropping_1.default; 2675var EventResizing_1 = __webpack_require__(234); 2676exports.EventResizing = EventResizing_1.default; 2677var EventPointing_1 = __webpack_require__(64); 2678exports.EventPointing = EventPointing_1.default; 2679var EventDragging_1 = __webpack_require__(235); 2680exports.EventDragging = EventDragging_1.default; 2681var DateSelecting_1 = __webpack_require__(236); 2682exports.DateSelecting = DateSelecting_1.default; 2683var DateClicking_1 = __webpack_require__(237); 2684exports.DateClicking = DateClicking_1.default; 2685var Interaction_1 = __webpack_require__(14); 2686exports.Interaction = Interaction_1.default; 2687var StandardInteractionsMixin_1 = __webpack_require__(65); 2688exports.StandardInteractionsMixin = StandardInteractionsMixin_1.default; 2689var AgendaView_1 = __webpack_require__(238); 2690exports.AgendaView = AgendaView_1.default; 2691var TimeGrid_1 = __webpack_require__(239); 2692exports.TimeGrid = TimeGrid_1.default; 2693var TimeGridEventRenderer_1 = __webpack_require__(240); 2694exports.TimeGridEventRenderer = TimeGridEventRenderer_1.default; 2695var TimeGridFillRenderer_1 = __webpack_require__(242); 2696exports.TimeGridFillRenderer = TimeGridFillRenderer_1.default; 2697var TimeGridHelperRenderer_1 = __webpack_require__(241); 2698exports.TimeGridHelperRenderer = TimeGridHelperRenderer_1.default; 2699var DayGrid_1 = __webpack_require__(66); 2700exports.DayGrid = DayGrid_1.default; 2701var DayGridEventRenderer_1 = __webpack_require__(243); 2702exports.DayGridEventRenderer = DayGridEventRenderer_1.default; 2703var DayGridFillRenderer_1 = __webpack_require__(245); 2704exports.DayGridFillRenderer = DayGridFillRenderer_1.default; 2705var DayGridHelperRenderer_1 = __webpack_require__(244); 2706exports.DayGridHelperRenderer = DayGridHelperRenderer_1.default; 2707var BasicView_1 = __webpack_require__(67); 2708exports.BasicView = BasicView_1.default; 2709var BasicViewDateProfileGenerator_1 = __webpack_require__(68); 2710exports.BasicViewDateProfileGenerator = BasicViewDateProfileGenerator_1.default; 2711var MonthView_1 = __webpack_require__(246); 2712exports.MonthView = MonthView_1.default; 2713var MonthViewDateProfileGenerator_1 = __webpack_require__(247); 2714exports.MonthViewDateProfileGenerator = MonthViewDateProfileGenerator_1.default; 2715var ListView_1 = __webpack_require__(248); 2716exports.ListView = ListView_1.default; 2717var ListEventPointing_1 = __webpack_require__(250); 2718exports.ListEventPointing = ListEventPointing_1.default; 2719var ListEventRenderer_1 = __webpack_require__(249); 2720exports.ListEventRenderer = ListEventRenderer_1.default; 2721 2722 2723/***/ }), 2724/* 19 */ 2725/***/ (function(module, exports, __webpack_require__) { 2726 2727Object.defineProperty(exports, "__esModule", { value: true });
2728var EventRange_1 = __webpack_require__(50); 2729var EventFootprint_1 = __webpack_require__(34); 2730var ComponentFootprint_1 = __webpack_require__(12); 2731function eventDefsToEventInstances(eventDefs, unzonedRange) { 2732 var eventInstances = []; 2733 var i; 2734 for (i = 0; i < eventDefs.length; i++) { 2735 eventInstances.push.apply(eventInstances, // append 2736 eventDefs[i].buildInstances(unzonedRange)); 2737 } 2738 return eventInstances; 2739} 2740exports.eventDefsToEventInstances = eventDefsToEventInstances; 2741function eventInstanceToEventRange(eventInstance) { 2742 return new EventRange_1.default(eventInstance.dateProfile.unzonedRange, eventInstance.def, eventInstance); 2743} 2744exports.eventInstanceToEventRange = eventInstanceToEventRange; 2745function eventRangeToEventFootprint(eventRange) { 2746 return new EventFootprint_1.default(new ComponentFootprint_1.default(eventRange.unzonedRange, eventRange.eventDef.isAllDay()), eventRange.eventDef, eventRange.eventInstance // might not exist 2747 ); 2748} 2749exports.eventRangeToEventFootprint = eventRangeToEventFootprint; 2750function eventInstanceToUnzonedRange(eventInstance) { 2751 return eventInstance.dateProfile.unzonedRange; 2752} 2753exports.eventInstanceToUnzonedRange = eventInstanceToUnzonedRange; 2754function eventFootprintToComponentFootprint(eventFootprint) { 2755 return eventFootprint.componentFootprint; 2756} 2757exports.eventFootprintToComponentFootprint = eventFootprintToComponentFootprint; 2758 2759 2760/***/ }), 2761/* 20 */ 2762/***/ (function(module, exports, __webpack_require__) { 2763 2764Object.defineProperty(exports, "__esModule", { value: true }); 2765var UnzonedRange_1 = __webpack_require__(5); 2766var util_1 = __webpack_require__(19); 2767var EventRange_1 = __webpack_require__(50); 2768/* 2769It's expected that there will be at least one EventInstance, 2770OR that an explicitEventDef is assigned. 2771*/ 2772var EventInstanceGroup = /** @class */ (function () { 2773 function EventInstanceGroup(eventInstances) { 2774 this.eventInstances = eventInstances || []; 2775 } 2776 EventInstanceGroup.prototype.getAllEventRanges = function (constraintRange) { 2777 if (constraintRange) { 2778 return this.sliceNormalRenderRanges(constraintRange); 2779 } 2780 else { 2781 return this.eventInstances.map(util_1.eventInstanceToEventRange); 2782 } 2783 }; 2784 EventInstanceGroup.prototype.sliceRenderRanges = function (constraintRange) { 2785 if (this.isInverse()) { 2786 return this.sliceInverseRenderRanges(constraintRange); 2787 } 2788 else { 2789 return this.sliceNormalRenderRanges(constraintRange); 2790 } 2791 }; 2792 EventInstanceGroup.prototype.sliceNormalRenderRanges = function (constraintRange) { 2793 var eventInstances = this.eventInstances; 2794 var i; 2795 var eventInstance; 2796 var slicedRange; 2797 var slicedEventRanges = []; 2798 for (i = 0; i < eventInstances.length; i++) { 2799 eventInstance = eventInstances[i]; 2800 slicedRange = eventInstance.dateProfile.unzonedRange.intersect(constraintRange); 2801 if (slicedRange) { 2802 slicedEventRanges.push(new EventRange_1.default(slicedRange, eventInstance.def, eventInstance)); 2803 } 2804 } 2805 return slicedEventRanges; 2806 }; 2807 EventInstanceGroup.prototype.sliceInverseRenderRanges = function (constraintRange) { 2808 var unzonedRanges = this.eventInstances.map(util_1.eventInstanceToUnzonedRange); 2809 var ownerDef = this.getEventDef(); 2810 unzonedRanges = UnzonedRange_1.default.invertRanges(unzonedRanges, constraintRange); 2811 return unzonedRanges.map(function (unzonedRange) { 2812 return new EventRange_1.default(unzonedRange, ownerDef); // don't give an EventInstance 2813 }); 2814 }; 2815 EventInstanceGroup.prototype.isInverse = function () { 2816 return this.getEventDef().hasInverseRendering(); 2817 }; 2818 EventInstanceGroup.prototype.getEventDef = function () { 2819 return this.explicitEventDef || this.eventInstances[0].def; 2820 }; 2821 return EventInstanceGroup; 2822}()); 2823exports.default = EventInstanceGroup; 2824 2825 2826/***/ }), 2827/* 21 */ 2828/***/ (function(module, exports, __webpack_require__) { 2829 2830Object.defineProperty(exports, "__esModule", { value: true });
2831var $ = __webpack_require__(3); 2832var PromiseStub = { 2833 construct: function (executor) { 2834 var deferred = $.Deferred(); 2835 var promise = deferred.promise(); 2836 if (typeof executor === 'function') { 2837 executor(function (val) { 2838 deferred.resolve(val); 2839 attachImmediatelyResolvingThen(promise, val); 2840 }, function () { 2841 deferred.reject(); 2842 attachImmediatelyRejectingThen(promise); 2843 }); 2844 } 2845 return promise; 2846 }, 2847 resolve: function (val) { 2848 var deferred = $.Deferred().resolve(val); 2849 var promise = deferred.promise(); 2850 attachImmediatelyResolvingThen(promise, val); 2851 return promise; 2852 }, 2853 reject: function () { 2854 var deferred = $.Deferred().reject(); 2855 var promise = deferred.promise(); 2856 attachImmediatelyRejectingThen(promise); 2857 return promise; 2858 } 2859}; 2860exports.default = PromiseStub; 2861function attachImmediatelyResolvingThen(promise, val) { 2862 promise.then = function (onResolve) { 2863 if (typeof onResolve === 'function') { 2864 return PromiseStub.resolve(onResolve(val)); 2865 } 2866 return promise; 2867 }; 2868} 2869function attachImmediatelyRejectingThen(promise) { 2870 promise.then = function (onResolve, onReject) { 2871 if (typeof onReject === 'function') { 2872 onReject(); 2873 } 2874 return promise; 2875 }; 2876} 2877 2878 2879/***/ }), 2880/* 22 */ 2881/***/ (function(module, exports, __webpack_require__) { 2882 2883Object.defineProperty(exports, "__esModule", { value: true }); 2884var $ = __webpack_require__(3); 2885var Theme = /** @class */ (function () { 2886 function Theme(optionsManager) { 2887 this.optionsManager = optionsManager; 2888 this.processIconOverride(); 2889 } 2890 Theme.prototype.processIconOverride = function () { 2891 if (this.iconOverrideOption) { 2892 this.setIconOverride(this.optionsManager.get(this.iconOverrideOption)); 2893 } 2894 }; 2895 Theme.prototype.setIconOverride = function (iconOverrideHash) { 2896 var iconClassesCopy; 2897 var buttonName; 2898 if ($.isPlainObject(iconOverrideHash)) { 2899 iconClassesCopy = $.extend({}, this.iconClasses); 2900 for (buttonName in iconOverrideHash) { 2901 iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]); 2902 } 2903 this.iconClasses = iconClassesCopy; 2904 } 2905 else if (iconOverrideHash === false) { 2906 this.iconClasses = {}; 2907 } 2908 }; 2909 Theme.prototype.applyIconOverridePrefix = function (className) { 2910 var prefix = this.iconOverridePrefix; 2911 if (prefix && className.indexOf(prefix) !== 0) { // if not already present 2912 className = prefix + className; 2913 } 2914 return className; 2915 }; 2916 Theme.prototype.getClass = function (key) { 2917 return this.classes[key] || ''; 2918 }; 2919 Theme.prototype.getIconClass = function (buttonName) { 2920 var className = this.iconClasses[buttonName]; 2921 if (className) { 2922 return this.baseIconClass + ' ' + className; 2923 } 2924 return ''; 2925 }; 2926 Theme.prototype.getCustomButtonIconClass = function (customButtonProps) { 2927 var className; 2928 if (this.iconOverrideCustomButtonOption) { 2929 className = customButtonProps[this.iconOverrideCustomButtonOption]; 2930 if (className) { 2931 return this.baseIconClass + ' ' + this.applyIconOverridePrefix(className); 2932 } 2933 } 2934 return ''; 2935 }; 2936 return Theme; 2937}()); 2938exports.default = Theme; 2939Theme.prototype.classes = {}; 2940Theme.prototype.iconClasses = {}; 2941Theme.prototype.baseIconClass = ''; 2942Theme.prototype.iconOverridePrefix = ''; 2943 2944 2945/***/ }), 2946/* 23 */ 2947/***/ (function(module, exports, __webpack_require__) { 2948 2949Object.defineProperty(exports, "__esModule", { value: true }); 2950var $ = __webpack_require__(3); 2951var exportHooks = __webpack_require__(18); 2952var EmitterMixin_1 = __webpack_require__(13); 2953var ListenerMixin_1 = __webpack_require__(7); 2954exportHooks.touchMouseIgnoreWait = 500; 2955var globalEmitter = null; 2956var neededCount = 0; 2957/* 2958Listens to document and window-level user-interaction events, like touch events and mouse events, 2959and fires these events as-is to whoever is observing a GlobalEmitter. 2960Best when used as a singleton via GlobalEmitter.get() 2961 2962Normalizes mouse/touch events. For examples: 2963- ignores the the simulated mouse events that happen after a quick tap: mousemove+mousedown+mouseup+click 2964- compensates for various buggy scenarios where a touchend does not fire 2965*/ 2966var GlobalEmitter = /** @class */ (function () { 2967 function GlobalEmitter() { 2968 this.isTouching = false; 2969 this.mouseIgnoreDepth = 0; 2970 } 2971 // gets the singleton 2972 GlobalEmitter.get = function () { 2973 if (!globalEmitter) { 2974 globalEmitter = new GlobalEmitter(); 2975 globalEmitter.bind(); 2976 } 2977 return globalEmitter; 2978 }; 2979 // called when an object knows it will need a GlobalEmitter in the near future.
2980 GlobalEmitter.needed = function () { 2981 GlobalEmitter.get(); // ensures globalEmitter 2982 neededCount++; 2983 }; 2984 // called when the object that originally called needed() doesn't need a GlobalEmitter anymore. 2985 GlobalEmitter.unneeded = function () { 2986 neededCount--; 2987 if (!neededCount) { // nobody else needs it 2988 globalEmitter.unbind(); 2989 globalEmitter = null; 2990 } 2991 }; 2992 GlobalEmitter.prototype.bind = function () { 2993 var _this = this; 2994 this.listenTo($(document), { 2995 touchstart: this.handleTouchStart, 2996 touchcancel: this.handleTouchCancel, 2997 touchend: this.handleTouchEnd, 2998 mousedown: this.handleMouseDown, 2999 mousemove: this.handleMouseMove, 3000 mouseup: this.handleMouseUp, 3001 click: this.handleClick, 3002 selectstart: this.handleSelectStart, 3003 contextmenu: this.handleContextMenu 3004 }); 3005 // because we need to call preventDefault 3006 // because https://www.chromestatus.com/features/5093566007214080 3007 // TODO: investigate performance because this is a global handler 3008 window.addEventListener('touchmove', this.handleTouchMoveProxy = function (ev) { 3009 _this.handleTouchMove($.Event(ev)); 3010 }, { passive: false } // allows preventDefault() 3011 ); 3012 // attach a handler to get called when ANY scroll action happens on the page. 3013 // this was impossible to do with normal on/off because 'scroll' doesn't bubble. 3014 // http://stackoverflow.com/a/32954565/96342 3015 window.addEventListener('scroll', this.handleScrollProxy = function (ev) { 3016 _this.handleScroll($.Event(ev)); 3017 }, true // useCapture 3018 ); 3019 }; 3020 GlobalEmitter.prototype.unbind = function () { 3021 this.stopListeningTo($(document)); 3022 window.removeEventListener('touchmove', this.handleTouchMoveProxy, { passive: false } // use same options as addEventListener 3023 ); 3024 window.removeEventListener('scroll', this.handleScrollProxy, true // useCapture 3025 ); 3026 }; 3027 // Touch Handlers 3028 // ----------------------------------------------------------------------------------------------------------------- 3029 GlobalEmitter.prototype.handleTouchStart = function (ev) { 3030 // if a previous touch interaction never ended with a touchend, then implicitly end it, 3031 // but since a new touch interaction is about to begin, don't start the mouse ignore period. 3032 this.stopTouch(ev, true); // skipMouseIgnore=true 3033 this.isTouching = true; 3034 this.trigger('touchstart', ev); 3035 }; 3036 GlobalEmitter.prototype.handleTouchMove = function (ev) { 3037 if (this.isTouching) { 3038 this.trigger('touchmove', ev); 3039 } 3040 }; 3041 GlobalEmitter.prototype.handleTouchCancel = function (ev) { 3042 if (this.isTouching) { 3043 this.trigger('touchcancel', ev); 3044 // Have touchcancel fire an artificial touchend. That way, handlers won't need to listen to both. 3045 // If touchend fires later, it won't have any effect b/c isTouching will be false. 3046 this.stopTouch(ev); 3047 } 3048 }; 3049 GlobalEmitter.prototype.handleTouchEnd = function (ev) { 3050 this.stopTouch(ev); 3051 }; 3052 // Mouse Handlers 3053 // ----------------------------------------------------------------------------------------------------------------- 3054 GlobalEmitter.prototype.handleMouseDown = function (ev) { 3055 if (!this.shouldIgnoreMouse()) { 3056 this.trigger('mousedown', ev); 3057 } 3058 }; 3059 GlobalEmitter.prototype.handleMouseMove = function (ev) { 3060 if (!this.shouldIgnoreMouse()) { 3061 this.trigger('mousemove', ev); 3062 } 3063 }; 3064 GlobalEmitter.prototype.handleMouseUp = function (ev) { 3065 if (!this.shouldIgnoreMouse()) { 3066 this.trigger('mouseup', ev); 3067 } 3068 }; 3069 GlobalEmitter.prototype.handleClick = function (ev) { 3070 if (!this.shouldIgnoreMouse()) { 3071 this.trigger('click', ev); 3072 } 3073 }; 3074 // Misc Handlers 3075 // ----------------------------------------------------------------------------------------------------------------- 3076 GlobalEmitter.prototype.handleSelectStart = function (ev) { 3077 this.trigger('selectstart', ev); 3078 }; 3079 GlobalEmitter.prototype.handleContextMenu = function (ev) { 3080 this.trigger('contextmenu', ev); 3081 }; 3082 GlobalEmitter.prototype.handleScroll = function (ev) { 3083 this.trigger('scroll', ev); 3084 }; 3085 // Utils 3086 // ----------------------------------------------------------------------------------------------------------------- 3087 GlobalEmitter.prototype.stopTouch = function (ev, skipMouseIgnore) { 3088 if (skipMouseIgnore === void 0) { skipMouseIgnore = false; } 3089 if (this.isTouching) { 3090 this.isTouching = false; 3091 this.trigger('touchend', ev); 3092 if (!skipMouseIgnore) { 3093 this.startTouchMouseIgnore(); 3094 } 3095 } 3096 }; 3097 GlobalEmitter.prototype.startTouchMouseIgnore = function () { 3098 var _this = this; 3099 var wait = exportHooks.touchMouseIgnoreWait; 3100 if (wait) { 3101 this.mouseIgnoreDepth++; 3102 setTimeout(function () { 3103 _this.mouseIgnoreDepth--; 3104 }, wait); 3105 } 3106 }; 3107 GlobalEmitter.prototype.shouldIgnoreMouse = function () { 3108 return this.isTouching || Boolean(this.mouseIgnoreDepth); 3109 }; 3110 return GlobalEmitter; 3111}()); 3112exports.default = GlobalEmitter; 3113ListenerMixin_1.default.mixInto(GlobalEmitter); 3114EmitterMixin_1.default.mixInto(GlobalEmitter); 3115 3116 3117/***/ }), 3118/* 24 */ 3119/***/ (function(module, exports, __webpack_require__) { 3120 3121Object.defineProperty(exports, "__esModule", { value: true });
3122var exportHooks = __webpack_require__(18); 3123exports.viewHash = {}; 3124exportHooks.views = exports.viewHash; 3125function defineView(viewName, viewConfig) { 3126 exports.viewHash[viewName] = viewConfig; 3127} 3128exports.defineView = defineView; 3129function getViewConfig(viewName) { 3130 return exports.viewHash[viewName]; 3131} 3132exports.getViewConfig = getViewConfig; 3133 3134 3135/***/ }), 3136/* 25 */, 3137/* 26 */, 3138/* 27 */, 3139/* 28 */, 3140/* 29 */, 3141/* 30 */, 3142/* 31 */, 3143/* 32 */ 3144/***/ (function(module, exports, __webpack_require__) { 3145 3146Object.defineProperty(exports, "__esModule", { value: true }); 3147var $ = __webpack_require__(3); 3148var moment = __webpack_require__(0); 3149var exportHooks = __webpack_require__(18); 3150var options_1 = __webpack_require__(33); 3151var util_1 = __webpack_require__(4); 3152exports.localeOptionHash = {}; 3153exportHooks.locales = exports.localeOptionHash; 3154// NOTE: can't guarantee any of these computations will run because not every locale has datepicker 3155// configs, so make sure there are English fallbacks for these in the defaults file. 3156var dpComputableOptions = { 3157 buttonText: function (dpOptions) { 3158 return { 3159 // the translations sometimes wrongly contain HTML entities 3160 prev: util_1.stripHtmlEntities(dpOptions.prevText), 3161 next: util_1.stripHtmlEntities(dpOptions.nextText), 3162 today: util_1.stripHtmlEntities(dpOptions.currentText) 3163 }; 3164 }, 3165 // Produces format strings like "MMMM YYYY" -> "September 2014" 3166 monthYearFormat: function (dpOptions) { 3167 return dpOptions.showMonthAfterYear ? 3168 'YYYY[' + dpOptions.yearSuffix + '] MMMM' : 3169 'MMMM YYYY[' + dpOptions.yearSuffix + ']'; 3170 } 3171}; 3172var momComputableOptions = { 3173 // Produces format strings like "ddd M/D" -> "Fri 9/15" 3174 dayOfMonthFormat: function (momOptions, fcOptions) { 3175 var format = momOptions.longDateFormat('l'); // for the format like "M/D/YYYY" 3176 // strip the year off the edge, as well as other misc non-whitespace chars 3177 format = format.replace(/^Y+[^\w\s]*|[^\w\s]*Y+$/g, ''); 3178 if (fcOptions.isRTL) { 3179 format += ' ddd'; // for RTL, add day-of-week to end 3180 } 3181 else { 3182 format = 'ddd ' + format; // for LTR, add day-of-week to beginning 3183 } 3184 return format; 3185 }, 3186 // Produces format strings like "h:mma" -> "6:00pm" 3187 mediumTimeFormat: function (momOptions) { 3188 return momOptions.longDateFormat('LT') 3189 .replace(/\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand 3190 }, 3191 // Produces format strings like "h(:mm)a" -> "6pm" / "6:30pm" 3192 smallTimeFormat: function (momOptions) { 3193 return momOptions.longDateFormat('LT') 3194 .replace(':mm', '(:mm)') 3195 .replace(/(\Wmm)$/, '($1)') // like above, but for foreign locales 3196 .replace(/\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand 3197 }, 3198 // Produces format strings like "h(:mm)t" -> "6p" / "6:30p" 3199 extraSmallTimeFormat: function (momOptions) { 3200 return momOptions.longDateFormat('LT') 3201 .replace(':mm', '(:mm)') 3202 .replace(/(\Wmm)$/, '($1)') // like above, but for foreign locales 3203 .replace(/\s*a$/i, 't'); // convert to AM/PM/am/pm to lowercase one-letter. remove any spaces beforehand 3204 }, 3205 // Produces format strings like "ha" / "H" -> "6pm" / "18" 3206 hourFormat: function (momOptions) { 3207 return momOptions.longDateFormat('LT') 3208 .replace(':mm', '') 3209 .replace(/(\Wmm)$/, '') // like above, but for foreign locales 3210 .replace(/\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand 3211 }, 3212 // Produces format strings like "h:mm" -> "6:30" (with no AM/PM) 3213 noMeridiemTimeFormat: function (momOptions) { 3214 return momOptions.longDateFormat('LT') 3215 .replace(/\s*a$/i, ''); // remove trailing AM/PM 3216 } 3217}; 3218// options that should be computed off live calendar options (considers override options) 3219// TODO: best place for this? related to locale? 3220// TODO: flipping text based on isRTL is a bad idea because the CSS `direction` might want to handle it 3221var instanceComputableOptions = {
3222 // Produces format strings for results like "Mo 16" 3223 smallDayDateFormat: function (options) { 3224 return options.isRTL ? 3225 'D dd' : 3226 'dd D'; 3227 }, 3228 // Produces format strings for results like "Wk 5" 3229 weekFormat: function (options) { 3230 return options.isRTL ? 3231 'w[ ' + options.weekNumberTitle + ']' : 3232 '[' + options.weekNumberTitle + ' ]w'; 3233 }, 3234 // Produces format strings for results like "Wk5" 3235 smallWeekFormat: function (options) { 3236 return options.isRTL ? 3237 'w[' + options.weekNumberTitle + ']' : 3238 '[' + options.weekNumberTitle + ']w'; 3239 } 3240}; 3241// TODO: make these computable properties in optionsManager 3242function populateInstanceComputableOptions(options) { 3243 $.each(instanceComputableOptions, function (name, func) { 3244 if (options[name] == null) { 3245 options[name] = func(options); 3246 } 3247 }); 3248} 3249exports.populateInstanceComputableOptions = populateInstanceComputableOptions; 3250// Initialize jQuery UI datepicker translations while using some of the translations 3251// Will set this as the default locales for datepicker. 3252function datepickerLocale(localeCode, dpLocaleCode, dpOptions) { 3253 // get the FullCalendar internal option hash for this locale. create if necessary 3254 var fcOptions = exports.localeOptionHash[localeCode] || (exports.localeOptionHash[localeCode] = {}); 3255 // transfer some simple options from datepicker to fc 3256 fcOptions.isRTL = dpOptions.isRTL; 3257 fcOptions.weekNumberTitle = dpOptions.weekHeader; 3258 // compute some more complex options from datepicker 3259 $.each(dpComputableOptions, function (name, func) { 3260 fcOptions[name] = func(dpOptions); 3261 }); 3262 var jqDatePicker = $.datepicker; 3263 // is jQuery UI Datepicker is on the page? 3264 if (jqDatePicker) { 3265 // Register the locale data. 3266 // FullCalendar and MomentJS use locale codes like "pt-br" but Datepicker 3267 // does it like "pt-BR" or if it doesn't have the locale, maybe just "pt". 3268 // Make an alias so the locale can be referenced either way. 3269 jqDatePicker.regional[dpLocaleCode] = 3270 jqDatePicker.regional[localeCode] = // alias 3271 dpOptions; 3272 // Alias 'en' to the default locale data. Do this every time. 3273 jqDatePicker.regional.en = jqDatePicker.regional['']; 3274 // Set as Datepicker's global defaults. 3275 jqDatePicker.setDefaults(dpOptions); 3276 } 3277} 3278exports.datepickerLocale = datepickerLocale; 3279// Sets FullCalendar-specific translations. Will set the locales as the global default. 3280function locale(localeCode, newFcOptions) { 3281 var fcOptions; 3282 var momOptions; 3283 // get the FullCalendar internal option hash for this locale. create if necessary 3284 fcOptions = exports.localeOptionHash[localeCode] || (exports.localeOptionHash[localeCode] = {}); 3285 // provided new options for this locales? merge them in 3286 if (newFcOptions) { 3287 fcOptions = exports.localeOptionHash[localeCode] = options_1.mergeOptions([fcOptions, newFcOptions]); 3288 } 3289 // compute locale options that weren't defined. 3290 // always do this. newFcOptions can be undefined when initializing from i18n file, 3291 // so no way to tell if this is an initialization or a default-setting. 3292 momOptions = getMomentLocaleData(localeCode); // will fall back to en 3293 $.each(momComputableOptions, function (name, func) { 3294 if (fcOptions[name] == null) { 3295 fcOptions[name] = (func)(momOptions, fcOptions); 3296 } 3297 }); 3298 // set it as the default locale for FullCalendar 3299 options_1.globalDefaults.locale = localeCode; 3300} 3301exports.locale = locale; 3302// Returns moment's internal locale data. If doesn't exist, returns English. 3303function getMomentLocaleData(localeCode) { 3304 return moment.localeData(localeCode) || moment.localeData('en'); 3305} 3306exports.getMomentLocaleData = getMomentLocaleData; 3307// Initialize English by forcing computation of moment-derived options. 3308// Also, sets it as the default. 3309locale('en', options_1.englishDefaults); 3310 3311 3312/***/ }), 3313/* 33 */ 3314/***/ (function(module, exports, __webpack_require__) { 3315 3316Object.defineProperty(exports, "__esModule", { value: true });
3317var util_1 = __webpack_require__(4); 3318exports.globalDefaults = { 3319 titleRangeSeparator: ' \u2013 ', 3320 monthYearFormat: 'MMMM YYYY', 3321 defaultTimedEventDuration: '02:00:00', 3322 defaultAllDayEventDuration: { days: 1 }, 3323 forceEventDuration: false, 3324 nextDayThreshold: '09:00:00', 3325 // display 3326 columnHeader: true, 3327 defaultView: 'month', 3328 aspectRatio: 1.35, 3329 header: { 3330 left: 'title', 3331 center: '', 3332 right: 'today prev,next' 3333 }, 3334 weekends: true, 3335 weekNumbers: false, 3336 weekNumberTitle: 'W', 3337 weekNumberCalculation: 'local', 3338 // editable: false, 3339 // nowIndicator: false, 3340 scrollTime: '06:00:00', 3341 minTime: '00:00:00', 3342 maxTime: '24:00:00', 3343 showNonCurrentDates: true, 3344 // event ajax 3345 lazyFetching: true, 3346 startParam: 'start', 3347 endParam: 'end', 3348 timezoneParam: 'timezone', 3349 timezone: false, 3350 // allDayDefault: undefined, 3351 // locale 3352 locale: null, 3353 isRTL: false, 3354 buttonText: { 3355 prev: 'prev', 3356 next: 'next', 3357 prevYear: 'prev year', 3358 nextYear: 'next year', 3359 year: 'year', 3360 today: 'today', 3361 month: 'month', 3362 week: 'week', 3363 day: 'day' 3364 }, 3365 // buttonIcons: null, 3366 allDayText: 'all-day', 3367 // allows setting a min-height to the event segment to prevent short events overlapping each other 3368 agendaEventMinHeight: 0, 3369 // jquery-ui theming 3370 theme: false, 3371 // themeButtonIcons: null, 3372 // eventResizableFromStart: false, 3373 dragOpacity: .75, 3374 dragRevertDuration: 500, 3375 dragScroll: true, 3376 // selectable: false, 3377 unselectAuto: true, 3378 // selectMinDistance: 0, 3379 dropAccept: '*', 3380 eventOrder: 'title', 3381 // eventRenderWait: null, 3382 eventLimit: false, 3383 eventLimitText: 'more', 3384 eventLimitClick: 'popover', 3385 dayPopoverFormat: 'LL', 3386 handleWindowResize: true, 3387 windowResizeDelay: 100, 3388 longPressDelay: 1000 3389}; 3390exports.englishDefaults = { 3391 dayPopoverFormat: 'dddd, MMMM D' 3392}; 3393exports.rtlDefaults = { 3394 header: { 3395 left: 'next,prev today', 3396 center: '', 3397 right: 'title' 3398 }, 3399 buttonIcons: { 3400 prev: 'right-single-arrow', 3401 next: 'left-single-arrow', 3402 prevYear: 'right-double-arrow', 3403 nextYear: 'left-double-arrow' 3404 }, 3405 themeButtonIcons: { 3406 prev: 'circle-triangle-e', 3407 next: 'circle-triangle-w', 3408 nextYear: 'seek-prev', 3409 prevYear: 'seek-next' 3410 } 3411}; 3412var complexOptions = [ 3413 'header', 3414 'footer', 3415 'buttonText', 3416 'buttonIcons', 3417 'themeButtonIcons' 3418]; 3419// Merges an array of option objects into a single object 3420function mergeOptions(optionObjs) { 3421 return util_1.mergeProps(optionObjs, complexOptions); 3422} 3423exports.mergeOptions = mergeOptions; 3424 3425 3426/***/ }), 3427/* 34 */ 3428/***/ (function(module, exports) { 3429 3430Object.defineProperty(exports, "__esModule", { value: true }); 3431var EventFootprint = /** @class */ (function () { 3432 function EventFootprint(componentFootprint, eventDef, eventInstance) { 3433 this.componentFootprint = componentFootprint; 3434 this.eventDef = eventDef; 3435 if (eventInstance) { 3436 this.eventInstance = eventInstance; 3437 } 3438 } 3439 EventFootprint.prototype.getEventLegacy = function () { 3440 return (this.eventInstance || this.eventDef).toLegacy(); 3441 }; 3442 return EventFootprint; 3443}()); 3444exports.default = EventFootprint; 3445 3446 3447/***/ }), 3448/* 35 */ 3449/***/ (function(module, exports, __webpack_require__) { 3450 3451Object.defineProperty(exports, "__esModule", { value: true }); 3452var tslib_1 = __webpack_require__(2); 3453var util_1 = __webpack_require__(4); 3454// Class that all other classes will inherit from 3455var Class = /** @class */ (function () { 3456 function Class() { 3457 } 3458 // Called on a class to create a subclass. 3459 // LIMITATION: cannot provide a constructor! 3460 Class.extend = function (members) { 3461 var SubClass = /** @class */ (function (_super) { 3462 tslib_1.__extends(SubClass, _super); 3463 function SubClass() { 3464 return _super !== null && _super.apply(this, arguments) || this; 3465 } 3466 return SubClass; 3467 }(this)); 3468 util_1.copyOwnProps(members, SubClass.prototype); 3469 return SubClass; 3470 }; 3471 // Adds new member variables/methods to the class's prototype. 3472 // Can be called with another class, or a plain object hash containing new members. 3473 Class.mixin = function (members) { 3474 util_1.copyOwnProps(members, this.prototype); 3475 }; 3476 return Class; 3477}()); 3478exports.default = Class; 3479 3480 3481/***/ }), 3482/* 36 */ 3483/***/ (function(module, exports, __webpack_require__) { 3484 3485Object.defineProperty(exports, "__esModule", { value: true });
3486var moment = __webpack_require__(0); 3487var util_1 = __webpack_require__(4); 3488var SingleEventDef_1 = __webpack_require__(9); 3489var RecurringEventDef_1 = __webpack_require__(54); 3490exports.default = { 3491 parse: function (eventInput, source) { 3492 if (util_1.isTimeString(eventInput.start) || moment.isDuration(eventInput.start) || 3493 util_1.isTimeString(eventInput.end) || moment.isDuration(eventInput.end)) { 3494 return RecurringEventDef_1.default.parse(eventInput, source); 3495 } 3496 else { 3497 return SingleEventDef_1.default.parse(eventInput, source); 3498 } 3499 } 3500}; 3501 3502 3503/***/ }), 3504/* 37 */ 3505/***/ (function(module, exports, __webpack_require__) { 3506 3507Object.defineProperty(exports, "__esModule", { value: true }); 3508var $ = __webpack_require__(3); 3509var ParsableModelMixin_1 = __webpack_require__(52); 3510var EventDef = /** @class */ (function () { 3511 function EventDef(source) { 3512 this.source = source; 3513 this.className = []; 3514 this.miscProps = {}; 3515 } 3516 EventDef.parse = function (rawInput, source) { 3517 var def = new this(source); 3518 if (def.applyProps(rawInput)) { 3519 return def; 3520 } 3521 return false; 3522 }; 3523 EventDef.normalizeId = function (id) { 3524 return String(id); 3525 }; 3526 EventDef.generateId = function () { 3527 return '_fc' + (EventDef.uuid++); 3528 }; 3529 EventDef.prototype.clone = function () { 3530 var copy = new this.constructor(this.source); 3531 copy.id = this.id; 3532 copy.rawId = this.rawId; 3533 copy.uid = this.uid; // not really unique anymore :( 3534 EventDef.copyVerbatimStandardProps(this, copy); 3535 copy.className = this.className.slice(); // copy 3536 copy.miscProps = $.extend({}, this.miscProps); 3537 return copy; 3538 }; 3539 EventDef.prototype.hasInverseRendering = function () { 3540 return this.getRendering() === 'inverse-background'; 3541 }; 3542 EventDef.prototype.hasBgRendering = function () { 3543 var rendering = this.getRendering(); 3544 return rendering === 'inverse-background' || rendering === 'background'; 3545 }; 3546 EventDef.prototype.getRendering = function () { 3547 if (this.rendering != null) { 3548 return this.rendering; 3549 } 3550 return this.source.rendering; 3551 }; 3552 EventDef.prototype.getConstraint = function () { 3553 if (this.constraint != null) { 3554 return this.constraint; 3555 } 3556 if (this.source.constraint != null) { 3557 return this.source.constraint; 3558 } 3559 return this.source.calendar.opt('eventConstraint'); // what about View option? 3560 }; 3561 EventDef.prototype.getOverlap = function () { 3562 if (this.overlap != null) { 3563 return this.overlap; 3564 } 3565 if (this.source.overlap != null) { 3566 return this.source.overlap; 3567 } 3568 return this.source.calendar.opt('eventOverlap'); // what about View option? 3569 }; 3570 EventDef.prototype.isStartExplicitlyEditable = function () { 3571 if (this.startEditable != null) { 3572 return this.startEditable; 3573 } 3574 return this.source.startEditable; 3575 }; 3576 EventDef.prototype.isDurationExplicitlyEditable = function () { 3577 if (this.durationEditable != null) { 3578 return this.durationEditable; 3579 } 3580 return this.source.durationEditable; 3581 }; 3582 EventDef.prototype.isExplicitlyEditable = function () { 3583 if (this.editable != null) { 3584 return this.editable; 3585 } 3586 return this.source.editable; 3587 }; 3588 EventDef.prototype.toLegacy = function () { 3589 var obj = $.extend({}, this.miscProps); 3590 obj._id = this.uid; 3591 obj.source = this.source; 3592 obj.className = this.className.slice(); // copy 3593 obj.allDay = this.isAllDay(); 3594 if (this.rawId != null) { 3595 obj.id = this.rawId; 3596 } 3597 EventDef.copyVerbatimStandardProps(this, obj); 3598 return obj; 3599 }; 3600 EventDef.prototype.applyManualStandardProps = function (rawProps) { 3601 if (rawProps.id != null) { 3602 this.id = EventDef.normalizeId((this.rawId = rawProps.id)); 3603 } 3604 else { 3605 this.id = EventDef.generateId(); 3606 } 3607 if (rawProps._id != null) { // accept this prop, even tho somewhat internal 3608 this.uid = String(rawProps._id); 3609 } 3610 else { 3611 this.uid = EventDef.generateId(); 3612 } 3613 // TODO: converge with EventSource 3614 if ($.isArray(rawProps.className)) { 3615 this.className = rawProps.className; 3616 } 3617 if (typeof rawProps.className === 'string') { 3618 this.className = rawProps.className.split(/\s+/); 3619 } 3620 return true; 3621 }; 3622 EventDef.prototype.applyMiscProps = function (rawProps) { 3623 $.extend(this.miscProps, rawProps); 3624 }; 3625 EventDef.uuid = 0; 3626 EventDef.defineStandardProps = ParsableModelMixin_1.default.defineStandardProps; 3627 EventDef.copyVerbatimStandardProps = ParsableModelMixin_1.default.copyVerbatimStandardProps; 3628 return EventDef; 3629}()); 3630exports.default = EventDef; 3631ParsableModelMixin_1.default.mixInto(EventDef); 3632EventDef.defineStandardProps({ 3633 // not automatically assigned (`false`) 3634 _id: false, 3635 id: false, 3636 className: false, 3637 source: false, 3638 // automatically assigned (`true`) 3639 title: true, 3640 url: true, 3641 rendering: true, 3642 constraint: true, 3643 overlap: true, 3644 editable: true, 3645 startEditable: true, 3646 durationEditable: true, 3647 color: true, 3648 backgroundColor: true, 3649 borderColor: true, 3650 textColor: true 3651}); 3652 3653 3654/***/ }), 3655/* 38 */
3656/***/ (function(module, exports) { 3657 3658Object.defineProperty(exports, "__esModule", { value: true }); 3659exports.default = { 3660 sourceClasses: [], 3661 registerClass: function (EventSourceClass) { 3662 this.sourceClasses.unshift(EventSourceClass); // give highest priority 3663 }, 3664 parse: function (rawInput, calendar) { 3665 var sourceClasses = this.sourceClasses; 3666 var i; 3667 var eventSource; 3668 for (i = 0; i < sourceClasses.length; i++) { 3669 eventSource = sourceClasses[i].parse(rawInput, calendar); 3670 if (eventSource) { 3671 return eventSource; 3672 } 3673 } 3674 } 3675}; 3676 3677 3678/***/ }), 3679/* 39 */ 3680/***/ (function(module, exports, __webpack_require__) { 3681 3682Object.defineProperty(exports, "__esModule", { value: true }); 3683var util_1 = __webpack_require__(4); 3684var EventDateProfile_1 = __webpack_require__(16); 3685var EventDef_1 = __webpack_require__(37); 3686var EventDefDateMutation_1 = __webpack_require__(40); 3687var SingleEventDef_1 = __webpack_require__(9); 3688var EventDefMutation = /** @class */ (function () { 3689 function EventDefMutation() { 3690 } 3691 EventDefMutation.createFromRawProps = function (eventInstance, rawProps, largeUnit) { 3692 var eventDef = eventInstance.def; 3693 var dateProps = {}; 3694 var standardProps = {}; 3695 var miscProps = {}; 3696 var verbatimStandardProps = {}; 3697 var eventDefId = null; 3698 var className = null; 3699 var propName; 3700 var dateProfile; 3701 var dateMutation; 3702 var defMutation; 3703 for (propName in rawProps) { 3704 if (EventDateProfile_1.default.isStandardProp(propName)) { 3705 dateProps[propName] = rawProps[propName]; 3706 } 3707 else if (eventDef.isStandardProp(propName)) { 3708 standardProps[propName] = rawProps[propName]; 3709 } 3710 else if (eventDef.miscProps[propName] !== rawProps[propName]) { // only if changed 3711 miscProps[propName] = rawProps[propName]; 3712 } 3713 } 3714 dateProfile = EventDateProfile_1.default.parse(dateProps, eventDef.source); 3715 if (dateProfile) { // no failure? 3716 dateMutation = EventDefDateMutation_1.default.createFromDiff(eventInstance.dateProfile, dateProfile, largeUnit); 3717 } 3718 if (standardProps.id !== eventDef.id) { 3719 eventDefId = standardProps.id; // only apply if there's a change 3720 } 3721 if (!util_1.isArraysEqual(standardProps.className, eventDef.className)) { 3722 className = standardProps.className; // only apply if there's a change 3723 } 3724 EventDef_1.default.copyVerbatimStandardProps(standardProps, // src 3725 verbatimStandardProps // dest 3726 ); 3727 defMutation = new EventDefMutation(); 3728 defMutation.eventDefId = eventDefId; 3729 defMutation.className = className; 3730 defMutation.verbatimStandardProps = verbatimStandardProps; 3731 defMutation.miscProps = miscProps; 3732 if (dateMutation) { 3733 defMutation.dateMutation = dateMutation; 3734 } 3735 return defMutation; 3736 }; 3737 /* 3738 eventDef assumed to be a SingleEventDef. 3739 returns an undo function. 3740 */ 3741 EventDefMutation.prototype.mutateSingle = function (eventDef) { 3742 var origDateProfile; 3743 if (this.dateMutation) { 3744 origDateProfile = eventDef.dateProfile; 3745 eventDef.dateProfile = this.dateMutation.buildNewDateProfile(origDateProfile, eventDef.source.calendar); 3746 } 3747 // can't undo 3748 // TODO: more DRY with EventDef::applyManualStandardProps 3749 if (this.eventDefId != null) { 3750 eventDef.id = EventDef_1.default.normalizeId((eventDef.rawId = this.eventDefId)); 3751 } 3752 // can't undo 3753 // TODO: more DRY with EventDef::applyManualStandardProps 3754 if (this.className) { 3755 eventDef.className = this.className; 3756 } 3757 // can't undo 3758 if (this.verbatimStandardProps) { 3759 SingleEventDef_1.default.copyVerbatimStandardProps(this.verbatimStandardProps, // src 3760 eventDef // dest 3761 ); 3762 } 3763 // can't undo 3764 if (this.miscProps) { 3765 eventDef.applyMiscProps(this.miscProps); 3766 } 3767 if (origDateProfile) { 3768 return function () { 3769 eventDef.dateProfile = origDateProfile; 3770 }; 3771 } 3772 else { 3773 return function () { }; 3774 } 3775 }; 3776 EventDefMutation.prototype.setDateMutation = function (dateMutation) { 3777 if (dateMutation && !dateMutation.isEmpty()) { 3778 this.dateMutation = dateMutation; 3779 } 3780 else { 3781 this.dateMutation = null; 3782 } 3783 }; 3784 EventDefMutation.prototype.isEmpty = function () { 3785 return !this.dateMutation; 3786 }; 3787 return EventDefMutation; 3788}()); 3789exports.default = EventDefMutation; 3790 3791 3792/***/ }), 3793/* 40 */ 3794/***/ (function(module, exports, __webpack_require__) { 3795 3796Object.defineProperty(exports, "__esModule", { value: true });
3797var util_1 = __webpack_require__(4); 3798var EventDateProfile_1 = __webpack_require__(16); 3799var EventDefDateMutation = /** @class */ (function () { 3800 function EventDefDateMutation() { 3801 this.clearEnd = false; 3802 this.forceTimed = false; 3803 this.forceAllDay = false; 3804 } 3805 EventDefDateMutation.createFromDiff = function (dateProfile0, dateProfile1, largeUnit) { 3806 var clearEnd = dateProfile0.end && !dateProfile1.end; 3807 var forceTimed = dateProfile0.isAllDay() && !dateProfile1.isAllDay(); 3808 var forceAllDay = !dateProfile0.isAllDay() && dateProfile1.isAllDay(); 3809 var dateDelta; 3810 var endDiff; 3811 var endDelta; 3812 var mutation; 3813 // subtracts the dates in the appropriate way, returning a duration 3814 function subtractDates(date1, date0) { 3815 if (largeUnit) { 3816 return util_1.diffByUnit(date1, date0, largeUnit); // poorly named 3817 } 3818 else if (dateProfile1.isAllDay()) { 3819 return util_1.diffDay(date1, date0); // poorly named 3820 } 3821 else { 3822 return util_1.diffDayTime(date1, date0); // poorly named 3823 } 3824 } 3825 dateDelta = subtractDates(dateProfile1.start, dateProfile0.start); 3826 if (dateProfile1.end) { 3827 // use unzonedRanges because dateProfile0.end might be null 3828 endDiff = subtractDates(dateProfile1.unzonedRange.getEnd(), dateProfile0.unzonedRange.getEnd()); 3829 endDelta = endDiff.subtract(dateDelta); 3830 } 3831 mutation = new EventDefDateMutation(); 3832 mutation.clearEnd = clearEnd; 3833 mutation.forceTimed = forceTimed; 3834 mutation.forceAllDay = forceAllDay; 3835 mutation.setDateDelta(dateDelta); 3836 mutation.setEndDelta(endDelta); 3837 return mutation; 3838 }; 3839 /* 3840 returns an undo function. 3841 */ 3842 EventDefDateMutation.prototype.buildNewDateProfile = function (eventDateProfile, calendar) { 3843 var start = eventDateProfile.start.clone(); 3844 var end = null; 3845 var shouldRezone = false; 3846 if (eventDateProfile.end && !this.clearEnd) { 3847 end = eventDateProfile.end.clone(); 3848 } 3849 else if (this.endDelta && !end) { 3850 end = calendar.getDefaultEventEnd(eventDateProfile.isAllDay(), start); 3851 } 3852 if (this.forceTimed) { 3853 shouldRezone = true; 3854 if (!start.hasTime()) { 3855 start.time(0); 3856 } 3857 if (end && !end.hasTime()) { 3858 end.time(0); 3859 } 3860 } 3861 else if (this.forceAllDay) { 3862 if (start.hasTime()) { 3863 start.stripTime(); 3864 } 3865 if (end && end.hasTime()) { 3866 end.stripTime(); 3867 } 3868 } 3869 if (this.dateDelta) { 3870 shouldRezone = true; 3871 start.add(this.dateDelta); 3872 if (end) { 3873 end.add(this.dateDelta); 3874 } 3875 } 3876 // do this before adding startDelta to start, so we can work off of start 3877 if (this.endDelta) { 3878 shouldRezone = true; 3879 end.add(this.endDelta); 3880 } 3881 if (this.startDelta) { 3882 shouldRezone = true; 3883 start.add(this.startDelta); 3884 } 3885 if (shouldRezone) { 3886 start = calendar.applyTimezone(start); 3887 if (end) { 3888 end = calendar.applyTimezone(end); 3889 } 3890 } 3891 // TODO: okay to access calendar option? 3892 if (!end && calendar.opt('forceEventDuration')) { 3893 end = calendar.getDefaultEventEnd(eventDateProfile.isAllDay(), start); 3894 } 3895 return new EventDateProfile_1.default(start, end, calendar); 3896 }; 3897 EventDefDateMutation.prototype.setDateDelta = function (dateDelta) { 3898 if (dateDelta && dateDelta.valueOf()) { 3899 this.dateDelta = dateDelta; 3900 } 3901 else { 3902 this.dateDelta = null; 3903 } 3904 }; 3905 EventDefDateMutation.prototype.setStartDelta = function (startDelta) { 3906 if (startDelta && startDelta.valueOf()) { 3907 this.startDelta = startDelta; 3908 } 3909 else { 3910 this.startDelta = null; 3911 } 3912 }; 3913 EventDefDateMutation.prototype.setEndDelta = function (endDelta) { 3914 if (endDelta && endDelta.valueOf()) { 3915 this.endDelta = endDelta; 3916 } 3917 else { 3918 this.endDelta = null; 3919 } 3920 }; 3921 EventDefDateMutation.prototype.isEmpty = function () { 3922 return !this.clearEnd && !this.forceTimed && !this.forceAllDay && 3923 !this.dateDelta && !this.startDelta && !this.endDelta; 3924 }; 3925 return EventDefDateMutation; 3926}()); 3927exports.default = EventDefDateMutation; 3928 3929 3930/***/ }), 3931/* 41 */ 3932/***/ (function(module, exports, __webpack_require__) { 3933 3934Object.defineProperty(exports, "__esModule", { value: true });
3935var tslib_1 = __webpack_require__(2); 3936var $ = __webpack_require__(3); 3937var util_1 = __webpack_require__(4); 3938var Class_1 = __webpack_require__(35); 3939/* 3940Embodies a div that has potential scrollbars 3941*/ 3942var Scroller = /** @class */ (function (_super) { 3943 tslib_1.__extends(Scroller, _super); 3944 function Scroller(options) { 3945 var _this = _super.call(this) || this; 3946 options = options || {}; 3947 _this.overflowX = options.overflowX || options.overflow || 'auto'; 3948 _this.overflowY = options.overflowY || options.overflow || 'auto'; 3949 return _this; 3950 } 3951 Scroller.prototype.render = function () { 3952 this.el = this.renderEl(); 3953 this.applyOverflow(); 3954 }; 3955 Scroller.prototype.renderEl = function () { 3956 return (this.scrollEl = $('<div class="fc-scroller"></div>')); 3957 }; 3958 // sets to natural height, unlocks overflow 3959 Scroller.prototype.clear = function () { 3960 this.setHeight('auto'); 3961 this.applyOverflow(); 3962 }; 3963 Scroller.prototype.destroy = function () { 3964 this.el.remove(); 3965 }; 3966 // Overflow 3967 // ----------------------------------------------------------------------------------------------------------------- 3968 Scroller.prototype.applyOverflow = function () { 3969 this.scrollEl.css({ 3970 'overflow-x': this.overflowX, 3971 'overflow-y': this.overflowY 3972 }); 3973 }; 3974 // Causes any 'auto' overflow values to resolves to 'scroll' or 'hidden'. 3975 // Useful for preserving scrollbar widths regardless of future resizes. 3976 // Can pass in scrollbarWidths for optimization. 3977 Scroller.prototype.lockOverflow = function (scrollbarWidths) { 3978 var overflowX = this.overflowX; 3979 var overflowY = this.overflowY;
3980 scrollbarWidths = scrollbarWidths || this.getScrollbarWidths(); 3981 if (overflowX === 'auto') { 3982 overflowX = (scrollbarWidths.top || scrollbarWidths.bottom || // horizontal scrollbars? 3983 // OR scrolling pane with massless scrollbars? 3984 this.scrollEl[0].scrollWidth - 1 > this.scrollEl[0].clientWidth 3985 // subtract 1 because of IE off-by-one issue 3986 ) ? 'scroll' : 'hidden'; 3987 } 3988 if (overflowY === 'auto') { 3989 overflowY = (scrollbarWidths.left || scrollbarWidths.right || // vertical scrollbars? 3990 // OR scrolling pane with massless scrollbars? 3991 this.scrollEl[0].scrollHeight - 1 > this.scrollEl[0].clientHeight 3992 // subtract 1 because of IE off-by-one issue 3993 ) ? 'scroll' : 'hidden'; 3994 } 3995 this.scrollEl.css({ 'overflow-x': overflowX, 'overflow-y': overflowY }); 3996 }; 3997 // Getters / Setters 3998 // ----------------------------------------------------------------------------------------------------------------- 3999 Scroller.prototype.setHeight = function (height) { 4000 this.scrollEl.height(height); 4001 }; 4002 Scroller.prototype.getScrollTop = function () { 4003 return this.scrollEl.scrollTop(); 4004 }; 4005 Scroller.prototype.setScrollTop = function (top) { 4006 this.scrollEl.scrollTop(top); 4007 }; 4008 Scroller.prototype.getClientWidth = function () { 4009 return this.scrollEl[0].clientWidth; 4010 }; 4011 Scroller.prototype.getClientHeight = function () { 4012 return this.scrollEl[0].clientHeight; 4013 }; 4014 Scroller.prototype.getScrollbarWidths = function () { 4015 return util_1.getScrollbarWidths(this.scrollEl); 4016 }; 4017 return Scroller; 4018}(Class_1.default)); 4019exports.default = Scroller; 4020 4021 4022/***/ }), 4023/* 42 */ 4024/***/ (function(module, exports, __webpack_require__) { 4025 4026Object.defineProperty(exports, "__esModule", { value: true }); 4027var tslib_1 = __webpack_require__(2); 4028var $ = __webpack_require__(3); 4029var util_1 = __webpack_require__(4); 4030var DateComponent_1 = __webpack_require__(231); 4031var GlobalEmitter_1 = __webpack_require__(23); 4032var InteractiveDateComponent = /** @class */ (function (_super) { 4033 tslib_1.__extends(InteractiveDateComponent, _super); 4034 function InteractiveDateComponent(_view, _options) { 4035 var _this = _super.call(this, _view, _options) || this; 4036 // self-config, overridable by subclasses 4037 _this.segSelector = '.fc-event-container > *'; // what constitutes an event element? 4038 if (_this.dateSelectingClass) { 4039 _this.dateClicking = new _this.dateClickingClass(_this); 4040 } 4041 if (_this.dateSelectingClass) { 4042 _this.dateSelecting = new _this.dateSelectingClass(_this); 4043 } 4044 if (_this.eventPointingClass) { 4045 _this.eventPointing = new _this.eventPointingClass(_this); 4046 } 4047 if (_this.eventDraggingClass && _this.eventPointing) { 4048 _this.eventDragging = new _this.eventDraggingClass(_this, _this.eventPointing); 4049 } 4050 if (_this.eventResizingClass && _this.eventPointing) { 4051 _this.eventResizing = new _this.eventResizingClass(_this, _this.eventPointing); 4052 } 4053 if (_this.externalDroppingClass) { 4054 _this.externalDropping = new _this.externalDroppingClass(_this); 4055 } 4056 return _this; 4057 } 4058 // Sets the container element that the view should render inside of, does global DOM-related initializations, 4059 // and renders all the non-date-related content inside. 4060 InteractiveDateComponent.prototype.setElement = function (el) { 4061 _super.prototype.setElement.call(this, el); 4062 if (this.dateClicking) { 4063 this.dateClicking.bindToEl(el); 4064 } 4065 if (this.dateSelecting) { 4066 this.dateSelecting.bindToEl(el); 4067 } 4068 this.bindAllSegHandlersToEl(el); 4069 }; 4070 InteractiveDateComponent.prototype.removeElement = function () { 4071 this.endInteractions(); 4072 _super.prototype.removeElement.call(this); 4073 }; 4074 InteractiveDateComponent.prototype.executeEventUnrender = function () { 4075 this.endInteractions(); 4076 _super.prototype.executeEventUnrender.call(this); 4077 }; 4078 InteractiveDateComponent.prototype.bindGlobalHandlers = function () { 4079 _super.prototype.bindGlobalHandlers.call(this); 4080 if (this.externalDropping) { 4081 this.externalDropping.bindToDocument(); 4082 } 4083 }; 4084 InteractiveDateComponent.prototype.unbindGlobalHandlers = function () { 4085 _super.prototype.unbindGlobalHandlers.call(this); 4086 if (this.externalDropping) { 4087 this.externalDropping.unbindFromDocument(); 4088 } 4089 }; 4090 InteractiveDateComponent.prototype.bindDateHandlerToEl = function (el, name, handler) { 4091 var _this = this; 4092 // attach a handler to the grid's root element. 4093 // jQuery will take care of unregistering them when removeElement gets called. 4094 this.el.on(name, function (ev) { 4095 if (!$(ev.target).is(_this.segSelector + ':not(.fc-helper),' + // directly on an event element 4096 _this.segSelector + ':not(.fc-helper) *,' + // within an event element 4097 '.fc-more,' + // a "more.." link 4098 'a[data-goto]' // a clickable nav link 4099 )) { 4100 return handler.call(_this, ev); 4101 } 4102 }); 4103 }; 4104 InteractiveDateComponent.prototype.bindAllSegHandlersToEl = function (el) { 4105 [ 4106 this.eventPointing, 4107 this.eventDragging, 4108 this.eventResizing 4109 ].forEach(function (eventInteraction) { 4110 if (eventInteraction) { 4111 eventInteraction.bindToEl(el); 4112 } 4113 }); 4114 }; 4115 InteractiveDateComponent.prototype.bindSegHandlerToEl = function (el, name, handler) { 4116 var _this = this; 4117 el.on(name, this.segSelector, function (ev) { 4118 var segEl = $(ev.currentTarget); 4119 if (!segEl.is('.fc-helper')) { 4120 var seg = segEl.data('fc-seg'); // grab segment data. put there by View::renderEventsPayload 4121 if (seg && !_this.shouldIgnoreEventPointing()) { 4122 return handler.call(_this, seg, ev); // context will be the Grid 4123 } 4124 } 4125 }); 4126 }; 4127 InteractiveDateComponent.prototype.shouldIgnoreMouse = function () { 4128 // HACK 4129 // This will still work even though bindDateHandlerToEl doesn't use GlobalEmitter. 4130 return GlobalEmitter_1.default.get().shouldIgnoreMouse(); 4131 }; 4132 InteractiveDateComponent.prototype.shouldIgnoreTouch = function () { 4133 var view = this._getView(); 4134 // On iOS (and Android?) when a new selection is initiated overtop another selection, 4135 // the touchend never fires because the elements gets removed mid-touch-interaction (my theory). 4136 // HACK: simply don't allow this to happen. 4137 // ALSO: prevent selection when an *event* is already raised. 4138 return view.isSelected || view.selectedEvent; 4139 }; 4140 InteractiveDateComponent.prototype.shouldIgnoreEventPointing = function () { 4141 // only call the handlers if there is not a drag/resize in progress 4142 return (this.eventDragging && this.eventDragging.isDragging) || 4143 (this.eventResizing && this.eventResizing.isResizing); 4144 }; 4145 InteractiveDateComponent.prototype.canStartSelection = function (seg, ev) { 4146 return util_1.getEvIsTouch(ev) && 4147 !this.canStartResize(seg, ev) && 4148 (this.isEventDefDraggable(seg.footprint.eventDef) || 4149 this.isEventDefResizable(seg.footprint.eventDef)); 4150 }; 4151 InteractiveDateComponent.prototype.canStartDrag = function (seg, ev) { 4152 return !this.canStartResize(seg, ev) && 4153 this.isEventDefDraggable(seg.footprint.eventDef); 4154 }; 4155 InteractiveDateComponent.prototype.canStartResize = function (seg, ev) { 4156 var view = this._getView(); 4157 var eventDef = seg.footprint.eventDef; 4158 return (!util_1.getEvIsTouch(ev) || view.isEventDefSelected(eventDef)) && 4159 this.isEventDefResizable(eventDef) && 4160 $(ev.target).is('.fc-resizer'); 4161 }; 4162 // Kills all in-progress dragging. 4163 // Useful for when public API methods that result in re-rendering are invoked during a drag. 4164 // Also useful for when touch devices misbehave and don't fire their touchend. 4165 InteractiveDateComponent.prototype.endInteractions = function () { 4166 [ 4167 this.dateClicking, 4168 this.dateSelecting, 4169 this.eventPointing, 4170 this.eventDragging, 4171 this.eventResizing 4172 ].forEach(function (interaction) { 4173 if (interaction) { 4174 interaction.end(); 4175 } 4176 }); 4177 }; 4178 // Event Drag-n-Drop 4179 // --------------------------------------------------------------------------------------------------------------- 4180 // Computes if the given event is allowed to be dragged by the user 4181 InteractiveDateComponent.prototype.isEventDefDraggable = function (eventDef) { 4182 return this.isEventDefStartEditable(eventDef); 4183 }; 4184 InteractiveDateComponent.prototype.isEventDefStartEditable = function (eventDef) { 4185 var isEditable = eventDef.isStartExplicitlyEditable(); 4186 if (isEditable == null) { 4187 isEditable = this.opt('eventStartEditable'); 4188 if (isEditable == null) { 4189 isEditable = this.isEventDefGenerallyEditable(eventDef); 4190 } 4191 } 4192 return isEditable; 4193 }; 4194 InteractiveDateComponent.prototype.isEventDefGenerallyEditable = function (eventDef) { 4195 var isEditable = eventDef.isExplicitlyEditable(); 4196 if (isEditable == null) { 4197 isEditable = this.opt('editable'); 4198 } 4199 return isEditable; 4200 }; 4201 // Event Resizing 4202 // --------------------------------------------------------------------------------------------------------------- 4203 // Computes if the given event is allowed to be resized from its starting edge 4204 InteractiveDateComponent.prototype.isEventDefResizableFromStart = function (eventDef) { 4205 return this.opt('eventResizableFromStart') && this.isEventDefResizable(eventDef); 4206 }; 4207 // Computes if the given event is allowed to be resized from its ending edge 4208 InteractiveDateComponent.prototype.isEventDefResizableFromEnd = function (eventDef) { 4209 return this.isEventDefResizable(eventDef); 4210 }; 4211 // Computes if the given event is allowed to be resized by the user at all 4212 InteractiveDateComponent.prototype.isEventDefResizable = function (eventDef) { 4213 var isResizable = eventDef.isDurationExplicitlyEditable(); 4214 if (isResizable == null) { 4215 isResizable = this.opt('eventDurationEditable'); 4216 if (isResizable == null) { 4217 isResizable = this.isEventDefGenerallyEditable(eventDef); 4218 } 4219 } 4220 return isResizable; 4221 }; 4222 // Event Mutation / Constraints 4223 // --------------------------------------------------------------------------------------------------------------- 4224 // Diffs the two dates, returning a duration, based on granularity of the grid 4225 // TODO: port isTimeScale into this system? 4226 InteractiveDateComponent.prototype.diffDates = function (a, b) { 4227 if (this.largeUnit) { 4228 return util_1.diffByUnit(a, b, this.largeUnit); 4229 } 4230 else { 4231 return util_1.diffDayTime(a, b); 4232 } 4233 }; 4234 // is it allowed, in relation to the view's validRange? 4235 // NOTE: very similar to isExternalInstanceGroupAllowed 4236 InteractiveDateComponent.prototype.isEventInstanceGroupAllowed = function (eventInstanceGroup) { 4237 var view = this._getView(); 4238 var dateProfile = this.dateProfile; 4239 var eventFootprints = this.eventRangesToEventFootprints(eventInstanceGroup.getAllEventRanges()); 4240 var i; 4241 for (i = 0; i < eventFootprints.length; i++) { 4242 // TODO: just use getAllEventRanges directly 4243 if (!dateProfile.validUnzonedRange.containsRange(eventFootprints[i].componentFootprint.unzonedRange)) { 4244 return false; 4245 } 4246 } 4247 return view.calendar.constraints.isEventInstanceGroupAllowed(eventInstanceGroup); 4248 }; 4249 // NOTE: very similar to isEventInstanceGroupAllowed 4250 // when it's a completely anonymous external drag, no event. 4251 InteractiveDateComponent.prototype.isExternalInstanceGroupAllowed = function (eventInstanceGroup) { 4252 var view = this._getView(); 4253 var dateProfile = this.dateProfile; 4254 var eventFootprints = this.eventRangesToEventFootprints(eventInstanceGroup.getAllEventRanges()); 4255 var i; 4256 for (i = 0; i < eventFootprints.length; i++) { 4257 if (!dateProfile.validUnzonedRange.containsRange(eventFootprints[i].componentFootprint.unzonedRange)) { 4258 return false; 4259 } 4260 } 4261 for (i = 0; i < eventFootprints.length; i++) { 4262 // treat it as a selection 4263 // TODO: pass in eventInstanceGroup instead 4264 // because we don't want calendar's constraint system to depend on a component's 4265 // determination of footprints. 4266 if (!view.calendar.constraints.isSelectionFootprintAllowed(eventFootprints[i].componentFootprint)) { 4267 return false; 4268 } 4269 } 4270 return true; 4271 }; 4272 return InteractiveDateComponent; 4273}(DateComponent_1.default)); 4274exports.default = InteractiveDateComponent; 4275 4276 4277/***/ }), 4278/* 43 */ 4279/***/ (function(module, exports, __webpack_require__) { 4280 4281Object.defineProperty(exports, "__esModule", { value: true });
4282var tslib_1 = __webpack_require__(2); 4283var $ = __webpack_require__(3); 4284var moment = __webpack_require__(0); 4285var util_1 = __webpack_require__(4); 4286var RenderQueue_1 = __webpack_require__(229); 4287var DateProfileGenerator_1 = __webpack_require__(55); 4288var InteractiveDateComponent_1 = __webpack_require__(42); 4289var GlobalEmitter_1 = __webpack_require__(23); 4290var UnzonedRange_1 = __webpack_require__(5); 4291/* An abstract class from which other views inherit from 4292----------------------------------------------------------------------------------------------------------------------*/ 4293var View = /** @class */ (function (_super) { 4294 tslib_1.__extends(View, _super); 4295 function View(calendar, viewSpec) { 4296 var _this = _super.call(this, null, viewSpec.options) || this; 4297 _this.batchRenderDepth = 0; 4298 _this.isSelected = false; // boolean whether a range of time is user-selected or not 4299 _this.calendar = calendar; 4300 _this.viewSpec = viewSpec; 4301 // shortcuts 4302 _this.type = viewSpec.type; 4303 // .name is deprecated 4304 _this.name = _this.type; 4305 _this.initRenderQueue(); 4306 _this.initHiddenDays(); 4307 _this.dateProfileGenerator = new _this.dateProfileGeneratorClass(_this); 4308 _this.bindBaseRenderHandlers(); 4309 _this.eventOrderSpecs = util_1.parseFieldSpecs(_this.opt('eventOrder')); 4310 // legacy 4311 if (_this['initialize']) { 4312 _this['initialize'](); 4313 } 4314 return _this; 4315 } 4316 View.prototype._getView = function () { 4317 return this; 4318 }; 4319 // Retrieves an option with the given name 4320 View.prototype.opt = function (name) { 4321 return this.options[name]; 4322 }; 4323 /* Render Queue 4324 ------------------------------------------------------------------------------------------------------------------*/ 4325 View.prototype.initRenderQueue = function () { 4326 this.renderQueue = new RenderQueue_1.default({ 4327 event: this.opt('eventRenderWait') 4328 }); 4329 this.renderQueue.on('start', this.onRenderQueueStart.bind(this)); 4330 this.renderQueue.on('stop', this.onRenderQueueStop.bind(this)); 4331 this.on('before:change', this.startBatchRender); 4332 this.on('change', this.stopBatchRender); 4333 }; 4334 View.prototype.onRenderQueueStart = function () { 4335 this.calendar.freezeContentHeight(); 4336 this.addScroll(this.queryScroll()); 4337 }; 4338 View.prototype.onRenderQueueStop = function () { 4339 if (this.calendar.updateViewSize()) { // success? 4340 this.popScroll(); 4341 } 4342 this.calendar.thawContentHeight(); 4343 }; 4344 View.prototype.startBatchRender = function () { 4345 if (!(this.batchRenderDepth++)) { 4346 this.renderQueue.pause(); 4347 } 4348 }; 4349 View.prototype.stopBatchRender = function () { 4350 if (!(--this.batchRenderDepth)) { 4351 this.renderQueue.resume(); 4352 } 4353 }; 4354 View.prototype.requestRender = function (func, namespace, actionType) { 4355 this.renderQueue.queue(func, namespace, actionType); 4356 }; 4357 // given func will auto-bind to `this` 4358 View.prototype.whenSizeUpdated = function (func) { 4359 if (this.renderQueue.isRunning) { 4360 this.renderQueue.one('stop', func.bind(this)); 4361 } 4362 else { 4363 func.call(this); 4364 } 4365 }; 4366 /* Title and Date Formatting 4367 ------------------------------------------------------------------------------------------------------------------*/ 4368 // Computes what the title at the top of the calendar should be for this view 4369 View.prototype.computeTitle = function (dateProfile) { 4370 var unzonedRange; 4371 // for views that span a large unit of time, show the proper interval, ignoring stray days before and after 4372 if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) { 4373 unzonedRange = dateProfile.currentUnzonedRange; 4374 } 4375 else { // for day units or smaller, use the actual day range 4376 unzonedRange = dateProfile.activeUnzonedRange; 4377 } 4378 return this.formatRange({ 4379 start: this.calendar.msToMoment(unzonedRange.startMs, dateProfile.isRangeAllDay), 4380 end: this.calendar.msToMoment(unzonedRange.endMs, dateProfile.isRangeAllDay) 4381 }, dateProfile.isRangeAllDay, this.opt('titleFormat') || this.computeTitleFormat(dateProfile), this.opt('titleRangeSeparator')); 4382 };
4383 // Generates the format string that should be used to generate the title for the current date range. 4384 // Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`. 4385 View.prototype.computeTitleFormat = function (dateProfile) { 4386 var currentRangeUnit = dateProfile.currentRangeUnit; 4387 if (currentRangeUnit === 'year') { 4388 return 'YYYY'; 4389 } 4390 else if (currentRangeUnit === 'month') { 4391 return this.opt('monthYearFormat'); // like "September 2014" 4392 } 4393 else if (dateProfile.currentUnzonedRange.as('days') > 1) { 4394 return 'll'; // multi-day range. shorter, like "Sep 9 - 10 2014" 4395 } 4396 else { 4397 return 'LL'; // one day. longer, like "September 9 2014" 4398 } 4399 }; 4400 // Date Setting/Unsetting 4401 // ----------------------------------------------------------------------------------------------------------------- 4402 View.prototype.setDate = function (date) { 4403 var currentDateProfile = this.get('dateProfile'); 4404 var newDateProfile = this.dateProfileGenerator.build(date, undefined, true); // forceToValid=true 4405 if (!currentDateProfile || 4406 !currentDateProfile.activeUnzonedRange.equals(newDateProfile.activeUnzonedRange)) { 4407 this.set('dateProfile', newDateProfile); 4408 } 4409 }; 4410 View.prototype.unsetDate = function () { 4411 this.unset('dateProfile'); 4412 }; 4413 // Event Data 4414 // ----------------------------------------------------------------------------------------------------------------- 4415 View.prototype.fetchInitialEvents = function (dateProfile) { 4416 var calendar = this.calendar; 4417 var forceAllDay = dateProfile.isRangeAllDay && !this.usesMinMaxTime; 4418 return calendar.requestEvents(calendar.msToMoment(dateProfile.activeUnzonedRange.startMs, forceAllDay), calendar.msToMoment(dateProfile.activeUnzonedRange.endMs, forceAllDay)); 4419 }; 4420 View.prototype.bindEventChanges = function () { 4421 this.listenTo(this.calendar, 'eventsReset', this.resetEvents); // TODO: make this a real event 4422 }; 4423 View.prototype.unbindEventChanges = function () { 4424 this.stopListeningTo(this.calendar, 'eventsReset'); 4425 }; 4426 View.prototype.setEvents = function (eventsPayload) { 4427 this.set('currentEvents', eventsPayload); 4428 this.set('hasEvents', true); 4429 }; 4430 View.prototype.unsetEvents = function () { 4431 this.unset('currentEvents'); 4432 this.unset('hasEvents'); 4433 }; 4434 View.prototype.resetEvents = function (eventsPayload) { 4435 this.startBatchRender(); 4436 this.unsetEvents(); 4437 this.setEvents(eventsPayload); 4438 this.stopBatchRender(); 4439 }; 4440 // Date High-level Rendering 4441 // ----------------------------------------------------------------------------------------------------------------- 4442 View.prototype.requestDateRender = function (dateProfile) { 4443 var _this = this; 4444 this.requestRender(function () { 4445 _this.executeDateRender(dateProfile); 4446 }, 'date', 'init'); 4447 }; 4448 View.prototype.requestDateUnrender = function () { 4449 var _this = this; 4450 this.requestRender(function () { 4451 _this.executeDateUnrender(); 4452 }, 'date', 'destroy'); 4453 }; 4454 // if dateProfile not specified, uses current 4455 View.prototype.executeDateRender = function (dateProfile) { 4456 _super.prototype.executeDateRender.call(this, dateProfile); 4457 if (this['render']) { 4458 this['render'](); // TODO: deprecate 4459 } 4460 this.trigger('datesRendered'); 4461 this.addScroll({ isDateInit: true }); 4462 this.startNowIndicator(); // shouldn't render yet because updateSize will be called soon 4463 }; 4464 View.prototype.executeDateUnrender = function () { 4465 this.unselect(); 4466 this.stopNowIndicator(); 4467 this.trigger('before:datesUnrendered'); 4468 if (this['destroy']) { 4469 this['destroy'](); // TODO: deprecate 4470 } 4471 _super.prototype.executeDateUnrender.call(this); 4472 }; 4473 // "Base" rendering 4474 // -----------------------------------------------------------------------------------------------------------------
4475 View.prototype.bindBaseRenderHandlers = function () { 4476 var _this = this; 4477 this.on('datesRendered', function () { 4478 _this.whenSizeUpdated(_this.triggerViewRender); 4479 }); 4480 this.on('before:datesUnrendered', function () { 4481 _this.triggerViewDestroy(); 4482 }); 4483 }; 4484 View.prototype.triggerViewRender = function () { 4485 this.publiclyTrigger('viewRender', { 4486 context: this, 4487 args: [this, this.el] 4488 }); 4489 }; 4490 View.prototype.triggerViewDestroy = function () { 4491 this.publiclyTrigger('viewDestroy', { 4492 context: this, 4493 args: [this, this.el] 4494 }); 4495 }; 4496 // Event High-level Rendering 4497 // ----------------------------------------------------------------------------------------------------------------- 4498 View.prototype.requestEventsRender = function (eventsPayload) { 4499 var _this = this; 4500 this.requestRender(function () { 4501 _this.executeEventRender(eventsPayload); 4502 _this.whenSizeUpdated(_this.triggerAfterEventsRendered); 4503 }, 'event', 'init'); 4504 }; 4505 View.prototype.requestEventsUnrender = function () { 4506 var _this = this; 4507 this.requestRender(function () { 4508 _this.triggerBeforeEventsDestroyed(); 4509 _this.executeEventUnrender(); 4510 }, 'event', 'destroy'); 4511 }; 4512 // Business Hour High-level Rendering 4513 // ----------------------------------------------------------------------------------------------------------------- 4514 View.prototype.requestBusinessHoursRender = function (businessHourGenerator) { 4515 var _this = this; 4516 this.requestRender(function () { 4517 _this.renderBusinessHours(businessHourGenerator); 4518 }, 'businessHours', 'init'); 4519 }; 4520 View.prototype.requestBusinessHoursUnrender = function () { 4521 var _this = this; 4522 this.requestRender(function () { 4523 _this.unrenderBusinessHours(); 4524 }, 'businessHours', 'destroy'); 4525 }; 4526 // Misc view rendering utils 4527 // ----------------------------------------------------------------------------------------------------------------- 4528 // Binds DOM handlers to elements that reside outside the view container, such as the document 4529 View.prototype.bindGlobalHandlers = function () { 4530 _super.prototype.bindGlobalHandlers.call(this); 4531 this.listenTo(GlobalEmitter_1.default.get(), { 4532 touchstart: this.processUnselect, 4533 mousedown: this.handleDocumentMousedown 4534 }); 4535 }; 4536 // Unbinds DOM handlers from elements that reside outside the view container 4537 View.prototype.unbindGlobalHandlers = function () { 4538 _super.prototype.unbindGlobalHandlers.call(this); 4539 this.stopListeningTo(GlobalEmitter_1.default.get()); 4540 }; 4541 /* Now Indicator 4542 ------------------------------------------------------------------------------------------------------------------*/ 4543 // Immediately render the current time indicator and begins re-rendering it at an interval, 4544 // which is defined by this.getNowIndicatorUnit(). 4545 // TODO: somehow do this for the current whole day's background too 4546 View.prototype.startNowIndicator = function () { 4547 var _this = this; 4548 var unit; 4549 var update; 4550 var delay; // ms wait value 4551 if (this.opt('nowIndicator')) { 4552 unit = this.getNowIndicatorUnit(); 4553 if (unit) { 4554 update = util_1.proxy(this, 'updateNowIndicator'); // bind to `this` 4555 this.initialNowDate = this.calendar.getNow(); 4556 this.initialNowQueriedMs = new Date().valueOf(); 4557 // wait until the beginning of the next interval 4558 delay = this.initialNowDate.clone().startOf(unit).add(1, unit).valueOf() - this.initialNowDate.valueOf(); 4559 this.nowIndicatorTimeoutID = setTimeout(function () { 4560 _this.nowIndicatorTimeoutID = null; 4561 update();
4562 delay = +moment.duration(1, unit); 4563 delay = Math.max(100, delay); // prevent too frequent 4564 _this.nowIndicatorIntervalID = setInterval(update, delay); // update every interval 4565 }, delay); 4566 } 4567 // rendering will be initiated in updateSize 4568 } 4569 }; 4570 // rerenders the now indicator, computing the new current time from the amount of time that has passed 4571 // since the initial getNow call. 4572 View.prototype.updateNowIndicator = function () { 4573 if (this.isDatesRendered && 4574 this.initialNowDate // activated before? 4575 ) { 4576 this.unrenderNowIndicator(); // won't unrender if unnecessary 4577 this.renderNowIndicator(this.initialNowDate.clone().add(new Date().valueOf() - this.initialNowQueriedMs) // add ms 4578 ); 4579 this.isNowIndicatorRendered = true; 4580 } 4581 }; 4582 // Immediately unrenders the view's current time indicator and stops any re-rendering timers. 4583 // Won't cause side effects if indicator isn't rendered. 4584 View.prototype.stopNowIndicator = function () { 4585 if (this.isNowIndicatorRendered) { 4586 if (this.nowIndicatorTimeoutID) { 4587 clearTimeout(this.nowIndicatorTimeoutID); 4588 this.nowIndicatorTimeoutID = null; 4589 } 4590 if (this.nowIndicatorIntervalID) { 4591 clearInterval(this.nowIndicatorIntervalID); 4592 this.nowIndicatorIntervalID = null; 4593 } 4594 this.unrenderNowIndicator(); 4595 this.isNowIndicatorRendered = false; 4596 } 4597 }; 4598 /* Dimensions 4599 ------------------------------------------------------------------------------------------------------------------*/ 4600 View.prototype.updateSize = function (totalHeight, isAuto, isResize) { 4601 if (this['setHeight']) { // for legacy API 4602 this['setHeight'](totalHeight, isAuto); 4603 } 4604 else { 4605 _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize); 4606 } 4607 this.updateNowIndicator(); 4608 }; 4609 /* Scroller 4610 ------------------------------------------------------------------------------------------------------------------*/ 4611 View.prototype.addScroll = function (scroll) { 4612 var queuedScroll = this.queuedScroll || (this.queuedScroll = {}); 4613 $.extend(queuedScroll, scroll); 4614 }; 4615 View.prototype.popScroll = function () { 4616 this.applyQueuedScroll(); 4617 this.queuedScroll = null; 4618 }; 4619 View.prototype.applyQueuedScroll = function () { 4620 if (this.queuedScroll) { 4621 this.applyScroll(this.queuedScroll); 4622 } 4623 }; 4624 View.prototype.queryScroll = function () { 4625 var scroll = {}; 4626 if (this.isDatesRendered) { 4627 $.extend(scroll, this.queryDateScroll()); 4628 } 4629 return scroll; 4630 }; 4631 View.prototype.applyScroll = function (scroll) { 4632 if (scroll.isDateInit && this.isDatesRendered) { 4633 $.extend(scroll, this.computeInitialDateScroll()); 4634 } 4635 if (this.isDatesRendered) { 4636 this.applyDateScroll(scroll); 4637 } 4638 }; 4639 View.prototype.computeInitialDateScroll = function () { 4640 return {}; // subclasses must implement 4641 }; 4642 View.prototype.queryDateScroll = function () { 4643 return {}; // subclasses must implement 4644 }; 4645 View.prototype.applyDateScroll = function (scroll) { 4646 // subclasses must implement 4647 }; 4648 /* Event Drag-n-Drop 4649 ------------------------------------------------------------------------------------------------------------------*/ 4650 View.prototype.reportEventDrop = function (eventInstance, eventMutation, el, ev) { 4651 var eventManager = this.calendar.eventManager; 4652 var undoFunc = eventManager.mutateEventsWithId(eventInstance.def.id, eventMutation); 4653 var dateMutation = eventMutation.dateMutation; 4654 // update the EventInstance, for handlers 4655 if (dateMutation) { 4656 eventInstance.dateProfile = dateMutation.buildNewDateProfile(eventInstance.dateProfile, this.calendar); 4657 } 4658 this.triggerEventDrop(eventInstance, 4659 // a drop doesn't necessarily mean a date mutation (ex: resource change) 4660 (dateMutation && dateMutation.dateDelta) || moment.duration(), undoFunc, el, ev); 4661 }; 4662 // Triggers event-drop handlers that have subscribed via the API 4663 View.prototype.triggerEventDrop = function (eventInstance, dateDelta, undoFunc, el, ev) { 4664 this.publiclyTrigger('eventDrop', { 4665 context: el[0], 4666 args: [ 4667 eventInstance.toLegacy(), 4668 dateDelta, 4669 undoFunc, 4670 ev, 4671 {}, 4672 this 4673 ] 4674 }); 4675 }; 4676 /* External Element Drag-n-Drop 4677 ------------------------------------------------------------------------------------------------------------------*/ 4678 // Must be called when an external element, via jQuery UI, has been dropped onto the calendar. 4679 // `meta` is the parsed data that has been embedded into the dragging event. 4680 // `dropLocation` is an object that contains the new zoned start/end/allDay values for the event. 4681 View.prototype.reportExternalDrop = function (singleEventDef, isEvent, isSticky, el, ev, ui) { 4682 if (isEvent) { 4683 this.calendar.eventManager.addEventDef(singleEventDef, isSticky); 4684 } 4685 this.triggerExternalDrop(singleEventDef, isEvent, el, ev, ui); 4686 }; 4687 // Triggers external-drop handlers that have subscribed via the API 4688 View.prototype.triggerExternalDrop = function (singleEventDef, isEvent, el, ev, ui) { 4689 // trigger 'drop' regardless of whether element represents an event 4690 this.publiclyTrigger('drop', { 4691 context: el[0], 4692 args: [ 4693 singleEventDef.dateProfile.start.clone(), 4694 ev, 4695 ui, 4696 this 4697 ] 4698 }); 4699 if (isEvent) { 4700 // signal an external event landed 4701 this.publiclyTrigger('eventReceive', { 4702 context: this, 4703 args: [ 4704 singleEventDef.buildInstance().toLegacy(), 4705 this 4706 ] 4707 }); 4708 } 4709 }; 4710 /* Event Resizing 4711 ------------------------------------------------------------------------------------------------------------------*/ 4712 // Must be called when an event in the view has been resized to a new length 4713 View.prototype.reportEventResize = function (eventInstance, eventMutation, el, ev) { 4714 var eventManager = this.calendar.eventManager;
4715 var undoFunc = eventManager.mutateEventsWithId(eventInstance.def.id, eventMutation); 4716 // update the EventInstance, for handlers 4717 eventInstance.dateProfile = eventMutation.dateMutation.buildNewDateProfile(eventInstance.dateProfile, this.calendar); 4718 var resizeDelta = eventMutation.dateMutation.endDelta || eventMutation.dateMutation.startDelta; 4719 this.triggerEventResize(eventInstance, resizeDelta, undoFunc, el, ev); 4720 }; 4721 // Triggers event-resize handlers that have subscribed via the API 4722 View.prototype.triggerEventResize = function (eventInstance, resizeDelta, undoFunc, el, ev) { 4723 this.publiclyTrigger('eventResize', { 4724 context: el[0], 4725 args: [ 4726 eventInstance.toLegacy(), 4727 resizeDelta, 4728 undoFunc, 4729 ev, 4730 {}, 4731 this 4732 ] 4733 }); 4734 }; 4735 /* Selection (time range) 4736 ------------------------------------------------------------------------------------------------------------------*/ 4737 // Selects a date span on the view. `start` and `end` are both Moments. 4738 // `ev` is the native mouse event that begin the interaction. 4739 View.prototype.select = function (footprint, ev) { 4740 this.unselect(ev); 4741 this.renderSelectionFootprint(footprint); 4742 this.reportSelection(footprint, ev); 4743 }; 4744 View.prototype.renderSelectionFootprint = function (footprint) { 4745 if (this['renderSelection']) { // legacy method in custom view classes 4746 this['renderSelection'](footprint.toLegacy(this.calendar)); 4747 } 4748 else { 4749 _super.prototype.renderSelectionFootprint.call(this, footprint); 4750 } 4751 }; 4752 // Called when a new selection is made. Updates internal state and triggers handlers. 4753 View.prototype.reportSelection = function (footprint, ev) { 4754 this.isSelected = true; 4755 this.triggerSelect(footprint, ev); 4756 }; 4757 // Triggers handlers to 'select' 4758 View.prototype.triggerSelect = function (footprint, ev) { 4759 var dateProfile = this.calendar.footprintToDateProfile(footprint); // abuse of "Event"DateProfile? 4760 this.publiclyTrigger('select', { 4761 context: this, 4762 args: [ 4763 dateProfile.start, 4764 dateProfile.end, 4765 ev, 4766 this 4767 ] 4768 }); 4769 }; 4770 // Undoes a selection. updates in the internal state and triggers handlers. 4771 // `ev` is the native mouse event that began the interaction. 4772 View.prototype.unselect = function (ev) { 4773 if (this.isSelected) { 4774 this.isSelected = false; 4775 if (this['destroySelection']) { 4776 this['destroySelection'](); // TODO: deprecate 4777 } 4778 this.unrenderSelection(); 4779 this.publiclyTrigger('unselect', { 4780 context: this, 4781 args: [ev, this] 4782 }); 4783 } 4784 }; 4785 /* Event Selection 4786 ------------------------------------------------------------------------------------------------------------------*/ 4787 View.prototype.selectEventInstance = function (eventInstance) { 4788 if (!this.selectedEventInstance || 4789 this.selectedEventInstance !== eventInstance) { 4790 this.unselectEventInstance(); 4791 this.getEventSegs().forEach(function (seg) { 4792 if (seg.footprint.eventInstance === eventInstance && 4793 seg.el // necessary? 4794 ) { 4795 seg.el.addClass('fc-selected'); 4796 } 4797 }); 4798 this.selectedEventInstance = eventInstance; 4799 } 4800 }; 4801 View.prototype.unselectEventInstance = function () { 4802 if (this.selectedEventInstance) { 4803 this.getEventSegs().forEach(function (seg) { 4804 if (seg.el) { // necessary? 4805 seg.el.removeClass('fc-selected'); 4806 } 4807 }); 4808 this.selectedEventInstance = null; 4809 } 4810 }; 4811 View.prototype.isEventDefSelected = function (eventDef) { 4812 // event references might change on refetchEvents(), while selectedEventInstance doesn't, 4813 // so compare IDs 4814 return this.selectedEventInstance && this.selectedEventInstance.def.id === eventDef.id; 4815 }; 4816 /* Mouse / Touch Unselecting (time range & event unselection) 4817 ------------------------------------------------------------------------------------------------------------------*/ 4818 // TODO: move consistently to down/start or up/end? 4819 // TODO: don't kill previous selection if touch scrolling 4820 View.prototype.handleDocumentMousedown = function (ev) { 4821 if (util_1.isPrimaryMouseButton(ev)) { 4822 this.processUnselect(ev); 4823 } 4824 }; 4825 View.prototype.processUnselect = function (ev) { 4826 this.processRangeUnselect(ev); 4827 this.processEventUnselect(ev); 4828 }; 4829 View.prototype.processRangeUnselect = function (ev) { 4830 var ignore;
4831 // is there a time-range selection? 4832 if (this.isSelected && this.opt('unselectAuto')) { 4833 // only unselect if the clicked element is not identical to or inside of an 'unselectCancel' element 4834 ignore = this.opt('unselectCancel'); 4835 if (!ignore || !$(ev.target).closest(ignore).length) { 4836 this.unselect(ev); 4837 } 4838 } 4839 }; 4840 View.prototype.processEventUnselect = function (ev) { 4841 if (this.selectedEventInstance) { 4842 if (!$(ev.target).closest('.fc-selected').length) { 4843 this.unselectEventInstance(); 4844 } 4845 } 4846 }; 4847 /* Triggers 4848 ------------------------------------------------------------------------------------------------------------------*/ 4849 View.prototype.triggerBaseRendered = function () { 4850 this.publiclyTrigger('viewRender', { 4851 context: this, 4852 args: [this, this.el] 4853 }); 4854 }; 4855 View.prototype.triggerBaseUnrendered = function () { 4856 this.publiclyTrigger('viewDestroy', { 4857 context: this, 4858 args: [this, this.el] 4859 }); 4860 }; 4861 // Triggers handlers to 'dayClick' 4862 // Span has start/end of the clicked area. Only the start is useful. 4863 View.prototype.triggerDayClick = function (footprint, dayEl, ev) { 4864 var dateProfile = this.calendar.footprintToDateProfile(footprint); // abuse of "Event"DateProfile? 4865 this.publiclyTrigger('dayClick', { 4866 context: dayEl, 4867 args: [dateProfile.start, ev, this] 4868 }); 4869 }; 4870 /* Date Utils 4871 ------------------------------------------------------------------------------------------------------------------*/ 4872 // For DateComponent::getDayClasses 4873 View.prototype.isDateInOtherMonth = function (date, dateProfile) { 4874 return false; 4875 }; 4876 // Arguments after name will be forwarded to a hypothetical function value 4877 // WARNING: passed-in arguments will be given to generator functions as-is and can cause side-effects. 4878 // Always clone your objects if you fear mutation. 4879 View.prototype.getUnzonedRangeOption = function (name) { 4880 var val = this.opt(name); 4881 if (typeof val === 'function') { 4882 val = val.apply(null, Array.prototype.slice.call(arguments, 1)); 4883 } 4884 if (val) { 4885 return this.calendar.parseUnzonedRange(val); 4886 } 4887 }; 4888 /* Hidden Days 4889 ------------------------------------------------------------------------------------------------------------------*/ 4890 // Initializes internal variables related to calculating hidden days-of-week 4891 View.prototype.initHiddenDays = function () { 4892 var hiddenDays = this.opt('hiddenDays') || []; // array of day-of-week indices that are hidden 4893 var isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool) 4894 var dayCnt = 0; 4895 var i; 4896 if (this.opt('weekends') === false) { 4897 hiddenDays.push(0, 6); // 0=sunday, 6=saturday 4898 } 4899 for (i = 0; i < 7; i++) { 4900 if (!(isHiddenDayHash[i] = $.inArray(i, hiddenDays) !== -1)) { 4901 dayCnt++; 4902 } 4903 } 4904 if (!dayCnt) { 4905 throw new Error('invalid hiddenDays'); // all days were hidden? bad. 4906 } 4907 this.isHiddenDayHash = isHiddenDayHash; 4908 }; 4909 // Remove days from the beginning and end of the range that are computed as hidden. 4910 // If the whole range is trimmed off, returns null 4911 View.prototype.trimHiddenDays = function (inputUnzonedRange) { 4912 var start = inputUnzonedRange.getStart(); 4913 var end = inputUnzonedRange.getEnd(); 4914 if (start) { 4915 start = this.skipHiddenDays(start); 4916 } 4917 if (end) { 4918 end = this.skipHiddenDays(end, -1, true); 4919 } 4920 if (start === null || end === null || start < end) { 4921 return new UnzonedRange_1.default(start, end); 4922 } 4923 return null; 4924 }; 4925 // Is the current day hidden? 4926 // `day` is a day-of-week index (0-6), or a Moment
4927 View.prototype.isHiddenDay = function (day) { 4928 if (moment.isMoment(day)) { 4929 day = day.day(); 4930 } 4931 return this.isHiddenDayHash[day]; 4932 }; 4933 // Incrementing the current day until it is no longer a hidden day, returning a copy. 4934 // DOES NOT CONSIDER validUnzonedRange! 4935 // If the initial value of `date` is not a hidden day, don't do anything. 4936 // Pass `isExclusive` as `true` if you are dealing with an end date. 4937 // `inc` defaults to `1` (increment one day forward each time) 4938 View.prototype.skipHiddenDays = function (date, inc, isExclusive) { 4939 if (inc === void 0) { inc = 1; } 4940 if (isExclusive === void 0) { isExclusive = false; } 4941 var out = date.clone(); 4942 while (this.isHiddenDayHash[(out.day() + (isExclusive ? inc : 0) + 7) % 7]) { 4943 out.add(inc, 'days'); 4944 } 4945 return out; 4946 }; 4947 return View; 4948}(InteractiveDateComponent_1.default)); 4949exports.default = View; 4950View.prototype.usesMinMaxTime = false; 4951View.prototype.dateProfileGeneratorClass = DateProfileGenerator_1.default; 4952View.watch('displayingDates', ['isInDom', 'dateProfile'], function (deps) { 4953 this.requestDateRender(deps.dateProfile); 4954}, function () { 4955 this.requestDateUnrender(); 4956}); 4957View.watch('displayingBusinessHours', ['displayingDates', 'businessHourGenerator'], function (deps) { 4958 this.requestBusinessHoursRender(deps.businessHourGenerator); 4959}, function () { 4960 this.requestBusinessHoursUnrender(); 4961}); 4962View.watch('initialEvents', ['dateProfile'], function (deps) { 4963 return this.fetchInitialEvents(deps.dateProfile); 4964}); 4965View.watch('bindingEvents', ['initialEvents'], function (deps) { 4966 this.setEvents(deps.initialEvents); 4967 this.bindEventChanges(); 4968}, function () { 4969 this.unbindEventChanges(); 4970 this.unsetEvents(); 4971}); 4972View.watch('displayingEvents', ['displayingDates', 'hasEvents'], function () { 4973 this.requestEventsRender(this.get('currentEvents')); 4974}, function () { 4975 this.requestEventsUnrender(); 4976}); 4977View.watch('title', ['dateProfile'], function (deps) { 4978 return (this.title = this.computeTitle(deps.dateProfile)); // assign to View for legacy reasons 4979}); 4980View.watch('legacyDateProps', ['dateProfile'], function (deps) { 4981 var calendar = this.calendar; 4982 var dateProfile = deps.dateProfile; 4983 // DEPRECATED, but we need to keep it updated... 4984 this.start = calendar.msToMoment(dateProfile.activeUnzonedRange.startMs, dateProfile.isRangeAllDay); 4985 this.end = calendar.msToMoment(dateProfile.activeUnzonedRange.endMs, dateProfile.isRangeAllDay); 4986 this.intervalStart = calendar.msToMoment(dateProfile.currentUnzonedRange.startMs, dateProfile.isRangeAllDay); 4987 this.intervalEnd = calendar.msToMoment(dateProfile.currentUnzonedRange.endMs, dateProfile.isRangeAllDay); 4988}); 4989 4990 4991/***/ }), 4992/* 44 */ 4993/***/ (function(module, exports, __webpack_require__) { 4994 4995Object.defineProperty(exports, "__esModule", { value: true }); 4996var $ = __webpack_require__(3); 4997var util_1 = __webpack_require__(4); 4998var EventRenderer = /** @class */ (function () { 4999 function EventRenderer(component, fillRenderer) { 5000 this.view = component._getView(); 5001 this.component = component; 5002 this.fillRenderer = fillRenderer; 5003 } 5004 EventRenderer.prototype.opt = function (name) { 5005 return this.view.opt(name); 5006 }; 5007 // Updates values that rely on options and also relate to range 5008 EventRenderer.prototype.rangeUpdated = function () { 5009 var displayEventTime; 5010 var displayEventEnd; 5011 this.eventTimeFormat = 5012 this.opt('eventTimeFormat') || 5013 this.opt('timeFormat') || // deprecated 5014 this.computeEventTimeFormat(); 5015 displayEventTime = this.opt('displayEventTime'); 5016 if (displayEventTime == null) { 5017 displayEventTime = this.computeDisplayEventTime(); // might be based off of range 5018 } 5019 displayEventEnd = this.opt('displayEventEnd'); 5020 if (displayEventEnd == null) { 5021 displayEventEnd = this.computeDisplayEventEnd(); // might be based off of range 5022 } 5023 this.displayEventTime = displayEventTime; 5024 this.displayEventEnd = displayEventEnd; 5025 }; 5026 EventRenderer.prototype.render = function (eventsPayload) { 5027 var dateProfile = this.component._getDateProfile(); 5028 var eventDefId; 5029 var instanceGroup; 5030 var eventRanges;
5031 var bgRanges = []; 5032 var fgRanges = []; 5033 for (eventDefId in eventsPayload) { 5034 instanceGroup = eventsPayload[eventDefId]; 5035 eventRanges = instanceGroup.sliceRenderRanges(dateProfile.activeUnzonedRange); 5036 if (instanceGroup.getEventDef().hasBgRendering()) { 5037 bgRanges.push.apply(bgRanges, eventRanges); 5038 } 5039 else { 5040 fgRanges.push.apply(fgRanges, eventRanges); 5041 } 5042 } 5043 this.renderBgRanges(bgRanges); 5044 this.renderFgRanges(fgRanges); 5045 }; 5046 EventRenderer.prototype.unrender = function () { 5047 this.unrenderBgRanges(); 5048 this.unrenderFgRanges(); 5049 }; 5050 EventRenderer.prototype.renderFgRanges = function (eventRanges) { 5051 var eventFootprints = this.component.eventRangesToEventFootprints(eventRanges); 5052 var segs = this.component.eventFootprintsToSegs(eventFootprints); 5053 // render an `.el` on each seg 5054 // returns a subset of the segs. segs that were actually rendered 5055 segs = this.renderFgSegEls(segs); 5056 if (this.renderFgSegs(segs) !== false) { // no failure? 5057 this.fgSegs = segs; 5058 } 5059 }; 5060 EventRenderer.prototype.unrenderFgRanges = function () { 5061 this.unrenderFgSegs(this.fgSegs || []); 5062 this.fgSegs = null; 5063 }; 5064 EventRenderer.prototype.renderBgRanges = function (eventRanges) { 5065 var eventFootprints = this.component.eventRangesToEventFootprints(eventRanges); 5066 var segs = this.component.eventFootprintsToSegs(eventFootprints); 5067 if (this.renderBgSegs(segs) !== false) { // no failure? 5068 this.bgSegs = segs; 5069 } 5070 }; 5071 EventRenderer.prototype.unrenderBgRanges = function () { 5072 this.unrenderBgSegs(); 5073 this.bgSegs = null; 5074 }; 5075 EventRenderer.prototype.getSegs = function () { 5076 return (this.bgSegs || []).concat(this.fgSegs || []); 5077 }; 5078 // Renders foreground event segments onto the grid 5079 EventRenderer.prototype.renderFgSegs = function (segs) { 5080 // subclasses must implement 5081 // segs already has rendered els, and has been filtered. 5082 return false; // signal failure if not implemented 5083 }; 5084 // Unrenders all currently rendered foreground segments 5085 EventRenderer.prototype.unrenderFgSegs = function (segs) { 5086 // subclasses must implement 5087 }; 5088 EventRenderer.prototype.renderBgSegs = function (segs) { 5089 var _this = this; 5090 if (this.fillRenderer) { 5091 this.fillRenderer.renderSegs('bgEvent', segs, { 5092 getClasses: function (seg) { 5093 return _this.getBgClasses(seg.footprint.eventDef); 5094 }, 5095 getCss: function (seg) { 5096 return { 5097 'background-color': _this.getBgColor(seg.footprint.eventDef) 5098 }; 5099 }, 5100 filterEl: function (seg, el) { 5101 return _this.filterEventRenderEl(seg.footprint, el); 5102 } 5103 }); 5104 } 5105 else { 5106 return false; // signal failure if no fillRenderer 5107 } 5108 }; 5109 EventRenderer.prototype.unrenderBgSegs = function () { 5110 if (this.fillRenderer) { 5111 this.fillRenderer.unrender('bgEvent'); 5112 } 5113 }; 5114 // Renders and assigns an `el` property for each foreground event segment. 5115 // Only returns segments that successfully rendered. 5116 EventRenderer.prototype.renderFgSegEls = function (segs, disableResizing) { 5117 var _this = this; 5118 if (disableResizing === void 0) { disableResizing = false; } 5119 var hasEventRenderHandlers = this.view.hasPublicHandlers('eventRender'); 5120 var html = ''; 5121 var renderedSegs = []; 5122 var i; 5123 if (segs.length) { // don't build an empty html string 5124 // build a large concatenation of event segment HTML 5125 for (i = 0; i < segs.length; i++) { 5126 this.beforeFgSegHtml(segs[i]); 5127 html += this.fgSegHtml(segs[i], disableResizing); 5128 } 5129 // Grab individual elements from the combined HTML string. Use each as the default rendering. 5130 // Then, compute the 'el' for each segment. An el might be null if the eventRender callback returned false. 5131 $(html).each(function (i, node) { 5132 var seg = segs[i]; 5133 var el = $(node); 5134 if (hasEventRenderHandlers) { // optimization 5135 el = _this.filterEventRenderEl(seg.footprint, el); 5136 } 5137 if (el) { 5138 el.data('fc-seg', seg); // used by handlers 5139 seg.el = el; 5140 renderedSegs.push(seg); 5141 } 5142 }); 5143 } 5144 return renderedSegs; 5145 }; 5146 EventRenderer.prototype.beforeFgSegHtml = function (seg) { 5147 }; 5148 // Generates the HTML for the default rendering of a foreground event segment. Used by renderFgSegEls() 5149 EventRenderer.prototype.fgSegHtml = function (seg, disableResizing) { 5150 // subclasses should implement 5151 }; 5152 // Generic utility for generating the HTML classNames for an event segment's element 5153 EventRenderer.prototype.getSegClasses = function (seg, isDraggable, isResizable) { 5154 var classes = [ 5155 'fc-event', 5156 seg.isStart ? 'fc-start' : 'fc-not-start', 5157 seg.isEnd ? 'fc-end' : 'fc-not-end' 5158 ].concat(this.getClasses(seg.footprint.eventDef)); 5159 if (isDraggable) { 5160 classes.push('fc-draggable'); 5161 } 5162 if (isResizable) { 5163 classes.push('fc-resizable'); 5164 } 5165 // event is currently selected? attach a className. 5166 if (this.view.isEventDefSelected(seg.footprint.eventDef)) { 5167 classes.push('fc-selected'); 5168 } 5169 return classes; 5170 }; 5171 // Given an event and the default element used for rendering, returns the element that should actually be used. 5172 // Basically runs events and elements through the eventRender hook. 5173 EventRenderer.prototype.filterEventRenderEl = function (eventFootprint, el) { 5174 var legacy = eventFootprint.getEventLegacy(); 5175 var custom = this.view.publiclyTrigger('eventRender', { 5176 context: legacy, 5177 args: [legacy, el, this.view] 5178 }); 5179 if (custom === false) { // means don't render at all 5180 el = null; 5181 } 5182 else if (custom && custom !== true) { 5183 el = $(custom); 5184 } 5185 return el; 5186 }; 5187 // Compute the text that should be displayed on an event's element. 5188 // `range` can be the Event object itself, or something range-like, with at least a `start`. 5189 // If event times are disabled, or the event has no time, will return a blank string. 5190 // If not specified, formatStr will default to the eventTimeFormat setting, 5191 // and displayEnd will default to the displayEventEnd setting. 5192 EventRenderer.prototype.getTimeText = function (eventFootprint, formatStr, displayEnd) { 5193 return this._getTimeText(eventFootprint.eventInstance.dateProfile.start, eventFootprint.eventInstance.dateProfile.end, eventFootprint.componentFootprint.isAllDay, formatStr, displayEnd); 5194 }; 5195 EventRenderer.prototype._getTimeText = function (start, end, isAllDay, formatStr, displayEnd) { 5196 if (formatStr == null) { 5197 formatStr = this.eventTimeFormat; 5198 } 5199 if (displayEnd == null) { 5200 displayEnd = this.displayEventEnd; 5201 } 5202 if (this.displayEventTime && !isAllDay) { 5203 if (displayEnd && end) { 5204 return this.view.formatRange({ start: start, end: end }, false, // allDay 5205 formatStr); 5206 } 5207 else { 5208 return start.format(formatStr); 5209 } 5210 } 5211 return ''; 5212 }; 5213 EventRenderer.prototype.computeEventTimeFormat = function () { 5214 return this.opt('smallTimeFormat'); 5215 }; 5216 EventRenderer.prototype.computeDisplayEventTime = function () { 5217 return true; 5218 }; 5219 EventRenderer.prototype.computeDisplayEventEnd = function () { 5220 return true; 5221 }; 5222 EventRenderer.prototype.getBgClasses = function (eventDef) { 5223 var classNames = this.getClasses(eventDef); 5224 classNames.push('fc-bgevent'); 5225 return classNames; 5226 }; 5227 EventRenderer.prototype.getClasses = function (eventDef) {
5228 var objs = this.getStylingObjs(eventDef); 5229 var i; 5230 var classNames = []; 5231 for (i = 0; i < objs.length; i++) { 5232 classNames.push.apply(// append 5233 classNames, objs[i].eventClassName || objs[i].className || []); 5234 } 5235 return classNames; 5236 }; 5237 // Utility for generating event skin-related CSS properties 5238 EventRenderer.prototype.getSkinCss = function (eventDef) { 5239 return { 5240 'background-color': this.getBgColor(eventDef), 5241 'border-color': this.getBorderColor(eventDef), 5242 color: this.getTextColor(eventDef) 5243 }; 5244 }; 5245 // Queries for caller-specified color, then falls back to default 5246 EventRenderer.prototype.getBgColor = function (eventDef) { 5247 var objs = this.getStylingObjs(eventDef); 5248 var i; 5249 var val; 5250 for (i = 0; i < objs.length && !val; i++) { 5251 val = objs[i].eventBackgroundColor || objs[i].eventColor || 5252 objs[i].backgroundColor || objs[i].color; 5253 } 5254 if (!val) { 5255 val = this.opt('eventBackgroundColor') || this.opt('eventColor'); 5256 } 5257 return val; 5258 }; 5259 // Queries for caller-specified color, then falls back to default 5260 EventRenderer.prototype.getBorderColor = function (eventDef) { 5261 var objs = this.getStylingObjs(eventDef); 5262 var i; 5263 var val; 5264 for (i = 0; i < objs.length && !val; i++) { 5265 val = objs[i].eventBorderColor || objs[i].eventColor || 5266 objs[i].borderColor || objs[i].color; 5267 } 5268 if (!val) { 5269 val = this.opt('eventBorderColor') || this.opt('eventColor'); 5270 } 5271 return val; 5272 }; 5273 // Queries for caller-specified color, then falls back to default 5274 EventRenderer.prototype.getTextColor = function (eventDef) { 5275 var objs = this.getStylingObjs(eventDef); 5276 var i; 5277 var val; 5278 for (i = 0; i < objs.length && !val; i++) { 5279 val = objs[i].eventTextColor || 5280 objs[i].textColor; 5281 } 5282 if (!val) { 5283 val = this.opt('eventTextColor'); 5284 } 5285 return val; 5286 }; 5287 EventRenderer.prototype.getStylingObjs = function (eventDef) { 5288 var objs = this.getFallbackStylingObjs(eventDef); 5289 objs.unshift(eventDef); 5290 return objs; 5291 }; 5292 EventRenderer.prototype.getFallbackStylingObjs = function (eventDef) { 5293 return [eventDef.source]; 5294 }; 5295 EventRenderer.prototype.sortEventSegs = function (segs) { 5296 segs.sort(util_1.proxy(this, 'compareEventSegs')); 5297 }; 5298 // A cmp function for determining which segments should take visual priority 5299 EventRenderer.prototype.compareEventSegs = function (seg1, seg2) { 5300 var f1 = seg1.footprint; 5301 var f2 = seg2.footprint; 5302 var cf1 = f1.componentFootprint; 5303 var cf2 = f2.componentFootprint; 5304 var r1 = cf1.unzonedRange; 5305 var r2 = cf2.unzonedRange; 5306 return r1.startMs - r2.startMs || // earlier events go first 5307 (r2.endMs - r2.startMs) - (r1.endMs - r1.startMs) || // tie? longer events go first 5308 cf2.isAllDay - cf1.isAllDay || // tie? put all-day events first (booleans cast to 0/1) 5309 util_1.compareByFieldSpecs(f1.eventDef, f2.eventDef, this.view.eventOrderSpecs, f1.eventDef.miscProps, f2.eventDef.miscProps); 5310 }; 5311 return EventRenderer; 5312}()); 5313exports.default = EventRenderer; 5314 5315 5316/***/ }), 5317/* 45 */, 5318/* 46 */, 5319/* 47 */, 5320/* 48 */, 5321/* 49 */ 5322/***/ (function(module, exports, __webpack_require__) { 5323 5324Object.defineProperty(exports, "__esModule", { value: true }); 5325var moment_ext_1 = __webpack_require__(11); 5326// Plugin 5327// ------------------------------------------------------------------------------------------------- 5328moment_ext_1.newMomentProto.format = function () { 5329 if (this._fullCalendar && arguments[0]) { // an enhanced moment? and a format string provided? 5330 return formatDate(this, arguments[0]); // our extended formatting 5331 } 5332 if (this._ambigTime) { 5333 return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD'); 5334 } 5335 if (this._ambigZone) { 5336 return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD[T]HH:mm:ss'); 5337 } 5338 if (this._fullCalendar) { // enhanced non-ambig moment? 5339 // moment.format() doesn't ensure english, but we want to. 5340 return moment_ext_1.oldMomentFormat(englishMoment(this)); 5341 } 5342 return moment_ext_1.oldMomentProto.format.apply(this, arguments); 5343}; 5344moment_ext_1.newMomentProto.toISOString = function () { 5345 if (this._ambigTime) { 5346 return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD'); 5347 } 5348 if (this._ambigZone) { 5349 return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD[T]HH:mm:ss'); 5350 } 5351 if (this._fullCalendar) { // enhanced non-ambig moment? 5352 // depending on browser, moment might not output english. ensure english. 5353 // https://github.com/moment/moment/blob/2.18.1/src/lib/moment/format.js#L22 5354 return moment_ext_1.oldMomentProto.toISOString.apply(englishMoment(this), arguments); 5355 } 5356 return moment_ext_1.oldMomentProto.toISOString.apply(this, arguments); 5357}; 5358function englishMoment(mom) { 5359 if (mom.locale() !== 'en') { 5360 return mom.clone().locale('en'); 5361 } 5362 return mom; 5363} 5364// Config 5365// --------------------------------------------------------------------------------------------------------------------- 5366/* 5367Inserted between chunks in the fake ("intermediate") formatting string. 5368Important that it passes as whitespace (\s) because moment often identifies non-standalone months 5369via a regexp with an \s. 5370*/ 5371var PART_SEPARATOR = '\u000b'; // vertical tab 5372/* 5373Inserted as the first character of a literal-text chunk to indicate that the literal text is not actually literal text, 5374but rather, a "special" token that has custom rendering (see specialTokens map). 5375*/ 5376var SPECIAL_TOKEN_MARKER = '\u001f'; // information separator 1 5377/* 5378Inserted at the beginning and end of a span of text that must have non-zero numeric characters. 5379Handling of these markers is done in a post-processing step at the very end of text rendering. 5380*/ 5381var MAYBE_MARKER = '\u001e'; // information separator 2 5382var MAYBE_REGEXP = new RegExp(MAYBE_MARKER + '([^' + MAYBE_MARKER + ']*)' + MAYBE_MARKER, 'g'); // must be global 5383/* 5384Addition formatting tokens we want recognized 5385*/ 5386var specialTokens = { 5387 t: function (date) { 5388 return moment_ext_1.oldMomentFormat(date, 'a').charAt(0);
5389 }, 5390 T: function (date) { 5391 return moment_ext_1.oldMomentFormat(date, 'A').charAt(0); 5392 } 5393}; 5394/* 5395The first characters of formatting tokens for units that are 1 day or larger. 5396`value` is for ranking relative size (lower means bigger). 5397`unit` is a normalized unit, used for comparing moments. 5398*/ 5399var largeTokenMap = { 5400 Y: { value: 1, unit: 'year' }, 5401 M: { value: 2, unit: 'month' }, 5402 W: { value: 3, unit: 'week' }, 5403 w: { value: 3, unit: 'week' }, 5404 D: { value: 4, unit: 'day' }, 5405 d: { value: 4, unit: 'day' } // day of week 5406}; 5407// Single Date Formatting 5408// --------------------------------------------------------------------------------------------------------------------- 5409/* 5410Formats `date` with a Moment formatting string, but allow our non-zero areas and special token 5411*/ 5412function formatDate(date, formatStr) { 5413 return renderFakeFormatString(getParsedFormatString(formatStr).fakeFormatString, date); 5414} 5415exports.formatDate = formatDate; 5416// Date Range Formatting 5417// ------------------------------------------------------------------------------------------------- 5418// TODO: make it work with timezone offset 5419/* 5420Using a formatting string meant for a single date, generate a range string, like 5421"Sep 2 - 9 2013", that intelligently inserts a separator where the dates differ. 5422If the dates are the same as far as the format string is concerned, just return a single 5423rendering of one date, without any separator. 5424*/ 5425function formatRange(date1, date2, formatStr, separator, isRTL) { 5426 var localeData; 5427 date1 = moment_ext_1.default.parseZone(date1); 5428 date2 = moment_ext_1.default.parseZone(date2); 5429 localeData = date1.localeData(); 5430 // Expand localized format strings, like "LL" -> "MMMM D YYYY". 5431 // BTW, this is not important for `formatDate` because it is impossible to put custom tokens 5432 // or non-zero areas in Moment's localized format strings. 5433 formatStr = localeData.longDateFormat(formatStr) || formatStr; 5434 return renderParsedFormat(getParsedFormatString(formatStr), date1, date2, separator || ' - ', isRTL); 5435} 5436exports.formatRange = formatRange; 5437/* 5438Renders a range with an already-parsed format string. 5439*/ 5440function renderParsedFormat(parsedFormat, date1, date2, separator, isRTL) { 5441 var sameUnits = parsedFormat.sameUnits; 5442 var unzonedDate1 = date1.clone().stripZone(); // for same-unit comparisons 5443 var unzonedDate2 = date2.clone().stripZone(); // " 5444 var renderedParts1 = renderFakeFormatStringParts(parsedFormat.fakeFormatString, date1); 5445 var renderedParts2 = renderFakeFormatStringParts(parsedFormat.fakeFormatString, date2); 5446 var leftI; 5447 var leftStr = ''; 5448 var rightI; 5449 var rightStr = ''; 5450 var middleI; 5451 var middleStr1 = ''; 5452 var middleStr2 = ''; 5453 var middleStr = ''; 5454 // Start at the leftmost side of the formatting string and continue until you hit a token 5455 // that is not the same between dates. 5456 for (leftI = 0; leftI < sameUnits.length && (!sameUnits[leftI] || unzonedDate1.isSame(unzonedDate2, sameUnits[leftI])); leftI++) { 5457 leftStr += renderedParts1[leftI]; 5458 } 5459 // Similarly, start at the rightmost side of the formatting string and move left 5460 for (rightI = sameUnits.length - 1; rightI > leftI && (!sameUnits[rightI] || unzonedDate1.isSame(unzonedDate2, sameUnits[rightI])); rightI--) { 5461 // If current chunk is on the boundary of unique date-content, and is a special-case 5462 // date-formatting postfix character, then don't consume it. Consider it unique date-content. 5463 // TODO: make configurable 5464 if (rightI - 1 === leftI && renderedParts1[rightI] === '.') { 5465 break; 5466 } 5467 rightStr = renderedParts1[rightI] + rightStr; 5468 } 5469 // The area in the middle is different for both of the dates. 5470 // Collect them distinctly so we can jam them together later. 5471 for (middleI = leftI; middleI <= rightI; middleI++) { 5472 middleStr1 += renderedParts1[middleI]; 5473 middleStr2 += renderedParts2[middleI]; 5474 } 5475 if (middleStr1 || middleStr2) { 5476 if (isRTL) { 5477 middleStr = middleStr2 + separator + middleStr1;
5478 } 5479 else { 5480 middleStr = middleStr1 + separator + middleStr2; 5481 } 5482 } 5483 return processMaybeMarkers(leftStr + middleStr + rightStr); 5484} 5485// Format String Parsing 5486// --------------------------------------------------------------------------------------------------------------------- 5487var parsedFormatStrCache = {}; 5488/* 5489Returns a parsed format string, leveraging a cache. 5490*/ 5491function getParsedFormatString(formatStr) { 5492 return parsedFormatStrCache[formatStr] || 5493 (parsedFormatStrCache[formatStr] = parseFormatString(formatStr)); 5494} 5495/* 5496Parses a format string into the following: 5497- fakeFormatString: a momentJS formatting string, littered with special control characters that get post-processed. 5498- sameUnits: for every part in fakeFormatString, if the part is a token, the value will be a unit string (like "day"), 5499 that indicates how similar a range's start & end must be in order to share the same formatted text. 5500 If not a token, then the value is null. 5501 Always a flat array (not nested liked "chunks"). 5502*/ 5503function parseFormatString(formatStr) { 5504 var chunks = chunkFormatString(formatStr); 5505 return { 5506 fakeFormatString: buildFakeFormatString(chunks), 5507 sameUnits: buildSameUnits(chunks) 5508 }; 5509} 5510/* 5511Break the formatting string into an array of chunks. 5512A 'maybe' chunk will have nested chunks. 5513*/ 5514function chunkFormatString(formatStr) { 5515 var chunks = []; 5516 var match; 5517 // TODO: more descrimination 5518 // \4 is a backreference to the first character of a multi-character set.
5519 var chunker = /\[([^\]]*)\]|\(([^\)]*)\)|(LTS|LT|(\w)\4*o?)|([^\w\[\(]+)/g; 5520 while ((match = chunker.exec(formatStr))) { 5521 if (match[1]) { // a literal string inside [ ... ] 5522 chunks.push.apply(chunks, // append 5523 splitStringLiteral(match[1])); 5524 } 5525 else if (match[2]) { // non-zero formatting inside ( ... ) 5526 chunks.push({ maybe: chunkFormatString(match[2]) }); 5527 } 5528 else if (match[3]) { // a formatting token 5529 chunks.push({ token: match[3] }); 5530 } 5531 else if (match[5]) { // an unenclosed literal string 5532 chunks.push.apply(chunks, // append 5533 splitStringLiteral(match[5])); 5534 } 5535 } 5536 return chunks; 5537} 5538/* 5539Potentially splits a literal-text string into multiple parts. For special cases. 5540*/ 5541function splitStringLiteral(s) { 5542 if (s === '. ') { 5543 return ['.', ' ']; // for locales with periods bound to the end of each year/month/date 5544 } 5545 else { 5546 return [s]; 5547 } 5548} 5549/* 5550Given chunks parsed from a real format string, generate a fake (aka "intermediate") format string with special control 5551characters that will eventually be given to moment for formatting, and then post-processed. 5552*/ 5553function buildFakeFormatString(chunks) { 5554 var parts = []; 5555 var i; 5556 var chunk; 5557 for (i = 0; i < chunks.length; i++) { 5558 chunk = chunks[i]; 5559 if (typeof chunk === 'string') { 5560 parts.push('[' + chunk + ']'); 5561 } 5562 else if (chunk.token) { 5563 if (chunk.token in specialTokens) { 5564 parts.push(SPECIAL_TOKEN_MARKER + // useful during post-processing 5565 '[' + chunk.token + ']' // preserve as literal text 5566 ); 5567 } 5568 else { 5569 parts.push(chunk.token); // unprotected text implies a format string 5570 } 5571 } 5572 else if (chunk.maybe) { 5573 parts.push(MAYBE_MARKER + // useful during post-processing 5574 buildFakeFormatString(chunk.maybe) + 5575 MAYBE_MARKER); 5576 } 5577 } 5578 return parts.join(PART_SEPARATOR); 5579} 5580/* 5581Given parsed chunks from a real formatting string, generates an array of unit strings (like "day") that indicate 5582in which regard two dates must be similar in order to share range formatting text. 5583The `chunks` can be nested (because of "maybe" chunks), however, the returned array will be flat. 5584*/ 5585function buildSameUnits(chunks) { 5586 var units = []; 5587 var i; 5588 var chunk; 5589 var tokenInfo; 5590 for (i = 0; i < chunks.length; i++) { 5591 chunk = chunks[i]; 5592 if (chunk.token) { 5593 tokenInfo = largeTokenMap[chunk.token.charAt(0)]; 5594 units.push(tokenInfo ? tokenInfo.unit : 'second'); // default to a very strict same-second 5595 } 5596 else if (chunk.maybe) { 5597 units.push.apply(units, // append 5598 buildSameUnits(chunk.maybe)); 5599 } 5600 else { 5601 units.push(null); 5602 } 5603 } 5604 return units; 5605} 5606// Rendering to text 5607// --------------------------------------------------------------------------------------------------------------------- 5608/* 5609Formats a date with a fake format string, post-processes the control characters, then returns. 5610*/ 5611function renderFakeFormatString(fakeFormatString, date) { 5612 return processMaybeMarkers(renderFakeFormatStringParts(fakeFormatString, date).join('')); 5613} 5614/* 5615Formats a date into parts that will have been post-processed, EXCEPT for the "maybe" markers. 5616*/ 5617function renderFakeFormatStringParts(fakeFormatString, date) { 5618 var parts = []; 5619 var fakeRender = moment_ext_1.oldMomentFormat(date, fakeFormatString); 5620 var fakeParts = fakeRender.split(PART_SEPARATOR); 5621 var i; 5622 var fakePart; 5623 for (i = 0; i < fakeParts.length; i++) { 5624 fakePart = fakeParts[i]; 5625 if (fakePart.charAt(0) === SPECIAL_TOKEN_MARKER) { 5626 parts.push( 5627 // the literal string IS the token's name. 5628 // call special token's registered function. 5629 specialTokens[fakePart.substring(1)](date)); 5630 } 5631 else { 5632 parts.push(fakePart); 5633 } 5634 } 5635 return parts; 5636} 5637/* 5638Accepts an almost-finally-formatted string and processes the "maybe" control characters, returning a new string. 5639*/ 5640function processMaybeMarkers(s) { 5641 return s.replace(MAYBE_REGEXP, function (m0, m1) { 5642 if (m1.match(/[1-9]/)) { // any non-zero numeric characters? 5643 return m1; 5644 } 5645 else { 5646 return ''; 5647 } 5648 });
5649} 5650// Misc Utils 5651// ------------------------------------------------------------------------------------------------- 5652/* 5653Returns a unit string, either 'year', 'month', 'day', or null for the most granular formatting token in the string. 5654*/ 5655function queryMostGranularFormatUnit(formatStr) { 5656 var chunks = chunkFormatString(formatStr); 5657 var i; 5658 var chunk; 5659 var candidate; 5660 var best; 5661 for (i = 0; i < chunks.length; i++) { 5662 chunk = chunks[i]; 5663 if (chunk.token) { 5664 candidate = largeTokenMap[chunk.token.charAt(0)]; 5665 if (candidate) { 5666 if (!best || candidate.value > best.value) { 5667 best = candidate; 5668 } 5669 } 5670 } 5671 } 5672 if (best) { 5673 return best.unit; 5674 } 5675 return null; 5676} 5677exports.queryMostGranularFormatUnit = queryMostGranularFormatUnit; 5678 5679 5680/***/ }), 5681/* 50 */ 5682/***/ (function(module, exports) { 5683 5684Object.defineProperty(exports, "__esModule", { value: true }); 5685var EventRange = /** @class */ (function () { 5686 function EventRange(unzonedRange, eventDef, eventInstance) { 5687 this.unzonedRange = unzonedRange; 5688 this.eventDef = eventDef; 5689 if (eventInstance) { 5690 this.eventInstance = eventInstance; 5691 } 5692 } 5693 return EventRange; 5694}()); 5695exports.default = EventRange; 5696 5697 5698/***/ }), 5699/* 51 */ 5700/***/ (function(module, exports, __webpack_require__) { 5701 5702Object.defineProperty(exports, "__esModule", { value: true }); 5703var tslib_1 = __webpack_require__(2); 5704var Class_1 = __webpack_require__(35); 5705var EmitterMixin_1 = __webpack_require__(13); 5706var ListenerMixin_1 = __webpack_require__(7); 5707var Model = /** @class */ (function (_super) { 5708 tslib_1.__extends(Model, _super); 5709 function Model() { 5710 var _this = _super.call(this) || this; 5711 _this._watchers = {}; 5712 _this._props = {}; 5713 _this.applyGlobalWatchers(); 5714 _this.constructed(); 5715 return _this; 5716 } 5717 Model.watch = function (name) { 5718 var args = []; 5719 for (var _i = 1; _i < arguments.length; _i++) { 5720 args[_i - 1] = arguments[_i]; 5721 } 5722 // subclasses should make a masked-copy of the superclass's map 5723 // TODO: write test 5724 if (!this.prototype.hasOwnProperty('_globalWatchArgs')) { 5725 this.prototype._globalWatchArgs = Object.create(this.prototype._globalWatchArgs); 5726 } 5727 this.prototype._globalWatchArgs[name] = args; 5728 }; 5729 Model.prototype.constructed = function () { 5730 // useful for monkeypatching. TODO: BaseClass? 5731 }; 5732 Model.prototype.applyGlobalWatchers = function () { 5733 var map = this._globalWatchArgs; 5734 var name; 5735 for (name in map) { 5736 this.watch.apply(this, [name].concat(map[name])); 5737 } 5738 }; 5739 Model.prototype.has = function (name) { 5740 return name in this._props; 5741 }; 5742 Model.prototype.get = function (name) { 5743 if (name === undefined) { 5744 return this._props; 5745 } 5746 return this._props[name]; 5747 }; 5748 Model.prototype.set = function (name, val) { 5749 var newProps; 5750 if (typeof name === 'string') { 5751 newProps = {}; 5752 newProps[name] = val === undefined ? null : val; 5753 } 5754 else { 5755 newProps = name; 5756 } 5757 this.setProps(newProps); 5758 }; 5759 Model.prototype.reset = function (newProps) { 5760 var oldProps = this._props; 5761 var changeset = {}; // will have undefined's to signal unsets 5762 var name; 5763 for (name in oldProps) { 5764 changeset[name] = undefined; 5765 } 5766 for (name in newProps) { 5767 changeset[name] = newProps[name]; 5768 } 5769 this.setProps(changeset); 5770 }; 5771 Model.prototype.unset = function (name) { 5772 var newProps = {}; 5773 var names; 5774 var i; 5775 if (typeof name === 'string') { 5776 names = [name]; 5777 } 5778 else { 5779 names = name; 5780 } 5781 for (i = 0; i < names.length; i++) { 5782 newProps[names[i]] = undefined; 5783 } 5784 this.setProps(newProps); 5785 }; 5786 Model.prototype.setProps = function (newProps) { 5787 var changedProps = {}; 5788 var changedCnt = 0; 5789 var name; 5790 var val; 5791 for (name in newProps) { 5792 val = newProps[name]; 5793 // a change in value? 5794 // if an object, don't check equality, because might have been mutated internally. 5795 // TODO: eventually enforce immutability. 5796 if (typeof val === 'object' || 5797 val !== this._props[name]) { 5798 changedProps[name] = val; 5799 changedCnt++; 5800 } 5801 } 5802 if (changedCnt) { 5803 this.trigger('before:batchChange', changedProps); 5804 for (name in changedProps) { 5805 val = changedProps[name]; 5806 this.trigger('before:change', name, val); 5807 this.trigger('before:change:' + name, val); 5808 } 5809 for (name in changedProps) { 5810 val = changedProps[name]; 5811 if (val === undefined) { 5812 delete this._props[name]; 5813 } 5814 else { 5815 this._props[name] = val; 5816 } 5817 this.trigger('change:' + name, val); 5818 this.trigger('change', name, val); 5819 } 5820 this.trigger('batchChange', changedProps); 5821 } 5822 }; 5823 Model.prototype.watch = function (name, depList, startFunc, stopFunc) { 5824 var _this = this; 5825 this.unwatch(name); 5826 this._watchers[name] = this._watchDeps(depList, function (deps) { 5827 var res = startFunc.call(_this, deps); 5828 if (res && res.then) { 5829 _this.unset(name); // put in an unset state while resolving 5830 res.then(function (val) { 5831 _this.set(name, val); 5832 }); 5833 } 5834 else { 5835 _this.set(name, res); 5836 } 5837 }, function (deps) { 5838 _this.unset(name); 5839 if (stopFunc) { 5840 stopFunc.call(_this, deps); 5841 } 5842 }); 5843 }; 5844 Model.prototype.unwatch = function (name) { 5845 var watcher = this._watchers[name]; 5846 if (watcher) { 5847 delete this._watchers[name]; 5848 watcher.teardown(); 5849 } 5850 }; 5851 Model.prototype._watchDeps = function (depList, startFunc, stopFunc) { 5852 var _this = this; 5853 var queuedChangeCnt = 0; 5854 var depCnt = depList.length; 5855 var satisfyCnt = 0; 5856 var values = {}; // what's passed as the `deps` arguments 5857 var bindTuples = []; // array of [ eventName, handlerFunc ] arrays 5858 var isCallingStop = false; 5859 var onBeforeDepChange = function (depName, val, isOptional) { 5860 queuedChangeCnt++; 5861 if (queuedChangeCnt === 1) { // first change to cause a "stop" ? 5862 if (satisfyCnt === depCnt) { // all deps previously satisfied? 5863 isCallingStop = true; 5864 stopFunc(values); 5865 isCallingStop = false; 5866 } 5867 } 5868 }; 5869 var onDepChange = function (depName, val, isOptional) { 5870 if (val === undefined) { // unsetting a value? 5871 // required dependency that was previously set? 5872 if (!isOptional && values[depName] !== undefined) { 5873 satisfyCnt--; 5874 } 5875 delete values[depName]; 5876 } 5877 else { // setting a value? 5878 // required dependency that was previously unset? 5879 if (!isOptional && values[depName] === undefined) { 5880 satisfyCnt++; 5881 } 5882 values[depName] = val; 5883 } 5884 queuedChangeCnt--; 5885 if (!queuedChangeCnt) { // last change to cause a "start"? 5886 // now finally satisfied or satisfied all along? 5887 if (satisfyCnt === depCnt) { 5888 // if the stopFunc initiated another value change, ignore it. 5889 // it will be processed by another change event anyway. 5890 if (!isCallingStop) { 5891 startFunc(values); 5892 } 5893 } 5894 } 5895 }; 5896 // intercept for .on() that remembers handlers 5897 var bind = function (eventName, handler) { 5898 _this.on(eventName, handler); 5899 bindTuples.push([eventName, handler]); 5900 }; 5901 // listen to dependency changes 5902 depList.forEach(function (depName) { 5903 var isOptional = false; 5904 if (depName.charAt(0) === '?') { // TODO: more DRY 5905 depName = depName.substring(1); 5906 isOptional = true; 5907 } 5908 bind('before:change:' + depName, function (val) { 5909 onBeforeDepChange(depName, val, isOptional); 5910 }); 5911 bind('change:' + depName, function (val) { 5912 onDepChange(depName, val, isOptional); 5913 }); 5914 }); 5915 // process current dependency values 5916 depList.forEach(function (depName) { 5917 var isOptional = false; 5918 if (depName.charAt(0) === '?') { // TODO: more DRY 5919 depName = depName.substring(1); 5920 isOptional = true; 5921 } 5922 if (_this.has(depName)) { 5923 values[depName] = _this.get(depName); 5924 satisfyCnt++; 5925 } 5926 else if (isOptional) { 5927 satisfyCnt++; 5928 } 5929 }); 5930 // initially satisfied 5931 if (satisfyCnt === depCnt) { 5932 startFunc(values); 5933 } 5934 return { 5935 teardown: function () { 5936 // remove all handlers 5937 for (var i = 0; i < bindTuples.length; i++) { 5938 _this.off(bindTuples[i][0], bindTuples[i][1]); 5939 } 5940 bindTuples = null; 5941 // was satisfied, so call stopFunc 5942 if (satisfyCnt === depCnt) { 5943 stopFunc(); 5944 } 5945 }, 5946 flash: function () { 5947 if (satisfyCnt === depCnt) { 5948 stopFunc(); 5949 startFunc(values); 5950 } 5951 } 5952 }; 5953 }; 5954 Model.prototype.flash = function (name) { 5955 var watcher = this._watchers[name]; 5956 if (watcher) { 5957 watcher.flash(); 5958 } 5959 }; 5960 return Model; 5961}(Class_1.default)); 5962exports.default = Model; 5963Model.prototype._globalWatchArgs = {}; // mutation protection in Model.watch 5964EmitterMixin_1.default.mixInto(Model); 5965ListenerMixin_1.default.mixInto(Model); 5966 5967 5968/***/ }), 5969/* 52 */ 5970/***/ (function(module, exports, __webpack_require__) { 5971 5972/* 5973USAGE: 5974 import { default as ParsableModelMixin, ParsableModelInterface } from './ParsableModelMixin' 5975in class: 5976 applyProps: ParsableModelInterface['applyProps'] 5977 applyManualStandardProps: ParsableModelInterface['applyManualStandardProps'] 5978 applyMiscProps: ParsableModelInterface['applyMiscProps'] 5979 isStandardProp: ParsableModelInterface['isStandardProp'] 5980 static defineStandardProps = ParsableModelMixin.defineStandardProps 5981 static copyVerbatimStandardProps = ParsableModelMixin.copyVerbatimStandardProps 5982after class: 5983 ParsableModelMixin.mixInto(TheClass) 5984*/ 5985Object.defineProperty(exports, "__esModule", { value: true });
5986var tslib_1 = __webpack_require__(2); 5987var util_1 = __webpack_require__(4); 5988var Mixin_1 = __webpack_require__(15); 5989var ParsableModelMixin = /** @class */ (function (_super) { 5990 tslib_1.__extends(ParsableModelMixin, _super); 5991 function ParsableModelMixin() { 5992 return _super !== null && _super.apply(this, arguments) || this; 5993 } 5994 ParsableModelMixin.defineStandardProps = function (propDefs) { 5995 var proto = this.prototype; 5996 if (!proto.hasOwnProperty('standardPropMap')) { 5997 proto.standardPropMap = Object.create(proto.standardPropMap); 5998 } 5999 util_1.copyOwnProps(propDefs, proto.standardPropMap); 6000 }; 6001 ParsableModelMixin.copyVerbatimStandardProps = function (src, dest) { 6002 var map = this.prototype.standardPropMap; 6003 var propName; 6004 for (propName in map) { 6005 if (src[propName] != null && // in the src object? 6006 map[propName] === true // false means "copy verbatim" 6007 ) { 6008 dest[propName] = src[propName]; 6009 } 6010 } 6011 }; 6012 /* 6013 Returns true/false for success. 6014 Meant to be only called ONCE, at object creation. 6015 */ 6016 ParsableModelMixin.prototype.applyProps = function (rawProps) { 6017 var standardPropMap = this.standardPropMap; 6018 var manualProps = {}; 6019 var miscProps = {}; 6020 var propName; 6021 for (propName in rawProps) { 6022 if (standardPropMap[propName] === true) { // copy verbatim 6023 this[propName] = rawProps[propName]; 6024 } 6025 else if (standardPropMap[propName] === false) { 6026 manualProps[propName] = rawProps[propName]; 6027 } 6028 else { 6029 miscProps[propName] = rawProps[propName]; 6030 } 6031 } 6032 this.applyMiscProps(miscProps); 6033 return this.applyManualStandardProps(manualProps); 6034 }; 6035 /* 6036 If subclasses override, they must call this supermethod and return the boolean response. 6037 Meant to be only called ONCE, at object creation. 6038 */ 6039 ParsableModelMixin.prototype.applyManualStandardProps = function (rawProps) { 6040 return true; 6041 }; 6042 /* 6043 Can be called even after initial object creation. 6044 */ 6045 ParsableModelMixin.prototype.applyMiscProps = function (rawProps) { 6046 // subclasses can implement 6047 }; 6048 /* 6049 TODO: why is this a method when defineStandardProps is static 6050 */ 6051 ParsableModelMixin.prototype.isStandardProp = function (propName) { 6052 return propName in this.standardPropMap; 6053 }; 6054 return ParsableModelMixin; 6055}(Mixin_1.default)); 6056exports.default = ParsableModelMixin; 6057ParsableModelMixin.prototype.standardPropMap = {}; // will be cloned by defineStandardProps 6058 6059 6060/***/ }), 6061/* 53 */ 6062/***/ (function(module, exports) { 6063 6064Object.defineProperty(exports, "__esModule", { value: true }); 6065var EventInstance = /** @class */ (function () { 6066 function EventInstance(def, dateProfile) { 6067 this.def = def; 6068 this.dateProfile = dateProfile; 6069 } 6070 EventInstance.prototype.toLegacy = function () { 6071 var dateProfile = this.dateProfile; 6072 var obj = this.def.toLegacy(); 6073 obj.start = dateProfile.start.clone(); 6074 obj.end = dateProfile.end ? dateProfile.end.clone() : null; 6075 return obj; 6076 }; 6077 return EventInstance; 6078}()); 6079exports.default = EventInstance; 6080 6081 6082/***/ }), 6083/* 54 */ 6084/***/ (function(module, exports, __webpack_require__) { 6085 6086Object.defineProperty(exports, "__esModule", { value: true }); 6087var tslib_1 = __webpack_require__(2); 6088var $ = __webpack_require__(3); 6089var moment = __webpack_require__(0); 6090var EventDef_1 = __webpack_require__(37); 6091var EventInstance_1 = __webpack_require__(53); 6092var EventDateProfile_1 = __webpack_require__(16); 6093var RecurringEventDef = /** @class */ (function (_super) { 6094 tslib_1.__extends(RecurringEventDef, _super); 6095 function RecurringEventDef() { 6096 return _super !== null && _super.apply(this, arguments) || this; 6097 } 6098 RecurringEventDef.prototype.isAllDay = function () { 6099 return !this.startTime && !this.endTime; 6100 }; 6101 RecurringEventDef.prototype.buildInstances = function (unzonedRange) { 6102 var calendar = this.source.calendar; 6103 var unzonedDate = unzonedRange.getStart(); 6104 var unzonedEnd = unzonedRange.getEnd(); 6105 var zonedDayStart; 6106 var instanceStart; 6107 var instanceEnd; 6108 var instances = []; 6109 while (unzonedDate.isBefore(unzonedEnd)) { 6110 // if everyday, or this particular day-of-week 6111 if (!this.dowHash || this.dowHash[unzonedDate.day()]) { 6112 zonedDayStart = calendar.applyTimezone(unzonedDate); 6113 instanceStart = zonedDayStart.clone(); 6114 instanceEnd = null; 6115 if (this.startTime) { 6116 instanceStart.time(this.startTime); 6117 } 6118 else { 6119 instanceStart.stripTime(); 6120 } 6121 if (this.endTime) { 6122 instanceEnd = zonedDayStart.clone().time(this.endTime); 6123 } 6124 instances.push(new EventInstance_1.default(this, // definition 6125 new EventDateProfile_1.default(instanceStart, instanceEnd, calendar))); 6126 } 6127 unzonedDate.add(1, 'days'); 6128 } 6129 return instances; 6130 }; 6131 RecurringEventDef.prototype.setDow = function (dowNumbers) { 6132 if (!this.dowHash) { 6133 this.dowHash = {}; 6134 } 6135 for (var i = 0; i < dowNumbers.length; i++) { 6136 this.dowHash[dowNumbers[i]] = true; 6137 } 6138 }; 6139 RecurringEventDef.prototype.clone = function () { 6140 var def = _super.prototype.clone.call(this); 6141 if (def.startTime) { 6142 def.startTime = moment.duration(this.startTime); 6143 } 6144 if (def.endTime) { 6145 def.endTime = moment.duration(this.endTime); 6146 } 6147 if (this.dowHash) { 6148 def.dowHash = $.extend({}, this.dowHash); 6149 } 6150 return def; 6151 }; 6152 return RecurringEventDef; 6153}(EventDef_1.default)); 6154exports.default = RecurringEventDef; 6155/* 6156HACK to work with TypeScript mixins 6157NOTE: if super-method fails, should still attempt to apply 6158*/ 6159RecurringEventDef.prototype.applyProps = function (rawProps) { 6160 var superSuccess = EventDef_1.default.prototype.applyProps.call(this, rawProps); 6161 if (rawProps.start) { 6162 this.startTime = moment.duration(rawProps.start); 6163 } 6164 if (rawProps.end) { 6165 this.endTime = moment.duration(rawProps.end); 6166 } 6167 if (rawProps.dow) { 6168 this.setDow(rawProps.dow); 6169 } 6170 return superSuccess; 6171}; 6172// Parsing 6173// --------------------------------------------------------------------------------------------------------------------- 6174RecurringEventDef.defineStandardProps({ 6175 start: false, 6176 end: false, 6177 dow: false 6178}); 6179 6180 6181/***/ }), 6182/* 55 */ 6183/***/ (function(module, exports, __webpack_require__) { 6184 6185Object.defineProperty(exports, "__esModule", { value: true });
6186var moment = __webpack_require__(0); 6187var util_1 = __webpack_require__(4); 6188var UnzonedRange_1 = __webpack_require__(5); 6189var DateProfileGenerator = /** @class */ (function () { 6190 function DateProfileGenerator(_view) { 6191 this._view = _view; 6192 } 6193 DateProfileGenerator.prototype.opt = function (name) { 6194 return this._view.opt(name); 6195 }; 6196 DateProfileGenerator.prototype.trimHiddenDays = function (unzonedRange) { 6197 return this._view.trimHiddenDays(unzonedRange); 6198 }; 6199 DateProfileGenerator.prototype.msToUtcMoment = function (ms, forceAllDay) { 6200 return this._view.calendar.msToUtcMoment(ms, forceAllDay); 6201 }; 6202 /* Date Range Computation 6203 ------------------------------------------------------------------------------------------------------------------*/ 6204 // Builds a structure with info about what the dates/ranges will be for the "prev" view. 6205 DateProfileGenerator.prototype.buildPrev = function (currentDateProfile) { 6206 var prevDate = currentDateProfile.date.clone() 6207 .startOf(currentDateProfile.currentRangeUnit) 6208 .subtract(currentDateProfile.dateIncrement); 6209 return this.build(prevDate, -1); 6210 }; 6211 // Builds a structure with info about what the dates/ranges will be for the "next" view. 6212 DateProfileGenerator.prototype.buildNext = function (currentDateProfile) { 6213 var nextDate = currentDateProfile.date.clone() 6214 .startOf(currentDateProfile.currentRangeUnit) 6215 .add(currentDateProfile.dateIncrement); 6216 return this.build(nextDate, 1); 6217 }; 6218 // Builds a structure holding dates/ranges for rendering around the given date. 6219 // Optional direction param indicates whether the date is being incremented/decremented 6220 // from its previous value. decremented = -1, incremented = 1 (default). 6221 DateProfileGenerator.prototype.build = function (date, direction, forceToValid) { 6222 if (forceToValid === void 0) { forceToValid = false; } 6223 var isDateAllDay = !date.hasTime(); 6224 var validUnzonedRange; 6225 var minTime = null; 6226 var maxTime = null; 6227 var currentInfo; 6228 var isRangeAllDay; 6229 var renderUnzonedRange; 6230 var activeUnzonedRange; 6231 var isValid; 6232 validUnzonedRange = this.buildValidRange(); 6233 validUnzonedRange = this.trimHiddenDays(validUnzonedRange); 6234 if (forceToValid) { 6235 date = this.msToUtcMoment(validUnzonedRange.constrainDate(date), // returns MS 6236 isDateAllDay); 6237 } 6238 currentInfo = this.buildCurrentRangeInfo(date, direction); 6239 isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit); 6240 renderUnzonedRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.unzonedRange), currentInfo.unit, isRangeAllDay); 6241 renderUnzonedRange = this.trimHiddenDays(renderUnzonedRange); 6242 activeUnzonedRange = renderUnzonedRange.clone(); 6243 if (!this.opt('showNonCurrentDates')) { 6244 activeUnzonedRange = activeUnzonedRange.intersect(currentInfo.unzonedRange); 6245 } 6246 minTime = moment.duration(this.opt('minTime')); 6247 maxTime = moment.duration(this.opt('maxTime')); 6248 activeUnzonedRange = this.adjustActiveRange(activeUnzonedRange, minTime, maxTime); 6249 activeUnzonedRange = activeUnzonedRange.intersect(validUnzonedRange); // might return null 6250 if (activeUnzonedRange) { 6251 date = this.msToUtcMoment(activeUnzonedRange.constrainDate(date), // returns MS 6252 isDateAllDay); 6253 } 6254 // it's invalid if the originally requested date is not contained, 6255 // or if the range is completely outside of the valid range. 6256 isValid = currentInfo.unzonedRange.intersectsWith(validUnzonedRange); 6257 return { 6258 // constraint for where prev/next operations can go and where events can be dragged/resized to. 6259 // an object with optional start and end properties. 6260 validUnzonedRange: validUnzonedRange, 6261 // range the view is formally responsible for. 6262 // for example, a month view might have 1st-31st, excluding padded dates 6263 currentUnzonedRange: currentInfo.unzonedRange, 6264 // name of largest unit being displayed, like "month" or "week" 6265 currentRangeUnit: currentInfo.unit, 6266 isRangeAllDay: isRangeAllDay, 6267 // dates that display events and accept drag-n-drop 6268 // will be `null` if no dates accept events 6269 activeUnzonedRange: activeUnzonedRange, 6270 // date range with a rendered skeleton 6271 // includes not-active days that need some sort of DOM 6272 renderUnzonedRange: renderUnzonedRange, 6273 // Duration object that denotes the first visible time of any given day 6274 minTime: minTime, 6275 // Duration object that denotes the exclusive visible end time of any given day 6276 maxTime: maxTime, 6277 isValid: isValid, 6278 date: date, 6279 // how far the current date will move for a prev/next operation 6280 dateIncrement: this.buildDateIncrement(currentInfo.duration) 6281 // pass a fallback (might be null) ^ 6282 }; 6283 }; 6284 // Builds an object with optional start/end properties. 6285 // Indicates the minimum/maximum dates to display. 6286 // not responsible for trimming hidden days. 6287 DateProfileGenerator.prototype.buildValidRange = function () { 6288 return this._view.getUnzonedRangeOption('validRange', this._view.calendar.getNow()) || 6289 new UnzonedRange_1.default(); // completely open-ended 6290 }; 6291 // Builds a structure with info about the "current" range, the range that is 6292 // highlighted as being the current month for example. 6293 // See build() for a description of `direction`. 6294 // Guaranteed to have `range` and `unit` properties. `duration` is optional. 6295 // TODO: accept a MS-time instead of a moment `date`? 6296 DateProfileGenerator.prototype.buildCurrentRangeInfo = function (date, direction) { 6297 var viewSpec = this._view.viewSpec; 6298 var duration = null; 6299 var unit = null; 6300 var unzonedRange = null; 6301 var dayCount; 6302 if (viewSpec.duration) { 6303 duration = viewSpec.duration; 6304 unit = viewSpec.durationUnit; 6305 unzonedRange = this.buildRangeFromDuration(date, direction, duration, unit); 6306 } 6307 else if ((dayCount = this.opt('dayCount'))) { 6308 unit = 'day'; 6309 unzonedRange = this.buildRangeFromDayCount(date, direction, dayCount); 6310 } 6311 else if ((unzonedRange = this.buildCustomVisibleRange(date))) { 6312 unit = util_1.computeGreatestUnit(unzonedRange.getStart(), unzonedRange.getEnd()); 6313 } 6314 else { 6315 duration = this.getFallbackDuration(); 6316 unit = util_1.computeGreatestUnit(duration); 6317 unzonedRange = this.buildRangeFromDuration(date, direction, duration, unit); 6318 } 6319 return { duration: duration, unit: unit, unzonedRange: unzonedRange }; 6320 }; 6321 DateProfileGenerator.prototype.getFallbackDuration = function () { 6322 return moment.duration({ days: 1 }); 6323 }; 6324 // Returns a new activeUnzonedRange to have time values (un-ambiguate) 6325 // minTime or maxTime causes the range to expand. 6326 DateProfileGenerator.prototype.adjustActiveRange = function (unzonedRange, minTime, maxTime) { 6327 var start = unzonedRange.getStart(); 6328 var end = unzonedRange.getEnd(); 6329 if (this._view.usesMinMaxTime) { 6330 if (minTime < 0) {
6331 start.time(0).add(minTime); 6332 } 6333 if (maxTime > 24 * 60 * 60 * 1000) { // beyond 24 hours? 6334 end.time(maxTime - (24 * 60 * 60 * 1000)); 6335 } 6336 } 6337 return new UnzonedRange_1.default(start, end); 6338 }; 6339 // Builds the "current" range when it is specified as an explicit duration. 6340 // `unit` is the already-computed computeGreatestUnit value of duration. 6341 // TODO: accept a MS-time instead of a moment `date`? 6342 DateProfileGenerator.prototype.buildRangeFromDuration = function (date, direction, duration, unit) { 6343 var alignment = this.opt('dateAlignment'); 6344 var dateIncrementInput; 6345 var dateIncrementDuration; 6346 var start; 6347 var end; 6348 var res; 6349 // compute what the alignment should be 6350 if (!alignment) { 6351 dateIncrementInput = this.opt('dateIncrement'); 6352 if (dateIncrementInput) { 6353 dateIncrementDuration = moment.duration(dateIncrementInput); 6354 // use the smaller of the two units 6355 if (dateIncrementDuration < duration) { 6356 alignment = util_1.computeDurationGreatestUnit(dateIncrementDuration, dateIncrementInput); 6357 } 6358 else { 6359 alignment = unit; 6360 } 6361 } 6362 else { 6363 alignment = unit; 6364 } 6365 } 6366 // if the view displays a single day or smaller 6367 if (duration.as('days') <= 1) { 6368 if (this._view.isHiddenDay(start)) { 6369 start = this._view.skipHiddenDays(start, direction); 6370 start.startOf('day'); 6371 } 6372 } 6373 function computeRes() { 6374 start = date.clone().startOf(alignment); 6375 end = start.clone().add(duration); 6376 res = new UnzonedRange_1.default(start, end); 6377 } 6378 computeRes(); 6379 // if range is completely enveloped by hidden days, go past the hidden days 6380 if (!this.trimHiddenDays(res)) { 6381 date = this._view.skipHiddenDays(date, direction); 6382 computeRes(); 6383 } 6384 return res; 6385 }; 6386 // Builds the "current" range when a dayCount is specified. 6387 // TODO: accept a MS-time instead of a moment `date`? 6388 DateProfileGenerator.prototype.buildRangeFromDayCount = function (date, direction, dayCount) { 6389 var customAlignment = this.opt('dateAlignment'); 6390 var runningCount = 0; 6391 var start; 6392 var end; 6393 if (customAlignment || direction !== -1) { 6394 start = date.clone(); 6395 if (customAlignment) { 6396 start.startOf(customAlignment); 6397 } 6398 start.startOf('day'); 6399 start = this._view.skipHiddenDays(start); 6400 end = start.clone(); 6401 do { 6402 end.add(1, 'day'); 6403 if (!this._view.isHiddenDay(end)) { 6404 runningCount++; 6405 } 6406 } while (runningCount < dayCount); 6407 } 6408 else { 6409 end = date.clone().startOf('day').add(1, 'day'); 6410 end = this._view.skipHiddenDays(end, -1, true); 6411 start = end.clone(); 6412 do { 6413 start.add(-1, 'day'); 6414 if (!this._view.isHiddenDay(start)) { 6415 runningCount++; 6416 } 6417 } while (runningCount < dayCount); 6418 } 6419 return new UnzonedRange_1.default(start, end); 6420 }; 6421 // Builds a normalized range object for the "visible" range, 6422 // which is a way to define the currentUnzonedRange and activeUnzonedRange at the same time. 6423 // TODO: accept a MS-time instead of a moment `date`? 6424 DateProfileGenerator.prototype.buildCustomVisibleRange = function (date) { 6425 var visibleUnzonedRange = this._view.getUnzonedRangeOption('visibleRange', this._view.calendar.applyTimezone(date) // correct zone. also generates new obj that avoids mutations 6426 ); 6427 if (visibleUnzonedRange && (visibleUnzonedRange.startMs == null || visibleUnzonedRange.endMs == null)) { 6428 return null; 6429 } 6430 return visibleUnzonedRange; 6431 }; 6432 // Computes the range that will represent the element/cells for *rendering*, 6433 // but which may have voided days/times. 6434 // not responsible for trimming hidden days. 6435 DateProfileGenerator.prototype.buildRenderRange = function (currentUnzonedRange, currentRangeUnit, isRangeAllDay) { 6436 return currentUnzonedRange.clone(); 6437 }; 6438 // Compute the duration value that should be added/substracted to the current date 6439 // when a prev/next operation happens. 6440 DateProfileGenerator.prototype.buildDateIncrement = function (fallback) { 6441 var dateIncrementInput = this.opt('dateIncrement'); 6442 var customAlignment; 6443 if (dateIncrementInput) { 6444 return moment.duration(dateIncrementInput); 6445 } 6446 else if ((customAlignment = this.opt('dateAlignment'))) { 6447 return moment.duration(1, customAlignment); 6448 } 6449 else if (fallback) { 6450 return fallback; 6451 } 6452 else { 6453 return moment.duration({ days: 1 }); 6454 } 6455 }; 6456 return DateProfileGenerator; 6457}()); 6458exports.default = DateProfileGenerator; 6459 6460 6461/***/ }), 6462/* 56 */ 6463/***/ (function(module, exports, __webpack_require__) { 6464 6465Object.defineProperty(exports, "__esModule", { value: true });
6466var tslib_1 = __webpack_require__(2); 6467var $ = __webpack_require__(3); 6468var util_1 = __webpack_require__(4); 6469var Promise_1 = __webpack_require__(21); 6470var EventSource_1 = __webpack_require__(6); 6471var SingleEventDef_1 = __webpack_require__(9); 6472var ArrayEventSource = /** @class */ (function (_super) { 6473 tslib_1.__extends(ArrayEventSource, _super); 6474 function ArrayEventSource(calendar) { 6475 var _this = _super.call(this, calendar) || this; 6476 _this.eventDefs = []; // for if setRawEventDefs is never called 6477 return _this; 6478 } 6479 ArrayEventSource.parse = function (rawInput, calendar) { 6480 var rawProps; 6481 // normalize raw input 6482 if ($.isArray(rawInput.events)) { // extended form 6483 rawProps = rawInput; 6484 } 6485 else if ($.isArray(rawInput)) { // short form 6486 rawProps = { events: rawInput }; 6487 } 6488 if (rawProps) { 6489 return EventSource_1.default.parse.call(this, rawProps, calendar); 6490 } 6491 return false; 6492 }; 6493 ArrayEventSource.prototype.setRawEventDefs = function (rawEventDefs) { 6494 this.rawEventDefs = rawEventDefs; 6495 this.eventDefs = this.parseEventDefs(rawEventDefs); 6496 }; 6497 ArrayEventSource.prototype.fetch = function (start, end, timezone) { 6498 var eventDefs = this.eventDefs; 6499 var i; 6500 if (this.currentTimezone != null && 6501 this.currentTimezone !== timezone) { 6502 for (i = 0; i < eventDefs.length; i++) { 6503 if (eventDefs[i] instanceof SingleEventDef_1.default) { 6504 eventDefs[i].rezone(); 6505 } 6506 } 6507 } 6508 this.currentTimezone = timezone; 6509 return Promise_1.default.resolve(eventDefs); 6510 }; 6511 ArrayEventSource.prototype.addEventDef = function (eventDef) { 6512 this.eventDefs.push(eventDef); 6513 }; 6514 /* 6515 eventDefId already normalized to a string 6516 */ 6517 ArrayEventSource.prototype.removeEventDefsById = function (eventDefId) { 6518 return util_1.removeMatching(this.eventDefs, function (eventDef) { 6519 return eventDef.id === eventDefId; 6520 }); 6521 }; 6522 ArrayEventSource.prototype.removeAllEventDefs = function () { 6523 this.eventDefs = []; 6524 }; 6525 ArrayEventSource.prototype.getPrimitive = function () { 6526 return this.rawEventDefs; 6527 }; 6528 ArrayEventSource.prototype.applyManualStandardProps = function (rawProps) { 6529 var superSuccess = _super.prototype.applyManualStandardProps.call(this, rawProps); 6530 this.setRawEventDefs(rawProps.events); 6531 return superSuccess; 6532 }; 6533 return ArrayEventSource; 6534}(EventSource_1.default)); 6535exports.default = ArrayEventSource; 6536ArrayEventSource.defineStandardProps({ 6537 events: false // don't automatically transfer 6538}); 6539 6540 6541/***/ }), 6542/* 57 */ 6543/***/ (function(module, exports, __webpack_require__) { 6544 6545Object.defineProperty(exports, "__esModule", { value: true }); 6546var StandardTheme_1 = __webpack_require__(221); 6547var JqueryUiTheme_1 = __webpack_require__(222); 6548var themeClassHash = {}; 6549function defineThemeSystem(themeName, themeClass) { 6550 themeClassHash[themeName] = themeClass; 6551} 6552exports.defineThemeSystem = defineThemeSystem; 6553function getThemeSystemClass(themeSetting) { 6554 if (!themeSetting) { 6555 return StandardTheme_1.default; 6556 } 6557 else if (themeSetting === true) { 6558 return JqueryUiTheme_1.default; 6559 } 6560 else { 6561 return themeClassHash[themeSetting]; 6562 } 6563} 6564exports.getThemeSystemClass = getThemeSystemClass; 6565 6566 6567/***/ }), 6568/* 58 */ 6569/***/ (function(module, exports, __webpack_require__) { 6570 6571Object.defineProperty(exports, "__esModule", { value: true }); 6572var $ = __webpack_require__(3); 6573var util_1 = __webpack_require__(4); 6574/* 6575A cache for the left/right/top/bottom/width/height values for one or more elements. 6576Works with both offset (from topleft document) and position (from offsetParent). 6577 6578options: 6579- els 6580- isHorizontal 6581- isVertical 6582*/ 6583var CoordCache = /** @class */ (function () { 6584 function CoordCache(options) { 6585 this.isHorizontal = false; // whether to query for left/right/width 6586 this.isVertical = false; // whether to query for top/bottom/height 6587 this.els = $(options.els); 6588 this.isHorizontal = options.isHorizontal; 6589 this.isVertical = options.isVertical; 6590 this.forcedOffsetParentEl = options.offsetParent ? $(options.offsetParent) : null; 6591 } 6592 // Queries the els for coordinates and stores them. 6593 // Call this method before using and of the get* methods below. 6594 CoordCache.prototype.build = function () { 6595 var offsetParentEl = this.forcedOffsetParentEl; 6596 if (!offsetParentEl && this.els.length > 0) { 6597 offsetParentEl = this.els.eq(0).offsetParent(); 6598 } 6599 this.origin = offsetParentEl ? 6600 offsetParentEl.offset() : 6601 null;
6602 this.boundingRect = this.queryBoundingRect(); 6603 if (this.isHorizontal) { 6604 this.buildElHorizontals(); 6605 } 6606 if (this.isVertical) { 6607 this.buildElVerticals(); 6608 } 6609 }; 6610 // Destroys all internal data about coordinates, freeing memory 6611 CoordCache.prototype.clear = function () { 6612 this.origin = null; 6613 this.boundingRect = null; 6614 this.lefts = null; 6615 this.rights = null; 6616 this.tops = null; 6617 this.bottoms = null; 6618 }; 6619 // When called, if coord caches aren't built, builds them 6620 CoordCache.prototype.ensureBuilt = function () { 6621 if (!this.origin) { 6622 this.build(); 6623 } 6624 }; 6625 // Populates the left/right internal coordinate arrays 6626 CoordCache.prototype.buildElHorizontals = function () { 6627 var lefts = []; 6628 var rights = []; 6629 this.els.each(function (i, node) { 6630 var el = $(node); 6631 var left = el.offset().left; 6632 var width = el.outerWidth(); 6633 lefts.push(left); 6634 rights.push(left + width); 6635 }); 6636 this.lefts = lefts; 6637 this.rights = rights; 6638 }; 6639 // Populates the top/bottom internal coordinate arrays 6640 CoordCache.prototype.buildElVerticals = function () { 6641 var tops = []; 6642 var bottoms = []; 6643 this.els.each(function (i, node) { 6644 var el = $(node); 6645 var top = el.offset().top; 6646 var height = el.outerHeight(); 6647 tops.push(top); 6648 bottoms.push(top + height); 6649 }); 6650 this.tops = tops; 6651 this.bottoms = bottoms; 6652 }; 6653 // Given a left offset (from document left), returns the index of the el that it horizontally intersects. 6654 // If no intersection is made, returns undefined. 6655 CoordCache.prototype.getHorizontalIndex = function (leftOffset) { 6656 this.ensureBuilt(); 6657 var lefts = this.lefts; 6658 var rights = this.rights; 6659 var len = lefts.length; 6660 var i; 6661 for (i = 0; i < len; i++) { 6662 if (leftOffset >= lefts[i] && leftOffset < rights[i]) { 6663 return i; 6664 } 6665 } 6666 }; 6667 // Given a top offset (from document top), returns the index of the el that it vertically intersects. 6668 // If no intersection is made, returns undefined. 6669 CoordCache.prototype.getVerticalIndex = function (topOffset) { 6670 this.ensureBuilt(); 6671 var tops = this.tops; 6672 var bottoms = this.bottoms; 6673 var len = tops.length; 6674 var i; 6675 for (i = 0; i < len; i++) { 6676 if (topOffset >= tops[i] && topOffset < bottoms[i]) { 6677 return i; 6678 } 6679 } 6680 }; 6681 // Gets the left offset (from document left) of the element at the given index 6682 CoordCache.prototype.getLeftOffset = function (leftIndex) { 6683 this.ensureBuilt(); 6684 return this.lefts[leftIndex]; 6685 }; 6686 // Gets the left position (from offsetParent left) of the element at the given index 6687 CoordCache.prototype.getLeftPosition = function (leftIndex) { 6688 this.ensureBuilt(); 6689 return this.lefts[leftIndex] - this.origin.left; 6690 }; 6691 // Gets the right offset (from document left) of the element at the given index. 6692 // This value is NOT relative to the document's right edge, like the CSS concept of "right" would be. 6693 CoordCache.prototype.getRightOffset = function (leftIndex) { 6694 this.ensureBuilt(); 6695 return this.rights[leftIndex]; 6696 }; 6697 // Gets the right position (from offsetParent left) of the element at the given index. 6698 // This value is NOT relative to the offsetParent's right edge, like the CSS concept of "right" would be. 6699 CoordCache.prototype.getRightPosition = function (leftIndex) { 6700 this.ensureBuilt(); 6701 return this.rights[leftIndex] - this.origin.left; 6702 }; 6703 // Gets the width of the element at the given index 6704 CoordCache.prototype.getWidth = function (leftIndex) { 6705 this.ensureBuilt(); 6706 return this.rights[leftIndex] - this.lefts[leftIndex]; 6707 }; 6708 // Gets the top offset (from document top) of the element at the given index 6709 CoordCache.prototype.getTopOffset = function (topIndex) { 6710 this.ensureBuilt(); 6711 return this.tops[topIndex]; 6712 }; 6713 // Gets the top position (from offsetParent top) of the element at the given position 6714 CoordCache.prototype.getTopPosition = function (topIndex) { 6715 this.ensureBuilt(); 6716 return this.tops[topIndex] - this.origin.top; 6717 }; 6718 // Gets the bottom offset (from the document top) of the element at the given index. 6719 // This value is NOT relative to the offsetParent's bottom edge, like the CSS concept of "bottom" would be. 6720 CoordCache.prototype.getBottomOffset = function (topIndex) { 6721 this.ensureBuilt(); 6722 return this.bottoms[topIndex]; 6723 }; 6724 // Gets the bottom position (from the offsetParent top) of the element at the given index. 6725 // This value is NOT relative to the offsetParent's bottom edge, like the CSS concept of "bottom" would be. 6726 CoordCache.prototype.getBottomPosition = function (topIndex) { 6727 this.ensureBuilt(); 6728 return this.bottoms[topIndex] - this.origin.top; 6729 }; 6730 // Gets the height of the element at the given index 6731 CoordCache.prototype.getHeight = function (topIndex) { 6732 this.ensureBuilt(); 6733 return this.bottoms[topIndex] - this.tops[topIndex]; 6734 }; 6735 // Bounding Rect 6736 // TODO: decouple this from CoordCache 6737 // Compute and return what the elements' bounding rectangle is, from the user's perspective. 6738 // Right now, only returns a rectangle if constrained by an overflow:scroll element. 6739 // Returns null if there are no elements 6740 CoordCache.prototype.queryBoundingRect = function () { 6741 var scrollParentEl; 6742 if (this.els.length > 0) { 6743 scrollParentEl = util_1.getScrollParent(this.els.eq(0)); 6744 if (!scrollParentEl.is(document) && 6745 !scrollParentEl.is('html,body') // don't consider these bounding rects. solves issue 3615 6746 ) { 6747 return util_1.getClientRect(scrollParentEl); 6748 } 6749 } 6750 return null; 6751 }; 6752 CoordCache.prototype.isPointInBounds = function (leftOffset, topOffset) { 6753 return this.isLeftInBounds(leftOffset) && this.isTopInBounds(topOffset); 6754 }; 6755 CoordCache.prototype.isLeftInBounds = function (leftOffset) { 6756 return !this.boundingRect || (leftOffset >= this.boundingRect.left && leftOffset < this.boundingRect.right); 6757 }; 6758 CoordCache.prototype.isTopInBounds = function (topOffset) { 6759 return !this.boundingRect || (topOffset >= this.boundingRect.top && topOffset < this.boundingRect.bottom); 6760 }; 6761 return CoordCache; 6762}()); 6763exports.default = CoordCache; 6764 6765 6766/***/ }), 6767/* 59 */ 6768/***/ (function(module, exports, __webpack_require__) { 6769 6770Object.defineProperty(exports, "__esModule", { value: true });
6771var $ = __webpack_require__(3); 6772var util_1 = __webpack_require__(4); 6773var ListenerMixin_1 = __webpack_require__(7); 6774var GlobalEmitter_1 = __webpack_require__(23); 6775/* Tracks a drag's mouse movement, firing various handlers 6776----------------------------------------------------------------------------------------------------------------------*/ 6777// TODO: use Emitter 6778var DragListener = /** @class */ (function () { 6779 function DragListener(options) { 6780 this.isInteracting = false; 6781 this.isDistanceSurpassed = false; 6782 this.isDelayEnded = false; 6783 this.isDragging = false; 6784 this.isTouch = false; 6785 this.isGeneric = false; // initiated by 'dragstart' (jqui) 6786 this.shouldCancelTouchScroll = true; 6787 this.scrollAlwaysKills = false; 6788 this.isAutoScroll = false; 6789 // defaults 6790 this.scrollSensitivity = 30; // pixels from edge for scrolling to start 6791 this.scrollSpeed = 200; // pixels per second, at maximum speed 6792 this.scrollIntervalMs = 50; // millisecond wait between scroll increment 6793 this.options = options || {}; 6794 } 6795 // Interaction (high-level) 6796 // ----------------------------------------------------------------------------------------------------------------- 6797 DragListener.prototype.startInteraction = function (ev, extraOptions) { 6798 if (extraOptions === void 0) { extraOptions = {}; } 6799 if (ev.type === 'mousedown') { 6800 if (GlobalEmitter_1.default.get().shouldIgnoreMouse()) { 6801 return; 6802 } 6803 else if (!util_1.isPrimaryMouseButton(ev)) { 6804 return; 6805 } 6806 else { 6807 ev.preventDefault(); // prevents native selection in most browsers 6808 } 6809 } 6810 if (!this.isInteracting) { 6811 // process options 6812 this.delay = util_1.firstDefined(extraOptions.delay, this.options.delay, 0); 6813 this.minDistance = util_1.firstDefined(extraOptions.distance, this.options.distance, 0); 6814 this.subjectEl = this.options.subjectEl; 6815 util_1.preventSelection($('body')); 6816 this.isInteracting = true; 6817 this.isTouch = util_1.getEvIsTouch(ev); 6818 this.isGeneric = ev.type === 'dragstart'; 6819 this.isDelayEnded = false; 6820 this.isDistanceSurpassed = false; 6821 this.originX = util_1.getEvX(ev); 6822 this.originY = util_1.getEvY(ev); 6823 this.scrollEl = util_1.getScrollParent($(ev.target)); 6824 this.bindHandlers(); 6825 this.initAutoScroll(); 6826 this.handleInteractionStart(ev); 6827 this.startDelay(ev); 6828 if (!this.minDistance) { 6829 this.handleDistanceSurpassed(ev); 6830 } 6831 } 6832 }; 6833 DragListener.prototype.handleInteractionStart = function (ev) { 6834 this.trigger('interactionStart', ev); 6835 }; 6836 DragListener.prototype.endInteraction = function (ev, isCancelled) { 6837 if (this.isInteracting) { 6838 this.endDrag(ev); 6839 if (this.delayTimeoutId) { 6840 clearTimeout(this.delayTimeoutId); 6841 this.delayTimeoutId = null; 6842 } 6843 this.destroyAutoScroll(); 6844 this.unbindHandlers(); 6845 this.isInteracting = false; 6846 this.handleInteractionEnd(ev, isCancelled); 6847 util_1.allowSelection($('body')); 6848 } 6849 }; 6850 DragListener.prototype.handleInteractionEnd = function (ev, isCancelled) { 6851 this.trigger('interactionEnd', ev, isCancelled || false); 6852 }; 6853 // Binding To DOM 6854 // ----------------------------------------------------------------------------------------------------------------- 6855 DragListener.prototype.bindHandlers = function () { 6856 // some browsers (Safari in iOS 10) don't allow preventDefault on touch events that are bound after touchstart, 6857 // so listen to the GlobalEmitter singleton, which is always bound, instead of the document directly. 6858 var globalEmitter = GlobalEmitter_1.default.get(); 6859 if (this.isGeneric) { 6860 this.listenTo($(document), { 6861 drag: this.handleMove, 6862 dragstop: this.endInteraction 6863 }); 6864 } 6865 else if (this.isTouch) { 6866 this.listenTo(globalEmitter, { 6867 touchmove: this.handleTouchMove, 6868 touchend: this.endInteraction, 6869 scroll: this.handleTouchScroll 6870 }); 6871 } 6872 else { 6873 this.listenTo(globalEmitter, { 6874 mousemove: this.handleMouseMove, 6875 mouseup: this.endInteraction 6876 }); 6877 } 6878 this.listenTo(globalEmitter, { 6879 selectstart: util_1.preventDefault, 6880 contextmenu: util_1.preventDefault // long taps would open menu on Chrome dev tools 6881 }); 6882 }; 6883 DragListener.prototype.unbindHandlers = function () { 6884 this.stopListeningTo(GlobalEmitter_1.default.get()); 6885 this.stopListeningTo($(document)); // for isGeneric 6886 }; 6887 // Drag (high-level) 6888 // ----------------------------------------------------------------------------------------------------------------- 6889 // extraOptions ignored if drag already started 6890 DragListener.prototype.startDrag = function (ev, extraOptions) { 6891 this.startInteraction(ev, extraOptions); // ensure interaction began 6892 if (!this.isDragging) { 6893 this.isDragging = true; 6894 this.handleDragStart(ev); 6895 } 6896 }; 6897 DragListener.prototype.handleDragStart = function (ev) { 6898 this.trigger('dragStart', ev); 6899 }; 6900 DragListener.prototype.handleMove = function (ev) { 6901 var dx = util_1.getEvX(ev) - this.originX; 6902 var dy = util_1.getEvY(ev) - this.originY; 6903 var minDistance = this.minDistance; 6904 var distanceSq; // current distance from the origin, squared 6905 if (!this.isDistanceSurpassed) { 6906 distanceSq = dx * dx + dy * dy; 6907 if (distanceSq >= minDistance * minDistance) { // use pythagorean theorem 6908 this.handleDistanceSurpassed(ev); 6909 } 6910 } 6911 if (this.isDragging) { 6912 this.handleDrag(dx, dy, ev); 6913 } 6914 }; 6915 // Called while the mouse is being moved and when we know a legitimate drag is taking place 6916 DragListener.prototype.handleDrag = function (dx, dy, ev) { 6917 this.trigger('drag', dx, dy, ev); 6918 this.updateAutoScroll(ev); // will possibly cause scrolling 6919 }; 6920 DragListener.prototype.endDrag = function (ev) { 6921 if (this.isDragging) { 6922 this.isDragging = false; 6923 this.handleDragEnd(ev); 6924 } 6925 }; 6926 DragListener.prototype.handleDragEnd = function (ev) { 6927 this.trigger('dragEnd', ev); 6928 }; 6929 // Delay 6930 // ----------------------------------------------------------------------------------------------------------------- 6931 DragListener.prototype.startDelay = function (initialEv) { 6932 var _this = this; 6933 if (this.delay) { 6934 this.delayTimeoutId = setTimeout(function () { 6935 _this.handleDelayEnd(initialEv); 6936 }, this.delay); 6937 } 6938 else { 6939 this.handleDelayEnd(initialEv); 6940 } 6941 }; 6942 DragListener.prototype.handleDelayEnd = function (initialEv) { 6943 this.isDelayEnded = true; 6944 if (this.isDistanceSurpassed) { 6945 this.startDrag(initialEv); 6946 } 6947 }; 6948 // Distance 6949 // ----------------------------------------------------------------------------------------------------------------- 6950 DragListener.prototype.handleDistanceSurpassed = function (ev) { 6951 this.isDistanceSurpassed = true; 6952 if (this.isDelayEnded) { 6953 this.startDrag(ev); 6954 } 6955 }; 6956 // Mouse / Touch 6957 // ----------------------------------------------------------------------------------------------------------------- 6958 DragListener.prototype.handleTouchMove = function (ev) { 6959 // prevent inertia and touchmove-scrolling while dragging 6960 if (this.isDragging && this.shouldCancelTouchScroll) { 6961 ev.preventDefault(); 6962 } 6963 this.handleMove(ev); 6964 }; 6965 DragListener.prototype.handleMouseMove = function (ev) { 6966 this.handleMove(ev); 6967 }; 6968 // Scrolling (unrelated to auto-scroll) 6969 // ----------------------------------------------------------------------------------------------------------------- 6970 DragListener.prototype.handleTouchScroll = function (ev) { 6971 // if the drag is being initiated by touch, but a scroll happens before 6972 // the drag-initiating delay is over, cancel the drag 6973 if (!this.isDragging || this.scrollAlwaysKills) { 6974 this.endInteraction(ev, true); // isCancelled=true 6975 } 6976 }; 6977 // Utils 6978 // ----------------------------------------------------------------------------------------------------------------- 6979 // Triggers a callback. Calls a function in the option hash of the same name. 6980 // Arguments beyond the first `name` are forwarded on. 6981 DragListener.prototype.trigger = function (name) { 6982 var args = []; 6983 for (var _i = 1; _i < arguments.length; _i++) { 6984 args[_i - 1] = arguments[_i]; 6985 } 6986 if (this.options[name]) { 6987 this.options[name].apply(this, args); 6988 } 6989 // makes _methods callable by event name. TODO: kill this 6990 if (this['_' + name]) { 6991 this['_' + name].apply(this, args); 6992 } 6993 }; 6994 // Auto-scroll 6995 // ----------------------------------------------------------------------------------------------------------------- 6996 DragListener.prototype.initAutoScroll = function () { 6997 var scrollEl = this.scrollEl; 6998 this.isAutoScroll = 6999 this.options.scroll && 7000 scrollEl && 7001 !scrollEl.is(window) && 7002 !scrollEl.is(document); 7003 if (this.isAutoScroll) { 7004 // debounce makes sure rapid calls don't happen 7005 this.listenTo(scrollEl, 'scroll', util_1.debounce(this.handleDebouncedScroll, 100)); 7006 } 7007 }; 7008 DragListener.prototype.destroyAutoScroll = function () { 7009 this.endAutoScroll(); // kill any animation loop 7010 // remove the scroll handler if there is a scrollEl 7011 if (this.isAutoScroll) { 7012 this.stopListeningTo(this.scrollEl, 'scroll'); // will probably get removed by unbindHandlers too :( 7013 } 7014 }; 7015 // Computes and stores the bounding rectangle of scrollEl 7016 DragListener.prototype.computeScrollBounds = function () { 7017 if (this.isAutoScroll) { 7018 this.scrollBounds = util_1.getOuterRect(this.scrollEl); 7019 // TODO: use getClientRect in future. but prevents auto scrolling when on top of scrollbars 7020 } 7021 }; 7022 // Called when the dragging is in progress and scrolling should be updated 7023 DragListener.prototype.updateAutoScroll = function (ev) { 7024 var sensitivity = this.scrollSensitivity; 7025 var bounds = this.scrollBounds; 7026 var topCloseness; 7027 var bottomCloseness; 7028 var leftCloseness; 7029 var rightCloseness; 7030 var topVel = 0; 7031 var leftVel = 0; 7032 if (bounds) { // only scroll if scrollEl exists
7033 // compute closeness to edges. valid range is from 0.0 - 1.0 7034 topCloseness = (sensitivity - (util_1.getEvY(ev) - bounds.top)) / sensitivity; 7035 bottomCloseness = (sensitivity - (bounds.bottom - util_1.getEvY(ev))) / sensitivity; 7036 leftCloseness = (sensitivity - (util_1.getEvX(ev) - bounds.left)) / sensitivity; 7037 rightCloseness = (sensitivity - (bounds.right - util_1.getEvX(ev))) / sensitivity; 7038 // translate vertical closeness into velocity. 7039 // mouse must be completely in bounds for velocity to happen. 7040 if (topCloseness >= 0 && topCloseness <= 1) { 7041 topVel = topCloseness * this.scrollSpeed * -1; // negative. for scrolling up 7042 } 7043 else if (bottomCloseness >= 0 && bottomCloseness <= 1) { 7044 topVel = bottomCloseness * this.scrollSpeed; 7045 } 7046 // translate horizontal closeness into velocity 7047 if (leftCloseness >= 0 && leftCloseness <= 1) { 7048 leftVel = leftCloseness * this.scrollSpeed * -1; // negative. for scrolling left 7049 } 7050 else if (rightCloseness >= 0 && rightCloseness <= 1) { 7051 leftVel = rightCloseness * this.scrollSpeed; 7052 } 7053 } 7054 this.setScrollVel(topVel, leftVel); 7055 }; 7056 // Sets the speed-of-scrolling for the scrollEl 7057 DragListener.prototype.setScrollVel = function (topVel, leftVel) { 7058 this.scrollTopVel = topVel; 7059 this.scrollLeftVel = leftVel; 7060 this.constrainScrollVel(); // massages into realistic values 7061 // if there is non-zero velocity, and an animation loop hasn't already started, then START 7062 if ((this.scrollTopVel || this.scrollLeftVel) && !this.scrollIntervalId) { 7063 this.scrollIntervalId = setInterval(util_1.proxy(this, 'scrollIntervalFunc'), // scope to `this` 7064 this.scrollIntervalMs); 7065 } 7066 }; 7067 // Forces scrollTopVel and scrollLeftVel to be zero if scrolling has already gone all the way 7068 DragListener.prototype.constrainScrollVel = function () { 7069 var el = this.scrollEl; 7070 if (this.scrollTopVel < 0) { // scrolling up? 7071 if (el.scrollTop() <= 0) { // already scrolled all the way up? 7072 this.scrollTopVel = 0; 7073 } 7074 } 7075 else if (this.scrollTopVel > 0) { // scrolling down? 7076 if (el.scrollTop() + el[0].clientHeight >= el[0].scrollHeight) { // already scrolled all the way down? 7077 this.scrollTopVel = 0; 7078 } 7079 } 7080 if (this.scrollLeftVel < 0) { // scrolling left? 7081 if (el.scrollLeft() <= 0) { // already scrolled all the left? 7082 this.scrollLeftVel = 0; 7083 } 7084 } 7085 else if (this.scrollLeftVel > 0) { // scrolling right? 7086 if (el.scrollLeft() + el[0].clientWidth >= el[0].scrollWidth) { // already scrolled all the way right? 7087 this.scrollLeftVel = 0; 7088 } 7089 } 7090 }; 7091 // This function gets called during every iteration of the scrolling animation loop 7092 DragListener.prototype.scrollIntervalFunc = function () { 7093 var el = this.scrollEl; 7094 var frac = this.scrollIntervalMs / 1000; // considering animation frequency, what the vel should be mult'd by 7095 // change the value of scrollEl's scroll 7096 if (this.scrollTopVel) { 7097 el.scrollTop(el.scrollTop() + this.scrollTopVel * frac); 7098 } 7099 if (this.scrollLeftVel) { 7100 el.scrollLeft(el.scrollLeft() + this.scrollLeftVel * frac); 7101 } 7102 this.constrainScrollVel(); // since the scroll values changed, recompute the velocities 7103 // if scrolled all the way, which causes the vels to be zero, stop the animation loop 7104 if (!this.scrollTopVel && !this.scrollLeftVel) { 7105 this.endAutoScroll(); 7106 } 7107 }; 7108 // Kills any existing scrolling animation loop 7109 DragListener.prototype.endAutoScroll = function () { 7110 if (this.scrollIntervalId) { 7111 clearInterval(this.scrollIntervalId); 7112 this.scrollIntervalId = null; 7113 this.handleScrollEnd(); 7114 } 7115 }; 7116 // Get called when the scrollEl is scrolled (NOTE: this is delayed via debounce) 7117 DragListener.prototype.handleDebouncedScroll = function () {
7118 // recompute all coordinates, but *only* if this is *not* part of our scrolling animation 7119 if (!this.scrollIntervalId) { 7120 this.handleScrollEnd(); 7121 } 7122 }; 7123 DragListener.prototype.handleScrollEnd = function () { 7124 // Called when scrolling has stopped, whether through auto scroll, or the user scrolling 7125 }; 7126 return DragListener; 7127}()); 7128exports.default = DragListener; 7129ListenerMixin_1.default.mixInto(DragListener); 7130 7131 7132/***/ }), 7133/* 60 */ 7134/***/ (function(module, exports, __webpack_require__) { 7135 7136Object.defineProperty(exports, "__esModule", { value: true }); 7137var tslib_1 = __webpack_require__(2); 7138var util_1 = __webpack_require__(4); 7139var Mixin_1 = __webpack_require__(15); 7140/* 7141A set of rendering and date-related methods for a visual component comprised of one or more rows of day columns. 7142Prerequisite: the object being mixed into needs to be a *Grid* 7143*/ 7144var DayTableMixin = /** @class */ (function (_super) { 7145 tslib_1.__extends(DayTableMixin, _super); 7146 function DayTableMixin() { 7147 return _super !== null && _super.apply(this, arguments) || this; 7148 } 7149 // Populates internal variables used for date calculation and rendering 7150 DayTableMixin.prototype.updateDayTable = function () { 7151 var t = this; 7152 var view = t.view; 7153 var calendar = view.calendar; 7154 var date = calendar.msToUtcMoment(t.dateProfile.renderUnzonedRange.startMs, true); 7155 var end = calendar.msToUtcMoment(t.dateProfile.renderUnzonedRange.endMs, true); 7156 var dayIndex = -1; 7157 var dayIndices = []; 7158 var dayDates = []; 7159 var daysPerRow; 7160 var firstDay; 7161 var rowCnt; 7162 while (date.isBefore(end)) { // loop each day from start to end 7163 if (view.isHiddenDay(date)) { 7164 dayIndices.push(dayIndex + 0.5); // mark that it's between indices 7165 } 7166 else { 7167 dayIndex++; 7168 dayIndices.push(dayIndex); 7169 dayDates.push(date.clone()); 7170 } 7171 date.add(1, 'days'); 7172 } 7173 if (this.breakOnWeeks) { 7174 // count columns until the day-of-week repeats 7175 firstDay = dayDates[0].day(); 7176 for (daysPerRow = 1; daysPerRow < dayDates.length; daysPerRow++) { 7177 if (dayDates[daysPerRow].day() === firstDay) { 7178 break; 7179 } 7180 } 7181 rowCnt = Math.ceil(dayDates.length / daysPerRow); 7182 } 7183 else { 7184 rowCnt = 1; 7185 daysPerRow = dayDates.length; 7186 } 7187 this.dayDates = dayDates; 7188 this.dayIndices = dayIndices; 7189 this.daysPerRow = daysPerRow; 7190 this.rowCnt = rowCnt; 7191 this.updateDayTableCols(); 7192 }; 7193 // Computes and assigned the colCnt property and updates any options that may be computed from it 7194 DayTableMixin.prototype.updateDayTableCols = function () { 7195 this.colCnt = this.computeColCnt(); 7196 this.colHeadFormat = 7197 this.opt('columnHeaderFormat') || 7198 this.opt('columnFormat') || // deprecated 7199 this.computeColHeadFormat(); 7200 }; 7201 // Determines how many columns there should be in the table 7202 DayTableMixin.prototype.computeColCnt = function () { 7203 return this.daysPerRow; 7204 }; 7205 // Computes the ambiguously-timed moment for the given cell 7206 DayTableMixin.prototype.getCellDate = function (row, col) { 7207 return this.dayDates[this.getCellDayIndex(row, col)].clone(); 7208 }; 7209 // Computes the ambiguously-timed date range for the given cell 7210 DayTableMixin.prototype.getCellRange = function (row, col) { 7211 var start = this.getCellDate(row, col); 7212 var end = start.clone().add(1, 'days'); 7213 return { start: start, end: end }; 7214 }; 7215 // Returns the number of day cells, chronologically, from the first of the grid (0-based) 7216 DayTableMixin.prototype.getCellDayIndex = function (row, col) { 7217 return row * this.daysPerRow + this.getColDayIndex(col); 7218 }; 7219 // Returns the numner of day cells, chronologically, from the first cell in *any given row* 7220 DayTableMixin.prototype.getColDayIndex = function (col) { 7221 if (this.isRTL) { 7222 return this.colCnt - 1 - col; 7223 } 7224 else { 7225 return col; 7226 } 7227 }; 7228 // Given a date, returns its chronolocial cell-index from the first cell of the grid. 7229 // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets. 7230 // If before the first offset, returns a negative number. 7231 // If after the last offset, returns an offset past the last cell offset. 7232 // Only works for *start* dates of cells. Will not work for exclusive end dates for cells. 7233 DayTableMixin.prototype.getDateDayIndex = function (date) { 7234 var dayIndices = this.dayIndices; 7235 var dayOffset = date.diff(this.dayDates[0], 'days'); 7236 if (dayOffset < 0) {
7237 return dayIndices[0] - 1; 7238 } 7239 else if (dayOffset >= dayIndices.length) { 7240 return dayIndices[dayIndices.length - 1] + 1; 7241 } 7242 else { 7243 return dayIndices[dayOffset]; 7244 } 7245 }; 7246 /* Options 7247 ------------------------------------------------------------------------------------------------------------------*/ 7248 // Computes a default column header formatting string if `colFormat` is not explicitly defined 7249 DayTableMixin.prototype.computeColHeadFormat = function () { 7250 // if more than one week row, or if there are a lot of columns with not much space, 7251 // put just the day numbers will be in each cell 7252 if (this.rowCnt > 1 || this.colCnt > 10) { 7253 return 'ddd'; // "Sat" 7254 } 7255 else if (this.colCnt > 1) { 7256 return this.opt('dayOfMonthFormat'); // "Sat 12/10" 7257 } 7258 else { 7259 return 'dddd'; // "Saturday" 7260 } 7261 }; 7262 /* Slicing 7263 ------------------------------------------------------------------------------------------------------------------*/ 7264 // Slices up a date range into a segment for every week-row it intersects with 7265 DayTableMixin.prototype.sliceRangeByRow = function (unzonedRange) { 7266 var daysPerRow = this.daysPerRow; 7267 var normalRange = this.view.computeDayRange(unzonedRange); // make whole-day range, considering nextDayThreshold 7268 var rangeFirst = this.getDateDayIndex(normalRange.start); // inclusive first index 7269 var rangeLast = this.getDateDayIndex(normalRange.end.clone().subtract(1, 'days')); // inclusive last index 7270 var segs = []; 7271 var row; 7272 var rowFirst; 7273 var rowLast; // inclusive day-index range for current row 7274 var segFirst; 7275 var segLast; // inclusive day-index range for segment 7276 for (row = 0; row < this.rowCnt; row++) { 7277 rowFirst = row * daysPerRow; 7278 rowLast = rowFirst + daysPerRow - 1; 7279 // intersect segment's offset range with the row's 7280 segFirst = Math.max(rangeFirst, rowFirst); 7281 segLast = Math.min(rangeLast, rowLast); 7282 // deal with in-between indices 7283 segFirst = Math.ceil(segFirst); // in-between starts round to next cell 7284 segLast = Math.floor(segLast); // in-between ends round to prev cell 7285 if (segFirst <= segLast) { // was there any intersection with the current row? 7286 segs.push({ 7287 row: row, 7288 // normalize to start of row 7289 firstRowDayIndex: segFirst - rowFirst, 7290 lastRowDayIndex: segLast - rowFirst, 7291 // must be matching integers to be the segment's start/end 7292 isStart: segFirst === rangeFirst, 7293 isEnd: segLast === rangeLast 7294 }); 7295 } 7296 } 7297 return segs; 7298 }; 7299 // Slices up a date range into a segment for every day-cell it intersects with. 7300 // TODO: make more DRY with sliceRangeByRow somehow. 7301 DayTableMixin.prototype.sliceRangeByDay = function (unzonedRange) { 7302 var daysPerRow = this.daysPerRow; 7303 var normalRange = this.view.computeDayRange(unzonedRange); // make whole-day range, considering nextDayThreshold 7304 var rangeFirst = this.getDateDayIndex(normalRange.start); // inclusive first index 7305 var rangeLast = this.getDateDayIndex(normalRange.end.clone().subtract(1, 'days')); // inclusive last index 7306 var segs = []; 7307 var row; 7308 var rowFirst; 7309 var rowLast; // inclusive day-index range for current row 7310 var i; 7311 var segFirst; 7312 var segLast; // inclusive day-index range for segment 7313 for (row = 0; row < this.rowCnt; row++) { 7314 rowFirst = row * daysPerRow; 7315 rowLast = rowFirst + daysPerRow - 1; 7316 for (i = rowFirst; i <= rowLast; i++) { 7317 // intersect segment's offset range with the row's 7318 segFirst = Math.max(rangeFirst, i); 7319 segLast = Math.min(rangeLast, i); 7320 // deal with in-between indices
7321 segFirst = Math.ceil(segFirst); // in-between starts round to next cell 7322 segLast = Math.floor(segLast); // in-between ends round to prev cell 7323 if (segFirst <= segLast) { // was there any intersection with the current row? 7324 segs.push({ 7325 row: row, 7326 // normalize to start of row 7327 firstRowDayIndex: segFirst - rowFirst, 7328 lastRowDayIndex: segLast - rowFirst, 7329 // must be matching integers to be the segment's start/end 7330 isStart: segFirst === rangeFirst, 7331 isEnd: segLast === rangeLast 7332 }); 7333 } 7334 } 7335 } 7336 return segs; 7337 }; 7338 /* Header Rendering 7339 ------------------------------------------------------------------------------------------------------------------*/ 7340 DayTableMixin.prototype.renderHeadHtml = function () { 7341 var theme = this.view.calendar.theme; 7342 return '' + 7343 '<div class="fc-row ' + theme.getClass('headerRow') + '">' + 7344 '<table class="' + theme.getClass('tableGrid') + '">' + 7345 '<thead>' + 7346 this.renderHeadTrHtml() + 7347 '</thead>' + 7348 '</table>' + 7349 '</div>'; 7350 }; 7351 DayTableMixin.prototype.renderHeadIntroHtml = function () { 7352 return this.renderIntroHtml(); // fall back to generic 7353 }; 7354 DayTableMixin.prototype.renderHeadTrHtml = function () { 7355 return '' + 7356 '<tr>' + 7357 (this.isRTL ? '' : this.renderHeadIntroHtml()) + 7358 this.renderHeadDateCellsHtml() + 7359 (this.isRTL ? this.renderHeadIntroHtml() : '') + 7360 '</tr>'; 7361 }; 7362 DayTableMixin.prototype.renderHeadDateCellsHtml = function () { 7363 var htmls = []; 7364 var col; 7365 var date; 7366 for (col = 0; col < this.colCnt; col++) { 7367 date = this.getCellDate(0, col); 7368 htmls.push(this.renderHeadDateCellHtml(date)); 7369 } 7370 return htmls.join(''); 7371 }; 7372 // TODO: when internalApiVersion, accept an object for HTML attributes 7373 // (colspan should be no different) 7374 DayTableMixin.prototype.renderHeadDateCellHtml = function (date, colspan, otherAttrs) { 7375 var t = this; 7376 var view = t.view; 7377 var isDateValid = t.dateProfile.activeUnzonedRange.containsDate(date); // TODO: called too frequently. cache somehow. 7378 var classNames = [ 7379 'fc-day-header', 7380 view.calendar.theme.getClass('widgetHeader') 7381 ]; 7382 var innerHtml; 7383 if (typeof t.opt('columnHeaderHtml') === 'function') { 7384 innerHtml = t.opt('columnHeaderHtml')(date); 7385 } 7386 else if (typeof t.opt('columnHeaderText') === 'function') { 7387 innerHtml = util_1.htmlEscape(t.opt('columnHeaderText')(date)); 7388 } 7389 else { 7390 innerHtml = util_1.htmlEscape(date.format(t.colHeadFormat)); 7391 } 7392 // if only one row of days, the classNames on the header can represent the specific days beneath 7393 if (t.rowCnt === 1) { 7394 classNames = classNames.concat( 7395 // includes the day-of-week class 7396 // noThemeHighlight=true (don't highlight the header) 7397 t.getDayClasses(date, true)); 7398 } 7399 else { 7400 classNames.push('fc-' + util_1.dayIDs[date.day()]); // only add the day-of-week class 7401 } 7402 return '' + 7403 '<th class="' + classNames.join(' ') + '"' + 7404 ((isDateValid && t.rowCnt) === 1 ? 7405 ' data-date="' + date.format('YYYY-MM-DD') + '"' : 7406 '') + 7407 (colspan > 1 ? 7408 ' colspan="' + colspan + '"' : 7409 '') + 7410 (otherAttrs ? 7411 ' ' + otherAttrs : 7412 '') + 7413 '>' + 7414 (isDateValid ? 7415 // don't make a link if the heading could represent multiple days, or if there's only one day (forceOff) 7416 view.buildGotoAnchorHtml({ date: date, forceOff: t.rowCnt > 1 || t.colCnt === 1 }, innerHtml) : 7417 // if not valid, display text, but no link 7418 innerHtml) + 7419 '</th>'; 7420 };
7421 /* Background Rendering 7422 ------------------------------------------------------------------------------------------------------------------*/ 7423 DayTableMixin.prototype.renderBgTrHtml = function (row) { 7424 return '' + 7425 '<tr>' + 7426 (this.isRTL ? '' : this.renderBgIntroHtml(row)) + 7427 this.renderBgCellsHtml(row) + 7428 (this.isRTL ? this.renderBgIntroHtml(row) : '') + 7429 '</tr>'; 7430 }; 7431 DayTableMixin.prototype.renderBgIntroHtml = function (row) { 7432 return this.renderIntroHtml(); // fall back to generic 7433 }; 7434 DayTableMixin.prototype.renderBgCellsHtml = function (row) { 7435 var htmls = []; 7436 var col; 7437 var date; 7438 for (col = 0; col < this.colCnt; col++) { 7439 date = this.getCellDate(row, col); 7440 htmls.push(this.renderBgCellHtml(date)); 7441 } 7442 return htmls.join(''); 7443 }; 7444 DayTableMixin.prototype.renderBgCellHtml = function (date, otherAttrs) { 7445 var t = this; 7446 var view = t.view; 7447 var isDateValid = t.dateProfile.activeUnzonedRange.containsDate(date); // TODO: called too frequently. cache somehow. 7448 var classes = t.getDayClasses(date); 7449 classes.unshift('fc-day', view.calendar.theme.getClass('widgetContent')); 7450 return '<td class="' + classes.join(' ') + '"' + 7451 (isDateValid ? 7452 ' data-date="' + date.format('YYYY-MM-DD') + '"' : // if date has a time, won't format it 7453 '') + 7454 (otherAttrs ? 7455 ' ' + otherAttrs : 7456 '') + 7457 '></td>'; 7458 }; 7459 /* Generic 7460 ------------------------------------------------------------------------------------------------------------------*/ 7461 DayTableMixin.prototype.renderIntroHtml = function () { 7462 // Generates the default HTML intro for any row. User classes should override 7463 }; 7464 // TODO: a generic method for dealing with <tr>, RTL, intro 7465 // when increment internalApiVersion 7466 // wrapTr (scheduler) 7467 /* Utils 7468 ------------------------------------------------------------------------------------------------------------------*/ 7469 // Applies the generic "intro" and "outro" HTML to the given cells. 7470 // Intro means the leftmost cell when the calendar is LTR and the rightmost cell when RTL. Vice-versa for outro. 7471 DayTableMixin.prototype.bookendCells = function (trEl) { 7472 var introHtml = this.renderIntroHtml(); 7473 if (introHtml) { 7474 if (this.isRTL) { 7475 trEl.append(introHtml); 7476 } 7477 else { 7478 trEl.prepend(introHtml); 7479 } 7480 } 7481 }; 7482 return DayTableMixin; 7483}(Mixin_1.default)); 7484exports.default = DayTableMixin; 7485 7486 7487/***/ }), 7488/* 61 */ 7489/***/ (function(module, exports) { 7490 7491Object.defineProperty(exports, "__esModule", { value: true }); 7492var BusinessHourRenderer = /** @class */ (function () { 7493 /* 7494 component implements: 7495 - eventRangesToEventFootprints 7496 - eventFootprintsToSegs 7497 */ 7498 function BusinessHourRenderer(component, fillRenderer) { 7499 this.component = component; 7500 this.fillRenderer = fillRenderer; 7501 } 7502 BusinessHourRenderer.prototype.render = function (businessHourGenerator) { 7503 var component = this.component; 7504 var unzonedRange = component._getDateProfile().activeUnzonedRange; 7505 var eventInstanceGroup = businessHourGenerator.buildEventInstanceGroup(component.hasAllDayBusinessHours, unzonedRange); 7506 var eventFootprints = eventInstanceGroup ? 7507 component.eventRangesToEventFootprints(eventInstanceGroup.sliceRenderRanges(unzonedRange)) : 7508 []; 7509 this.renderEventFootprints(eventFootprints); 7510 }; 7511 BusinessHourRenderer.prototype.renderEventFootprints = function (eventFootprints) { 7512 var segs = this.component.eventFootprintsToSegs(eventFootprints); 7513 this.renderSegs(segs); 7514 this.segs = segs; 7515 }; 7516 BusinessHourRenderer.prototype.renderSegs = function (segs) { 7517 if (this.fillRenderer) { 7518 this.fillRenderer.renderSegs('businessHours', segs, { 7519 getClasses: function (seg) { 7520 return ['fc-nonbusiness', 'fc-bgevent']; 7521 } 7522 }); 7523 } 7524 }; 7525 BusinessHourRenderer.prototype.unrender = function () { 7526 if (this.fillRenderer) { 7527 this.fillRenderer.unrender('businessHours'); 7528 } 7529 this.segs = null; 7530 }; 7531 BusinessHourRenderer.prototype.getSegs = function () { 7532 return this.segs || []; 7533 }; 7534 return BusinessHourRenderer; 7535}()); 7536exports.default = BusinessHourRenderer; 7537 7538 7539/***/ }), 7540/* 62 */ 7541/***/ (function(module, exports, __webpack_require__) { 7542 7543Object.defineProperty(exports, "__esModule", { value: true });
7544var $ = __webpack_require__(3); 7545var util_1 = __webpack_require__(4); 7546var FillRenderer = /** @class */ (function () { 7547 function FillRenderer(component) { 7548 this.fillSegTag = 'div'; 7549 this.component = component; 7550 this.elsByFill = {}; 7551 } 7552 FillRenderer.prototype.renderFootprint = function (type, componentFootprint, props) { 7553 this.renderSegs(type, this.component.componentFootprintToSegs(componentFootprint), props); 7554 }; 7555 FillRenderer.prototype.renderSegs = function (type, segs, props) { 7556 var els; 7557 segs = this.buildSegEls(type, segs, props); // assignes `.el` to each seg. returns successfully rendered segs 7558 els = this.attachSegEls(type, segs); 7559 if (els) { 7560 this.reportEls(type, els); 7561 } 7562 return segs; 7563 }; 7564 // Unrenders a specific type of fill that is currently rendered on the grid 7565 FillRenderer.prototype.unrender = function (type) { 7566 var el = this.elsByFill[type]; 7567 if (el) { 7568 el.remove(); 7569 delete this.elsByFill[type]; 7570 } 7571 }; 7572 // Renders and assigns an `el` property for each fill segment. Generic enough to work with different types. 7573 // Only returns segments that successfully rendered. 7574 FillRenderer.prototype.buildSegEls = function (type, segs, props) { 7575 var _this = this; 7576 var html = ''; 7577 var renderedSegs = []; 7578 var i; 7579 if (segs.length) { 7580 // build a large concatenation of segment HTML 7581 for (i = 0; i < segs.length; i++) { 7582 html += this.buildSegHtml(type, segs[i], props); 7583 } 7584 // Grab individual elements from the combined HTML string. Use each as the default rendering. 7585 // Then, compute the 'el' for each segment. 7586 $(html).each(function (i, node) { 7587 var seg = segs[i]; 7588 var el = $(node); 7589 // allow custom filter methods per-type 7590 if (props.filterEl) { 7591 el = props.filterEl(seg, el); 7592 } 7593 if (el) { // custom filters did not cancel the render 7594 el = $(el); // allow custom filter to return raw DOM node 7595 // correct element type? (would be bad if a non-TD were inserted into a table for example) 7596 if (el.is(_this.fillSegTag)) { 7597 seg.el = el; 7598 renderedSegs.push(seg); 7599 } 7600 } 7601 }); 7602 } 7603 return renderedSegs; 7604 }; 7605 // Builds the HTML needed for one fill segment. Generic enough to work with different types. 7606 FillRenderer.prototype.buildSegHtml = function (type, seg, props) { 7607 // custom hooks per-type 7608 var classes = props.getClasses ? props.getClasses(seg) : []; 7609 var css = util_1.cssToStr(props.getCss ? props.getCss(seg) : {}); 7610 return '<' + this.fillSegTag + 7611 (classes.length ? ' class="' + classes.join(' ') + '"' : '') + 7612 (css ? ' style="' + css + '"' : '') + 7613 '></' + this.fillSegTag + '>'; 7614 }; 7615 // Should return wrapping DOM structure 7616 FillRenderer.prototype.attachSegEls = function (type, segs) { 7617 // subclasses must implement 7618 }; 7619 FillRenderer.prototype.reportEls = function (type, nodes) { 7620 if (this.elsByFill[type]) { 7621 this.elsByFill[type] = this.elsByFill[type].add(nodes); 7622 } 7623 else { 7624 this.elsByFill[type] = $(nodes); 7625 } 7626 }; 7627 return FillRenderer; 7628}()); 7629exports.default = FillRenderer; 7630 7631 7632/***/ }), 7633/* 63 */ 7634/***/ (function(module, exports, __webpack_require__) { 7635 7636Object.defineProperty(exports, "__esModule", { value: true }); 7637var SingleEventDef_1 = __webpack_require__(9); 7638var EventFootprint_1 = __webpack_require__(34); 7639var EventSource_1 = __webpack_require__(6); 7640var HelperRenderer = /** @class */ (function () { 7641 function HelperRenderer(component, eventRenderer) { 7642 this.view = component._getView(); 7643 this.component = component; 7644 this.eventRenderer = eventRenderer; 7645 } 7646 HelperRenderer.prototype.renderComponentFootprint = function (componentFootprint) { 7647 this.renderEventFootprints([ 7648 this.fabricateEventFootprint(componentFootprint) 7649 ]); 7650 }; 7651 HelperRenderer.prototype.renderEventDraggingFootprints = function (eventFootprints, sourceSeg, isTouch) { 7652 this.renderEventFootprints(eventFootprints, sourceSeg, 'fc-dragging', isTouch ? null : this.view.opt('dragOpacity')); 7653 }; 7654 HelperRenderer.prototype.renderEventResizingFootprints = function (eventFootprints, sourceSeg, isTouch) { 7655 this.renderEventFootprints(eventFootprints, sourceSeg, 'fc-resizing'); 7656 }; 7657 HelperRenderer.prototype.renderEventFootprints = function (eventFootprints, sourceSeg, extraClassNames, opacity) { 7658 var segs = this.component.eventFootprintsToSegs(eventFootprints); 7659 var classNames = 'fc-helper ' + (extraClassNames || ''); 7660 var i; 7661 // assigns each seg's el and returns a subset of segs that were rendered 7662 segs = this.eventRenderer.renderFgSegEls(segs); 7663 for (i = 0; i < segs.length; i++) { 7664 segs[i].el.addClass(classNames); 7665 } 7666 if (opacity != null) { 7667 for (i = 0; i < segs.length; i++) { 7668 segs[i].el.css('opacity', opacity); 7669 } 7670 } 7671 this.helperEls = this.renderSegs(segs, sourceSeg); 7672 }; 7673 /* 7674 Must return all mock event elements 7675 */ 7676 HelperRenderer.prototype.renderSegs = function (segs, sourceSeg) { 7677 // Subclasses must implement 7678 }; 7679 HelperRenderer.prototype.unrender = function () { 7680 if (this.helperEls) { 7681 this.helperEls.remove(); 7682 this.helperEls = null; 7683 } 7684 }; 7685 HelperRenderer.prototype.fabricateEventFootprint = function (componentFootprint) { 7686 var calendar = this.view.calendar; 7687 var eventDateProfile = calendar.footprintToDateProfile(componentFootprint); 7688 var dummyEvent = new SingleEventDef_1.default(new EventSource_1.default(calendar)); 7689 var dummyInstance; 7690 dummyEvent.dateProfile = eventDateProfile; 7691 dummyInstance = dummyEvent.buildInstance(); 7692 return new EventFootprint_1.default(componentFootprint, dummyEvent, dummyInstance); 7693 }; 7694 return HelperRenderer; 7695}()); 7696exports.default = HelperRenderer; 7697 7698 7699/***/ }), 7700/* 64 */ 7701/***/ (function(module, exports, __webpack_require__) { 7702 7703Object.defineProperty(exports, "__esModule", { value: true });
7704var tslib_1 = __webpack_require__(2); 7705var GlobalEmitter_1 = __webpack_require__(23); 7706var Interaction_1 = __webpack_require__(14); 7707var EventPointing = /** @class */ (function (_super) { 7708 tslib_1.__extends(EventPointing, _super); 7709 function EventPointing() { 7710 return _super !== null && _super.apply(this, arguments) || this; 7711 } 7712 /* 7713 component must implement: 7714 - publiclyTrigger 7715 */ 7716 EventPointing.prototype.bindToEl = function (el) { 7717 var component = this.component; 7718 component.bindSegHandlerToEl(el, 'click', this.handleClick.bind(this)); 7719 component.bindSegHandlerToEl(el, 'mouseenter', this.handleMouseover.bind(this)); 7720 component.bindSegHandlerToEl(el, 'mouseleave', this.handleMouseout.bind(this)); 7721 }; 7722 EventPointing.prototype.handleClick = function (seg, ev) { 7723 var res = this.component.publiclyTrigger('eventClick', { 7724 context: seg.el[0], 7725 args: [seg.footprint.getEventLegacy(), ev, this.view] 7726 }); 7727 if (res === false) { 7728 ev.preventDefault(); 7729 } 7730 }; 7731 // Updates internal state and triggers handlers for when an event element is moused over 7732 EventPointing.prototype.handleMouseover = function (seg, ev) { 7733 if (!GlobalEmitter_1.default.get().shouldIgnoreMouse() && 7734 !this.mousedOverSeg) { 7735 this.mousedOverSeg = seg; 7736 // TODO: move to EventSelecting's responsibility 7737 if (this.view.isEventDefResizable(seg.footprint.eventDef)) { 7738 seg.el.addClass('fc-allow-mouse-resize'); 7739 } 7740 this.component.publiclyTrigger('eventMouseover', { 7741 context: seg.el[0], 7742 args: [seg.footprint.getEventLegacy(), ev, this.view] 7743 }); 7744 } 7745 }; 7746 // Updates internal state and triggers handlers for when an event element is moused out. 7747 // Can be given no arguments, in which case it will mouseout the segment that was previously moused over. 7748 EventPointing.prototype.handleMouseout = function (seg, ev) { 7749 if (this.mousedOverSeg) { 7750 this.mousedOverSeg = null; 7751 // TODO: move to EventSelecting's responsibility 7752 if (this.view.isEventDefResizable(seg.footprint.eventDef)) { 7753 seg.el.removeClass('fc-allow-mouse-resize'); 7754 } 7755 this.component.publiclyTrigger('eventMouseout', { 7756 context: seg.el[0], 7757 args: [ 7758 seg.footprint.getEventLegacy(), 7759 ev || {}, 7760 this.view 7761 ] 7762 }); 7763 } 7764 }; 7765 EventPointing.prototype.end = function () { 7766 if (this.mousedOverSeg) { 7767 this.handleMouseout(this.mousedOverSeg); 7768 } 7769 }; 7770 return EventPointing; 7771}(Interaction_1.default)); 7772exports.default = EventPointing; 7773 7774 7775/***/ }), 7776/* 65 */ 7777/***/ (function(module, exports, __webpack_require__) { 7778 7779Object.defineProperty(exports, "__esModule", { value: true }); 7780var tslib_1 = __webpack_require__(2); 7781var Mixin_1 = __webpack_require__(15); 7782var DateClicking_1 = __webpack_require__(237); 7783var DateSelecting_1 = __webpack_require__(236); 7784var EventPointing_1 = __webpack_require__(64); 7785var EventDragging_1 = __webpack_require__(235); 7786var EventResizing_1 = __webpack_require__(234);
7787var ExternalDropping_1 = __webpack_require__(233); 7788var StandardInteractionsMixin = /** @class */ (function (_super) { 7789 tslib_1.__extends(StandardInteractionsMixin, _super); 7790 function StandardInteractionsMixin() { 7791 return _super !== null && _super.apply(this, arguments) || this; 7792 } 7793 return StandardInteractionsMixin; 7794}(Mixin_1.default)); 7795exports.default = StandardInteractionsMixin; 7796StandardInteractionsMixin.prototype.dateClickingClass = DateClicking_1.default; 7797StandardInteractionsMixin.prototype.dateSelectingClass = DateSelecting_1.default; 7798StandardInteractionsMixin.prototype.eventPointingClass = EventPointing_1.default; 7799StandardInteractionsMixin.prototype.eventDraggingClass = EventDragging_1.default; 7800StandardInteractionsMixin.prototype.eventResizingClass = EventResizing_1.default; 7801StandardInteractionsMixin.prototype.externalDroppingClass = ExternalDropping_1.default; 7802 7803 7804/***/ }), 7805/* 66 */ 7806/***/ (function(module, exports, __webpack_require__) { 7807 7808Object.defineProperty(exports, "__esModule", { value: true }); 7809var tslib_1 = __webpack_require__(2); 7810var $ = __webpack_require__(3); 7811var util_1 = __webpack_require__(4); 7812var CoordCache_1 = __webpack_require__(58); 7813var Popover_1 = __webpack_require__(227); 7814var UnzonedRange_1 = __webpack_require__(5); 7815var ComponentFootprint_1 = __webpack_require__(12); 7816var EventFootprint_1 = __webpack_require__(34); 7817var BusinessHourRenderer_1 = __webpack_require__(61); 7818var StandardInteractionsMixin_1 = __webpack_require__(65); 7819var InteractiveDateComponent_1 = __webpack_require__(42); 7820var DayTableMixin_1 = __webpack_require__(60); 7821var DayGridEventRenderer_1 = __webpack_require__(243); 7822var DayGridHelperRenderer_1 = __webpack_require__(244); 7823var DayGridFillRenderer_1 = __webpack_require__(245); 7824/* A component that renders a grid of whole-days that runs horizontally. There can be multiple rows, one per week. 7825----------------------------------------------------------------------------------------------------------------------*/ 7826var DayGrid = /** @class */ (function (_super) { 7827 tslib_1.__extends(DayGrid, _super); 7828 function DayGrid(view) { 7829 var _this = _super.call(this, view) || this; 7830 _this.cellWeekNumbersVisible = false; // display week numbers in day cell? 7831 _this.bottomCoordPadding = 0; // hack for extending the hit area for the last row of the coordinate grid 7832 // isRigid determines whether the individual rows should ignore the contents and be a constant height. 7833 // Relies on the view's colCnt and rowCnt. In the future, this component should probably be self-sufficient. 7834 _this.isRigid = false; 7835 _this.hasAllDayBusinessHours = true; 7836 return _this; 7837 } 7838 // Slices up the given span (unzoned start/end with other misc data) into an array of segments 7839 DayGrid.prototype.componentFootprintToSegs = function (componentFootprint) { 7840 var segs = this.sliceRangeByRow(componentFootprint.unzonedRange); 7841 var i; 7842 var seg; 7843 for (i = 0; i < segs.length; i++) { 7844 seg = segs[i]; 7845 if (this.isRTL) { 7846 seg.leftCol = this.daysPerRow - 1 - seg.lastRowDayIndex; 7847 seg.rightCol = this.daysPerRow - 1 - seg.firstRowDayIndex; 7848 } 7849 else { 7850 seg.leftCol = seg.firstRowDayIndex; 7851 seg.rightCol = seg.lastRowDayIndex; 7852 } 7853 } 7854 return segs; 7855 }; 7856 /* Date Rendering 7857 ------------------------------------------------------------------------------------------------------------------*/ 7858 DayGrid.prototype.renderDates = function (dateProfile) { 7859 this.dateProfile = dateProfile; 7860 this.updateDayTable(); 7861 this.renderGrid(); 7862 }; 7863 DayGrid.prototype.unrenderDates = function () { 7864 this.removeSegPopover(); 7865 }; 7866 // Renders the rows and columns into the component's `this.el`, which should already be assigned. 7867 DayGrid.prototype.renderGrid = function () { 7868 var view = this.view; 7869 var rowCnt = this.rowCnt; 7870 var colCnt = this.colCnt; 7871 var html = ''; 7872 var row; 7873 var col; 7874 if (this.headContainerEl) { 7875 this.headContainerEl.html(this.renderHeadHtml()); 7876 } 7877 for (row = 0; row < rowCnt; row++) { 7878 html += this.renderDayRowHtml(row, this.isRigid); 7879 } 7880 this.el.html(html); 7881 this.rowEls = this.el.find('.fc-row'); 7882 this.cellEls = this.el.find('.fc-day, .fc-disabled-day');
7883 this.rowCoordCache = new CoordCache_1.default({ 7884 els: this.rowEls, 7885 isVertical: true 7886 }); 7887 this.colCoordCache = new CoordCache_1.default({ 7888 els: this.cellEls.slice(0, this.colCnt), 7889 isHorizontal: true 7890 }); 7891 // trigger dayRender with each cell's element 7892 for (row = 0; row < rowCnt; row++) { 7893 for (col = 0; col < colCnt; col++) { 7894 this.publiclyTrigger('dayRender', { 7895 context: view, 7896 args: [ 7897 this.getCellDate(row, col), 7898 this.getCellEl(row, col), 7899 view 7900 ] 7901 }); 7902 } 7903 } 7904 }; 7905 // Generates the HTML for a single row, which is a div that wraps a table. 7906 // `row` is the row number. 7907 DayGrid.prototype.renderDayRowHtml = function (row, isRigid) { 7908 var theme = this.view.calendar.theme; 7909 var classes = ['fc-row', 'fc-week', theme.getClass('dayRow')]; 7910 if (isRigid) { 7911 classes.push('fc-rigid'); 7912 } 7913 return '' + 7914 '<div class="' + classes.join(' ') + '">' + 7915 '<div class="fc-bg">' + 7916 '<table class="' + theme.getClass('tableGrid') + '">' + 7917 this.renderBgTrHtml(row) + 7918 '</table>' + 7919 '</div>' + 7920 '<div class="fc-content-skeleton">' + 7921 '<table>' + 7922 (this.getIsNumbersVisible() ? 7923 '<thead>' + 7924 this.renderNumberTrHtml(row) + 7925 '</thead>' : 7926 '') + 7927 '</table>' + 7928 '</div>' + 7929 '</div>'; 7930 }; 7931 DayGrid.prototype.getIsNumbersVisible = function () { 7932 return this.getIsDayNumbersVisible() || this.cellWeekNumbersVisible; 7933 }; 7934 DayGrid.prototype.getIsDayNumbersVisible = function () { 7935 return this.rowCnt > 1; 7936 }; 7937 /* Grid Number Rendering 7938 ------------------------------------------------------------------------------------------------------------------*/ 7939 DayGrid.prototype.renderNumberTrHtml = function (row) { 7940 return '' + 7941 '<tr>' + 7942 (this.isRTL ? '' : this.renderNumberIntroHtml(row)) + 7943 this.renderNumberCellsHtml(row) + 7944 (this.isRTL ? this.renderNumberIntroHtml(row) : '') + 7945 '</tr>'; 7946 }; 7947 DayGrid.prototype.renderNumberIntroHtml = function (row) { 7948 return this.renderIntroHtml(); 7949 }; 7950 DayGrid.prototype.renderNumberCellsHtml = function (row) { 7951 var htmls = []; 7952 var col; 7953 var date; 7954 for (col = 0; col < this.colCnt; col++) { 7955 date = this.getCellDate(row, col); 7956 htmls.push(this.renderNumberCellHtml(date)); 7957 } 7958 return htmls.join(''); 7959 }; 7960 // Generates the HTML for the <td>s of the "number" row in the DayGrid's content skeleton. 7961 // The number row will only exist if either day numbers or week numbers are turned on. 7962 DayGrid.prototype.renderNumberCellHtml = function (date) { 7963 var view = this.view; 7964 var html = ''; 7965 var isDateValid = this.dateProfile.activeUnzonedRange.containsDate(date); // TODO: called too frequently. cache somehow. 7966 var isDayNumberVisible = this.getIsDayNumbersVisible() && isDateValid; 7967 var classes; 7968 var weekCalcFirstDoW; 7969 if (!isDayNumberVisible && !this.cellWeekNumbersVisible) { 7970 // no numbers in day cell (week number must be along the side) 7971 return '<td></td>'; // will create an empty space above events :( 7972 } 7973 classes = this.getDayClasses(date); 7974 classes.unshift('fc-day-top'); 7975 if (this.cellWeekNumbersVisible) { 7976 // To determine the day of week number change under ISO, we cannot 7977 // rely on moment.js methods such as firstDayOfWeek() or weekday(), 7978 // because they rely on the locale's dow (possibly overridden by 7979 // our firstDay option), which may not be Monday. We cannot change 7980 // dow, because that would affect the calendar start day as well. 7981 if (date._locale._fullCalendar_weekCalc === 'ISO') { 7982 weekCalcFirstDoW = 1; // Monday by ISO 8601 definition 7983 } 7984 else { 7985 weekCalcFirstDoW = date._locale.firstDayOfWeek(); 7986 } 7987 } 7988 html += '<td class="' + classes.join(' ') + '"' + 7989 (isDateValid ? 7990 ' data-date="' + date.format() + '"' : 7991 '') + 7992 '>'; 7993 if (this.cellWeekNumbersVisible && (date.day() === weekCalcFirstDoW)) { 7994 html += view.buildGotoAnchorHtml({ date: date, type: 'week' }, { 'class': 'fc-week-number' }, date.format('w') // inner HTML 7995 ); 7996 } 7997 if (isDayNumberVisible) { 7998 html += view.buildGotoAnchorHtml(date, { 'class': 'fc-day-number' }, date.format('D') // inner HTML 7999 ); 8000 } 8001 html += '</td>'; 8002 return html; 8003 }; 8004 /* Hit System 8005 ------------------------------------------------------------------------------------------------------------------*/ 8006 DayGrid.prototype.prepareHits = function () { 8007 this.colCoordCache.build(); 8008 this.rowCoordCache.build(); 8009 this.rowCoordCache.bottoms[this.rowCnt - 1] += this.bottomCoordPadding; // hack 8010 }; 8011 DayGrid.prototype.releaseHits = function () { 8012 this.colCoordCache.clear(); 8013 this.rowCoordCache.clear(); 8014 }; 8015 DayGrid.prototype.queryHit = function (leftOffset, topOffset) { 8016 if (this.colCoordCache.isLeftInBounds(leftOffset) && this.rowCoordCache.isTopInBounds(topOffset)) { 8017 var col = this.colCoordCache.getHorizontalIndex(leftOffset); 8018 var row = this.rowCoordCache.getVerticalIndex(topOffset); 8019 if (row != null && col != null) { 8020 return this.getCellHit(row, col); 8021 } 8022 } 8023 }; 8024 DayGrid.prototype.getHitFootprint = function (hit) { 8025 var range = this.getCellRange(hit.row, hit.col); 8026 return new ComponentFootprint_1.default(new UnzonedRange_1.default(range.start, range.end), true // all-day? 8027 ); 8028 }; 8029 DayGrid.prototype.getHitEl = function (hit) { 8030 return this.getCellEl(hit.row, hit.col); 8031 }; 8032 /* Cell System 8033 ------------------------------------------------------------------------------------------------------------------*/ 8034 // FYI: the first column is the leftmost column, regardless of date 8035 DayGrid.prototype.getCellHit = function (row, col) { 8036 return { 8037 row: row, 8038 col: col, 8039 component: this, 8040 left: this.colCoordCache.getLeftOffset(col), 8041 right: this.colCoordCache.getRightOffset(col), 8042 top: this.rowCoordCache.getTopOffset(row), 8043 bottom: this.rowCoordCache.getBottomOffset(row) 8044 }; 8045 }; 8046 DayGrid.prototype.getCellEl = function (row, col) { 8047 return this.cellEls.eq(row * this.colCnt + col); 8048 }; 8049 /* Event Rendering 8050 ------------------------------------------------------------------------------------------------------------------*/ 8051 // Unrenders all events currently rendered on the grid 8052 DayGrid.prototype.executeEventUnrender = function () { 8053 this.removeSegPopover(); // removes the "more.." events popover 8054 _super.prototype.executeEventUnrender.call(this); 8055 }; 8056 // Retrieves all rendered segment objects currently rendered on the grid 8057 DayGrid.prototype.getOwnEventSegs = function () { 8058 // append the segments from the "more..." popover 8059 return _super.prototype.getOwnEventSegs.call(this).concat(this.popoverSegs || []); 8060 }; 8061 /* Event Drag Visualization 8062 ------------------------------------------------------------------------------------------------------------------*/ 8063 // Renders a visual indication of an event or external element being dragged. 8064 // `eventLocation` has zoned start and end (optional) 8065 DayGrid.prototype.renderDrag = function (eventFootprints, seg, isTouch) { 8066 var i; 8067 for (i = 0; i < eventFootprints.length; i++) { 8068 this.renderHighlight(eventFootprints[i].componentFootprint); 8069 } 8070 // render drags from OTHER components as helpers 8071 if (eventFootprints.length && seg && seg.component !== this) { 8072 this.helperRenderer.renderEventDraggingFootprints(eventFootprints, seg, isTouch); 8073 return true; // signal helpers rendered 8074 } 8075 }; 8076 // Unrenders any visual indication of a hovering event 8077 DayGrid.prototype.unrenderDrag = function () { 8078 this.unrenderHighlight(); 8079 this.helperRenderer.unrender(); 8080 }; 8081 /* Event Resize Visualization 8082 ------------------------------------------------------------------------------------------------------------------*/ 8083 // Renders a visual indication of an event being resized 8084 DayGrid.prototype.renderEventResize = function (eventFootprints, seg, isTouch) { 8085 var i; 8086 for (i = 0; i < eventFootprints.length; i++) { 8087 this.renderHighlight(eventFootprints[i].componentFootprint); 8088 } 8089 this.helperRenderer.renderEventResizingFootprints(eventFootprints, seg, isTouch); 8090 }; 8091 // Unrenders a visual indication of an event being resized 8092 DayGrid.prototype.unrenderEventResize = function () { 8093 this.unrenderHighlight(); 8094 this.helperRenderer.unrender(); 8095 }; 8096 /* More+ Link Popover 8097 ------------------------------------------------------------------------------------------------------------------*/ 8098 DayGrid.prototype.removeSegPopover = function () { 8099 if (this.segPopover) { 8100 this.segPopover.hide(); // in handler, will call segPopover's removeElement 8101 } 8102 }; 8103 // Limits the number of "levels" (vertically stacking layers of events) for each row of the grid. 8104 // `levelLimit` can be false (don't limit), a number, or true (should be computed). 8105 DayGrid.prototype.limitRows = function (levelLimit) { 8106 var rowStructs = this.eventRenderer.rowStructs || []; 8107 var row; // row # 8108 var rowLevelLimit; 8109 for (row = 0; row < rowStructs.length; row++) { 8110 this.unlimitRow(row);
8111 if (!levelLimit) { 8112 rowLevelLimit = false; 8113 } 8114 else if (typeof levelLimit === 'number') { 8115 rowLevelLimit = levelLimit; 8116 } 8117 else { 8118 rowLevelLimit = this.computeRowLevelLimit(row); 8119 } 8120 if (rowLevelLimit !== false) { 8121 this.limitRow(row, rowLevelLimit); 8122 } 8123 } 8124 }; 8125 // Computes the number of levels a row will accomodate without going outside its bounds. 8126 // Assumes the row is "rigid" (maintains a constant height regardless of what is inside). 8127 // `row` is the row number. 8128 DayGrid.prototype.computeRowLevelLimit = function (row) { 8129 var rowEl = this.rowEls.eq(row); // the containing "fake" row div 8130 var rowHeight = rowEl.height(); // TODO: cache somehow? 8131 var trEls = this.eventRenderer.rowStructs[row].tbodyEl.children(); 8132 var i; 8133 var trEl; 8134 var trHeight; 8135 function iterInnerHeights(i, childNode) { 8136 trHeight = Math.max(trHeight, $(childNode).outerHeight()); 8137 } 8138 // Reveal one level <tr> at a time and stop when we find one out of bounds 8139 for (i = 0; i < trEls.length; i++) { 8140 trEl = trEls.eq(i).removeClass('fc-limited'); // reset to original state (reveal) 8141 // with rowspans>1 and IE8, trEl.outerHeight() would return the height of the largest cell, 8142 // so instead, find the tallest inner content element. 8143 trHeight = 0; 8144 trEl.find('> td > :first-child').each(iterInnerHeights); 8145 if (trEl.position().top + trHeight > rowHeight) { 8146 return i; 8147 } 8148 } 8149 return false; // should not limit at all 8150 }; 8151 // Limits the given grid row to the maximum number of levels and injects "more" links if necessary. 8152 // `row` is the row number. 8153 // `levelLimit` is a number for the maximum (inclusive) number of levels allowed. 8154 DayGrid.prototype.limitRow = function (row, levelLimit) { 8155 var _this = this; 8156 var rowStruct = this.eventRenderer.rowStructs[row]; 8157 var moreNodes = []; // array of "more" <a> links and <td> DOM nodes 8158 var col = 0; // col #, left-to-right (not chronologically) 8159 var levelSegs; // array of segment objects in the last allowable level, ordered left-to-right 8160 var cellMatrix; // a matrix (by level, then column) of all <td> jQuery elements in the row 8161 var limitedNodes; // array of temporarily hidden level <tr> and segment <td> DOM nodes 8162 var i; 8163 var seg; 8164 var segsBelow; // array of segment objects below `seg` in the current `col` 8165 var totalSegsBelow; // total number of segments below `seg` in any of the columns `seg` occupies 8166 var colSegsBelow; // array of segment arrays, below seg, one for each column (offset from segs's first column) 8167 var td; 8168 var rowspan; 8169 var segMoreNodes; // array of "more" <td> cells that will stand-in for the current seg's cell 8170 var j; 8171 var moreTd; 8172 var moreWrap; 8173 var moreLink; 8174 // Iterates through empty level cells and places "more" links inside if need be 8175 var emptyCellsUntil = function (endCol) { 8176 while (col < endCol) { 8177 segsBelow = _this.getCellSegs(row, col, levelLimit); 8178 if (segsBelow.length) { 8179 td = cellMatrix[levelLimit - 1][col]; 8180 moreLink = _this.renderMoreLink(row, col, segsBelow); 8181 moreWrap = $('<div>').append(moreLink); 8182 td.append(moreWrap); 8183 moreNodes.push(moreWrap[0]); 8184 } 8185 col++; 8186 } 8187 }; 8188 if (levelLimit && levelLimit < rowStruct.segLevels.length) { // is it actually over the limit? 8189 levelSegs = rowStruct.segLevels[levelLimit - 1]; 8190 cellMatrix = rowStruct.cellMatrix; 8191 limitedNodes = rowStruct.tbodyEl.children().slice(levelLimit) // get level <tr> elements past the limit 8192 .addClass('fc-limited').get(); // hide elements and get a simple DOM-nodes array 8193 // iterate though segments in the last allowable level 8194 for (i = 0; i < levelSegs.length; i++) { 8195 seg = levelSegs[i]; 8196 emptyCellsUntil(seg.leftCol); // process empty cells before the segment 8197 // determine *all* segments below `seg` that occupy the same columns 8198 colSegsBelow = []; 8199 totalSegsBelow = 0; 8200 while (col <= seg.rightCol) { 8201 segsBelow = this.getCellSegs(row, col, levelLimit); 8202 colSegsBelow.push(segsBelow);
8203 totalSegsBelow += segsBelow.length; 8204 col++; 8205 } 8206 if (totalSegsBelow) { // do we need to replace this segment with one or many "more" links? 8207 td = cellMatrix[levelLimit - 1][seg.leftCol]; // the segment's parent cell 8208 rowspan = td.attr('rowspan') || 1; 8209 segMoreNodes = []; 8210 // make a replacement <td> for each column the segment occupies. will be one for each colspan 8211 for (j = 0; j < colSegsBelow.length; j++) { 8212 moreTd = $('<td class="fc-more-cell">').attr('rowspan', rowspan); 8213 segsBelow = colSegsBelow[j]; 8214 moreLink = this.renderMoreLink(row, seg.leftCol + j, [seg].concat(segsBelow) // count seg as hidden too 8215 ); 8216 moreWrap = $('<div>').append(moreLink); 8217 moreTd.append(moreWrap); 8218 segMoreNodes.push(moreTd[0]); 8219 moreNodes.push(moreTd[0]); 8220 } 8221 td.addClass('fc-limited').after($(segMoreNodes)); // hide original <td> and inject replacements 8222 limitedNodes.push(td[0]); 8223 } 8224 } 8225 emptyCellsUntil(this.colCnt); // finish off the level 8226 rowStruct.moreEls = $(moreNodes); // for easy undoing later 8227 rowStruct.limitedEls = $(limitedNodes); // for easy undoing later 8228 } 8229 }; 8230 // Reveals all levels and removes all "more"-related elements for a grid's row. 8231 // `row` is a row number. 8232 DayGrid.prototype.unlimitRow = function (row) { 8233 var rowStruct = this.eventRenderer.rowStructs[row]; 8234 if (rowStruct.moreEls) { 8235 rowStruct.moreEls.remove(); 8236 rowStruct.moreEls = null; 8237 } 8238 if (rowStruct.limitedEls) { 8239 rowStruct.limitedEls.removeClass('fc-limited'); 8240 rowStruct.limitedEls = null; 8241 } 8242 }; 8243 // Renders an <a> element that represents hidden event element for a cell. 8244 // Responsible for attaching click handler as well. 8245 DayGrid.prototype.renderMoreLink = function (row, col, hiddenSegs) { 8246 var _this = this; 8247 var view = this.view; 8248 return $('<a class="fc-more">') 8249 .text(this.getMoreLinkText(hiddenSegs.length)) 8250 .on('click', function (ev) { 8251 var clickOption = _this.opt('eventLimitClick'); 8252 var date = _this.getCellDate(row, col); 8253 var moreEl = $(ev.currentTarget); 8254 var dayEl = _this.getCellEl(row, col); 8255 var allSegs = _this.getCellSegs(row, col); 8256 // rescope the segments to be within the cell's date 8257 var reslicedAllSegs = _this.resliceDaySegs(allSegs, date); 8258 var reslicedHiddenSegs = _this.resliceDaySegs(hiddenSegs, date); 8259 if (typeof clickOption === 'function') { 8260 // the returned value can be an atomic option 8261 clickOption = _this.publiclyTrigger('eventLimitClick', { 8262 context: view, 8263 args: [ 8264 { 8265 date: date.clone(), 8266 dayEl: dayEl, 8267 moreEl: moreEl, 8268 segs: reslicedAllSegs, 8269 hiddenSegs: reslicedHiddenSegs 8270 }, 8271 ev, 8272 view 8273 ] 8274 }); 8275 } 8276 if (clickOption === 'popover') { 8277 _this.showSegPopover(row, col, moreEl, reslicedAllSegs); 8278 } 8279 else if (typeof clickOption === 'string') { // a view name 8280 view.calendar.zoomTo(date, clickOption); 8281 } 8282 }); 8283 }; 8284 // Reveals the popover that displays all events within a cell 8285 DayGrid.prototype.showSegPopover = function (row, col, moreLink, segs) { 8286 var _this = this; 8287 var view = this.view; 8288 var moreWrap = moreLink.parent(); // the <div> wrapper around the <a> 8289 var topEl; // the element we want to match the top coordinate of 8290 var options; 8291 if (this.rowCnt === 1) { 8292 topEl = view.el; // will cause the popover to cover any sort of header 8293 } 8294 else { 8295 topEl = this.rowEls.eq(row); // will align with top of row 8296 } 8297 options = { 8298 className: 'fc-more-popover ' + view.calendar.theme.getClass('popover'), 8299 content: this.renderSegPopoverContent(row, col, segs), 8300 parentEl: view.el, 8301 top: topEl.offset().top, 8302 autoHide: true, 8303 viewportConstrain: this.opt('popoverViewportConstrain'), 8304 hide: function () { 8305 // kill everything when the popover is hidden 8306 // notify events to be removed 8307 if (_this.popoverSegs) { 8308 _this.triggerBeforeEventSegsDestroyed(_this.popoverSegs); 8309 } 8310 _this.segPopover.removeElement(); 8311 _this.segPopover = null; 8312 _this.popoverSegs = null; 8313 } 8314 }; 8315 // Determine horizontal coordinate. 8316 // We use the moreWrap instead of the <td> to avoid border confusion. 8317 if (this.isRTL) { 8318 options.right = moreWrap.offset().left + moreWrap.outerWidth() + 1; // +1 to be over cell border 8319 } 8320 else { 8321 options.left = moreWrap.offset().left - 1; // -1 to be over cell border 8322 } 8323 this.segPopover = new Popover_1.default(options); 8324 this.segPopover.show(); 8325 // the popover doesn't live within the grid's container element, and thus won't get the event 8326 // delegated-handlers for free. attach event-related handlers to the popover. 8327 this.bindAllSegHandlersToEl(this.segPopover.el); 8328 this.triggerAfterEventSegsRendered(segs); 8329 }; 8330 // Builds the inner DOM contents of the segment popover 8331 DayGrid.prototype.renderSegPopoverContent = function (row, col, segs) { 8332 var view = this.view; 8333 var theme = view.calendar.theme; 8334 var title = this.getCellDate(row, col).format(this.opt('dayPopoverFormat'));
8335 var content = $('<div class="fc-header ' + theme.getClass('popoverHeader') + '">' + 8336 '<span class="fc-close ' + theme.getIconClass('close') + '"></span>' + 8337 '<span class="fc-title">' + 8338 util_1.htmlEscape(title) + 8339 '</span>' + 8340 '<div class="fc-clear"></div>' + 8341 '</div>' + 8342 '<div class="fc-body ' + theme.getClass('popoverContent') + '">' + 8343 '<div class="fc-event-container"></div>' + 8344 '</div>'); 8345 var segContainer = content.find('.fc-event-container'); 8346 var i; 8347 // render each seg's `el` and only return the visible segs 8348 segs = this.eventRenderer.renderFgSegEls(segs, true); // disableResizing=true 8349 this.popoverSegs = segs; 8350 for (i = 0; i < segs.length; i++) { 8351 // because segments in the popover are not part of a grid coordinate system, provide a hint to any 8352 // grids that want to do drag-n-drop about which cell it came from 8353 this.hitsNeeded(); 8354 segs[i].hit = this.getCellHit(row, col); 8355 this.hitsNotNeeded(); 8356 segContainer.append(segs[i].el); 8357 } 8358 return content; 8359 }; 8360 // Given the events within an array of segment objects, reslice them to be in a single day 8361 DayGrid.prototype.resliceDaySegs = function (segs, dayDate) { 8362 var dayStart = dayDate.clone(); 8363 var dayEnd = dayStart.clone().add(1, 'days'); 8364 var dayRange = new UnzonedRange_1.default(dayStart, dayEnd); 8365 var newSegs = []; 8366 var i; 8367 var seg; 8368 var slicedRange; 8369 for (i = 0; i < segs.length; i++) { 8370 seg = segs[i]; 8371 slicedRange = seg.footprint.componentFootprint.unzonedRange.intersect(dayRange); 8372 if (slicedRange) { 8373 newSegs.push($.extend({}, seg, { 8374 footprint: new EventFootprint_1.default(new ComponentFootprint_1.default(slicedRange, seg.footprint.componentFootprint.isAllDay), seg.footprint.eventDef, seg.footprint.eventInstance), 8375 isStart: seg.isStart && slicedRange.isStart, 8376 isEnd: seg.isEnd && slicedRange.isEnd 8377 })); 8378 } 8379 } 8380 // force an order because eventsToSegs doesn't guarantee one 8381 // TODO: research if still needed 8382 this.eventRenderer.sortEventSegs(newSegs); 8383 return newSegs; 8384 }; 8385 // Generates the text that should be inside a "more" link, given the number of events it represents 8386 DayGrid.prototype.getMoreLinkText = function (num) { 8387 var opt = this.opt('eventLimitText'); 8388 if (typeof opt === 'function') { 8389 return opt(num); 8390 } 8391 else { 8392 return '+' + num + ' ' + opt; 8393 } 8394 }; 8395 // Returns segments within a given cell. 8396 // If `startLevel` is specified, returns only events including and below that level. Otherwise returns all segs. 8397 DayGrid.prototype.getCellSegs = function (row, col, startLevel) { 8398 var segMatrix = this.eventRenderer.rowStructs[row].segMatrix; 8399 var level = startLevel || 0; 8400 var segs = []; 8401 var seg; 8402 while (level < segMatrix.length) { 8403 seg = segMatrix[level][col]; 8404 if (seg) { 8405 segs.push(seg); 8406 } 8407 level++; 8408 } 8409 return segs; 8410 }; 8411 return DayGrid; 8412}(InteractiveDateComponent_1.default)); 8413exports.default = DayGrid; 8414DayGrid.prototype.eventRendererClass = DayGridEventRenderer_1.default; 8415DayGrid.prototype.businessHourRendererClass = BusinessHourRenderer_1.default; 8416DayGrid.prototype.helperRendererClass = DayGridHelperRenderer_1.default; 8417DayGrid.prototype.fillRendererClass = DayGridFillRenderer_1.default; 8418StandardInteractionsMixin_1.default.mixInto(DayGrid); 8419DayTableMixin_1.default.mixInto(DayGrid); 8420 8421 8422/***/ }), 8423/* 67 */ 8424/***/ (function(module, exports, __webpack_require__) { 8425 8426Object.defineProperty(exports, "__esModule", { value: true }); 8427var tslib_1 = __webpack_require__(2); 8428var $ = __webpack_require__(3); 8429var util_1 = __webpack_require__(4); 8430var Scroller_1 = __webpack_require__(41); 8431var View_1 = __webpack_require__(43); 8432var BasicViewDateProfileGenerator_1 = __webpack_require__(68); 8433var DayGrid_1 = __webpack_require__(66); 8434/* An abstract class for the "basic" views, as well as month view. Renders one or more rows of day cells. 8435----------------------------------------------------------------------------------------------------------------------*/ 8436// It is a manager for a DayGrid subcomponent, which does most of the heavy lifting. 8437// It is responsible for managing width/height. 8438var BasicView = /** @class */ (function (_super) { 8439 tslib_1.__extends(BasicView, _super); 8440 function BasicView(calendar, viewSpec) { 8441 var _this = _super.call(this, calendar, viewSpec) || this; 8442 _this.dayGrid = _this.instantiateDayGrid(); 8443 _this.dayGrid.isRigid = _this.hasRigidRows(); 8444 if (_this.opt('weekNumbers')) { 8445 if (_this.opt('weekNumbersWithinDays')) { 8446 _this.dayGrid.cellWeekNumbersVisible = true; 8447 _this.dayGrid.colWeekNumbersVisible = false; 8448 } 8449 else { 8450 _this.dayGrid.cellWeekNumbersVisible = false; 8451 _this.dayGrid.colWeekNumbersVisible = true; 8452 } 8453 } 8454 _this.addChild(_this.dayGrid); 8455 _this.scroller = new Scroller_1.default({ 8456 overflowX: 'hidden', 8457 overflowY: 'auto' 8458 }); 8459 return _this; 8460 } 8461 // Generates the DayGrid object this view needs. Draws from this.dayGridClass 8462 BasicView.prototype.instantiateDayGrid = function () { 8463 // generate a subclass on the fly with BasicView-specific behavior 8464 // TODO: cache this subclass 8465 var subclass = makeDayGridSubclass(this.dayGridClass); 8466 return new subclass(this); 8467 }; 8468 BasicView.prototype.executeDateRender = function (dateProfile) { 8469 this.dayGrid.breakOnWeeks = /year|month|week/.test(dateProfile.currentRangeUnit); 8470 _super.prototype.executeDateRender.call(this, dateProfile); 8471 }; 8472 BasicView.prototype.renderSkeleton = function () { 8473 var dayGridContainerEl; 8474 var dayGridEl; 8475 this.el.addClass('fc-basic-view').html(this.renderSkeletonHtml()); 8476 this.scroller.render(); 8477 dayGridContainerEl = this.scroller.el.addClass('fc-day-grid-container');
8478 dayGridEl = $('<div class="fc-day-grid">').appendTo(dayGridContainerEl); 8479 this.el.find('.fc-body > tr > td').append(dayGridContainerEl); 8480 this.dayGrid.headContainerEl = this.el.find('.fc-head-container'); 8481 this.dayGrid.setElement(dayGridEl); 8482 }; 8483 BasicView.prototype.unrenderSkeleton = function () { 8484 this.dayGrid.removeElement(); 8485 this.scroller.destroy(); 8486 }; 8487 // Builds the HTML skeleton for the view. 8488 // The day-grid component will render inside of a container defined by this HTML. 8489 BasicView.prototype.renderSkeletonHtml = function () { 8490 var theme = this.calendar.theme; 8491 return '' + 8492 '<table class="' + theme.getClass('tableGrid') + '">' + 8493 (this.opt('columnHeader') ? 8494 '<thead class="fc-head">' + 8495 '<tr>' + 8496 '<td class="fc-head-container ' + theme.getClass('widgetHeader') + '"> </td>' + 8497 '</tr>' + 8498 '</thead>' : 8499 '') + 8500 '<tbody class="fc-body">' + 8501 '<tr>' + 8502 '<td class="' + theme.getClass('widgetContent') + '"></td>' + 8503 '</tr>' + 8504 '</tbody>' + 8505 '</table>'; 8506 }; 8507 // Generates an HTML attribute string for setting the width of the week number column, if it is known 8508 BasicView.prototype.weekNumberStyleAttr = function () { 8509 if (this.weekNumberWidth != null) { 8510 return 'style="width:' + this.weekNumberWidth + 'px"'; 8511 } 8512 return ''; 8513 }; 8514 // Determines whether each row should have a constant height 8515 BasicView.prototype.hasRigidRows = function () { 8516 var eventLimit = this.opt('eventLimit'); 8517 return eventLimit && typeof eventLimit !== 'number'; 8518 }; 8519 /* Dimensions 8520 ------------------------------------------------------------------------------------------------------------------*/ 8521 // Refreshes the horizontal dimensions of the view 8522 BasicView.prototype.updateSize = function (totalHeight, isAuto, isResize) { 8523 var eventLimit = this.opt('eventLimit'); 8524 var headRowEl = this.dayGrid.headContainerEl.find('.fc-row'); 8525 var scrollerHeight; 8526 var scrollbarWidths; 8527 // hack to give the view some height prior to dayGrid's columns being rendered 8528 // TODO: separate setting height from scroller VS dayGrid. 8529 if (!this.dayGrid.rowEls) { 8530 if (!isAuto) { 8531 scrollerHeight = this.computeScrollerHeight(totalHeight); 8532 this.scroller.setHeight(scrollerHeight); 8533 } 8534 return; 8535 } 8536 _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize); 8537 if (this.dayGrid.colWeekNumbersVisible) { 8538 // Make sure all week number cells running down the side have the same width. 8539 // Record the width for cells created later. 8540 this.weekNumberWidth = util_1.matchCellWidths(this.el.find('.fc-week-number')); 8541 } 8542 // reset all heights to be natural 8543 this.scroller.clear(); 8544 util_1.uncompensateScroll(headRowEl); 8545 this.dayGrid.removeSegPopover(); // kill the "more" popover if displayed 8546 // is the event limit a constant level number? 8547 if (eventLimit && typeof eventLimit === 'number') { 8548 this.dayGrid.limitRows(eventLimit); // limit the levels first so the height can redistribute after 8549 } 8550 // distribute the height to the rows 8551 // (totalHeight is a "recommended" value if isAuto) 8552 scrollerHeight = this.computeScrollerHeight(totalHeight); 8553 this.setGridHeight(scrollerHeight, isAuto); 8554 // is the event limit dynamically calculated? 8555 if (eventLimit && typeof eventLimit !== 'number') { 8556 this.dayGrid.limitRows(eventLimit); // limit the levels after the grid's row heights have been set 8557 } 8558 if (!isAuto) { // should we force dimensions of the scroll container? 8559 this.scroller.setHeight(scrollerHeight);
8560 scrollbarWidths = this.scroller.getScrollbarWidths(); 8561 if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars? 8562 util_1.compensateScroll(headRowEl, scrollbarWidths); 8563 // doing the scrollbar compensation might have created text overflow which created more height. redo 8564 scrollerHeight = this.computeScrollerHeight(totalHeight); 8565 this.scroller.setHeight(scrollerHeight); 8566 } 8567 // guarantees the same scrollbar widths 8568 this.scroller.lockOverflow(scrollbarWidths); 8569 } 8570 }; 8571 // given a desired total height of the view, returns what the height of the scroller should be 8572 BasicView.prototype.computeScrollerHeight = function (totalHeight) { 8573 return totalHeight - 8574 util_1.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller 8575 }; 8576 // Sets the height of just the DayGrid component in this view 8577 BasicView.prototype.setGridHeight = function (height, isAuto) { 8578 if (isAuto) { 8579 util_1.undistributeHeight(this.dayGrid.rowEls); // let the rows be their natural height with no expanding 8580 } 8581 else { 8582 util_1.distributeHeight(this.dayGrid.rowEls, height, true); // true = compensate for height-hogging rows 8583 } 8584 }; 8585 /* Scroll 8586 ------------------------------------------------------------------------------------------------------------------*/ 8587 BasicView.prototype.computeInitialDateScroll = function () { 8588 return { top: 0 }; 8589 }; 8590 BasicView.prototype.queryDateScroll = function () { 8591 return { top: this.scroller.getScrollTop() }; 8592 }; 8593 BasicView.prototype.applyDateScroll = function (scroll) { 8594 if (scroll.top !== undefined) { 8595 this.scroller.setScrollTop(scroll.top); 8596 } 8597 }; 8598 return BasicView; 8599}(View_1.default)); 8600exports.default = BasicView; 8601BasicView.prototype.dateProfileGeneratorClass = BasicViewDateProfileGenerator_1.default; 8602BasicView.prototype.dayGridClass = DayGrid_1.default; 8603// customize the rendering behavior of BasicView's dayGrid 8604function makeDayGridSubclass(SuperClass) { 8605 return /** @class */ (function (_super) { 8606 tslib_1.__extends(SubClass, _super); 8607 function SubClass() { 8608 var _this = _super !== null && _super.apply(this, arguments) || this; 8609 _this.colWeekNumbersVisible = false; // display week numbers along the side? 8610 return _this; 8611 } 8612 // Generates the HTML that will go before the day-of week header cells 8613 SubClass.prototype.renderHeadIntroHtml = function () { 8614 var view = this.view; 8615 if (this.colWeekNumbersVisible) { 8616 return '' + 8617 '<th class="fc-week-number ' + view.calendar.theme.getClass('widgetHeader') + '" ' + view.weekNumberStyleAttr() + '>' + 8618 '<span>' + // needed for matchCellWidths 8619 util_1.htmlEscape(this.opt('weekNumberTitle')) + 8620 '</span>' + 8621 '</th>'; 8622 } 8623 return ''; 8624 }; 8625 // Generates the HTML that will go before content-skeleton cells that display the day/week numbers 8626 SubClass.prototype.renderNumberIntroHtml = function (row) { 8627 var view = this.view; 8628 var weekStart = this.getCellDate(row, 0); 8629 if (this.colWeekNumbersVisible) { 8630 return '' + 8631 '<td class="fc-week-number" ' + view.weekNumberStyleAttr() + '>' + 8632 view.buildGotoAnchorHtml(// aside from link, important for matchCellWidths 8633 { date: weekStart, type: 'week', forceOff: this.colCnt === 1 }, weekStart.format('w') // inner HTML 8634 ) + 8635 '</td>'; 8636 } 8637 return ''; 8638 }; 8639 // Generates the HTML that goes before the day bg cells for each day-row 8640 SubClass.prototype.renderBgIntroHtml = function () { 8641 var view = this.view; 8642 if (this.colWeekNumbersVisible) { 8643 return '<td class="fc-week-number ' + view.calendar.theme.getClass('widgetContent') + '" ' + 8644 view.weekNumberStyleAttr() + '></td>'; 8645 } 8646 return ''; 8647 }; 8648 // Generates the HTML that goes before every other type of row generated by DayGrid. 8649 // Affects helper-skeleton and highlight-skeleton rows. 8650 SubClass.prototype.renderIntroHtml = function () { 8651 var view = this.view; 8652 if (this.colWeekNumbersVisible) { 8653 return '<td class="fc-week-number" ' + view.weekNumberStyleAttr() + '></td>'; 8654 } 8655 return ''; 8656 }; 8657 SubClass.prototype.getIsNumbersVisible = function () { 8658 return DayGrid_1.default.prototype.getIsNumbersVisible.apply(this, arguments) || this.colWeekNumbersVisible; 8659 }; 8660 return SubClass; 8661 }(SuperClass)); 8662} 8663 8664 8665/***/ }), 8666/* 68 */ 8667/***/ (function(module, exports, __webpack_require__) { 8668 8669Object.defineProperty(exports, "__esModule", { value: true });
8670var tslib_1 = __webpack_require__(2); 8671var UnzonedRange_1 = __webpack_require__(5); 8672var DateProfileGenerator_1 = __webpack_require__(55); 8673var BasicViewDateProfileGenerator = /** @class */ (function (_super) { 8674 tslib_1.__extends(BasicViewDateProfileGenerator, _super); 8675 function BasicViewDateProfileGenerator() { 8676 return _super !== null && _super.apply(this, arguments) || this; 8677 } 8678 // Computes the date range that will be rendered. 8679 BasicViewDateProfileGenerator.prototype.buildRenderRange = function (currentUnzonedRange, currentRangeUnit, isRangeAllDay) { 8680 var renderUnzonedRange = _super.prototype.buildRenderRange.call(this, currentUnzonedRange, currentRangeUnit, isRangeAllDay); // an UnzonedRange 8681 var start = this.msToUtcMoment(renderUnzonedRange.startMs, isRangeAllDay); 8682 var end = this.msToUtcMoment(renderUnzonedRange.endMs, isRangeAllDay); 8683 // year and month views should be aligned with weeks. this is already done for week 8684 if (/^(year|month)$/.test(currentRangeUnit)) { 8685 start.startOf('week'); 8686 // make end-of-week if not already 8687 if (end.weekday()) { 8688 end.add(1, 'week').startOf('week'); // exclusively move backwards 8689 } 8690 } 8691 return new UnzonedRange_1.default(start, end); 8692 }; 8693 return BasicViewDateProfileGenerator; 8694}(DateProfileGenerator_1.default)); 8695exports.default = BasicViewDateProfileGenerator; 8696 8697 8698/***/ }), 8699/* 69 */, 8700/* 70 */, 8701/* 71 */, 8702/* 72 */, 8703/* 73 */, 8704/* 74 */, 8705/* 75 */, 8706/* 76 */, 8707/* 77 */, 8708/* 78 */, 8709/* 79 */, 8710/* 80 */, 8711/* 81 */, 8712/* 82 */, 8713/* 83 */, 8714/* 84 */, 8715/* 85 */, 8716/* 86 */, 8717/* 87 */, 8718/* 88 */, 8719/* 89 */, 8720/* 90 */, 8721/* 91 */, 8722/* 92 */, 8723/* 93 */, 8724/* 94 */, 8725/* 95 */, 8726/* 96 */, 8727/* 97 */, 8728/* 98 */, 8729/* 99 */, 8730/* 100 */, 8731/* 101 */, 8732/* 102 */, 8733/* 103 */, 8734/* 104 */, 8735/* 105 */, 8736/* 106 */, 8737/* 107 */, 8738/* 108 */, 8739/* 109 */, 8740/* 110 */, 8741/* 111 */, 8742/* 112 */, 8743/* 113 */, 8744/* 114 */, 8745/* 115 */, 8746/* 116 */, 8747/* 117 */, 8748/* 118 */, 8749/* 119 */, 8750/* 120 */, 8751/* 121 */, 8752/* 122 */, 8753/* 123 */, 8754/* 124 */, 8755/* 125 */, 8756/* 126 */, 8757/* 127 */, 8758/* 128 */, 8759/* 129 */, 8760/* 130 */, 8761/* 131 */, 8762/* 132 */, 8763/* 133 */, 8764/* 134 */, 8765/* 135 */, 8766/* 136 */, 8767/* 137 */, 8768/* 138 */, 8769/* 139 */, 8770/* 140 */, 8771/* 141 */, 8772/* 142 */, 8773/* 143 */, 8774/* 144 */, 8775/* 145 */, 8776/* 146 */, 8777/* 147 */, 8778/* 148 */, 8779/* 149 */, 8780/* 150 */, 8781/* 151 */, 8782/* 152 */, 8783/* 153 */, 8784/* 154 */, 8785/* 155 */, 8786/* 156 */, 8787/* 157 */, 8788/* 158 */, 8789/* 159 */, 8790/* 160 */, 8791/* 161 */, 8792/* 162 */, 8793/* 163 */, 8794/* 164 */, 8795/* 165 */, 8796/* 166 */, 8797/* 167 */, 8798/* 168 */, 8799/* 169 */, 8800/* 170 */, 8801/* 171 */, 8802/* 172 */, 8803/* 173 */, 8804/* 174 */, 8805/* 175 */, 8806/* 176 */, 8807/* 177 */, 8808/* 178 */, 8809/* 179 */, 8810/* 180 */, 8811/* 181 */, 8812/* 182 */, 8813/* 183 */, 8814/* 184 */, 8815/* 185 */, 8816/* 186 */, 8817/* 187 */, 8818/* 188 */, 8819/* 189 */, 8820/* 190 */, 8821/* 191 */, 8822/* 192 */, 8823/* 193 */, 8824/* 194 */, 8825/* 195 */, 8826/* 196 */, 8827/* 197 */, 8828/* 198 */, 8829/* 199 */, 8830/* 200 */, 8831/* 201 */, 8832/* 202 */, 8833/* 203 */, 8834/* 204 */, 8835/* 205 */, 8836/* 206 */, 8837/* 207 */, 8838/* 208 */, 8839/* 209 */, 8840/* 210 */, 8841/* 211 */, 8842/* 212 */, 8843/* 213 */, 8844/* 214 */, 8845/* 215 */, 8846/* 216 */, 8847/* 217 */ 8848/***/ (function(module, exports, __webpack_require__) { 8849 8850Object.defineProperty(exports, "__esModule", { value: true }); 8851var UnzonedRange_1 = __webpack_require__(5); 8852var ComponentFootprint_1 = __webpack_require__(12); 8853var EventDefParser_1 = __webpack_require__(36); 8854var EventSource_1 = __webpack_require__(6); 8855var util_1 = __webpack_require__(19); 8856var Constraints = /** @class */ (function () { 8857 function Constraints(eventManager, _calendar) { 8858 this.eventManager = eventManager; 8859 this._calendar = _calendar; 8860 } 8861 Constraints.prototype.opt = function (name) { 8862 return this._calendar.opt(name); 8863 }; 8864 /* 8865 determines if eventInstanceGroup is allowed, 8866 in relation to other EVENTS and business hours. 8867 */ 8868 Constraints.prototype.isEventInstanceGroupAllowed = function (eventInstanceGroup) { 8869 var eventDef = eventInstanceGroup.getEventDef(); 8870 var eventFootprints = this.eventRangesToEventFootprints(eventInstanceGroup.getAllEventRanges()); 8871 var i; 8872 var peerEventInstances = this.getPeerEventInstances(eventDef); 8873 var peerEventRanges = peerEventInstances.map(util_1.eventInstanceToEventRange); 8874 var peerEventFootprints = this.eventRangesToEventFootprints(peerEventRanges); 8875 var constraintVal = eventDef.getConstraint(); 8876 var overlapVal = eventDef.getOverlap(); 8877 var eventAllowFunc = this.opt('eventAllow'); 8878 for (i = 0; i < eventFootprints.length; i++) { 8879 if (!this.isFootprintAllowed(eventFootprints[i].componentFootprint, peerEventFootprints, constraintVal, overlapVal, eventFootprints[i].eventInstance)) { 8880 return false; 8881 } 8882 } 8883 if (eventAllowFunc) { 8884 for (i = 0; i < eventFootprints.length; i++) { 8885 if (eventAllowFunc(eventFootprints[i].componentFootprint.toLegacy(this._calendar), eventFootprints[i].getEventLegacy()) === false) { 8886 return false; 8887 } 8888 } 8889 } 8890 return true; 8891 }; 8892 Constraints.prototype.getPeerEventInstances = function (eventDef) { 8893 return this.eventManager.getEventInstancesWithoutId(eventDef.id); 8894 }; 8895 Constraints.prototype.isSelectionFootprintAllowed = function (componentFootprint) { 8896 var peerEventInstances = this.eventManager.getEventInstances(); 8897 var peerEventRanges = peerEventInstances.map(util_1.eventInstanceToEventRange); 8898 var peerEventFootprints = this.eventRangesToEventFootprints(peerEventRanges); 8899 var selectAllowFunc; 8900 if (this.isFootprintAllowed(componentFootprint, peerEventFootprints, this.opt('selectConstraint'), this.opt('selectOverlap'))) { 8901 selectAllowFunc = this.opt('selectAllow'); 8902 if (selectAllowFunc) { 8903 return selectAllowFunc(componentFootprint.toLegacy(this._calendar)) !== false; 8904 } 8905 else { 8906 return true; 8907 } 8908 } 8909 return false; 8910 }; 8911 Constraints.prototype.isFootprintAllowed = function (componentFootprint, peerEventFootprints, constraintVal, overlapVal, subjectEventInstance // optional 8912 ) { 8913 var constraintFootprints; // ComponentFootprint[] 8914 var overlapEventFootprints; // EventFootprint[] 8915 if (constraintVal != null) { 8916 constraintFootprints = this.constraintValToFootprints(constraintVal, componentFootprint.isAllDay); 8917 if (!this.isFootprintWithinConstraints(componentFootprint, constraintFootprints)) { 8918 return false; 8919 } 8920 } 8921 overlapEventFootprints = this.collectOverlapEventFootprints(peerEventFootprints, componentFootprint); 8922 if (overlapVal === false) { 8923 if (overlapEventFootprints.length) { 8924 return false; 8925 } 8926 } 8927 else if (typeof overlapVal === 'function') { 8928 if (!isOverlapsAllowedByFunc(overlapEventFootprints, overlapVal, subjectEventInstance)) { 8929 return false; 8930 } 8931 } 8932 if (subjectEventInstance) { 8933 if (!isOverlapEventInstancesAllowed(overlapEventFootprints, subjectEventInstance)) { 8934 return false; 8935 } 8936 } 8937 return true; 8938 }; 8939 // Constraint 8940 // ------------------------------------------------------------------------------------------------ 8941 Constraints.prototype.isFootprintWithinConstraints = function (componentFootprint, constraintFootprints) { 8942 var i; 8943 for (i = 0; i < constraintFootprints.length; i++) { 8944 if (this.footprintContainsFootprint(constraintFootprints[i], componentFootprint)) { 8945 return true; 8946 } 8947 } 8948 return false; 8949 }; 8950 Constraints.prototype.constraintValToFootprints = function (constraintVal, isAllDay) { 8951 var eventInstances; 8952 if (constraintVal === 'businessHours') { 8953 return this.buildCurrentBusinessFootprints(isAllDay); 8954 } 8955 else if (typeof constraintVal === 'object') { 8956 eventInstances = this.parseEventDefToInstances(constraintVal); // handles recurring events 8957 if (!eventInstances) { // invalid input. fallback to parsing footprint directly 8958 return this.parseFootprints(constraintVal); 8959 } 8960 else { 8961 return this.eventInstancesToFootprints(eventInstances); 8962 } 8963 } 8964 else if (constraintVal != null) { // an ID 8965 eventInstances = this.eventManager.getEventInstancesWithId(constraintVal); 8966 return this.eventInstancesToFootprints(eventInstances); 8967 } 8968 }; 8969 // returns ComponentFootprint[] 8970 // uses current view's range 8971 Constraints.prototype.buildCurrentBusinessFootprints = function (isAllDay) { 8972 var view = this._calendar.view; 8973 var businessHourGenerator = view.get('businessHourGenerator'); 8974 var unzonedRange = view.dateProfile.activeUnzonedRange; 8975 var eventInstanceGroup = businessHourGenerator.buildEventInstanceGroup(isAllDay, unzonedRange); 8976 if (eventInstanceGroup) { 8977 return this.eventInstancesToFootprints(eventInstanceGroup.eventInstances); 8978 } 8979 else { 8980 return []; 8981 } 8982 }; 8983 // conversion util 8984 Constraints.prototype.eventInstancesToFootprints = function (eventInstances) { 8985 var eventRanges = eventInstances.map(util_1.eventInstanceToEventRange); 8986 var eventFootprints = this.eventRangesToEventFootprints(eventRanges); 8987 return eventFootprints.map(util_1.eventFootprintToComponentFootprint); 8988 }; 8989 // Overlap 8990 // ------------------------------------------------------------------------------------------------ 8991 Constraints.prototype.collectOverlapEventFootprints = function (peerEventFootprints, targetFootprint) { 8992 var overlapEventFootprints = []; 8993 var i; 8994 for (i = 0; i < peerEventFootprints.length; i++) { 8995 if (this.footprintsIntersect(targetFootprint, peerEventFootprints[i].componentFootprint)) { 8996 overlapEventFootprints.push(peerEventFootprints[i]); 8997 } 8998 } 8999 return overlapEventFootprints; 9000 }; 9001 // Conversion: eventDefs -> eventInstances -> eventRanges -> eventFootprints -> componentFootprints 9002 // ------------------------------------------------------------------------------------------------ 9003 // NOTE: this might seem like repetitive code with the Grid class, however, this code is related to 9004 // constraints whereas the Grid code is related to rendering. Each approach might want to convert 9005 // eventRanges -> eventFootprints in a different way. Regardless, there are opportunities to make 9006 // this more DRY. 9007 /*
9008 Returns false on invalid input. 9009 */ 9010 Constraints.prototype.parseEventDefToInstances = function (eventInput) { 9011 var eventManager = this.eventManager; 9012 var eventDef = EventDefParser_1.default.parse(eventInput, new EventSource_1.default(this._calendar)); 9013 if (!eventDef) { // invalid 9014 return false; 9015 } 9016 return eventDef.buildInstances(eventManager.currentPeriod.unzonedRange); 9017 }; 9018 Constraints.prototype.eventRangesToEventFootprints = function (eventRanges) { 9019 var i; 9020 var eventFootprints = []; 9021 for (i = 0; i < eventRanges.length; i++) { 9022 eventFootprints.push.apply(// footprints 9023 eventFootprints, this.eventRangeToEventFootprints(eventRanges[i])); 9024 } 9025 return eventFootprints; 9026 }; 9027 Constraints.prototype.eventRangeToEventFootprints = function (eventRange) { 9028 return [util_1.eventRangeToEventFootprint(eventRange)]; 9029 }; 9030 /* 9031 Parses footprints directly. 9032 Very similar to EventDateProfile::parse :( 9033 */ 9034 Constraints.prototype.parseFootprints = function (rawInput) { 9035 var start; 9036 var end; 9037 if (rawInput.start) { 9038 start = this._calendar.moment(rawInput.start); 9039 if (!start.isValid()) { 9040 start = null; 9041 } 9042 } 9043 if (rawInput.end) { 9044 end = this._calendar.moment(rawInput.end); 9045 if (!end.isValid()) { 9046 end = null; 9047 } 9048 } 9049 return [ 9050 new ComponentFootprint_1.default(new UnzonedRange_1.default(start, end), (start && !start.hasTime()) || (end && !end.hasTime()) // isAllDay 9051 ) 9052 ]; 9053 }; 9054 // Footprint Utils 9055 // ---------------------------------------------------------------------------------------- 9056 Constraints.prototype.footprintContainsFootprint = function (outerFootprint, innerFootprint) { 9057 return outerFootprint.unzonedRange.containsRange(innerFootprint.unzonedRange); 9058 }; 9059 Constraints.prototype.footprintsIntersect = function (footprint0, footprint1) { 9060 return footprint0.unzonedRange.intersectsWith(footprint1.unzonedRange); 9061 }; 9062 return Constraints; 9063}()); 9064exports.default = Constraints; 9065// optional subjectEventInstance 9066function isOverlapsAllowedByFunc(overlapEventFootprints, overlapFunc, subjectEventInstance) { 9067 var i; 9068 for (i = 0; i < overlapEventFootprints.length; i++) { 9069 if (!overlapFunc(overlapEventFootprints[i].eventInstance.toLegacy(), subjectEventInstance ? subjectEventInstance.toLegacy() : null)) { 9070 return false; 9071 } 9072 } 9073 return true; 9074} 9075function isOverlapEventInstancesAllowed(overlapEventFootprints, subjectEventInstance) { 9076 var subjectLegacyInstance = subjectEventInstance.toLegacy(); 9077 var i; 9078 var overlapEventInstance; 9079 var overlapEventDef; 9080 var overlapVal; 9081 for (i = 0; i < overlapEventFootprints.length; i++) { 9082 overlapEventInstance = overlapEventFootprints[i].eventInstance; 9083 overlapEventDef = overlapEventInstance.def; 9084 // don't need to pass in calendar, because don't want to consider global eventOverlap property, 9085 // because we already considered that earlier in the process. 9086 overlapVal = overlapEventDef.getOverlap(); 9087 if (overlapVal === false) { 9088 return false; 9089 } 9090 else if (typeof overlapVal === 'function') { 9091 if (!overlapVal(overlapEventInstance.toLegacy(), subjectLegacyInstance)) { 9092 return false; 9093 } 9094 } 9095 } 9096 return true; 9097} 9098 9099 9100/***/ }), 9101/* 218 */ 9102/***/ (function(module, exports, __webpack_require__) { 9103 9104Object.defineProperty(exports, "__esModule", { value: true }); 9105var $ = __webpack_require__(3); 9106var util_1 = __webpack_require__(19); 9107var EventInstanceGroup_1 = __webpack_require__(20); 9108var RecurringEventDef_1 = __webpack_require__(54); 9109var EventSource_1 = __webpack_require__(6); 9110var BUSINESS_HOUR_EVENT_DEFAULTS = { 9111 start: '09:00', 9112 end: '17:00', 9113 dow: [1, 2, 3, 4, 5], 9114 rendering: 'inverse-background' 9115 // classNames are defined in businessHoursSegClasses 9116}; 9117var BusinessHourGenerator = /** @class */ (function () { 9118 function BusinessHourGenerator(rawComplexDef, calendar) { 9119 this.rawComplexDef = rawComplexDef; 9120 this.calendar = calendar; 9121 } 9122 BusinessHourGenerator.prototype.buildEventInstanceGroup = function (isAllDay, unzonedRange) { 9123 var eventDefs = this.buildEventDefs(isAllDay); 9124 var eventInstanceGroup; 9125 if (eventDefs.length) { 9126 eventInstanceGroup = new EventInstanceGroup_1.default(util_1.eventDefsToEventInstances(eventDefs, unzonedRange)); 9127 // so that inverse-background rendering can happen even when no eventRanges in view 9128 eventInstanceGroup.explicitEventDef = eventDefs[0]; 9129 return eventInstanceGroup; 9130 } 9131 }; 9132 BusinessHourGenerator.prototype.buildEventDefs = function (isAllDay) { 9133 var rawComplexDef = this.rawComplexDef; 9134 var rawDefs = []; 9135 var requireDow = false; 9136 var i; 9137 var defs = []; 9138 if (rawComplexDef === true) { 9139 rawDefs = [{}]; // will get BUSINESS_HOUR_EVENT_DEFAULTS verbatim 9140 } 9141 else if ($.isPlainObject(rawComplexDef)) { 9142 rawDefs = [rawComplexDef]; 9143 } 9144 else if ($.isArray(rawComplexDef)) { 9145 rawDefs = rawComplexDef; 9146 requireDow = true; // every sub-definition NEEDS a day-of-week 9147 } 9148 for (i = 0; i < rawDefs.length; i++) { 9149 if (!requireDow || rawDefs[i].dow) { 9150 defs.push(this.buildEventDef(isAllDay, rawDefs[i])); 9151 } 9152 } 9153 return defs; 9154 }; 9155 BusinessHourGenerator.prototype.buildEventDef = function (isAllDay, rawDef) { 9156 var fullRawDef = $.extend({}, BUSINESS_HOUR_EVENT_DEFAULTS, rawDef); 9157 if (isAllDay) { 9158 fullRawDef.start = null; 9159 fullRawDef.end = null; 9160 } 9161 return RecurringEventDef_1.default.parse(fullRawDef, new EventSource_1.default(this.calendar) // dummy source 9162 ); 9163 }; 9164 return BusinessHourGenerator; 9165}()); 9166exports.default = BusinessHourGenerator; 9167 9168 9169/***/ }), 9170/* 219 */ 9171/***/ (function(module, exports, __webpack_require__) { 9172 9173Object.defineProperty(exports, "__esModule", { value: true });
9174var $ = __webpack_require__(3); 9175var util_1 = __webpack_require__(4); 9176var Promise_1 = __webpack_require__(21); 9177var EmitterMixin_1 = __webpack_require__(13); 9178var UnzonedRange_1 = __webpack_require__(5); 9179var EventInstanceGroup_1 = __webpack_require__(20); 9180var EventPeriod = /** @class */ (function () { 9181 function EventPeriod(start, end, timezone) { 9182 this.pendingCnt = 0; 9183 this.freezeDepth = 0; 9184 this.stuntedReleaseCnt = 0; 9185 this.releaseCnt = 0; 9186 this.start = start; 9187 this.end = end; 9188 this.timezone = timezone; 9189 this.unzonedRange = new UnzonedRange_1.default(start.clone().stripZone(), end.clone().stripZone()); 9190 this.requestsByUid = {}; 9191 this.eventDefsByUid = {}; 9192 this.eventDefsById = {}; 9193 this.eventInstanceGroupsById = {}; 9194 } 9195 EventPeriod.prototype.isWithinRange = function (start, end) { 9196 // TODO: use a range util function? 9197 return !start.isBefore(this.start) && !end.isAfter(this.end); 9198 }; 9199 // Requesting and Purging 9200 // ----------------------------------------------------------------------------------------------------------------- 9201 EventPeriod.prototype.requestSources = function (sources) { 9202 this.freeze(); 9203 for (var i = 0; i < sources.length; i++) { 9204 this.requestSource(sources[i]); 9205 } 9206 this.thaw(); 9207 }; 9208 EventPeriod.prototype.requestSource = function (source) { 9209 var _this = this; 9210 var request = { source: source, status: 'pending', eventDefs: null }; 9211 this.requestsByUid[source.uid] = request; 9212 this.pendingCnt += 1; 9213 source.fetch(this.start, this.end, this.timezone).then(function (eventDefs) { 9214 if (request.status !== 'cancelled') { 9215 request.status = 'completed'; 9216 request.eventDefs = eventDefs; 9217 _this.addEventDefs(eventDefs); 9218 _this.pendingCnt--; 9219 _this.tryRelease(); 9220 } 9221 }, function () { 9222 if (request.status !== 'cancelled') { 9223 request.status = 'failed'; 9224 _this.pendingCnt--; 9225 _this.tryRelease(); 9226 } 9227 }); 9228 }; 9229 EventPeriod.prototype.purgeSource = function (source) { 9230 var request = this.requestsByUid[source.uid]; 9231 if (request) { 9232 delete this.requestsByUid[source.uid]; 9233 if (request.status === 'pending') { 9234 request.status = 'cancelled'; 9235 this.pendingCnt--; 9236 this.tryRelease(); 9237 } 9238 else if (request.status === 'completed') { 9239 request.eventDefs.forEach(this.removeEventDef.bind(this)); 9240 } 9241 } 9242 }; 9243 EventPeriod.prototype.purgeAllSources = function () { 9244 var requestsByUid = this.requestsByUid; 9245 var uid; 9246 var request; 9247 var completedCnt = 0; 9248 for (uid in requestsByUid) { 9249 request = requestsByUid[uid]; 9250 if (request.status === 'pending') { 9251 request.status = 'cancelled'; 9252 } 9253 else if (request.status === 'completed') { 9254 completedCnt++; 9255 } 9256 } 9257 this.requestsByUid = {}; 9258 this.pendingCnt = 0; 9259 if (completedCnt) { 9260 this.removeAllEventDefs(); // might release 9261 } 9262 }; 9263 // Event Definitions 9264 // ----------------------------------------------------------------------------------------------------------------- 9265 EventPeriod.prototype.getEventDefByUid = function (eventDefUid) { 9266 return this.eventDefsByUid[eventDefUid];
9267 }; 9268 EventPeriod.prototype.getEventDefsById = function (eventDefId) { 9269 var a = this.eventDefsById[eventDefId]; 9270 if (a) { 9271 return a.slice(); // clone 9272 } 9273 return []; 9274 }; 9275 EventPeriod.prototype.addEventDefs = function (eventDefs) { 9276 for (var i = 0; i < eventDefs.length; i++) { 9277 this.addEventDef(eventDefs[i]); 9278 } 9279 }; 9280 EventPeriod.prototype.addEventDef = function (eventDef) { 9281 var eventDefsById = this.eventDefsById; 9282 var eventDefId = eventDef.id; 9283 var eventDefs = eventDefsById[eventDefId] || (eventDefsById[eventDefId] = []); 9284 var eventInstances = eventDef.buildInstances(this.unzonedRange); 9285 var i; 9286 eventDefs.push(eventDef); 9287 this.eventDefsByUid[eventDef.uid] = eventDef; 9288 for (i = 0; i < eventInstances.length; i++) { 9289 this.addEventInstance(eventInstances[i], eventDefId); 9290 } 9291 }; 9292 EventPeriod.prototype.removeEventDefsById = function (eventDefId) { 9293 var _this = this; 9294 this.getEventDefsById(eventDefId).forEach(function (eventDef) { 9295 _this.removeEventDef(eventDef); 9296 }); 9297 }; 9298 EventPeriod.prototype.removeAllEventDefs = function () { 9299 var isEmpty = $.isEmptyObject(this.eventDefsByUid); 9300 this.eventDefsByUid = {}; 9301 this.eventDefsById = {}; 9302 this.eventInstanceGroupsById = {}; 9303 if (!isEmpty) { 9304 this.tryRelease(); 9305 } 9306 }; 9307 EventPeriod.prototype.removeEventDef = function (eventDef) { 9308 var eventDefsById = this.eventDefsById; 9309 var eventDefs = eventDefsById[eventDef.id]; 9310 delete this.eventDefsByUid[eventDef.uid]; 9311 if (eventDefs) { 9312 util_1.removeExact(eventDefs, eventDef); 9313 if (!eventDefs.length) { 9314 delete eventDefsById[eventDef.id]; 9315 } 9316 this.removeEventInstancesForDef(eventDef); 9317 } 9318 }; 9319 // Event Instances 9320 // ----------------------------------------------------------------------------------------------------------------- 9321 EventPeriod.prototype.getEventInstances = function () { 9322 var eventInstanceGroupsById = this.eventInstanceGroupsById; 9323 var eventInstances = []; 9324 var id; 9325 for (id in eventInstanceGroupsById) { 9326 eventInstances.push.apply(eventInstances, // append 9327 eventInstanceGroupsById[id].eventInstances); 9328 } 9329 return eventInstances; 9330 }; 9331 EventPeriod.prototype.getEventInstancesWithId = function (eventDefId) { 9332 var eventInstanceGroup = this.eventInstanceGroupsById[eventDefId]; 9333 if (eventInstanceGroup) { 9334 return eventInstanceGroup.eventInstances.slice(); // clone 9335 } 9336 return []; 9337 }; 9338 EventPeriod.prototype.getEventInstancesWithoutId = function (eventDefId) { 9339 var eventInstanceGroupsById = this.eventInstanceGroupsById; 9340 var matchingInstances = []; 9341 var id; 9342 for (id in eventInstanceGroupsById) { 9343 if (id !== eventDefId) { 9344 matchingInstances.push.apply(matchingInstances, // append 9345 eventInstanceGroupsById[id].eventInstances); 9346 } 9347 } 9348 return matchingInstances; 9349 }; 9350 EventPeriod.prototype.addEventInstance = function (eventInstance, eventDefId) { 9351 var eventInstanceGroupsById = this.eventInstanceGroupsById; 9352 var eventInstanceGroup = eventInstanceGroupsById[eventDefId] || 9353 (eventInstanceGroupsById[eventDefId] = new EventInstanceGroup_1.default()); 9354 eventInstanceGroup.eventInstances.push(eventInstance); 9355 this.tryRelease(); 9356 }; 9357 EventPeriod.prototype.removeEventInstancesForDef = function (eventDef) { 9358 var eventInstanceGroupsById = this.eventInstanceGroupsById; 9359 var eventInstanceGroup = eventInstanceGroupsById[eventDef.id]; 9360 var removeCnt; 9361 if (eventInstanceGroup) { 9362 removeCnt = util_1.removeMatching(eventInstanceGroup.eventInstances, function (currentEventInstance) { 9363 return currentEventInstance.def === eventDef; 9364 }); 9365 if (!eventInstanceGroup.eventInstances.length) { 9366 delete eventInstanceGroupsById[eventDef.id]; 9367 } 9368 if (removeCnt) { 9369 this.tryRelease(); 9370 } 9371 } 9372 }; 9373 // Releasing and Freezing 9374 // ----------------------------------------------------------------------------------------------------------------- 9375 EventPeriod.prototype.tryRelease = function () { 9376 if (!this.pendingCnt) { 9377 if (!this.freezeDepth) { 9378 this.release(); 9379 } 9380 else { 9381 this.stuntedReleaseCnt++; 9382 } 9383 } 9384 }; 9385 EventPeriod.prototype.release = function () { 9386 this.releaseCnt++; 9387 this.trigger('release', this.eventInstanceGroupsById); 9388 }; 9389 EventPeriod.prototype.whenReleased = function () { 9390 var _this = this; 9391 if (this.releaseCnt) { 9392 return Promise_1.default.resolve(this.eventInstanceGroupsById); 9393 } 9394 else { 9395 return Promise_1.default.construct(function (onResolve) { 9396 _this.one('release', onResolve); 9397 }); 9398 } 9399 }; 9400 EventPeriod.prototype.freeze = function () { 9401 if (!(this.freezeDepth++)) { 9402 this.stuntedReleaseCnt = 0; 9403 } 9404 }; 9405 EventPeriod.prototype.thaw = function () { 9406 if (!(--this.freezeDepth) && this.stuntedReleaseCnt && !this.pendingCnt) { 9407 this.release(); 9408 } 9409 }; 9410 return EventPeriod; 9411}()); 9412exports.default = EventPeriod; 9413EmitterMixin_1.default.mixInto(EventPeriod); 9414 9415 9416/***/ }), 9417/* 220 */ 9418/***/ (function(module, exports, __webpack_require__) { 9419 9420Object.defineProperty(exports, "__esModule", { value: true });
9421var $ = __webpack_require__(3); 9422var util_1 = __webpack_require__(4); 9423var EventPeriod_1 = __webpack_require__(219); 9424var ArrayEventSource_1 = __webpack_require__(56); 9425var EventSource_1 = __webpack_require__(6); 9426var EventSourceParser_1 = __webpack_require__(38); 9427var SingleEventDef_1 = __webpack_require__(9); 9428var EventInstanceGroup_1 = __webpack_require__(20); 9429var EmitterMixin_1 = __webpack_require__(13); 9430var ListenerMixin_1 = __webpack_require__(7); 9431var EventManager = /** @class */ (function () { 9432 function EventManager(calendar) { 9433 this.calendar = calendar; 9434 this.stickySource = new ArrayEventSource_1.default(calendar); 9435 this.otherSources = []; 9436 } 9437 EventManager.prototype.requestEvents = function (start, end, timezone, force) { 9438 if (force || 9439 !this.currentPeriod || 9440 !this.currentPeriod.isWithinRange(start, end) || 9441 timezone !== this.currentPeriod.timezone) { 9442 this.setPeriod(// will change this.currentPeriod 9443 new EventPeriod_1.default(start, end, timezone)); 9444 } 9445 return this.currentPeriod.whenReleased(); 9446 }; 9447 // Source Adding/Removing 9448 // ----------------------------------------------------------------------------------------------------------------- 9449 EventManager.prototype.addSource = function (eventSource) { 9450 this.otherSources.push(eventSource); 9451 if (this.currentPeriod) { 9452 this.currentPeriod.requestSource(eventSource); // might release 9453 } 9454 }; 9455 EventManager.prototype.removeSource = function (doomedSource) { 9456 util_1.removeExact(this.otherSources, doomedSource); 9457 if (this.currentPeriod) { 9458 this.currentPeriod.purgeSource(doomedSource); // might release 9459 } 9460 }; 9461 EventManager.prototype.removeAllSources = function () { 9462 this.otherSources = []; 9463 if (this.currentPeriod) { 9464 this.currentPeriod.purgeAllSources(); // might release 9465 } 9466 }; 9467 // Source Refetching 9468 // ----------------------------------------------------------------------------------------------------------------- 9469 EventManager.prototype.refetchSource = function (eventSource) { 9470 var currentPeriod = this.currentPeriod; 9471 if (currentPeriod) { 9472 currentPeriod.freeze(); 9473 currentPeriod.purgeSource(eventSource); 9474 currentPeriod.requestSource(eventSource); 9475 currentPeriod.thaw(); 9476 } 9477 }; 9478 EventManager.prototype.refetchAllSources = function () { 9479 var currentPeriod = this.currentPeriod; 9480 if (currentPeriod) { 9481 currentPeriod.freeze(); 9482 currentPeriod.purgeAllSources(); 9483 currentPeriod.requestSources(this.getSources()); 9484 currentPeriod.thaw(); 9485 } 9486 }; 9487 // Source Querying 9488 // ----------------------------------------------------------------------------------------------------------------- 9489 EventManager.prototype.getSources = function () { 9490 return [this.stickySource].concat(this.otherSources); 9491 }; 9492 // like querySources, but accepts multple match criteria (like multiple IDs) 9493 EventManager.prototype.multiQuerySources = function (matchInputs) { 9494 // coerce into an array 9495 if (!matchInputs) { 9496 matchInputs = []; 9497 } 9498 else if (!$.isArray(matchInputs)) { 9499 matchInputs = [matchInputs]; 9500 } 9501 var matchingSources = []; 9502 var i; 9503 // resolve raw inputs to real event source objects 9504 for (i = 0; i < matchInputs.length; i++) { 9505 matchingSources.push.apply(// append 9506 matchingSources, this.querySources(matchInputs[i])); 9507 } 9508 return matchingSources; 9509 }; 9510 // matchInput can either by a real event source object, an ID, or the function/URL for the source. 9511 // returns an array of matching source objects. 9512 EventManager.prototype.querySources = function (matchInput) { 9513 var sources = this.otherSources; 9514 var i; 9515 var source; 9516 // given a proper event source object 9517 for (i = 0; i < sources.length; i++) { 9518 source = sources[i];
9519 if (source === matchInput) { 9520 return [source]; 9521 } 9522 } 9523 // an ID match 9524 source = this.getSourceById(EventSource_1.default.normalizeId(matchInput)); 9525 if (source) { 9526 return [source]; 9527 } 9528 // parse as an event source 9529 matchInput = EventSourceParser_1.default.parse(matchInput, this.calendar); 9530 if (matchInput) { 9531 return $.grep(sources, function (source) { 9532 return isSourcesEquivalent(matchInput, source); 9533 }); 9534 } 9535 }; 9536 /* 9537 ID assumed to already be normalized 9538 */ 9539 EventManager.prototype.getSourceById = function (id) { 9540 return $.grep(this.otherSources, function (source) { 9541 return source.id && source.id === id; 9542 })[0]; 9543 }; 9544 // Event-Period 9545 // ----------------------------------------------------------------------------------------------------------------- 9546 EventManager.prototype.setPeriod = function (eventPeriod) { 9547 if (this.currentPeriod) { 9548 this.unbindPeriod(this.currentPeriod); 9549 this.currentPeriod = null; 9550 } 9551 this.currentPeriod = eventPeriod; 9552 this.bindPeriod(eventPeriod); 9553 eventPeriod.requestSources(this.getSources()); 9554 }; 9555 EventManager.prototype.bindPeriod = function (eventPeriod) { 9556 this.listenTo(eventPeriod, 'release', function (eventsPayload) { 9557 this.trigger('release', eventsPayload); 9558 }); 9559 }; 9560 EventManager.prototype.unbindPeriod = function (eventPeriod) { 9561 this.stopListeningTo(eventPeriod); 9562 }; 9563 // Event Getting/Adding/Removing 9564 // ----------------------------------------------------------------------------------------------------------------- 9565 EventManager.prototype.getEventDefByUid = function (uid) { 9566 if (this.currentPeriod) { 9567 return this.currentPeriod.getEventDefByUid(uid); 9568 } 9569 }; 9570 EventManager.prototype.addEventDef = function (eventDef, isSticky) { 9571 if (isSticky) { 9572 this.stickySource.addEventDef(eventDef); 9573 } 9574 if (this.currentPeriod) { 9575 this.currentPeriod.addEventDef(eventDef); // might release 9576 } 9577 }; 9578 EventManager.prototype.removeEventDefsById = function (eventId) {
9579 this.getSources().forEach(function (eventSource) { 9580 eventSource.removeEventDefsById(eventId); 9581 }); 9582 if (this.currentPeriod) { 9583 this.currentPeriod.removeEventDefsById(eventId); // might release 9584 } 9585 }; 9586 EventManager.prototype.removeAllEventDefs = function () { 9587 this.getSources().forEach(function (eventSource) { 9588 eventSource.removeAllEventDefs(); 9589 }); 9590 if (this.currentPeriod) { 9591 this.currentPeriod.removeAllEventDefs(); 9592 } 9593 }; 9594 // Event Mutating 9595 // ----------------------------------------------------------------------------------------------------------------- 9596 /* 9597 Returns an undo function. 9598 */ 9599 EventManager.prototype.mutateEventsWithId = function (eventDefId, eventDefMutation) { 9600 var currentPeriod = this.currentPeriod; 9601 var eventDefs; 9602 var undoFuncs = []; 9603 if (currentPeriod) { 9604 currentPeriod.freeze(); 9605 eventDefs = currentPeriod.getEventDefsById(eventDefId); 9606 eventDefs.forEach(function (eventDef) { 9607 // add/remove esp because id might change 9608 currentPeriod.removeEventDef(eventDef); 9609 undoFuncs.push(eventDefMutation.mutateSingle(eventDef)); 9610 currentPeriod.addEventDef(eventDef); 9611 }); 9612 currentPeriod.thaw(); 9613 return function () { 9614 currentPeriod.freeze(); 9615 for (var i = 0; i < eventDefs.length; i++) { 9616 currentPeriod.removeEventDef(eventDefs[i]); 9617 undoFuncs[i](); 9618 currentPeriod.addEventDef(eventDefs[i]); 9619 } 9620 currentPeriod.thaw(); 9621 }; 9622 } 9623 return function () { }; 9624 }; 9625 /* 9626 copies and then mutates 9627 */ 9628 EventManager.prototype.buildMutatedEventInstanceGroup = function (eventDefId, eventDefMutation) { 9629 var eventDefs = this.getEventDefsById(eventDefId); 9630 var i; 9631 var defCopy; 9632 var allInstances = []; 9633 for (i = 0; i < eventDefs.length; i++) { 9634 defCopy = eventDefs[i].clone(); 9635 if (defCopy instanceof SingleEventDef_1.default) { 9636 eventDefMutation.mutateSingle(defCopy); 9637 allInstances.push.apply(allInstances, // append 9638 defCopy.buildInstances()); 9639 } 9640 } 9641 return new EventInstanceGroup_1.default(allInstances); 9642 }; 9643 // Freezing 9644 // ----------------------------------------------------------------------------------------------------------------- 9645 EventManager.prototype.freeze = function () { 9646 if (this.currentPeriod) { 9647 this.currentPeriod.freeze(); 9648 } 9649 }; 9650 EventManager.prototype.thaw = function () { 9651 if (this.currentPeriod) { 9652 this.currentPeriod.thaw(); 9653 } 9654 }; 9655 // methods that simply forward to EventPeriod 9656 EventManager.prototype.getEventDefsById = function (eventDefId) { 9657 return this.currentPeriod.getEventDefsById(eventDefId); 9658 }; 9659 EventManager.prototype.getEventInstances = function () { 9660 return this.currentPeriod.getEventInstances(); 9661 }; 9662 EventManager.prototype.getEventInstancesWithId = function (eventDefId) { 9663 return this.currentPeriod.getEventInstancesWithId(eventDefId); 9664 }; 9665 EventManager.prototype.getEventInstancesWithoutId = function (eventDefId) { 9666 return this.currentPeriod.getEventInstancesWithoutId(eventDefId); 9667 }; 9668 return EventManager; 9669}()); 9670exports.default = EventManager; 9671EmitterMixin_1.default.mixInto(EventManager); 9672ListenerMixin_1.default.mixInto(EventManager); 9673function isSourcesEquivalent(source0, source1) { 9674 return source0.getPrimitive() === source1.getPrimitive(); 9675} 9676 9677 9678/***/ }), 9679/* 221 */ 9680/***/ (function(module, exports, __webpack_require__) { 9681 9682Object.defineProperty(exports, "__esModule", { value: true }); 9683var tslib_1 = __webpack_require__(2); 9684var Theme_1 = __webpack_require__(22); 9685var StandardTheme = /** @class */ (function (_super) { 9686 tslib_1.__extends(StandardTheme, _super); 9687 function StandardTheme() { 9688 return _super !== null && _super.apply(this, arguments) || this; 9689 } 9690 return StandardTheme; 9691}(Theme_1.default)); 9692exports.default = StandardTheme; 9693StandardTheme.prototype.classes = { 9694 widget: 'fc-unthemed', 9695 widgetHeader: 'fc-widget-header', 9696 widgetContent: 'fc-widget-content', 9697 buttonGroup: 'fc-button-group', 9698 button: 'fc-button', 9699 cornerLeft: 'fc-corner-left', 9700 cornerRight: 'fc-corner-right', 9701 stateDefault: 'fc-state-default', 9702 stateActive: 'fc-state-active', 9703 stateDisabled: 'fc-state-disabled', 9704 stateHover: 'fc-state-hover', 9705 stateDown: 'fc-state-down', 9706 popoverHeader: 'fc-widget-header', 9707 popoverContent: 'fc-widget-content', 9708 // day grid 9709 headerRow: 'fc-widget-header', 9710 dayRow: 'fc-widget-content', 9711 // list view 9712 listView: 'fc-widget-content' 9713}; 9714StandardTheme.prototype.baseIconClass = 'fc-icon'; 9715StandardTheme.prototype.iconClasses = { 9716 close: 'fc-icon-x', 9717 prev: 'fc-icon-left-single-arrow', 9718 next: 'fc-icon-right-single-arrow', 9719 prevYear: 'fc-icon-left-double-arrow', 9720 nextYear: 'fc-icon-right-double-arrow' 9721}; 9722StandardTheme.prototype.iconOverrideOption = 'buttonIcons'; 9723StandardTheme.prototype.iconOverrideCustomButtonOption = 'icon'; 9724StandardTheme.prototype.iconOverridePrefix = 'fc-icon-'; 9725 9726 9727/***/ }), 9728/* 222 */ 9729/***/ (function(module, exports, __webpack_require__) { 9730 9731Object.defineProperty(exports, "__esModule", { value: true });
9732var tslib_1 = __webpack_require__(2); 9733var Theme_1 = __webpack_require__(22); 9734var JqueryUiTheme = /** @class */ (function (_super) { 9735 tslib_1.__extends(JqueryUiTheme, _super); 9736 function JqueryUiTheme() { 9737 return _super !== null && _super.apply(this, arguments) || this; 9738 } 9739 return JqueryUiTheme; 9740}(Theme_1.default)); 9741exports.default = JqueryUiTheme; 9742JqueryUiTheme.prototype.classes = { 9743 widget: 'ui-widget', 9744 widgetHeader: 'ui-widget-header', 9745 widgetContent: 'ui-widget-content', 9746 buttonGroup: 'fc-button-group', 9747 button: 'ui-button', 9748 cornerLeft: 'ui-corner-left', 9749 cornerRight: 'ui-corner-right', 9750 stateDefault: 'ui-state-default', 9751 stateActive: 'ui-state-active', 9752 stateDisabled: 'ui-state-disabled', 9753 stateHover: 'ui-state-hover', 9754 stateDown: 'ui-state-down', 9755 today: 'ui-state-highlight', 9756 popoverHeader: 'ui-widget-header', 9757 popoverContent: 'ui-widget-content', 9758 // day grid 9759 headerRow: 'ui-widget-header', 9760 dayRow: 'ui-widget-content', 9761 // list view 9762 listView: 'ui-widget-content' 9763}; 9764JqueryUiTheme.prototype.baseIconClass = 'ui-icon'; 9765JqueryUiTheme.prototype.iconClasses = { 9766 close: 'ui-icon-closethick', 9767 prev: 'ui-icon-circle-triangle-w', 9768 next: 'ui-icon-circle-triangle-e', 9769 prevYear: 'ui-icon-seek-prev', 9770 nextYear: 'ui-icon-seek-next' 9771}; 9772JqueryUiTheme.prototype.iconOverrideOption = 'themeButtonIcons'; 9773JqueryUiTheme.prototype.iconOverrideCustomButtonOption = 'themeIcon'; 9774JqueryUiTheme.prototype.iconOverridePrefix = 'ui-icon-'; 9775 9776 9777/***/ }), 9778/* 223 */ 9779/***/ (function(module, exports, __webpack_require__) { 9780 9781Object.defineProperty(exports, "__esModule", { value: true }); 9782var tslib_1 = __webpack_require__(2); 9783var $ = __webpack_require__(3); 9784var Promise_1 = __webpack_require__(21); 9785var EventSource_1 = __webpack_require__(6); 9786var FuncEventSource = /** @class */ (function (_super) { 9787 tslib_1.__extends(FuncEventSource, _super); 9788 function FuncEventSource() { 9789 return _super !== null && _super.apply(this, arguments) || this; 9790 } 9791 FuncEventSource.parse = function (rawInput, calendar) { 9792 var rawProps; 9793 // normalize raw input 9794 if ($.isFunction(rawInput.events)) { // extended form 9795 rawProps = rawInput; 9796 } 9797 else if ($.isFunction(rawInput)) { // short form 9798 rawProps = { events: rawInput }; 9799 } 9800 if (rawProps) { 9801 return EventSource_1.default.parse.call(this, rawProps, calendar); 9802 } 9803 return false; 9804 }; 9805 FuncEventSource.prototype.fetch = function (start, end, timezone) { 9806 var _this = this; 9807 this.calendar.pushLoading(); 9808 return Promise_1.default.construct(function (onResolve) { 9809 _this.func.call(_this.calendar, start.clone(), end.clone(), timezone, function (rawEventDefs) { 9810 _this.calendar.popLoading(); 9811 onResolve(_this.parseEventDefs(rawEventDefs)); 9812 }); 9813 }); 9814 }; 9815 FuncEventSource.prototype.getPrimitive = function () { 9816 return this.func; 9817 }; 9818 FuncEventSource.prototype.applyManualStandardProps = function (rawProps) { 9819 var superSuccess = _super.prototype.applyManualStandardProps.call(this, rawProps); 9820 this.func = rawProps.events; 9821 return superSuccess; 9822 }; 9823 return FuncEventSource; 9824}(EventSource_1.default)); 9825exports.default = FuncEventSource; 9826FuncEventSource.defineStandardProps({ 9827 events: false // don't automatically transfer 9828}); 9829 9830 9831/***/ }), 9832/* 224 */ 9833/***/ (function(module, exports, __webpack_require__) { 9834 9835Object.defineProperty(exports, "__esModule", { value: true }); 9836var tslib_1 = __webpack_require__(2); 9837var $ = __webpack_require__(3); 9838var util_1 = __webpack_require__(4); 9839var Promise_1 = __webpack_require__(21); 9840var EventSource_1 = __webpack_require__(6); 9841var JsonFeedEventSource = /** @class */ (function (_super) { 9842 tslib_1.__extends(JsonFeedEventSource, _super); 9843 function JsonFeedEventSource() { 9844 return _super !== null && _super.apply(this, arguments) || this; 9845 } 9846 JsonFeedEventSource.parse = function (rawInput, calendar) { 9847 var rawProps; 9848 // normalize raw input 9849 if (typeof rawInput.url === 'string') { // extended form 9850 rawProps = rawInput; 9851 } 9852 else if (typeof rawInput === 'string') { // short form 9853 rawProps = { url: rawInput }; 9854 } 9855 if (rawProps) { 9856 return EventSource_1.default.parse.call(this, rawProps, calendar); 9857 } 9858 return false; 9859 }; 9860 JsonFeedEventSource.prototype.fetch = function (start, end, timezone) { 9861 var _this = this; 9862 var ajaxSettings = this.ajaxSettings; 9863 var onSuccess = ajaxSettings.success; 9864 var onError = ajaxSettings.error;
9865 var requestParams = this.buildRequestParams(start, end, timezone); 9866 // todo: eventually handle the promise's then, 9867 // don't intercept success/error 9868 // tho will be a breaking API change 9869 this.calendar.pushLoading(); 9870 return Promise_1.default.construct(function (onResolve, onReject) { 9871 $.ajax($.extend({}, // destination 9872 JsonFeedEventSource.AJAX_DEFAULTS, ajaxSettings, { 9873 url: _this.url, 9874 data: requestParams, 9875 success: function (rawEventDefs, status, xhr) { 9876 var callbackRes; 9877 _this.calendar.popLoading(); 9878 if (rawEventDefs) { 9879 callbackRes = util_1.applyAll(onSuccess, _this, [rawEventDefs, status, xhr]); // redirect `this` 9880 if ($.isArray(callbackRes)) { 9881 rawEventDefs = callbackRes; 9882 } 9883 onResolve(_this.parseEventDefs(rawEventDefs)); 9884 } 9885 else { 9886 onReject(); 9887 } 9888 }, 9889 error: function (xhr, statusText, errorThrown) { 9890 _this.calendar.popLoading(); 9891 util_1.applyAll(onError, _this, [xhr, statusText, errorThrown]); // redirect `this` 9892 onReject(); 9893 } 9894 })); 9895 }); 9896 }; 9897 JsonFeedEventSource.prototype.buildRequestParams = function (start, end, timezone) { 9898 var calendar = this.calendar; 9899 var ajaxSettings = this.ajaxSettings; 9900 var startParam; 9901 var endParam; 9902 var timezoneParam;
9903 var customRequestParams; 9904 var params = {}; 9905 startParam = this.startParam; 9906 if (startParam == null) { 9907 startParam = calendar.opt('startParam'); 9908 } 9909 endParam = this.endParam; 9910 if (endParam == null) { 9911 endParam = calendar.opt('endParam'); 9912 } 9913 timezoneParam = this.timezoneParam; 9914 if (timezoneParam == null) { 9915 timezoneParam = calendar.opt('timezoneParam'); 9916 } 9917 // retrieve any outbound GET/POST $.ajax data from the options 9918 if ($.isFunction(ajaxSettings.data)) { 9919 // supplied as a function that returns a key/value object 9920 customRequestParams = ajaxSettings.data(); 9921 } 9922 else { 9923 // probably supplied as a straight key/value object 9924 customRequestParams = ajaxSettings.data || {}; 9925 } 9926 $.extend(params, customRequestParams); 9927 params[startParam] = start.format(); 9928 params[endParam] = end.format(); 9929 if (timezone && timezone !== 'local') { 9930 params[timezoneParam] = timezone; 9931 } 9932 return params; 9933 }; 9934 JsonFeedEventSource.prototype.getPrimitive = function () { 9935 return this.url; 9936 }; 9937 JsonFeedEventSource.prototype.applyMiscProps = function (rawProps) { 9938 this.ajaxSettings = rawProps; 9939 }; 9940 JsonFeedEventSource.AJAX_DEFAULTS = { 9941 dataType: 'json', 9942 cache: false 9943 }; 9944 return JsonFeedEventSource; 9945}(EventSource_1.default)); 9946exports.default = JsonFeedEventSource; 9947JsonFeedEventSource.defineStandardProps({ 9948 // automatically transfer (true)... 9949 url: true, 9950 startParam: true, 9951 endParam: true, 9952 timezoneParam: true 9953}); 9954 9955 9956/***/ }), 9957/* 225 */ 9958/***/ (function(module, exports) { 9959 9960Object.defineProperty(exports, "__esModule", { value: true }); 9961var Iterator = /** @class */ (function () { 9962 function Iterator(items) { 9963 this.items = items || []; 9964 } 9965 /* Calls a method on every item passing the arguments through */ 9966 Iterator.prototype.proxyCall = function (methodName) { 9967 var args = []; 9968 for (var _i = 1; _i < arguments.length; _i++) { 9969 args[_i - 1] = arguments[_i]; 9970 } 9971 var results = []; 9972 this.items.forEach(function (item) { 9973 results.push(item[methodName].apply(item, args)); 9974 }); 9975 return results; 9976 }; 9977 return Iterator; 9978}()); 9979exports.default = Iterator; 9980 9981 9982/***/ }), 9983/* 226 */ 9984/***/ (function(module, exports, __webpack_require__) { 9985 9986Object.defineProperty(exports, "__esModule", { value: true }); 9987var $ = __webpack_require__(3); 9988var util_1 = __webpack_require__(4); 9989var ListenerMixin_1 = __webpack_require__(7); 9990/* Creates a clone of an element and lets it track the mouse as it moves 9991----------------------------------------------------------------------------------------------------------------------*/ 9992var MouseFollower = /** @class */ (function () { 9993 function MouseFollower(sourceEl, options) { 9994 this.isFollowing = false; 9995 this.isHidden = false; 9996 this.isAnimating = false; // doing the revert animation? 9997 this.options = options = options || {}; 9998 this.sourceEl = sourceEl; 9999 this.parentEl = options.parentEl ? $(options.parentEl) : sourceEl.parent(); // default to sourceEl's parent 10000 } 10001 // Causes the element to start following the mouse 10002 MouseFollower.prototype.start = function (ev) { 10003 if (!this.isFollowing) { 10004 this.isFollowing = true; 10005 this.y0 = util_1.getEvY(ev); 10006 this.x0 = util_1.getEvX(ev); 10007 this.topDelta = 0; 10008 this.leftDelta = 0; 10009 if (!this.isHidden) { 10010 this.updatePosition(); 10011 } 10012 if (util_1.getEvIsTouch(ev)) { 10013 this.listenTo($(document), 'touchmove', this.handleMove); 10014 } 10015 else { 10016 this.listenTo($(document), 'mousemove', this.handleMove); 10017 } 10018 } 10019 }; 10020 // Causes the element to stop following the mouse. If shouldRevert is true, will animate back to original position. 10021 // `callback` gets invoked when the animation is complete. If no animation, it is invoked immediately.
10022 MouseFollower.prototype.stop = function (shouldRevert, callback) { 10023 var _this = this; 10024 var revertDuration = this.options.revertDuration; 10025 var complete = function () { 10026 _this.isAnimating = false; 10027 _this.removeElement(); 10028 _this.top0 = _this.left0 = null; // reset state for future updatePosition calls 10029 if (callback) { 10030 callback(); 10031 } 10032 }; 10033 if (this.isFollowing && !this.isAnimating) { // disallow more than one stop animation at a time 10034 this.isFollowing = false; 10035 this.stopListeningTo($(document)); 10036 if (shouldRevert && revertDuration && !this.isHidden) { // do a revert animation? 10037 this.isAnimating = true; 10038 this.el.animate({ 10039 top: this.top0, 10040 left: this.left0 10041 }, { 10042 duration: revertDuration, 10043 complete: complete 10044 }); 10045 } 10046 else { 10047 complete(); 10048 } 10049 } 10050 }; 10051 // Gets the tracking element. Create it if necessary 10052 MouseFollower.prototype.getEl = function () { 10053 var el = this.el; 10054 if (!el) { 10055 el = this.el = this.sourceEl.clone() 10056 .addClass(this.options.additionalClass || '') 10057 .css({ 10058 position: 'absolute', 10059 visibility: '', 10060 display: this.isHidden ? 'none' : '', 10061 margin: 0, 10062 right: 'auto', 10063 bottom: 'auto', 10064 width: this.sourceEl.width(), 10065 height: this.sourceEl.height(), 10066 opacity: this.options.opacity || '', 10067 zIndex: this.options.zIndex 10068 }); 10069 // we don't want long taps or any mouse interaction causing selection/menus. 10070 // would use preventSelection(), but that prevents selectstart, causing problems. 10071 el.addClass('fc-unselectable'); 10072 el.appendTo(this.parentEl); 10073 } 10074 return el; 10075 }; 10076 // Removes the tracking element if it has already been created 10077 MouseFollower.prototype.removeElement = function () { 10078 if (this.el) { 10079 this.el.remove(); 10080 this.el = null; 10081 } 10082 }; 10083 // Update the CSS position of the tracking element 10084 MouseFollower.prototype.updatePosition = function () { 10085 var sourceOffset; 10086 var origin; 10087 this.getEl(); // ensure this.el 10088 // make sure origin info was computed 10089 if (this.top0 == null) { 10090 sourceOffset = this.sourceEl.offset(); 10091 origin = this.el.offsetParent().offset(); 10092 this.top0 = sourceOffset.top - origin.top; 10093 this.left0 = sourceOffset.left - origin.left; 10094 } 10095 this.el.css({ 10096 top: this.top0 + this.topDelta, 10097 left: this.left0 + this.leftDelta 10098 }); 10099 }; 10100 // Gets called when the user moves the mouse 10101 MouseFollower.prototype.handleMove = function (ev) { 10102 this.topDelta = util_1.getEvY(ev) - this.y0; 10103 this.leftDelta = util_1.getEvX(ev) - this.x0; 10104 if (!this.isHidden) { 10105 this.updatePosition(); 10106 } 10107 }; 10108 // Temporarily makes the tracking element invisible. Can be called before following starts 10109 MouseFollower.prototype.hide = function () { 10110 if (!this.isHidden) { 10111 this.isHidden = true; 10112 if (this.el) { 10113 this.el.hide(); 10114 } 10115 } 10116 }; 10117 // Show the tracking element after it has been temporarily hidden 10118 MouseFollower.prototype.show = function () { 10119 if (this.isHidden) { 10120 this.isHidden = false; 10121 this.updatePosition(); 10122 this.getEl().show(); 10123 } 10124 }; 10125 return MouseFollower; 10126}()); 10127exports.default = MouseFollower; 10128ListenerMixin_1.default.mixInto(MouseFollower); 10129 10130 10131/***/ }), 10132/* 227 */ 10133/***/ (function(module, exports, __webpack_require__) { 10134 10135/* A rectangular panel that is absolutely positioned over other content 10136------------------------------------------------------------------------------------------------------------------------ 10137Options: 10138 - className (string) 10139 - content (HTML string or jQuery element set) 10140 - parentEl 10141 - top 10142 - left 10143 - right (the x coord of where the right edge should be. not a "CSS" right) 10144 - autoHide (boolean) 10145 - show (callback) 10146 - hide (callback) 10147*/ 10148Object.defineProperty(exports, "__esModule", { value: true });
10149var $ = __webpack_require__(3); 10150var util_1 = __webpack_require__(4); 10151var ListenerMixin_1 = __webpack_require__(7); 10152var Popover = /** @class */ (function () { 10153 function Popover(options) { 10154 this.isHidden = true; 10155 this.margin = 10; // the space required between the popover and the edges of the scroll container 10156 this.options = options || {}; 10157 } 10158 // Shows the popover on the specified position. Renders it if not already 10159 Popover.prototype.show = function () { 10160 if (this.isHidden) { 10161 if (!this.el) { 10162 this.render(); 10163 } 10164 this.el.show(); 10165 this.position(); 10166 this.isHidden = false; 10167 this.trigger('show'); 10168 } 10169 }; 10170 // Hides the popover, through CSS, but does not remove it from the DOM 10171 Popover.prototype.hide = function () { 10172 if (!this.isHidden) { 10173 this.el.hide(); 10174 this.isHidden = true; 10175 this.trigger('hide'); 10176 } 10177 }; 10178 // Creates `this.el` and renders content inside of it 10179 Popover.prototype.render = function () { 10180 var _this = this; 10181 var options = this.options; 10182 this.el = $('<div class="fc-popover">') 10183 .addClass(options.className || '') 10184 .css({ 10185 // position initially to the top left to avoid creating scrollbars 10186 top: 0, 10187 left: 0 10188 }) 10189 .append(options.content) 10190 .appendTo(options.parentEl); 10191 // when a click happens on anything inside with a 'fc-close' className, hide the popover 10192 this.el.on('click', '.fc-close', function () { 10193 _this.hide(); 10194 }); 10195 if (options.autoHide) { 10196 this.listenTo($(document), 'mousedown', this.documentMousedown); 10197 } 10198 }; 10199 // Triggered when the user clicks *anywhere* in the document, for the autoHide feature 10200 Popover.prototype.documentMousedown = function (ev) { 10201 // only hide the popover if the click happened outside the popover 10202 if (this.el && !$(ev.target).closest(this.el).length) { 10203 this.hide(); 10204 } 10205 }; 10206 // Hides and unregisters any handlers 10207 Popover.prototype.removeElement = function () { 10208 this.hide(); 10209 if (this.el) { 10210 this.el.remove(); 10211 this.el = null; 10212 } 10213 this.stopListeningTo($(document), 'mousedown'); 10214 }; 10215 // Positions the popover optimally, using the top/left/right options 10216 Popover.prototype.position = function () { 10217 var options = this.options; 10218 var origin = this.el.offsetParent().offset(); 10219 var width = this.el.outerWidth(); 10220 var height = this.el.outerHeight(); 10221 var windowEl = $(window); 10222 var viewportEl = util_1.getScrollParent(this.el); 10223 var viewportTop; 10224 var viewportLeft; 10225 var viewportOffset; 10226 var top; // the "position" (not "offset") values for the popover 10227 var left; // 10228 // compute top and left 10229 top = options.top || 0; 10230 if (options.left !== undefined) { 10231 left = options.left; 10232 } 10233 else if (options.right !== undefined) { 10234 left = options.right - width; // derive the left value from the right value 10235 } 10236 else { 10237 left = 0; 10238 } 10239 if (viewportEl.is(window) || viewportEl.is(document)) { // normalize getScrollParent's result 10240 viewportEl = windowEl; 10241 viewportTop = 0; // the window is always at the top left 10242 viewportLeft = 0; // (and .offset() won't work if called here) 10243 } 10244 else { 10245 viewportOffset = viewportEl.offset(); 10246 viewportTop = viewportOffset.top; 10247 viewportLeft = viewportOffset.left; 10248 } 10249 // if the window is scrolled, it causes the visible area to be further down 10250 viewportTop += windowEl.scrollTop(); 10251 viewportLeft += windowEl.scrollLeft(); 10252 // constrain to the view port. if constrained by two edges, give precedence to top/left 10253 if (options.viewportConstrain !== false) { 10254 top = Math.min(top, viewportTop + viewportEl.outerHeight() - height - this.margin); 10255 top = Math.max(top, viewportTop + this.margin); 10256 left = Math.min(left, viewportLeft + viewportEl.outerWidth() - width - this.margin); 10257 left = Math.max(left, viewportLeft + this.margin); 10258 } 10259 this.el.css({ 10260 top: top - origin.top, 10261 left: left - origin.left 10262 }); 10263 }; 10264 // Triggers a callback. Calls a function in the option hash of the same name. 10265 // Arguments beyond the first `name` are forwarded on. 10266 // TODO: better code reuse for this. Repeat code 10267 Popover.prototype.trigger = function (name) { 10268 if (this.options[name]) { 10269 this.options[name].apply(this, Array.prototype.slice.call(arguments, 1)); 10270 } 10271 }; 10272 return Popover; 10273}()); 10274exports.default = Popover; 10275ListenerMixin_1.default.mixInto(Popover); 10276 10277 10278/***/ }), 10279/* 228 */ 10280/***/ (function(module, exports, __webpack_require__) { 10281 10282Object.defineProperty(exports, "__esModule", { value: true });
10283var EmitterMixin_1 = __webpack_require__(13); 10284var TaskQueue = /** @class */ (function () { 10285 function TaskQueue() { 10286 this.q = []; 10287 this.isPaused = false; 10288 this.isRunning = false; 10289 } 10290 TaskQueue.prototype.queue = function () { 10291 var args = []; 10292 for (var _i = 0; _i < arguments.length; _i++) { 10293 args[_i] = arguments[_i]; 10294 } 10295 this.q.push.apply(this.q, args); // append 10296 this.tryStart(); 10297 }; 10298 TaskQueue.prototype.pause = function () { 10299 this.isPaused = true; 10300 }; 10301 TaskQueue.prototype.resume = function () { 10302 this.isPaused = false; 10303 this.tryStart(); 10304 }; 10305 TaskQueue.prototype.getIsIdle = function () { 10306 return !this.isRunning && !this.isPaused; 10307 }; 10308 TaskQueue.prototype.tryStart = function () { 10309 if (!this.isRunning && this.canRunNext()) { 10310 this.isRunning = true; 10311 this.trigger('start'); 10312 this.runRemaining(); 10313 } 10314 }; 10315 TaskQueue.prototype.canRunNext = function () { 10316 return !this.isPaused && this.q.length; 10317 }; 10318 TaskQueue.prototype.runRemaining = function () { 10319 var _this = this; 10320 var task; 10321 var res; 10322 do { 10323 task = this.q.shift(); // always freshly reference q. might have been reassigned. 10324 res = this.runTask(task); 10325 if (res && res.then) { 10326 res.then(function () { 10327 if (_this.canRunNext()) { 10328 _this.runRemaining(); 10329 } 10330 }); 10331 return; // prevent marking as stopped 10332 } 10333 } while (this.canRunNext()); 10334 this.trigger('stop'); // not really a 'stop' ... more of a 'drained' 10335 this.isRunning = false; 10336 // if 'stop' handler added more tasks.... TODO: write test for this 10337 this.tryStart(); 10338 }; 10339 TaskQueue.prototype.runTask = function (task) { 10340 return task(); // task *is* the function, but subclasses can change the format of a task 10341 }; 10342 return TaskQueue; 10343}()); 10344exports.default = TaskQueue; 10345EmitterMixin_1.default.mixInto(TaskQueue); 10346 10347 10348/***/ }), 10349/* 229 */ 10350/***/ (function(module, exports, __webpack_require__) { 10351 10352Object.defineProperty(exports, "__esModule", { value: true }); 10353var tslib_1 = __webpack_require__(2); 10354var TaskQueue_1 = __webpack_require__(228); 10355var RenderQueue = /** @class */ (function (_super) { 10356 tslib_1.__extends(RenderQueue, _super);
10357 function RenderQueue(waitsByNamespace) { 10358 var _this = _super.call(this) || this; 10359 _this.waitsByNamespace = waitsByNamespace || {}; 10360 return _this; 10361 } 10362 RenderQueue.prototype.queue = function (taskFunc, namespace, type) { 10363 var task = { 10364 func: taskFunc, 10365 namespace: namespace, 10366 type: type 10367 }; 10368 var waitMs; 10369 if (namespace) { 10370 waitMs = this.waitsByNamespace[namespace]; 10371 } 10372 if (this.waitNamespace) { 10373 if (namespace === this.waitNamespace && waitMs != null) { 10374 this.delayWait(waitMs); 10375 } 10376 else { 10377 this.clearWait(); 10378 this.tryStart(); 10379 } 10380 } 10381 if (this.compoundTask(task)) { // appended to queue? 10382 if (!this.waitNamespace && waitMs != null) { 10383 this.startWait(namespace, waitMs); 10384 } 10385 else { 10386 this.tryStart(); 10387 } 10388 } 10389 }; 10390 RenderQueue.prototype.startWait = function (namespace, waitMs) { 10391 this.waitNamespace = namespace; 10392 this.spawnWait(waitMs); 10393 }; 10394 RenderQueue.prototype.delayWait = function (waitMs) { 10395 clearTimeout(this.waitId); 10396 this.spawnWait(waitMs); 10397 }; 10398 RenderQueue.prototype.spawnWait = function (waitMs) { 10399 var _this = this; 10400 this.waitId = setTimeout(function () { 10401 _this.waitNamespace = null; 10402 _this.tryStart(); 10403 }, waitMs); 10404 }; 10405 RenderQueue.prototype.clearWait = function () { 10406 if (this.waitNamespace) { 10407 clearTimeout(this.waitId); 10408 this.waitId = null; 10409 this.waitNamespace = null; 10410 } 10411 }; 10412 RenderQueue.prototype.canRunNext = function () { 10413 if (!_super.prototype.canRunNext.call(this)) { 10414 return false; 10415 } 10416 // waiting for a certain namespace to stop receiving tasks? 10417 if (this.waitNamespace) { 10418 var q = this.q; 10419 // if there was a different namespace task in the meantime, 10420 // that forces all previously-waiting tasks to suddenly execute.
10421 // TODO: find a way to do this in constant time. 10422 for (var i = 0; i < q.length; i++) { 10423 if (q[i].namespace !== this.waitNamespace) { 10424 return true; // allow execution 10425 } 10426 } 10427 return false; 10428 } 10429 return true; 10430 }; 10431 RenderQueue.prototype.runTask = function (task) { 10432 task.func(); 10433 }; 10434 RenderQueue.prototype.compoundTask = function (newTask) { 10435 var q = this.q; 10436 var shouldAppend = true; 10437 var i; 10438 var task; 10439 if (newTask.namespace && newTask.type === 'destroy') { 10440 // remove all init/add/remove ops with same namespace, regardless of order 10441 for (i = q.length - 1; i >= 0; i--) { 10442 task = q[i]; 10443 if (task.namespace === newTask.namespace) { 10444 switch (task.type) { 10445 case 'init': 10446 shouldAppend = false; 10447 // the latest destroy is cancelled out by not doing the init 10448 /* falls through */ 10449 case 'add': 10450 /* falls through */ 10451 case 'remove': 10452 q.splice(i, 1); // remove task 10453 } 10454 } 10455 } 10456 } 10457 if (shouldAppend) { 10458 q.push(newTask); 10459 } 10460 return shouldAppend; 10461 }; 10462 return RenderQueue; 10463}(TaskQueue_1.default)); 10464exports.default = RenderQueue; 10465 10466 10467/***/ }), 10468/* 230 */ 10469/***/ (function(module, exports, __webpack_require__) { 10470 10471Object.defineProperty(exports, "__esModule", { value: true }); 10472var tslib_1 = __webpack_require__(2); 10473var Model_1 = __webpack_require__(51); 10474var Component = /** @class */ (function (_super) { 10475 tslib_1.__extends(Component, _super); 10476 function Component() { 10477 return _super !== null && _super.apply(this, arguments) || this; 10478 } 10479 Component.prototype.setElement = function (el) { 10480 this.el = el; 10481 this.bindGlobalHandlers(); 10482 this.renderSkeleton(); 10483 this.set('isInDom', true); 10484 }; 10485 Component.prototype.removeElement = function () { 10486 this.unset('isInDom'); 10487 this.unrenderSkeleton(); 10488 this.unbindGlobalHandlers(); 10489 this.el.remove(); 10490 // NOTE: don't null-out this.el in case the View was destroyed within an API callback. 10491 // We don't null-out the View's other jQuery element references upon destroy, 10492 // so we shouldn't kill this.el either. 10493 }; 10494 Component.prototype.bindGlobalHandlers = function () { 10495 // subclasses can override 10496 }; 10497 Component.prototype.unbindGlobalHandlers = function () { 10498 // subclasses can override 10499 }; 10500 /* 10501 NOTE: Can't have a `render` method. Read the deprecation notice in View::executeDateRender 10502 */ 10503 // Renders the basic structure of the view before any content is rendered 10504 Component.prototype.renderSkeleton = function () { 10505 // subclasses should implement 10506 }; 10507 // Unrenders the basic structure of the view 10508 Component.prototype.unrenderSkeleton = function () { 10509 // subclasses should implement 10510 }; 10511 return Component; 10512}(Model_1.default)); 10513exports.default = Component; 10514 10515 10516/***/ }), 10517/* 231 */ 10518/***/ (function(module, exports, __webpack_require__) { 10519 10520Object.defineProperty(exports, "__esModule", { value: true }); 10521var tslib_1 = __webpack_require__(2); 10522var $ = __webpack_require__(3); 10523var moment = __webpack_require__(0); 10524var util_1 = __webpack_require__(4); 10525var moment_ext_1 = __webpack_require__(11); 10526var date_formatting_1 = __webpack_require__(49); 10527var Component_1 = __webpack_require__(230); 10528var util_2 = __webpack_require__(19); 10529var DateComponent = /** @class */ (function (_super) { 10530 tslib_1.__extends(DateComponent, _super); 10531 function DateComponent(_view, _options) { 10532 var _this = _super.call(this) || this; 10533 _this.isRTL = false; // frequently accessed options 10534 _this.hitsNeededDepth = 0; // necessary because multiple callers might need the same hits 10535 _this.hasAllDayBusinessHours = false; // TODO: unify with largeUnit and isTimeScale? 10536 _this.isDatesRendered = false; 10537 // hack to set options prior to the this.opt calls 10538 if (_view) { 10539 _this['view'] = _view; 10540 } 10541 if (_options) { 10542 _this['options'] = _options; 10543 } 10544 _this.uid = String(DateComponent.guid++); 10545 _this.childrenByUid = {}; 10546 _this.nextDayThreshold = moment.duration(_this.opt('nextDayThreshold')); 10547 _this.isRTL = _this.opt('isRTL'); 10548 if (_this.fillRendererClass) { 10549 _this.fillRenderer = new _this.fillRendererClass(_this); 10550 } 10551 if (_this.eventRendererClass) { // fillRenderer is optional -----v 10552 _this.eventRenderer = new _this.eventRendererClass(_this, _this.fillRenderer); 10553 } 10554 if (_this.helperRendererClass && _this.eventRenderer) { 10555 _this.helperRenderer = new _this.helperRendererClass(_this, _this.eventRenderer); 10556 } 10557 if (_this.businessHourRendererClass && _this.fillRenderer) { 10558 _this.businessHourRenderer = new _this.businessHourRendererClass(_this, _this.fillRenderer); 10559 } 10560 return _this; 10561 } 10562 DateComponent.prototype.addChild = function (child) { 10563 if (!this.childrenByUid[child.uid]) { 10564 this.childrenByUid[child.uid] = child; 10565 return true; 10566 } 10567 return false; 10568 }; 10569 DateComponent.prototype.removeChild = function (child) { 10570 if (this.childrenByUid[child.uid]) { 10571 delete this.childrenByUid[child.uid]; 10572 return true; 10573 } 10574 return false; 10575 }; 10576 // TODO: only do if isInDom? 10577 // TODO: make part of Component, along with children/batch-render system? 10578 DateComponent.prototype.updateSize = function (totalHeight, isAuto, isResize) { 10579 this.callChildren('updateSize', arguments); 10580 }; 10581 // Options 10582 // ----------------------------------------------------------------------------------------------------------------- 10583 DateComponent.prototype.opt = function (name) { 10584 return this._getView().opt(name); // default implementation 10585 }; 10586 DateComponent.prototype.publiclyTrigger = function () { 10587 var args = []; 10588 for (var _i = 0; _i < arguments.length; _i++) { 10589 args[_i] = arguments[_i]; 10590 }
10591 var calendar = this._getCalendar(); 10592 return calendar.publiclyTrigger.apply(calendar, args); 10593 }; 10594 DateComponent.prototype.hasPublicHandlers = function () { 10595 var args = []; 10596 for (var _i = 0; _i < arguments.length; _i++) { 10597 args[_i] = arguments[_i]; 10598 } 10599 var calendar = this._getCalendar(); 10600 return calendar.hasPublicHandlers.apply(calendar, args); 10601 }; 10602 // Date 10603 // ----------------------------------------------------------------------------------------------------------------- 10604 DateComponent.prototype.executeDateRender = function (dateProfile) { 10605 this.dateProfile = dateProfile; // for rendering 10606 this.renderDates(dateProfile); 10607 this.isDatesRendered = true; 10608 this.callChildren('executeDateRender', arguments); 10609 }; 10610 DateComponent.prototype.executeDateUnrender = function () { 10611 this.callChildren('executeDateUnrender', arguments); 10612 this.dateProfile = null; 10613 this.unrenderDates(); 10614 this.isDatesRendered = false; 10615 }; 10616 // date-cell content only 10617 DateComponent.prototype.renderDates = function (dateProfile) { 10618 // subclasses should implement 10619 }; 10620 // date-cell content only 10621 DateComponent.prototype.unrenderDates = function () { 10622 // subclasses should override 10623 }; 10624 // Now-Indicator 10625 // ----------------------------------------------------------------------------------------------------------------- 10626 // Returns a string unit, like 'second' or 'minute' that defined how often the current time indicator 10627 // should be refreshed. If something falsy is returned, no time indicator is rendered at all. 10628 DateComponent.prototype.getNowIndicatorUnit = function () { 10629 // subclasses should implement 10630 }; 10631 // Renders a current time indicator at the given datetime 10632 DateComponent.prototype.renderNowIndicator = function (date) { 10633 this.callChildren('renderNowIndicator', arguments); 10634 }; 10635 // Undoes the rendering actions from renderNowIndicator 10636 DateComponent.prototype.unrenderNowIndicator = function () { 10637 this.callChildren('unrenderNowIndicator', arguments); 10638 }; 10639 // Business Hours 10640 // --------------------------------------------------------------------------------------------------------------- 10641 DateComponent.prototype.renderBusinessHours = function (businessHourGenerator) { 10642 if (this.businessHourRenderer) { 10643 this.businessHourRenderer.render(businessHourGenerator); 10644 } 10645 this.callChildren('renderBusinessHours', arguments); 10646 }; 10647 // Unrenders previously-rendered business-hours 10648 DateComponent.prototype.unrenderBusinessHours = function () { 10649 this.callChildren('unrenderBusinessHours', arguments); 10650 if (this.businessHourRenderer) { 10651 this.businessHourRenderer.unrender(); 10652 } 10653 }; 10654 // Event Displaying 10655 // ----------------------------------------------------------------------------------------------------------------- 10656 DateComponent.prototype.executeEventRender = function (eventsPayload) { 10657 if (this.eventRenderer) { 10658 this.eventRenderer.rangeUpdated(); // poorly named now 10659 this.eventRenderer.render(eventsPayload); 10660 } 10661 else if (this['renderEvents']) { // legacy 10662 this['renderEvents'](convertEventsPayloadToLegacyArray(eventsPayload)); 10663 } 10664 this.callChildren('executeEventRender', arguments); 10665 }; 10666 DateComponent.prototype.executeEventUnrender = function () { 10667 this.callChildren('executeEventUnrender', arguments); 10668 if (this.eventRenderer) { 10669 this.eventRenderer.unrender(); 10670 } 10671 else if (this['destroyEvents']) { // legacy 10672 this['destroyEvents'](); 10673 } 10674 }; 10675 DateComponent.prototype.getBusinessHourSegs = function () { 10676 var segs = this.getOwnBusinessHourSegs(); 10677 this.iterChildren(function (child) { 10678 segs.push.apply(segs, child.getBusinessHourSegs()); 10679 }); 10680 return segs; 10681 }; 10682 DateComponent.prototype.getOwnBusinessHourSegs = function () { 10683 if (this.businessHourRenderer) { 10684 return this.businessHourRenderer.getSegs(); 10685 } 10686 return []; 10687 }; 10688 DateComponent.prototype.getEventSegs = function () { 10689 var segs = this.getOwnEventSegs(); 10690 this.iterChildren(function (child) { 10691 segs.push.apply(segs, child.getEventSegs()); 10692 }); 10693 return segs; 10694 }; 10695 DateComponent.prototype.getOwnEventSegs = function () { 10696 if (this.eventRenderer) { 10697 return this.eventRenderer.getSegs(); 10698 } 10699 return []; 10700 }; 10701 // Event Rendering Triggering 10702 // ----------------------------------------------------------------------------------------------------------------- 10703 DateComponent.prototype.triggerAfterEventsRendered = function () { 10704 this.triggerAfterEventSegsRendered(this.getEventSegs()); 10705 this.publiclyTrigger('eventAfterAllRender', { 10706 context: this, 10707 args: [this] 10708 }); 10709 }; 10710 DateComponent.prototype.triggerAfterEventSegsRendered = function (segs) { 10711 var _this = this; 10712 // an optimization, because getEventLegacy is expensive 10713 if (this.hasPublicHandlers('eventAfterRender')) {
10714 segs.forEach(function (seg) { 10715 var legacy; 10716 if (seg.el) { // necessary? 10717 legacy = seg.footprint.getEventLegacy(); 10718 _this.publiclyTrigger('eventAfterRender', { 10719 context: legacy, 10720 args: [legacy, seg.el, _this] 10721 }); 10722 } 10723 }); 10724 } 10725 }; 10726 DateComponent.prototype.triggerBeforeEventsDestroyed = function () { 10727 this.triggerBeforeEventSegsDestroyed(this.getEventSegs()); 10728 }; 10729 DateComponent.prototype.triggerBeforeEventSegsDestroyed = function (segs) { 10730 var _this = this; 10731 if (this.hasPublicHandlers('eventDestroy')) { 10732 segs.forEach(function (seg) { 10733 var legacy; 10734 if (seg.el) { // necessary? 10735 legacy = seg.footprint.getEventLegacy(); 10736 _this.publiclyTrigger('eventDestroy', { 10737 context: legacy, 10738 args: [legacy, seg.el, _this] 10739 }); 10740 } 10741 }); 10742 } 10743 }; 10744 // Event Rendering Utils 10745 // ----------------------------------------------------------------------------------------------------------------- 10746 // Hides all rendered event segments linked to the given event 10747 // RECURSIVE with subcomponents 10748 DateComponent.prototype.showEventsWithId = function (eventDefId) { 10749 this.getEventSegs().forEach(function (seg) { 10750 if (seg.footprint.eventDef.id === eventDefId && 10751 seg.el // necessary? 10752 ) { 10753 seg.el.css('visibility', ''); 10754 } 10755 }); 10756 this.callChildren('showEventsWithId', arguments); 10757 }; 10758 // Shows all rendered event segments linked to the given event 10759 // RECURSIVE with subcomponents 10760 DateComponent.prototype.hideEventsWithId = function (eventDefId) { 10761 this.getEventSegs().forEach(function (seg) { 10762 if (seg.footprint.eventDef.id === eventDefId && 10763 seg.el // necessary? 10764 ) { 10765 seg.el.css('visibility', 'hidden'); 10766 } 10767 }); 10768 this.callChildren('hideEventsWithId', arguments); 10769 }; 10770 // Drag-n-Drop Rendering (for both events and external elements) 10771 // --------------------------------------------------------------------------------------------------------------- 10772 // Renders a visual indication of a event or external-element drag over the given drop zone. 10773 // If an external-element, seg will be `null`. 10774 // Must return elements used for any mock events. 10775 DateComponent.prototype.renderDrag = function (eventFootprints, seg, isTouch) { 10776 var renderedHelper = false; 10777 this.iterChildren(function (child) { 10778 if (child.renderDrag(eventFootprints, seg, isTouch)) { 10779 renderedHelper = true; 10780 } 10781 }); 10782 return renderedHelper; 10783 }; 10784 // Unrenders a visual indication of an event or external-element being dragged. 10785 DateComponent.prototype.unrenderDrag = function () { 10786 this.callChildren('unrenderDrag', arguments); 10787 }; 10788 // Event Resizing 10789 // --------------------------------------------------------------------------------------------------------------- 10790 // Renders a visual indication of an event being resized. 10791 DateComponent.prototype.renderEventResize = function (eventFootprints, seg, isTouch) { 10792 this.callChildren('renderEventResize', arguments); 10793 }; 10794 // Unrenders a visual indication of an event being resized. 10795 DateComponent.prototype.unrenderEventResize = function () { 10796 this.callChildren('unrenderEventResize', arguments); 10797 }; 10798 // Selection 10799 // --------------------------------------------------------------------------------------------------------------- 10800 // Renders a visual indication of the selection 10801 // TODO: rename to `renderSelection` after legacy is gone 10802 DateComponent.prototype.renderSelectionFootprint = function (componentFootprint) { 10803 this.renderHighlight(componentFootprint); 10804 this.callChildren('renderSelectionFootprint', arguments); 10805 }; 10806 // Unrenders a visual indication of selection 10807 DateComponent.prototype.unrenderSelection = function () { 10808 this.unrenderHighlight(); 10809 this.callChildren('unrenderSelection', arguments); 10810 }; 10811 // Highlight 10812 // --------------------------------------------------------------------------------------------------------------- 10813 // Renders an emphasis on the given date range. Given a span (unzoned start/end and other misc data) 10814 DateComponent.prototype.renderHighlight = function (componentFootprint) { 10815 if (this.fillRenderer) { 10816 this.fillRenderer.renderFootprint('highlight', componentFootprint, { 10817 getClasses: function () { 10818 return ['fc-highlight']; 10819 } 10820 }); 10821 } 10822 this.callChildren('renderHighlight', arguments); 10823 }; 10824 // Unrenders the emphasis on a date range 10825 DateComponent.prototype.unrenderHighlight = function () { 10826 if (this.fillRenderer) { 10827 this.fillRenderer.unrender('highlight'); 10828 } 10829 this.callChildren('unrenderHighlight', arguments); 10830 }; 10831 // Hit Areas 10832 // --------------------------------------------------------------------------------------------------------------- 10833 // just because all DateComponents support this interface
10834 // doesn't mean they need to have their own internal coord system. they can defer to sub-components. 10835 DateComponent.prototype.hitsNeeded = function () { 10836 if (!(this.hitsNeededDepth++)) { 10837 this.prepareHits(); 10838 } 10839 this.callChildren('hitsNeeded', arguments); 10840 }; 10841 DateComponent.prototype.hitsNotNeeded = function () { 10842 if (this.hitsNeededDepth && !(--this.hitsNeededDepth)) { 10843 this.releaseHits(); 10844 } 10845 this.callChildren('hitsNotNeeded', arguments); 10846 }; 10847 DateComponent.prototype.prepareHits = function () { 10848 // subclasses can implement 10849 }; 10850 DateComponent.prototype.releaseHits = function () { 10851 // subclasses can implement 10852 }; 10853 // Given coordinates from the topleft of the document, return data about the date-related area underneath. 10854 // Can return an object with arbitrary properties (although top/right/left/bottom are encouraged). 10855 // Must have a `grid` property, a reference to this current grid. TODO: avoid this 10856 // The returned object will be processed by getHitFootprint and getHitEl. 10857 DateComponent.prototype.queryHit = function (leftOffset, topOffset) { 10858 var childrenByUid = this.childrenByUid; 10859 var uid; 10860 var hit; 10861 for (uid in childrenByUid) { 10862 hit = childrenByUid[uid].queryHit(leftOffset, topOffset); 10863 if (hit) { 10864 break; 10865 } 10866 } 10867 return hit; 10868 }; 10869 DateComponent.prototype.getSafeHitFootprint = function (hit) { 10870 var footprint = this.getHitFootprint(hit); 10871 if (!this.dateProfile.activeUnzonedRange.containsRange(footprint.unzonedRange)) { 10872 return null; 10873 } 10874 return footprint; 10875 }; 10876 DateComponent.prototype.getHitFootprint = function (hit) { 10877 // what about being abstract!? 10878 }; 10879 // Given position-level information about a date-related area within the grid, 10880 // should return a jQuery element that best represents it. passed to dayClick callback. 10881 DateComponent.prototype.getHitEl = function (hit) { 10882 // what about being abstract!? 10883 }; 10884 /* Converting eventRange -> eventFootprint 10885 ------------------------------------------------------------------------------------------------------------------*/ 10886 DateComponent.prototype.eventRangesToEventFootprints = function (eventRanges) { 10887 var eventFootprints = []; 10888 var i; 10889 for (i = 0; i < eventRanges.length; i++) { 10890 eventFootprints.push.apply(// append 10891 eventFootprints, this.eventRangeToEventFootprints(eventRanges[i])); 10892 } 10893 return eventFootprints; 10894 }; 10895 DateComponent.prototype.eventRangeToEventFootprints = function (eventRange) { 10896 return [util_2.eventRangeToEventFootprint(eventRange)]; 10897 }; 10898 /* Converting componentFootprint/eventFootprint -> segs 10899 ------------------------------------------------------------------------------------------------------------------*/ 10900 DateComponent.prototype.eventFootprintsToSegs = function (eventFootprints) { 10901 var segs = []; 10902 var i; 10903 for (i = 0; i < eventFootprints.length; i++) { 10904 segs.push.apply(segs, this.eventFootprintToSegs(eventFootprints[i])); 10905 } 10906 return segs; 10907 }; 10908 // Given an event's span (unzoned start/end and other misc data), and the event itself, 10909 // slices into segments and attaches event-derived properties to them. 10910 // eventSpan - { start, end, isStart, isEnd, otherthings... } 10911 DateComponent.prototype.eventFootprintToSegs = function (eventFootprint) { 10912 var unzonedRange = eventFootprint.componentFootprint.unzonedRange; 10913 var segs; 10914 var i; 10915 var seg; 10916 segs = this.componentFootprintToSegs(eventFootprint.componentFootprint); 10917 for (i = 0; i < segs.length; i++) { 10918 seg = segs[i]; 10919 if (!unzonedRange.isStart) { 10920 seg.isStart = false; 10921 } 10922 if (!unzonedRange.isEnd) { 10923 seg.isEnd = false; 10924 } 10925 seg.footprint = eventFootprint; 10926 // TODO: rename to seg.eventFootprint 10927 } 10928 return segs; 10929 }; 10930 DateComponent.prototype.componentFootprintToSegs = function (componentFootprint) { 10931 return []; 10932 }; 10933 // Utils 10934 // --------------------------------------------------------------------------------------------------------------- 10935 DateComponent.prototype.callChildren = function (methodName, args) { 10936 this.iterChildren(function (child) { 10937 child[methodName].apply(child, args); 10938 }); 10939 }; 10940 DateComponent.prototype.iterChildren = function (func) { 10941 var childrenByUid = this.childrenByUid; 10942 var uid; 10943 for (uid in childrenByUid) { 10944 func(childrenByUid[uid]); 10945 } 10946 }; 10947 DateComponent.prototype._getCalendar = function () { 10948 var t = this; 10949 return t.calendar || t.view.calendar; 10950 }; 10951 DateComponent.prototype._getView = function () { 10952 return this.view; 10953 }; 10954 DateComponent.prototype._getDateProfile = function () { 10955 return this._getView().get('dateProfile'); 10956 }; 10957 // Generates HTML for an anchor to another view into the calendar. 10958 // Will either generate an <a> tag or a non-clickable <span> tag, depending on enabled settings. 10959 // `gotoOptions` can either be a moment input, or an object with the form: 10960 // { date, type, forceOff } 10961 // `type` is a view-type like "day" or "week". default value is "day". 10962 // `attrs` and `innerHtml` are use to generate the rest of the HTML tag. 10963 DateComponent.prototype.buildGotoAnchorHtml = function (gotoOptions, attrs, innerHtml) { 10964 var date; 10965 var type; 10966 var forceOff; 10967 var finalOptions; 10968 if ($.isPlainObject(gotoOptions)) { 10969 date = gotoOptions.date; 10970 type = gotoOptions.type; 10971 forceOff = gotoOptions.forceOff; 10972 } 10973 else { 10974 date = gotoOptions; // a single moment input 10975 } 10976 date = moment_ext_1.default(date); // if a string, parse it 10977 finalOptions = { 10978 date: date.format('YYYY-MM-DD'), 10979 type: type || 'day' 10980 }; 10981 if (typeof attrs === 'string') { 10982 innerHtml = attrs; 10983 attrs = null; 10984 } 10985 attrs = attrs ? ' ' + util_1.attrsToStr(attrs) : ''; // will have a leading space 10986 innerHtml = innerHtml || ''; 10987 if (!forceOff && this.opt('navLinks')) { 10988 return '<a' + attrs + 10989 ' data-goto="' + util_1.htmlEscape(JSON.stringify(finalOptions)) + '">' + 10990 innerHtml + 10991 '</a>'; 10992 } 10993 else { 10994 return '<span' + attrs + '>' + 10995 innerHtml + 10996 '</span>'; 10997 } 10998 }; 10999 DateComponent.prototype.getAllDayHtml = function () { 11000 return this.opt('allDayHtml') || util_1.htmlEscape(this.opt('allDayText'));
11001 }; 11002 // Computes HTML classNames for a single-day element 11003 DateComponent.prototype.getDayClasses = function (date, noThemeHighlight) { 11004 var view = this._getView(); 11005 var classes = []; 11006 var today; 11007 if (!this.dateProfile.activeUnzonedRange.containsDate(date)) { 11008 classes.push('fc-disabled-day'); // TODO: jQuery UI theme? 11009 } 11010 else { 11011 classes.push('fc-' + util_1.dayIDs[date.day()]); 11012 if (view.isDateInOtherMonth(date, this.dateProfile)) { // TODO: use DateComponent subclass somehow 11013 classes.push('fc-other-month'); 11014 } 11015 today = view.calendar.getNow(); 11016 if (date.isSame(today, 'day')) { 11017 classes.push('fc-today'); 11018 if (noThemeHighlight !== true) { 11019 classes.push(view.calendar.theme.getClass('today')); 11020 } 11021 } 11022 else if (date < today) { 11023 classes.push('fc-past'); 11024 } 11025 else { 11026 classes.push('fc-future'); 11027 } 11028 } 11029 return classes; 11030 }; 11031 // Utility for formatting a range. Accepts a range object, formatting string, and optional separator. 11032 // Displays all-day ranges naturally, with an inclusive end. Takes the current isRTL into account. 11033 // The timezones of the dates within `range` will be respected. 11034 DateComponent.prototype.formatRange = function (range, isAllDay, formatStr, separator) { 11035 var end = range.end; 11036 if (isAllDay) { 11037 end = end.clone().subtract(1); // convert to inclusive. last ms of previous day 11038 } 11039 return date_formatting_1.formatRange(range.start, end, formatStr, separator, this.isRTL); 11040 }; 11041 // Compute the number of the give units in the "current" range. 11042 // Will return a floating-point number. Won't round. 11043 DateComponent.prototype.currentRangeAs = function (unit) { 11044 return this._getDateProfile().currentUnzonedRange.as(unit); 11045 }; 11046 // Returns the date range of the full days the given range visually appears to occupy. 11047 // Returns a plain object with start/end, NOT an UnzonedRange! 11048 DateComponent.prototype.computeDayRange = function (unzonedRange) { 11049 var calendar = this._getCalendar(); 11050 var startDay = calendar.msToUtcMoment(unzonedRange.startMs, true); // the beginning of the day the range starts 11051 var end = calendar.msToUtcMoment(unzonedRange.endMs); 11052 var endTimeMS = +end.time(); // # of milliseconds into `endDay` 11053 var endDay = end.clone().stripTime(); // the beginning of the day the range exclusively ends 11054 // If the end time is actually inclusively part of the next day and is equal to or 11055 // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`. 11056 // Otherwise, leaving it as inclusive will cause it to exclude `endDay`. 11057 if (endTimeMS && endTimeMS >= this.nextDayThreshold) { 11058 endDay.add(1, 'days'); 11059 } 11060 // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day. 11061 if (endDay <= startDay) { 11062 endDay = startDay.clone().add(1, 'days'); 11063 } 11064 return { start: startDay, end: endDay }; 11065 }; 11066 // Does the given range visually appear to occupy more than one day? 11067 DateComponent.prototype.isMultiDayRange = function (unzonedRange) { 11068 var dayRange = this.computeDayRange(unzonedRange); 11069 return dayRange.end.diff(dayRange.start, 'days') > 1; 11070 }; 11071 DateComponent.guid = 0; // TODO: better system for this? 11072 return DateComponent; 11073}(Component_1.default)); 11074exports.default = DateComponent; 11075// legacy 11076function convertEventsPayloadToLegacyArray(eventsPayload) { 11077 var eventDefId; 11078 var eventInstances; 11079 var legacyEvents = []; 11080 var i; 11081 for (eventDefId in eventsPayload) { 11082 eventInstances = eventsPayload[eventDefId].eventInstances; 11083 for (i = 0; i < eventInstances.length; i++) { 11084 legacyEvents.push(eventInstances[i].toLegacy()); 11085 } 11086 } 11087 return legacyEvents; 11088} 11089 11090 11091/***/ }), 11092/* 232 */ 11093/***/ (function(module, exports, __webpack_require__) { 11094 11095Object.defineProperty(exports, "__esModule", { value: true });
11096var $ = __webpack_require__(3); 11097var moment = __webpack_require__(0); 11098var util_1 = __webpack_require__(4); 11099var options_1 = __webpack_require__(33); 11100var Iterator_1 = __webpack_require__(225); 11101var GlobalEmitter_1 = __webpack_require__(23); 11102var EmitterMixin_1 = __webpack_require__(13); 11103var ListenerMixin_1 = __webpack_require__(7); 11104var Toolbar_1 = __webpack_require__(257); 11105var OptionsManager_1 = __webpack_require__(258); 11106var ViewSpecManager_1 = __webpack_require__(259); 11107var Constraints_1 = __webpack_require__(217); 11108var locale_1 = __webpack_require__(32); 11109var moment_ext_1 = __webpack_require__(11); 11110var UnzonedRange_1 = __webpack_require__(5); 11111var ComponentFootprint_1 = __webpack_require__(12); 11112var EventDateProfile_1 = __webpack_require__(16); 11113var EventManager_1 = __webpack_require__(220); 11114var BusinessHourGenerator_1 = __webpack_require__(218); 11115var EventSourceParser_1 = __webpack_require__(38); 11116var EventDefParser_1 = __webpack_require__(36); 11117var SingleEventDef_1 = __webpack_require__(9); 11118var EventDefMutation_1 = __webpack_require__(39); 11119var EventSource_1 = __webpack_require__(6); 11120var ThemeRegistry_1 = __webpack_require__(57); 11121var Calendar = /** @class */ (function () { 11122 function Calendar(el, overrides) { 11123 this.loadingLevel = 0; // number of simultaneous loading tasks 11124 this.ignoreUpdateViewSize = 0; 11125 this.freezeContentHeightDepth = 0; 11126 // declare the current calendar instance relies on GlobalEmitter. needed for garbage collection. 11127 // unneeded() is called in destroy. 11128 GlobalEmitter_1.default.needed(); 11129 this.el = el; 11130 this.viewsByType = {}; 11131 this.optionsManager = new OptionsManager_1.default(this, overrides); 11132 this.viewSpecManager = new ViewSpecManager_1.default(this.optionsManager, this); 11133 this.initMomentInternals(); // needs to happen after options hash initialized 11134 this.initCurrentDate(); 11135 this.initEventManager(); 11136 this.constraints = new Constraints_1.default(this.eventManager, this); 11137 this.constructed(); 11138 } 11139 Calendar.prototype.constructed = function () { 11140 // useful for monkeypatching. used? 11141 }; 11142 Calendar.prototype.getView = function () { 11143 return this.view; 11144 }; 11145 Calendar.prototype.publiclyTrigger = function (name, triggerInfo) { 11146 var optHandler = this.opt(name); 11147 var context; 11148 var args; 11149 if ($.isPlainObject(triggerInfo)) { 11150 context = triggerInfo.context; 11151 args = triggerInfo.args; 11152 } 11153 else if ($.isArray(triggerInfo)) { 11154 args = triggerInfo; 11155 } 11156 if (context == null) { 11157 context = this.el[0]; // fallback context 11158 } 11159 if (!args) { 11160 args = []; 11161 } 11162 this.triggerWith(name, context, args); // Emitter's method 11163 if (optHandler) { 11164 return optHandler.apply(context, args); 11165 } 11166 }; 11167 Calendar.prototype.hasPublicHandlers = function (name) { 11168 return this.hasHandlers(name) || 11169 this.opt(name); // handler specified in options 11170 }; 11171 // Options Public API 11172 // ----------------------------------------------------------------------------------------------------------------- 11173 // public getter/setter 11174 Calendar.prototype.option = function (name, value) { 11175 var newOptionHash; 11176 if (typeof name === 'string') { 11177 if (value === undefined) { // getter 11178 return this.optionsManager.get(name); 11179 } 11180 else { // setter for individual option 11181 newOptionHash = {}; 11182 newOptionHash[name] = value; 11183 this.optionsManager.add(newOptionHash); 11184 } 11185 } 11186 else if (typeof name === 'object') { // compound setter with object input 11187 this.optionsManager.add(name); 11188 } 11189 }; 11190 // private getter 11191 Calendar.prototype.opt = function (name) { 11192 return this.optionsManager.get(name); 11193 }; 11194 // View 11195 // -----------------------------------------------------------------------------------------------------------------
11196 // Given a view name for a custom view or a standard view, creates a ready-to-go View object 11197 Calendar.prototype.instantiateView = function (viewType) { 11198 var spec = this.viewSpecManager.getViewSpec(viewType); 11199 if (!spec) { 11200 throw new Error("View type \"" + viewType + "\" is not valid"); 11201 } 11202 return new spec['class'](this, spec); 11203 }; 11204 // Returns a boolean about whether the view is okay to instantiate at some point 11205 Calendar.prototype.isValidViewType = function (viewType) { 11206 return Boolean(this.viewSpecManager.getViewSpec(viewType)); 11207 }; 11208 Calendar.prototype.changeView = function (viewName, dateOrRange) { 11209 if (dateOrRange) { 11210 if (dateOrRange.start && dateOrRange.end) { // a range 11211 this.optionsManager.recordOverrides({ 11212 visibleRange: dateOrRange 11213 }); 11214 } 11215 else { // a date 11216 this.currentDate = this.moment(dateOrRange).stripZone(); // just like gotoDate 11217 } 11218 } 11219 this.renderView(viewName); 11220 }; 11221 // Forces navigation to a view for the given date. 11222 // `viewType` can be a specific view name or a generic one like "week" or "day". 11223 Calendar.prototype.zoomTo = function (newDate, viewType) { 11224 var spec; 11225 viewType = viewType || 'day'; // day is default zoom 11226 spec = this.viewSpecManager.getViewSpec(viewType) || 11227 this.viewSpecManager.getUnitViewSpec(viewType); 11228 this.currentDate = newDate.clone(); 11229 this.renderView(spec ? spec.type : null); 11230 }; 11231 // Current Date 11232 // ----------------------------------------------------------------------------------------------------------------- 11233 Calendar.prototype.initCurrentDate = function () { 11234 var defaultDateInput = this.opt('defaultDate'); 11235 // compute the initial ambig-timezone date 11236 if (defaultDateInput != null) { 11237 this.currentDate = this.moment(defaultDateInput).stripZone(); 11238 } 11239 else { 11240 this.currentDate = this.getNow(); // getNow already returns unzoned 11241 } 11242 }; 11243 Calendar.prototype.prev = function () { 11244 var view = this.view; 11245 var prevInfo = view.dateProfileGenerator.buildPrev(view.get('dateProfile')); 11246 if (prevInfo.isValid) { 11247 this.currentDate = prevInfo.date; 11248 this.renderView(); 11249 } 11250 }; 11251 Calendar.prototype.next = function () { 11252 var view = this.view; 11253 var nextInfo = view.dateProfileGenerator.buildNext(view.get('dateProfile')); 11254 if (nextInfo.isValid) { 11255 this.currentDate = nextInfo.date; 11256 this.renderView(); 11257 } 11258 }; 11259 Calendar.prototype.prevYear = function () { 11260 this.currentDate.add(-1, 'years'); 11261 this.renderView(); 11262 }; 11263 Calendar.prototype.nextYear = function () { 11264 this.currentDate.add(1, 'years'); 11265 this.renderView(); 11266 }; 11267 Calendar.prototype.today = function () { 11268 this.currentDate = this.getNow(); // should deny like prev/next? 11269 this.renderView(); 11270 }; 11271 Calendar.prototype.gotoDate = function (zonedDateInput) { 11272 this.currentDate = this.moment(zonedDateInput).stripZone(); 11273 this.renderView(); 11274 }; 11275 Calendar.prototype.incrementDate = function (delta) { 11276 this.currentDate.add(moment.duration(delta)); 11277 this.renderView(); 11278 }; 11279 // for external API 11280 Calendar.prototype.getDate = function () { 11281 return this.applyTimezone(this.currentDate); // infuse the calendar's timezone 11282 }; 11283 // Loading Triggering 11284 // ----------------------------------------------------------------------------------------------------------------- 11285 // Should be called when any type of async data fetching begins 11286 Calendar.prototype.pushLoading = function () { 11287 if (!(this.loadingLevel++)) { 11288 this.publiclyTrigger('loading', [true, this.view]); 11289 } 11290 }; 11291 // Should be called when any type of async data fetching completes 11292 Calendar.prototype.popLoading = function () { 11293 if (!(--this.loadingLevel)) { 11294 this.publiclyTrigger('loading', [false, this.view]); 11295 } 11296 }; 11297 // High-level Rendering 11298 // ----------------------------------------------------------------------------------- 11299 Calendar.prototype.render = function () { 11300 if (!this.contentEl) { 11301 this.initialRender(); 11302 } 11303 else if (this.elementVisible()) { 11304 // mainly for the public API 11305 this.calcSize(); 11306 this.updateViewSize(); 11307 } 11308 }; 11309 Calendar.prototype.initialRender = function () { 11310 var _this = this; 11311 var el = this.el; 11312 el.addClass('fc'); 11313 // event delegation for nav links 11314 el.on('click.fc', 'a[data-goto]', function (ev) { 11315 var anchorEl = $(ev.currentTarget); 11316 var gotoOptions = anchorEl.data('goto'); // will automatically parse JSON 11317 var date = _this.moment(gotoOptions.date); 11318 var viewType = gotoOptions.type; 11319 // property like "navLinkDayClick". might be a string or a function 11320 var customAction = _this.view.opt('navLink' + util_1.capitaliseFirstLetter(viewType) + 'Click'); 11321 if (typeof customAction === 'function') { 11322 customAction(date, ev); 11323 } 11324 else { 11325 if (typeof customAction === 'string') { 11326 viewType = customAction; 11327 } 11328 _this.zoomTo(date, viewType); 11329 } 11330 });
11331 // called immediately, and upon option change 11332 this.optionsManager.watch('settingTheme', ['?theme', '?themeSystem'], function (opts) { 11333 var themeClass = ThemeRegistry_1.getThemeSystemClass(opts.themeSystem || opts.theme); 11334 var theme = new themeClass(_this.optionsManager); 11335 var widgetClass = theme.getClass('widget'); 11336 _this.theme = theme; 11337 if (widgetClass) { 11338 el.addClass(widgetClass); 11339 } 11340 }, function () { 11341 var widgetClass = _this.theme.getClass('widget'); 11342 _this.theme = null; 11343 if (widgetClass) { 11344 el.removeClass(widgetClass); 11345 } 11346 }); 11347 this.optionsManager.watch('settingBusinessHourGenerator', ['?businessHours'], function (deps) { 11348 _this.businessHourGenerator = new BusinessHourGenerator_1.default(deps.businessHours, _this); 11349 if (_this.view) { 11350 _this.view.set('businessHourGenerator', _this.businessHourGenerator); 11351 } 11352 }, function () { 11353 _this.businessHourGenerator = null; 11354 }); 11355 // called immediately, and upon option change. 11356 // HACK: locale often affects isRTL, so we explicitly listen to that too. 11357 this.optionsManager.watch('applyingDirClasses', ['?isRTL', '?locale'], function (opts) { 11358 el.toggleClass('fc-ltr', !opts.isRTL); 11359 el.toggleClass('fc-rtl', opts.isRTL); 11360 }); 11361 this.contentEl = $("<div class='fc-view-container'>").prependTo(el); 11362 this.initToolbars(); 11363 this.renderHeader(); 11364 this.renderFooter(); 11365 this.renderView(this.opt('defaultView')); 11366 if (this.opt('handleWindowResize')) { 11367 $(window).resize(this.windowResizeProxy = util_1.debounce(// prevents rapid calls 11368 this.windowResize.bind(this), this.opt('windowResizeDelay'))); 11369 } 11370 }; 11371 Calendar.prototype.destroy = function () { 11372 if (this.view) { 11373 this.clearView(); 11374 } 11375 this.toolbarsManager.proxyCall('removeElement'); 11376 this.contentEl.remove(); 11377 this.el.removeClass('fc fc-ltr fc-rtl'); 11378 // removes theme-related root className 11379 this.optionsManager.unwatch('settingTheme'); 11380 this.optionsManager.unwatch('settingBusinessHourGenerator'); 11381 this.el.off('.fc'); // unbind nav link handlers 11382 if (this.windowResizeProxy) { 11383 $(window).unbind('resize', this.windowResizeProxy); 11384 this.windowResizeProxy = null; 11385 } 11386 GlobalEmitter_1.default.unneeded(); 11387 }; 11388 Calendar.prototype.elementVisible = function () { 11389 return this.el.is(':visible'); 11390 }; 11391 // Render Queue 11392 // ----------------------------------------------------------------------------------------------------------------- 11393 Calendar.prototype.bindViewHandlers = function (view) { 11394 var _this = this; 11395 view.watch('titleForCalendar', ['title'], function (deps) { 11396 if (view === _this.view) { // hack 11397 _this.setToolbarsTitle(deps.title); 11398 } 11399 }); 11400 view.watch('dateProfileForCalendar', ['dateProfile'], function (deps) { 11401 if (view === _this.view) { // hack 11402 _this.currentDate = deps.dateProfile.date; // might have been constrained by view dates 11403 _this.updateToolbarButtons(deps.dateProfile); 11404 } 11405 }); 11406 }; 11407 Calendar.prototype.unbindViewHandlers = function (view) { 11408 view.unwatch('titleForCalendar'); 11409 view.unwatch('dateProfileForCalendar'); 11410 }; 11411 // View Rendering 11412 // ----------------------------------------------------------------------------------- 11413 // Renders a view because of a date change, view-type change, or for the first time. 11414 // If not given a viewType, keep the current view but render different dates. 11415 // Accepts an optional scroll state to restore to. 11416 Calendar.prototype.renderView = function (viewType) { 11417 var oldView = this.view; 11418 var newView; 11419 this.freezeContentHeight(); 11420 if (oldView && viewType && oldView.type !== viewType) { 11421 this.clearView(); 11422 } 11423 // if viewType changed, or the view was never created, create a fresh view 11424 if (!this.view && viewType) { 11425 newView = this.view = 11426 this.viewsByType[viewType] || 11427 (this.viewsByType[viewType] = this.instantiateView(viewType)); 11428 this.bindViewHandlers(newView); 11429 newView.startBatchRender(); // so that setElement+setDate rendering are joined 11430 newView.setElement($("<div class='fc-view fc-" + viewType + "-view'>").appendTo(this.contentEl)); 11431 this.toolbarsManager.proxyCall('activateButton', viewType); 11432 } 11433 if (this.view) { 11434 // prevent unnecessary change firing 11435 if (this.view.get('businessHourGenerator') !== this.businessHourGenerator) { 11436 this.view.set('businessHourGenerator', this.businessHourGenerator); 11437 } 11438 this.view.setDate(this.currentDate); 11439 if (newView) { 11440 newView.stopBatchRender(); 11441 } 11442 } 11443 this.thawContentHeight(); 11444 }; 11445 // Unrenders the current view and reflects this change in the Header. 11446 // Unregsiters the `view`, but does not remove from viewByType hash. 11447 Calendar.prototype.clearView = function () { 11448 var currentView = this.view; 11449 this.toolbarsManager.proxyCall('deactivateButton', currentView.type); 11450 this.unbindViewHandlers(currentView); 11451 currentView.removeElement(); 11452 currentView.unsetDate(); // so bindViewHandlers doesn't fire with old values next time 11453 this.view = null; 11454 }; 11455 // Destroys the view, including the view object. Then, re-instantiates it and renders it. 11456 // Maintains the same scroll state. 11457 // TODO: maintain any other user-manipulated state. 11458 Calendar.prototype.reinitView = function () { 11459 var oldView = this.view; 11460 var scroll = oldView.queryScroll(); // wouldn't be so complicated if Calendar owned the scroll 11461 this.freezeContentHeight(); 11462 this.clearView(); 11463 this.calcSize(); 11464 this.renderView(oldView.type); // needs the type to freshly render
11465 this.view.applyScroll(scroll); 11466 this.thawContentHeight(); 11467 }; 11468 // Resizing 11469 // ----------------------------------------------------------------------------------- 11470 Calendar.prototype.getSuggestedViewHeight = function () { 11471 if (this.suggestedViewHeight == null) { 11472 this.calcSize(); 11473 } 11474 return this.suggestedViewHeight; 11475 }; 11476 Calendar.prototype.isHeightAuto = function () { 11477 return this.opt('contentHeight') === 'auto' || this.opt('height') === 'auto'; 11478 }; 11479 Calendar.prototype.updateViewSize = function (isResize) { 11480 if (isResize === void 0) { isResize = false; } 11481 var view = this.view; 11482 var scroll; 11483 if (!this.ignoreUpdateViewSize && view) { 11484 if (isResize) { 11485 this.calcSize(); 11486 scroll = view.queryScroll(); 11487 } 11488 this.ignoreUpdateViewSize++; 11489 view.updateSize(this.getSuggestedViewHeight(), this.isHeightAuto(), isResize); 11490 this.ignoreUpdateViewSize--; 11491 if (isResize) { 11492 view.applyScroll(scroll); 11493 } 11494 return true; // signal success 11495 } 11496 }; 11497 Calendar.prototype.calcSize = function () { 11498 if (this.elementVisible()) { 11499 this._calcSize(); 11500 } 11501 }; 11502 Calendar.prototype._calcSize = function () { 11503 var contentHeightInput = this.opt('contentHeight'); 11504 var heightInput = this.opt('height'); 11505 if (typeof contentHeightInput === 'number') { // exists and not 'auto' 11506 this.suggestedViewHeight = contentHeightInput; 11507 } 11508 else if (typeof contentHeightInput === 'function') { // exists and is a function 11509 this.suggestedViewHeight = contentHeightInput(); 11510 } 11511 else if (typeof heightInput === 'number') { // exists and not 'auto' 11512 this.suggestedViewHeight = heightInput - this.queryToolbarsHeight(); 11513 } 11514 else if (typeof heightInput === 'function') { // exists and is a function 11515 this.suggestedViewHeight = heightInput() - this.queryToolbarsHeight(); 11516 } 11517 else if (heightInput === 'parent') { // set to height of parent element 11518 this.suggestedViewHeight = this.el.parent().height() - this.queryToolbarsHeight(); 11519 } 11520 else { 11521 this.suggestedViewHeight = Math.round(this.contentEl.width() / 11522 Math.max(this.opt('aspectRatio'), .5)); 11523 } 11524 }; 11525 Calendar.prototype.windowResize = function (ev) { 11526 if ( 11527 // the purpose: so we don't process jqui "resize" events that have bubbled up 11528 // cast to any because .target, which is Element, can't be compared to window for some reason. 11529 ev.target === window && 11530 this.view && 11531 this.view.isDatesRendered) { 11532 if (this.updateViewSize(true)) { // isResize=true, returns true on success 11533 this.publiclyTrigger('windowResize', [this.view]); 11534 } 11535 } 11536 }; 11537 /* Height "Freezing" 11538 -----------------------------------------------------------------------------*/ 11539 Calendar.prototype.freezeContentHeight = function () { 11540 if (!(this.freezeContentHeightDepth++)) { 11541 this.forceFreezeContentHeight(); 11542 } 11543 }; 11544 Calendar.prototype.forceFreezeContentHeight = function () { 11545 this.contentEl.css({ 11546 width: '100%', 11547 height: this.contentEl.height(), 11548 overflow: 'hidden' 11549 }); 11550 }; 11551 Calendar.prototype.thawContentHeight = function () { 11552 this.freezeContentHeightDepth--; 11553 // always bring back to natural height 11554 this.contentEl.css({ 11555 width: '', 11556 height: '', 11557 overflow: '' 11558 }); 11559 // but if there are future thaws, re-freeze 11560 if (this.freezeContentHeightDepth) { 11561 this.forceFreezeContentHeight(); 11562 } 11563 }; 11564 // Toolbar 11565 // ----------------------------------------------------------------------------------------------------------------- 11566 Calendar.prototype.initToolbars = function () { 11567 this.header = new Toolbar_1.default(this, this.computeHeaderOptions()); 11568 this.footer = new Toolbar_1.default(this, this.computeFooterOptions()); 11569 this.toolbarsManager = new Iterator_1.default([this.header, this.footer]); 11570 }; 11571 Calendar.prototype.computeHeaderOptions = function () { 11572 return {
11573 extraClasses: 'fc-header-toolbar', 11574 layout: this.opt('header') 11575 }; 11576 }; 11577 Calendar.prototype.computeFooterOptions = function () { 11578 return { 11579 extraClasses: 'fc-footer-toolbar', 11580 layout: this.opt('footer') 11581 }; 11582 }; 11583 // can be called repeatedly and Header will rerender 11584 Calendar.prototype.renderHeader = function () { 11585 var header = this.header; 11586 header.setToolbarOptions(this.computeHeaderOptions()); 11587 header.render(); 11588 if (header.el) { 11589 this.el.prepend(header.el); 11590 } 11591 }; 11592 // can be called repeatedly and Footer will rerender 11593 Calendar.prototype.renderFooter = function () { 11594 var footer = this.footer; 11595 footer.setToolbarOptions(this.computeFooterOptions()); 11596 footer.render(); 11597 if (footer.el) { 11598 this.el.append(footer.el); 11599 } 11600 }; 11601 Calendar.prototype.setToolbarsTitle = function (title) { 11602 this.toolbarsManager.proxyCall('updateTitle', title); 11603 }; 11604 Calendar.prototype.updateToolbarButtons = function (dateProfile) { 11605 var now = this.getNow(); 11606 var view = this.view; 11607 var todayInfo = view.dateProfileGenerator.build(now); 11608 var prevInfo = view.dateProfileGenerator.buildPrev(view.get('dateProfile')); 11609 var nextInfo = view.dateProfileGenerator.buildNext(view.get('dateProfile')); 11610 this.toolbarsManager.proxyCall((todayInfo.isValid && !dateProfile.currentUnzonedRange.containsDate(now)) ? 11611 'enableButton' : 11612 'disableButton', 'today'); 11613 this.toolbarsManager.proxyCall(prevInfo.isValid ? 11614 'enableButton' : 11615 'disableButton', 'prev'); 11616 this.toolbarsManager.proxyCall(nextInfo.isValid ? 11617 'enableButton' : 11618 'disableButton', 'next'); 11619 }; 11620 Calendar.prototype.queryToolbarsHeight = function () { 11621 return this.toolbarsManager.items.reduce(function (accumulator, toolbar) { 11622 var toolbarHeight = toolbar.el ? toolbar.el.outerHeight(true) : 0; // includes margin 11623 return accumulator + toolbarHeight; 11624 }, 0); 11625 }; 11626 // Selection 11627 // ----------------------------------------------------------------------------------------------------------------- 11628 // this public method receives start/end dates in any format, with any timezone 11629 Calendar.prototype.select = function (zonedStartInput, zonedEndInput) { 11630 this.view.select(this.buildSelectFootprint.apply(this, arguments)); 11631 }; 11632 Calendar.prototype.unselect = function () { 11633 if (this.view) { 11634 this.view.unselect(); 11635 } 11636 }; 11637 // Given arguments to the select method in the API, returns a span (unzoned start/end and other info) 11638 Calendar.prototype.buildSelectFootprint = function (zonedStartInput, zonedEndInput) { 11639 var start = this.moment(zonedStartInput).stripZone(); 11640 var end; 11641 if (zonedEndInput) { 11642 end = this.moment(zonedEndInput).stripZone(); 11643 } 11644 else if (start.hasTime()) { 11645 end = start.clone().add(this.defaultTimedEventDuration); 11646 } 11647 else { 11648 end = start.clone().add(this.defaultAllDayEventDuration); 11649 } 11650 return new ComponentFootprint_1.default(new UnzonedRange_1.default(start, end), !start.hasTime()); 11651 }; 11652 // Date Utils 11653 // ----------------------------------------------------------------------------------------------------------------- 11654 Calendar.prototype.initMomentInternals = function () { 11655 var _this = this; 11656 this.defaultAllDayEventDuration = moment.duration(this.opt('defaultAllDayEventDuration')); 11657 this.defaultTimedEventDuration = moment.duration(this.opt('defaultTimedEventDuration')); 11658 // Called immediately, and when any of the options change. 11659 // Happens before any internal objects rebuild or rerender, because this is very core. 11660 this.optionsManager.watch('buildingMomentLocale', [ 11661 '?locale', '?monthNames', '?monthNamesShort', '?dayNames', '?dayNamesShort', 11662 '?firstDay', '?weekNumberCalculation' 11663 ], function (opts) { 11664 var weekNumberCalculation = opts.weekNumberCalculation; 11665 var firstDay = opts.firstDay; 11666 var _week; 11667 // normalize
11668 if (weekNumberCalculation === 'iso') { 11669 weekNumberCalculation = 'ISO'; // normalize 11670 } 11671 var localeData = Object.create(// make a cheap copy 11672 locale_1.getMomentLocaleData(opts.locale) // will fall back to en 11673 ); 11674 if (opts.monthNames) { 11675 localeData._months = opts.monthNames; 11676 } 11677 if (opts.monthNamesShort) { 11678 localeData._monthsShort = opts.monthNamesShort; 11679 } 11680 if (opts.dayNames) { 11681 localeData._weekdays = opts.dayNames; 11682 } 11683 if (opts.dayNamesShort) { 11684 localeData._weekdaysShort = opts.dayNamesShort; 11685 } 11686 if (firstDay == null && weekNumberCalculation === 'ISO') { 11687 firstDay = 1; 11688 } 11689 if (firstDay != null) { 11690 _week = Object.create(localeData._week); // _week: { dow: # } 11691 _week.dow = firstDay; 11692 localeData._week = _week; 11693 } 11694 if ( // whitelist certain kinds of input 11695 weekNumberCalculation === 'ISO' || 11696 weekNumberCalculation === 'local' || 11697 typeof weekNumberCalculation === 'function') { 11698 localeData._fullCalendar_weekCalc = weekNumberCalculation; // moment-ext will know what to do with it 11699 } 11700 _this.localeData = localeData; 11701 // If the internal current date object already exists, move to new locale. 11702 // We do NOT need to do this technique for event dates, because this happens when converting to "segments". 11703 if (_this.currentDate) { 11704 _this.localizeMoment(_this.currentDate); // sets to localeData 11705 } 11706 }); 11707 }; 11708 // Builds a moment using the settings of the current calendar: timezone and locale. 11709 // Accepts anything the vanilla moment() constructor accepts. 11710 Calendar.prototype.moment = function () { 11711 var args = []; 11712 for (var _i = 0; _i < arguments.length; _i++) { 11713 args[_i] = arguments[_i]; 11714 } 11715 var mom; 11716 if (this.opt('timezone') === 'local') { 11717 mom = moment_ext_1.default.apply(null, args); 11718 // Force the moment to be local, because momentExt doesn't guarantee it. 11719 if (mom.hasTime()) { // don't give ambiguously-timed moments a local zone 11720 mom.local(); 11721 } 11722 } 11723 else if (this.opt('timezone') === 'UTC') { 11724 mom = moment_ext_1.default.utc.apply(null, args); // process as UTC 11725 } 11726 else { 11727 mom = moment_ext_1.default.parseZone.apply(null, args); // let the input decide the zone 11728 } 11729 this.localizeMoment(mom); // TODO 11730 return mom; 11731 }; 11732 Calendar.prototype.msToMoment = function (ms, forceAllDay) { 11733 var mom = moment_ext_1.default.utc(ms); // TODO: optimize by using Date.UTC 11734 if (forceAllDay) { 11735 mom.stripTime(); 11736 } 11737 else { 11738 mom = this.applyTimezone(mom); // may or may not apply locale 11739 } 11740 this.localizeMoment(mom); 11741 return mom; 11742 }; 11743 Calendar.prototype.msToUtcMoment = function (ms, forceAllDay) { 11744 var mom = moment_ext_1.default.utc(ms); // TODO: optimize by using Date.UTC 11745 if (forceAllDay) { 11746 mom.stripTime(); 11747 } 11748 this.localizeMoment(mom); 11749 return mom; 11750 }; 11751 // Updates the given moment's locale settings to the current calendar locale settings. 11752 Calendar.prototype.localizeMoment = function (mom) { 11753 mom._locale = this.localeData; 11754 }; 11755 // Returns a boolean about whether or not the calendar knows how to calculate 11756 // the timezone offset of arbitrary dates in the current timezone. 11757 Calendar.prototype.getIsAmbigTimezone = function () { 11758 return this.opt('timezone') !== 'local' && this.opt('timezone') !== 'UTC'; 11759 }; 11760 // Returns a copy of the given date in the current timezone. Has no effect on dates without times. 11761 Calendar.prototype.applyTimezone = function (date) { 11762 if (!date.hasTime()) { 11763 return date.clone(); 11764 } 11765 var zonedDate = this.moment(date.toArray()); 11766 var timeAdjust = date.time().asMilliseconds() - zonedDate.time().asMilliseconds(); 11767 var adjustedZonedDate; 11768 // Safari sometimes has problems with this coersion when near DST. Adjust if necessary. (bug #2396) 11769 if (timeAdjust) { // is the time result different than expected? 11770 adjustedZonedDate = zonedDate.clone().add(timeAdjust); // add milliseconds 11771 if (date.time().asMilliseconds() - adjustedZonedDate.time().asMilliseconds() === 0) { // does it match perfectly now? 11772 zonedDate = adjustedZonedDate; 11773 } 11774 } 11775 return zonedDate; 11776 }; 11777 /* 11778 Assumes the footprint is non-open-ended. 11779 */ 11780 Calendar.prototype.footprintToDateProfile = function (componentFootprint, ignoreEnd) { 11781 if (ignoreEnd === void 0) { ignoreEnd = false; } 11782 var start = moment_ext_1.default.utc(componentFootprint.unzonedRange.startMs); 11783 var end; 11784 if (!ignoreEnd) { 11785 end = moment_ext_1.default.utc(componentFootprint.unzonedRange.endMs); 11786 } 11787 if (componentFootprint.isAllDay) { 11788 start.stripTime(); 11789 if (end) { 11790 end.stripTime(); 11791 } 11792 } 11793 else { 11794 start = this.applyTimezone(start); 11795 if (end) { 11796 end = this.applyTimezone(end); 11797 } 11798 } 11799 this.localizeMoment(start); 11800 if (end) { 11801 this.localizeMoment(end); 11802 } 11803 return new EventDateProfile_1.default(start, end, this); 11804 }; 11805 // Returns a moment for the current date, as defined by the client's computer or from the `now` option. 11806 // Will return an moment with an ambiguous timezone. 11807 Calendar.prototype.getNow = function () { 11808 var now = this.opt('now'); 11809 if (typeof now === 'function') { 11810 now = now(); 11811 } 11812 return this.moment(now).stripZone(); 11813 }; 11814 // Produces a human-readable string for the given duration. 11815 // Side-effect: changes the locale of the given duration. 11816 Calendar.prototype.humanizeDuration = function (duration) { 11817 return duration.locale(this.opt('locale')).humanize(); 11818 }; 11819 // will return `null` if invalid range 11820 Calendar.prototype.parseUnzonedRange = function (rangeInput) { 11821 var start = null; 11822 var end = null; 11823 if (rangeInput.start) { 11824 start = this.moment(rangeInput.start).stripZone(); 11825 } 11826 if (rangeInput.end) {
11827 end = this.moment(rangeInput.end).stripZone(); 11828 } 11829 if (!start && !end) { 11830 return null; 11831 } 11832 if (start && end && end.isBefore(start)) { 11833 return null; 11834 } 11835 return new UnzonedRange_1.default(start, end); 11836 }; 11837 // Event-Date Utilities 11838 // ----------------------------------------------------------------------------------------------------------------- 11839 Calendar.prototype.initEventManager = function () { 11840 var _this = this; 11841 var eventManager = new EventManager_1.default(this); 11842 var rawSources = this.opt('eventSources') || []; 11843 var singleRawSource = this.opt('events'); 11844 this.eventManager = eventManager; 11845 if (singleRawSource) { 11846 rawSources.unshift(singleRawSource); 11847 } 11848 eventManager.on('release', function (eventsPayload) { 11849 _this.trigger('eventsReset', eventsPayload); 11850 }); 11851 eventManager.freeze(); 11852 rawSources.forEach(function (rawSource) { 11853 var source = EventSourceParser_1.default.parse(rawSource, _this); 11854 if (source) { 11855 eventManager.addSource(source); 11856 } 11857 }); 11858 eventManager.thaw(); 11859 }; 11860 Calendar.prototype.requestEvents = function (start, end) { 11861 return this.eventManager.requestEvents(start, end, this.opt('timezone'), !this.opt('lazyFetching')); 11862 }; 11863 // Get an event's normalized end date. If not present, calculate it from the defaults. 11864 Calendar.prototype.getEventEnd = function (event) { 11865 if (event.end) { 11866 return event.end.clone(); 11867 } 11868 else { 11869 return this.getDefaultEventEnd(event.allDay, event.start); 11870 } 11871 }; 11872 // Given an event's allDay status and start date, return what its fallback end date should be. 11873 // TODO: rename to computeDefaultEventEnd 11874 Calendar.prototype.getDefaultEventEnd = function (allDay, zonedStart) { 11875 var end = zonedStart.clone(); 11876 if (allDay) { 11877 end.stripTime().add(this.defaultAllDayEventDuration); 11878 } 11879 else { 11880 end.add(this.defaultTimedEventDuration); 11881 } 11882 if (this.getIsAmbigTimezone()) { 11883 end.stripZone(); // we don't know what the tzo should be 11884 } 11885 return end; 11886 }; 11887 // Public Events API 11888 // ----------------------------------------------------------------------------------------------------------------- 11889 Calendar.prototype.rerenderEvents = function () { 11890 this.view.flash('displayingEvents'); 11891 }; 11892 Calendar.prototype.refetchEvents = function () { 11893 this.eventManager.refetchAllSources(); 11894 }; 11895 Calendar.prototype.renderEvents = function (eventInputs, isSticky) { 11896 this.eventManager.freeze(); 11897 for (var i = 0; i < eventInputs.length; i++) { 11898 this.renderEvent(eventInputs[i], isSticky); 11899 } 11900 this.eventManager.thaw(); 11901 }; 11902 Calendar.prototype.renderEvent = function (eventInput, isSticky) { 11903 if (isSticky === void 0) { isSticky = false; } 11904 var eventManager = this.eventManager; 11905 var eventDef = EventDefParser_1.default.parse(eventInput, eventInput.source || eventManager.stickySource); 11906 if (eventDef) { 11907 eventManager.addEventDef(eventDef, isSticky); 11908 } 11909 }; 11910 // legacyQuery operates on legacy event instance objects 11911 Calendar.prototype.removeEvents = function (legacyQuery) { 11912 var eventManager = this.eventManager; 11913 var legacyInstances = []; 11914 var idMap = {}; 11915 var eventDef; 11916 var i; 11917 if (legacyQuery == null) { // shortcut for removing all 11918 eventManager.removeAllEventDefs(); // persist=true 11919 } 11920 else { 11921 eventManager.getEventInstances().forEach(function (eventInstance) { 11922 legacyInstances.push(eventInstance.toLegacy()); 11923 }); 11924 legacyInstances = filterLegacyEventInstances(legacyInstances, legacyQuery); 11925 // compute unique IDs 11926 for (i = 0; i < legacyInstances.length; i++) { 11927 eventDef = this.eventManager.getEventDefByUid(legacyInstances[i]._id); 11928 idMap[eventDef.id] = true; 11929 } 11930 eventManager.freeze(); 11931 for (i in idMap) { // reuse `i` as an "id" 11932 eventManager.removeEventDefsById(i); // persist=true 11933 } 11934 eventManager.thaw(); 11935 } 11936 }; 11937 // legacyQuery operates on legacy event instance objects 11938 Calendar.prototype.clientEvents = function (legacyQuery) { 11939 var legacyEventInstances = [];
11940 this.eventManager.getEventInstances().forEach(function (eventInstance) { 11941 legacyEventInstances.push(eventInstance.toLegacy()); 11942 }); 11943 return filterLegacyEventInstances(legacyEventInstances, legacyQuery); 11944 }; 11945 Calendar.prototype.updateEvents = function (eventPropsArray) { 11946 this.eventManager.freeze(); 11947 for (var i = 0; i < eventPropsArray.length; i++) { 11948 this.updateEvent(eventPropsArray[i]); 11949 } 11950 this.eventManager.thaw(); 11951 }; 11952 Calendar.prototype.updateEvent = function (eventProps) { 11953 var eventDef = this.eventManager.getEventDefByUid(eventProps._id); 11954 var eventInstance; 11955 var eventDefMutation; 11956 if (eventDef instanceof SingleEventDef_1.default) { 11957 eventInstance = eventDef.buildInstance(); 11958 eventDefMutation = EventDefMutation_1.default.createFromRawProps(eventInstance, eventProps, // raw props 11959 null // largeUnit -- who uses it? 11960 ); 11961 this.eventManager.mutateEventsWithId(eventDef.id, eventDefMutation); // will release 11962 } 11963 }; 11964 // Public Event Sources API 11965 // ------------------------------------------------------------------------------------ 11966 Calendar.prototype.getEventSources = function () { 11967 return this.eventManager.otherSources.slice(); // clone 11968 }; 11969 Calendar.prototype.getEventSourceById = function (id) { 11970 return this.eventManager.getSourceById(EventSource_1.default.normalizeId(id)); 11971 }; 11972 Calendar.prototype.addEventSource = function (sourceInput) { 11973 var source = EventSourceParser_1.default.parse(sourceInput, this); 11974 if (source) { 11975 this.eventManager.addSource(source); 11976 } 11977 }; 11978 Calendar.prototype.removeEventSources = function (sourceMultiQuery) { 11979 var eventManager = this.eventManager; 11980 var sources; 11981 var i; 11982 if (sourceMultiQuery == null) { 11983 this.eventManager.removeAllSources(); 11984 } 11985 else { 11986 sources = eventManager.multiQuerySources(sourceMultiQuery); 11987 eventManager.freeze(); 11988 for (i = 0; i < sources.length; i++) { 11989 eventManager.removeSource(sources[i]); 11990 } 11991 eventManager.thaw(); 11992 } 11993 }; 11994 Calendar.prototype.removeEventSource = function (sourceQuery) { 11995 var eventManager = this.eventManager; 11996 var sources = eventManager.querySources(sourceQuery); 11997 var i; 11998 eventManager.freeze(); 11999 for (i = 0; i < sources.length; i++) { 12000 eventManager.removeSource(sources[i]); 12001 } 12002 eventManager.thaw(); 12003 }; 12004 Calendar.prototype.refetchEventSources = function (sourceMultiQuery) { 12005 var eventManager = this.eventManager; 12006 var sources = eventManager.multiQuerySources(sourceMultiQuery); 12007 var i; 12008 eventManager.freeze(); 12009 for (i = 0; i < sources.length; i++) { 12010 eventManager.refetchSource(sources[i]); 12011 } 12012 eventManager.thaw(); 12013 }; 12014 // not for internal use. use options module directly instead. 12015 Calendar.defaults = options_1.globalDefaults; 12016 Calendar.englishDefaults = options_1.englishDefaults; 12017 Calendar.rtlDefaults = options_1.rtlDefaults; 12018 return Calendar; 12019}()); 12020exports.default = Calendar; 12021EmitterMixin_1.default.mixInto(Calendar); 12022ListenerMixin_1.default.mixInto(Calendar); 12023function filterLegacyEventInstances(legacyEventInstances, legacyQuery) { 12024 if (legacyQuery == null) { 12025 return legacyEventInstances; 12026 } 12027 else if ($.isFunction(legacyQuery)) { 12028 return legacyEventInstances.filter(legacyQuery); 12029 } 12030 else { // an event ID 12031 legacyQuery += ''; // normalize to string 12032 return legacyEventInstances.filter(function (legacyEventInstance) { 12033 // soft comparison because id not be normalized to string 12034 // tslint:disable-next-line 12035 return legacyEventInstance.id == legacyQuery || 12036 legacyEventInstance._id === legacyQuery; // can specify internal id, but must exactly match 12037 }); 12038 } 12039} 12040 12041 12042/***/ }), 12043/* 233 */ 12044/***/ (function(module, exports, __webpack_require__) { 12045 12046Object.defineProperty(exports, "__esModule", { value: true });
12047var tslib_1 = __webpack_require__(2); 12048var $ = __webpack_require__(3); 12049var moment = __webpack_require__(0); 12050var exportHooks = __webpack_require__(18); 12051var util_1 = __webpack_require__(4); 12052var moment_ext_1 = __webpack_require__(11); 12053var ListenerMixin_1 = __webpack_require__(7); 12054var HitDragListener_1 = __webpack_require__(17); 12055var SingleEventDef_1 = __webpack_require__(9); 12056var EventInstanceGroup_1 = __webpack_require__(20); 12057var EventSource_1 = __webpack_require__(6); 12058var Interaction_1 = __webpack_require__(14); 12059var ExternalDropping = /** @class */ (function (_super) { 12060 tslib_1.__extends(ExternalDropping, _super); 12061 function ExternalDropping() { 12062 var _this = _super !== null && _super.apply(this, arguments) || this; 12063 _this.isDragging = false; // jqui-dragging an external element? boolean 12064 return _this; 12065 } 12066 /* 12067 component impements: 12068 - eventRangesToEventFootprints 12069 - isEventInstanceGroupAllowed 12070 - isExternalInstanceGroupAllowed 12071 - renderDrag 12072 - unrenderDrag 12073 */ 12074 ExternalDropping.prototype.end = function () { 12075 if (this.dragListener) { 12076 this.dragListener.endInteraction(); 12077 } 12078 }; 12079 ExternalDropping.prototype.bindToDocument = function () { 12080 this.listenTo($(document), { 12081 dragstart: this.handleDragStart, 12082 sortstart: this.handleDragStart // jqui 12083 }); 12084 }; 12085 ExternalDropping.prototype.unbindFromDocument = function () { 12086 this.stopListeningTo($(document)); 12087 }; 12088 // Called when a jQuery UI drag is initiated anywhere in the DOM 12089 ExternalDropping.prototype.handleDragStart = function (ev, ui) { 12090 var el; 12091 var accept; 12092 if (this.opt('droppable')) { // only listen if this setting is on 12093 el = $((ui ? ui.item : null) || ev.target); 12094 // Test that the dragged element passes the dropAccept selector or filter function. 12095 // FYI, the default is "*" (matches all) 12096 accept = this.opt('dropAccept'); 12097 if ($.isFunction(accept) ? accept.call(el[0], el) : el.is(accept)) { 12098 if (!this.isDragging) { // prevent double-listening if fired twice 12099 this.listenToExternalDrag(el, ev, ui); 12100 } 12101 } 12102 } 12103 }; 12104 // Called when a jQuery UI drag starts and it needs to be monitored for dropping 12105 ExternalDropping.prototype.listenToExternalDrag = function (el, ev, ui) { 12106 var _this = this; 12107 var component = this.component; 12108 var view = this.view; 12109 var meta = getDraggedElMeta(el); // extra data about event drop, including possible event to create 12110 var singleEventDef; // a null value signals an unsuccessful drag 12111 // listener that tracks mouse movement over date-associated pixel regions 12112 var dragListener = this.dragListener = new HitDragListener_1.default(component, { 12113 interactionStart: function () { 12114 _this.isDragging = true; 12115 }, 12116 hitOver: function (hit) { 12117 var isAllowed = true; 12118 var hitFootprint = hit.component.getSafeHitFootprint(hit); // hit might not belong to this grid 12119 var mutatedEventInstanceGroup; 12120 if (hitFootprint) { 12121 singleEventDef = _this.computeExternalDrop(hitFootprint, meta); 12122 if (singleEventDef) { 12123 mutatedEventInstanceGroup = new EventInstanceGroup_1.default(singleEventDef.buildInstances()); 12124 isAllowed = meta.eventProps ? // isEvent? 12125 component.isEventInstanceGroupAllowed(mutatedEventInstanceGroup) : 12126 component.isExternalInstanceGroupAllowed(mutatedEventInstanceGroup); 12127 } 12128 else { 12129 isAllowed = false; 12130 } 12131 } 12132 else { 12133 isAllowed = false; 12134 } 12135 if (!isAllowed) { 12136 singleEventDef = null;
12137 util_1.disableCursor(); 12138 } 12139 if (singleEventDef) { 12140 component.renderDrag(// called without a seg parameter 12141 component.eventRangesToEventFootprints(mutatedEventInstanceGroup.sliceRenderRanges(component.dateProfile.renderUnzonedRange, view.calendar))); 12142 } 12143 }, 12144 hitOut: function () { 12145 singleEventDef = null; // signal unsuccessful 12146 }, 12147 hitDone: function () { 12148 util_1.enableCursor(); 12149 component.unrenderDrag(); 12150 }, 12151 interactionEnd: function (ev) { 12152 if (singleEventDef) { // element was dropped on a valid hit 12153 view.reportExternalDrop(singleEventDef, Boolean(meta.eventProps), // isEvent 12154 Boolean(meta.stick), // isSticky 12155 el, ev, ui); 12156 } 12157 _this.isDragging = false; 12158 _this.dragListener = null; 12159 } 12160 }); 12161 dragListener.startDrag(ev); // start listening immediately 12162 }; 12163 // Given a hit to be dropped upon, and misc data associated with the jqui drag (guaranteed to be a plain object), 12164 // returns the zoned start/end dates for the event that would result from the hypothetical drop. end might be null. 12165 // Returning a null value signals an invalid drop hit. 12166 // DOES NOT consider overlap/constraint. 12167 // Assumes both footprints are non-open-ended. 12168 ExternalDropping.prototype.computeExternalDrop = function (componentFootprint, meta) { 12169 var calendar = this.view.calendar; 12170 var start = moment_ext_1.default.utc(componentFootprint.unzonedRange.startMs).stripZone(); 12171 var end; 12172 var eventDef; 12173 if (componentFootprint.isAllDay) { 12174 // if dropped on an all-day span, and element's metadata specified a time, set it 12175 if (meta.startTime) { 12176 start.time(meta.startTime); 12177 } 12178 else { 12179 start.stripTime(); 12180 } 12181 } 12182 if (meta.duration) { 12183 end = start.clone().add(meta.duration); 12184 } 12185 start = calendar.applyTimezone(start); 12186 if (end) { 12187 end = calendar.applyTimezone(end); 12188 } 12189 eventDef = SingleEventDef_1.default.parse($.extend({}, meta.eventProps, { 12190 start: start, 12191 end: end 12192 }), new EventSource_1.default(calendar)); 12193 return eventDef; 12194 }; 12195 return ExternalDropping; 12196}(Interaction_1.default)); 12197exports.default = ExternalDropping; 12198ListenerMixin_1.default.mixInto(ExternalDropping); 12199/* External-Dragging-Element Data 12200----------------------------------------------------------------------------------------------------------------------*/ 12201// Require all HTML5 data-* attributes used by FullCalendar to have this prefix. 12202// A value of '' will query attributes like data-event. A value of 'fc' will query attributes like data-fc-event. 12203exportHooks.dataAttrPrefix = ''; 12204// Given a jQuery element that might represent a dragged FullCalendar event, returns an intermediate data structure 12205// to be used for Event Object creation. 12206// A defined `.eventProps`, even when empty, indicates that an event should be created. 12207function getDraggedElMeta(el) { 12208 var prefix = exportHooks.dataAttrPrefix; 12209 var eventProps; // properties for creating the event, not related to date/time 12210 var startTime; // a Duration 12211 var duration; 12212 var stick; 12213 if (prefix) { 12214 prefix += '-'; 12215 } 12216 eventProps = el.data(prefix + 'event') || null; 12217 if (eventProps) { 12218 if (typeof eventProps === 'object') { 12219 eventProps = $.extend({}, eventProps); // make a copy 12220 } 12221 else { // something like 1 or true. still signal event creation 12222 eventProps = {}; 12223 } 12224 // pluck special-cased date/time properties 12225 startTime = eventProps.start; 12226 if (startTime == null) { 12227 startTime = eventProps.time; 12228 } // accept 'time' as well 12229 duration = eventProps.duration; 12230 stick = eventProps.stick; 12231 delete eventProps.start; 12232 delete eventProps.time; 12233 delete eventProps.duration; 12234 delete eventProps.stick; 12235 } 12236 // fallback to standalone attribute values for each of the date/time properties 12237 if (startTime == null) { 12238 startTime = el.data(prefix + 'start'); 12239 } 12240 if (startTime == null) { 12241 startTime = el.data(prefix + 'time'); 12242 } // accept 'time' as well 12243 if (duration == null) { 12244 duration = el.data(prefix + 'duration'); 12245 } 12246 if (stick == null) { 12247 stick = el.data(prefix + 'stick'); 12248 } 12249 // massage into correct data types 12250 startTime = startTime != null ? moment.duration(startTime) : null; 12251 duration = duration != null ? moment.duration(duration) : null; 12252 stick = Boolean(stick); 12253 return { eventProps: eventProps, startTime: startTime, duration: duration, stick: stick }; 12254} 12255 12256 12257/***/ }), 12258/* 234 */ 12259/***/ (function(module, exports, __webpack_require__) { 12260 12261Object.defineProperty(exports, "__esModule", { value: true });
12262var tslib_1 = __webpack_require__(2); 12263var $ = __webpack_require__(3); 12264var util_1 = __webpack_require__(4); 12265var EventDefMutation_1 = __webpack_require__(39); 12266var EventDefDateMutation_1 = __webpack_require__(40); 12267var HitDragListener_1 = __webpack_require__(17); 12268var Interaction_1 = __webpack_require__(14); 12269var EventResizing = /** @class */ (function (_super) { 12270 tslib_1.__extends(EventResizing, _super); 12271 /* 12272 component impements: 12273 - bindSegHandlerToEl 12274 - publiclyTrigger 12275 - diffDates 12276 - eventRangesToEventFootprints 12277 - isEventInstanceGroupAllowed 12278 - getSafeHitFootprint 12279 */ 12280 function EventResizing(component, eventPointing) { 12281 var _this = _super.call(this, component) || this; 12282 _this.isResizing = false; 12283 _this.eventPointing = eventPointing; 12284 return _this; 12285 } 12286 EventResizing.prototype.end = function () { 12287 if (this.dragListener) { 12288 this.dragListener.endInteraction(); 12289 } 12290 }; 12291 EventResizing.prototype.bindToEl = function (el) { 12292 var component = this.component; 12293 component.bindSegHandlerToEl(el, 'mousedown', this.handleMouseDown.bind(this)); 12294 component.bindSegHandlerToEl(el, 'touchstart', this.handleTouchStart.bind(this)); 12295 }; 12296 EventResizing.prototype.handleMouseDown = function (seg, ev) { 12297 if (this.component.canStartResize(seg, ev)) { 12298 this.buildDragListener(seg, $(ev.target).is('.fc-start-resizer')) 12299 .startInteraction(ev, { distance: 5 }); 12300 } 12301 }; 12302 EventResizing.prototype.handleTouchStart = function (seg, ev) { 12303 if (this.component.canStartResize(seg, ev)) { 12304 this.buildDragListener(seg, $(ev.target).is('.fc-start-resizer')) 12305 .startInteraction(ev); 12306 } 12307 }; 12308 // Creates a listener that tracks the user as they resize an event segment. 12309 // Generic enough to work with any type of Grid. 12310 EventResizing.prototype.buildDragListener = function (seg, isStart) { 12311 var _this = this; 12312 var component = this.component; 12313 var view = this.view; 12314 var calendar = view.calendar; 12315 var eventManager = calendar.eventManager; 12316 var el = seg.el; 12317 var eventDef = seg.footprint.eventDef; 12318 var eventInstance = seg.footprint.eventInstance; 12319 var isDragging; 12320 var resizeMutation; // zoned event date properties. falsy if invalid resize 12321 // Tracks mouse movement over the *grid's* coordinate map 12322 var dragListener = this.dragListener = new HitDragListener_1.default(component, { 12323 scroll: this.opt('dragScroll'), 12324 subjectEl: el, 12325 interactionStart: function () { 12326 isDragging = false; 12327 }, 12328 dragStart: function (ev) { 12329 isDragging = true; 12330 // ensure a mouseout on the manipulated event has been reported 12331 _this.eventPointing.handleMouseout(seg, ev); 12332 _this.segResizeStart(seg, ev); 12333 }, 12334 hitOver: function (hit, isOrig, origHit) { 12335 var isAllowed = true; 12336 var origHitFootprint = component.getSafeHitFootprint(origHit); 12337 var hitFootprint = component.getSafeHitFootprint(hit); 12338 var mutatedEventInstanceGroup; 12339 if (origHitFootprint && hitFootprint) { 12340 resizeMutation = isStart ? 12341 _this.computeEventStartResizeMutation(origHitFootprint, hitFootprint, seg.footprint) : 12342 _this.computeEventEndResizeMutation(origHitFootprint, hitFootprint, seg.footprint); 12343 if (resizeMutation) { 12344 mutatedEventInstanceGroup = eventManager.buildMutatedEventInstanceGroup(eventDef.id, resizeMutation); 12345 isAllowed = component.isEventInstanceGroupAllowed(mutatedEventInstanceGroup); 12346 } 12347 else { 12348 isAllowed = false; 12349 } 12350 } 12351 else { 12352 isAllowed = false; 12353 } 12354 if (!isAllowed) { 12355 resizeMutation = null;
12356 util_1.disableCursor(); 12357 } 12358 else if (resizeMutation.isEmpty()) { 12359 // no change. (FYI, event dates might have zones) 12360 resizeMutation = null; 12361 } 12362 if (resizeMutation) { 12363 view.hideEventsWithId(seg.footprint.eventDef.id); 12364 view.renderEventResize(component.eventRangesToEventFootprints(mutatedEventInstanceGroup.sliceRenderRanges(component.dateProfile.renderUnzonedRange, calendar)), seg); 12365 } 12366 }, 12367 hitOut: function () { 12368 resizeMutation = null; 12369 }, 12370 hitDone: function () { 12371 view.unrenderEventResize(seg); 12372 view.showEventsWithId(seg.footprint.eventDef.id); 12373 util_1.enableCursor(); 12374 }, 12375 interactionEnd: function (ev) { 12376 if (isDragging) { 12377 _this.segResizeStop(seg, ev); 12378 } 12379 if (resizeMutation) { // valid date to resize to? 12380 // no need to re-show original, will rerender all anyways. esp important if eventRenderWait 12381 view.reportEventResize(eventInstance, resizeMutation, el, ev); 12382 } 12383 _this.dragListener = null; 12384 } 12385 }); 12386 return dragListener; 12387 }; 12388 // Called before event segment resizing starts 12389 EventResizing.prototype.segResizeStart = function (seg, ev) { 12390 this.isResizing = true; 12391 this.component.publiclyTrigger('eventResizeStart', { 12392 context: seg.el[0], 12393 args: [ 12394 seg.footprint.getEventLegacy(), 12395 ev, 12396 {}, 12397 this.view 12398 ] 12399 }); 12400 }; 12401 // Called after event segment resizing stops 12402 EventResizing.prototype.segResizeStop = function (seg, ev) { 12403 this.isResizing = false; 12404 this.component.publiclyTrigger('eventResizeStop', { 12405 context: seg.el[0], 12406 args: [ 12407 seg.footprint.getEventLegacy(), 12408 ev, 12409 {}, 12410 this.view 12411 ] 12412 }); 12413 }; 12414 // Returns new date-information for an event segment being resized from its start 12415 EventResizing.prototype.computeEventStartResizeMutation = function (startFootprint, endFootprint, origEventFootprint) { 12416 var origRange = origEventFootprint.componentFootprint.unzonedRange; 12417 var startDelta = this.component.diffDates(endFootprint.unzonedRange.getStart(), startFootprint.unzonedRange.getStart()); 12418 var dateMutation; 12419 var eventDefMutation; 12420 if (origRange.getStart().add(startDelta) < origRange.getEnd()) { 12421 dateMutation = new EventDefDateMutation_1.default(); 12422 dateMutation.setStartDelta(startDelta); 12423 eventDefMutation = new EventDefMutation_1.default(); 12424 eventDefMutation.setDateMutation(dateMutation); 12425 return eventDefMutation; 12426 } 12427 return false; 12428 }; 12429 // Returns new date-information for an event segment being resized from its end 12430 EventResizing.prototype.computeEventEndResizeMutation = function (startFootprint, endFootprint, origEventFootprint) { 12431 var origRange = origEventFootprint.componentFootprint.unzonedRange; 12432 var endDelta = this.component.diffDates(endFootprint.unzonedRange.getEnd(), startFootprint.unzonedRange.getEnd()); 12433 var dateMutation; 12434 var eventDefMutation; 12435 if (origRange.getEnd().add(endDelta) > origRange.getStart()) { 12436 dateMutation = new EventDefDateMutation_1.default(); 12437 dateMutation.setEndDelta(endDelta); 12438 eventDefMutation = new EventDefMutation_1.default(); 12439 eventDefMutation.setDateMutation(dateMutation); 12440 return eventDefMutation; 12441 } 12442 return false; 12443 }; 12444 return EventResizing; 12445}(Interaction_1.default)); 12446exports.default = EventResizing; 12447 12448 12449/***/ }), 12450/* 235 */ 12451/***/ (function(module, exports, __webpack_require__) { 12452 12453Object.defineProperty(exports, "__esModule", { value: true });
12454var tslib_1 = __webpack_require__(2); 12455var util_1 = __webpack_require__(4); 12456var EventDefMutation_1 = __webpack_require__(39); 12457var EventDefDateMutation_1 = __webpack_require__(40); 12458var DragListener_1 = __webpack_require__(59); 12459var HitDragListener_1 = __webpack_require__(17); 12460var MouseFollower_1 = __webpack_require__(226); 12461var Interaction_1 = __webpack_require__(14); 12462var EventDragging = /** @class */ (function (_super) { 12463 tslib_1.__extends(EventDragging, _super); 12464 /* 12465 component implements: 12466 - bindSegHandlerToEl 12467 - publiclyTrigger 12468 - diffDates 12469 - eventRangesToEventFootprints 12470 - isEventInstanceGroupAllowed 12471 */ 12472 function EventDragging(component, eventPointing) { 12473 var _this = _super.call(this, component) || this; 12474 _this.isDragging = false; 12475 _this.eventPointing = eventPointing; 12476 return _this; 12477 } 12478 EventDragging.prototype.end = function () { 12479 if (this.dragListener) { 12480 this.dragListener.endInteraction(); 12481 } 12482 }; 12483 EventDragging.prototype.getSelectionDelay = function () { 12484 var delay = this.opt('eventLongPressDelay'); 12485 if (delay == null) { 12486 delay = this.opt('longPressDelay'); // fallback 12487 } 12488 return delay; 12489 }; 12490 EventDragging.prototype.bindToEl = function (el) { 12491 var component = this.component; 12492 component.bindSegHandlerToEl(el, 'mousedown', this.handleMousedown.bind(this)); 12493 component.bindSegHandlerToEl(el, 'touchstart', this.handleTouchStart.bind(this)); 12494 }; 12495 EventDragging.prototype.handleMousedown = function (seg, ev) { 12496 if (!this.component.shouldIgnoreMouse() && 12497 this.component.canStartDrag(seg, ev)) { 12498 this.buildDragListener(seg).startInteraction(ev, { distance: 5 }); 12499 } 12500 }; 12501 EventDragging.prototype.handleTouchStart = function (seg, ev) { 12502 var component = this.component; 12503 var settings = { 12504 delay: this.view.isEventDefSelected(seg.footprint.eventDef) ? // already selected? 12505 0 : this.getSelectionDelay() 12506 }; 12507 if (component.canStartDrag(seg, ev)) { 12508 this.buildDragListener(seg).startInteraction(ev, settings); 12509 } 12510 else if (component.canStartSelection(seg, ev)) { 12511 this.buildSelectListener(seg).startInteraction(ev, settings); 12512 } 12513 }; 12514 // seg isn't draggable, but let's use a generic DragListener 12515 // simply for the delay, so it can be selected. 12516 // Has side effect of setting/unsetting `dragListener` 12517 EventDragging.prototype.buildSelectListener = function (seg) { 12518 var _this = this; 12519 var view = this.view; 12520 var eventDef = seg.footprint.eventDef; 12521 var eventInstance = seg.footprint.eventInstance; // null for inverse-background events 12522 if (this.dragListener) { 12523 return this.dragListener; 12524 } 12525 var dragListener = this.dragListener = new DragListener_1.default({ 12526 dragStart: function (ev) { 12527 if (dragListener.isTouch && 12528 !view.isEventDefSelected(eventDef) && 12529 eventInstance) { 12530 // if not previously selected, will fire after a delay. then, select the event 12531 view.selectEventInstance(eventInstance); 12532 } 12533 }, 12534 interactionEnd: function (ev) { 12535 _this.dragListener = null; 12536 } 12537 }); 12538 return dragListener; 12539 }; 12540 // Builds a listener that will track user-dragging on an event segment. 12541 // Generic enough to work with any type of Grid. 12542 // Has side effect of setting/unsetting `dragListener` 12543 EventDragging.prototype.buildDragListener = function (seg) { 12544 var _this = this; 12545 var component = this.component; 12546 var view = this.view; 12547 var calendar = view.calendar; 12548 var eventManager = calendar.eventManager; 12549 var el = seg.el; 12550 var eventDef = seg.footprint.eventDef; 12551 var eventInstance = seg.footprint.eventInstance; // null for inverse-background events 12552 var isDragging; 12553 var mouseFollower; // A clone of the original element that will move with the mouse 12554 var eventDefMutation; 12555 if (this.dragListener) { 12556 return this.dragListener; 12557 } 12558 // Tracks mouse movement over the *view's* coordinate map. Allows dragging and dropping between subcomponents 12559 // of the view. 12560 var dragListener = this.dragListener = new HitDragListener_1.default(view, { 12561 scroll: this.opt('dragScroll'), 12562 subjectEl: el, 12563 subjectCenter: true, 12564 interactionStart: function (ev) { 12565 seg.component = component; // for renderDrag 12566 isDragging = false; 12567 mouseFollower = new MouseFollower_1.default(seg.el, { 12568 additionalClass: 'fc-dragging', 12569 parentEl: view.el, 12570 opacity: dragListener.isTouch ? null : _this.opt('dragOpacity'), 12571 revertDuration: _this.opt('dragRevertDuration'), 12572 zIndex: 2 // one above the .fc-view 12573 }); 12574 mouseFollower.hide(); // don't show until we know this is a real drag 12575 mouseFollower.start(ev); 12576 }, 12577 dragStart: function (ev) { 12578 if (dragListener.isTouch && 12579 !view.isEventDefSelected(eventDef) && 12580 eventInstance) { 12581 // if not previously selected, will fire after a delay. then, select the event 12582 view.selectEventInstance(eventInstance); 12583 } 12584 isDragging = true; 12585 // ensure a mouseout on the manipulated event has been reported 12586 _this.eventPointing.handleMouseout(seg, ev); 12587 _this.segDragStart(seg, ev); 12588 view.hideEventsWithId(seg.footprint.eventDef.id); 12589 }, 12590 hitOver: function (hit, isOrig, origHit) { 12591 var isAllowed = true; 12592 var origFootprint; 12593 var footprint; 12594 var mutatedEventInstanceGroup; 12595 // starting hit could be forced (DayGrid.limit) 12596 if (seg.hit) { 12597 origHit = seg.hit; 12598 } 12599 // hit might not belong to this grid, so query origin grid 12600 origFootprint = origHit.component.getSafeHitFootprint(
12600origHit); 12601 footprint = hit.component.getSafeHitFootprint(hit); 12602 if (origFootprint && footprint) { 12603 eventDefMutation = _this.computeEventDropMutation(origFootprint, footprint, eventDef); 12604 if (eventDefMutation) { 12605 mutatedEventInstanceGroup = eventManager.buildMutatedEventInstanceGroup(eventDef.id, eventDefMutation); 12606 isAllowed = component.isEventInstanceGroupAllowed(mutatedEventInstanceGroup); 12607 } 12608 else { 12609 isAllowed = false; 12610 } 12611 } 12612 else { 12613 isAllowed = false; 12614 } 12615 if (!isAllowed) { 12616 eventDefMutation = null; 12617 util_1.disableCursor(); 12618 } 12619 // if a valid drop location, have the subclass render a visual indication 12620 if (eventDefMutation && 12621 view.renderDrag(// truthy if rendered something 12622 component.eventRangesToEventFootprints(mutatedEventInstanceGroup.sliceRenderRanges(component.dateProfile.renderUnzonedRange, calendar)), seg, dragListener.isTouch)) { 12623 mouseFollower.hide(); // if the subclass is already using a mock event "helper", hide our own 12624 } 12625 else { 12626 mouseFollower.show(); // otherwise, have the helper follow the mouse (no snapping) 12627 } 12628 if (isOrig) { 12629 // needs to have moved hits to be a valid drop 12630 eventDefMutation = null; 12631 } 12632 }, 12633 hitOut: function () { 12634 view.unrenderDrag(seg); // unrender whatever was done in renderDrag 12635 mouseFollower.show(); // show in case we are moving out of all hits 12636 eventDefMutation = null; 12637 }, 12638 hitDone: function () { 12639 util_1.enableCursor(); 12640 }, 12641 interactionEnd: function (ev) { 12642 delete seg.component; // prevent side effects 12643 // do revert animation if hasn't changed. calls a callback when finished (whether animation or not) 12644 mouseFollower.stop(!eventDefMutation, function () { 12645 if (isDragging) { 12646 view.unrenderDrag(seg); 12647 _this.segDragStop(seg, ev); 12648 } 12649 view.showEventsWithId(seg.footprint.eventDef.id); 12650 if (eventDefMutation) { 12651 // no need to re-show original, will rerender all anyways. esp important if eventRenderWait 12652 view.reportEventDrop(eventInstance, eventDefMutation, el, ev); 12653 } 12654 }); 12655 _this.dragListener = null; 12656 } 12657 }); 12658 return dragListener; 12659 }; 12660 // Called before event segment dragging starts 12661 EventDragging.prototype.segDragStart = function (seg, ev) { 12662 this.isDragging = true; 12663 this.component.publiclyTrigger('eventDragStart', { 12664 context: seg.el[0], 12665 args: [ 12666 seg.footprint.getEventLegacy(), 12667 ev, 12668 {}, 12669 this.view 12670 ] 12671 }); 12672 }; 12673 // Called after event segment dragging stops 12674 EventDragging.prototype.segDragStop = function (seg, ev) { 12675 this.isDragging = false; 12676 this.component.publiclyTrigger('eventDragStop', { 12677 context: seg.el[0], 12678 args: [ 12679 seg.footprint.getEventLegacy(), 12680 ev, 12681 {}, 12682 this.view 12683 ] 12684 }); 12685 }; 12686 // DOES NOT consider overlap/constraint 12687 EventDragging.prototype.computeEventDropMutation = function (startFootprint, endFootprint, eventDef) { 12688 var eventDefMutation = new EventDefMutation_1.default(); 12689 eventDefMutation.setDateMutation(this.computeEventDateMutation(startFootprint, endFootprint)); 12690 return eventDefMutation; 12691 }; 12692 EventDragging.prototype.computeEventDateMutation = function (startFootprint, endFootprint) { 12693 var date0 = startFootprint.unzonedRange.getStart(); 12694 var date1 = endFootprint.unzonedRange.getStart(); 12695 var clearEnd = false; 12696 var forceTimed = false; 12697 var forceAllDay = false; 12698 var dateDelta; 12699 var dateMutation; 12700 if (startFootprint.isAllDay !== endFootprint.isAllDay) { 12701 clearEnd = true; 12702 if (endFootprint.isAllDay) { 12703 forceAllDay = true; 12704 date0.stripTime(); 12705 } 12706 else { 12707 forceTimed = true; 12708 } 12709 } 12710 dateDelta = this.component.diffDates(date1, date0); 12711 dateMutation = new EventDefDateMutation_1.default(); 12712 dateMutation.clearEnd = clearEnd; 12713 dateMutation.forceTimed = forceTimed; 12714 dateMutation.forceAllDay = forceAllDay; 12715 dateMutation.setDateDelta(dateDelta); 12716 return dateMutation; 12717 }; 12718 return EventDragging; 12719}(Interaction_1.default)); 12720exports.default = EventDragging; 12721 12722 12723/***/ }), 12724/* 236 */ 12725/***/ (function(module, exports, __webpack_require__) { 12726 12727Object.defineProperty(exports, "__esModule", { value: true });
12728var tslib_1 = __webpack_require__(2); 12729var util_1 = __webpack_require__(4); 12730var HitDragListener_1 = __webpack_require__(17); 12731var ComponentFootprint_1 = __webpack_require__(12); 12732var UnzonedRange_1 = __webpack_require__(5); 12733var Interaction_1 = __webpack_require__(14); 12734var DateSelecting = /** @class */ (function (_super) { 12735 tslib_1.__extends(DateSelecting, _super); 12736 /* 12737 component must implement: 12738 - bindDateHandlerToEl 12739 - getSafeHitFootprint 12740 - renderHighlight 12741 - unrenderHighlight 12742 */ 12743 function DateSelecting(component) { 12744 var _this = _super.call(this, component) || this; 12745 _this.dragListener = _this.buildDragListener(); 12746 return _this; 12747 } 12748 DateSelecting.prototype.end = function () { 12749 this.dragListener.endInteraction(); 12750 }; 12751 DateSelecting.prototype.getDelay = function () { 12752 var delay = this.opt('selectLongPressDelay'); 12753 if (delay == null) { 12754 delay = this.opt('longPressDelay'); // fallback 12755 } 12756 return delay; 12757 }; 12758 DateSelecting.prototype.bindToEl = function (el) { 12759 var _this = this; 12760 var component = this.component; 12761 var dragListener = this.dragListener; 12762 component.bindDateHandlerToEl(el, 'mousedown', function (ev) { 12763 if (_this.opt('selectable') && !component.shouldIgnoreMouse()) { 12764 dragListener.startInteraction(ev, { 12765 distance: _this.opt('selectMinDistance') 12766 }); 12767 } 12768 }); 12769 component.bindDateHandlerToEl(el, 'touchstart', function (ev) { 12770 if (_this.opt('selectable') && !component.shouldIgnoreTouch()) { 12771 dragListener.startInteraction(ev, { 12772 delay: _this.getDelay() 12773 }); 12774 } 12775 }); 12776 util_1.preventSelection(el); 12777 }; 12778 // Creates a listener that tracks the user's drag across day elements, for day selecting. 12779 DateSelecting.prototype.buildDragListener = function () { 12780 var _this = this; 12781 var component = this.component; 12782 var selectionFootprint; // null if invalid selection 12783 var dragListener = new HitDragListener_1.default(component, { 12784 scroll: this.opt('dragScroll'), 12785 interactionStart: function () { 12786 selectionFootprint = null; 12787 }, 12788 dragStart: function (ev) { 12789 _this.view.unselect(ev); // since we could be rendering a new selection, we want to clear any old one 12790 }, 12791 hitOver: function (hit, isOrig, origHit) { 12792 var origHitFootprint; 12793 var hitFootprint; 12794 if (origHit) { // click needs to have started on a hit 12795 origHitFootprint = component.getSafeHitFootprint(origHit); 12796 hitFootprint = component.getSafeHitFootprint(hit); 12797 if (origHitFootprint && hitFootprint) { 12798 selectionFootprint = _this.computeSelection(origHitFootprint, hitFootprint); 12799 } 12800 else { 12801 selectionFootprint = null; 12802 } 12803 if (selectionFootprint) { 12804 component.renderSelectionFootprint(selectionFootprint); 12805 } 12806 else if (selectionFootprint === false) { 12807 util_1.disableCursor(); 12808 } 12809 } 12810 }, 12811 hitOut: function () { 12812 selectionFootprint = null; 12813 component.unrenderSelection(); 12814 }, 12815 hitDone: function () { 12816 util_1.enableCursor(); 12817 }, 12818 interactionEnd: function (ev, isCancelled) { 12819 if (!isCancelled && selectionFootprint) { 12820 // the selection will already have been rendered. just report it 12821 _this.view.reportSelection(selectionFootprint, ev); 12822 } 12823 } 12824 }); 12825 return dragListener; 12826 }; 12827 // Given the first and last date-spans of a selection, returns another date-span object. 12828 // Subclasses can override and provide additional data in the span object. Will be passed to render
12828SelectionFootprint(). 12829 // Will return false if the selection is invalid and this should be indicated to the user. 12830 // Will return null/undefined if a selection invalid but no error should be reported. 12831 DateSelecting.prototype.computeSelection = function (footprint0, footprint1) { 12832 var wholeFootprint = this.computeSelectionFootprint(footprint0, footprint1); 12833 if (wholeFootprint && !this.isSelectionFootprintAllowed(wholeFootprint)) { 12834 return false; 12835 } 12836 return wholeFootprint; 12837 }; 12838 // Given two spans, must return the combination of the two. 12839 // TODO: do this separation of concerns (combining VS validation) for event dnd/resize too. 12840 // Assumes both footprints are non-open-ended. 12841 DateSelecting.prototype.computeSelectionFootprint = function (footprint0, footprint1) { 12842 var ms = [ 12843 footprint0.unzonedRange.startMs, 12844 footprint0.unzonedRange.endMs, 12845 footprint1.unzonedRange.startMs, 12846 footprint1.unzonedRange.endMs 12847 ]; 12848 ms.sort(util_1.compareNumbers); 12849 return new ComponentFootprint_1.default(new UnzonedRange_1.default(ms[0], ms[3]), footprint0.isAllDay); 12850 }; 12851 DateSelecting.prototype.isSelectionFootprintAllowed = function (componentFootprint) { 12852 return this.component.dateProfile.validUnzonedRange.containsRange(componentFootprint.unzonedRange) && 12853 this.view.calendar.constraints.isSelectionFootprintAllowed(componentFootprint); 12854 }; 12855 return DateSelecting; 12856}(Interaction_1.default)); 12857exports.default = DateSelecting; 12858 12859 12860/***/ }), 12861/* 237 */ 12862/***/ (function(module, exports, __webpack_require__) { 12863 12864Object.defineProperty(exports, "__esModule", { value: true }); 12865var tslib_1 = __webpack_require__(2); 12866var HitDragListener_1 = __webpack_require__(17); 12867var Interaction_1 = __webpack_require__(14); 12868var DateClicking = /** @class */ (function (_super) { 12869 tslib_1.__extends(DateClicking, _super); 12870 /* 12871 component must implement: 12872 - bindDateHandlerToEl 12873 - getSafeHitFootprint 12874 - getHitEl 12875 */ 12876 function DateClicking(component) { 12877 var _this = _super.call(this, component) || this; 12878 _this.dragListener = _this.buildDragListener(); 12879 return _this; 12880 } 12881 DateClicking.prototype.end = function () { 12882 this.dragListener.endInteraction(); 12883 }; 12884 DateClicking.prototype.bindToEl = function (el) { 12885 var component = this.component; 12886 var dragListener = this.dragListener; 12887 component.bindDateHandlerToEl(el, 'mousedown', function (ev) { 12888 if (!component.shouldIgnoreMouse()) { 12889 dragListener.startInteraction(ev); 12890 } 12891 }); 12892 component.bindDateHandlerToEl(el, 'touchstart', function (ev) { 12893 if (!component.shouldIgnoreTouch()) { 12894 dragListener.startInteraction(ev); 12895 } 12896 }); 12897 }; 12898 // Creates a listener that tracks the user's drag across day elements, for day clicking. 12899 DateClicking.prototype.buildDragListener = function () { 12900 var _this = this; 12901 var component = this.component; 12902 var dayClickHit; // null if invalid dayClick 12903 var dragListener = new HitDragListener_1.default(component, { 12904 scroll: this.opt('dragScroll'), 12905 interactionStart: function () { 12906 dayClickHit = dragListener.origHit; 12907 }, 12908 hitOver: function (hit, isOrig, origHit) { 12909 // if user dragged to another cell at any point, it can no longer be a dayClick 12910 if (!isOrig) { 12911 dayClickHit = null; 12912 } 12913 }, 12914 hitOut: function () { 12915 dayClickHit = null; 12916 }, 12917 interactionEnd: function (ev, isCancelled) { 12918 var componentFootprint; 12919 if (!isCancelled && dayClickHit) { 12920 componentFootprint = component.getSafeHitFootprint(dayClickHit); 12921 if (componentFootprint) { 12922 _this.view.triggerDayClick(componentFootprint, component.getHitEl(dayClickHit), ev); 12923 } 12924 } 12925 } 12926 }); 12927 // because dragListener won't be called with any time delay, "dragging" will begin immediately, 12928 // which will kill any touchmoving/scrolling. Prevent this. 12929 dragListener.shouldCancelTouchScroll = false; 12930 dragListener.scrollAlwaysKills = true; 12931 return dragListener; 12932 }; 12933 return DateClicking; 12934}(Interaction_1.default)); 12935exports.default = DateClicking; 12936 12937 12938/***/ }), 12939/* 238 */ 12940/***/ (function(module, exports, __webpack_require__) { 12941 12942Object.defineProperty(exports, "__esModule", { value: true });
12943var tslib_1 = __webpack_require__(2); 12944var moment = __webpack_require__(0); 12945var $ = __webpack_require__(3); 12946var util_1 = __webpack_require__(4); 12947var Scroller_1 = __webpack_require__(41); 12948var View_1 = __webpack_require__(43); 12949var TimeGrid_1 = __webpack_require__(239); 12950var DayGrid_1 = __webpack_require__(66); 12951var AGENDA_ALL_DAY_EVENT_LIMIT = 5; 12952var agendaTimeGridMethods; 12953var agendaDayGridMethods; 12954/* An abstract class for all agenda-related views. Displays one more columns with time slots running vertically. 12955----------------------------------------------------------------------------------------------------------------------*/ 12956// Is a manager for the TimeGrid subcomponent and possibly the DayGrid subcomponent (if allDaySlot is on). 12957// Responsible for managing width/height. 12958var AgendaView = /** @class */ (function (_super) { 12959 tslib_1.__extends(AgendaView, _super); 12960 function AgendaView(calendar, viewSpec) { 12961 var _this = _super.call(this, calendar, viewSpec) || this; 12962 _this.usesMinMaxTime = true; // indicates that minTime/maxTime affects rendering 12963 _this.timeGrid = _this.instantiateTimeGrid(); 12964 _this.addChild(_this.timeGrid); 12965 if (_this.opt('allDaySlot')) { // should we display the "all-day" area? 12966 _this.dayGrid = _this.instantiateDayGrid(); // the all-day subcomponent of this view 12967 _this.addChild(_this.dayGrid); 12968 } 12969 _this.scroller = new Scroller_1.default({ 12970 overflowX: 'hidden', 12971 overflowY: 'auto' 12972 }); 12973 return _this; 12974 } 12975 // Instantiates the TimeGrid object this view needs. Draws from this.timeGridClass 12976 AgendaView.prototype.instantiateTimeGrid = function () { 12977 var timeGrid = new this.timeGridClass(this); 12978 util_1.copyOwnProps(agendaTimeGridMethods, timeGrid); 12979 return timeGrid; 12980 }; 12981 // Instantiates the DayGrid object this view might need. Draws from this.dayGridClass 12982 AgendaView.prototype.instantiateDayGrid = function () { 12983 var dayGrid = new this.dayGridClass(this); 12984 util_1.copyOwnProps(agendaDayGridMethods, dayGrid); 12985 return dayGrid; 12986 }; 12987 /* Rendering 12988 ------------------------------------------------------------------------------------------------------------------*/ 12989 AgendaView.prototype.renderSkeleton = function () { 12990 var timeGridWrapEl; 12991 var timeGridEl; 12992 this.el.addClass('fc-agenda-view').html(this.renderSkeletonHtml()); 12993 this.scroller.render(); 12994 timeGridWrapEl = this.scroller.el.addClass('fc-time-grid-container'); 12995 timeGridEl = $('<div class="fc-time-grid">').appendTo(timeGridWrapEl); 12996 this.el.find('.fc-body > tr > td').append(timeGridWrapEl); 12997 this.timeGrid.headContainerEl = this.el.find('.fc-head-container'); 12998 this.timeGrid.setElement(timeGridEl); 12999 if (this.dayGrid) { 13000 this.dayGrid.setElement(this.el.find('.fc-day-grid')); 13001 // have the day-grid extend it's coordinate area over the <hr> dividing the two grids 13002 this.dayGrid.bottomCoordPadding = this.dayGrid.el.next('hr').outerHeight(); 13003 } 13004 }; 13005 AgendaView.prototype.unrenderSkeleton = function () { 13006 this.timeGrid.removeElement(); 13007 if (this.dayGrid) { 13008 this.dayGrid.removeElement(); 13009 } 13010 this.scroller.destroy(); 13011 }; 13012 // Builds the HTML skeleton for the view. 13013 // The day-grid and time-grid components will render inside containers defined by this HTML. 13014 AgendaView.prototype.renderSkeletonHtml = function () { 13015 var theme = this.calendar.theme; 13016 return '' + 13017 '<table class="' + theme.getClass('tableGrid') + '">' + 13018 (this.opt('columnHeader') ? 13019 '<thead class="fc-head">' + 13020 '<tr>' + 13021 '<td class="fc-head-container ' + theme.getClass('widgetHeader') + '"> </td>' + 13022 '</tr>' + 13023 '</thead>' : 13024 '') + 13025 '<tbody class="fc-body">' + 13026 '<tr>' + 13027 '<td class="' + theme.getClass('widgetContent') + '">' + 13028 (this.dayGrid ? 13029 '<div class="fc-day-grid"></div>' + 13030 '<hr class="fc-divider ' + theme.getClass('widgetHeader') + '"></hr>' : 13031 '') + 13032 '</td>' + 13033 '</tr>' + 13034 '</tbody>' + 13035 '</table>'; 13036 }; 13037 // Generates an HTML attribute string for setting the width of the axis, if it is known 13038 AgendaView.prototype.axisStyleAttr = function () { 13039 if (this.axisWidth != null) { 13040 return 'style="width:' + this.axisWidth + 'px"'; 13041 } 13042 return ''; 13043 }; 13044 /* Now Indicator 13045 ------------------------------------------------------------------------------------------------------------------*/ 13046 AgendaView.prototype.getNowIndicatorUnit = function () { 13047 return this.timeGrid.getNowIndicatorUnit(); 13048 }; 13049 /* Dimensions 13050 ------------------------------------------------------------------------------------------------------------------*/ 13051 // Adjusts the vertical dimensions of the view to the specified values 13052 AgendaView.prototype.updateSize = function (totalHeight, isAuto, isResize) { 13053 var eventLimit; 13054 var scrollerHeight; 13055 var scrollbarWidths; 13056 _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize); 13057 // make all axis cells line up, and record the width so newly created axis cells will have it 13058 this.axisWidth = util_1.matchCellWidths(this.el.find('.fc-axis')); 13059 // hack to give the view some height prior to timeGrid's columns being rendered 13060 // TODO: separate setting height from scroller VS timeGrid. 13061 if (!this.timeGrid.colEls) { 13062 if (!isAuto) { 13063 scrollerHeight = this.computeScrollerHeight(totalHeight); 13064 this.scroller.setHeight(scrollerHeight); 13065 } 13066 return; 13067 } 13068 // set of fake row elements that must compensate when scroller has scrollbars 13069 var noScrollRowEls = this.el.find('.fc-row:not(.fc-scroller *)'); 13070 // reset all dimensions back to the original state 13071 this.timeGrid.bottomRuleEl.hide(); // .show() will be called later if this <hr> is necessary 13072 this.scroller.clear(); // sets height to 'auto' and clears overflow 13073 util_1.uncompensateScroll(noScrollRowEls); 13074 // limit number of events in the all-day area 13075 if (this.dayGrid) { 13076 this.dayGrid.removeSegPopover(); // kill the "more" popover if displayed 13077 eventLimit = this.opt('eventLimit'); 13078 if (eventLimit && typeof eventLimit !== 'number') { 13079 eventLimit = AGENDA_ALL_DAY_EVENT_LIMIT; // make sure "auto" goes to a real number 13080 } 13081 if (eventLimit) { 13082 this.dayGrid.limitRows(eventLimit); 13083 } 13084 } 13085 if (!isAuto) { // should we force dimensions of the scroll container? 13086 scrollerHeight = this.computeScrollerHeight(totalHeight); 13087 this.scroller.setHeight(scrollerHeight);
13088 scrollbarWidths = this.scroller.getScrollbarWidths(); 13089 if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars? 13090 // make the all-day and header rows lines up 13091 util_1.compensateScroll(noScrollRowEls, scrollbarWidths); 13092 // the scrollbar compensation might have changed text flow, which might affect height, so recalculate 13093 // and reapply the desired height to the scroller. 13094 scrollerHeight = this.computeScrollerHeight(totalHeight); 13095 this.scroller.setHeight(scrollerHeight); 13096 } 13097 // guarantees the same scrollbar widths 13098 this.scroller.lockOverflow(scrollbarWidths); 13099 // if there's any space below the slats, show the horizontal rule. 13100 // this won't cause any new overflow, because lockOverflow already called. 13101 if (this.timeGrid.getTotalSlatHeight() < scrollerHeight) { 13102 this.timeGrid.bottomRuleEl.show(); 13103 } 13104 } 13105 }; 13106 // given a desired total height of the view, returns what the height of the scroller should be 13107 AgendaView.prototype.computeScrollerHeight = function (totalHeight) { 13108 return totalHeight - 13109 util_1.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller 13110 }; 13111 /* Scroll 13112 ------------------------------------------------------------------------------------------------------------------*/ 13113 // Computes the initial pre-configured scroll state prior to allowing the user to change it 13114 AgendaView.prototype.computeInitialDateScroll = function () { 13115 var scrollTime = moment.duration(this.opt('scrollTime')); 13116 var top = this.timeGrid.computeTimeTop(scrollTime); 13117 // zoom can give weird floating-point values. rather scroll a little bit further 13118 top = Math.ceil(top); 13119 if (top) { 13120 top++; // to overcome top border that slots beyond the first have. looks better 13121 } 13122 return { top: top }; 13123 }; 13124 AgendaView.prototype.queryDateScroll = function () { 13125 return { top: this.scroller.getScrollTop() }; 13126 }; 13127 AgendaView.prototype.applyDateScroll = function (scroll) { 13128 if (scroll.top !== undefined) { 13129 this.scroller.setScrollTop(scroll.top); 13130 } 13131 }; 13132 /* Hit Areas 13133 ------------------------------------------------------------------------------------------------------------------*/ 13134 // forward all hit-related method calls to the grids (dayGrid might not be defined) 13135 AgendaView.prototype.getHitFootprint = function (hit) { 13136 // TODO: hit.component is set as a hack to identify where the hit came from 13137 return hit.component.getHitFootprint(hit); 13138 }; 13139 AgendaView.prototype.getHitEl = function (hit) { 13140 // TODO: hit.component is set as a hack to identify where the hit came from 13141 return hit.component.getHitEl(hit); 13142 }; 13143 /* Event Rendering 13144 ------------------------------------------------------------------------------------------------------------------*/ 13145 AgendaView.prototype.executeEventRender = function (eventsPayload) { 13146 var dayEventsPayload = {}; 13147 var timedEventsPayload = {}; 13148 var id; 13149 var eventInstanceGroup; 13150 // separate the events into all-day and timed 13151 for (id in eventsPayload) { 13152 eventInstanceGroup = eventsPayload[id]; 13153 if (eventInstanceGroup.getEventDef().isAllDay()) { 13154 dayEventsPayload[id] = eventInstanceGroup; 13155 } 13156 else { 13157 timedEventsPayload[id] = eventInstanceGroup; 13158 } 13159 } 13160 this.timeGrid.executeEventRender(timedEventsPayload); 13161 if (this.dayGrid) { 13162 this.dayGrid.executeEventRender(dayEventsPayload); 13163 } 13164 }; 13165 /* Dragging/Resizing Routing 13166 ------------------------------------------------------------------------------------------------------------------*/ 13167 // A returned value of `true` signals that a mock "helper" event has been rendered. 13168 AgendaView.prototype.renderDrag = function (eventFootprints, seg, isTouch) { 13169 var groups = groupEventFootprintsByAllDay(eventFootprints); 13170 var renderedHelper = false; 13171 renderedHelper = this.timeGrid.renderDrag(groups.timed, seg, isTouch); 13172 if (this.dayGrid) { 13173 renderedHelper = this.dayGrid.renderDrag(groups.allDay, seg, isTouch) || renderedHelper; 13174 } 13175 return renderedHelper; 13176 }; 13177 AgendaView.prototype.renderEventResize = function (eventFootprints, seg, isTouch) { 13178 var groups = groupEventFootprintsByAllDay(eventFootprints); 13179 this.timeGrid.renderEventResize(groups.timed, seg, isTouch); 13180 if (this.dayGrid) { 13181 this.dayGrid.renderEventResize(groups.allDay, seg, isTouch); 13182 } 13183 }; 13184 /* Selection 13185 ------------------------------------------------------------------------------------------------------------------*/ 13186 // Renders a visual indication of a selection 13187 AgendaView.prototype.renderSelectionFootprint = function (componentFootprint) { 13188 if (!componentFootprint.isAllDay) { 13189 this.timeGrid.renderSelectionFootprint(componentFootprint); 13190 } 13191 else if (this.dayGrid) { 13192 this.dayGrid.renderSelectionFootprint(componentFootprint); 13193 } 13194 }; 13195 return AgendaView; 13196}(View_1.default)); 13197exports.default = AgendaView; 13198AgendaView.prototype.timeGridClass = TimeGrid_1.default; 13199AgendaView.prototype.dayGridClass = DayGrid_1.default; 13200// Will customize the rendering behavior of the AgendaView's timeGrid 13201agendaTimeGridMethods = { 13202 // Generates the HTML that will go before the day-of week header cells 13203 renderHeadIntroHtml: function () { 13204 var view = this.view; 13205 var calendar = view.calendar; 13206 var weekStart = calendar.msToUtcMoment(this.dateProfile.renderUnzonedRange.startMs, true); 13207 var weekText; 13208 if (this.opt('weekNumbers')) { 13209 weekText = weekStart.format(this.opt('smallWeekFormat'));
13210 return '' + 13211 '<th class="fc-axis fc-week-number ' + calendar.theme.getClass('widgetHeader') + '" ' + view.axisStyleAttr() + '>' + 13212 view.buildGotoAnchorHtml(// aside from link, important for matchCellWidths 13213 { date: weekStart, type: 'week', forceOff: this.colCnt > 1 }, util_1.htmlEscape(weekText) // inner HTML 13214 ) + 13215 '</th>'; 13216 } 13217 else { 13218 return '<th class="fc-axis ' + calendar.theme.getClass('widgetHeader') + '" ' + view.axisStyleAttr() + '></th>'; 13219 } 13220 }, 13221 // Generates the HTML that goes before the bg of the TimeGrid slot area. Long vertical column. 13222 renderBgIntroHtml: function () { 13223 var view = this.view; 13224 return '<td class="fc-axis ' + view.calendar.theme.getClass('widgetContent') + '" ' + view.axisStyleAttr() + '></td>'; 13225 }, 13226 // Generates the HTML that goes before all other types of cells. 13227 // Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid. 13228 renderIntroHtml: function () { 13229 var view = this.view; 13230 return '<td class="fc-axis" ' + view.axisStyleAttr() + '></td>'; 13231 } 13232}; 13233// Will customize the rendering behavior of the AgendaView's dayGrid 13234agendaDayGridMethods = { 13235 // Generates the HTML that goes before the all-day cells 13236 renderBgIntroHtml: function () { 13237 var view = this.view; 13238 return '' + 13239 '<td class="fc-axis ' + view.calendar.theme.getClass('widgetContent') + '" ' + view.axisStyleAttr() + '>' + 13240 '<span>' + // needed for matchCellWidths 13241 view.getAllDayHtml() + 13242 '</span>' + 13243 '</td>'; 13244 }, 13245 // Generates the HTML that goes before all other types of cells. 13246 // Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid. 13247 renderIntroHtml: function () { 13248 var view = this.view; 13249 return '<td class="fc-axis" ' + view.axisStyleAttr() + '></td>'; 13250 } 13251}; 13252function groupEventFootprintsByAllDay(eventFootprints) { 13253 var allDay = []; 13254 var timed = []; 13255 var i; 13256 for (i = 0; i < eventFootprints.length; i++) { 13257 if (eventFootprints[i].componentFootprint.isAllDay) { 13258 allDay.push(eventFootprints[i]); 13259 } 13260 else { 13261 timed.push(eventFootprints[i]); 13262 } 13263 } 13264 return { allDay: allDay, timed: timed }; 13265} 13266 13267 13268/***/ }), 13269/* 239 */ 13270/***/ (function(module, exports, __webpack_require__) { 13271 13272Object.defineProperty(exports, "__esModule", { value: true }); 13273var tslib_1 = __webpack_require__(2); 13274var $ = __webpack_require__(3); 13275var moment = __webpack_require__(0); 13276var util_1 = __webpack_require__(4); 13277var InteractiveDateComponent_1 = __webpack_require__(42); 13278var BusinessHourRenderer_1 = __webpack_require__(61); 13279var StandardInteractionsMixin_1 = __webpack_require__(65); 13280var DayTableMixin_1 = __webpack_require__(60); 13281var CoordCache_1 = __webpack_require__(58); 13282var UnzonedRange_1 = __webpack_require__(5); 13283var ComponentFootprint_1 = __webpack_require__(12); 13284var TimeGridEventRenderer_1 = __webpack_require__(240); 13285var TimeGridHelperRenderer_1 = __webpack_require__(241); 13286var TimeGridFillRenderer_1 = __webpack_require__(242); 13287/* A component that renders one or more columns of vertical time slots 13288----------------------------------------------------------------------------------------------------------------------*/ 13289// We mixin DayTable, even though there is only a single row of days 13290// potential nice values for the slot-duration and interval-duration 13291// from largest to smallest 13292var AGENDA_STOCK_SUB_DURATIONS = [ 13293 { hours: 1 }, 13294 { minutes: 30 }, 13295 { minutes: 15 }, 13296 { seconds: 30 }, 13297 { seconds: 15 } 13298]; 13299var TimeGrid = /** @class */ (function (_super) { 13300 tslib_1.__extends(TimeGrid, _super); 13301 function TimeGrid(view) { 13302 var _this = _super.call(this, view) || this; 13303 _this.processOptions(); 13304 return _this; 13305 } 13306 // Slices up the given span (unzoned start/end with other misc data) into an array of segments 13307 TimeGrid.prototype.componentFootprintToSegs = function (componentFootprint) { 13308 var segs = this.sliceRangeByTimes(componentFootprint.unzonedRange); 13309 var i; 13310 for (i = 0; i < segs.length; i++) { 13311 if (this.isRTL) { 13312 segs[i].col = this.daysPerRow - 1 - segs[i].dayIndex; 13313 } 13314 else { 13315 segs[i].col = segs[i].dayIndex; 13316 } 13317 } 13318 return segs; 13319 }; 13320 /* Date Handling 13321 ------------------------------------------------------------------------------------------------------------------*/ 13322 TimeGrid.prototype.sliceRangeByTimes = function (unzonedRange) { 13323 var segs = []; 13324 var segRange; 13325 var dayIndex; 13326 for (dayIndex = 0; dayIndex < this.daysPerRow; dayIndex++) { 13327 segRange = unzonedRange.intersect(this.dayRanges[dayIndex]); 13328 if (segRange) { 13329 segs.push({ 13330 startMs: segRange.startMs, 13331 endMs: segRange.endMs, 13332 isStart: segRange.isStart, 13333 isEnd: segRange.isEnd, 13334 dayIndex: dayIndex 13335 }); 13336 } 13337 } 13338 return segs; 13339 }; 13340 /* Options 13341 ------------------------------------------------------------------------------------------------------------------*/ 13342 // Parses various options into properties of this object 13343 TimeGrid.prototype.processOptions = function () { 13344 var slotDuration = this.opt('slotDuration'); 13345 var snapDuration = this.opt('snapDuration'); 13346 var input; 13347 slotDuration = moment.duration(slotDuration); 13348 snapDuration = snapDuration ? moment.duration(snapDuration) : slotDuration; 13349 this.slotDuration = slotDuration; 13350 this.snapDuration = snapDuration; 13351 this.snapsPerSlot = slotDuration / snapDuration; // TODO: ensure an integer multiple? 13352 // might be an array value (for TimelineView). 13353 // if so, getting the most granular entry (the last one probably). 13354 input = this.opt('slotLabelFormat'); 13355 if ($.isArray(input)) {
13356 input = input[input.length - 1]; 13357 } 13358 this.labelFormat = input || 13359 this.opt('smallTimeFormat'); // the computed default 13360 input = this.opt('slotLabelInterval'); 13361 this.labelInterval = input ? 13362 moment.duration(input) : 13363 this.computeLabelInterval(slotDuration); 13364 }; 13365 // Computes an automatic value for slotLabelInterval 13366 TimeGrid.prototype.computeLabelInterval = function (slotDuration) { 13367 var i; 13368 var labelInterval; 13369 var slotsPerLabel; 13370 // find the smallest stock label interval that results in more than one slots-per-label 13371 for (i = AGENDA_STOCK_SUB_DURATIONS.length - 1; i >= 0; i--) { 13372 labelInterval = moment.duration(AGENDA_STOCK_SUB_DURATIONS[i]); 13373 slotsPerLabel = util_1.divideDurationByDuration(labelInterval, slotDuration); 13374 if (util_1.isInt(slotsPerLabel) && slotsPerLabel > 1) { 13375 return labelInterval; 13376 } 13377 } 13378 return moment.duration(slotDuration); // fall back. clone 13379 }; 13380 /* Date Rendering 13381 ------------------------------------------------------------------------------------------------------------------*/ 13382 TimeGrid.prototype.renderDates = function (dateProfile) { 13383 this.dateProfile = dateProfile; 13384 this.updateDayTable(); 13385 this.renderSlats(); 13386 this.renderColumns(); 13387 }; 13388 TimeGrid.prototype.unrenderDates = function () { 13389 // this.unrenderSlats(); // don't need this because repeated .html() calls clear 13390 this.unrenderColumns(); 13391 }; 13392 TimeGrid.prototype.renderSkeleton = function () { 13393 var theme = this.view.calendar.theme; 13394 this.el.html('<div class="fc-bg"></div>' + 13395 '<div class="fc-slats"></div>' + 13396 '<hr class="fc-divider ' + theme.getClass('widgetHeader') + '" style="display:none"></hr>'); 13397 this.bottomRuleEl = this.el.find('hr'); 13398 }; 13399 TimeGrid.prototype.renderSlats = function () { 13400 var theme = this.view.calendar.theme; 13401 this.slatContainerEl = this.el.find('> .fc-slats') 13402 .html(// avoids needing ::unrenderSlats() 13403 '<table class="' + theme.getClass('tableGrid') + '">' + 13404 this.renderSlatRowHtml() + 13405 '</table>');
13406 this.slatEls = this.slatContainerEl.find('tr'); 13407 this.slatCoordCache = new CoordCache_1.default({ 13408 els: this.slatEls, 13409 isVertical: true 13410 }); 13411 }; 13412 // Generates the HTML for the horizontal "slats" that run width-wise. Has a time axis on a side. Depends on RTL. 13413 TimeGrid.prototype.renderSlatRowHtml = function () { 13414 var view = this.view; 13415 var calendar = view.calendar; 13416 var theme = calendar.theme; 13417 var isRTL = this.isRTL; 13418 var dateProfile = this.dateProfile; 13419 var html = ''; 13420 var slotTime = moment.duration(+dateProfile.minTime); // wish there was .clone() for durations 13421 var slotIterator = moment.duration(0); 13422 var slotDate; // will be on the view's first day, but we only care about its time 13423 var isLabeled; 13424 var axisHtml; 13425 // Calculate the time for each slot 13426 while (slotTime < dateProfile.maxTime) { 13427 slotDate = calendar.msToUtcMoment(dateProfile.renderUnzonedRange.startMs).time(slotTime); 13428 isLabeled = util_1.isInt(util_1.divideDurationByDuration(slotIterator, this.labelInterval)); 13429 axisHtml = 13430 '<td class="fc-axis fc-time ' + theme.getClass('widgetContent') + '" ' + view.axisStyleAttr() + '>' + 13431 (isLabeled ? 13432 '<span>' + // for matchCellWidths 13433 util_1.htmlEscape(slotDate.format(this.labelFormat)) + 13434 '</span>' : 13435 '') + 13436 '</td>'; 13437 html += 13438 '<tr data-time="' + slotDate.format('HH:mm:ss') + '"' + 13439 (isLabeled ? '' : ' class="fc-minor"') + 13440 '>' + 13441 (!isRTL ? axisHtml : '') + 13442 '<td class="' + theme.getClass('widgetContent') + '"></td>' + 13443 (isRTL ? axisHtml : '') + 13444 '</tr>'; 13445 slotTime.add(this.slotDuration); 13446 slotIterator.add(this.slotDuration); 13447 } 13448 return html; 13449 }; 13450 TimeGrid.prototype.renderColumns = function () { 13451 var dateProfile = this.dateProfile; 13452 var theme = this.view.calendar.theme; 13453 this.dayRanges = this.dayDates.map(function (dayDate) { 13454 return new UnzonedRange_1.default(dayDate.clone().add(dateProfile.minTime), dayDate.clone().add(dateProfile.maxTime)); 13455 }); 13456 if (this.headContainerEl) { 13457 this.headContainerEl.html(this.renderHeadHtml()); 13458 } 13459 this.el.find('> .fc-bg').html('<table class="' + theme.getClass('tableGrid') + '">' + 13460 this.renderBgTrHtml(0) + // row=0 13461 '</table>'); 13462 this.colEls = this.el.find('.fc-day, .fc-disabled-day'); 13463 this.colCoordCache = new CoordCache_1.default({ 13464 els: this.colEls, 13465 isHorizontal: true 13466 }); 13467 this.renderContentSkeleton(); 13468 }; 13469 TimeGrid.prototype.unrenderColumns = function () { 13470 this.unrenderContentSkeleton(); 13471 }; 13472 /* Content Skeleton 13473 ------------------------------------------------------------------------------------------------------------------*/ 13474 // Renders the DOM that the view's content will live in 13475 TimeGrid.prototype.renderContentSkeleton = function () { 13476 var cellHtml = ''; 13477 var i; 13478 var skeletonEl; 13479 for (i = 0; i < this.colCnt; i++) { 13480 cellHtml += 13481 '<td>' + 13482 '<div class="fc-content-col">' + 13483 '<div class="fc-event-container fc-helper-container"></div>' + 13484 '<div class="fc-event-container"></div>' + 13485 '<div class="fc-highlight-container"></div>' + 13486 '<div class="fc-bgevent-container"></div>' + 13487 '<div class="fc-business-container"></div>' + 13488 '</div>' + 13489 '</td>'; 13490 } 13491 skeletonEl = this.contentSkeletonEl = $('<div class="fc-content-skeleton">' + 13492 '<table>' + 13493 '<tr>' + cellHtml + '</tr>' + 13494 '</table>' + 13495 '</div>'); 13496 this.colContainerEls = skeletonEl.find('.fc-content-col'); 13497 this.helperContainerEls = skeletonEl.find('.fc-helper-container'); 13498 this.fgContainerEls = skeletonEl.find('.fc-event-container:not(.fc-helper-container)'); 13499 this.bgContainerEls = skeletonEl.find('.fc-bgevent-container'); 13500 this.highlightContainerEls = skeletonEl.find('.fc-highlight-container'); 13501 this.businessContainerEls = skeletonEl.find('.fc-business-container'); 13502 this.bookendCells(skeletonEl.find('tr')); // TODO: do this on string level 13503 this.el.append(skeletonEl); 13504 }; 13505 TimeGrid.prototype.unrenderContentSkeleton = function () { 13506 if (this.contentSkeletonEl) { // defensive :( 13507 this.contentSkeletonEl.remove(); 13508 this.contentSkeletonEl = null; 13509 this.colContainerEls = null; 13510 this.helperContainerEls = null; 13511 this.fgContainerEls = null; 13512 this.bgContainerEls = null; 13513 this.highlightContainerEls = null; 13514 this.businessContainerEls = null; 13515 } 13516 }; 13517 // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's col 13518 TimeGrid.prototype.groupSegsByCol = function (segs) { 13519 var segsByCol = []; 13520 var i; 13521 for (i = 0; i < this.colCnt; i++) { 13522 segsByCol.push([]); 13523 } 13524 for (i = 0; i < segs.length; i++) { 13525 segsByCol[segs[i].col].push(segs[i]); 13526 } 13527 return segsByCol; 13528 }; 13529 // Given segments grouped by column, insert the segments' elements into a parallel array of container 13530 // elements, each living within a column. 13531 TimeGrid.prototype.attachSegsByCol = function (segsByCol, containerEls) { 13532 var col; 13533 var segs; 13534 var i; 13535 for (col = 0; col < this.colCnt; col++) { // iterate each column grouping 13536 segs = segsByCol[col]; 13537 for (i = 0; i < segs.length; i++) { 13538 containerEls.eq(col).append(segs[i].el); 13539 } 13540 } 13541 }; 13542 /* Now Indicator 13543 ------------------------------------------------------------------------------------------------------------------*/ 13544 TimeGrid.prototype.getNowIndicatorUnit = function () { 13545 return 'minute'; // will refresh on the minute 13546 }; 13547 TimeGrid.prototype.renderNowIndicator = function (date) { 13548 // HACK: if date columns not ready for some reason (scheduler) 13549 if (!this.colContainerEls) { 13550 return; 13551 } 13552 // seg system might be overkill, but it handles scenario where line needs to be rendered 13553 // more than once because of columns with the same date (resources columns for example) 13554 var segs = this.componentFootprintToSegs(new ComponentFootprint_1.default(new UnzonedRange_1.default(date, date.valueOf() + 1), // protect against null range 13555 false // all-day 13556 )); 13557 var top = this.computeDateTop(date, date); 13558 var nodes = []; 13559 var i; 13560 // render lines within the columns 13561 for (i = 0; i < segs.length; i++) { 13562 nodes.push($('<div class="fc-now-indicator fc-now-indicator-line"></div>') 13563 .css('top', top) 13564 .appendTo(this.colContainerEls.eq(segs[i].col))[0]); 13565 } 13566 // render an arrow over the axis 13567 if (segs.length > 0) { // is the current time in view? 13568 nodes.push($('<div class="fc-now-indicator fc-now-indicator-arrow"></div>') 13569 .css('top', top) 13570 .appendTo(this.el.find('.fc-content-skeleton'))[0]); 13571 } 13572 this.nowIndicatorEls = $(nodes); 13573 }; 13574 TimeGrid.prototype.unrenderNowIndicator = function () { 13575 if (this.nowIndicatorEls) { 13576 this.nowIndicatorEls.remove(); 13577 this.nowIndicatorEls = null; 13578 } 13579 }; 13580 /* Coordinates 13581 ------------------------------------------------------------------------------------------------------------------*/ 13582 TimeGrid.prototype.updateSize = function (totalHeight, isAuto, isResize) { 13583 _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize);
13584 this.slatCoordCache.build(); 13585 if (isResize) { 13586 this.updateSegVerticals([].concat(this.eventRenderer.getSegs(), this.businessSegs || [])); 13587 } 13588 }; 13589 TimeGrid.prototype.getTotalSlatHeight = function () { 13590 return this.slatContainerEl.outerHeight(); 13591 }; 13592 // Computes the top coordinate, relative to the bounds of the grid, of the given date. 13593 // `ms` can be a millisecond UTC time OR a UTC moment. 13594 // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight. 13595 TimeGrid.prototype.computeDateTop = function (ms, startOfDayDate) { 13596 return this.computeTimeTop(moment.duration(ms - startOfDayDate.clone().stripTime())); 13597 }; 13598 // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration). 13599 TimeGrid.prototype.computeTimeTop = function (time) { 13600 var len = this.slatEls.length; 13601 var dateProfile = this.dateProfile; 13602 var slatCoverage = (time - dateProfile.minTime) / this.slotDuration; // floating-point value of # of slots covered 13603 var slatIndex; 13604 var slatRemainder; 13605 // compute a floating-point number for how many slats should be progressed through. 13606 // from 0 to number of slats (inclusive) 13607 // constrained because minTime/maxTime might be customized. 13608 slatCoverage = Math.max(0, slatCoverage); 13609 slatCoverage = Math.min(len, slatCoverage); 13610 // an integer index of the furthest whole slat 13611 // from 0 to number slats (*exclusive*, so len-1) 13612 slatIndex = Math.floor(slatCoverage); 13613 slatIndex = Math.min(slatIndex, len - 1); 13614 // how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition. 13615 // could be 1.0 if slatCoverage is covering *all* the slots 13616 slatRemainder = slatCoverage - slatIndex;
13617 return this.slatCoordCache.getTopPosition(slatIndex) + 13618 this.slatCoordCache.getHeight(slatIndex) * slatRemainder; 13619 }; 13620 // Refreshes the CSS top/bottom coordinates for each segment element. 13621 // Works when called after initial render, after a window resize/zoom for example. 13622 TimeGrid.prototype.updateSegVerticals = function (segs) { 13623 this.computeSegVerticals(segs); 13624 this.assignSegVerticals(segs); 13625 }; 13626 // For each segment in an array, computes and assigns its top and bottom properties 13627 TimeGrid.prototype.computeSegVerticals = function (segs) { 13628 var eventMinHeight = this.opt('agendaEventMinHeight'); 13629 var i; 13630 var seg; 13631 var dayDate; 13632 for (i = 0; i < segs.length; i++) { 13633 seg = segs[i]; 13634 dayDate = this.dayDates[seg.dayIndex]; 13635 seg.top = this.computeDateTop(seg.startMs, dayDate); 13636 seg.bottom = Math.max(seg.top + eventMinHeight, this.computeDateTop(seg.endMs, dayDate)); 13637 } 13638 }; 13639 // Given segments that already have their top/bottom properties computed, applies those values to 13640 // the segments' elements. 13641 TimeGrid.prototype.assignSegVerticals = function (segs) { 13642 var i; 13643 var seg; 13644 for (i = 0; i < segs.length; i++) { 13645 seg = segs[i]; 13646 seg.el.css(this.generateSegVerticalCss(seg)); 13647 } 13648 }; 13649 // Generates an object with CSS properties for the top/bottom coordinates of a segment element 13650 TimeGrid.prototype.generateSegVerticalCss = function (seg) { 13651 return { 13652 top: seg.top, 13653 bottom: -seg.bottom // flipped because needs to be space beyond bottom edge of event container 13654 }; 13655 }; 13656 /* Hit System 13657 ------------------------------------------------------------------------------------------------------------------*/ 13658 TimeGrid.prototype.prepareHits = function () { 13659 this.colCoordCache.build(); 13660 this.slatCoordCache.build(); 13661 }; 13662 TimeGrid.prototype.releaseHits = function () { 13663 this.colCoordCache.clear(); 13664 // NOTE: don't clear slatCoordCache because we rely on it for computeTimeTop 13665 }; 13666 TimeGrid.prototype.queryHit = function (leftOffset, topOffset) { 13667 var snapsPerSlot = this.snapsPerSlot; 13668 var colCoordCache = this.colCoordCache; 13669 var slatCoordCache = this.slatCoordCache; 13670 if (colCoordCache.isLeftInBounds(leftOffset) && slatCoordCache.isTopInBounds(topOffset)) { 13671 var colIndex = colCoordCache.getHorizontalIndex(leftOffset); 13672 var slatIndex = slatCoordCache.getVerticalIndex(topOffset); 13673 if (colIndex != null && slatIndex != null) { 13674 var slatTop = slatCoordCache.getTopOffset(slatIndex); 13675 var slatHeight = slatCoordCache.getHeight(slatIndex); 13676 var partial = (topOffset - slatTop) / slatHeight; // floating point number between 0 and 1 13677 var localSnapIndex = Math.floor(partial * snapsPerSlot); // the snap # relative to start of slat 13678 var snapIndex = slatIndex * snapsPerSlot + localSnapIndex; 13679 var snapTop = slatTop + (localSnapIndex / snapsPerSlot) * slatHeight; 13680 var snapBottom = slatTop + ((localSnapIndex + 1) / snapsPerSlot) * slatHeight; 13681 return { 13682 col: colIndex, 13683 snap: snapIndex, 13684 component: this, 13685 left: colCoordCache.getLeftOffset(colIndex), 13686 right: colCoordCache.getRightOffset(colIndex), 13687 top: snapTop, 13688 bottom: snapBottom 13689 }; 13690 } 13691 } 13692 }; 13693 TimeGrid.prototype.getHitFootprint = function (hit) { 13694 var start = this.getCellDate(0, hit.col); // row=0 13695 var time = this.computeSnapTime(hit.snap); // pass in the snap-index 13696 var end; 13697 start.time(time); 13698 end = start.clone().add(this.snapDuration); 13699 return new ComponentFootprint_1.default(new UnzonedRange_1.default(start, end), false // all-day? 13700 ); 13701 }; 13702 // Given a row number of the grid, representing a "snap", returns a time (Duration) from its start-of-day 13703 TimeGrid.prototype.computeSnapTime = function (snapIndex) { 13704 return moment.duration(this.dateProfile.minTime + this.snapDuration * snapIndex); 13705 }; 13706 TimeGrid.prototype.getHitEl = function (hit) { 13707 return this.colEls.eq(hit.col); 13708 }; 13709 /* Event Drag Visualization 13710 ------------------------------------------------------------------------------------------------------------------*/ 13711 // Renders a visual indication of an event being dragged over the specified date(s). 13712 // A returned value of `true` signals that a mock "helper" event has been rendered. 13713 TimeGrid.prototype.renderDrag = function (eventFootprints, seg, isTouch) { 13714 var i; 13715 if (seg) { // if there is event information for this drag, render a helper event 13716 if (eventFootprints.length) { 13717 this.helperRenderer.renderEventDraggingFootprints(eventFootprints, seg, isTouch); 13718 // signal that a helper has been rendered 13719 return true; 13720 } 13721 } 13722 else { // otherwise, just render a highlight 13723 for (i = 0; i < eventFootprints.length; i++) { 13724 this.renderHighlight(eventFootprints[i].componentFootprint); 13725 } 13726 } 13727 }; 13728 // Unrenders any visual indication of an event being dragged 13729 TimeGrid.prototype.unrenderDrag = function () { 13730 this.unrenderHighlight(); 13731 this.helperRenderer.unrender(); 13732 }; 13733 /* Event Resize Visualization 13734 ------------------------------------------------------------------------------------------------------------------*/ 13735 // Renders a visual indication of an event being resized 13736 TimeGrid.prototype.renderEventResize = function (eventFootprints, seg, isTouch) { 13737 this.helperRenderer.renderEventResizingFootprints(eventFootprints, seg, isTouch); 13738 }; 13739 // Unrenders any visual indication of an event being resized 13740 TimeGrid.prototype.unrenderEventResize = function () { 13741 this.helperRenderer.unrender(); 13742 }; 13743 /* Selection 13744 ------------------------------------------------------------------------------------------------------------------*/ 13745 // Renders a visual indication of a selection. Overrides the default, which was to simply render a highlight. 13746 TimeGrid.prototype.renderSelectionFootprint = function (componentFootprint) { 13747 if (this.opt('selectHelper')) { // this setting signals that a mock helper event should be rendered 13748 this.helperRenderer.renderComponentFootprint(componentFootprint); 13749 } 13750 else { 13751 this.renderHighlight(componentFootprint); 13752 } 13753 }; 13754 // Unrenders any visual indication of a selection 13755 TimeGrid.prototype.unrenderSelection = function () { 13756 this.helperRenderer.unrender(); 13757 this.unrenderHighlight(); 13758 }; 13759 return TimeGrid; 13760}(InteractiveDateComponent_1.default)); 13761exports.default = TimeGrid; 13762TimeGrid.prototype.eventRendererClass = TimeGridEventRenderer_1.default; 13763TimeGrid.prototype.businessHourRendererClass = BusinessHourRenderer_1.default; 13764TimeGrid.prototype.helperRendererClass = TimeGridHelperRenderer_1.default; 13765TimeGrid.prototype.fillRendererClass = TimeGridFillRenderer_1.default; 13766StandardInteractionsMixin_1.default.mixInto(TimeGrid); 13767DayTableMixin_1.default.mixInto(TimeGrid); 13768 13769 13770/***/ }), 13771/* 240 */ 13772/***/ (function(module, exports, __webpack_require__) { 13773 13774Object.defineProperty(exports, "__esModule", { value: true });
13775var tslib_1 = __webpack_require__(2); 13776var util_1 = __webpack_require__(4); 13777var EventRenderer_1 = __webpack_require__(44); 13778/* 13779Only handles foreground segs. 13780Does not own rendering. Use for low-level util methods by TimeGrid. 13781*/ 13782var TimeGridEventRenderer = /** @class */ (function (_super) { 13783 tslib_1.__extends(TimeGridEventRenderer, _super); 13784 function TimeGridEventRenderer(timeGrid, fillRenderer) { 13785 var _this = _super.call(this, timeGrid, fillRenderer) || this; 13786 _this.timeGrid = timeGrid; 13787 return _this; 13788 } 13789 TimeGridEventRenderer.prototype.renderFgSegs = function (segs) { 13790 this.renderFgSegsIntoContainers(segs, this.timeGrid.fgContainerEls); 13791 }; 13792 // Given an array of foreground segments, render a DOM element for each, computes position, 13793 // and attaches to the column inner-container elements. 13794 TimeGridEventRenderer.prototype.renderFgSegsIntoContainers = function (segs, containerEls) { 13795 var segsByCol; 13796 var col; 13797 segsByCol = this.timeGrid.groupSegsByCol(segs); 13798 for (col = 0; col < this.timeGrid.colCnt; col++) { 13799 this.updateFgSegCoords(segsByCol[col]); 13800 } 13801 this.timeGrid.attachSegsByCol(segsByCol, containerEls); 13802 }; 13803 TimeGridEventRenderer.prototype.unrenderFgSegs = function () { 13804 if (this.fgSegs) { // hack 13805 this.fgSegs.forEach(function (seg) { 13806 seg.el.remove(); 13807 }); 13808 } 13809 }; 13810 // Computes a default event time formatting string if `timeFormat` is not explicitly defined 13811 TimeGridEventRenderer.prototype.computeEventTimeFormat = function () { 13812 return this.opt('noMeridiemTimeFormat'); // like "6:30" (no AM/PM) 13813 }; 13814 // Computes a default `displayEventEnd` value if one is not expliclty defined 13815 TimeGridEventRenderer.prototype.computeDisplayEventEnd = function () { 13816 return true; 13817 }; 13818 // Renders the HTML for a single event segment's default rendering 13819 TimeGridEventRenderer.prototype.fgSegHtml = function (seg, disableResizing) { 13820 var view = this.view; 13821 var calendar = view.calendar; 13822 var componentFootprint = seg.footprint.componentFootprint; 13823 var isAllDay = componentFootprint.isAllDay; 13824 var eventDef = seg.footprint.eventDef; 13825 var isDraggable = view.isEventDefDraggable(eventDef); 13826 var isResizableFromStart = !disableResizing && seg.isStart && view.isEventDefResizableFromStart(eventDef); 13827 var isResizableFromEnd = !disableResizing && seg.isEnd && view.isEventDefResizableFromEnd(eventDef); 13828 var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd); 13829 var skinCss = util_1.cssToStr(this.getSkinCss(eventDef)); 13830 var timeText; 13831 var fullTimeText; // more verbose time text. for the print stylesheet 13832 var startTimeText; // just the start time text 13833 classes.unshift('fc-time-grid-event', 'fc-v-event'); 13834 // if the event appears to span more than one day... 13835 if (view.isMultiDayRange(componentFootprint.unzonedRange)) { 13836 // Don't display time text on segments that run entirely through a day. 13837 // That would appear as midnight-midnight and would look dumb. 13838 // Otherwise, display the time text for the *segment's* times (like 6pm-midnight or midnight-10am) 13839 if (seg.isStart || seg.isEnd) { 13840 var zonedStart = calendar.msToMoment(seg.startMs); 13841 var zonedEnd = calendar.msToMoment(seg.endMs); 13842 timeText = this._getTimeText(zonedStart, zonedEnd, isAllDay); 13843 fullTimeText = this._getTimeText(zonedStart, zonedEnd, isAllDay, 'LT'); 13844 startTimeText = this._getTimeText(zonedStart, zonedEnd, isAllDay, null, false); // displayEnd=false 13845 } 13846 } 13847 else { 13848 // Display the normal time text for the *event's* times 13849 timeText = this.getTimeText(seg.footprint); 13850 fullTimeText = this.getTimeText(seg.footprint, 'LT'); 13851 startTimeText = this.getTimeText(seg.footprint, null, false); // displayEnd=false 13852 } 13853 return '<a class="' + classes.join(' ') + '"' + 13854 (eventDef.url ? 13855 ' href="' + util_1.htmlEscape(eventDef.url) + '"' : 13856 '') + 13857 (skinCss ? 13858 ' style="' + skinCss + '"' : 13859 '') + 13860 '>' + 13861 '<div class="fc-content">' + 13862 (timeText ? 13863 '<div class="fc-time"' + 13864 ' data-start="' + util_1.htmlEscape(startTimeText) + '"' + 13865 ' data-full="' + util_1.htmlEscape(fullTimeText) + '"' + 13866 '>' + 13867 '<span>' + util_1.htmlEscape(timeText) + '</span>' + 13868 '</div>' : 13869 '') + 13870 (eventDef.title ? 13871 '<div class="fc-title">' + 13872 util_1.htmlEscape(eventDef.title) + 13873 '</div>' : 13874 '') + 13875 '</div>' + 13876 '<div class="fc-bg"></div>' + 13877 /* TODO: write CSS for this 13878 (isResizableFromStart ? 13879 '<div class="fc-resizer fc-start-resizer"></div>' : 13880 '' 13881 ) + 13882 */ 13883 (isResizableFromEnd ? 13884 '<div class="fc-resizer fc-end-resizer"></div>' : 13885 '') + 13886 '</a>'; 13887 }; 13888 // Given segments that are assumed to all live in the *same column*, 13889 // compute their verical/horizontal coordinates and assign to their elements. 13890 TimeGridEventRenderer.prototype.updateFgSegCoords = function (segs) { 13891 this.timeGrid.computeSegVerticals(segs); // horizontals relies on this 13892 this.computeFgSegHorizontals(segs); // compute horizontal coordinates, z-index's, and reorder the array 13893 this.timeGrid.assignSegVerticals(segs); 13894 this.assignFgSegHorizontals(segs); 13895 }; 13896 // Given an array of segments that are all in the same column, set
13896s the backwardCoord and forwardCoord on each. 13897 // NOTE: Also reorders the given array by date! 13898 TimeGridEventRenderer.prototype.computeFgSegHorizontals = function (segs) { 13899 var levels; 13900 var level0; 13901 var i; 13902 this.sortEventSegs(segs); // order by certain criteria 13903 levels = buildSlotSegLevels(segs); 13904 computeForwardSlotSegs(levels); 13905 if ((level0 = levels[0])) { 13906 for (i = 0; i < level0.length; i++) { 13907 computeSlotSegPressures(level0[i]); 13908 } 13909 for (i = 0; i < level0.length; i++) { 13910 this.computeFgSegForwardBack(level0[i], 0, 0); 13911 } 13912 } 13913 }; 13914 // Calculate seg.forwardCoord and seg.backwardCoord for the segment, where both values range 13915 // from 0 to 1. If the calendar is left-to-right, the seg.backwardCoord maps to "left" and 13916 // seg.forwardCoord maps to "right" (via percentage). Vice-versa if the calendar is right-to-left. 13917 // 13918 // The segment might be part of a "series", which means consecutive segments with the same pressure 13919 // who's width is unknown until an edge has been hit. `seriesBackwardPressure` is the number of 13920 // segments behind this one in the current series, and `seriesBackwardCoord` is the starting 13921 // coordinate of the first segment in the series. 13922 TimeGridEventRenderer.prototype.computeFgSegForwardBack = function (seg, seriesBackwardPressure, seriesBackwardCoord) { 13923 var forwardSegs = seg.forwardSegs; 13924 var i; 13925 if (seg.forwardCoord === undefined) { // not already computed 13926 if (!forwardSegs.length) { 13927 // if there are no forward segments, this segment should butt up against the edge 13928 seg.forwardCoord = 1; 13929 } 13930 else { 13931 // sort highest pressure first 13932 this.sortForwardSegs(forwardSegs); 13933 // this segment's forwardCoord will be calculated from the backwardCoord of the 13934 // highest-pressure forward segment. 13935 this.computeFgSegForwardBack(forwardSegs[0], seriesBackwardPressure + 1, seriesBackwardCoord); 13936 seg.forwardCoord = forwardSegs[0].backwardCoord; 13937 } 13938 // calculate the backwardCoord from the forwardCoord. consider the series 13939 seg.backwardCoord = seg.forwardCoord - 13940 (seg.forwardCoord - seriesBackwardCoord) / // available width for series 13941 (seriesBackwardPressure + 1); // # of segments in the series 13942 // use this segment's coordinates to computed the coordinates of the less-pressurized 13943 // forward segments 13944 for (i = 0; i < forwardSegs.length; i++) { 13945 this.computeFgSegForwardBack(forwardSegs[i], 0, seg.forwardCoord); 13946 } 13947 } 13948 }; 13949 TimeGridEventRenderer.prototype.sortForwardSegs = function (forwardSegs) { 13950 forwardSegs.sort(util_1.proxy(this, 'compareForwardSegs')); 13951 }; 13952 // A cmp function for determining which forward segment to rely on more when computing coordinates. 13953 TimeGridEventRenderer.prototype.compareForwardSegs = function (seg1, seg2) { 13954 // put higher-pressure first 13955 return seg2.forwardPressure - seg1.forwardPressure || 13956 // put segments that are closer to initial edge first (and favor ones with no coords yet) 13957 (seg1.backwardCoord || 0) - (seg2.backwardCoord || 0) || 13958 // do normal sorting... 13959 this.compareEventSegs(seg1, seg2); 13960 }; 13961 // Given foreground event segments that have already had their position coordinates computed, 13962 // assigns position-related CSS values to their elements. 13963 TimeGridEventRenderer.prototype.assignFgSegHorizontals = function (segs) { 13964 var i; 13965 var seg; 13966 for (i = 0; i < segs.length; i++) { 13967 seg = segs[i]; 13968 seg.el.css(this.generateFgSegHorizontalCss(seg)); 13969 // if the event is short that the title will be cut off, 13970 // attach a className that condenses the title into the time area. 13971 if (seg.footprint.eventDef.title && seg.bottom - seg.top < 30) { 13972 seg.el.addClass('fc-short'); // TODO: "condensed" is a better name 13973 } 13974 } 13975 }; 13976 // Generates an object with CSS properties/values that should be applied to an event segment element. 13977 // Contains important positioning-related properties that should be applied to any event element, customized or not. 13978 TimeGridEventRenderer.prototype.generateFgSegHorizontalCss = function (seg) { 13979 var shouldOverlap = this.opt('slotEventOverlap'); 13980 var backwardCoord = seg.backwardCoord; // the left side if LTR. the right side if RTL. floating-point 13981 var forwardCoord = seg.forwardCoord; // the right side if LTR. the left side if RTL. floating-point 13982 var props = this.timeGrid.generateSegVerticalCss(seg); // get top/bottom first 13983 var isRTL = this.timeGrid.isRTL; 13984 var left; // amount of space from left edge, a fraction of the total width 13985 var right; // amount of space from right edge, a fraction of the total width 13986 if (shouldOverlap) { 13987 // double the width, but don't go beyond the maximum forward coordinate (1.0) 13988 forwardCoord = Math.min(1, backwardCoord + (forwardCoord - backwardCoord) * 2); 13989 } 13990 if (isRTL) { 13991 left = 1 - forwardCoord; 13992 right = backwardCoord; 13993 } 13994 else { 13995 left = backwardCoord; 13996 right = 1 - forwardCoord; 13997 } 13998 props.zIndex = seg.level + 1; // convert from 0-base to 1-based 13999 props.left = left * 100 + '%'; 14000 props.right = right * 100 + '%'; 14001 if (shouldOverlap && seg.forwardPressure) { 14002 // add padding to the edge so that forward stacked events don't cover the resizer's icon 14003 props[isRTL ? 'marginLeft' : 'marginRight'] = 10 * 2; // 10 is a guesstimate of the icon's width 14004 } 14005 return props; 14006 }; 14007 return TimeGridEventRenderer; 14008}(EventRenderer_1.default)); 14009exports.default = TimeGridEventRenderer; 14010// Builds an array of segments "levels". The first level will be the leftmost tier of segments if the calendar is 14011// left-to-right, or the rightmost if the calendar is right-to-left. Assumes the segments are already ordered by date. 14012function buildSlotSegLevels(segs) { 14013 var levels = []; 14014 var i; 14015 var seg; 14016 var j; 14017 for (i = 0; i < segs.length; i++) { 14018 seg = segs[i]; 14019 // go through all the levels and stop on the first level where there are no collisions 14020 for (j = 0; j < levels.length; j++) { 14021 if (!computeSlotSegCollisions(seg, levels[j]).length) { 14022 break; 14023 } 14024 } 14025 seg.level = j; 14026 (levels[j] || (levels[j] = [])).push(seg); 14027 } 14028 return levels; 14029} 14030// For every segment, figure out the other segments that are in subsequent 14031// levels that also occupy the same vertical space. Accumulate in seg.forwardSegs 14032function computeForwardSlotSegs(levels) { 14033 var i; 14034 var level; 14035 var j; 14036 var seg; 14037 var k; 14038 for (i = 0; i < levels.length; i++) { 14039 level = levels[i]; 14040 for (j = 0; j < level.length; j++) { 14041 seg = level[j]; 14042 seg.forwardSegs = []; 14043 for (k = i + 1; k < levels.length; k++) { 14044 computeSlotSegCollisions(seg, levels[k], seg.forwardSegs); 14045 } 14046 } 14047 } 14048} 14049// Figure out which path forward (via seg.forwardSegs) results in the longest path until
14050// the furthest edge is reached. The number of segments in this path will be seg.forwardPressure 14051function computeSlotSegPressures(seg) { 14052 var forwardSegs = seg.forwardSegs; 14053 var forwardPressure = 0; 14054 var i; 14055 var forwardSeg; 14056 if (seg.forwardPressure === undefined) { // not already computed 14057 for (i = 0; i < forwardSegs.length; i++) { 14058 forwardSeg = forwardSegs[i]; 14059 // figure out the child's maximum forward path 14060 computeSlotSegPressures(forwardSeg); 14061 // either use the existing maximum, or use the child's forward pressure 14062 // plus one (for the forwardSeg itself) 14063 forwardPressure = Math.max(forwardPressure, 1 + forwardSeg.forwardPressure); 14064 } 14065 seg.forwardPressure = forwardPressure; 14066 } 14067} 14068// Find all the segments in `otherSegs` that vertically collide with `seg`. 14069// Append into an optionally-supplied `results` array and return. 14070function computeSlotSegCollisions(seg, otherSegs, results) { 14071 if (results === void 0) { results = []; } 14072 for (var i = 0; i < otherSegs.length; i++) { 14073 if (isSlotSegCollision(seg, otherSegs[i])) { 14074 results.push(otherSegs[i]); 14075 } 14076 } 14077 return results; 14078} 14079// Do these segments occupy the same vertical space? 14080function isSlotSegCollision(seg1, seg2) { 14081 return seg1.bottom > seg2.top && seg1.top < seg2.bottom; 14082} 14083 14084 14085/***/ }), 14086/* 241 */ 14087/***/ (function(module, exports, __webpack_require__) { 14088 14089Object.defineProperty(exports, "__esModule", { value: true }); 14090var tslib_1 = __webpack_require__(2); 14091var $ = __webpack_require__(3); 14092var HelperRenderer_1 = __webpack_require__(63); 14093var TimeGridHelperRenderer = /** @class */ (function (_super) { 14094 tslib_1.__extends(TimeGridHelperRenderer, _super); 14095 function TimeGridHelperRenderer() { 14096 return _super !== null && _super.apply(this, arguments) || this; 14097 } 14098 TimeGridHelperRenderer.prototype.renderSegs = function (segs, sourceSeg) { 14099 var helperNodes = []; 14100 var i; 14101 var seg; 14102 var sourceEl; 14103 // TODO: not good to call eventRenderer this way 14104 this.eventRenderer.renderFgSegsIntoContainers(segs, this.component.helperContainerEls); 14105 // Try to make the segment that is in the same row as sourceSeg look the same 14106 for (i = 0; i < segs.length; i++) { 14107 seg = segs[i]; 14108 if (sourceSeg && sourceSeg.col === seg.col) { 14109 sourceEl = sourceSeg.el; 14110 seg.el.css({ 14111 left: sourceEl.css('left'), 14112 right: sourceEl.css('right'), 14113 'margin-left': sourceEl.css('margin-left'), 14114 'margin-right': sourceEl.css('margin-right') 14115 }); 14116 } 14117 helperNodes.push(seg.el[0]); 14118 } 14119 return $(helperNodes); // must return the elements rendered 14120 }; 14121 return TimeGridHelperRenderer; 14122}(HelperRenderer_1.default)); 14123exports.default = TimeGridHelperRenderer; 14124 14125 14126/***/ }), 14127/* 242 */ 14128/***/ (function(module, exports, __webpack_require__) { 14129 14130Object.defineProperty(exports, "__esModule", { value: true }); 14131var tslib_1 = __webpack_require__(2); 14132var FillRenderer_1 = __webpack_require__(62); 14133var TimeGridFillRenderer = /** @class */ (function (_super) { 14134 tslib_1.__extends(TimeGridFillRenderer, _super); 14135 function TimeGridFillRenderer() { 14136 return _super !== null && _super.apply(this, arguments) || this; 14137 } 14138 TimeGridFillRenderer.prototype.attachSegEls = function (type, segs) { 14139 var timeGrid = this.component; 14140 var containerEls; 14141 // TODO: more efficient lookup 14142 if (type === 'bgEvent') { 14143 containerEls = timeGrid.bgContainerEls; 14144 } 14145 else if (type === 'businessHours') { 14146 containerEls = timeGrid.businessContainerEls; 14147 } 14148 else if (type === 'highlight') { 14149 containerEls = timeGrid.highlightContainerEls; 14150 } 14151 timeGrid.updateSegVerticals(segs); 14152 timeGrid.attachSegsByCol(timeGrid.groupSegsByCol(segs), containerEls); 14153 return segs.map(function (seg) { 14154 return seg.el[0]; 14155 }); 14156 }; 14157 return TimeGridFillRenderer; 14158}(FillRenderer_1.default)); 14159exports.default = TimeGridFillRenderer; 14160 14161 14162/***/ }), 14163/* 243 */ 14164/***/ (function(module, exports, __webpack_require__) { 14165 14166Object.defineProperty(exports, "__esModule", { value: true });
14167var tslib_1 = __webpack_require__(2); 14168var $ = __webpack_require__(3); 14169var util_1 = __webpack_require__(4); 14170var EventRenderer_1 = __webpack_require__(44); 14171/* Event-rendering methods for the DayGrid class 14172----------------------------------------------------------------------------------------------------------------------*/ 14173var DayGridEventRenderer = /** @class */ (function (_super) { 14174 tslib_1.__extends(DayGridEventRenderer, _super); 14175 function DayGridEventRenderer(dayGrid, fillRenderer) { 14176 var _this = _super.call(this, dayGrid, fillRenderer) || this; 14177 _this.dayGrid = dayGrid; 14178 return _this; 14179 } 14180 DayGridEventRenderer.prototype.renderBgRanges = function (eventRanges) { 14181 // don't render timed background events 14182 eventRanges = $.grep(eventRanges, function (eventRange) { 14183 return eventRange.eventDef.isAllDay(); 14184 }); 14185 _super.prototype.renderBgRanges.call(this, eventRanges); 14186 }; 14187 // Renders the given foreground event segments onto the grid 14188 DayGridEventRenderer.prototype.renderFgSegs = function (segs) { 14189 var rowStructs = this.rowStructs = this.renderSegRows(segs); 14190 // append to each row's content skeleton 14191 this.dayGrid.rowEls.each(function (i, rowNode) { 14192 $(rowNode).find('.fc-content-skeleton > table').append(rowStructs[i].tbodyEl); 14193 }); 14194 }; 14195 // Unrenders all currently rendered foreground event segments 14196 DayGridEventRenderer.prototype.unrenderFgSegs = function () { 14197 var rowStructs = this.rowStructs || []; 14198 var rowStruct; 14199 while ((rowStruct = rowStructs.pop())) { 14200 rowStruct.tbodyEl.remove(); 14201 } 14202 this.rowStructs = null; 14203 }; 14204 // Uses the given events array to generate <tbody> elements that should be appended to each row's content skeleton. 14205 // Returns an array of rowStruct objects (see the bottom of `renderSegRow`). 14206 // PRECONDITION: each segment shoud already have a rendered and assigned `.el` 14207 DayGridEventRenderer.prototype.renderSegRows = function (segs) { 14208 var rowStructs = []; 14209 var segRows; 14210 var row; 14211 segRows = this.groupSegRows(segs); // group into nested arrays 14212 // iterate each row of segment groupings 14213 for (row = 0; row < segRows.length; row++) { 14214 rowStructs.push(this.renderSegRow(row, segRows[row])); 14215 } 14216 return rowStructs; 14217 }; 14218 // Given a row # and an array of segments all in the same row, render a <tbody> element, a skeleton that contains 14219 // the segments. Returns object with a bunch of internal data about how the render was calculated. 14220 // NOTE: modifies rowSegs 14221 DayGridEventRenderer.prototype.renderSegRow = function (row, rowSegs) { 14222 var colCnt = this.dayGrid.colCnt; 14223 var segLevels = this.buildSegLevels(rowSegs); // group into sub-arrays of levels 14224 var levelCnt = Math.max(1, segLevels.length); // ensure at least one level 14225 var tbody = $('<tbody>'); 14226 var segMatrix = []; // lookup for which segments are rendered into which level+col cells 14227 var cellMatrix = []; // lookup for all <td> elements of the level+col matrix 14228 var loneCellMatrix = []; // lookup for <td> elements that only take up a single column 14229 var i; 14230 var levelSegs; 14231 var col; 14232 var tr; 14233 var j; 14234 var seg; 14235 var td; 14236 // populates empty cells from the current column (`col`) to `endCol` 14237 function emptyCellsUntil(endCol) { 14238 while (col < endCol) { 14239 // try to grab a cell from the level above and extend its rowspan. otherwise, create a fresh cell 14240 td = (loneCellMatrix[i - 1] || [])[col]; 14241 if (td) { 14242 td.attr('rowspan', parseInt(td.attr('rowspan') || 1, 10) + 1); 14243 } 14244 else { 14245 td = $('<td>'); 14246 tr.append(td); 14247 } 14248 cellMatrix[i][col] = td; 14249 loneCellMatrix[i][col] = td; 14250 col++; 14251 } 14252 } 14253 for (i = 0; i < levelCnt; i++) { // iterate through all levels 14254 levelSegs = segLevels[i]; 14255 col = 0; 14256 tr = $('<tr>'); 14257 segMatrix.push([]); 14258 cellMatrix.push([]); 14259 loneCellMatrix.push([]); 14260 // levelCnt might be 1 even though there are no actual levels. protect against this. 14261 // this single empty row is useful for styling. 14262 if (levelSegs) { 14263 for (j = 0; j < levelSegs.length; j++) { // iterate through segments in level 14264 seg = levelSegs[j]; 14265 emptyCellsUntil(seg.leftCol); 14266 // create a container that occupies or more columns. append the event element. 14267 td = $('<td class="fc-event-container">').append(seg.el); 14268 if (seg.leftCol !== seg.rightCol) { 14269 td.attr('colspan', seg.rightCol - seg.leftCol + 1); 14270 } 14271 else { // a single-column segment 14272 loneCellMatrix[i][col] = td; 14273 } 14274 while (col <= seg.rightCol) { 14275 cellMatrix[i][col] = td; 14276 segMatrix[i][col] = seg; 14277 col++; 14278 } 14279 tr.append(td); 14280 } 14281 } 14282 emptyCellsUntil(colCnt); // finish off the row 14283 this.dayGrid.bookendCells(tr); 14284 tbody.append(tr); 14285 } 14286 return { 14287 row: row, 14288 tbodyEl: tbody, 14289 cellMatrix: cellMatrix, 14290 segMatrix: segMatrix, 14291 segLevels: segLevels, 14292 segs: rowSegs 14293 }; 14294 }; 14295 // Stacks a flat array of segments, which are all assumed to be in the same row, into subarrays of vertical levels. 14296 // NOTE: modifies segs 14297 DayGridEventRenderer.prototype.buildSegLevels = function (segs) { 14298 var levels = []; 14299 var i; 14300 var seg; 14301 var j; 14302 // Give preference to elements with certain criteria, so they have 14303 // a chance to be closer to the top. 14304 this.sortEventSegs(segs); 14305 for (i = 0; i < segs.length; i++) { 14306 seg = segs[i]; 14307 // loop through levels, starting with the topmost, until the segment doesn't collide with other segments 14308 for (j = 0; j < levels.length; j++) {
14309 if (!isDaySegCollision(seg, levels[j])) { 14310 break; 14311 } 14312 } 14313 // `j` now holds the desired subrow index 14314 seg.level = j; 14315 // create new level array if needed and append segment 14316 (levels[j] || (levels[j] = [])).push(seg); 14317 } 14318 // order segments left-to-right. very important if calendar is RTL 14319 for (j = 0; j < levels.length; j++) { 14320 levels[j].sort(compareDaySegCols); 14321 } 14322 return levels; 14323 }; 14324 // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's row 14325 DayGridEventRenderer.prototype.groupSegRows = function (segs) { 14326 var segRows = []; 14327 var i; 14328 for (i = 0; i < this.dayGrid.rowCnt; i++) { 14329 segRows.push([]); 14330 } 14331 for (i = 0; i < segs.length; i++) { 14332 segRows[segs[i].row].push(segs[i]); 14333 } 14334 return segRows; 14335 }; 14336 // Computes a default event time formatting string if `timeFormat` is not explicitly defined 14337 DayGridEventRenderer.prototype.computeEventTimeFormat = function () { 14338 return this.opt('extraSmallTimeFormat'); // like "6p" or "6:30p" 14339 }; 14340 // Computes a default `displayEventEnd` value if one is not expliclty defined 14341 DayGridEventRenderer.prototype.computeDisplayEventEnd = function () { 14342 return this.dayGrid.colCnt === 1; // we'll likely have space if there's only one day 14343 }; 14344 // Builds the HTML to be used for the default element for an individual segment 14345 DayGridEventRenderer.prototype.fgSegHtml = function (seg, disableResizing) { 14346 var view = this.view; 14347 var eventDef = seg.footprint.eventDef; 14348 var isAllDay = seg.footprint.componentFootprint.isAllDay; 14349 var isDraggable = view.isEventDefDraggable(eventDef); 14350 var isResizableFromStart = !disableResizing && isAllDay && 14351 seg.isStart && view.isEventDefResizableFromStart(eventDef); 14352 var isResizableFromEnd = !disableResizing && isAllDay && 14353 seg.isEnd && view.isEventDefResizableFromEnd(eventDef); 14354 var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd); 14355 var skinCss = util_1.cssToStr(this.getSkinCss(eventDef)); 14356 var timeHtml = ''; 14357 var timeText; 14358 var titleHtml; 14359 classes.unshift('fc-day-grid-event', 'fc-h-event');
14360 // Only display a timed events time if it is the starting segment 14361 if (seg.isStart) { 14362 timeText = this.getTimeText(seg.footprint); 14363 if (timeText) { 14364 timeHtml = '<span class="fc-time">' + util_1.htmlEscape(timeText) + '</span>'; 14365 } 14366 } 14367 titleHtml = 14368 '<span class="fc-title">' + 14369 (util_1.htmlEscape(eventDef.title || '') || ' ') + // we always want one line of height 14370 '</span>'; 14371 return '<a class="' + classes.join(' ') + '"' + 14372 (eventDef.url ? 14373 ' href="' + util_1.htmlEscape(eventDef.url) + '"' : 14374 '') + 14375 (skinCss ? 14376 ' style="' + skinCss + '"' : 14377 '') + 14378 '>' + 14379 '<div class="fc-content">' + 14380 (this.dayGrid.isRTL ? 14381 titleHtml + ' ' + timeHtml : // put a natural space in between 14382 timeHtml + ' ' + titleHtml // 14383 ) + 14384 '</div>' + 14385 (isResizableFromStart ? 14386 '<div class="fc-resizer fc-start-resizer"></div>' : 14387 '') + 14388 (isResizableFromEnd ? 14389 '<div class="fc-resizer fc-end-resizer"></div>' : 14390 '') + 14391 '</a>'; 14392 }; 14393 return DayGridEventRenderer; 14394}(EventRenderer_1.default)); 14395exports.default = DayGridEventRenderer; 14396// Computes whether two segments' columns collide. They are assumed to be in the same row. 14397function isDaySegCollision(seg, otherSegs) { 14398 var i; 14399 var otherSeg; 14400 for (i = 0; i < otherSegs.length; i++) { 14401 otherSeg = otherSegs[i]; 14402 if (otherSeg.leftCol <= seg.rightCol && 14403 otherSeg.rightCol >= seg.leftCol) { 14404 return true; 14405 } 14406 } 14407 return false; 14408} 14409// A cmp function for determining the leftmost event 14410function compareDaySegCols(a, b) { 14411 return a.leftCol - b.leftCol; 14412} 14413 14414 14415/***/ }), 14416/* 244 */ 14417/***/ (function(module, exports, __webpack_require__) { 14418 14419Object.defineProperty(exports, "__esModule", { value: true }); 14420var tslib_1 = __webpack_require__(2); 14421var $ = __webpack_require__(3); 14422var HelperRenderer_1 = __webpack_require__(63); 14423var DayGridHelperRenderer = /** @class */ (function (_super) { 14424 tslib_1.__extends(DayGridHelperRenderer, _super); 14425 function DayGridHelperRenderer() { 14426 return _super !== null && _super.apply(this, arguments) || this; 14427 } 14428 // Renders a mock "helper" event. `sourceSeg` is the associated internal segment object. It can be null. 14429 DayGridHelperRenderer.prototype.renderSegs = function (segs, sourceSeg) { 14430 var helperNodes = []; 14431 var rowStructs; 14432 // TODO: not good to call eventRenderer this way 14433 rowStructs = this.eventRenderer.renderSegRows(segs); 14434 // inject each new event skeleton into each associated row 14435 this.component.rowEls.each(function (row, rowNode) { 14436 var rowEl = $(rowNode); // the .fc-row 14437 var skeletonEl = $('<div class="fc-helper-skeleton"><table></table></div>'); // will be absolutely positioned 14438 var skeletonTopEl; 14439 var skeletonTop; 14440 // If there is an original segment, match the top position. Otherwise, put it at the row's top level 14441 if (sourceSeg && sourceSeg.row === row) { 14442 skeletonTop = sourceSeg.el.position().top; 14443 } 14444 else { 14445 skeletonTopEl = rowEl.find('.fc-content-skeleton tbody'); 14446 if (!skeletonTopEl.length) { // when no events 14447 skeletonTopEl = rowEl.find('.fc-content-skeleton table'); 14448 } 14449 skeletonTop = skeletonTopEl.position().top; 14450 } 14451 skeletonEl.css('top', skeletonTop) 14452 .find('table') 14453 .append(rowStructs[row].tbodyEl); 14454 rowEl.append(skeletonEl); 14455 helperNodes.push(skeletonEl[0]); 14456 }); 14457 return $(helperNodes); // must return the elements rendered 14458 }; 14459 return DayGridHelperRenderer; 14460}(HelperRenderer_1.default)); 14461exports.default = DayGridHelperRenderer; 14462 14463 14464/***/ }), 14465/* 245 */ 14466/***/ (function(module, exports, __webpack_require__) { 14467 14468Object.defineProperty(exports, "__esModule", { value: true });
14469var tslib_1 = __webpack_require__(2); 14470var $ = __webpack_require__(3); 14471var FillRenderer_1 = __webpack_require__(62); 14472var DayGridFillRenderer = /** @class */ (function (_super) { 14473 tslib_1.__extends(DayGridFillRenderer, _super); 14474 function DayGridFillRenderer() { 14475 var _this = _super !== null && _super.apply(this, arguments) || this; 14476 _this.fillSegTag = 'td'; // override the default tag name 14477 return _this; 14478 } 14479 DayGridFillRenderer.prototype.attachSegEls = function (type, segs) { 14480 var nodes = []; 14481 var i; 14482 var seg; 14483 var skeletonEl; 14484 for (i = 0; i < segs.length; i++) { 14485 seg = segs[i]; 14486 skeletonEl = this.renderFillRow(type, seg); 14487 this.component.rowEls.eq(seg.row).append(skeletonEl); 14488 nodes.push(skeletonEl[0]); 14489 } 14490 return nodes; 14491 }; 14492 // Generates the HTML needed for one row of a fill. Requires the seg's el to be rendered. 14493 DayGridFillRenderer.prototype.renderFillRow = function (type, seg) { 14494 var colCnt = this.component.colCnt; 14495 var startCol = seg.leftCol; 14496 var endCol = seg.rightCol + 1; 14497 var className; 14498 var skeletonEl; 14499 var trEl; 14500 if (type === 'businessHours') { 14501 className = 'bgevent'; 14502 } 14503 else { 14504 className = type.toLowerCase(); 14505 } 14506 skeletonEl = $('<div class="fc-' + className + '-skeleton">' + 14507 '<table><tr></tr></table>' + 14508 '</div>'); 14509 trEl = skeletonEl.find('tr'); 14510 if (startCol > 0) { 14511 trEl.append( 14512 // will create (startCol + 1) td's 14513 new Array(startCol + 1).join('<td></td>')); 14514 } 14515 trEl.append(seg.el.attr('colspan', endCol - startCol)); 14516 if (endCol < colCnt) { 14517 trEl.append( 14518 // will create (colCnt - endCol) td's 14519 new Array(colCnt - endCol + 1).join('<td></td>')); 14520 } 14521 this.component.bookendCells(trEl); 14522 return skeletonEl; 14523 }; 14524 return DayGridFillRenderer; 14525}(FillRenderer_1.default)); 14526exports.default = DayGridFillRenderer; 14527 14528 14529/***/ }), 14530/* 246 */ 14531/***/ (function(module, exports, __webpack_require__) { 14532 14533Object.defineProperty(exports, "__esModule", { value: true }); 14534var tslib_1 = __webpack_require__(2); 14535var moment = __webpack_require__(0); 14536var util_1 = __webpack_require__(4); 14537var BasicView_1 = __webpack_require__(67); 14538var MonthViewDateProfileGenerator_1 = __webpack_require__(247); 14539/* A month view with day cells running in rows (one-per-week) and columns 14540----------------------------------------------------------------------------------------------------------------------*/ 14541var MonthView = /** @class */ (function (_super) { 14542 tslib_1.__extends(MonthView, _super); 14543 function MonthView() { 14544 return _super !== null && _super.apply(this, arguments) || this; 14545 } 14546 // Overrides the default BasicView behavior to have special multi-week auto-height logic 14547 MonthView.prototype.setGridHeight = function (height, isAuto) { 14548 // if auto, make the height of each row the height that it would be if there were 6 weeks 14549 if (isAuto) { 14550 height *= this.dayGrid.rowCnt / 6; 14551 } 14552 util_1.distributeHeight(this.dayGrid.rowEls, height, !isAuto); // if auto, don't compensate for height-hogging rows 14553 }; 14554 MonthView.prototype.isDateInOtherMonth = function (date, dateProfile) { 14555 return date.month() !== moment.utc(dateProfile.currentUnzonedRange.startMs).month(); // TODO: optimize 14556 }; 14557 return MonthView; 14558}(BasicView_1.default)); 14559exports.default = MonthView; 14560MonthView.prototype.dateProfileGeneratorClass = MonthViewDateProfileGenerator_1.default; 14561 14562 14563/***/ }), 14564/* 247 */ 14565/***/ (function(module, exports, __webpack_require__) { 14566 14567Object.defineProperty(exports, "__esModule", { value: true }); 14568var tslib_1 = __webpack_require__(2); 14569var BasicViewDateProfileGenerator_1 = __webpack_require__(68); 14570var UnzonedRange_1 = __webpack_require__(5); 14571var MonthViewDateProfileGenerator = /** @class */ (function (_super) { 14572 tslib_1.__extends(MonthViewDateProfileGenerator, _super); 14573 function MonthViewDateProfileGenerator() { 14574 return _super !== null && _super.apply(this, arguments) || this; 14575 } 14576 // Computes the date range that will be rendered. 14577 MonthViewDateProfileGenerator.prototype.buildRenderRange = function (currentUnzonedRange, currentRangeUnit, isRangeAllDay) { 14578 var renderUnzonedRange = _super.prototype.buildRenderRange.call(this, currentUnzonedRange, currentRangeUnit, isRangeAllDay); 14579 var start = this.msToUtcMoment(renderUnzonedRange.startMs, isRangeAllDay); 14580 var end = this.msToUtcMoment(renderUnzonedRange.endMs, isRangeAllDay); 14581 var rowCnt; 14582 // ensure 6 weeks 14583 if (this.opt('fixedWeekCount')) {
14584 rowCnt = Math.ceil(// could be partial weeks due to hiddenDays 14585 end.diff(start, 'weeks', true) // dontRound=true 14586 ); 14587 end.add(6 - rowCnt, 'weeks'); 14588 } 14589 return new UnzonedRange_1.default(start, end); 14590 }; 14591 return MonthViewDateProfileGenerator; 14592}(BasicViewDateProfileGenerator_1.default)); 14593exports.default = MonthViewDateProfileGenerator; 14594 14595 14596/***/ }), 14597/* 248 */ 14598/***/ (function(module, exports, __webpack_require__) { 14599 14600Object.defineProperty(exports, "__esModule", { value: true }); 14601var tslib_1 = __webpack_require__(2); 14602var $ = __webpack_require__(3); 14603var util_1 = __webpack_require__(4); 14604var UnzonedRange_1 = __webpack_require__(5); 14605var View_1 = __webpack_require__(43); 14606var Scroller_1 = __webpack_require__(41); 14607var ListEventRenderer_1 = __webpack_require__(249); 14608var ListEventPointing_1 = __webpack_require__(250); 14609/* 14610Responsible for the scroller, and forwarding event-related actions into the "grid". 14611*/ 14612var ListView = /** @class */ (function (_super) { 14613 tslib_1.__extends(ListView, _super); 14614 function ListView(calendar, viewSpec) { 14615 var _this = _super.call(this, calendar, viewSpec) || this; 14616 _this.segSelector = '.fc-list-item'; // which elements accept event actions 14617 _this.scroller = new Scroller_1.default({ 14618 overflowX: 'hidden', 14619 overflowY: 'auto' 14620 }); 14621 return _this; 14622 } 14623 ListView.prototype.renderSkeleton = function () { 14624 this.el.addClass('fc-list-view ' + 14625 this.calendar.theme.getClass('listView')); 14626 this.scroller.render(); 14627 this.scroller.el.appendTo(this.el); 14628 this.contentEl = this.scroller.scrollEl; // shortcut 14629 }; 14630 ListView.prototype.unrenderSkeleton = function () { 14631 this.scroller.destroy(); // will remove the Grid too 14632 }; 14633 ListView.prototype.updateSize = function (totalHeight, isAuto, isResize) { 14634 _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize); 14635 this.scroller.clear(); // sets height to 'auto' and clears overflow 14636 if (!isAuto) { 14637 this.scroller.setHeight(this.computeScrollerHeight(totalHeight)); 14638 } 14639 }; 14640 ListView.prototype.computeScrollerHeight = function (totalHeight) { 14641 return totalHeight - 14642 util_1.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller 14643 }; 14644 ListView.prototype.renderDates = function (dateProfile) { 14645 var calendar = this.calendar; 14646 var dayStart = calendar.msToUtcMoment(dateProfile.renderUnzonedRange.startMs, true); 14647 var viewEnd = calendar.msToUtcMoment(dateProfile.renderUnzonedRange.endMs, true); 14648 var dayDates = []; 14649 var dayRanges = []; 14650 while (dayStart < viewEnd) { 14651 dayDates.push(dayStart.clone()); 14652 dayRanges.push(new UnzonedRange_1.default(dayStart, dayStart.clone().add(1, 'day'))); 14653 dayStart.add(1, 'day'); 14654 } 14655 this.dayDates = dayDates; 14656 this.dayRanges = dayRanges; 14657 // all real rendering happens in EventRenderer 14658 }; 14659 // slices by day 14660 ListView.prototype.componentFootprintToSegs = function (footprint) { 14661 var dayRanges = this.dayRanges; 14662 var dayIndex; 14663 var segRange; 14664 var seg; 14665 var segs = []; 14666 for (dayIndex = 0; dayIndex < dayRanges.length; dayIndex++) { 14667 segRange = footprint.unzonedRange.intersect(dayRanges[dayIndex]); 14668 if (segRange) { 14669 seg = { 14670 startMs: segRange.startMs, 14671 endMs: segRange.endMs, 14672 isStart: segRange.isStart, 14673 isEnd: segRange.isEnd, 14674 dayIndex: dayIndex 14675 }; 14676 segs.push(seg); 14677 // detect when footprint won't go fully into the next day, 14678 // and mutate the latest seg to the be the end. 14679 if (!seg.isEnd && !footprint.isAllDay && 14680 dayIndex + 1 < dayRanges.length && 14681 footprint.unzonedRange.endMs < dayRanges[dayIndex + 1].startMs + this.nextDayThreshold) { 14682 seg.endMs = footprint.unzonedRange.endMs; 14683 seg.isEnd = true; 14684 break; 14685 } 14686 } 14687 } 14688 return segs; 14689 }; 14690 ListView.prototype.renderEmptyMessage = function () { 14691 this.contentEl.html('<div class="fc-list-empty-wrap2">' + // TODO: try less wraps 14692 '<div class="fc-list-empty-wrap1">' + 14693 '<div class="fc-list-empty">' + 14694 util_1.htmlEscape(this.opt('noEventsMessage')) + 14695 '</div>' + 14696 '</div>' + 14697 '</div>'); 14698 }; 14699 // render the event segments in the view 14700 ListView.prototype.renderSegList = function (allSegs) { 14701 var segsByDay = this.groupSegsByDay(allSegs); // sparse array 14702 var dayIndex; 14703 var daySegs; 14704 var i; 14705 var tableEl = $('<table class="fc-list-table ' + this.calendar.theme.getClass('tableList') + '"><tbody></tbody></table>'); 14706 var tbodyEl = tableEl.find('tbody'); 14707 for (dayIndex = 0; dayIndex < segsByDay.length; dayIndex++) { 14708 daySegs = segsByDay[dayIndex]; 14709 if (daySegs) { // sparse array, so might be undefined 14710 // append a day header 14711 tbodyEl.append(this.dayHeaderHtml(this.dayDates[dayIndex])); 14712 this.eventRenderer.sortEventSegs(daySegs); 14713 for (i = 0;
14713 i < daySegs.length; i++) { 14714 tbodyEl.append(daySegs[i].el); // append event row 14715 } 14716 } 14717 } 14718 this.contentEl.empty().append(tableEl); 14719 }; 14720 // Returns a sparse array of arrays, segs grouped by their dayIndex 14721 ListView.prototype.groupSegsByDay = function (segs) { 14722 var segsByDay = []; // sparse array 14723 var i; 14724 var seg; 14725 for (i = 0; i < segs.length; i++) { 14726 seg = segs[i]; 14727 (segsByDay[seg.dayIndex] || (segsByDay[seg.dayIndex] = [])) 14728 .push(seg); 14729 } 14730 return segsByDay; 14731 }; 14732 // generates the HTML for the day headers that live amongst the event rows 14733 ListView.prototype.dayHeaderHtml = function (dayDate) { 14734 var mainFormat = this.opt('listDayFormat'); 14735 var altFormat = this.opt('listDayAltFormat'); 14736 return '<tr class="fc-list-heading" data-date="' + dayDate.format('YYYY-MM-DD') + '">' + 14737 '<td class="' + (this.calendar.theme.getClass('tableListHeading') || 14738 this.calendar.theme.getClass('widgetHeader')) + '" colspan="3">' + 14739 (mainFormat ? 14740 this.buildGotoAnchorHtml(dayDate, { 'class': 'fc-list-heading-main' }, util_1.htmlEscape(dayDate.format(mainFormat)) // inner HTML 14741 ) : 14742 '') + 14743 (altFormat ? 14744 this.buildGotoAnchorHtml(dayDate, { 'class': 'fc-list-heading-alt' }, util_1.htmlEscape(dayDate.format(altFormat)) // inner HTML 14745 ) : 14746 '') + 14747 '</td>' + 14748 '</tr>'; 14749 }; 14750 return ListView; 14751}(View_1.default)); 14752exports.default = ListView; 14753ListView.prototype.eventRendererClass = ListEventRenderer_1.default; 14754ListView.prototype.eventPointingClass = ListEventPointing_1.default; 14755 14756 14757/***/ }), 14758/* 249 */ 14759/***/ (function(module, exports, __webpack_require__) { 14760 14761Object.defineProperty(exports, "__esModule", { value: true }); 14762var tslib_1 = __webpack_require__(2); 14763var util_1 = __webpack_require__(4); 14764var EventRenderer_1 = __webpack_require__(44); 14765var ListEventRenderer = /** @class */ (function (_super) { 14766 tslib_1.__extends(ListEventRenderer, _super); 14767 function ListEventRenderer() { 14768 return _super !== null && _super.apply(this, arguments) || this; 14769 } 14770 ListEventRenderer.prototype.renderFgSegs = function (segs) { 14771 if (!segs.length) { 14772 this.component.renderEmptyMessage(); 14773 } 14774 else { 14775 this.component.renderSegList(segs); 14776 } 14777 }; 14778 // generates the HTML for a single event row 14779 ListEventRenderer.prototype.fgSegHtml = function (seg) { 14780 var view = this.view; 14781 var calendar = view.calendar; 14782 var theme = calendar.theme; 14783 var eventFootprint = seg.footprint; 14784 var eventDef = eventFootprint.eventDef; 14785 var componentFootprint = eventFootprint.componentFootprint; 14786 var url = eventDef.url; 14787 var classes = ['fc-list-item'].concat(this.getClasses(eventDef)); 14788 var bgColor = this.getBgColor(eventDef); 14789 var timeHtml; 14790 if (componentFootprint.isAllDay) { 14791 timeHtml = view.getAllDayHtml(); 14792 } 14793 else if (view.isMultiDayRange(componentFootprint.unzonedRange)) { 14794 if (seg.isStart || seg.isEnd) { // outer segment that probably lasts part of the day 14795 timeHtml = util_1.htmlEscape(this._getTimeText(calendar.msToMoment(seg.startMs), calendar.msToMoment(seg.endMs), componentFootprint.isAllDay)); 14796 } 14797 else { // inner segment that lasts the whole day 14798 timeHtml = view.getAllDayHtml(); 14799 } 14800 } 14801 else { 14802 // Display the normal time text for the *event's* times 14803 timeHtml = util_1.htmlEscape(this.getTimeText(eventFootprint)); 14804 } 14805 if (url) { 14806 classes.push('fc-has-url'); 14807 } 14808 return '<tr class="' + classes.join(' ') + '">' + 14809 (this.displayEventTime ? 14810 '<td class="fc-list-item-time ' + theme.getClass('widgetContent') + '">' + 14811 (timeHtml || '') + 14812 '</td>' : 14813 '') + 14814 '<td class="fc-list-item-marker ' + theme.getClass('widgetContent') + '">' + 14815 '<span class="fc-event-dot"' + 14816 (bgColor ? 14817 ' style="background-color:' + bgColor + '"' : 14818 '') + 14819 '></span>' + 14820 '</td>' + 14821 '<td class="fc-list-item-title ' + theme.getClass('widgetContent') + '">' + 14822 '<a' + (url ? ' href="' + util_1.htmlEscape(url) + '"' : '') + '>
14822' + 14823 util_1.htmlEscape(eventDef.title || '') + 14824 '</a>' + 14825 '</td>' + 14826 '</tr>'; 14827 }; 14828 // like "4:00am" 14829 ListEventRenderer.prototype.computeEventTimeFormat = function () { 14830 return this.opt('mediumTimeFormat'); 14831 }; 14832 return ListEventRenderer; 14833}(EventRenderer_1.default)); 14834exports.default = ListEventRenderer; 14835 14836 14837/***/ }), 14838/* 250 */ 14839/***/ (function(module, exports, __webpack_require__) { 14840 14841Object.defineProperty(exports, "__esModule", { value: true }); 14842var tslib_1 = __webpack_require__(2); 14843var $ = __webpack_require__(3); 14844var EventPointing_1 = __webpack_require__(64); 14845var ListEventPointing = /** @class */ (function (_super) { 14846 tslib_1.__extends(ListEventPointing, _super); 14847 function ListEventPointing() { 14848 return _super !== null && _super.apply(this, arguments) || this; 14849 } 14850 // for events with a url, the whole <tr> should be clickable, 14851 // but it's impossible to wrap with an <a> tag. simulate this. 14852 ListEventPointing.prototype.handleClick = function (seg, ev) { 14853 var url; 14854 _super.prototype.handleClick.call(this, seg, ev); // might prevent the default action 14855 // not clicking on or within an <a> with an href 14856 if (!$(ev.target).closest('a[href]').length) { 14857 url = seg.footprint.eventDef.url; 14858 if (url && !ev.isDefaultPrevented()) { // jsEvent not cancelled in handler 14859 window.location.href = url; // simulate link click 14860 } 14861 } 14862 }; 14863 return ListEventPointing; 14864}(EventPointing_1.default)); 14865exports.default = ListEventPointing; 14866 14867 14868/***/ }), 14869/* 251 */, 14870/* 252 */, 14871/* 253 */, 14872/* 254 */, 14873/* 255 */, 14874/* 256 */ 14875/***/ (function(module, exports, __webpack_require__) { 14876 14877var $ = __webpack_require__(3); 14878var exportHooks = __webpack_require__(18); 14879var util_1 = __webpack_require__(4); 14880var Calendar_1 = __webpack_require__(232); 14881// for intentional side-effects 14882__webpack_require__(11); 14883__webpack_require__(49); 14884__webpack_require__(260); 14885__webpack_require__(261); 14886__webpack_require__(264); 14887__webpack_require__(265); 14888__webpack_require__(266); 14889__webpack_require__(267); 14890$.fullCalendar = exportHooks; 14891$.fn.fullCalendar = function (options) { 14892 var args = Array.prototype.slice.call(arguments, 1); // for a possible method call 14893 var res = this; // what this function will return (this jQuery object by default) 14894 this.each(function (i, _element) { 14895 var element = $(_element); 14896 var calendar = element.data('fullCalendar'); // get the existing calendar object (if any) 14897 var singleRes; // the returned value of this single method call 14898 // a method call 14899 if (typeof options === 'string') { 14900 if (options === 'getCalendar') { 14901 if (!i) { // first element only 14902 res = calendar; 14903 } 14904 } 14905 else if (options === 'destroy') { // don't warn if no calendar object 14906 if (calendar) { 14907 calendar.destroy(); 14908 element.removeData('fullCalendar'); 14909 } 14910 } 14911 else if (!calendar) { 14912 util_1.warn('Attempting to call a FullCalendar method on an element with no calendar.'); 14913 } 14914 else if ($.isFunction(calendar[options])) { 14915 singleRes = calendar[options].apply(calendar, args); 14916 if (!i) { 14917 res = singleRes; // record the first method call result 14918 } 14919 if (options === 'destroy') { // for the destroy method, must remove Calendar object data 14920 element.removeData('fullCalendar'); 14921 } 14922 } 14923 else { 14924 util_1.warn("'" + options + "' is an unknown FullCalendar method."); 14925 } 14926 } 14927 else if (!calendar) { // don't initialize twice 14928 calendar = new Calendar_1.default(element, options); 14929 element.data('fullCalendar', calendar); 14930 calendar.render(); 14931 } 14932 });
14933 return res; 14934}; 14935module.exports = exportHooks; 14936 14937 14938/***/ }), 14939/* 257 */ 14940/***/ (function(module, exports, __webpack_require__) { 14941 14942Object.defineProperty(exports, "__esModule", { value: true }); 14943var $ = __webpack_require__(3); 14944var util_1 = __webpack_require__(4); 14945/* Toolbar with buttons and title 14946----------------------------------------------------------------------------------------------------------------------*/ 14947var Toolbar = /** @class */ (function () { 14948 function Toolbar(calendar, toolbarOptions) { 14949 this.el = null; // mirrors local `el` 14950 this.viewsWithButtons = []; 14951 this.calendar = calendar; 14952 this.toolbarOptions = toolbarOptions; 14953 } 14954 // method to update toolbar-specific options, not calendar-wide options 14955 Toolbar.prototype.setToolbarOptions = function (newToolbarOptions) { 14956 this.toolbarOptions = newToolbarOptions; 14957 }; 14958 // can be called repeatedly and will rerender 14959 Toolbar.prototype.render = function () { 14960 var sections = this.toolbarOptions.layout; 14961 var el = this.el; 14962 if (sections) { 14963 if (!el) { 14964 el = this.el = $("<div class='fc-toolbar " + this.toolbarOptions.extraClasses + "'>"); 14965 } 14966 else { 14967 el.empty(); 14968 } 14969 el.append(this.renderSection('left')) 14970 .append(this.renderSection('right')) 14971 .append(this.renderSection('center')) 14972 .append('<div class="fc-clear"></div>'); 14973 } 14974 else { 14975 this.removeElement(); 14976 } 14977 }; 14978 Toolbar.prototype.removeElement = function () { 14979 if (this.el) { 14980 this.el.remove(); 14981 this.el = null; 14982 } 14983 }; 14984 Toolbar.prototype.renderSection = function (position) { 14985 var _this = this; 14986 var calendar = this.calendar; 14987 var theme = calendar.theme; 14988 var optionsManager = calendar.optionsManager; 14989 var viewSpecManager = calendar.viewSpecManager; 14990 var sectionEl = $('<div class="fc-' + position + '">'); 14991 var buttonStr = this.toolbarOptions.layout[position]; 14992 var calendarCustomButtons = optionsManager.get('customButtons') || {}; 14993 var calendarButtonTextOverrides = optionsManager.overrides.buttonText || {}; 14994 var calendarButtonText = optionsManager.get('buttonText') || {}; 14995 if (buttonStr) { 14996 $.each(buttonStr.split(' '), function (i, buttonGroupStr) { 14997 var groupChildren = $(); 14998 var isOnlyButtons = true; 14999 var groupEl; 15000 $.each(buttonGroupStr.split(','), function (j, buttonName) { 15001 var customButtonProps; 15002 var viewSpec; 15003 var buttonClick; 15004 var buttonIcon; // only one of these will be set 15005 var buttonText; // " 15006 var buttonInnerHtml; 15007 var buttonClasses; 15008 var buttonEl; 15009 var buttonAriaAttr; 15010 if (buttonName === 'title') { 15011 groupChildren = groupChildren.add($('<h2> </h2>')); // we always want it to take up height 15012 isOnlyButtons = false; 15013 } 15014 else { 15015 if ((customButtonProps = calendarCustomButtons[buttonName])) { 15016 buttonClick = function (ev) { 15017 if (customButtonProps.click) { 15018 customButtonProps.click.call(buttonEl[0], ev); 15019 } 15020 }; 15021 (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) || 15022 (buttonIcon = theme.getIconClass(buttonName)) || 15023 (buttonText = customButtonProps.text); 15024 } 15025 else if ((viewSpec = viewSpecManager.getViewSpec(buttonName))) { 15026 _this.viewsWithButtons.push(buttonName); 15027 buttonClick = function () { 15028 calendar.changeView(buttonName); 15029 }; 15030 (buttonText = viewSpec.buttonTextOverride) || 15031 (buttonIcon = theme.getIconClass(buttonName)) || 15032 (buttonText = viewSpec.buttonTextDefault); 15033 } 15034 else if (calendar[buttonName]) { // a calendar method 15035 buttonClick = function () { 15036 calendar[buttonName](); 15037 }; 15038 (buttonText = calendarButtonTextOverrides[buttonName]) || 15039 (buttonIcon = theme.getIconClass(buttonName)) || 15040 (buttonText = calendarButtonText[buttonName]); 15041 // ^ everything else is considered default 15042 } 15043 if (buttonClick) {
15044 buttonClasses = [ 15045 'fc-' + buttonName + '-button', 15046 theme.getClass('button'), 15047 theme.getClass('stateDefault') 15048 ]; 15049 if (buttonText) { 15050 buttonInnerHtml = util_1.htmlEscape(buttonText); 15051 buttonAriaAttr = ''; 15052 } 15053 else if (buttonIcon) { 15054 buttonInnerHtml = "<span class='" + buttonIcon + "'></span>"; 15055 buttonAriaAttr = ' aria-label="' + buttonName + '"'; 15056 } 15057 buttonEl = $(// type="button" so that it doesn't submit a form 15058 '<button type="button" class="' + buttonClasses.join(' ') + '"' + 15059 buttonAriaAttr + 15060 '>' + buttonInnerHtml + '</button>') 15061 .click(function (ev) { 15062 // don't process clicks for disabled buttons 15063 if (!buttonEl.hasClass(theme.getClass('stateDisabled'))) { 15064 buttonClick(ev); 15065 // after the click action, if the button becomes the "active" tab, or disabled, 15066 // it should never have a hover class, so remove it now. 15067 if (buttonEl.hasClass(theme.getClass('stateActive')) || 15068 buttonEl.hasClass(theme.getClass('stateDisabled'))) { 15069 buttonEl.removeClass(theme.getClass('stateHover')); 15070 } 15071 } 15072 }) 15073 .mousedown(function () { 15074 // the *down* effect (mouse pressed in). 15075 // only on buttons that are not the "active" tab, or disabled 15076 buttonEl 15077 .not('.' + theme.getClass('stateActive')) 15078 .not('.' + theme.getClass('stateDisabled')) 15079 .addClass(theme.getClass('stateDown')); 15080 }) 15081 .mouseup(function () { 15082 // undo the *down* effect 15083 buttonEl.removeClass(theme.getClass('stateDown')); 15084 }) 15085 .hover(function () { 15086 // the *hover* effect. 15087 // only on buttons that are not the "active" tab, or disabled 15088 buttonEl 15089 .not('.' + theme.getClass('stateActive')) 15090 .not('.' + theme.getClass('stateDisabled')) 15091 .addClass(theme.getClass('stateHover')); 15092 }, function () { 15093 // undo the *hover* effect 15094 buttonEl 15095 .removeClass(theme.getClass('stateHover')) 15096 .removeClass(theme.getClass('stateDown')); // if mouseleave happens before mouseup 15097 }); 15098 groupChildren = groupChildren.add(buttonEl); 15099 } 15100 } 15101 }); 15102 if (isOnlyButtons) { 15103 groupChildren 15104 .first().addClass(theme.getClass('cornerLeft')).end() 15105 .last().addClass(theme.getClass('cornerRight')).end(); 15106 } 15107 if (groupChildren.length > 1) { 15108 groupEl = $('<div>'); 15109 if (isOnlyButtons) { 15110 groupEl.addClass(theme.getClass('buttonGroup')); 15111 } 15112 groupEl.append(groupChildren); 15113 sectionEl.append(groupEl); 15114 } 15115 else { 15116 sectionEl.append(groupChildren); // 1 or 0 children 15117 } 15118 }); 15119 } 15120 return sectionEl; 15121 }; 15122 Toolbar.prototype.updateTitle = function (text) { 15123 if (this.el) { 15124 this.el.find('h2').text(text); 15125 } 15126 }; 15127 Toolbar.prototype.activateButton = function (buttonName) { 15128 if (this.el) { 15129 this.el.find('.fc-' + buttonName + '-button') 15130 .addClass(this.calendar.theme.getClass('stateActive')); 15131 } 15132 }; 15133 Toolbar.prototype.deactivateButton = function (buttonName) { 15134 if (this.el) { 15135 this.el.find('.fc-' + buttonName + '-button') 15136 .removeClass(this.calendar.theme.getClass('stateActive')); 15137 } 15138 }; 15139 Toolbar.prototype.disableButton = function (buttonName) { 15140 if (this.el) { 15141 this.el.find('.fc-' + buttonName + '-button') 15142 .prop('disabled', true) 15143 .addClass(this.calendar.theme.getClass('stateDisabled')); 15144 } 15145 }; 15146 Toolbar.prototype.enableButton = function (buttonName) { 15147 if (this.el) { 15148 this.el.find('.fc-' + buttonName + '-button') 15149 .prop('disabled', false) 15150 .removeClass(this.calendar.theme.getClass('stateDisabled')); 15151 } 15152 }; 15153 Toolbar.prototype.getViewsWithButtons = function () { 15154 return this.viewsWithButtons; 15155 }; 15156 return Toolbar; 15157}()); 15158exports.default = Toolbar; 15159 15160 15161/***/ }), 15162/* 258 */ 15163/***/ (function(module, exports, __webpack_require__) { 15164 15165Object.defineProperty(exports, "__esModule", { value: true });
15166var tslib_1 = __webpack_require__(2); 15167var $ = __webpack_require__(3); 15168var util_1 = __webpack_require__(4); 15169var options_1 = __webpack_require__(33); 15170var locale_1 = __webpack_require__(32); 15171var Model_1 = __webpack_require__(51); 15172var OptionsManager = /** @class */ (function (_super) { 15173 tslib_1.__extends(OptionsManager, _super); 15174 function OptionsManager(_calendar, overrides) { 15175 var _this = _super.call(this) || this; 15176 _this._calendar = _calendar; 15177 _this.overrides = $.extend({}, overrides); // make a copy 15178 _this.dynamicOverrides = {}; 15179 _this.compute(); 15180 return _this; 15181 } 15182 OptionsManager.prototype.add = function (newOptionHash) { 15183 var optionCnt = 0; 15184 var optionName; 15185 this.recordOverrides(newOptionHash); // will trigger this model's watchers 15186 for (optionName in newOptionHash) { 15187 optionCnt++; 15188 } 15189 // special-case handling of single option change. 15190 // if only one option change, `optionName` will be its name. 15191 if (optionCnt === 1) { 15192 if (optionName === 'height' || optionName === 'contentHeight' || optionName === 'aspectRatio') { 15193 this._calendar.updateViewSize(true); // isResize=true 15194 return; 15195 } 15196 else if (optionName === 'defaultDate') { 15197 return; // can't change date this way. use gotoDate instead 15198 } 15199 else if (optionName === 'businessHours') { 15200 return; // this model already reacts to this 15201 } 15202 else if (/^(event|select)(Overlap|Constraint|Allow)$/.test(optionName)) { 15203 return; // doesn't affect rendering. only interactions. 15204 } 15205 else if (optionName === 'timezone') { 15206 this._calendar.view.flash('initialEvents'); 15207 return; 15208 } 15209 } 15210 // catch-all. rerender the header and footer and rebuild/rerender the current view 15211 this._calendar.renderHeader(); 15212 this._calendar.renderFooter(); 15213 // even non-current views will be affected by this option change. do before rerender 15214 // TODO: detangle 15215 this._calendar.viewsByType = {}; 15216 this._calendar.reinitView(); 15217 }; 15218 // Computes the flattened options hash for the calendar and assigns to `this.options`. 15219 // Assumes this.overrides and this.dynamicOverrides have already been initialized. 15220 OptionsManager.prototype.compute = function () { 15221 var locale; 15222 var localeDefaults; 15223 var isRTL; 15224 var dirDefaults; 15225 var rawOptions; 15226 locale = util_1.firstDefined(// explicit locale option given? 15227 this.dynamicOverrides.locale, this.overrides.locale); 15228 localeDefaults = locale_1.localeOptionHash[locale]; 15229 if (!localeDefaults) { // explicit locale option not given or invalid? 15230 locale = options_1.globalDefaults.locale; 15231 localeDefaults = locale_1.localeOptionHash[locale] || {}; 15232 } 15233 isRTL = util_1.firstDefined(// based on options computed so far, is direction RTL? 15234 this.dynamicOverrides.isRTL, this.overrides.isRTL, localeDefaults.isRTL, options_1.globalDefaults.isRTL); 15235 dirDefaults = isRTL ? options_1.rtlDefaults : {}; 15236 this.dirDefaults = dirDefaults; 15237 this.localeDefaults = localeDefaults; 15238 rawOptions = options_1.mergeOptions([ 15239 options_1.globalDefaults, 15240 dirDefaults, 15241 localeDefaults, 15242 this.overrides, 15243 this.dynamicOverrides 15244 ]); 15245 locale_1.populateInstanceComputableOptions(rawOptions); // fill in gaps with computed options 15246 this.reset(rawOptions); 15247 }; 15248 // stores the new options internally, but does not rerender anything. 15249 OptionsManager.prototype.recordOverrides = function (newOptionHash) { 15250 var optionName; 15251 for (optionName in newOptionHash) { 15252 this.dynamicOverrides[optionName] = newOptionHash[optionName]; 15253 } 15254 this._calendar.viewSpecManager.clearCache(); // the dynamic override invalidates the options in this cache, so just clear it 15255 this.compute(); // this.options needs to be recomputed after the dynamic override 15256 }; 15257 return OptionsManager; 15258}(Model_1.default)); 15259exports.default = OptionsManager; 15260 15261 15262/***/ }), 15263/* 259 */ 15264/***/ (function(module, exports, __webpack_require__) { 15265 15266Object.defineProperty(exports, "__esModule", { value: true });
15267var moment = __webpack_require__(0); 15268var $ = __webpack_require__(3); 15269var ViewRegistry_1 = __webpack_require__(24); 15270var util_1 = __webpack_require__(4); 15271var options_1 = __webpack_require__(33); 15272var locale_1 = __webpack_require__(32); 15273var ViewSpecManager = /** @class */ (function () { 15274 function ViewSpecManager(optionsManager, _calendar) { 15275 this.optionsManager = optionsManager; 15276 this._calendar = _calendar; 15277 this.clearCache(); 15278 } 15279 ViewSpecManager.prototype.clearCache = function () { 15280 this.viewSpecCache = {}; 15281 }; 15282 // Gets information about how to create a view. Will use a cache. 15283 ViewSpecManager.prototype.getViewSpec = function (viewType) { 15284 var cache = this.viewSpecCache; 15285 return cache[viewType] || (cache[viewType] = this.buildViewSpec(viewType)); 15286 }; 15287 // Given a duration singular unit, like "week" or "day", finds a matching view spec. 15288 // Preference is given to views that have corresponding buttons. 15289 ViewSpecManager.prototype.getUnitViewSpec = function (unit) { 15290 var viewTypes; 15291 var i; 15292 var spec; 15293 if ($.inArray(unit, util_1.unitsDesc) !== -1) { 15294 // put views that have buttons first. there will be duplicates, but oh well 15295 viewTypes = this._calendar.header.getViewsWithButtons(); // TODO: include footer as well? 15296 $.each(ViewRegistry_1.viewHash, function (viewType) { 15297 viewTypes.push(viewType); 15298 }); 15299 for (i = 0; i < viewTypes.length; i++) { 15300 spec = this.getViewSpec(viewTypes[i]); 15301 if (spec) { 15302 if (spec.singleUnit === unit) { 15303 return spec; 15304 } 15305 } 15306 } 15307 } 15308 }; 15309 // Builds an object with information on how to create a given view 15310 ViewSpecManager.prototype.buildViewSpec = function (requestedViewType) { 15311 var viewOverrides = this.optionsManager.overrides.views || {}; 15312 var specChain = []; // for the view. lowest to highest priority 15313 var defaultsChain = []; // for the view. lowest to highest priority 15314 var overridesChain = []; // for the view. lowest to highest priority 15315 var viewType = requestedViewType; 15316 var spec; // for the view 15317 var overrides; // for the view 15318 var durationInput; 15319 var duration; 15320 var unit; 15321 // iterate from the specific view definition to a more general one until we hit an actual View class 15322 while (viewType) { 15323 spec = ViewRegistry_1.viewHash[viewType]; 15324 overrides = viewOverrides[viewType]; 15325 viewType = null; // clear. might repopulate for another iteration 15326 if (typeof spec === 'function') { // TODO: deprecate 15327 spec = { 'class': spec }; 15328 } 15329 if (spec) { 15330 specChain.unshift(spec); 15331 defaultsChain.unshift(spec.defaults || {}); 15332 durationInput = durationInput || spec.duration; 15333 viewType = viewType || spec.type; 15334 } 15335 if (overrides) { 15336 overridesChain.unshift(overrides); // view-specific option hashes have options at zero-level 15337 durationInput = durationInput || overrides.duration; 15338 viewType = viewType || overrides.type; 15339 } 15340 } 15341 spec = util_1.mergeProps(specChain); 15342 spec.type = requestedViewType; 15343 if (!spec['class']) { 15344 return false; 15345 } 15346 // fall back to top-level `duration` option 15347 durationInput = durationInput || 15348 this.optionsManager.dynamicOverrides.duration || 15349 this.optionsManager.overrides.duration; 15350 if (durationInput) { 15351 duration = moment.duration(durationInput); 15352 if (duration.valueOf()) { // valid? 15353 unit = util_1.computeDurationGreatestUnit(duration, durationInput); 15354 spec.duration = duration; 15355 spec.durationUnit = unit; 15356 // view is a single-unit duration, like "week" or "day" 15357 // incorporate options for this. lowest priority 15358 if (duration.as(unit) === 1) { 15359 spec.singleUnit = unit; 15360 overridesChain.unshift(viewOverrides[unit] || {}); 15361 } 15362 } 15363 } 15364 spec.defaults = options_1.mergeOptions(defaultsChain); 15365 spec.overrides = options_1.mergeOptions(overridesChain); 15366 this.buildViewSpecOptions(spec); 15367 this.buildViewSpecButtonText(spec, requestedViewType); 15368 return spec; 15369 }; 15370 // Builds and assigns a view spec's options object from its already-assigned defaults and overrides 15371 ViewSpecManager.prototype.buildViewSpecOptions = function (spec) { 15372 var optionsManager = this.optionsManager; 15373 spec.options = options_1.mergeOptions([ 15374 options_1.globalDefaults, 15375 spec.defaults, 15376 optionsManager.dirDefaults, 15377 optionsManager.localeDefaults, 15378 optionsManager.overrides, 15379 spec.overrides, 15380 optionsManager.dynamicOverrides // dynamically set via setter. highest precedence 15381 ]); 15382 locale_1.populateInstanceComputableOptions(spec.options); 15383 }; 15384 // Computes and assigns a view spec's buttonText-related options 15385 ViewSpecManager.prototype.buildViewSpecButtonText = function (spec, requestedViewType) { 15386 var optionsManager = this.optionsManager; 15387 // given an options object with a possible `buttonText` hash, lookup the buttonText for the 15388 // requested view, falling back to a generic unit entry like "week" or "day" 15389 function queryButtonText(options) { 15390 var buttonText = options.buttonText || {}; 15391 return buttonText[requestedViewType] || 15392 // view can decide to look up a certain key 15393 (spec.buttonTextKey ? buttonText[spec.buttonTextKey] : null) || 15394 // a key like "month" 15395 (spec.singleUnit ? buttonText[spec.singleUnit] : null); 15396 } 15397 // highest to lowest priority 15398 spec.buttonTextOverride = 15399 queryButtonText(optionsManager.dynamicOverrides) || 15400 queryButtonText(optionsManager.overrides) || // constructor-specified buttonText lookup hash takes precedence 15401 spec.overrides.buttonText; // `buttonText` for view-specific options is a string 15402 // highest to lowest priority. mirrors buildViewSpecOptions 15403 spec.buttonTextDefault = 15404 queryButtonText(optionsManager.localeDefaults) || 15405 queryButtonText(optionsManager.dirDefaults) ||
15406 spec.defaults.buttonText || // a single string. from ViewSubclass.defaults 15407 queryButtonText(options_1.globalDefaults) || 15408 (spec.duration ? this._calendar.humanizeDuration(spec.duration) : null) || // like "3 days" 15409 requestedViewType; // fall back to given view name 15410 }; 15411 return ViewSpecManager; 15412}()); 15413exports.default = ViewSpecManager; 15414 15415 15416/***/ }), 15417/* 260 */ 15418/***/ (function(module, exports, __webpack_require__) { 15419 15420Object.defineProperty(exports, "__esModule", { value: true }); 15421var EventSourceParser_1 = __webpack_require__(38); 15422var ArrayEventSource_1 = __webpack_require__(56); 15423var FuncEventSource_1 = __webpack_require__(223); 15424var JsonFeedEventSource_1 = __webpack_require__(224); 15425EventSourceParser_1.default.registerClass(ArrayEventSource_1.default); 15426EventSourceParser_1.default.registerClass(FuncEventSource_1.default); 15427EventSourceParser_1.default.registerClass(JsonFeedEventSource_1.default); 15428 15429 15430/***/ }), 15431/* 261 */ 15432/***/ (function(module, exports, __webpack_require__) { 15433 15434Object.defineProperty(exports, "__esModule", { value: true }); 15435var ThemeRegistry_1 = __webpack_require__(57); 15436var StandardTheme_1 = __webpack_require__(221); 15437var JqueryUiTheme_1 = __webpack_require__(222); 15438var Bootstrap3Theme_1 = __webpack_require__(262); 15439var Bootstrap4Theme_1 = __webpack_require__(263); 15440ThemeRegistry_1.defineThemeSystem('standard', StandardTheme_1.default); 15441ThemeRegistry_1.defineThemeSystem('jquery-ui', JqueryUiTheme_1.default); 15442ThemeRegistry_1.defineThemeSystem('bootstrap3', Bootstrap3Theme_1.default); 15443ThemeRegistry_1.defineThemeSystem('bootstrap4', Bootstrap4Theme_1.default); 15444 15445 15446/***/ }), 15447/* 262 */ 15448/***/ (function(module, exports, __webpack_require__) { 15449 15450Object.defineProperty(exports, "__esModule", { value: true }); 15451var tslib_1 = __webpack_require__(2); 15452var Theme_1 = __webpack_require__(22); 15453var Bootstrap3Theme = /** @class */ (function (_super) { 15454 tslib_1.__extends(Bootstrap3Theme, _super); 15455 function Bootstrap3Theme() { 15456 return _super !== null && _super.apply(this, arguments) || this; 15457 } 15458 return Bootstrap3Theme; 15459}(Theme_1.default)); 15460exports.default = Bootstrap3Theme; 15461Bootstrap3Theme.prototype.classes = { 15462 widget: 'fc-bootstrap3', 15463 tableGrid: 'table-bordered', 15464 tableList: 'table', 15465 tableListHeading: 'active', 15466 buttonGroup: 'btn-group', 15467 button: 'btn btn-default', 15468 stateActive: 'active', 15469 stateDisabled: 'disabled', 15470 today: 'alert alert-info', 15471 popover: 'panel panel-default', 15472 popoverHeader: 'panel-heading', 15473 popoverContent: 'panel-body', 15474 // day grid 15475 // for left/right border color when border is inset from edges (all-day in agenda view) 15476 // avoid `panel` class b/c don't want margins/radius. only border color. 15477 headerRow: 'panel-default', 15478 dayRow: 'panel-default', 15479 // list view 15480 listView: 'panel panel-default' 15481}; 15482Bootstrap3Theme.prototype.baseIconClass = 'glyphicon'; 15483Bootstrap3Theme.prototype.iconClasses = { 15484 close: 'glyphicon-remove', 15485 prev: 'glyphicon-chevron-left', 15486 next: 'glyphicon-chevron-right', 15487 prevYear: 'glyphicon-backward', 15488 nextYear: 'glyphicon-forward' 15489}; 15490Bootstrap3Theme.prototype.iconOverrideOption = 'bootstrapGlyphicons'; 15491Bootstrap3Theme.prototype.iconOverrideCustomButtonOption = 'bootstrapGlyphicon'; 15492Bootstrap3Theme.prototype.iconOverridePrefix = 'glyphicon-'; 15493 15494 15495/***/ }), 15496/* 263 */ 15497/***/ (function(module, exports, __webpack_require__) { 15498 15499Object.defineProperty(exports, "__esModule", { value: true }); 15500var tslib_1 = __webpack_require__(2); 15501var Theme_1 = __webpack_require__(22); 15502var Bootstrap4Theme = /** @class */ (function (_super) { 15503 tslib_1.__extends(Bootstrap4Theme, _super); 15504 function Bootstrap4Theme() { 15505 return _super !== null && _super.apply(this, arguments) || this; 15506 } 15507 return Bootstrap4Theme; 15508}(Theme_1.default)); 15509exports.default = Bootstrap4Theme; 15510Bootstrap4Theme.prototype.classes = { 15511 widget: 'fc-bootstrap4',
15512 tableGrid: 'table-bordered', 15513 tableList: 'table', 15514 tableListHeading: 'table-active', 15515 buttonGroup: 'btn-group', 15516 button: 'btn btn-primary', 15517 stateActive: 'active', 15518 stateDisabled: 'disabled', 15519 today: 'alert alert-info', 15520 popover: 'card card-primary', 15521 popoverHeader: 'card-header', 15522 popoverContent: 'card-body', 15523 // day grid 15524 // for left/right border color when border is inset from edges (all-day in agenda view) 15525 // avoid `table` class b/c don't want margins/padding/structure. only border color. 15526 headerRow: 'table-bordered', 15527 dayRow: 'table-bordered', 15528 // list view 15529 listView: 'card card-primary' 15530}; 15531Bootstrap4Theme.prototype.baseIconClass = 'fa'; 15532Bootstrap4Theme.prototype.iconClasses = { 15533 close: 'fa-times', 15534 prev: 'fa-chevron-left', 15535 next: 'fa-chevron-right', 15536 prevYear: 'fa-angle-double-left', 15537 nextYear: 'fa-angle-double-right' 15538}; 15539Bootstrap4Theme.prototype.iconOverrideOption = 'bootstrapFontAwesome'; 15540Bootstrap4Theme.prototype.iconOverrideCustomButtonOption = 'bootstrapFontAwesome'; 15541Bootstrap4Theme.prototype.iconOverridePrefix = 'fa-'; 15542 15543 15544/***/ }), 15545/* 264 */ 15546/***/ (function(module, exports, __webpack_require__) { 15547 15548Object.defineProperty(exports, "__esModule", { value: true }); 15549var ViewRegistry_1 = __webpack_require__(24); 15550var BasicView_1 = __webpack_require__(67); 15551var MonthView_1 = __webpack_require__(246); 15552ViewRegistry_1.defineView('basic', { 15553 'class': BasicView_1.default 15554}); 15555ViewRegistry_1.defineView('basicDay', { 15556 type: 'basic', 15557 duration: { days: 1 } 15558}); 15559ViewRegistry_1.defineView('basicWeek', { 15560 type: 'basic', 15561 duration: { weeks: 1 } 15562}); 15563ViewRegistry_1.defineView('month', { 15564 'class': MonthView_1.default, 15565 duration: { months: 1 }, 15566 defaults: { 15567 fixedWeekCount: true 15568 } 15569}); 15570 15571 15572/***/ }), 15573/* 265 */ 15574/***/ (function(module, exports, __webpack_require__) { 15575 15576Object.defineProperty(exports, "__esModule", { value: true }); 15577var ViewRegistry_1 = __webpack_require__(24); 15578var AgendaView_1 = __webpack_require__(238); 15579ViewRegistry_1.defineView('agenda', { 15580 'class': AgendaView_1.default, 15581 defaults: { 15582 allDaySlot: true, 15583 slotDuration: '00:30:00', 15584 slotEventOverlap: true // a bad name. confused with overlap/constraint system 15585 } 15586}); 15587ViewRegistry_1.defineView('agendaDay', { 15588 type: 'agenda', 15589 duration: { days: 1 } 15590}); 15591ViewRegistry_1.defineView('agendaWeek', { 15592 type: 'agenda', 15593 duration: { weeks: 1 } 15594}); 15595 15596 15597/***/ }), 15598/* 266 */ 15599/***/ (function(module, exports, __webpack_require__) { 15600 15601Object.defineProperty(exports, "__esModule", { value: true }); 15602var ViewRegistry_1 = __webpack_require__(24); 15603var ListView_1 = __webpack_require__(248); 15604ViewRegistry_1.defineView('list', { 15605 'class': ListView_1.default, 15606 buttonTextKey: 'list', 15607 defaults: { 15608 buttonText: 'list', 15609 listDayFormat: 'LL', 15610 noEventsMessage: 'No events to display' 15611 } 15612}); 15613ViewRegistry_1.defineView('listDay', { 15614 type: 'list', 15615 duration: { days: 1 }, 15616 defaults: { 15617 listDayFormat: 'dddd' // day-of-week is all we need. full date is probably in header 15618 } 15619}); 15620ViewRegistry_1.defineView('listWeek', { 15621 type: 'list', 15622 duration: { weeks: 1 }, 15623 defaults: { 15624 listDayFormat: 'dddd', 15625 listDayAltFormat: 'LL' 15626 } 15627}); 15628ViewRegistry_1.defineView('listMonth', { 15629 type: 'list', 15630 duration: { month: 1 }, 15631 defaults: { 15632 listDayAltFormat: 'dddd' // day-of-week is nice-to-have 15633 } 15634}); 15635ViewRegistry_1.defineView('listYear', { 15636 type: 'list', 15637 duration: { year: 1 }, 15638 defaults: { 15639 listDayAltFormat: 'dddd' // day-of-week is nice-to-have 15640 } 15641}); 15642 15643 15644/***/ }), 15645/* 267 */ 15646/***/ (function(module, exports) { 15647 15648Object.defineProperty(exports, "__esModule", { value: true }); 15649 15650 15651/***/ }) 15652/******/ ]); 15653});
vendor: 42,773 bytes, lines 15654-15655
15654!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],e):(t=t||self).parsley=e(t.jQuery)}(this,function(h){"use strict";function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function l(){return(l=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var r in i)Object.prototype.hasOwnProperty.call(i,r)&&(t[r]=i[r])}return t}).apply(this,arguments)}function o(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if(!(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t)))return;var i=[],r=!0,n=!1,s=void 0;try{for(var a,o=t[Symbol.iterator]();!(r=(a=o.next()).done)&&(i.push(a.value),!e||i.length!==e);r=!0);}catch(t){n=!0,s=t}finally{try{r||null==o.return||o.return()}finally{if(n)throw s}}return i}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function u(t){return function(t){if(Array.isArray(t)){for(var e=0,i=new Array(t.length);e<t.length;e++)i[e]=t[e];return i}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var t=1,e={},d={attr:function(t,e,i){var r,n,s,a=new RegExp("^"+e,"i");if(void 0===i)i={};else for(r in i)i.hasOwnProperty(r)&&delete i[r];if(!t)return i;for(r=(s=t.attributes).length;r--;)(n=s[r])&&n.specified&&a.test(n.name)&&(i[this.camelize(n.name.slice(e.length))]=this.deserializeValue(n.value));return i},checkAttr:function(t,e,i){return t.hasAttribute(e+i)},setAttr:function(t,e,i,r){t.setAttribute(this.dasherize(e+i),String(r))},getType:function(t){return t.getAttribute("type")||"text"},generateID:function(){return""+t++},deserializeValue:function(e){var t;try{return e?"true"==e||"false"!=e&&("null"==e?null:isNaN(t=Number(e))?/^[\[\{]/.test(e)?JSON.parse(e):e:t):e}catch(t){return e}},camelize:function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},dasherize:function(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()},warn:function(){var t;window.console&&"function"==typeof window.console.warn&&(t=window.console).warn.apply(t,arguments)},warnOnce:function(t){e[t]||(e[t]=!0,this.warn.apply(this,arguments))},_resetWarnings:function(){e={}},trimString:function(t){return t.replace(/^\s+|\s+$/g,"")},parse:{date:function(t){var e=t.match(/^(\d{4,})-(\d\d)-(\d\d)$/);if(!e)return null;var i=o(e.map(function(t){return parseInt(t,10)}),4),r=(i[0],i[1]),n=i[2],s=i[3],a=new Date(r,n-1,s);return a.getFullYear()!==r||a.getMonth()+1!==n||a.getDate()!==s?null:a},string:function(t){return t},integer:function(t){return isNaN(t)?null:parseInt(t,10)},number:function(t){if(isNaN(t))throw null;return parseFloat(t)},boolean:function(t){return!/^\s*false\s*$/i.test(t)},object:function(t){return d.deserializeValue(t)},regexp:function(t){var e="";return t=/^\/.*\/(?:[gimy]*)$/.test(t)?(e=t.replace(/.*\/([gimy]*)$/,"$1"),t.replace(new RegExp("^/(.*?)/"+e+"$"),"$1")):"^"+t+"$",new RegExp(t,e)}},parseRequirement:function(t,e){var i=this.parse[t||"string"];if(!i)throw'Unknown requirement specification: "'+t+'"';var r=i(e);if(null===r)throw"Requirement is not a ".concat(t,': "').concat(e,'"');return r},namespaceEvents:function(t,e){return(t=this.trimString(t||"").split(/\s+/))[0]?h.map(t,function(t){return"".concat(t,".").concat(e)}).join(" "):""},difference:function(t,i){var r=[];return h.each(t,function(t,e){-1==i.indexOf(e)&&r.push(e)}),r},all:function(t){return h.when.apply(h,u(t).concat([42,42]))},objectCreate:Object.create||function(t){if(1<arguments.length)throw Error("Second argument not supported");if("object"!=n(t))throw TypeError("Argument must be an object");i.prototype=t;var e=new i;return i.prototype=null,e},_SubmitSelector:'input[type="submit"], button:submit'};function i(){}function r(){this.__id__=d.generateID()}var s={namespace:"data-parsley-",inputs:"input, textarea, select",excluded:"input[type=button], input[type=submit], input[type=reset], input[type=hidden]",priorityEnabled:!0,multiple:null,group:null,uiEnabled:!0,validationThreshold:3,focus:"first",trigger:!1,triggerAfterFailure:"input",errorClass:"parsley-error",successClass:"parsley-success",classHandler:function(){},errorsContainer:function(){},errorsWrapper:'<ul class="parsley-errors-list"></ul>',errorTemplate:"<li></li>"};r.prototype={asyncSupport:!0,_pipeAccordingToValidationResult:function(){function t(){var t=h.Deferred();return!0!==e.validationResult&&t.reject(),t.resolve().promise()}var e=this;return[t,t]},actualizeOptions:function(){return d.attr(this.element,this.options.namespace,this.domOptions),this.parent&&this.parent.actualizeOptions&&this.parent.actualizeOptions(),this},_resetOptions:function(t){for(var e in this.domOptions=d.objectCreate(this.parent.options),this.options=d.objectCreate(this.domOptions),t)t.hasOwnProperty(e)&&(this.options[e]=t[e]);this.actualizeOptions()},_listeners:null,on:function(t,e){return this._listeners=this._listeners||{},(this._listeners[t]=this._listeners[t]||[]).push(e),this},subscribe:function(t,e){h.listenTo(this,t.toLowerCase(),e)},off:function(t,e){var i=this._listeners&&this._listeners[t];if(i)if(e)for(var r=i.length;r--;)i[r]===e&&i.splice(r,1);else delete this._listeners[t];return this},unsubscribe:function(t){h.unsubscribeTo(this,t.toLowerCase())},trigger:function(t,e,i){e=e||this;var r,n=this._listeners&&this._listeners[t];if(n)for(var s=n.length;s--;)if(!1===(r=n[s].call(e,e,i)))return r;return!this.parent||this.parent.trigger(t,e,i)},asyncIsValid:function(t,e){return d.warnOnce("asyncIsValid is deprecated; please use whenValid instead"),this.whenValid({group:t,force:e})},_findRelated:function(){return this.options.multiple?h(this.parent.element.querySelectorAll("[".concat(this.options.namespace,'multiple="').concat(this.options.multiple,'"]'))):this.$element}};function c(t){h.extend(!0,this,t)}c.prototype={validate:function(t,e){if(this.fn)return 3<arguments.length&&(e=[].slice.call(arguments,1,-1)),this.fn(t,e);if(Array.isArray(t)){if(!this.validateMultiple)throw"Validator `"+this.name+"` does not handle multiple values";return this.validateMultiple.apply(this,arguments)}var i=arguments[arguments.length-1];if(this.validateDate&&i._isDateInput())return arguments[0]=d.parse.date(arguments[0]),null!==arguments[0]&&this.validateDate.apply(this,arguments);if(this.validateNumber)return!t||!isNaN(t)&&(arguments[0]=parseFloat(arguments[0]),this.validateNumber.apply(this,arguments));if(this.validateString)return this.validateString.apply(this,arguments);throw"Validator `"+this.name+"` only handles multiple values"},parseRequirements:function(t,e){if("string"!=typeof t)return Array.isArray(t)?t:[t];var i=this.requirementType;if(Array.isArray(i)){for(var r=function(t,e){var i=t.match(/^\s*\[(.*)\]\s*$/);if(!i)throw'Requirement is not an array: "'+t+'"';var r=i[1].split(",").map(d.trimString);if(r.length!==e)throw"Requirement has "+r.length+" values when "+e+" are needed";return r}(t,i.length),n=0;n<r.length;n++)r[n]=d.parseRequirement(i[n],r[n]);return r}return h.isPlainObject(i)?function(t,e,i){var r=null,n={};for(var s in t)if(s){var a=i(s);"string"==typeof a&&(a=d.parseRequirement(t[s],a)),n[s]=a}else r=d.parseRequirement(t[s],e);return[r,n]}(i,t,e):[d.parseRequirement(i,t)]},requirementType:"string",priority:2};function a(t,e){this.__class__="ValidatorRegistry",this.locale="en",this.init(t||{},e||{})}var p={email:/^((([a-zA-Z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-zA-Z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))$/,number:/^-?(\d*\.)?\d+(e[-+]?\d+)?$/i,integer:/^-?\d+$/,digits:/^\d+$/,alphanum:/^\w+$/i,date:{test:function(t){return null!==d.parse.date(t)}},url:new RegExp("^(?:(?:https?|ftp)://)?(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-zA-Z\\u00a1-\\uffff0-9]-*)*[a-zA-Z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-zA-Z\\u00a1-\\uffff0-9]-*)*[a-zA-Z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-zA-Z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:/\\S*)?$")};p.range=p.number;function f(t){var e=(""+t).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return e?Math.max(0,(e[1]?e[1].length:0)-(e[2]?+e[2]:0)):0}function m(s,a){return function(t){for(var e=arguments.length,i=new Array(1<e?e-1:0),r=1;r<e;r++)i[r-1]=arguments[r];return i.pop(),a.apply(void 0,[t].concat(u((n=s,i.map(d.parse[n])))));var n}}function g(t){return{validateDate:m("date",t),validateNumber:m("number",t),requirementType:t.length<=2?"string":["string","string"],priority:30}}a.prototype={init:function(t,e){for(var i in this.catalog=e,this.validators=l({},this.validators),t)this.addValidator(i,t[i].fn,t[i].priority);window.Parsley.trigger("parsley:validator:init")},setLocale:function(t){if(void 0===this.catalog[t])throw new Error(t+" is not available in the catalog");return this.locale=t,this},addCatalog:function(t,e,i){return"object"===n(e)&&(this.catalog[t]=e),!0===i?this.setLocale(t):this},addMessage:function(t,e,i){return void 0===this.catalog[t]&&(this.catalog[t]={}),this.catalog[t][e]=i,this},addMessages:function(t,e){for(var i in e)this.addMessage(t,i,e[i]);return this},addValidator:function(t,e,i){if(this.validators[t])d.warn('Validator "'+t+'" is already defined.');else if(s.hasOwnProperty(t))return void d.warn('"'+t+'" is a restricted keyword and is not a valid validator name.');return this._setValidator.apply(this,arguments)},hasValidator:function(t){return!!this.validators[t]},updateValidator:function(t,e,i){return this.validators[t]?this._setValidator.apply(this,arguments):(d.warn('Validator "'+t+'" is not already defined.'),this.addValidator.apply(this,arguments))},removeValidator:function(t){return this.validators[t]||d.warn('Validator "'+t+'" is not defined.'),delete this.validators[t],this},_setValidator:function(t,e,i){for(var r in"object"!==n(e)&&(e={fn:e,priority:i}),e.validate||(e=new c(e)),(this.validators[t]=e).messages||{})this.addMessage(r,t,e.messages[r]);return this},getErrorMessage:function(t){var e;"type"===t.name?e=(this.catalog[this.locale][t.name]||{})[t.requirements]:e=this.formatMessage(this.catalog[this.locale][t.name],t.requirements);return e||this.catalog[this.locale].defaultMessage||this.catalog.en.defaultMessage},formatMessage:function(t,e){if("object"!==n(e))return"string"==typeof t?t.replace(/%s/i,e):"";for(var i in e)t=this.formatMessage(t,e[i]);return t},validators:{notblank:{validateString:function(t){return/\S/.test(t)},priority:2},required:{validateMultiple:function(t){return 0<t.length},validateString:function(t){return/\S/.test(t)},priority:512},type:{validateString:function(t,e,i){var r=2<arguments.length&&void 0!==i?i:{},n=r.step,s=void 0===n?"any":n,a=r.base,o=void 0===a?0:a,l=p[e];if(!l)throw new Error("validator type `"+e+"` is not supported");if(!t)return!0;if(!l.test(t))return!1;if("number"===e&&!/^any$/i.test(s||"")){var u=Number(t),d=Math.max(f(s),f(o));if(f(u)>d)return!1;var h=function(t){return Math.round(t*Math.pow(10,d))};if((h(u)-h(o))%h(s)!=0)return!1}return!0},requirementType:{"":"string",step:"string",base:"number"},priority:256},pattern:{validateString:function(t,e){return!t||e.test(t)},requirementType:"regexp",priority:64},minlength:{validateString:function(t,e){return!t||t.length>=e},requirementType:"integer",priority:30},maxlength:{validateString:function(t,e){return t.length<=e},requirementType:"integer",priority:30},length:{validateString:function(t,e,i){return!t||t.length>=e&&t.length<=i},requirementType:["integer","integer"],priority:30},mincheck:{validateMultiple:function(t,e){return t.length>=e},requirementType:"integer",priority:30},maxcheck:{validateMultiple:function(t,e){return t.length<=e},requirementType:"integer",priority:30},check:{validateMultiple:function(t,e,i){return t.length>=e&&t.length<=i},requirementType:["integer","integer"],priority:30},min:g(function(t,e){return e<=t}),max:g(function(t,e){return t<=e}),range:g(function(t,e,i){return e<=t&&t<=i}),equalto:{validateString:function(t,e){if(!t)return!0;var i=h(e);return i.length?t===i.val():t===e},priority:256},euvatin:{validateString:function(t){if(!t)return!0;return/^[A-Z][A-Z][A-Za-z0-9 -]{2,}$/.test(t)},priority:30}}};var v={};v.Form={_actualizeTriggers:function(){var e=this;this.$element.on("submit.Parsley",function(t){e.onSubmitValidate(t)}),this.$element.on("click.Parsley",d._SubmitSelector,function(t){e.onSubmitButton(t)}),!1!==this.options.uiEnabled&&this.element.setAttribute("novalidate","")},focus:function(){if(!(this._focusedField=null)===this.validationResult||"none"===this.options.focus)return null;for(var t=0;t<this.fields.length;t++){var e=this.fields[t];if(!0!==e.validationResult&&0<e.validationResult.length&&void 0===e.options.noFocus&&(this._focusedField=e.$element,"first"===this.options.focus))break}return null===this._focusedField?null:this._focusedField.focus()},_destroyUI:function(){this.$element.off(".Parsley")}},v.Field={_reflowUI:function(){if(this._buildUI(),this._ui){var t=function t(e,i,r){for(var n=[],s=[],a=0;a<e.length;a++){for(var o=!1,l=0;l<i.length;l++)if(e[a].assert.name===i[l].assert.name){o=!0;break}o?s.push(e[a]):n.push(e[a])}return{kept:s,added:n,removed:r?[]:t(i,e,!0).added}}(this.validationResult,this._ui.lastValidationResult);this._ui.lastValidationResult=this.validationResult,this._manageStatusClass(),this._manageErrorsMessages(t),this._actualizeTriggers(),!t.kept.length&&!t.added.length||this._failedOnce||(this._failedOnce=!0,this._actualizeTriggers())}},getErrorsMessages:function(){if(!0===this.validationResult)return[];for(var t=[],e=0;e<this.validationResult.length;e++)t.push(this.validationResult[e].errorMessage||this._getErrorMessage(this.validationResult[e].assert));return t},addError:function(t,e){var i=1<arguments.length&&void 0!==e?e:{},r=i.message,n=i.assert,s=i.updateClass,a=void 0===s||s;this._buildUI(),this._addError(t,{message:r,assert:n}),a&&this._errorClass()},updateError:function(t,e){var i=1<arguments.length&&void 0!==e?e:{},r=i.message,n=i.assert,s=i.updateClass,a=void 0===s||s;this._buildUI(),this._updateError(t,{message:r,assert:n}),a&&this._errorClass()},removeError:function(t,e){var i=(1<arguments.length&&void 0!==e?e:{}).updateClass,r=void 0===i||i;this._buildUI(),this._removeError(t),r&&this._manageStatusClass()},_manageStatusClass:function(){this.hasConstraints()&&this.needsValidation()&&!0===this.validationResult?this._successClass():0<this.validationResult.length?this._errorClass():this._resetClass()},_manageErrorsMessages:function(t){if(void 0===this.options.errorsMessagesDisabled){if(void 0!==this.options.errorMessage)return t.added.length||t.kept.length?(this._insertErrorWrapper(),0===this._ui.$errorsWrapper.find(".parsley-custom-error-message").length&&this._ui.$errorsWrapper.append(h(this.options.errorTemplate).addClass("parsley-custom-error-message")),this._ui.$errorClassHandler.attr("aria-describedby",this._ui.errorsWrapperId),this._ui.$errorsWrapper.addClass("filled").attr("aria-hidden","false").find(".parsley-custom-error-message").html(this.options.errorMessage)):(this._ui.$errorClassHandler.removeAttr("aria-describedby"),this._ui.$errorsWrapper.removeClass("filled").attr("aria-hidden","true").find(".parsley-custom-error-message").remove());for(var e=0;e<t.removed.length;e++)this._removeError(t.removed[e].assert.name);for(e=0;e<t.added.length;e++)this._addError(t.added[e].assert.name,{message:t.added[e].errorMessage,assert:t.added[e].assert});for(e=0;e<t.kept.length;e++)this._updateError(t.kept[e].assert.name,{message:t.kept[e].errorMessage,assert:t.kept[e].assert})}},_addError:function(t,e){var i=e.message,r=e.assert;this._insertErrorWrapper(),this._ui.$errorClassHandler.attr("aria-describedby",this._ui.errorsWrapperId),this._ui.$errorsWrapper.addClass("filled").attr("aria-hidden","false").append(h(this.options.errorTemplate).addClass("parsley-"+t).html(i||this._getErrorMessage(r)))},_updateError:function(t,e){var i=e.message,r=e.assert;this._ui.$errorsWrapper.addClass("filled").find(".parsley-"+t).html(i||this._getErrorMessage(r))},_removeError:function(t){this._ui.$errorClassHandler.removeAttr("aria-describedby"),this._ui.$errorsWrapper.removeClass("filled").attr("aria-hidden","true").find(".parsley-"+t).remove()},_getErrorMessage:function(t){var e=t.name+"Message";return void 0!==this.options[e]?window.Parsley.formatMessage(this.options[e],t.requirements):window.Parsley.getErrorMessage(t)},_buildUI:function(){if(!this._ui&&!1!==this.options.uiEnabled){var t={};this.element.setAttribute(this.options.namespace+"id",this.__id__),t.$errorClassHandler=this._manageClassHandler(),t.errorsWrapperId="parsley-id-"+(this.options.multiple?"multiple-"+this.options.multiple:this.__id__),t.$errorsWrapper=h(this.options.errorsWrapper).attr("id",t.errorsWrapperId),t.lastValidationResult=[],t.validationInformationVisible=!1,this._ui=t}},_manageClassHandler:function(){if("string"==typeof this.options.classHandler&&h(this.options.classHandler).length)return h(this.options.classHandler);var t=this.options.classHandler;if("string"==typeof this.options.classHandler&&"function"==typeof window[this.options.classHandler]&&(t=window[this.options.classHandler]),"function"==typeof t){var e=t.call(this,this);if(void 0!==e&&e.length)return e}else{if("object"===n(t)&&t instanceof jQuery&&t.length)return t;t&&d.warn("The class handler `"+t+"` does not exist in DOM nor as a global JS function")}return this._inputHolder()},_inputHolder:function(){return this.options.multiple&&"SELECT"!==this.element.nodeName?this.$element.parent():this.$element},_insertErrorWrapper:function(){var t=this.options.errorsContainer;if(0!==this._ui.$errorsWrapper.parent().length)return this._ui.$errorsWrapper.parent();if("string"==typeof t){if(h(t).length)return h(t).append(this._ui.$errorsWrapper);"function"==typeof window[t]?t=window[t]:d.warn("The errors container `"+t+"` does not exist in DOM nor as a global JS function")}return"function"==typeof t&&(t=t.call(this,this)),"object"===n(t)&&t.length?t.append(this._ui.$errorsWrapper):this._inputHolder().after(this._ui.$errorsWrapper)},_actualizeTriggers:function(){var t,e=this,i=this._findRelated();i.off(".Parsley"),this._failedOnce?i.on(d.namespaceEvents(this.options.triggerAfterFailure,"Parsley"),function(){e._validateIfNeeded()}):(t=d.namespaceEvents(this.options.trigger,"Parsley"))&&i.on(t,function(t){e._validateIfNeeded(t)})},_validateIfNeeded:function(t){var e=this;t&&/key|input/.test(t.type)&&(!this._ui||!this._ui.validationInformationVisible)&&this.getValue().length<=this.options.validationThreshold||(this.options.debounce?(window.clearTimeout(this._debounced),this._debounced=window.setTimeout(function(){return e.validate()},this.options.debounce)):this.validate())},_resetUI:function(){this._failedOnce=!1,this._actualizeTriggers(),void 0!==this._ui&&(this._ui.$errorsWrapper.removeClass("filled").children().remove(),this._resetClass(),this._ui.lastValidationResult=[],this._ui.validationInformationVisible=!1)},_destroyUI:function(){this._resetUI(),void 0!==this._ui&&this._ui.$errorsWrapper.remove(),delete this._ui},_successClass:function(){this._ui.validationInformationVisible=!0,this._ui.$errorClassHandler.removeClass(this.options.errorClass).addClass(this.options.successClass)},_errorClass:function(){this._ui.validationInformationVisible=!0,this._ui.$errorClassHandler.removeClass(this.options.successClass).addClass(this.options.errorClass)},_resetClass:function(){this._ui.$errorClassHandler.removeClass(this.options.successClass).removeClass(this.options.errorClass)}};function y(t,e,i){this.__class__="Form",this.element=t,this.$element=h(t),this.domOptions=e,this.options=i,this.parent=window.Parsley,this.fields=[],this.validationResult=null}var _={pending:null,resolved:!0,rejected:!1};y.prototype={onSubmitValidate:function(t){var e=this;if(!0!==t.parsley){var i=this._submitSource||this.$element.find(d._SubmitSelector)[0];if(this._submitSource=null,this.$element.find(".parsley-synthetic-submit-button").prop("disabled",!0),!i||null===i.getAttribute("formnovalidate")){window.Parsley._remoteCache={};var r=this.whenValidate({event:t});"resolved"===r.state()&&!1!==this._trigger("submit")||(t.stopImmediatePropagation(),t.preventDefault(),"pending"===r.state()&&r.done(function(){e._submit(i)}))}}},onSubmitButton:function(t){this._submitSource=t.currentTarget},_submit:function(t){if(!1!==this._trigger("submit")){if(t){var e=this.$element.find(".parsley-synthetic-submit-button").prop("disabled",!1);0===e.length&&(e=h('<input class="parsley-synthetic-submit-button" type="hidden">').appendTo(this.$element)),e.attr({name:t.getAttribute("name"),value:t.getAttribute("value")})}this.$element.trigger(l(h.Event("submit"),{parsley:!0}))}},validate:function(t){if(1<=arguments.length&&!h.isPlainObject(t)){d.warnOnce("Calling validate on a parsley form without passing arguments as an object is deprecated.");var e=Array.prototype.slice.call(arguments);t={group:e[0],force:e[1],event:e[2]}}return _[this.whenValidate(t).state()]},whenValidate:function(t){var e,i=this,r=0<arguments.length&&void 0!==t?t:{},n=r.group,s=r.force,a=r.event;(this.submitEvent=a)&&(this.submitEvent=l({},a,{preventDefault:function(){d.warnOnce("Using `this.submitEvent.preventDefault()` is deprecated; instead, call `this.validationResult = false`"),i.validationResult=!1}})),this.validationResult=!0,this._trigger("validate"),this._refreshFields();var o=this._withoutReactualizingFormOptions(function(){return h.map(i.fields,function(t){return t.whenValidate({force:s,group:n})})});return(e=d.all(o).done(function(){i._trigger("success")}).fail(function(){i.validationResult=!1,i.focus(),i._trigger("error")}).always(function(){i._trigger("validated")})).pipe.apply(e,u(this._pipeAccordingToValidationResult()))},isValid:function(t){if(1<=arguments.length&&!h.isPlainObject(t)){d.warnOnce("Calling isValid on a parsley form without passing arguments as an object is deprecated.");var e=Array.prototype.slice.call(arguments);t={group:e[0],force:e[1]}}return _[this.whenValid(t).state()]},whenValid:function(t){var e=this,i=0<arguments.length&&void 0!==t?t:{},r=i.group,n=i.force;this._refreshFields();var s=this._withoutReactualizingFormOptions(function(){return h.map(e.fields,function(t){return t.whenValid({group:r,force:n})})});return d.all(s)},refresh:function(){return this._refreshFields(),this},reset:function(){for(var t=0;t<this.fields.length;t++)this.fields[t].reset();this._trigger("reset")},destroy:function(){this._destroyUI();for(var t=0;t<this.fields.length;t++)this.fields[t].destroy();this.$element.removeData("Parsley"),this._trigger("destroy")},_refreshFields:function(){return this.actualizeOptions()._bindFields()},_bindFields:function(){var n=this,t=this.fields;return this.fields=[],this.fieldsMappedById={},this._withoutReactualizingFormOptions(function(){n.$element.find(n.options.inputs).not(n.options.excluded).not("[".concat(n.options.namespace,"excluded=true]")).each(function(t,e){var i=new window.Parsley.Factory(e,{},n);if("Field"===i.__class__||"FieldMultiple"===i.__class__){var r=i.__class__+"-"+i.__id__;void 0===n.fieldsMappedById[r]&&(n.fieldsMappedById[r]=i,n.fields.push(i))}}),h.each(d.difference(t,n.fields),function(t,e){e.reset()})}),this},_withoutReactualizingFormOptions:function(t){var e=this.actualizeOptions;this.actualizeOptions=function(){return this};var i=t();return this.actualizeOptions=e,i},_trigger:function(t){return this.trigger("form:"+t)}};function b(t,e,i,r,n){var s=window.Parsley._validatorRegistry.validators[e],a=new c(s);l(this,{validator:a,name:e,requirements:i,priority:r=r||t.options[e+"Priority"]||a.priority,isDomConstraint:n=!0===n}),this._parseRequirements(t.options)}function w(t,e,i,r){this.__class__="Field",this.element=t,this.$element=h(t),void 0!==r&&(this.parent=r),this.options=i,this.domOptions=e,this.constraints=[],this.constraintsByName={},this.validationResult=!0,this._bindConstraints()}var F={pending:null,resolved:!0,rejected:!(b.prototype={validate:function(t,e){var i;return(i=this.validator).validate.apply(i,[t].concat(u(this.requirementList),[e]))},_parseRequirements:function(i){var r=this;this.requirementList=this.validator.parseRequirements(this.requirements,function(t){return i[r.name+((e=t)[0].toUpperCase()+e.slice(1))];var e})}})};w.prototype={validate:function(t){1<=arguments.length&&!h.isPlainObject(t)&&(d.warnOnce("Calling validate on a parsley field without passing arguments as an object is deprecated."),t={options:t});var e=this.whenValidate(t);if(!e)return!0;switch(e.state()){case"pending":return null;case"resolved":return!0;case"rejected":return this.validationResult}},whenValidate:function(t){var e,i=this,r=0<arguments.length&&void 0!==t?t:{},n=r.force,s=r.group;if(this.refresh(),!s||this._isInGroup(s))return this.value=this.getValue(),this._trigger("validate"),(e=this.whenValid({force:n,value:this.value,_refreshed:!0}).always(function(){i._reflowUI()}).done(function(){i._trigger("success")}).fail(function(){i._trigger("error")}).always(function(){i._trigger("validated")})).pipe.apply(e,u(this._pipeAccordingToValidationResult()))},hasConstraints:function(){return 0!==this.constraints.length},needsValidation:function(t){return void 0===t&&(t=this.getValue()),!(!t.length&&!this._isRequired()&&void 0===this.options.validateIfEmpty)},_isInGroup:function(t){return Array.isArray(this.options.group)?-1!==h.inArray(t,this.options.group):this.options.group===t},isValid:function(t){if(1<=arguments.length&&!h.isPlainObject(t)){d.warnOnce("Calling isValid on a parsley field without passing arguments as an object is deprecated.");var e=Array.prototype.slice.call(arguments);t={force:e[0],value:e[1]}}var i=this.whenValid(t);return!i||F[i.state()]},whenValid:function(t){var r=this,e=0<arguments.length&&void 0!==t?t:{},i=e.force,n=void 0!==i&&i,s=e.value,a=e.group;if(e._refreshed||this.refresh(),!a||this._isInGroup(a)){if(this.validationResult=!0,!this.hasConstraints())return h.when();if(null==s&&(s=this.getValue()),!this.needsValidation(s)&&!0!==n)return h.when();var o=this._getGroupedConstraints(),l=[];return h.each(o,function(t,e){var i=d.all(h.map(e,function(t){return r._validateConstraint(s,t)}));if(l.push(i),"rejected"===i.state())return!1}),d.all(l)}},_validateConstraint:function(t,e){var i=this,r=e.validate(t,this);return!1===r&&(r=h.Deferred().reject()),d.all([r]).fail(function(t){i.validationResult instanceof Array||(i.validationResult=[]),i.validationResult.push({assert:e,errorMessage:"string"==typeof t&&t})})},getValue:function(){var t;return null==(t="function"==typeof this.options.value?this.options.value(this):void 0!==this.options.value?this.options.value:this.$element.val())?"":this._handleWhitespace(t)},reset:function(){return this._resetUI(),this._trigger("reset")},destroy:function(){this._destroyUI(),this.$element.removeData("Parsley"),this.$element.removeData("FieldMultiple"),this._trigger("destroy")},refresh:function(){return this._refreshConstraints(),this},_refreshConstraints:function(){return this.actualizeOptions()._bindConstraints()},refreshConstraints:function(){return d.warnOnce("Parsley's refreshConstraints is deprecated. Please use refresh"),this.refresh()},addConstraint:function(t,e,i,r){if(window.Parsley._validatorRegistry.validators[t]){var n=new b(this,t,e,i,r);"undefined"!==this.constraintsByName[n.name]&&this.removeConstraint(n.name),this.constraints.push(n),this.constraintsByName[n.name]=n}return this},removeConstraint:function(t){for(var e=0;e<this.constraints.length;e++)if(t===this.constraints[e].name){this.constraints.splice(e,1);break}return delete this.constraintsByName[t],this},updateConstraint:function(t,e,i){return this.removeConstraint(t).addConstraint(t,e,i)},_bindConstraints:function(){for(var t=[],e={},i=0;i<this.constraints.length;i++)!1===this.constraints[i].isDomConstraint&&(t.push(this.constraints[i]),e[this.constraints[i].name]=this.constraints[i]);for(var r in this.constraints=t,this.constraintsByName=e,this.options)this.addConstraint(r,this.options[r],void 0,!0);return this._bindHtml5Constraints()},_bindHtml5Constraints:function(){null!==this.element.getAttribute("required")&&this.addConstraint("required",!0,void 0,!0),null!==this.element.getAttribute("pattern")&&this.addConstraint("pattern",this.element.getAttribute("pattern"),void 0,!0);var t=this.element.getAttribute("min"),e=this.element.getAttribute("max");null!==t&&null!==e?this.addConstraint("range",[t,e],void 0,!0):null!==t?this.addConstraint("min",t,void 0,!0):null!==e&&this.addConstraint("max",e,void 0,!0),null!==this.element.getAttribute("minlength")&&null!==this.element.getAttribute("maxlength")?this.addConstraint("length",[this.element.getAttribute("minlength"),this.element.getAttribute("maxlength")],void 0,!0):null!==this.element.getAttribute("minlength")?this.addConstraint("minlength",this.element.getAttribute("minlength"),void 0,!0):null!==this.element.getAttribute("maxlength")&&this.addConstraint("maxlength",this.element.getAttribute("maxlength"),void 0,!0);var i=d.getType(this.element);return"number"===i?this.addConstraint("type",["number",{step:this.element.getAttribute("step")||"1",base:t||this.element.getAttribute("value")}],void 0,!0):/^(email|url|range|date)$/i.test(i)?this.addConstraint("type",i,void 0,!0):this},_isRequired:function(){return void 0!==this.constraintsByName.required&&!1!==this.constraintsByName.required.requirements},_trigger:function(t){return this.trigger("field:"+t)},_handleWhitespace:function(t){return!0===this.options.trimValue&&d.warnOnce('data-parsley-trim-value="true" is deprecated, please use data-parsley-whitespace="trim"'),"squish"===this.options.whitespace&&(t=t.replace(/\s{2,}/g," ")),"trim"!==this.options.whitespace&&"squish"!==this.options.whitespace&&!0!==this.options.trimValue||(t=d.trimString(t)),t},_isDateInput:function(){var t=this.constraintsByName.type;return t&&"date"===t.requirements},_getGroupedConstraints:function(){if(!1===this.options.priorityEnabled)return[this.constraints];for(var t=[],e={},i=0;i<this.constraints.length;i++){var r=this.constraints[i].priority;e[r]||t.push(e[r]=[]),e[r].push(this.constraints[i])}return t.sort(function(t,e){return e[0].priority-t[0].priority}),t}};function C(){this.__class__="FieldMultiple"}C.prototype={addElement:function(t){return this.$elements.push(t),this},_refreshConstraints:function(){var t;if(this.constraints=[],"SELECT"===this.element.nodeName)return this.actualizeOptions()._bindConstraints(),this;for(var e=0;e<this.$elements.length;e++)if(h("html").has(this.$elements[e]).length){t=this.$elements[e].data("FieldMultiple")._refreshConstraints().constraints;for(var i=0;i<t.length;i++)this.addConstraint(t[i].name,t[i].requirements,t[i].priority,t[i].isDomConstraint)}else this.$elements.splice(e,1);return this},getValue:function(){if("function"==typeof this.options.value)return this.options.value(this);if(void 0!==this.options.value)return this.options.value;if("INPUT"===this.element.nodeName){var t=d.getType(this.element);if("radio"===t)return this._findRelated().filter(":checked").val()||"";if("checkbox"===t){var e=[];return this._findRelated().filter(":checked").each(function(){e.push(h(this).val())}),e}}return"SELECT"===this.element.nodeName&&null===this.$element.val()?[]:this.$element.val()},_init:function(){return this.$elements=[this.$element],this}};function A(t,e,i){this.element=t,this.$element=h(t);var r=this.$element.data("Parsley");if(r)return void 0!==i&&r.parent===window.Parsley&&(r.parent=i,r._resetOptions(r.options)),"object"===n(e)&&l(r.options,e),r;if(!this.$element.length)throw new Error("You must bind Parsley on an existing element.");if(void 0!==i&&"Form"!==i.__class__)throw new Error("Parent instance must be a Form instance");return this.parent=i||window.Parsley,this.init(e)}A.prototype={init:function(t){return this.__class__="Parsley",this.__version__="2.9.2",this.__id__=d.generateID(),this._resetOptions(t),"FORM"===this.element.nodeName||d.checkAttr(this.element,this.options.namespace,"validate")&&!this.$element.is(this.options.inputs)?this.bind("parsleyForm"):this.isMultiple()?this.handleMultiple():this.bind("parsleyField")},isMultiple:function(){var t=d.getType(this.element);return"radio"===t||"checkbox"===t||"SELECT"===this.element.nodeName&&null!==this.element.getAttribute("multiple")},handleMultiple:function(){var t,e,r=this;if(this.options.multiple=this.options.multiple||(t=this.element.getAttribute("name"))||this.element.getAttribute("id"),"SELECT"===this.element.nodeName&&null!==this.element.getAttribute("multiple"))return this.options.multiple=this.options.multiple||this.__id__,this.bind("parsleyFieldMultiple");if(!this.options.multiple)return d.warn("To be bound by Parsley, a radio, a checkbox and a multiple select input must have either a name or a multiple option.",this.$element),this;this.options.multiple=this.options.multiple.replace(/(:|\.|\[|\]|\{|\}|\$)/g,""),t&&h('input[name="'+t+'"]').each(function(t,e){var i=d.getType(e);"radio"!==i&&"checkbox"!==i||e.setAttribute(r.options.namespace+"multiple",r.options.multiple)});for(var i=this._findRelated(),n=0;n<i.length;n++)if(void 0!==(e=h(i.get(n)).data("Parsley"))){this.$element.data("FieldMultiple")||e.addElement(this.$element);break}return this.bind("parsleyField",!0),e||this.bind("parsleyFieldMultiple")},bind:function(t,e){var i;switch(t){case"parsleyForm":i=h.extend(new y(this.element,this.domOptions,this.options),new r,window.ParsleyExtend)._bindFields();break;case"parsleyField":i=h.extend(new w(this.element,this.domOptions,this.options,this.parent),new r,window.ParsleyExtend);break;case"parsleyFieldMultiple":i=h.extend(new w(this.element,this.domOptions,this.options,this.parent),new C,new r,window.ParsleyExtend)._init();break;default:throw new Error(t+"is not a supported Parsley type")}return this.options.multiple&&d.setAttr(this.element,this.options.namespace,"multiple",this.options.multiple),void 0!==e?this.$element.data("FieldMultiple",i):(this.$element.data("Parsley",i),i._actualizeTriggers(),i._trigger("init")),i}};var E=h.fn.jquery.split(".");if(parseInt(E[0])<=1&&parseInt(E[1])<8)throw"The loaded version of jQuery is too old. Please upgrade to 1.8.x or better.";E.forEach||d.warn("Parsley requires ES5 to run properly. Please include https://github.com/es-shims/es5-shim");var x=l(new r,{element:document,$element:h(document),actualizeOptions:null,_resetOptions:null,Factory:A,version:"2.9.2"});l(w.prototype,v.Field,r.prototype),l(y.prototype,v.Form,r.prototype),l(A.prototype,r.prototype),h.fn.parsley=h.fn.psly=function(t){if(1<this.length){var e=[];return this.each(function(){e.push(h(this).parsley(t))}),e}if(0!=this.length)return new A(this[0],t)},void 0===window.ParsleyExtend&&(window.ParsleyExtend={}),x.options=l(d.objectCreate(s),window.ParsleyConfig),window.ParsleyConfig=x.options,window.Parsley=window.psly=x,x.Utils=d,window.ParsleyUtils={},h.each(d,function(t,e){"function"==typeof e&&(window.ParsleyUtils[t]=function(){return d.warnOnce("Accessing `window.ParsleyUtils` is deprecated. Use `window.Parsley.Utils` instead."),d[t].apply(d,arguments)})});var $=window.Parsley._validatorRegistry=new a(window.ParsleyConfig.validators,window.ParsleyConfig.i18n);window.ParsleyValidator={},h.each("setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateValidator removeValidator hasValidator".split(" "),function(t,e){window.Parsley[e]=function(){return $[e].apply($,arguments)},window.ParsleyValidator[e]=function(){var t;return d.warnOnce("Accessing the method '".concat(e,"' through Validator is deprecated. Simply call 'window.Parsley.").concat(e,"(...)'")),(t=window.Parsley)[e].apply(t,arguments)}}),window.Parsley.UI=v,window.ParsleyUI={removeError:function(t,e,i){var r=!0!==i;return d.warnOnce("Accessing UI is deprecated. Call 'removeError' on the instance directly. Please comment in issue 1073 as to your need to call this method."),t.removeError(e,{updateClass:r})},getErrorsMessages:function(t){return d.warnOnce("Accessing UI is deprecated. Call 'getErrorsMessages' on the instance directly."),t.getErrorsMessages()}},h.each("addError updateError".split(" "),function(t,a){window.ParsleyUI[a]=function(t,e,i,r,n){var s=!0!==n;return d.warnOnce("Accessing UI is deprecated. Call '".concat(a,"' on the instance directly. Please comment in issue 1073 as to your need to call this method.")),t[a](e,{message:i,assert:r,updateClass:s})}}),!1!==window.ParsleyConfig.autoBind&&h(function(){h("[data-parsley-validate]").length&&h("[data-parsley-validate]").parsley()});function V(){d.warnOnce("Parsley's pubsub module is deprecated; use the 'on' and 'off' methods on parsley instances or window.Parsley")}var P=h({});function O(e,i){return e.parsleyAdaptedCallback||(e.parsleyAdaptedCallback=function(){var t=Array.prototype.slice.call(arguments,0);t.unshift(this),e.apply(i||P,t)}),e.parsleyAdaptedCallback}var T="parsley:";function M(t){return 0===t.lastIndexOf(T,0)?t.substr(T.length):t}return h.listen=function(t,e){var i;if(V(),"object"===n(arguments[1])&&"function"==typeof arguments[2]&&(i=arguments[1],e=arguments[2]),"function"!=typeof e)throw new Error("Wrong parameters");window.Parsley.on(M(t),O(e,i))},h.listenTo=function(t,e,i){if(V(),!(t instanceof w||t instanceof y))throw new Error("Must give Parsley instance");if("string"!=typeof e||"function"!=typeof i)throw new Error("Wrong parameters");t.on(M(e),O(i))},h.unsubscribe=function(t,e){if(V(),"string"!=typeof t||"function"!=typeof e)throw new Error("Wrong arguments");window.Parsley.off(M(t),e.parsleyAdaptedCallback)},h.unsubscribeTo=function(t,e){if(V(),!(t instanceof w||t instanceof y))throw new Error("Must give Parsley instance");t.off(M(e))},h.unsubscribeAll=function(e){V(),window.Parsley.off(M(e)),h("form,input,textarea,select").each(function(){var t=h(this).data("Parsley");t&&t.off(M(e))})},h.emit=function(t,e){V();var i=e instanceof w||e instanceof y,r=Array.prototype.slice.call(arguments,i?2:1);r.unshift(M(t)),i||(e=window.Parsley),e.trigger.apply(e,u(r))},h.extend(!0,x,{asyncValidators:{default:{fn:function(t){return 200<=t.status&&t.status<300},url:!1},reverse:{fn:function(t){return t.status<200||300<=t.status},url:!1}},addAsyncValidator:function(t,e,i,r){return x.asyncValidators[t]={fn:e,url:i||!1,options:r||{}},this}}),x.addValidator("remote",{requirementType:{"":"string",validator:"string",reverse:"boolean",options:"object"},validateString:function(t,e,i,r){var n,s,a={},o=i.validator||(!0===i.reverse?"reverse":"default");if(void 0===x.asyncValidators[o])throw new Error("Calling an undefined async validator: `"+o+"`");-1<(e=x.asyncValidators[o].url||e).indexOf("{value}")?e=e.replace("{value}",encodeURIComponent(t)):a[r.element.getAttribute("name")||r.element.getAttribute("id")]=t;var l=h.extend(!0,i.options||{},x.asyncValidators[o].options);n=h.extend(!0,{},{url:e,data:a,type:"GET"},l),r.trigger("field:ajaxoptions",r,n),s=h.param(n),void 0===x._remoteCache&&(x._remoteCache={});function u(){var t=x.asyncValidators[o].fn.call(r,d,e,i);return t=t||h.Deferred().reject(),h.when(t)}var d=x._remoteCache[s]=x._remoteCache[s]||h.ajax(n);return d.then(u,u)},priority:-1}),x.on("form:submit",function(){x._remoteCache={}}),r.prototype.addAsyncValidator=function(){return d.warnOnce("Accessing the method `addAsyncValidator` through an instance is deprecated. Simply call `Parsley.addAsyncValidator(...)`"),x.addAsyncValidator.apply(x,arguments)},x.addMessages("en",{defaultMessage:"This value seems to be invalid.",type:{email:"This value should be a valid email.",url:"This value should be a valid url.",number:"This value should be a valid number.",integer:"This value should be a valid integer.",digits:"This value should be digits.",alphanum:"This value should be alphanumeric."},notblank:"This value should not be blank.",required:"This value is required.",pattern:"This value seems to be invalid.",min:"This value should be greater than or equal to %s.",max:"This value should be lower than or equal to %s.",range:"This value should be between %s and %s.",minlength:"This value is too short. It should have %s characters or more.",maxlength:"This value is too long. It should have %s characters or fewer.",length:"This value length is invalid. It should be between %s and %s characters long.",mincheck:"You must select at least %s choices.",maxcheck:"You must select %s choices or fewer.",check:"You must select between %s and %s choices.",equalto:"This value should be the same.",euvatin:"It's not a valid VAT Identification Number."}),x.setLocale("en"),(new function(){var r=this,n=window||global;l(this,{isNativeEvent:function(t){return t.originalEvent&&!1!==t.originalEvent.isTrusted},fakeInputEvent:function(t){r.isNativeEvent(t)&&h(t.target).trigger("input")},misbehaves:function(t){r.isNativeEvent(t)&&(r.behavesOk(t),h(document).on("change.inputevent",t.data.selector,r.fakeInputEvent),r.fakeInputEvent(t))},behavesOk:function(t){r.isNativeEvent(t)&&h(document).off("input.inputevent",t.data.selector,r.behavesOk).off("change.inputevent",t.data.selector,r.misbehaves)},install:function(){if(!n.inputEventPatched){n.inputEventPatched="0.0.3";for(var t=0,e=["select",'input[type="checkbox"]','input[type="radio"]','input[type="file"]'];t<e.length;t++){var i=e[t];h(document).on("input.inputevent",i,{selector:i},r.behavesOk).on("change.inputevent",i,{selector:i},r.misbehaves)}}},uninstall:function(){delete n.inputEventPatched,h(document).off(".inputevent")}})}).install(),x}); 15655//# sourceMappingURL=parsley.min.js.map
15656 15657!function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],a):"object"==typeof exports?a(require("moment"),require("fullcalendar")):a(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};
vendor: 16,384 bytes, line 15657
15657return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p="",a(a.s=438)}([function(a,t){a.exports=e},function(e,t){e.exports=a},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(72);var n=t(1);n.datepickerLocale("af","af",{closeText:"Selekteer",prevText:"Vorige",nextText:"Volgende",currentText:"Vandag",monthNames:["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"],dayNamesShort:["Son","Maa","Din","Woe","Don","Vry","Sat"],dayNamesMin:["So","Ma","Di","Wo","Do","Vr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("af",{buttonText:{year:"Jaar",month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayHtml:"Heeldag",eventLimitText:"Addisionele",noEventsMessage:"Daar is geen gebeurtenisse nie"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"vm":"VM":t?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(74);var n=t(1);n.datepickerLocale("ar-dz","ar-DZ",{closeText:"Ø¥ØºÙØ§Ù",prevText:"<Ø§ÙØ³Ø§Ø¨Ù",nextText:"Ø§ÙØªØ§ÙÙ>",currentText:"اÙÙÙÙ
",monthNames:["جاÙÙÙ","ÙÙÙØ±Ù","Ù
ارس","Ø£ÙØ±ÙÙ","Ù
اÙ","Ø¬ÙØ§Ù","جÙÙÙÙØ©","Ø£ÙØª","سبتÙ
بر","Ø£ÙØªÙبر","ÙÙÙÙ
بر","Ø¯ÙØ³Ù
بر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["Ø§ÙØ£ØØ¯","Ø§ÙØ§Ø«ÙÙÙ","Ø§ÙØ«Ùاثاء","Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡","Ø§ÙØ®Ù
ÙØ³","Ø§ÙØ¬Ù
عة","Ø§ÙØ³Ø¨Øª"],dayNamesShort:["Ø§ÙØ£ØØ¯","Ø§ÙØ§Ø«ÙÙÙ","Ø§ÙØ«Ùاثاء","Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡","Ø§ÙØ®Ù
ÙØ³","Ø§ÙØ¬Ù
عة","Ø§ÙØ³Ø¨Øª"],dayNamesMin:["Ø","Ù","Ø«","ر","Ø®","ج","س"],weekHeader:"Ø£Ø³Ø¨ÙØ¹",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-dz",{buttonText:{month:"Ø´ÙØ±",week:"Ø£Ø³Ø¨ÙØ¹",day:"ÙÙÙ
",list:"Ø£Ø¬ÙØ¯Ø©"},allDayText:"اÙÙÙÙ
ÙÙÙ",eventLimitText:"أخرÙ",noEventsMessage:"Ø£Ù Ø£ØØ¯Ø§Ø« ÙØ¹Ø±Ø¶"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ar-dz",{months:"جاÙÙÙ_ÙÙÙØ±Ù_Ù
ارس_Ø£ÙØ±ÙÙ_Ù
اÙ_Ø¬ÙØ§Ù_جÙÙÙÙØ©_Ø£ÙØª_سبتÙ
بر_Ø£ÙØªÙبر_ÙÙÙÙ
بر_Ø¯ÙØ³Ù
بر".split("_"),monthsShort:"جاÙÙÙ_ÙÙÙØ±Ù_Ù
ارس_Ø£ÙØ±ÙÙ_Ù
اÙ_Ø¬ÙØ§Ù_جÙÙÙÙØ©_Ø£ÙØª_سبتÙ
بر_Ø£ÙØªÙبر_ÙÙÙÙ
بر_Ø¯ÙØ³Ù
بر".split("_"),weekdays:"Ø§ÙØ£ØØ¯_Ø§ÙØ¥Ø«ÙÙÙ_Ø§ÙØ«Ùاثاء_Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡_Ø§ÙØ®Ù
ÙØ³_Ø§ÙØ¬Ù
عة_Ø§ÙØ³Ø¨Øª".split("_"),weekdaysShort:"Ø§ØØ¯_اثÙÙÙ_Ø«ÙØ§Ø«Ø§Ø¡_اربعاء_Ø®Ù
ÙØ³_جÙ
عة_سبت".split("_"),weekdaysMin:"Ø£Ø_إث_Ø«ÙØ§_أر_Ø®Ù
_جÙ
_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اÙÙÙÙ
عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",nextDay:"[غدا عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",nextWeek:"dddd [عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",lastDay:"[Ø£Ù
س عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",lastWeek:"dddd [عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",sameElse:"L"},relativeTime:{future:"ÙÙ %s",past:"Ù
ÙØ° %s",s:"Ø«ÙØ§Ù",ss:"%d ثاÙÙØ©",m:"دÙÙÙØ©",mm:"%d Ø¯ÙØ§Ø¦Ù",h:"ساعة",hh:"%d ساعات",d:"ÙÙÙ
",dd:"%d Ø£ÙØ§Ù
",M:"Ø´ÙØ±",MM:"%d Ø£Ø´ÙØ±",y:"Ø³ÙØ©",yy:"%d سÙÙØ§Øª"},week:{dow:0,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(76);var n=t(1);n.datepickerLocale("ar-kw","ar",{closeText:"Ø¥ØºÙØ§Ù",prevText:"<Ø§ÙØ³Ø§Ø¨Ù",nextText:"Ø§ÙØªØ§ÙÙ>",currentText:"اÙÙÙÙ
",monthNames:["ÙÙØ§Ùر","ÙØ¨Ø±Ø§Ùر","Ù
ارس","أبرÙÙ","Ù
اÙÙ","ÙÙÙÙÙ","ÙÙÙÙÙ","أغسطس","سبتÙ
بر","Ø£ÙØªÙبر","ÙÙÙÙ
بر","Ø¯ÙØ³Ù
بر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["Ø§ÙØ£ØØ¯","Ø§ÙØ§Ø«ÙÙÙ","Ø§ÙØ«Ùاثاء","Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡","Ø§ÙØ®Ù
ÙØ³","Ø§ÙØ¬Ù
عة","Ø§ÙØ³Ø¨Øª"],dayNamesShort:["Ø£ØØ¯","اثÙÙÙ","Ø«ÙØ§Ø«Ø§Ø¡","أربعاء","Ø®Ù
ÙØ³","جÙ
عة","سبت"],dayNamesMin:["Ø","Ù","Ø«","ر","Ø®","ج","س"],weekHeader:"Ø£Ø³Ø¨ÙØ¹",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-kw",{buttonText:{month:"Ø´ÙØ±",week:"Ø£Ø³Ø¨ÙØ¹",day:"ÙÙÙ
",list:"Ø£Ø¬ÙØ¯Ø©"},allDayText:"اÙÙÙÙ
ÙÙÙ",eventLimitText:"أخرÙ",noEventsMessage:"Ø£Ù Ø£ØØ¯Ø§Ø« ÙØ¹Ø±Ø¶"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ar-kw",{months:"ÙÙØ§Ùر_ÙØ¨Ø±Ø§Ùر_Ù
ارس_أبرÙÙ_Ù
اÙ_ÙÙÙÙÙ_ÙÙÙÙÙØ²_غشت_Ø´ØªÙØ¨Ø±_Ø£ÙØªÙبر_ÙÙÙØ¨Ø±_Ø¯Ø¬ÙØ¨Ø±".split("_"),monthsShort:"ÙÙØ§Ùر_ÙØ¨Ø±Ø§Ùر_Ù
ارس_أبرÙÙ_Ù
اÙ_ÙÙÙÙÙ_ÙÙÙÙÙØ²_غشت_Ø´ØªÙØ¨Ø±_Ø£ÙØªÙبر_ÙÙÙØ¨Ø±_Ø¯Ø¬ÙØ¨Ø±".split("_"),weekdays:"Ø§ÙØ£ØØ¯_Ø§ÙØ¥ØªÙÙÙ_Ø§ÙØ«Ùاثاء_Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡_Ø§ÙØ®Ù
ÙØ³_Ø§ÙØ¬Ù
عة_Ø§ÙØ³Ø¨Øª".split("_"),weekdaysShort:"Ø§ØØ¯_اتÙÙÙ_Ø«ÙØ§Ø«Ø§Ø¡_اربعاء_Ø®Ù
ÙØ³_جÙ
عة_سبت".split("_"),weekdaysMin:"Ø_Ù_Ø«_ر_Ø®_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اÙÙÙÙ
عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",nextDay:"[غدا عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",nextWeek:"dddd [عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",lastDay:"[Ø£Ù
س عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",lastWeek:"dddd [عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",sameElse:"L"},relativeTime:{future:"ÙÙ %s",past:"Ù
ÙØ° %s",s:"Ø«ÙØ§Ù",ss:"%d ثاÙÙØ©",m:"دÙÙÙØ©",mm:"%d Ø¯ÙØ§Ø¦Ù",h:"ساعة",hh:"%d ساعات",d:"ÙÙÙ
",dd:"%d Ø£ÙØ§Ù
",M:"Ø´ÙØ±",MM:"%d Ø£Ø´ÙØ±",y:"Ø³ÙØ©",yy:"%d سÙÙØ§Øª"},week:{dow:0,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(78);var n=t(1);n.datepickerLocale("ar-ly","ar",{closeText:"Ø¥ØºÙØ§Ù",prevText:"<Ø§ÙØ³Ø§Ø¨Ù",nextText:"Ø§ÙØªØ§ÙÙ>",currentText:"اÙÙÙÙ
",monthNames:["ÙÙØ§Ùر","ÙØ¨Ø±Ø§Ùر","Ù
ارس","أبرÙÙ","Ù
اÙÙ","ÙÙÙÙÙ","ÙÙÙÙÙ","أغسطس","سبتÙ
بر","Ø£ÙØªÙبر","ÙÙÙÙ
بر","Ø¯ÙØ³Ù
بر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["Ø§ÙØ£ØØ¯","Ø§ÙØ§Ø«ÙÙÙ","Ø§ÙØ«Ùاثاء","Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡","Ø§ÙØ®Ù
ÙØ³","Ø§ÙØ¬Ù
عة","Ø§ÙØ³Ø¨Øª"],dayNamesShort:["Ø£ØØ¯","اثÙÙÙ","Ø«ÙØ§Ø«Ø§Ø¡","أربعاء","Ø®Ù
ÙØ³","جÙ
عة","سبت"],dayNamesMin:["Ø","Ù","Ø«","ر","Ø®","ج","س"],weekHeader:"Ø£Ø³Ø¨ÙØ¹",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-ly",{buttonText:{month:"Ø´ÙØ±",week:"Ø£Ø³Ø¨ÙØ¹",day:"ÙÙÙ
",list:"Ø£Ø¬ÙØ¯Ø©"},allDayText:"اÙÙÙÙ
ÙÙÙ",eventLimitText:"أخرÙ",noEventsMessage:"Ø£Ù Ø£ØØ¯Ø§Ø« ÙØ¹Ø±Ø¶"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},t=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["Ø£ÙÙ Ù
٠ثاÙÙØ©","ثاÙÙØ© ÙØ§ØØ¯Ø©",["ثاÙÙØªØ§Ù","ثاÙÙØªÙÙ"],"%d Ø«ÙØ§Ù","%d ثاÙÙØ©","%d ثاÙÙØ©"],m:["Ø£ÙÙ Ù
٠دÙÙÙØ©","دÙÙÙØ© ÙØ§ØØ¯Ø©",["دÙÙÙØªØ§Ù","دÙÙÙØªÙÙ"],"%d Ø¯ÙØ§Ø¦Ù","%d دÙÙÙØ©","%d دÙÙÙØ©"],h:["Ø£ÙÙ Ù
٠ساعة","ساعة ÙØ§ØØ¯Ø©",["ساعتاÙ","ساعتÙÙ"],"%d ساعات","%d ساعة","%d ساعة"],d:["Ø£ÙÙ Ù
Ù ÙÙÙ
","ÙÙÙ
ÙØ§ØØ¯",["ÙÙÙ
اÙ","ÙÙÙ
ÙÙ"],"%d Ø£ÙØ§Ù
","%d ÙÙÙ
ÙØ§","%d ÙÙÙ
"],M:["Ø£ÙÙ Ù
Ù Ø´ÙØ±","Ø´ÙØ± ÙØ§ØØ¯",["Ø´ÙØ±Ø§Ù","Ø´ÙØ±ÙÙ"],"%d Ø£Ø´ÙØ±","%d Ø´ÙØ±Ø§","%d Ø´ÙØ±"],y:["Ø£ÙÙ Ù
٠عاÙ
","عاÙ
ÙØ§ØØ¯",["عاÙ
اÙ","عاÙ
ÙÙ"],"%d Ø£Ø¹ÙØ§Ù
","%d عاÙ
ÙØ§","%d عاÙ
"]},r=function(e){return function(a,r,s,d){var i=t(a),o=n[e][t(a)];return 2===i&&(o=o[r?0:1]),o.replace(/%d/i,a)}},s=["ÙÙØ§Ùر","ÙØ¨Ø±Ø§Ùر","Ù
ارس","أبرÙÙ","Ù
اÙÙ","ÙÙÙÙÙ","ÙÙÙÙÙ","أغسطس","سبتÙ
بر","Ø£ÙØªÙبر","ÙÙÙÙ
بر","Ø¯ÙØ³Ù
بر"];return e.defineLocale("ar-ly",{months:s,monthsShort:s,weekdays:"Ø§ÙØ£ØØ¯_Ø§ÙØ¥Ø«ÙÙÙ_Ø§ÙØ«Ùاثاء_Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡_Ø§ÙØ®Ù
ÙØ³_Ø§ÙØ¬Ù
عة_Ø§ÙØ³Ø¨Øª".split("_"),weekdaysShort:"Ø£ØØ¯_إثÙÙÙ_Ø«ÙØ§Ø«Ø§Ø¡_أربعاء_Ø®Ù
ÙØ³_جÙ
عة_سبت".split("_"),weekdaysMin:"Ø_Ù_Ø«_ر_Ø®_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/âM/âYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|Ù
/,isPM:function(e){return"Ù
"===e},meridiem:function(e,a,t){return e<12?"ص":"Ù
"},calendar:{sameDay:"[اÙÙÙÙ
Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT",nextDay:"[ØºØ¯ÙØ§ Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT",nextWeek:"dddd [Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT",lastDay:"[Ø£Ù
س Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT",lastWeek:"dddd [Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"Ù
ÙØ° %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/Ø/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"Ø")},week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(80);var n=t(1);n.datepickerLocale("ar-ma","ar",{closeText:"Ø¥ØºÙØ§Ù",prevText:"<Ø§ÙØ³Ø§Ø¨Ù",nextText:"Ø§ÙØªØ§ÙÙ>",currentText:"اÙÙÙÙ
",monthNames:["ÙÙØ§Ùر","ÙØ¨Ø±Ø§Ùر","Ù
ارس","أبرÙÙ","Ù
اÙÙ","ÙÙÙÙÙ","ÙÙÙÙÙ","أغسطس","سبتÙ
بر","Ø£ÙØªÙبر","ÙÙÙÙ
بر","Ø¯ÙØ³Ù
بر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["Ø§ÙØ£ØØ¯","Ø§ÙØ§Ø«ÙÙÙ","Ø§ÙØ«Ùاثاء","Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡","Ø§ÙØ®Ù
ÙØ³","Ø§ÙØ¬Ù
عة","Ø§ÙØ³Ø¨Øª"],dayNamesShort:["Ø£ØØ¯","اثÙÙÙ","Ø«ÙØ§Ø«Ø§Ø¡","أربعاء","Ø®Ù
ÙØ³","جÙ
عة","سبت"],dayNamesMin:["Ø","Ù","Ø«","ر","Ø®","ج","س"],weekHeader:"Ø£Ø³Ø¨ÙØ¹",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-ma",{buttonText:{month:"Ø´ÙØ±",week:"Ø£Ø³Ø¨ÙØ¹",day:"ÙÙÙ
",list:"Ø£Ø¬ÙØ¯Ø©"},allDayText:"اÙÙÙÙ
ÙÙÙ",eventLimitText:"أخرÙ",noEventsMessage:"Ø£Ù Ø£ØØ¯Ø§Ø« ÙØ¹Ø±Ø¶"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ar-ma",{months:"ÙÙØ§Ùر_ÙØ¨Ø±Ø§Ùر_Ù
ارس_أبرÙÙ_Ù
اÙ_ÙÙÙÙÙ_ÙÙÙÙÙØ²_غشت_Ø´ØªÙØ¨Ø±_Ø£ÙØªÙبر_ÙÙÙØ¨Ø±_Ø¯Ø¬ÙØ¨Ø±".split("_"),monthsShort:"ÙÙØ§Ùر_ÙØ¨Ø±Ø§Ùر_Ù
ارس_أبرÙÙ_Ù
اÙ_ÙÙÙÙÙ_ÙÙÙÙÙØ²_غشت_Ø´ØªÙØ¨Ø±_Ø£ÙØªÙبر_ÙÙÙØ¨Ø±_Ø¯Ø¬ÙØ¨Ø±".split("_"),weekdays:"Ø§ÙØ£ØØ¯_Ø§ÙØ¥Ø«ÙÙÙ_Ø§ÙØ«Ùاثاء_Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡_Ø§ÙØ®Ù
ÙØ³_Ø§ÙØ¬Ù
عة_Ø§ÙØ³Ø¨Øª".split("_"),weekdaysShort:"Ø§ØØ¯_اثÙÙÙ_Ø«ÙØ§Ø«Ø§Ø¡_اربعاء_Ø®Ù
ÙØ³_جÙ
عة_سبت".split("_"),weekdaysMin:"Ø_Ù_Ø«_ر_Ø®_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اÙÙÙÙ
عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",nextDay:"[غدا عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",nextWeek:"dddd [عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",lastDay:"[Ø£Ù
س عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",lastWeek:"dddd [عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",sameElse:"L"},relativeTime:{future:"ÙÙ %s",past:"Ù
ÙØ° %s",s:"Ø«ÙØ§Ù",ss:"%d ثاÙÙØ©",m:"دÙÙÙØ©",mm:"%d Ø¯ÙØ§Ø¦Ù",h:"ساعة",hh:"%d ساعات",d:"ÙÙÙ
",dd:"%d Ø£ÙØ§Ù
",M:"Ø´ÙØ±",MM:"%d Ø£Ø´ÙØ±",y:"Ø³ÙØ©",yy:"%d سÙÙØ§Øª"},week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(82);var n=t(1);n.datepickerLocale("ar-sa","ar",{closeText:"Ø¥ØºÙØ§Ù",prevText:"<Ø§ÙØ³Ø§Ø¨Ù",nextText:"Ø§ÙØªØ§ÙÙ>",currentText:"اÙÙÙÙ
",monthNames:["ÙÙØ§Ùر","ÙØ¨Ø±Ø§Ùر","Ù
ارس","أبرÙÙ","Ù
اÙÙ","ÙÙÙÙÙ","ÙÙÙÙÙ","أغسطس","سبتÙ
بر","Ø£ÙØªÙبر","ÙÙÙÙ
بر","Ø¯ÙØ³Ù
بر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["Ø§ÙØ£ØØ¯","Ø§ÙØ§Ø«ÙÙÙ","Ø§ÙØ«Ùاثاء","Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡","Ø§ÙØ®Ù
ÙØ³","Ø§ÙØ¬Ù
عة","Ø§ÙØ³Ø¨Øª"],dayNamesShort:["Ø£ØØ¯","اثÙÙÙ","Ø«ÙØ§Ø«Ø§Ø¡","أربعاء","Ø®Ù
ÙØ³","جÙ
عة","سبت"],dayNamesMin:["Ø","Ù","Ø«","ر","Ø®","ج","س"],weekHeader:"Ø£Ø³Ø¨ÙØ¹",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-sa",{buttonText:{month:"Ø´ÙØ±",week:"Ø£Ø³Ø¨ÙØ¹",day:"ÙÙÙ
",list:"Ø£Ø¬ÙØ¯Ø©"},allDayText:"اÙÙÙÙ
ÙÙÙ",eventLimitText:"أخرÙ",noEventsMessage:"Ø£Ù Ø£ØØ¯Ø§Ø« ÙØ¹Ø±Ø¶"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"Ù¡",2:"Ù¢",3:"Ù£",4:"Ù¤",5:"Ù¥",6:"Ù¦",7:"Ù§",8:"Ù¨",9:"Ù©",0:"Ù "},t={"Ù¡":"1","Ù¢":"2","Ù£":"3","Ù¤":"4","Ù¥":"5","Ù¦":"6","Ù§":"7","Ù¨":"8","Ù©":"9","Ù ":"0"};return e.defineLocale("ar-sa",{months:"ÙÙØ§Ùر_ÙØ¨Ø±Ø§Ùر_Ù
ارس_أبرÙÙ_Ù
اÙÙ_ÙÙÙÙÙ_ÙÙÙÙÙ_أغسطس_سبتÙ
بر_Ø£ÙØªÙبر_ÙÙÙÙ
بر_Ø¯ÙØ³Ù
بر".split("_"),monthsShort:"ÙÙØ§Ùر_ÙØ¨Ø±Ø§Ùر_Ù
ارس_أبرÙÙ_Ù
اÙÙ_ÙÙÙÙÙ_ÙÙÙÙÙ_أغسطس_سبتÙ
بر_Ø£ÙØªÙبر_ÙÙÙÙ
بر_Ø¯ÙØ³Ù
بر".split("_"),weekdays:"Ø§ÙØ£ØØ¯_Ø§ÙØ¥Ø«ÙÙÙ_Ø§ÙØ«Ùاثاء_Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡_Ø§ÙØ®Ù
ÙØ³_Ø§ÙØ¬Ù
عة_Ø§ÙØ³Ø¨Øª".split("_"),weekdaysShort:"Ø£ØØ¯_إثÙÙÙ_Ø«ÙØ§Ø«Ø§Ø¡_أربعاء_Ø®Ù
ÙØ³_جÙ
عة_سبت".split("_"),weekdaysMin:"Ø_Ù_Ø«_ر_Ø®_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|Ù
/,isPM:function(e){return"Ù
"===e},meridiem:function(e,a,t){return e<12?"ص":"Ù
"},calendar:{sameDay:"[اÙÙÙÙ
عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",nextDay:"[غدا عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",nextWeek:"dddd [عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",lastDay:"[Ø£Ù
س عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",lastWeek:"dddd [عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",sameElse:"L"},relativeTime:{future:"ÙÙ %s",past:"Ù
ÙØ° %s",s:"Ø«ÙØ§Ù",ss:"%d ثاÙÙØ©",m:"دÙÙÙØ©",mm:"%d Ø¯ÙØ§Ø¦Ù",h:"ساعة",hh:"%d ساعات",d:"ÙÙÙ
",dd:"%d Ø£ÙØ§Ù
",M:"Ø´ÙØ±",MM:"%d Ø£Ø´ÙØ±",y:"Ø³ÙØ©",yy:"%d سÙÙØ§Øª"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/Ø/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"Ø")},week:{dow:0,doy:6}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(84);var n=t(1);n.datepickerLocale("ar-tn","ar",{closeText:"Ø¥ØºÙØ§Ù",prevText:"<Ø§ÙØ³Ø§Ø¨Ù",nextText:"Ø§ÙØªØ§ÙÙ>",currentText:"اÙÙÙÙ
",monthNames:["ÙÙØ§Ùر","ÙØ¨Ø±Ø§Ùر","Ù
ارس","أبرÙÙ","Ù
اÙÙ","ÙÙÙÙÙ","ÙÙÙÙÙ","أغسطس","سبتÙ
بر","Ø£ÙØªÙبر","ÙÙÙÙ
بر","Ø¯ÙØ³Ù
بر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["Ø§ÙØ£ØØ¯","Ø§ÙØ§Ø«ÙÙÙ","Ø§ÙØ«Ùاثاء",
15657"Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡","Ø§ÙØ®Ù
ÙØ³","Ø§ÙØ¬Ù
عة","Ø§ÙØ³Ø¨Øª"],dayNamesShort:["Ø£ØØ¯","اثÙÙÙ","Ø«ÙØ§Ø«Ø§Ø¡","أربعاء","Ø®Ù
ÙØ³","جÙ
عة","سبت"],dayNamesMin:["Ø","Ù","Ø«","ر","Ø®","ج","س"],weekHeader:"Ø£Ø³Ø¨ÙØ¹",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-tn",{buttonText:{month:"Ø´ÙØ±",week:"Ø£Ø³Ø¨ÙØ¹",day:"ÙÙÙ
",list:"Ø£Ø¬ÙØ¯Ø©"},allDayText:"اÙÙÙÙ
ÙÙÙ",eventLimitText:"أخرÙ",noEventsMessage:"Ø£Ù Ø£ØØ¯Ø§Ø« ÙØ¹Ø±Ø¶"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ar-tn",{months:"جاÙÙÙ_ÙÙÙØ±Ù_Ù
ارس_Ø£ÙØ±ÙÙ_Ù
اÙ_Ø¬ÙØ§Ù_جÙÙÙÙØ©_Ø£ÙØª_سبتÙ
بر_Ø£ÙØªÙبر_ÙÙÙÙ
بر_Ø¯ÙØ³Ù
بر".split("_"),monthsShort:"جاÙÙÙ_ÙÙÙØ±Ù_Ù
ارس_Ø£ÙØ±ÙÙ_Ù
اÙ_Ø¬ÙØ§Ù_جÙÙÙÙØ©_Ø£ÙØª_سبتÙ
بر_Ø£ÙØªÙبر_ÙÙÙÙ
بر_Ø¯ÙØ³Ù
بر".split("_"),weekdays:"Ø§ÙØ£ØØ¯_Ø§ÙØ¥Ø«ÙÙÙ_Ø§ÙØ«Ùاثاء_Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡_Ø§ÙØ®Ù
ÙØ³_Ø§ÙØ¬Ù
عة_Ø§ÙØ³Ø¨Øª".split("_"),weekdaysShort:"Ø£ØØ¯_إثÙÙÙ_Ø«ÙØ§Ø«Ø§Ø¡_أربعاء_Ø®Ù
ÙØ³_جÙ
عة_سبت".split("_"),weekdaysMin:"Ø_Ù_Ø«_ر_Ø®_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اÙÙÙÙ
عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",nextDay:"[غدا عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",nextWeek:"dddd [عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",lastDay:"[Ø£Ù
س عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",lastWeek:"dddd [عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT",sameElse:"L"},relativeTime:{future:"ÙÙ %s",past:"Ù
ÙØ° %s",s:"Ø«ÙØ§Ù",ss:"%d ثاÙÙØ©",m:"دÙÙÙØ©",mm:"%d Ø¯ÙØ§Ø¦Ù",h:"ساعة",hh:"%d ساعات",d:"ÙÙÙ
",dd:"%d Ø£ÙØ§Ù
",M:"Ø´ÙØ±",MM:"%d Ø£Ø´ÙØ±",y:"Ø³ÙØ©",yy:"%d سÙÙØ§Øª"},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(86);var n=t(1);n.datepickerLocale("ar","ar",{closeText:"Ø¥ØºÙØ§Ù",prevText:"<Ø§ÙØ³Ø§Ø¨Ù",nextText:"Ø§ÙØªØ§ÙÙ>",currentText:"اÙÙÙÙ
",monthNames:["ÙÙØ§Ùر","ÙØ¨Ø±Ø§Ùر","Ù
ارس","أبرÙÙ","Ù
اÙÙ","ÙÙÙÙÙ","ÙÙÙÙÙ","أغسطس","سبتÙ
بر","Ø£ÙØªÙبر","ÙÙÙÙ
بر","Ø¯ÙØ³Ù
بر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["Ø§ÙØ£ØØ¯","Ø§ÙØ§Ø«ÙÙÙ","Ø§ÙØ«Ùاثاء","Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡","Ø§ÙØ®Ù
ÙØ³","Ø§ÙØ¬Ù
عة","Ø§ÙØ³Ø¨Øª"],dayNamesShort:["Ø£ØØ¯","اثÙÙÙ","Ø«ÙØ§Ø«Ø§Ø¡","أربعاء","Ø®Ù
ÙØ³","جÙ
عة","سبت"],dayNamesMin:["Ø","Ù","Ø«","ر","Ø®","ج","س"],weekHeader:"Ø£Ø³Ø¨ÙØ¹",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar",{buttonText:{month:"Ø´ÙØ±",week:"Ø£Ø³Ø¨ÙØ¹",day:"ÙÙÙ
",list:"Ø£Ø¬ÙØ¯Ø©"},allDayText:"اÙÙÙÙ
ÙÙÙ",eventLimitText:"أخرÙ",noEventsMessage:"Ø£Ù Ø£ØØ¯Ø§Ø« ÙØ¹Ø±Ø¶"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"Ù¡",2:"Ù¢",3:"Ù£",4:"Ù¤",5:"Ù¥",6:"Ù¦",7:"Ù§",8:"Ù¨",9:"Ù©",0:"Ù "},t={"Ù¡":"1","Ù¢":"2","Ù£":"3","Ù¤":"4","Ù¥":"5","Ù¦":"6","Ù§":"7","Ù¨":"8","Ù©":"9","Ù ":"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["Ø£ÙÙ Ù
٠ثاÙÙØ©","ثاÙÙØ© ÙØ§ØØ¯Ø©",["ثاÙÙØªØ§Ù","ثاÙÙØªÙÙ"],"%d Ø«ÙØ§Ù","%d ثاÙÙØ©","%d ثاÙÙØ©"],m:["Ø£ÙÙ Ù
٠دÙÙÙØ©","دÙÙÙØ© ÙØ§ØØ¯Ø©",["دÙÙÙØªØ§Ù","دÙÙÙØªÙÙ"],"%d Ø¯ÙØ§Ø¦Ù","%d دÙÙÙØ©","%d دÙÙÙØ©"],h:["Ø£ÙÙ Ù
٠ساعة","ساعة ÙØ§ØØ¯Ø©",["ساعتاÙ","ساعتÙÙ"],"%d ساعات","%d ساعة","%d ساعة"],d:["Ø£ÙÙ Ù
Ù ÙÙÙ
","ÙÙÙ
ÙØ§ØØ¯",["ÙÙÙ
اÙ","ÙÙÙ
ÙÙ"],"%d Ø£ÙØ§Ù
","%d ÙÙÙ
ÙØ§","%d ÙÙÙ
"],M:["Ø£ÙÙ Ù
Ù Ø´ÙØ±","Ø´ÙØ± ÙØ§ØØ¯",["Ø´ÙØ±Ø§Ù","Ø´ÙØ±ÙÙ"],"%d Ø£Ø´ÙØ±","%d Ø´ÙØ±Ø§","%d Ø´ÙØ±"],y:["Ø£ÙÙ Ù
٠عاÙ
","عاÙ
ÙØ§ØØ¯",["عاÙ
اÙ","عاÙ
ÙÙ"],"%d Ø£Ø¹ÙØ§Ù
","%d عاÙ
ÙØ§","%d عاÙ
"]},s=function(e){return function(a,t,s,d){var i=n(a),o=r[e][n(a)];return 2===i&&(o=o[t?0:1]),o.replace(/%d/i,a)}},d=["ÙÙØ§Ùر","ÙØ¨Ø±Ø§Ùر","Ù
ارس","أبرÙÙ","Ù
اÙÙ","ÙÙÙÙÙ","ÙÙÙÙÙ","أغسطس","سبتÙ
بر","Ø£ÙØªÙبر","ÙÙÙÙ
بر","Ø¯ÙØ³Ù
بر"];return e.defineLocale("ar",{months:d,monthsShort:d,weekdays:"Ø§ÙØ£ØØ¯_Ø§ÙØ¥Ø«ÙÙÙ_Ø§ÙØ«Ùاثاء_Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡_Ø§ÙØ®Ù
ÙØ³_Ø§ÙØ¬Ù
عة_Ø§ÙØ³Ø¨Øª".split("_"),weekdaysShort:"Ø£ØØ¯_إثÙÙÙ_Ø«ÙØ§Ø«Ø§Ø¡_أربعاء_Ø®Ù
ÙØ³_جÙ
عة_سبت".split("_"),weekdaysMin:"Ø_Ù_Ø«_ر_Ø®_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/âM/âYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|Ù
/,isPM:function(e){return"Ù
"===e},meridiem:function(e,a,t){return e<12?"ص":"Ù
"},calendar:{sameDay:"[اÙÙÙÙ
Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT",nextDay:"[ØºØ¯ÙØ§ Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT",nextWeek:"dddd [Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT",lastDay:"[Ø£Ù
س Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT",lastWeek:"dddd [Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"Ù
ÙØ° %s",s:s("s"),ss:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/Ø/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"Ø")},week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(88);var n=t(1);n.datepickerLocale("be","be",{closeText:"ÐаÑÑнÑÑÑ",prevText:"<ÐапÑÑÑд",nextText:"След>",currentText:"СÑннÑ",monthNames:["СÑÑдзенÑ","ÐÑÑÑ","СакавÑк","ÐÑаÑавÑк","ТÑав","ЧÑÑвенÑ","ÐÑпенÑ","ÐнÑвенÑ","ÐеÑаÑенÑ","ÐаÑÑÑÑÑнÑк","ÐÑ
15657ÑÑапад","СнежанÑ"],monthNamesShort:["СÑÑд","ÐÑÑ","Сак","ÐÑаÑ","ТÑав","ЧÑÑв","ÐÑп","ÐнÑв","ÐеÑ","ÐаÑÑ","ÐÑÑÑ","Снеж"],dayNames:["нÑдзелÑ","панÑдзелак","аÑÑоÑак","ÑеÑада","ÑаÑвеÑ","пÑÑнÑÑа","ÑÑбоÑа"],dayNamesShort:["ндз","пнд","аÑÑ","ÑÑд","ÑÑв","пÑн","ÑбÑ"],dayNamesMin:["Ðд","Ðн","ÐÑ","СÑ","ЧÑ","ÐÑ","Сб"],weekHeader:"Ðдз",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("be",{buttonText:{month:"ÐеÑÑÑ",week:"ТÑдзенÑ",day:"ÐзенÑ",list:"ÐаÑадак днÑ"},allDayHtml:"УвеÑÑ<br />дзенÑ",eventLimitText:function(e){return"+ ÑÑÑÑ "+e},noEventsMessage:"ÐÑма падзей Ð´Ð»Ñ Ð°Ð´Ð»ÑÑÑÑаваннÑ"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a){var t=e.split("_");return a%10==1&&a%100!=11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(e,t,n){var r={ss:t?"ÑекÑнда_ÑекÑндÑ_ÑекÑнд":"ÑекÑндÑ_ÑекÑндÑ_ÑекÑнд",mm:t?"Ñ
вÑлÑна_Ñ
вÑлÑнÑ_Ñ
вÑлÑн":"Ñ
вÑлÑнÑ_Ñ
вÑлÑнÑ_Ñ
вÑлÑн",hh:t?"гадзÑна_гадзÑнÑ_гадзÑн":"гадзÑнÑ_гадзÑнÑ_гадзÑн",dd:"дзенÑ_днÑ_дзÑн",MM:"меÑÑÑ_меÑÑÑÑ_меÑÑÑаÑ",yy:"год_гадÑ_гадоÑ"};return"m"===n?t?"Ñ
вÑлÑна":"Ñ
вÑлÑнÑ":"h"===n?t?"гадзÑна":"гадзÑнÑ":e+" "+a(r[n],+e)}return e.defineLocale("be",{months:{format:"ÑÑÑдзенÑ_лÑÑага_ÑакавÑка_кÑаÑавÑка_ÑÑаÑнÑ_ÑÑÑвенÑ_лÑпенÑ_жнÑÑнÑ_веÑаÑнÑ_каÑÑÑÑÑнÑка_лÑÑÑапада_ÑнежнÑ".split("_"),standalone:"ÑÑÑдзенÑ_лÑÑÑ_ÑакавÑк_кÑаÑавÑк_ÑÑавенÑ_ÑÑÑвенÑ_лÑпенÑ_жнÑвенÑ_веÑаÑенÑ_каÑÑÑÑÑнÑк_лÑÑÑапад_ÑнежанÑ".split("_")},monthsShort:"ÑÑÑд_лÑÑ_Ñак_кÑаÑ_ÑÑав_ÑÑÑв_лÑп_жнÑв_веÑ_каÑÑ_лÑÑÑ_Ñнеж".split("_"),weekdays:{format:"нÑдзелÑ_панÑдзелак_аÑÑоÑак_ÑеÑадÑ_ÑаÑвеÑ_пÑÑнÑÑÑ_ÑÑбоÑÑ".split("_"),standalone:"нÑдзелÑ_панÑдзелак_аÑÑоÑак_ÑеÑада_ÑаÑвеÑ_пÑÑнÑÑа_ÑÑбоÑа".split("_"),isFormat:/\[ ?[УÑÑ] ?(?:мÑнÑлÑÑ|наÑÑÑпнÑÑ)? ?\] ?dddd/},weekdaysShort:"нд_пн_аÑ_ÑÑ_ÑÑ_пÑ_Ñб".split("_"),weekdaysMin:"нд_пн_аÑ_ÑÑ_ÑÑ_пÑ_Ñб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[СÑÐ½Ð½Ñ Ñ] LT",nextDay:"[ÐаÑÑÑа Ñ] LT",lastDay:"[УÑоÑа Ñ] LT",nextWeek:function(){return"[У] dddd [Ñ] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мÑнÑлÑÑ] dddd [Ñ] LT";case 1:case 2:case 4:return"[У мÑнÑлÑ] dddd [Ñ] LT"}},sameElse:"L"},relativeTime:{future:"пÑаз %s",past:"%s ÑамÑ",s:"некалÑÐºÑ ÑекÑнд",m:t,mm:t,h:t,hh:t,d:"дзенÑ",dd:t,M:"меÑÑÑ",MM:t,y:"год",yy:t},meridiemParse:/ноÑÑ|ÑанÑÑÑ|днÑ|веÑаÑа/,isPM:function(e){return/^(днÑ|веÑаÑа)$/.test(e)},meridiem:function(e,a,t){return e<4?"ноÑÑ":e<12?"ÑанÑÑÑ":e<17?"днÑ":"веÑаÑа"},dayOfMonthOrdinalParse:/\d{1,2}-(Ñ|Ñ|га)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-Ñ":e+"-Ñ";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(90);var n=t(1);n.datepickerLocale("bg","bg",{closeText:"заÑвоÑи",prevText:"<назад",nextText:"напÑед>",nextBigText:">>",currentText:"днеÑ",monthNames:["ЯнÑаÑи","ФевÑÑаÑи","ÐаÑÑ","ÐпÑил","Ðай","Юни","Юли","ÐвгÑÑÑ","СепÑемвÑи","ÐкÑомвÑи","ÐоемвÑи","ÐекемвÑи"],monthNamesShort:["ЯнÑ","Фев","ÐаÑ","ÐпÑ","Ðай","Юни","Юли","Ðвг","Сеп","ÐкÑ","Ðов","Ðек"],dayNames:["ÐеделÑ","Ðонеделник","ÐÑоÑник","СÑÑда","ЧеÑвÑÑÑÑк","ÐеÑÑк","СÑбоÑа"],dayNamesShort:["Ðед","Ðон","ÐÑо","СÑÑ","ЧеÑ","ÐеÑ","СÑб"],dayNamesMin:["Ðе","Ðо","ÐÑ","СÑ","Че","Ðе","СÑ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("bg",{buttonText:{month:"ÐеÑеÑ",week:"СедмиÑа",day:"Ðен",list:"ÐÑаÑик"},allDayText:"ЦÑл ден",eventLimitText:function(e){return"+оÑе "+e}
15657,noEventsMessage:"ÐÑма ÑÑбиÑÐ¸Ñ Ð·Ð° показване"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("bg",{months:"ÑнÑаÑи_ÑевÑÑаÑи_маÑÑ_апÑил_май_Ñни_Ñли_авгÑÑÑ_ÑепÑемвÑи_окÑомвÑи_ноемвÑи_декемвÑи".split("_"),monthsShort:"ÑнÑ_Ñев_маÑ_апÑ_май_Ñни_Ñли_авг_Ñеп_окÑ_ное_дек".split("_"),weekdays:"неделÑ_понеделник_вÑоÑник_ÑÑÑда_ÑеÑвÑÑÑÑк_пеÑÑк_ÑÑбоÑа".split("_"),weekdaysShort:"нед_пон_вÑо_ÑÑÑ_ÑеÑ_пеÑ_ÑÑб".split("_"),weekdaysMin:"нд_пн_вÑ_ÑÑ_ÑÑ_пÑ_Ñб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[ÐÐ½ÐµÑ Ð²] LT",nextDay:"[УÑÑе в] LT",nextWeek:"dddd [в] LT",lastDay:"[ÐÑеÑа в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[ÐиналаÑа] dddd [в] LT";case 1:case 2:case 4:case 5:return"[ÐиналиÑ] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"Ñлед %s",past:"пÑеди %s",s:"нÑколко ÑекÑнди",ss:"%d ÑекÑнди",m:"минÑÑа",mm:"%d минÑÑи",h:"ÑаÑ",hh:"%d ÑаÑа",d:"ден",dd:"%d дена",M:"меÑеÑ",MM:"%d меÑеÑа",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|Ñи|ви|Ñи|ми)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-ев":0===t?e+"-ен":t>10&&t<20?e+"-Ñи":1===a?e+"-ви":2===a?e+"-Ñи":7===a||8===a?e+"-ми":e+"-Ñи"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(92);var n=t(1);n.datepickerLocale("bs","bs",{closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novmbar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Äetvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Äet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Äe","Pe","Su"],weekHeader:"Sed",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("bs",{buttonText:{prev:"ProÅ¡li",next:"SljedeÄi",month:"Mjesec",week:"Sedmica",day:"Dan",list:"Raspored"},allDayText:"Cijeli dan",eventLimitText:function(e){return"+ joÅ¡ "+e},noEventsMessage:"Nema dogaÄaja za prikazivanje"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var n=e+" ";switch(t){case"ss":return n+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return n+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return n+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return n+=1===e?"dan":"dana";case"MM":return n+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return n+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}return e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._Äet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_Äe_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juÄer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[proÅ¡lu] dddd [u] LT";case 6:return"[proÅ¡le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[proÅ¡li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:a,m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(94);var n=t(1);n.datepickerLocale("ca","ca",{closeText:"Tanca",prevText:"Anterior",nextText:"Següent",currentText:"Avui",monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthNamesShort:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],dayNamesShort:["dg","dl","dt","dc","dj","dv","ds"],dayNamesMin:["dg","dl","dt","dc","dj","dv","ds"],weekHeader:"Set",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ca",{buttonText:{month:"Mes",week:"Setmana",day:"Dia",list:"Agenda"},allDayText:"Tot el dia",eventLimitText:"més",noEventsMessage:"No hi ha esdeveniments per mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquà %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%
15657d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,a){var t=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==a&&"W"!==a||(t="a"),e+t},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(96);var n=t(1);n.datepickerLocale("cs","cs",{closeText:"ZavÅÃt",prevText:"<DÅÃve",nextText:"PozdÄji>",currentText:"NynÃ",monthNames:["leden","únor","bÅezen","duben","kvÄten","Äerven","Äervenec","srpen","záÅÃ","ÅÃjen","listopad","prosinec"],monthNamesShort:["led","úno","bÅe","dub","kvÄ","Äer","Ävc","srp","záÅ","ÅÃj","lis","pro"],dayNames:["nedÄle","pondÄlÃ","úterý","stÅeda","Ätvrtek","pátek","sobota"],dayNamesShort:["ne","po","út","st","Ät","pá","so"],dayNamesMin:["ne","po","út","st","Ät","pá","so"],weekHeader:"Týd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("cs",{buttonText:{month:"MÄsÃc",week:"Týden",day:"Den",list:"Agenda"},allDayText:"Celý den",eventLimitText:function(e){return"+dalÅ¡Ã: "+e},noEventsMessage:"Žádné akce k zobrazenÃ"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e>1&&e<5&&1!=~~(e/10)}function t(e,t,n,r){var s=e+" ";switch(n){case"s":return t||r?"pár sekund":"pár sekundami";case"ss":return t||r?s+(a(e)?"sekundy":"sekund"):s+"sekundami";case"m":return t?"minuta":r?"minutu":"minutou";case"mm":return t||r?s+(a(e)?"minuty":"minut"):s+"minutami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?s+(a(e)?"hodiny":"hodin"):s+"hodinami";case"d":return t||r?"den":"dnem";case"dd":return t||r?s+(a(e)?"dny":"dnÃ"):s+"dny";case"M":return t||r?"mÄsÃc":"mÄsÃcem";case"MM":return t||r?s+(a(e)?"mÄsÃce":"mÄsÃců"):s+"mÄsÃci";case"y":return t||r?"rok":"rokem";case"yy":return t||r?s+(a(e)?"roky":"let"):s+"lety"}}var n="leden_únor_bÅezen_duben_kvÄten_Äerven_Äervenec_srpen_záÅÃ_ÅÃjen_listopad_prosinec".split("_"),r="led_úno_bÅe_dub_kvÄ_Ävn_Ävc_srp_záÅ_ÅÃj_lis_pro".split("_"),s=[/^led/i,/^úno/i,/^bÅe/i,/^dub/i,/^kvÄ/i,/^(Ävn|Äerven$|Äervna)/i,/^(Ävc|Äervenec|Äervence)/i,/^srp/i,/^záÅ/i,/^ÅÃj/i,/^lis/i,/^pro/i],d=/^(leden|únor|bÅezen|duben|kvÄten|Äervenec|Äervence|Äerven|Äervna|srpen|záÅÃ|ÅÃjen|listopad|prosinec|led|úno|bÅe|dub|kvÄ|Ävn|Ävc|srp|záÅ|ÅÃj|lis|pro)/i;return e.defineLocale("cs",{months:n,monthsShort:r,monthsRegex:d,monthsShortRegex:d,monthsStrictRegex:/^(leden|ledna|února|únor|bÅezen|bÅezna|duben|dubna|kvÄten|kvÄtna|Äervenec|Äervence|Äerven|Äervna|srpen|srpna|záÅÃ|ÅÃjen|ÅÃjna|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bÅe|dub|kvÄ|Ävn|Ävc|srp|záÅ|ÅÃj|lis|pro)/i,monthsParse:s,longMonthsParse:s,shortMonthsParse:s,weekdays:"nedÄle_pondÄlÃ_úterý_stÅeda_Ätvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_Ät_pá_so".split("_"),weekdaysMin:"ne_po_út_st_Ät_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zÃtra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedÄli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve stÅedu v] LT";case 4:return"[ve Ätvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[vÄera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou nedÄli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou stÅedu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"}, 15658relativeTime:{future:"za %s",past:"pÅed %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(98);var n=t(1);n.datepickerLocale("da","da",{closeText:"Luk",prevText:"<Forrige",nextText:"Næste>",currentText:"Idag",monthNames:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],dayNamesShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayNamesMin:["Sø","Ma","Ti","On","To","Fr","Lø"],weekHeader:"Uge",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("da",{buttonText:{month:"MÃ¥ned",week:"Uge",day:"Dag",list:"Agenda"}
15658,allDayText:"Hele dagen",eventLimitText:"flere",noEventsMessage:"Ingen arrangementer at vise"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"pÃ¥ dddd [kl.] LT",lastDay:"[i gÃ¥r kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"fÃ¥ sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en mÃ¥ned",MM:"%d mÃ¥neder",y:"et Ã¥r",yy:"%d Ã¥r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(100);var n=t(1);n.datepickerLocale("de-at","de",{closeText:"SchlieÃen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("de-at",{buttonText:{year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?r[t][0]:r[t][1]}return e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(102);var n=t(1);n.datepickerLocale("de-ch","de",{closeText:"SchlieÃen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("de-ch",{buttonText:{year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?r[t][0]:r[t][1]}return e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(104);var n=t(1);n.datepickerLocale("de","de",{closeText:"SchlieÃen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("de",{buttonText:{year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen",dayOfMonthFormat:"ddd DD.MM."})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?r[t][0]:r[t][1]}return e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(106);var n=t(1);n.datepickerLocale("el","el",{closeText:"ÎλείÏιμο",prevText:"Î ÏοηγοÏμενοÏ",nextText:"ÎÏÏμενοÏ",currentText:"ΣήμεÏα",monthNames:["ÎανοÏ
άÏιοÏ","ΦεβÏοÏ
άÏιοÏ","ÎάÏÏιοÏ","ÎÏÏίλιοÏ","ÎάιοÏ","ÎοÏνιοÏ","ÎοÏλιοÏ","ÎÏγοÏ
ÏÏοÏ","ΣεÏÏÎμβÏιοÏ","ÎκÏÏβÏιοÏ","ÎοÎμβÏιοÏ","ÎεκÎμβÏιοÏ"],monthNamesShort:["Îαν","Φεβ","ÎαÏ","ÎÏÏ","Îαι","ÎοÏ
ν","ÎοÏ
λ","ÎÏ
γ","ΣεÏ","ÎκÏ","Îοε","Îεκ"],dayNames:["ÎÏ
Ïιακή","ÎεÏ
ÏÎÏα","ΤÏίÏη","ΤεÏάÏÏη","Î ÎμÏÏη","ΠαÏαÏκεÏ
ή","ΣάββαÏο"],dayNamesShort:["ÎÏ
Ï","ÎεÏ
","ΤÏι","ΤεÏ","Πεμ","ΠαÏ","Σαβ"],dayNamesMin:["ÎÏ
","Îε","ΤÏ","Τε","Πε","Πα","Σα"],weekHeader:"Îβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("el",{buttonText:{month:"ÎήναÏ",week:"Îβδομάδα",day:"ÎμÎÏα",list:"ÎÏζÎνÏα"},allDayText:"ÎλοήμεÏο",eventLimitText:"ÏεÏιÏÏÏÏεÏα",noEventsMessage:"Îεν Ï
ÏάÏÏοÏ
ν γεγονÏÏα για να εμÏανιÏÏεί"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}return e.defineLocale("el",{monthsNominativeEl:"ÎανοÏ
άÏιοÏ_ΦεβÏοÏ
άÏιοÏ_ÎάÏÏιοÏ_ÎÏÏίλιοÏ_ÎάιοÏ_ÎοÏνιοÏ_ÎοÏλιοÏ_ÎÏγοÏ
ÏÏοÏ_ΣεÏÏÎμβÏιοÏ_ÎκÏÏβÏιοÏ_ÎοÎμβÏιοÏ_ÎεκÎμβÏιοÏ".split("_"),monthsGenitiveEl:"ÎανοÏ
αÏίοÏ
_ΦεβÏοÏ
αÏίοÏ
_ÎαÏÏίοÏ
_ÎÏÏιλίοÏ
_ÎαÎοÏ
_ÎοÏ
νίοÏ
_ÎοÏ
λίοÏ
_ÎÏ
γοÏÏÏοÏ
_ΣεÏÏεμβÏίοÏ
_ÎκÏÏβÏίοÏ
_ÎοεμβÏίοÏ
_ÎεκεμβÏίοÏ
".split("_"),months:function(e,a){return e?"string"==typeof a&&/D/.test(a.substring(0,a.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Îαν_Φεβ_ÎαÏ_ÎÏÏ_ÎαÏ_ÎοÏ
ν_ÎοÏ
λ_ÎÏ
γ_ΣεÏ_ÎκÏ_Îοε_Îεκ".split("_"),weekdays:"ÎÏ
Ïιακή_ÎεÏ
ÏÎÏα_ΤÏίÏη_ΤεÏάÏÏη_Î ÎμÏÏη_ΠαÏαÏκεÏ
ή_ΣάββαÏο".split("_"),weekdaysShort:"ÎÏ
Ï_ÎεÏ
_ΤÏι_ΤεÏ_Πεμ_ΠαÏ_Σαβ".split("_"),weekdaysMin:"ÎÏ
_Îε_ΤÏ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,a,t){return e>11?t?"μμ":"ÎÎ":t?"Ïμ":"Î Î"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[Î Î]\.?Î?\.?/i,longDateFormat:{LT:"h:mm A",LT
15658S:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[ΣήμεÏα {}] LT",nextDay:"[ÎÏÏιο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Î§Î¸ÎµÏ {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[Ïο ÏÏοηγοÏμενο] dddd [{}] LT";default:return"[Ïην ÏÏοηγοÏμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var n=this._calendarEl[e],r=t&&t.hours();return a(n)&&(n=n.apply(t)),n.replace("{}",r%12==1?"ÏÏη":"ÏÏιÏ")},relativeTime:{future:"Ïε %s",past:"%s ÏÏιν",s:"λίγα δεÏ
ÏεÏÏλεÏÏα",ss:"%d δεÏ
ÏεÏÏλεÏÏα",m:"Îνα λεÏÏÏ",mm:"%d λεÏÏά",h:"μία ÏÏα",hh:"%d ÏÏεÏ",d:"μία μÎÏα",dd:"%d μÎÏεÏ",M:"ÎÎ½Î±Ï Î¼Î®Î½Î±Ï",MM:"%d μήνεÏ",y:"ÎÎ½Î±Ï ÏÏÏνοÏ",yy:"%d ÏÏÏνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(108);var n=t(1);n.datepickerLocale("en-au","en-AU",{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:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("en-au")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(110),t(1).locale("en-ca")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(112);var n=t(1);n.datepickerLocale("en-gb","en-GB",{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","Frid
15658ay","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("en-gb")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(114),t(1).locale("en-ie")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(116);var n=t(1);n.datepickerLocale("en-nz","en-NZ",{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:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("en-nz")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(118);var n=t(1);n.datepickerLocale("es-do","es",{closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("es-do",{buttonText:{month:"Mes",week:"Semana",day:"DÃa",list:"Agenda"},allDayHtml:"Todo<br/>el dÃa",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LT
15658S:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un dÃa",dd:"%d dÃas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(120);var n=t(1);n.datepickerLocale("es-us","es",{closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("es-us",{buttonText:{month:"Mes",week:"Semana",day:"DÃa",list:"Agenda"},allDayHtml:"Todo<br/>el dÃa",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un dÃa",dd:"%d dÃas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(122);var n=t(1);n.datepickerLocale("es","es",{closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("es",{buttonText:{month:"Mes",week:"Semana",day:"DÃa",list:"Agenda"},allDayHtml:"Todo<br/>el dÃa",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%
15658d horas",d:"un dÃa",dd:"%d dÃas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4},invalidDate:"Fecha invalida"})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(124);var n=t(1);n.datepickerLocale("et","et",{closeText:"Sulge",prevText:"Eelnev",nextText:"Järgnev",currentText:"Täna",monthNames:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthNamesShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],dayNames:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],dayNamesShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],dayNamesMin:["P","E","T","K","N","R","L"],weekHeader:"näd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("et",{buttonText:{month:"Kuu",week:"Nädal",day:"Päev",list:"Päevakord"},allDayText:"Kogu päev",eventLimitText:function(e){return"+ veel "+e},noEventsMessage:"Kuvamiseks puuduvad sündmused"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return a?r[t][2]?r[t][2]:r[t][1]:n?r[t][0]:r[t][1]}return e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:"%d päeva",M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(126);var n=t(1);n.datepickerLocale("eu","eu",{closeText:"Egina",prevText:"<Aur",nextText:"Hur>",currentText:"Gaur",monthNames:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"],monthNamesShort:["urt.","ots.","mar.","api.","mai.","eka.","uzt.","abu.","ira.","urr.","aza.","abe."],dayNames:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],dayNamesShort:["ig.","al.","ar.","az.","og.","ol.","lr."],dayNamesMin:["ig","al","ar","az","og","ol","lr"],weekHeader:"As",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("eu",{buttonText:{month:"Hilabetea",week:"Astea",day:"Eguna",list:"Agenda"},allDayHtml:"Egun<br/>osoa",eventLimitText:"gehiago",noEventsMessage:"Ez dago ekitaldirik erakusteko"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss", 15659L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(128);var n=t(1);n.datepickerLocale("fa","fa",{closeText:"بستÙ",prevText:"<ÙØ¨ÙÛ",nextText:"بعدÛ>",currentText:"Ø§Ù Ø±ÙØ²",monthNames:["ÚØ§ÙÙÛÙ","ÙÙØ±ÛÙ","٠ارس","Ø¢ÙØ±ÛÙ","Ù Ù","ÚÙØ¦Ù","ÚÙØ¦ÛÙ","Ø§ÙØª","سپتا٠بر","اکتبر","ÙÙØ§Ù بر","دسا٠بر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["ÙÚ©Ø´ÙØ¨Ù","Ø¯ÙØ´ÙبÙ","سÙâØ´ÙØ¨Ù","ÚÙØ§Ø±Ø´ÙبÙ","Ù¾ÙØ¬Ø´ÙبÙ","ج٠عÙ","Ø´ÙØ¨Ù"],dayNamesShort:["Û","د","س","Ú","Ù¾","ج","Ø´"],dayNamesMin:["Û","د","س","Ú","Ù¾","ج","Ø´"],weekHeader:"ÙÙ",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fa",{buttonText:{month:"٠اÙ",week:"ÙÙØªÙ",day:"Ø±ÙØ²",list:"Ø¨Ø±ÙØ§Ù Ù"},allDayText:"ØªÙ Ø§Ù Ø±ÙØ²",eventLimitText:function(e){return"Ø¨ÛØ´ از "+e},noEventsMessage:"ÙÛÚ Ø±ÙÛØ¯Ø§Ø¯Û ب٠ÙÙ Ø§ÛØ´"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"Û±",2:"Û²",3:"Û³",4:"Û´",5:"Ûµ",6:"Û¶",7:"Û·",8:"Û¸",9:"Û¹",0:"Û°"},t={"Û±":"1","Û²":"2","Û³":"3","Û´":"4","Ûµ":"5","Û¶":"6","Û·":"7","Û¸":"8","Û¹":"9","Û°":"0"};return e.defineLocale("fa",{months:"ÚØ§ÙÙÛÙ_ÙÙØ±ÛÙ_٠ارس_Ø¢ÙØ±ÛÙ_Ù Ù_ÚÙØ¦Ù_ÚÙØ¦ÛÙ_Ø§ÙØª_سپتا٠بر_اکتبر_ÙÙØ§Ù بر_دسا٠بر".split("_"),monthsShort:"ÚØ§ÙÙÛÙ_ÙÙØ±ÛÙ_٠ارس_Ø¢ÙØ±ÛÙ_Ù Ù_ÚÙØ¦Ù_ÚÙØ¦ÛÙ_Ø§ÙØª_سپتا٠بر_اکتبر_ÙÙØ§Ù بر_دسا٠بر".split("_"),weekdays:"ÛÚ©âØ´ÙØ¨Ù_Ø¯ÙØ´ÙبÙ_سÙâØ´ÙØ¨Ù_ÚÙØ§Ø±Ø´ÙبÙ_Ù¾ÙØ¬âØ´ÙØ¨Ù_ج٠عÙ_Ø´ÙØ¨Ù".split("_"),weekdaysShort:"ÛÚ©âØ´ÙØ¨Ù_Ø¯ÙØ´ÙبÙ_سÙâØ´ÙØ¨Ù_ÚÙØ§Ø±Ø´ÙبÙ_Ù¾ÙØ¬âØ´ÙØ¨Ù_ج٠عÙ_Ø´ÙØ¨Ù".split("_"),weekdaysMin:"Û_د_س_Ú_Ù¾_ج_Ø´".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ÙØ¨Ù از Ø¸ÙØ±|بعد از Ø¸ÙØ±/,isPM:function(e){return/بعد از Ø¸ÙØ±/.test(e)},meridiem:function(e,a,t){return e<12?"ÙØ¨Ù از Ø¸ÙØ±":"بعد از Ø¸ÙØ±"},calendar:{sameDay:"[Ø§Ù Ø±ÙØ² ساعت] LT",nextDay:"[ÙØ±Ø¯Ø§ ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[Ø¯ÛØ±Ùز ساعت] LT",lastWeek:"dddd [Ù¾ÛØ´] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s Ù¾ÛØ´",s:"ÚÙØ¯ ثاÙÛÙ",ss:"%d ثاÙÛÙ",m:"ÛÚ© دÙÛÙÙ",mm:"%d دÙÛÙÙ",h:"ÛÚ© ساعت",hh:"%
15659d ساعت",d:"ÛÚ© Ø±ÙØ²",dd:"%d Ø±ÙØ²",M:"ÛÚ© Ù
اÙ",MM:"%d Ù
اÙ",y:"ÛÚ© ساÙ",yy:"%d ساÙ"},preparse:function(e){return e.replace(/[Û°-Û¹]/g,function(e){return t[e]}).replace(/Ø/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"Ø")},dayOfMonthOrdinalParse:/\d{1,2}Ù
/,ordinal:"%dÙ
",week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(130);var n=t(1);n.datepickerLocale("fi","fi",{closeText:"Sulje",prevText:"«Edellinen",nextText:"Seuraava»",currentText:"Tänään",monthNames:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],monthNamesShort:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],dayNamesShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayNames:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],dayNamesMin:["Su","Ma","Ti","Ke","To","Pe","La"],weekHeader:"Vk",dateFormat:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fi",{buttonText:{month:"Kuukausi",week:"Viikko",day:"Päivä",list:"Tapahtumat"},allDayText:"Koko päivä",eventLimitText:"lisää",noEventsMessage:"Ei näytettäviä tapahtumia"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,n,r){var s="";switch(n){case"s":return r?"muutaman sekunnin":"muutama sekunti";case"ss":return r?"sekunnin":"sekuntia";case"m":return r?"minuutin":"minuutti";case"mm":s=r?"minuutin":"minuuttia";break;case"h":return r?"tunnin":"tunti";case"hh":s=r?"tunnin":"tuntia";break;case"d":return r?"päivän":"päivä";case"dd":s=r?"päivän":"päivää";break;case"M":return r?"kuukauden":"kuukausi";case"MM":s=r?"kuukauden":"kuukautta";break;case"y":return r?"vuoden":"vuosi";case"yy":s=r?"vuoden":"vuotta"}return s=t(e,r)+" "+s}function t(e,a){return e<10?a?r[e]:n[e]:e}var n="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),r=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",n[7],n[8],n[9]];return e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(132);var n=t(1);n.datepickerLocale("fr-ca","fr-CA",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fr-ca",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourdâhui à ] LT",nextDay:"[Demain à ] LT",nextWeek:"dddd [à ] LT",lastDay:"[Hier à ] LT",lastWeek:"dddd [dernier à ] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(134);var n=t(1);n.datepickerLocale("fr-ch","fr-CH",{closeText:"Fermer",prevText:"<Préc",nextText:"Suiv>",currentText:"Courant",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fr-ch",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourdâhui à ] LT",nextDay:"[Demain à ] LT",nextWeek:"dddd [à ] LT",lastDay:"[Hier à ] LT",lastWeek:"dddd [dernier à ] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(136);var n=t(1);n.datepickerLocale("fr","fr",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fr",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourdâhui à ] LT",nextDay:"[Demain à ] LT",nextWeek:"dddd [à ] LT",lastDay:"[Hier à ] LT",lastWeek:"dddd [dernier à ] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,a){switch(a){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(138);var n=t(1);n.datepickerLocale("gl","gl",{closeText:"Pechar",prevText:"<Ant",nextText:"Seg>",currentText:"Hoxe",monthNames:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthNamesShort:["Xan","Feb","Mar","Abr","Mai","Xuñ","Xul","Ago","Set","Out","Nov","Dec"],dayNames:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],dayNamesShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],dayNamesMin:["Do","Lu","Ma","Mé","Xo","Ve","Sá"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("gl",{buttonText:{month:"Mes",week:"Semana",day:"DÃa",list:"Axenda"},allDayHtml:"Todo<br/>o dÃa",eventLimitText:"máis",noEventsMessage:"Non hai eventos para amosar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%
15659d horas",d:"un dÃa",dd:"%d dÃas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(140);var n=t(1);n.datepickerLocale("he","he",{closeText:"ס××ר",prevText:"<××§×××",nextText:"×××>",currentText:"××××",monthNames:["×× ××ר","פ×ר××ר","×רץ","×פר××","×××","××× ×","××××","××××ס×","ספ×××ר","×××§×××ר","× ××××ר","×צ××ר"],monthNamesShort:["×× ×","פ×ר","×רץ","×פר","×××","××× ×","××××","×××","ספ×","×××§","× ××","×צ×"],dayNames:["ר×ש××","×©× ×","ש××ש×","ר×××¢×","×××ש×","ש×ש×","ש×ת"],dayNamesShort:["×'","×'","×'","×'","×'","×'","ש×ת"],dayNamesMin:["×'","×'","×'","×'","×'","×'","ש×ת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("he",{buttonText:{month:"×××ש",week:"ש×××¢",day:"×××",list:"ס×ר ×××"},allDayText:"×× ××××",eventLimitText:"××ר",noEventsMessage:"××× ××ר××¢×× ××צ××",weekNumberTitle:"ש×××¢"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("he",{months:"×× ××ר_פ×ר××ר_×רץ_×פר××_×××_××× ×_××××_××××ס×_ספ×××ר_×××§×××ר_× ××××ר_×צ××ר".split("_"),monthsShort:"×× ×׳_פ×ר׳_×רץ_×פר׳_×××_××× ×_××××_×××׳_ספ×׳_××ק׳_× ××׳_×צ×׳".split("_"),weekdays:"ר×ש××_×©× ×_ש××ש×_ר×××¢×_×××ש×_ש×ש×_ש×ת".split("_"),weekdaysShort:"×׳_×׳_×׳_×׳_×׳_×׳_ש׳".split("_"),weekdaysMin:"×_×_×_×_×_×_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [×]MMMM YYYY",LLL:"D [×]MMMM YYYY HH:mm",LLLL:"dddd, D [×]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[×××× ×Ö¾]LT",nextDay:"[××ר ×Ö¾]LT",nextWeek:"dddd [×שע×] LT",lastDay:"[×ת××× ×Ö¾]LT",lastWeek:"[××××] dddd [×××ר×× ×שע×] LT",sameElse:"L"},relativeTime:{future:"××¢×× %s",past:"××¤× × %s",s:"×ספר ×©× ××ת",ss:"%d ×©× ××ת",m:"××§×",mm:"%d ××§×ת",h:"שע×",hh:function(e){return 2===e?"שעת×××":e+" שע×ת"},d:"×××",dd:function(e){return 2===e?"××××××":e+" ××××"},M:"×××ש",MM:function(e){return 2===e?"×××ש×××":e+" ×××ש××"},y:"×©× ×",yy:function(e){return 2===e?"×©× ×ª×××":e%10==0&&10!==e?e+" ×©× ×":e+" ×©× ××"}},meridiemParse:/×××"צ|××¤× ×"צ|×××¨× ×צ×ר×××|××¤× × ×צ×ר×××|××¤× ×ת ××קר|×××קר|×ער×/i,isPM:function(e){return/^(×××"צ|×××¨× ×צ×ר×××|×ער×)$/.test(e)},meridiem:function(e,a,t){return e<5?"××¤× ×ת ××קר":e<10?"×××קר":e<12?t?'××¤× ×"צ':"××¤× × ×צ×ר×××":e<18?t?'×××"צ':"×××¨× ×צ×ר×××":"×ער×"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(142);var n=t(1);n.datepickerLocale("hi","hi",{closeText:"बà¤à¤¦",prevText:"पिà¤à¤²à¤¾",nextText:"à¤
à¤à¤²à¤¾",currentText:"à¤à¤",monthNames:["à¤à¤¨à¤µà¤°à¥ ","फरवरà¥","मारà¥à¤","à¤
पà¥à¤°à¥à¤²","मà¤","à¤à¥à¤¨","à¤à¥à¤²à¤¾à¤","à¤
à¤à¤¸à¥à¤¤ ","सितमà¥à¤¬à¤°","à¤
à¤à¥à¤à¥à¤¬à¤°","नवमà¥à¤¬à¤°","दिसमà¥à¤¬à¤°"],monthNamesShort:["à¤à¤¨","फर","मारà¥à¤","à¤
पà¥à¤°à¥à¤²","मà¤","à¤à¥à¤¨","à¤à¥à¤²à¤¾à¤","à¤
à¤","सित","à¤
à¤à¥à¤","नव","दि"],dayNames:["रविवार","सà¥à¤®à¤µà¤¾à¤°","मà¤à¤à¤²à¤µà¤¾à¤°","बà¥à¤§à¤µà¤¾à¤°","à¤à¥à¤°à¥à¤µà¤¾à¤°","शà¥à¤à¥à¤°à¤µà¤¾à¤°","शनिवार"],dayNamesShort:["रवि","सà¥à¤®","मà¤à¤à¤²","बà¥à¤§","à¤à¥à¤°à¥","शà¥à¤à¥à¤°","शनि"],dayNamesMin:["रवि","सà¥à¤®","मà¤à¤à¤²","बà¥à¤§","à¤à¥à¤°à¥","शà¥à¤à¥à¤°","शनि"],weekHeader:"हफà¥à¤¤à¤¾",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("hi",{buttonText:{month:"महà¥à¤¨à¤¾",week:"सपà¥à¤¤à¤¾à¤¹",day:"दिन",list:"à¤à¤¾à¤°à¥à¤¯à¤¸à¥à¤à¥"},allDayText:"सà¤à¥ दिन",eventLimitText:function(e){return"+à¤
धिठ"+e},noEventsMessage:"à¤à¥à¤ à¤à¤à¤¨à¤¾à¤à¤ à¤à¥ पà¥à¤°à¤¦à¤°à¥à¤¶à¤¿à¤¤ à¤à¤°à¤¨à¥ à¤à¥ लिà¤"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"à¥",8:"८",9:"९",0:"०"},t={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","à¥":"7","८":"8","९":"9","०":"0"};return e.defineLocale("hi",{months:"à¤à¤¨à¤µà¤°à¥_फ़रवरà¥_मारà¥à¤_à¤
पà¥à¤°à¥à¤²_मà¤_à¤à¥à¤¨_à¤à¥à¤²à¤¾à¤_à¤
à¤à¤¸à¥à¤¤_सितमà¥à¤¬à¤°_à¤
à¤à¥à¤à¥à¤¬à¤°_नवमà¥à¤¬à¤°_दिसमà¥à¤¬à¤°".split("_"),monthsShort:"à¤à¤¨._फ़र._मारà¥à¤_à¤
पà¥à¤°à¥._मà¤_à¤à¥à¤¨_à¤à¥à¤²._à¤
à¤._सित._à¤
à¤à¥à¤à¥._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सà¥à¤®à¤µà¤¾à¤°_मà¤à¤à¤²à¤µà¤¾à¤°_बà¥à¤§à¤µà¤¾à¤°_à¤à¥à¤°à¥à¤µà¤¾à¤°_शà¥à¤à¥à¤°à¤µà¤¾à¤°_शनिवार".split("_"),weekdaysShort:"रवि_सà¥à¤®_मà¤à¤à¤²_बà¥à¤§_à¤à¥à¤°à¥_शà¥à¤à¥à¤°_शनि".split("_"),weekdaysMin:"र_सà¥_मà¤_बà¥_à¤à¥_शà¥_श".split("_"),longDateFormat:{LT:"A h:mm बà¤à¥",LTS:"A h:mm:ss बà¤à¥",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बà¤à¥",LLLL:"dddd, D MMMM YYYY, A h:mm बà¤à¥"}
vendor: 9,026 bytes, line 15659
15659,calendar:{sameDay:"[à¤à¤] LT",nextDay:"[à¤à¤²] LT",nextWeek:"dddd, LT",lastDay:"[à¤à¤²] LT",lastWeek:"[पिà¤à¤²à¥] dddd, LT",sameElse:"L"},relativeTime:{future:"%s मà¥à¤",past:"%s पहलà¥",s:"à¤à¥à¤ हॠà¤à¥à¤·à¤£",ss:"%d सà¥à¤à¤à¤¡",m:"à¤à¤ मिनà¤",mm:"%d मिनà¤",h:"à¤à¤ à¤à¤à¤à¤¾",hh:"%d à¤à¤à¤à¥",d:"à¤à¤ दिन",dd:"%d दिन",M:"à¤à¤ महà¥à¤¨à¥",MM:"%d महà¥à¤¨à¥",y:"à¤à¤ वरà¥à¤·",yy:"%d वरà¥à¤·"},preparse:function(e){return e.replace(/[१२३४५६à¥à¥®à¥¯à¥¦]/g,function(e){return t[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]})},meridiemParse:/रात|सà¥à¤¬à¤¹|दà¥à¤ªà¤¹à¤°|शाम/,meridiemHour:function(e,a){return 12===e&&(e=0),"रात"===a?e<4?e:e+12:"सà¥à¤¬à¤¹"===a?e:"दà¥à¤ªà¤¹à¤°"===a?e>=10?e:e+12:"शाम"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"रात":e<10?"सà¥à¤¬à¤¹":e<17?"दà¥à¤ªà¤¹à¤°":e<20?"शाम":"रात"},week:{dow:0,doy:6}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(144);var n=t(1);n.datepickerLocale("hr","hr",{closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["SijeÄanj","VeljaÄa","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthNamesShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Äetvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Äet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Äe","Pe","Su"],weekHeader:"Tje",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("hr",{buttonText:{prev:"PrijaÅ¡nji",next:"SljedeÄi",month:"Mjesec",week:"Tjedan",day:"Dan",list:"Raspored"},allDayText:"Cijeli dan",eventLimitText:function(e){return"+ joÅ¡ "+e},noEventsMessage:"Nema dogaÄaja za prikaz"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var n=e+" ";switch(t){case"ss":return n+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return n+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return n+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return n+=1===e?"dan":"dana";case"MM":return n+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return n+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}return e.defineLocale("hr",{months:{format:"sijeÄnja_veljaÄe_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"sijeÄanj_veljaÄa_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._Äet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_Äe_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juÄer u] LT",lastWeek:function(){switch(this.day()){case 0:return"[proÅ¡lu] [nedjelju] [u] LT";case 3:return"[proÅ¡lu] [srijedu] [u] LT";case 6:return"[proÅ¡le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[proÅ¡li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:a,m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(146);var n=t(1);n.datepickerLocale("hu","hu",{closeText:"bezár",prevText:"vissza",nextText:"elÅre",currentText:"ma",monthNames:["Január","Február","Március","Ãprilis","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthNamesShort:["Jan","Feb","Már","Ãpr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],dayNames:["Vasárnap","HétfÅ","Kedd","Szerda","Csütörtök","Péntek","Szombat"],dayNamesShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo"],dayNamesMin:["V","H","K","Sze","Cs","P","Szo"],weekHeader:"Hét",dateFormat:"yy.mm.dd.",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),n.locale("hu",{buttonText:{month:"Hónap",week:"Hét",day:"Nap",list:"Napló"},allDayText:"Egész nap",eventLimitText:"további",noEventsMessage:"Nincs megjelenÃthetÅ esemény"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r=e;switch(t){case"s":return n||a?"néhány másodperc":"néhány másodperce";case"ss":return r+(n||a)?" másodperc":" másodperce";case"m":return"egy"+(n||a?" perc":" perce");case"mm":return r+(n||a?" perc":" perce");case"h":return"egy"+(n||a?" óra":" órája");case"hh":return r+(n||a?" óra":" órája");case"d":return"egy"+(n||a?" nap":" napja");case"dd":return r+(n||a?" nap":" napja");case"M":return"egy"+(n||a?" hónap":" hónapja");case"MM":return r+(n||a?" hónap":" hónapja");case"y":return"egy"+(n||a?" év":" éve");case"yy":return r+(n||a?" év":" éve")}return""}function t(e){return(e?"":"[múlt] ")+"["+n[this.day()]+"] LT[-kor]"}var n="vasárnap hétfÅn kedden szerdán csütörtökön pénteken szombaton".split(" ");return e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfÅ_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,a,t){return e<12?!0===t?"de":"DE":!0===t?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return t.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return t.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(148);var n=t(1);n.datepickerLocale("id","id",{closeText:"Tutup",prevText:"<mundur",nextText:"maju>",currentText:"hari ini",monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],dayNamesShort:["Min","Sen","Sel","Rab","kam","Jum","Sab"],dayNamesMin:["Mg","Sn","Sl","Rb","Km","jm","Sb"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("id",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayHtml:"Sehari<br/>penuh",eventLimitText:"lebih",noEventsMessage:"Tidak ada acara untuk ditampilkan"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"siang"===a?e>=11?e:e+12:"sore"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(150);var n=t(1);n.datepickerLocale("is","is",{closeText:"Loka",prevText:"<
15659 Fyrri",nextText:"Næsti >",currentText:"à dag",monthNames:["Janúar","Febrúar","Mars","AprÃl","MaÃ","JúnÃ","JúlÃ","Ãgúst","September","Október","Nóvember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","MaÃ","Jún","Júl","Ãgú","Sep","Okt","Nóv","Des"],dayNames:["Sunnudagur","Mánudagur","Ãriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],dayNamesShort:["Sun","Mán","Ãri","Mið","Fim","Fös","Lau"],dayNamesMin:["Su","Má","Ãr","Mi","Fi","Fö","La"],weekHeader:"Vika",dateFormat:"dd.mm.yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("is",{buttonText:{month:"Mánuður",week:"Vika",day:"Dagur",list:"Dagskrá"},allDayHtml:"Allan<br/>daginn",eventLimitText:"meira",noEventsMessage:"Engir viðburðir til að sýna"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e%100==11||e%10!=1}function t(e,t,n,r){var s=e+" ";switch(n){case"s":return t||r?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return a(e)?s+(t||r?"sekúndur":"sekúndum"):s+"sekúnda";case"m":return t?"mÃnúta":"mÃnútu";case"mm":return a(e)?s+(t||r?"mÃnútur":"mÃnútum"):t?s+"mÃnúta":s+"mÃnútu";case"hh":return a(e)?s+(t||r?"klukkustundir":"klukkustundum"):s+"klukkustund";case"d":return t?"dagur":r?"dag":"degi";case"dd":return a(e)?t?s+"dagar":s+(r?"daga":"dögum"):t?s+"dagur":s+(r?"dag":"degi");case"M":return t?"mánuður":r?"mánuð":"mánuði";case"MM":return a(e)?t?s+"mánuðir":s+(r?"mánuði":"mánuðum"):t?s+"mánuður":s+(r?"mánuð":"mánuði");case"y":return t||r?"ár":"ári";case"yy":return a(e)?s+(t||r?"ár":"árum"):s+(t||r?"ár":"ári")}}return e.defineLocale("is",{months:"janúar_febrúar_mars_aprÃl_maÃ_júnÃ_júlÃ_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maÃ_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Ãr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[à dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[à gær kl.] LT",lastWeek:"[sÃðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s sÃðan",s:t,ss:t,m:t,mm:t,h:"klukkustund",hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(152);var n=t(1);n.datepickerLocale("it","it",{closeText:"Chiudi",prevText:"<Prec",nextText:"Succ>",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("it",{buttonText:{month:"Mese",week:"Settimana",day:"Giorno",list:"Agenda"},allDayHtml:"Tutto il<br/>giorno",eventLimitText:function(e){return"+altri "+e},noEventsMessage:"Non ci sono eventi da visualizzare"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%
15659d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(154);var n=t(1);n.datepickerLocale("ja","ja",{closeText:"éãã", 15660prevText:"<å",nextText:"次>",currentText:"仿¥",monthNames:["1æ","2æ","3æ","4æ","5æ","6æ","7æ","8æ","9æ","10æ","11æ","12æ"],monthNamesShort:["1æ","2æ","3æ","4æ","5æ","6æ","7æ","8æ","9æ","10æ","11æ","12æ"],dayNames:["æ¥ææ¥","æææ¥","ç«ææ¥","æ°´ææ¥","æ¨ææ¥","éææ¥","åææ¥"],dayNamesShort:["æ¥","æ","ç«","æ°´","æ¨","é","å"],dayNamesMin:["æ¥","æ","ç«","æ°´","æ¨","é","å"],weekHeader:"é±",dateFormat:"yy/mm/dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"å¹´"}),n.locale("ja",{buttonText:{month:"æ",week:"é±",day:"æ¥",list:"äºå®ãªã¹ã"},allDayText:"çµæ¥",eventLimitText:function(e){return"ä» "+e+" ä»¶"},noEventsMessage:"表示ããäºå®ã¯ããã¾ãã"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"令å",narrow:"ã¿",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"å¹³æ",narrow:"ã»",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"æå",narrow:"ã¼",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"大æ£",narrow:"ã½",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"ææ²»",narrow:"ã¾",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"西æ¦",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"ç´å å",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(å |\d+)å¹´/,eraYearOrdinalParse:function(e,a){return"å "===a[1]?1:parseInt(a[1]||e,10)},months:"1æ_2æ_3æ_4æ_5æ_6æ_7æ_8æ_9æ_10æ_11æ_12æ".split("_"),monthsShort:"1æ_2æ_3æ_4æ_5æ_6æ_7æ_8æ_9æ_10æ_11æ_12æ".split("_"),weekdays:"æ¥ææ¥_æææ¥_ç«ææ¥_æ°´ææ¥_æ¨ææ¥_éææ¥_åææ¥".split("_"),weekdaysShort:"æ¥_æ_ç«_æ°´_æ¨_é_å".split("_"),weekdaysMin:"æ¥_æ_ç«_æ°´_æ¨_é_å".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYYå¹´MæDæ¥",LLL:"YYYYå¹´MæDæ¥ HH:mm",LLLL:"YYYYå¹´MæDæ¥ dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYYå¹´MæDæ¥",lll:"YYYYå¹´MæDæ¥ HH:mm",llll:"YYYYå¹´MæDæ¥(ddd) HH:mm"},meridiemParse:/åå|åå¾/i,isPM:function(e){return"åå¾"===e},meridiem:function(e,a,t){return e<12?"åå":"åå¾"},calendar:{sameDay:"[仿¥] LT",nextDay:"[ææ¥] LT",nextWeek:function(e){return e.week()!==this.week()?"[æ¥é±]dddd LT":"dddd LT"},lastDay:"[æ¨æ¥] LT",lastWeek:function(e){return this.week()!==e.week()?"[å é±]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}æ¥/,ordinal:function(e,a){switch(a){case"y":return 1===e?"å å¹´":e+"å¹´";case"d":case"D":case"DDD":return e+"æ¥";default:return e}},relativeTime:{future:"%så¾",past:"%så",s:"æ°ç§",ss:"%dç§",m:"1å",mm:"%då",h:"1æé",hh:"%dæé",d:"1æ¥",dd:"%dæ¥",M:"1ã¶æ",MM:"%dã¶æ",y:"1å¹´",yy:"%då¹´"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(156);var n=t(1);n.datepickerLocale("ka","ka",{closeText:"ááá®á£á áá",prevText:"á¬ááá",nextText:"á¨áááááá",currentText:"áá¦áá¡",monthNames:["áááááá á","ááááá áááá","ááá á¢á","ááá ááá","áááá¡á","ááááá¡á","ááááá¡á","ááááá¡á¢á","á¡áá¥á¢ááááá á","áá¥á¢ááááá á","ááááááá á","áááááááá á"],monthNamesShort:["ááá","ááá","ááá ","ááá ","ááá","ááá","ááá","ááá","á¡áá¥","áá¥á¢","ááá","ááá"],dayNames:["áááá á","áá á¨ááááá","á¡ááá¨ááááá","ááá®á¨ááááá","á®á£áá¨ááááá","ááá áá¡áááá","á¨ááááá"],dayNamesShort:["ááá","áá á¨","á¡áá","ááá®","á®á£á","ááá ","á¨áá"],dayNamesMin:["áá","áá ","á¡á","áá","á®á£","áá","á¨á"],weekHeader:"áá",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ka",{buttonText:{month:"ááá",week:"áááá á",day:"áá¦á",list:"áá¦áá¡ á¬áá¡á ááá"},allDayText:"ááááá áá¦á",eventLimitText:function(e){return"+ ááááá "+e},noEventsMessage:"á¦áááá¡á«áááááá áá áá áá¡"})},function(e,a,t){!function(e,a){a(t(0))}
15660(0,function(e){return e.defineLocale("ka",{months:"áááááá á_ááááá áááá_ááá á¢á_ááá ááá_áááá¡á_ááááá¡á_ááááá¡á_ááááá¡á¢á_á¡áá¥á¢ááááá á_áá¥á¢ááááá á_ááááááá á_áááááááá á".split("_"),monthsShort:"ááá_ááá_ááá _ááá _ááá_ááá_ááá_ááá_á¡áá¥_áá¥á¢_ááá_ááá".split("_"),weekdays:{standalone:"áááá á_áá á¨ááááá_á¡ááá¨ááááá_ááá®á¨ááááá_á®á£áá¨ááááá_ááá áá¡áááá_á¨ááááá".split("_"),format:"áááá áá¡_áá á¨ááááá¡_á¡ááá¨ááááá¡_ááá®á¨ááááá¡_á®á£áá¨ááááá¡_ááá áá¡áááá¡_á¨ááááá¡".split("_"),isFormat:/(á¬ááá|á¨ááááá)/},weekdaysShort:"ááá_áá á¨_á¡áá_ááá®_á®á£á_ááá _á¨áá".split("_"),weekdaysMin:"áá_áá _á¡á_áá_á®á£_áá_á¨á".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[áá¦áá¡] LT[-áá]",nextDay:"[á®ááá] LT[-áá]",lastDay:"[áá£á¨áá] LT[-áá]",nextWeek:"[á¨ááááá] dddd LT[-áá]",lastWeek:"[á¬ááá] dddd LT-áá",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(á¬áá|á¬á£á|á¡ááá|á¬áá|áá¦|áá)(á|á)/,function(e,a,t){return"á"===t?a+"á¨á":a+t+"á¨á"})},past:function(e){return/(á¬ááá|á¬á£áá|á¡áááá|áá¦á|ááá)/.test(e)?e.replace(/(á|á)$/,"áá¡ á¬áá"):/á¬ááá/.test(e)?e.replace(/á¬ááá$/,"á¬ááá¡ á¬áá"):e},s:"á áááááááá á¬ááá",ss:"%d á¬ááá",m:"á¬á£áá",mm:"%d á¬á£áá",h:"á¡áááá",hh:"%d á¡áááá",d:"áá¦á",dd:"%d áá¦á",M:"ááá",MM:"%d ááá",y:"á¬ááá",yy:"%d á¬ááá"},dayOfMonthOrdinalParse:/0|1-áá|áá-\d{1,2}|\d{1,2}-á/,ordinal:function(e){return 0===e?e:1===e?e+"-áá":e<20||e<=100&&e%20==0||e%100==0?"áá-"+e:e+"-á"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(158);var n=t(1);n.datepickerLocale("kk","kk",{closeText:"ÐабÑ",prevText:"<ÐлдÑÒ£ÒÑ",nextText:"ÐелеÑÑ>",currentText:"ÐүгÑн",monthNames:["ÒаңÑаÑ","ÐÒпан","ÐаÑÑÑз","СÓÑÑÑ","ÐамÑÑ","ÐаÑÑÑм","ШÑлде","ТамÑз","ÒÑÑкүйек","Òазан","ÒаÑаÑа","ÐелÑоÒÑан"],monthNamesShort:["Òаң","ÐÒп","ÐаÑ","СÓÑ","Ðам","ÐаÑ","ШÑл","Там","ÒÑÑ","Òаз","ÒаÑ","Ðел"],dayNames:["ÐекÑенбÑ","ÐүйÑенбÑ","СейÑенбÑ","СÓÑÑенбÑ","ÐейÑенбÑ","Ðұма","СенбÑ"],dayNamesShort:["жкÑ","дÑн","ÑÑн","ÑÑÑ","бÑн","жма","Ñнб"],dayNamesMin:["Ðк","ÐÑ","СÑ","СÑ","ÐÑ","Ðм","Сн"],weekHeader:"Ðе",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("kk",{buttonText:{month:"Ðй",week:"ÐпÑа",day:"Ðүн",list:"Ðүн ÑÓÑÑÑбÑ"},allDayText:"ÐÒ¯Ð½Ñ Ð±Ð¾Ð¹Ñ",eventLimitText:function(e){return"+ ÑаÒÑ "+e},noEventsMessage:"ÐÓ©ÑÑеÑÑ Ò¯ÑÑн оÒиÒÐ°Ð»Ð°Ñ Ð¶Ð¾Ò"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={0:"-ÑÑ",1:"-ÑÑ",2:"-ÑÑ",3:"-ÑÑ",4:"-ÑÑ",5:"-ÑÑ",6:"-ÑÑ",7:"-ÑÑ",8:"-ÑÑ",9:"-ÑÑ",10:"-ÑÑ",20:"-ÑÑ",30:"-ÑÑ",40:"-ÑÑ",50:"-ÑÑ",60:"-ÑÑ",70:"-ÑÑ",80:"-ÑÑ",90:"-ÑÑ",100:"-ÑÑ"};return e.defineLocale("kk",{months:"ÒаңÑаÑ_аÒпан_наÑÑÑз_ÑÓÑÑÑ_мамÑÑ_маÑÑÑм_ÑÑлде_ÑамÑз_ÒÑÑкүйек_Òазан_ÒаÑаÑа_желÑоÒÑан".split("_"),monthsShort:"Òаң_аÒп_наÑ_ÑÓÑ_мам_маÑ_ÑÑл_Ñам_ÒÑÑ_Òаз_ÒаÑ_жел".split("_"),weekdays:"жекÑенбÑ_дүйÑенбÑ_ÑейÑенбÑ_ÑÓÑÑенбÑ_бейÑенбÑ_жұма_ÑенбÑ".split("_"),weekdaysShort:"жек_дүй_Ñей_ÑÓÑ_бей_жұм_Ñен".split("_"),weekdaysMin:"жк_дй_Ñй_ÑÑ_бй_жм_Ñн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[ÐүгÑн ÑаÒаÑ] LT",nextDay:"[ÐÑÑең ÑаÒаÑ] LT",nextWeek:"dddd [ÑаÒаÑ] LT",lastDay:"[ÐеÑе ÑаÒаÑ] LT",lastWeek:"[Ó¨Ñкен апÑанÑÒ£] dddd [ÑаÒаÑ] LT",sameElse:"L"},relativeTime:{future:"%s ÑÑÑнде",past:"%s бұÑÑн",s:"бÑÑнеÑе ÑекÑнд",ss:"%d ÑекÑнд",m:"бÑÑ Ð¼Ð¸Ð½ÑÑ",mm:"%d минÑÑ",h:"бÑÑ ÑаÒаÑ",hh:"%
15660d ÑаÒаÑ",d:"бÑÑ ÐºÒ¯Ð½",dd:"%d күн",M:"бÑÑ Ð°Ð¹",MM:"%d ай",y:"бÑÑ Ð¶Ñл",yy:"%d жÑл"},dayOfMonthOrdinalParse:/\d{1,2}-(ÑÑ|ÑÑ)/,ordinal:function(e){var t=e%10,n=e>=100?100:null;return e+(a[e]||a[t]||a[n])},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(160);var n=t(1);n.datepickerLocale("ko","ko",{closeText:"ë«ê¸°",prevText:"ì´ì ë¬",nextText:"ë¤ìë¬",currentText:"ì¤ë",monthNames:["1ì","2ì","3ì","4ì","5ì","6ì","7ì","8ì","9ì","10ì","11ì","12ì"],monthNamesShort:["1ì","2ì","3ì","4ì","5ì","6ì","7ì","8ì","9ì","10ì","11ì","12ì"],dayNames:["ì¼ìì¼","ììì¼","íìì¼","ììì¼","목ìì¼","ê¸ìì¼","í ìì¼"],dayNamesShort:["ì¼","ì","í","ì","목","ê¸","í "],dayNamesMin:["ì¼","ì","í","ì","목","ê¸","í "],weekHeader:"주",dateFormat:"yy. m. d.",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"ë
"}),n.locale("ko",{buttonText:{month:"ì",week:"주",day:"ì¼",list:"ì¼ì 목ë¡"},allDayText:"ì¢
ì¼",eventLimitText:"ê°",noEventsMessage:"ì¼ì ì´ ììµëë¤"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ko",{months:"1ì_2ì_3ì_4ì_5ì_6ì_7ì_8ì_9ì_10ì_11ì_12ì".split("_"),monthsShort:"1ì_2ì_3ì_4ì_5ì_6ì_7ì_8ì_9ì_10ì_11ì_12ì".split("_"),weekdays:"ì¼ìì¼_ììì¼_íìì¼_ììì¼_목ìì¼_ê¸ìì¼_í ìì¼".split("_"),weekdaysShort:"ì¼_ì_í_ì_목_ê¸_í ".split("_"),weekdaysMin:"ì¼_ì_í_ì_목_ê¸_í ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYYë
MMMM Dì¼",LLL:"YYYYë
MMMM Dì¼ A h:mm",LLLL:"YYYYë
MMMM Dì¼ dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYYë
MMMM Dì¼",lll:"YYYYë
MMMM Dì¼ A h:mm",llll:"YYYYë
MMMM Dì¼ dddd A h:mm"},calendar:{sameDay:"ì¤ë LT",nextDay:"ë´ì¼ LT",nextWeek:"dddd LT",lastDay:"ì´ì LT",lastWeek:"ì§ë주 dddd LT",sameElse:"L"},relativeTime:{future:"%s í",past:"%s ì ",s:"ëª ì´",ss:"%dì´",m:"1ë¶",mm:"%dë¶",h:"í ìê°",hh:"%dìê°",d:"í루",dd:"%dì¼",M:"í ë¬",MM:"%dë¬",y:"ì¼ ë
",yy:"%dë
"},dayOfMonthOrdinalParse:/\d{1,2}(ì¼|ì|주)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"ì¼";case"M":return e+"ì";case"w":case"W":return e+"주";default:return e}},meridiemParse:/ì¤ì |ì¤í/,isPM:function(e){return"ì¤í"===e},meridiem:function(e,a,t){return e<12?"ì¤ì ":"ì¤í"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(162);var n=t(1);n.datepickerLocale("lb","lb",{closeText:"Fäerdeg",prevText:"Zréck",nextText:"Weider",currentText:"Haut",monthNames:["Januar","Februar","Mäerz","Abrëll","Mee","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mäe","Abr","Mee","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonndeg","Méindeg","Dënschdeg","Mëttwoch","Donneschdeg","Freideg","Samschdeg"],dayNamesShort:["Son","Méi","Dën","Mët","Don","Fre","Sam"],dayNamesMin:["So","Mé","Dë","Më","Do","Fr","Sa"],weekHeader:"W",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("lb",{buttonText:{month:"Mount",week:"Woch",day:"Dag",list:"Terminiwwersiicht"},allDayText:"Ganzen Dag",eventLimitText:"méi",noEventsMessage:"Nee Evenementer ze affichéieren"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return a?r[t][0]:r[t][1]}function t(e){return r(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e}function n(e){return r(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e}function r(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var a=e%10,t=e/10;return r(0===a?t:a)}if(e<1e4){for(;e>=10;)e/=10;return r(e)}return e/=1e3,r(e)}return e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:t,past:n,s:"e puer Sekonnen",ss:"%d Sekonnen",m:a,mm:"%d Minutten",h:a,hh:"%d Stonnen",d:a,dd:"%d Deeg",M:a,MM:"%d Méint",y:a,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(164);var n=t(1);n.datepickerLocale("lt","lt",{closeText:"Uždaryti",prevText:"<Atgal",nextText:"Pirmyn>",currentText:"Å iandien",monthNames:["Sausis","Vasaris","Kovas","Balandis","GegužÄ","Birželis","Liepa","RugpjÅ«tis","RugsÄjis","Spalis","
15660Lapkritis","Gruodis"],monthNamesShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],dayNames:["sekmadienis","pirmadienis","antradienis","treÄiadienis","ketvirtadienis","penktadienis","Å¡eÅ¡tadienis"],dayNamesShort:["sek","pir","ant","tre","ket","pen","Å¡eÅ¡"],dayNamesMin:["Se","Pr","An","Tr","Ke","Pe","Å e"],weekHeader:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),n.locale("lt",{buttonText:{month:"MÄnuo",week:"SavaitÄ",day:"Diena",list:"DarbotvarkÄ"},allDayText:"VisÄ
dienÄ
",eventLimitText:"daugiau",noEventsMessage:"NÄra įvykių rodyti"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){return a?"kelios sekundÄs":n?"kelių sekundžių":"kelias sekundes"}function t(e,a,t,n){return a?r(t)[0]:n?r(t)[1]:r(t)[2]}function n(e){return e%10==0||e>10&&e<20}function r(e){return d[e].split("_")}function s(e,a,s,d){var i=e+" ";return 1===e?i+t(e,a,s[0],d):a?i+(n(e)?r(s)[1]:r(s)[0]):d?i+r(s)[1]:i+(n(e)?r(s)[1]:r(s)[2])}var d={ss:"sekundÄ_sekundžių_sekundes",m:"minutÄ_minutÄs_minutÄ",mm:"minutÄs_minuÄių_minutes",h:"valanda_valandos_valandÄ
",hh:"valandos_valandų_valandas",d:"diena_dienos_dienÄ
",dd:"dienos_dienų_dienas",M:"mÄnuo_mÄnesio_mÄnesį",MM:"mÄnesiai_mÄnesių_mÄnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};return e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužÄs_birželio_liepos_rugpjÅ«Äio_rugsÄjo_spalio_lapkriÄio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužÄ_birželis_liepa_rugpjÅ«tis_rugsÄjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_treÄiadienį_ketvirtadienį_penktadienį_Å¡eÅ¡tadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_treÄiadienis_ketvirtadienis_penktadienis_Å¡eÅ¡tadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Å eÅ¡".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Å ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Å iandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[PraÄjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieÅ¡ %s",s:a,ss:s,m:t,mm:s,h:t,hh:s,d:t,dd:s,M:t,MM:s,y:t,yy:s},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(166);var n=t(1);n.datepickerLocale("lv","lv",{closeText:"AizvÄrt",prevText:"Iepr.",nextText:"NÄk.",currentText:"Å odien",monthNames:["JanvÄris","FebruÄris","Marts","AprÄ«lis","Maijs","JÅ«nijs","JÅ«lijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthNamesShort:["Jan","Feb","Mar","Apr","Mai","JÅ«n","JÅ«l","Aug","Sep","Okt","Nov","Dec"],dayNames:["svÄtdiena","pirmdiena","otrdiena","treÅ¡diena","ceturtdiena","piektdiena","sestdiena"],dayNamesShort:["svt","prm","otr","tre","ctr","pkt","sst"],dayNamesMin:["Sv","Pr","Ot","Tr","Ct","Pk","Ss"],weekHeader:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("lv",{buttonText:{month:"MÄnesis",week:"NedÄļa",day:"Diena",list:"Dienas kÄrtÄ«ba"},allDayText:"Visu dienu",eventLimitText:function(e){return"+vÄl "+e},noEventsMessage:"Nav notikumu"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){return t?a%10==1&&a%100!=11?e[2]:e[3]:a%10==1&&a%100!=11?e[0]:e[1]}function t(e,t,n){return e+" "+a(s[n],e,t)}function n(e,t,n){return a(s[n],e,t)}function r(e,a){return a?"dažas sekundes":"dažÄm sekundÄm"}var s={ss:"sekundes_sekundÄm_sekunde_sekundes".split("_"),m:"minÅ«tes_minÅ«tÄm_minÅ«te_minÅ«tes".split("_"),mm:"minÅ«tes_minÅ«tÄm_minÅ«te_minÅ«tes".split("_"),h:"stundas_stundÄm_stunda_stundas".split("_"),hh:"stundas_stundÄm_stunda_stundas".split("_"),d:"dienas_die
15660nÄm_diena_dienas".split("_"),dd:"dienas_dienÄm_diena_dienas".split("_"),M:"mÄneÅ¡a_mÄneÅ¡iem_mÄnesis_mÄneÅ¡i".split("_"),MM:"mÄneÅ¡a_mÄneÅ¡iem_mÄnesis_mÄneÅ¡i".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};return e.defineLocale("lv",{months:"janvÄris_februÄris_marts_aprÄ«lis_maijs_jÅ«nijs_jÅ«lijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jÅ«n_jÅ«l_aug_sep_okt_nov_dec".split("_"),weekdays:"svÄtdiena_pirmdiena_otrdiena_treÅ¡diena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Å odien pulksten] LT",nextDay:"[RÄ«t pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[PagÄjuÅ¡Ä] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pÄc %s",past:"pirms %s",s:r,ss:t,m:n,mm:t,h:n,hh:t,d:n,dd:t,M:n,MM:t,y:n,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(168);var n=t(1);n.datepickerLocale("mk","mk",{closeText:"ÐаÑвоÑи",prevText:"<",nextText:">",currentText:"ÐенеÑ",monthNames:["ÐанÑаÑи","ФевÑÑаÑи","ÐаÑÑ","ÐпÑил","ÐаÑ","ÐÑни","ÐÑли","ÐвгÑÑÑ","СепÑемвÑи","ÐкÑомвÑи","ÐоемвÑи","ÐекемвÑи"],monthNamesShort:["Ðан","Фев","ÐаÑ","ÐпÑ","ÐаÑ","ÐÑн","ÐÑл","Ðвг","Сеп","ÐкÑ","Ðое","Ðек"],dayNames:["Ðедела","Ðонеделник","ÐÑоÑник","СÑеда","ЧеÑвÑÑок","ÐеÑок","СабоÑа"],dayNamesShort:["Ðед","Ðон","ÐÑо","СÑе","ЧеÑ","ÐеÑ","Саб"],dayNamesMin:["Ðе","Ðо","ÐÑ","СÑ","Че","Ðе","Са"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("mk",{buttonText:{month:"ÐеÑеÑ",week:"Ðедела",day:"Ðен",list:"ÐÑаÑик"},allDayText:"Цел ден",eventLimitText:function(e){return"+повеÑе "+e},noEventsMessage:"Ðема наÑÑани за пÑикажÑваÑе"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("mk",{months:"ÑанÑаÑи_ÑевÑÑаÑи_маÑÑ_апÑил_маÑ_ÑÑни_ÑÑли_авгÑÑÑ_ÑепÑемвÑи_окÑомвÑи_ноемвÑи_декемвÑи".split("_"),monthsShort:"Ñан_Ñев_маÑ_апÑ_маÑ_ÑÑн_ÑÑл_авг_Ñеп_окÑ_ное_дек".split("_"),weekdays:"недела_понеделник_вÑоÑник_ÑÑеда_ÑеÑвÑÑок_пеÑок_ÑабоÑа".split("_"),weekdaysShort:"нед_пон_вÑо_ÑÑе_ÑеÑ_пеÑ_Ñаб".split("_"),weekdaysMin:"нe_пo_вÑ_ÑÑ_Ñе_пе_Ña".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[ÐÐµÐ½ÐµÑ Ð²Ð¾] LT",nextDay:"[УÑÑе во] LT",nextWeek:"[Ðо] dddd [во] LT",lastDay:"[ÐÑеÑа во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[ÐзминаÑаÑа] dddd [во] LT";case 1:case 2:case 4:case 5:return"[ÐзминаÑиоÑ] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"за %s",past:"пÑед %s",s:"Ð½ÐµÐºÐ¾Ð»ÐºÑ ÑекÑнди",ss:"%d ÑекÑнди",m:"една минÑÑа",mm:"%d минÑÑи",h:"еден ÑаÑ",hh:"%d ÑаÑа",d:"еден ден",dd:"%d дена",M:"еден меÑеÑ",MM:"%d меÑеÑи",y:"една година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|Ñи|ви|Ñи|ми)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-ев":0===t?e+"-ен":t>10&&t<20?e+"-Ñи":1===a?e+"-ви":2===a?e+"-Ñи":7===a||8===a?e+"-ми":e+"-Ñи"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(170);var n=t(1);n.datepickerLocale("ms-my","ms",{closeText:"Tutup",prevText:"<Sebelum",nextText:"Selepas>",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ms-my",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayText:"Sepanjang hari",eventLimitText:function(e){return"masih ada "+e+" acara"},noEventsMessage:"Tiada peristiwa untuk dipaparkan"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?e>=11?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(172);var n=t(1);n.datepickerLocale("ms","ms",{closeText:"Tutup",prevText:"<Sebelum",nextText:"Selepas>",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ms",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayText:"Sepanjang hari",eventLimitText:function(e){return"masih ada "+e+" acara"},noEventsMessage:"Tiada peristiwa untuk dipaparkan"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?e>=11?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(174);var n=t(1);n.datepickerLocale("nb","nb",{closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("nb",{buttonText:{month:"MÃ¥ned",week:"Uke",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"til",noEventsMessage:"Ingen hendelser Ã¥ vise"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i gÃ¥r kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en mÃ¥ned",MM:"%d mÃ¥neder",y:"ett Ã¥r",yy:"%d Ã¥r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(176);var n=t(1);n.datepickerLocale("nl-be","nl-BE",{closeText:"Sluiten",prevText:"â",nextText:"â",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("nl-be",{buttonText:{month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra",noEventsMessage:"Geen evenementen om te laten zien"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),t="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;return e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(178);var n=t(1);n.datepickerLocale("nl","nl",{closeText:"Sluiten",prevText:"â",nextText:"â",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("nl",{buttonText:{year:"Jaar",month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra",noEventsMessage:"Geen evenementen om te laten zien"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),t="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;return e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(180);var n=t(1);n.datepickerLocale("nn","nn",{closeText:"Lukk",prevText:"«Førre",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["sun","mÃ¥n","tys","ons","tor","fre","lau"],dayNames:["sundag","mÃ¥ndag","tysdag","onsdag","torsdag","fredag","laurdag"],dayNamesMin:["su","mÃ¥","ty","on","to","fr","la"],weekHeader:"Veke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!
156601,yearSuffix:""}),n.locale("nn",{buttonText:{month:"MÃ¥nad",week:"Veke",day:"Dag",list:"Agenda"},allDayText:"Heile dagen",eventLimitText:"til",noEventsMessage:"Ingen hendelser Ã¥ vise"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0, 15661weekdays:"sundag_mÃ¥ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._mÃ¥._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_mÃ¥_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I gÃ¥r klokka] LT",lastWeek:"[FøregÃ¥ande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein mÃ¥nad",MM:"%d mÃ¥nader",y:"eit Ã¥r",yy:"%d Ã¥r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(182);var n=t(1);n.datepickerLocale("pl","pl",{closeText:"Zamknij",prevText:"<Poprzedni",nextText:"NastÄpny>",currentText:"DziÅ",monthNames:["StyczeÅ","Luty","Marzec","KwiecieÅ","Maj","Czerwiec","Lipiec","SierpieÅ","WrzesieÅ","Październik","Listopad","GrudzieÅ"],monthNamesShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],dayNames:["Niedziela","PoniedziaÅek","Wtorek","Åroda","Czwartek","PiÄ tek","Sobota"],dayNamesShort:["Nie","Pn","Wt","År","Czw","Pt","So"],dayNamesMin:["N","Pn","Wt","År","Cz","Pt","So"],weekHeader:"Tydz",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("pl",{buttonText:{month:"MiesiÄ c",week:"TydzieÅ",day:"DzieÅ",list:"Plan dnia"},allDayText:"CaÅy dzieÅ",eventLimitText:"wiÄcej",noEventsMessage:"Brak wydarzeÅ do wyÅwietlenia"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function t(e,t,n){var r=e+" ";switch(n){case"ss":return r+(a(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutÄ";case"mm":return r+(a(e)?"minuty":"minut");case"h":return t?"godzina":"godzinÄ";case"hh":return r+(a(e)?"godziny":"godzin");case"MM":return r+(a(e)?"miesiÄ ce":"miesiÄcy");case"yy":return r+(a(e)?"lata":"lat")}}var n="styczeÅ_luty_marzec_kwiecieÅ_maj_czerwiec_lipiec_sierpieÅ_wrzesieÅ_październik_listopad_grudzieÅ".split("_"),r="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrzeÅnia_października_listopada_grudnia".split("_");return e.defineLocale("pl",{months:function(e,a){return e?""===a?"("+r[e.month()]+"|"+n[e.month()]+")":/D MMMM/.test(a)?r[e.month()]:n[e.month()]:n},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziaÅek_wtorek_Åroda_czwartek_piÄ tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_År_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_År_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DziÅ o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielÄ o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W ÅrodÄ o] LT";case 6:return"[W sobotÄ o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszÅÄ niedzielÄ o] LT";case 3:return"[W zeszÅÄ ÅrodÄ o] LT";case 6:return"[W zeszÅÄ sobotÄ o] LT";default:return"[W zeszÅy] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:t,m:t,mm:t,h:t,hh:t,d:"1 dzieÅ",dd:"%d dni",M:"miesiÄ c",MM:t,y:"rok",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(184);var n=t(1);n.datepickerLocale("pt-br","pt-BR",{closeText:"Fechar",prevText:"<Anterior",nextText:"Próximo>",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("pt-br",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Compromissos"},allDayText:"dia inteiro",eventLimitText:function(e){return"mais +"+e},noEventsMessage:"Não há eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"do_2ª_3ª_4ª_5ª_6ª_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [à s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [à s] HH:mm"},calendar:{sameDay:"[Hoje à s] LT",nextDay:"[Amanhã à s] LT",nextWeek:"dddd [à s] LT",lastDay:"[Ontem à s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Ãltimo] dddd [à s] LT":"[Ãltima] dddd [à s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%
15661d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(186);var n=t(1);n.datepickerLocale("pt","pt",{closeText:"Fechar",prevText:"Anterior",nextText:"Seguinte",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sem",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("pt",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Agenda"},allDayText:"Todo o dia",eventLimitText:"mais",noEventsMessage:"Não há eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje à s] LT",nextDay:"[Amanhã à s] LT",nextWeek:"dddd [à s] LT",lastDay:"[Ontem à s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Ãltimo] dddd [à s] LT":"[Ãltima] dddd [à s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(188);var n=t(1);n.datepickerLocale("ro","ro",{closeText:"Ãnchide",prevText:"« Luna precedentÄ",nextText:"Luna urmÄtoare »",currentText:"Azi",monthNames:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthNamesShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],dayNames:["DuminicÄ","Luni","MarÅ£i","Miercuri","Joi","Vineri","SâmbÄtÄ"],dayNamesShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],dayNamesMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],weekHeader:"SÄpt",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ro",{buttonText:{prev:"precedentÄ",next:"urmÄtoare",month:"LunÄ",week:"SÄptÄmânÄ",day:"Zi",list:"AgendÄ"},allDayText:"ToatÄ ziua",eventLimitText:function(e){return"+alte "+e},noEventsMessage:"Nu existÄ evenimente de afiÈat"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var n={ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},r=" ";return(e%100>=20||e>=100&&e%100==0)&&(r=" de "),e+r+n[t]}return e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminicÄ_luni_marÈi_miercuri_joi_vineri_sâmbÄtÄ".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmÄ",s:"câteva secunde",ss:a,m:"un minut",mm:a,h:"o orÄ",hh:a,d:"o zi",dd:a,M:"o lunÄ",MM:a,y:"un an",yy:a},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(190);var n=t(1);n.datepickerLocale("ru","ru",{closeText:"ÐакÑÑÑÑ",prevText:"<ÐÑед",nextText:"След>",currentText:"СегоднÑ",monthNames:["ЯнваÑÑ","ФевÑалÑ","ÐаÑÑ","ÐпÑелÑ","Ðай","ÐÑнÑ","ÐÑлÑ","ÐвгÑÑÑ","СенÑÑбÑÑ","ÐкÑÑбÑÑ","ÐоÑбÑÑ","ÐекабÑÑ"],monthNamesShort:["Янв","Фев","ÐаÑ","ÐпÑ","Ðай","ÐÑн","ÐÑл","Ðвг","Сен","ÐкÑ","ÐоÑ","Ðек"],dayNames:["воÑкÑеÑенÑе","понеделÑник","вÑоÑник","ÑÑеда","ÑеÑвеÑг","пÑÑниÑа","ÑÑббоÑа"],dayNamesShort:["вÑк","пнд","вÑÑ","ÑÑд","ÑÑв","пÑн","ÑбÑ"],dayNamesMin:["ÐÑ","Ðн","ÐÑ","СÑ","ЧÑ","ÐÑ","Сб"],weekHeader:"Ðед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ru",{buttonText:{month:"ÐеÑÑÑ",week:"ÐеделÑ",day:"ÐенÑ",list:"ÐовеÑÑка днÑ"},allDayText:"ÐеÑÑ Ð´ÐµÐ½Ñ",eventLimitText:function(e){return"+ еÑÑ "+e},noEventsMessage:"ÐÐµÑ ÑобÑÑий Ð´Ð»Ñ Ð¾ÑобÑажениÑ"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a){var t=e.split("_");return a%10==1&&a%100!=11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(e,t,n){var r={ss:t?"ÑекÑнда_ÑекÑндÑ_ÑекÑнд":"ÑекÑндÑ_ÑекÑндÑ_ÑекÑнд",mm:t?"минÑÑа_минÑÑÑ_минÑÑ":"минÑÑÑ_минÑÑÑ_минÑÑ",hh:"ÑаÑ_ÑаÑа_ÑаÑов",dd:"денÑ_днÑ_дней",MM:"меÑÑÑ_меÑÑÑа_меÑÑÑев",yy:"год_года_леÑ"};return"m"===n?t?"минÑÑа":"минÑÑÑ":e+" "+a(r[n],+e)}var n=[/^Ñнв/i,/^Ñев/i,/^маÑ/i,/^апÑ/i,/^ма[йÑ]/i,/^иÑн/i,/^иÑл/i,/^авг/i,/^Ñен/i,/^окÑ/i,/^ноÑ/i,/^дек/i];return e.defineLocale("ru",{months:{format:"ÑнваÑÑ_ÑевÑалÑ_маÑÑа_апÑелÑ_маÑ_иÑнÑ_иÑлÑ_авгÑÑÑа_ÑенÑÑбÑÑ_окÑÑбÑÑ_ноÑбÑÑ_декабÑÑ".split("_"),standalone:"ÑнваÑÑ_ÑевÑалÑ_маÑÑ_апÑелÑ_май_иÑнÑ_иÑлÑ_авгÑÑÑ_ÑенÑÑбÑÑ_окÑÑбÑÑ_ноÑбÑÑ_декабÑÑ".split("_")},monthsShort:{format:"Ñнв._ÑевÑ._маÑ._апÑ._маÑ_иÑнÑ_иÑлÑ_авг._ÑенÑ._окÑ._ноÑб._дек.".split("_"),standalone:"Ñнв._ÑевÑ._маÑÑ_апÑ._май_иÑнÑ_иÑлÑ_авг._ÑенÑ._окÑ._ноÑб._дек.".split("_")},weekdays:{standalone:"воÑкÑеÑенÑе_понеделÑник_вÑоÑник_ÑÑеда_ÑеÑвеÑг_пÑÑниÑа_ÑÑббоÑа".split("_"),format:"воÑкÑеÑенÑе_понеделÑник_вÑоÑник_ÑÑедÑ_ÑеÑвеÑг_пÑÑниÑÑ_ÑÑббоÑÑ".split("_"),isFormat:/\[ ?[Ðв] ?(?:пÑоÑлÑÑ|ÑледÑÑÑÑÑ|ÑÑÑ)? ?\] ?dddd/},weekdaysShort:"вÑ_пн_вÑ_ÑÑ_ÑÑ_пÑ_Ñб".split("_"),weekdaysMin:"вÑ_пн_вÑ_ÑÑ_ÑÑ_пÑ_Ñб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(ÑнваÑ[ÑÑ]|Ñнв\.?|ÑевÑал[ÑÑ]|ÑевÑ?\.?|маÑÑа?|маÑ\.?|апÑел[ÑÑ]|апÑ\.?|ма[йÑ]|иÑн[ÑÑ]|иÑн\.?|иÑл[ÑÑ]|иÑл\.?|авгÑÑÑа?|авг\.?|ÑенÑÑбÑ[ÑÑ]|ÑенÑ?\.?|окÑÑбÑ[ÑÑ]|окÑ\.?|ноÑбÑ[ÑÑ]|ноÑб?\.?|декабÑ[ÑÑ]|дек\.?)/i,monthsShortRegex:/^(ÑнваÑ[ÑÑ]|Ñнв\.?|ÑевÑал[ÑÑ]|ÑевÑ?\.?|маÑÑа?|маÑ\.?|апÑел[ÑÑ]|апÑ\.?|ма[йÑ]|иÑн[ÑÑ]|иÑн\.?|иÑл[ÑÑ]|иÑл\.?|авгÑÑÑа?|авг\.?|ÑенÑÑбÑ[ÑÑ]|ÑенÑ?\.?|окÑÑбÑ[ÑÑ]|окÑ\.?|ноÑбÑ[ÑÑ]|ноÑб?\.?|декабÑ[ÑÑ]|дек\.?)/i,monthsStrictRegex:/^(ÑнваÑ[ÑÑ]|ÑевÑал[ÑÑ]|маÑÑа?|апÑел[ÑÑ]|ма[Ñй]|иÑн[ÑÑ]|иÑл[ÑÑ]|авгÑÑÑа?|ÑенÑÑбÑ[ÑÑ]|окÑÑбÑ[ÑÑ]|ноÑбÑ[ÑÑ]|декабÑ[ÑÑ])/i,monthsShortStrictRegex:/^(Ñнв\.|ÑевÑ?\.|маÑ[Ñ.]|апÑ\.|ма[Ñй]|иÑн[ÑÑ.]|иÑл[ÑÑ.]|авг\.|ÑенÑ?\.|ок
15661Ñ\.|ноÑб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[СегоднÑ, в] LT",nextDay:"[ÐавÑÑа, в] LT",lastDay:"[ÐÑеÑа, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Ðо] dddd, [в] LT":"[Ð] dddd, [в] LT";switch(this.day()){case 0:return"[Ð ÑледÑÑÑее] dddd, [в] LT";case 1:case 2:case 4:return"[Ð ÑледÑÑÑий] dddd, [в] LT";case 3:case 5:case 6:return"[Ð ÑледÑÑÑÑÑ] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Ðо] dddd, [в] LT":"[Ð] dddd, [в] LT";switch(this.day()){case 0:return"[РпÑоÑлое] dddd, [в] LT";case 1:case 2:case 4:return"[РпÑоÑлÑй] dddd, [в] LT";case 3:case 5:case 6:return"[РпÑоÑлÑÑ] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"ÑеÑез %s",past:"%s назад",s:"неÑколÑко ÑекÑнд",ss:t,m:t,mm:t,h:"ÑаÑ",hh:t,d:"денÑ",dd:t,M:"меÑÑÑ",MM:t,y:"год",yy:t},meridiemParse:/ноÑи|ÑÑÑа|днÑ|веÑеÑа/i,isPM:function(e){return/^(днÑ|веÑеÑа)$/.test(e)},meridiem:function(e,a,t){return e<4?"ноÑи":e<12?"ÑÑÑа":e<17?"днÑ":"веÑеÑа"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|Ñ)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-Ñ";default:return e}},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(192);var n=t(1);n.datepickerLocale("sk","sk",{closeText:"ZavrieÅ¥",prevText:"<Predchádzajúci",nextText:"Nasledujúci>",currentText:"Dnes",monthNames:["január","február","marec","aprÃl","máj","jún","júl","august","september","október","november","december"],monthNamesShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],dayNames:["nedeľa","pondelok","utorok","streda","Å¡tvrtok","piatok","sobota"],dayNamesShort:["Ned","Pon","Uto","Str","Å tv","Pia","Sob"],dayNamesMin:["Ne","Po","Ut","St","Å t","Pia","So"],weekHeader:"Ty",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sk",{buttonText:{month:"Mesiac",week:"TýždeÅ",day:"DeÅ",list:"Rozvrh"},allDayText:"Celý deÅ",eventLimitText:function(e){return"+ÄalÅ¡ie: "+e},noEventsMessage:"Žiadne akcie na zobrazenie"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e>1&&e<5}function t(e,t,n,r){var s=e+" ";switch(n){case"s":return t||r?"pár sekúnd":"pár sekundami";case"ss":return t||r?s+(a(e)?"sekundy":"sekúnd"):s+"sekundami";case"m":return t?"minúta":r?"minútu":"minútou";case"mm":return t||r?s+(a(e)?"minúty":"minút"):s+"minútami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?s+(a(e)?"hodiny":"hodÃn"):s+"hodinami";case"d":return t||r?"deÅ":"dÅom";case"dd":return t||r?s+(a(e)?"dni":"dnÃ"):s+"dÅami";case"M":return t||r?"mesiac":"mesiacom";case"MM":return t||r?s+(a(e)?"mesiace":"mesiacov"):s+"mesiacmi";case"y":return t||r?"rok":"rokom";case"yy":return t||r?s+(a(e)?"roky":"rokov"):s+"rokmi"}}var n="január_február_marec_aprÃl_máj_jún_júl_august_september_október_november_december".split("_"),r="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");return e.defineLocale("sk",{months:n,monthsShort:r,weekdays:"nedeľa_pondelok_utorok_streda_Å¡tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_Å¡t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_Å¡t_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo Å¡tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[vÄera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(194);var n=t(1);n.datepickerLocale("sl","sl",{closeText:"Zapri",prevText:"<PrejÅ¡nji",nextText:"Naslednji>",currentText:"Trenutni",monthNames:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljek","Torek","Sreda","Äetrtek","Petek","Sobota"],dayNamesShort:["Ned","Pon","Tor","Sre","Äet","Pet","Sob"],dayNamesMin:["Ne","Po","To","Sr","Äe","Pe","S
15661o"],weekHeader:"Teden",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sl",{buttonText:{month:"Mesec",week:"Teden",day:"Dan",list:"Dnevni red"},allDayText:"Ves dan",eventLimitText:"veÄ",noEventsMessage:"Ni dogodkov za prikaz"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r=e+" ";switch(t){case"s":return a||n?"nekaj sekund":"nekaj sekundami";case"ss":return r+=1===e?a?"sekundo":"sekundi":2===e?a||n?"sekundi":"sekundah":e<5?a||n?"sekunde":"sekundah":"sekund";case"m":return a?"ena minuta":"eno minuto";case"mm":return r+=1===e?a?"minuta":"minuto":2===e?a||n?"minuti":"minutama":e<5?a||n?"minute":"minutami":a||n?"minut":"minutami";case"h":return a?"ena ura":"eno uro";case"hh":return r+=1===e?a?"ura":"uro":2===e?a||n?"uri":"urama":e<5?a||n?"ure":"urami":a||n?"ur":"urami";case"d":return a||n?"en dan":"enim dnem";case"dd":return r+=1===e?a||n?"dan":"dnem":2===e?a||n?"dni":"dnevoma":a||n?"dni":"dnevi";case"M":return a||n?"en mesec":"enim mesecem";case"MM":return r+=1===e?a||n?"mesec":"mesecem":2===e?a||n?"meseca":"mesecema":e<5?a||n?"mesece":"meseci":a||n?"mesecev":"meseci";case"y":return a||n?"eno leto":"enim letom";case"yy":return r+=1===e?a||n?"leto":"letom":2===e?a||n?"leti":"letoma":e<5?a||n?"leta":"leti":a||n?"let":"leti"}}return e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_Äetrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._Äet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_Äe_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[vÄeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejÅ¡njo] [nedeljo] [ob] LT";case 3:return"[prejÅ¡njo] [sredo] [ob] LT";case 6:return"[prejÅ¡njo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejÅ¡nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"Äez %s",past:"pred %s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(196);var n=t(1);n.datepickerLocale("sq","sq",{closeText:"mbylle",prevText:"<mbrapa",nextText:"Përpara>",currentText:"sot",monthNames:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthNamesShort:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gus","Sht","Tet","Nën","Dhj"],dayNames:["E Diel","E Hënë","E Martë","E Mërkurë","E Enjte","E Premte","E Shtune"],dayNamesShort:["Di","Hë","Ma","Më","En","Pr","Sh"],dayNamesMin:["Di","Hë","Ma","Më","En","Pr","Sh"],weekHeader:"Ja",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sq",{buttonText:{month:"Muaj",week:"Javë",day:"Ditë",list:"Listë"},allDayHtml:"Gjithë<br/>ditën",eventLimitText:function(e){return"+më tepër "+e},noEventsMessage:"Nuk ka evente për të shfaqur"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,a,t){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(198);var n=t(1);n.datepickerLocale("sr-cyrl","sr",{closeText:"ÐаÑвоÑи",prevText:"<",nextText:">",currentText:"ÐанаÑ",monthNames:["ÐанÑаÑ","ФебÑÑаÑ","ÐаÑÑ","ÐпÑил","ÐаÑ","ÐÑн","ÐÑл","ÐвгÑÑÑ","СепÑембаÑ","ÐкÑобаÑ","ÐовембаÑ","ÐеÑембаÑ"],monthNamesShort:["Ðан","Феб","ÐаÑ","ÐпÑ","ÐаÑ","ÐÑн","ÐÑл","Ðвг","Сеп","ÐкÑ","Ðов","ÐеÑ"],dayNames:["ÐедеÑа","ÐонедеÑак","УÑоÑак","СÑеда","ЧеÑвÑÑак","ÐеÑак","СÑбоÑа"],dayNamesShort:["Ðед","Ðон","УÑо","СÑе","ЧеÑ","ÐеÑ","СÑб"],dayNamesMin:["Ðе","Ðо","УÑ","СÑ","Че","Ðе","СÑ"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sr-cyrl",{buttonText:{prev:"ÐÑеÑÑ
одна",next:"ÑледеÑи",month:"ÐеÑеÑ",week:"ÐедеÑа",day:"Ðан",list:"ÐланеÑ"},allDayText:"Цео дан",eventLimitText:function(e){return"+ ÑÐ¾Ñ "+e},noEventsMessage:"Ðема догаÑаÑа за пÑиказ"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={words:{ss:["ÑекÑнда","ÑекÑнде","ÑекÑнди"],m:["Ñедан минÑÑ","Ñедне минÑÑе"],mm:["минÑÑ","минÑÑе","минÑÑа"],h:["Ñедан ÑаÑ","Ñедног ÑаÑа"],hh:["ÑаÑ","ÑаÑа","ÑаÑи"],dd:["дан","дана","дана"],MM:["меÑеÑ","меÑеÑа","меÑеÑи"],yy:["година","године","година"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(e,t,n){var r=a.words[n];return 1===n.length?t?r[0]:r[1]:e+" "+a.correctGrammaticalCase(e,r)}};return e.defineLocale("sr-cyrl",{months:"ÑанÑаÑ_ÑебÑÑаÑ_маÑÑ_апÑил_маÑ_ÑÑн_ÑÑл_авгÑÑÑ_ÑепÑембаÑ_ок
15661ÑобаÑ_новембаÑ_деÑембаÑ".split("_"),monthsShort:"Ñан._Ñеб._маÑ._апÑ._маÑ_ÑÑн_ÑÑл_авг._Ñеп._окÑ._нов._деÑ.".split("_"),monthsParseExact:!0,weekdays:"недеÑа_понедеÑак_ÑÑоÑак_ÑÑеда_ÑеÑвÑÑак_пеÑак_ÑÑбоÑа".split("_"),weekdaysShort:"нед._пон._ÑÑо._ÑÑе._ÑеÑ._пеÑ._ÑÑб.".split("_"),weekdaysMin:"не_по_ÑÑ_ÑÑ_Ñе_пе_ÑÑ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Ð´Ð°Ð½Ð°Ñ Ñ] LT",nextDay:"[ÑÑÑÑа Ñ] LT",nextWeek:function(){switch(this.day()){case 0:return"[Ñ] [недеÑÑ] [Ñ] LT";case 3:return"[Ñ] [ÑÑедÑ] [Ñ] LT";case 6:return"[Ñ] [ÑÑбоÑÑ] [Ñ] LT";case 1:case 2:case 4:case 5:return"[Ñ] dddd [Ñ] LT"}},lastDay:"[ÑÑÑе Ñ] LT",lastWeek:function(){return["[пÑоÑле] [недеÑе] [Ñ] LT","[пÑоÑлог] [понедеÑка] [Ñ] LT","[пÑоÑлог] [ÑÑоÑка] [Ñ] LT","[пÑоÑле] [ÑÑеде] [Ñ] LT","[пÑоÑлог] [ÑеÑвÑÑка] [Ñ] LT","[пÑоÑлог] [пеÑка] [Ñ] LT","[пÑоÑле] [ÑÑбоÑе] [Ñ] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пÑе %s",s:"неколико ÑекÑнди",ss:a.translate,m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"дан",dd:a.translate,M:"меÑеÑ",MM:a.translate,y:"годинÑ",yy:a.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(200);var n=t(1);n.datepickerLocale("sr","sr-SR",{closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Sreda","Äetvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sre","Äet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Äe","Pe","Su"],weekHeader:"Sed",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sr",{buttonText:{prev:"Prethodna",next:"SledecÌi",month:"Mеsеc",week:"Nеdеlja",day:"Dan",list:"Planеr"},allDayText:"Cеo dan",eventLimitText:function(e){return"+ joÅ¡ "+e},noEventsMessage:"Nеma dogaÄaja za prikaz"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(e,t,n){var r=a.words[n];return 1===n.length?t?r[0]:r[1]:e+" "+a.correctGrammaticalCase(e,r)}};return e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_Äetvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._Äet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_Äe_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juÄe u] LT",lastWeek:function(){return["[proÅ¡le] [nedelje] [u] LT","[proÅ¡log] [ponedeljka] [u] LT","[proÅ¡log] [utorka] [u] LT","[proÅ¡le] [srede] [u] LT","[proÅ¡log] [Äetvrtka] [u] LT","[proÅ¡log] [petka] [u] LT","[proÅ¡le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:a.translate,m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"dan",dd:a.translate,M:"mesec",MM:a.translate,y:"godinu",yy:a.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(202);var n=t(1);n.datepickerLocale("sv","sv",{closeText:"Stäng",prevText:"«Förra",nextText:"Nästa»",currentText:"Idag",monthNames:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNamesShort:["Sön","MÃ¥n","Tis","Ons","Tor","Fre","Lör"],dayNames:["Söndag","MÃ¥ndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],dayNamesMin:["Sö","MÃ¥","Ti","On","To","Fr","Lö"],weekHeader:"v. ",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sv",{buttonText:{month:"MÃ¥nad",week:"Vecka",day:"Dag",list:"Program"},allDayText:"Heldag",eventLimitText:"till",noEventsMessage:"Inga händelser att visa"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_mÃ¥ndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mÃ¥n_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_mÃ¥_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[IgÃ¥r] LT",nextWeek:"[PÃ¥] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"nÃ¥gra sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en mÃ¥nad",MM:"%d mÃ¥nader",y:"ett Ã¥r",yy:"%d Ã¥r"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?":e":1===a?":a":2===a?":a":":e")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(204);var n=t(1);n.datepickerLocale("th","th",{closeText:"à¸à¸´à¸",prevText:"« à¸¢à¹à¸à¸",nextText:"à¸à¸±à¸à¹à¸ »",currentText:"วัà¸à¸à¸µà¹",monthNames:["มà¸à¸£à¸²à¸à¸¡","à¸à¸¸à¸¡à¸ าà¸à¸±à¸à¸à¹","มีà¸à¸²à¸à¸¡","à¹à¸¡à¸©à¸²à¸¢à¸","à¸à¸¤à¸©à¸ าà¸à¸¡","มิà¸à¸¸à¸à¸²à¸¢à¸","à¸à¸£à¸à¸à¸²à¸à¸¡","สิà¸à¸«à¸²à¸à¸¡","à¸à¸±à¸à¸¢à¸²à¸¢à¸","à¸à¸¸à¸¥à¸²à¸à¸¡","à¸à¸¤à¸¨à¸à¸´à¸à¸²à¸¢à¸","à¸à¸±à¸à¸§à¸²à¸à¸¡"],monthNamesShort:["ม.à¸.","à¸.à¸.","มี.à¸.","à¹à¸¡.ย.","à¸.à¸.","มิ.ย.","à¸.à¸.","ส.à¸.","à¸.ย.","à¸.à¸.","à¸.ย.","à¸.à¸."],dayNames:["à¸à¸²à¸à¸´à¸à¸¢à¹","à¸à¸±à¸à¸à¸£à¹","à¸à¸±à¸à¸à¸²à¸£","à¸à¸¸à¸","à¸à¸¤à¸«à¸±à¸ªà¸à¸à¸µ","ศุà¸à¸£à¹","à¹à¸ªà¸²à¸£à¹"],dayNamesShort:["à¸à¸².","à¸.","à¸.","à¸.","à¸à¸¤.","ศ.","ส."],dayNamesMin:["à¸à¸².","à¸.","à¸.","à¸.","à¸à¸¤.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("th",{buttonText:{month:"à¹à¸à¸·à¸à¸",week:"สัà¸à¸à¸²à¸«à¹",day:"วัà¸",list:"à¹à¸à¸à¸à¸²à¸"},allDayText:"à¸à¸¥à¸à¸à¸§à¸±à¸",eventLimitText:"à¹à¸à¸´à¹à¸¡à¹à¸à¸´à¸¡",noEventsMessage:"à¹à¸¡à¹à¸¡à¸µà¸à¸´à¸à¸à¸£à¸£à¸¡à¸à¸µà¹à¸à¸°à¹à¸ªà¸à¸"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("th",{months:"มà¸à¸£à¸²à¸à¸¡_à¸à¸¸à¸¡à¸ าà¸à¸±à¸à¸à¹_มีà¸à¸²à¸à¸¡_à¹à¸¡à¸©à¸²à¸¢à¸_à¸à¸¤à¸©à¸ าà¸à¸¡_มิà¸à¸¸à¸à¸²à¸¢à¸_à¸à¸£à¸à¸à¸²à¸à¸¡_สิà¸à¸«à¸²à¸à¸¡_à¸à¸±à¸à¸¢à¸²à¸¢à¸_à¸à¸¸à¸¥à¸²à¸à¸¡_à¸à¸¤à¸¨à¸à¸´à¸à¸²à¸¢à¸_à¸à¸±à¸à¸§à¸²à¸à¸¡".split("_"),monthsShort:"ม.à¸._à¸.à¸._มี.à¸._à¹à¸¡.ย._à¸.à¸._มิ.ย._à¸.à¸._ส.à¸._à¸.ย._à¸.à¸._à¸.ย._à¸.à¸.".split("_"),monthsParseExact:!0,weekdays:"à¸à¸²à¸à¸´à¸à¸¢à¹_à¸à¸±à¸à¸à¸£à¹_à¸à¸±à¸à¸à¸²à¸£_à¸à¸¸à¸_à¸à¸¤à¸«à¸±à¸ªà¸à¸à¸µ_ศุà¸à¸£à¹_à¹à¸ªà¸²à¸£à¹".split("_"),weekdaysShort:"à¸à¸²à¸à¸´à¸à¸¢à¹_à¸à¸±à¸à¸à¸£à¹_à¸à¸±à¸à¸à¸²à¸£_à¸à¸¸à¸_à¸à¸¤à¸«à¸±à¸ª_ศุà¸à¸£à¹_à¹à¸ªà¸²à¸£à¹".split("_"),weekdaysMin:"à¸à¸²._à¸._à¸._à¸._à¸à¸¤._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY à¹à¸§à¸¥à¸² H:mm",LLLL:"วัà¸ddddà¸à¸µà¹ D MMMM YYYY à¹à¸§à¸¥à¸² H:mm"},meridiemParse:/à¸à¹à¸à¸à¹à¸à¸µà¹à¸¢à¸|หลัà¸à¹à¸à¸µà¹à¸¢à¸/,isPM:function(e){return"หลัà¸à¹à¸à¸µà¹à¸¢à¸"===e},meridiem:function(e,a,t){return e<12?"à¸à¹à¸à¸à¹à¸à¸µà¹à¸¢à¸":"หลัà¸à¹à¸à¸µà¹à¸¢à¸"},calendar:{sameDay:"[วัà¸à¸à¸µà¹ à¹à¸§à¸¥à¸²] LT",nextDay:"[à¸à¸£à¸¸à¹à¸à¸à¸µà¹ à¹à¸§à¸¥à¸²] LT",nextWeek:"dddd[หà¸à¹à¸² à¹à¸§à¸¥à¸²] LT",lastDay:"[à¹à¸¡à¸·à¹à¸à¸§à¸²à¸à¸à¸µà¹ à¹à¸§à¸¥à¸²] LT",lastWeek:"[วัà¸]dddd[à¸à¸µà¹à¹à¸¥à¹à¸§ à¹à¸§à¸¥à¸²] LT",sameElse:"L"},relativeTime:{future:"à¸à¸µà¸ %s",past:"%sà¸à¸µà¹à¹à¸¥à¹à¸§",s:"à¹à¸¡à¹à¸à¸µà¹à¸§à¸´à¸à¸²à¸à¸µ",ss:"%d วิà¸à¸²à¸à¸µ",m:"1 à¸à¸²à¸à¸µ",mm:"%d à¸à¸²à¸à¸µ",h:"1 à¸à¸±à¹à¸§à¹à¸¡à¸",hh:"%d à¸à¸±à¹à¸§à¹à¸¡à¸",d:"1 วัà¸",dd:"%d วัà¸",M:"1 à¹à¸à¸·à¸à¸",MM:"%d à¹à¸à¸·à¸à¸",y:"1 à¸à¸µ",yy:"%d à¸à¸µ"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(206);var n=t(1);n.datepickerLocale("tr","tr",{closeText:"kapat",prevText:"<geri",nextText:"ileri>",currentText:"bugün", 15662monthNames:["Ocak","Åubat","Mart","Nisan","Mayıs","Haziran","Temmuz","AÄustos","Eylül","Ekim","Kasım","Aralık"],monthNamesShort:["Oca","Åub","Mar","Nis","May","Haz","Tem","AÄu","Eyl","Eki","Kas","Ara"],dayNames:["Pazar","Pazartesi","Salı","ÃarÅamba","PerÅembe","Cuma","Cumartesi"],dayNamesShort:["Pz","Pt","Sa","Ãa","Pe","Cu","Ct"],dayNamesMin:["Pz","Pt","Sa","Ãa","Pe","Cu","Ct"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("tr",{buttonText:{next:"ileri",month:"Ay",week:"Hafta",day:"Gün",list:"Ajanda"},allDayText:"Tüm gün",eventLimitText:"daha fazla",noEventsMessage:"Gösterilecek etkinlik yok"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};return e.defineLocale("tr",{months:"Ocak_Åubat_Mart_Nisan_Mayıs_Haziran_Temmuz_AÄustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Åub_Mar_Nis_May_Haz_Tem_AÄu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_ÃarÅamba_PerÅembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Ãar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ãa_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,t){switch(t){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var n=e%10,r=e%100-n,s=e>=100?100:null;return e+(a[n]||a[r]||a[s])}},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(208);var n=t(1);n.datepickerLocale("uk","uk",{closeText:"ÐакÑиÑи",prevText:"<",nextText:">",currentText:"СÑогоднÑ",monthNames:["СÑÑенÑ","ÐÑÑий","ÐеÑезенÑ","ÐвÑÑенÑ","ТÑавенÑ","ЧеÑвенÑ","ÐипенÑ","СеÑпенÑ","ÐеÑеÑенÑ","ÐовÑенÑ","ÐиÑÑопад","ÐÑÑденÑ"],monthNamesShort:["СÑÑ","ÐÑÑ","ÐеÑ","ÐвÑ","ТÑа","ЧеÑ","Ðип","СеÑ","ÐеÑ","Ðов","ÐиÑ","ÐÑÑ"],dayNames:["недÑлÑ","понедÑлок","вÑвÑоÑок","ÑеÑеда","ÑеÑвеÑ","пâÑÑниÑÑ","ÑÑбоÑа"],dayNamesShort:["нед","пнд","вÑв","ÑÑд","ÑÑв","пÑн","ÑбÑ"],dayNamesMin:["Ðд","Ðн","ÐÑ","СÑ","ЧÑ","ÐÑ","Сб"],weekHeader:"Тиж",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("uk",{buttonText:{month:"ÐÑÑÑÑÑ",week:"ТижденÑ",day:"ÐенÑ",list:"ÐоÑÑдок денний"},allDayText:"УвеÑÑ Ð´ÐµÐ½Ñ",eventLimitText:function(e){return"+Ñе "+e+"..."},noEventsMessage:"ÐÐµÐ¼Ð°Ñ Ð¿Ð¾Ð´Ñй Ð´Ð»Ñ Ð²ÑдобÑаженнÑ"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a){var t=e.split("_");return a%10==1&&a%100!=11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(e,t,n){var r={ss:t?"ÑекÑнда_ÑекÑнди_ÑекÑнд":"ÑекÑндÑ_ÑекÑнди_ÑекÑнд",mm:t?"Ñ Ð²Ð¸Ð»Ð¸Ð½Ð°_Ñ Ð²Ð¸Ð»Ð¸Ð½Ð¸_Ñ Ð²Ð¸Ð»Ð¸Ð½":"Ñ Ð²Ð¸Ð»Ð¸Ð½Ñ_Ñ Ð²Ð¸Ð»Ð¸Ð½Ð¸_Ñ Ð²Ð¸Ð»Ð¸Ð½",hh:t?"година_години_годин":"годинÑ_години_годин",dd:"денÑ_днÑ_днÑв",MM:"мÑÑÑÑÑ_мÑÑÑÑÑ_мÑÑÑÑÑв",yy:"ÑÑк_Ñоки_ÑокÑв"};return"m"===n?t?"Ñ Ð²Ð¸Ð»Ð¸Ð½Ð°":"Ñ Ð²Ð¸Ð»Ð¸Ð½Ñ":"h"===n?t?"година":"годинÑ":e+" "+a(r[n],+e)}function n(e,a){var t,n={nominative:"недÑлÑ_понедÑлок_вÑвÑоÑок_ÑеÑеда_ÑеÑвеÑ_пâÑÑниÑÑ_ÑÑбоÑа".split("_"),accusative:"недÑлÑ_понедÑлок_вÑвÑоÑок_ÑеÑедÑ_ÑеÑвеÑ_пâÑÑниÑÑ_ÑÑбоÑÑ".split("_"),genitive:"недÑлÑ_понедÑлка_вÑвÑоÑка_ÑеÑеди_ÑеÑвеÑга_пâÑÑниÑÑ_ÑÑбоÑи".split("_")};return!0===e?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):e?(t=/(\[[ÐвУÑ]\]) ?dddd/.test(a)?"accusative":/\[?(?:минÑлоÑ|наÑÑÑпноÑ)? ?\] ?dddd/.test(a)?"genitive":"nominative",n[t][e.day()]):n.nominative}function r(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}return e.defineLocale("uk",{months:{format:"ÑÑÑнÑ_лÑÑого_беÑезнÑ_квÑÑнÑ_ÑÑавнÑ_ÑеÑвнÑ_липнÑ_ÑеÑпнÑ_веÑеÑнÑ_жовÑнÑ_лиÑÑопада_гÑÑднÑ".split("_"),standalone:"ÑÑÑенÑ_лÑÑий_беÑезенÑ_квÑÑенÑ_ÑÑавенÑ_ÑеÑвенÑ_липенÑ_ÑеÑпенÑ_веÑеÑенÑ_жовÑенÑ_лиÑÑопад_гÑÑденÑ".split("_")},monthsShort:"ÑÑÑ_лÑÑ_беÑ_квÑÑ_ÑÑав_ÑеÑв_лип_ÑеÑп_веÑ_жовÑ_лиÑÑ_гÑÑд".split("_"),weekdays:n,weekdaysShort:"нд_пн_вÑ_ÑÑ_ÑÑ_пÑ_Ñб".split("_"),weekdaysMin:"нд_пн_вÑ_ÑÑ_ÑÑ_пÑ_Ñб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY Ñ.",LLL:"D MMMM YYYY Ñ., HH:mm",LLLL:"dddd, D MMMM YYYY Ñ., HH:mm"},calendar:{sameDay:r("[СÑÐ¾Ð³Ð¾Ð´Ð½Ñ "),nextDay:r("[ÐавÑÑа "),lastDay:r("[ÐÑоÑа "),nextWeek:r("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case
156626:return r("[ÐинÑлоÑ] dddd [").call(this);case 1:case 2:case 4:return r("[ÐинÑлого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s ÑомÑ",s:"декÑлÑка ÑекÑнд",ss:t,m:t,mm:t,h:"годинÑ",hh:t,d:"денÑ",dd:t,M:"мÑÑÑÑÑ",MM:t,y:"ÑÑк",yy:t},meridiemParse:/ноÑÑ|ÑанкÑ|днÑ|веÑоÑа/,isPM:function(e){return/^(днÑ|веÑоÑа)$/.test(e)},meridiem:function(e,a,t){return e<4?"ноÑÑ":e<12?"ÑанкÑ":e<17?"днÑ":"веÑоÑа"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(210);var n=t(1);n.datepickerLocale("vi","vi",{closeText:"Äóng",prevText:"<Trưá»c",nextText:"Tiếp>",currentText:"Hôm nay",monthNames:["Tháng Má»t","Tháng Hai","Tháng Ba","Tháng Tư","Tháng NÄm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng ChÃn","Tháng Mưá»i","Tháng Mưá»i Má»t","Tháng Mưá»i Hai"],monthNamesShort:["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"],dayNames:["Chá»§ Nháºt","Thứ Hai","Thứ Ba","Thứ Tư","Thứ NÄm","Thứ Sáu","Thứ Bảy"],dayNamesShort:["CN","T2","T3","T4","T5","T6","T7"],dayNamesMin:["CN","T2","T3","T4","T5","T6","T7"],weekHeader:"Tu",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("vi",{buttonText:{month:"Tháng",week:"TuâÌn",day:"Ngà y",list:"Lá»ch biá»u"},allDayText:"Cả ngà y",eventLimitText:function(e){return"+ thêm "+e},noEventsMessage:"Không có sá»± kiá»n Äá» hiá»n thá»"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("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".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chá»§ nháºt_thứ hai_thứ ba_thứ tư_thứ nÄm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"sa":"SA":t?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [nÄm] YYYY",LLL:"D MMMM [nÄm] YYYY HH:mm",LLLL:"dddd, D MMMM [nÄm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngà y mai lúc] LT",nextWeek:"dddd [tuần tá»i lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần trưá»c lúc] LT",sameElse:"L"},relativeTime:{future:"%s tá»i",past:"%s trưá»c",s:"và i giây",ss:"%d giây",m:"má»t phút",mm:"%d phút",h:"má»t giá»",hh:"%d giá»",d:"má»t ngà y",dd:"%d ngà y",M:"má»t tháng",MM:"%d tháng",y:"má»t nÄm",yy:"%d nÄm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(212);var n=t(1);n.datepickerLocale("zh-cn","zh-CN",{closeText:"å
³é",prevText:"<䏿",nextText:"䏿>",currentText:"ä»å¤©",monthNames:["䏿","äºæ","䏿","åæ","äºæ","å
æ","䏿","å
«æ","乿","åæ","å䏿","åäºæ"],monthNamesShort:["䏿","äºæ","䏿","åæ","äºæ","å
æ","䏿","å
«æ","乿","åæ","å䏿","åäºæ"],dayNames:["æææ¥","ææä¸","ææäº","ææä¸","ææå","ææäº","ææå
"],dayNamesShort:["卿¥","å¨ä¸","å¨äº","å¨ä¸","å¨å","å¨äº","å¨å
"],dayNamesMin:["æ¥","ä¸","äº","ä¸","å","äº","å
"],weekHeader:"å¨",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"å¹´"}),n.locale("zh-cn",{buttonText:{month:"æ",week:"å¨",day:"æ¥",list:"æ¥ç¨"},allDayText:"å
¨å¤©",eventLimitText:function(e){return"å¦å¤ "+e+" 个"},noEventsMessage:"没æäºä»¶æ¾ç¤º"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("zh-cn",{months:"䏿_äºæ_䏿_åæ_äºæ_å
æ_䏿_å
«æ_乿_åæ_å䏿_åäºæ".split("_"),monthsShort:"1æ_2æ_3æ_4æ_5æ_6æ_7æ_8æ_9æ_10æ_11æ_12æ".split("_"),weekdays:"æææ¥_ææä¸_ææäº_ææä¸_ææå_ææäº_ææå
".split("_"),weekdaysShort:"卿¥_å¨ä¸_å¨äº_å¨ä¸_å¨å_å¨äº_å¨å
".split("_"),weekdaysMin:"æ¥_ä¸_äº_ä¸_å_äº_å
".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYYå¹´MæDæ¥",LLL:"YYYYå¹´MæDæ¥Ahç¹mmå",LLLL:"YYYYå¹´MæDæ¥ddddAhç¹mmå",l:"YYYY/M/D",ll:"YYYYå¹´MæDæ¥",lll:"YYYYå¹´MæDæ¥ HH:mm",llll:"YYYYå¹´MæDæ¥dddd HH:mm"},meridiemParse:/忍|æ©ä¸|ä¸å|ä¸å|ä¸å|æä¸/,meridiemHour:function(e,a){return 12===e&&(e=0),"忍"===a||"æ©ä¸"===a||"ä¸å"===a?e:"ä¸å"===a||"æä¸"===a?e+12:e>=11?e:e+12},meridiem:function(e,a,t){var n=100*e+a;
15662return n<600?"忍":n<900?"æ©ä¸":n<1130?"ä¸å":n<1230?"ä¸å":n<1800?"ä¸å":"æä¸"},calendar:{sameDay:"[ä»å¤©]LT",nextDay:"[æå¤©]LT",nextWeek:"[ä¸]ddddLT",lastDay:"[æ¨å¤©]LT",lastWeek:"[ä¸]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(æ¥|æ|å¨)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"æ¥";case"M":return e+"æ";case"w":case"W":return e+"å¨";default:return e}},relativeTime:{future:"%så",past:"%så",s:"å ç§",ss:"%d ç§",m:"1 åé",mm:"%d åé",h:"1 å°æ¶",hh:"%d å°æ¶",d:"1 天",dd:"%d 天",M:"1 个æ",MM:"%d 个æ",y:"1 å¹´",yy:"%d å¹´"},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(214);var n=t(1);n.datepickerLocale("zh-hk","zh-HK",{closeText:"éé",prevText:"<䏿",nextText:"䏿>",currentText:"ä»å¤©",monthNames:["䏿","äºæ","䏿","åæ","äºæ","å
æ","䏿","å
«æ","乿","åæ","å䏿","åäºæ"],monthNamesShort:["䏿","äºæ","䏿","åæ","äºæ","å
æ","䏿","å
«æ","乿","åæ","å䏿","åäºæ"],dayNames:["æææ¥","ææä¸","ææäº","ææä¸","ææå","ææäº","ææå
"],dayNamesShort:["卿¥","å¨ä¸","å¨äº","å¨ä¸","å¨å","å¨äº","å¨å
"],dayNamesMin:["æ¥","ä¸","äº","ä¸","å","äº","å
"],weekHeader:"å¨",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"å¹´"}),n.locale("zh-hk",{buttonText:{month:"æ",week:"é±",day:"天",list:"æ´»åå表"},allDayText:"æ´å¤©",eventLimitText:"顯示æ´å¤",noEventsMessage:"没æä»»ä½æ´»å"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("zh-hk",{months:"䏿_äºæ_䏿_åæ_äºæ_å
æ_䏿_å
«æ_乿_åæ_å䏿_åäºæ".split("_"),monthsShort:"1æ_2æ_3æ_4æ_5æ_6æ_7æ_8æ_9æ_10æ_11æ_12æ".split("_"),weekdays:"æææ¥_ææä¸_ææäº_ææä¸_ææå_ææäº_ææå
".split("_"),weekdaysShort:"鱿¥_é±ä¸_é±äº_é±ä¸_é±å_é±äº_é±å
".split("_"),weekdaysMin:"æ¥_ä¸_äº_ä¸_å_äº_å
".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYYå¹´MæDæ¥",LLL:"YYYYå¹´MæDæ¥ HH:mm",LLLL:"YYYYå¹´MæDæ¥dddd HH:mm",l:"YYYY/M/D",ll:"YYYYå¹´MæDæ¥",lll:"YYYYå¹´MæDæ¥ HH:mm",llll:"YYYYå¹´MæDæ¥dddd HH:mm"},meridiemParse:/忍|æ©ä¸|ä¸å|ä¸å|ä¸å|æä¸/,meridiemHour:function(e,a){return 12===e&&(e=0),"忍"===a||"æ©ä¸"===a||"ä¸å"===a?e:"ä¸å"===a?e>=11?e:e+12:"ä¸å"===a||"æä¸"===a?e+12:void 0},meridiem:function(e,a,t){var n=100*e+a;return n<600?"忍":n<900?"æ©ä¸":n<1200?"ä¸å":1200===n?"ä¸å":n<1800?"ä¸å":"æä¸"},calendar:{sameDay:"[ä»å¤©]LT",nextDay:"[æå¤©]LT",nextWeek:"[ä¸]ddddLT",lastDay:"[æ¨å¤©]LT",lastWeek:"[ä¸]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(æ¥|æ|é±)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"æ¥";case"M":return e+"æ";case"w":case"W":return e+"é±";default:return e}},relativeTime:{future:"%så¾",past:"%så",s:"å¹¾ç§",ss:"%d ç§",m:"1 åé",mm:"%d åé",h:"1 å°æ",hh:"%d å°æ",d:"1 天",dd:"%d 天",M:"1 åæ",MM:"%d åæ",y:"1 å¹´",yy:"%d å¹´"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(216);var n=t(1);n.datepickerLocale("zh-tw","zh-TW",{closeText:"éé",prevText:"<䏿",nextText:"䏿>",currentText:"ä»å¤©",monthNames:["䏿","äºæ","䏿","åæ","äºæ","å
æ","䏿","å
«æ","乿","åæ","å䏿","åäºæ"],monthNamesShort:["䏿","äºæ","䏿","åæ","äºæ","å
æ","䏿","å
«æ","乿","åæ","å䏿","åäºæ"],dayNames:["æææ¥","ææä¸","ææäº","ææä¸","ææå","ææäº","ææå
"],dayNamesShort:["卿¥","å¨ä¸","å¨äº","å¨ä¸","å¨å","å¨äº","å¨å
"],dayNamesMin:["æ¥","ä¸","äº","ä¸","å","äº","å
"],weekHeader:"å¨",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"å¹´"}),n.locale("zh-tw",{buttonText:{month:"æ",week:"é±",day:"天",list:"æ´»åå表"},allDayText:"æ´å¤©",eventLimitText:"顯示æ´å¤",noEventsMessage:"没æä»»ä½æ´»å"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("zh-tw",{months:"䏿_äºæ_䏿_åæ_äºæ_å
æ_䏿_å
«æ_乿_åæ_å䏿_åäºæ".split("_"),monthsShort:"1æ_2æ_3æ_4æ_5æ_6æ_7æ_8æ_9æ_10æ_11æ_12æ".split("_"),weekdays:"æææ¥_ææä¸_ææäº_ææä¸_ææå_ææäº_ææå
".split("_"),weekdaysShort:"鱿¥_é±ä¸_é±äº_é±ä¸_é±å_é±äº_é±å
".split("_"),weekdaysMin:"æ¥_ä¸_äº_ä¸_å_äº_å
".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYYå¹´MæDæ¥",LLL:"YYYYå¹´MæDæ¥ HH:mm",LLLL:"YYYYå¹´MæDæ¥dddd HH:mm",l:"YYYY/M/D",ll:"YYYYå¹´MæDæ¥",lll:"YYYYå¹´MæDæ¥ HH:mm",llll:"YYYYå¹´MæDæ¥dddd HH:mm"},meridiemParse:/忍|æ©ä¸|ä¸å|ä¸å|ä¸å|æä¸/,meridiemHour:function(e,a){return 12===e&&(e=0),"忍"===a||"æ©ä¸"===a||"ä¸å"===a?e:"ä¸å"===a?e>=11?e:e+12:"ä¸å"===a||"æä¸"===a?e+12:void 0},meridiem:function(e,a,t){var n=100*e+a;
15662return n<600?"忍":n<900?"æ©ä¸":n<1130?"ä¸å":n<1230?"ä¸å":n<1800?"ä¸å":"æä¸"},calendar:{sameDay:"[ä»å¤©] LT",nextDay:"[æå¤©] LT",nextWeek:"[ä¸]dddd LT",lastDay:"[æ¨å¤©] LT",lastWeek:"[ä¸]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(æ¥|æ|é±)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"æ¥";case"M":return e+"æ";case"w":case"W":return e+"é±";default:return e}},relativeTime:{future:"%så¾",past:"%så",s:"å¹¾ç§",ss:"%d ç§",m:"1 åé",mm:"%d åé",h:"1 å°æ",hh:"%d å°æ",d:"1 天",dd:"%d 天",M:"1 åæ",MM:"%d åæ",y:"1 å¹´",yy:"%d å¹´"}})})},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,a,t){t(71),t(73),t(75),t(77),t(79),t(81),t(83),t(85),t(87),t(89),t(91),t(93),t(95),t(97),t(99),t(101),t(103),t(105),t(107),t(109),t(111),t(113),t(115),t(117),t(119),t(121),t(123),t(125),t(127),t(129),t(131),t(133),t(135),t(137),t(139),t(141),t(143),t(145),t(147),t(149),t(151),t(153),t(155),t(157),t(159),t(161),t(163),t(165),t(167),t(169),t(171),t(173),t(175),t(177),t(179),t(181),t(183),t(185),t(187),t(189),t(191),t(193),t(195),t(197),t(199),t(201),t(203),t(205),t(207),t(209),t(211),t(213),t(215),e.exports=t(439)},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0});var n=t(0),r=t(1);n.locale("en"),r.locale("en"),window.jQuery.datepicker&&window.jQuery.datepicker.setDefaults(window.jQuery.datepicker.regional[""])}])}); 15663(function(a,b){'object'==typeof exports&&'undefined'!=typeof module?b():'function'==typeof define&&define.amd?define(b):b()})(this,function(){'use strict';(function(a){if(a&&'undefined'!=typeof window){var b=document.createElement('style');return b.setAttribute('type','text/css'),b.innerHTML=a,document.head.appendChild(b),a}})('date-input-polyfill {\n background: #fff;\n color: #000;\n text-shadow: none;\n border: 0;\n padding: 0;\n height: auto;\n width: auto;\n line-height: normal;\n border-radius: 0;\n font-family: sans-serif;\n font-size: 14px;\n position: absolute !important;\n text-align: center;\n box-shadow: 0 7px 8px -4px rgba(0, 0, 0, 0.2), 0 12px 17px 2px rgba(0, 0, 0, 0.14), 0 5px 22px 4px rgba(0, 0, 0, 0.12);\n cursor: default;\n z-index: 1; }\n date-input-polyfill[data-open="false"] {\n display: none; }\n date-input-polyfill[data-open="true"] {\n display: block; }\n date-input-polyfill select, date-input-polyfill table, date-input-polyfill th, date-input-polyfill td {\n background: #fff;\n color: #000;\n text-shadow: none;\n border: 0;\n padding: 0;\n height: auto;\n width: auto;\n line-height: normal;\n border-radius: 0;\n font-family: sans-serif;\n font-size: 14px;\n box-shadow: none; }\n date-input-polyfill select, date-input-polyfill button {\n border: 0;\n border-bottom: 1px solid #E0E0E0;\n height: 24px;\n vertical-align: top; }\n date-input-polyfill select {\n width: 50%; }\n date-input-polyfill select:first-of-type {\n border-right: 1px solid #E0E0E0;\n width: 30%; }\n date-input-polyfill button {\n padding: 0;\n width: 20%;\n background: #E0E0E0; }\n date-input-polyfill table {\n border-collapse: collapse; }\n date-input-polyfill th, date-input-polyfill td {\n width: 32px;\n padding: 4px;\n text-align: center; }\n date-input-polyfill td[data-day] {\n cursor: pointer; }\n date-input-polyfill td[data-day]:hover {\n background: #E0E0E0; }\n date-input-polyfill [data-selected] {\n font-weight: bold;\n background: #D8EAF6; }\n\ninput[data-has-picker]::-ms-clear {\n display: none; }\n');var a=function(a,b){if(!(a instanceof b))throw new TypeError('Cannot call a class as a function')},b=function(){function a(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,'value'in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),c=function(){function c(){var b=this;if(a(this,c),c.instance)return c.instance;this.date=new Date,this.input=null,this.isOpen=!1,this.container=document.createElement('date-input-polyfill'),this.year=document.createElement('select'),c.createRangeSelect(this.year,this.date.getFullYear()-80,this.date.getFullYear()+20),this.year.className='yearSelect',this.year.addEventListener('change',function(){b.date.setYear(b.year.value),b.refreshDaysMatrix()}),this.container.appendChild(this.year),this.month=document.createElement('select'),this.month.className='monthSelect',this.month.addEventListener('change',function(){b.date.setMonth(b.month.value),b.refreshDaysMatrix()}),this.container.appendChild(this.month),this.today=document.createElement('button'),this.today.textContent='Today',this.today.addEventListener('click',function(){b.date=new Date,b.setInput()}),this.container.appendChild(this.today);var d=document.createElement('table');this.daysHead=document.createElement('thead'),this.days=document.createElement('tbody'),this.days.addEventListener('click',function(a){var c=a.target;if(!c.hasAttribute('data-day'))return!1;var d=b.days.querySelector('[data-selected]');d&&d.removeAttribute('data-selected'),c.setAttribute('data-selected',''),b.date.setDate(parseInt(c.textContent)),b.setInput()}),d.appendChild(this.daysHead),d.appendChild(this.days),this.container.appendChild(d),this.hide(),document.body.appendChild(this.container),document.addEventListener('click',function(a){for(var c=a.target,d=c===b.container;!d&&(c=c.parentNode);)d=c===b.container;'date'===a.target.getAttribute('type')||d||b.hide()})}return b(c,[{key:'hide',value:function(){this.container.setAttribute('data-open',this.isOpen=!1)}},{key:'show',value:function(){this.container.setAttribute('data-open',this.isOpen=!0)}},{key:'goto',value:function(a){var b=a.getBoundingClientRect();this.container.style.top=b.top+b.height+(document.documentElement.scrollTop||document.body.scrollTop)+'px',this.container.style.left=b.left+(document.documentElement.scrollLeft||document.body.scrollLeft)+'px',this.show()}},{key:'attachTo',value:function(a){return a===this.input&&this.isOpen?!1:void(this.input=a,this.sync(),this.goto(this.input.element))}},{key:'sync',value:function(){this.date=this.input.element.valueAsDate?c.absoluteDate(this.input.element.valueAsDate):new Date,this.year.value=this.date.getFullYear(),this.month.value=this.date.getMonth(),this.refreshDaysMatrix()}},{key:'setInput',value:function(){var a=this;this.input.element.value=this.date.getFullYear()+'-'+('0'+(this.date.getMonth()+1)).slice(-2)+'-'+('0'+this.date.getDate()).slice(-2),this.input.element.focus(),setTimeout(function(){a.hide()},100),this.pingInput()}},{key:'refreshLocale',value:function(){if(this.locale===this.input.locale)return!1;this.locale=this.input.locale;for(var a=['<tr>'],b=0,d=this.input.localeText.days.length;b<d;++b)a.push('<th scope="col">'+this.input.localeText.days[b]+'</th>');this.daysHead.innerHTML=a.join(''),c.createRangeSelect(this.month,0,11,this.input.localeText.months,this.date.getMonth()),this.today.textContent=this.input.localeText.today}},{key:'refreshDaysMatrix',value:function(){this.refreshLocale();for(var a=this.date.getFullYear(),b=this.date.getMonth(),d=new Date(a,b,1).getDay(),e=new Date(this.date.getFullYear(),b+1,0).getDate(),f=c.absoluteDate(this.input.element.valueAsDate)||!1,g=f&&a===f.getFullYear()&&b===f.getMonth(),h=[],j=0;j<e+d;
15663++j){if(0==j%7&&h.push('\n '+(0===j?'':'</tr>')+'\n <tr>\n '),j+1<=d){h.push('<td></td>');continue}var i=j+1-d,k=g&&f.getDate()===i;h.push('<td data-day '+(k?'data-selected':'')+'>\n '+i+'\n </td>')}this.days.innerHTML=h.join('')}},{key:'pingInput',value:function(){var a,b;try{a=new Event('input'),b=new Event('change')}catch(c){a=document.createEvent('KeyboardEvent'),a.initEvent('input',!0,!1),b=document.createEvent('KeyboardEvent'),b.initEvent('change',!0,!1)}this.input.element.dispatchEvent(a),this.input.element.dispatchEvent(b)}}],[{key:'createRangeSelect',value:function(a,b,c,d,e){a.innerHTML='';for(var f,g=b;g<=c;++g){f=document.createElement('option'),a.appendChild(f);var h=d?d[g-b]:g;f.text=h,f.value=g,g===e&&(f.selected='selected')}return a}},{key:'absoluteDate',value:function(a){return a&&new Date(a.getTime()+1e3*(60*a.getTimezoneOffset()))}}]),c}();c.instance=null;var d={"en_en-US":{days:['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],months:['January','February','March','April','May','June','July','August','September','October','November','December'],today:'Today',format:'M/D/Y'},"en-GB":{days:['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],months:['January','February','March','April','May','June','July','August','September','October','November','December'],today:'Today',format:'D/M/Y'},"zh_zh-CN":{days:['\u661F\u671F\u5929','\u661F\u671F\u4E00','\u661F\u671F\u4E8C','\u661F\u671F\u4E09','\u661F\u671F\u56DB','\u661F\u671F\u4E94','\u661F\u671F\u516D'],months:['\u4E00\u6708','\u4E8C\u6708','\u4E09\u6708','\u56DB\u6708','\u4E94\u6708','\u516D\u6708','\u4E03\u6708','\u516B\u6708','\u4E5D\u6708','\u5341\u6708','\u5341\u4E00\u6708','\u5341\u4E8C\u6708'],today:'\u4ECA\u5929',format:'Y/M/D'},"zh-Hans_zh-Hans-CN":{days:['\u5468\u65E5','\u5468\u4E00','\u5468\u4E8C','\u5468\u4E09','\u5468\u56DB','\u5468\u4E94','\u5468\u516D'],months:['\u4E00\u6708','\u4E8C\u6708','\u4E09\u6708','\u56DB\u6708','\u4E94\u6708','\u516D\u6708','\u4E03\u6708','\u516B\u6708','\u4E5D\u6708','\u5341\u6708','\u5341\u4E00\u6708','\u5341\u4E8C\u6708'],today:'\u4ECA\u5929',format:'Y/M/D'},"zh-Hant_zh-Hant-TW":{days:['\u9031\u65E5','\u9031\u4E00','\u9031\u4E8C','\u9031\u4E09','\u9031\u56D
15663B','\u9031\u4E94','\u9031\u516D'],months:['\u4E00\u6708','\u4E8C\u6708','\u4E09\u6708','\u56DB\u6708','\u4E94\u6708','\u516D\u6708','\u4E03\u6708','\u516B\u6708','\u4E5D\u6708','\u5341\u6708','\u5341\u4E00\u6708','\u5341\u4E8C\u6708'],today:'\u4ECA\u5929',format:'Y/M/D'},"de_de-DE":{days:['So','Mo','Di','Mi','Do','Fr','Sa'],months:['Januar','Februar','M\xE4rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],today:'Heute',format:'D.M.Y'},"da_da-DA":{days:['S\xF8n','Man','Tirs','Ons','Tors','Fre','L\xF8r'],months:['Januar','Februar','Marts','April','Maj','Juni','Juli','August','September','Oktober','November','December'],today:'I dag',format:'D/M/Y'},es:{days:['Dom','Lun','Mar','Mi\xE9','Jue','Vie','S\xE1b'],months:['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],today:'Hoy',format:'D/M/Y'},hi:{days:['\u0930\u0935\u093F','\u0938\u094B\u092E','\u092E\u0902\u0917\u0932','\u092C\u0941\u0927','\u0917\u0941\u0930\u0941','\u0936\u0941\u0915\u094D\u0930','\u0936\u0928\u093F'],months:['\u091C\u0928\u0935\u0930\u0940','\u092B\u0930\u0935\u0930\u0940','\u092E\u093E\u0930\u094D\u091A','\u0905\u092A\u094D\u0930\u0947\u0932','\u092E\u0948','\u091C\u0942\u0928','\u091C\u0942\u0932\u093E\u0908','\u0905\u0917\u0938\u094D\u0924','\u0938\u093F\u0924\u092E\u094D\u092C\u0930','\u0906\u0915\u094D\u091F\u094B\u092C\u0930','\u0928\u0935\u092E\u094D\u092C\u0930','\u0926\u093F\u0938\u092E\u094D\u092C\u0930'],today:'\u0906\u091C',format:'D/M/Y'},pt:{days:['Dom','Seg','Ter','Qua','Qui','Sex','S\xE1b'],months:['Janeiro','Fevereiro','Mar\xE7o','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],today:'Hoje',format:'D/M/Y'},ja:{days:['\u65E5','\u6708','\u706B','\u6C34','\u6728','\u91D1','\u571F'],months:['1\u6708','2\u6708','3\u6708','4\u6708','5\u6708','6\u6708','7\u6708','8\u6708','9\u6708','10\u6708','11\u6708','12\u6708'],today:'\u4ECA\u65E5',format:'Y/M/D'},"nl_nl-NL_nl-BE":{days:['Zondag','Maandag','Dinsdag','Woensdag','Donderdag','Vrijdag','Zaterdag'],months:['Januari','Februari','Maart','April','Mei','Juni','Juli','Augustus','September','Oktober','November','December'],today:'Vandaag',format:'D/M/Y'},"tr_tr-TR":{days:['Pzr','Pzt','Sal','\xC7r\u015F','Pr\u015F','Cum','Cmt'],months:['Ocak','\u015Eubat','Mart','Nisan','May\u0131s','Haziran','Temmuz','A\u011Fustos','Eyl\xFCl','Ekim','Kas\u0131m','Aral\u0131k'],today:'Bug\xFCn',format:'D/M/Y'},"fr_fr-FR":{days:['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],months:['Janvier','F\xE9vrier','Mars','Avril','Mai','Juin','Juillet','Ao\xFBt','Septembre','Octobre','Novembre','D\xE9cembre'],today:'Auj.',format:'D/M/Y'},"uk_uk-UA":{days:['\u041D\u0434','\u041F\u043D','\u0412\u0442','\u0421\u0440','\u0427\u0442','\u041F\u0442','\u0421\u0431'],months:['\u0421\u0456\u0447\u0435\u043D\u044C','\u041B\u044E\u0442\u0438\u0439','\u0411\u0435\u0440\u0435\u0437\u0435\u043D\u044C','\u041A\u0432\u0456\u0442\u0435\u043D\u044C','\u0422\u0440\u0430\u0432\u0435\u043D\u044C','\u0427\u0435\u0440\u0432\u0435\u043D\u044C','\u041B\u0438\u043F\u0435\u043D\u044C','\u0421\u0435\u0440\u043F\u0435\u043D\u044C','\u0412\u0435\u0440\u0435\u0441\u0435\u043D\u044C','\u0416\u043E\u0432\u0442\u0435\u043D\u044C','\u041B\u0438\u0441\u0442\u043E\u043F\u0430\u0434','\u0413\u0440\u0443\u0434\u0435\u043D\u044C'],today:'\u0421\u044C\u043E\u0433\u043E\u0434\u043D\u0456',format:'D.M.Y'},it:{days:['Dom','Lun','Mar','Mer','Gio','Ven','Sab'],months:['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','ottobre','Novembre','Dicembre'],today:'Oggi',format:'D/M/Y'},pl:{days:['Nie','Pon','Wto','\u015Aro','Czw','Pt','Sob'],months:['Stycze\u0144','Luty','Marzec','Kwiecie\u0144','Maj','Czerwiec','Lipiec','Sierpie\u0144','Wrzesie\u0144','Pa\u017Adziernik','Listopad','Grudzie\u0144'],today:'Dzisiaj',format:'D.M.Y'},cs:{days:['Po','\xDAt','St','\u010Ct','P\xE1','So','Ne'],months:['Leden','\xDAnor','B\u0159ezen','Duben','Kv\u011Bten','\u010Cerven','\u010Cervenec','Srpen','Z\xE1\u0159\xED','\u0158\xEDjen','Listopad','Prosinec'],today:'Dnes',format:'D.M.Y'},ru:{days:['\u0412\u0441','\u041F\u043D','\u0412\u0442','\u0421\u0440','\u0427\u0442','\u041F\u0442','\u0421\u0431'],months:['\u042F\u043D\u0432\u0430\u0440\u044C','\u0424\u0435\u0432\u0440\u0430\u043B\u044C','\u041C\u0430\u0440\u0442','\u0410\u043F\u0440\u0435\u043B\u044C','\u041C\u0430\u0439','\u0418\u044E\u043D\u044C','\u0418\u044E\u043B\u044C','\u0410\u0432\u0433\u0443\u0441\u0442','\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C','\u041E\u043A\u0442\u044F\u0431\u0440\u044C','\u041D\u043E\u044F\u0431\u0440\u044C','\u0414\u0435\u043A\u0430\u0431\u0440\u044C'],today:'\u0421\u0435\u0433\u043E\u0434\u043D\u044F',format:'D.M.Y'}},e=function(){function e(b){var d=this;a(this,e),this.element=b,this.element.setAttribute('data-has-picker','');for(var f=this.element,g='';f.parentNode&&(g=f.getAttribute('lang'),!g);)f=f.parentNode;this.locale=g||'en',this.localeText=this.getLocaleText(),Object.defineProperties(this.element,{value:{get:function(){return d.element.polyfillValue}
15663,set:function(a){if(!/^\d{4}-\d{2}-\d{2}$/.test(a))return d.element.polyfillValue='',d.element.setAttribute('value',''),!1;d.element.polyfillValue=a;var b=a.split('-');d.element.setAttribute('value',d.localeText.format.replace('Y',b[0]).replace('M',b[1]).replace('D',b[2]))}},valueAsDate:{get:function(){return d.element.polyfillValue?new Date(d.element.polyfillValue):null},set:function(a){d.element.value=a.toISOString().slice(0,10)}},valueAsNumber:{get:function(){return d.element.value?d.element.valueAsDate.getTime():NaN},set:function(a){d.element.valueAsDate=new Date(a)}}}),this.element.value=this.element.getAttribute('value');var h=function(){c.instance.attachTo(d)};this.element.addEventListener('focus',h),this.element.addEventListener('mousedown',h),this.element.addEventListener('mouseup',h),this.element.addEventListener('keydown',function(a){var b=new Date;switch(a.keyCode){case 27:c.instance.hide();break;case 38:d.element.valueAsDate&&(b.setDate(d.element.valueAsDate.getDate()+1),d.element.valueAsDate=b,c.instance.pingInput());break;case 40:d.element.valueAsDate&&(b.setDate(d.element.valueAsDate.getDate()-1),d.element.valueAsDate=b,c.instance.pingInput());break;default:}c.instance.sync()})}return b(e,[{key:'getLocaleText',value:function(){var a=this.locale.toLowerCase();for(var b in d){var c=b.split('_').map(function(a){return a.toLowerCase()});if(!!~c.indexOf(a))return d[b]}for(var e in d){var f=e.split('_').map(function(a){return a.toLowerCase()});if(!!~f.indexOf(a.substr(0,2)))return d[e]}return this.locale='en',this.getLocaleText()}}],[{key:'supportsDateInput',value:function(){var a=document.createElement('input');a.setAttribute('type','date');var b='not-a-date';return a.setAttribute('value',b),document.currentScript&&!document.currentScript.hasAttribute('data-nodep-date-input-polyfill-debug')&&a.value!==b}},{key:'addPickerToDateInputs',value:function(){var a=document.querySelectorAll('input[type="date"]:not([data-has-picker]):not([readonly])'),b=a.length;if(!b)return!1;for(var c=0;c<b;++c)new e(a[c])}}]),e}();if(!e.supportsDateInput()){var f=function(){c.instance=new c,e.addPickerToDateInputs(),document.querySelector('body').addEventListener('mousedown',function(){e.addPickerToDateInputs()})};if('complete'===document.readyState)f();else{var g=!1;document.addEventListener('DOMContentLoaded',function(){g=!0,f()}),window.addEventListener('load',function(){g||f()})}}}); 15664 15665svg4everybody(); 15666$(document).ready(function(){ 15667 (function() { 15668 15669var Expandable = { 15670 15671 init: function() { 15672 this.cacheDOM(); 15673 this.closeOnLoad(); 15674 this.disableAnchors(); 15675 this.bindWatch(); 15676 }, 15677 15678 cacheDOM: function() { 15679 this.$el = $(".aoc-accordion__header"); 15680 this.$close = $(".aoc-accordion__close"); 15681 this.$wrapper = this.$el.parent() 15682 }, 15683 15684 closeOnLoad: function() { 15685 this.$wrapper.each(function() { 15686 if (!$(this).hasClass("aoc-accordion__container--expanded")) { 15687 $(this).children(".aoc-accordion__body").css('display','none'); 15688 }else{ 15689 $(this).children(".aoc-accordion__body").slideToggle("fast"); 15690 } 15691 }); 15692 }, 15693 15694 disableAnchors: function() { 15695 this.$el.children("a").click (function(e) { 15696 e.preventDefault(); 15697 } ); 15698 }, 15699 15700 bindWatch: function() { 15701 this.$el.on('click', this.toggleExpandable); 15702 this.$close.on('click', this.closeExpandable); 15703 }, 15704 15705 toggleExpandable: function() { 15706 $(this).parent().toggleClass("aoc-accordion__container--expanded"); 15707 $(this).siblings(".aoc-accordion__body") 15708 .slideToggle("fast") 15709 .attr("aria-expanded", function(i, attr) { 15710 return attr == 'true' ? 'false' : 'true' 15711 }); 15712 $(this).children("a[role='button']").attr("aria-expanded", function(i, attr) { 15713 return attr == 'true' ? 'false' : 'true' 15714 }); 15715 }, 15716 15717 // handles behavior when the close icon is clicked 15718 closeExpandable: function() { 15719 $(this).parents(".aoc-accordion__container").removeClass("aoc-accordion__container--expanded"); 15720 $(this).parent(".aoc-accordion__body") 15721 .slideUp("fast") 15722 .attr("aria-expanded", function(i, attr) { 15723 return attr == 'true' ? 'false' : 'true'; 15724 }) 15725 .siblings(".aoc-accordion__header").children("a[role='button']").attr("aria-expanded", function(i, attr) { 15726 return attr == 'true' ? 'false' : 'true' 15727 }); 15728 } 15729 15730};
15730 Expandable.init(); 15731 15732$(document).ready(function() { 15733 15734 var mobileBreakpoint = 799 15735 var calendarParent = $('#aoc-calendar') 15736 var parser = document.createElement('a') 15737 var svgUrl 15738 var eventsObj 15739 var eventsCollection 15740 var eventContainer 15741 var groupId 15742 var companyId 15743 15744 //Feeds location to parser 15745 parser.href = location 15746 15747 //Dummy Events for Styleguide 15748 var dummyEvents = [ 15749 { 15750 title: 'No Registration or Directions given', 15751 start: '2016-12-02T17:13:03+00:00', 15752 end: '2016-12-02T19:13:00+00:00', 15753 place: 'A Church <br> 1234 Church Street <br> Chicago, IL 60610', 15754 contact: 'A. Person <br> 312.555.3030 <br> <a class="aoc-link" href="mailto:[email protected]">[email protected]</a>', 15755 description: 'An event withouth a registration url or diurections provided.', 15756 registerUrl: '', //Liferay service returns empty strings when no value is present 15757 directionsUrl: '', 15758 status: 0 15759 }, 15760 { 15761 title: 'Very Very Very Very Long Name', 15762 start: '2016-12-02T19:13:03+00:00', 15763 end: '2016-12-02T21:13:03+00:00', 15764 place: 'A Church <br> 1234 Church Street <br> Chicago, IL 60610', 15765 contact: 'A. Person <br> 312.555.3030 <br> <a class="aoc-link" href="mailto:[email protected]">[email protected]</a>', 15766 description: 'An event with a very long name', 15767 registerUrl: 'very-long-name-register.com', 15768 directionsUrl: 'very-long-name-directions.com', 15769 status: 0 15770 }, 15771 { 15772 title: 'Event 2', 15773 start: '2016-12-02T09:08:03+00:00', 15774 end: '2016-12-02T09:38:33+00:00', 15775 place: 'A Church <br> 1234 Church Street <br> Chicago, IL 60610', 15776 contact: 'A. Person <br> 312.555.3030 <br> <a class="aoc-link" href="mailto:[email protected]">[email protected]</a>', 15777 description: 'An event that is the 2nd only to the event that may or may not have been the first', 15778 registerUrl: 'event-2-register.com', 15779 directionsUrl: 'event-2-direcitons.com', 15780 status: 2 15781 }, 15782 { 15783 title: 'Event with No Description', 15784 start: '2016-12-12T09:08:03+00:00', 15785 end: '2016-12-12T11:08:03+00:00', 15786 contact: 'A Person', 15787 registerUrl: 'http://heres-an-event-register.com', 15788 directionsUrl: 'heres-an-event-directions.com', 15789 status: 0 15790 }, 15791 { 15792 title: 'A Charming Wednesday Affair', 15793 start: '2016-12-23T09:08:03+00:00', 15794 end: '2016-12-23T09:18:33+00:00', 15795 contact: 'Same Person', 15796 description: 'If Wednesday had its way there would only be one day per week. And that day would be Wednesday', 15797 registerUrl: 'wednesday-affair-register.com', 15798 directionsUrl: 'wednesday-affair-directions.com', 15799 status: 0 15800 }, 15801 { 15802 title: 'This event lasts several days', 15803 start: '2016-12-19T09:08:03+00:00', 15804 end: '2016-12-21T09:08:03+00:00', 15805 contact: 'Same Person', 15806 description: 'This even spans several days', 15807 registerUrl: 'several-days-register.com', 15808 directionsUrl: 'several-days-directions.com', 15809 backgroundColor: '#c0c0c0', 15810 status: 0 15811 }, 15812 { 15813 title: 'This event lasts several MONTHS', 15814 start: '2016-12-30T09:08:03+00:00', 15815 end: '2017-05-03T09:08:03+00:00', 15816 contact: 'Same Person', 15817 description: 'This event spans months, much like a pandemic spans continents.', 15818 registerUrl: 'several-months-register.com', 15819 directionsUrl: 'several-months-directions.com', 15820 backgroundColor: '#c0c0c0', 15821 status: 0 15822 }, 15823 { 15824 "allDay": true,
15825 "contact": "All Day test contact", 15826 "description": "All Day Event", 15827 "directionsUrl": "", 15828 "end": "2017-01-26T01:00:00+00:00", 15829 "eventId": 249002, 15830 "place": "All Day Event Test", 15831 "registerUrl": "", 15832 "start": "2017-01-26T01:00:00+00:00", 15833 "title": "All Day Event Test", 15834 status: 0 15835 }, 15836 { 15837 "allDay": false, 15838 "contact": "", 15839 "description": "", 15840 "directionsUrl": "", 15841 "end": "2017-04-20T15:00:00-0500", 15842 "eventId": 300212, 15843 "place": "", 15844 "registerUrl": "", 15845 "start": "2017-04-20T04:00:00-0500", 15846 "title": "Event 2", 15847 status: 0 15848 }, 15849 { 15850 "allDay": false, 15851 "contact": "4124350897", 15852 "description": "chicken noodle soup and cold coffee", 15853 "directionsUrl": "", 15854 "end": "2017-04-10T15:15:00-0500", 15855 "eventId": 386501, 15856 "place": "Chicago", 15857 "registerUrl": "", 15858 "start": "2017-04-04T22:00:00-0500", 15859 "title": "7 day test", 15860 status: 0 15861 }, 15862 { 15863 "allDay": false, 15864 "contact": "4\/1 - 4\/3", 15865 "description": "", 15866 "directionsUrl": "", 15867 "end": "2017-04-03T21:00:00-0500", 15868 "eventId": 390005, 15869 "place": "4\/1 - 4\/3", 15870 "registerUrl": "", 15871 "start": "2017-03-31T10:00:00-0500", 15872 "title": "4 day test (All Day) 03\/31 10 AM - 04\/03 9 PM", 15873 status: 0 15874 }, 15875 { 15876 "allDay": false, 15877 "contact": "708.383.3430", 15878 "description": "", 15879 "directionsUrl": "", 15880 "end": "2017-04-28T15:00:00-0500", 15881 "eventId": 206932, 15882 "place": "St. Giles Parish", 15883 "registerUrl": "", 15884 "start": "2017-04-28T09:00:00-0500", 15885 "title": "Archbishop's Meeting with Leadership of religious", 15886 status: 0 15887 }, 15888 { 15889 "allDay": false, 15890 "contact": "312.492.8442", 15891 "description": "", 15892 "directionsUrl": "https:\/\/www.google.com\/maps?q=Healing+Garden+at+Holy+Family+Parish,+1080+W+Roose", 15893 "end": "2017-04-08T00:30:00-0500", 15894 "eventId": 206942, 15895 "place": "Healing Garden at Holy Family Parish, 1080 W Roose", 15896 "registerUrl": "", 15897 "start": "2017-04-07T11:30:00-0500", 15898 "title": "Pinwheel Prayer Service", 15899 status: 0 15900 }, 15901 { 15902 "allDay": true, 15903 "contact": "", 15904 "description": "", 15905 "directionsUrl": "", 15906 "end": "2017-04-05T05:00:00-0500", 15907 "eventId": 389909, 15908 "place": "", 15909 "registerUrl": "", 15910 "start": "2017-03-31T06:00:00-0500", 15911 title: '6 day test', 15912 status: 2 15913 } 15914 ] 15915 15916 //Check if we're in the styleguide or in Liferay 15917 if (window.Liferay) { 15918 svgUrl = '/o/aoc-theme/resources/svg/svg-sprite.svg#chevron-right' 15919 groupId = Liferay.ThemeDisplay.getScopeGroupId() 15920 companyId = Liferay.ThemeDisplay.getCompanyId() 15921 locale = Liferay.ThemeDisplay.getLanguageId() 15922 } 15923 else { 15924 svgUrl = 'svg-sprite.svg#chevron-right' 15925 } 15926 15927 // Add class based on browser width 15928 if ($(window).width() < mobileBreakpoint) calendarParent.addClass('mobile') 15929 else calendarParent.addClass('desktop') 15930 15931 var formatDate = function formatDate(dateArray) { 15932 var monthDictionary = { 15933 'Jan': '01', 15934 'Feb': '02', 15935 'Mar': '03', 15936 'Apr': '04', 15937 'May': '05', 15938 'Jun': '06', 15939 'Jul': '07', 15940 'Aug': '08', 15941 'Sep': '09', 15942 'Oct': '10', 15943 'Nov': '11', 15944 'Dec': '12' 15945 } 15946 15947 return dateArray[3] + '-' + monthDictionary[dateArray[1]] + '-' + dateArray[2] 15948 } 15949 15950 // Initialize the Calendar 15951 $(calendarParent).fullCalendar({ 15952 header: { 15953 left: 'prev, title, next', 15954 center: '', 15955 right: '' 15956 },
15957 ignoreTimezone: 'false', 15958 nextDayThreshold: '00:00:00', 15959 timezone: 'local', 15960 columnFormat: 'dddd', 15961 displayEventTime: false, 15962 eventColor: '#cccccc', 15963 eventRender: function(event, element, view) { 15964 if (view.name === 'listMonth') { 15965 var contentCell = element.find('.fc-list-item-title') 15966 var eventWindow = $('.aoc-calendar__event-content:first') 15967 15968 //Append Accordion chevron SVG 15969 contentCell.append('<svg class="aoc-accordion__chevron"><use xlink:href="'+ svgUrl +'" /></svg>') 15970 15971 eventWindow.clone().appendTo(contentCell) 15972 element.find('.fc-list-item-marker').remove() 15973 } 15974 }, 15975 defaultView: $(window).width() < mobileBreakpoint ? 'listMonth' : 'month', windowResize: function(view) { 15976 if ($(window).width() < mobileBreakpoint) { 15977 calendarParent.fullCalendar('changeView', 'listMonth') 15978 calendarParent.addClass('mobile').removeClass('desktop') 15979 } 15980 else { 15981 calendarParent.fullCalendar('changeView', 'month') 15982 calendarParent.addClass('desktop').removeClass('mobile') 15983 } 15984 }, 15985 eventClick: function(calEvent, jsEvent, view) { 15986 if (calendarParent.hasClass('desktop')) { 15987 openEventWindow(calEvent,jsEvent) 15988 } 15989 else { 15990 openEventDropdown(calEvent, jsEvent) 15991 } 15992 }, 15993 events: function(start, end, timezone, callback) { 15994 var startDate = start['_d'].toString().split(' ') 15995 var endDate = end['_d'].toString().split(' ') 15996 15997 var formattedStartDate = formatDate(startDate) 15998 var formattedEndDate = formatDate(endDate) 15999 var categoryIdData = calendarParent.attr('data-categoryids') || '' 16000 16001 if (window.Liferay) { 16002 AUI().use('aui-base', function(A) { 16003 16004 Liferay.Service('/aoc-service-portlet.event/get-events', 16005 { 16006 groupId: groupId, 16007 companyId: companyId, 16008 startDate: formattedStartDate, 16009 endDate: formattedEndDate, 16010 categoryIds: categoryIdData, 16011 locale: locale 16012 }, 16013 function(response) { 16014 callback(response) 16015 } 16016 ) 16017 }) 16018 } 16019 else { 16020 callback(dummyEvents) 16021 } 16022 }, 16023 eventDataTransform: function(event) { 16024 16025 if(event.allDay) { 16026 event.end = moment(event.end).add(1, 'days') 16027 } 16028 16029 if(event.status != 0 ) { 16030 event.backgroundColor = '#ffffe6' 16031 } 16032 16033 return event; 16034 } 16035 }) 16036 16037 //Close Button Click event 16038 $('.aoc-calendar__event-window-close').click(function(e){ 16039 e.preventDefault() 16040 e.stopPropagation() 16041 closeWindow() 16042 }) 16043 16044 //The Event window for calendar month view 16045 var openEventWindow = function(calEvent, jsEvent) { 16046 eventContainer = $('.aoc-calendar__event-window') 16047 eventContainer.css('display', 'flex') 16048 eventPopulate(calEvent, eventContainer) 16049 } 16050 16051 // The events windows for list view 16052 var openEventDropdown = function(calEvent, jsEvent) { 16053 var eventContainer = $(jsEvent.currentTarget).find('.aoc-calendar__event-content') 16054 var eventContainerParent = eventContainer.closest('.fc-list-item') 16055 16056 $('.fc-list-item').not(eventContainerParent).removeClass('expanded') 16057 eventContainerParent.toggleClass('expanded') 16058 eventPopulate(calEvent, eventContainer) 16059 } 16060 16061 //Populate the event's data 16062 var eventPopulate = function(calEvent, eventContainer) { 16063 var eventName = calEvent.title 16064 var eventTime 16065 16066 var startMoment = moment(calEvent.start) 16067 var endMoment = moment(calEvent.end) 16068 16069 if (calEvent.allDay){ 16070 eventTimeDisplay = "All day" 16071 } else if ( !calEvent.allDay && endMoment.isSame(startMoment, 'day') ) { 16072 eventTimeDisplay = startMoment.format('h:mm a') + ' - ' + endMoment.format('h:mm a') 16073 } else if ( !calEvent.allDay && endMoment.isAfter(startMoment, 'day') ){ 16074 eventTimeDisplay = startMoment.format('h:mm a') + ' - ' + endMoment.format('MM/DD/YYYY h:mm a') 16075 } else { 16076 eventTimeDisplay = "Too Complicated" 16077 } 16078 16079 16080 var values = [ 16081 date = { 16082 element: eventContainer.find('.aoc-calendar__event-detail-row--date'), 16083 value: moment(calEvent.start).format('MM/DD/YYYY'), 16084 type: 'text' 16085 }, 16086 time = { 16087 element: eventContainer.find('.aoc-calendar__event-detail-row--time'), 16088 value: eventTimeDisplay, 16089 type: 'text' 16090 }, 16091 place = { 16092 element: eventContainer.find('.aoc-calendar__event-detail-row--place'), 16093 value: calEvent.place, 16094 type: 'text' 16095 }, 16096 contact = { 16097 element: eventContainer.find('.aoc-calendar__event-detail-row--contact'), 16098 value: calEvent.contact, 16099 type: 'text' 16100 }, 16101 description = { 16102 element: eventContainer.find('.aoc-calendar__event-detail-row--description'), 16103 value: calEvent.description, 16104 type: 'text' 16105 }, 16106 registerUrl = { 16107 element: eventContainer.find('.aoc-calendar__event-button--register'), 16108 value: calEvent.registerUrl, 16109 type: 'button' 16110 16111 }, 16112 directionsUrl = { 16113 element: eventContainer.find('.aoc-calendar__event-button--directions'), 16114 value: calEvent.directionsUrl, 16115 type: 'button' 16116 } 16117 ] 16118 16119 16120 eventContainer.find('.aoc-calendar__event-name').text(eventName) // Even Title 16121 16122 16123 //Go through each value, populating it's fields in the event popup 16124 for(var i = 0; i < values.length; i++){ 16125 16126 var value = values[i].value; 16127 var element = values[i].element; 16128 var type = values[i].type; 16129 16130 16131 if(value){ 16132 switch(type) { 16133 case 'text': 16134 var valueContainer = element.find('[class$="label"]').next('[class$=info]'); 16135 valueContainer.html(value); 16136 element.show(); 16137 break; 16138 case 'button': 16139 element.attr('href', value ); 16140 element.attr('target', '_blank'); 16141 element.show(); 16142 break; 16143 default: 16144 element.show(); 16145 } 16146 }else{ 16147 element.hide(); 16148 } 16149 } 16150 } 16151 16152 //Close event function 16153 var closeWindow = function() { 16154 $('.aoc-calendar__event-window').hide() 16155 $('.expanded').toggleClass('expanded') 16156 } 16157}) 16158 16159var $eventsTab = $('.aoc-pub-event__title'); 16160var $eventsWrapper = $('.aoc-pub-event__wrapper'); 16161var $eventsPointer = $('.aoc-accordion__chevron'); 16162var $eventsClose = $('.aoc-pub-events__close'); 16163var $theEvent = $('.aoc-pub-event'); 16164 16165 16166$eventsTab.click(function(event) { 16167 $(this).siblings($eventsWrapper).toggleClass('aoc-pub-event__wrapper--open'); 16168 $(this).find($eventsPointer).toggleClass('aoc-accordion__chevron--expand'); 16169 // $(this).closest('.aoc-pub-event').find($eventsClose).toggleClass('aoc-pub-events__close--show'); 16170 16171 // Just add another class and put the close button in there instead of using this above. 16172}); 16173 16174 16175$eventsClose.click(function(event) { 16176 // $(this).siblings($eventsWrapper).removeClass('aoc-pub-event__wrapper--open'); 16177 $(this).closest($eventsWrapper).removeClass('aoc-pub-event__wrapper--open'); 16178 $(this).closest($theEvent).find($eventsPointer).removeClass('aoc-accordion__chevron--expand'); 16179}); 16180 16181 16182 16183function wordCount( val ){ 16184 var wom = val.match(/\S+/g); 16185 return {
16186 charactersNoSpaces : val.replace(/\s+/g, '').length, 16187 characters : val.length, 16188 words : wom ? wom.length : 0, 16189 lines : val.split(/\r*\n/).length 16190 }; 16191} 16192 16193var textFields = $('#mailing-address, #message, #article-text'); 16194 16195textFields.each(function(){ 16196 16197 var maxWordTip = $(this).next('.aoc-form__field-tip--maxwords'); //Find the field's corresponding "tool tip" 16198 var countMaxDisplay = maxWordTip.find('span').eq(0); //The first span will display the max number of words 16199 var countDisplay = maxWordTip.find('.word-count'); //The second span will display the number of remaining words 16200 var countMax = $(this).data('maxwords'); //Get the word max 16201 var $element = $(this)[0]; //Get the actual element from the jQuery object 16202 16203 countMaxDisplay.text(countMax); //Replace the spans's text 16204 countDisplay.text(countMax); 16205 16206 $element.addEventListener("input", function(){ 16207 var v = wordCount( this.value ); 16208 16209 countDisplay.text(countMax - v.words); //Words left == max number of words minus current total amount of words typed 16210 16211 if(v.words > countMax){ 16212 $(this).addClass('parsley-error'); 16213 maxWordTip.addClass('parsley-error'); 16214 }else{ 16215 $(this).removeClass('parsley-error'); 16216 maxWordTip.removeClass('parsley-error'); 16217 } 16218 16219 }, false); 16220}); 16221 16222var GoodNewsForm = (function() { 16223 $( '.aoc-form__input--file' ).each( function() { 16224 var $input = $( this ), 16225 $label = $input.siblings( '.aoc-form__file-name-container:first' ), 16226 labelVal = $label.html(); 16227 16228 $input.on( 'change', getFileName) 16229 .on( 'focus', addFocus) 16230 .on( 'blur', removeFocus); 16231 16232 function getFileName(e) { 16233 var fileName = ''; 16234 16235 if( this.files && this.files.length > 1 ) 16236 fileName = ( this.getAttribute( 'data-multiple-caption' ) || '' ).replace( '{count}', this.files.length ); 16237 else if( e.target.value ) 16238 fileName = e.target.value.split( '\\' ).pop(); 16239 16240 if( fileName ) 16241 $label.html( fileName ); 16242 else 16243 $label.html( labelVal ); 16244 } 16245 16246 // Add focus states due to Firefox bug 16247 function addFocus() { 16248 $input.addClass( 'has-focus' ); 16249 } 16250 16251 function removeFocus() { 16252 $input.removeClass( 'has-focus' ); 16253 } 16254 }); 16255})(); 16256 16257/************************ 16258PARSLEY.JS MAX WORD FUNCTION 16259*************************/ 16260 16261(function () { 16262// minwords, maxwords, words extra validators 16263var countWords = function (string) { 16264 return string 16265 .replace( /(^\s*)|(\s*$)/gi, "" ) 16266 .replace( /\s+/gi, " " ) 16267 .split(' ').length; 16268}; 16269 16270window.Parsley.addValidator( 16271 'minwords', 16272 function (value, nbWords) { 16273 return countWords(value) >= nbWords; 16274 }, 32) 16275 .addMessage('en', 'minwords', 'This value needs more words'); 16276 16277window.Parsley.addValidator( 16278 'maxwords', 16279 function (value, nbWords) { 16280 return countWords(value) <= nbWords; 16281 }, 32) 16282 .addMessage('en', 'maxwords', 'This value needs fewer words'); 16283 16284window.Parsley.addValidator( 16285 'words', 16286 function (value, arrayRange) { 16287 var length = countWords(value); 16288 return length >= arrayRange[0] && length <= arrayRange[1]; 16289 }, 32) 16290 .addMessage('en', 'words', 'This value has the incorrect number of words'); 16291})(); 16292 16293 var parser = document.createElement('a'); 16294 var svgUrl; 16295 16296 parser.href = location; //Feeds location to parser 16297 16298 16299 //Check if we're in the styleguide or in Liferay 16300 if(window.Liferay){ 16301 svgPath = '/o/aoc-theme/resources/images'; 16302 }else{ 16303 svgPath = 'img'; 16304 } 16305 16306 16307 $('.aoc-slider-js').owlCarousel({ 16308 center: true, 16309 dots: true, 16310 loop: true, 16311 autoplay: true, 16312 margin: 10, 16313 nav: true, 16314 navText: ["<img class='slider-nav' src='" + svgPath + "/arrow-prev.svg'>", "<img class='slider-nav' src='"+ svgPath +"/arrow-next.svg'>"], 16315 //navText: ["<svg class='slider-nav'><use xlink:href='svg-sprite.svg#arrow-prev'></use></svg>", "<svg class='slider-nav'><use xlink:href='svg-sprite.svg#arrow-next'></use></svg>"], 16316 navigation:true, 16317 smartSpeed: 900, 16318 responsiveClass: true, 16319 transitionStyle: "fade", 16320 animateIn: 'fadeIn', 16321 animateOut: 'fadeOut', 16322 responsive: { 16323 320: { 16324 items: 1, 16325 nav: false, 16326 navText: false, 16327 loop: true, 16328 dots: true, 16329 center: true, 16330 autoHeight: true 16331 }, 16332 480: { 16333 items: 1, 16334 nav: false, 16335 navText: false, 16336 loop: true, 16337 dots: true, 16338 center: true, 16339 autoHeight: true 16340 }, 16341 16342 550: { 16343 items: 1, 16344 dots: true, 16345 nav: false, 16346 navText: false, 16347 loop: true, 16348 center: true, 16349 autoHeight: true 16350 }, 16351 16352 800: { 16353 items: 1, 16354 dots: true, 16355 nav: false, 16356 navText: false, 16357 loop: true, 16358 center: true, 16359 autoHeight: true 16360 }, 16361 16362 1000: { 16363 items: 1, 16364 dots: true, 16365 nav: true, 16366 loop: true, 16367 center: true, 16368 autoHeight: true 16369 } 16370 } 16371 }); 16372 16373 16374var images = $('.aoc-slider__img-mobile'); 16375 16376images.each(function(){ 16377 var $this = $(this); 16378 // $this.data('src', $this.attr('src')); //Save it to data for perserverance 16379}); 16380 16381function jqUpdateSize(){ 16382 // Get the dimensions of the viewport 16383 var width = $(window).width(); 16384 var height = $(window).height(); 16385 var images = $('.aoc-slider__img-mobile'); 16386 16387 16388 images.each(function(i){ 16389 var $this = $(this); 16390 var src; 16391 16392 if(width < 520){ 16393 src = 'url(' + $this.data('responsive-src') + ')'; 16394 $this.css('background-image', src); 16395 }else{ 16396 src = 'url(' + $this.data('src') + ')'; 16397 $this.css('background-image', src); 16398 } 16399 }); 16400 16401 if(width < 520){ 16402 var images = $('.aoc-slider-image'); 16403 $('.aoc-slider-js').addClass('responsive'); 16404 }else{ 16405 $('.aoc-slider-js').removeClass('responsive') 16406 } 16407}; 16408 16409$(document).ready(jqUpdateSize); // When the page first loads 16410$(window).resize(jqUpdateSize); // When the browser changes size 16411 16412 16413var PopUp = (function() { 16414 var $close = $('.aoc-pub-popup__close'), 16415 $lightbox = $('.aoc-pub-lightbox'); 16416 16417 $close.on('click', closePopup); 16418 16419 function closePopup() { 16420 $lightbox.hide(); 16421 } 16422})(); 16423$selectDropdown = $('.aoc-select-dropdown__content'); 16424$selectDropdown_li = $('.aoc-select-dropdown__content li'); 16425 16426$selectDropdown_li.on('click', function() { 16427 // Find text inside list item 16428 var text = $(this).text(); 16429 // Replace with the text that's selected 16430 $(this).closest('.aoc-select-dropdown').find('.aoc-select-dropdown__text').text(text); 16431 $selectDropdown.removeClass('aoc-select-dropdown__content--show'); 16432 event.preventDefault(); 16433}); 16434 16435// Toggles menu open and close 16436$('.aoc-select-dropdown__toggle').click(function() { 16437 $(this).closest('.aoc-select-dropdown').find('.aoc-select-dropdown__content').toggleClass('aoc-select-dropdown__content--show'); 16438 $(this).closest('.aoc-select-dropdown').find('.aoc-select-dropdown__text').toggleClass('aoc-select-dropdown__text--open'); 16439}); 16440 16441// Hides Menu when clicking off of dropdown 16442$('.aoc-select-dropdown__toggle').focusout(function() { 16443 window.setTimeout(function() { 16444 $('.aoc-select-dropdown__content').removeClass('aoc-select-dropdown__content--show'); 16445 $('.aoc-select-dropdown__text').removeClass('aoc-select-dropdown__text--open'); 16446 }, 100) 16447}); 16448 16449var $sideNavChildren = $('.aoc-sidenav__item__has-children'); 16450 16451$sideNavChildren.click(function(e) { 16452 // Open each sublist 16453 $(this).find('.aoc-sidenav__sublist').first().toggle(); 16454 // Change arrow direction 16455 $(this).toggleClass('aoc-sidenav__item__has-children--show'); 16456}); 16457 16458// When a sublist item is active make the ul show 16459$(".aoc-sidenav__sublist .selected").parent('ul').parent('li').toggleClass('aoc-sidenav__item__has-children--show'); 16460 16461 16462//When sublist item is clicked, prevent parent from closing 16463$('.aoc-sidenav__sublist').find('a').click(function(e){ 16464 e.stopPropagation(); 16465}); 16466var sidebar = $('.kss-sidebar'); 16467 16468$(document).bind('keydown','ctrl+l', function() { 16469 sidebar.toggleClass('kss-sidebar--collapse'); 16470}); 16471// Article Slider 16472var pubNav = $('.aoc-pub-slider__nav').slick({ 16473 autoplay: true, 16474 autoplaySpeed: 5000, 16475 slidesToShow: 5, 16476 slidesToScroll: 1, 16477 asNavFor: '.aoc-pub-slider__slides', 16478 dots: false,
16479 arrows: false, 16480 focusOnSelect: true, 16481 infinite: false 16482}); 16483 16484var pubSlide = $('.aoc-pub-slider__slides').slick({ 16485 autoplay: true, 16486 autoplaySpeed: 5000, 16487 slidesToShow: 1, 16488 slidesToScroll: 1, 16489 arrows: false, 16490 asNavFor: '.aoc-pub-slider__nav', 16491 infinite: true, 16492 fade: true, 16493 cssEase: 'linear', 16494 responsive: [ 16495 16496 { 16497 breakpoint: 799, 16498 settings: { 16499 dots: true 16500 } 16501 } 16502 16503 // You can unslick at a given breakpoint now by adding: 16504 // settings: "unslick" 16505 // instead of a settings object 16506 ] 16507}); 16508 16509 16510// The node to be monitored 16511var target = $( "body" )[0]; 16512 16513// Create an observer instance 16514var observer = new MutationObserver(function( mutations ) { 16515 mutations.forEach(function( mutation ) { 16516 var newNodes = mutation.addedNodes; // DOM NodeList 16517 var removedNodes = mutation.removedNodes; // DOM NodeList 16518 if( newNodes !== null ) { // If there are new nodes added 16519 var $nodes = $( newNodes ); // jQuery set 16520 $nodes.each(function() { 16521 var $node = $( this ); 16522 if($(".slick-lightbox").length > 0){ 16523 $("body").css({overflow: "hidden"}); 16524 } 16525 16526 }); 16527 } 16528 if(removedNodes !== null){ 16529 var $nodes = $( removedNodes ); // jQuery set 16530 $nodes.each(function() { 16531 var $node = $( this ); 16532 if($(".slick-lightbox").length == 0){ 16533 $("body").css({overflow: "auto"}); 16534 } 16535 16536 }); 16537 } 16538 }); 16539}); 16540 16541// Configuration of the observer: 16542var config = { 16543 attributes: true, 16544 childList: true, 16545 characterData: true 16546}; 16547 16548// Pass in the target node, as well as the observer options 16549observer.observe(target, config); 16550 16551 16552// Images Slider 16553$(document).ready(function() { 16554 16555 var $status = $('.slider_counter'); 16556 var $slickElement = $('.aoc-pub-image-slider__slides'); 16557 var $slickTabs = $('.aoc-pub-image-slider__tabs'); 16558 var $closeCaption = $('.aoc-pub-slider-counter__button'); 16559 var $slickCaption = $('.aoc-pub-image-slider__caption'); 16560 var $slickCounter = $('.aoc-pub-slider-counter'); 16561 16562 16563 // Add counter to slides 16564 $slickElement.on('init reInit afterChange', function (event, slick, currentSlide, nextSlide) { 16565 //currentSlide is undefined on init -- set it to 0 in this case (currentSlide is 0 based) 16566 var i = (currentSlide ? currentSlide : 0) + 1; 16567 $(this).find('.slider_counter').text(i + ' / ' + slick.slideCount); 16568 }); 16569 16570 16571 // Close Caption 16572 $closeCaption.on('click', function(event) { 16573 event.preventDefault(); 16574 $slickCaption.toggleClass('aoc-pub-image-slider__caption--close'); 16575 $slickCounter.toggleClass('aoc-pub-slider-counter--collapse'); 16576 $closeCaption.toggleClass('aoc-pub-slider-counter__button--show'); 16577 }); 16578 16579 //Allows the pager to dynamically move up after caption is closed 16580 $('.aoc-pub-slider-counter__button').click(function(){ 16581 $('.slick-list').toggleClass('aoc-pub-slider-height--auto'); 16582 }); 16583 16584 // Slider Thumbs 16585 $slickTabs.slick({ 16586 autoplay: false, 16587 // centerPadding: '75px', 16588 autoplaySpeed: 5000, 16589 slidesToShow: 9, 16590 slidesToScroll: 1, 16591 asNavFor: '.aoc-pub-image-slider__slides', 16592 arrows: true, 16593 centerMode: false, 16594 focusOnSelect: true, 16595 infinite: true 16596 }); 16597 16598 // Slider Images 16599 $slickElement.slick({ 16600 autoplay: false, 16601 autoplaySpeed: 5000, 16602 slide: '.slick-slider-item', 16603 slidesToShow: 1, 16604 slidesToScroll: 1, 16605 arrows: true, 16606 asNavFor: '.aoc-pub-image-slider__tabs', 16607 infinite: true, 16608 fade: true, 16609 cssEase: 'linear', 16610 adaptiveHeight: true 16611 }); 16612 16613 $slickElement.slickLightbox({ 16614 src: 'src', 16615 autoplay: false, 16616 itemSelector: '.slick-slider-item img', 16617 caption: 'caption' 16618 16619 }); 16620 16621 $('.aoc-pub-slider-counter__button--fullscreen').click(function(){ 16622 $('.slick-current img').trigger('click'); 16623 16624 // Re-sorts Slider Lightbox markup so prev button markup comes after slider image markup. For some reason it's not this way in the lightbox plugin. 16625 $(".slick-lightbox").find('.slick-prev').insertAfter('.slick-list'); 16626 }); 16627 16628 16629 16630}); 16631 16632 16633 16634 16635/*var socialMediaShareButtons = (function(){ 16636 var $facebook = $('.aoc-pub-article__fb-share'); 16637 var $twitter = $('.aoc-pub-article__twitter-share'); 16638 var $articleTitle = $('.aoc-pub-article__header--title').text(); 16639 var $url = window.location.href.split('#')[0]; 16640 16641 if (($articleTitle.length + $url.length) >= 140) $articleTitle = $articleTitle.substring(0, (136 - $url.length)) + '...'; 16642 16643 $facebook.attr('href', 'https://www.facebook.com/sharer/sharer.php?u=' + $url); 16644 $twitter.attr('href', 'https://twitter.com/intent/tweet?text=' + $articleTitle + '&url=' + $url); 16645})();*/ 16646$(document).ready(function(){ 16647 16648 // Sticky element for Article Page 16649 // $("#aoc-pub-social-media-sticky").sticky({topSpacing:0}); 16650 16651 // Sticky element for Book Detail 16652 // $("#aoc-pub-social-media-books-sticky").sticky({topSpacing:0}); 16653 16654 // Sticky element for Events Side Nav 16655 // $('#aoc-pub-events-nav-sticky').sticky({topSpacing:100}); 16656}); 16657 16658 16659// ------------------------------------------------------------------------------------------------------------------------------------- \\ 16660 16661// -- UNCOMMENT THE ABOVE JQUERY CODE ONCE IT'S IN LIFERAY 16662 16663// -- This was done to improve readability of styleguide. 16664// -- Since this code makes the element fixed positioned it will show up throughout the entire styleguide and n
16664ot just the section it's in. 16665 16666// ------------------------------------------------------------------------------------------------------------------------------------- \\ 16667var HeaderDropDown = (function(){ 16668 16669 // cache selectors 16670 var $button = $(".aoc-header__menu-button"); 16671 var $dropdown = $(".aoc-header__nav-bar"); 16672 var $mobile_target = $(".aoc-header__nav-bar-link .aoc-sublist__trigger"); 16673 var $sub_target = $(".aoc-sublist__sub-item-link--dropdown .aoc-sublist__trigger"); 16674 var $other_sites_target = $(".aoc-header__dropdown-link"); 16675 var $other_sites_menu = $(".aoc-header__site-menu"); 16676 var $other_sites_close = $(".aoc-header__site-menu-close"); 16677 var $sublist_trigger = $("a.aoc-sublist__trigger"); 16678 var $mobile_target_sites = $(".aoc-header__nav-bar-link-sites"); 16679 var $button_pub_menu = $('.aoc-pub-header__menu-button'); 16680 var $pub_menu = $('.aoc-pub-mobile-menu__wrapper'); 16681 var $pub_menu_trigger = $('a.aoc-pub-sublist__trigger'); 16682 var $aoc_site_overlay = $('.aoc-overlay'); 16683 var $pub_header = $('.aoc-pub-header'); 16684 var $pub_content = $('#content'); 16685 var $trending_nav_target = $(".aoc-pub-header__dropdown-link"); 16686 var $trending_nav_menu = $(".aoc-pub-header__site-menu"); 16687 var $trending_nav_close = $(".aoc-pub-header__site-menu-close"); 16688 16689 // bind click events 16690 $button.on('click', toggleNav); 16691 $mobile_target.on('click', toggleListItem); 16692 $sub_target.on('click', toggleSubListItem); 16693 $other_sites_target.on('click', toggleOtherSitesMenu); 16694 $other_sites_close.on('click', toggleOtherSitesMenu); 16695 $sublist_trigger.on('click', disableLink); 16696 $sublist_trigger.on('click', disableLink); 16697 $mobile_target_sites.on('click', showMobileSitesMenu); 16698 $button_pub_menu.on('click', togglePubMenu); 16699 $pub_menu_trigger.on('click', togglePubSubListItem); 16700 $pub_menu_trigger.on('click', togglePubListItem); 16701 $pub_menu_trigger.on('click', disableLink); 16702 $trending_nav_target.on('click', toggleTrendingNavMenu); 16703 $trending_nav_close.on('click', toggleTrendingNavMenu); 16704 16705 16706 //Toggle mobile nav for AOC 16707 function toggleNav() { 16708 $button.toggleClass("aoc-header__menu-button--open"); 16709 $dropdown.toggleClass("aoc-header__nav-bar--open"); 16710 } 16711 16712 function toggleListItem() { 16713 $(this).find(".aoc-nav-bar__chevron").first().toggleClass("rotate"); 16714 $(this).parent().siblings(".aoc-nav-bar__sublist-wrapper").toggleClass("expand"); 16715 } 16716 16717 function toggleSubListItem() { 16718 $(this).find(".aoc-nav-bar__chevron").first().toggleClass("rotate"); 16719 $(this).parent().siblings(".aoc-sublist__dropdown").toggleClass("expand"); 16720 } 16721 16722 //Toggle mega menu for AOC 16723 function toggleOtherSitesMenu() { 16724 $other_sites_menu.slideToggle("fast"); 16725 $other_sites_target.toggleClass("other_sites_target--active"); 16726 } 16727 16728 //Toggle Trending Nav for Chicago Catholic/Catolico 16729 function toggleTrendingNavMenu() { 16730 $trending_nav_menu .slideToggle("fast"); 16731 $trending_nav_target.toggleClass("trending_nav_target--active"); 16732 } 16733 16734 //Toggle mega menu on mobile for AOC 16735 function showMobileSitesMenu() { 16736 $(".aoc-header__site-menu").show(); 16737 $dropdown.removeClass("aoc-header__nav-bar--open"); 16738 } 16739 16740 //Publications Mobile Navigation 16741 function togglePubMenu() { 16742 $pub_menu.toggleClass("aoc-pub-mobile-menu__wrapper--open"); 16743 $aoc_site_overlay.toggleClass("aoc-overlay--show"); 16744 $button_pub_menu.toggleClass("aoc-pub-header__menu-button--open"); 16745 $pub_header.toggleClass("headroom--fixed"); 16746 $pub_content.toggleClass("headroom--fixed"); 16747 } 16748 16749 //Toggle 1st level nav on mobile for Publications 16750 function togglePubListItem() { 16751 $(this).find(".aoc-pub-nav-bar__chevron").first().toggleClass("rotate"); 16752 $(this).parent().siblings(".aoc-pub-nav-bar__sublist-wrapper").toggleClass("expand"); 16753 } 16754 16755 //Toggle 2nd level nav on desktop for Publications 16756 function togglePubSubListItem() { 16757 $(this).find(".aoc-nav-bar__chevron").first().toggleClass("rotate"); 16758 $(this).parent().siblings(".aoc-pub-sublist__dropdown").toggleClass("expand"); 16759 } 16760 16761 function disableLink(e) { 16762 e.preventDefault(); 16763 } 16764 16765})(); 16766
16767// Desktop Nav for Issues 16768 $('.aoc-pub-past-issues__nav__item').click(function(){ 16769 var $tab_id = $(this).data('tab'); 16770 var $issueTab = $('ul.aoc-pub-past-issues__nav li'); 16771 var $issuesYear = $('.aoc-pub-past-issues'); 16772 16773 $issueTab.removeClass('current'); 16774 $issuesYear.removeClass('current'); 16775 16776 $(this).addClass('current'); 16777 $("#"+$tab_id).addClass('current'); 16778 }); 16779 16780 16781// Next, Prev Issue Button 16782$('.aoc-pub-past-issues__nav__next, .aoc-pub-past-issues__nav__prev').click(function(){ 16783 var direction = $(this).data('direction'); 16784 var navItems = $('.aoc-pub-past-issues__nav__item'); 16785 var currentNavItem = $('.aoc-pub-past-issues__nav__item.current'); 16786 var index = currentNavItem.index() -1; 16787 var tab_id; 16788 var newCurrentItem; 16789 16790 currentNavItem.removeClass('current'); 16791 16792 16793 if(direction == 'next'){ //If "Next" is clicked 16794 16795 index += 1; 16796 16797 if(currentNavItem.index() < navItems.length){ 16798 newCurrentItem = navItems.eq(index); 16799 }else{ 16800 index = 0; //If we reach the end of the list, cycle back to the beginning 16801 newCurrentItem = navItems.eq(index); 16802 } 16803 }else if(direction == 'prev'){ //if "Prev" is clicked 16804 16805 index -= 1; 16806 16807 if(currentNavItem.index() > 0){ 16808 newCurrentItem = navItems.eq(index); 16809 }else{ 16810 index = navItems.length; 16811 newCurrentItem = navItems.eq(index); 16812 } 16813 } 16814 16815 newCurrentItem.addClass('current'); 16816 tab_id = newCurrentItem.data('tab'); 16817 $('.aoc-pub-past-issues.current').removeClass('current'); 16818 $('#'+tab_id).addClass('current'); 16819 16820}); 16821}) () 16822});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.