Your IP : 3.137.186.26


Current Path : /home/lentoinv/covisclubinternational.com/plugins/fullcalendar/
Upload File :
Current File : //home/lentoinv/covisclubinternational.com/plugins/fullcalendar/main.js.map

{"version":3,"file":"main.js","sources":["../../../tmp/tsc-output/packages/core/src/util/dom-manip.js","../../../tmp/tsc-output/packages/core/src/util/geom.js","../../../tmp/tsc-output/packages/core/src/util/scrollbars.js","../../../tmp/tsc-output/packages/core/src/util/dom-geom.js","../../../tmp/tsc-output/packages/core/src/util/dom-event.js","../../../tmp/tsc-output/packages/core/src/datelib/marker.js","../../../tmp/tsc-output/packages/core/src/datelib/duration.js","../../../tmp/tsc-output/packages/core/src/util/misc.js","../../../tmp/tsc-output/packages/core/src/structs/recurring-event.js","../../../tmp/tsc-output/packages/core/src/util/object.js","../../../tmp/tsc-output/packages/core/src/structs/event-store.js","../../../tmp/tsc-output/packages/core/src/datelib/date-range.js","../../../tmp/tsc-output/packages/core/src/util/array.js","../../../tmp/tsc-output/packages/core/src/util/memoize.js","../../../tmp/tsc-output/packages/core/src/datelib/formatting-native.js","../../../tmp/tsc-output/packages/core/src/datelib/formatting-cmd.js","../../../tmp/tsc-output/packages/core/src/datelib/formatting-func.js","../../../tmp/tsc-output/packages/core/src/datelib/formatting.js","../../../tmp/tsc-output/packages/core/src/api/EventSourceApi.js","../../../tmp/tsc-output/packages/core/src/api/EventApi.js","../../../tmp/tsc-output/packages/core/src/component/event-rendering.js","../../../tmp/tsc-output/packages/core/src/structs/event-mutation.js","../../../tmp/tsc-output/packages/core/src/reducers/eventStore.js","../../../tmp/tsc-output/packages/core/src/validation.js","../../../tmp/tsc-output/packages/core/src/util/html.js","../../../tmp/tsc-output/packages/core/src/component/event-ui.js","../../../tmp/tsc-output/packages/core/src/structs/event.js","../../../tmp/tsc-output/packages/core/src/structs/business-hours.js","../../../tmp/tsc-output/packages/core/src/component/memoized-rendering.js","../../../tmp/tsc-output/packages/core/src/component/event-splitting.js","../../../tmp/tsc-output/packages/core/src/component/date-rendering.js","../../../tmp/tsc-output/packages/core/src/util/promise.js","../../../tmp/tsc-output/packages/core/src/common/Mixin.js","../../../tmp/tsc-output/packages/core/src/common/EmitterMixin.js","../../../tmp/tsc-output/packages/core/src/common/PositionCache.js","../../../tmp/tsc-output/packages/core/src/common/scroll-controller.js","../../../tmp/tsc-output/packages/core/src/common/ScrollComponent.js","../../../tmp/tsc-output/packages/core/src/theme/Theme.js","../../../tmp/tsc-output/packages/core/src/component/Component.js","../../../tmp/tsc-output/packages/core/src/component/DateComponent.js","../../../tmp/tsc-output/packages/core/src/plugin-system.js","../../../tmp/tsc-output/packages/core/src/event-sources/array-event-source.js","../../../tmp/tsc-output/packages/core/src/event-sources/func-event-source.js","../../../tmp/tsc-output/packages/core/src/util/requestJson.js","../../../tmp/tsc-output/packages/core/src/event-sources/json-feed-event-source.js","../../../tmp/tsc-output/packages/core/src/structs/recurring-event-simple.js","../../../tmp/tsc-output/packages/core/src/option-change-handlers.js","../../../tmp/tsc-output/packages/core/src/options.js","../../../tmp/tsc-output/packages/core/src/datelib/locale.js","../../../tmp/tsc-output/packages/core/src/OptionsManager.js","../../../tmp/tsc-output/packages/core/src/datelib/calendar-system.js","../../../tmp/tsc-output/packages/core/src/datelib/parsing.js","../../../tmp/tsc-output/packages/core/src/datelib/env.js","../../../tmp/tsc-output/packages/core/src/structs/event-source.js","../../../tmp/tsc-output/packages/core/src/reducers/eventSources.js","../../../tmp/tsc-output/packages/core/src/DateProfileGenerator.js","../../../tmp/tsc-output/packages/core/src/reducers/main.js","../../../tmp/tsc-output/packages/core/src/structs/date-span.js","../../../tmp/tsc-output/packages/core/src/structs/view-def.js","../../../tmp/tsc-output/packages/core/src/structs/view-config.js","../../../tmp/tsc-output/packages/core/src/structs/view-spec.js","../../../tmp/tsc-output/packages/core/src/Toolbar.js","../../../tmp/tsc-output/packages/core/src/CalendarComponent.js","../../../tmp/tsc-output/packages/core/src/interactions/interaction.js","../../../tmp/tsc-output/packages/core/src/interactions/EventClicking.js","../../../tmp/tsc-output/packages/core/src/interactions/EventHovering.js","../../../tmp/tsc-output/packages/core/src/theme/StandardTheme.js","../../../tmp/tsc-output/packages/core/src/Calendar.js","../../../tmp/tsc-output/packages/core/src/View.js","../../../tmp/tsc-output/packages/core/src/component/renderers/FgEventRenderer.js","../../../tmp/tsc-output/packages/core/src/component/renderers/FillRenderer.js","../../../tmp/tsc-output/packages/core/src/datelib/timezone.js","../../../tmp/tsc-output/packages/core/src/interactions/ElementDragging.js","../../../tmp/tsc-output/packages/core/src/formatting-api.js","../../../tmp/tsc-output/packages/core/src/structs/drag-meta.js","../../../tmp/tsc-output/packages/core/src/common/table-utils.js","../../../tmp/tsc-output/packages/core/src/common/DayHeader.js","../../../tmp/tsc-output/packages/core/src/common/DaySeries.js","../../../tmp/tsc-output/packages/core/src/common/DayTable.js","../../../tmp/tsc-output/packages/core/src/common/slicing-utils.js","../../../tmp/tsc-output/packages/core/src/main.js"],"sourcesContent":["// Creating\n// ----------------------------------------------------------------------------------------------------------------\nvar elementPropHash = {\n    className: true,\n    colSpan: true,\n    rowSpan: true\n};\nvar containerTagHash = {\n    '<tr': 'tbody',\n    '<td': 'tr'\n};\nexport function createElement(tagName, attrs, content) {\n    var el = document.createElement(tagName);\n    if (attrs) {\n        for (var attrName in attrs) {\n            if (attrName === 'style') {\n                applyStyle(el, attrs[attrName]);\n            }\n            else if (elementPropHash[attrName]) {\n                el[attrName] = attrs[attrName];\n            }\n            else {\n                el.setAttribute(attrName, attrs[attrName]);\n            }\n        }\n    }\n    if (typeof content === 'string') {\n        el.innerHTML = content; // shortcut. no need to process HTML in any way\n    }\n    else if (content != null) {\n        appendToElement(el, content);\n    }\n    return el;\n}\nexport function htmlToElement(html) {\n    html = html.trim();\n    var container = document.createElement(computeContainerTag(html));\n    container.innerHTML = html;\n    return container.firstChild;\n}\nexport function htmlToElements(html) {\n    return Array.prototype.slice.call(htmlToNodeList(html));\n}\nfunction htmlToNodeList(html) {\n    html = html.trim();\n    var container = document.createElement(computeContainerTag(html));\n    container.innerHTML = html;\n    return container.childNodes;\n}\n// assumes html already trimmed and tag names are lowercase\nfunction computeContainerTag(html) {\n    return containerTagHash[html.substr(0, 3) // faster than using regex\n    ] || 'div';\n}\nexport function appendToElement(el, content) {\n    var childNodes = normalizeContent(content);\n    for (var i = 0; i < childNodes.length; i++) {\n        el.appendChild(childNodes[i]);\n    }\n}\nexport function prependToElement(parent, content) {\n    var newEls = normalizeContent(content);\n    var afterEl = parent.firstChild || null; // if no firstChild, will append to end, but that's okay, b/c there were no children\n    for (var i = 0; i < newEls.length; i++) {\n        parent.insertBefore(newEls[i], afterEl);\n    }\n}\nexport function insertAfterElement(refEl, content) {\n    var newEls = normalizeContent(content);\n    var afterEl = refEl.nextSibling || null;\n    for (var i = 0; i < newEls.length; i++) {\n        refEl.parentNode.insertBefore(newEls[i], afterEl);\n    }\n}\nfunction normalizeContent(content) {\n    var els;\n    if (typeof content === 'string') {\n        els = htmlToElements(content);\n    }\n    else if (content instanceof Node) {\n        els = [content];\n    }\n    else { // Node[] or NodeList\n        els = Array.prototype.slice.call(content);\n    }\n    return els;\n}\nexport function removeElement(el) {\n    if (el.parentNode) {\n        el.parentNode.removeChild(el);\n    }\n}\n// Querying\n// ----------------------------------------------------------------------------------------------------------------\n// from https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\nvar matchesMethod = Element.prototype.matches ||\n    Element.prototype.matchesSelector ||\n    Element.prototype.msMatchesSelector;\nvar closestMethod = Element.prototype.closest || function (selector) {\n    // polyfill\n    var el = this;\n    if (!document.documentElement.contains(el)) {\n        return null;\n    }\n    do {\n        if (elementMatches(el, selector)) {\n            return el;\n        }\n        el = el.parentElement || el.parentNode;\n    } while (el !== null && el.nodeType === 1);\n    return null;\n};\nexport function elementClosest(el, selector) {\n    return closestMethod.call(el, selector);\n}\nexport function elementMatches(el, selector) {\n    return matchesMethod.call(el, selector);\n}\n// accepts multiple subject els\n// returns a real array. good for methods like forEach\nexport function findElements(container, selector) {\n    var containers = container instanceof HTMLElement ? [container] : container;\n    var allMatches = [];\n    for (var i = 0; i < containers.length; i++) {\n        var matches = containers[i].querySelectorAll(selector);\n        for (var j = 0; j < matches.length; j++) {\n            allMatches.push(matches[j]);\n        }\n    }\n    return allMatches;\n}\n// accepts multiple subject els\n// only queries direct child elements\nexport function findChildren(parent, selector) {\n    var parents = parent instanceof HTMLElement ? [parent] : parent;\n    var allMatches = [];\n    for (var i = 0; i < parents.length; i++) {\n        var childNodes = parents[i].children; // only ever elements\n        for (var j = 0; j < childNodes.length; j++) {\n            var childNode = childNodes[j];\n            if (!selector || elementMatches(childNode, selector)) {\n                allMatches.push(childNode);\n            }\n        }\n    }\n    return allMatches;\n}\n// Attributes\n// ----------------------------------------------------------------------------------------------------------------\nexport function forceClassName(el, className, bool) {\n    if (bool) {\n        el.classList.add(className);\n    }\n    else {\n        el.classList.remove(className);\n    }\n}\n// Style\n// ----------------------------------------------------------------------------------------------------------------\nvar PIXEL_PROP_RE = /(top|left|right|bottom|width|height)$/i;\nexport function applyStyle(el, props) {\n    for (var propName in props) {\n        applyStyleProp(el, propName, props[propName]);\n    }\n}\nexport function applyStyleProp(el, name, val) {\n    if (val == null) {\n        el.style[name] = '';\n    }\n    else if (typeof val === 'number' && PIXEL_PROP_RE.test(name)) {\n        el.style[name] = val + 'px';\n    }\n    else {\n        el.style[name] = val;\n    }\n}\n","export function pointInsideRect(point, rect) {\n    return point.left >= 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\nexport 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}\nexport 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\nexport 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\nexport 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\nexport function diffPoints(point1, point2) {\n    return {\n        left: point1.left - point2.left,\n        top: point1.top - point2.top\n    };\n}\n","import { createElement, removeElement } from './dom-manip';\n// Logic for determining if, when the element is right-to-left, the scrollbar appears on the left side\nvar isRtlScrollbarOnLeft = null;\nexport function getIsRtlScrollbarOnLeft() {\n    if (isRtlScrollbarOnLeft === null) {\n        isRtlScrollbarOnLeft = computeIsRtlScrollbarOnLeft();\n    }\n    return isRtlScrollbarOnLeft;\n}\nfunction 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    }, '<div></div>');\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.\nexport function sanitizeScrollbarWidth(width) {\n    width = Math.max(0, width); // no negatives\n    width = Math.round(width);\n    return width;\n}\n","import { intersectRects } from './geom';\nimport { sanitizeScrollbarWidth, getIsRtlScrollbarOnLeft } from './scrollbars';\nexport 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}\nexport 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}\nexport 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}\nfunction 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}\nexport function computeHeightAndMargins(el) {\n    return el.getBoundingClientRect().height + computeVMargins(el);\n}\nexport 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\nexport 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}\nexport 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","import { elementClosest } from './dom-manip';\n// Stops a mouse/touch event from doing it's native browser action\nexport function preventDefault(ev) {\n    ev.preventDefault();\n}\n// Event Delegation\n// ----------------------------------------------------------------------------------------------------------------\nexport 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}\nexport 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// ----------------------------------------------------------------------------------------------------------------\nvar transitionEventNames = [\n    'webkitTransitionEnd',\n    'otransitionend',\n    'oTransitionEnd',\n    'msTransitionEnd',\n    'transitionend'\n];\n// triggered only when the next single subsequent transition finishes\nexport 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","export var DAY_IDS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\n// Adding\nexport function addWeeks(m, n) {\n    var a = dateToUtcArray(m);\n    a[2] += n * 7;\n    return arrayToUtcDate(a);\n}\nexport function addDays(m, n) {\n    var a = dateToUtcArray(m);\n    a[2] += n;\n    return arrayToUtcDate(a);\n}\nexport function addMs(m, n) {\n    var a = dateToUtcArray(m);\n    a[6] += n;\n    return arrayToUtcDate(a);\n}\n// Diffing (all return floats)\nexport function diffWeeks(m0, m1) {\n    return diffDays(m0, m1) / 7;\n}\nexport function diffDays(m0, m1) {\n    return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60 * 24);\n}\nexport function diffHours(m0, m1) {\n    return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60);\n}\nexport function diffMinutes(m0, m1) {\n    return (m1.valueOf() - m0.valueOf()) / (1000 * 60);\n}\nexport function diffSeconds(m0, m1) {\n    return (m1.valueOf() - m0.valueOf()) / 1000;\n}\nexport 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\nexport 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}\nexport 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\nexport function startOfDay(m) {\n    return arrayToUtcDate([\n        m.getUTCFullYear(),\n        m.getUTCMonth(),\n        m.getUTCDate()\n    ]);\n}\nexport function startOfHour(m) {\n    return arrayToUtcDate([\n        m.getUTCFullYear(),\n        m.getUTCMonth(),\n        m.getUTCDate(),\n        m.getUTCHours()\n    ]);\n}\nexport function startOfMinute(m) {\n    return arrayToUtcDate([\n        m.getUTCFullYear(),\n        m.getUTCMonth(),\n        m.getUTCDate(),\n        m.getUTCHours(),\n        m.getUTCMinutes()\n    ]);\n}\nexport 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\nexport 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}\nfunction 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\nfunction 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\nexport 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}\nexport 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}\nexport 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}\nexport 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\nexport function isValidDate(m) {\n    return !isNaN(m.valueOf());\n}\nexport function timeAsMs(m) {\n    return m.getUTCHours() * 1000 * 60 * 60 +\n        m.getUTCMinutes() * 1000 * 60 +\n        m.getUTCSeconds() * 1000 +\n        m.getUTCMilliseconds();\n}\n","import { isInt } from '../util/misc';\nvar INTERNAL_UNITS = ['years', 'months', 'days', 'milliseconds'];\nvar PARSE_RE = /^(-?)(?:(\\d+)\\.)?(\\d+):(\\d\\d)(?::(\\d\\d)(?:\\.(\\d\\d\\d))?)?/;\n// Parsing and Creation\nexport 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}\nfunction 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}\nfunction 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}\nexport function getWeeksFromInput(obj) {\n    return obj.weeks || obj.week || 0;\n}\n// Equality\nexport 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}\nexport function isSingleDay(dur) {\n    return dur.years === 0 && dur.months === 0 && dur.days === 1 && dur.milliseconds === 0;\n}\n// Simple Math\nexport 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}\nexport 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}\nexport 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\nexport function asRoughYears(dur) {\n    return asRoughDays(dur) / 365;\n}\nexport function asRoughMonths(dur) {\n    return asRoughDays(dur) / 30;\n}\nexport function asRoughDays(dur) {\n    return asRoughMs(dur) / 864e5;\n}\nexport function asRoughHours(dur) {\n    return asRoughMs(dur) / (1000 * 60 * 60);\n}\nexport function asRoughMinutes(dur) {\n    return asRoughMs(dur) / (1000 * 60);\n}\nexport function asRoughSeconds(dur) {\n    return asRoughMs(dur) / 1000;\n}\nexport 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\nexport 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}\nexport 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","import { applyStyle } from './dom-manip';\nimport { computeVMargins } from './dom-geom';\nimport { preventDefault } from './dom-event';\nimport { startOfDay, addDays, diffDays, diffDayAndTime } from '../datelib/marker';\nimport { asRoughMs, createDuration } from '../datelib/duration';\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.\nexport 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\nexport 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\nexport function disableCursor() {\n    document.body.classList.add('fc-not-allowed');\n}\n// Returns the mouse cursor to its original look\nexport 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.\nexport 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\nexport function undistributeHeight(els) {\n    els.forEach(function (el) {\n        el.style.height = '';\n    });\n}\n// Given `els`, a set of <td> 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\nexport 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.\nexport 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----------------------------------------------------------------------------------------------------------------------*/\nexport function preventSelection(el) {\n    el.classList.add('fc-unselectable');\n    el.addEventListener('selectstart', preventDefault);\n}\nexport function allowSelection(el) {\n    el.classList.remove('fc-unselectable');\n    el.removeEventListener('selectstart', preventDefault);\n}\n/* Context Menu\n----------------------------------------------------------------------------------------------------------------------*/\nexport function preventContextMenu(el) {\n    el.addEventListener('contextmenu', preventDefault);\n}\nexport function allowContextMenu(el) {\n    el.removeEventListener('contextmenu', preventDefault);\n}\n/* Object Ordering by Field\n----------------------------------------------------------------------------------------------------------------------*/\nexport 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}\nexport 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}\nexport 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}\nexport 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----------------------------------------------------------------------------------------------------------------------*/\nexport function capitaliseFirstLetter(str) {\n    return str.charAt(0).toUpperCase() + str.slice(1);\n}\nexport function padStart(val, len) {\n    var s = String(val);\n    return '000'.substr(0, len - s.length) + s;\n}\n/* Number Utilities\n----------------------------------------------------------------------------------------------------------------------*/\nexport function compareNumbers(a, b) {\n    return a - b;\n}\nexport function isInt(n) {\n    return n % 1 === 0;\n}\n/* Weird Utilities\n----------------------------------------------------------------------------------------------------------------------*/\nexport 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}\nexport 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\nexport 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\nexport 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.\nexport 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\nexport 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?\nexport function isMultiDayRange(range) {\n    var visibleRange = computeVisibleDayRange(range);\n    return diffDays(visibleRange.start, visibleRange.end) > 1;\n}\nexport 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","import { startOfDay } from '../datelib/marker';\nimport { __assign } from 'tslib';\nexport 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/*\nEvent MUST have a recurringDef\n*/\nexport 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","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.\nexport 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}\nexport 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}\nexport 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}\nexport 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}\nexport function hashValuesToArray(obj) {\n    var a = [];\n    for (var key in obj) {\n        a.push(obj[key]);\n    }\n    return a;\n}\nexport 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","import * as tslib_1 from \"tslib\";\nimport { createEventInstance, parseEvent } from './event';\nimport { expandRecurringRanges } from './recurring-event';\nimport { filterHash } from '../util/object';\nexport 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}\nexport 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}\nexport 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?\nexport 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}\nfunction isEventDefsGrouped(def0, def1) {\n    return Boolean(def0.groupId && def0.groupId === def1.groupId);\n}\nexport 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}\nfunction 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}\nexport function createEmptyEventStore() {\n    return { defs: {}, instances: {} };\n}\nexport function mergeEventStores(store0, store1) {\n    return {\n        defs: tslib_1.__assign({}, store0.defs, store1.defs),\n        instances: tslib_1.__assign({}, store0.instances, store1.instances)\n    };\n}\nexport 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","export 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.\nexport 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}\nfunction compareRanges(range0, range1) {\n    return range0.start.valueOf() - range1.start.valueOf(); // earlier ranges go first\n}\nexport 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}\nexport 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}\nexport 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}\nexport 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}\nexport 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).\nexport 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","export function removeMatching(array, testFunc) {\n    var removeCnt = 0;\n    var i = 0;\n    while (i < array.length) {\n        if (testFunc(array[i])) { // truthy value means *remove*\n            array.splice(i, 1);\n            removeCnt++;\n        }\n        else {\n            i++;\n        }\n    }\n    return removeCnt;\n}\nexport 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}\nexport 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","import { isArraysEqual } from './array';\nexport 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/*\nalways executes the workerFunc, but if the result is equal to the previous result,\nreturn the previous result instead.\n*/\nexport 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","import * as tslib_1 from \"tslib\";\nimport { timeAsMs } from './marker';\nimport { formatTimeZoneOffset } from './formatting';\nimport { memoize } from '../util/memoize';\nvar EXTENDED_SETTINGS_AND_SEVERITIES = {\n    week: 3,\n    separator: 0,\n    omitZeroMinute: 0,\n    meridiem: 0,\n    omitCommas: 0\n};\nvar 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};\nvar MERIDIEM_RE = /\\s*([ap])\\.?m\\.?/i; // eats up leading spaces too\nvar COMMA_RE = /,/g; // we need re for globalness\nvar MULTI_SPACE_RE = /\\s+/g;\nvar LTR_RE = /\\u200e/g; // control character\nvar UTC_RE = /UTC|GMT/;\nvar 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}());\nexport { NativeFormatter };\nfunction 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}\nfunction buildNativeFormattingFunc(standardDateProps, extendedSettings, context) {\n    standardDateProps = tslib_1.__assign({}, standardDateProps); // copy\n    extendedSettings = tslib_1.__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 = tslib_1.__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}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction 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\nfunction 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}\nfunction 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}\nfunction 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","import { createVerboseFormattingArg } from './formatting';\n/*\nTODO: fix the terminology of \"formatter\" vs \"formatting func\"\n*/\n/*\nAt the time of instantiation, this object does not know which cmd-formatting system it will use.\nIt receives this at the time of formatting, as a setting.\n*/\nvar 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}());\nexport { CmdFormatter };\n","import { createVerboseFormattingArg } from './formatting';\nvar 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}());\nexport { FuncFormatter };\n","import * as tslib_1 from \"tslib\";\nimport { padStart } from '../util/misc';\nimport { NativeFormatter } from './formatting-native';\nimport { CmdFormatter } from './formatting-cmd';\nimport { FuncFormatter } from './formatting-func';\n// Formatter Object Creation\nexport function createFormatter(input, defaultSeparator) {\n    if (typeof input === 'object' && input) { // non-null object\n        if (typeof defaultSeparator === 'string') {\n            input = tslib_1.__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\nexport 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}\nexport function formatIsoTimeString(marker) {\n    return padStart(marker.getUTCHours(), 2) + ':' +\n        padStart(marker.getUTCMinutes(), 2) + ':' +\n        padStart(marker.getUTCSeconds(), 2);\n}\nexport 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\nexport 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}\nfunction 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","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}());\nexport default EventSourceApi;\n","import { NON_DATE_PROPS, DATE_PROPS } from '../structs/event';\nimport { UNSCOPED_EVENT_UI_PROPS } from '../component/event-ui';\nimport { diffDates, computeAlignedDayRange } from '../util/misc';\nimport { createDuration, durationsEqual } from '../datelib/duration';\nimport { createFormatter } from '../datelib/formatting';\nimport EventSourceApi from './EventSourceApi';\nvar 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            // error. date-related props need other methods\n        }\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        else {\n            // error\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}());\nexport default EventApi;\n","import { invertRanges, intersectRanges } from '../datelib/date-range';\nimport { computeVisibleDayRange } from '../util/misc';\nimport EventApi from '../api/EventApi';\nimport { combineEventUis } from './event-ui';\nimport { mapHash } from '../util/object';\n/*\nSpecifying nextDayThreshold signals that all-day ranges should be sliced.\n*/\nexport 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}\nexport function hasBgRendering(def) {\n    return def.rendering === 'background' || def.rendering === 'inverse-background';\n}\nexport 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}\nfunction setElSeg(el, seg) {\n    el.fcSeg = seg;\n}\nexport function getElSeg(el) {\n    return el.fcSeg || null;\n}\n// event ui computation\nexport function compileEventUis(eventDefs, eventUiBases) {\n    return mapHash(eventDefs, function (eventDef) {\n        return compileEventUi(eventDef, eventUiBases);\n    });\n}\nexport 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\nexport 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}\nexport 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\nexport 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}\nexport function computeEventStartResizable(context, eventDef, eventUi) {\n    return eventUi.durationEditable && context.options.eventResizableFromStart;\n}\nexport function computeEventEndResizable(context, eventDef, eventUi) {\n    return eventUi.durationEditable;\n}\n","import * as tslib_1 from \"tslib\";\nimport { createEmptyEventStore } from './event-store';\nimport { computeAlignedDayRange } from '../util/misc';\nimport { startOfDay } from '../datelib/marker';\nimport { compileEventUis } from '../component/event-rendering';\n// applies the mutation to ALL defs/instances within the event store\nexport 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}\nfunction 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 = tslib_1.__assign({}, eventDef, standardProps, { ui: tslib_1.__assign({}, eventDef.ui, standardProps.ui) });\n    if (mutation.extendedProps) {\n        copy.extendedProps = tslib_1.__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}\nfunction applyMutationToEventInstance(eventInstance, eventDef, // must first be modified by applyMutationToEventDef\neventConfig, 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 = tslib_1.__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","import * as tslib_1 from \"tslib\";\nimport { filterHash, mapHash } from '../util/object';\nimport { applyMutationToEventStore } from '../structs/event-mutation';\nimport { mergeEventStores, getRelevantEvents, createEmptyEventStore, filterEventStoreDefs, parseEvents, expandRecurring, transformRawEvents } from '../structs/event-store';\nexport default function (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}\nfunction 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}\nfunction addEvent(eventStore, subset, expandRange, calendar) {\n    if (expandRange) {\n        subset = expandRecurring(subset, expandRange, calendar);\n    }\n    return mergeEventStores(eventStore, subset);\n}\nfunction 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 tslib_1.__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}\nfunction 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}\nfunction 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\nexport 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","import * as tslib_1 from \"tslib\";\nimport { expandRecurring, filterEventStoreDefs, parseEvents, createEmptyEventStore } from './structs/event-store';\nimport { rangeContainsRange, rangesIntersect } from './datelib/date-range';\nimport EventApi from './api/EventApi';\nimport { compileEventUis } from './component/event-rendering';\nimport { excludeInstances } from './reducers/eventStore';\nimport { mapHash } from './util/object';\n// high-level segmenting-aware tester functions\n// ------------------------------------------------------------------------------------------------------------------------\nexport function isInteractionValid(interaction, calendar) {\n    return isNewPropsValid({ eventDrag: interaction }, calendar); // HACK: the eventDrag props is used for ALL interactions\n}\nexport function isDateSelectionValid(dateSelection, calendar) {\n    return isNewPropsValid({ dateSelection: dateSelection }, calendar);\n}\nfunction isNewPropsValid(newProps, calendar) {\n    var view = calendar.view;\n    var props = tslib_1.__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}\nexport 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// ------------------------------------------------------------------------------------------------------------------------\nfunction 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 = tslib_1.__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// ------------------------------------------------------------------------------------------------------------------------\nfunction 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 = tslib_1.__assign({}, dateSpanMeta, selection);\n        if (!selectionAllow(calendar.buildDateSpanApi(fullDateSpan), null)) {\n            return false;\n        }\n    }\n    return true;\n}\n// Constraint Utils\n// ------------------------------------------------------------------------------------------------------------------------\nfunction 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}\nfunction constraintToRanges(constraint, subjectRange, // for expanding a recurring constraint, or expanding business hours\notherEventStore, // for if constraint is an even group ID\nbusinessHoursUnexpanded, // for if constraint is 'businessHours'\ncalendar // 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?\nfunction 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?\nfunction 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// ------------------------------------------------------------------------------------------------------------------------\nexport 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","export function htmlEscape(s) {\n    return (s + '').replace(/&/g, '&amp;')\n        .replace(/</g, '&lt;')\n        .replace(/>/g, '&gt;')\n        .replace(/'/g, '&#039;')\n        .replace(/\"/g, '&quot;')\n        .replace(/\\n/g, '<br />');\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.\nexport 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\nexport 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}\nexport 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","import { normalizeConstraint } from '../validation';\nimport { parseClassName } from '../util/html';\nimport { refineProps, capitaliseFirstLetter } from '../util/misc';\nexport 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};\nexport 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}\nexport 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}\nvar 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!\nexport function combineEventUis(uis) {\n    return uis.reduce(combineTwoEventUis, EMPTY_EVENT_UI);\n}\nfunction 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","import { refineProps } from '../util/misc';\nimport { startOfDay } from '../datelib/marker';\nimport { parseRecurring } from './recurring-event';\nimport { processUnscopedUiProps } from '../component/event-ui';\nimport { __assign } from 'tslib';\nexport var NON_DATE_PROPS = {\n    id: String,\n    groupId: String,\n    title: String,\n    url: String,\n    rendering: String,\n    extendedProps: null\n};\nexport var DATE_PROPS = {\n    start: null,\n    date: null,\n    end: null,\n    allDay: null\n};\nvar uid = 0;\nexport 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/*\nWill NOT populate extendedProps with the leftover properties.\nWill NOT populate date-related props.\nThe EventNonDateInput has been normalized (id => publicId, etc).\n*/\nexport 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}\nexport 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}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction 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","import * as tslib_1 from \"tslib\";\nimport { parseEvents } from './event-store';\nvar 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/*\nTODO: pass around as EventDefHash!!!\n*/\nexport function parseBusinessHours(input, calendar) {\n    return parseEvents(refineInputs(input), '', calendar);\n}\nfunction 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 tslib_1.__assign({}, DEF_DEFAULTS, rawDef);\n    });\n    return rawDefs;\n}\n","import { isArraysEqual } from '../util/array';\nexport 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","import { createEmptyEventStore } from '../structs/event-store';\nimport { mapHash } from '../util/object';\nimport { memoize } from '../util/memoize';\nimport { combineEventUis } from './event-ui';\nimport { __assign } from 'tslib';\nvar EMPTY_EVENT_STORE = createEmptyEventStore(); // for purecomponents. TODO: keep elsewhere\nvar 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}());\nexport default Splitter;\nfunction 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","import { htmlEscape, attrsToStr } from '../util/html';\nimport { startOfDay, addDays, DAY_IDS } from '../datelib/marker';\nimport { rangeContainsMarker } from '../datelib/date-range';\n// Generates HTML for an anchor to another view into the calendar.\n// Will either generate an <a> tag or a non-clickable <span> 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.\nexport 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 '<a' + attrs +\n            ' data-goto=\"' + htmlEscape(JSON.stringify(finalOptions)) + '\">' +\n            innerHtml +\n            '</a>';\n    }\n    else {\n        return '<span' + attrs + '>' +\n            innerHtml +\n            '</span>';\n    }\n}\nexport function getAllDayHtml(allOptions) {\n    return allOptions.allDayHtml || htmlEscape(allOptions.allDayText);\n}\n// Computes HTML classNames for a single-day element\nexport 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","// 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.\nexport 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","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}());\nexport default Mixin;\n","/*\nUSAGE:\n  import { default as EmitterMixin, EmitterInterface } from './EmitterMixin'\nin 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']\nafter class:\n  EmitterMixin.mixInto(TheClass)\n*/\nimport * as tslib_1 from \"tslib\";\nimport { applyAll } from '../util/misc';\nimport Mixin from './Mixin';\nvar EmitterMixin = /** @class */ (function (_super) {\n    tslib_1.__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));\nexport default EmitterMixin;\nfunction addToHash(hash, type, handler) {\n    (hash[type] || (hash[type] = []))\n        .push(handler);\n}\nfunction 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","/*\nRecords offset information for a set of elements, relative to an origin element.\nCan record the left/right OR the top/bottom OR both.\nProvides methods for querying the cache by position.\n*/\nvar 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}());\nexport default PositionCache;\n","import * as tslib_1 from \"tslib\";\n/*\nAn object for getting/setting scroll-related information for an element.\nInternally, this is done very differently for window versus DOM element,\nso this object serves as a common interface.\n*/\nvar 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}());\nexport { ScrollController };\nvar ElementScrollController = /** @class */ (function (_super) {\n    tslib_1.__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));\nexport { ElementScrollController };\nvar WindowScrollController = /** @class */ (function (_super) {\n    tslib_1.__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));\nexport { WindowScrollController };\n","import * as tslib_1 from \"tslib\";\nimport { computeEdges } from '../util/dom-geom';\nimport { removeElement, createElement, applyStyle, applyStyleProp } from '../util/dom-manip';\nimport { ElementScrollController } from './scroll-controller';\n/*\nEmbodies a div that has potential scrollbars\n*/\nvar ScrollComponent = /** @class */ (function (_super) {\n    tslib_1.__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));\nexport default ScrollComponent;\n","import * as tslib_1 from \"tslib\";\nvar 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 = tslib_1.__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}());\nexport default Theme;\nTheme.prototype.classes = {};\nTheme.prototype.iconClasses = {};\nTheme.prototype.baseIconClass = '';\nTheme.prototype.iconOverridePrefix = '';\n","import * as tslib_1 from \"tslib\";\nimport { parseFieldSpecs } from '../util/misc';\nimport { createDuration } from '../datelib/duration';\nvar guid = 0;\nvar 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}());\nexport { ComponentContext };\nvar Component = /** @class */ (function () {\n    function Component() {\n        this.uid = String(guid++);\n    }\n    Component.addEqualityFuncs = function (newFuncs) {\n        this.prototype.equalityFuncs = tslib_1.__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}());\nexport default Component;\nComponent.prototype.equalityFuncs = {};\n/*\nReuses old values when equal. If anything is unequal, returns newProps as-is.\nGreat for PureComponent, but won't be feasible with React, so just eliminate and use React's DOM diffing.\n*/\nfunction 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","import * as tslib_1 from \"tslib\";\nimport Component from './Component';\nimport { rangeContainsRange } from '../datelib/date-range';\nimport { elementClosest, removeElement } from '../util/dom-manip';\nimport { isDateSelectionValid, isInteractionValid } from '../validation';\n/*\nPURPOSES:\n- hook up to fg, fill, and mirror renderers\n- interface for dragging and hits\n*/\nvar DateComponent = /** @class */ (function (_super) {\n    tslib_1.__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));\nexport default DateComponent;\nDateComponent.prototype.fgSegSelector = '.fc-event-container > *';\nDateComponent.prototype.bgSegSelector = '.fc-bgevent:not(.fc-nonbusiness)';\n","import * as tslib_1 from \"tslib\";\nvar uid = 0;\nexport function createPlugin(input) {\n    return {\n        id: String(uid++),\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}\nvar 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}());\nexport { PluginSystem };\nfunction 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: tslib_1.__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: tslib_1.__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: tslib_1.__assign({}, hooks0.optionChangeHandlers, hooks1.optionChangeHandlers)\n    };\n}\n","import { createPlugin } from '../plugin-system';\nvar 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};\nexport default createPlugin({\n    eventSourceDefs: [eventSourceDef]\n});\n","import { unpromisify } from '../util/promise';\nimport { createPlugin } from '../plugin-system';\nvar eventSourceDef = {\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};\nexport default createPlugin({\n    eventSourceDefs: [eventSourceDef]\n});\n","export default 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}\nfunction injectQueryStringParams(url, params) {\n    return url +\n        (url.indexOf('?') === -1 ? '?' : '&') +\n        encodeParams(params);\n}\nfunction 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","import requestJson from '../util/requestJson';\nimport { __assign } from 'tslib';\nimport { createPlugin } from '../plugin-system';\nvar eventSourceDef = {\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};\nexport default createPlugin({\n    eventSourceDefs: [eventSourceDef]\n});\nfunction 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","import { startOfDay, addDays } from '../datelib/marker';\nimport { createDuration, subtractDurations } from '../datelib/duration';\nimport { arrayToHash } from '../util/object';\nimport { refineProps } from '../util/misc';\nimport { intersectRanges } from '../datelib/date-range';\nimport { createPlugin } from '../plugin-system';\nvar 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};\nexport default createPlugin({\n    recurringTypes: [recurring]\n});\nfunction 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","import { createPlugin } from './plugin-system';\nimport { hashValuesToArray } from './util/object';\nexport default createPlugin({\n    optionChangeHandlers: {\n        events: function (events, calendar, deepEqual) {\n            handleEventSources([events], calendar, deepEqual);\n        },\n        eventSources: handleEventSources,\n        plugins: handlePlugins\n    }\n});\nfunction 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\nfunction handlePlugins(inputs, calendar) {\n    calendar.addPluginInputs(inputs); // will gracefully handle duplicates\n}\n","import { mergeProps } from './util/object';\nimport ArrayEventSourcePlugin from './event-sources/array-event-source';\nimport FuncEventSourcePlugin from './event-sources/func-event-source';\nimport JsonFeedEventSourcePlugin from './event-sources/json-feed-event-source';\nimport SimpleRecurrencePlugin from './structs/recurring-event-simple';\nimport { capitaliseFirstLetter } from './util/misc';\nimport DefaultOptionChangeHandlers from './option-change-handlers';\nexport var config = {}; // TODO: make these options\nexport 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};\nexport 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};\nvar complexOptions = [\n    'header',\n    'footer',\n    'buttonText',\n    'buttonIcons'\n];\n// Merges an array of option objects into a single object\nexport function mergeOptions(optionObjs) {\n    return mergeProps(optionObjs, complexOptions);\n}\n// TODO: move this stuff to a \"plugin\"-related file...\nvar INTERNAL_PLUGINS = [\n    ArrayEventSourcePlugin,\n    FuncEventSourcePlugin,\n    JsonFeedEventSourcePlugin,\n    SimpleRecurrencePlugin,\n    DefaultOptionChangeHandlers\n];\nexport 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","import { mergeProps, hashValuesToArray } from '../util/object';\nvar 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};\nexport 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}\nexport 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}\nfunction 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}\nfunction 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}\nfunction 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","import * as tslib_1 from \"tslib\";\nimport { firstDefined } from './util/misc';\nimport { globalDefaults, rtlDefaults, mergeOptions } from './options';\nimport { parseRawLocales, buildLocale } from './datelib/locale';\nimport { __assign } from 'tslib';\nvar OptionsManager = /** @class */ (function () {\n    function OptionsManager(overrides) {\n        this.overrides = tslib_1.__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}());\nexport default OptionsManager;\n","import { arrayToUtcDate, dateToUtcArray } from './marker';\nvar calendarSystemClassMap = {};\nexport function registerCalendarSystem(name, theClass) {\n    calendarSystemClassMap[name] = theClass;\n}\nexport function createCalendarSystem(name) {\n    return new calendarSystemClassMap[name]();\n}\nvar 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}());\nregisterCalendarSystem('gregory', GregorianCalendarSystem);\n","import { isValidDate } from './marker';\nvar ISO_RE = /^\\s*(\\d{4})(-(\\d{2})(-(\\d{2})([T ](\\d{2}):(\\d{2})(:(\\d{2})(\\.(\\d+))?)?(Z|(([-+])(\\d{2})(:?(\\d{2}))?))?)?)?)?$/;\nexport 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","import { addMs, diffHours, diffMinutes, diffSeconds, diffWholeWeeks, diffWholeDays, startOfDay, startOfHour, startOfMinute, startOfSecond, weekOfYear, arrayToUtcDate, dateToUtcArray, dateToLocalArray, arrayToLocalDate, timeAsMs, isValidDate } from './marker';\nimport { createCalendarSystem } from './calendar-system';\nimport { asRoughYears, asRoughMonths, asRoughDays, asRoughMs } from './duration';\nimport { buildIsoString } from './formatting';\nimport { parse } from './parsing';\nimport { isInt } from '../util/misc';\nvar 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}());\nexport { DateEnv };\n","import { refineProps } from '../util/misc';\nimport { processUnscopedUiProps } from '../component/event-ui';\nvar SIMPLE_SOURCE_PROPS = {\n    id: String,\n    allDayDefault: Boolean,\n    eventDataTransform: Function,\n    success: Function,\n    failure: Function\n};\nvar uid = 0;\nexport function doesSourceNeedRange(eventSource, calendar) {\n    var defs = calendar.pluginSystem.hooks.eventSourceDefs;\n    return !defs[eventSource.sourceDefId].ignoreRange;\n}\nexport 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}\nfunction 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++);\n    props.sourceDefId = sourceDefId;\n    props.meta = meta;\n    props.ui = ui;\n    props.extendedProps = leftovers1;\n    return props;\n}\n","import * as tslib_1 from \"tslib\";\nimport { doesSourceNeedRange } from '../structs/event-source';\nimport { arrayToHash, filterHash } from '../util/object';\nexport default function (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}\nvar uid = 0;\nfunction 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 tslib_1.__assign({}, eventSourceHash, hash);\n}\nfunction removeSource(eventSourceHash, sourceId) {\n    return filterHash(eventSourceHash, function (eventSource) {\n        return eventSource.sourceId !== sourceId;\n    });\n}\nfunction fetchDirtySources(sourceHash, fetchRange, calendar) {\n    return fetchSourcesByIds(sourceHash, filterHash(sourceHash, function (eventSource) {\n        return isSourceDirty(eventSource, fetchRange, calendar);\n    }), fetchRange, calendar);\n}\nfunction 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}\nfunction 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}\nfunction fetchSource(eventSource, fetchRange, calendar) {\n    var sourceDef = calendar.pluginSystem.hooks.eventSourceDefs[eventSource.sourceDefId];\n    var fetchId = String(uid++);\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 tslib_1.__assign({}, eventSource, { isFetching: true, latestFetchId: fetchId });\n}\nfunction 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 tslib_1.__assign({}, sourceHash, (_a = {}, _a[sourceId] = tslib_1.__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}\nfunction excludeStaticSources(eventSources, calendar) {\n    return filterHash(eventSources, function (eventSource) {\n        return doesSourceNeedRange(eventSource, calendar);\n    });\n}\n","import { startOfDay, addDays } from './datelib/marker';\nimport { createDuration, getWeeksFromInput, asRoughDays, asRoughMs, greatestDurationDenominator, durationsEqual } from './datelib/duration';\nimport { constrainMarkerToRange, intersectRanges, rangesIntersect, parseRange, rangesEqual } from './datelib/date-range';\nimport { computeVisibleDayRange } from './util/misc';\nvar 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}());\nexport default DateProfileGenerator;\n// TODO: find a way to avoid comparing DateProfiles. it's tedious\nexport 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","import * as tslib_1 from \"tslib\";\nimport reduceEventSources from './eventSources';\nimport reduceEventStore from './eventStore';\nimport { isDateProfilesEqual } from '../DateProfileGenerator';\nimport { rangeContainsMarker } from '../datelib/date-range';\nexport default function (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 = tslib_1.__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}\nfunction reduceViewType(currentViewType, action) {\n    switch (action.type) {\n        case 'SET_VIEW_TYPE':\n            return action.viewType;\n        default:\n            return currentViewType;\n    }\n}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction 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}\nfunction 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","import { rangesEqual } from '../datelib/date-range';\nimport { refineProps } from '../util/misc';\nimport { parseEventDef, createEventInstance } from './event';\nimport { compileEventUi } from '../component/event-rendering';\nvar STANDARD_PROPS = {\n    start: null,\n    end: null,\n    allDay: Boolean\n};\nexport 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/*\nTODO: somehow combine with parseRange?\nWill return null if the start/end props were present but parsed invalidly.\n*/\nexport 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}\nexport 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\nfunction 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}\nexport 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}\nexport 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}\nexport 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","import * as tslib_1 from \"tslib\";\nexport 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}\nfunction 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}\nfunction 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: tslib_1.__assign({}, (superDef ? superDef.defaults : {}), (defaultConfig ? defaultConfig.options : {})),\n        overrides: tslib_1.__assign({}, (superDef ? superDef.overrides : {}), (overrideConfig ? overrideConfig.options : {}))\n    };\n}\nfunction 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","import { refineProps } from '../util/misc';\nimport { mapHash } from '../util/object';\nexport function parseViewConfigs(inputs) {\n    return mapHash(inputs, parseViewConfig);\n}\nvar VIEW_DEF_PROPS = {\n    type: String,\n    class: null\n};\nfunction 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","import * as tslib_1 from \"tslib\";\nimport { compileViewDefs } from './view-def';\nimport { createDuration, greatestDurationDenominator, getWeeksFromInput } from '../datelib/duration';\nimport { mapHash } from '../util/object';\nimport { globalDefaults } from '../options';\nimport { parseViewConfigs } from './view-config';\nexport 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}\nfunction 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: tslib_1.__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","import * as tslib_1 from \"tslib\";\nimport { htmlEscape } from './util/html';\nimport { htmlToElement, appendToElement, findElements, createElement, removeElement } from './util/dom-manip';\nimport Component from './component/Component';\nimport { memoizeRendering } from './component/memoized-rendering';\nvar Toolbar = /** @class */ (function (_super) {\n    tslib_1.__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('<h2>&nbsp;</h2>')); // 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 = \"<span class='\" + buttonIcon + \"'></span>\";\n                                buttonAriaAttr = ' aria-label=\"' + buttonName + '\"';\n                            }\n                            buttonEl = htmlToElement(// type=\"button\" so that it doesn't submit a form\n                            '<button type=\"button\" class=\"' + buttonClasses.join(' ') + '\"' +\n                                buttonAriaAttr +\n                                '>' + buttonInnerHtml + '</button>');\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));\nexport default Toolbar;\n","import * as tslib_1 from \"tslib\";\nimport Component from './component/Component';\nimport Toolbar from './Toolbar';\nimport { prependToElement, createElement, removeElement, appendToElement, applyStyle } from './util/dom-manip';\nimport { rangeContainsMarker } from './datelib/date-range';\nimport { parseBusinessHours } from './structs/business-hours';\nimport { memoize } from './util/memoize';\nimport { computeHeightAndMargins } from './util/dom-geom';\nimport { createFormatter } from './datelib/formatting';\nimport { diffWholeDays } from './datelib/marker';\nimport { memoizeRendering } from './component/memoized-rendering';\nimport { __assign } from 'tslib';\nvar CalendarComponent = /** @class */ (function (_super) {\n    tslib_1.__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(tslib_1.__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(tslib_1.__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));\nexport default CalendarComponent;\n// Title and Date Formatting\n// -----------------------------------------------------------------------------------------------------------------\n// Computes what the title at the top of the calendar should be for this view\nfunction 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`.\nfunction 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\nfunction buildComponentContext(context, viewSpec, view) {\n    return context.extend(viewSpec.options, view);\n}\n// Plugin\n// -----------------------------------------------------------------------------------------------------------------\nfunction buildViewPropTransformers(theClasses) {\n    return theClasses.map(function (theClass) {\n        return new theClass();\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}());\nexport { Interaction };\nexport function parseInteractionSettings(component, input) {\n    return {\n        component: component,\n        el: input.el,\n        useEventCenter: input.useEventCenter != null ? input.useEventCenter : true\n    };\n}\nexport function interactionSettingsToStore(settings) {\n    var _a;\n    return _a = {},\n        _a[settings.component.uid] = settings,\n        _a;\n}\n// global state\nexport var interactionSettingsStore = {};\n","import * as tslib_1 from \"tslib\";\nimport { listenBySelector } from '../util/dom-event';\nimport EventApi from '../api/EventApi';\nimport { elementClosest } from '../util/dom-manip';\nimport { getElSeg } from '../component/event-rendering';\nimport { Interaction } from './interaction';\n/*\nDetects when the user clicks on an event within a DateComponent\n*/\nvar EventClicking = /** @class */ (function (_super) {\n    tslib_1.__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 <div> surrounding the more link\n                component.isValidSegDownEl(ev.target)) {\n                // our way to simulate a link click for elements that can't be <a> 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));\nexport default EventClicking;\n","import * as tslib_1 from \"tslib\";\nimport { listenToHoverBySelector } from '../util/dom-event';\nimport EventApi from '../api/EventApi';\nimport { getElSeg } from '../component/event-rendering';\nimport { Interaction } from './interaction';\n/*\nTriggers events and adds/removes core classNames when the user's pointer\nenters/leaves event-elements of a component.\n*/\nvar EventHovering = /** @class */ (function (_super) {\n    tslib_1.__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));\nexport default EventHovering;\n","import * as tslib_1 from \"tslib\";\nimport Theme from './Theme';\nvar StandardTheme = /** @class */ (function (_super) {\n    tslib_1.__extends(StandardTheme, _super);\n    function StandardTheme() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return StandardTheme;\n}(Theme));\nexport default StandardTheme;\nStandardTheme.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};\nStandardTheme.prototype.baseIconClass = 'fc-icon';\nStandardTheme.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};\nStandardTheme.prototype.iconOverrideOption = 'buttonIcons';\nStandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';\nStandardTheme.prototype.iconOverridePrefix = 'fc-icon-';\n","import * as tslib_1 from \"tslib\";\nimport { listenBySelector } from './util/dom-event';\nimport { capitaliseFirstLetter, debounce } from './util/misc';\nimport { default as EmitterMixin } from './common/EmitterMixin';\nimport OptionsManager from './OptionsManager';\nimport { buildLocale, parseRawLocales } from './datelib/locale';\nimport { DateEnv } from './datelib/env';\nimport { startOfDay } from './datelib/marker';\nimport { createFormatter } from './datelib/formatting';\nimport { createDuration } from './datelib/duration';\nimport reduce from './reducers/main';\nimport { parseDateSpan, buildDateSpanApi, buildDatePointApi } from './structs/date-span';\nimport { memoize, memoizeOutput } from './util/memoize';\nimport { mapHash, isPropsEqual } from './util/object';\nimport { parseEventSource } from './structs/event-source';\nimport { parseEvent } from './structs/event';\nimport EventSourceApi from './api/EventSourceApi';\nimport EventApi from './api/EventApi';\nimport { createEmptyEventStore, eventTupleToStore } from './structs/event-store';\nimport { processScopedUiProps } from './component/event-ui';\nimport { buildViewSpecs } from './structs/view-spec';\nimport { PluginSystem } from './plugin-system';\nimport CalendarComponent from './CalendarComponent';\nimport { __assign } from 'tslib';\nimport { refinePluginDefs } from './options';\nimport { parseInteractionSettings, interactionSettingsStore } from './interactions/interaction';\nimport EventClicking from './interactions/EventClicking';\nimport EventHovering from './interactions/EventHovering';\nimport StandardTheme from './theme/StandardTheme';\nimport { ComponentContext } from './component/Component';\nvar Calendar = /** @class */ (function () {\n    function Calendar(el, overrides) {\n        var _this = this;\n        this.buildComponentContext = memoize(buildComponentContext);\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(tslib_1.__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                // can't change date this way. use gotoDate instead\n            }\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 = tslib_1.__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 = tslib_1.__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 = tslib_1.__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}());\nexport default Calendar;\nEmitterMixin.mixInto(Calendar);\n// for memoizers\n// -----------------------------------------------------------------------------------------------------------------\nfunction buildComponentContext(theme, dateEnv, options) {\n    return new ComponentContext(this, theme, dateEnv, options, null);\n}\nfunction 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}\nfunction buildTheme(calendarOptions) {\n    var themeClass = this.pluginSystem.hooks.themeClasses[calendarOptions.themeSystem] || StandardTheme;\n    return new themeClass(calendarOptions);\n}\nfunction buildDelayedRerender(wait) {\n    var func = this.tryRerender.bind(this);\n    if (wait != null) {\n        func = debounce(func, wait);\n    }\n    return func;\n}\nfunction buildEventUiBySource(eventSources) {\n    return mapHash(eventSources, function (eventSource) {\n        return eventSource.ui;\n    });\n}\nfunction 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","import * as tslib_1 from \"tslib\";\nimport DateProfileGenerator from './DateProfileGenerator';\nimport { addMs } from './datelib/marker';\nimport { createDuration } from './datelib/duration';\nimport { default as EmitterMixin } from './common/EmitterMixin';\nimport { createElement } from './util/dom-manip';\nimport DateComponent from './component/DateComponent';\nimport { sliceEventStore } from './component/event-rendering';\nimport { memoizeRendering } from './component/memoized-rendering';\nimport { __assign } from 'tslib';\nvar View = /** @class */ (function (_super) {\n    tslib_1.__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));\nexport default View;\nEmitterMixin.mixInto(View);\nView.prototype.usesMinMaxTime = false;\nView.prototype.dateProfileGeneratorClass = DateProfileGenerator;\n","import * as tslib_1 from \"tslib\";\nimport { createFormatter } from '../../datelib/formatting';\nimport { htmlToElements } from '../../util/dom-manip';\nimport { compareByFieldSpecs } from '../../util/misc';\nimport { filterSegsViaEls, triggerRenderedSegs, triggerWillRemoveSegs } from '../event-rendering';\nvar 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}());\nexport default FgEventRenderer;\n// returns a object with all primitive props that can be compared\nexport 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 tslib_1.__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","import { cssToStr } from '../../util/html';\nimport { htmlToElements, removeElement, elementMatches } from '../../util/dom-manip';\nimport { filterSegsViaEls, triggerRenderedSegs, triggerWillRemoveSegs } from '../event-rendering';\n/*\nTODO: when refactoring this class, make a new FillRenderer instance for each `type`\n*/\nvar 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            '></' + this.fillSegTag + '>';\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}());\nexport default FillRenderer;\n","var NamedTimeZoneImpl = /** @class */ (function () {\n    function NamedTimeZoneImpl(timeZoneName) {\n        this.timeZoneName = timeZoneName;\n    }\n    return NamedTimeZoneImpl;\n}());\nexport { NamedTimeZoneImpl };\n","import EmitterMixin from '../common/EmitterMixin';\n/*\nAn abstraction for a dragging interaction originating on an event.\nDoes 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\nsubclasses must emit:\n- pointerdown\n- dragstart\n- dragmove\n- pointerup\n- dragend\n*/\nvar 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}());\nexport default ElementDragging;\n","import * as tslib_1 from \"tslib\";\nimport { DateEnv } from './datelib/env';\nimport { createFormatter } from './datelib/formatting';\nimport { parseRawLocales, buildLocale } from './datelib/locale';\nimport { globalDefaults } from './options';\nexport function formatDate(dateInput, settings) {\n    if (settings === void 0) { settings = {}; }\n    var dateEnv = buildDateEnv(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}\nexport function formatRange(startInput, endInput, settings // mixture of env and formatter settings\n) {\n    var dateEnv = buildDateEnv(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\nfunction buildDateEnv(settings) {\n    var locale = buildLocale(settings.locale || 'en', parseRawLocales([]).map); // TODO: don't hardcode 'en' everywhere\n    // ensure required settings\n    settings = tslib_1.__assign({ timeZone: globalDefaults.timeZone, calendarSystem: 'gregory' }, settings, { locale: locale });\n    return new DateEnv(settings);\n}\n","import { createDuration } from '../datelib/duration';\nimport { refineProps } from '../util/misc';\nvar DRAG_META_PROPS = {\n    startTime: createDuration,\n    duration: createDuration,\n    create: Boolean,\n    sourceId: String\n};\nvar DRAG_META_DEFAULTS = {\n    create: true\n};\nexport 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","import { rangeContainsMarker } from '../datelib/date-range';\nimport { htmlEscape } from '../util/html';\nimport { buildGotoAnchorHtml, getDayClasses } from '../component/date-rendering';\nimport { DAY_IDS } from '../datelib/marker';\n// Computes a default column header formatting string if `colFormat` is not explicitly defined\nexport 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}\nexport 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        '<th class=\"' + classNames.join(' ') + '\"' +\n        ((isDateValid && datesRepDistinctDays) ?\n            ' data-date=\"' + dateEnv.formatIso(dateMarker, { omitTime: true }) + '\"' :\n            '') +\n        (colspan > 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        '</th>';\n}\n","import * as tslib_1 from \"tslib\";\nimport Component from '../component/Component';\nimport { htmlToElement, removeElement } from '../util/dom-manip';\nimport { createFormatter } from '../datelib/formatting';\nimport { computeFallbackHeaderFormat, renderDateCell } from './table-utils';\nimport { memoizeRendering } from '../component/memoized-rendering';\nvar DayHeader = /** @class */ (function (_super) {\n    tslib_1.__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 = '<tr>' + parts.join('') + '</tr>';\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('<div class=\"fc-row ' + theme.getClass('headerRow') + '\">' +\n            '<table class=\"' + theme.getClass('tableGrid') + '\">' +\n            '<thead></thead>' +\n            '</table>' +\n            '</div>'));\n        this.thead = this.el.querySelector('thead');\n    };\n    DayHeader.prototype._unrenderSkeleton = function () {\n        removeElement(this.el);\n    };\n    return DayHeader;\n}(Component));\nexport default DayHeader;\n","import { addDays, diffDays } from '../datelib/marker';\nvar 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}());\nexport default DaySeries;\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}());\nexport default DayTable;\n","import { expandRecurring } from '../structs/event-store';\nimport { sliceEventStore } from '../component/event-rendering';\nimport { fabricateEventRange } from '../structs/date-span';\nimport { memoize } from '../util/memoize';\nimport { addMs } from '../datelib/marker';\nvar 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}());\nexport default Slicer;\n/*\nfor incorporating minTime/maxTime if appropriate\nTODO: should be part of DateProfile!\nTimelineDateProfile already does this btw\n*/\nfunction 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","// exports\n// --------------------------------------------------------------------------------------------------\nexport var version = '<%= version %>';\nexport { parseEventDef, createEventInstance } from './structs/event';\nexport { parseBusinessHours } from './structs/business-hours';\nexport { applyAll, debounce, padStart, isInt, capitaliseFirstLetter, parseFieldSpecs, compareByFieldSpecs, compareByFieldSpec, flexibleCompare, computeVisibleDayRange, refineProps, matchCellWidths, uncompensateScroll, compensateScroll, subtractInnerElHeight, isMultiDayRange, distributeHeight, undistributeHeight, preventSelection, allowSelection, preventContextMenu, allowContextMenu, compareNumbers, enableCursor, disableCursor, diffDates } from './util/misc';\nexport { htmlEscape, cssToStr } from './util/html';\nexport { removeExact, isArraysEqual } from './util/array';\nexport { memoize, memoizeOutput } from './util/memoize';\nexport { memoizeRendering } from './component/memoized-rendering';\nexport { intersectRects, pointInsideRect, constrainPoint, getRectCenter, diffPoints, translateRect } from './util/geom';\nexport { mapHash, filterHash, isPropsEqual } from './util/object';\nexport { findElements, findChildren, htmlToElement, createElement, insertAfterElement, prependToElement, removeElement, appendToElement, applyStyle, applyStyleProp, elementMatches, elementClosest, forceClassName } from './util/dom-manip';\nexport { filterEventStoreDefs, createEmptyEventStore, mergeEventStores, getRelevantEvents, eventTupleToStore } from './structs/event-store';\nexport { processScopedUiProps, combineEventUis } from './component/event-ui';\nexport { default as Splitter } from './component/event-splitting';\nexport { buildGotoAnchorHtml, getAllDayHtml, getDayClasses } from './component/date-rendering';\nexport { preventDefault, listenBySelector, whenTransitionDone } from './util/dom-event';\nexport { computeInnerRect, computeEdges, computeHeightAndMargins, getClippingParents, computeClippingRect, computeRect } from './util/dom-geom';\nexport { unpromisify } from './util/promise';\nexport { default as EmitterMixin } from './common/EmitterMixin';\nexport { rangeContainsMarker, intersectRanges, rangesEqual, rangesIntersect, rangeContainsRange } from './datelib/date-range';\nexport { default as Mixin } from './common/Mixin';\nexport { default as PositionCache } from './common/PositionCache';\nexport { default as ScrollComponent } from './common/ScrollComponent';\nexport { ScrollController, ElementScrollController, WindowScrollController } from './common/scroll-controller';\nexport { default as Theme } from './theme/Theme';\nexport { default as Component, ComponentContext } from './component/Component';\nexport { default as DateComponent } from './component/DateComponent';\nexport { default as Calendar } from './Calendar';\nexport { default as View } from './View';\nexport { default as FgEventRenderer, buildSegCompareObj } from './component/renderers/FgEventRenderer';\nexport { default as FillRenderer } from './component/renderers/FillRenderer';\nexport { default as DateProfileGenerator } from './DateProfileGenerator';\nexport { isDateSpansEqual } from './structs/date-span';\nexport { addDays, startOfDay, addMs, addWeeks, diffWeeks, diffWholeWeeks, diffWholeDays, diffDayAndTime, diffDays, isValidDate } from './datelib/marker';\nexport { createDuration, isSingleDay, multiplyDuration, addDurations, asRoughMinutes, asRoughSeconds, asRoughMs, wholeDivideDurations, greatestDurationDenominator } from './datelib/duration';\nexport { DateEnv } from './datelib/env';\nexport { createFormatter, formatIsoTimeString } from './datelib/formatting';\nexport { NamedTimeZoneImpl } from './datelib/timezone';\nexport { parse as parseMarker } from './datelib/parsing';\nexport { Interaction, interactionSettingsToStore, interactionSettingsStore } from './interactions/interaction';\nexport { default as ElementDragging } from './interactions/ElementDragging';\nexport { formatDate, formatRange } from './formatting-api';\nexport { globalDefaults, config } from './options';\nexport { parseDragMeta } from './structs/drag-meta';\nexport { createPlugin } from './plugin-system';\nexport { default as DayHeader } from './common/DayHeader';\nexport { computeFallbackHeaderFormat, renderDateCell } from './common/table-utils';\nexport { default as DaySeries } from './common/DaySeries';\nexport { sliceEventStore, hasBgRendering, getElSeg, computeEventDraggable, computeEventStartResizable, computeEventEndResizable } from './component/event-rendering';\nexport { default as DayTable } from './common/DayTable';\nexport { default as Slicer } from './common/slicing-utils';\nexport { applyMutationToEventStore } from './structs/event-mutation';\nexport { isPropsValid, isInteractionValid } from './validation';\nexport { default as EventApi } from './api/EventApi';\nexport { default as requestJson } from './util/requestJson';\n"],"names":["tslib_1.__assign","tslib_1.__extends","uid","eventSourceDef","buildComponentContext","buildDateEnv"],"mappings":"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"}

?>