{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/@fullcalendar/core/locales/en-gb.js","node_modules/@fullcalendar/core/locales/et.js","node_modules/@fullcalendar/core/locales/fi.js","node_modules/@fullcalendar/core/locales/ru.js","node_modules/@fullcalendar/core/locales/sv.js","node_modules/@fullcalendar/core/main.js","node_modules/@fullcalendar/daygrid/main.js","node_modules/@fullcalendar/list/main.js","node_modules/babel-runtime/core-js/object/assign.js","node_modules/babel-runtime/core-js/object/keys.js","node_modules/babel-runtime/core-js/symbol.js","node_modules/babel-runtime/core-js/symbol/iterator.js","node_modules/babel-runtime/helpers/classCallCheck.js","node_modules/babel-runtime/helpers/typeof.js","node_modules/bootstrap-breakpoints/src/bootstrap-breakpoints.js","node_modules/bootstrap/dist/js/bootstrap.js","node_modules/core-js/library/fn/object/assign.js","node_modules/core-js/library/fn/object/keys.js","node_modules/core-js/library/fn/symbol/index.js","node_modules/core-js/library/fn/symbol/iterator.js","node_modules/core-js/library/modules/_a-function.js","node_modules/core-js/library/modules/_add-to-unscopables.js","node_modules/core-js/library/modules/_an-object.js","node_modules/core-js/library/modules/_array-includes.js","node_modules/core-js/library/modules/_cof.js","node_modules/core-js/library/modules/_core.js","node_modules/core-js/library/modules/_ctx.js","node_modules/core-js/library/modules/_defined.js","node_modules/core-js/library/modules/_descriptors.js","node_modules/core-js/library/modules/_dom-create.js","node_modules/core-js/library/modules/_enum-bug-keys.js","node_modules/core-js/library/modules/_enum-keys.js","node_modules/core-js/library/modules/_export.js","node_modules/core-js/library/modules/_fails.js","node_modules/core-js/library/modules/_global.js","node_modules/core-js/library/modules/_has.js","node_modules/core-js/library/modules/_hide.js","node_modules/core-js/library/modules/_html.js","node_modules/core-js/library/modules/_ie8-dom-define.js","node_modules/core-js/library/modules/_iobject.js","node_modules/core-js/library/modules/_is-array.js","node_modules/core-js/library/modules/_is-object.js","node_modules/core-js/library/modules/_iter-create.js","node_modules/core-js/library/modules/_iter-define.js","node_modules/core-js/library/modules/_iter-step.js","node_modules/core-js/library/modules/_iterators.js","node_modules/core-js/library/modules/_library.js","node_modules/core-js/library/modules/_meta.js","node_modules/core-js/library/modules/_object-assign.js","node_modules/core-js/library/modules/_object-create.js","node_modules/core-js/library/modules/_object-dp.js","node_modules/core-js/library/modules/_object-dps.js","node_modules/core-js/library/modules/_object-gopd.js","node_modules/core-js/library/modules/_object-gopn-ext.js","node_modules/core-js/library/modules/_object-gopn.js","node_modules/core-js/library/modules/_object-gops.js","node_modules/core-js/library/modules/_object-gpo.js","node_modules/core-js/library/modules/_object-keys-internal.js","node_modules/core-js/library/modules/_object-keys.js","node_modules/core-js/library/modules/_object-pie.js","node_modules/core-js/library/modules/_object-sap.js","node_modules/core-js/library/modules/_property-desc.js","node_modules/core-js/library/modules/_redefine.js","node_modules/core-js/library/modules/_set-to-string-tag.js","node_modules/core-js/library/modules/_shared-key.js","node_modules/core-js/library/modules/_shared.js","node_modules/core-js/library/modules/_string-at.js","node_modules/core-js/library/modules/_to-absolute-index.js","node_modules/core-js/library/modules/_to-integer.js","node_modules/core-js/library/modules/_to-iobject.js","node_modules/core-js/library/modules/_to-length.js","node_modules/core-js/library/modules/_to-object.js","node_modules/core-js/library/modules/_to-primitive.js","node_modules/core-js/library/modules/_uid.js","node_modules/core-js/library/modules/_wks-define.js","node_modules/core-js/library/modules/_wks-ext.js","node_modules/core-js/library/modules/_wks.js","node_modules/core-js/library/modules/es6.array.iterator.js","node_modules/core-js/library/modules/es6.object.assign.js","node_modules/core-js/library/modules/es6.object.keys.js","node_modules/core-js/library/modules/es6.object.to-string.js","node_modules/core-js/library/modules/es6.string.iterator.js","node_modules/core-js/library/modules/es6.symbol.js","node_modules/core-js/library/modules/es7.symbol.async-iterator.js","node_modules/core-js/library/modules/es7.symbol.observable.js","node_modules/core-js/library/modules/web.dom.iterable.js","node_modules/jquery/dist/jquery.js","node_modules/js-cookie/dist/js.cookie.js","node_modules/popper.js/dist/umd/popper.js","node_modules/process/browser.js","node_modules/swiper/dist/js/swiper.js","node_modules/timers-browserify/main.js","src/js/master.js","src/js/modules/ajax-after-sales-form.js","src/js/modules/ajax-search.js","src/js/modules/calendar.js","src/js/modules/cards.js","src/js/modules/clock.js","src/js/modules/cookie-consent.js","src/js/modules/cookie.js","src/js/modules/dropdown.js","src/js/modules/filters-ui.js","src/js/modules/header-nav.js","src/js/modules/hero.js","src/js/modules/lists.js","src/js/modules/map.js","src/js/modules/popup-banners.js","src/js/modules/spinner.js","src/js/modules/wobbly.js","src/js/vendor/bootstrap-switch.js","src/js/vendor/gmaps/GeolocationMarker.js","src/js/vendor/gmaps/MarkerClustererPlus.js","src/js/vendor/gmaps/MarkerWithLabel.js","src/js/vendor/gmaps/google-map-marker-path.js","src/js/vendor/gmaps/google-map-park-polygon-inner.js","src/js/vendor/gmaps/google-map-park-polygon-outer.js","src/js/vendor/gmaps/google-map-styles.js"],"names":[],"mappings":"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","file":"linnanmaki.min.js","sourceRoot":"/","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i= rect.left &&\n point.left < rect.right &&\n point.top >= rect.top &&\n point.top < rect.bottom;\n }\n // Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false\n function intersectRects(rect1, rect2) {\n var res = {\n left: Math.max(rect1.left, rect2.left),\n right: Math.min(rect1.right, rect2.right),\n top: Math.max(rect1.top, rect2.top),\n bottom: Math.min(rect1.bottom, rect2.bottom)\n };\n if (res.left < res.right && res.top < res.bottom) {\n return res;\n }\n return false;\n }\n function translateRect(rect, deltaX, deltaY) {\n return {\n left: rect.left + deltaX,\n right: rect.right + deltaX,\n top: rect.top + deltaY,\n bottom: rect.bottom + deltaY\n };\n }\n // Returns a new point that will have been moved to reside within the given rectangle\n function constrainPoint(point, rect) {\n return {\n left: Math.min(Math.max(point.left, rect.left), rect.right),\n top: Math.min(Math.max(point.top, rect.top), rect.bottom)\n };\n }\n // Returns a point that is the center of the given rectangle\n function getRectCenter(rect) {\n return {\n left: (rect.left + rect.right) / 2,\n top: (rect.top + rect.bottom) / 2\n };\n }\n // Subtracts point2's coordinates from point1's coordinates, returning a delta\n function diffPoints(point1, point2) {\n return {\n left: point1.left - point2.left,\n top: point1.top - point2.top\n };\n }\n\n // Logic for determining if, when the element is right-to-left, the scrollbar appears on the left side\n var isRtlScrollbarOnLeft = null;\n function getIsRtlScrollbarOnLeft() {\n if (isRtlScrollbarOnLeft === null) {\n isRtlScrollbarOnLeft = computeIsRtlScrollbarOnLeft();\n }\n return isRtlScrollbarOnLeft;\n }\n function computeIsRtlScrollbarOnLeft() {\n var outerEl = createElement('div', {\n style: {\n position: 'absolute',\n top: -1000,\n left: 0,\n border: 0,\n padding: 0,\n overflow: 'scroll',\n direction: 'rtl'\n }\n }, '
');\n document.body.appendChild(outerEl);\n var innerEl = outerEl.firstChild;\n var res = innerEl.getBoundingClientRect().left > outerEl.getBoundingClientRect().left;\n removeElement(outerEl);\n return res;\n }\n // The scrollbar width computations in computeEdges are sometimes flawed when it comes to\n // retina displays, rounding, and IE11. Massage them into a usable value.\n function sanitizeScrollbarWidth(width) {\n width = Math.max(0, width); // no negatives\n width = Math.round(width);\n return width;\n }\n\n function computeEdges(el, getPadding) {\n if (getPadding === void 0) { getPadding = false; }\n var computedStyle = window.getComputedStyle(el);\n var borderLeft = parseInt(computedStyle.borderLeftWidth, 10) || 0;\n var borderRight = parseInt(computedStyle.borderRightWidth, 10) || 0;\n var borderTop = parseInt(computedStyle.borderTopWidth, 10) || 0;\n var borderBottom = parseInt(computedStyle.borderBottomWidth, 10) || 0;\n // must use offset(Width|Height) because compatible with client(Width|Height)\n var scrollbarLeftRight = sanitizeScrollbarWidth(el.offsetWidth - el.clientWidth - borderLeft - borderRight);\n var scrollbarBottom = sanitizeScrollbarWidth(el.offsetHeight - el.clientHeight - borderTop - borderBottom);\n var res = {\n borderLeft: borderLeft,\n borderRight: borderRight,\n borderTop: borderTop,\n borderBottom: borderBottom,\n scrollbarBottom: scrollbarBottom,\n scrollbarLeft: 0,\n scrollbarRight: 0\n };\n if (getIsRtlScrollbarOnLeft() && computedStyle.direction === 'rtl') { // is the scrollbar on the left side?\n res.scrollbarLeft = scrollbarLeftRight;\n }\n else {\n res.scrollbarRight = scrollbarLeftRight;\n }\n if (getPadding) {\n res.paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0;\n res.paddingRight = parseInt(computedStyle.paddingRight, 10) || 0;\n res.paddingTop = parseInt(computedStyle.paddingTop, 10) || 0;\n res.paddingBottom = parseInt(computedStyle.paddingBottom, 10) || 0;\n }\n return res;\n }\n function computeInnerRect(el, goWithinPadding) {\n if (goWithinPadding === void 0) { goWithinPadding = false; }\n var outerRect = computeRect(el);\n var edges = computeEdges(el, goWithinPadding);\n var res = {\n left: outerRect.left + edges.borderLeft + edges.scrollbarLeft,\n right: outerRect.right - edges.borderRight - edges.scrollbarRight,\n top: outerRect.top + edges.borderTop,\n bottom: outerRect.bottom - edges.borderBottom - edges.scrollbarBottom\n };\n if (goWithinPadding) {\n res.left += edges.paddingLeft;\n res.right -= edges.paddingRight;\n res.top += edges.paddingTop;\n res.bottom -= edges.paddingBottom;\n }\n return res;\n }\n function computeRect(el) {\n var rect = el.getBoundingClientRect();\n return {\n left: rect.left + window.pageXOffset,\n top: rect.top + window.pageYOffset,\n right: rect.right + window.pageXOffset,\n bottom: rect.bottom + window.pageYOffset\n };\n }\n function computeViewportRect() {\n return {\n left: window.pageXOffset,\n right: window.pageXOffset + document.documentElement.clientWidth,\n top: window.pageYOffset,\n bottom: window.pageYOffset + document.documentElement.clientHeight\n };\n }\n function computeHeightAndMargins(el) {\n return el.getBoundingClientRect().height + computeVMargins(el);\n }\n function computeVMargins(el) {\n var computed = window.getComputedStyle(el);\n return parseInt(computed.marginTop, 10) +\n parseInt(computed.marginBottom, 10);\n }\n // does not return window\n function getClippingParents(el) {\n var parents = [];\n while (el instanceof HTMLElement) { // will stop when gets to document or null\n var computedStyle = window.getComputedStyle(el);\n if (computedStyle.position === 'fixed') {\n break;\n }\n if ((/(auto|scroll)/).test(computedStyle.overflow + computedStyle.overflowY + computedStyle.overflowX)) {\n parents.push(el);\n }\n el = el.parentNode;\n }\n return parents;\n }\n function computeClippingRect(el) {\n return getClippingParents(el)\n .map(function (el) {\n return computeInnerRect(el);\n })\n .concat(computeViewportRect())\n .reduce(function (rect0, rect1) {\n return intersectRects(rect0, rect1) || rect1; // should always intersect\n });\n }\n\n // Stops a mouse/touch event from doing it's native browser action\n function preventDefault(ev) {\n ev.preventDefault();\n }\n // Event Delegation\n // ----------------------------------------------------------------------------------------------------------------\n function listenBySelector(container, eventType, selector, handler) {\n function realHandler(ev) {\n var matchedChild = elementClosest(ev.target, selector);\n if (matchedChild) {\n handler.call(matchedChild, ev, matchedChild);\n }\n }\n container.addEventListener(eventType, realHandler);\n return function () {\n container.removeEventListener(eventType, realHandler);\n };\n }\n function listenToHoverBySelector(container, selector, onMouseEnter, onMouseLeave) {\n var currentMatchedChild;\n return listenBySelector(container, 'mouseover', selector, function (ev, matchedChild) {\n if (matchedChild !== currentMatchedChild) {\n currentMatchedChild = matchedChild;\n onMouseEnter(ev, matchedChild);\n var realOnMouseLeave_1 = function (ev) {\n currentMatchedChild = null;\n onMouseLeave(ev, matchedChild);\n matchedChild.removeEventListener('mouseleave', realOnMouseLeave_1);\n };\n // listen to the next mouseleave, and then unattach\n matchedChild.addEventListener('mouseleave', realOnMouseLeave_1);\n }\n });\n }\n // Animation\n // ----------------------------------------------------------------------------------------------------------------\n var transitionEventNames = [\n 'webkitTransitionEnd',\n 'otransitionend',\n 'oTransitionEnd',\n 'msTransitionEnd',\n 'transitionend'\n ];\n // triggered only when the next single subsequent transition finishes\n function whenTransitionDone(el, callback) {\n var realCallback = function (ev) {\n callback(ev);\n transitionEventNames.forEach(function (eventName) {\n el.removeEventListener(eventName, realCallback);\n });\n };\n transitionEventNames.forEach(function (eventName) {\n el.addEventListener(eventName, realCallback); // cross-browser way to determine when the transition finishes\n });\n }\n\n var DAY_IDS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\n // Adding\n function addWeeks(m, n) {\n var a = dateToUtcArray(m);\n a[2] += n * 7;\n return arrayToUtcDate(a);\n }\n function addDays(m, n) {\n var a = dateToUtcArray(m);\n a[2] += n;\n return arrayToUtcDate(a);\n }\n function addMs(m, n) {\n var a = dateToUtcArray(m);\n a[6] += n;\n return arrayToUtcDate(a);\n }\n // Diffing (all return floats)\n function diffWeeks(m0, m1) {\n return diffDays(m0, m1) / 7;\n }\n function diffDays(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60 * 24);\n }\n function diffHours(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60);\n }\n function diffMinutes(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60);\n }\n function diffSeconds(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / 1000;\n }\n function diffDayAndTime(m0, m1) {\n var m0day = startOfDay(m0);\n var m1day = startOfDay(m1);\n return {\n years: 0,\n months: 0,\n days: Math.round(diffDays(m0day, m1day)),\n milliseconds: (m1.valueOf() - m1day.valueOf()) - (m0.valueOf() - m0day.valueOf())\n };\n }\n // Diffing Whole Units\n function diffWholeWeeks(m0, m1) {\n var d = diffWholeDays(m0, m1);\n if (d !== null && d % 7 === 0) {\n return d / 7;\n }\n return null;\n }\n function diffWholeDays(m0, m1) {\n if (timeAsMs(m0) === timeAsMs(m1)) {\n return Math.round(diffDays(m0, m1));\n }\n return null;\n }\n // Start-Of\n function startOfDay(m) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate()\n ]);\n }\n function startOfHour(m) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n m.getUTCHours()\n ]);\n }\n function startOfMinute(m) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n m.getUTCHours(),\n m.getUTCMinutes()\n ]);\n }\n function startOfSecond(m) {\n return arrayToUtcDate([\n m.getUTCFullYear(),\n m.getUTCMonth(),\n m.getUTCDate(),\n m.getUTCHours(),\n m.getUTCMinutes(),\n m.getUTCSeconds()\n ]);\n }\n // Week Computation\n function weekOfYear(marker, dow, doy) {\n var y = marker.getUTCFullYear();\n var w = weekOfGivenYear(marker, y, dow, doy);\n if (w < 1) {\n return weekOfGivenYear(marker, y - 1, dow, doy);\n }\n var nextW = weekOfGivenYear(marker, y + 1, dow, doy);\n if (nextW >= 1) {\n return Math.min(w, nextW);\n }\n return w;\n }\n function weekOfGivenYear(marker, year, dow, doy) {\n var firstWeekStart = arrayToUtcDate([year, 0, 1 + firstWeekOffset(year, dow, doy)]);\n var dayStart = startOfDay(marker);\n var days = Math.round(diffDays(firstWeekStart, dayStart));\n return Math.floor(days / 7) + 1; // zero-indexed\n }\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n var fwd = 7 + dow - doy;\n // first-week day local weekday -- which local weekday is fwd\n var fwdlw = (7 + arrayToUtcDate([year, 0, fwd]).getUTCDay() - dow) % 7;\n return -fwdlw + fwd - 1;\n }\n // Array Conversion\n function dateToLocalArray(date) {\n return [\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n ];\n }\n function arrayToLocalDate(a) {\n return new Date(a[0], a[1] || 0, a[2] == null ? 1 : a[2], // day of month\n a[3] || 0, a[4] || 0, a[5] || 0);\n }\n function dateToUtcArray(date) {\n return [\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n date.getUTCMilliseconds()\n ];\n }\n function arrayToUtcDate(a) {\n // according to web standards (and Safari), a month index is required.\n // massage if only given a year.\n if (a.length === 1) {\n a = a.concat([0]);\n }\n return new Date(Date.UTC.apply(Date, a));\n }\n // Other Utils\n function isValidDate(m) {\n return !isNaN(m.valueOf());\n }\n function timeAsMs(m) {\n return m.getUTCHours() * 1000 * 60 * 60 +\n m.getUTCMinutes() * 1000 * 60 +\n m.getUTCSeconds() * 1000 +\n m.getUTCMilliseconds();\n }\n\n var INTERNAL_UNITS = ['years', 'months', 'days', 'milliseconds'];\n var PARSE_RE = /^(-?)(?:(\\d+)\\.)?(\\d+):(\\d\\d)(?::(\\d\\d)(?:\\.(\\d\\d\\d))?)?/;\n // Parsing and Creation\n function createDuration(input, unit) {\n var _a;\n if (typeof input === 'string') {\n return parseString(input);\n }\n else if (typeof input === 'object' && input) { // non-null object\n return normalizeObject(input);\n }\n else if (typeof input === 'number') {\n return normalizeObject((_a = {}, _a[unit || 'milliseconds'] = input, _a));\n }\n else {\n return null;\n }\n }\n function parseString(s) {\n var m = PARSE_RE.exec(s);\n if (m) {\n var sign = m[1] ? -1 : 1;\n return {\n years: 0,\n months: 0,\n days: sign * (m[2] ? parseInt(m[2], 10) : 0),\n milliseconds: sign * ((m[3] ? parseInt(m[3], 10) : 0) * 60 * 60 * 1000 + // hours\n (m[4] ? parseInt(m[4], 10) : 0) * 60 * 1000 + // minutes\n (m[5] ? parseInt(m[5], 10) : 0) * 1000 + // seconds\n (m[6] ? parseInt(m[6], 10) : 0) // ms\n )\n };\n }\n return null;\n }\n function normalizeObject(obj) {\n return {\n years: obj.years || obj.year || 0,\n months: obj.months || obj.month || 0,\n days: (obj.days || obj.day || 0) +\n getWeeksFromInput(obj) * 7,\n milliseconds: (obj.hours || obj.hour || 0) * 60 * 60 * 1000 + // hours\n (obj.minutes || obj.minute || 0) * 60 * 1000 + // minutes\n (obj.seconds || obj.second || 0) * 1000 + // seconds\n (obj.milliseconds || obj.millisecond || obj.ms || 0) // ms\n };\n }\n function getWeeksFromInput(obj) {\n return obj.weeks || obj.week || 0;\n }\n // Equality\n function durationsEqual(d0, d1) {\n return d0.years === d1.years &&\n d0.months === d1.months &&\n d0.days === d1.days &&\n d0.milliseconds === d1.milliseconds;\n }\n function isSingleDay(dur) {\n return dur.years === 0 && dur.months === 0 && dur.days === 1 && dur.milliseconds === 0;\n }\n // Simple Math\n function addDurations(d0, d1) {\n return {\n years: d0.years + d1.years,\n months: d0.months + d1.months,\n days: d0.days + d1.days,\n milliseconds: d0.milliseconds + d1.milliseconds\n };\n }\n function subtractDurations(d1, d0) {\n return {\n years: d1.years - d0.years,\n months: d1.months - d0.months,\n days: d1.days - d0.days,\n milliseconds: d1.milliseconds - d0.milliseconds\n };\n }\n function multiplyDuration(d, n) {\n return {\n years: d.years * n,\n months: d.months * n,\n days: d.days * n,\n milliseconds: d.milliseconds * n\n };\n }\n // Conversions\n // \"Rough\" because they are based on average-case Gregorian months/years\n function asRoughYears(dur) {\n return asRoughDays(dur) / 365;\n }\n function asRoughMonths(dur) {\n return asRoughDays(dur) / 30;\n }\n function asRoughDays(dur) {\n return asRoughMs(dur) / 864e5;\n }\n function asRoughMinutes(dur) {\n return asRoughMs(dur) / (1000 * 60);\n }\n function asRoughSeconds(dur) {\n return asRoughMs(dur) / 1000;\n }\n function asRoughMs(dur) {\n return dur.years * (365 * 864e5) +\n dur.months * (30 * 864e5) +\n dur.days * 864e5 +\n dur.milliseconds;\n }\n // Advanced Math\n function wholeDivideDurations(numerator, denominator) {\n var res = null;\n for (var i = 0; i < INTERNAL_UNITS.length; i++) {\n var unit = INTERNAL_UNITS[i];\n if (denominator[unit]) {\n var localRes = numerator[unit] / denominator[unit];\n if (!isInt(localRes) || (res !== null && res !== localRes)) {\n return null;\n }\n res = localRes;\n }\n else if (numerator[unit]) {\n // needs to divide by something but can't!\n return null;\n }\n }\n return res;\n }\n function greatestDurationDenominator(dur, dontReturnWeeks) {\n var ms = dur.milliseconds;\n if (ms) {\n if (ms % 1000 !== 0) {\n return { unit: 'millisecond', value: ms };\n }\n if (ms % (1000 * 60) !== 0) {\n return { unit: 'second', value: ms / 1000 };\n }\n if (ms % (1000 * 60 * 60) !== 0) {\n return { unit: 'minute', value: ms / (1000 * 60) };\n }\n if (ms) {\n return { unit: 'hour', value: ms / (1000 * 60 * 60) };\n }\n }\n if (dur.days) {\n if (!dontReturnWeeks && dur.days % 7 === 0) {\n return { unit: 'week', value: dur.days / 7 };\n }\n return { unit: 'day', value: dur.days };\n }\n if (dur.months) {\n return { unit: 'month', value: dur.months };\n }\n if (dur.years) {\n return { unit: 'year', value: dur.years };\n }\n return { unit: 'millisecond', value: 0 };\n }\n\n /* FullCalendar-specific DOM Utilities\n ----------------------------------------------------------------------------------------------------------------------*/\n // Given the scrollbar widths of some other container, create borders/margins on rowEls in order to match the left\n // and right space that was offset by the scrollbars. A 1-pixel border first, then margin beyond that.\n function compensateScroll(rowEl, scrollbarWidths) {\n if (scrollbarWidths.left) {\n applyStyle(rowEl, {\n borderLeftWidth: 1,\n marginLeft: scrollbarWidths.left - 1\n });\n }\n if (scrollbarWidths.right) {\n applyStyle(rowEl, {\n borderRightWidth: 1,\n marginRight: scrollbarWidths.right - 1\n });\n }\n }\n // Undoes compensateScroll and restores all borders/margins\n function uncompensateScroll(rowEl) {\n applyStyle(rowEl, {\n marginLeft: '',\n marginRight: '',\n borderLeftWidth: '',\n borderRightWidth: ''\n });\n }\n // Make the mouse cursor express that an event is not allowed in the current area\n function disableCursor() {\n document.body.classList.add('fc-not-allowed');\n }\n // Returns the mouse cursor to its original look\n function enableCursor() {\n document.body.classList.remove('fc-not-allowed');\n }\n // Given a total available height to fill, have `els` (essentially child rows) expand to accomodate.\n // By default, all elements that are shorter than the recommended height are expanded uniformly, not considering\n // any other els that are already too tall. if `shouldRedistribute` is on, it considers these tall rows and\n // reduces the available height.\n function distributeHeight(els, availableHeight, shouldRedistribute) {\n // *FLOORING NOTE*: we floor in certain places because zoom can give inaccurate floating-point dimensions,\n // and it is better to be shorter than taller, to avoid creating unnecessary scrollbars.\n var minOffset1 = Math.floor(availableHeight / els.length); // for non-last element\n var minOffset2 = Math.floor(availableHeight - minOffset1 * (els.length - 1)); // for last element *FLOORING NOTE*\n var flexEls = []; // elements that are allowed to expand. array of DOM nodes\n var flexOffsets = []; // amount of vertical space it takes up\n var flexHeights = []; // actual css height\n var usedHeight = 0;\n undistributeHeight(els); // give all elements their natural height\n // find elements that are below the recommended height (expandable).\n // important to query for heights in a single first pass (to avoid reflow oscillation).\n els.forEach(function (el, i) {\n var minOffset = i === els.length - 1 ? minOffset2 : minOffset1;\n var naturalHeight = el.getBoundingClientRect().height;\n var naturalOffset = naturalHeight + computeVMargins(el);\n if (naturalOffset < minOffset) {\n flexEls.push(el);\n flexOffsets.push(naturalOffset);\n flexHeights.push(naturalHeight);\n }\n else {\n // this element stretches past recommended height (non-expandable). mark the space as occupied.\n usedHeight += naturalOffset;\n }\n });\n // readjust the recommended height to only consider the height available to non-maxed-out rows.\n if (shouldRedistribute) {\n availableHeight -= usedHeight;\n minOffset1 = Math.floor(availableHeight / flexEls.length);\n minOffset2 = Math.floor(availableHeight - minOffset1 * (flexEls.length - 1)); // *FLOORING NOTE*\n }\n // assign heights to all expandable elements\n flexEls.forEach(function (el, i) {\n var minOffset = i === flexEls.length - 1 ? minOffset2 : minOffset1;\n var naturalOffset = flexOffsets[i];\n var naturalHeight = flexHeights[i];\n var newHeight = minOffset - (naturalOffset - naturalHeight); // subtract the margin/padding\n if (naturalOffset < minOffset) { // we check this again because redistribution might have changed things\n el.style.height = newHeight + 'px';\n }\n });\n }\n // Undoes distrubuteHeight, restoring all els to their natural height\n function undistributeHeight(els) {\n els.forEach(function (el) {\n el.style.height = '';\n });\n }\n // Given `els`, a set of cells, find the cell with the largest natural width and set the widths of all the\n // cells to be that width.\n // PREREQUISITE: if you want a cell to take up width, it needs to have a single inner element w/ display:inline\n function matchCellWidths(els) {\n var maxInnerWidth = 0;\n els.forEach(function (el) {\n var innerEl = el.firstChild; // hopefully an element\n if (innerEl instanceof HTMLElement) {\n var innerWidth_1 = innerEl.getBoundingClientRect().width;\n if (innerWidth_1 > maxInnerWidth) {\n maxInnerWidth = innerWidth_1;\n }\n }\n });\n maxInnerWidth++; // sometimes not accurate of width the text needs to stay on one line. insurance\n els.forEach(function (el) {\n el.style.width = maxInnerWidth + 'px';\n });\n return maxInnerWidth;\n }\n // Given one element that resides inside another,\n // Subtracts the height of the inner element from the outer element.\n function subtractInnerElHeight(outerEl, innerEl) {\n // effin' IE8/9/10/11 sometimes returns 0 for dimensions. this weird hack was the only thing that worked\n var reflowStyleProps = {\n position: 'relative',\n left: -1 // ensure reflow in case the el was already relative. negative is less likely to cause new scroll\n };\n applyStyle(outerEl, reflowStyleProps);\n applyStyle(innerEl, reflowStyleProps);\n var diff = // grab the dimensions\n outerEl.getBoundingClientRect().height -\n innerEl.getBoundingClientRect().height;\n // undo hack\n var resetStyleProps = { position: '', left: '' };\n applyStyle(outerEl, resetStyleProps);\n applyStyle(innerEl, resetStyleProps);\n return diff;\n }\n /* Selection\n ----------------------------------------------------------------------------------------------------------------------*/\n function preventSelection(el) {\n el.classList.add('fc-unselectable');\n el.addEventListener('selectstart', preventDefault);\n }\n function allowSelection(el) {\n el.classList.remove('fc-unselectable');\n el.removeEventListener('selectstart', preventDefault);\n }\n /* Context Menu\n ----------------------------------------------------------------------------------------------------------------------*/\n function preventContextMenu(el) {\n el.addEventListener('contextmenu', preventDefault);\n }\n function allowContextMenu(el) {\n el.removeEventListener('contextmenu', preventDefault);\n }\n /* Object Ordering by Field\n ----------------------------------------------------------------------------------------------------------------------*/\n function parseFieldSpecs(input) {\n var specs = [];\n var tokens = [];\n var i;\n var token;\n if (typeof input === 'string') {\n tokens = input.split(/\\s*,\\s*/);\n }\n else if (typeof input === 'function') {\n tokens = [input];\n }\n else if (Array.isArray(input)) {\n tokens = input;\n }\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n if (typeof token === 'string') {\n specs.push(token.charAt(0) === '-' ?\n { field: token.substring(1), order: -1 } :\n { field: token, order: 1 });\n }\n else if (typeof token === 'function') {\n specs.push({ func: token });\n }\n }\n return specs;\n }\n function compareByFieldSpecs(obj0, obj1, fieldSpecs) {\n var i;\n var cmp;\n for (i = 0; i < fieldSpecs.length; i++) {\n cmp = compareByFieldSpec(obj0, obj1, fieldSpecs[i]);\n if (cmp) {\n return cmp;\n }\n }\n return 0;\n }\n function compareByFieldSpec(obj0, obj1, fieldSpec) {\n if (fieldSpec.func) {\n return fieldSpec.func(obj0, obj1);\n }\n return flexibleCompare(obj0[fieldSpec.field], obj1[fieldSpec.field])\n * (fieldSpec.order || 1);\n }\n function flexibleCompare(a, b) {\n if (!a && !b) {\n return 0;\n }\n if (b == null) {\n return -1;\n }\n if (a == null) {\n return 1;\n }\n if (typeof a === 'string' || typeof b === 'string') {\n return String(a).localeCompare(String(b));\n }\n return a - b;\n }\n /* String Utilities\n ----------------------------------------------------------------------------------------------------------------------*/\n function capitaliseFirstLetter(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n function padStart(val, len) {\n var s = String(val);\n return '000'.substr(0, len - s.length) + s;\n }\n /* Number Utilities\n ----------------------------------------------------------------------------------------------------------------------*/\n function compareNumbers(a, b) {\n return a - b;\n }\n function isInt(n) {\n return n % 1 === 0;\n }\n /* Weird Utilities\n ----------------------------------------------------------------------------------------------------------------------*/\n function applyAll(functions, thisObj, args) {\n if (typeof functions === 'function') { // supplied a single function\n functions = [functions];\n }\n if (functions) {\n var i = void 0;\n var ret = void 0;\n for (i = 0; i < functions.length; i++) {\n ret = functions[i].apply(thisObj, args) || ret;\n }\n return ret;\n }\n }\n function firstDefined() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n for (var i = 0; i < args.length; i++) {\n if (args[i] !== undefined) {\n return args[i];\n }\n }\n }\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds. If `immediate` is passed, trigger the function on the\n // leading edge, instead of the trailing.\n // https://github.com/jashkenas/underscore/blob/1.6.0/underscore.js#L714\n function debounce(func, wait) {\n var timeout;\n var args;\n var context;\n var timestamp;\n var result;\n var later = function () {\n var last = new Date().valueOf() - timestamp;\n if (last < wait) {\n timeout = setTimeout(later, wait - last);\n }\n else {\n timeout = null;\n result = func.apply(context, args);\n context = args = null;\n }\n };\n return function () {\n context = this;\n args = arguments;\n timestamp = new Date().valueOf();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n }\n return result;\n };\n }\n // Number and Boolean are only types that defaults or not computed for\n // TODO: write more comments\n function refineProps(rawProps, processors, defaults, leftoverProps) {\n if (defaults === void 0) { defaults = {}; }\n var refined = {};\n for (var key in processors) {\n var processor = processors[key];\n if (rawProps[key] !== undefined) {\n // found\n if (processor === Function) {\n refined[key] = typeof rawProps[key] === 'function' ? rawProps[key] : null;\n }\n else if (processor) { // a refining function?\n refined[key] = processor(rawProps[key]);\n }\n else {\n refined[key] = rawProps[key];\n }\n }\n else if (defaults[key] !== undefined) {\n // there's an explicit default\n refined[key] = defaults[key];\n }\n else {\n // must compute a default\n if (processor === String) {\n refined[key] = ''; // empty string is default for String\n }\n else if (!processor || processor === Number || processor === Boolean || processor === Function) {\n refined[key] = null; // assign null for other non-custom processor funcs\n }\n else {\n refined[key] = processor(null); // run the custom processor func\n }\n }\n }\n if (leftoverProps) {\n for (var key in rawProps) {\n if (processors[key] === undefined) {\n leftoverProps[key] = rawProps[key];\n }\n }\n }\n return refined;\n }\n /* Date stuff that doesn't belong in datelib core\n ----------------------------------------------------------------------------------------------------------------------*/\n // given a timed range, computes an all-day range that has the same exact duration,\n // but whose start time is aligned with the start of the day.\n function computeAlignedDayRange(timedRange) {\n var dayCnt = Math.floor(diffDays(timedRange.start, timedRange.end)) || 1;\n var start = startOfDay(timedRange.start);\n var end = addDays(start, dayCnt);\n return { start: start, end: end };\n }\n // given a timed range, computes an all-day range based on how for the end date bleeds into the next day\n // TODO: give nextDayThreshold a default arg\n function computeVisibleDayRange(timedRange, nextDayThreshold) {\n if (nextDayThreshold === void 0) { nextDayThreshold = createDuration(0); }\n var startDay = null;\n var endDay = null;\n if (timedRange.end) {\n endDay = startOfDay(timedRange.end);\n var endTimeMS = timedRange.end.valueOf() - endDay.valueOf(); // # of milliseconds into `endDay`\n // If the end time is actually inclusively part of the next day and is equal to or\n // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.\n // Otherwise, leaving it as inclusive will cause it to exclude `endDay`.\n if (endTimeMS && endTimeMS >= asRoughMs(nextDayThreshold)) {\n endDay = addDays(endDay, 1);\n }\n }\n if (timedRange.start) {\n startDay = startOfDay(timedRange.start); // the beginning of the day the range starts\n // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day.\n if (endDay && endDay <= startDay) {\n endDay = addDays(startDay, 1);\n }\n }\n return { start: startDay, end: endDay };\n }\n // spans from one day into another?\n function isMultiDayRange(range) {\n var visibleRange = computeVisibleDayRange(range);\n return diffDays(visibleRange.start, visibleRange.end) > 1;\n }\n function diffDates(date0, date1, dateEnv, largeUnit) {\n if (largeUnit === 'year') {\n return createDuration(dateEnv.diffWholeYears(date0, date1), 'year');\n }\n else if (largeUnit === 'month') {\n return createDuration(dateEnv.diffWholeMonths(date0, date1), 'month');\n }\n else {\n return diffDayAndTime(date0, date1); // returns a duration\n }\n }\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n /* global Reflect, Promise */\r\n\r\n var extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n\r\n function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n }\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\n\n function parseRecurring(eventInput, allDayDefault, dateEnv, recurringTypes, leftovers) {\n for (var i = 0; i < recurringTypes.length; i++) {\n var localLeftovers = {};\n var parsed = recurringTypes[i].parse(eventInput, localLeftovers, dateEnv);\n if (parsed) {\n var allDay = localLeftovers.allDay;\n delete localLeftovers.allDay; // remove from leftovers\n if (allDay == null) {\n allDay = allDayDefault;\n if (allDay == null) {\n allDay = parsed.allDayGuess;\n if (allDay == null) {\n allDay = false;\n }\n }\n }\n __assign(leftovers, localLeftovers);\n return {\n allDay: allDay,\n duration: parsed.duration,\n typeData: parsed.typeData,\n typeId: i\n };\n }\n }\n return null;\n }\n /*\n Event MUST have a recurringDef\n */\n function expandRecurringRanges(eventDef, duration, framingRange, dateEnv, recurringTypes) {\n var typeDef = recurringTypes[eventDef.recurringDef.typeId];\n var markers = typeDef.expand(eventDef.recurringDef.typeData, {\n start: dateEnv.subtract(framingRange.start, duration),\n end: framingRange.end\n }, dateEnv);\n // the recurrence plugins don't guarantee that all-day events are start-of-day, so we have to\n if (eventDef.allDay) {\n markers = markers.map(startOfDay);\n }\n return markers;\n }\n\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n // Merges an array of objects into a single object.\n // The second argument allows for an array of property names who's object values will be merged together.\n function mergeProps(propObjs, complexProps) {\n var dest = {};\n var i;\n var name;\n var complexObjs;\n var j;\n var val;\n var props;\n if (complexProps) {\n for (i = 0; i < complexProps.length; i++) {\n name = complexProps[i];\n complexObjs = [];\n // collect the trailing object values, stopping when a non-object is discovered\n for (j = propObjs.length - 1; j >= 0; j--) {\n val = propObjs[j][name];\n if (typeof val === 'object' && val) { // non-null object\n complexObjs.unshift(val);\n }\n else if (val !== undefined) {\n dest[name] = val; // if there were no objects, this value will be used\n break;\n }\n }\n // if the trailing values were objects, use the merged value\n if (complexObjs.length) {\n dest[name] = mergeProps(complexObjs);\n }\n }\n }\n // copy values into the destination, going from last to first\n for (i = propObjs.length - 1; i >= 0; i--) {\n props = propObjs[i];\n for (name in props) {\n if (!(name in dest)) { // if already assigned by previous props or complex props, don't reassign\n dest[name] = props[name];\n }\n }\n }\n return dest;\n }\n function filterHash(hash, func) {\n var filtered = {};\n for (var key in hash) {\n if (func(hash[key], key)) {\n filtered[key] = hash[key];\n }\n }\n return filtered;\n }\n function mapHash(hash, func) {\n var newHash = {};\n for (var key in hash) {\n newHash[key] = func(hash[key], key);\n }\n return newHash;\n }\n function arrayToHash(a) {\n var hash = {};\n for (var _i = 0, a_1 = a; _i < a_1.length; _i++) {\n var item = a_1[_i];\n hash[item] = true;\n }\n return hash;\n }\n function hashValuesToArray(obj) {\n var a = [];\n for (var key in obj) {\n a.push(obj[key]);\n }\n return a;\n }\n function isPropsEqual(obj0, obj1) {\n for (var key in obj0) {\n if (hasOwnProperty.call(obj0, key)) {\n if (!(key in obj1)) {\n return false;\n }\n }\n }\n for (var key in obj1) {\n if (hasOwnProperty.call(obj1, key)) {\n if (obj0[key] !== obj1[key]) {\n return false;\n }\n }\n }\n return true;\n }\n\n function parseEvents(rawEvents, sourceId, calendar, allowOpenRange) {\n var eventStore = createEmptyEventStore();\n for (var _i = 0, rawEvents_1 = rawEvents; _i < rawEvents_1.length; _i++) {\n var rawEvent = rawEvents_1[_i];\n var tuple = parseEvent(rawEvent, sourceId, calendar, allowOpenRange);\n if (tuple) {\n eventTupleToStore(tuple, eventStore);\n }\n }\n return eventStore;\n }\n function eventTupleToStore(tuple, eventStore) {\n if (eventStore === void 0) { eventStore = createEmptyEventStore(); }\n eventStore.defs[tuple.def.defId] = tuple.def;\n if (tuple.instance) {\n eventStore.instances[tuple.instance.instanceId] = tuple.instance;\n }\n return eventStore;\n }\n function expandRecurring(eventStore, framingRange, calendar) {\n var dateEnv = calendar.dateEnv;\n var defs = eventStore.defs, instances = eventStore.instances;\n // remove existing recurring instances\n instances = filterHash(instances, function (instance) {\n return !defs[instance.defId].recurringDef;\n });\n for (var defId in defs) {\n var def = defs[defId];\n if (def.recurringDef) {\n var duration = def.recurringDef.duration;\n if (!duration) {\n duration = def.allDay ?\n calendar.defaultAllDayEventDuration :\n calendar.defaultTimedEventDuration;\n }\n var starts = expandRecurringRanges(def, duration, framingRange, calendar.dateEnv, calendar.pluginSystem.hooks.recurringTypes);\n for (var _i = 0, starts_1 = starts; _i < starts_1.length; _i++) {\n var start = starts_1[_i];\n var instance = createEventInstance(defId, {\n start: start,\n end: dateEnv.add(start, duration)\n });\n instances[instance.instanceId] = instance;\n }\n }\n }\n return { defs: defs, instances: instances };\n }\n // retrieves events that have the same groupId as the instance specified by `instanceId`\n // or they are the same as the instance.\n // why might instanceId not be in the store? an event from another calendar?\n function getRelevantEvents(eventStore, instanceId) {\n var instance = eventStore.instances[instanceId];\n if (instance) {\n var def_1 = eventStore.defs[instance.defId];\n // get events/instances with same group\n var newStore = filterEventStoreDefs(eventStore, function (lookDef) {\n return isEventDefsGrouped(def_1, lookDef);\n });\n // add the original\n // TODO: wish we could use eventTupleToStore or something like it\n newStore.defs[def_1.defId] = def_1;\n newStore.instances[instance.instanceId] = instance;\n return newStore;\n }\n return createEmptyEventStore();\n }\n function isEventDefsGrouped(def0, def1) {\n return Boolean(def0.groupId && def0.groupId === def1.groupId);\n }\n function transformRawEvents(rawEvents, eventSource, calendar) {\n var calEachTransform = calendar.opt('eventDataTransform');\n var sourceEachTransform = eventSource ? eventSource.eventDataTransform : null;\n if (sourceEachTransform) {\n rawEvents = transformEachRawEvent(rawEvents, sourceEachTransform);\n }\n if (calEachTransform) {\n rawEvents = transformEachRawEvent(rawEvents, calEachTransform);\n }\n return rawEvents;\n }\n function transformEachRawEvent(rawEvents, func) {\n var refinedEvents;\n if (!func) {\n refinedEvents = rawEvents;\n }\n else {\n refinedEvents = [];\n for (var _i = 0, rawEvents_2 = rawEvents; _i < rawEvents_2.length; _i++) {\n var rawEvent = rawEvents_2[_i];\n var refinedEvent = func(rawEvent);\n if (refinedEvent) {\n refinedEvents.push(refinedEvent);\n }\n else if (refinedEvent == null) {\n refinedEvents.push(rawEvent);\n } // if a different falsy value, do nothing\n }\n }\n return refinedEvents;\n }\n function createEmptyEventStore() {\n return { defs: {}, instances: {} };\n }\n function mergeEventStores(store0, store1) {\n return {\n defs: __assign({}, store0.defs, store1.defs),\n instances: __assign({}, store0.instances, store1.instances)\n };\n }\n function filterEventStoreDefs(eventStore, filterFunc) {\n var defs = filterHash(eventStore.defs, filterFunc);\n var instances = filterHash(eventStore.instances, function (instance) {\n return defs[instance.defId]; // still exists?\n });\n return { defs: defs, instances: instances };\n }\n\n function parseRange(input, dateEnv) {\n var start = null;\n var end = null;\n if (input.start) {\n start = dateEnv.createMarker(input.start);\n }\n if (input.end) {\n end = dateEnv.createMarker(input.end);\n }\n if (!start && !end) {\n return null;\n }\n if (start && end && end < start) {\n return null;\n }\n return { start: start, end: end };\n }\n // SIDE-EFFECT: will mutate ranges.\n // Will return a new array result.\n function invertRanges(ranges, constraintRange) {\n var invertedRanges = [];\n var start = constraintRange.start; // the end of the previous range. the start of the new range\n var i;\n var dateRange;\n // ranges need to be in order. required for our date-walking algorithm\n ranges.sort(compareRanges);\n for (i = 0; i < ranges.length; i++) {\n dateRange = ranges[i];\n // add the span of time before the event (if there is any)\n if (dateRange.start > start) { // compare millisecond time (skip any ambig logic)\n invertedRanges.push({ start: start, end: dateRange.start });\n }\n if (dateRange.end > start) {\n start = dateRange.end;\n }\n }\n // add the span of time after the last event (if there is any)\n if (start < constraintRange.end) { // compare millisecond time (skip any ambig logic)\n invertedRanges.push({ start: start, end: constraintRange.end });\n }\n return invertedRanges;\n }\n function compareRanges(range0, range1) {\n return range0.start.valueOf() - range1.start.valueOf(); // earlier ranges go first\n }\n function intersectRanges(range0, range1) {\n var start = range0.start;\n var end = range0.end;\n var newRange = null;\n if (range1.start !== null) {\n if (start === null) {\n start = range1.start;\n }\n else {\n start = new Date(Math.max(start.valueOf(), range1.start.valueOf()));\n }\n }\n if (range1.end != null) {\n if (end === null) {\n end = range1.end;\n }\n else {\n end = new Date(Math.min(end.valueOf(), range1.end.valueOf()));\n }\n }\n if (start === null || end === null || start < end) {\n newRange = { start: start, end: end };\n }\n return newRange;\n }\n function rangesEqual(range0, range1) {\n return (range0.start === null ? null : range0.start.valueOf()) === (range1.start === null ? null : range1.start.valueOf()) &&\n (range0.end === null ? null : range0.end.valueOf()) === (range1.end === null ? null : range1.end.valueOf());\n }\n function rangesIntersect(range0, range1) {\n return (range0.end === null || range1.start === null || range0.end > range1.start) &&\n (range0.start === null || range1.end === null || range0.start < range1.end);\n }\n function rangeContainsRange(outerRange, innerRange) {\n return (outerRange.start === null || (innerRange.start !== null && innerRange.start >= outerRange.start)) &&\n (outerRange.end === null || (innerRange.end !== null && innerRange.end <= outerRange.end));\n }\n function rangeContainsMarker(range, date) {\n return (range.start === null || date >= range.start) &&\n (range.end === null || date < range.end);\n }\n // If the given date is not within the given range, move it inside.\n // (If it's past the end, make it one millisecond before the end).\n function constrainMarkerToRange(date, range) {\n if (range.start != null && date < range.start) {\n return range.start;\n }\n if (range.end != null && date >= range.end) {\n return new Date(range.end.valueOf() - 1);\n }\n return date;\n }\n\n function removeExact(array, exactVal) {\n var removeCnt = 0;\n var i = 0;\n while (i < array.length) {\n if (array[i] === exactVal) {\n array.splice(i, 1);\n removeCnt++;\n }\n else {\n i++;\n }\n }\n return removeCnt;\n }\n function isArraysEqual(a0, a1) {\n var len = a0.length;\n var i;\n if (len !== a1.length) { // not array? or not same length?\n return false;\n }\n for (i = 0; i < len; i++) {\n if (a0[i] !== a1[i]) {\n return false;\n }\n }\n return true;\n }\n\n function memoize(workerFunc) {\n var args;\n var res;\n return function () {\n if (!args || !isArraysEqual(args, arguments)) {\n args = arguments;\n res = workerFunc.apply(this, arguments);\n }\n return res;\n };\n }\n /*\n always executes the workerFunc, but if the result is equal to the previous result,\n return the previous result instead.\n */\n function memoizeOutput(workerFunc, equalityFunc) {\n var cachedRes = null;\n return function () {\n var newRes = workerFunc.apply(this, arguments);\n if (cachedRes === null || !(cachedRes === newRes || equalityFunc(cachedRes, newRes))) {\n cachedRes = newRes;\n }\n return cachedRes;\n };\n }\n\n var EXTENDED_SETTINGS_AND_SEVERITIES = {\n week: 3,\n separator: 0,\n omitZeroMinute: 0,\n meridiem: 0,\n omitCommas: 0\n };\n var STANDARD_DATE_PROP_SEVERITIES = {\n timeZoneName: 7,\n era: 6,\n year: 5,\n month: 4,\n day: 2,\n weekday: 2,\n hour: 1,\n minute: 1,\n second: 1\n };\n var MERIDIEM_RE = /\\s*([ap])\\.?m\\.?/i; // eats up leading spaces too\n var COMMA_RE = /,/g; // we need re for globalness\n var MULTI_SPACE_RE = /\\s+/g;\n var LTR_RE = /\\u200e/g; // control character\n var UTC_RE = /UTC|GMT/;\n var NativeFormatter = /** @class */ (function () {\n function NativeFormatter(formatSettings) {\n var standardDateProps = {};\n var extendedSettings = {};\n var severity = 0;\n for (var name_1 in formatSettings) {\n if (name_1 in EXTENDED_SETTINGS_AND_SEVERITIES) {\n extendedSettings[name_1] = formatSettings[name_1];\n severity = Math.max(EXTENDED_SETTINGS_AND_SEVERITIES[name_1], severity);\n }\n else {\n standardDateProps[name_1] = formatSettings[name_1];\n if (name_1 in STANDARD_DATE_PROP_SEVERITIES) {\n severity = Math.max(STANDARD_DATE_PROP_SEVERITIES[name_1], severity);\n }\n }\n }\n this.standardDateProps = standardDateProps;\n this.extendedSettings = extendedSettings;\n this.severity = severity;\n this.buildFormattingFunc = memoize(buildFormattingFunc);\n }\n NativeFormatter.prototype.format = function (date, context) {\n return this.buildFormattingFunc(this.standardDateProps, this.extendedSettings, context)(date);\n };\n NativeFormatter.prototype.formatRange = function (start, end, context) {\n var _a = this, standardDateProps = _a.standardDateProps, extendedSettings = _a.extendedSettings;\n var diffSeverity = computeMarkerDiffSeverity(start.marker, end.marker, context.calendarSystem);\n if (!diffSeverity) {\n return this.format(start, context);\n }\n var biggestUnitForPartial = diffSeverity;\n if (biggestUnitForPartial > 1 && // the two dates are different in a way that's larger scale than time\n (standardDateProps.year === 'numeric' || standardDateProps.year === '2-digit') &&\n (standardDateProps.month === 'numeric' || standardDateProps.month === '2-digit') &&\n (standardDateProps.day === 'numeric' || standardDateProps.day === '2-digit')) {\n biggestUnitForPartial = 1; // make it look like the dates are only different in terms of time\n }\n var full0 = this.format(start, context);\n var full1 = this.format(end, context);\n if (full0 === full1) {\n return full0;\n }\n var partialDateProps = computePartialFormattingOptions(standardDateProps, biggestUnitForPartial);\n var partialFormattingFunc = buildFormattingFunc(partialDateProps, extendedSettings, context);\n var partial0 = partialFormattingFunc(start);\n var partial1 = partialFormattingFunc(end);\n var insertion = findCommonInsertion(full0, partial0, full1, partial1);\n var separator = extendedSettings.separator || '';\n if (insertion) {\n return insertion.before + partial0 + separator + partial1 + insertion.after;\n }\n return full0 + separator + full1;\n };\n NativeFormatter.prototype.getLargestUnit = function () {\n switch (this.severity) {\n case 7:\n case 6:\n case 5:\n return 'year';\n case 4:\n return 'month';\n case 3:\n return 'week';\n default:\n return 'day';\n }\n };\n return NativeFormatter;\n }());\n function buildFormattingFunc(standardDateProps, extendedSettings, context) {\n var standardDatePropCnt = Object.keys(standardDateProps).length;\n if (standardDatePropCnt === 1 && standardDateProps.timeZoneName === 'short') {\n return function (date) {\n return formatTimeZoneOffset(date.timeZoneOffset);\n };\n }\n if (standardDatePropCnt === 0 && extendedSettings.week) {\n return function (date) {\n return formatWeekNumber(context.computeWeekNumber(date.marker), context.weekLabel, context.locale, extendedSettings.week);\n };\n }\n return buildNativeFormattingFunc(standardDateProps, extendedSettings, context);\n }\n function buildNativeFormattingFunc(standardDateProps, extendedSettings, context) {\n standardDateProps = __assign({}, standardDateProps); // copy\n extendedSettings = __assign({}, extendedSettings); // copy\n sanitizeSettings(standardDateProps, extendedSettings);\n standardDateProps.timeZone = 'UTC'; // we leverage the only guaranteed timeZone for our UTC markers\n var normalFormat = new Intl.DateTimeFormat(context.locale.codes, standardDateProps);\n var zeroFormat; // needed?\n if (extendedSettings.omitZeroMinute) {\n var zeroProps = __assign({}, standardDateProps);\n delete zeroProps.minute; // seconds and ms were already considered in sanitizeSettings\n zeroFormat = new Intl.DateTimeFormat(context.locale.codes, zeroProps);\n }\n return function (date) {\n var marker = date.marker;\n var format;\n if (zeroFormat && !marker.getUTCMinutes()) {\n format = zeroFormat;\n }\n else {\n format = normalFormat;\n }\n var s = format.format(marker);\n return postProcess(s, date, standardDateProps, extendedSettings, context);\n };\n }\n function sanitizeSettings(standardDateProps, extendedSettings) {\n // deal with a browser inconsistency where formatting the timezone\n // requires that the hour/minute be present.\n if (standardDateProps.timeZoneName) {\n if (!standardDateProps.hour) {\n standardDateProps.hour = '2-digit';\n }\n if (!standardDateProps.minute) {\n standardDateProps.minute = '2-digit';\n }\n }\n // only support short timezone names\n if (standardDateProps.timeZoneName === 'long') {\n standardDateProps.timeZoneName = 'short';\n }\n // if requesting to display seconds, MUST display minutes\n if (extendedSettings.omitZeroMinute && (standardDateProps.second || standardDateProps.millisecond)) {\n delete extendedSettings.omitZeroMinute;\n }\n }\n function postProcess(s, date, standardDateProps, extendedSettings, context) {\n s = s.replace(LTR_RE, ''); // remove left-to-right control chars. do first. good for other regexes\n if (standardDateProps.timeZoneName === 'short') {\n s = injectTzoStr(s, (context.timeZone === 'UTC' || date.timeZoneOffset == null) ?\n 'UTC' : // important to normalize for IE, which does \"GMT\"\n formatTimeZoneOffset(date.timeZoneOffset));\n }\n if (extendedSettings.omitCommas) {\n s = s.replace(COMMA_RE, '').trim();\n }\n if (extendedSettings.omitZeroMinute) {\n s = s.replace(':00', ''); // zeroFormat doesn't always achieve this\n }\n // ^ do anything that might create adjacent spaces before this point,\n // because MERIDIEM_RE likes to eat up loading spaces\n if (extendedSettings.meridiem === false) {\n s = s.replace(MERIDIEM_RE, '').trim();\n }\n else if (extendedSettings.meridiem === 'narrow') { // a/p\n s = s.replace(MERIDIEM_RE, function (m0, m1) {\n return m1.toLocaleLowerCase();\n });\n }\n else if (extendedSettings.meridiem === 'short') { // am/pm\n s = s.replace(MERIDIEM_RE, function (m0, m1) {\n return m1.toLocaleLowerCase() + 'm';\n });\n }\n else if (extendedSettings.meridiem === 'lowercase') { // other meridiem transformers already converted to lowercase\n s = s.replace(MERIDIEM_RE, function (m0) {\n return m0.toLocaleLowerCase();\n });\n }\n s = s.replace(MULTI_SPACE_RE, ' ');\n s = s.trim();\n return s;\n }\n function injectTzoStr(s, tzoStr) {\n var replaced = false;\n s = s.replace(UTC_RE, function () {\n replaced = true;\n return tzoStr;\n });\n // IE11 doesn't include UTC/GMT in the original string, so append to end\n if (!replaced) {\n s += ' ' + tzoStr;\n }\n return s;\n }\n function formatWeekNumber(num, weekLabel, locale, display) {\n var parts = [];\n if (display === 'narrow') {\n parts.push(weekLabel);\n }\n else if (display === 'short') {\n parts.push(weekLabel, ' ');\n }\n // otherwise, considered 'numeric'\n parts.push(locale.simpleNumberFormat.format(num));\n if (locale.options.isRtl) { // TODO: use control characters instead?\n parts.reverse();\n }\n return parts.join('');\n }\n // Range Formatting Utils\n // 0 = exactly the same\n // 1 = different by time\n // and bigger\n function computeMarkerDiffSeverity(d0, d1, ca) {\n if (ca.getMarkerYear(d0) !== ca.getMarkerYear(d1)) {\n return 5;\n }\n if (ca.getMarkerMonth(d0) !== ca.getMarkerMonth(d1)) {\n return 4;\n }\n if (ca.getMarkerDay(d0) !== ca.getMarkerDay(d1)) {\n return 2;\n }\n if (timeAsMs(d0) !== timeAsMs(d1)) {\n return 1;\n }\n return 0;\n }\n function computePartialFormattingOptions(options, biggestUnit) {\n var partialOptions = {};\n for (var name_2 in options) {\n if (!(name_2 in STANDARD_DATE_PROP_SEVERITIES) || // not a date part prop (like timeZone)\n STANDARD_DATE_PROP_SEVERITIES[name_2] <= biggestUnit) {\n partialOptions[name_2] = options[name_2];\n }\n }\n return partialOptions;\n }\n function findCommonInsertion(full0, partial0, full1, partial1) {\n var i0 = 0;\n while (i0 < full0.length) {\n var found0 = full0.indexOf(partial0, i0);\n if (found0 === -1) {\n break;\n }\n var before0 = full0.substr(0, found0);\n i0 = found0 + partial0.length;\n var after0 = full0.substr(i0);\n var i1 = 0;\n while (i1 < full1.length) {\n var found1 = full1.indexOf(partial1, i1);\n if (found1 === -1) {\n break;\n }\n var before1 = full1.substr(0, found1);\n i1 = found1 + partial1.length;\n var after1 = full1.substr(i1);\n if (before0 === before1 && after0 === after1) {\n return {\n before: before0,\n after: after0\n };\n }\n }\n }\n return null;\n }\n\n /*\n TODO: fix the terminology of \"formatter\" vs \"formatting func\"\n */\n /*\n At the time of instantiation, this object does not know which cmd-formatting system it will use.\n It receives this at the time of formatting, as a setting.\n */\n var CmdFormatter = /** @class */ (function () {\n function CmdFormatter(cmdStr, separator) {\n this.cmdStr = cmdStr;\n this.separator = separator;\n }\n CmdFormatter.prototype.format = function (date, context) {\n return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(date, null, context, this.separator));\n };\n CmdFormatter.prototype.formatRange = function (start, end, context) {\n return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(start, end, context, this.separator));\n };\n return CmdFormatter;\n }());\n\n var FuncFormatter = /** @class */ (function () {\n function FuncFormatter(func) {\n this.func = func;\n }\n FuncFormatter.prototype.format = function (date, context) {\n return this.func(createVerboseFormattingArg(date, null, context));\n };\n FuncFormatter.prototype.formatRange = function (start, end, context) {\n return this.func(createVerboseFormattingArg(start, end, context));\n };\n return FuncFormatter;\n }());\n\n // Formatter Object Creation\n function createFormatter(input, defaultSeparator) {\n if (typeof input === 'object' && input) { // non-null object\n if (typeof defaultSeparator === 'string') {\n input = __assign({ separator: defaultSeparator }, input);\n }\n return new NativeFormatter(input);\n }\n else if (typeof input === 'string') {\n return new CmdFormatter(input, defaultSeparator);\n }\n else if (typeof input === 'function') {\n return new FuncFormatter(input);\n }\n }\n // String Utils\n // timeZoneOffset is in minutes\n function buildIsoString(marker, timeZoneOffset, stripZeroTime) {\n if (stripZeroTime === void 0) { stripZeroTime = false; }\n var s = marker.toISOString();\n s = s.replace('.000', '');\n if (stripZeroTime) {\n s = s.replace('T00:00:00Z', '');\n }\n if (s.length > 10) { // time part wasn't stripped, can add timezone info\n if (timeZoneOffset == null) {\n s = s.replace('Z', '');\n }\n else if (timeZoneOffset !== 0) {\n s = s.replace('Z', formatTimeZoneOffset(timeZoneOffset, true));\n }\n // otherwise, its UTC-0 and we want to keep the Z\n }\n return s;\n }\n function formatIsoTimeString(marker) {\n return padStart(marker.getUTCHours(), 2) + ':' +\n padStart(marker.getUTCMinutes(), 2) + ':' +\n padStart(marker.getUTCSeconds(), 2);\n }\n function formatTimeZoneOffset(minutes, doIso) {\n if (doIso === void 0) { doIso = false; }\n var sign = minutes < 0 ? '-' : '+';\n var abs = Math.abs(minutes);\n var hours = Math.floor(abs / 60);\n var mins = Math.round(abs % 60);\n if (doIso) {\n return sign + padStart(hours, 2) + ':' + padStart(mins, 2);\n }\n else {\n return 'GMT' + sign + hours + (mins ? ':' + padStart(mins, 2) : '');\n }\n }\n // Arg Utils\n function createVerboseFormattingArg(start, end, context, separator) {\n var startInfo = expandZonedMarker(start, context.calendarSystem);\n var endInfo = end ? expandZonedMarker(end, context.calendarSystem) : null;\n return {\n date: startInfo,\n start: startInfo,\n end: endInfo,\n timeZone: context.timeZone,\n localeCodes: context.locale.codes,\n separator: separator\n };\n }\n function expandZonedMarker(dateInfo, calendarSystem) {\n var a = calendarSystem.markerToArray(dateInfo.marker);\n return {\n marker: dateInfo.marker,\n timeZoneOffset: dateInfo.timeZoneOffset,\n array: a,\n year: a[0],\n month: a[1],\n day: a[2],\n hour: a[3],\n minute: a[4],\n second: a[5],\n millisecond: a[6]\n };\n }\n\n var EventSourceApi = /** @class */ (function () {\n function EventSourceApi(calendar, internalEventSource) {\n this.calendar = calendar;\n this.internalEventSource = internalEventSource;\n }\n EventSourceApi.prototype.remove = function () {\n this.calendar.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: this.internalEventSource.sourceId\n });\n };\n EventSourceApi.prototype.refetch = function () {\n this.calendar.dispatch({\n type: 'FETCH_EVENT_SOURCES',\n sourceIds: [this.internalEventSource.sourceId]\n });\n };\n Object.defineProperty(EventSourceApi.prototype, \"id\", {\n get: function () {\n return this.internalEventSource.publicId;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventSourceApi.prototype, \"url\", {\n // only relevant to json-feed event sources\n get: function () {\n return this.internalEventSource.meta.url;\n },\n enumerable: true,\n configurable: true\n });\n return EventSourceApi;\n }());\n\n var EventApi = /** @class */ (function () {\n function EventApi(calendar, def, instance) {\n this._calendar = calendar;\n this._def = def;\n this._instance = instance || null;\n }\n /*\n TODO: make event struct more responsible for this\n */\n EventApi.prototype.setProp = function (name, val) {\n var _a, _b;\n if (name in DATE_PROPS) ;\n else if (name in NON_DATE_PROPS) {\n if (typeof NON_DATE_PROPS[name] === 'function') {\n val = NON_DATE_PROPS[name](val);\n }\n this.mutate({\n standardProps: (_a = {}, _a[name] = val, _a)\n });\n }\n else if (name in UNSCOPED_EVENT_UI_PROPS) {\n var ui = void 0;\n if (typeof UNSCOPED_EVENT_UI_PROPS[name] === 'function') {\n val = UNSCOPED_EVENT_UI_PROPS[name](val);\n }\n if (name === 'color') {\n ui = { backgroundColor: val, borderColor: val };\n }\n else if (name === 'editable') {\n ui = { startEditable: val, durationEditable: val };\n }\n else {\n ui = (_b = {}, _b[name] = val, _b);\n }\n this.mutate({\n standardProps: { ui: ui }\n });\n }\n };\n EventApi.prototype.setExtendedProp = function (name, val) {\n var _a;\n this.mutate({\n extendedProps: (_a = {}, _a[name] = val, _a)\n });\n };\n EventApi.prototype.setStart = function (startInput, options) {\n if (options === void 0) { options = {}; }\n var dateEnv = this._calendar.dateEnv;\n var start = dateEnv.createMarker(startInput);\n if (start && this._instance) { // TODO: warning if parsed bad\n var instanceRange = this._instance.range;\n var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity); // what if parsed bad!?\n if (options.maintainDuration) {\n this.mutate({ datesDelta: startDelta });\n }\n else {\n this.mutate({ startDelta: startDelta });\n }\n }\n };\n EventApi.prototype.setEnd = function (endInput, options) {\n if (options === void 0) { options = {}; }\n var dateEnv = this._calendar.dateEnv;\n var end;\n if (endInput != null) {\n end = dateEnv.createMarker(endInput);\n if (!end) {\n return; // TODO: warning if parsed bad\n }\n }\n if (this._instance) {\n if (end) {\n var endDelta = diffDates(this._instance.range.end, end, dateEnv, options.granularity);\n this.mutate({ endDelta: endDelta });\n }\n else {\n this.mutate({ standardProps: { hasEnd: false } });\n }\n }\n };\n EventApi.prototype.setDates = function (startInput, endInput, options) {\n if (options === void 0) { options = {}; }\n var dateEnv = this._calendar.dateEnv;\n var standardProps = { allDay: options.allDay };\n var start = dateEnv.createMarker(startInput);\n var end;\n if (!start) {\n return; // TODO: warning if parsed bad\n }\n if (endInput != null) {\n end = dateEnv.createMarker(endInput);\n if (!end) { // TODO: warning if parsed bad\n return;\n }\n }\n if (this._instance) {\n var instanceRange = this._instance.range;\n // when computing the diff for an event being converted to all-day,\n // compute diff off of the all-day values the way event-mutation does.\n if (options.allDay === true) {\n instanceRange = computeAlignedDayRange(instanceRange);\n }\n var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity);\n if (end) {\n var endDelta = diffDates(instanceRange.end, end, dateEnv, options.granularity);\n if (durationsEqual(startDelta, endDelta)) {\n this.mutate({ datesDelta: startDelta, standardProps: standardProps });\n }\n else {\n this.mutate({ startDelta: startDelta, endDelta: endDelta, standardProps: standardProps });\n }\n }\n else { // means \"clear the end\"\n standardProps.hasEnd = false;\n this.mutate({ datesDelta: startDelta, standardProps: standardProps });\n }\n }\n };\n EventApi.prototype.moveStart = function (deltaInput) {\n var delta = createDuration(deltaInput);\n if (delta) { // TODO: warning if parsed bad\n this.mutate({ startDelta: delta });\n }\n };\n EventApi.prototype.moveEnd = function (deltaInput) {\n var delta = createDuration(deltaInput);\n if (delta) { // TODO: warning if parsed bad\n this.mutate({ endDelta: delta });\n }\n };\n EventApi.prototype.moveDates = function (deltaInput) {\n var delta = createDuration(deltaInput);\n if (delta) { // TODO: warning if parsed bad\n this.mutate({ datesDelta: delta });\n }\n };\n EventApi.prototype.setAllDay = function (allDay, options) {\n if (options === void 0) { options = {}; }\n var standardProps = { allDay: allDay };\n var maintainDuration = options.maintainDuration;\n if (maintainDuration == null) {\n maintainDuration = this._calendar.opt('allDayMaintainDuration');\n }\n if (this._def.allDay !== allDay) {\n standardProps.hasEnd = maintainDuration;\n }\n this.mutate({ standardProps: standardProps });\n };\n EventApi.prototype.formatRange = function (formatInput) {\n var dateEnv = this._calendar.dateEnv;\n var instance = this._instance;\n var formatter = createFormatter(formatInput, this._calendar.opt('defaultRangeSeparator'));\n if (this._def.hasEnd) {\n return dateEnv.formatRange(instance.range.start, instance.range.end, formatter, {\n forcedStartTzo: instance.forcedStartTzo,\n forcedEndTzo: instance.forcedEndTzo\n });\n }\n else {\n return dateEnv.format(instance.range.start, formatter, {\n forcedTzo: instance.forcedStartTzo\n });\n }\n };\n EventApi.prototype.mutate = function (mutation) {\n var def = this._def;\n var instance = this._instance;\n if (instance) {\n this._calendar.dispatch({\n type: 'MUTATE_EVENTS',\n instanceId: instance.instanceId,\n mutation: mutation,\n fromApi: true\n });\n var eventStore = this._calendar.state.eventStore;\n this._def = eventStore.defs[def.defId];\n this._instance = eventStore.instances[instance.instanceId];\n }\n };\n EventApi.prototype.remove = function () {\n this._calendar.dispatch({\n type: 'REMOVE_EVENT_DEF',\n defId: this._def.defId\n });\n };\n Object.defineProperty(EventApi.prototype, \"source\", {\n get: function () {\n var sourceId = this._def.sourceId;\n if (sourceId) {\n return new EventSourceApi(this._calendar, this._calendar.state.eventSources[sourceId]);\n }\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"start\", {\n get: function () {\n return this._instance ?\n this._calendar.dateEnv.toDate(this._instance.range.start) :\n null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"end\", {\n get: function () {\n return (this._instance && this._def.hasEnd) ?\n this._calendar.dateEnv.toDate(this._instance.range.end) :\n null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"id\", {\n // computable props that all access the def\n // TODO: find a TypeScript-compatible way to do this at scale\n get: function () { return this._def.publicId; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"groupId\", {\n get: function () { return this._def.groupId; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"allDay\", {\n get: function () { return this._def.allDay; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"title\", {\n get: function () { return this._def.title; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"url\", {\n get: function () { return this._def.url; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"rendering\", {\n get: function () { return this._def.rendering; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"startEditable\", {\n get: function () { return this._def.ui.startEditable; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"durationEditable\", {\n get: function () { return this._def.ui.durationEditable; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"constraint\", {\n get: function () { return this._def.ui.constraints[0] || null; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"overlap\", {\n get: function () { return this._def.ui.overlap; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"allow\", {\n get: function () { return this._def.ui.allows[0] || null; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"backgroundColor\", {\n get: function () { return this._def.ui.backgroundColor; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"borderColor\", {\n get: function () { return this._def.ui.borderColor; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"textColor\", {\n get: function () { return this._def.ui.textColor; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"classNames\", {\n // NOTE: user can't modify these because Object.freeze was called in event-def parsing\n get: function () { return this._def.ui.classNames; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"extendedProps\", {\n get: function () { return this._def.extendedProps; },\n enumerable: true,\n configurable: true\n });\n return EventApi;\n }());\n\n /*\n Specifying nextDayThreshold signals that all-day ranges should be sliced.\n */\n function sliceEventStore(eventStore, eventUiBases, framingRange, nextDayThreshold) {\n var inverseBgByGroupId = {};\n var inverseBgByDefId = {};\n var defByGroupId = {};\n var bgRanges = [];\n var fgRanges = [];\n var eventUis = compileEventUis(eventStore.defs, eventUiBases);\n for (var defId in eventStore.defs) {\n var def = eventStore.defs[defId];\n if (def.rendering === 'inverse-background') {\n if (def.groupId) {\n inverseBgByGroupId[def.groupId] = [];\n if (!defByGroupId[def.groupId]) {\n defByGroupId[def.groupId] = def;\n }\n }\n else {\n inverseBgByDefId[defId] = [];\n }\n }\n }\n for (var instanceId in eventStore.instances) {\n var instance = eventStore.instances[instanceId];\n var def = eventStore.defs[instance.defId];\n var ui = eventUis[def.defId];\n var origRange = instance.range;\n var normalRange = (!def.allDay && nextDayThreshold) ?\n computeVisibleDayRange(origRange, nextDayThreshold) :\n origRange;\n var slicedRange = intersectRanges(normalRange, framingRange);\n if (slicedRange) {\n if (def.rendering === 'inverse-background') {\n if (def.groupId) {\n inverseBgByGroupId[def.groupId].push(slicedRange);\n }\n else {\n inverseBgByDefId[instance.defId].push(slicedRange);\n }\n }\n else {\n (def.rendering === 'background' ? bgRanges : fgRanges).push({\n def: def,\n ui: ui,\n instance: instance,\n range: slicedRange,\n isStart: normalRange.start && normalRange.start.valueOf() === slicedRange.start.valueOf(),\n isEnd: normalRange.end && normalRange.end.valueOf() === slicedRange.end.valueOf()\n });\n }\n }\n }\n for (var groupId in inverseBgByGroupId) { // BY GROUP\n var ranges = inverseBgByGroupId[groupId];\n var invertedRanges = invertRanges(ranges, framingRange);\n for (var _i = 0, invertedRanges_1 = invertedRanges; _i < invertedRanges_1.length; _i++) {\n var invertedRange = invertedRanges_1[_i];\n var def = defByGroupId[groupId];\n var ui = eventUis[def.defId];\n bgRanges.push({\n def: def,\n ui: ui,\n instance: null,\n range: invertedRange,\n isStart: false,\n isEnd: false\n });\n }\n }\n for (var defId in inverseBgByDefId) {\n var ranges = inverseBgByDefId[defId];\n var invertedRanges = invertRanges(ranges, framingRange);\n for (var _a = 0, invertedRanges_2 = invertedRanges; _a < invertedRanges_2.length; _a++) {\n var invertedRange = invertedRanges_2[_a];\n bgRanges.push({\n def: eventStore.defs[defId],\n ui: eventUis[defId],\n instance: null,\n range: invertedRange,\n isStart: false,\n isEnd: false\n });\n }\n }\n return { bg: bgRanges, fg: fgRanges };\n }\n function hasBgRendering(def) {\n return def.rendering === 'background' || def.rendering === 'inverse-background';\n }\n function filterSegsViaEls(context, segs, isMirror) {\n var calendar = context.calendar, view = context.view;\n if (calendar.hasPublicHandlers('eventRender')) {\n segs = segs.filter(function (seg) {\n var custom = calendar.publiclyTrigger('eventRender', [\n {\n event: new EventApi(calendar, seg.eventRange.def, seg.eventRange.instance),\n isMirror: isMirror,\n isStart: seg.isStart,\n isEnd: seg.isEnd,\n // TODO: include seg.range once all components consistently generate it\n el: seg.el,\n view: view\n }\n ]);\n if (custom === false) { // means don't render at all\n return false;\n }\n else if (custom && custom !== true) {\n seg.el = custom;\n }\n return true;\n });\n }\n for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {\n var seg = segs_1[_i];\n setElSeg(seg.el, seg);\n }\n return segs;\n }\n function setElSeg(el, seg) {\n el.fcSeg = seg;\n }\n function getElSeg(el) {\n return el.fcSeg || null;\n }\n // event ui computation\n function compileEventUis(eventDefs, eventUiBases) {\n return mapHash(eventDefs, function (eventDef) {\n return compileEventUi(eventDef, eventUiBases);\n });\n }\n function compileEventUi(eventDef, eventUiBases) {\n var uis = [];\n if (eventUiBases['']) {\n uis.push(eventUiBases['']);\n }\n if (eventUiBases[eventDef.defId]) {\n uis.push(eventUiBases[eventDef.defId]);\n }\n uis.push(eventDef.ui);\n return combineEventUis(uis);\n }\n // triggers\n function triggerRenderedSegs(context, segs, isMirrors) {\n var calendar = context.calendar, view = context.view;\n if (calendar.hasPublicHandlers('eventPositioned')) {\n for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) {\n var seg = segs_2[_i];\n calendar.publiclyTriggerAfterSizing('eventPositioned', [\n {\n event: new EventApi(calendar, seg.eventRange.def, seg.eventRange.instance),\n isMirror: isMirrors,\n isStart: seg.isStart,\n isEnd: seg.isEnd,\n el: seg.el,\n view: view\n }\n ]);\n }\n }\n if (!calendar.state.loadingLevel) { // avoid initial empty state while pending\n calendar.afterSizingTriggers._eventsPositioned = [null]; // fire once\n }\n }\n function triggerWillRemoveSegs(context, segs, isMirrors) {\n var calendar = context.calendar, view = context.view;\n for (var _i = 0, segs_3 = segs; _i < segs_3.length; _i++) {\n var seg = segs_3[_i];\n calendar.trigger('eventElRemove', seg.el);\n }\n if (calendar.hasPublicHandlers('eventDestroy')) {\n for (var _a = 0, segs_4 = segs; _a < segs_4.length; _a++) {\n var seg = segs_4[_a];\n calendar.publiclyTrigger('eventDestroy', [\n {\n event: new EventApi(calendar, seg.eventRange.def, seg.eventRange.instance),\n isMirror: isMirrors,\n el: seg.el,\n view: view\n }\n ]);\n }\n }\n }\n // is-interactable\n function computeEventDraggable(context, eventDef, eventUi) {\n var calendar = context.calendar, view = context.view;\n var transformers = calendar.pluginSystem.hooks.isDraggableTransformers;\n var val = eventUi.startEditable;\n for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) {\n var transformer = transformers_1[_i];\n val = transformer(val, eventDef, eventUi, view);\n }\n return val;\n }\n function computeEventStartResizable(context, eventDef, eventUi) {\n return eventUi.durationEditable && context.options.eventResizableFromStart;\n }\n function computeEventEndResizable(context, eventDef, eventUi) {\n return eventUi.durationEditable;\n }\n\n // applies the mutation to ALL defs/instances within the event store\n function applyMutationToEventStore(eventStore, eventConfigBase, mutation, calendar) {\n var eventConfigs = compileEventUis(eventStore.defs, eventConfigBase);\n var dest = createEmptyEventStore();\n for (var defId in eventStore.defs) {\n var def = eventStore.defs[defId];\n dest.defs[defId] = applyMutationToEventDef(def, eventConfigs[defId], mutation, calendar.pluginSystem.hooks.eventDefMutationAppliers, calendar);\n }\n for (var instanceId in eventStore.instances) {\n var instance = eventStore.instances[instanceId];\n var def = dest.defs[instance.defId]; // important to grab the newly modified def\n dest.instances[instanceId] = applyMutationToEventInstance(instance, def, eventConfigs[instance.defId], mutation, calendar);\n }\n return dest;\n }\n function applyMutationToEventDef(eventDef, eventConfig, mutation, appliers, calendar) {\n var standardProps = mutation.standardProps || {};\n // if hasEnd has not been specified, guess a good value based on deltas.\n // if duration will change, there's no way the default duration will persist,\n // and thus, we need to mark the event as having a real end\n if (standardProps.hasEnd == null &&\n eventConfig.durationEditable &&\n (mutation.startDelta || mutation.endDelta)) {\n standardProps.hasEnd = true; // TODO: is this mutation okay?\n }\n var copy = __assign({}, eventDef, standardProps, { ui: __assign({}, eventDef.ui, standardProps.ui) });\n if (mutation.extendedProps) {\n copy.extendedProps = __assign({}, copy.extendedProps, mutation.extendedProps);\n }\n for (var _i = 0, appliers_1 = appliers; _i < appliers_1.length; _i++) {\n var applier = appliers_1[_i];\n applier(copy, mutation, calendar);\n }\n if (!copy.hasEnd && calendar.opt('forceEventDuration')) {\n copy.hasEnd = true;\n }\n return copy;\n }\n function applyMutationToEventInstance(eventInstance, eventDef, // must first be modified by applyMutationToEventDef\n eventConfig, mutation, calendar) {\n var dateEnv = calendar.dateEnv;\n var forceAllDay = mutation.standardProps && mutation.standardProps.allDay === true;\n var clearEnd = mutation.standardProps && mutation.standardProps.hasEnd === false;\n var copy = __assign({}, eventInstance);\n if (forceAllDay) {\n copy.range = computeAlignedDayRange(copy.range);\n }\n if (mutation.datesDelta && eventConfig.startEditable) {\n copy.range = {\n start: dateEnv.add(copy.range.start, mutation.datesDelta),\n end: dateEnv.add(copy.range.end, mutation.datesDelta)\n };\n }\n if (mutation.startDelta && eventConfig.durationEditable) {\n copy.range = {\n start: dateEnv.add(copy.range.start, mutation.startDelta),\n end: copy.range.end\n };\n }\n if (mutation.endDelta && eventConfig.durationEditable) {\n copy.range = {\n start: copy.range.start,\n end: dateEnv.add(copy.range.end, mutation.endDelta)\n };\n }\n if (clearEnd) {\n copy.range = {\n start: copy.range.start,\n end: calendar.getDefaultEventEnd(eventDef.allDay, copy.range.start)\n };\n }\n // in case event was all-day but the supplied deltas were not\n // better util for this?\n if (eventDef.allDay) {\n copy.range = {\n start: startOfDay(copy.range.start),\n end: startOfDay(copy.range.end)\n };\n }\n // handle invalid durations\n if (copy.range.end < copy.range.start) {\n copy.range.end = calendar.getDefaultEventEnd(eventDef.allDay, copy.range.start);\n }\n return copy;\n }\n\n function reduceEventStore (eventStore, action, eventSources, dateProfile, calendar) {\n switch (action.type) {\n case 'RECEIVE_EVENTS': // raw\n return receiveRawEvents(eventStore, eventSources[action.sourceId], action.fetchId, action.fetchRange, action.rawEvents, calendar);\n case 'ADD_EVENTS': // already parsed, but not expanded\n return addEvent(eventStore, action.eventStore, // new ones\n dateProfile ? dateProfile.activeRange : null, calendar);\n case 'MERGE_EVENTS': // already parsed and expanded\n return mergeEventStores(eventStore, action.eventStore);\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n case 'NEXT':\n case 'SET_DATE':\n case 'SET_VIEW_TYPE':\n if (dateProfile) {\n return expandRecurring(eventStore, dateProfile.activeRange, calendar);\n }\n else {\n return eventStore;\n }\n case 'CHANGE_TIMEZONE':\n return rezoneDates(eventStore, action.oldDateEnv, calendar.dateEnv);\n case 'MUTATE_EVENTS':\n return applyMutationToRelated(eventStore, action.instanceId, action.mutation, action.fromApi, calendar);\n case 'REMOVE_EVENT_INSTANCES':\n return excludeInstances(eventStore, action.instances);\n case 'REMOVE_EVENT_DEF':\n return filterEventStoreDefs(eventStore, function (eventDef) {\n return eventDef.defId !== action.defId;\n });\n case 'REMOVE_EVENT_SOURCE':\n return excludeEventsBySourceId(eventStore, action.sourceId);\n case 'REMOVE_ALL_EVENT_SOURCES':\n return filterEventStoreDefs(eventStore, function (eventDef) {\n return !eventDef.sourceId; // only keep events with no source id\n });\n case 'REMOVE_ALL_EVENTS':\n return createEmptyEventStore();\n case 'RESET_EVENTS':\n return {\n defs: eventStore.defs,\n instances: eventStore.instances\n };\n default:\n return eventStore;\n }\n }\n function receiveRawEvents(eventStore, eventSource, fetchId, fetchRange, rawEvents, calendar) {\n if (eventSource && // not already removed\n fetchId === eventSource.latestFetchId // TODO: wish this logic was always in event-sources\n ) {\n var subset = parseEvents(transformRawEvents(rawEvents, eventSource, calendar), eventSource.sourceId, calendar);\n if (fetchRange) {\n subset = expandRecurring(subset, fetchRange, calendar);\n }\n return mergeEventStores(excludeEventsBySourceId(eventStore, eventSource.sourceId), subset);\n }\n return eventStore;\n }\n function addEvent(eventStore, subset, expandRange, calendar) {\n if (expandRange) {\n subset = expandRecurring(subset, expandRange, calendar);\n }\n return mergeEventStores(eventStore, subset);\n }\n function rezoneDates(eventStore, oldDateEnv, newDateEnv) {\n var defs = eventStore.defs;\n var instances = mapHash(eventStore.instances, function (instance) {\n var def = defs[instance.defId];\n if (def.allDay || def.recurringDef) {\n return instance; // isn't dependent on timezone\n }\n else {\n return __assign({}, instance, { range: {\n start: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.start, instance.forcedStartTzo)),\n end: newDateEnv.createMarker(oldDateEnv.toDate(instance.range.end, instance.forcedEndTzo))\n }, forcedStartTzo: newDateEnv.canComputeOffset ? null : instance.forcedStartTzo, forcedEndTzo: newDateEnv.canComputeOffset ? null : instance.forcedEndTzo });\n }\n });\n return { defs: defs, instances: instances };\n }\n function applyMutationToRelated(eventStore, instanceId, mutation, fromApi, calendar) {\n var relevant = getRelevantEvents(eventStore, instanceId);\n var eventConfigBase = fromApi ?\n { '': {\n startEditable: true,\n durationEditable: true,\n constraints: [],\n overlap: null,\n allows: [],\n backgroundColor: '',\n borderColor: '',\n textColor: '',\n classNames: []\n } } :\n calendar.eventUiBases;\n relevant = applyMutationToEventStore(relevant, eventConfigBase, mutation, calendar);\n return mergeEventStores(eventStore, relevant);\n }\n function excludeEventsBySourceId(eventStore, sourceId) {\n return filterEventStoreDefs(eventStore, function (eventDef) {\n return eventDef.sourceId !== sourceId;\n });\n }\n // QUESTION: why not just return instances? do a general object-property-exclusion util\n function excludeInstances(eventStore, removals) {\n return {\n defs: eventStore.defs,\n instances: filterHash(eventStore.instances, function (instance) {\n return !removals[instance.instanceId];\n })\n };\n }\n\n // high-level segmenting-aware tester functions\n // ------------------------------------------------------------------------------------------------------------------------\n function isInteractionValid(interaction, calendar) {\n return isNewPropsValid({ eventDrag: interaction }, calendar); // HACK: the eventDrag props is used for ALL interactions\n }\n function isDateSelectionValid(dateSelection, calendar) {\n return isNewPropsValid({ dateSelection: dateSelection }, calendar);\n }\n function isNewPropsValid(newProps, calendar) {\n var view = calendar.view;\n var props = __assign({ businessHours: view ? view.props.businessHours : createEmptyEventStore(), dateSelection: '', eventStore: calendar.state.eventStore, eventUiBases: calendar.eventUiBases, eventSelection: '', eventDrag: null, eventResize: null }, newProps);\n return (calendar.pluginSystem.hooks.isPropsValid || isPropsValid)(props, calendar);\n }\n function isPropsValid(state, calendar, dateSpanMeta, filterConfig) {\n if (dateSpanMeta === void 0) { dateSpanMeta = {}; }\n if (state.eventDrag && !isInteractionPropsValid(state, calendar, dateSpanMeta, filterConfig)) {\n return false;\n }\n if (state.dateSelection && !isDateSelectionPropsValid(state, calendar, dateSpanMeta, filterConfig)) {\n return false;\n }\n return true;\n }\n // Moving Event Validation\n // ------------------------------------------------------------------------------------------------------------------------\n function isInteractionPropsValid(state, calendar, dateSpanMeta, filterConfig) {\n var interaction = state.eventDrag; // HACK: the eventDrag props is used for ALL interactions\n var subjectEventStore = interaction.mutatedEvents;\n var subjectDefs = subjectEventStore.defs;\n var subjectInstances = subjectEventStore.instances;\n var subjectConfigs = compileEventUis(subjectDefs, interaction.isEvent ?\n state.eventUiBases :\n { '': calendar.selectionConfig } // if not a real event, validate as a selection\n );\n if (filterConfig) {\n subjectConfigs = mapHash(subjectConfigs, filterConfig);\n }\n var otherEventStore = excludeInstances(state.eventStore, interaction.affectedEvents.instances); // exclude the subject events. TODO: exclude defs too?\n var otherDefs = otherEventStore.defs;\n var otherInstances = otherEventStore.instances;\n var otherConfigs = compileEventUis(otherDefs, state.eventUiBases);\n for (var subjectInstanceId in subjectInstances) {\n var subjectInstance = subjectInstances[subjectInstanceId];\n var subjectRange = subjectInstance.range;\n var subjectConfig = subjectConfigs[subjectInstance.defId];\n var subjectDef = subjectDefs[subjectInstance.defId];\n // constraint\n if (!allConstraintsPass(subjectConfig.constraints, subjectRange, otherEventStore, state.businessHours, calendar)) {\n return false;\n }\n // overlap\n var overlapFunc = calendar.opt('eventOverlap');\n if (typeof overlapFunc !== 'function') {\n overlapFunc = null;\n }\n for (var otherInstanceId in otherInstances) {\n var otherInstance = otherInstances[otherInstanceId];\n // intersect! evaluate\n if (rangesIntersect(subjectRange, otherInstance.range)) {\n var otherOverlap = otherConfigs[otherInstance.defId].overlap;\n // consider the other event's overlap. only do this if the subject event is a \"real\" event\n if (otherOverlap === false && interaction.isEvent) {\n return false;\n }\n if (subjectConfig.overlap === false) {\n return false;\n }\n if (overlapFunc && !overlapFunc(new EventApi(calendar, otherDefs[otherInstance.defId], otherInstance), // still event\n new EventApi(calendar, subjectDef, subjectInstance) // moving event\n )) {\n return false;\n }\n }\n }\n // allow (a function)\n var calendarEventStore = calendar.state.eventStore; // need global-to-calendar, not local to component (splittable)state\n for (var _i = 0, _a = subjectConfig.allows; _i < _a.length; _i++) {\n var subjectAllow = _a[_i];\n var subjectDateSpan = __assign({}, dateSpanMeta, { range: subjectInstance.range, allDay: subjectDef.allDay });\n var origDef = calendarEventStore.defs[subjectDef.defId];\n var origInstance = calendarEventStore.instances[subjectInstanceId];\n var eventApi = void 0;\n if (origDef) { // was previously in the calendar\n eventApi = new EventApi(calendar, origDef, origInstance);\n }\n else { // was an external event\n eventApi = new EventApi(calendar, subjectDef); // no instance, because had no dates\n }\n if (!subjectAllow(calendar.buildDateSpanApi(subjectDateSpan), eventApi)) {\n return false;\n }\n }\n }\n return true;\n }\n // Date Selection Validation\n // ------------------------------------------------------------------------------------------------------------------------\n function isDateSelectionPropsValid(state, calendar, dateSpanMeta, filterConfig) {\n var relevantEventStore = state.eventStore;\n var relevantDefs = relevantEventStore.defs;\n var relevantInstances = relevantEventStore.instances;\n var selection = state.dateSelection;\n var selectionRange = selection.range;\n var selectionConfig = calendar.selectionConfig;\n if (filterConfig) {\n selectionConfig = filterConfig(selectionConfig);\n }\n // constraint\n if (!allConstraintsPass(selectionConfig.constraints, selectionRange, relevantEventStore, state.businessHours, calendar)) {\n return false;\n }\n // overlap\n var overlapFunc = calendar.opt('selectOverlap');\n if (typeof overlapFunc !== 'function') {\n overlapFunc = null;\n }\n for (var relevantInstanceId in relevantInstances) {\n var relevantInstance = relevantInstances[relevantInstanceId];\n // intersect! evaluate\n if (rangesIntersect(selectionRange, relevantInstance.range)) {\n if (selectionConfig.overlap === false) {\n return false;\n }\n if (overlapFunc && !overlapFunc(new EventApi(calendar, relevantDefs[relevantInstance.defId], relevantInstance))) {\n return false;\n }\n }\n }\n // allow (a function)\n for (var _i = 0, _a = selectionConfig.allows; _i < _a.length; _i++) {\n var selectionAllow = _a[_i];\n var fullDateSpan = __assign({}, dateSpanMeta, selection);\n if (!selectionAllow(calendar.buildDateSpanApi(fullDateSpan), null)) {\n return false;\n }\n }\n return true;\n }\n // Constraint Utils\n // ------------------------------------------------------------------------------------------------------------------------\n function allConstraintsPass(constraints, subjectRange, otherEventStore, businessHoursUnexpanded, calendar) {\n for (var _i = 0, constraints_1 = constraints; _i < constraints_1.length; _i++) {\n var constraint = constraints_1[_i];\n if (!anyRangesContainRange(constraintToRanges(constraint, subjectRange, otherEventStore, businessHoursUnexpanded, calendar), subjectRange)) {\n return false;\n }\n }\n return true;\n }\n function constraintToRanges(constraint, subjectRange, // for expanding a recurring constraint, or expanding business hours\n otherEventStore, // for if constraint is an even group ID\n businessHoursUnexpanded, // for if constraint is 'businessHours'\n calendar // for expanding businesshours\n ) {\n if (constraint === 'businessHours') {\n return eventStoreToRanges(expandRecurring(businessHoursUnexpanded, subjectRange, calendar));\n }\n else if (typeof constraint === 'string') { // an group ID\n return eventStoreToRanges(filterEventStoreDefs(otherEventStore, function (eventDef) {\n return eventDef.groupId === constraint;\n }));\n }\n else if (typeof constraint === 'object' && constraint) { // non-null object\n return eventStoreToRanges(expandRecurring(constraint, subjectRange, calendar));\n }\n return []; // if it's false\n }\n // TODO: move to event-store file?\n function eventStoreToRanges(eventStore) {\n var instances = eventStore.instances;\n var ranges = [];\n for (var instanceId in instances) {\n ranges.push(instances[instanceId].range);\n }\n return ranges;\n }\n // TODO: move to geom file?\n function anyRangesContainRange(outerRanges, innerRange) {\n for (var _i = 0, outerRanges_1 = outerRanges; _i < outerRanges_1.length; _i++) {\n var outerRange = outerRanges_1[_i];\n if (rangeContainsRange(outerRange, innerRange)) {\n return true;\n }\n }\n return false;\n }\n // Parsing\n // ------------------------------------------------------------------------------------------------------------------------\n function normalizeConstraint(input, calendar) {\n if (Array.isArray(input)) {\n return parseEvents(input, '', calendar, true); // allowOpenRange=true\n }\n else if (typeof input === 'object' && input) { // non-null object\n return parseEvents([input], '', calendar, true); // allowOpenRange=true\n }\n else if (input != null) {\n return String(input);\n }\n else {\n return null;\n }\n }\n\n function htmlEscape(s) {\n return (s + '').replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/'/g, ''')\n .replace(/\"/g, '"')\n .replace(/\\n/g, '
');\n }\n // Given a hash of CSS properties, returns a string of CSS.\n // Uses property names as-is (no camel-case conversion). Will not make statements for null/undefined values.\n function cssToStr(cssProps) {\n var statements = [];\n for (var name_1 in cssProps) {\n var val = cssProps[name_1];\n if (val != null && val !== '') {\n statements.push(name_1 + ':' + val);\n }\n }\n return statements.join(';');\n }\n // Given an object hash of HTML attribute names to values,\n // generates a string that can be injected between < > in HTML\n function attrsToStr(attrs) {\n var parts = [];\n for (var name_2 in attrs) {\n var val = attrs[name_2];\n if (val != null) {\n parts.push(name_2 + '=\"' + htmlEscape(val) + '\"');\n }\n }\n return parts.join(' ');\n }\n function parseClassName(raw) {\n if (Array.isArray(raw)) {\n return raw;\n }\n else if (typeof raw === 'string') {\n return raw.split(/\\s+/);\n }\n else {\n return [];\n }\n }\n\n var UNSCOPED_EVENT_UI_PROPS = {\n editable: Boolean,\n startEditable: Boolean,\n durationEditable: Boolean,\n constraint: null,\n overlap: null,\n allow: null,\n className: parseClassName,\n classNames: parseClassName,\n color: String,\n backgroundColor: String,\n borderColor: String,\n textColor: String\n };\n function processUnscopedUiProps(rawProps, calendar, leftovers) {\n var props = refineProps(rawProps, UNSCOPED_EVENT_UI_PROPS, {}, leftovers);\n var constraint = normalizeConstraint(props.constraint, calendar);\n return {\n startEditable: props.startEditable != null ? props.startEditable : props.editable,\n durationEditable: props.durationEditable != null ? props.durationEditable : props.editable,\n constraints: constraint != null ? [constraint] : [],\n overlap: props.overlap,\n allows: props.allow != null ? [props.allow] : [],\n backgroundColor: props.backgroundColor || props.color,\n borderColor: props.borderColor || props.color,\n textColor: props.textColor,\n classNames: props.classNames.concat(props.className)\n };\n }\n function processScopedUiProps(prefix, rawScoped, calendar, leftovers) {\n var rawUnscoped = {};\n var wasFound = {};\n for (var key in UNSCOPED_EVENT_UI_PROPS) {\n var scopedKey = prefix + capitaliseFirstLetter(key);\n rawUnscoped[key] = rawScoped[scopedKey];\n wasFound[scopedKey] = true;\n }\n if (prefix === 'event') {\n rawUnscoped.editable = rawScoped.editable; // special case. there is no 'eventEditable', just 'editable'\n }\n if (leftovers) {\n for (var key in rawScoped) {\n if (!wasFound[key]) {\n leftovers[key] = rawScoped[key];\n }\n }\n }\n return processUnscopedUiProps(rawUnscoped, calendar);\n }\n var EMPTY_EVENT_UI = {\n startEditable: null,\n durationEditable: null,\n constraints: [],\n overlap: null,\n allows: [],\n backgroundColor: '',\n borderColor: '',\n textColor: '',\n classNames: []\n };\n // prevent against problems with <2 args!\n function combineEventUis(uis) {\n return uis.reduce(combineTwoEventUis, EMPTY_EVENT_UI);\n }\n function combineTwoEventUis(item0, item1) {\n return {\n startEditable: item1.startEditable != null ? item1.startEditable : item0.startEditable,\n durationEditable: item1.durationEditable != null ? item1.durationEditable : item0.durationEditable,\n constraints: item0.constraints.concat(item1.constraints),\n overlap: typeof item1.overlap === 'boolean' ? item1.overlap : item0.overlap,\n allows: item0.allows.concat(item1.allows),\n backgroundColor: item1.backgroundColor || item0.backgroundColor,\n borderColor: item1.borderColor || item0.borderColor,\n textColor: item1.textColor || item0.textColor,\n classNames: item0.classNames.concat(item1.classNames)\n };\n }\n\n var NON_DATE_PROPS = {\n id: String,\n groupId: String,\n title: String,\n url: String,\n rendering: String,\n extendedProps: null\n };\n var DATE_PROPS = {\n start: null,\n date: null,\n end: null,\n allDay: null\n };\n var uid = 0;\n function parseEvent(raw, sourceId, calendar, allowOpenRange) {\n var allDayDefault = computeIsAllDayDefault(sourceId, calendar);\n var leftovers0 = {};\n var recurringRes = parseRecurring(raw, // raw, but with single-event stuff stripped out\n allDayDefault, calendar.dateEnv, calendar.pluginSystem.hooks.recurringTypes, leftovers0 // will populate with non-recurring props\n );\n if (recurringRes) {\n var def = parseEventDef(leftovers0, sourceId, recurringRes.allDay, Boolean(recurringRes.duration), calendar);\n def.recurringDef = {\n typeId: recurringRes.typeId,\n typeData: recurringRes.typeData,\n duration: recurringRes.duration\n };\n return { def: def, instance: null };\n }\n else {\n var leftovers1 = {};\n var singleRes = parseSingle(raw, allDayDefault, calendar, leftovers1, allowOpenRange);\n if (singleRes) {\n var def = parseEventDef(leftovers1, sourceId, singleRes.allDay, singleRes.hasEnd, calendar);\n var instance = createEventInstance(def.defId, singleRes.range, singleRes.forcedStartTzo, singleRes.forcedEndTzo);\n return { def: def, instance: instance };\n }\n }\n return null;\n }\n /*\n Will NOT populate extendedProps with the leftover properties.\n Will NOT populate date-related props.\n The EventNonDateInput has been normalized (id => publicId, etc).\n */\n function parseEventDef(raw, sourceId, allDay, hasEnd, calendar) {\n var leftovers = {};\n var def = pluckNonDateProps(raw, calendar, leftovers);\n def.defId = String(uid++);\n def.sourceId = sourceId;\n def.allDay = allDay;\n def.hasEnd = hasEnd;\n for (var _i = 0, _a = calendar.pluginSystem.hooks.eventDefParsers; _i < _a.length; _i++) {\n var eventDefParser = _a[_i];\n var newLeftovers = {};\n eventDefParser(def, leftovers, newLeftovers);\n leftovers = newLeftovers;\n }\n def.extendedProps = __assign(leftovers, def.extendedProps || {});\n // help out EventApi from having user modify props\n Object.freeze(def.ui.classNames);\n Object.freeze(def.extendedProps);\n return def;\n }\n function createEventInstance(defId, range, forcedStartTzo, forcedEndTzo) {\n return {\n instanceId: String(uid++),\n defId: defId,\n range: range,\n forcedStartTzo: forcedStartTzo == null ? null : forcedStartTzo,\n forcedEndTzo: forcedEndTzo == null ? null : forcedEndTzo\n };\n }\n function parseSingle(raw, allDayDefault, calendar, leftovers, allowOpenRange) {\n var props = pluckDateProps(raw, leftovers);\n var allDay = props.allDay;\n var startMeta;\n var startMarker = null;\n var hasEnd = false;\n var endMeta;\n var endMarker = null;\n startMeta = calendar.dateEnv.createMarkerMeta(props.start);\n if (startMeta) {\n startMarker = startMeta.marker;\n }\n else if (!allowOpenRange) {\n return null;\n }\n if (props.end != null) {\n endMeta = calendar.dateEnv.createMarkerMeta(props.end);\n }\n if (allDay == null) {\n if (allDayDefault != null) {\n allDay = allDayDefault;\n }\n else {\n // fall back to the date props LAST\n allDay = (!startMeta || startMeta.isTimeUnspecified) &&\n (!endMeta || endMeta.isTimeUnspecified);\n }\n }\n if (allDay && startMarker) {\n startMarker = startOfDay(startMarker);\n }\n if (endMeta) {\n endMarker = endMeta.marker;\n if (allDay) {\n endMarker = startOfDay(endMarker);\n }\n if (startMarker && endMarker <= startMarker) {\n endMarker = null;\n }\n }\n if (endMarker) {\n hasEnd = true;\n }\n else if (!allowOpenRange) {\n hasEnd = calendar.opt('forceEventDuration') || false;\n endMarker = calendar.dateEnv.add(startMarker, allDay ?\n calendar.defaultAllDayEventDuration :\n calendar.defaultTimedEventDuration);\n }\n return {\n allDay: allDay,\n hasEnd: hasEnd,\n range: { start: startMarker, end: endMarker },\n forcedStartTzo: startMeta ? startMeta.forcedTzo : null,\n forcedEndTzo: endMeta ? endMeta.forcedTzo : null\n };\n }\n function pluckDateProps(raw, leftovers) {\n var props = refineProps(raw, DATE_PROPS, {}, leftovers);\n props.start = (props.start !== null) ? props.start : props.date;\n delete props.date;\n return props;\n }\n function pluckNonDateProps(raw, calendar, leftovers) {\n var preLeftovers = {};\n var props = refineProps(raw, NON_DATE_PROPS, {}, preLeftovers);\n var ui = processUnscopedUiProps(preLeftovers, calendar, leftovers);\n props.publicId = props.id;\n delete props.id;\n props.ui = ui;\n return props;\n }\n function computeIsAllDayDefault(sourceId, calendar) {\n var res = null;\n if (sourceId) {\n var source = calendar.state.eventSources[sourceId];\n res = source.allDayDefault;\n }\n if (res == null) {\n res = calendar.opt('allDayDefault');\n }\n return res;\n }\n\n var DEF_DEFAULTS = {\n startTime: '09:00',\n endTime: '17:00',\n daysOfWeek: [1, 2, 3, 4, 5],\n rendering: 'inverse-background',\n classNames: 'fc-nonbusiness',\n groupId: '_businessHours' // so multiple defs get grouped\n };\n /*\n TODO: pass around as EventDefHash!!!\n */\n function parseBusinessHours(input, calendar) {\n return parseEvents(refineInputs(input), '', calendar);\n }\n function refineInputs(input) {\n var rawDefs;\n if (input === true) {\n rawDefs = [{}]; // will get DEF_DEFAULTS verbatim\n }\n else if (Array.isArray(input)) {\n // if specifying an array, every sub-definition NEEDS a day-of-week\n rawDefs = input.filter(function (rawDef) {\n return rawDef.daysOfWeek;\n });\n }\n else if (typeof input === 'object' && input) { // non-null object\n rawDefs = [input];\n }\n else { // is probably false\n rawDefs = [];\n }\n rawDefs = rawDefs.map(function (rawDef) {\n return __assign({}, DEF_DEFAULTS, rawDef);\n });\n return rawDefs;\n }\n\n function memoizeRendering(renderFunc, unrenderFunc, dependencies) {\n if (dependencies === void 0) { dependencies = []; }\n var dependents = [];\n var thisContext;\n var prevArgs;\n function unrender() {\n if (prevArgs) {\n for (var _i = 0, dependents_1 = dependents; _i < dependents_1.length; _i++) {\n var dependent = dependents_1[_i];\n dependent.unrender();\n }\n if (unrenderFunc) {\n unrenderFunc.apply(thisContext, prevArgs);\n }\n prevArgs = null;\n }\n }\n function res() {\n if (!prevArgs || !isArraysEqual(prevArgs, arguments)) {\n unrender();\n thisContext = this;\n prevArgs = arguments;\n renderFunc.apply(this, arguments);\n }\n }\n res.dependents = dependents;\n res.unrender = unrender;\n for (var _i = 0, dependencies_1 = dependencies; _i < dependencies_1.length; _i++) {\n var dependency = dependencies_1[_i];\n dependency.dependents.push(res);\n }\n return res;\n }\n\n var EMPTY_EVENT_STORE = createEmptyEventStore(); // for purecomponents. TODO: keep elsewhere\n var Splitter = /** @class */ (function () {\n function Splitter() {\n this.getKeysForEventDefs = memoize(this._getKeysForEventDefs);\n this.splitDateSelection = memoize(this._splitDateSpan);\n this.splitEventStore = memoize(this._splitEventStore);\n this.splitIndividualUi = memoize(this._splitIndividualUi);\n this.splitEventDrag = memoize(this._splitInteraction);\n this.splitEventResize = memoize(this._splitInteraction);\n this.eventUiBuilders = {}; // TODO: typescript protection\n }\n Splitter.prototype.splitProps = function (props) {\n var _this = this;\n var keyInfos = this.getKeyInfo(props);\n var defKeys = this.getKeysForEventDefs(props.eventStore);\n var dateSelections = this.splitDateSelection(props.dateSelection);\n var individualUi = this.splitIndividualUi(props.eventUiBases, defKeys); // the individual *bases*\n var eventStores = this.splitEventStore(props.eventStore, defKeys);\n var eventDrags = this.splitEventDrag(props.eventDrag);\n var eventResizes = this.splitEventResize(props.eventResize);\n var splitProps = {};\n this.eventUiBuilders = mapHash(keyInfos, function (info, key) {\n return _this.eventUiBuilders[key] || memoize(buildEventUiForKey);\n });\n for (var key in keyInfos) {\n var keyInfo = keyInfos[key];\n var eventStore = eventStores[key] || EMPTY_EVENT_STORE;\n var buildEventUi = this.eventUiBuilders[key];\n splitProps[key] = {\n businessHours: keyInfo.businessHours || props.businessHours,\n dateSelection: dateSelections[key] || null,\n eventStore: eventStore,\n eventUiBases: buildEventUi(props.eventUiBases[''], keyInfo.ui, individualUi[key]),\n eventSelection: eventStore.instances[props.eventSelection] ? props.eventSelection : '',\n eventDrag: eventDrags[key] || null,\n eventResize: eventResizes[key] || null\n };\n }\n return splitProps;\n };\n Splitter.prototype._splitDateSpan = function (dateSpan) {\n var dateSpans = {};\n if (dateSpan) {\n var keys = this.getKeysForDateSpan(dateSpan);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n dateSpans[key] = dateSpan;\n }\n }\n return dateSpans;\n };\n Splitter.prototype._getKeysForEventDefs = function (eventStore) {\n var _this = this;\n return mapHash(eventStore.defs, function (eventDef) {\n return _this.getKeysForEventDef(eventDef);\n });\n };\n Splitter.prototype._splitEventStore = function (eventStore, defKeys) {\n var defs = eventStore.defs, instances = eventStore.instances;\n var splitStores = {};\n for (var defId in defs) {\n for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) {\n var key = _a[_i];\n if (!splitStores[key]) {\n splitStores[key] = createEmptyEventStore();\n }\n splitStores[key].defs[defId] = defs[defId];\n }\n }\n for (var instanceId in instances) {\n var instance = instances[instanceId];\n for (var _b = 0, _c = defKeys[instance.defId]; _b < _c.length; _b++) {\n var key = _c[_b];\n if (splitStores[key]) { // must have already been created\n splitStores[key].instances[instanceId] = instance;\n }\n }\n }\n return splitStores;\n };\n Splitter.prototype._splitIndividualUi = function (eventUiBases, defKeys) {\n var splitHashes = {};\n for (var defId in eventUiBases) {\n if (defId) { // not the '' key\n for (var _i = 0, _a = defKeys[defId]; _i < _a.length; _i++) {\n var key = _a[_i];\n if (!splitHashes[key]) {\n splitHashes[key] = {};\n }\n splitHashes[key][defId] = eventUiBases[defId];\n }\n }\n }\n return splitHashes;\n };\n Splitter.prototype._splitInteraction = function (interaction) {\n var splitStates = {};\n if (interaction) {\n var affectedStores_1 = this._splitEventStore(interaction.affectedEvents, this._getKeysForEventDefs(interaction.affectedEvents) // can't use cached. might be events from other calendar\n );\n // can't rely on defKeys because event data is mutated\n var mutatedKeysByDefId = this._getKeysForEventDefs(interaction.mutatedEvents);\n var mutatedStores_1 = this._splitEventStore(interaction.mutatedEvents, mutatedKeysByDefId);\n var populate = function (key) {\n if (!splitStates[key]) {\n splitStates[key] = {\n affectedEvents: affectedStores_1[key] || EMPTY_EVENT_STORE,\n mutatedEvents: mutatedStores_1[key] || EMPTY_EVENT_STORE,\n isEvent: interaction.isEvent,\n origSeg: interaction.origSeg\n };\n }\n };\n for (var key in affectedStores_1) {\n populate(key);\n }\n for (var key in mutatedStores_1) {\n populate(key);\n }\n }\n return splitStates;\n };\n return Splitter;\n }());\n function buildEventUiForKey(allUi, eventUiForKey, individualUi) {\n var baseParts = [];\n if (allUi) {\n baseParts.push(allUi);\n }\n if (eventUiForKey) {\n baseParts.push(eventUiForKey);\n }\n var stuff = {\n '': combineEventUis(baseParts)\n };\n if (individualUi) {\n __assign(stuff, individualUi);\n }\n return stuff;\n }\n\n // Generates HTML for an anchor to another view into the calendar.\n // Will either generate an tag or a non-clickable tag, depending on enabled settings.\n // `gotoOptions` can either be a DateMarker, or an object with the form:\n // { date, type, forceOff }\n // `type` is a view-type like \"day\" or \"week\". default value is \"day\".\n // `attrs` and `innerHtml` are use to generate the rest of the HTML tag.\n function buildGotoAnchorHtml(allOptions, dateEnv, gotoOptions, attrs, innerHtml) {\n var date;\n var type;\n var forceOff;\n var finalOptions;\n if (gotoOptions instanceof Date) {\n date = gotoOptions; // a single date-like input\n }\n else {\n date = gotoOptions.date;\n type = gotoOptions.type;\n forceOff = gotoOptions.forceOff;\n }\n finalOptions = {\n date: dateEnv.formatIso(date, { omitTime: true }),\n type: type || 'day'\n };\n if (typeof attrs === 'string') {\n innerHtml = attrs;\n attrs = null;\n }\n attrs = attrs ? ' ' + attrsToStr(attrs) : ''; // will have a leading space\n innerHtml = innerHtml || '';\n if (!forceOff && allOptions.navLinks) {\n return '' +\n innerHtml +\n '';\n }\n else {\n return '' +\n innerHtml +\n '';\n }\n }\n function getAllDayHtml(allOptions) {\n return allOptions.allDayHtml || htmlEscape(allOptions.allDayText);\n }\n // Computes HTML classNames for a single-day element\n function getDayClasses(date, dateProfile, context, noThemeHighlight) {\n var calendar = context.calendar, options = context.options, theme = context.theme, dateEnv = context.dateEnv;\n var classes = [];\n var todayStart;\n var todayEnd;\n if (!rangeContainsMarker(dateProfile.activeRange, date)) {\n classes.push('fc-disabled-day');\n }\n else {\n classes.push('fc-' + DAY_IDS[date.getUTCDay()]);\n if (options.monthMode &&\n dateEnv.getMonth(date) !== dateEnv.getMonth(dateProfile.currentRange.start)) {\n classes.push('fc-other-month');\n }\n todayStart = startOfDay(calendar.getNow());\n todayEnd = addDays(todayStart, 1);\n if (date < todayStart) {\n classes.push('fc-past');\n }\n else if (date >= todayEnd) {\n classes.push('fc-future');\n }\n else {\n classes.push('fc-today');\n if (noThemeHighlight !== true) {\n classes.push(theme.getClass('today'));\n }\n }\n }\n return classes;\n }\n\n // given a function that resolves a result asynchronously.\n // the function can either call passed-in success and failure callbacks,\n // or it can return a promise.\n // if you need to pass additional params to func, bind them first.\n function unpromisify(func, success, failure) {\n // guard against success/failure callbacks being called more than once\n // and guard against a promise AND callback being used together.\n var isResolved = false;\n var wrappedSuccess = function () {\n if (!isResolved) {\n isResolved = true;\n success.apply(this, arguments);\n }\n };\n var wrappedFailure = function () {\n if (!isResolved) {\n isResolved = true;\n if (failure) {\n failure.apply(this, arguments);\n }\n }\n };\n var res = func(wrappedSuccess, wrappedFailure);\n if (res && typeof res.then === 'function') {\n res.then(wrappedSuccess, wrappedFailure);\n }\n }\n\n var Mixin = /** @class */ (function () {\n function Mixin() {\n }\n // mix into a CLASS\n Mixin.mixInto = function (destClass) {\n this.mixIntoObj(destClass.prototype);\n };\n // mix into ANY object\n Mixin.mixIntoObj = function (destObj) {\n var _this = this;\n Object.getOwnPropertyNames(this.prototype).forEach(function (name) {\n if (!destObj[name]) { // if destination doesn't already define it\n destObj[name] = _this.prototype[name];\n }\n });\n };\n /*\n will override existing methods\n TODO: remove! not used anymore\n */\n Mixin.mixOver = function (destClass) {\n var _this = this;\n Object.getOwnPropertyNames(this.prototype).forEach(function (name) {\n destClass.prototype[name] = _this.prototype[name];\n });\n };\n return Mixin;\n }());\n\n /*\n USAGE:\n import { default as EmitterMixin, EmitterInterface } from './EmitterMixin'\n in class:\n on: EmitterInterface['on']\n one: EmitterInterface['one']\n off: EmitterInterface['off']\n trigger: EmitterInterface['trigger']\n triggerWith: EmitterInterface['triggerWith']\n hasHandlers: EmitterInterface['hasHandlers']\n after class:\n EmitterMixin.mixInto(TheClass)\n */\n var EmitterMixin = /** @class */ (function (_super) {\n __extends(EmitterMixin, _super);\n function EmitterMixin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EmitterMixin.prototype.on = function (type, handler) {\n addToHash(this._handlers || (this._handlers = {}), type, handler);\n return this; // for chaining\n };\n // todo: add comments\n EmitterMixin.prototype.one = function (type, handler) {\n addToHash(this._oneHandlers || (this._oneHandlers = {}), type, handler);\n return this; // for chaining\n };\n EmitterMixin.prototype.off = function (type, handler) {\n if (this._handlers) {\n removeFromHash(this._handlers, type, handler);\n }\n if (this._oneHandlers) {\n removeFromHash(this._oneHandlers, type, handler);\n }\n return this; // for chaining\n };\n EmitterMixin.prototype.trigger = function (type) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n this.triggerWith(type, this, args);\n return this; // for chaining\n };\n EmitterMixin.prototype.triggerWith = function (type, context, args) {\n if (this._handlers) {\n applyAll(this._handlers[type], context, args);\n }\n if (this._oneHandlers) {\n applyAll(this._oneHandlers[type], context, args);\n delete this._oneHandlers[type]; // will never fire again\n }\n return this; // for chaining\n };\n EmitterMixin.prototype.hasHandlers = function (type) {\n return (this._handlers && this._handlers[type] && this._handlers[type].length) ||\n (this._oneHandlers && this._oneHandlers[type] && this._oneHandlers[type].length);\n };\n return EmitterMixin;\n }(Mixin));\n function addToHash(hash, type, handler) {\n (hash[type] || (hash[type] = []))\n .push(handler);\n }\n function removeFromHash(hash, type, handler) {\n if (handler) {\n if (hash[type]) {\n hash[type] = hash[type].filter(function (func) {\n return func !== handler;\n });\n }\n }\n else {\n delete hash[type]; // remove all handler funcs for this type\n }\n }\n\n /*\n Records offset information for a set of elements, relative to an origin element.\n Can record the left/right OR the top/bottom OR both.\n Provides methods for querying the cache by position.\n */\n var PositionCache = /** @class */ (function () {\n function PositionCache(originEl, els, isHorizontal, isVertical) {\n this.originEl = originEl;\n this.els = els;\n this.isHorizontal = isHorizontal;\n this.isVertical = isVertical;\n }\n // Queries the els for coordinates and stores them.\n // Call this method before using and of the get* methods below.\n PositionCache.prototype.build = function () {\n var originEl = this.originEl;\n var originClientRect = this.originClientRect =\n originEl.getBoundingClientRect(); // relative to viewport top-left\n if (this.isHorizontal) {\n this.buildElHorizontals(originClientRect.left);\n }\n if (this.isVertical) {\n this.buildElVerticals(originClientRect.top);\n }\n };\n // Populates the left/right internal coordinate arrays\n PositionCache.prototype.buildElHorizontals = function (originClientLeft) {\n var lefts = [];\n var rights = [];\n for (var _i = 0, _a = this.els; _i < _a.length; _i++) {\n var el = _a[_i];\n var rect = el.getBoundingClientRect();\n lefts.push(rect.left - originClientLeft);\n rights.push(rect.right - originClientLeft);\n }\n this.lefts = lefts;\n this.rights = rights;\n };\n // Populates the top/bottom internal coordinate arrays\n PositionCache.prototype.buildElVerticals = function (originClientTop) {\n var tops = [];\n var bottoms = [];\n for (var _i = 0, _a = this.els; _i < _a.length; _i++) {\n var el = _a[_i];\n var rect = el.getBoundingClientRect();\n tops.push(rect.top - originClientTop);\n bottoms.push(rect.bottom - originClientTop);\n }\n this.tops = tops;\n this.bottoms = bottoms;\n };\n // Given a left offset (from document left), returns the index of the el that it horizontally intersects.\n // If no intersection is made, returns undefined.\n PositionCache.prototype.leftToIndex = function (leftPosition) {\n var lefts = this.lefts;\n var rights = this.rights;\n var len = lefts.length;\n var i;\n for (i = 0; i < len; i++) {\n if (leftPosition >= lefts[i] && leftPosition < rights[i]) {\n return i;\n }\n }\n };\n // Given a top offset (from document top), returns the index of the el that it vertically intersects.\n // If no intersection is made, returns undefined.\n PositionCache.prototype.topToIndex = function (topPosition) {\n var tops = this.tops;\n var bottoms = this.bottoms;\n var len = tops.length;\n var i;\n for (i = 0; i < len; i++) {\n if (topPosition >= tops[i] && topPosition < bottoms[i]) {\n return i;\n }\n }\n };\n // Gets the width of the element at the given index\n PositionCache.prototype.getWidth = function (leftIndex) {\n return this.rights[leftIndex] - this.lefts[leftIndex];\n };\n // Gets the height of the element at the given index\n PositionCache.prototype.getHeight = function (topIndex) {\n return this.bottoms[topIndex] - this.tops[topIndex];\n };\n return PositionCache;\n }());\n\n /*\n An object for getting/setting scroll-related information for an element.\n Internally, this is done very differently for window versus DOM element,\n so this object serves as a common interface.\n */\n var ScrollController = /** @class */ (function () {\n function ScrollController() {\n }\n ScrollController.prototype.getMaxScrollTop = function () {\n return this.getScrollHeight() - this.getClientHeight();\n };\n ScrollController.prototype.getMaxScrollLeft = function () {\n return this.getScrollWidth() - this.getClientWidth();\n };\n ScrollController.prototype.canScrollVertically = function () {\n return this.getMaxScrollTop() > 0;\n };\n ScrollController.prototype.canScrollHorizontally = function () {\n return this.getMaxScrollLeft() > 0;\n };\n ScrollController.prototype.canScrollUp = function () {\n return this.getScrollTop() > 0;\n };\n ScrollController.prototype.canScrollDown = function () {\n return this.getScrollTop() < this.getMaxScrollTop();\n };\n ScrollController.prototype.canScrollLeft = function () {\n return this.getScrollLeft() > 0;\n };\n ScrollController.prototype.canScrollRight = function () {\n return this.getScrollLeft() < this.getMaxScrollLeft();\n };\n return ScrollController;\n }());\n var ElementScrollController = /** @class */ (function (_super) {\n __extends(ElementScrollController, _super);\n function ElementScrollController(el) {\n var _this = _super.call(this) || this;\n _this.el = el;\n return _this;\n }\n ElementScrollController.prototype.getScrollTop = function () {\n return this.el.scrollTop;\n };\n ElementScrollController.prototype.getScrollLeft = function () {\n return this.el.scrollLeft;\n };\n ElementScrollController.prototype.setScrollTop = function (top) {\n this.el.scrollTop = top;\n };\n ElementScrollController.prototype.setScrollLeft = function (left) {\n this.el.scrollLeft = left;\n };\n ElementScrollController.prototype.getScrollWidth = function () {\n return this.el.scrollWidth;\n };\n ElementScrollController.prototype.getScrollHeight = function () {\n return this.el.scrollHeight;\n };\n ElementScrollController.prototype.getClientHeight = function () {\n return this.el.clientHeight;\n };\n ElementScrollController.prototype.getClientWidth = function () {\n return this.el.clientWidth;\n };\n return ElementScrollController;\n }(ScrollController));\n var WindowScrollController = /** @class */ (function (_super) {\n __extends(WindowScrollController, _super);\n function WindowScrollController() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WindowScrollController.prototype.getScrollTop = function () {\n return window.pageYOffset;\n };\n WindowScrollController.prototype.getScrollLeft = function () {\n return window.pageXOffset;\n };\n WindowScrollController.prototype.setScrollTop = function (n) {\n window.scroll(window.pageXOffset, n);\n };\n WindowScrollController.prototype.setScrollLeft = function (n) {\n window.scroll(n, window.pageYOffset);\n };\n WindowScrollController.prototype.getScrollWidth = function () {\n return document.documentElement.scrollWidth;\n };\n WindowScrollController.prototype.getScrollHeight = function () {\n return document.documentElement.scrollHeight;\n };\n WindowScrollController.prototype.getClientHeight = function () {\n return document.documentElement.clientHeight;\n };\n WindowScrollController.prototype.getClientWidth = function () {\n return document.documentElement.clientWidth;\n };\n return WindowScrollController;\n }(ScrollController));\n\n /*\n Embodies a div that has potential scrollbars\n */\n var ScrollComponent = /** @class */ (function (_super) {\n __extends(ScrollComponent, _super);\n function ScrollComponent(overflowX, overflowY) {\n var _this = _super.call(this, createElement('div', {\n className: 'fc-scroller'\n })) || this;\n _this.overflowX = overflowX;\n _this.overflowY = overflowY;\n _this.applyOverflow();\n return _this;\n }\n // sets to natural height, unlocks overflow\n ScrollComponent.prototype.clear = function () {\n this.setHeight('auto');\n this.applyOverflow();\n };\n ScrollComponent.prototype.destroy = function () {\n removeElement(this.el);\n };\n // Overflow\n // -----------------------------------------------------------------------------------------------------------------\n ScrollComponent.prototype.applyOverflow = function () {\n applyStyle(this.el, {\n overflowX: this.overflowX,\n overflowY: this.overflowY\n });\n };\n // Causes any 'auto' overflow values to resolves to 'scroll' or 'hidden'.\n // Useful for preserving scrollbar widths regardless of future resizes.\n // Can pass in scrollbarWidths for optimization.\n ScrollComponent.prototype.lockOverflow = function (scrollbarWidths) {\n var overflowX = this.overflowX;\n var overflowY = this.overflowY;\n scrollbarWidths = scrollbarWidths || this.getScrollbarWidths();\n if (overflowX === 'auto') {\n overflowX = (scrollbarWidths.bottom || // horizontal scrollbars?\n this.canScrollHorizontally() // OR scrolling pane with massless scrollbars?\n ) ? 'scroll' : 'hidden';\n }\n if (overflowY === 'auto') {\n overflowY = (scrollbarWidths.left || scrollbarWidths.right || // horizontal scrollbars?\n this.canScrollVertically() // OR scrolling pane with massless scrollbars?\n ) ? 'scroll' : 'hidden';\n }\n applyStyle(this.el, { overflowX: overflowX, overflowY: overflowY });\n };\n ScrollComponent.prototype.setHeight = function (height) {\n applyStyleProp(this.el, 'height', height);\n };\n ScrollComponent.prototype.getScrollbarWidths = function () {\n var edges = computeEdges(this.el);\n return {\n left: edges.scrollbarLeft,\n right: edges.scrollbarRight,\n bottom: edges.scrollbarBottom\n };\n };\n return ScrollComponent;\n }(ElementScrollController));\n\n var Theme = /** @class */ (function () {\n function Theme(calendarOptions) {\n this.calendarOptions = calendarOptions;\n this.processIconOverride();\n }\n Theme.prototype.processIconOverride = function () {\n if (this.iconOverrideOption) {\n this.setIconOverride(this.calendarOptions[this.iconOverrideOption]);\n }\n };\n Theme.prototype.setIconOverride = function (iconOverrideHash) {\n var iconClassesCopy;\n var buttonName;\n if (typeof iconOverrideHash === 'object' && iconOverrideHash) { // non-null object\n iconClassesCopy = __assign({}, this.iconClasses);\n for (buttonName in iconOverrideHash) {\n iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]);\n }\n this.iconClasses = iconClassesCopy;\n }\n else if (iconOverrideHash === false) {\n this.iconClasses = {};\n }\n };\n Theme.prototype.applyIconOverridePrefix = function (className) {\n var prefix = this.iconOverridePrefix;\n if (prefix && className.indexOf(prefix) !== 0) { // if not already present\n className = prefix + className;\n }\n return className;\n };\n Theme.prototype.getClass = function (key) {\n return this.classes[key] || '';\n };\n Theme.prototype.getIconClass = function (buttonName) {\n var className = this.iconClasses[buttonName];\n if (className) {\n return this.baseIconClass + ' ' + className;\n }\n return '';\n };\n Theme.prototype.getCustomButtonIconClass = function (customButtonProps) {\n var className;\n if (this.iconOverrideCustomButtonOption) {\n className = customButtonProps[this.iconOverrideCustomButtonOption];\n if (className) {\n return this.baseIconClass + ' ' + this.applyIconOverridePrefix(className);\n }\n }\n return '';\n };\n return Theme;\n }());\n Theme.prototype.classes = {};\n Theme.prototype.iconClasses = {};\n Theme.prototype.baseIconClass = '';\n Theme.prototype.iconOverridePrefix = '';\n\n var guid = 0;\n var ComponentContext = /** @class */ (function () {\n function ComponentContext(calendar, theme, dateEnv, options, view) {\n this.calendar = calendar;\n this.theme = theme;\n this.dateEnv = dateEnv;\n this.options = options;\n this.view = view;\n this.isRtl = options.dir === 'rtl';\n this.eventOrderSpecs = parseFieldSpecs(options.eventOrder);\n this.nextDayThreshold = createDuration(options.nextDayThreshold);\n }\n ComponentContext.prototype.extend = function (options, view) {\n return new ComponentContext(this.calendar, this.theme, this.dateEnv, options || this.options, view || this.view);\n };\n return ComponentContext;\n }());\n var Component = /** @class */ (function () {\n function Component() {\n this.uid = String(guid++);\n }\n Component.addEqualityFuncs = function (newFuncs) {\n this.prototype.equalityFuncs = __assign({}, this.prototype.equalityFuncs, newFuncs);\n };\n Component.prototype.receiveProps = function (props, context) {\n var oldContext = this.context;\n this.context = context;\n if (!oldContext) {\n this.firstContext(context);\n }\n var _a = recycleProps(this.props || {}, props, this.equalityFuncs), anyChanges = _a.anyChanges, comboProps = _a.comboProps;\n this.props = comboProps;\n if (anyChanges) {\n if (oldContext) {\n this.beforeUpdate();\n }\n this.render(comboProps, context);\n if (oldContext) {\n this.afterUpdate();\n }\n }\n };\n Component.prototype.render = function (props, context) {\n };\n Component.prototype.firstContext = function (context) {\n };\n Component.prototype.beforeUpdate = function () {\n };\n Component.prototype.afterUpdate = function () {\n };\n // after destroy is called, this component won't ever be used again\n Component.prototype.destroy = function () {\n };\n return Component;\n }());\n Component.prototype.equalityFuncs = {};\n /*\n Reuses old values when equal. If anything is unequal, returns newProps as-is.\n Great for PureComponent, but won't be feasible with React, so just eliminate and use React's DOM diffing.\n */\n function recycleProps(oldProps, newProps, equalityFuncs) {\n var comboProps = {}; // some old, some new\n var anyChanges = false;\n for (var key in newProps) {\n if (key in oldProps && (oldProps[key] === newProps[key] ||\n (equalityFuncs[key] && equalityFuncs[key](oldProps[key], newProps[key])))) {\n // equal to old? use old prop\n comboProps[key] = oldProps[key];\n }\n else {\n comboProps[key] = newProps[key];\n anyChanges = true;\n }\n }\n for (var key in oldProps) {\n if (!(key in newProps)) {\n anyChanges = true;\n break;\n }\n }\n return { anyChanges: anyChanges, comboProps: comboProps };\n }\n\n /*\n PURPOSES:\n - hook up to fg, fill, and mirror renderers\n - interface for dragging and hits\n */\n var DateComponent = /** @class */ (function (_super) {\n __extends(DateComponent, _super);\n function DateComponent(el) {\n var _this = _super.call(this) || this;\n _this.el = el;\n return _this;\n }\n DateComponent.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n removeElement(this.el);\n };\n // Hit System\n // -----------------------------------------------------------------------------------------------------------------\n DateComponent.prototype.buildPositionCaches = function () {\n };\n DateComponent.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) {\n return null; // this should be abstract\n };\n // Validation\n // -----------------------------------------------------------------------------------------------------------------\n DateComponent.prototype.isInteractionValid = function (interaction) {\n var calendar = this.context.calendar;\n var dateProfile = this.props.dateProfile; // HACK\n var instances = interaction.mutatedEvents.instances;\n if (dateProfile) { // HACK for DayTile\n for (var instanceId in instances) {\n if (!rangeContainsRange(dateProfile.validRange, instances[instanceId].range)) {\n return false;\n }\n }\n }\n return isInteractionValid(interaction, calendar);\n };\n DateComponent.prototype.isDateSelectionValid = function (selection) {\n var calendar = this.context.calendar;\n var dateProfile = this.props.dateProfile; // HACK\n if (dateProfile && // HACK for DayTile\n !rangeContainsRange(dateProfile.validRange, selection.range)) {\n return false;\n }\n return isDateSelectionValid(selection, calendar);\n };\n // Pointer Interaction Utils\n // -----------------------------------------------------------------------------------------------------------------\n DateComponent.prototype.isValidSegDownEl = function (el) {\n return !this.props.eventDrag && // HACK\n !this.props.eventResize && // HACK\n !elementClosest(el, '.fc-mirror') &&\n (this.isPopover() || !this.isInPopover(el));\n // ^above line ensures we don't detect a seg interaction within a nested component.\n // it's a HACK because it only supports a popover as the nested component.\n };\n DateComponent.prototype.isValidDateDownEl = function (el) {\n var segEl = elementClosest(el, this.fgSegSelector);\n return (!segEl || segEl.classList.contains('fc-mirror')) &&\n !elementClosest(el, '.fc-more') && // a \"more..\" link\n !elementClosest(el, 'a[data-goto]') && // a clickable nav link\n !this.isInPopover(el);\n };\n DateComponent.prototype.isPopover = function () {\n return this.el.classList.contains('fc-popover');\n };\n DateComponent.prototype.isInPopover = function (el) {\n return Boolean(elementClosest(el, '.fc-popover'));\n };\n return DateComponent;\n }(Component));\n DateComponent.prototype.fgSegSelector = '.fc-event-container > *';\n DateComponent.prototype.bgSegSelector = '.fc-bgevent:not(.fc-nonbusiness)';\n\n var uid$1 = 0;\n function createPlugin(input) {\n return {\n id: String(uid$1++),\n deps: input.deps || [],\n reducers: input.reducers || [],\n eventDefParsers: input.eventDefParsers || [],\n isDraggableTransformers: input.isDraggableTransformers || [],\n eventDragMutationMassagers: input.eventDragMutationMassagers || [],\n eventDefMutationAppliers: input.eventDefMutationAppliers || [],\n dateSelectionTransformers: input.dateSelectionTransformers || [],\n datePointTransforms: input.datePointTransforms || [],\n dateSpanTransforms: input.dateSpanTransforms || [],\n views: input.views || {},\n viewPropsTransformers: input.viewPropsTransformers || [],\n isPropsValid: input.isPropsValid || null,\n externalDefTransforms: input.externalDefTransforms || [],\n eventResizeJoinTransforms: input.eventResizeJoinTransforms || [],\n viewContainerModifiers: input.viewContainerModifiers || [],\n eventDropTransformers: input.eventDropTransformers || [],\n componentInteractions: input.componentInteractions || [],\n calendarInteractions: input.calendarInteractions || [],\n themeClasses: input.themeClasses || {},\n eventSourceDefs: input.eventSourceDefs || [],\n cmdFormatter: input.cmdFormatter,\n recurringTypes: input.recurringTypes || [],\n namedTimeZonedImpl: input.namedTimeZonedImpl,\n defaultView: input.defaultView || '',\n elementDraggingImpl: input.elementDraggingImpl,\n optionChangeHandlers: input.optionChangeHandlers || {}\n };\n }\n var PluginSystem = /** @class */ (function () {\n function PluginSystem() {\n this.hooks = {\n reducers: [],\n eventDefParsers: [],\n isDraggableTransformers: [],\n eventDragMutationMassagers: [],\n eventDefMutationAppliers: [],\n dateSelectionTransformers: [],\n datePointTransforms: [],\n dateSpanTransforms: [],\n views: {},\n viewPropsTransformers: [],\n isPropsValid: null,\n externalDefTransforms: [],\n eventResizeJoinTransforms: [],\n viewContainerModifiers: [],\n eventDropTransformers: [],\n componentInteractions: [],\n calendarInteractions: [],\n themeClasses: {},\n eventSourceDefs: [],\n cmdFormatter: null,\n recurringTypes: [],\n namedTimeZonedImpl: null,\n defaultView: '',\n elementDraggingImpl: null,\n optionChangeHandlers: {}\n };\n this.addedHash = {};\n }\n PluginSystem.prototype.add = function (plugin) {\n if (!this.addedHash[plugin.id]) {\n this.addedHash[plugin.id] = true;\n for (var _i = 0, _a = plugin.deps; _i < _a.length; _i++) {\n var dep = _a[_i];\n this.add(dep);\n }\n this.hooks = combineHooks(this.hooks, plugin);\n }\n };\n return PluginSystem;\n }());\n function combineHooks(hooks0, hooks1) {\n return {\n reducers: hooks0.reducers.concat(hooks1.reducers),\n eventDefParsers: hooks0.eventDefParsers.concat(hooks1.eventDefParsers),\n isDraggableTransformers: hooks0.isDraggableTransformers.concat(hooks1.isDraggableTransformers),\n eventDragMutationMassagers: hooks0.eventDragMutationMassagers.concat(hooks1.eventDragMutationMassagers),\n eventDefMutationAppliers: hooks0.eventDefMutationAppliers.concat(hooks1.eventDefMutationAppliers),\n dateSelectionTransformers: hooks0.dateSelectionTransformers.concat(hooks1.dateSelectionTransformers),\n datePointTransforms: hooks0.datePointTransforms.concat(hooks1.datePointTransforms),\n dateSpanTransforms: hooks0.dateSpanTransforms.concat(hooks1.dateSpanTransforms),\n views: __assign({}, hooks0.views, hooks1.views),\n viewPropsTransformers: hooks0.viewPropsTransformers.concat(hooks1.viewPropsTransformers),\n isPropsValid: hooks1.isPropsValid || hooks0.isPropsValid,\n externalDefTransforms: hooks0.externalDefTransforms.concat(hooks1.externalDefTransforms),\n eventResizeJoinTransforms: hooks0.eventResizeJoinTransforms.concat(hooks1.eventResizeJoinTransforms),\n viewContainerModifiers: hooks0.viewContainerModifiers.concat(hooks1.viewContainerModifiers),\n eventDropTransformers: hooks0.eventDropTransformers.concat(hooks1.eventDropTransformers),\n calendarInteractions: hooks0.calendarInteractions.concat(hooks1.calendarInteractions),\n componentInteractions: hooks0.componentInteractions.concat(hooks1.componentInteractions),\n themeClasses: __assign({}, hooks0.themeClasses, hooks1.themeClasses),\n eventSourceDefs: hooks0.eventSourceDefs.concat(hooks1.eventSourceDefs),\n cmdFormatter: hooks1.cmdFormatter || hooks0.cmdFormatter,\n recurringTypes: hooks0.recurringTypes.concat(hooks1.recurringTypes),\n namedTimeZonedImpl: hooks1.namedTimeZonedImpl || hooks0.namedTimeZonedImpl,\n defaultView: hooks0.defaultView || hooks1.defaultView,\n elementDraggingImpl: hooks0.elementDraggingImpl || hooks1.elementDraggingImpl,\n optionChangeHandlers: __assign({}, hooks0.optionChangeHandlers, hooks1.optionChangeHandlers)\n };\n }\n\n var eventSourceDef = {\n ignoreRange: true,\n parseMeta: function (raw) {\n if (Array.isArray(raw)) { // short form\n return raw;\n }\n else if (Array.isArray(raw.events)) {\n return raw.events;\n }\n return null;\n },\n fetch: function (arg, success) {\n success({\n rawEvents: arg.eventSource.meta\n });\n }\n };\n var ArrayEventSourcePlugin = createPlugin({\n eventSourceDefs: [eventSourceDef]\n });\n\n var eventSourceDef$1 = {\n parseMeta: function (raw) {\n if (typeof raw === 'function') { // short form\n return raw;\n }\n else if (typeof raw.events === 'function') {\n return raw.events;\n }\n return null;\n },\n fetch: function (arg, success, failure) {\n var dateEnv = arg.calendar.dateEnv;\n var func = arg.eventSource.meta;\n unpromisify(func.bind(null, {\n start: dateEnv.toDate(arg.range.start),\n end: dateEnv.toDate(arg.range.end),\n startStr: dateEnv.formatIso(arg.range.start),\n endStr: dateEnv.formatIso(arg.range.end),\n timeZone: dateEnv.timeZone\n }), function (rawEvents) {\n success({ rawEvents: rawEvents }); // needs an object response\n }, failure // send errorObj directly to failure callback\n );\n }\n };\n var FuncEventSourcePlugin = createPlugin({\n eventSourceDefs: [eventSourceDef$1]\n });\n\n function requestJson(method, url, params, successCallback, failureCallback) {\n method = method.toUpperCase();\n var body = null;\n if (method === 'GET') {\n url = injectQueryStringParams(url, params);\n }\n else {\n body = encodeParams(params);\n }\n var xhr = new XMLHttpRequest();\n xhr.open(method, url, true);\n if (method !== 'GET') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n }\n xhr.onload = function () {\n if (xhr.status >= 200 && xhr.status < 400) {\n try {\n var res = JSON.parse(xhr.responseText);\n successCallback(res, xhr);\n }\n catch (err) {\n failureCallback('Failure parsing JSON', xhr);\n }\n }\n else {\n failureCallback('Request failed', xhr);\n }\n };\n xhr.onerror = function () {\n failureCallback('Request failed', xhr);\n };\n xhr.send(body);\n }\n function injectQueryStringParams(url, params) {\n return url +\n (url.indexOf('?') === -1 ? '?' : '&') +\n encodeParams(params);\n }\n function encodeParams(params) {\n var parts = [];\n for (var key in params) {\n parts.push(encodeURIComponent(key) + '=' + encodeURIComponent(params[key]));\n }\n return parts.join('&');\n }\n\n var eventSourceDef$2 = {\n parseMeta: function (raw) {\n if (typeof raw === 'string') { // short form\n raw = { url: raw };\n }\n else if (!raw || typeof raw !== 'object' || !raw.url) {\n return null;\n }\n return {\n url: raw.url,\n method: (raw.method || 'GET').toUpperCase(),\n extraParams: raw.extraParams,\n startParam: raw.startParam,\n endParam: raw.endParam,\n timeZoneParam: raw.timeZoneParam\n };\n },\n fetch: function (arg, success, failure) {\n var meta = arg.eventSource.meta;\n var requestParams = buildRequestParams(meta, arg.range, arg.calendar);\n requestJson(meta.method, meta.url, requestParams, function (rawEvents, xhr) {\n success({ rawEvents: rawEvents, xhr: xhr });\n }, function (errorMessage, xhr) {\n failure({ message: errorMessage, xhr: xhr });\n });\n }\n };\n var JsonFeedEventSourcePlugin = createPlugin({\n eventSourceDefs: [eventSourceDef$2]\n });\n function buildRequestParams(meta, range, calendar) {\n var dateEnv = calendar.dateEnv;\n var startParam;\n var endParam;\n var timeZoneParam;\n var customRequestParams;\n var params = {};\n startParam = meta.startParam;\n if (startParam == null) {\n startParam = calendar.opt('startParam');\n }\n endParam = meta.endParam;\n if (endParam == null) {\n endParam = calendar.opt('endParam');\n }\n timeZoneParam = meta.timeZoneParam;\n if (timeZoneParam == null) {\n timeZoneParam = calendar.opt('timeZoneParam');\n }\n // retrieve any outbound GET/POST data from the options\n if (typeof meta.extraParams === 'function') {\n // supplied as a function that returns a key/value object\n customRequestParams = meta.extraParams();\n }\n else {\n // probably supplied as a straight key/value object\n customRequestParams = meta.extraParams || {};\n }\n __assign(params, customRequestParams);\n params[startParam] = dateEnv.formatIso(range.start);\n params[endParam] = dateEnv.formatIso(range.end);\n if (dateEnv.timeZone !== 'local') {\n params[timeZoneParam] = dateEnv.timeZone;\n }\n return params;\n }\n\n var recurring = {\n parse: function (rawEvent, leftoverProps, dateEnv) {\n var createMarker = dateEnv.createMarker.bind(dateEnv);\n var processors = {\n daysOfWeek: null,\n startTime: createDuration,\n endTime: createDuration,\n startRecur: createMarker,\n endRecur: createMarker\n };\n var props = refineProps(rawEvent, processors, {}, leftoverProps);\n var anyValid = false;\n for (var propName in props) {\n if (props[propName] != null) {\n anyValid = true;\n break;\n }\n }\n if (anyValid) {\n var duration = null;\n if ('duration' in leftoverProps) {\n duration = createDuration(leftoverProps.duration);\n delete leftoverProps.duration;\n }\n if (!duration && props.startTime && props.endTime) {\n duration = subtractDurations(props.endTime, props.startTime);\n }\n return {\n allDayGuess: Boolean(!props.startTime && !props.endTime),\n duration: duration,\n typeData: props // doesn't need endTime anymore but oh well\n };\n }\n return null;\n },\n expand: function (typeData, framingRange, dateEnv) {\n var clippedFramingRange = intersectRanges(framingRange, { start: typeData.startRecur, end: typeData.endRecur });\n if (clippedFramingRange) {\n return expandRanges(typeData.daysOfWeek, typeData.startTime, clippedFramingRange, dateEnv);\n }\n else {\n return [];\n }\n }\n };\n var SimpleRecurrencePlugin = createPlugin({\n recurringTypes: [recurring]\n });\n function expandRanges(daysOfWeek, startTime, framingRange, dateEnv) {\n var dowHash = daysOfWeek ? arrayToHash(daysOfWeek) : null;\n var dayMarker = startOfDay(framingRange.start);\n var endMarker = framingRange.end;\n var instanceStarts = [];\n while (dayMarker < endMarker) {\n var instanceStart \n // if everyday, or this particular day-of-week\n = void 0;\n // if everyday, or this particular day-of-week\n if (!dowHash || dowHash[dayMarker.getUTCDay()]) {\n if (startTime) {\n instanceStart = dateEnv.add(dayMarker, startTime);\n }\n else {\n instanceStart = dayMarker;\n }\n instanceStarts.push(instanceStart);\n }\n dayMarker = addDays(dayMarker, 1);\n }\n return instanceStarts;\n }\n\n var DefaultOptionChangeHandlers = createPlugin({\n optionChangeHandlers: {\n events: function (events, calendar, deepEqual) {\n handleEventSources([events], calendar, deepEqual);\n },\n eventSources: handleEventSources,\n plugins: handlePlugins\n }\n });\n function handleEventSources(inputs, calendar, deepEqual) {\n var unfoundSources = hashValuesToArray(calendar.state.eventSources);\n var newInputs = [];\n for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {\n var input = inputs_1[_i];\n var inputFound = false;\n for (var i = 0; i < unfoundSources.length; i++) {\n if (deepEqual(unfoundSources[i]._raw, input)) {\n unfoundSources.splice(i, 1); // delete\n inputFound = true;\n break;\n }\n }\n if (!inputFound) {\n newInputs.push(input);\n }\n }\n for (var _a = 0, unfoundSources_1 = unfoundSources; _a < unfoundSources_1.length; _a++) {\n var unfoundSource = unfoundSources_1[_a];\n calendar.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: unfoundSource.sourceId\n });\n }\n for (var _b = 0, newInputs_1 = newInputs; _b < newInputs_1.length; _b++) {\n var newInput = newInputs_1[_b];\n calendar.addEventSource(newInput);\n }\n }\n // shortcoming: won't remove plugins\n function handlePlugins(inputs, calendar) {\n calendar.addPluginInputs(inputs); // will gracefully handle duplicates\n }\n\n var config = {}; // TODO: make these options\n var globalDefaults = {\n defaultRangeSeparator: ' - ',\n titleRangeSeparator: ' \\u2013 ',\n defaultTimedEventDuration: '01:00:00',\n defaultAllDayEventDuration: { day: 1 },\n forceEventDuration: false,\n nextDayThreshold: '00:00:00',\n // display\n columnHeader: true,\n defaultView: '',\n aspectRatio: 1.35,\n header: {\n left: 'title',\n center: '',\n right: 'today prev,next'\n },\n weekends: true,\n weekNumbers: false,\n weekNumberCalculation: 'local',\n editable: false,\n // nowIndicator: false,\n scrollTime: '06:00:00',\n minTime: '00:00:00',\n maxTime: '24:00:00',\n showNonCurrentDates: true,\n // event ajax\n lazyFetching: true,\n startParam: 'start',\n endParam: 'end',\n timeZoneParam: 'timeZone',\n timeZone: 'local',\n // allDayDefault: undefined,\n // locale\n locales: [],\n locale: '',\n // dir: will get this from the default locale\n // buttonIcons: null,\n // allows setting a min-height to the event segment to prevent short events overlapping each other\n timeGridEventMinHeight: 0,\n themeSystem: 'standard',\n // eventResizableFromStart: false,\n dragRevertDuration: 500,\n dragScroll: true,\n allDayMaintainDuration: false,\n // selectable: false,\n unselectAuto: true,\n // selectMinDistance: 0,\n dropAccept: '*',\n eventOrder: 'start,-duration,allDay,title',\n // ^ if start tie, longer events go before shorter. final tie-breaker is title text\n // rerenderDelay: null,\n eventLimit: false,\n eventLimitClick: 'popover',\n dayPopoverFormat: { month: 'long', day: 'numeric', year: 'numeric' },\n handleWindowResize: true,\n windowResizeDelay: 100,\n longPressDelay: 1000,\n eventDragMinDistance: 5 // only applies to mouse\n };\n var rtlDefaults = {\n header: {\n left: 'next,prev today',\n center: '',\n right: 'title'\n },\n buttonIcons: {\n // TODO: make RTL support the responibility of the theme\n prev: 'fc-icon-chevron-right',\n next: 'fc-icon-chevron-left',\n prevYear: 'fc-icon-chevrons-right',\n nextYear: 'fc-icon-chevrons-left'\n }\n };\n var complexOptions = [\n 'header',\n 'footer',\n 'buttonText',\n 'buttonIcons'\n ];\n // Merges an array of option objects into a single object\n function mergeOptions(optionObjs) {\n return mergeProps(optionObjs, complexOptions);\n }\n // TODO: move this stuff to a \"plugin\"-related file...\n var INTERNAL_PLUGINS = [\n ArrayEventSourcePlugin,\n FuncEventSourcePlugin,\n JsonFeedEventSourcePlugin,\n SimpleRecurrencePlugin,\n DefaultOptionChangeHandlers\n ];\n function refinePluginDefs(pluginInputs) {\n var plugins = [];\n for (var _i = 0, pluginInputs_1 = pluginInputs; _i < pluginInputs_1.length; _i++) {\n var pluginInput = pluginInputs_1[_i];\n if (typeof pluginInput === 'string') {\n var globalName = 'FullCalendar' + capitaliseFirstLetter(pluginInput);\n if (!window[globalName]) {\n console.warn('Plugin file not loaded for ' + pluginInput);\n }\n else {\n plugins.push(window[globalName].default); // is an ES6 module\n }\n }\n else {\n plugins.push(pluginInput);\n }\n }\n return INTERNAL_PLUGINS.concat(plugins);\n }\n\n var RAW_EN_LOCALE = {\n code: 'en',\n week: {\n dow: 0,\n doy: 4 // 4 days need to be within the year to be considered the first week\n },\n dir: 'ltr',\n buttonText: {\n prev: 'prev',\n next: 'next',\n prevYear: 'prev year',\n nextYear: 'next year',\n year: 'year',\n today: 'today',\n month: 'month',\n week: 'week',\n day: 'day',\n list: 'list'\n },\n weekLabel: 'W',\n allDayText: 'all-day',\n eventLimitText: 'more',\n noEventsMessage: 'No events to display'\n };\n function parseRawLocales(explicitRawLocales) {\n var defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en';\n var globalArray = window['FullCalendarLocalesAll'] || []; // from locales-all.js\n var globalObject = window['FullCalendarLocales'] || {}; // from locales/*.js. keys are meaningless\n var allRawLocales = globalArray.concat(// globalArray is low prio\n hashValuesToArray(globalObject), // medium prio\n explicitRawLocales // highest prio\n );\n var rawLocaleMap = {\n en: RAW_EN_LOCALE // necessary?\n };\n for (var _i = 0, allRawLocales_1 = allRawLocales; _i < allRawLocales_1.length; _i++) {\n var rawLocale = allRawLocales_1[_i];\n rawLocaleMap[rawLocale.code] = rawLocale;\n }\n return {\n map: rawLocaleMap,\n defaultCode: defaultCode\n };\n }\n function buildLocale(inputSingular, available) {\n if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) {\n return parseLocale(inputSingular.code, [inputSingular.code], inputSingular);\n }\n else {\n return queryLocale(inputSingular, available);\n }\n }\n function queryLocale(codeArg, available) {\n var codes = [].concat(codeArg || []); // will convert to array\n var raw = queryRawLocale(codes, available) || RAW_EN_LOCALE;\n return parseLocale(codeArg, codes, raw);\n }\n function queryRawLocale(codes, available) {\n for (var i = 0; i < codes.length; i++) {\n var parts = codes[i].toLocaleLowerCase().split('-');\n for (var j = parts.length; j > 0; j--) {\n var simpleId = parts.slice(0, j).join('-');\n if (available[simpleId]) {\n return available[simpleId];\n }\n }\n }\n return null;\n }\n function parseLocale(codeArg, codes, raw) {\n var merged = mergeProps([RAW_EN_LOCALE, raw], ['buttonText']);\n delete merged.code; // don't want this part of the options\n var week = merged.week;\n delete merged.week;\n return {\n codeArg: codeArg,\n codes: codes,\n week: week,\n simpleNumberFormat: new Intl.NumberFormat(codeArg),\n options: merged\n };\n }\n\n var OptionsManager = /** @class */ (function () {\n function OptionsManager(overrides) {\n this.overrides = __assign({}, overrides); // make a copy\n this.dynamicOverrides = {};\n this.compute();\n }\n OptionsManager.prototype.mutate = function (updates, removals, isDynamic) {\n if (!Object.keys(updates).length && !removals.length) {\n return;\n }\n var overrideHash = isDynamic ? this.dynamicOverrides : this.overrides;\n __assign(overrideHash, updates);\n for (var _i = 0, removals_1 = removals; _i < removals_1.length; _i++) {\n var propName = removals_1[_i];\n delete overrideHash[propName];\n }\n this.compute();\n };\n // Computes the flattened options hash for the calendar and assigns to `this.options`.\n // Assumes this.overrides and this.dynamicOverrides have already been initialized.\n OptionsManager.prototype.compute = function () {\n // TODO: not a very efficient system\n var locales = firstDefined(// explicit locale option given?\n this.dynamicOverrides.locales, this.overrides.locales, globalDefaults.locales);\n var locale = firstDefined(// explicit locales option given?\n this.dynamicOverrides.locale, this.overrides.locale, globalDefaults.locale);\n var available = parseRawLocales(locales);\n var localeDefaults = buildLocale(locale || available.defaultCode, available.map).options;\n var dir = firstDefined(// based on options computed so far, is direction RTL?\n this.dynamicOverrides.dir, this.overrides.dir, localeDefaults.dir);\n var dirDefaults = dir === 'rtl' ? rtlDefaults : {};\n this.dirDefaults = dirDefaults;\n this.localeDefaults = localeDefaults;\n this.computed = mergeOptions([\n globalDefaults,\n dirDefaults,\n localeDefaults,\n this.overrides,\n this.dynamicOverrides\n ]);\n };\n return OptionsManager;\n }());\n\n var calendarSystemClassMap = {};\n function registerCalendarSystem(name, theClass) {\n calendarSystemClassMap[name] = theClass;\n }\n function createCalendarSystem(name) {\n return new calendarSystemClassMap[name]();\n }\n var GregorianCalendarSystem = /** @class */ (function () {\n function GregorianCalendarSystem() {\n }\n GregorianCalendarSystem.prototype.getMarkerYear = function (d) {\n return d.getUTCFullYear();\n };\n GregorianCalendarSystem.prototype.getMarkerMonth = function (d) {\n return d.getUTCMonth();\n };\n GregorianCalendarSystem.prototype.getMarkerDay = function (d) {\n return d.getUTCDate();\n };\n GregorianCalendarSystem.prototype.arrayToMarker = function (arr) {\n return arrayToUtcDate(arr);\n };\n GregorianCalendarSystem.prototype.markerToArray = function (marker) {\n return dateToUtcArray(marker);\n };\n return GregorianCalendarSystem;\n }());\n registerCalendarSystem('gregory', GregorianCalendarSystem);\n\n var ISO_RE = /^\\s*(\\d{4})(-(\\d{2})(-(\\d{2})([T ](\\d{2}):(\\d{2})(:(\\d{2})(\\.(\\d+))?)?(Z|(([-+])(\\d{2})(:?(\\d{2}))?))?)?)?)?$/;\n function parse(str) {\n var m = ISO_RE.exec(str);\n if (m) {\n var marker = new Date(Date.UTC(Number(m[1]), m[3] ? Number(m[3]) - 1 : 0, Number(m[5] || 1), Number(m[7] || 0), Number(m[8] || 0), Number(m[10] || 0), m[12] ? Number('0.' + m[12]) * 1000 : 0));\n if (isValidDate(marker)) {\n var timeZoneOffset = null;\n if (m[13]) {\n timeZoneOffset = (m[15] === '-' ? -1 : 1) * (Number(m[16] || 0) * 60 +\n Number(m[18] || 0));\n }\n return {\n marker: marker,\n isTimeUnspecified: !m[6],\n timeZoneOffset: timeZoneOffset\n };\n }\n }\n return null;\n }\n\n var DateEnv = /** @class */ (function () {\n function DateEnv(settings) {\n var timeZone = this.timeZone = settings.timeZone;\n var isNamedTimeZone = timeZone !== 'local' && timeZone !== 'UTC';\n if (settings.namedTimeZoneImpl && isNamedTimeZone) {\n this.namedTimeZoneImpl = new settings.namedTimeZoneImpl(timeZone);\n }\n this.canComputeOffset = Boolean(!isNamedTimeZone || this.namedTimeZoneImpl);\n this.calendarSystem = createCalendarSystem(settings.calendarSystem);\n this.locale = settings.locale;\n this.weekDow = settings.locale.week.dow;\n this.weekDoy = settings.locale.week.doy;\n if (settings.weekNumberCalculation === 'ISO') {\n this.weekDow = 1;\n this.weekDoy = 4;\n }\n if (typeof settings.firstDay === 'number') {\n this.weekDow = settings.firstDay;\n }\n if (typeof settings.weekNumberCalculation === 'function') {\n this.weekNumberFunc = settings.weekNumberCalculation;\n }\n this.weekLabel = settings.weekLabel != null ? settings.weekLabel : settings.locale.options.weekLabel;\n this.cmdFormatter = settings.cmdFormatter;\n }\n // Creating / Parsing\n DateEnv.prototype.createMarker = function (input) {\n var meta = this.createMarkerMeta(input);\n if (meta === null) {\n return null;\n }\n return meta.marker;\n };\n DateEnv.prototype.createNowMarker = function () {\n if (this.canComputeOffset) {\n return this.timestampToMarker(new Date().valueOf());\n }\n else {\n // if we can't compute the current date val for a timezone,\n // better to give the current local date vals than UTC\n return arrayToUtcDate(dateToLocalArray(new Date()));\n }\n };\n DateEnv.prototype.createMarkerMeta = function (input) {\n if (typeof input === 'string') {\n return this.parse(input);\n }\n var marker = null;\n if (typeof input === 'number') {\n marker = this.timestampToMarker(input);\n }\n else if (input instanceof Date) {\n input = input.valueOf();\n if (!isNaN(input)) {\n marker = this.timestampToMarker(input);\n }\n }\n else if (Array.isArray(input)) {\n marker = arrayToUtcDate(input);\n }\n if (marker === null || !isValidDate(marker)) {\n return null;\n }\n return { marker: marker, isTimeUnspecified: false, forcedTzo: null };\n };\n DateEnv.prototype.parse = function (s) {\n var parts = parse(s);\n if (parts === null) {\n return null;\n }\n var marker = parts.marker;\n var forcedTzo = null;\n if (parts.timeZoneOffset !== null) {\n if (this.canComputeOffset) {\n marker = this.timestampToMarker(marker.valueOf() - parts.timeZoneOffset * 60 * 1000);\n }\n else {\n forcedTzo = parts.timeZoneOffset;\n }\n }\n return { marker: marker, isTimeUnspecified: parts.isTimeUnspecified, forcedTzo: forcedTzo };\n };\n // Accessors\n DateEnv.prototype.getYear = function (marker) {\n return this.calendarSystem.getMarkerYear(marker);\n };\n DateEnv.prototype.getMonth = function (marker) {\n return this.calendarSystem.getMarkerMonth(marker);\n };\n // Adding / Subtracting\n DateEnv.prototype.add = function (marker, dur) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] += dur.years;\n a[1] += dur.months;\n a[2] += dur.days;\n a[6] += dur.milliseconds;\n return this.calendarSystem.arrayToMarker(a);\n };\n DateEnv.prototype.subtract = function (marker, dur) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] -= dur.years;\n a[1] -= dur.months;\n a[2] -= dur.days;\n a[6] -= dur.milliseconds;\n return this.calendarSystem.arrayToMarker(a);\n };\n DateEnv.prototype.addYears = function (marker, n) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] += n;\n return this.calendarSystem.arrayToMarker(a);\n };\n DateEnv.prototype.addMonths = function (marker, n) {\n var a = this.calendarSystem.markerToArray(marker);\n a[1] += n;\n return this.calendarSystem.arrayToMarker(a);\n };\n // Diffing Whole Units\n DateEnv.prototype.diffWholeYears = function (m0, m1) {\n var calendarSystem = this.calendarSystem;\n if (timeAsMs(m0) === timeAsMs(m1) &&\n calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1) &&\n calendarSystem.getMarkerMonth(m0) === calendarSystem.getMarkerMonth(m1)) {\n return calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0);\n }\n return null;\n };\n DateEnv.prototype.diffWholeMonths = function (m0, m1) {\n var calendarSystem = this.calendarSystem;\n if (timeAsMs(m0) === timeAsMs(m1) &&\n calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1)) {\n return (calendarSystem.getMarkerMonth(m1) - calendarSystem.getMarkerMonth(m0)) +\n (calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)) * 12;\n }\n return null;\n };\n // Range / Duration\n DateEnv.prototype.greatestWholeUnit = function (m0, m1) {\n var n = this.diffWholeYears(m0, m1);\n if (n !== null) {\n return { unit: 'year', value: n };\n }\n n = this.diffWholeMonths(m0, m1);\n if (n !== null) {\n return { unit: 'month', value: n };\n }\n n = diffWholeWeeks(m0, m1);\n if (n !== null) {\n return { unit: 'week', value: n };\n }\n n = diffWholeDays(m0, m1);\n if (n !== null) {\n return { unit: 'day', value: n };\n }\n n = diffHours(m0, m1);\n if (isInt(n)) {\n return { unit: 'hour', value: n };\n }\n n = diffMinutes(m0, m1);\n if (isInt(n)) {\n return { unit: 'minute', value: n };\n }\n n = diffSeconds(m0, m1);\n if (isInt(n)) {\n return { unit: 'second', value: n };\n }\n return { unit: 'millisecond', value: m1.valueOf() - m0.valueOf() };\n };\n DateEnv.prototype.countDurationsBetween = function (m0, m1, d) {\n // TODO: can use greatestWholeUnit\n var diff;\n if (d.years) {\n diff = this.diffWholeYears(m0, m1);\n if (diff !== null) {\n return diff / asRoughYears(d);\n }\n }\n if (d.months) {\n diff = this.diffWholeMonths(m0, m1);\n if (diff !== null) {\n return diff / asRoughMonths(d);\n }\n }\n if (d.days) {\n diff = diffWholeDays(m0, m1);\n if (diff !== null) {\n return diff / asRoughDays(d);\n }\n }\n return (m1.valueOf() - m0.valueOf()) / asRoughMs(d);\n };\n // Start-Of\n DateEnv.prototype.startOf = function (m, unit) {\n if (unit === 'year') {\n return this.startOfYear(m);\n }\n else if (unit === 'month') {\n return this.startOfMonth(m);\n }\n else if (unit === 'week') {\n return this.startOfWeek(m);\n }\n else if (unit === 'day') {\n return startOfDay(m);\n }\n else if (unit === 'hour') {\n return startOfHour(m);\n }\n else if (unit === 'minute') {\n return startOfMinute(m);\n }\n else if (unit === 'second') {\n return startOfSecond(m);\n }\n };\n DateEnv.prototype.startOfYear = function (m) {\n return this.calendarSystem.arrayToMarker([\n this.calendarSystem.getMarkerYear(m)\n ]);\n };\n DateEnv.prototype.startOfMonth = function (m) {\n return this.calendarSystem.arrayToMarker([\n this.calendarSystem.getMarkerYear(m),\n this.calendarSystem.getMarkerMonth(m)\n ]);\n };\n DateEnv.prototype.startOfWeek = function (m) {\n return this.calendarSystem.arrayToMarker([\n this.calendarSystem.getMarkerYear(m),\n this.calendarSystem.getMarkerMonth(m),\n m.getUTCDate() - ((m.getUTCDay() - this.weekDow + 7) % 7)\n ]);\n };\n // Week Number\n DateEnv.prototype.computeWeekNumber = function (marker) {\n if (this.weekNumberFunc) {\n return this.weekNumberFunc(this.toDate(marker));\n }\n else {\n return weekOfYear(marker, this.weekDow, this.weekDoy);\n }\n };\n // TODO: choke on timeZoneName: long\n DateEnv.prototype.format = function (marker, formatter, dateOptions) {\n if (dateOptions === void 0) { dateOptions = {}; }\n return formatter.format({\n marker: marker,\n timeZoneOffset: dateOptions.forcedTzo != null ?\n dateOptions.forcedTzo :\n this.offsetForMarker(marker)\n }, this);\n };\n DateEnv.prototype.formatRange = function (start, end, formatter, dateOptions) {\n if (dateOptions === void 0) { dateOptions = {}; }\n if (dateOptions.isEndExclusive) {\n end = addMs(end, -1);\n }\n return formatter.formatRange({\n marker: start,\n timeZoneOffset: dateOptions.forcedStartTzo != null ?\n dateOptions.forcedStartTzo :\n this.offsetForMarker(start)\n }, {\n marker: end,\n timeZoneOffset: dateOptions.forcedEndTzo != null ?\n dateOptions.forcedEndTzo :\n this.offsetForMarker(end)\n }, this);\n };\n DateEnv.prototype.formatIso = function (marker, extraOptions) {\n if (extraOptions === void 0) { extraOptions = {}; }\n var timeZoneOffset = null;\n if (!extraOptions.omitTimeZoneOffset) {\n if (extraOptions.forcedTzo != null) {\n timeZoneOffset = extraOptions.forcedTzo;\n }\n else {\n timeZoneOffset = this.offsetForMarker(marker);\n }\n }\n return buildIsoString(marker, timeZoneOffset, extraOptions.omitTime);\n };\n // TimeZone\n DateEnv.prototype.timestampToMarker = function (ms) {\n if (this.timeZone === 'local') {\n return arrayToUtcDate(dateToLocalArray(new Date(ms)));\n }\n else if (this.timeZone === 'UTC' || !this.namedTimeZoneImpl) {\n return new Date(ms);\n }\n else {\n return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms));\n }\n };\n DateEnv.prototype.offsetForMarker = function (m) {\n if (this.timeZone === 'local') {\n return -arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset(); // convert \"inverse\" offset to \"normal\" offset\n }\n else if (this.timeZone === 'UTC') {\n return 0;\n }\n else if (this.namedTimeZoneImpl) {\n return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m));\n }\n return null;\n };\n // Conversion\n DateEnv.prototype.toDate = function (m, forcedTzo) {\n if (this.timeZone === 'local') {\n return arrayToLocalDate(dateToUtcArray(m));\n }\n else if (this.timeZone === 'UTC') {\n return new Date(m.valueOf()); // make sure it's a copy\n }\n else if (!this.namedTimeZoneImpl) {\n return new Date(m.valueOf() - (forcedTzo || 0));\n }\n else {\n return new Date(m.valueOf() -\n this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60 // convert minutes -> ms\n );\n }\n };\n return DateEnv;\n }());\n\n var SIMPLE_SOURCE_PROPS = {\n id: String,\n allDayDefault: Boolean,\n eventDataTransform: Function,\n success: Function,\n failure: Function\n };\n var uid$2 = 0;\n function doesSourceNeedRange(eventSource, calendar) {\n var defs = calendar.pluginSystem.hooks.eventSourceDefs;\n return !defs[eventSource.sourceDefId].ignoreRange;\n }\n function parseEventSource(raw, calendar) {\n var defs = calendar.pluginSystem.hooks.eventSourceDefs;\n for (var i = defs.length - 1; i >= 0; i--) { // later-added plugins take precedence\n var def = defs[i];\n var meta = def.parseMeta(raw);\n if (meta) {\n var res = parseEventSourceProps(typeof raw === 'object' ? raw : {}, meta, i, calendar);\n res._raw = raw;\n return res;\n }\n }\n return null;\n }\n function parseEventSourceProps(raw, meta, sourceDefId, calendar) {\n var leftovers0 = {};\n var props = refineProps(raw, SIMPLE_SOURCE_PROPS, {}, leftovers0);\n var leftovers1 = {};\n var ui = processUnscopedUiProps(leftovers0, calendar, leftovers1);\n props.isFetching = false;\n props.latestFetchId = '';\n props.fetchRange = null;\n props.publicId = String(raw.id || '');\n props.sourceId = String(uid$2++);\n props.sourceDefId = sourceDefId;\n props.meta = meta;\n props.ui = ui;\n props.extendedProps = leftovers1;\n return props;\n }\n\n function reduceEventSources (eventSources, action, dateProfile, calendar) {\n switch (action.type) {\n case 'ADD_EVENT_SOURCES': // already parsed\n return addSources(eventSources, action.sources, dateProfile ? dateProfile.activeRange : null, calendar);\n case 'REMOVE_EVENT_SOURCE':\n return removeSource(eventSources, action.sourceId);\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n case 'NEXT':\n case 'SET_DATE':\n case 'SET_VIEW_TYPE':\n if (dateProfile) {\n return fetchDirtySources(eventSources, dateProfile.activeRange, calendar);\n }\n else {\n return eventSources;\n }\n case 'FETCH_EVENT_SOURCES':\n case 'CHANGE_TIMEZONE':\n return fetchSourcesByIds(eventSources, action.sourceIds ?\n arrayToHash(action.sourceIds) :\n excludeStaticSources(eventSources, calendar), dateProfile ? dateProfile.activeRange : null, calendar);\n case 'RECEIVE_EVENTS':\n case 'RECEIVE_EVENT_ERROR':\n return receiveResponse(eventSources, action.sourceId, action.fetchId, action.fetchRange);\n case 'REMOVE_ALL_EVENT_SOURCES':\n return {};\n default:\n return eventSources;\n }\n }\n var uid$3 = 0;\n function addSources(eventSourceHash, sources, fetchRange, calendar) {\n var hash = {};\n for (var _i = 0, sources_1 = sources; _i < sources_1.length; _i++) {\n var source = sources_1[_i];\n hash[source.sourceId] = source;\n }\n if (fetchRange) {\n hash = fetchDirtySources(hash, fetchRange, calendar);\n }\n return __assign({}, eventSourceHash, hash);\n }\n function removeSource(eventSourceHash, sourceId) {\n return filterHash(eventSourceHash, function (eventSource) {\n return eventSource.sourceId !== sourceId;\n });\n }\n function fetchDirtySources(sourceHash, fetchRange, calendar) {\n return fetchSourcesByIds(sourceHash, filterHash(sourceHash, function (eventSource) {\n return isSourceDirty(eventSource, fetchRange, calendar);\n }), fetchRange, calendar);\n }\n function isSourceDirty(eventSource, fetchRange, calendar) {\n if (!doesSourceNeedRange(eventSource, calendar)) {\n return !eventSource.latestFetchId;\n }\n else {\n return !calendar.opt('lazyFetching') ||\n !eventSource.fetchRange ||\n eventSource.isFetching || // always cancel outdated in-progress fetches\n fetchRange.start < eventSource.fetchRange.start ||\n fetchRange.end > eventSource.fetchRange.end;\n }\n }\n function fetchSourcesByIds(prevSources, sourceIdHash, fetchRange, calendar) {\n var nextSources = {};\n for (var sourceId in prevSources) {\n var source = prevSources[sourceId];\n if (sourceIdHash[sourceId]) {\n nextSources[sourceId] = fetchSource(source, fetchRange, calendar);\n }\n else {\n nextSources[sourceId] = source;\n }\n }\n return nextSources;\n }\n function fetchSource(eventSource, fetchRange, calendar) {\n var sourceDef = calendar.pluginSystem.hooks.eventSourceDefs[eventSource.sourceDefId];\n var fetchId = String(uid$3++);\n sourceDef.fetch({\n eventSource: eventSource,\n calendar: calendar,\n range: fetchRange\n }, function (res) {\n var rawEvents = res.rawEvents;\n var calSuccess = calendar.opt('eventSourceSuccess');\n var calSuccessRes;\n var sourceSuccessRes;\n if (eventSource.success) {\n sourceSuccessRes = eventSource.success(rawEvents, res.xhr);\n }\n if (calSuccess) {\n calSuccessRes = calSuccess(rawEvents, res.xhr);\n }\n rawEvents = sourceSuccessRes || calSuccessRes || rawEvents;\n calendar.dispatch({\n type: 'RECEIVE_EVENTS',\n sourceId: eventSource.sourceId,\n fetchId: fetchId,\n fetchRange: fetchRange,\n rawEvents: rawEvents\n });\n }, function (error) {\n var callFailure = calendar.opt('eventSourceFailure');\n console.warn(error.message, error);\n if (eventSource.failure) {\n eventSource.failure(error);\n }\n if (callFailure) {\n callFailure(error);\n }\n calendar.dispatch({\n type: 'RECEIVE_EVENT_ERROR',\n sourceId: eventSource.sourceId,\n fetchId: fetchId,\n fetchRange: fetchRange,\n error: error\n });\n });\n return __assign({}, eventSource, { isFetching: true, latestFetchId: fetchId });\n }\n function receiveResponse(sourceHash, sourceId, fetchId, fetchRange) {\n var _a;\n var eventSource = sourceHash[sourceId];\n if (eventSource && // not already removed\n fetchId === eventSource.latestFetchId) {\n return __assign({}, sourceHash, (_a = {}, _a[sourceId] = __assign({}, eventSource, { isFetching: false, fetchRange: fetchRange // also serves as a marker that at least one fetch has completed\n }), _a));\n }\n return sourceHash;\n }\n function excludeStaticSources(eventSources, calendar) {\n return filterHash(eventSources, function (eventSource) {\n return doesSourceNeedRange(eventSource, calendar);\n });\n }\n\n var DateProfileGenerator = /** @class */ (function () {\n function DateProfileGenerator(viewSpec, calendar) {\n this.viewSpec = viewSpec;\n this.options = viewSpec.options;\n this.dateEnv = calendar.dateEnv;\n this.calendar = calendar;\n this.initHiddenDays();\n }\n /* Date Range Computation\n ------------------------------------------------------------------------------------------------------------------*/\n // Builds a structure with info about what the dates/ranges will be for the \"prev\" view.\n DateProfileGenerator.prototype.buildPrev = function (currentDateProfile, currentDate) {\n var dateEnv = this.dateEnv;\n var prevDate = dateEnv.subtract(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n currentDateProfile.dateIncrement);\n return this.build(prevDate, -1);\n };\n // Builds a structure with info about what the dates/ranges will be for the \"next\" view.\n DateProfileGenerator.prototype.buildNext = function (currentDateProfile, currentDate) {\n var dateEnv = this.dateEnv;\n var nextDate = dateEnv.add(dateEnv.startOf(currentDate, currentDateProfile.currentRangeUnit), // important for start-of-month\n currentDateProfile.dateIncrement);\n return this.build(nextDate, 1);\n };\n // Builds a structure holding dates/ranges for rendering around the given date.\n // Optional direction param indicates whether the date is being incremented/decremented\n // from its previous value. decremented = -1, incremented = 1 (default).\n DateProfileGenerator.prototype.build = function (currentDate, direction, forceToValid) {\n if (forceToValid === void 0) { forceToValid = false; }\n var validRange;\n var minTime = null;\n var maxTime = null;\n var currentInfo;\n var isRangeAllDay;\n var renderRange;\n var activeRange;\n var isValid;\n validRange = this.buildValidRange();\n validRange = this.trimHiddenDays(validRange);\n if (forceToValid) {\n currentDate = constrainMarkerToRange(currentDate, validRange);\n }\n currentInfo = this.buildCurrentRangeInfo(currentDate, direction);\n isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit);\n renderRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.range), currentInfo.unit, isRangeAllDay);\n renderRange = this.trimHiddenDays(renderRange);\n activeRange = renderRange;\n if (!this.options.showNonCurrentDates) {\n activeRange = intersectRanges(activeRange, currentInfo.range);\n }\n minTime = createDuration(this.options.minTime);\n maxTime = createDuration(this.options.maxTime);\n activeRange = this.adjustActiveRange(activeRange, minTime, maxTime);\n activeRange = intersectRanges(activeRange, validRange); // might return null\n // it's invalid if the originally requested date is not contained,\n // or if the range is completely outside of the valid range.\n isValid = rangesIntersect(currentInfo.range, validRange);\n return {\n // constraint for where prev/next operations can go and where events can be dragged/resized to.\n // an object with optional start and end properties.\n validRange: validRange,\n // range the view is formally responsible for.\n // for example, a month view might have 1st-31st, excluding padded dates\n currentRange: currentInfo.range,\n // name of largest unit being displayed, like \"month\" or \"week\"\n currentRangeUnit: currentInfo.unit,\n isRangeAllDay: isRangeAllDay,\n // dates that display events and accept drag-n-drop\n // will be `null` if no dates accept events\n activeRange: activeRange,\n // date range with a rendered skeleton\n // includes not-active days that need some sort of DOM\n renderRange: renderRange,\n // Duration object that denotes the first visible time of any given day\n minTime: minTime,\n // Duration object that denotes the exclusive visible end time of any given day\n maxTime: maxTime,\n isValid: isValid,\n // how far the current date will move for a prev/next operation\n dateIncrement: this.buildDateIncrement(currentInfo.duration)\n // pass a fallback (might be null) ^\n };\n };\n // Builds an object with optional start/end properties.\n // Indicates the minimum/maximum dates to display.\n // not responsible for trimming hidden days.\n DateProfileGenerator.prototype.buildValidRange = function () {\n return this.getRangeOption('validRange', this.calendar.getNow()) ||\n { start: null, end: null }; // completely open-ended\n };\n // Builds a structure with info about the \"current\" range, the range that is\n // highlighted as being the current month for example.\n // See build() for a description of `direction`.\n // Guaranteed to have `range` and `unit` properties. `duration` is optional.\n DateProfileGenerator.prototype.buildCurrentRangeInfo = function (date, direction) {\n var _a = this, viewSpec = _a.viewSpec, dateEnv = _a.dateEnv;\n var duration = null;\n var unit = null;\n var range = null;\n var dayCount;\n if (viewSpec.duration) {\n duration = viewSpec.duration;\n unit = viewSpec.durationUnit;\n range = this.buildRangeFromDuration(date, direction, duration, unit);\n }\n else if ((dayCount = this.options.dayCount)) {\n unit = 'day';\n range = this.buildRangeFromDayCount(date, direction, dayCount);\n }\n else if ((range = this.buildCustomVisibleRange(date))) {\n unit = dateEnv.greatestWholeUnit(range.start, range.end).unit;\n }\n else {\n duration = this.getFallbackDuration();\n unit = greatestDurationDenominator(duration).unit;\n range = this.buildRangeFromDuration(date, direction, duration, unit);\n }\n return { duration: duration, unit: unit, range: range };\n };\n DateProfileGenerator.prototype.getFallbackDuration = function () {\n return createDuration({ day: 1 });\n };\n // Returns a new activeRange to have time values (un-ambiguate)\n // minTime or maxTime causes the range to expand.\n DateProfileGenerator.prototype.adjustActiveRange = function (range, minTime, maxTime) {\n var dateEnv = this.dateEnv;\n var start = range.start;\n var end = range.end;\n if (this.viewSpec.class.prototype.usesMinMaxTime) {\n // expand active range if minTime is negative (why not when positive?)\n if (asRoughDays(minTime) < 0) {\n start = startOfDay(start); // necessary?\n start = dateEnv.add(start, minTime);\n }\n // expand active range if maxTime is beyond one day (why not when positive?)\n if (asRoughDays(maxTime) > 1) {\n end = startOfDay(end); // necessary?\n end = addDays(end, -1);\n end = dateEnv.add(end, maxTime);\n }\n }\n return { start: start, end: end };\n };\n // Builds the \"current\" range when it is specified as an explicit duration.\n // `unit` is the already-computed greatestDurationDenominator unit of duration.\n DateProfileGenerator.prototype.buildRangeFromDuration = function (date, direction, duration, unit) {\n var dateEnv = this.dateEnv;\n var alignment = this.options.dateAlignment;\n var dateIncrementInput;\n var dateIncrementDuration;\n var start;\n var end;\n var res;\n // compute what the alignment should be\n if (!alignment) {\n dateIncrementInput = this.options.dateIncrement;\n if (dateIncrementInput) {\n dateIncrementDuration = createDuration(dateIncrementInput);\n // use the smaller of the two units\n if (asRoughMs(dateIncrementDuration) < asRoughMs(duration)) {\n alignment = greatestDurationDenominator(dateIncrementDuration, !getWeeksFromInput(dateIncrementInput)).unit;\n }\n else {\n alignment = unit;\n }\n }\n else {\n alignment = unit;\n }\n }\n // if the view displays a single day or smaller\n if (asRoughDays(duration) <= 1) {\n if (this.isHiddenDay(start)) {\n start = this.skipHiddenDays(start, direction);\n start = startOfDay(start);\n }\n }\n function computeRes() {\n start = dateEnv.startOf(date, alignment);\n end = dateEnv.add(start, duration);\n res = { start: start, end: end };\n }\n computeRes();\n // if range is completely enveloped by hidden days, go past the hidden days\n if (!this.trimHiddenDays(res)) {\n date = this.skipHiddenDays(date, direction);\n computeRes();\n }\n return res;\n };\n // Builds the \"current\" range when a dayCount is specified.\n DateProfileGenerator.prototype.buildRangeFromDayCount = function (date, direction, dayCount) {\n var dateEnv = this.dateEnv;\n var customAlignment = this.options.dateAlignment;\n var runningCount = 0;\n var start = date;\n var end;\n if (customAlignment) {\n start = dateEnv.startOf(start, customAlignment);\n }\n start = startOfDay(start);\n start = this.skipHiddenDays(start, direction);\n end = start;\n do {\n end = addDays(end, 1);\n if (!this.isHiddenDay(end)) {\n runningCount++;\n }\n } while (runningCount < dayCount);\n return { start: start, end: end };\n };\n // Builds a normalized range object for the \"visible\" range,\n // which is a way to define the currentRange and activeRange at the same time.\n DateProfileGenerator.prototype.buildCustomVisibleRange = function (date) {\n var dateEnv = this.dateEnv;\n var visibleRange = this.getRangeOption('visibleRange', dateEnv.toDate(date));\n if (visibleRange && (visibleRange.start == null || visibleRange.end == null)) {\n return null;\n }\n return visibleRange;\n };\n // Computes the range that will represent the element/cells for *rendering*,\n // but which may have voided days/times.\n // not responsible for trimming hidden days.\n DateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) {\n return currentRange;\n };\n // Compute the duration value that should be added/substracted to the current date\n // when a prev/next operation happens.\n DateProfileGenerator.prototype.buildDateIncrement = function (fallback) {\n var dateIncrementInput = this.options.dateIncrement;\n var customAlignment;\n if (dateIncrementInput) {\n return createDuration(dateIncrementInput);\n }\n else if ((customAlignment = this.options.dateAlignment)) {\n return createDuration(1, customAlignment);\n }\n else if (fallback) {\n return fallback;\n }\n else {\n return createDuration({ days: 1 });\n }\n };\n // Arguments after name will be forwarded to a hypothetical function value\n // WARNING: passed-in arguments will be given to generator functions as-is and can cause side-effects.\n // Always clone your objects if you fear mutation.\n DateProfileGenerator.prototype.getRangeOption = function (name) {\n var otherArgs = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n otherArgs[_i - 1] = arguments[_i];\n }\n var val = this.options[name];\n if (typeof val === 'function') {\n val = val.apply(null, otherArgs);\n }\n if (val) {\n val = parseRange(val, this.dateEnv);\n }\n if (val) {\n val = computeVisibleDayRange(val);\n }\n return val;\n };\n /* Hidden Days\n ------------------------------------------------------------------------------------------------------------------*/\n // Initializes internal variables related to calculating hidden days-of-week\n DateProfileGenerator.prototype.initHiddenDays = function () {\n var hiddenDays = this.options.hiddenDays || []; // array of day-of-week indices that are hidden\n var isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool)\n var dayCnt = 0;\n var i;\n if (this.options.weekends === false) {\n hiddenDays.push(0, 6); // 0=sunday, 6=saturday\n }\n for (i = 0; i < 7; i++) {\n if (!(isHiddenDayHash[i] = hiddenDays.indexOf(i) !== -1)) {\n dayCnt++;\n }\n }\n if (!dayCnt) {\n throw new Error('invalid hiddenDays'); // all days were hidden? bad.\n }\n this.isHiddenDayHash = isHiddenDayHash;\n };\n // Remove days from the beginning and end of the range that are computed as hidden.\n // If the whole range is trimmed off, returns null\n DateProfileGenerator.prototype.trimHiddenDays = function (range) {\n var start = range.start;\n var end = range.end;\n if (start) {\n start = this.skipHiddenDays(start);\n }\n if (end) {\n end = this.skipHiddenDays(end, -1, true);\n }\n if (start == null || end == null || start < end) {\n return { start: start, end: end };\n }\n return null;\n };\n // Is the current day hidden?\n // `day` is a day-of-week index (0-6), or a Date (used for UTC)\n DateProfileGenerator.prototype.isHiddenDay = function (day) {\n if (day instanceof Date) {\n day = day.getUTCDay();\n }\n return this.isHiddenDayHash[day];\n };\n // Incrementing the current day until it is no longer a hidden day, returning a copy.\n // DOES NOT CONSIDER validRange!\n // If the initial value of `date` is not a hidden day, don't do anything.\n // Pass `isExclusive` as `true` if you are dealing with an end date.\n // `inc` defaults to `1` (increment one day forward each time)\n DateProfileGenerator.prototype.skipHiddenDays = function (date, inc, isExclusive) {\n if (inc === void 0) { inc = 1; }\n if (isExclusive === void 0) { isExclusive = false; }\n while (this.isHiddenDayHash[(date.getUTCDay() + (isExclusive ? inc : 0) + 7) % 7]) {\n date = addDays(date, inc);\n }\n return date;\n };\n return DateProfileGenerator;\n }());\n // TODO: find a way to avoid comparing DateProfiles. it's tedious\n function isDateProfilesEqual(p0, p1) {\n return rangesEqual(p0.validRange, p1.validRange) &&\n rangesEqual(p0.activeRange, p1.activeRange) &&\n rangesEqual(p0.renderRange, p1.renderRange) &&\n durationsEqual(p0.minTime, p1.minTime) &&\n durationsEqual(p0.maxTime, p1.maxTime);\n /*\n TODO: compare more?\n currentRange: DateRange\n currentRangeUnit: string\n isRangeAllDay: boolean\n isValid: boolean\n dateIncrement: Duration\n */\n }\n\n function reduce (state, action, calendar) {\n var viewType = reduceViewType(state.viewType, action);\n var dateProfile = reduceDateProfile(state.dateProfile, action, state.currentDate, viewType, calendar);\n var eventSources = reduceEventSources(state.eventSources, action, dateProfile, calendar);\n var nextState = __assign({}, state, { viewType: viewType,\n dateProfile: dateProfile, currentDate: reduceCurrentDate(state.currentDate, action, dateProfile), eventSources: eventSources, eventStore: reduceEventStore(state.eventStore, action, eventSources, dateProfile, calendar), dateSelection: reduceDateSelection(state.dateSelection, action, calendar), eventSelection: reduceSelectedEvent(state.eventSelection, action), eventDrag: reduceEventDrag(state.eventDrag, action, eventSources, calendar), eventResize: reduceEventResize(state.eventResize, action, eventSources, calendar), eventSourceLoadingLevel: computeLoadingLevel(eventSources), loadingLevel: computeLoadingLevel(eventSources) });\n for (var _i = 0, _a = calendar.pluginSystem.hooks.reducers; _i < _a.length; _i++) {\n var reducerFunc = _a[_i];\n nextState = reducerFunc(nextState, action, calendar);\n }\n // console.log(action.type, nextState)\n return nextState;\n }\n function reduceViewType(currentViewType, action) {\n switch (action.type) {\n case 'SET_VIEW_TYPE':\n return action.viewType;\n default:\n return currentViewType;\n }\n }\n function reduceDateProfile(currentDateProfile, action, currentDate, viewType, calendar) {\n var newDateProfile;\n switch (action.type) {\n case 'PREV':\n newDateProfile = calendar.dateProfileGenerators[viewType].buildPrev(currentDateProfile, currentDate);\n break;\n case 'NEXT':\n newDateProfile = calendar.dateProfileGenerators[viewType].buildNext(currentDateProfile, currentDate);\n break;\n case 'SET_DATE':\n if (!currentDateProfile.activeRange ||\n !rangeContainsMarker(currentDateProfile.currentRange, action.dateMarker)) {\n newDateProfile = calendar.dateProfileGenerators[viewType].build(action.dateMarker, undefined, true // forceToValid\n );\n }\n break;\n case 'SET_VIEW_TYPE':\n var generator = calendar.dateProfileGenerators[viewType];\n if (!generator) {\n throw new Error(viewType ?\n 'The FullCalendar view \"' + viewType + '\" does not exist. Make sure your plugins are loaded correctly.' :\n 'No available FullCalendar view plugins.');\n }\n newDateProfile = generator.build(action.dateMarker || currentDate, undefined, true // forceToValid\n );\n break;\n }\n if (newDateProfile &&\n newDateProfile.isValid &&\n !(currentDateProfile && isDateProfilesEqual(currentDateProfile, newDateProfile))) {\n return newDateProfile;\n }\n else {\n return currentDateProfile;\n }\n }\n function reduceCurrentDate(currentDate, action, dateProfile) {\n switch (action.type) {\n case 'PREV':\n case 'NEXT':\n if (!rangeContainsMarker(dateProfile.currentRange, currentDate)) {\n return dateProfile.currentRange.start;\n }\n else {\n return currentDate;\n }\n case 'SET_DATE':\n case 'SET_VIEW_TYPE':\n var newDate = action.dateMarker || currentDate;\n if (dateProfile.activeRange && !rangeContainsMarker(dateProfile.activeRange, newDate)) {\n return dateProfile.currentRange.start;\n }\n else {\n return newDate;\n }\n default:\n return currentDate;\n }\n }\n function reduceDateSelection(currentSelection, action, calendar) {\n switch (action.type) {\n case 'SELECT_DATES':\n return action.selection;\n case 'UNSELECT_DATES':\n return null;\n default:\n return currentSelection;\n }\n }\n function reduceSelectedEvent(currentInstanceId, action) {\n switch (action.type) {\n case 'SELECT_EVENT':\n return action.eventInstanceId;\n case 'UNSELECT_EVENT':\n return '';\n default:\n return currentInstanceId;\n }\n }\n function reduceEventDrag(currentDrag, action, sources, calendar) {\n switch (action.type) {\n case 'SET_EVENT_DRAG':\n var newDrag = action.state;\n return {\n affectedEvents: newDrag.affectedEvents,\n mutatedEvents: newDrag.mutatedEvents,\n isEvent: newDrag.isEvent,\n origSeg: newDrag.origSeg\n };\n case 'UNSET_EVENT_DRAG':\n return null;\n default:\n return currentDrag;\n }\n }\n function reduceEventResize(currentResize, action, sources, calendar) {\n switch (action.type) {\n case 'SET_EVENT_RESIZE':\n var newResize = action.state;\n return {\n affectedEvents: newResize.affectedEvents,\n mutatedEvents: newResize.mutatedEvents,\n isEvent: newResize.isEvent,\n origSeg: newResize.origSeg\n };\n case 'UNSET_EVENT_RESIZE':\n return null;\n default:\n return currentResize;\n }\n }\n function computeLoadingLevel(eventSources) {\n var cnt = 0;\n for (var sourceId in eventSources) {\n if (eventSources[sourceId].isFetching) {\n cnt++;\n }\n }\n return cnt;\n }\n\n var STANDARD_PROPS = {\n start: null,\n end: null,\n allDay: Boolean\n };\n function parseDateSpan(raw, dateEnv, defaultDuration) {\n var span = parseOpenDateSpan(raw, dateEnv);\n var range = span.range;\n if (!range.start) {\n return null;\n }\n if (!range.end) {\n if (defaultDuration == null) {\n return null;\n }\n else {\n range.end = dateEnv.add(range.start, defaultDuration);\n }\n }\n return span;\n }\n /*\n TODO: somehow combine with parseRange?\n Will return null if the start/end props were present but parsed invalidly.\n */\n function parseOpenDateSpan(raw, dateEnv) {\n var leftovers = {};\n var standardProps = refineProps(raw, STANDARD_PROPS, {}, leftovers);\n var startMeta = standardProps.start ? dateEnv.createMarkerMeta(standardProps.start) : null;\n var endMeta = standardProps.end ? dateEnv.createMarkerMeta(standardProps.end) : null;\n var allDay = standardProps.allDay;\n if (allDay == null) {\n allDay = (startMeta && startMeta.isTimeUnspecified) &&\n (!endMeta || endMeta.isTimeUnspecified);\n }\n // use this leftover object as the selection object\n leftovers.range = {\n start: startMeta ? startMeta.marker : null,\n end: endMeta ? endMeta.marker : null\n };\n leftovers.allDay = allDay;\n return leftovers;\n }\n function isDateSpansEqual(span0, span1) {\n return rangesEqual(span0.range, span1.range) &&\n span0.allDay === span1.allDay &&\n isSpanPropsEqual(span0, span1);\n }\n // the NON-DATE-RELATED props\n function isSpanPropsEqual(span0, span1) {\n for (var propName in span1) {\n if (propName !== 'range' && propName !== 'allDay') {\n if (span0[propName] !== span1[propName]) {\n return false;\n }\n }\n }\n // are there any props that span0 has that span1 DOESN'T have?\n // both have range/allDay, so no need to special-case.\n for (var propName in span0) {\n if (!(propName in span1)) {\n return false;\n }\n }\n return true;\n }\n function buildDateSpanApi(span, dateEnv) {\n return {\n start: dateEnv.toDate(span.range.start),\n end: dateEnv.toDate(span.range.end),\n startStr: dateEnv.formatIso(span.range.start, { omitTime: span.allDay }),\n endStr: dateEnv.formatIso(span.range.end, { omitTime: span.allDay }),\n allDay: span.allDay\n };\n }\n function buildDatePointApi(span, dateEnv) {\n return {\n date: dateEnv.toDate(span.range.start),\n dateStr: dateEnv.formatIso(span.range.start, { omitTime: span.allDay }),\n allDay: span.allDay\n };\n }\n function fabricateEventRange(dateSpan, eventUiBases, calendar) {\n var def = parseEventDef({ editable: false }, '', // sourceId\n dateSpan.allDay, true, // hasEnd\n calendar);\n return {\n def: def,\n ui: compileEventUi(def, eventUiBases),\n instance: createEventInstance(def.defId, dateSpan.range),\n range: dateSpan.range,\n isStart: true,\n isEnd: true\n };\n }\n\n function compileViewDefs(defaultConfigs, overrideConfigs) {\n var hash = {};\n var viewType;\n for (viewType in defaultConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n for (viewType in overrideConfigs) {\n ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n }\n return hash;\n }\n function ensureViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n if (hash[viewType]) {\n return hash[viewType];\n }\n var viewDef = buildViewDef(viewType, hash, defaultConfigs, overrideConfigs);\n if (viewDef) {\n hash[viewType] = viewDef;\n }\n return viewDef;\n }\n function buildViewDef(viewType, hash, defaultConfigs, overrideConfigs) {\n var defaultConfig = defaultConfigs[viewType];\n var overrideConfig = overrideConfigs[viewType];\n var queryProp = function (name) {\n return (defaultConfig && defaultConfig[name] !== null) ? defaultConfig[name] :\n ((overrideConfig && overrideConfig[name] !== null) ? overrideConfig[name] : null);\n };\n var theClass = queryProp('class');\n var superType = queryProp('superType');\n if (!superType && theClass) {\n superType =\n findViewNameBySubclass(theClass, overrideConfigs) ||\n findViewNameBySubclass(theClass, defaultConfigs);\n }\n var superDef = null;\n if (superType) {\n if (superType === viewType) {\n throw new Error('Can\\'t have a custom view type that references itself');\n }\n superDef = ensureViewDef(superType, hash, defaultConfigs, overrideConfigs);\n }\n if (!theClass && superDef) {\n theClass = superDef.class;\n }\n if (!theClass) {\n return null; // don't throw a warning, might be settings for a single-unit view\n }\n return {\n type: viewType,\n class: theClass,\n defaults: __assign({}, (superDef ? superDef.defaults : {}), (defaultConfig ? defaultConfig.options : {})),\n overrides: __assign({}, (superDef ? superDef.overrides : {}), (overrideConfig ? overrideConfig.options : {}))\n };\n }\n function findViewNameBySubclass(viewSubclass, configs) {\n var superProto = Object.getPrototypeOf(viewSubclass.prototype);\n for (var viewType in configs) {\n var parsed = configs[viewType];\n // need DIRECT subclass, so instanceof won't do it\n if (parsed.class && parsed.class.prototype === superProto) {\n return viewType;\n }\n }\n return '';\n }\n\n function parseViewConfigs(inputs) {\n return mapHash(inputs, parseViewConfig);\n }\n var VIEW_DEF_PROPS = {\n type: String,\n class: null\n };\n function parseViewConfig(input) {\n if (typeof input === 'function') {\n input = { class: input };\n }\n var options = {};\n var props = refineProps(input, VIEW_DEF_PROPS, {}, options);\n return {\n superType: props.type,\n class: props.class,\n options: options\n };\n }\n\n function buildViewSpecs(defaultInputs, optionsManager) {\n var defaultConfigs = parseViewConfigs(defaultInputs);\n var overrideConfigs = parseViewConfigs(optionsManager.overrides.views);\n var viewDefs = compileViewDefs(defaultConfigs, overrideConfigs);\n return mapHash(viewDefs, function (viewDef) {\n return buildViewSpec(viewDef, overrideConfigs, optionsManager);\n });\n }\n function buildViewSpec(viewDef, overrideConfigs, optionsManager) {\n var durationInput = viewDef.overrides.duration ||\n viewDef.defaults.duration ||\n optionsManager.dynamicOverrides.duration ||\n optionsManager.overrides.duration;\n var duration = null;\n var durationUnit = '';\n var singleUnit = '';\n var singleUnitOverrides = {};\n if (durationInput) {\n duration = createDuration(durationInput);\n if (duration) { // valid?\n var denom = greatestDurationDenominator(duration, !getWeeksFromInput(durationInput));\n durationUnit = denom.unit;\n if (denom.value === 1) {\n singleUnit = durationUnit;\n singleUnitOverrides = overrideConfigs[durationUnit] ? overrideConfigs[durationUnit].options : {};\n }\n }\n }\n var queryButtonText = function (options) {\n var buttonTextMap = options.buttonText || {};\n var buttonTextKey = viewDef.defaults.buttonTextKey;\n if (buttonTextKey != null && buttonTextMap[buttonTextKey] != null) {\n return buttonTextMap[buttonTextKey];\n }\n if (buttonTextMap[viewDef.type] != null) {\n return buttonTextMap[viewDef.type];\n }\n if (buttonTextMap[singleUnit] != null) {\n return buttonTextMap[singleUnit];\n }\n };\n return {\n type: viewDef.type,\n class: viewDef.class,\n duration: duration,\n durationUnit: durationUnit,\n singleUnit: singleUnit,\n options: __assign({}, globalDefaults, viewDef.defaults, optionsManager.dirDefaults, optionsManager.localeDefaults, optionsManager.overrides, singleUnitOverrides, viewDef.overrides, optionsManager.dynamicOverrides),\n buttonTextOverride: queryButtonText(optionsManager.dynamicOverrides) ||\n queryButtonText(optionsManager.overrides) || // constructor-specified buttonText lookup hash takes precedence\n viewDef.overrides.buttonText,\n buttonTextDefault: queryButtonText(optionsManager.localeDefaults) ||\n queryButtonText(optionsManager.dirDefaults) ||\n viewDef.defaults.buttonText ||\n queryButtonText(globalDefaults) ||\n viewDef.type // fall back to given view name\n };\n }\n\n var Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n function Toolbar(extraClassName) {\n var _this = _super.call(this) || this;\n _this._renderLayout = memoizeRendering(_this.renderLayout, _this.unrenderLayout);\n _this._updateTitle = memoizeRendering(_this.updateTitle, null, [_this._renderLayout]);\n _this._updateActiveButton = memoizeRendering(_this.updateActiveButton, null, [_this._renderLayout]);\n _this._updateToday = memoizeRendering(_this.updateToday, null, [_this._renderLayout]);\n _this._updatePrev = memoizeRendering(_this.updatePrev, null, [_this._renderLayout]);\n _this._updateNext = memoizeRendering(_this.updateNext, null, [_this._renderLayout]);\n _this.el = createElement('div', { className: 'fc-toolbar ' + extraClassName });\n return _this;\n }\n Toolbar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this._renderLayout.unrender(); // should unrender everything else\n removeElement(this.el);\n };\n Toolbar.prototype.render = function (props) {\n this._renderLayout(props.layout);\n this._updateTitle(props.title);\n this._updateActiveButton(props.activeButton);\n this._updateToday(props.isTodayEnabled);\n this._updatePrev(props.isPrevEnabled);\n this._updateNext(props.isNextEnabled);\n };\n Toolbar.prototype.renderLayout = function (layout) {\n var el = this.el;\n this.viewsWithButtons = [];\n appendToElement(el, this.renderSection('left', layout.left));\n appendToElement(el, this.renderSection('center', layout.center));\n appendToElement(el, this.renderSection('right', layout.right));\n };\n Toolbar.prototype.unrenderLayout = function () {\n this.el.innerHTML = '';\n };\n Toolbar.prototype.renderSection = function (position, buttonStr) {\n var _this = this;\n var _a = this.context, theme = _a.theme, calendar = _a.calendar;\n var optionsManager = calendar.optionsManager;\n var viewSpecs = calendar.viewSpecs;\n var sectionEl = createElement('div', { className: 'fc-' + position });\n var calendarCustomButtons = optionsManager.computed.customButtons || {};\n var calendarButtonTextOverrides = optionsManager.overrides.buttonText || {};\n var calendarButtonText = optionsManager.computed.buttonText || {};\n if (buttonStr) {\n buttonStr.split(' ').forEach(function (buttonGroupStr, i) {\n var groupChildren = [];\n var isOnlyButtons = true;\n var groupEl;\n buttonGroupStr.split(',').forEach(function (buttonName, j) {\n var customButtonProps;\n var viewSpec;\n var buttonClick;\n var buttonIcon; // only one of these will be set\n var buttonText; // \"\n var buttonInnerHtml;\n var buttonClasses;\n var buttonEl;\n var buttonAriaAttr;\n if (buttonName === 'title') {\n groupChildren.push(htmlToElement('

 

')); // we always want it to take up height\n isOnlyButtons = false;\n }\n else {\n if ((customButtonProps = calendarCustomButtons[buttonName])) {\n buttonClick = function (ev) {\n if (customButtonProps.click) {\n customButtonProps.click.call(buttonEl, ev);\n }\n };\n (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) ||\n (buttonIcon = theme.getIconClass(buttonName)) ||\n (buttonText = customButtonProps.text);\n }\n else if ((viewSpec = viewSpecs[buttonName])) {\n _this.viewsWithButtons.push(buttonName);\n buttonClick = function () {\n calendar.changeView(buttonName);\n };\n (buttonText = viewSpec.buttonTextOverride) ||\n (buttonIcon = theme.getIconClass(buttonName)) ||\n (buttonText = viewSpec.buttonTextDefault);\n }\n else if (calendar[buttonName]) { // a calendar method\n buttonClick = function () {\n calendar[buttonName]();\n };\n (buttonText = calendarButtonTextOverrides[buttonName]) ||\n (buttonIcon = theme.getIconClass(buttonName)) ||\n (buttonText = calendarButtonText[buttonName]);\n // ^ everything else is considered default\n }\n if (buttonClick) {\n buttonClasses = [\n 'fc-' + buttonName + '-button',\n theme.getClass('button')\n ];\n if (buttonText) {\n buttonInnerHtml = htmlEscape(buttonText);\n buttonAriaAttr = '';\n }\n else if (buttonIcon) {\n buttonInnerHtml = \"\";\n buttonAriaAttr = ' aria-label=\"' + buttonName + '\"';\n }\n buttonEl = htmlToElement(// type=\"button\" so that it doesn't submit a form\n '');\n buttonEl.addEventListener('click', buttonClick);\n groupChildren.push(buttonEl);\n }\n }\n });\n if (groupChildren.length > 1) {\n groupEl = document.createElement('div');\n var buttonGroupClassName = theme.getClass('buttonGroup');\n if (isOnlyButtons && buttonGroupClassName) {\n groupEl.classList.add(buttonGroupClassName);\n }\n appendToElement(groupEl, groupChildren);\n sectionEl.appendChild(groupEl);\n }\n else {\n appendToElement(sectionEl, groupChildren); // 1 or 0 children\n }\n });\n }\n return sectionEl;\n };\n Toolbar.prototype.updateToday = function (isTodayEnabled) {\n this.toggleButtonEnabled('today', isTodayEnabled);\n };\n Toolbar.prototype.updatePrev = function (isPrevEnabled) {\n this.toggleButtonEnabled('prev', isPrevEnabled);\n };\n Toolbar.prototype.updateNext = function (isNextEnabled) {\n this.toggleButtonEnabled('next', isNextEnabled);\n };\n Toolbar.prototype.updateTitle = function (text) {\n findElements(this.el, 'h2').forEach(function (titleEl) {\n titleEl.innerText = text;\n });\n };\n Toolbar.prototype.updateActiveButton = function (buttonName) {\n var theme = this.context.theme;\n var className = theme.getClass('buttonActive');\n findElements(this.el, 'button').forEach(function (buttonEl) {\n if (buttonName && buttonEl.classList.contains('fc-' + buttonName + '-button')) {\n buttonEl.classList.add(className);\n }\n else {\n buttonEl.classList.remove(className);\n }\n });\n };\n Toolbar.prototype.toggleButtonEnabled = function (buttonName, bool) {\n findElements(this.el, '.fc-' + buttonName + '-button').forEach(function (buttonEl) {\n buttonEl.disabled = !bool;\n });\n };\n return Toolbar;\n }(Component));\n\n var CalendarComponent = /** @class */ (function (_super) {\n __extends(CalendarComponent, _super);\n function CalendarComponent(el) {\n var _this = _super.call(this) || this;\n _this.elClassNames = [];\n _this.renderSkeleton = memoizeRendering(_this._renderSkeleton, _this._unrenderSkeleton);\n _this.renderToolbars = memoizeRendering(_this._renderToolbars, _this._unrenderToolbars, [_this.renderSkeleton]);\n _this.buildComponentContext = memoize(buildComponentContext);\n _this.buildViewPropTransformers = memoize(buildViewPropTransformers);\n _this.el = el;\n _this.computeTitle = memoize(computeTitle);\n _this.parseBusinessHours = memoize(function (input) {\n return parseBusinessHours(input, _this.context.calendar);\n });\n return _this;\n }\n CalendarComponent.prototype.render = function (props, context) {\n this.freezeHeight();\n var title = this.computeTitle(props.dateProfile, props.viewSpec.options);\n this.renderSkeleton(context);\n this.renderToolbars(props.viewSpec, props.dateProfile, props.currentDate, title);\n this.renderView(props, title);\n this.updateSize();\n this.thawHeight();\n };\n CalendarComponent.prototype.destroy = function () {\n if (this.header) {\n this.header.destroy();\n }\n if (this.footer) {\n this.footer.destroy();\n }\n this.renderSkeleton.unrender(); // will call destroyView\n _super.prototype.destroy.call(this);\n };\n CalendarComponent.prototype._renderSkeleton = function (context) {\n this.updateElClassNames(context);\n prependToElement(this.el, this.contentEl = createElement('div', { className: 'fc-view-container' }));\n var calendar = context.calendar;\n for (var _i = 0, _a = calendar.pluginSystem.hooks.viewContainerModifiers; _i < _a.length; _i++) {\n var modifyViewContainer = _a[_i];\n modifyViewContainer(this.contentEl, calendar);\n }\n };\n CalendarComponent.prototype._unrenderSkeleton = function () {\n // weird to have this here\n if (this.view) {\n this.savedScroll = this.view.queryScroll();\n this.view.destroy();\n this.view = null;\n }\n removeElement(this.contentEl);\n this.removeElClassNames();\n };\n CalendarComponent.prototype.removeElClassNames = function () {\n var classList = this.el.classList;\n for (var _i = 0, _a = this.elClassNames; _i < _a.length; _i++) {\n var className = _a[_i];\n classList.remove(className);\n }\n this.elClassNames = [];\n };\n CalendarComponent.prototype.updateElClassNames = function (context) {\n this.removeElClassNames();\n var theme = context.theme, options = context.options;\n this.elClassNames = [\n 'fc',\n 'fc-' + options.dir,\n theme.getClass('widget')\n ];\n var classList = this.el.classList;\n for (var _i = 0, _a = this.elClassNames; _i < _a.length; _i++) {\n var className = _a[_i];\n classList.add(className);\n }\n };\n CalendarComponent.prototype._renderToolbars = function (viewSpec, dateProfile, currentDate, title) {\n var _a = this, context = _a.context, header = _a.header, footer = _a.footer;\n var options = context.options, calendar = context.calendar;\n var headerLayout = options.header;\n var footerLayout = options.footer;\n var dateProfileGenerator = this.props.dateProfileGenerator;\n var now = calendar.getNow();\n var todayInfo = dateProfileGenerator.build(now);\n var prevInfo = dateProfileGenerator.buildPrev(dateProfile, currentDate);\n var nextInfo = dateProfileGenerator.buildNext(dateProfile, currentDate);\n var toolbarProps = {\n title: title,\n activeButton: viewSpec.type,\n isTodayEnabled: todayInfo.isValid && !rangeContainsMarker(dateProfile.currentRange, now),\n isPrevEnabled: prevInfo.isValid,\n isNextEnabled: nextInfo.isValid\n };\n if (headerLayout) {\n if (!header) {\n header = this.header = new Toolbar('fc-header-toolbar');\n prependToElement(this.el, header.el);\n }\n header.receiveProps(__assign({ layout: headerLayout }, toolbarProps), context);\n }\n else if (header) {\n header.destroy();\n header = this.header = null;\n }\n if (footerLayout) {\n if (!footer) {\n footer = this.footer = new Toolbar('fc-footer-toolbar');\n appendToElement(this.el, footer.el);\n }\n footer.receiveProps(__assign({ layout: footerLayout }, toolbarProps), context);\n }\n else if (footer) {\n footer.destroy();\n footer = this.footer = null;\n }\n };\n CalendarComponent.prototype._unrenderToolbars = function () {\n if (this.header) {\n this.header.destroy();\n this.header = null;\n }\n if (this.footer) {\n this.footer.destroy();\n this.footer = null;\n }\n };\n CalendarComponent.prototype.renderView = function (props, title) {\n var view = this.view;\n var _a = this.context, calendar = _a.calendar, options = _a.options;\n var viewSpec = props.viewSpec, dateProfileGenerator = props.dateProfileGenerator;\n if (!view || view.viewSpec !== viewSpec) {\n if (view) {\n view.destroy();\n }\n view = this.view = new viewSpec['class'](viewSpec, this.contentEl);\n if (this.savedScroll) {\n view.addScroll(this.savedScroll, true);\n this.savedScroll = null;\n }\n }\n view.title = title; // for the API\n var viewProps = {\n dateProfileGenerator: dateProfileGenerator,\n dateProfile: props.dateProfile,\n businessHours: this.parseBusinessHours(viewSpec.options.businessHours),\n eventStore: props.eventStore,\n eventUiBases: props.eventUiBases,\n dateSelection: props.dateSelection,\n eventSelection: props.eventSelection,\n eventDrag: props.eventDrag,\n eventResize: props.eventResize\n };\n var transformers = this.buildViewPropTransformers(calendar.pluginSystem.hooks.viewPropsTransformers);\n for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) {\n var transformer = transformers_1[_i];\n __assign(viewProps, transformer.transform(viewProps, viewSpec, props, options));\n }\n view.receiveProps(viewProps, this.buildComponentContext(this.context, viewSpec, view));\n };\n // Sizing\n // -----------------------------------------------------------------------------------------------------------------\n CalendarComponent.prototype.updateSize = function (isResize) {\n if (isResize === void 0) { isResize = false; }\n var view = this.view;\n if (!view) {\n return; // why?\n }\n if (isResize || this.isHeightAuto == null) {\n this.computeHeightVars();\n }\n view.updateSize(isResize, this.viewHeight, this.isHeightAuto);\n view.updateNowIndicator(); // we need to guarantee this will run after updateSize\n view.popScroll(isResize);\n };\n CalendarComponent.prototype.computeHeightVars = function () {\n var calendar = this.context.calendar; // yuck. need to handle dynamic options\n var heightInput = calendar.opt('height');\n var contentHeightInput = calendar.opt('contentHeight');\n this.isHeightAuto = heightInput === 'auto' || contentHeightInput === 'auto';\n if (typeof contentHeightInput === 'number') { // exists and not 'auto'\n this.viewHeight = contentHeightInput;\n }\n else if (typeof contentHeightInput === 'function') { // exists and is a function\n this.viewHeight = contentHeightInput();\n }\n else if (typeof heightInput === 'number') { // exists and not 'auto'\n this.viewHeight = heightInput - this.queryToolbarsHeight();\n }\n else if (typeof heightInput === 'function') { // exists and is a function\n this.viewHeight = heightInput() - this.queryToolbarsHeight();\n }\n else if (heightInput === 'parent') { // set to height of parent element\n var parentEl = this.el.parentNode;\n this.viewHeight = parentEl.getBoundingClientRect().height - this.queryToolbarsHeight();\n }\n else {\n this.viewHeight = Math.round(this.contentEl.getBoundingClientRect().width /\n Math.max(calendar.opt('aspectRatio'), .5));\n }\n };\n CalendarComponent.prototype.queryToolbarsHeight = function () {\n var height = 0;\n if (this.header) {\n height += computeHeightAndMargins(this.header.el);\n }\n if (this.footer) {\n height += computeHeightAndMargins(this.footer.el);\n }\n return height;\n };\n // Height \"Freezing\"\n // -----------------------------------------------------------------------------------------------------------------\n CalendarComponent.prototype.freezeHeight = function () {\n applyStyle(this.el, {\n height: this.el.getBoundingClientRect().height,\n overflow: 'hidden'\n });\n };\n CalendarComponent.prototype.thawHeight = function () {\n applyStyle(this.el, {\n height: '',\n overflow: ''\n });\n };\n return CalendarComponent;\n }(Component));\n // Title and Date Formatting\n // -----------------------------------------------------------------------------------------------------------------\n // Computes what the title at the top of the calendar should be for this view\n function computeTitle(dateProfile, viewOptions) {\n var range;\n // for views that span a large unit of time, show the proper interval, ignoring stray days before and after\n if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {\n range = dateProfile.currentRange;\n }\n else { // for day units or smaller, use the actual day range\n range = dateProfile.activeRange;\n }\n return this.context.dateEnv.formatRange(range.start, range.end, createFormatter(viewOptions.titleFormat || computeTitleFormat(dateProfile), viewOptions.titleRangeSeparator), { isEndExclusive: dateProfile.isRangeAllDay });\n }\n // Generates the format string that should be used to generate the title for the current date range.\n // Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.\n function computeTitleFormat(dateProfile) {\n var currentRangeUnit = dateProfile.currentRangeUnit;\n if (currentRangeUnit === 'year') {\n return { year: 'numeric' };\n }\n else if (currentRangeUnit === 'month') {\n return { year: 'numeric', month: 'long' }; // like \"September 2014\"\n }\n else {\n var days = diffWholeDays(dateProfile.currentRange.start, dateProfile.currentRange.end);\n if (days !== null && days > 1) {\n // multi-day range. shorter, like \"Sep 9 - 10 2014\"\n return { year: 'numeric', month: 'short', day: 'numeric' };\n }\n else {\n // one day. longer, like \"September 9 2014\"\n return { year: 'numeric', month: 'long', day: 'numeric' };\n }\n }\n }\n // build a context scoped to the view\n function buildComponentContext(context, viewSpec, view) {\n return context.extend(viewSpec.options, view);\n }\n // Plugin\n // -----------------------------------------------------------------------------------------------------------------\n function buildViewPropTransformers(theClasses) {\n return theClasses.map(function (theClass) {\n return new theClass();\n });\n }\n\n var Interaction = /** @class */ (function () {\n function Interaction(settings) {\n this.component = settings.component;\n }\n Interaction.prototype.destroy = function () {\n };\n return Interaction;\n }());\n function parseInteractionSettings(component, input) {\n return {\n component: component,\n el: input.el,\n useEventCenter: input.useEventCenter != null ? input.useEventCenter : true\n };\n }\n function interactionSettingsToStore(settings) {\n var _a;\n return _a = {},\n _a[settings.component.uid] = settings,\n _a;\n }\n // global state\n var interactionSettingsStore = {};\n\n /*\n Detects when the user clicks on an event within a DateComponent\n */\n var EventClicking = /** @class */ (function (_super) {\n __extends(EventClicking, _super);\n function EventClicking(settings) {\n var _this = _super.call(this, settings) || this;\n _this.handleSegClick = function (ev, segEl) {\n var component = _this.component;\n var _a = component.context, calendar = _a.calendar, view = _a.view;\n var seg = getElSeg(segEl);\n if (seg && // might be the
surrounding the more link\n component.isValidSegDownEl(ev.target)) {\n // our way to simulate a link click for elements that can't be tags\n // grab before trigger fired in case trigger trashes DOM thru rerendering\n var hasUrlContainer = elementClosest(ev.target, '.fc-has-url');\n var url = hasUrlContainer ? hasUrlContainer.querySelector('a[href]').href : '';\n calendar.publiclyTrigger('eventClick', [\n {\n el: segEl,\n event: new EventApi(component.context.calendar, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: view\n }\n ]);\n if (url && !ev.defaultPrevented) {\n window.location.href = url;\n }\n }\n };\n var component = settings.component;\n _this.destroy = listenBySelector(component.el, 'click', component.fgSegSelector + ',' + component.bgSegSelector, _this.handleSegClick);\n return _this;\n }\n return EventClicking;\n }(Interaction));\n\n /*\n Triggers events and adds/removes core classNames when the user's pointer\n enters/leaves event-elements of a component.\n */\n var EventHovering = /** @class */ (function (_super) {\n __extends(EventHovering, _super);\n function EventHovering(settings) {\n var _this = _super.call(this, settings) || this;\n // for simulating an eventMouseLeave when the event el is destroyed while mouse is over it\n _this.handleEventElRemove = function (el) {\n if (el === _this.currentSegEl) {\n _this.handleSegLeave(null, _this.currentSegEl);\n }\n };\n _this.handleSegEnter = function (ev, segEl) {\n if (getElSeg(segEl)) { // TODO: better way to make sure not hovering over more+ link or its wrapper\n segEl.classList.add('fc-allow-mouse-resize');\n _this.currentSegEl = segEl;\n _this.triggerEvent('eventMouseEnter', ev, segEl);\n }\n };\n _this.handleSegLeave = function (ev, segEl) {\n if (_this.currentSegEl) {\n segEl.classList.remove('fc-allow-mouse-resize');\n _this.currentSegEl = null;\n _this.triggerEvent('eventMouseLeave', ev, segEl);\n }\n };\n var component = settings.component;\n _this.removeHoverListeners = listenToHoverBySelector(component.el, component.fgSegSelector + ',' + component.bgSegSelector, _this.handleSegEnter, _this.handleSegLeave);\n // how to make sure component already has context?\n component.context.calendar.on('eventElRemove', _this.handleEventElRemove);\n return _this;\n }\n EventHovering.prototype.destroy = function () {\n this.removeHoverListeners();\n this.component.context.calendar.off('eventElRemove', this.handleEventElRemove);\n };\n EventHovering.prototype.triggerEvent = function (publicEvName, ev, segEl) {\n var component = this.component;\n var _a = component.context, calendar = _a.calendar, view = _a.view;\n var seg = getElSeg(segEl);\n if (!ev || component.isValidSegDownEl(ev.target)) {\n calendar.publiclyTrigger(publicEvName, [\n {\n el: segEl,\n event: new EventApi(calendar, seg.eventRange.def, seg.eventRange.instance),\n jsEvent: ev,\n view: view\n }\n ]);\n }\n };\n return EventHovering;\n }(Interaction));\n\n var StandardTheme = /** @class */ (function (_super) {\n __extends(StandardTheme, _super);\n function StandardTheme() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StandardTheme;\n }(Theme));\n StandardTheme.prototype.classes = {\n widget: 'fc-unthemed',\n widgetHeader: 'fc-widget-header',\n widgetContent: 'fc-widget-content',\n buttonGroup: 'fc-button-group',\n button: 'fc-button fc-button-primary',\n buttonActive: 'fc-button-active',\n popoverHeader: 'fc-widget-header',\n popoverContent: 'fc-widget-content',\n // day grid\n headerRow: 'fc-widget-header',\n dayRow: 'fc-widget-content',\n // list view\n listView: 'fc-widget-content'\n };\n StandardTheme.prototype.baseIconClass = 'fc-icon';\n StandardTheme.prototype.iconClasses = {\n close: 'fc-icon-x',\n prev: 'fc-icon-chevron-left',\n next: 'fc-icon-chevron-right',\n prevYear: 'fc-icon-chevrons-left',\n nextYear: 'fc-icon-chevrons-right'\n };\n StandardTheme.prototype.iconOverrideOption = 'buttonIcons';\n StandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';\n StandardTheme.prototype.iconOverridePrefix = 'fc-icon-';\n\n var Calendar = /** @class */ (function () {\n function Calendar(el, overrides) {\n var _this = this;\n this.buildComponentContext = memoize(buildComponentContext$1);\n this.parseRawLocales = memoize(parseRawLocales);\n this.buildLocale = memoize(buildLocale);\n this.buildDateEnv = memoize(buildDateEnv);\n this.buildTheme = memoize(buildTheme);\n this.buildEventUiSingleBase = memoize(this._buildEventUiSingleBase);\n this.buildSelectionConfig = memoize(this._buildSelectionConfig);\n this.buildEventUiBySource = memoizeOutput(buildEventUiBySource, isPropsEqual);\n this.buildEventUiBases = memoize(buildEventUiBases);\n this.interactionsStore = {};\n this.actionQueue = [];\n this.isReducing = false;\n // isDisplaying: boolean = false // installed in DOM? accepting renders?\n this.needsRerender = false; // needs a render?\n this.isRendering = false; // currently in the executeRender function?\n this.renderingPauseDepth = 0;\n this.buildDelayedRerender = memoize(buildDelayedRerender);\n this.afterSizingTriggers = {};\n this.isViewUpdated = false;\n this.isDatesUpdated = false;\n this.isEventsUpdated = false;\n this.el = el;\n this.optionsManager = new OptionsManager(overrides || {});\n this.pluginSystem = new PluginSystem();\n // only do once. don't do in handleOptions. because can't remove plugins\n this.addPluginInputs(this.optionsManager.computed.plugins || []);\n this.handleOptions(this.optionsManager.computed);\n this.publiclyTrigger('_init'); // for tests\n this.hydrate();\n this.calendarInteractions = this.pluginSystem.hooks.calendarInteractions\n .map(function (calendarInteractionClass) {\n return new calendarInteractionClass(_this);\n });\n }\n Calendar.prototype.addPluginInputs = function (pluginInputs) {\n var pluginDefs = refinePluginDefs(pluginInputs);\n for (var _i = 0, pluginDefs_1 = pluginDefs; _i < pluginDefs_1.length; _i++) {\n var pluginDef = pluginDefs_1[_i];\n this.pluginSystem.add(pluginDef);\n }\n };\n Object.defineProperty(Calendar.prototype, \"view\", {\n // public API\n get: function () {\n return this.component ? this.component.view : null;\n },\n enumerable: true,\n configurable: true\n });\n // Public API for rendering\n // -----------------------------------------------------------------------------------------------------------------\n Calendar.prototype.render = function () {\n if (!this.component) {\n this.component = new CalendarComponent(this.el);\n this.renderableEventStore = createEmptyEventStore();\n this.bindHandlers();\n this.executeRender();\n }\n else {\n this.requestRerender();\n }\n };\n Calendar.prototype.destroy = function () {\n if (this.component) {\n this.unbindHandlers();\n this.component.destroy(); // don't null-out. in case API needs access\n this.component = null; // umm ???\n for (var _i = 0, _a = this.calendarInteractions; _i < _a.length; _i++) {\n var interaction = _a[_i];\n interaction.destroy();\n }\n this.publiclyTrigger('_destroyed');\n }\n };\n // Handlers\n // -----------------------------------------------------------------------------------------------------------------\n Calendar.prototype.bindHandlers = function () {\n var _this = this;\n // event delegation for nav links\n this.removeNavLinkListener = listenBySelector(this.el, 'click', 'a[data-goto]', function (ev, anchorEl) {\n var gotoOptions = anchorEl.getAttribute('data-goto');\n gotoOptions = gotoOptions ? JSON.parse(gotoOptions) : {};\n var dateEnv = _this.dateEnv;\n var dateMarker = dateEnv.createMarker(gotoOptions.date);\n var viewType = gotoOptions.type;\n // property like \"navLinkDayClick\". might be a string or a function\n var customAction = _this.viewOpt('navLink' + capitaliseFirstLetter(viewType) + 'Click');\n if (typeof customAction === 'function') {\n customAction(dateEnv.toDate(dateMarker), ev);\n }\n else {\n if (typeof customAction === 'string') {\n viewType = customAction;\n }\n _this.zoomTo(dateMarker, viewType);\n }\n });\n if (this.opt('handleWindowResize')) {\n window.addEventListener('resize', this.windowResizeProxy = debounce(// prevents rapid calls\n this.windowResize.bind(this), this.opt('windowResizeDelay')));\n }\n };\n Calendar.prototype.unbindHandlers = function () {\n this.removeNavLinkListener();\n if (this.windowResizeProxy) {\n window.removeEventListener('resize', this.windowResizeProxy);\n this.windowResizeProxy = null;\n }\n };\n // Dispatcher\n // -----------------------------------------------------------------------------------------------------------------\n Calendar.prototype.hydrate = function () {\n var _this = this;\n this.state = this.buildInitialState();\n var rawSources = this.opt('eventSources') || [];\n var singleRawSource = this.opt('events');\n var sources = []; // parsed\n if (singleRawSource) {\n rawSources.unshift(singleRawSource);\n }\n for (var _i = 0, rawSources_1 = rawSources; _i < rawSources_1.length; _i++) {\n var rawSource = rawSources_1[_i];\n var source = parseEventSource(rawSource, this);\n if (source) {\n sources.push(source);\n }\n }\n this.batchRendering(function () {\n _this.dispatch({ type: 'INIT' }); // pass in sources here?\n _this.dispatch({ type: 'ADD_EVENT_SOURCES', sources: sources });\n _this.dispatch({\n type: 'SET_VIEW_TYPE',\n viewType: _this.opt('defaultView') || _this.pluginSystem.hooks.defaultView\n });\n });\n };\n Calendar.prototype.buildInitialState = function () {\n return {\n viewType: null,\n loadingLevel: 0,\n eventSourceLoadingLevel: 0,\n currentDate: this.getInitialDate(),\n dateProfile: null,\n eventSources: {},\n eventStore: createEmptyEventStore(),\n dateSelection: null,\n eventSelection: '',\n eventDrag: null,\n eventResize: null\n };\n };\n Calendar.prototype.dispatch = function (action) {\n this.actionQueue.push(action);\n if (!this.isReducing) {\n this.isReducing = true;\n var oldState = this.state;\n while (this.actionQueue.length) {\n this.state = this.reduce(this.state, this.actionQueue.shift(), this);\n }\n var newState = this.state;\n this.isReducing = false;\n if (!oldState.loadingLevel && newState.loadingLevel) {\n this.publiclyTrigger('loading', [true]);\n }\n else if (oldState.loadingLevel && !newState.loadingLevel) {\n this.publiclyTrigger('loading', [false]);\n }\n var view = this.component && this.component.view;\n if (oldState.eventStore !== newState.eventStore) {\n if (oldState.eventStore) {\n this.isEventsUpdated = true;\n }\n }\n if (oldState.dateProfile !== newState.dateProfile) {\n if (oldState.dateProfile && view) { // why would view be null!?\n this.publiclyTrigger('datesDestroy', [\n {\n view: view,\n el: view.el\n }\n ]);\n }\n this.isDatesUpdated = true;\n }\n if (oldState.viewType !== newState.viewType) {\n if (oldState.viewType && view) { // why would view be null!?\n this.publiclyTrigger('viewSkeletonDestroy', [\n {\n view: view,\n el: view.el\n }\n ]);\n }\n this.isViewUpdated = true;\n }\n this.requestRerender();\n }\n };\n Calendar.prototype.reduce = function (state, action, calendar) {\n return reduce(state, action, calendar);\n };\n // Render Queue\n // -----------------------------------------------------------------------------------------------------------------\n Calendar.prototype.requestRerender = function () {\n this.needsRerender = true;\n this.delayedRerender(); // will call a debounced-version of tryRerender\n };\n Calendar.prototype.tryRerender = function () {\n if (this.component && // must be accepting renders\n this.needsRerender && // indicates that a rerender was requested\n !this.renderingPauseDepth && // not paused\n !this.isRendering // not currently in the render loop\n ) {\n this.executeRender();\n }\n };\n Calendar.prototype.batchRendering = function (func) {\n this.renderingPauseDepth++;\n func();\n this.renderingPauseDepth--;\n if (this.needsRerender) {\n this.requestRerender();\n }\n };\n // Rendering\n // -----------------------------------------------------------------------------------------------------------------\n Calendar.prototype.executeRender = function () {\n // clear these BEFORE the render so that new values will accumulate during render\n this.needsRerender = false;\n this.isRendering = true;\n this.renderComponent();\n this.isRendering = false;\n // received a rerender request while rendering\n if (this.needsRerender) {\n this.delayedRerender();\n }\n };\n /*\n don't call this directly. use executeRender instead\n */\n Calendar.prototype.renderComponent = function () {\n var _a = this, state = _a.state, component = _a.component;\n var viewType = state.viewType;\n var viewSpec = this.viewSpecs[viewType];\n if (!viewSpec) {\n throw new Error(\"View type \\\"\" + viewType + \"\\\" is not valid\");\n }\n // if event sources are still loading and progressive rendering hasn't been enabled,\n // keep rendering the last fully loaded set of events\n var renderableEventStore = this.renderableEventStore =\n (state.eventSourceLoadingLevel && !this.opt('progressiveEventRendering')) ?\n this.renderableEventStore :\n state.eventStore;\n var eventUiSingleBase = this.buildEventUiSingleBase(viewSpec.options);\n var eventUiBySource = this.buildEventUiBySource(state.eventSources);\n var eventUiBases = this.eventUiBases = this.buildEventUiBases(renderableEventStore.defs, eventUiSingleBase, eventUiBySource);\n component.receiveProps(__assign({}, state, { viewSpec: viewSpec, dateProfileGenerator: this.dateProfileGenerators[viewType], dateProfile: state.dateProfile, eventStore: renderableEventStore, eventUiBases: eventUiBases, dateSelection: state.dateSelection, eventSelection: state.eventSelection, eventDrag: state.eventDrag, eventResize: state.eventResize }), this.buildComponentContext(this.theme, this.dateEnv, this.optionsManager.computed));\n if (this.isViewUpdated) {\n this.isViewUpdated = false;\n this.publiclyTrigger('viewSkeletonRender', [\n {\n view: component.view,\n el: component.view.el\n }\n ]);\n }\n if (this.isDatesUpdated) {\n this.isDatesUpdated = false;\n this.publiclyTrigger('datesRender', [\n {\n view: component.view,\n el: component.view.el\n }\n ]);\n }\n if (this.isEventsUpdated) {\n this.isEventsUpdated = false;\n }\n this.releaseAfterSizingTriggers();\n };\n // Options\n // -----------------------------------------------------------------------------------------------------------------\n Calendar.prototype.setOption = function (name, val) {\n var _a;\n this.mutateOptions((_a = {}, _a[name] = val, _a), [], true);\n };\n Calendar.prototype.getOption = function (name) {\n return this.optionsManager.computed[name];\n };\n Calendar.prototype.opt = function (name) {\n return this.optionsManager.computed[name];\n };\n Calendar.prototype.viewOpt = function (name) {\n return this.viewOpts()[name];\n };\n Calendar.prototype.viewOpts = function () {\n return this.viewSpecs[this.state.viewType].options;\n };\n /*\n handles option changes (like a diff)\n */\n Calendar.prototype.mutateOptions = function (updates, removals, isDynamic, deepEqual) {\n var _this = this;\n var changeHandlers = this.pluginSystem.hooks.optionChangeHandlers;\n var normalUpdates = {};\n var specialUpdates = {};\n var oldDateEnv = this.dateEnv; // do this before handleOptions\n var isTimeZoneDirty = false;\n var isSizeDirty = false;\n var anyDifficultOptions = Boolean(removals.length);\n for (var name_1 in updates) {\n if (changeHandlers[name_1]) {\n specialUpdates[name_1] = updates[name_1];\n }\n else {\n normalUpdates[name_1] = updates[name_1];\n }\n }\n for (var name_2 in normalUpdates) {\n if (/^(height|contentHeight|aspectRatio)$/.test(name_2)) {\n isSizeDirty = true;\n }\n else if (/^(defaultDate|defaultView)$/.test(name_2)) ;\n else {\n anyDifficultOptions = true;\n if (name_2 === 'timeZone') {\n isTimeZoneDirty = true;\n }\n }\n }\n this.optionsManager.mutate(normalUpdates, removals, isDynamic);\n if (anyDifficultOptions) {\n this.handleOptions(this.optionsManager.computed);\n }\n this.batchRendering(function () {\n if (anyDifficultOptions) {\n if (isTimeZoneDirty) {\n _this.dispatch({\n type: 'CHANGE_TIMEZONE',\n oldDateEnv: oldDateEnv\n });\n }\n /* HACK\n has the same effect as calling this.requestRerender()\n but recomputes the state's dateProfile\n */\n _this.dispatch({\n type: 'SET_VIEW_TYPE',\n viewType: _this.state.viewType\n });\n }\n else if (isSizeDirty) {\n _this.updateSize();\n }\n // special updates\n if (deepEqual) {\n for (var name_3 in specialUpdates) {\n changeHandlers[name_3](specialUpdates[name_3], _this, deepEqual);\n }\n }\n });\n };\n /*\n rebuilds things based off of a complete set of refined options\n */\n Calendar.prototype.handleOptions = function (options) {\n var _this = this;\n var pluginHooks = this.pluginSystem.hooks;\n this.defaultAllDayEventDuration = createDuration(options.defaultAllDayEventDuration);\n this.defaultTimedEventDuration = createDuration(options.defaultTimedEventDuration);\n this.delayedRerender = this.buildDelayedRerender(options.rerenderDelay);\n this.theme = this.buildTheme(options);\n var available = this.parseRawLocales(options.locales);\n this.availableRawLocales = available.map;\n var locale = this.buildLocale(options.locale || available.defaultCode, available.map);\n this.dateEnv = this.buildDateEnv(locale, options.timeZone, pluginHooks.namedTimeZonedImpl, options.firstDay, options.weekNumberCalculation, options.weekLabel, pluginHooks.cmdFormatter);\n this.selectionConfig = this.buildSelectionConfig(options); // needs dateEnv. do after :(\n // ineffecient to do every time?\n this.viewSpecs = buildViewSpecs(pluginHooks.views, this.optionsManager);\n // ineffecient to do every time?\n this.dateProfileGenerators = mapHash(this.viewSpecs, function (viewSpec) {\n return new viewSpec.class.prototype.dateProfileGeneratorClass(viewSpec, _this);\n });\n };\n Calendar.prototype.getAvailableLocaleCodes = function () {\n return Object.keys(this.availableRawLocales);\n };\n Calendar.prototype._buildSelectionConfig = function (rawOpts) {\n return processScopedUiProps('select', rawOpts, this);\n };\n Calendar.prototype._buildEventUiSingleBase = function (rawOpts) {\n if (rawOpts.editable) { // so 'editable' affected events\n rawOpts = __assign({}, rawOpts, { eventEditable: true });\n }\n return processScopedUiProps('event', rawOpts, this);\n };\n // Trigger\n // -----------------------------------------------------------------------------------------------------------------\n Calendar.prototype.hasPublicHandlers = function (name) {\n return this.hasHandlers(name) ||\n this.opt(name); // handler specified in options\n };\n Calendar.prototype.publiclyTrigger = function (name, args) {\n var optHandler = this.opt(name);\n this.triggerWith(name, this, args);\n if (optHandler) {\n return optHandler.apply(this, args);\n }\n };\n Calendar.prototype.publiclyTriggerAfterSizing = function (name, args) {\n var afterSizingTriggers = this.afterSizingTriggers;\n (afterSizingTriggers[name] || (afterSizingTriggers[name] = [])).push(args);\n };\n Calendar.prototype.releaseAfterSizingTriggers = function () {\n var afterSizingTriggers = this.afterSizingTriggers;\n for (var name_4 in afterSizingTriggers) {\n for (var _i = 0, _a = afterSizingTriggers[name_4]; _i < _a.length; _i++) {\n var args = _a[_i];\n this.publiclyTrigger(name_4, args);\n }\n }\n this.afterSizingTriggers = {};\n };\n // View\n // -----------------------------------------------------------------------------------------------------------------\n // Returns a boolean about whether the view is okay to instantiate at some point\n Calendar.prototype.isValidViewType = function (viewType) {\n return Boolean(this.viewSpecs[viewType]);\n };\n Calendar.prototype.changeView = function (viewType, dateOrRange) {\n var dateMarker = null;\n if (dateOrRange) {\n if (dateOrRange.start && dateOrRange.end) { // a range\n this.optionsManager.mutate({ visibleRange: dateOrRange }, []); // will not rerender\n this.handleOptions(this.optionsManager.computed); // ...but yuck\n }\n else { // a date\n dateMarker = this.dateEnv.createMarker(dateOrRange); // just like gotoDate\n }\n }\n this.unselect();\n this.dispatch({\n type: 'SET_VIEW_TYPE',\n viewType: viewType,\n dateMarker: dateMarker\n });\n };\n // Forces navigation to a view for the given date.\n // `viewType` can be a specific view name or a generic one like \"week\" or \"day\".\n // needs to change\n Calendar.prototype.zoomTo = function (dateMarker, viewType) {\n var spec;\n viewType = viewType || 'day'; // day is default zoom\n spec = this.viewSpecs[viewType] ||\n this.getUnitViewSpec(viewType);\n this.unselect();\n if (spec) {\n this.dispatch({\n type: 'SET_VIEW_TYPE',\n viewType: spec.type,\n dateMarker: dateMarker\n });\n }\n else {\n this.dispatch({\n type: 'SET_DATE',\n dateMarker: dateMarker\n });\n }\n };\n // Given a duration singular unit, like \"week\" or \"day\", finds a matching view spec.\n // Preference is given to views that have corresponding buttons.\n Calendar.prototype.getUnitViewSpec = function (unit) {\n var component = this.component;\n var viewTypes = [];\n var i;\n var spec;\n // put views that have buttons first. there will be duplicates, but oh\n if (component.header) {\n viewTypes.push.apply(viewTypes, component.header.viewsWithButtons);\n }\n if (component.footer) {\n viewTypes.push.apply(viewTypes, component.footer.viewsWithButtons);\n }\n for (var viewType in this.viewSpecs) {\n viewTypes.push(viewType);\n }\n for (i = 0; i < viewTypes.length; i++) {\n spec = this.viewSpecs[viewTypes[i]];\n if (spec) {\n if (spec.singleUnit === unit) {\n return spec;\n }\n }\n }\n };\n // Current Date\n // -----------------------------------------------------------------------------------------------------------------\n Calendar.prototype.getInitialDate = function () {\n var defaultDateInput = this.opt('defaultDate');\n // compute the initial ambig-timezone date\n if (defaultDateInput != null) {\n return this.dateEnv.createMarker(defaultDateInput);\n }\n else {\n return this.getNow(); // getNow already returns unzoned\n }\n };\n Calendar.prototype.prev = function () {\n this.unselect();\n this.dispatch({ type: 'PREV' });\n };\n Calendar.prototype.next = function () {\n this.unselect();\n this.dispatch({ type: 'NEXT' });\n };\n Calendar.prototype.prevYear = function () {\n this.unselect();\n this.dispatch({\n type: 'SET_DATE',\n dateMarker: this.dateEnv.addYears(this.state.currentDate, -1)\n });\n };\n Calendar.prototype.nextYear = function () {\n this.unselect();\n this.dispatch({\n type: 'SET_DATE',\n dateMarker: this.dateEnv.addYears(this.state.currentDate, 1)\n });\n };\n Calendar.prototype.today = function () {\n this.unselect();\n this.dispatch({\n type: 'SET_DATE',\n dateMarker: this.getNow()\n });\n };\n Calendar.prototype.gotoDate = function (zonedDateInput) {\n this.unselect();\n this.dispatch({\n type: 'SET_DATE',\n dateMarker: this.dateEnv.createMarker(zonedDateInput)\n });\n };\n Calendar.prototype.incrementDate = function (deltaInput) {\n var delta = createDuration(deltaInput);\n if (delta) { // else, warn about invalid input?\n this.unselect();\n this.dispatch({\n type: 'SET_DATE',\n dateMarker: this.dateEnv.add(this.state.currentDate, delta)\n });\n }\n };\n // for external API\n Calendar.prototype.getDate = function () {\n return this.dateEnv.toDate(this.state.currentDate);\n };\n // Date Formatting Utils\n // -----------------------------------------------------------------------------------------------------------------\n Calendar.prototype.formatDate = function (d, formatter) {\n var dateEnv = this.dateEnv;\n return dateEnv.format(dateEnv.createMarker(d), createFormatter(formatter));\n };\n // `settings` is for formatter AND isEndExclusive\n Calendar.prototype.formatRange = function (d0, d1, settings) {\n var dateEnv = this.dateEnv;\n return dateEnv.formatRange(dateEnv.createMarker(d0), dateEnv.createMarker(d1), createFormatter(settings, this.opt('defaultRangeSeparator')), settings);\n };\n Calendar.prototype.formatIso = function (d, omitTime) {\n var dateEnv = this.dateEnv;\n return dateEnv.formatIso(dateEnv.createMarker(d), { omitTime: omitTime });\n };\n // Sizing\n // -----------------------------------------------------------------------------------------------------------------\n Calendar.prototype.windowResize = function (ev) {\n if (!this.isHandlingWindowResize &&\n this.component && // why?\n ev.target === window // not a jqui resize event\n ) {\n this.isHandlingWindowResize = true;\n this.updateSize();\n this.publiclyTrigger('windowResize', [this.view]);\n this.isHandlingWindowResize = false;\n }\n };\n Calendar.prototype.updateSize = function () {\n if (this.component) { // when?\n this.component.updateSize(true);\n }\n };\n // Component Registration\n // -----------------------------------------------------------------------------------------------------------------\n Calendar.prototype.registerInteractiveComponent = function (component, settingsInput) {\n var settings = parseInteractionSettings(component, settingsInput);\n var DEFAULT_INTERACTIONS = [\n EventClicking,\n EventHovering\n ];\n var interactionClasses = DEFAULT_INTERACTIONS.concat(this.pluginSystem.hooks.componentInteractions);\n var interactions = interactionClasses.map(function (interactionClass) {\n return new interactionClass(settings);\n });\n this.interactionsStore[component.uid] = interactions;\n interactionSettingsStore[component.uid] = settings;\n };\n Calendar.prototype.unregisterInteractiveComponent = function (component) {\n for (var _i = 0, _a = this.interactionsStore[component.uid]; _i < _a.length; _i++) {\n var listener = _a[_i];\n listener.destroy();\n }\n delete this.interactionsStore[component.uid];\n delete interactionSettingsStore[component.uid];\n };\n // Date Selection / Event Selection / DayClick\n // -----------------------------------------------------------------------------------------------------------------\n // this public method receives start/end dates in any format, with any timezone\n // NOTE: args were changed from v3\n Calendar.prototype.select = function (dateOrObj, endDate) {\n var selectionInput;\n if (endDate == null) {\n if (dateOrObj.start != null) {\n selectionInput = dateOrObj;\n }\n else {\n selectionInput = {\n start: dateOrObj,\n end: null\n };\n }\n }\n else {\n selectionInput = {\n start: dateOrObj,\n end: endDate\n };\n }\n var selection = parseDateSpan(selectionInput, this.dateEnv, createDuration({ days: 1 }) // TODO: cache this?\n );\n if (selection) { // throw parse error otherwise?\n this.dispatch({ type: 'SELECT_DATES', selection: selection });\n this.triggerDateSelect(selection);\n }\n };\n // public method\n Calendar.prototype.unselect = function (pev) {\n if (this.state.dateSelection) {\n this.dispatch({ type: 'UNSELECT_DATES' });\n this.triggerDateUnselect(pev);\n }\n };\n Calendar.prototype.triggerDateSelect = function (selection, pev) {\n var arg = __assign({}, this.buildDateSpanApi(selection), { jsEvent: pev ? pev.origEvent : null, view: this.view });\n this.publiclyTrigger('select', [arg]);\n };\n Calendar.prototype.triggerDateUnselect = function (pev) {\n this.publiclyTrigger('unselect', [\n {\n jsEvent: pev ? pev.origEvent : null,\n view: this.view\n }\n ]);\n };\n // TODO: receive pev?\n Calendar.prototype.triggerDateClick = function (dateSpan, dayEl, view, ev) {\n var arg = __assign({}, this.buildDatePointApi(dateSpan), { dayEl: dayEl, jsEvent: ev, // Is this always a mouse event? See #4655\n view: view });\n this.publiclyTrigger('dateClick', [arg]);\n };\n Calendar.prototype.buildDatePointApi = function (dateSpan) {\n var props = {};\n for (var _i = 0, _a = this.pluginSystem.hooks.datePointTransforms; _i < _a.length; _i++) {\n var transform = _a[_i];\n __assign(props, transform(dateSpan, this));\n }\n __assign(props, buildDatePointApi(dateSpan, this.dateEnv));\n return props;\n };\n Calendar.prototype.buildDateSpanApi = function (dateSpan) {\n var props = {};\n for (var _i = 0, _a = this.pluginSystem.hooks.dateSpanTransforms; _i < _a.length; _i++) {\n var transform = _a[_i];\n __assign(props, transform(dateSpan, this));\n }\n __assign(props, buildDateSpanApi(dateSpan, this.dateEnv));\n return props;\n };\n // Date Utils\n // -----------------------------------------------------------------------------------------------------------------\n // Returns a DateMarker for the current date, as defined by the client's computer or from the `now` option\n Calendar.prototype.getNow = function () {\n var now = this.opt('now');\n if (typeof now === 'function') {\n now = now();\n }\n if (now == null) {\n return this.dateEnv.createNowMarker();\n }\n return this.dateEnv.createMarker(now);\n };\n // Event-Date Utilities\n // -----------------------------------------------------------------------------------------------------------------\n // Given an event's allDay status and start date, return what its fallback end date should be.\n // TODO: rename to computeDefaultEventEnd\n Calendar.prototype.getDefaultEventEnd = function (allDay, marker) {\n var end = marker;\n if (allDay) {\n end = startOfDay(end);\n end = this.dateEnv.add(end, this.defaultAllDayEventDuration);\n }\n else {\n end = this.dateEnv.add(end, this.defaultTimedEventDuration);\n }\n return end;\n };\n // Public Events API\n // -----------------------------------------------------------------------------------------------------------------\n Calendar.prototype.addEvent = function (eventInput, sourceInput) {\n if (eventInput instanceof EventApi) {\n var def = eventInput._def;\n var instance = eventInput._instance;\n // not already present? don't want to add an old snapshot\n if (!this.state.eventStore.defs[def.defId]) {\n this.dispatch({\n type: 'ADD_EVENTS',\n eventStore: eventTupleToStore({ def: def, instance: instance }) // TODO: better util for two args?\n });\n }\n return eventInput;\n }\n var sourceId;\n if (sourceInput instanceof EventSourceApi) {\n sourceId = sourceInput.internalEventSource.sourceId;\n }\n else if (sourceInput != null) {\n var sourceApi = this.getEventSourceById(sourceInput); // TODO: use an internal function\n if (!sourceApi) {\n console.warn('Could not find an event source with ID \"' + sourceInput + '\"'); // TODO: test\n return null;\n }\n else {\n sourceId = sourceApi.internalEventSource.sourceId;\n }\n }\n var tuple = parseEvent(eventInput, sourceId, this);\n if (tuple) {\n this.dispatch({\n type: 'ADD_EVENTS',\n eventStore: eventTupleToStore(tuple)\n });\n return new EventApi(this, tuple.def, tuple.def.recurringDef ? null : tuple.instance);\n }\n return null;\n };\n // TODO: optimize\n Calendar.prototype.getEventById = function (id) {\n var _a = this.state.eventStore, defs = _a.defs, instances = _a.instances;\n id = String(id);\n for (var defId in defs) {\n var def = defs[defId];\n if (def.publicId === id) {\n if (def.recurringDef) {\n return new EventApi(this, def, null);\n }\n else {\n for (var instanceId in instances) {\n var instance = instances[instanceId];\n if (instance.defId === def.defId) {\n return new EventApi(this, def, instance);\n }\n }\n }\n }\n }\n return null;\n };\n Calendar.prototype.getEvents = function () {\n var _a = this.state.eventStore, defs = _a.defs, instances = _a.instances;\n var eventApis = [];\n for (var id in instances) {\n var instance = instances[id];\n var def = defs[instance.defId];\n eventApis.push(new EventApi(this, def, instance));\n }\n return eventApis;\n };\n Calendar.prototype.removeAllEvents = function () {\n this.dispatch({ type: 'REMOVE_ALL_EVENTS' });\n };\n Calendar.prototype.rerenderEvents = function () {\n this.dispatch({ type: 'RESET_EVENTS' });\n };\n // Public Event Sources API\n // -----------------------------------------------------------------------------------------------------------------\n Calendar.prototype.getEventSources = function () {\n var sourceHash = this.state.eventSources;\n var sourceApis = [];\n for (var internalId in sourceHash) {\n sourceApis.push(new EventSourceApi(this, sourceHash[internalId]));\n }\n return sourceApis;\n };\n Calendar.prototype.getEventSourceById = function (id) {\n var sourceHash = this.state.eventSources;\n id = String(id);\n for (var sourceId in sourceHash) {\n if (sourceHash[sourceId].publicId === id) {\n return new EventSourceApi(this, sourceHash[sourceId]);\n }\n }\n return null;\n };\n Calendar.prototype.addEventSource = function (sourceInput) {\n if (sourceInput instanceof EventSourceApi) {\n // not already present? don't want to add an old snapshot\n if (!this.state.eventSources[sourceInput.internalEventSource.sourceId]) {\n this.dispatch({\n type: 'ADD_EVENT_SOURCES',\n sources: [sourceInput.internalEventSource]\n });\n }\n return sourceInput;\n }\n var eventSource = parseEventSource(sourceInput, this);\n if (eventSource) { // TODO: error otherwise?\n this.dispatch({ type: 'ADD_EVENT_SOURCES', sources: [eventSource] });\n return new EventSourceApi(this, eventSource);\n }\n return null;\n };\n Calendar.prototype.removeAllEventSources = function () {\n this.dispatch({ type: 'REMOVE_ALL_EVENT_SOURCES' });\n };\n Calendar.prototype.refetchEvents = function () {\n this.dispatch({ type: 'FETCH_EVENT_SOURCES' });\n };\n // Scroll\n // -----------------------------------------------------------------------------------------------------------------\n Calendar.prototype.scrollToTime = function (timeInput) {\n var duration = createDuration(timeInput);\n if (duration) {\n this.component.view.scrollToDuration(duration);\n }\n };\n return Calendar;\n }());\n EmitterMixin.mixInto(Calendar);\n // for memoizers\n // -----------------------------------------------------------------------------------------------------------------\n function buildComponentContext$1(theme, dateEnv, options) {\n return new ComponentContext(this, theme, dateEnv, options, null);\n }\n function buildDateEnv(locale, timeZone, namedTimeZoneImpl, firstDay, weekNumberCalculation, weekLabel, cmdFormatter) {\n return new DateEnv({\n calendarSystem: 'gregory',\n timeZone: timeZone,\n namedTimeZoneImpl: namedTimeZoneImpl,\n locale: locale,\n weekNumberCalculation: weekNumberCalculation,\n firstDay: firstDay,\n weekLabel: weekLabel,\n cmdFormatter: cmdFormatter\n });\n }\n function buildTheme(calendarOptions) {\n var themeClass = this.pluginSystem.hooks.themeClasses[calendarOptions.themeSystem] || StandardTheme;\n return new themeClass(calendarOptions);\n }\n function buildDelayedRerender(wait) {\n var func = this.tryRerender.bind(this);\n if (wait != null) {\n func = debounce(func, wait);\n }\n return func;\n }\n function buildEventUiBySource(eventSources) {\n return mapHash(eventSources, function (eventSource) {\n return eventSource.ui;\n });\n }\n function buildEventUiBases(eventDefs, eventUiSingleBase, eventUiBySource) {\n var eventUiBases = { '': eventUiSingleBase };\n for (var defId in eventDefs) {\n var def = eventDefs[defId];\n if (def.sourceId && eventUiBySource[def.sourceId]) {\n eventUiBases[defId] = eventUiBySource[def.sourceId];\n }\n }\n return eventUiBases;\n }\n\n var View = /** @class */ (function (_super) {\n __extends(View, _super);\n function View(viewSpec, parentEl) {\n var _this = _super.call(this, createElement('div', { className: 'fc-view fc-' + viewSpec.type + '-view' })) || this;\n _this.renderDatesMem = memoizeRendering(_this.renderDatesWrap, _this.unrenderDatesWrap);\n _this.renderBusinessHoursMem = memoizeRendering(_this.renderBusinessHours, _this.unrenderBusinessHours, [_this.renderDatesMem]);\n _this.renderDateSelectionMem = memoizeRendering(_this.renderDateSelectionWrap, _this.unrenderDateSelectionWrap, [_this.renderDatesMem]);\n _this.renderEventsMem = memoizeRendering(_this.renderEvents, _this.unrenderEvents, [_this.renderDatesMem]);\n _this.renderEventSelectionMem = memoizeRendering(_this.renderEventSelectionWrap, _this.unrenderEventSelectionWrap, [_this.renderEventsMem]);\n _this.renderEventDragMem = memoizeRendering(_this.renderEventDragWrap, _this.unrenderEventDragWrap, [_this.renderDatesMem]);\n _this.renderEventResizeMem = memoizeRendering(_this.renderEventResizeWrap, _this.unrenderEventResizeWrap, [_this.renderDatesMem]);\n _this.viewSpec = viewSpec;\n _this.type = viewSpec.type;\n parentEl.appendChild(_this.el);\n _this.initialize();\n return _this;\n }\n View.prototype.initialize = function () {\n };\n Object.defineProperty(View.prototype, \"activeStart\", {\n // Date Setting/Unsetting\n // -----------------------------------------------------------------------------------------------------------------\n get: function () {\n return this.context.dateEnv.toDate(this.props.dateProfile.activeRange.start);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"activeEnd\", {\n get: function () {\n return this.context.dateEnv.toDate(this.props.dateProfile.activeRange.end);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"currentStart\", {\n get: function () {\n return this.context.dateEnv.toDate(this.props.dateProfile.currentRange.start);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"currentEnd\", {\n get: function () {\n return this.context.dateEnv.toDate(this.props.dateProfile.currentRange.end);\n },\n enumerable: true,\n configurable: true\n });\n // General Rendering\n // -----------------------------------------------------------------------------------------------------------------\n View.prototype.render = function (props, context) {\n this.renderDatesMem(props.dateProfile);\n this.renderBusinessHoursMem(props.businessHours);\n this.renderDateSelectionMem(props.dateSelection);\n this.renderEventsMem(props.eventStore);\n this.renderEventSelectionMem(props.eventSelection);\n this.renderEventDragMem(props.eventDrag);\n this.renderEventResizeMem(props.eventResize);\n };\n View.prototype.beforeUpdate = function () {\n this.addScroll(this.queryScroll());\n };\n View.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.renderDatesMem.unrender(); // should unrender everything else\n };\n // Sizing\n // -----------------------------------------------------------------------------------------------------------------\n View.prototype.updateSize = function (isResize, viewHeight, isAuto) {\n var calendar = this.context.calendar;\n if (isResize) {\n this.addScroll(this.queryScroll()); // NOTE: same code as in beforeUpdate\n }\n if (isResize || // HACKS...\n calendar.isViewUpdated ||\n calendar.isDatesUpdated ||\n calendar.isEventsUpdated) {\n // sort of the catch-all sizing\n // anything that might cause dimension changes\n this.updateBaseSize(isResize, viewHeight, isAuto);\n }\n // NOTE: popScroll is called by CalendarComponent\n };\n View.prototype.updateBaseSize = function (isResize, viewHeight, isAuto) {\n };\n // Date Rendering\n // -----------------------------------------------------------------------------------------------------------------\n View.prototype.renderDatesWrap = function (dateProfile) {\n this.renderDates(dateProfile);\n this.addScroll({\n duration: createDuration(this.context.options.scrollTime)\n });\n };\n View.prototype.unrenderDatesWrap = function () {\n this.stopNowIndicator();\n this.unrenderDates();\n };\n View.prototype.renderDates = function (dateProfile) { };\n View.prototype.unrenderDates = function () { };\n // Business Hours\n // -----------------------------------------------------------------------------------------------------------------\n View.prototype.renderBusinessHours = function (businessHours) { };\n View.prototype.unrenderBusinessHours = function () { };\n // Date Selection\n // -----------------------------------------------------------------------------------------------------------------\n View.prototype.renderDateSelectionWrap = function (selection) {\n if (selection) {\n this.renderDateSelection(selection);\n }\n };\n View.prototype.unrenderDateSelectionWrap = function (selection) {\n if (selection) {\n this.unrenderDateSelection(selection);\n }\n };\n View.prototype.renderDateSelection = function (selection) { };\n View.prototype.unrenderDateSelection = function (selection) { };\n // Event Rendering\n // -----------------------------------------------------------------------------------------------------------------\n View.prototype.renderEvents = function (eventStore) { };\n View.prototype.unrenderEvents = function () { };\n // util for subclasses\n View.prototype.sliceEvents = function (eventStore, allDay) {\n var props = this.props;\n return sliceEventStore(eventStore, props.eventUiBases, props.dateProfile.activeRange, allDay ? this.context.nextDayThreshold : null).fg;\n };\n // Event Selection\n // -----------------------------------------------------------------------------------------------------------------\n View.prototype.renderEventSelectionWrap = function (instanceId) {\n if (instanceId) {\n this.renderEventSelection(instanceId);\n }\n };\n View.prototype.unrenderEventSelectionWrap = function (instanceId) {\n if (instanceId) {\n this.unrenderEventSelection(instanceId);\n }\n };\n View.prototype.renderEventSelection = function (instanceId) { };\n View.prototype.unrenderEventSelection = function (instanceId) { };\n // Event Drag\n // -----------------------------------------------------------------------------------------------------------------\n View.prototype.renderEventDragWrap = function (state) {\n if (state) {\n this.renderEventDrag(state);\n }\n };\n View.prototype.unrenderEventDragWrap = function (state) {\n if (state) {\n this.unrenderEventDrag(state);\n }\n };\n View.prototype.renderEventDrag = function (state) { };\n View.prototype.unrenderEventDrag = function (state) { };\n // Event Resize\n // -----------------------------------------------------------------------------------------------------------------\n View.prototype.renderEventResizeWrap = function (state) {\n if (state) {\n this.renderEventResize(state);\n }\n };\n View.prototype.unrenderEventResizeWrap = function (state) {\n if (state) {\n this.unrenderEventResize(state);\n }\n };\n View.prototype.renderEventResize = function (state) { };\n View.prototype.unrenderEventResize = function (state) { };\n /* Now Indicator\n ------------------------------------------------------------------------------------------------------------------*/\n // Immediately render the current time indicator and begins re-rendering it at an interval,\n // which is defined by this.getNowIndicatorUnit().\n // TODO: somehow do this for the current whole day's background too\n // USAGE: must be called manually from subclasses' render methods! don't need to call stopNowIndicator tho\n View.prototype.startNowIndicator = function (dateProfile, dateProfileGenerator) {\n var _this = this;\n var _a = this.context, calendar = _a.calendar, dateEnv = _a.dateEnv, options = _a.options;\n var unit;\n var update;\n var delay; // ms wait value\n if (options.nowIndicator && !this.initialNowDate) {\n unit = this.getNowIndicatorUnit(dateProfile, dateProfileGenerator);\n if (unit) {\n update = this.updateNowIndicator.bind(this);\n this.initialNowDate = calendar.getNow();\n this.initialNowQueriedMs = new Date().valueOf();\n // wait until the beginning of the next interval\n delay = dateEnv.add(dateEnv.startOf(this.initialNowDate, unit), createDuration(1, unit)).valueOf() - this.initialNowDate.valueOf();\n // TODO: maybe always use setTimeout, waiting until start of next unit\n this.nowIndicatorTimeoutID = setTimeout(function () {\n _this.nowIndicatorTimeoutID = null;\n update();\n if (unit === 'second') {\n delay = 1000; // every second\n }\n else {\n delay = 1000 * 60; // otherwise, every minute\n }\n _this.nowIndicatorIntervalID = setInterval(update, delay); // update every interval\n }, delay);\n }\n // rendering will be initiated in updateSize\n }\n };\n // rerenders the now indicator, computing the new current time from the amount of time that has passed\n // since the initial getNow call.\n View.prototype.updateNowIndicator = function () {\n if (this.props.dateProfile && // a way to determine if dates were rendered yet\n this.initialNowDate // activated before?\n ) {\n this.unrenderNowIndicator(); // won't unrender if unnecessary\n this.renderNowIndicator(addMs(this.initialNowDate, new Date().valueOf() - this.initialNowQueriedMs));\n this.isNowIndicatorRendered = true;\n }\n };\n // Immediately unrenders the view's current time indicator and stops any re-rendering timers.\n // Won't cause side effects if indicator isn't rendered.\n View.prototype.stopNowIndicator = function () {\n if (this.nowIndicatorTimeoutID) {\n clearTimeout(this.nowIndicatorTimeoutID);\n this.nowIndicatorTimeoutID = null;\n }\n if (this.nowIndicatorIntervalID) {\n clearInterval(this.nowIndicatorIntervalID);\n this.nowIndicatorIntervalID = null;\n }\n if (this.isNowIndicatorRendered) {\n this.unrenderNowIndicator();\n this.isNowIndicatorRendered = false;\n }\n };\n View.prototype.getNowIndicatorUnit = function (dateProfile, dateProfileGenerator) {\n // subclasses should implement\n };\n // Renders a current time indicator at the given datetime\n View.prototype.renderNowIndicator = function (date) {\n // SUBCLASSES MUST PASS TO CHILDREN!\n };\n // Undoes the rendering actions from renderNowIndicator\n View.prototype.unrenderNowIndicator = function () {\n // SUBCLASSES MUST PASS TO CHILDREN!\n };\n /* Scroller\n ------------------------------------------------------------------------------------------------------------------*/\n View.prototype.addScroll = function (scroll, isForced) {\n if (isForced) {\n scroll.isForced = isForced;\n }\n __assign(this.queuedScroll || (this.queuedScroll = {}), scroll);\n };\n View.prototype.popScroll = function (isResize) {\n this.applyQueuedScroll(isResize);\n this.queuedScroll = null;\n };\n View.prototype.applyQueuedScroll = function (isResize) {\n if (this.queuedScroll) {\n this.applyScroll(this.queuedScroll, isResize);\n }\n };\n View.prototype.queryScroll = function () {\n var scroll = {};\n if (this.props.dateProfile) { // dates rendered yet?\n __assign(scroll, this.queryDateScroll());\n }\n return scroll;\n };\n View.prototype.applyScroll = function (scroll, isResize) {\n var duration = scroll.duration, isForced = scroll.isForced;\n if (duration != null && !isForced) {\n delete scroll.duration;\n if (this.props.dateProfile) { // dates rendered yet?\n __assign(scroll, this.computeDateScroll(duration));\n }\n }\n if (this.props.dateProfile) { // dates rendered yet?\n this.applyDateScroll(scroll);\n }\n };\n View.prototype.computeDateScroll = function (duration) {\n return {}; // subclasses must implement\n };\n View.prototype.queryDateScroll = function () {\n return {}; // subclasses must implement\n };\n View.prototype.applyDateScroll = function (scroll) {\n // subclasses must implement\n };\n // for API\n View.prototype.scrollToDuration = function (duration) {\n this.applyScroll({ duration: duration }, false);\n };\n return View;\n }(DateComponent));\n EmitterMixin.mixInto(View);\n View.prototype.usesMinMaxTime = false;\n View.prototype.dateProfileGeneratorClass = DateProfileGenerator;\n\n var FgEventRenderer = /** @class */ (function () {\n function FgEventRenderer() {\n this.segs = [];\n this.isSizeDirty = false;\n }\n FgEventRenderer.prototype.renderSegs = function (context, segs, mirrorInfo) {\n this.context = context;\n this.rangeUpdated(); // called too frequently :(\n // render an `.el` on each seg\n // returns a subset of the segs. segs that were actually rendered\n segs = this.renderSegEls(segs, mirrorInfo);\n this.segs = segs;\n this.attachSegs(segs, mirrorInfo);\n this.isSizeDirty = true;\n triggerRenderedSegs(this.context, this.segs, Boolean(mirrorInfo));\n };\n FgEventRenderer.prototype.unrender = function (context, _segs, mirrorInfo) {\n triggerWillRemoveSegs(this.context, this.segs, Boolean(mirrorInfo));\n this.detachSegs(this.segs);\n this.segs = [];\n };\n // Updates values that rely on options and also relate to range\n FgEventRenderer.prototype.rangeUpdated = function () {\n var options = this.context.options;\n var displayEventTime;\n var displayEventEnd;\n this.eventTimeFormat = createFormatter(options.eventTimeFormat || this.computeEventTimeFormat(), options.defaultRangeSeparator);\n displayEventTime = options.displayEventTime;\n if (displayEventTime == null) {\n displayEventTime = this.computeDisplayEventTime(); // might be based off of range\n }\n displayEventEnd = options.displayEventEnd;\n if (displayEventEnd == null) {\n displayEventEnd = this.computeDisplayEventEnd(); // might be based off of range\n }\n this.displayEventTime = displayEventTime;\n this.displayEventEnd = displayEventEnd;\n };\n // Renders and assigns an `el` property for each foreground event segment.\n // Only returns segments that successfully rendered.\n FgEventRenderer.prototype.renderSegEls = function (segs, mirrorInfo) {\n var html = '';\n var i;\n if (segs.length) { // don't build an empty html string\n // build a large concatenation of event segment HTML\n for (i = 0; i < segs.length; i++) {\n html += this.renderSegHtml(segs[i], mirrorInfo);\n }\n // Grab individual elements from the combined HTML string. Use each as the default rendering.\n // Then, compute the 'el' for each segment. An el might be null if the eventRender callback returned false.\n htmlToElements(html).forEach(function (el, i) {\n var seg = segs[i];\n if (el) {\n seg.el = el;\n }\n });\n segs = filterSegsViaEls(this.context, segs, Boolean(mirrorInfo));\n }\n return segs;\n };\n // Generic utility for generating the HTML classNames for an event segment's element\n FgEventRenderer.prototype.getSegClasses = function (seg, isDraggable, isResizable, mirrorInfo) {\n var classes = [\n 'fc-event',\n seg.isStart ? 'fc-start' : 'fc-not-start',\n seg.isEnd ? 'fc-end' : 'fc-not-end'\n ].concat(seg.eventRange.ui.classNames);\n if (isDraggable) {\n classes.push('fc-draggable');\n }\n if (isResizable) {\n classes.push('fc-resizable');\n }\n if (mirrorInfo) {\n classes.push('fc-mirror');\n if (mirrorInfo.isDragging) {\n classes.push('fc-dragging');\n }\n if (mirrorInfo.isResizing) {\n classes.push('fc-resizing');\n }\n }\n return classes;\n };\n // Compute the text that should be displayed on an event's element.\n // `range` can be the Event object itself, or something range-like, with at least a `start`.\n // If event times are disabled, or the event has no time, will return a blank string.\n // If not specified, formatter will default to the eventTimeFormat setting,\n // and displayEnd will default to the displayEventEnd setting.\n FgEventRenderer.prototype.getTimeText = function (eventRange, formatter, displayEnd) {\n var def = eventRange.def, instance = eventRange.instance;\n return this._getTimeText(instance.range.start, def.hasEnd ? instance.range.end : null, def.allDay, formatter, displayEnd, instance.forcedStartTzo, instance.forcedEndTzo);\n };\n FgEventRenderer.prototype._getTimeText = function (start, end, allDay, formatter, displayEnd, forcedStartTzo, forcedEndTzo) {\n var dateEnv = this.context.dateEnv;\n if (formatter == null) {\n formatter = this.eventTimeFormat;\n }\n if (displayEnd == null) {\n displayEnd = this.displayEventEnd;\n }\n if (this.displayEventTime && !allDay) {\n if (displayEnd && end) {\n return dateEnv.formatRange(start, end, formatter, {\n forcedStartTzo: forcedStartTzo,\n forcedEndTzo: forcedEndTzo\n });\n }\n else {\n return dateEnv.format(start, formatter, {\n forcedTzo: forcedStartTzo\n });\n }\n }\n return '';\n };\n FgEventRenderer.prototype.computeEventTimeFormat = function () {\n return {\n hour: 'numeric',\n minute: '2-digit',\n omitZeroMinute: true\n };\n };\n FgEventRenderer.prototype.computeDisplayEventTime = function () {\n return true;\n };\n FgEventRenderer.prototype.computeDisplayEventEnd = function () {\n return true;\n };\n // Utility for generating event skin-related CSS properties\n FgEventRenderer.prototype.getSkinCss = function (ui) {\n return {\n 'background-color': ui.backgroundColor,\n 'border-color': ui.borderColor,\n color: ui.textColor\n };\n };\n FgEventRenderer.prototype.sortEventSegs = function (segs) {\n var specs = this.context.eventOrderSpecs;\n var objs = segs.map(buildSegCompareObj);\n objs.sort(function (obj0, obj1) {\n return compareByFieldSpecs(obj0, obj1, specs);\n });\n return objs.map(function (c) {\n return c._seg;\n });\n };\n FgEventRenderer.prototype.computeSizes = function (force) {\n if (force || this.isSizeDirty) {\n this.computeSegSizes(this.segs);\n }\n };\n FgEventRenderer.prototype.assignSizes = function (force) {\n if (force || this.isSizeDirty) {\n this.assignSegSizes(this.segs);\n this.isSizeDirty = false;\n }\n };\n FgEventRenderer.prototype.computeSegSizes = function (segs) {\n };\n FgEventRenderer.prototype.assignSegSizes = function (segs) {\n };\n // Manipulation on rendered segs\n FgEventRenderer.prototype.hideByHash = function (hash) {\n if (hash) {\n for (var _i = 0, _a = this.segs; _i < _a.length; _i++) {\n var seg = _a[_i];\n if (hash[seg.eventRange.instance.instanceId]) {\n seg.el.style.visibility = 'hidden';\n }\n }\n }\n };\n FgEventRenderer.prototype.showByHash = function (hash) {\n if (hash) {\n for (var _i = 0, _a = this.segs; _i < _a.length; _i++) {\n var seg = _a[_i];\n if (hash[seg.eventRange.instance.instanceId]) {\n seg.el.style.visibility = '';\n }\n }\n }\n };\n FgEventRenderer.prototype.selectByInstanceId = function (instanceId) {\n if (instanceId) {\n for (var _i = 0, _a = this.segs; _i < _a.length; _i++) {\n var seg = _a[_i];\n var eventInstance = seg.eventRange.instance;\n if (eventInstance && eventInstance.instanceId === instanceId &&\n seg.el // necessary?\n ) {\n seg.el.classList.add('fc-selected');\n }\n }\n }\n };\n FgEventRenderer.prototype.unselectByInstanceId = function (instanceId) {\n if (instanceId) {\n for (var _i = 0, _a = this.segs; _i < _a.length; _i++) {\n var seg = _a[_i];\n if (seg.el) { // necessary?\n seg.el.classList.remove('fc-selected');\n }\n }\n }\n };\n return FgEventRenderer;\n }());\n // returns a object with all primitive props that can be compared\n function buildSegCompareObj(seg) {\n var eventDef = seg.eventRange.def;\n var range = seg.eventRange.instance.range;\n var start = range.start ? range.start.valueOf() : 0; // TODO: better support for open-range events\n var end = range.end ? range.end.valueOf() : 0; // \"\n return __assign({}, eventDef.extendedProps, eventDef, { id: eventDef.publicId, start: start,\n end: end, duration: end - start, allDay: Number(eventDef.allDay), _seg: seg // for later retrieval\n });\n }\n\n /*\n TODO: when refactoring this class, make a new FillRenderer instance for each `type`\n */\n var FillRenderer = /** @class */ (function () {\n function FillRenderer() {\n this.fillSegTag = 'div';\n this.dirtySizeFlags = {};\n this.containerElsByType = {};\n this.segsByType = {};\n }\n FillRenderer.prototype.getSegsByType = function (type) {\n return this.segsByType[type] || [];\n };\n FillRenderer.prototype.renderSegs = function (type, context, segs) {\n var _a;\n this.context = context;\n var renderedSegs = this.renderSegEls(type, segs); // assignes `.el` to each seg. returns successfully rendered segs\n var containerEls = this.attachSegs(type, renderedSegs);\n if (containerEls) {\n (_a = (this.containerElsByType[type] || (this.containerElsByType[type] = []))).push.apply(_a, containerEls);\n }\n this.segsByType[type] = renderedSegs;\n if (type === 'bgEvent') {\n triggerRenderedSegs(context, renderedSegs, false); // isMirror=false\n }\n this.dirtySizeFlags[type] = true;\n };\n // Unrenders a specific type of fill that is currently rendered on the grid\n FillRenderer.prototype.unrender = function (type, context) {\n var segs = this.segsByType[type];\n if (segs) {\n if (type === 'bgEvent') {\n triggerWillRemoveSegs(context, segs, false); // isMirror=false\n }\n this.detachSegs(type, segs);\n }\n };\n // Renders and assigns an `el` property for each fill segment. Generic enough to work with different types.\n // Only returns segments that successfully rendered.\n FillRenderer.prototype.renderSegEls = function (type, segs) {\n var _this = this;\n var html = '';\n var i;\n if (segs.length) {\n // build a large concatenation of segment HTML\n for (i = 0; i < segs.length; i++) {\n html += this.renderSegHtml(type, segs[i]);\n }\n // Grab individual elements from the combined HTML string. Use each as the default rendering.\n // Then, compute the 'el' for each segment.\n htmlToElements(html).forEach(function (el, i) {\n var seg = segs[i];\n if (el) {\n seg.el = el;\n }\n });\n if (type === 'bgEvent') {\n segs = filterSegsViaEls(this.context, segs, false // isMirror. background events can never be mirror elements\n );\n }\n // correct element type? (would be bad if a non-TD were inserted into a table for example)\n segs = segs.filter(function (seg) {\n return elementMatches(seg.el, _this.fillSegTag);\n });\n }\n return segs;\n };\n // Builds the HTML needed for one fill segment. Generic enough to work with different types.\n FillRenderer.prototype.renderSegHtml = function (type, seg) {\n var css = null;\n var classNames = [];\n if (type !== 'highlight' && type !== 'businessHours') {\n css = {\n 'background-color': seg.eventRange.ui.backgroundColor\n };\n }\n if (type !== 'highlight') {\n classNames = classNames.concat(seg.eventRange.ui.classNames);\n }\n if (type === 'businessHours') {\n classNames.push('fc-bgevent');\n }\n else {\n classNames.push('fc-' + type.toLowerCase());\n }\n return '<' + this.fillSegTag +\n (classNames.length ? ' class=\"' + classNames.join(' ') + '\"' : '') +\n (css ? ' style=\"' + cssToStr(css) + '\"' : '') +\n '>';\n };\n FillRenderer.prototype.detachSegs = function (type, segs) {\n var containerEls = this.containerElsByType[type];\n if (containerEls) {\n containerEls.forEach(removeElement);\n delete this.containerElsByType[type];\n }\n };\n FillRenderer.prototype.computeSizes = function (force) {\n for (var type in this.segsByType) {\n if (force || this.dirtySizeFlags[type]) {\n this.computeSegSizes(this.segsByType[type]);\n }\n }\n };\n FillRenderer.prototype.assignSizes = function (force) {\n for (var type in this.segsByType) {\n if (force || this.dirtySizeFlags[type]) {\n this.assignSegSizes(this.segsByType[type]);\n }\n }\n this.dirtySizeFlags = {};\n };\n FillRenderer.prototype.computeSegSizes = function (segs) {\n };\n FillRenderer.prototype.assignSegSizes = function (segs) {\n };\n return FillRenderer;\n }());\n\n var NamedTimeZoneImpl = /** @class */ (function () {\n function NamedTimeZoneImpl(timeZoneName) {\n this.timeZoneName = timeZoneName;\n }\n return NamedTimeZoneImpl;\n }());\n\n /*\n An abstraction for a dragging interaction originating on an event.\n Does higher-level things than PointerDragger, such as possibly:\n - a \"mirror\" that moves with the pointer\n - a minimum number of pixels or other criteria for a true drag to begin\n\n subclasses must emit:\n - pointerdown\n - dragstart\n - dragmove\n - pointerup\n - dragend\n */\n var ElementDragging = /** @class */ (function () {\n function ElementDragging(el) {\n this.emitter = new EmitterMixin();\n }\n ElementDragging.prototype.destroy = function () {\n };\n ElementDragging.prototype.setMirrorIsVisible = function (bool) {\n // optional if subclass doesn't want to support a mirror\n };\n ElementDragging.prototype.setMirrorNeedsRevert = function (bool) {\n // optional if subclass doesn't want to support a mirror\n };\n ElementDragging.prototype.setAutoScrollEnabled = function (bool) {\n // optional\n };\n return ElementDragging;\n }());\n\n function formatDate(dateInput, settings) {\n if (settings === void 0) { settings = {}; }\n var dateEnv = buildDateEnv$1(settings);\n var formatter = createFormatter(settings);\n var dateMeta = dateEnv.createMarkerMeta(dateInput);\n if (!dateMeta) { // TODO: warning?\n return '';\n }\n return dateEnv.format(dateMeta.marker, formatter, {\n forcedTzo: dateMeta.forcedTzo\n });\n }\n function formatRange(startInput, endInput, settings // mixture of env and formatter settings\n ) {\n var dateEnv = buildDateEnv$1(typeof settings === 'object' && settings ? settings : {}); // pass in if non-null object\n var formatter = createFormatter(settings, globalDefaults.defaultRangeSeparator);\n var startMeta = dateEnv.createMarkerMeta(startInput);\n var endMeta = dateEnv.createMarkerMeta(endInput);\n if (!startMeta || !endMeta) { // TODO: warning?\n return '';\n }\n return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, {\n forcedStartTzo: startMeta.forcedTzo,\n forcedEndTzo: endMeta.forcedTzo,\n isEndExclusive: settings.isEndExclusive\n });\n }\n // TODO: more DRY and optimized\n function buildDateEnv$1(settings) {\n var locale = buildLocale(settings.locale || 'en', parseRawLocales([]).map); // TODO: don't hardcode 'en' everywhere\n // ensure required settings\n settings = __assign({ timeZone: globalDefaults.timeZone, calendarSystem: 'gregory' }, settings, { locale: locale });\n return new DateEnv(settings);\n }\n\n var DRAG_META_PROPS = {\n startTime: createDuration,\n duration: createDuration,\n create: Boolean,\n sourceId: String\n };\n var DRAG_META_DEFAULTS = {\n create: true\n };\n function parseDragMeta(raw) {\n var leftoverProps = {};\n var refined = refineProps(raw, DRAG_META_PROPS, DRAG_META_DEFAULTS, leftoverProps);\n refined.leftoverProps = leftoverProps;\n return refined;\n }\n\n // Computes a default column header formatting string if `colFormat` is not explicitly defined\n function computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt) {\n // if more than one week row, or if there are a lot of columns with not much space,\n // put just the day numbers will be in each cell\n if (!datesRepDistinctDays || dayCnt > 10) {\n return { weekday: 'short' }; // \"Sat\"\n }\n else if (dayCnt > 1) {\n return { weekday: 'short', month: 'numeric', day: 'numeric', omitCommas: true }; // \"Sat 11/12\"\n }\n else {\n return { weekday: 'long' }; // \"Saturday\"\n }\n }\n function renderDateCell(dateMarker, dateProfile, datesRepDistinctDays, colCnt, colHeadFormat, context, colspan, otherAttrs) {\n var dateEnv = context.dateEnv, theme = context.theme, options = context.options;\n var isDateValid = rangeContainsMarker(dateProfile.activeRange, dateMarker); // TODO: called too frequently. cache somehow.\n var classNames = [\n 'fc-day-header',\n theme.getClass('widgetHeader')\n ];\n var innerHtml;\n if (typeof options.columnHeaderHtml === 'function') {\n innerHtml = options.columnHeaderHtml(dateEnv.toDate(dateMarker));\n }\n else if (typeof options.columnHeaderText === 'function') {\n innerHtml = htmlEscape(options.columnHeaderText(dateEnv.toDate(dateMarker)));\n }\n else {\n innerHtml = htmlEscape(dateEnv.format(dateMarker, colHeadFormat));\n }\n // if only one row of days, the classNames on the header can represent the specific days beneath\n if (datesRepDistinctDays) {\n classNames = classNames.concat(\n // includes the day-of-week class\n // noThemeHighlight=true (don't highlight the header)\n getDayClasses(dateMarker, dateProfile, context, true));\n }\n else {\n classNames.push('fc-' + DAY_IDS[dateMarker.getUTCDay()]); // only add the day-of-week class\n }\n return '' +\n ' 1 ?\n ' colspan=\"' + colspan + '\"' :\n '') +\n (otherAttrs ?\n ' ' + otherAttrs :\n '') +\n '>' +\n (isDateValid ?\n // don't make a link if the heading could represent multiple days, or if there's only one day (forceOff)\n buildGotoAnchorHtml(options, dateEnv, { date: dateMarker, forceOff: !datesRepDistinctDays || colCnt === 1 }, innerHtml) :\n // if not valid, display text, but no link\n innerHtml) +\n '';\n }\n\n var DayHeader = /** @class */ (function (_super) {\n __extends(DayHeader, _super);\n function DayHeader(parentEl) {\n var _this = _super.call(this) || this;\n _this.renderSkeleton = memoizeRendering(_this._renderSkeleton, _this._unrenderSkeleton);\n _this.parentEl = parentEl;\n return _this;\n }\n DayHeader.prototype.render = function (props, context) {\n var dates = props.dates, datesRepDistinctDays = props.datesRepDistinctDays;\n var parts = [];\n this.renderSkeleton(context);\n if (props.renderIntroHtml) {\n parts.push(props.renderIntroHtml());\n }\n var colHeadFormat = createFormatter(context.options.columnHeaderFormat ||\n computeFallbackHeaderFormat(datesRepDistinctDays, dates.length));\n for (var _i = 0, dates_1 = dates; _i < dates_1.length; _i++) {\n var date = dates_1[_i];\n parts.push(renderDateCell(date, props.dateProfile, datesRepDistinctDays, dates.length, colHeadFormat, context));\n }\n if (context.isRtl) {\n parts.reverse();\n }\n this.thead.innerHTML = '' + parts.join('') + '';\n };\n DayHeader.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.renderSkeleton.unrender();\n };\n DayHeader.prototype._renderSkeleton = function (context) {\n var theme = context.theme;\n var parentEl = this.parentEl;\n parentEl.innerHTML = ''; // because might be nbsp\n parentEl.appendChild(this.el = htmlToElement('
' +\n '' +\n '' +\n '
' +\n '
'));\n this.thead = this.el.querySelector('thead');\n };\n DayHeader.prototype._unrenderSkeleton = function () {\n removeElement(this.el);\n };\n return DayHeader;\n }(Component));\n\n var DaySeries = /** @class */ (function () {\n function DaySeries(range, dateProfileGenerator) {\n var date = range.start;\n var end = range.end;\n var indices = [];\n var dates = [];\n var dayIndex = -1;\n while (date < end) { // loop each day from start to end\n if (dateProfileGenerator.isHiddenDay(date)) {\n indices.push(dayIndex + 0.5); // mark that it's between indices\n }\n else {\n dayIndex++;\n indices.push(dayIndex);\n dates.push(date);\n }\n date = addDays(date, 1);\n }\n this.dates = dates;\n this.indices = indices;\n this.cnt = dates.length;\n }\n DaySeries.prototype.sliceRange = function (range) {\n var firstIndex = this.getDateDayIndex(range.start); // inclusive first index\n var lastIndex = this.getDateDayIndex(addDays(range.end, -1)); // inclusive last index\n var clippedFirstIndex = Math.max(0, firstIndex);\n var clippedLastIndex = Math.min(this.cnt - 1, lastIndex);\n // deal with in-between indices\n clippedFirstIndex = Math.ceil(clippedFirstIndex); // in-between starts round to next cell\n clippedLastIndex = Math.floor(clippedLastIndex); // in-between ends round to prev cell\n if (clippedFirstIndex <= clippedLastIndex) {\n return {\n firstIndex: clippedFirstIndex,\n lastIndex: clippedLastIndex,\n isStart: firstIndex === clippedFirstIndex,\n isEnd: lastIndex === clippedLastIndex\n };\n }\n else {\n return null;\n }\n };\n // Given a date, returns its chronolocial cell-index from the first cell of the grid.\n // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.\n // If before the first offset, returns a negative number.\n // If after the last offset, returns an offset past the last cell offset.\n // Only works for *start* dates of cells. Will not work for exclusive end dates for cells.\n DaySeries.prototype.getDateDayIndex = function (date) {\n var indices = this.indices;\n var dayOffset = Math.floor(diffDays(this.dates[0], date));\n if (dayOffset < 0) {\n return indices[0] - 1;\n }\n else if (dayOffset >= indices.length) {\n return indices[indices.length - 1] + 1;\n }\n else {\n return indices[dayOffset];\n }\n };\n return DaySeries;\n }());\n\n var DayTable = /** @class */ (function () {\n function DayTable(daySeries, breakOnWeeks) {\n var dates = daySeries.dates;\n var daysPerRow;\n var firstDay;\n var rowCnt;\n if (breakOnWeeks) {\n // count columns until the day-of-week repeats\n firstDay = dates[0].getUTCDay();\n for (daysPerRow = 1; daysPerRow < dates.length; daysPerRow++) {\n if (dates[daysPerRow].getUTCDay() === firstDay) {\n break;\n }\n }\n rowCnt = Math.ceil(dates.length / daysPerRow);\n }\n else {\n rowCnt = 1;\n daysPerRow = dates.length;\n }\n this.rowCnt = rowCnt;\n this.colCnt = daysPerRow;\n this.daySeries = daySeries;\n this.cells = this.buildCells();\n this.headerDates = this.buildHeaderDates();\n }\n DayTable.prototype.buildCells = function () {\n var rows = [];\n for (var row = 0; row < this.rowCnt; row++) {\n var cells = [];\n for (var col = 0; col < this.colCnt; col++) {\n cells.push(this.buildCell(row, col));\n }\n rows.push(cells);\n }\n return rows;\n };\n DayTable.prototype.buildCell = function (row, col) {\n return {\n date: this.daySeries.dates[row * this.colCnt + col]\n };\n };\n DayTable.prototype.buildHeaderDates = function () {\n var dates = [];\n for (var col = 0; col < this.colCnt; col++) {\n dates.push(this.cells[0][col].date);\n }\n return dates;\n };\n DayTable.prototype.sliceRange = function (range) {\n var colCnt = this.colCnt;\n var seriesSeg = this.daySeries.sliceRange(range);\n var segs = [];\n if (seriesSeg) {\n var firstIndex = seriesSeg.firstIndex, lastIndex = seriesSeg.lastIndex;\n var index = firstIndex;\n while (index <= lastIndex) {\n var row = Math.floor(index / colCnt);\n var nextIndex = Math.min((row + 1) * colCnt, lastIndex + 1);\n segs.push({\n row: row,\n firstCol: index % colCnt,\n lastCol: (nextIndex - 1) % colCnt,\n isStart: seriesSeg.isStart && index === firstIndex,\n isEnd: seriesSeg.isEnd && (nextIndex - 1) === lastIndex\n });\n index = nextIndex;\n }\n }\n return segs;\n };\n return DayTable;\n }());\n\n var Slicer = /** @class */ (function () {\n function Slicer() {\n this.sliceBusinessHours = memoize(this._sliceBusinessHours);\n this.sliceDateSelection = memoize(this._sliceDateSpan);\n this.sliceEventStore = memoize(this._sliceEventStore);\n this.sliceEventDrag = memoize(this._sliceInteraction);\n this.sliceEventResize = memoize(this._sliceInteraction);\n }\n Slicer.prototype.sliceProps = function (props, dateProfile, nextDayThreshold, calendar, component) {\n var extraArgs = [];\n for (var _i = 5; _i < arguments.length; _i++) {\n extraArgs[_i - 5] = arguments[_i];\n }\n var eventUiBases = props.eventUiBases;\n var eventSegs = this.sliceEventStore.apply(this, [props.eventStore, eventUiBases, dateProfile, nextDayThreshold, component].concat(extraArgs));\n return {\n dateSelectionSegs: this.sliceDateSelection.apply(this, [props.dateSelection, eventUiBases, component].concat(extraArgs)),\n businessHourSegs: this.sliceBusinessHours.apply(this, [props.businessHours, dateProfile, nextDayThreshold, calendar, component].concat(extraArgs)),\n fgEventSegs: eventSegs.fg,\n bgEventSegs: eventSegs.bg,\n eventDrag: this.sliceEventDrag.apply(this, [props.eventDrag, eventUiBases, dateProfile, nextDayThreshold, component].concat(extraArgs)),\n eventResize: this.sliceEventResize.apply(this, [props.eventResize, eventUiBases, dateProfile, nextDayThreshold, component].concat(extraArgs)),\n eventSelection: props.eventSelection\n }; // TODO: give interactionSegs?\n };\n Slicer.prototype.sliceNowDate = function (// does not memoize\n date, component) {\n var extraArgs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n extraArgs[_i - 2] = arguments[_i];\n }\n return this._sliceDateSpan.apply(this, [{ range: { start: date, end: addMs(date, 1) }, allDay: false },\n {},\n component].concat(extraArgs));\n };\n Slicer.prototype._sliceBusinessHours = function (businessHours, dateProfile, nextDayThreshold, calendar, component) {\n var extraArgs = [];\n for (var _i = 5; _i < arguments.length; _i++) {\n extraArgs[_i - 5] = arguments[_i];\n }\n if (!businessHours) {\n return [];\n }\n return this._sliceEventStore.apply(this, [expandRecurring(businessHours, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), calendar),\n {},\n dateProfile,\n nextDayThreshold,\n component].concat(extraArgs)).bg;\n };\n Slicer.prototype._sliceEventStore = function (eventStore, eventUiBases, dateProfile, nextDayThreshold, component) {\n var extraArgs = [];\n for (var _i = 5; _i < arguments.length; _i++) {\n extraArgs[_i - 5] = arguments[_i];\n }\n if (eventStore) {\n var rangeRes = sliceEventStore(eventStore, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n return {\n bg: this.sliceEventRanges(rangeRes.bg, component, extraArgs),\n fg: this.sliceEventRanges(rangeRes.fg, component, extraArgs)\n };\n }\n else {\n return { bg: [], fg: [] };\n }\n };\n Slicer.prototype._sliceInteraction = function (interaction, eventUiBases, dateProfile, nextDayThreshold, component) {\n var extraArgs = [];\n for (var _i = 5; _i < arguments.length; _i++) {\n extraArgs[_i - 5] = arguments[_i];\n }\n if (!interaction) {\n return null;\n }\n var rangeRes = sliceEventStore(interaction.mutatedEvents, eventUiBases, computeActiveRange(dateProfile, Boolean(nextDayThreshold)), nextDayThreshold);\n return {\n segs: this.sliceEventRanges(rangeRes.fg, component, extraArgs),\n affectedInstances: interaction.affectedEvents.instances,\n isEvent: interaction.isEvent,\n sourceSeg: interaction.origSeg\n };\n };\n Slicer.prototype._sliceDateSpan = function (dateSpan, eventUiBases, component) {\n var extraArgs = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n extraArgs[_i - 3] = arguments[_i];\n }\n if (!dateSpan) {\n return [];\n }\n var eventRange = fabricateEventRange(dateSpan, eventUiBases, component.context.calendar);\n var segs = this.sliceRange.apply(this, [dateSpan.range].concat(extraArgs));\n for (var _a = 0, segs_1 = segs; _a < segs_1.length; _a++) {\n var seg = segs_1[_a];\n seg.component = component;\n seg.eventRange = eventRange;\n }\n return segs;\n };\n /*\n \"complete\" seg means it has component and eventRange\n */\n Slicer.prototype.sliceEventRanges = function (eventRanges, component, // TODO: kill\n extraArgs) {\n var segs = [];\n for (var _i = 0, eventRanges_1 = eventRanges; _i < eventRanges_1.length; _i++) {\n var eventRange = eventRanges_1[_i];\n segs.push.apply(segs, this.sliceEventRange(eventRange, component, extraArgs));\n }\n return segs;\n };\n /*\n \"complete\" seg means it has component and eventRange\n */\n Slicer.prototype.sliceEventRange = function (eventRange, component, // TODO: kill\n extraArgs) {\n var segs = this.sliceRange.apply(this, [eventRange.range].concat(extraArgs));\n for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) {\n var seg = segs_2[_i];\n seg.component = component;\n seg.eventRange = eventRange;\n seg.isStart = eventRange.isStart && seg.isStart;\n seg.isEnd = eventRange.isEnd && seg.isEnd;\n }\n return segs;\n };\n return Slicer;\n }());\n /*\n for incorporating minTime/maxTime if appropriate\n TODO: should be part of DateProfile!\n TimelineDateProfile already does this btw\n */\n function computeActiveRange(dateProfile, isComponentAllDay) {\n var range = dateProfile.activeRange;\n if (isComponentAllDay) {\n return range;\n }\n return {\n start: addMs(range.start, dateProfile.minTime.milliseconds),\n end: addMs(range.end, dateProfile.maxTime.milliseconds - 864e5) // 864e5 = ms in a day\n };\n }\n\n // exports\n // --------------------------------------------------------------------------------------------------\n var version = '4.4.0';\n\n exports.Calendar = Calendar;\n exports.Component = Component;\n exports.ComponentContext = ComponentContext;\n exports.DateComponent = DateComponent;\n exports.DateEnv = DateEnv;\n exports.DateProfileGenerator = DateProfileGenerator;\n exports.DayHeader = DayHeader;\n exports.DaySeries = DaySeries;\n exports.DayTable = DayTable;\n exports.ElementDragging = ElementDragging;\n exports.ElementScrollController = ElementScrollController;\n exports.EmitterMixin = EmitterMixin;\n exports.EventApi = EventApi;\n exports.FgEventRenderer = FgEventRenderer;\n exports.FillRenderer = FillRenderer;\n exports.Interaction = Interaction;\n exports.Mixin = Mixin;\n exports.NamedTimeZoneImpl = NamedTimeZoneImpl;\n exports.PositionCache = PositionCache;\n exports.ScrollComponent = ScrollComponent;\n exports.ScrollController = ScrollController;\n exports.Slicer = Slicer;\n exports.Splitter = Splitter;\n exports.Theme = Theme;\n exports.View = View;\n exports.WindowScrollController = WindowScrollController;\n exports.addDays = addDays;\n exports.addDurations = addDurations;\n exports.addMs = addMs;\n exports.addWeeks = addWeeks;\n exports.allowContextMenu = allowContextMenu;\n exports.allowSelection = allowSelection;\n exports.appendToElement = appendToElement;\n exports.applyAll = applyAll;\n exports.applyMutationToEventStore = applyMutationToEventStore;\n exports.applyStyle = applyStyle;\n exports.applyStyleProp = applyStyleProp;\n exports.asRoughMinutes = asRoughMinutes;\n exports.asRoughMs = asRoughMs;\n exports.asRoughSeconds = asRoughSeconds;\n exports.buildGotoAnchorHtml = buildGotoAnchorHtml;\n exports.buildSegCompareObj = buildSegCompareObj;\n exports.capitaliseFirstLetter = capitaliseFirstLetter;\n exports.combineEventUis = combineEventUis;\n exports.compareByFieldSpec = compareByFieldSpec;\n exports.compareByFieldSpecs = compareByFieldSpecs;\n exports.compareNumbers = compareNumbers;\n exports.compensateScroll = compensateScroll;\n exports.computeClippingRect = computeClippingRect;\n exports.computeEdges = computeEdges;\n exports.computeEventDraggable = computeEventDraggable;\n exports.computeEventEndResizable = computeEventEndResizable;\n exports.computeEventStartResizable = computeEventStartResizable;\n exports.computeFallbackHeaderFormat = computeFallbackHeaderFormat;\n exports.computeHeightAndMargins = computeHeightAndMargins;\n exports.computeInnerRect = computeInnerRect;\n exports.computeRect = computeRect;\n exports.computeVisibleDayRange = computeVisibleDayRange;\n exports.config = config;\n exports.constrainPoint = constrainPoint;\n exports.createDuration = createDuration;\n exports.createElement = createElement;\n exports.createEmptyEventStore = createEmptyEventStore;\n exports.createEventInstance = createEventInstance;\n exports.createFormatter = createFormatter;\n exports.createPlugin = createPlugin;\n exports.cssToStr = cssToStr;\n exports.debounce = debounce;\n exports.diffDates = diffDates;\n exports.diffDayAndTime = diffDayAndTime;\n exports.diffDays = diffDays;\n exports.diffPoints = diffPoints;\n exports.diffWeeks = diffWeeks;\n exports.diffWholeDays = diffWholeDays;\n exports.diffWholeWeeks = diffWholeWeeks;\n exports.disableCursor = disableCursor;\n exports.distributeHeight = distributeHeight;\n exports.elementClosest = elementClosest;\n exports.elementMatches = elementMatches;\n exports.enableCursor = enableCursor;\n exports.eventTupleToStore = eventTupleToStore;\n exports.filterEventStoreDefs = filterEventStoreDefs;\n exports.filterHash = filterHash;\n exports.findChildren = findChildren;\n exports.findElements = findElements;\n exports.flexibleCompare = flexibleCompare;\n exports.forceClassName = forceClassName;\n exports.formatDate = formatDate;\n exports.formatIsoTimeString = formatIsoTimeString;\n exports.formatRange = formatRange;\n exports.getAllDayHtml = getAllDayHtml;\n exports.getClippingParents = getClippingParents;\n exports.getDayClasses = getDayClasses;\n exports.getElSeg = getElSeg;\n exports.getRectCenter = getRectCenter;\n exports.getRelevantEvents = getRelevantEvents;\n exports.globalDefaults = globalDefaults;\n exports.greatestDurationDenominator = greatestDurationDenominator;\n exports.hasBgRendering = hasBgRendering;\n exports.htmlEscape = htmlEscape;\n exports.htmlToElement = htmlToElement;\n exports.insertAfterElement = insertAfterElement;\n exports.interactionSettingsStore = interactionSettingsStore;\n exports.interactionSettingsToStore = interactionSettingsToStore;\n exports.intersectRanges = intersectRanges;\n exports.intersectRects = intersectRects;\n exports.isArraysEqual = isArraysEqual;\n exports.isDateSpansEqual = isDateSpansEqual;\n exports.isInt = isInt;\n exports.isInteractionValid = isInteractionValid;\n exports.isMultiDayRange = isMultiDayRange;\n exports.isPropsEqual = isPropsEqual;\n exports.isPropsValid = isPropsValid;\n exports.isSingleDay = isSingleDay;\n exports.isValidDate = isValidDate;\n exports.listenBySelector = listenBySelector;\n exports.mapHash = mapHash;\n exports.matchCellWidths = matchCellWidths;\n exports.memoize = memoize;\n exports.memoizeOutput = memoizeOutput;\n exports.memoizeRendering = memoizeRendering;\n exports.mergeEventStores = mergeEventStores;\n exports.multiplyDuration = multiplyDuration;\n exports.padStart = padStart;\n exports.parseBusinessHours = parseBusinessHours;\n exports.parseDragMeta = parseDragMeta;\n exports.parseEventDef = parseEventDef;\n exports.parseFieldSpecs = parseFieldSpecs;\n exports.parseMarker = parse;\n exports.pointInsideRect = pointInsideRect;\n exports.prependToElement = prependToElement;\n exports.preventContextMenu = preventContextMenu;\n exports.preventDefault = preventDefault;\n exports.preventSelection = preventSelection;\n exports.processScopedUiProps = processScopedUiProps;\n exports.rangeContainsMarker = rangeContainsMarker;\n exports.rangeContainsRange = rangeContainsRange;\n exports.rangesEqual = rangesEqual;\n exports.rangesIntersect = rangesIntersect;\n exports.refineProps = refineProps;\n exports.removeElement = removeElement;\n exports.removeExact = removeExact;\n exports.renderDateCell = renderDateCell;\n exports.requestJson = requestJson;\n exports.sliceEventStore = sliceEventStore;\n exports.startOfDay = startOfDay;\n exports.subtractInnerElHeight = subtractInnerElHeight;\n exports.translateRect = translateRect;\n exports.uncompensateScroll = uncompensateScroll;\n exports.undistributeHeight = undistributeHeight;\n exports.unpromisify = unpromisify;\n exports.version = version;\n exports.whenTransitionDone = whenTransitionDone;\n exports.wholeDivideDurations = wholeDivideDurations;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n","/*!\nFullCalendar Day Grid Plugin v4.4.0\nDocs & License: https://fullcalendar.io/\n(c) 2019 Adam Shaw\n*/\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@fullcalendar/core')) :\n typeof define === 'function' && define.amd ? define(['exports', '@fullcalendar/core'], factory) :\n (global = global || self, factory(global.FullCalendarDayGrid = {}, global.FullCalendar));\n}(this, function (exports, core) { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n /* global Reflect, Promise */\r\n\r\n var extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n\r\n function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n }\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\n\n var DayGridDateProfileGenerator = /** @class */ (function (_super) {\n __extends(DayGridDateProfileGenerator, _super);\n function DayGridDateProfileGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // Computes the date range that will be rendered.\n DayGridDateProfileGenerator.prototype.buildRenderRange = function (currentRange, currentRangeUnit, isRangeAllDay) {\n var dateEnv = this.dateEnv;\n var renderRange = _super.prototype.buildRenderRange.call(this, currentRange, currentRangeUnit, isRangeAllDay);\n var start = renderRange.start;\n var end = renderRange.end;\n var endOfWeek;\n // year and month views should be aligned with weeks. this is already done for week\n if (/^(year|month)$/.test(currentRangeUnit)) {\n start = dateEnv.startOfWeek(start);\n // make end-of-week if not already\n endOfWeek = dateEnv.startOfWeek(end);\n if (endOfWeek.valueOf() !== end.valueOf()) {\n end = core.addWeeks(endOfWeek, 1);\n }\n }\n // ensure 6 weeks\n if (this.options.monthMode &&\n this.options.fixedWeekCount) {\n var rowCnt = Math.ceil(// could be partial weeks due to hiddenDays\n core.diffWeeks(start, end));\n end = core.addWeeks(end, 6 - rowCnt);\n }\n return { start: start, end: end };\n };\n return DayGridDateProfileGenerator;\n }(core.DateProfileGenerator));\n\n /* A rectangular panel that is absolutely positioned over other content\n ------------------------------------------------------------------------------------------------------------------------\n Options:\n - className (string)\n - content (HTML string, element, or element array)\n - parentEl\n - top\n - left\n - right (the x coord of where the right edge should be. not a \"CSS\" right)\n - autoHide (boolean)\n - show (callback)\n - hide (callback)\n */\n var Popover = /** @class */ (function () {\n function Popover(options) {\n var _this = this;\n this.isHidden = true;\n this.margin = 10; // the space required between the popover and the edges of the scroll container\n // Triggered when the user clicks *anywhere* in the document, for the autoHide feature\n this.documentMousedown = function (ev) {\n // only hide the popover if the click happened outside the popover\n if (_this.el && !_this.el.contains(ev.target)) {\n _this.hide();\n }\n };\n this.options = options;\n }\n // Shows the popover on the specified position. Renders it if not already\n Popover.prototype.show = function () {\n if (this.isHidden) {\n if (!this.el) {\n this.render();\n }\n this.el.style.display = '';\n this.position();\n this.isHidden = false;\n this.trigger('show');\n }\n };\n // Hides the popover, through CSS, but does not remove it from the DOM\n Popover.prototype.hide = function () {\n if (!this.isHidden) {\n this.el.style.display = 'none';\n this.isHidden = true;\n this.trigger('hide');\n }\n };\n // Creates `this.el` and renders content inside of it\n Popover.prototype.render = function () {\n var _this = this;\n var options = this.options;\n var el = this.el = core.createElement('div', {\n className: 'fc-popover ' + (options.className || ''),\n style: {\n top: '0',\n left: '0'\n }\n });\n if (typeof options.content === 'function') {\n options.content(el);\n }\n options.parentEl.appendChild(el);\n // when a click happens on anything inside with a 'fc-close' className, hide the popover\n core.listenBySelector(el, 'click', '.fc-close', function (ev) {\n _this.hide();\n });\n if (options.autoHide) {\n document.addEventListener('mousedown', this.documentMousedown);\n }\n };\n // Hides and unregisters any handlers\n Popover.prototype.destroy = function () {\n this.hide();\n if (this.el) {\n core.removeElement(this.el);\n this.el = null;\n }\n document.removeEventListener('mousedown', this.documentMousedown);\n };\n // Positions the popover optimally, using the top/left/right options\n Popover.prototype.position = function () {\n var options = this.options;\n var el = this.el;\n var elDims = el.getBoundingClientRect(); // only used for width,height\n var origin = core.computeRect(el.offsetParent);\n var clippingRect = core.computeClippingRect(options.parentEl);\n var top; // the \"position\" (not \"offset\") values for the popover\n var left; //\n // compute top and left\n top = options.top || 0;\n if (options.left !== undefined) {\n left = options.left;\n }\n else if (options.right !== undefined) {\n left = options.right - elDims.width; // derive the left value from the right value\n }\n else {\n left = 0;\n }\n // constrain to the view port. if constrained by two edges, give precedence to top/left\n top = Math.min(top, clippingRect.bottom - elDims.height - this.margin);\n top = Math.max(top, clippingRect.top + this.margin);\n left = Math.min(left, clippingRect.right - elDims.width - this.margin);\n left = Math.max(left, clippingRect.left + this.margin);\n core.applyStyle(el, {\n top: top - origin.top,\n left: left - origin.left\n });\n };\n // Triggers a callback. Calls a function in the option hash of the same name.\n // Arguments beyond the first `name` are forwarded on.\n // TODO: better code reuse for this. Repeat code\n // can kill this???\n Popover.prototype.trigger = function (name) {\n if (this.options[name]) {\n this.options[name].apply(this, Array.prototype.slice.call(arguments, 1));\n }\n };\n return Popover;\n }());\n\n /* Event-rendering methods for the DayGrid class\n ----------------------------------------------------------------------------------------------------------------------*/\n // \"Simple\" is bad a name. has nothing to do with SimpleDayGrid\n var SimpleDayGridEventRenderer = /** @class */ (function (_super) {\n __extends(SimpleDayGridEventRenderer, _super);\n function SimpleDayGridEventRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // Builds the HTML to be used for the default element for an individual segment\n SimpleDayGridEventRenderer.prototype.renderSegHtml = function (seg, mirrorInfo) {\n var context = this.context;\n var eventRange = seg.eventRange;\n var eventDef = eventRange.def;\n var eventUi = eventRange.ui;\n var allDay = eventDef.allDay;\n var isDraggable = core.computeEventDraggable(context, eventDef, eventUi);\n var isResizableFromStart = allDay && seg.isStart && core.computeEventStartResizable(context, eventDef, eventUi);\n var isResizableFromEnd = allDay && seg.isEnd && core.computeEventEndResizable(context, eventDef, eventUi);\n var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd, mirrorInfo);\n var skinCss = core.cssToStr(this.getSkinCss(eventUi));\n var timeHtml = '';\n var timeText;\n var titleHtml;\n classes.unshift('fc-day-grid-event', 'fc-h-event');\n // Only display a timed events time if it is the starting segment\n if (seg.isStart) {\n timeText = this.getTimeText(eventRange);\n if (timeText) {\n timeHtml = '' + core.htmlEscape(timeText) + '';\n }\n }\n titleHtml =\n '' +\n (core.htmlEscape(eventDef.title || '') || ' ') + // we always want one line of height\n '';\n return '
' +\n '
' +\n (context.options.dir === 'rtl' ?\n titleHtml + ' ' + timeHtml : // put a natural space in between\n timeHtml + ' ' + titleHtml //\n ) +\n '
' +\n (isResizableFromStart ?\n '
' :\n '') +\n (isResizableFromEnd ?\n '
' :\n '') +\n '
';\n };\n // Computes a default event time formatting string if `eventTimeFormat` is not explicitly defined\n SimpleDayGridEventRenderer.prototype.computeEventTimeFormat = function () {\n return {\n hour: 'numeric',\n minute: '2-digit',\n omitZeroMinute: true,\n meridiem: 'narrow'\n };\n };\n SimpleDayGridEventRenderer.prototype.computeDisplayEventEnd = function () {\n return false; // TODO: somehow consider the originating DayGrid's column count\n };\n return SimpleDayGridEventRenderer;\n }(core.FgEventRenderer));\n\n /* Event-rendering methods for the DayGrid class\n ----------------------------------------------------------------------------------------------------------------------*/\n var DayGridEventRenderer = /** @class */ (function (_super) {\n __extends(DayGridEventRenderer, _super);\n function DayGridEventRenderer(dayGrid) {\n var _this = _super.call(this) || this;\n _this.dayGrid = dayGrid;\n return _this;\n }\n // Renders the given foreground event segments onto the grid\n DayGridEventRenderer.prototype.attachSegs = function (segs, mirrorInfo) {\n var rowStructs = this.rowStructs = this.renderSegRows(segs);\n // append to each row's content skeleton\n this.dayGrid.rowEls.forEach(function (rowNode, i) {\n rowNode.querySelector('.fc-content-skeleton > table').appendChild(rowStructs[i].tbodyEl);\n });\n // removes the \"more..\" events popover\n if (!mirrorInfo) {\n this.dayGrid.removeSegPopover();\n }\n };\n // Unrenders all currently rendered foreground event segments\n DayGridEventRenderer.prototype.detachSegs = function () {\n var rowStructs = this.rowStructs || [];\n var rowStruct;\n while ((rowStruct = rowStructs.pop())) {\n core.removeElement(rowStruct.tbodyEl);\n }\n this.rowStructs = null;\n };\n // Uses the given events array to generate elements that should be appended to each row's content skeleton.\n // Returns an array of rowStruct objects (see the bottom of `renderSegRow`).\n // PRECONDITION: each segment shoud already have a rendered and assigned `.el`\n DayGridEventRenderer.prototype.renderSegRows = function (segs) {\n var rowStructs = [];\n var segRows;\n var row;\n segRows = this.groupSegRows(segs); // group into nested arrays\n // iterate each row of segment groupings\n for (row = 0; row < segRows.length; row++) {\n rowStructs.push(this.renderSegRow(row, segRows[row]));\n }\n return rowStructs;\n };\n // Given a row # and an array of segments all in the same row, render a element, a skeleton that contains\n // the segments. Returns object with a bunch of internal data about how the render was calculated.\n // NOTE: modifies rowSegs\n DayGridEventRenderer.prototype.renderSegRow = function (row, rowSegs) {\n var isRtl = this.context.isRtl;\n var dayGrid = this.dayGrid;\n var colCnt = dayGrid.colCnt;\n var segLevels = this.buildSegLevels(rowSegs); // group into sub-arrays of levels\n var levelCnt = Math.max(1, segLevels.length); // ensure at least one level\n var tbody = document.createElement('tbody');\n var segMatrix = []; // lookup for which segments are rendered into which level+col cells\n var cellMatrix = []; // lookup for all elements of the level+col matrix\n var loneCellMatrix = []; // lookup for elements that only take up a single column\n var i;\n var levelSegs;\n var col;\n var tr;\n var j;\n var seg;\n var td;\n // populates empty cells from the current column (`col`) to `endCol`\n function emptyCellsUntil(endCol) {\n while (col < endCol) {\n // try to grab a cell from the level above and extend its rowspan. otherwise, create a fresh cell\n td = (loneCellMatrix[i - 1] || [])[col];\n if (td) {\n td.rowSpan = (td.rowSpan || 1) + 1;\n }\n else {\n td = document.createElement('td');\n tr.appendChild(td);\n }\n cellMatrix[i][col] = td;\n loneCellMatrix[i][col] = td;\n col++;\n }\n }\n for (i = 0; i < levelCnt; i++) { // iterate through all levels\n levelSegs = segLevels[i];\n col = 0;\n tr = document.createElement('tr');\n segMatrix.push([]);\n cellMatrix.push([]);\n loneCellMatrix.push([]);\n // levelCnt might be 1 even though there are no actual levels. protect against this.\n // this single empty row is useful for styling.\n if (levelSegs) {\n for (j = 0; j < levelSegs.length; j++) { // iterate through segments in level\n seg = levelSegs[j];\n var leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol;\n var rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol;\n emptyCellsUntil(leftCol);\n // create a container that occupies or more columns. append the event element.\n td = core.createElement('td', { className: 'fc-event-container' }, seg.el);\n if (leftCol !== rightCol) {\n td.colSpan = rightCol - leftCol + 1;\n }\n else { // a single-column segment\n loneCellMatrix[i][col] = td;\n }\n while (col <= rightCol) {\n cellMatrix[i][col] = td;\n segMatrix[i][col] = seg;\n col++;\n }\n tr.appendChild(td);\n }\n }\n emptyCellsUntil(colCnt); // finish off the row\n var introHtml = dayGrid.renderProps.renderIntroHtml();\n if (introHtml) {\n if (isRtl) {\n core.appendToElement(tr, introHtml);\n }\n else {\n core.prependToElement(tr, introHtml);\n }\n }\n tbody.appendChild(tr);\n }\n return {\n row: row,\n tbodyEl: tbody,\n cellMatrix: cellMatrix,\n segMatrix: segMatrix,\n segLevels: segLevels,\n segs: rowSegs\n };\n };\n // Stacks a flat array of segments, which are all assumed to be in the same row, into subarrays of vertical levels.\n // NOTE: modifies segs\n DayGridEventRenderer.prototype.buildSegLevels = function (segs) {\n var isRtl = this.context.isRtl;\n var colCnt = this.dayGrid.colCnt;\n var levels = [];\n var i;\n var seg;\n var j;\n // Give preference to elements with certain criteria, so they have\n // a chance to be closer to the top.\n segs = this.sortEventSegs(segs);\n for (i = 0; i < segs.length; i++) {\n seg = segs[i];\n // loop through levels, starting with the topmost, until the segment doesn't collide with other segments\n for (j = 0; j < levels.length; j++) {\n if (!isDaySegCollision(seg, levels[j])) {\n break;\n }\n }\n // `j` now holds the desired subrow index\n seg.level = j;\n seg.leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol; // for sorting only\n seg.rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol // for sorting only\n ;\n (levels[j] || (levels[j] = [])).push(seg);\n }\n // order segments left-to-right. very important if calendar is RTL\n for (j = 0; j < levels.length; j++) {\n levels[j].sort(compareDaySegCols);\n }\n return levels;\n };\n // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's row\n DayGridEventRenderer.prototype.groupSegRows = function (segs) {\n var segRows = [];\n var i;\n for (i = 0; i < this.dayGrid.rowCnt; i++) {\n segRows.push([]);\n }\n for (i = 0; i < segs.length; i++) {\n segRows[segs[i].row].push(segs[i]);\n }\n return segRows;\n };\n // Computes a default `displayEventEnd` value if one is not expliclty defined\n DayGridEventRenderer.prototype.computeDisplayEventEnd = function () {\n return this.dayGrid.colCnt === 1; // we'll likely have space if there's only one day\n };\n return DayGridEventRenderer;\n }(SimpleDayGridEventRenderer));\n // Computes whether two segments' columns collide. They are assumed to be in the same row.\n function isDaySegCollision(seg, otherSegs) {\n var i;\n var otherSeg;\n for (i = 0; i < otherSegs.length; i++) {\n otherSeg = otherSegs[i];\n if (otherSeg.firstCol <= seg.lastCol &&\n otherSeg.lastCol >= seg.firstCol) {\n return true;\n }\n }\n return false;\n }\n // A cmp function for determining the leftmost event\n function compareDaySegCols(a, b) {\n return a.leftCol - b.leftCol;\n }\n\n var DayGridMirrorRenderer = /** @class */ (function (_super) {\n __extends(DayGridMirrorRenderer, _super);\n function DayGridMirrorRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DayGridMirrorRenderer.prototype.attachSegs = function (segs, mirrorInfo) {\n var sourceSeg = mirrorInfo.sourceSeg;\n var rowStructs = this.rowStructs = this.renderSegRows(segs);\n // inject each new event skeleton into each associated row\n this.dayGrid.rowEls.forEach(function (rowNode, row) {\n var skeletonEl = core.htmlToElement('
'); // will be absolutely positioned\n var skeletonTopEl;\n var skeletonTop;\n // If there is an original segment, match the top position. Otherwise, put it at the row's top level\n if (sourceSeg && sourceSeg.row === row) {\n skeletonTopEl = sourceSeg.el;\n }\n else {\n skeletonTopEl = rowNode.querySelector('.fc-content-skeleton tbody');\n if (!skeletonTopEl) { // when no events\n skeletonTopEl = rowNode.querySelector('.fc-content-skeleton table');\n }\n }\n skeletonTop = skeletonTopEl.getBoundingClientRect().top -\n rowNode.getBoundingClientRect().top; // the offsetParent origin\n skeletonEl.style.top = skeletonTop + 'px';\n skeletonEl.querySelector('table').appendChild(rowStructs[row].tbodyEl);\n rowNode.appendChild(skeletonEl);\n });\n };\n return DayGridMirrorRenderer;\n }(DayGridEventRenderer));\n\n var EMPTY_CELL_HTML = '';\n var DayGridFillRenderer = /** @class */ (function (_super) {\n __extends(DayGridFillRenderer, _super);\n function DayGridFillRenderer(dayGrid) {\n var _this = _super.call(this) || this;\n _this.fillSegTag = 'td'; // override the default tag name\n _this.dayGrid = dayGrid;\n return _this;\n }\n DayGridFillRenderer.prototype.renderSegs = function (type, context, segs) {\n // don't render timed background events\n if (type === 'bgEvent') {\n segs = segs.filter(function (seg) {\n return seg.eventRange.def.allDay;\n });\n }\n _super.prototype.renderSegs.call(this, type, context, segs);\n };\n DayGridFillRenderer.prototype.attachSegs = function (type, segs) {\n var els = [];\n var i;\n var seg;\n var skeletonEl;\n for (i = 0; i < segs.length; i++) {\n seg = segs[i];\n skeletonEl = this.renderFillRow(type, seg);\n this.dayGrid.rowEls[seg.row].appendChild(skeletonEl);\n els.push(skeletonEl);\n }\n return els;\n };\n // Generates the HTML needed for one row of a fill. Requires the seg's el to be rendered.\n DayGridFillRenderer.prototype.renderFillRow = function (type, seg) {\n var dayGrid = this.dayGrid;\n var isRtl = this.context.isRtl;\n var colCnt = dayGrid.colCnt;\n var leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol;\n var rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol;\n var startCol = leftCol;\n var endCol = rightCol + 1;\n var className;\n var skeletonEl;\n var trEl;\n if (type === 'businessHours') {\n className = 'bgevent';\n }\n else {\n className = type.toLowerCase();\n }\n skeletonEl = core.htmlToElement('
' +\n '
' +\n '
');\n trEl = skeletonEl.getElementsByTagName('tr')[0];\n if (startCol > 0) {\n core.appendToElement(trEl, \n // will create (startCol + 1) td's\n new Array(startCol + 1).join(EMPTY_CELL_HTML));\n }\n seg.el.colSpan = endCol - startCol;\n trEl.appendChild(seg.el);\n if (endCol < colCnt) {\n core.appendToElement(trEl, \n // will create (colCnt - endCol) td's\n new Array(colCnt - endCol + 1).join(EMPTY_CELL_HTML));\n }\n var introHtml = dayGrid.renderProps.renderIntroHtml();\n if (introHtml) {\n if (isRtl) {\n core.appendToElement(trEl, introHtml);\n }\n else {\n core.prependToElement(trEl, introHtml);\n }\n }\n return skeletonEl;\n };\n return DayGridFillRenderer;\n }(core.FillRenderer));\n\n var DayTile = /** @class */ (function (_super) {\n __extends(DayTile, _super);\n function DayTile(el) {\n var _this = _super.call(this, el) || this;\n var eventRenderer = _this.eventRenderer = new DayTileEventRenderer(_this);\n var renderFrame = _this.renderFrame = core.memoizeRendering(_this._renderFrame);\n _this.renderFgEvents = core.memoizeRendering(eventRenderer.renderSegs.bind(eventRenderer), eventRenderer.unrender.bind(eventRenderer), [renderFrame]);\n _this.renderEventSelection = core.memoizeRendering(eventRenderer.selectByInstanceId.bind(eventRenderer), eventRenderer.unselectByInstanceId.bind(eventRenderer), [_this.renderFgEvents]);\n _this.renderEventDrag = core.memoizeRendering(eventRenderer.hideByHash.bind(eventRenderer), eventRenderer.showByHash.bind(eventRenderer), [renderFrame]);\n _this.renderEventResize = core.memoizeRendering(eventRenderer.hideByHash.bind(eventRenderer), eventRenderer.showByHash.bind(eventRenderer), [renderFrame]);\n return _this;\n }\n DayTile.prototype.firstContext = function (context) {\n context.calendar.registerInteractiveComponent(this, {\n el: this.el,\n useEventCenter: false\n });\n };\n DayTile.prototype.render = function (props, context) {\n this.renderFrame(props.date);\n this.renderFgEvents(context, props.fgSegs);\n this.renderEventSelection(props.eventSelection);\n this.renderEventDrag(props.eventDragInstances);\n this.renderEventResize(props.eventResizeInstances);\n };\n DayTile.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.renderFrame.unrender(); // should unrender everything else\n this.context.calendar.unregisterInteractiveComponent(this);\n };\n DayTile.prototype._renderFrame = function (date) {\n var _a = this.context, theme = _a.theme, dateEnv = _a.dateEnv, options = _a.options;\n var title = dateEnv.format(date, core.createFormatter(options.dayPopoverFormat) // TODO: cache\n );\n this.el.innerHTML =\n '
' +\n '' +\n core.htmlEscape(title) +\n '' +\n '' +\n '
' +\n '
' +\n '
' +\n '
';\n this.segContainerEl = this.el.querySelector('.fc-event-container');\n };\n DayTile.prototype.queryHit = function (positionLeft, positionTop, elWidth, elHeight) {\n var date = this.props.date; // HACK\n if (positionLeft < elWidth && positionTop < elHeight) {\n return {\n component: this,\n dateSpan: {\n allDay: true,\n range: { start: date, end: core.addDays(date, 1) }\n },\n dayEl: this.el,\n rect: {\n left: 0,\n top: 0,\n right: elWidth,\n bottom: elHeight\n },\n layer: 1\n };\n }\n };\n return DayTile;\n }(core.DateComponent));\n var DayTileEventRenderer = /** @class */ (function (_super) {\n __extends(DayTileEventRenderer, _super);\n function DayTileEventRenderer(dayTile) {\n var _this = _super.call(this) || this;\n _this.dayTile = dayTile;\n return _this;\n }\n DayTileEventRenderer.prototype.attachSegs = function (segs) {\n for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {\n var seg = segs_1[_i];\n this.dayTile.segContainerEl.appendChild(seg.el);\n }\n };\n DayTileEventRenderer.prototype.detachSegs = function (segs) {\n for (var _i = 0, segs_2 = segs; _i < segs_2.length; _i++) {\n var seg = segs_2[_i];\n core.removeElement(seg.el);\n }\n };\n return DayTileEventRenderer;\n }(SimpleDayGridEventRenderer));\n\n var DayBgRow = /** @class */ (function () {\n function DayBgRow(context) {\n this.context = context;\n }\n DayBgRow.prototype.renderHtml = function (props) {\n var parts = [];\n if (props.renderIntroHtml) {\n parts.push(props.renderIntroHtml());\n }\n for (var _i = 0, _a = props.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n parts.push(renderCellHtml(cell.date, props.dateProfile, this.context, cell.htmlAttrs));\n }\n if (!props.cells.length) {\n parts.push('');\n }\n if (this.context.options.dir === 'rtl') {\n parts.reverse();\n }\n return '' + parts.join('') + '';\n };\n return DayBgRow;\n }());\n function renderCellHtml(date, dateProfile, context, otherAttrs) {\n var dateEnv = context.dateEnv, theme = context.theme;\n var isDateValid = core.rangeContainsMarker(dateProfile.activeRange, date); // TODO: called too frequently. cache somehow.\n var classes = core.getDayClasses(date, dateProfile, context);\n classes.unshift('fc-day', theme.getClass('widgetContent'));\n return '';\n }\n\n var DAY_NUM_FORMAT = core.createFormatter({ day: 'numeric' });\n var WEEK_NUM_FORMAT = core.createFormatter({ week: 'numeric' });\n var DayGrid = /** @class */ (function (_super) {\n __extends(DayGrid, _super);\n function DayGrid(el, renderProps) {\n var _this = _super.call(this, el) || this;\n _this.bottomCoordPadding = 0; // hack for extending the hit area for the last row of the coordinate grid\n _this.isCellSizesDirty = false;\n _this.renderProps = renderProps;\n var eventRenderer = _this.eventRenderer = new DayGridEventRenderer(_this);\n var fillRenderer = _this.fillRenderer = new DayGridFillRenderer(_this);\n _this.mirrorRenderer = new DayGridMirrorRenderer(_this);\n var renderCells = _this.renderCells = core.memoizeRendering(_this._renderCells, _this._unrenderCells);\n _this.renderBusinessHours = core.memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'businessHours'), fillRenderer.unrender.bind(fillRenderer, 'businessHours'), [renderCells]);\n _this.renderDateSelection = core.memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'highlight'), fillRenderer.unrender.bind(fillRenderer, 'highlight'), [renderCells]);\n _this.renderBgEvents = core.memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'bgEvent'), fillRenderer.unrender.bind(fillRenderer, 'bgEvent'), [renderCells]);\n _this.renderFgEvents = core.memoizeRendering(eventRenderer.renderSegs.bind(eventRenderer), eventRenderer.unrender.bind(eventRenderer), [renderCells]);\n _this.renderEventSelection = core.memoizeRendering(eventRenderer.selectByInstanceId.bind(eventRenderer), eventRenderer.unselectByInstanceId.bind(eventRenderer), [_this.renderFgEvents]);\n _this.renderEventDrag = core.memoizeRendering(_this._renderEventDrag, _this._unrenderEventDrag, [renderCells]);\n _this.renderEventResize = core.memoizeRendering(_this._renderEventResize, _this._unrenderEventResize, [renderCells]);\n return _this;\n }\n DayGrid.prototype.render = function (props, context) {\n var cells = props.cells;\n this.rowCnt = cells.length;\n this.colCnt = cells[0].length;\n this.renderCells(cells, props.isRigid);\n this.renderBusinessHours(context, props.businessHourSegs);\n this.renderDateSelection(context, props.dateSelectionSegs);\n this.renderBgEvents(context, props.bgEventSegs);\n this.renderFgEvents(context, props.fgEventSegs);\n this.renderEventSelection(props.eventSelection);\n this.renderEventDrag(props.eventDrag);\n this.renderEventResize(props.eventResize);\n if (this.segPopoverTile) {\n this.updateSegPopoverTile();\n }\n };\n DayGrid.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.renderCells.unrender(); // will unrender everything else\n };\n DayGrid.prototype.getCellRange = function (row, col) {\n var start = this.props.cells[row][col].date;\n var end = core.addDays(start, 1);\n return { start: start, end: end };\n };\n DayGrid.prototype.updateSegPopoverTile = function (date, segs) {\n var ownProps = this.props;\n this.segPopoverTile.receiveProps({\n date: date || this.segPopoverTile.props.date,\n fgSegs: segs || this.segPopoverTile.props.fgSegs,\n eventSelection: ownProps.eventSelection,\n eventDragInstances: ownProps.eventDrag ? ownProps.eventDrag.affectedInstances : null,\n eventResizeInstances: ownProps.eventResize ? ownProps.eventResize.affectedInstances : null\n }, this.context);\n };\n /* Date Rendering\n ------------------------------------------------------------------------------------------------------------------*/\n DayGrid.prototype._renderCells = function (cells, isRigid) {\n var _a = this.context, calendar = _a.calendar, view = _a.view, isRtl = _a.isRtl, dateEnv = _a.dateEnv;\n var _b = this, rowCnt = _b.rowCnt, colCnt = _b.colCnt;\n var html = '';\n var row;\n var col;\n for (row = 0; row < rowCnt; row++) {\n html += this.renderDayRowHtml(row, isRigid);\n }\n this.el.innerHTML = html;\n this.rowEls = core.findElements(this.el, '.fc-row');\n this.cellEls = core.findElements(this.el, '.fc-day, .fc-disabled-day');\n if (isRtl) {\n this.cellEls.reverse();\n }\n this.rowPositions = new core.PositionCache(this.el, this.rowEls, false, true // vertical\n );\n this.colPositions = new core.PositionCache(this.el, this.cellEls.slice(0, colCnt), // only the first row\n true, false // horizontal\n );\n // trigger dayRender with each cell's element\n for (row = 0; row < rowCnt; row++) {\n for (col = 0; col < colCnt; col++) {\n calendar.publiclyTrigger('dayRender', [\n {\n date: dateEnv.toDate(cells[row][col].date),\n el: this.getCellEl(row, col),\n view: view\n }\n ]);\n }\n }\n this.isCellSizesDirty = true;\n };\n DayGrid.prototype._unrenderCells = function () {\n this.removeSegPopover();\n };\n // Generates the HTML for a single row, which is a div that wraps a table.\n // `row` is the row number.\n DayGrid.prototype.renderDayRowHtml = function (row, isRigid) {\n var theme = this.context.theme;\n var classes = ['fc-row', 'fc-week', theme.getClass('dayRow')];\n if (isRigid) {\n classes.push('fc-rigid');\n }\n var bgRow = new DayBgRow(this.context);\n return '' +\n '
' +\n '
' +\n '' +\n bgRow.renderHtml({\n cells: this.props.cells[row],\n dateProfile: this.props.dateProfile,\n renderIntroHtml: this.renderProps.renderBgIntroHtml\n }) +\n '
' +\n '
' +\n '
' +\n '' +\n (this.getIsNumbersVisible() ?\n '' +\n this.renderNumberTrHtml(row) +\n '' :\n '') +\n '
' +\n '
' +\n '
';\n };\n DayGrid.prototype.getIsNumbersVisible = function () {\n return this.getIsDayNumbersVisible() ||\n this.renderProps.cellWeekNumbersVisible ||\n this.renderProps.colWeekNumbersVisible;\n };\n DayGrid.prototype.getIsDayNumbersVisible = function () {\n return this.rowCnt > 1;\n };\n /* Grid Number Rendering\n ------------------------------------------------------------------------------------------------------------------*/\n DayGrid.prototype.renderNumberTrHtml = function (row) {\n var isRtl = this.context.isRtl;\n var intro = this.renderProps.renderNumberIntroHtml(row, this);\n return '' +\n '' +\n (isRtl ? '' : intro) +\n this.renderNumberCellsHtml(row) +\n (isRtl ? intro : '') +\n '';\n };\n DayGrid.prototype.renderNumberCellsHtml = function (row) {\n var htmls = [];\n var col;\n var date;\n for (col = 0; col < this.colCnt; col++) {\n date = this.props.cells[row][col].date;\n htmls.push(this.renderNumberCellHtml(date));\n }\n if (this.context.isRtl) {\n htmls.reverse();\n }\n return htmls.join('');\n };\n // Generates the HTML for the s of the \"number\" row in the DayGrid's content skeleton.\n // The number row will only exist if either day numbers or week numbers are turned on.\n DayGrid.prototype.renderNumberCellHtml = function (date) {\n var _a = this.context, dateEnv = _a.dateEnv, options = _a.options;\n var html = '';\n var isDateValid = core.rangeContainsMarker(this.props.dateProfile.activeRange, date); // TODO: called too frequently. cache somehow.\n var isDayNumberVisible = this.getIsDayNumbersVisible() && isDateValid;\n var classes;\n var weekCalcFirstDow;\n if (!isDayNumberVisible && !this.renderProps.cellWeekNumbersVisible) {\n // no numbers in day cell (week number must be along the side)\n return ''; // will create an empty space above events :(\n }\n classes = core.getDayClasses(date, this.props.dateProfile, this.context);\n classes.unshift('fc-day-top');\n if (this.renderProps.cellWeekNumbersVisible) {\n weekCalcFirstDow = dateEnv.weekDow;\n }\n html += '';\n if (this.renderProps.cellWeekNumbersVisible && (date.getUTCDay() === weekCalcFirstDow)) {\n html += core.buildGotoAnchorHtml(options, dateEnv, { date: date, type: 'week' }, { 'class': 'fc-week-number' }, dateEnv.format(date, WEEK_NUM_FORMAT) // inner HTML\n );\n }\n if (isDayNumberVisible) {\n html += core.buildGotoAnchorHtml(options, dateEnv, date, { 'class': 'fc-day-number' }, dateEnv.format(date, DAY_NUM_FORMAT) // inner HTML\n );\n }\n html += '';\n return html;\n };\n /* Sizing\n ------------------------------------------------------------------------------------------------------------------*/\n DayGrid.prototype.updateSize = function (isResize) {\n var calendar = this.context.calendar;\n var _a = this, fillRenderer = _a.fillRenderer, eventRenderer = _a.eventRenderer, mirrorRenderer = _a.mirrorRenderer;\n if (isResize ||\n this.isCellSizesDirty ||\n calendar.isEventsUpdated // hack\n ) {\n this.buildPositionCaches();\n this.isCellSizesDirty = false;\n }\n fillRenderer.computeSizes(isResize);\n eventRenderer.computeSizes(isResize);\n mirrorRenderer.computeSizes(isResize);\n fillRenderer.assignSizes(isResize);\n eventRenderer.assignSizes(isResize);\n mirrorRenderer.assignSizes(isResize);\n };\n DayGrid.prototype.buildPositionCaches = function () {\n this.buildColPositions();\n this.buildRowPositions();\n };\n DayGrid.prototype.buildColPositions = function () {\n this.colPositions.build();\n };\n DayGrid.prototype.buildRowPositions = function () {\n this.rowPositions.build();\n this.rowPositions.bottoms[this.rowCnt - 1] += this.bottomCoordPadding; // hack\n };\n /* Hit System\n ------------------------------------------------------------------------------------------------------------------*/\n DayGrid.prototype.positionToHit = function (leftPosition, topPosition) {\n var _a = this, colPositions = _a.colPositions, rowPositions = _a.rowPositions;\n var col = colPositions.leftToIndex(leftPosition);\n var row = rowPositions.topToIndex(topPosition);\n if (row != null && col != null) {\n return {\n row: row,\n col: col,\n dateSpan: {\n range: this.getCellRange(row, col),\n allDay: true\n },\n dayEl: this.getCellEl(row, col),\n relativeRect: {\n left: colPositions.lefts[col],\n right: colPositions.rights[col],\n top: rowPositions.tops[row],\n bottom: rowPositions.bottoms[row]\n }\n };\n }\n };\n /* Cell System\n ------------------------------------------------------------------------------------------------------------------*/\n // FYI: the first column is the leftmost column, regardless of date\n DayGrid.prototype.getCellEl = function (row, col) {\n return this.cellEls[row * this.colCnt + col];\n };\n /* Event Drag Visualization\n ------------------------------------------------------------------------------------------------------------------*/\n DayGrid.prototype._renderEventDrag = function (state) {\n if (state) {\n this.eventRenderer.hideByHash(state.affectedInstances);\n this.fillRenderer.renderSegs('highlight', this.context, state.segs);\n }\n };\n DayGrid.prototype._unrenderEventDrag = function (state) {\n if (state) {\n this.eventRenderer.showByHash(state.affectedInstances);\n this.fillRenderer.unrender('highlight', this.context);\n }\n };\n /* Event Resize Visualization\n ------------------------------------------------------------------------------------------------------------------*/\n DayGrid.prototype._renderEventResize = function (state) {\n if (state) {\n this.eventRenderer.hideByHash(state.affectedInstances);\n this.fillRenderer.renderSegs('highlight', this.context, state.segs);\n this.mirrorRenderer.renderSegs(this.context, state.segs, { isResizing: true, sourceSeg: state.sourceSeg });\n }\n };\n DayGrid.prototype._unrenderEventResize = function (state) {\n if (state) {\n this.eventRenderer.showByHash(state.affectedInstances);\n this.fillRenderer.unrender('highlight', this.context);\n this.mirrorRenderer.unrender(this.context, state.segs, { isResizing: true, sourceSeg: state.sourceSeg });\n }\n };\n /* More+ Link Popover\n ------------------------------------------------------------------------------------------------------------------*/\n DayGrid.prototype.removeSegPopover = function () {\n if (this.segPopover) {\n this.segPopover.hide(); // in handler, will call segPopover's removeElement\n }\n };\n // Limits the number of \"levels\" (vertically stacking layers of events) for each row of the grid.\n // `levelLimit` can be false (don't limit), a number, or true (should be computed).\n DayGrid.prototype.limitRows = function (levelLimit) {\n var rowStructs = this.eventRenderer.rowStructs || [];\n var row; // row #\n var rowLevelLimit;\n for (row = 0; row < rowStructs.length; row++) {\n this.unlimitRow(row);\n if (!levelLimit) {\n rowLevelLimit = false;\n }\n else if (typeof levelLimit === 'number') {\n rowLevelLimit = levelLimit;\n }\n else {\n rowLevelLimit = this.computeRowLevelLimit(row);\n }\n if (rowLevelLimit !== false) {\n this.limitRow(row, rowLevelLimit);\n }\n }\n };\n // Computes the number of levels a row will accomodate without going outside its bounds.\n // Assumes the row is \"rigid\" (maintains a constant height regardless of what is inside).\n // `row` is the row number.\n DayGrid.prototype.computeRowLevelLimit = function (row) {\n var rowEl = this.rowEls[row]; // the containing \"fake\" row div\n var rowBottom = rowEl.getBoundingClientRect().bottom; // relative to viewport!\n var trEls = core.findChildren(this.eventRenderer.rowStructs[row].tbodyEl);\n var i;\n var trEl;\n // Reveal one level at a time and stop when we find one out of bounds\n for (i = 0; i < trEls.length; i++) {\n trEl = trEls[i];\n trEl.classList.remove('fc-limited'); // reset to original state (reveal)\n if (trEl.getBoundingClientRect().bottom > rowBottom) {\n return i;\n }\n }\n return false; // should not limit at all\n };\n // Limits the given grid row to the maximum number of levels and injects \"more\" links if necessary.\n // `row` is the row number.\n // `levelLimit` is a number for the maximum (inclusive) number of levels allowed.\n DayGrid.prototype.limitRow = function (row, levelLimit) {\n var _this = this;\n var colCnt = this.colCnt;\n var isRtl = this.context.isRtl;\n var rowStruct = this.eventRenderer.rowStructs[row];\n var moreNodes = []; // array of \"more\" links and DOM nodes\n var col = 0; // col #, left-to-right (not chronologically)\n var levelSegs; // array of segment objects in the last allowable level, ordered left-to-right\n var cellMatrix; // a matrix (by level, then column) of all elements in the row\n var limitedNodes; // array of temporarily hidden level and segment DOM nodes\n var i;\n var seg;\n var segsBelow; // array of segment objects below `seg` in the current `col`\n var totalSegsBelow; // total number of segments below `seg` in any of the columns `seg` occupies\n var colSegsBelow; // array of segment arrays, below seg, one for each column (offset from segs's first column)\n var td;\n var rowSpan;\n var segMoreNodes; // array of \"more\" cells that will stand-in for the current seg's cell\n var j;\n var moreTd;\n var moreWrap;\n var moreLink;\n // Iterates through empty level cells and places \"more\" links inside if need be\n var emptyCellsUntil = function (endCol) {\n while (col < endCol) {\n segsBelow = _this.getCellSegs(row, col, levelLimit);\n if (segsBelow.length) {\n td = cellMatrix[levelLimit - 1][col];\n moreLink = _this.renderMoreLink(row, col, segsBelow);\n moreWrap = core.createElement('div', null, moreLink);\n td.appendChild(moreWrap);\n moreNodes.push(moreWrap);\n }\n col++;\n }\n };\n if (levelLimit && levelLimit < rowStruct.segLevels.length) { // is it actually over the limit?\n levelSegs = rowStruct.segLevels[levelLimit - 1];\n cellMatrix = rowStruct.cellMatrix;\n limitedNodes = core.findChildren(rowStruct.tbodyEl).slice(levelLimit); // get level elements past the limit\n limitedNodes.forEach(function (node) {\n node.classList.add('fc-limited'); // hide elements and get a simple DOM-nodes array\n });\n // iterate though segments in the last allowable level\n for (i = 0; i < levelSegs.length; i++) {\n seg = levelSegs[i];\n var leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol;\n var rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol;\n emptyCellsUntil(leftCol); // process empty cells before the segment\n // determine *all* segments below `seg` that occupy the same columns\n colSegsBelow = [];\n totalSegsBelow = 0;\n while (col <= rightCol) {\n segsBelow = this.getCellSegs(row, col, levelLimit);\n colSegsBelow.push(segsBelow);\n totalSegsBelow += segsBelow.length;\n col++;\n }\n if (totalSegsBelow) { // do we need to replace this segment with one or many \"more\" links?\n td = cellMatrix[levelLimit - 1][leftCol]; // the segment's parent cell\n rowSpan = td.rowSpan || 1;\n segMoreNodes = [];\n // make a replacement for each column the segment occupies. will be one for each colspan\n for (j = 0; j < colSegsBelow.length; j++) {\n moreTd = core.createElement('td', { className: 'fc-more-cell', rowSpan: rowSpan });\n segsBelow = colSegsBelow[j];\n moreLink = this.renderMoreLink(row, leftCol + j, [seg].concat(segsBelow) // count seg as hidden too\n );\n moreWrap = core.createElement('div', null, moreLink);\n moreTd.appendChild(moreWrap);\n segMoreNodes.push(moreTd);\n moreNodes.push(moreTd);\n }\n td.classList.add('fc-limited');\n core.insertAfterElement(td, segMoreNodes);\n limitedNodes.push(td);\n }\n }\n emptyCellsUntil(this.colCnt); // finish off the level\n rowStruct.moreEls = moreNodes; // for easy undoing later\n rowStruct.limitedEls = limitedNodes; // for easy undoing later\n }\n };\n // Reveals all levels and removes all \"more\"-related elements for a grid's row.\n // `row` is a row number.\n DayGrid.prototype.unlimitRow = function (row) {\n var rowStruct = this.eventRenderer.rowStructs[row];\n if (rowStruct.moreEls) {\n rowStruct.moreEls.forEach(core.removeElement);\n rowStruct.moreEls = null;\n }\n if (rowStruct.limitedEls) {\n rowStruct.limitedEls.forEach(function (limitedEl) {\n limitedEl.classList.remove('fc-limited');\n });\n rowStruct.limitedEls = null;\n }\n };\n // Renders an element that represents hidden event element for a cell.\n // Responsible for attaching click handler as well.\n DayGrid.prototype.renderMoreLink = function (row, col, hiddenSegs) {\n var _this = this;\n var _a = this.context, calendar = _a.calendar, view = _a.view, dateEnv = _a.dateEnv, options = _a.options, isRtl = _a.isRtl;\n var a = core.createElement('a', { className: 'fc-more' });\n a.innerText = this.getMoreLinkText(hiddenSegs.length);\n a.addEventListener('click', function (ev) {\n var clickOption = options.eventLimitClick;\n var _col = isRtl ? _this.colCnt - col - 1 : col; // HACK: props.cells has different dir system?\n var date = _this.props.cells[row][_col].date;\n var moreEl = ev.currentTarget;\n var dayEl = _this.getCellEl(row, col);\n var allSegs = _this.getCellSegs(row, col);\n // rescope the segments to be within the cell's date\n var reslicedAllSegs = _this.resliceDaySegs(allSegs, date);\n var reslicedHiddenSegs = _this.resliceDaySegs(hiddenSegs, date);\n if (typeof clickOption === 'function') {\n // the returned value can be an atomic option\n clickOption = calendar.publiclyTrigger('eventLimitClick', [\n {\n date: dateEnv.toDate(date),\n allDay: true,\n dayEl: dayEl,\n moreEl: moreEl,\n segs: reslicedAllSegs,\n hiddenSegs: reslicedHiddenSegs,\n jsEvent: ev,\n view: view\n }\n ]);\n }\n if (clickOption === 'popover') {\n _this.showSegPopover(row, col, moreEl, reslicedAllSegs);\n }\n else if (typeof clickOption === 'string') { // a view name\n calendar.zoomTo(date, clickOption);\n }\n });\n return a;\n };\n // Reveals the popover that displays all events within a cell\n DayGrid.prototype.showSegPopover = function (row, col, moreLink, segs) {\n var _this = this;\n var _a = this.context, calendar = _a.calendar, view = _a.view, theme = _a.theme, isRtl = _a.isRtl;\n var _col = isRtl ? this.colCnt - col - 1 : col; // HACK: props.cells has different dir system?\n var moreWrap = moreLink.parentNode; // the
wrapper around the \n var topEl; // the element we want to match the top coordinate of\n var options;\n if (this.rowCnt === 1) {\n topEl = view.el; // will cause the popover to cover any sort of header\n }\n else {\n topEl = this.rowEls[row]; // will align with top of row\n }\n options = {\n className: 'fc-more-popover ' + theme.getClass('popover'),\n parentEl: view.el,\n top: core.computeRect(topEl).top,\n autoHide: true,\n content: function (el) {\n _this.segPopoverTile = new DayTile(el);\n _this.updateSegPopoverTile(_this.props.cells[row][_col].date, segs);\n },\n hide: function () {\n _this.segPopoverTile.destroy();\n _this.segPopoverTile = null;\n _this.segPopover.destroy();\n _this.segPopover = null;\n }\n };\n // Determine horizontal coordinate.\n // We use the moreWrap instead of the to avoid border confusion.\n if (isRtl) {\n options.right = core.computeRect(moreWrap).right + 1; // +1 to be over cell border\n }\n else {\n options.left = core.computeRect(moreWrap).left - 1; // -1 to be over cell border\n }\n this.segPopover = new Popover(options);\n this.segPopover.show();\n calendar.releaseAfterSizingTriggers(); // hack for eventPositioned\n };\n // Given the events within an array of segment objects, reslice them to be in a single day\n DayGrid.prototype.resliceDaySegs = function (segs, dayDate) {\n var dayStart = dayDate;\n var dayEnd = core.addDays(dayStart, 1);\n var dayRange = { start: dayStart, end: dayEnd };\n var newSegs = [];\n for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {\n var seg = segs_1[_i];\n var eventRange = seg.eventRange;\n var origRange = eventRange.range;\n var slicedRange = core.intersectRanges(origRange, dayRange);\n if (slicedRange) {\n newSegs.push(__assign({}, seg, { eventRange: {\n def: eventRange.def,\n ui: __assign({}, eventRange.ui, { durationEditable: false }),\n instance: eventRange.instance,\n range: slicedRange\n }, isStart: seg.isStart && slicedRange.start.valueOf() === origRange.start.valueOf(), isEnd: seg.isEnd && slicedRange.end.valueOf() === origRange.end.valueOf() }));\n }\n }\n return newSegs;\n };\n // Generates the text that should be inside a \"more\" link, given the number of events it represents\n DayGrid.prototype.getMoreLinkText = function (num) {\n var opt = this.context.options.eventLimitText;\n if (typeof opt === 'function') {\n return opt(num);\n }\n else {\n return '+' + num + ' ' + opt;\n }\n };\n // Returns segments within a given cell.\n // If `startLevel` is specified, returns only events including and below that level. Otherwise returns all segs.\n DayGrid.prototype.getCellSegs = function (row, col, startLevel) {\n var segMatrix = this.eventRenderer.rowStructs[row].segMatrix;\n var level = startLevel || 0;\n var segs = [];\n var seg;\n while (level < segMatrix.length) {\n seg = segMatrix[level][col];\n if (seg) {\n segs.push(seg);\n }\n level++;\n }\n return segs;\n };\n return DayGrid;\n }(core.DateComponent));\n\n var WEEK_NUM_FORMAT$1 = core.createFormatter({ week: 'numeric' });\n /* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells.\n ----------------------------------------------------------------------------------------------------------------------*/\n // It is a manager for a DayGrid subcomponent, which does most of the heavy lifting.\n // It is responsible for managing width/height.\n var AbstractDayGridView = /** @class */ (function (_super) {\n __extends(AbstractDayGridView, _super);\n function AbstractDayGridView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.processOptions = core.memoize(_this._processOptions);\n _this.renderSkeleton = core.memoizeRendering(_this._renderSkeleton, _this._unrenderSkeleton);\n /* Header Rendering\n ------------------------------------------------------------------------------------------------------------------*/\n // Generates the HTML that will go before the day-of week header cells\n _this.renderHeadIntroHtml = function () {\n var _a = _this.context, theme = _a.theme, options = _a.options;\n if (_this.colWeekNumbersVisible) {\n return '' +\n '' +\n '' + // needed for matchCellWidths\n core.htmlEscape(options.weekLabel) +\n '' +\n '';\n }\n return '';\n };\n /* Day Grid Rendering\n ------------------------------------------------------------------------------------------------------------------*/\n // Generates the HTML that will go before content-skeleton cells that display the day/week numbers\n _this.renderDayGridNumberIntroHtml = function (row, dayGrid) {\n var _a = _this.context, options = _a.options, dateEnv = _a.dateEnv;\n var weekStart = dayGrid.props.cells[row][0].date;\n if (_this.colWeekNumbersVisible) {\n return '' +\n '' +\n core.buildGotoAnchorHtml(// aside from link, important for matchCellWidths\n options, dateEnv, { date: weekStart, type: 'week', forceOff: dayGrid.colCnt === 1 }, dateEnv.format(weekStart, WEEK_NUM_FORMAT$1) // inner HTML\n ) +\n '';\n }\n return '';\n };\n // Generates the HTML that goes before the day bg cells for each day-row\n _this.renderDayGridBgIntroHtml = function () {\n var theme = _this.context.theme;\n if (_this.colWeekNumbersVisible) {\n return '';\n }\n return '';\n };\n // Generates the HTML that goes before every other type of row generated by DayGrid.\n // Affects mirror-skeleton and highlight-skeleton rows.\n _this.renderDayGridIntroHtml = function () {\n if (_this.colWeekNumbersVisible) {\n return '';\n }\n return '';\n };\n return _this;\n }\n AbstractDayGridView.prototype._processOptions = function (options) {\n if (options.weekNumbers) {\n if (options.weekNumbersWithinDays) {\n this.cellWeekNumbersVisible = true;\n this.colWeekNumbersVisible = false;\n }\n else {\n this.cellWeekNumbersVisible = false;\n this.colWeekNumbersVisible = true;\n }\n }\n else {\n this.colWeekNumbersVisible = false;\n this.cellWeekNumbersVisible = false;\n }\n };\n AbstractDayGridView.prototype.render = function (props, context) {\n _super.prototype.render.call(this, props, context);\n this.processOptions(context.options);\n this.renderSkeleton(context);\n };\n AbstractDayGridView.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.renderSkeleton.unrender();\n };\n AbstractDayGridView.prototype._renderSkeleton = function (context) {\n this.el.classList.add('fc-dayGrid-view');\n this.el.innerHTML = this.renderSkeletonHtml();\n this.scroller = new core.ScrollComponent('hidden', // overflow x\n 'auto' // overflow y\n );\n var dayGridContainerEl = this.scroller.el;\n this.el.querySelector('.fc-body > tr > td').appendChild(dayGridContainerEl);\n dayGridContainerEl.classList.add('fc-day-grid-container');\n var dayGridEl = core.createElement('div', { className: 'fc-day-grid' });\n dayGridContainerEl.appendChild(dayGridEl);\n this.dayGrid = new DayGrid(dayGridEl, {\n renderNumberIntroHtml: this.renderDayGridNumberIntroHtml,\n renderBgIntroHtml: this.renderDayGridBgIntroHtml,\n renderIntroHtml: this.renderDayGridIntroHtml,\n colWeekNumbersVisible: this.colWeekNumbersVisible,\n cellWeekNumbersVisible: this.cellWeekNumbersVisible\n });\n };\n AbstractDayGridView.prototype._unrenderSkeleton = function () {\n this.el.classList.remove('fc-dayGrid-view');\n this.dayGrid.destroy();\n this.scroller.destroy();\n };\n // Builds the HTML skeleton for the view.\n // The day-grid component will render inside of a container defined by this HTML.\n AbstractDayGridView.prototype.renderSkeletonHtml = function () {\n var _a = this.context, theme = _a.theme, options = _a.options;\n return '' +\n '' +\n (options.columnHeader ?\n '' +\n '' +\n '' +\n '' +\n '' :\n '') +\n '' +\n '' +\n '' +\n '' +\n '' +\n '
 
';\n };\n // Generates an HTML attribute string for setting the width of the week number column, if it is known\n AbstractDayGridView.prototype.weekNumberStyleAttr = function () {\n if (this.weekNumberWidth != null) {\n return 'style=\"width:' + this.weekNumberWidth + 'px\"';\n }\n return '';\n };\n // Determines whether each row should have a constant height\n AbstractDayGridView.prototype.hasRigidRows = function () {\n var eventLimit = this.context.options.eventLimit;\n return eventLimit && typeof eventLimit !== 'number';\n };\n /* Dimensions\n ------------------------------------------------------------------------------------------------------------------*/\n AbstractDayGridView.prototype.updateSize = function (isResize, viewHeight, isAuto) {\n _super.prototype.updateSize.call(this, isResize, viewHeight, isAuto); // will call updateBaseSize. important that executes first\n this.dayGrid.updateSize(isResize);\n };\n // Refreshes the horizontal dimensions of the view\n AbstractDayGridView.prototype.updateBaseSize = function (isResize, viewHeight, isAuto) {\n var dayGrid = this.dayGrid;\n var eventLimit = this.context.options.eventLimit;\n var headRowEl = this.header ? this.header.el : null; // HACK\n var scrollerHeight;\n var scrollbarWidths;\n // hack to give the view some height prior to dayGrid's columns being rendered\n // TODO: separate setting height from scroller VS dayGrid.\n if (!dayGrid.rowEls) {\n if (!isAuto) {\n scrollerHeight = this.computeScrollerHeight(viewHeight);\n this.scroller.setHeight(scrollerHeight);\n }\n return;\n }\n if (this.colWeekNumbersVisible) {\n // Make sure all week number cells running down the side have the same width.\n this.weekNumberWidth = core.matchCellWidths(core.findElements(this.el, '.fc-week-number'));\n }\n // reset all heights to be natural\n this.scroller.clear();\n if (headRowEl) {\n core.uncompensateScroll(headRowEl);\n }\n dayGrid.removeSegPopover(); // kill the \"more\" popover if displayed\n // is the event limit a constant level number?\n if (eventLimit && typeof eventLimit === 'number') {\n dayGrid.limitRows(eventLimit); // limit the levels first so the height can redistribute after\n }\n // distribute the height to the rows\n // (viewHeight is a \"recommended\" value if isAuto)\n scrollerHeight = this.computeScrollerHeight(viewHeight);\n this.setGridHeight(scrollerHeight, isAuto);\n // is the event limit dynamically calculated?\n if (eventLimit && typeof eventLimit !== 'number') {\n dayGrid.limitRows(eventLimit); // limit the levels after the grid's row heights have been set\n }\n if (!isAuto) { // should we force dimensions of the scroll container?\n this.scroller.setHeight(scrollerHeight);\n scrollbarWidths = this.scroller.getScrollbarWidths();\n if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars?\n if (headRowEl) {\n core.compensateScroll(headRowEl, scrollbarWidths);\n }\n // doing the scrollbar compensation might have created text overflow which created more height. redo\n scrollerHeight = this.computeScrollerHeight(viewHeight);\n this.scroller.setHeight(scrollerHeight);\n }\n // guarantees the same scrollbar widths\n this.scroller.lockOverflow(scrollbarWidths);\n }\n };\n // given a desired total height of the view, returns what the height of the scroller should be\n AbstractDayGridView.prototype.computeScrollerHeight = function (viewHeight) {\n return viewHeight -\n core.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller\n };\n // Sets the height of just the DayGrid component in this view\n AbstractDayGridView.prototype.setGridHeight = function (height, isAuto) {\n if (this.context.options.monthMode) {\n // if auto, make the height of each row the height that it would be if there were 6 weeks\n if (isAuto) {\n height *= this.dayGrid.rowCnt / 6;\n }\n core.distributeHeight(this.dayGrid.rowEls, height, !isAuto); // if auto, don't compensate for height-hogging rows\n }\n else {\n if (isAuto) {\n core.undistributeHeight(this.dayGrid.rowEls); // let the rows be their natural height with no expanding\n }\n else {\n core.distributeHeight(this.dayGrid.rowEls, height, true); // true = compensate for height-hogging rows\n }\n }\n };\n /* Scroll\n ------------------------------------------------------------------------------------------------------------------*/\n AbstractDayGridView.prototype.computeDateScroll = function (duration) {\n return { top: 0 };\n };\n AbstractDayGridView.prototype.queryDateScroll = function () {\n return { top: this.scroller.getScrollTop() };\n };\n AbstractDayGridView.prototype.applyDateScroll = function (scroll) {\n if (scroll.top !== undefined) {\n this.scroller.setScrollTop(scroll.top);\n }\n };\n return AbstractDayGridView;\n }(core.View));\n AbstractDayGridView.prototype.dateProfileGeneratorClass = DayGridDateProfileGenerator;\n\n var SimpleDayGrid = /** @class */ (function (_super) {\n __extends(SimpleDayGrid, _super);\n function SimpleDayGrid(dayGrid) {\n var _this = _super.call(this, dayGrid.el) || this;\n _this.slicer = new DayGridSlicer();\n _this.dayGrid = dayGrid;\n return _this;\n }\n SimpleDayGrid.prototype.firstContext = function (context) {\n context.calendar.registerInteractiveComponent(this, { el: this.dayGrid.el });\n };\n SimpleDayGrid.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.context.calendar.unregisterInteractiveComponent(this);\n };\n SimpleDayGrid.prototype.render = function (props, context) {\n var dayGrid = this.dayGrid;\n var dateProfile = props.dateProfile, dayTable = props.dayTable;\n dayGrid.receiveProps(__assign({}, this.slicer.sliceProps(props, dateProfile, props.nextDayThreshold, context.calendar, dayGrid, dayTable), { dateProfile: dateProfile, cells: dayTable.cells, isRigid: props.isRigid }), context);\n };\n SimpleDayGrid.prototype.buildPositionCaches = function () {\n this.dayGrid.buildPositionCaches();\n };\n SimpleDayGrid.prototype.queryHit = function (positionLeft, positionTop) {\n var rawHit = this.dayGrid.positionToHit(positionLeft, positionTop);\n if (rawHit) {\n return {\n component: this.dayGrid,\n dateSpan: rawHit.dateSpan,\n dayEl: rawHit.dayEl,\n rect: {\n left: rawHit.relativeRect.left,\n right: rawHit.relativeRect.right,\n top: rawHit.relativeRect.top,\n bottom: rawHit.relativeRect.bottom\n },\n layer: 0\n };\n }\n };\n return SimpleDayGrid;\n }(core.DateComponent));\n var DayGridSlicer = /** @class */ (function (_super) {\n __extends(DayGridSlicer, _super);\n function DayGridSlicer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DayGridSlicer.prototype.sliceRange = function (dateRange, dayTable) {\n return dayTable.sliceRange(dateRange);\n };\n return DayGridSlicer;\n }(core.Slicer));\n\n var DayGridView = /** @class */ (function (_super) {\n __extends(DayGridView, _super);\n function DayGridView() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.buildDayTable = core.memoize(buildDayTable);\n return _this;\n }\n DayGridView.prototype.render = function (props, context) {\n _super.prototype.render.call(this, props, context); // will call _renderSkeleton/_unrenderSkeleton\n var dateProfile = this.props.dateProfile;\n var dayTable = this.dayTable =\n this.buildDayTable(dateProfile, props.dateProfileGenerator);\n if (this.header) {\n this.header.receiveProps({\n dateProfile: dateProfile,\n dates: dayTable.headerDates,\n datesRepDistinctDays: dayTable.rowCnt === 1,\n renderIntroHtml: this.renderHeadIntroHtml\n }, context);\n }\n this.simpleDayGrid.receiveProps({\n dateProfile: dateProfile,\n dayTable: dayTable,\n businessHours: props.businessHours,\n dateSelection: props.dateSelection,\n eventStore: props.eventStore,\n eventUiBases: props.eventUiBases,\n eventSelection: props.eventSelection,\n eventDrag: props.eventDrag,\n eventResize: props.eventResize,\n isRigid: this.hasRigidRows(),\n nextDayThreshold: this.context.nextDayThreshold\n }, context);\n };\n DayGridView.prototype._renderSkeleton = function (context) {\n _super.prototype._renderSkeleton.call(this, context);\n if (context.options.columnHeader) {\n this.header = new core.DayHeader(this.el.querySelector('.fc-head-container'));\n }\n this.simpleDayGrid = new SimpleDayGrid(this.dayGrid);\n };\n DayGridView.prototype._unrenderSkeleton = function () {\n _super.prototype._unrenderSkeleton.call(this);\n if (this.header) {\n this.header.destroy();\n }\n this.simpleDayGrid.destroy();\n };\n return DayGridView;\n }(AbstractDayGridView));\n function buildDayTable(dateProfile, dateProfileGenerator) {\n var daySeries = new core.DaySeries(dateProfile.renderRange, dateProfileGenerator);\n return new core.DayTable(daySeries, /year|month|week/.test(dateProfile.currentRangeUnit));\n }\n\n var main = core.createPlugin({\n defaultView: 'dayGridMonth',\n views: {\n dayGrid: DayGridView,\n dayGridDay: {\n type: 'dayGrid',\n duration: { days: 1 }\n },\n dayGridWeek: {\n type: 'dayGrid',\n duration: { weeks: 1 }\n },\n dayGridMonth: {\n type: 'dayGrid',\n duration: { months: 1 },\n monthMode: true,\n fixedWeekCount: true\n }\n }\n });\n\n exports.AbstractDayGridView = AbstractDayGridView;\n exports.DayBgRow = DayBgRow;\n exports.DayGrid = DayGrid;\n exports.DayGridSlicer = DayGridSlicer;\n exports.DayGridView = DayGridView;\n exports.SimpleDayGrid = SimpleDayGrid;\n exports.buildBasicDayTable = buildDayTable;\n exports.default = main;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n","/*!\nFullCalendar List View Plugin v4.4.0\nDocs & License: https://fullcalendar.io/\n(c) 2019 Adam Shaw\n*/\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@fullcalendar/core')) :\n typeof define === 'function' && define.amd ? define(['exports', '@fullcalendar/core'], factory) :\n (global = global || self, factory(global.FullCalendarList = {}, global.FullCalendar));\n}(this, function (exports, core) { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n /* global Reflect, Promise */\r\n\r\n var extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n\r\n function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n }\n\n var ListEventRenderer = /** @class */ (function (_super) {\n __extends(ListEventRenderer, _super);\n function ListEventRenderer(listView) {\n var _this = _super.call(this) || this;\n _this.listView = listView;\n return _this;\n }\n ListEventRenderer.prototype.attachSegs = function (segs) {\n if (!segs.length) {\n this.listView.renderEmptyMessage();\n }\n else {\n this.listView.renderSegList(segs);\n }\n };\n ListEventRenderer.prototype.detachSegs = function () {\n };\n // generates the HTML for a single event row\n ListEventRenderer.prototype.renderSegHtml = function (seg) {\n var _a = this.context, theme = _a.theme, options = _a.options;\n var eventRange = seg.eventRange;\n var eventDef = eventRange.def;\n var eventInstance = eventRange.instance;\n var eventUi = eventRange.ui;\n var url = eventDef.url;\n var classes = ['fc-list-item'].concat(eventUi.classNames);\n var bgColor = eventUi.backgroundColor;\n var timeHtml;\n if (eventDef.allDay) {\n timeHtml = core.getAllDayHtml(options);\n }\n else if (core.isMultiDayRange(eventRange.range)) {\n if (seg.isStart) {\n timeHtml = core.htmlEscape(this._getTimeText(eventInstance.range.start, seg.end, false // allDay\n ));\n }\n else if (seg.isEnd) {\n timeHtml = core.htmlEscape(this._getTimeText(seg.start, eventInstance.range.end, false // allDay\n ));\n }\n else { // inner segment that lasts the whole day\n timeHtml = core.getAllDayHtml(options);\n }\n }\n else {\n // Display the normal time text for the *event's* times\n timeHtml = core.htmlEscape(this.getTimeText(eventRange));\n }\n if (url) {\n classes.push('fc-has-url');\n }\n return '' +\n (this.displayEventTime ?\n '' +\n (timeHtml || '') +\n '' :\n '') +\n '' +\n '' +\n '' +\n '' +\n '' +\n core.htmlEscape(eventDef.title || '') +\n '
' +\n '' +\n '';\n };\n // like \"4:00am\"\n ListEventRenderer.prototype.computeEventTimeFormat = function () {\n return {\n hour: 'numeric',\n minute: '2-digit',\n meridiem: 'short'\n };\n };\n return ListEventRenderer;\n }(core.FgEventRenderer));\n\n /*\n Responsible for the scroller, and forwarding event-related actions into the \"grid\".\n */\n var ListView = /** @class */ (function (_super) {\n __extends(ListView, _super);\n function ListView(viewSpec, parentEl) {\n var _this = _super.call(this, viewSpec, parentEl) || this;\n _this.computeDateVars = core.memoize(computeDateVars);\n _this.eventStoreToSegs = core.memoize(_this._eventStoreToSegs);\n _this.renderSkeleton = core.memoizeRendering(_this._renderSkeleton, _this._unrenderSkeleton);\n var eventRenderer = _this.eventRenderer = new ListEventRenderer(_this);\n _this.renderContent = core.memoizeRendering(eventRenderer.renderSegs.bind(eventRenderer), eventRenderer.unrender.bind(eventRenderer), [_this.renderSkeleton]);\n return _this;\n }\n ListView.prototype.firstContext = function (context) {\n context.calendar.registerInteractiveComponent(this, {\n el: this.el\n // TODO: make aware that it doesn't do Hits\n });\n };\n ListView.prototype.render = function (props, context) {\n _super.prototype.render.call(this, props, context);\n var _a = this.computeDateVars(props.dateProfile), dayDates = _a.dayDates, dayRanges = _a.dayRanges;\n this.dayDates = dayDates;\n this.renderSkeleton(context);\n this.renderContent(context, this.eventStoreToSegs(props.eventStore, props.eventUiBases, dayRanges));\n };\n ListView.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.renderSkeleton.unrender();\n this.renderContent.unrender();\n this.context.calendar.unregisterInteractiveComponent(this);\n };\n ListView.prototype._renderSkeleton = function (context) {\n var theme = context.theme;\n this.el.classList.add('fc-list-view');\n var listViewClassNames = (theme.getClass('listView') || '').split(' '); // wish we didn't have to do this\n for (var _i = 0, listViewClassNames_1 = listViewClassNames; _i < listViewClassNames_1.length; _i++) {\n var listViewClassName = listViewClassNames_1[_i];\n if (listViewClassName) { // in case input was empty string\n this.el.classList.add(listViewClassName);\n }\n }\n this.scroller = new core.ScrollComponent('hidden', // overflow x\n 'auto' // overflow y\n );\n this.el.appendChild(this.scroller.el);\n this.contentEl = this.scroller.el; // shortcut\n };\n ListView.prototype._unrenderSkeleton = function () {\n // TODO: remove classNames\n this.scroller.destroy(); // will remove the Grid too\n };\n ListView.prototype.updateSize = function (isResize, viewHeight, isAuto) {\n _super.prototype.updateSize.call(this, isResize, viewHeight, isAuto);\n this.eventRenderer.computeSizes(isResize);\n this.eventRenderer.assignSizes(isResize);\n this.scroller.clear(); // sets height to 'auto' and clears overflow\n if (!isAuto) {\n this.scroller.setHeight(this.computeScrollerHeight(viewHeight));\n }\n };\n ListView.prototype.computeScrollerHeight = function (viewHeight) {\n return viewHeight -\n core.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller\n };\n ListView.prototype._eventStoreToSegs = function (eventStore, eventUiBases, dayRanges) {\n return this.eventRangesToSegs(core.sliceEventStore(eventStore, eventUiBases, this.props.dateProfile.activeRange, this.context.nextDayThreshold).fg, dayRanges);\n };\n ListView.prototype.eventRangesToSegs = function (eventRanges, dayRanges) {\n var segs = [];\n for (var _i = 0, eventRanges_1 = eventRanges; _i < eventRanges_1.length; _i++) {\n var eventRange = eventRanges_1[_i];\n segs.push.apply(segs, this.eventRangeToSegs(eventRange, dayRanges));\n }\n return segs;\n };\n ListView.prototype.eventRangeToSegs = function (eventRange, dayRanges) {\n var _a = this.context, dateEnv = _a.dateEnv, nextDayThreshold = _a.nextDayThreshold;\n var range = eventRange.range;\n var allDay = eventRange.def.allDay;\n var dayIndex;\n var segRange;\n var seg;\n var segs = [];\n for (dayIndex = 0; dayIndex < dayRanges.length; dayIndex++) {\n segRange = core.intersectRanges(range, dayRanges[dayIndex]);\n if (segRange) {\n seg = {\n component: this,\n eventRange: eventRange,\n start: segRange.start,\n end: segRange.end,\n isStart: eventRange.isStart && segRange.start.valueOf() === range.start.valueOf(),\n isEnd: eventRange.isEnd && segRange.end.valueOf() === range.end.valueOf(),\n dayIndex: dayIndex\n };\n segs.push(seg);\n // detect when range won't go fully into the next day,\n // and mutate the latest seg to the be the end.\n if (!seg.isEnd && !allDay &&\n dayIndex + 1 < dayRanges.length &&\n range.end <\n dateEnv.add(dayRanges[dayIndex + 1].start, nextDayThreshold)) {\n seg.end = range.end;\n seg.isEnd = true;\n break;\n }\n }\n }\n return segs;\n };\n ListView.prototype.renderEmptyMessage = function () {\n this.contentEl.innerHTML =\n '
' + // TODO: try less wraps\n '
' +\n '
' +\n core.htmlEscape(this.context.options.noEventsMessage) +\n '
' +\n '
' +\n '
';\n };\n // called by ListEventRenderer\n ListView.prototype.renderSegList = function (allSegs) {\n var theme = this.context.theme;\n var segsByDay = this.groupSegsByDay(allSegs); // sparse array\n var dayIndex;\n var daySegs;\n var i;\n var tableEl = core.htmlToElement('
');\n var tbodyEl = tableEl.querySelector('tbody');\n for (dayIndex = 0; dayIndex < segsByDay.length; dayIndex++) {\n daySegs = segsByDay[dayIndex];\n if (daySegs) { // sparse array, so might be undefined\n // append a day header\n tbodyEl.appendChild(this.buildDayHeaderRow(this.dayDates[dayIndex]));\n daySegs = this.eventRenderer.sortEventSegs(daySegs);\n for (i = 0; i < daySegs.length; i++) {\n tbodyEl.appendChild(daySegs[i].el); // append event row\n }\n }\n }\n this.contentEl.innerHTML = '';\n this.contentEl.appendChild(tableEl);\n };\n // Returns a sparse array of arrays, segs grouped by their dayIndex\n ListView.prototype.groupSegsByDay = function (segs) {\n var segsByDay = []; // sparse array\n var i;\n var seg;\n for (i = 0; i < segs.length; i++) {\n seg = segs[i];\n (segsByDay[seg.dayIndex] || (segsByDay[seg.dayIndex] = []))\n .push(seg);\n }\n return segsByDay;\n };\n // generates the HTML for the day headers that live amongst the event rows\n ListView.prototype.buildDayHeaderRow = function (dayDate) {\n var _a = this.context, theme = _a.theme, dateEnv = _a.dateEnv, options = _a.options;\n var mainFormat = core.createFormatter(options.listDayFormat); // TODO: cache\n var altFormat = core.createFormatter(options.listDayAltFormat); // TODO: cache\n return core.createElement('tr', {\n className: 'fc-list-heading',\n 'data-date': dateEnv.formatIso(dayDate, { omitTime: true })\n }, '' +\n (mainFormat ?\n core.buildGotoAnchorHtml(options, dateEnv, dayDate, { 'class': 'fc-list-heading-main' }, core.htmlEscape(dateEnv.format(dayDate, mainFormat)) // inner HTML\n ) :\n '') +\n (altFormat ?\n core.buildGotoAnchorHtml(options, dateEnv, dayDate, { 'class': 'fc-list-heading-alt' }, core.htmlEscape(dateEnv.format(dayDate, altFormat)) // inner HTML\n ) :\n '') +\n '');\n };\n return ListView;\n }(core.View));\n ListView.prototype.fgSegSelector = '.fc-list-item'; // which elements accept event actions\n function computeDateVars(dateProfile) {\n var dayStart = core.startOfDay(dateProfile.renderRange.start);\n var viewEnd = dateProfile.renderRange.end;\n var dayDates = [];\n var dayRanges = [];\n while (dayStart < viewEnd) {\n dayDates.push(dayStart);\n dayRanges.push({\n start: dayStart,\n end: core.addDays(dayStart, 1)\n });\n dayStart = core.addDays(dayStart, 1);\n }\n return { dayDates: dayDates, dayRanges: dayRanges };\n }\n\n var main = core.createPlugin({\n views: {\n list: {\n class: ListView,\n buttonTextKey: 'list',\n listDayFormat: { month: 'long', day: 'numeric', year: 'numeric' } // like \"January 1, 2016\"\n },\n listDay: {\n type: 'list',\n duration: { days: 1 },\n listDayFormat: { weekday: 'long' } // day-of-week is all we need. full date is probably in header\n },\n listWeek: {\n type: 'list',\n duration: { weeks: 1 },\n listDayFormat: { weekday: 'long' },\n listDayAltFormat: { month: 'long', day: 'numeric', year: 'numeric' }\n },\n listMonth: {\n type: 'list',\n duration: { month: 1 },\n listDayAltFormat: { weekday: 'long' } // day-of-week is nice-to-have\n },\n listYear: {\n type: 'list',\n duration: { year: 1 },\n listDayAltFormat: { weekday: 'long' } // day-of-week is nice-to-have\n }\n }\n });\n\n exports.ListView = ListView;\n exports.default = main;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n // Node, CommonJS-like\n module.exports = factory(require('jquery'));\n } else {\n // Browser globals (root is window)\n root.Breakpoint = factory(root.jQuery);\n }\n}(this, function ($) {\n var _win = $(window);\n var _breakpoints;\n var _currentBreakpoint;\n var _defaults = {\n xs: {\n min: 0,\n max: 767\n },\n sm: {\n min: 768,\n max: 991\n },\n md: {\n min: 992,\n max: 1199\n },\n lg: {\n min: 1200,\n max: Infinity\n }\n };\n\n var _validate = function (breakpoint) {\n if (!_breakpoints[breakpoint]) {\n throw new Error('Invalid breakpoint');\n }\n };\n\n var _onResize = function () {\n var oldBreakpoint = _currentBreakpoint;\n // we need to use innerWidth because of scrollbars\n // this is ie9 +\n // ie8 support would require to create extra element\n var viewport = _win[0].innerWidth;\n for (var breakpoint in _breakpoints) {\n if (viewport >= _breakpoints[breakpoint].min &&\n viewport <= _breakpoints[breakpoint].max) {\n _currentBreakpoint = breakpoint;\n if (_currentBreakpoint !== oldBreakpoint) {\n _win.trigger('change:breakpoint', [_currentBreakpoint, oldBreakpoint || 'xs']);\n }\n }\n }\n };\n\n var _initWatch = function () {\n _win.on('resize.bootstrap.breakpoints', _onResize);\n _onResize();\n };\n\n var getBreakpoints = function () {\n return _breakpoints;\n };\n\n var is = function (breakpoint) {\n _validate(breakpoint);\n return (_currentBreakpoint === breakpoint);\n };\n\n var current = function () {\n return _currentBreakpoint;\n };\n\n var init = function (breakpoints) {\n _breakpoints = $.extend(true, _defaults, breakpoints);\n //making sure that we don't have millions of handlers in case of multiple inits\n destroy();\n _initWatch();\n };\n\n var destroy = function () {\n _win.off('resize.bootstrap.breakpoints');\n _currentBreakpoint = undefined;\n };\n\n return {\n init: init,\n destroy: destroy,\n is: is,\n current: current,\n getBreakpoints: getBreakpoints\n };\n}));\n","/*!\n * Bootstrap v4.1.1 (https://getbootstrap.com/)\n * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :\n typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :\n (factory((global.bootstrap = {}),global.jQuery,global.Popper));\n}(this, (function (exports,$,Popper) { 'use strict';\n\n $ = $ && $.hasOwnProperty('default') ? $['default'] : $;\n Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n var Util = function ($$$1) {\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n var TRANSITION_END = 'transitionend';\n var MAX_UID = 1000000;\n var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($$$1(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined; // eslint-disable-line no-undefined\n }\n };\n }\n\n function transitionEndEmulator(duration) {\n var _this = this;\n\n var called = false;\n $$$1(this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n\n function setTransitionEndSupport() {\n $$$1.fn.emulateTransitionEnd = transitionEndEmulator;\n $$$1.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute('data-target');\n\n if (!selector || selector === '#') {\n selector = element.getAttribute('href') || '';\n }\n\n try {\n var $selector = $$$1(document).find(selector);\n return $selector.length > 0 ? selector : null;\n } catch (err) {\n return null;\n }\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n var transitionDuration = $$$1(element).css('transition-duration');\n var floatTransitionDuration = parseFloat(transitionDuration); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n return parseFloat(transitionDuration) * MILLISECONDS_MULTIPLIER;\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $$$1(element).trigger(TRANSITION_END);\n },\n // TODO: Remove in v5\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n }\n }\n }\n }\n };\n setTransitionEndSupport();\n return Util;\n }($);\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n var Alert = function ($$$1) {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n var NAME = 'alert';\n var VERSION = '4.1.1';\n var DATA_KEY = 'bs.alert';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $$$1.fn[NAME];\n var Selector = {\n DISMISS: '[data-dismiss=\"alert\"]'\n };\n var Event = {\n CLOSE: \"close\" + EVENT_KEY,\n CLOSED: \"closed\" + EVENT_KEY,\n CLICK_DATA_API: \"click\" + EVENT_KEY + DATA_API_KEY\n };\n var ClassName = {\n ALERT: 'alert',\n FADE: 'fade',\n SHOW: 'show'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Alert =\n /*#__PURE__*/\n function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Alert.prototype;\n\n // Public\n _proto.close = function close(element) {\n var rootElement = this._element;\n\n if (element) {\n rootElement = this._getRootElement(element);\n }\n\n var customEvent = this._triggerCloseEvent(rootElement);\n\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n\n this._removeElement(rootElement);\n };\n\n _proto.dispose = function dispose() {\n $$$1.removeData(this._element, DATA_KEY);\n this._element = null;\n }; // Private\n\n\n _proto._getRootElement = function _getRootElement(element) {\n var selector = Util.getSelectorFromElement(element);\n var parent = false;\n\n if (selector) {\n parent = $$$1(selector)[0];\n }\n\n if (!parent) {\n parent = $$$1(element).closest(\".\" + ClassName.ALERT)[0];\n }\n\n return parent;\n };\n\n _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n var closeEvent = $$$1.Event(Event.CLOSE);\n $$$1(element).trigger(closeEvent);\n return closeEvent;\n };\n\n _proto._removeElement = function _removeElement(element) {\n var _this = this;\n\n $$$1(element).removeClass(ClassName.SHOW);\n\n if (!$$$1(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element);\n\n return;\n }\n\n var transitionDuration = Util.getTransitionDurationFromElement(element);\n $$$1(element).one(Util.TRANSITION_END, function (event) {\n return _this._destroyElement(element, event);\n }).emulateTransitionEnd(transitionDuration);\n };\n\n _proto._destroyElement = function _destroyElement(element) {\n $$$1(element).detach().trigger(Event.CLOSED).remove();\n }; // Static\n\n\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $$$1(this);\n var data = $element.data(DATA_KEY);\n\n if (!data) {\n data = new Alert(this);\n $element.data(DATA_KEY, data);\n }\n\n if (config === 'close') {\n data[config](this);\n }\n });\n };\n\n Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n\n alertInstance.close(this);\n };\n };\n\n _createClass(Alert, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n\n return Alert;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $$$1(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $$$1.fn[NAME] = Alert._jQueryInterface;\n $$$1.fn[NAME].Constructor = Alert;\n\n $$$1.fn[NAME].noConflict = function () {\n $$$1.fn[NAME] = JQUERY_NO_CONFLICT;\n return Alert._jQueryInterface;\n };\n\n return Alert;\n }($);\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n var Button = function ($$$1) {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n var NAME = 'button';\n var VERSION = '4.1.1';\n var DATA_KEY = 'bs.button';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $$$1.fn[NAME];\n var ClassName = {\n ACTIVE: 'active',\n BUTTON: 'btn',\n FOCUS: 'focus'\n };\n var Selector = {\n DATA_TOGGLE_CARROT: '[data-toggle^=\"button\"]',\n DATA_TOGGLE: '[data-toggle=\"buttons\"]',\n INPUT: 'input',\n ACTIVE: '.active',\n BUTTON: '.btn'\n };\n var Event = {\n CLICK_DATA_API: \"click\" + EVENT_KEY + DATA_API_KEY,\n FOCUS_BLUR_DATA_API: \"focus\" + EVENT_KEY + DATA_API_KEY + \" \" + (\"blur\" + EVENT_KEY + DATA_API_KEY)\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Button =\n /*#__PURE__*/\n function () {\n function Button(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Button.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n var triggerChangeEvent = true;\n var addAriaPressed = true;\n var rootElement = $$$1(this._element).closest(Selector.DATA_TOGGLE)[0];\n\n if (rootElement) {\n var input = $$$1(this._element).find(Selector.INPUT)[0];\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && $$$1(this._element).hasClass(ClassName.ACTIVE)) {\n triggerChangeEvent = false;\n } else {\n var activeElement = $$$1(rootElement).find(Selector.ACTIVE)[0];\n\n if (activeElement) {\n $$$1(activeElement).removeClass(ClassName.ACTIVE);\n }\n }\n }\n\n if (triggerChangeEvent) {\n if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {\n return;\n }\n\n input.checked = !$$$1(this._element).hasClass(ClassName.ACTIVE);\n $$$1(input).trigger('change');\n }\n\n input.focus();\n addAriaPressed = false;\n }\n }\n\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !$$$1(this._element).hasClass(ClassName.ACTIVE));\n }\n\n if (triggerChangeEvent) {\n $$$1(this._element).toggleClass(ClassName.ACTIVE);\n }\n };\n\n _proto.dispose = function dispose() {\n $$$1.removeData(this._element, DATA_KEY);\n this._element = null;\n }; // Static\n\n\n Button._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $$$1(this).data(DATA_KEY);\n\n if (!data) {\n data = new Button(this);\n $$$1(this).data(DATA_KEY, data);\n }\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n };\n\n _createClass(Button, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n\n return Button;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {\n event.preventDefault();\n var button = event.target;\n\n if (!$$$1(button).hasClass(ClassName.BUTTON)) {\n button = $$$1(button).closest(Selector.BUTTON);\n }\n\n Button._jQueryInterface.call($$$1(button), 'toggle');\n }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {\n var button = $$$1(event.target).closest(Selector.BUTTON)[0];\n $$$1(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $$$1.fn[NAME] = Button._jQueryInterface;\n $$$1.fn[NAME].Constructor = Button;\n\n $$$1.fn[NAME].noConflict = function () {\n $$$1.fn[NAME] = JQUERY_NO_CONFLICT;\n return Button._jQueryInterface;\n };\n\n return Button;\n }($);\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n var Carousel = function ($$$1) {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n var NAME = 'carousel';\n var VERSION = '4.1.1';\n var DATA_KEY = 'bs.carousel';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $$$1.fn[NAME];\n var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n var Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true\n };\n var DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean'\n };\n var Direction = {\n NEXT: 'next',\n PREV: 'prev',\n LEFT: 'left',\n RIGHT: 'right'\n };\n var Event = {\n SLIDE: \"slide\" + EVENT_KEY,\n SLID: \"slid\" + EVENT_KEY,\n KEYDOWN: \"keydown\" + EVENT_KEY,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY,\n TOUCHEND: \"touchend\" + EVENT_KEY,\n LOAD_DATA_API: \"load\" + EVENT_KEY + DATA_API_KEY,\n CLICK_DATA_API: \"click\" + EVENT_KEY + DATA_API_KEY\n };\n var ClassName = {\n CAROUSEL: 'carousel',\n ACTIVE: 'active',\n SLIDE: 'slide',\n RIGHT: 'carousel-item-right',\n LEFT: 'carousel-item-left',\n NEXT: 'carousel-item-next',\n PREV: 'carousel-item-prev',\n ITEM: 'carousel-item'\n };\n var Selector = {\n ACTIVE: '.active',\n ACTIVE_ITEM: '.active.carousel-item',\n ITEM: '.carousel-item',\n NEXT_PREV: '.carousel-item-next, .carousel-item-prev',\n INDICATORS: '.carousel-indicators',\n DATA_SLIDE: '[data-slide], [data-slide-to]',\n DATA_RIDE: '[data-ride=\"carousel\"]'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Carousel =\n /*#__PURE__*/\n function () {\n function Carousel(element, config) {\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this._config = this._getConfig(config);\n this._element = $$$1(element)[0];\n this._indicatorsElement = $$$1(this._element).find(Selector.INDICATORS)[0];\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Carousel.prototype;\n\n // Public\n _proto.next = function next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT);\n }\n };\n\n _proto.nextWhenVisible = function nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && $$$1(this._element).is(':visible') && $$$1(this._element).css('visibility') !== 'hidden') {\n this.next();\n }\n };\n\n _proto.prev = function prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV);\n }\n };\n\n _proto.pause = function pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n\n if ($$$1(this._element).find(Selector.NEXT_PREV)[0]) {\n Util.triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n\n clearInterval(this._interval);\n this._interval = null;\n };\n\n _proto.cycle = function cycle(event) {\n if (!event) {\n this._isPaused = false;\n }\n\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n }\n };\n\n _proto.to = function to(index) {\n var _this = this;\n\n this._activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0];\n\n var activeIndex = this._getItemIndex(this._activeElement);\n\n if (index > this._items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n $$$1(this._element).one(Event.SLID, function () {\n return _this.to(index);\n });\n return;\n }\n\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n\n var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;\n\n this._slide(direction, this._items[index]);\n };\n\n _proto.dispose = function dispose() {\n $$$1(this._element).off(EVENT_KEY);\n $$$1.removeData(this._element, DATA_KEY);\n this._items = null;\n this._config = null;\n this._element = null;\n this._interval = null;\n this._isPaused = null;\n this._isSliding = null;\n this._activeElement = null;\n this._indicatorsElement = null;\n }; // Private\n\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default, config);\n Util.typeCheckConfig(NAME, config, DefaultType);\n return config;\n };\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this2 = this;\n\n if (this._config.keyboard) {\n $$$1(this._element).on(Event.KEYDOWN, function (event) {\n return _this2._keydown(event);\n });\n }\n\n if (this._config.pause === 'hover') {\n $$$1(this._element).on(Event.MOUSEENTER, function (event) {\n return _this2.pause(event);\n }).on(Event.MOUSELEAVE, function (event) {\n return _this2.cycle(event);\n });\n\n if ('ontouchstart' in document.documentElement) {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n $$$1(this._element).on(Event.TOUCHEND, function () {\n _this2.pause();\n\n if (_this2.touchTimeout) {\n clearTimeout(_this2.touchTimeout);\n }\n\n _this2.touchTimeout = setTimeout(function (event) {\n return _this2.cycle(event);\n }, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval);\n });\n }\n }\n };\n\n _proto._keydown = function _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault();\n this.prev();\n break;\n\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault();\n this.next();\n break;\n\n default:\n }\n };\n\n _proto._getItemIndex = function _getItemIndex(element) {\n this._items = $$$1.makeArray($$$1(element).parent().find(Selector.ITEM));\n return this._items.indexOf(element);\n };\n\n _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n var isNextDirection = direction === Direction.NEXT;\n var isPrevDirection = direction === Direction.PREV;\n\n var activeIndex = this._getItemIndex(activeElement);\n\n var lastItemIndex = this._items.length - 1;\n var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement;\n }\n\n var delta = direction === Direction.PREV ? -1 : 1;\n var itemIndex = (activeIndex + delta) % this._items.length;\n return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n };\n\n _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n var targetIndex = this._getItemIndex(relatedTarget);\n\n var fromIndex = this._getItemIndex($$$1(this._element).find(Selector.ACTIVE_ITEM)[0]);\n\n var slideEvent = $$$1.Event(Event.SLIDE, {\n relatedTarget: relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n });\n $$$1(this._element).trigger(slideEvent);\n return slideEvent;\n };\n\n _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n $$$1(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE);\n\n var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n if (nextIndicator) {\n $$$1(nextIndicator).addClass(ClassName.ACTIVE);\n }\n }\n };\n\n _proto._slide = function _slide(direction, element) {\n var _this3 = this;\n\n var activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0];\n\n var activeElementIndex = this._getItemIndex(activeElement);\n\n var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n var nextElementIndex = this._getItemIndex(nextElement);\n\n var isCycling = Boolean(this._interval);\n var directionalClassName;\n var orderClassName;\n var eventDirectionName;\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName.LEFT;\n orderClassName = ClassName.NEXT;\n eventDirectionName = Direction.LEFT;\n } else {\n directionalClassName = ClassName.RIGHT;\n orderClassName = ClassName.PREV;\n eventDirectionName = Direction.RIGHT;\n }\n\n if (nextElement && $$$1(nextElement).hasClass(ClassName.ACTIVE)) {\n this._isSliding = false;\n return;\n }\n\n var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n if (slideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return;\n }\n\n this._isSliding = true;\n\n if (isCycling) {\n this.pause();\n }\n\n this._setActiveIndicatorElement(nextElement);\n\n var slidEvent = $$$1.Event(Event.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n });\n\n if ($$$1(this._element).hasClass(ClassName.SLIDE)) {\n $$$1(nextElement).addClass(orderClassName);\n Util.reflow(nextElement);\n $$$1(activeElement).addClass(directionalClassName);\n $$$1(nextElement).addClass(directionalClassName);\n var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n $$$1(activeElement).one(Util.TRANSITION_END, function () {\n $$$1(nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(ClassName.ACTIVE);\n $$$1(activeElement).removeClass(ClassName.ACTIVE + \" \" + orderClassName + \" \" + directionalClassName);\n _this3._isSliding = false;\n setTimeout(function () {\n return $$$1(_this3._element).trigger(slidEvent);\n }, 0);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n $$$1(activeElement).removeClass(ClassName.ACTIVE);\n $$$1(nextElement).addClass(ClassName.ACTIVE);\n this._isSliding = false;\n $$$1(this._element).trigger(slidEvent);\n }\n\n if (isCycling) {\n this.cycle();\n }\n }; // Static\n\n\n Carousel._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $$$1(this).data(DATA_KEY);\n\n var _config = _objectSpread({}, Default, $$$1(this).data());\n\n if (typeof config === 'object') {\n _config = _objectSpread({}, _config, config);\n }\n\n var action = typeof config === 'string' ? config : _config.slide;\n\n if (!data) {\n data = new Carousel(this, _config);\n $$$1(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'number') {\n data.to(config);\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n }\n\n data[action]();\n } else if (_config.interval) {\n data.pause();\n data.cycle();\n }\n });\n };\n\n Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n var selector = Util.getSelectorFromElement(this);\n\n if (!selector) {\n return;\n }\n\n var target = $$$1(selector)[0];\n\n if (!target || !$$$1(target).hasClass(ClassName.CAROUSEL)) {\n return;\n }\n\n var config = _objectSpread({}, $$$1(target).data(), $$$1(this).data());\n\n var slideIndex = this.getAttribute('data-slide-to');\n\n if (slideIndex) {\n config.interval = false;\n }\n\n Carousel._jQueryInterface.call($$$1(target), config);\n\n if (slideIndex) {\n $$$1(target).data(DATA_KEY).to(slideIndex);\n }\n\n event.preventDefault();\n };\n\n _createClass(Carousel, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n\n return Carousel;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);\n $$$1(window).on(Event.LOAD_DATA_API, function () {\n $$$1(Selector.DATA_RIDE).each(function () {\n var $carousel = $$$1(this);\n\n Carousel._jQueryInterface.call($carousel, $carousel.data());\n });\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $$$1.fn[NAME] = Carousel._jQueryInterface;\n $$$1.fn[NAME].Constructor = Carousel;\n\n $$$1.fn[NAME].noConflict = function () {\n $$$1.fn[NAME] = JQUERY_NO_CONFLICT;\n return Carousel._jQueryInterface;\n };\n\n return Carousel;\n }($);\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n var Collapse = function ($$$1) {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n var NAME = 'collapse';\n var VERSION = '4.1.1';\n var DATA_KEY = 'bs.collapse';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $$$1.fn[NAME];\n var Default = {\n toggle: true,\n parent: ''\n };\n var DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n };\n var Event = {\n SHOW: \"show\" + EVENT_KEY,\n SHOWN: \"shown\" + EVENT_KEY,\n HIDE: \"hide\" + EVENT_KEY,\n HIDDEN: \"hidden\" + EVENT_KEY,\n CLICK_DATA_API: \"click\" + EVENT_KEY + DATA_API_KEY\n };\n var ClassName = {\n SHOW: 'show',\n COLLAPSE: 'collapse',\n COLLAPSING: 'collapsing',\n COLLAPSED: 'collapsed'\n };\n var Dimension = {\n WIDTH: 'width',\n HEIGHT: 'height'\n };\n var Selector = {\n ACTIVES: '.show, .collapsing',\n DATA_TOGGLE: '[data-toggle=\"collapse\"]'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Collapse =\n /*#__PURE__*/\n function () {\n function Collapse(element, config) {\n this._isTransitioning = false;\n this._element = element;\n this._config = this._getConfig(config);\n this._triggerArray = $$$1.makeArray($$$1(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n var tabToggles = $$$1(Selector.DATA_TOGGLE);\n\n for (var i = 0; i < tabToggles.length; i++) {\n var elem = tabToggles[i];\n var selector = Util.getSelectorFromElement(elem);\n\n if (selector !== null && $$$1(selector).filter(element).length > 0) {\n this._selector = selector;\n\n this._triggerArray.push(elem);\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null;\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n var _proto = Collapse.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if ($$$1(this._element).hasClass(ClassName.SHOW)) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if (this._isTransitioning || $$$1(this._element).hasClass(ClassName.SHOW)) {\n return;\n }\n\n var actives;\n var activesData;\n\n if (this._parent) {\n actives = $$$1.makeArray($$$1(this._parent).find(Selector.ACTIVES).filter(\"[data-parent=\\\"\" + this._config.parent + \"\\\"]\"));\n\n if (actives.length === 0) {\n actives = null;\n }\n }\n\n if (actives) {\n activesData = $$$1(actives).not(this._selector).data(DATA_KEY);\n\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n\n var startEvent = $$$1.Event(Event.SHOW);\n $$$1(this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($$$1(actives).not(this._selector), 'hide');\n\n if (!activesData) {\n $$$1(actives).data(DATA_KEY, null);\n }\n }\n\n var dimension = this._getDimension();\n\n $$$1(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);\n this._element.style[dimension] = 0;\n\n if (this._triggerArray.length > 0) {\n $$$1(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n $$$1(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW);\n _this._element.style[dimension] = '';\n\n _this.setTransitioning(false);\n\n $$$1(_this._element).trigger(Event.SHOWN);\n };\n\n var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n var scrollSize = \"scroll\" + capitalizedDimension;\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n this._element.style[dimension] = this._element[scrollSize] + \"px\";\n };\n\n _proto.hide = function hide() {\n var _this2 = this;\n\n if (this._isTransitioning || !$$$1(this._element).hasClass(ClassName.SHOW)) {\n return;\n }\n\n var startEvent = $$$1.Event(Event.HIDE);\n $$$1(this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n var dimension = this._getDimension();\n\n this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n Util.reflow(this._element);\n $$$1(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);\n\n if (this._triggerArray.length > 0) {\n for (var i = 0; i < this._triggerArray.length; i++) {\n var trigger = this._triggerArray[i];\n var selector = Util.getSelectorFromElement(trigger);\n\n if (selector !== null) {\n var $elem = $$$1(selector);\n\n if (!$elem.hasClass(ClassName.SHOW)) {\n $$$1(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);\n }\n }\n }\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n _this2.setTransitioning(false);\n\n $$$1(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN);\n };\n\n this._element.style[dimension] = '';\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n };\n\n _proto.setTransitioning = function setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n };\n\n _proto.dispose = function dispose() {\n $$$1.removeData(this._element, DATA_KEY);\n this._config = null;\n this._parent = null;\n this._element = null;\n this._triggerArray = null;\n this._isTransitioning = null;\n }; // Private\n\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util.typeCheckConfig(NAME, config, DefaultType);\n return config;\n };\n\n _proto._getDimension = function _getDimension() {\n var hasWidth = $$$1(this._element).hasClass(Dimension.WIDTH);\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;\n };\n\n _proto._getParent = function _getParent() {\n var _this3 = this;\n\n var parent = null;\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent; // It's a jQuery object\n\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0];\n }\n } else {\n parent = $$$1(this._config.parent)[0];\n }\n\n var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n $$$1(parent).find(selector).each(function (i, element) {\n _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n });\n return parent;\n };\n\n _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n if (element) {\n var isOpen = $$$1(element).hasClass(ClassName.SHOW);\n\n if (triggerArray.length > 0) {\n $$$1(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n }\n }\n }; // Static\n\n\n Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n var selector = Util.getSelectorFromElement(element);\n return selector ? $$$1(selector)[0] : null;\n };\n\n Collapse._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $$$1(this);\n var data = $this.data(DATA_KEY);\n\n var _config = _objectSpread({}, Default, $this.data(), typeof config === 'object' && config ? config : {});\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n if (!data) {\n data = new Collapse(this, _config);\n $this.data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Collapse, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n\n return Collapse;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n var $trigger = $$$1(this);\n var selector = Util.getSelectorFromElement(this);\n $$$1(selector).each(function () {\n var $target = $$$1(this);\n var data = $target.data(DATA_KEY);\n var config = data ? 'toggle' : $trigger.data();\n\n Collapse._jQueryInterface.call($target, config);\n });\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $$$1.fn[NAME] = Collapse._jQueryInterface;\n $$$1.fn[NAME].Constructor = Collapse;\n\n $$$1.fn[NAME].noConflict = function () {\n $$$1.fn[NAME] = JQUERY_NO_CONFLICT;\n return Collapse._jQueryInterface;\n };\n\n return Collapse;\n }($);\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n var Dropdown = function ($$$1) {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n var NAME = 'dropdown';\n var VERSION = '4.1.1';\n var DATA_KEY = 'bs.dropdown';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $$$1.fn[NAME];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE);\n var Event = {\n HIDE: \"hide\" + EVENT_KEY,\n HIDDEN: \"hidden\" + EVENT_KEY,\n SHOW: \"show\" + EVENT_KEY,\n SHOWN: \"shown\" + EVENT_KEY,\n CLICK: \"click\" + EVENT_KEY,\n CLICK_DATA_API: \"click\" + EVENT_KEY + DATA_API_KEY,\n KEYDOWN_DATA_API: \"keydown\" + EVENT_KEY + DATA_API_KEY,\n KEYUP_DATA_API: \"keyup\" + EVENT_KEY + DATA_API_KEY\n };\n var ClassName = {\n DISABLED: 'disabled',\n SHOW: 'show',\n DROPUP: 'dropup',\n DROPRIGHT: 'dropright',\n DROPLEFT: 'dropleft',\n MENURIGHT: 'dropdown-menu-right',\n MENULEFT: 'dropdown-menu-left',\n POSITION_STATIC: 'position-static'\n };\n var Selector = {\n DATA_TOGGLE: '[data-toggle=\"dropdown\"]',\n FORM_CHILD: '.dropdown form',\n MENU: '.dropdown-menu',\n NAVBAR_NAV: '.navbar-nav',\n VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n };\n var AttachmentMap = {\n TOP: 'top-start',\n TOPEND: 'top-end',\n BOTTOM: 'bottom-start',\n BOTTOMEND: 'bottom-end',\n RIGHT: 'right-start',\n RIGHTEND: 'right-end',\n LEFT: 'left-start',\n LEFTEND: 'left-end'\n };\n var Default = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic'\n };\n var DefaultType = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Dropdown =\n /*#__PURE__*/\n function () {\n function Dropdown(element, config) {\n this._element = element;\n this._popper = null;\n this._config = this._getConfig(config);\n this._menu = this._getMenuElement();\n this._inNavbar = this._detectNavbar();\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Dropdown.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if (this._element.disabled || $$$1(this._element).hasClass(ClassName.DISABLED)) {\n return;\n }\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n var isActive = $$$1(this._menu).hasClass(ClassName.SHOW);\n\n Dropdown._clearMenus();\n\n if (isActive) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $$$1.Event(Event.SHOW, relatedTarget);\n $$$1(parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n } // Disable totally Popper.js for Dropdown in Navbar\n\n\n if (!this._inNavbar) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)');\n }\n\n var referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = parent;\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference; // Check if it's jQuery element\n\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0];\n }\n } // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n\n\n if (this._config.boundary !== 'scrollParent') {\n $$$1(parent).addClass(ClassName.POSITION_STATIC);\n }\n\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && $$$1(parent).closest(Selector.NAVBAR_NAV).length === 0) {\n $$$1(document.body).children().on('mouseover', null, $$$1.noop);\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n $$$1(this._menu).toggleClass(ClassName.SHOW);\n $$$1(parent).toggleClass(ClassName.SHOW).trigger($$$1.Event(Event.SHOWN, relatedTarget));\n };\n\n _proto.dispose = function dispose() {\n $$$1.removeData(this._element, DATA_KEY);\n $$$1(this._element).off(EVENT_KEY);\n this._element = null;\n this._menu = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n\n this._popper = null;\n }\n };\n\n _proto.update = function update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n }; // Private\n\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this = this;\n\n $$$1(this._element).on(Event.CLICK, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.toggle();\n });\n };\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, this.constructor.Default, $$$1(this._element).data(), config);\n Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._getMenuElement = function _getMenuElement() {\n if (!this._menu) {\n var parent = Dropdown._getParentFromElement(this._element);\n\n this._menu = $$$1(parent).find(Selector.MENU)[0];\n }\n\n return this._menu;\n };\n\n _proto._getPlacement = function _getPlacement() {\n var $parentDropdown = $$$1(this._element).parent();\n var placement = AttachmentMap.BOTTOM; // Handle dropup\n\n if ($parentDropdown.hasClass(ClassName.DROPUP)) {\n placement = AttachmentMap.TOP;\n\n if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.TOPEND;\n }\n } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT;\n } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {\n placement = AttachmentMap.LEFT;\n } else if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND;\n }\n\n return placement;\n };\n\n _proto._detectNavbar = function _detectNavbar() {\n return $$$1(this._element).closest('.navbar').length > 0;\n };\n\n _proto._getPopperConfig = function _getPopperConfig() {\n var _this2 = this;\n\n var offsetConf = {};\n\n if (typeof this._config.offset === 'function') {\n offsetConf.fn = function (data) {\n data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets) || {});\n return data;\n };\n } else {\n offsetConf.offset = this._config.offset;\n }\n\n var popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: offsetConf,\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n } // Disable Popper.js if we have a static display\n\n };\n\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n };\n }\n\n return popperConfig;\n }; // Static\n\n\n Dropdown._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $$$1(this).data(DATA_KEY);\n\n var _config = typeof config === 'object' ? config : null;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $$$1(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n Dropdown._clearMenus = function _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return;\n }\n\n var toggles = $$$1.makeArray($$$1(Selector.DATA_TOGGLE));\n\n for (var i = 0; i < toggles.length; i++) {\n var parent = Dropdown._getParentFromElement(toggles[i]);\n\n var context = $$$1(toggles[i]).data(DATA_KEY);\n var relatedTarget = {\n relatedTarget: toggles[i]\n };\n\n if (!context) {\n continue;\n }\n\n var dropdownMenu = context._menu;\n\n if (!$$$1(parent).hasClass(ClassName.SHOW)) {\n continue;\n }\n\n if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $$$1.contains(parent, event.target)) {\n continue;\n }\n\n var hideEvent = $$$1.Event(Event.HIDE, relatedTarget);\n $$$1(parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n continue;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n $$$1(document.body).children().off('mouseover', null, $$$1.noop);\n }\n\n toggles[i].setAttribute('aria-expanded', 'false');\n $$$1(dropdownMenu).removeClass(ClassName.SHOW);\n $$$1(parent).removeClass(ClassName.SHOW).trigger($$$1.Event(Event.HIDDEN, relatedTarget));\n }\n };\n\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n var parent;\n var selector = Util.getSelectorFromElement(element);\n\n if (selector) {\n parent = $$$1(selector)[0];\n }\n\n return parent || element.parentNode;\n }; // eslint-disable-next-line complexity\n\n\n Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $$$1(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (this.disabled || $$$1(this).hasClass(ClassName.DISABLED)) {\n return;\n }\n\n var parent = Dropdown._getParentFromElement(this);\n\n var isActive = $$$1(parent).hasClass(ClassName.SHOW);\n\n if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n var toggle = $$$1(parent).find(Selector.DATA_TOGGLE)[0];\n $$$1(toggle).trigger('focus');\n }\n\n $$$1(this).trigger('click');\n return;\n }\n\n var items = $$$1(parent).find(Selector.VISIBLE_ITEMS).get();\n\n if (items.length === 0) {\n return;\n }\n\n var index = items.indexOf(event.target);\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) {\n // Up\n index--;\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n // Down\n index++;\n }\n\n if (index < 0) {\n index = 0;\n }\n\n items[index].focus();\n };\n\n _createClass(Dropdown, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType;\n }\n }]);\n\n return Dropdown;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $$$1(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + \" \" + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n Dropdown._jQueryInterface.call($$$1(this), 'toggle');\n }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {\n e.stopPropagation();\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $$$1.fn[NAME] = Dropdown._jQueryInterface;\n $$$1.fn[NAME].Constructor = Dropdown;\n\n $$$1.fn[NAME].noConflict = function () {\n $$$1.fn[NAME] = JQUERY_NO_CONFLICT;\n return Dropdown._jQueryInterface;\n };\n\n return Dropdown;\n }($, Popper);\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n var Modal = function ($$$1) {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n var NAME = 'modal';\n var VERSION = '4.1.1';\n var DATA_KEY = 'bs.modal';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $$$1.fn[NAME];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var Default = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n };\n var DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n };\n var Event = {\n HIDE: \"hide\" + EVENT_KEY,\n HIDDEN: \"hidden\" + EVENT_KEY,\n SHOW: \"show\" + EVENT_KEY,\n SHOWN: \"shown\" + EVENT_KEY,\n FOCUSIN: \"focusin\" + EVENT_KEY,\n RESIZE: \"resize\" + EVENT_KEY,\n CLICK_DISMISS: \"click.dismiss\" + EVENT_KEY,\n KEYDOWN_DISMISS: \"keydown.dismiss\" + EVENT_KEY,\n MOUSEUP_DISMISS: \"mouseup.dismiss\" + EVENT_KEY,\n MOUSEDOWN_DISMISS: \"mousedown.dismiss\" + EVENT_KEY,\n CLICK_DATA_API: \"click\" + EVENT_KEY + DATA_API_KEY\n };\n var ClassName = {\n SCROLLBAR_MEASURER: 'modal-scrollbar-measure',\n BACKDROP: 'modal-backdrop',\n OPEN: 'modal-open',\n FADE: 'fade',\n SHOW: 'show'\n };\n var Selector = {\n DIALOG: '.modal-dialog',\n DATA_TOGGLE: '[data-toggle=\"modal\"]',\n DATA_DISMISS: '[data-dismiss=\"modal\"]',\n FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT: '.sticky-top',\n NAVBAR_TOGGLER: '.navbar-toggler'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Modal =\n /*#__PURE__*/\n function () {\n function Modal(element, config) {\n this._config = this._getConfig(config);\n this._element = element;\n this._dialog = $$$1(element).find(Selector.DIALOG)[0];\n this._backdrop = null;\n this._isShown = false;\n this._isBodyOverflowing = false;\n this._ignoreBackdropClick = false;\n this._scrollbarWidth = 0;\n } // Getters\n\n\n var _proto = Modal.prototype;\n\n // Public\n _proto.toggle = function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n };\n\n _proto.show = function show(relatedTarget) {\n var _this = this;\n\n if (this._isTransitioning || this._isShown) {\n return;\n }\n\n if ($$$1(this._element).hasClass(ClassName.FADE)) {\n this._isTransitioning = true;\n }\n\n var showEvent = $$$1.Event(Event.SHOW, {\n relatedTarget: relatedTarget\n });\n $$$1(this._element).trigger(showEvent);\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = true;\n\n this._checkScrollbar();\n\n this._setScrollbar();\n\n this._adjustDialog();\n\n $$$1(document.body).addClass(ClassName.OPEN);\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $$$1(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) {\n return _this.hide(event);\n });\n $$$1(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {\n $$$1(_this._element).one(Event.MOUSEUP_DISMISS, function (event) {\n if ($$$1(event.target).is(_this._element)) {\n _this._ignoreBackdropClick = true;\n }\n });\n });\n\n this._showBackdrop(function () {\n return _this._showElement(relatedTarget);\n });\n };\n\n _proto.hide = function hide(event) {\n var _this2 = this;\n\n if (event) {\n event.preventDefault();\n }\n\n if (this._isTransitioning || !this._isShown) {\n return;\n }\n\n var hideEvent = $$$1.Event(Event.HIDE);\n $$$1(this._element).trigger(hideEvent);\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = false;\n var transition = $$$1(this._element).hasClass(ClassName.FADE);\n\n if (transition) {\n this._isTransitioning = true;\n }\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $$$1(document).off(Event.FOCUSIN);\n $$$1(this._element).removeClass(ClassName.SHOW);\n $$$1(this._element).off(Event.CLICK_DISMISS);\n $$$1(this._dialog).off(Event.MOUSEDOWN_DISMISS);\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $$$1(this._element).one(Util.TRANSITION_END, function (event) {\n return _this2._hideModal(event);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n this._hideModal();\n }\n };\n\n _proto.dispose = function dispose() {\n $$$1.removeData(this._element, DATA_KEY);\n $$$1(window, document, this._element, this._backdrop).off(EVENT_KEY);\n this._config = null;\n this._element = null;\n this._dialog = null;\n this._backdrop = null;\n this._isShown = null;\n this._isBodyOverflowing = null;\n this._ignoreBackdropClick = null;\n this._scrollbarWidth = null;\n };\n\n _proto.handleUpdate = function handleUpdate() {\n this._adjustDialog();\n }; // Private\n\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default, config);\n Util.typeCheckConfig(NAME, config, DefaultType);\n return config;\n };\n\n _proto._showElement = function _showElement(relatedTarget) {\n var _this3 = this;\n\n var transition = $$$1(this._element).hasClass(ClassName.FADE);\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.scrollTop = 0;\n\n if (transition) {\n Util.reflow(this._element);\n }\n\n $$$1(this._element).addClass(ClassName.SHOW);\n\n if (this._config.focus) {\n this._enforceFocus();\n }\n\n var shownEvent = $$$1.Event(Event.SHOWN, {\n relatedTarget: relatedTarget\n });\n\n var transitionComplete = function transitionComplete() {\n if (_this3._config.focus) {\n _this3._element.focus();\n }\n\n _this3._isTransitioning = false;\n $$$1(_this3._element).trigger(shownEvent);\n };\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $$$1(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n } else {\n transitionComplete();\n }\n };\n\n _proto._enforceFocus = function _enforceFocus() {\n var _this4 = this;\n\n $$$1(document).off(Event.FOCUSIN) // Guard against infinite focus loop\n .on(Event.FOCUSIN, function (event) {\n if (document !== event.target && _this4._element !== event.target && $$$1(_this4._element).has(event.target).length === 0) {\n _this4._element.focus();\n }\n });\n };\n\n _proto._setEscapeEvent = function _setEscapeEvent() {\n var _this5 = this;\n\n if (this._isShown && this._config.keyboard) {\n $$$1(this._element).on(Event.KEYDOWN_DISMISS, function (event) {\n if (event.which === ESCAPE_KEYCODE) {\n event.preventDefault();\n\n _this5.hide();\n }\n });\n } else if (!this._isShown) {\n $$$1(this._element).off(Event.KEYDOWN_DISMISS);\n }\n };\n\n _proto._setResizeEvent = function _setResizeEvent() {\n var _this6 = this;\n\n if (this._isShown) {\n $$$1(window).on(Event.RESIZE, function (event) {\n return _this6.handleUpdate(event);\n });\n } else {\n $$$1(window).off(Event.RESIZE);\n }\n };\n\n _proto._hideModal = function _hideModal() {\n var _this7 = this;\n\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._isTransitioning = false;\n\n this._showBackdrop(function () {\n $$$1(document.body).removeClass(ClassName.OPEN);\n\n _this7._resetAdjustments();\n\n _this7._resetScrollbar();\n\n $$$1(_this7._element).trigger(Event.HIDDEN);\n });\n };\n\n _proto._removeBackdrop = function _removeBackdrop() {\n if (this._backdrop) {\n $$$1(this._backdrop).remove();\n this._backdrop = null;\n }\n };\n\n _proto._showBackdrop = function _showBackdrop(callback) {\n var _this8 = this;\n\n var animate = $$$1(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div');\n this._backdrop.className = ClassName.BACKDROP;\n\n if (animate) {\n $$$1(this._backdrop).addClass(animate);\n }\n\n $$$1(this._backdrop).appendTo(document.body);\n $$$1(this._element).on(Event.CLICK_DISMISS, function (event) {\n if (_this8._ignoreBackdropClick) {\n _this8._ignoreBackdropClick = false;\n return;\n }\n\n if (event.target !== event.currentTarget) {\n return;\n }\n\n if (_this8._config.backdrop === 'static') {\n _this8._element.focus();\n } else {\n _this8.hide();\n }\n });\n\n if (animate) {\n Util.reflow(this._backdrop);\n }\n\n $$$1(this._backdrop).addClass(ClassName.SHOW);\n\n if (!callback) {\n return;\n }\n\n if (!animate) {\n callback();\n return;\n }\n\n var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $$$1(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $$$1(this._backdrop).removeClass(ClassName.SHOW);\n\n var callbackRemove = function callbackRemove() {\n _this8._removeBackdrop();\n\n if (callback) {\n callback();\n }\n };\n\n if ($$$1(this._element).hasClass(ClassName.FADE)) {\n var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n $$$1(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n }; // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n\n _proto._adjustDialog = function _adjustDialog() {\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n }\n };\n\n _proto._resetAdjustments = function _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n };\n\n _proto._checkScrollbar = function _checkScrollbar() {\n var rect = document.body.getBoundingClientRect();\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;\n this._scrollbarWidth = this._getScrollbarWidth();\n };\n\n _proto._setScrollbar = function _setScrollbar() {\n var _this9 = this;\n\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n // Adjust fixed content padding\n $$$1(Selector.FIXED_CONTENT).each(function (index, element) {\n var actualPadding = $$$1(element)[0].style.paddingRight;\n var calculatedPadding = $$$1(element).css('padding-right');\n $$$1(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + \"px\");\n }); // Adjust sticky content margin\n\n $$$1(Selector.STICKY_CONTENT).each(function (index, element) {\n var actualMargin = $$$1(element)[0].style.marginRight;\n var calculatedMargin = $$$1(element).css('margin-right');\n $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + \"px\");\n }); // Adjust navbar-toggler margin\n\n $$$1(Selector.NAVBAR_TOGGLER).each(function (index, element) {\n var actualMargin = $$$1(element)[0].style.marginRight;\n var calculatedMargin = $$$1(element).css('margin-right');\n $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this9._scrollbarWidth + \"px\");\n }); // Adjust body padding\n\n var actualPadding = document.body.style.paddingRight;\n var calculatedPadding = $$$1(document.body).css('padding-right');\n $$$1(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n }\n };\n\n _proto._resetScrollbar = function _resetScrollbar() {\n // Restore fixed content padding\n $$$1(Selector.FIXED_CONTENT).each(function (index, element) {\n var padding = $$$1(element).data('padding-right');\n\n if (typeof padding !== 'undefined') {\n $$$1(element).css('padding-right', padding).removeData('padding-right');\n }\n }); // Restore sticky content and navbar-toggler margin\n\n $$$1(Selector.STICKY_CONTENT + \", \" + Selector.NAVBAR_TOGGLER).each(function (index, element) {\n var margin = $$$1(element).data('margin-right');\n\n if (typeof margin !== 'undefined') {\n $$$1(element).css('margin-right', margin).removeData('margin-right');\n }\n }); // Restore body padding\n\n var padding = $$$1(document.body).data('padding-right');\n\n if (typeof padding !== 'undefined') {\n $$$1(document.body).css('padding-right', padding).removeData('padding-right');\n }\n };\n\n _proto._getScrollbarWidth = function _getScrollbarWidth() {\n // thx d.walsh\n var scrollDiv = document.createElement('div');\n scrollDiv.className = ClassName.SCROLLBAR_MEASURER;\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n }; // Static\n\n\n Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n var data = $$$1(this).data(DATA_KEY);\n\n var _config = _objectSpread({}, Default, $$$1(this).data(), typeof config === 'object' && config ? config : {});\n\n if (!data) {\n data = new Modal(this, _config);\n $$$1(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](relatedTarget);\n } else if (_config.show) {\n data.show(relatedTarget);\n }\n });\n };\n\n _createClass(Modal, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n\n return Modal;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n var _this10 = this;\n\n var target;\n var selector = Util.getSelectorFromElement(this);\n\n if (selector) {\n target = $$$1(selector)[0];\n }\n\n var config = $$$1(target).data(DATA_KEY) ? 'toggle' : _objectSpread({}, $$$1(target).data(), $$$1(this).data());\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault();\n }\n\n var $target = $$$1(target).one(Event.SHOW, function (showEvent) {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return;\n }\n\n $target.one(Event.HIDDEN, function () {\n if ($$$1(_this10).is(':visible')) {\n _this10.focus();\n }\n });\n });\n\n Modal._jQueryInterface.call($$$1(target), config, this);\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $$$1.fn[NAME] = Modal._jQueryInterface;\n $$$1.fn[NAME].Constructor = Modal;\n\n $$$1.fn[NAME].noConflict = function () {\n $$$1.fn[NAME] = JQUERY_NO_CONFLICT;\n return Modal._jQueryInterface;\n };\n\n return Modal;\n }($);\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n var Tooltip = function ($$$1) {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n var NAME = 'tooltip';\n var VERSION = '4.1.1';\n var DATA_KEY = 'bs.tooltip';\n var EVENT_KEY = \".\" + DATA_KEY;\n var JQUERY_NO_CONFLICT = $$$1.fn[NAME];\n var CLASS_PREFIX = 'bs-tooltip';\n var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n var DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)'\n };\n var AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n };\n var Default = {\n animation: true,\n template: '
' + '
' + '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent'\n };\n var HoverState = {\n SHOW: 'show',\n OUT: 'out'\n };\n var Event = {\n HIDE: \"hide\" + EVENT_KEY,\n HIDDEN: \"hidden\" + EVENT_KEY,\n SHOW: \"show\" + EVENT_KEY,\n SHOWN: \"shown\" + EVENT_KEY,\n INSERTED: \"inserted\" + EVENT_KEY,\n CLICK: \"click\" + EVENT_KEY,\n FOCUSIN: \"focusin\" + EVENT_KEY,\n FOCUSOUT: \"focusout\" + EVENT_KEY,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY\n };\n var ClassName = {\n FADE: 'fade',\n SHOW: 'show'\n };\n var Selector = {\n TOOLTIP: '.tooltip',\n TOOLTIP_INNER: '.tooltip-inner',\n ARROW: '.arrow'\n };\n var Trigger = {\n HOVER: 'hover',\n FOCUS: 'focus',\n CLICK: 'click',\n MANUAL: 'manual'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Tooltip =\n /*#__PURE__*/\n function () {\n function Tooltip(element, config) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)');\n } // private\n\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = '';\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this.element = element;\n this.config = this._getConfig(config);\n this.tip = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Tooltip.prototype;\n\n // Public\n _proto.enable = function enable() {\n this._isEnabled = true;\n };\n\n _proto.disable = function disable() {\n this._isEnabled = false;\n };\n\n _proto.toggleEnabled = function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n };\n\n _proto.toggle = function toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n\n if (event) {\n var dataKey = this.constructor.DATA_KEY;\n var context = $$$1(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $$$1(event.currentTarget).data(dataKey, context);\n }\n\n context._activeTrigger.click = !context._activeTrigger.click;\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context);\n } else {\n context._leave(null, context);\n }\n } else {\n if ($$$1(this.getTipElement()).hasClass(ClassName.SHOW)) {\n this._leave(null, this);\n\n return;\n }\n\n this._enter(null, this);\n }\n };\n\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n $$$1.removeData(this.element, this.constructor.DATA_KEY);\n $$$1(this.element).off(this.constructor.EVENT_KEY);\n $$$1(this.element).closest('.modal').off('hide.bs.modal');\n\n if (this.tip) {\n $$$1(this.tip).remove();\n }\n\n this._isEnabled = null;\n this._timeout = null;\n this._hoverState = null;\n this._activeTrigger = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n }\n\n this._popper = null;\n this.element = null;\n this.config = null;\n this.tip = null;\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if ($$$1(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n var showEvent = $$$1.Event(this.constructor.Event.SHOW);\n\n if (this.isWithContent() && this._isEnabled) {\n $$$1(this.element).trigger(showEvent);\n var isInTheDom = $$$1.contains(this.element.ownerDocument.documentElement, this.element);\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return;\n }\n\n var tip = this.getTipElement();\n var tipId = Util.getUID(this.constructor.NAME);\n tip.setAttribute('id', tipId);\n this.element.setAttribute('aria-describedby', tipId);\n this.setContent();\n\n if (this.config.animation) {\n $$$1(tip).addClass(ClassName.FADE);\n }\n\n var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n var attachment = this._getAttachment(placement);\n\n this.addAttachmentClass(attachment);\n var container = this.config.container === false ? document.body : $$$1(this.config.container);\n $$$1(tip).data(this.constructor.DATA_KEY, this);\n\n if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $$$1(tip).appendTo(container);\n }\n\n $$$1(this.element).trigger(this.constructor.Event.INSERTED);\n this._popper = new Popper(this.element, tip, {\n placement: attachment,\n modifiers: {\n offset: {\n offset: this.config.offset\n },\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: Selector.ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: function onCreate(data) {\n if (data.originalPlacement !== data.placement) {\n _this._handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n _this._handlePopperPlacementChange(data);\n }\n });\n $$$1(tip).addClass(ClassName.SHOW); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n $$$1(document.body).children().on('mouseover', null, $$$1.noop);\n }\n\n var complete = function complete() {\n if (_this.config.animation) {\n _this._fixTransition();\n }\n\n var prevHoverState = _this._hoverState;\n _this._hoverState = null;\n $$$1(_this.element).trigger(_this.constructor.Event.SHOWN);\n\n if (prevHoverState === HoverState.OUT) {\n _this._leave(null, _this);\n }\n };\n\n if ($$$1(this.tip).hasClass(ClassName.FADE)) {\n var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n $$$1(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }\n };\n\n _proto.hide = function hide(callback) {\n var _this2 = this;\n\n var tip = this.getTipElement();\n var hideEvent = $$$1.Event(this.constructor.Event.HIDE);\n\n var complete = function complete() {\n if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip);\n }\n\n _this2._cleanTipClass();\n\n _this2.element.removeAttribute('aria-describedby');\n\n $$$1(_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n if (_this2._popper !== null) {\n _this2._popper.destroy();\n }\n\n if (callback) {\n callback();\n }\n };\n\n $$$1(this.element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n $$$1(tip).removeClass(ClassName.SHOW); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $$$1(document.body).children().off('mouseover', null, $$$1.noop);\n }\n\n this._activeTrigger[Trigger.CLICK] = false;\n this._activeTrigger[Trigger.FOCUS] = false;\n this._activeTrigger[Trigger.HOVER] = false;\n\n if ($$$1(this.tip).hasClass(ClassName.FADE)) {\n var transitionDuration = Util.getTransitionDurationFromElement(tip);\n $$$1(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n\n this._hoverState = '';\n };\n\n _proto.update = function update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n }; // Protected\n\n\n _proto.isWithContent = function isWithContent() {\n return Boolean(this.getTitle());\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $$$1(this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $$$1(this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var $tip = $$$1(this.getTipElement());\n this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle());\n $tip.removeClass(ClassName.FADE + \" \" + ClassName.SHOW);\n };\n\n _proto.setElementContent = function setElementContent($element, content) {\n var html = this.config.html;\n\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (html) {\n if (!$$$1(content).parent().is($element)) {\n $element.empty().append(content);\n }\n } else {\n $element.text($$$1(content).text());\n }\n } else {\n $element[html ? 'html' : 'text'](content);\n }\n };\n\n _proto.getTitle = function getTitle() {\n var title = this.element.getAttribute('data-original-title');\n\n if (!title) {\n title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n }\n\n return title;\n }; // Private\n\n\n _proto._getAttachment = function _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()];\n };\n\n _proto._setListeners = function _setListeners() {\n var _this3 = this;\n\n var triggers = this.config.trigger.split(' ');\n triggers.forEach(function (trigger) {\n if (trigger === 'click') {\n $$$1(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) {\n return _this3.toggle(event);\n });\n } else if (trigger !== Trigger.MANUAL) {\n var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN;\n var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT;\n $$$1(_this3.element).on(eventIn, _this3.config.selector, function (event) {\n return _this3._enter(event);\n }).on(eventOut, _this3.config.selector, function (event) {\n return _this3._leave(event);\n });\n }\n\n $$$1(_this3.element).closest('.modal').on('hide.bs.modal', function () {\n return _this3.hide();\n });\n });\n\n if (this.config.selector) {\n this.config = _objectSpread({}, this.config, {\n trigger: 'manual',\n selector: ''\n });\n } else {\n this._fixTitle();\n }\n };\n\n _proto._fixTitle = function _fixTitle() {\n var titleType = typeof this.element.getAttribute('data-original-title');\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n this.element.setAttribute('title', '');\n }\n };\n\n _proto._enter = function _enter(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $$$1(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $$$1(event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;\n }\n\n if ($$$1(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW;\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HoverState.SHOW;\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HoverState.SHOW) {\n context.show();\n }\n }, context.config.delay.show);\n };\n\n _proto._leave = function _leave(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $$$1(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $$$1(event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;\n }\n\n if (context._isWithActiveTrigger()) {\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HoverState.OUT;\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HoverState.OUT) {\n context.hide();\n }\n }, context.config.delay.hide);\n };\n\n _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n for (var trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n };\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, this.constructor.Default, $$$1(this.element).data(), typeof config === 'object' && config ? config : {});\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._getDelegateConfig = function _getDelegateConfig() {\n var config = {};\n\n if (this.config) {\n for (var key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key];\n }\n }\n }\n\n return config;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $$$1(this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''));\n }\n };\n\n _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(data) {\n this._cleanTipClass();\n\n this.addAttachmentClass(this._getAttachment(data.placement));\n };\n\n _proto._fixTransition = function _fixTransition() {\n var tip = this.getTipElement();\n var initConfigAnimation = this.config.animation;\n\n if (tip.getAttribute('x-placement') !== null) {\n return;\n }\n\n $$$1(tip).removeClass(ClassName.FADE);\n this.config.animation = false;\n this.hide();\n this.show();\n this.config.animation = initConfigAnimation;\n }; // Static\n\n\n Tooltip._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $$$1(this).data(DATA_KEY);\n\n var _config = typeof config === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Tooltip(this, _config);\n $$$1(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tooltip, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType;\n }\n }]);\n\n return Tooltip;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $$$1.fn[NAME] = Tooltip._jQueryInterface;\n $$$1.fn[NAME].Constructor = Tooltip;\n\n $$$1.fn[NAME].noConflict = function () {\n $$$1.fn[NAME] = JQUERY_NO_CONFLICT;\n return Tooltip._jQueryInterface;\n };\n\n return Tooltip;\n }($, Popper);\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n var Popover = function ($$$1) {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n var NAME = 'popover';\n var VERSION = '4.1.1';\n var DATA_KEY = 'bs.popover';\n var EVENT_KEY = \".\" + DATA_KEY;\n var JQUERY_NO_CONFLICT = $$$1.fn[NAME];\n var CLASS_PREFIX = 'bs-popover';\n var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n\n var Default = _objectSpread({}, Tooltip.Default, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '
' + '
' + '

' + '
'\n });\n\n var DefaultType = _objectSpread({}, Tooltip.DefaultType, {\n content: '(string|element|function)'\n });\n\n var ClassName = {\n FADE: 'fade',\n SHOW: 'show'\n };\n var Selector = {\n TITLE: '.popover-header',\n CONTENT: '.popover-body'\n };\n var Event = {\n HIDE: \"hide\" + EVENT_KEY,\n HIDDEN: \"hidden\" + EVENT_KEY,\n SHOW: \"show\" + EVENT_KEY,\n SHOWN: \"shown\" + EVENT_KEY,\n INSERTED: \"inserted\" + EVENT_KEY,\n CLICK: \"click\" + EVENT_KEY,\n FOCUSIN: \"focusin\" + EVENT_KEY,\n FOCUSOUT: \"focusout\" + EVENT_KEY,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var Popover =\n /*#__PURE__*/\n function (_Tooltip) {\n _inheritsLoose(Popover, _Tooltip);\n\n function Popover() {\n return _Tooltip.apply(this, arguments) || this;\n }\n\n var _proto = Popover.prototype;\n\n // Overrides\n _proto.isWithContent = function isWithContent() {\n return this.getTitle() || this._getContent();\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $$$1(this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $$$1(this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var $tip = $$$1(this.getTipElement()); // We use append for html objects to maintain js events\n\n this.setElementContent($tip.find(Selector.TITLE), this.getTitle());\n\n var content = this._getContent();\n\n if (typeof content === 'function') {\n content = content.call(this.element);\n }\n\n this.setElementContent($tip.find(Selector.CONTENT), content);\n $tip.removeClass(ClassName.FADE + \" \" + ClassName.SHOW);\n }; // Private\n\n\n _proto._getContent = function _getContent() {\n return this.element.getAttribute('data-content') || this.config.content;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $$$1(this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''));\n }\n }; // Static\n\n\n Popover._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $$$1(this).data(DATA_KEY);\n\n var _config = typeof config === 'object' ? config : null;\n\n if (!data && /destroy|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Popover(this, _config);\n $$$1(this).data(DATA_KEY, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Popover, null, [{\n key: \"VERSION\",\n // Getters\n get: function get() {\n return VERSION;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType;\n }\n }]);\n\n return Popover;\n }(Tooltip);\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $$$1.fn[NAME] = Popover._jQueryInterface;\n $$$1.fn[NAME].Constructor = Popover;\n\n $$$1.fn[NAME].noConflict = function () {\n $$$1.fn[NAME] = JQUERY_NO_CONFLICT;\n return Popover._jQueryInterface;\n };\n\n return Popover;\n }($);\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n var ScrollSpy = function ($$$1) {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n var NAME = 'scrollspy';\n var VERSION = '4.1.1';\n var DATA_KEY = 'bs.scrollspy';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $$$1.fn[NAME];\n var Default = {\n offset: 10,\n method: 'auto',\n target: ''\n };\n var DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n };\n var Event = {\n ACTIVATE: \"activate\" + EVENT_KEY,\n SCROLL: \"scroll\" + EVENT_KEY,\n LOAD_DATA_API: \"load\" + EVENT_KEY + DATA_API_KEY\n };\n var ClassName = {\n DROPDOWN_ITEM: 'dropdown-item',\n DROPDOWN_MENU: 'dropdown-menu',\n ACTIVE: 'active'\n };\n var Selector = {\n DATA_SPY: '[data-spy=\"scroll\"]',\n ACTIVE: '.active',\n NAV_LIST_GROUP: '.nav, .list-group',\n NAV_LINKS: '.nav-link',\n NAV_ITEMS: '.nav-item',\n LIST_ITEMS: '.list-group-item',\n DROPDOWN: '.dropdown',\n DROPDOWN_ITEMS: '.dropdown-item',\n DROPDOWN_TOGGLE: '.dropdown-toggle'\n };\n var OffsetMethod = {\n OFFSET: 'offset',\n POSITION: 'position'\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n };\n\n var ScrollSpy =\n /*#__PURE__*/\n function () {\n function ScrollSpy(element, config) {\n var _this = this;\n\n this._element = element;\n this._scrollElement = element.tagName === 'BODY' ? window : element;\n this._config = this._getConfig(config);\n this._selector = this._config.target + \" \" + Selector.NAV_LINKS + \",\" + (this._config.target + \" \" + Selector.LIST_ITEMS + \",\") + (this._config.target + \" \" + Selector.DROPDOWN_ITEMS);\n this._offsets = [];\n this._targets = [];\n this._activeTarget = null;\n this._scrollHeight = 0;\n $$$1(this._scrollElement).on(Event.SCROLL, function (event) {\n return _this._process(event);\n });\n this.refresh();\n\n this._process();\n } // Getters\n\n\n var _proto = ScrollSpy.prototype;\n\n // Public\n _proto.refresh = function refresh() {\n var _this2 = this;\n\n var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;\n var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;\n this._offsets = [];\n this._targets = [];\n this._scrollHeight = this._getScrollHeight();\n var targets = $$$1.makeArray($$$1(this._selector));\n targets.map(function (element) {\n var target;\n var targetSelector = Util.getSelectorFromElement(element);\n\n if (targetSelector) {\n target = $$$1(targetSelector)[0];\n }\n\n if (target) {\n var targetBCR = target.getBoundingClientRect();\n\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [$$$1(target)[offsetMethod]().top + offsetBase, targetSelector];\n }\n }\n\n return null;\n }).filter(function (item) {\n return item;\n }).sort(function (a, b) {\n return a[0] - b[0];\n }).forEach(function (item) {\n _this2._offsets.push(item[0]);\n\n _this2._targets.push(item[1]);\n });\n };\n\n _proto.dispose = function dispose() {\n $$$1.removeData(this._element, DATA_KEY);\n $$$1(this._scrollElement).off(EVENT_KEY);\n this._element = null;\n this._scrollElement = null;\n this._config = null;\n this._selector = null;\n this._offsets = null;\n this._targets = null;\n this._activeTarget = null;\n this._scrollHeight = null;\n }; // Private\n\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread({}, Default, typeof config === 'object' && config ? config : {});\n\n if (typeof config.target !== 'string') {\n var id = $$$1(config.target).attr('id');\n\n if (!id) {\n id = Util.getUID(NAME);\n $$$1(config.target).attr('id', id);\n }\n\n config.target = \"#\" + id;\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType);\n return config;\n };\n\n _proto._getScrollTop = function _getScrollTop() {\n return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n };\n\n _proto._getScrollHeight = function _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n };\n\n _proto._getOffsetHeight = function _getOffsetHeight() {\n return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n };\n\n _proto._process = function _process() {\n var scrollTop = this._getScrollTop() + this._config.offset;\n\n var scrollHeight = this._getScrollHeight();\n\n var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n var target = this._targets[this._targets.length - 1];\n\n if (this._activeTarget !== target) {\n this._activate(target);\n }\n\n return;\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null;\n\n this._clear();\n\n return;\n }\n\n for (var i = this._offsets.length; i--;) {\n var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n if (isActiveTarget) {\n this._activate(this._targets[i]);\n }\n }\n };\n\n _proto._activate = function _activate(target) {\n this._activeTarget = target;\n\n this._clear();\n\n var queries = this._selector.split(','); // eslint-disable-next-line arrow-body-style\n\n\n queries = queries.map(function (selector) {\n return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + (selector + \"[href=\\\"\" + target + \"\\\"]\");\n });\n var $link = $$$1(queries.join(','));\n\n if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);\n $link.addClass(ClassName.ACTIVE);\n } else {\n // Set triggered link as active\n $link.addClass(ClassName.ACTIVE); // Set triggered links parents as active\n // With both
    and