Your IP : 3.147.42.34


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

{"version":3,"file":"main.js","sources":["../../../tmp/tsc-output/packages/interaction/src/dnd/PointerDragging.js","../../../tmp/tsc-output/packages/interaction/src/dnd/ElementMirror.js","../../../tmp/tsc-output/packages/interaction/src/scroll-geom-cache.js","../../../tmp/tsc-output/packages/interaction/src/dnd/AutoScroller.js","../../../tmp/tsc-output/packages/interaction/src/dnd/FeaturefulElementDragging.js","../../../tmp/tsc-output/packages/interaction/src/OffsetTracker.js","../../../tmp/tsc-output/packages/interaction/src/interactions/HitDragging.js","../../../tmp/tsc-output/packages/interaction/src/interactions/DateClicking.js","../../../tmp/tsc-output/packages/interaction/src/interactions/DateSelecting.js","../../../tmp/tsc-output/packages/interaction/src/interactions/EventDragging.js","../../../tmp/tsc-output/packages/interaction/src/interactions/EventResizing.js","../../../tmp/tsc-output/packages/interaction/src/interactions/UnselectAuto.js","../../../tmp/tsc-output/packages/interaction/src/interactions-external/ExternalElementDragging.js","../../../tmp/tsc-output/packages/interaction/src/interactions-external/ExternalDraggable.js","../../../tmp/tsc-output/packages/interaction/src/interactions-external/InferredElementDragging.js","../../../tmp/tsc-output/packages/interaction/src/interactions-external/ThirdPartyDraggable.js","../../../tmp/tsc-output/packages/interaction/src/main.js"],"sourcesContent":["import { config, elementClosest, EmitterMixin } from '@fullcalendar/core';\nconfig.touchMouseIgnoreWait = 500;\nvar ignoreMouseDepth = 0;\nvar listenerCnt = 0;\nvar isWindowTouchMoveCancelled = false;\n/*\nUses a \"pointer\" abstraction, which monitors UI events for both mouse and touch.\nTracks when the pointer \"drags\" on a certain element, meaning down+move+up.\n\nAlso, tracks if there was touch-scrolling.\nAlso, can prevent touch-scrolling from happening.\nAlso, can fire pointermove events when scrolling happens underneath, even when no real pointer movement.\n\nemits:\n- pointerdown\n- pointermove\n- pointerup\n*/\nvar PointerDragging = /** @class */ (function () {\n    function PointerDragging(containerEl) {\n        var _this = this;\n        this.subjectEl = null;\n        this.downEl = null;\n        // options that can be directly assigned by caller\n        this.selector = ''; // will cause subjectEl in all emitted events to be this element\n        this.handleSelector = '';\n        this.shouldIgnoreMove = false;\n        this.shouldWatchScroll = true; // for simulating pointermove on scroll\n        // internal states\n        this.isDragging = false;\n        this.isTouchDragging = false;\n        this.wasTouchScroll = false;\n        // Mouse\n        // ----------------------------------------------------------------------------------------------------\n        this.handleMouseDown = function (ev) {\n            if (!_this.shouldIgnoreMouse() &&\n                isPrimaryMouseButton(ev) &&\n                _this.tryStart(ev)) {\n                var pev = _this.createEventFromMouse(ev, true);\n                _this.emitter.trigger('pointerdown', pev);\n                _this.initScrollWatch(pev);\n                if (!_this.shouldIgnoreMove) {\n                    document.addEventListener('mousemove', _this.handleMouseMove);\n                }\n                document.addEventListener('mouseup', _this.handleMouseUp);\n            }\n        };\n        this.handleMouseMove = function (ev) {\n            var pev = _this.createEventFromMouse(ev);\n            _this.recordCoords(pev);\n            _this.emitter.trigger('pointermove', pev);\n        };\n        this.handleMouseUp = function (ev) {\n            document.removeEventListener('mousemove', _this.handleMouseMove);\n            document.removeEventListener('mouseup', _this.handleMouseUp);\n            _this.emitter.trigger('pointerup', _this.createEventFromMouse(ev));\n            _this.cleanup(); // call last so that pointerup has access to props\n        };\n        // Touch\n        // ----------------------------------------------------------------------------------------------------\n        this.handleTouchStart = function (ev) {\n            if (_this.tryStart(ev)) {\n                _this.isTouchDragging = true;\n                var pev = _this.createEventFromTouch(ev, true);\n                _this.emitter.trigger('pointerdown', pev);\n                _this.initScrollWatch(pev);\n                // unlike mouse, need to attach to target, not document\n                // https://stackoverflow.com/a/45760014\n                var target = ev.target;\n                if (!_this.shouldIgnoreMove) {\n                    target.addEventListener('touchmove', _this.handleTouchMove);\n                }\n                target.addEventListener('touchend', _this.handleTouchEnd);\n                target.addEventListener('touchcancel', _this.handleTouchEnd); // treat it as a touch end\n                // attach a handler to get called when ANY scroll action happens on the page.\n                // this was impossible to do with normal on/off because 'scroll' doesn't bubble.\n                // http://stackoverflow.com/a/32954565/96342\n                window.addEventListener('scroll', _this.handleTouchScroll, true // useCapture\n                );\n            }\n        };\n        this.handleTouchMove = function (ev) {\n            var pev = _this.createEventFromTouch(ev);\n            _this.recordCoords(pev);\n            _this.emitter.trigger('pointermove', pev);\n        };\n        this.handleTouchEnd = function (ev) {\n            if (_this.isDragging) { // done to guard against touchend followed by touchcancel\n                var target = ev.target;\n                target.removeEventListener('touchmove', _this.handleTouchMove);\n                target.removeEventListener('touchend', _this.handleTouchEnd);\n                target.removeEventListener('touchcancel', _this.handleTouchEnd);\n                window.removeEventListener('scroll', _this.handleTouchScroll, true); // useCaptured=true\n                _this.emitter.trigger('pointerup', _this.createEventFromTouch(ev));\n                _this.cleanup(); // call last so that pointerup has access to props\n                _this.isTouchDragging = false;\n                startIgnoringMouse();\n            }\n        };\n        this.handleTouchScroll = function () {\n            _this.wasTouchScroll = true;\n        };\n        this.handleScroll = function (ev) {\n            if (!_this.shouldIgnoreMove) {\n                var pageX = (window.pageXOffset - _this.prevScrollX) + _this.prevPageX;\n                var pageY = (window.pageYOffset - _this.prevScrollY) + _this.prevPageY;\n                _this.emitter.trigger('pointermove', {\n                    origEvent: ev,\n                    isTouch: _this.isTouchDragging,\n                    subjectEl: _this.subjectEl,\n                    pageX: pageX,\n                    pageY: pageY,\n                    deltaX: pageX - _this.origPageX,\n                    deltaY: pageY - _this.origPageY\n                });\n            }\n        };\n        this.containerEl = containerEl;\n        this.emitter = new EmitterMixin();\n        containerEl.addEventListener('mousedown', this.handleMouseDown);\n        containerEl.addEventListener('touchstart', this.handleTouchStart, { passive: true });\n        listenerCreated();\n    }\n    PointerDragging.prototype.destroy = function () {\n        this.containerEl.removeEventListener('mousedown', this.handleMouseDown);\n        this.containerEl.removeEventListener('touchstart', this.handleTouchStart, { passive: true });\n        listenerDestroyed();\n    };\n    PointerDragging.prototype.tryStart = function (ev) {\n        var subjectEl = this.querySubjectEl(ev);\n        var downEl = ev.target;\n        if (subjectEl &&\n            (!this.handleSelector || elementClosest(downEl, this.handleSelector))) {\n            this.subjectEl = subjectEl;\n            this.downEl = downEl;\n            this.isDragging = true; // do this first so cancelTouchScroll will work\n            this.wasTouchScroll = false;\n            return true;\n        }\n        return false;\n    };\n    PointerDragging.prototype.cleanup = function () {\n        isWindowTouchMoveCancelled = false;\n        this.isDragging = false;\n        this.subjectEl = null;\n        this.downEl = null;\n        // keep wasTouchScroll around for later access\n        this.destroyScrollWatch();\n    };\n    PointerDragging.prototype.querySubjectEl = function (ev) {\n        if (this.selector) {\n            return elementClosest(ev.target, this.selector);\n        }\n        else {\n            return this.containerEl;\n        }\n    };\n    PointerDragging.prototype.shouldIgnoreMouse = function () {\n        return ignoreMouseDepth || this.isTouchDragging;\n    };\n    // can be called by user of this class, to cancel touch-based scrolling for the current drag\n    PointerDragging.prototype.cancelTouchScroll = function () {\n        if (this.isDragging) {\n            isWindowTouchMoveCancelled = true;\n        }\n    };\n    // Scrolling that simulates pointermoves\n    // ----------------------------------------------------------------------------------------------------\n    PointerDragging.prototype.initScrollWatch = function (ev) {\n        if (this.shouldWatchScroll) {\n            this.recordCoords(ev);\n            window.addEventListener('scroll', this.handleScroll, true); // useCapture=true\n        }\n    };\n    PointerDragging.prototype.recordCoords = function (ev) {\n        if (this.shouldWatchScroll) {\n            this.prevPageX = ev.pageX;\n            this.prevPageY = ev.pageY;\n            this.prevScrollX = window.pageXOffset;\n            this.prevScrollY = window.pageYOffset;\n        }\n    };\n    PointerDragging.prototype.destroyScrollWatch = function () {\n        if (this.shouldWatchScroll) {\n            window.removeEventListener('scroll', this.handleScroll, true); // useCaptured=true\n        }\n    };\n    // Event Normalization\n    // ----------------------------------------------------------------------------------------------------\n    PointerDragging.prototype.createEventFromMouse = function (ev, isFirst) {\n        var deltaX = 0;\n        var deltaY = 0;\n        // TODO: repeat code\n        if (isFirst) {\n            this.origPageX = ev.pageX;\n            this.origPageY = ev.pageY;\n        }\n        else {\n            deltaX = ev.pageX - this.origPageX;\n            deltaY = ev.pageY - this.origPageY;\n        }\n        return {\n            origEvent: ev,\n            isTouch: false,\n            subjectEl: this.subjectEl,\n            pageX: ev.pageX,\n            pageY: ev.pageY,\n            deltaX: deltaX,\n            deltaY: deltaY\n        };\n    };\n    PointerDragging.prototype.createEventFromTouch = function (ev, isFirst) {\n        var touches = ev.touches;\n        var pageX;\n        var pageY;\n        var deltaX = 0;\n        var deltaY = 0;\n        // if touch coords available, prefer,\n        // because FF would give bad ev.pageX ev.pageY\n        if (touches && touches.length) {\n            pageX = touches[0].pageX;\n            pageY = touches[0].pageY;\n        }\n        else {\n            pageX = ev.pageX;\n            pageY = ev.pageY;\n        }\n        // TODO: repeat code\n        if (isFirst) {\n            this.origPageX = pageX;\n            this.origPageY = pageY;\n        }\n        else {\n            deltaX = pageX - this.origPageX;\n            deltaY = pageY - this.origPageY;\n        }\n        return {\n            origEvent: ev,\n            isTouch: true,\n            subjectEl: this.subjectEl,\n            pageX: pageX,\n            pageY: pageY,\n            deltaX: deltaX,\n            deltaY: deltaY\n        };\n    };\n    return PointerDragging;\n}());\nexport default PointerDragging;\n// Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac)\nfunction isPrimaryMouseButton(ev) {\n    return ev.button === 0 && !ev.ctrlKey;\n}\n// Ignoring fake mouse events generated by touch\n// ----------------------------------------------------------------------------------------------------\nfunction startIgnoringMouse() {\n    ignoreMouseDepth++;\n    setTimeout(function () {\n        ignoreMouseDepth--;\n    }, config.touchMouseIgnoreWait);\n}\n// We want to attach touchmove as early as possible for Safari\n// ----------------------------------------------------------------------------------------------------\nfunction listenerCreated() {\n    if (!(listenerCnt++)) {\n        window.addEventListener('touchmove', onWindowTouchMove, { passive: false });\n    }\n}\nfunction listenerDestroyed() {\n    if (!(--listenerCnt)) {\n        window.removeEventListener('touchmove', onWindowTouchMove, { passive: false });\n    }\n}\nfunction onWindowTouchMove(ev) {\n    if (isWindowTouchMoveCancelled) {\n        ev.preventDefault();\n    }\n}\n","import { removeElement, applyStyle, whenTransitionDone } from '@fullcalendar/core';\n/*\nAn effect in which an element follows the movement of a pointer across the screen.\nThe moving element is a clone of some other element.\nMust call start + handleMove + stop.\n*/\nvar ElementMirror = /** @class */ (function () {\n    function ElementMirror() {\n        this.isVisible = false; // must be explicitly enabled\n        this.sourceEl = null;\n        this.mirrorEl = null;\n        this.sourceElRect = null; // screen coords relative to viewport\n        // options that can be set directly by caller\n        this.parentNode = document.body;\n        this.zIndex = 9999;\n        this.revertDuration = 0;\n    }\n    ElementMirror.prototype.start = function (sourceEl, pageX, pageY) {\n        this.sourceEl = sourceEl;\n        this.sourceElRect = this.sourceEl.getBoundingClientRect();\n        this.origScreenX = pageX - window.pageXOffset;\n        this.origScreenY = pageY - window.pageYOffset;\n        this.deltaX = 0;\n        this.deltaY = 0;\n        this.updateElPosition();\n    };\n    ElementMirror.prototype.handleMove = function (pageX, pageY) {\n        this.deltaX = (pageX - window.pageXOffset) - this.origScreenX;\n        this.deltaY = (pageY - window.pageYOffset) - this.origScreenY;\n        this.updateElPosition();\n    };\n    // can be called before start\n    ElementMirror.prototype.setIsVisible = function (bool) {\n        if (bool) {\n            if (!this.isVisible) {\n                if (this.mirrorEl) {\n                    this.mirrorEl.style.display = '';\n                }\n                this.isVisible = bool; // needs to happen before updateElPosition\n                this.updateElPosition(); // because was not updating the position while invisible\n            }\n        }\n        else {\n            if (this.isVisible) {\n                if (this.mirrorEl) {\n                    this.mirrorEl.style.display = 'none';\n                }\n                this.isVisible = bool;\n            }\n        }\n    };\n    // always async\n    ElementMirror.prototype.stop = function (needsRevertAnimation, callback) {\n        var _this = this;\n        var done = function () {\n            _this.cleanup();\n            callback();\n        };\n        if (needsRevertAnimation &&\n            this.mirrorEl &&\n            this.isVisible &&\n            this.revertDuration && // if 0, transition won't work\n            (this.deltaX || this.deltaY) // if same coords, transition won't work\n        ) {\n            this.doRevertAnimation(done, this.revertDuration);\n        }\n        else {\n            setTimeout(done, 0);\n        }\n    };\n    ElementMirror.prototype.doRevertAnimation = function (callback, revertDuration) {\n        var mirrorEl = this.mirrorEl;\n        var finalSourceElRect = this.sourceEl.getBoundingClientRect(); // because autoscrolling might have happened\n        mirrorEl.style.transition =\n            'top ' + revertDuration + 'ms,' +\n                'left ' + revertDuration + 'ms';\n        applyStyle(mirrorEl, {\n            left: finalSourceElRect.left,\n            top: finalSourceElRect.top\n        });\n        whenTransitionDone(mirrorEl, function () {\n            mirrorEl.style.transition = '';\n            callback();\n        });\n    };\n    ElementMirror.prototype.cleanup = function () {\n        if (this.mirrorEl) {\n            removeElement(this.mirrorEl);\n            this.mirrorEl = null;\n        }\n        this.sourceEl = null;\n    };\n    ElementMirror.prototype.updateElPosition = function () {\n        if (this.sourceEl && this.isVisible) {\n            applyStyle(this.getMirrorEl(), {\n                left: this.sourceElRect.left + this.deltaX,\n                top: this.sourceElRect.top + this.deltaY\n            });\n        }\n    };\n    ElementMirror.prototype.getMirrorEl = function () {\n        var sourceElRect = this.sourceElRect;\n        var mirrorEl = this.mirrorEl;\n        if (!mirrorEl) {\n            mirrorEl = this.mirrorEl = this.sourceEl.cloneNode(true); // cloneChildren=true\n            // we don't want long taps or any mouse interaction causing selection/menus.\n            // would use preventSelection(), but that prevents selectstart, causing problems.\n            mirrorEl.classList.add('fc-unselectable');\n            mirrorEl.classList.add('fc-dragging');\n            applyStyle(mirrorEl, {\n                position: 'fixed',\n                zIndex: this.zIndex,\n                visibility: '',\n                boxSizing: 'border-box',\n                width: sourceElRect.right - sourceElRect.left,\n                height: sourceElRect.bottom - sourceElRect.top,\n                right: 'auto',\n                bottom: 'auto',\n                margin: 0\n            });\n            this.parentNode.appendChild(mirrorEl);\n        }\n        return mirrorEl;\n    };\n    return ElementMirror;\n}());\nexport default ElementMirror;\n","import * as tslib_1 from \"tslib\";\nimport { computeInnerRect, ScrollController, ElementScrollController, WindowScrollController } from '@fullcalendar/core';\n/*\nIs a cache for a given element's scroll information (all the info that ScrollController stores)\nin addition the \"client rectangle\" of the element.. the area within the scrollbars.\n\nThe cache can be in one of two modes:\n- doesListening:false - ignores when the container is scrolled by someone else\n- doesListening:true - watch for scrolling and update the cache\n*/\nvar ScrollGeomCache = /** @class */ (function (_super) {\n    tslib_1.__extends(ScrollGeomCache, _super);\n    function ScrollGeomCache(scrollController, doesListening) {\n        var _this = _super.call(this) || this;\n        _this.handleScroll = function () {\n            _this.scrollTop = _this.scrollController.getScrollTop();\n            _this.scrollLeft = _this.scrollController.getScrollLeft();\n            _this.handleScrollChange();\n        };\n        _this.scrollController = scrollController;\n        _this.doesListening = doesListening;\n        _this.scrollTop = _this.origScrollTop = scrollController.getScrollTop();\n        _this.scrollLeft = _this.origScrollLeft = scrollController.getScrollLeft();\n        _this.scrollWidth = scrollController.getScrollWidth();\n        _this.scrollHeight = scrollController.getScrollHeight();\n        _this.clientWidth = scrollController.getClientWidth();\n        _this.clientHeight = scrollController.getClientHeight();\n        _this.clientRect = _this.computeClientRect(); // do last in case it needs cached values\n        if (_this.doesListening) {\n            _this.getEventTarget().addEventListener('scroll', _this.handleScroll);\n        }\n        return _this;\n    }\n    ScrollGeomCache.prototype.destroy = function () {\n        if (this.doesListening) {\n            this.getEventTarget().removeEventListener('scroll', this.handleScroll);\n        }\n    };\n    ScrollGeomCache.prototype.getScrollTop = function () {\n        return this.scrollTop;\n    };\n    ScrollGeomCache.prototype.getScrollLeft = function () {\n        return this.scrollLeft;\n    };\n    ScrollGeomCache.prototype.setScrollTop = function (top) {\n        this.scrollController.setScrollTop(top);\n        if (!this.doesListening) {\n            // we are not relying on the element to normalize out-of-bounds scroll values\n            // so we need to sanitize ourselves\n            this.scrollTop = Math.max(Math.min(top, this.getMaxScrollTop()), 0);\n            this.handleScrollChange();\n        }\n    };\n    ScrollGeomCache.prototype.setScrollLeft = function (top) {\n        this.scrollController.setScrollLeft(top);\n        if (!this.doesListening) {\n            // we are not relying on the element to normalize out-of-bounds scroll values\n            // so we need to sanitize ourselves\n            this.scrollLeft = Math.max(Math.min(top, this.getMaxScrollLeft()), 0);\n            this.handleScrollChange();\n        }\n    };\n    ScrollGeomCache.prototype.getClientWidth = function () {\n        return this.clientWidth;\n    };\n    ScrollGeomCache.prototype.getClientHeight = function () {\n        return this.clientHeight;\n    };\n    ScrollGeomCache.prototype.getScrollWidth = function () {\n        return this.scrollWidth;\n    };\n    ScrollGeomCache.prototype.getScrollHeight = function () {\n        return this.scrollHeight;\n    };\n    ScrollGeomCache.prototype.handleScrollChange = function () {\n    };\n    return ScrollGeomCache;\n}(ScrollController));\nexport { ScrollGeomCache };\nvar ElementScrollGeomCache = /** @class */ (function (_super) {\n    tslib_1.__extends(ElementScrollGeomCache, _super);\n    function ElementScrollGeomCache(el, doesListening) {\n        return _super.call(this, new ElementScrollController(el), doesListening) || this;\n    }\n    ElementScrollGeomCache.prototype.getEventTarget = function () {\n        return this.scrollController.el;\n    };\n    ElementScrollGeomCache.prototype.computeClientRect = function () {\n        return computeInnerRect(this.scrollController.el);\n    };\n    return ElementScrollGeomCache;\n}(ScrollGeomCache));\nexport { ElementScrollGeomCache };\nvar WindowScrollGeomCache = /** @class */ (function (_super) {\n    tslib_1.__extends(WindowScrollGeomCache, _super);\n    function WindowScrollGeomCache(doesListening) {\n        return _super.call(this, new WindowScrollController(), doesListening) || this;\n    }\n    WindowScrollGeomCache.prototype.getEventTarget = function () {\n        return window;\n    };\n    WindowScrollGeomCache.prototype.computeClientRect = function () {\n        return {\n            left: this.scrollLeft,\n            right: this.scrollLeft + this.clientWidth,\n            top: this.scrollTop,\n            bottom: this.scrollTop + this.clientHeight\n        };\n    };\n    // the window is the only scroll object that changes it's rectangle relative\n    // to the document's topleft as it scrolls\n    WindowScrollGeomCache.prototype.handleScrollChange = function () {\n        this.clientRect = this.computeClientRect();\n    };\n    return WindowScrollGeomCache;\n}(ScrollGeomCache));\nexport { WindowScrollGeomCache };\n","import { ElementScrollGeomCache, WindowScrollGeomCache } from '../scroll-geom-cache';\n// If available we are using native \"performance\" API instead of \"Date\"\n// Read more about it on MDN:\n// https://developer.mozilla.org/en-US/docs/Web/API/Performance\nvar getTime = typeof performance === 'function' ? performance.now : Date.now;\n/*\nFor a pointer interaction, automatically scrolls certain scroll containers when the pointer\napproaches the edge.\n\nThe caller must call start + handleMove + stop.\n*/\nvar AutoScroller = /** @class */ (function () {\n    function AutoScroller() {\n        var _this = this;\n        // options that can be set by caller\n        this.isEnabled = true;\n        this.scrollQuery = [window, '.fc-scroller'];\n        this.edgeThreshold = 50; // pixels\n        this.maxVelocity = 300; // pixels per second\n        // internal state\n        this.pointerScreenX = null;\n        this.pointerScreenY = null;\n        this.isAnimating = false;\n        this.scrollCaches = null;\n        // protect against the initial pointerdown being too close to an edge and starting the scroll\n        this.everMovedUp = false;\n        this.everMovedDown = false;\n        this.everMovedLeft = false;\n        this.everMovedRight = false;\n        this.animate = function () {\n            if (_this.isAnimating) { // wasn't cancelled between animation calls\n                var edge = _this.computeBestEdge(_this.pointerScreenX + window.pageXOffset, _this.pointerScreenY + window.pageYOffset);\n                if (edge) {\n                    var now = getTime();\n                    _this.handleSide(edge, (now - _this.msSinceRequest) / 1000);\n                    _this.requestAnimation(now);\n                }\n                else {\n                    _this.isAnimating = false; // will stop animation\n                }\n            }\n        };\n    }\n    AutoScroller.prototype.start = function (pageX, pageY) {\n        if (this.isEnabled) {\n            this.scrollCaches = this.buildCaches();\n            this.pointerScreenX = null;\n            this.pointerScreenY = null;\n            this.everMovedUp = false;\n            this.everMovedDown = false;\n            this.everMovedLeft = false;\n            this.everMovedRight = false;\n            this.handleMove(pageX, pageY);\n        }\n    };\n    AutoScroller.prototype.handleMove = function (pageX, pageY) {\n        if (this.isEnabled) {\n            var pointerScreenX = pageX - window.pageXOffset;\n            var pointerScreenY = pageY - window.pageYOffset;\n            var yDelta = this.pointerScreenY === null ? 0 : pointerScreenY - this.pointerScreenY;\n            var xDelta = this.pointerScreenX === null ? 0 : pointerScreenX - this.pointerScreenX;\n            if (yDelta < 0) {\n                this.everMovedUp = true;\n            }\n            else if (yDelta > 0) {\n                this.everMovedDown = true;\n            }\n            if (xDelta < 0) {\n                this.everMovedLeft = true;\n            }\n            else if (xDelta > 0) {\n                this.everMovedRight = true;\n            }\n            this.pointerScreenX = pointerScreenX;\n            this.pointerScreenY = pointerScreenY;\n            if (!this.isAnimating) {\n                this.isAnimating = true;\n                this.requestAnimation(getTime());\n            }\n        }\n    };\n    AutoScroller.prototype.stop = function () {\n        if (this.isEnabled) {\n            this.isAnimating = false; // will stop animation\n            for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) {\n                var scrollCache = _a[_i];\n                scrollCache.destroy();\n            }\n            this.scrollCaches = null;\n        }\n    };\n    AutoScroller.prototype.requestAnimation = function (now) {\n        this.msSinceRequest = now;\n        requestAnimationFrame(this.animate);\n    };\n    AutoScroller.prototype.handleSide = function (edge, seconds) {\n        var scrollCache = edge.scrollCache;\n        var edgeThreshold = this.edgeThreshold;\n        var invDistance = edgeThreshold - edge.distance;\n        var velocity = // the closer to the edge, the faster we scroll\n         (invDistance * invDistance) / (edgeThreshold * edgeThreshold) * // quadratic\n            this.maxVelocity * seconds;\n        var sign = 1;\n        switch (edge.name) {\n            case 'left':\n                sign = -1;\n            // falls through\n            case 'right':\n                scrollCache.setScrollLeft(scrollCache.getScrollLeft() + velocity * sign);\n                break;\n            case 'top':\n                sign = -1;\n            // falls through\n            case 'bottom':\n                scrollCache.setScrollTop(scrollCache.getScrollTop() + velocity * sign);\n                break;\n        }\n    };\n    // left/top are relative to document topleft\n    AutoScroller.prototype.computeBestEdge = function (left, top) {\n        var edgeThreshold = this.edgeThreshold;\n        var bestSide = null;\n        for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) {\n            var scrollCache = _a[_i];\n            var rect = scrollCache.clientRect;\n            var leftDist = left - rect.left;\n            var rightDist = rect.right - left;\n            var topDist = top - rect.top;\n            var bottomDist = rect.bottom - top;\n            // completely within the rect?\n            if (leftDist >= 0 && rightDist >= 0 && topDist >= 0 && bottomDist >= 0) {\n                if (topDist <= edgeThreshold && this.everMovedUp && scrollCache.canScrollUp() &&\n                    (!bestSide || bestSide.distance > topDist)) {\n                    bestSide = { scrollCache: scrollCache, name: 'top', distance: topDist };\n                }\n                if (bottomDist <= edgeThreshold && this.everMovedDown && scrollCache.canScrollDown() &&\n                    (!bestSide || bestSide.distance > bottomDist)) {\n                    bestSide = { scrollCache: scrollCache, name: 'bottom', distance: bottomDist };\n                }\n                if (leftDist <= edgeThreshold && this.everMovedLeft && scrollCache.canScrollLeft() &&\n                    (!bestSide || bestSide.distance > leftDist)) {\n                    bestSide = { scrollCache: scrollCache, name: 'left', distance: leftDist };\n                }\n                if (rightDist <= edgeThreshold && this.everMovedRight && scrollCache.canScrollRight() &&\n                    (!bestSide || bestSide.distance > rightDist)) {\n                    bestSide = { scrollCache: scrollCache, name: 'right', distance: rightDist };\n                }\n            }\n        }\n        return bestSide;\n    };\n    AutoScroller.prototype.buildCaches = function () {\n        return this.queryScrollEls().map(function (el) {\n            if (el === window) {\n                return new WindowScrollGeomCache(false); // false = don't listen to user-generated scrolls\n            }\n            else {\n                return new ElementScrollGeomCache(el, false); // false = don't listen to user-generated scrolls\n            }\n        });\n    };\n    AutoScroller.prototype.queryScrollEls = function () {\n        var els = [];\n        for (var _i = 0, _a = this.scrollQuery; _i < _a.length; _i++) {\n            var query = _a[_i];\n            if (typeof query === 'object') {\n                els.push(query);\n            }\n            else {\n                els.push.apply(els, Array.prototype.slice.call(document.querySelectorAll(query)));\n            }\n        }\n        return els;\n    };\n    return AutoScroller;\n}());\nexport default AutoScroller;\n","import * as tslib_1 from \"tslib\";\nimport { preventSelection, allowSelection, preventContextMenu, allowContextMenu, ElementDragging } from '@fullcalendar/core';\nimport PointerDragging from './PointerDragging';\nimport ElementMirror from './ElementMirror';\nimport AutoScroller from './AutoScroller';\n/*\nMonitors dragging on an element. Has a number of high-level features:\n- minimum distance required before dragging\n- minimum wait time (\"delay\") before dragging\n- a mirror element that follows the pointer\n*/\nvar FeaturefulElementDragging = /** @class */ (function (_super) {\n    tslib_1.__extends(FeaturefulElementDragging, _super);\n    function FeaturefulElementDragging(containerEl) {\n        var _this = _super.call(this, containerEl) || this;\n        // options that can be directly set by caller\n        // the caller can also set the PointerDragging's options as well\n        _this.delay = null;\n        _this.minDistance = 0;\n        _this.touchScrollAllowed = true; // prevents drag from starting and blocks scrolling during drag\n        _this.mirrorNeedsRevert = false;\n        _this.isInteracting = false; // is the user validly moving the pointer? lasts until pointerup\n        _this.isDragging = false; // is it INTENTFULLY dragging? lasts until after revert animation\n        _this.isDelayEnded = false;\n        _this.isDistanceSurpassed = false;\n        _this.delayTimeoutId = null;\n        _this.onPointerDown = function (ev) {\n            if (!_this.isDragging) { // so new drag doesn't happen while revert animation is going\n                _this.isInteracting = true;\n                _this.isDelayEnded = false;\n                _this.isDistanceSurpassed = false;\n                preventSelection(document.body);\n                preventContextMenu(document.body);\n                // prevent links from being visited if there's an eventual drag.\n                // also prevents selection in older browsers (maybe?).\n                // not necessary for touch, besides, browser would complain about passiveness.\n                if (!ev.isTouch) {\n                    ev.origEvent.preventDefault();\n                }\n                _this.emitter.trigger('pointerdown', ev);\n                if (!_this.pointer.shouldIgnoreMove) {\n                    // actions related to initiating dragstart+dragmove+dragend...\n                    _this.mirror.setIsVisible(false); // reset. caller must set-visible\n                    _this.mirror.start(ev.subjectEl, ev.pageX, ev.pageY); // must happen on first pointer down\n                    _this.startDelay(ev);\n                    if (!_this.minDistance) {\n                        _this.handleDistanceSurpassed(ev);\n                    }\n                }\n            }\n        };\n        _this.onPointerMove = function (ev) {\n            if (_this.isInteracting) { // if false, still waiting for previous drag's revert\n                _this.emitter.trigger('pointermove', ev);\n                if (!_this.isDistanceSurpassed) {\n                    var minDistance = _this.minDistance;\n                    var distanceSq = void 0; // current distance from the origin, squared\n                    var deltaX = ev.deltaX, deltaY = ev.deltaY;\n                    distanceSq = deltaX * deltaX + deltaY * deltaY;\n                    if (distanceSq >= minDistance * minDistance) { // use pythagorean theorem\n                        _this.handleDistanceSurpassed(ev);\n                    }\n                }\n                if (_this.isDragging) {\n                    // a real pointer move? (not one simulated by scrolling)\n                    if (ev.origEvent.type !== 'scroll') {\n                        _this.mirror.handleMove(ev.pageX, ev.pageY);\n                        _this.autoScroller.handleMove(ev.pageX, ev.pageY);\n                    }\n                    _this.emitter.trigger('dragmove', ev);\n                }\n            }\n        };\n        _this.onPointerUp = function (ev) {\n            if (_this.isInteracting) { // if false, still waiting for previous drag's revert\n                _this.isInteracting = false;\n                allowSelection(document.body);\n                allowContextMenu(document.body);\n                _this.emitter.trigger('pointerup', ev); // can potentially set mirrorNeedsRevert\n                if (_this.isDragging) {\n                    _this.autoScroller.stop();\n                    _this.tryStopDrag(ev); // which will stop the mirror\n                }\n                if (_this.delayTimeoutId) {\n                    clearTimeout(_this.delayTimeoutId);\n                    _this.delayTimeoutId = null;\n                }\n            }\n        };\n        var pointer = _this.pointer = new PointerDragging(containerEl);\n        pointer.emitter.on('pointerdown', _this.onPointerDown);\n        pointer.emitter.on('pointermove', _this.onPointerMove);\n        pointer.emitter.on('pointerup', _this.onPointerUp);\n        _this.mirror = new ElementMirror();\n        _this.autoScroller = new AutoScroller();\n        return _this;\n    }\n    FeaturefulElementDragging.prototype.destroy = function () {\n        this.pointer.destroy();\n    };\n    FeaturefulElementDragging.prototype.startDelay = function (ev) {\n        var _this = this;\n        if (typeof this.delay === 'number') {\n            this.delayTimeoutId = setTimeout(function () {\n                _this.delayTimeoutId = null;\n                _this.handleDelayEnd(ev);\n            }, this.delay); // not assignable to number!\n        }\n        else {\n            this.handleDelayEnd(ev);\n        }\n    };\n    FeaturefulElementDragging.prototype.handleDelayEnd = function (ev) {\n        this.isDelayEnded = true;\n        this.tryStartDrag(ev);\n    };\n    FeaturefulElementDragging.prototype.handleDistanceSurpassed = function (ev) {\n        this.isDistanceSurpassed = true;\n        this.tryStartDrag(ev);\n    };\n    FeaturefulElementDragging.prototype.tryStartDrag = function (ev) {\n        if (this.isDelayEnded && this.isDistanceSurpassed) {\n            if (!this.pointer.wasTouchScroll || this.touchScrollAllowed) {\n                this.isDragging = true;\n                this.mirrorNeedsRevert = false;\n                this.autoScroller.start(ev.pageX, ev.pageY);\n                this.emitter.trigger('dragstart', ev);\n                if (this.touchScrollAllowed === false) {\n                    this.pointer.cancelTouchScroll();\n                }\n            }\n        }\n    };\n    FeaturefulElementDragging.prototype.tryStopDrag = function (ev) {\n        // .stop() is ALWAYS asynchronous, which we NEED because we want all pointerup events\n        // that come from the document to fire beforehand. much more convenient this way.\n        this.mirror.stop(this.mirrorNeedsRevert, this.stopDrag.bind(this, ev) // bound with args\n        );\n    };\n    FeaturefulElementDragging.prototype.stopDrag = function (ev) {\n        this.isDragging = false;\n        this.emitter.trigger('dragend', ev);\n    };\n    // fill in the implementations...\n    FeaturefulElementDragging.prototype.setIgnoreMove = function (bool) {\n        this.pointer.shouldIgnoreMove = bool;\n    };\n    FeaturefulElementDragging.prototype.setMirrorIsVisible = function (bool) {\n        this.mirror.setIsVisible(bool);\n    };\n    FeaturefulElementDragging.prototype.setMirrorNeedsRevert = function (bool) {\n        this.mirrorNeedsRevert = bool;\n    };\n    FeaturefulElementDragging.prototype.setAutoScrollEnabled = function (bool) {\n        this.autoScroller.isEnabled = bool;\n    };\n    return FeaturefulElementDragging;\n}(ElementDragging));\nexport default FeaturefulElementDragging;\n","import { getClippingParents, computeRect, pointInsideRect } from '@fullcalendar/core';\nimport { ElementScrollGeomCache } from './scroll-geom-cache';\n/*\nWhen this class is instantiated, it records the offset of an element (relative to the document topleft),\nand continues to monitor scrolling, updating the cached coordinates if it needs to.\nDoes not access the DOM after instantiation, so highly performant.\n\nAlso keeps track of all scrolling/overflow:hidden containers that are parents of the given element\nand an determine if a given point is inside the combined clipping rectangle.\n*/\nvar OffsetTracker = /** @class */ (function () {\n    function OffsetTracker(el) {\n        this.origRect = computeRect(el);\n        // will work fine for divs that have overflow:hidden\n        this.scrollCaches = getClippingParents(el).map(function (el) {\n            return new ElementScrollGeomCache(el, true); // listen=true\n        });\n    }\n    OffsetTracker.prototype.destroy = function () {\n        for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) {\n            var scrollCache = _a[_i];\n            scrollCache.destroy();\n        }\n    };\n    OffsetTracker.prototype.computeLeft = function () {\n        var left = this.origRect.left;\n        for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) {\n            var scrollCache = _a[_i];\n            left += scrollCache.origScrollLeft - scrollCache.getScrollLeft();\n        }\n        return left;\n    };\n    OffsetTracker.prototype.computeTop = function () {\n        var top = this.origRect.top;\n        for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) {\n            var scrollCache = _a[_i];\n            top += scrollCache.origScrollTop - scrollCache.getScrollTop();\n        }\n        return top;\n    };\n    OffsetTracker.prototype.isWithinClipping = function (pageX, pageY) {\n        var point = { left: pageX, top: pageY };\n        for (var _i = 0, _a = this.scrollCaches; _i < _a.length; _i++) {\n            var scrollCache = _a[_i];\n            if (!isIgnoredClipping(scrollCache.getEventTarget()) &&\n                !pointInsideRect(point, scrollCache.clientRect)) {\n                return false;\n            }\n        }\n        return true;\n    };\n    return OffsetTracker;\n}());\nexport default OffsetTracker;\n// certain clipping containers should never constrain interactions, like <html> and <body>\n// https://github.com/fullcalendar/fullcalendar/issues/3615\nfunction isIgnoredClipping(node) {\n    var tagName = node.tagName;\n    return tagName === 'HTML' || tagName === 'BODY';\n}\n","import { EmitterMixin, isDateSpansEqual, computeRect, constrainPoint, intersectRects, getRectCenter, diffPoints, rangeContainsRange, mapHash } from '@fullcalendar/core';\nimport OffsetTracker from '../OffsetTracker';\n/*\nTracks movement over multiple droppable areas (aka \"hits\")\nthat exist in one or more DateComponents.\nRelies on an existing draggable.\n\nemits:\n- pointerdown\n- dragstart\n- hitchange - fires initially, even if not over a hit\n- pointerup\n- (hitchange - again, to null, if ended over a hit)\n- dragend\n*/\nvar HitDragging = /** @class */ (function () {\n    function HitDragging(dragging, droppableStore) {\n        var _this = this;\n        // options that can be set by caller\n        this.useSubjectCenter = false;\n        this.requireInitial = true; // if doesn't start out on a hit, won't emit any events\n        this.initialHit = null;\n        this.movingHit = null;\n        this.finalHit = null; // won't ever be populated if shouldIgnoreMove\n        this.handlePointerDown = function (ev) {\n            var dragging = _this.dragging;\n            _this.initialHit = null;\n            _this.movingHit = null;\n            _this.finalHit = null;\n            _this.prepareHits();\n            _this.processFirstCoord(ev);\n            if (_this.initialHit || !_this.requireInitial) {\n                dragging.setIgnoreMove(false);\n                _this.emitter.trigger('pointerdown', ev); // TODO: fire this before computing processFirstCoord, so listeners can cancel. this gets fired by almost every handler :(\n            }\n            else {\n                dragging.setIgnoreMove(true);\n            }\n        };\n        this.handleDragStart = function (ev) {\n            _this.emitter.trigger('dragstart', ev);\n            _this.handleMove(ev, true); // force = fire even if initially null\n        };\n        this.handleDragMove = function (ev) {\n            _this.emitter.trigger('dragmove', ev);\n            _this.handleMove(ev);\n        };\n        this.handlePointerUp = function (ev) {\n            _this.releaseHits();\n            _this.emitter.trigger('pointerup', ev);\n        };\n        this.handleDragEnd = function (ev) {\n            if (_this.movingHit) {\n                _this.emitter.trigger('hitupdate', null, true, ev);\n            }\n            _this.finalHit = _this.movingHit;\n            _this.movingHit = null;\n            _this.emitter.trigger('dragend', ev);\n        };\n        this.droppableStore = droppableStore;\n        dragging.emitter.on('pointerdown', this.handlePointerDown);\n        dragging.emitter.on('dragstart', this.handleDragStart);\n        dragging.emitter.on('dragmove', this.handleDragMove);\n        dragging.emitter.on('pointerup', this.handlePointerUp);\n        dragging.emitter.on('dragend', this.handleDragEnd);\n        this.dragging = dragging;\n        this.emitter = new EmitterMixin();\n    }\n    // sets initialHit\n    // sets coordAdjust\n    HitDragging.prototype.processFirstCoord = function (ev) {\n        var origPoint = { left: ev.pageX, top: ev.pageY };\n        var adjustedPoint = origPoint;\n        var subjectEl = ev.subjectEl;\n        var subjectRect;\n        if (subjectEl !== document) {\n            subjectRect = computeRect(subjectEl);\n            adjustedPoint = constrainPoint(adjustedPoint, subjectRect);\n        }\n        var initialHit = this.initialHit = this.queryHitForOffset(adjustedPoint.left, adjustedPoint.top);\n        if (initialHit) {\n            if (this.useSubjectCenter && subjectRect) {\n                var slicedSubjectRect = intersectRects(subjectRect, initialHit.rect);\n                if (slicedSubjectRect) {\n                    adjustedPoint = getRectCenter(slicedSubjectRect);\n                }\n            }\n            this.coordAdjust = diffPoints(adjustedPoint, origPoint);\n        }\n        else {\n            this.coordAdjust = { left: 0, top: 0 };\n        }\n    };\n    HitDragging.prototype.handleMove = function (ev, forceHandle) {\n        var hit = this.queryHitForOffset(ev.pageX + this.coordAdjust.left, ev.pageY + this.coordAdjust.top);\n        if (forceHandle || !isHitsEqual(this.movingHit, hit)) {\n            this.movingHit = hit;\n            this.emitter.trigger('hitupdate', hit, false, ev);\n        }\n    };\n    HitDragging.prototype.prepareHits = function () {\n        this.offsetTrackers = mapHash(this.droppableStore, function (interactionSettings) {\n            interactionSettings.component.buildPositionCaches();\n            return new OffsetTracker(interactionSettings.el);\n        });\n    };\n    HitDragging.prototype.releaseHits = function () {\n        var offsetTrackers = this.offsetTrackers;\n        for (var id in offsetTrackers) {\n            offsetTrackers[id].destroy();\n        }\n        this.offsetTrackers = {};\n    };\n    HitDragging.prototype.queryHitForOffset = function (offsetLeft, offsetTop) {\n        var _a = this, droppableStore = _a.droppableStore, offsetTrackers = _a.offsetTrackers;\n        var bestHit = null;\n        for (var id in droppableStore) {\n            var component = droppableStore[id].component;\n            var offsetTracker = offsetTrackers[id];\n            if (offsetTracker.isWithinClipping(offsetLeft, offsetTop)) {\n                var originLeft = offsetTracker.computeLeft();\n                var originTop = offsetTracker.computeTop();\n                var positionLeft = offsetLeft - originLeft;\n                var positionTop = offsetTop - originTop;\n                var origRect = offsetTracker.origRect;\n                var width = origRect.right - origRect.left;\n                var height = origRect.bottom - origRect.top;\n                if (\n                // must be within the element's bounds\n                positionLeft >= 0 && positionLeft < width &&\n                    positionTop >= 0 && positionTop < height) {\n                    var hit = component.queryHit(positionLeft, positionTop, width, height);\n                    if (hit &&\n                        (\n                        // make sure the hit is within activeRange, meaning it's not a deal cell\n                        !component.props.dateProfile || // hack for DayTile\n                            rangeContainsRange(component.props.dateProfile.activeRange, hit.dateSpan.range)) &&\n                        (!bestHit || hit.layer > bestHit.layer)) {\n                        // TODO: better way to re-orient rectangle\n                        hit.rect.left += originLeft;\n                        hit.rect.right += originLeft;\n                        hit.rect.top += originTop;\n                        hit.rect.bottom += originTop;\n                        bestHit = hit;\n                    }\n                }\n            }\n        }\n        return bestHit;\n    };\n    return HitDragging;\n}());\nexport default HitDragging;\nexport function isHitsEqual(hit0, hit1) {\n    if (!hit0 && !hit1) {\n        return true;\n    }\n    if (Boolean(hit0) !== Boolean(hit1)) {\n        return false;\n    }\n    return isDateSpansEqual(hit0.dateSpan, hit1.dateSpan);\n}\n","import * as tslib_1 from \"tslib\";\nimport { Interaction, interactionSettingsToStore } from '@fullcalendar/core';\nimport FeaturefulElementDragging from '../dnd/FeaturefulElementDragging';\nimport HitDragging, { isHitsEqual } from './HitDragging';\n/*\nMonitors when the user clicks on a specific date/time of a component.\nA pointerdown+pointerup on the same \"hit\" constitutes a click.\n*/\nvar DateClicking = /** @class */ (function (_super) {\n    tslib_1.__extends(DateClicking, _super);\n    function DateClicking(settings) {\n        var _this = _super.call(this, settings) || this;\n        _this.handlePointerDown = function (ev) {\n            var dragging = _this.dragging;\n            // do this in pointerdown (not dragend) because DOM might be mutated by the time dragend is fired\n            dragging.setIgnoreMove(!_this.component.isValidDateDownEl(dragging.pointer.downEl));\n        };\n        // won't even fire if moving was ignored\n        _this.handleDragEnd = function (ev) {\n            var component = _this.component;\n            var _a = component.context, calendar = _a.calendar, view = _a.view;\n            var pointer = _this.dragging.pointer;\n            if (!pointer.wasTouchScroll) {\n                var _b = _this.hitDragging, initialHit = _b.initialHit, finalHit = _b.finalHit;\n                if (initialHit && finalHit && isHitsEqual(initialHit, finalHit)) {\n                    calendar.triggerDateClick(initialHit.dateSpan, initialHit.dayEl, view, ev.origEvent);\n                }\n            }\n        };\n        var component = settings.component;\n        // we DO want to watch pointer moves because otherwise finalHit won't get populated\n        _this.dragging = new FeaturefulElementDragging(component.el);\n        _this.dragging.autoScroller.isEnabled = false;\n        var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, interactionSettingsToStore(settings));\n        hitDragging.emitter.on('pointerdown', _this.handlePointerDown);\n        hitDragging.emitter.on('dragend', _this.handleDragEnd);\n        return _this;\n    }\n    DateClicking.prototype.destroy = function () {\n        this.dragging.destroy();\n    };\n    return DateClicking;\n}(Interaction));\nexport default DateClicking;\n","import * as tslib_1 from \"tslib\";\nimport { compareNumbers, enableCursor, disableCursor, Interaction, interactionSettingsToStore } from '@fullcalendar/core';\nimport HitDragging from './HitDragging';\nimport FeaturefulElementDragging from '../dnd/FeaturefulElementDragging';\nimport { __assign } from 'tslib';\n/*\nTracks when the user selects a portion of time of a component,\nconstituted by a drag over date cells, with a possible delay at the beginning of the drag.\n*/\nvar DateSelecting = /** @class */ (function (_super) {\n    tslib_1.__extends(DateSelecting, _super);\n    function DateSelecting(settings) {\n        var _this = _super.call(this, settings) || this;\n        _this.dragSelection = null;\n        _this.handlePointerDown = function (ev) {\n            var _a = _this, component = _a.component, dragging = _a.dragging;\n            var options = component.context.options;\n            var canSelect = options.selectable &&\n                component.isValidDateDownEl(ev.origEvent.target);\n            // don't bother to watch expensive moves if component won't do selection\n            dragging.setIgnoreMove(!canSelect);\n            // if touch, require user to hold down\n            dragging.delay = ev.isTouch ? getComponentTouchDelay(component) : null;\n        };\n        _this.handleDragStart = function (ev) {\n            _this.component.context.calendar.unselect(ev); // unselect previous selections\n        };\n        _this.handleHitUpdate = function (hit, isFinal) {\n            var calendar = _this.component.context.calendar;\n            var dragSelection = null;\n            var isInvalid = false;\n            if (hit) {\n                dragSelection = joinHitsIntoSelection(_this.hitDragging.initialHit, hit, calendar.pluginSystem.hooks.dateSelectionTransformers);\n                if (!dragSelection || !_this.component.isDateSelectionValid(dragSelection)) {\n                    isInvalid = true;\n                    dragSelection = null;\n                }\n            }\n            if (dragSelection) {\n                calendar.dispatch({ type: 'SELECT_DATES', selection: dragSelection });\n            }\n            else if (!isFinal) { // only unselect if moved away while dragging\n                calendar.dispatch({ type: 'UNSELECT_DATES' });\n            }\n            if (!isInvalid) {\n                enableCursor();\n            }\n            else {\n                disableCursor();\n            }\n            if (!isFinal) {\n                _this.dragSelection = dragSelection; // only clear if moved away from all hits while dragging\n            }\n        };\n        _this.handlePointerUp = function (pev) {\n            if (_this.dragSelection) {\n                // selection is already rendered, so just need to report selection\n                _this.component.context.calendar.triggerDateSelect(_this.dragSelection, pev);\n                _this.dragSelection = null;\n            }\n        };\n        var component = settings.component;\n        var options = component.context.options;\n        var dragging = _this.dragging = new FeaturefulElementDragging(component.el);\n        dragging.touchScrollAllowed = false;\n        dragging.minDistance = options.selectMinDistance || 0;\n        dragging.autoScroller.isEnabled = options.dragScroll;\n        var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, interactionSettingsToStore(settings));\n        hitDragging.emitter.on('pointerdown', _this.handlePointerDown);\n        hitDragging.emitter.on('dragstart', _this.handleDragStart);\n        hitDragging.emitter.on('hitupdate', _this.handleHitUpdate);\n        hitDragging.emitter.on('pointerup', _this.handlePointerUp);\n        return _this;\n    }\n    DateSelecting.prototype.destroy = function () {\n        this.dragging.destroy();\n    };\n    return DateSelecting;\n}(Interaction));\nexport default DateSelecting;\nfunction getComponentTouchDelay(component) {\n    var options = component.context.options;\n    var delay = options.selectLongPressDelay;\n    if (delay == null) {\n        delay = options.longPressDelay;\n    }\n    return delay;\n}\nfunction joinHitsIntoSelection(hit0, hit1, dateSelectionTransformers) {\n    var dateSpan0 = hit0.dateSpan;\n    var dateSpan1 = hit1.dateSpan;\n    var ms = [\n        dateSpan0.range.start,\n        dateSpan0.range.end,\n        dateSpan1.range.start,\n        dateSpan1.range.end\n    ];\n    ms.sort(compareNumbers);\n    var props = {};\n    for (var _i = 0, dateSelectionTransformers_1 = dateSelectionTransformers; _i < dateSelectionTransformers_1.length; _i++) {\n        var transformer = dateSelectionTransformers_1[_i];\n        var res = transformer(hit0, hit1);\n        if (res === false) {\n            return null;\n        }\n        else if (res) {\n            __assign(props, res);\n        }\n    }\n    props.range = { start: ms[0], end: ms[3] };\n    props.allDay = dateSpan0.allDay;\n    return props;\n}\n","import * as tslib_1 from \"tslib\";\nimport { applyMutationToEventStore, startOfDay, elementClosest, getRelevantEvents, createEmptyEventStore, diffDates, enableCursor, disableCursor, getElSeg, EventApi, Interaction, interactionSettingsStore } from '@fullcalendar/core';\nimport HitDragging, { isHitsEqual } from './HitDragging';\nimport FeaturefulElementDragging from '../dnd/FeaturefulElementDragging';\nimport { __assign } from 'tslib';\nvar EventDragging = /** @class */ (function (_super) {\n    tslib_1.__extends(EventDragging, _super);\n    function EventDragging(settings) {\n        var _this = _super.call(this, settings) || this;\n        // internal state\n        _this.subjectSeg = null; // the seg being selected/dragged\n        _this.isDragging = false;\n        _this.eventRange = null;\n        _this.relevantEvents = null; // the events being dragged\n        _this.receivingCalendar = null;\n        _this.validMutation = null;\n        _this.mutatedRelevantEvents = null;\n        _this.handlePointerDown = function (ev) {\n            var origTarget = ev.origEvent.target;\n            var _a = _this, component = _a.component, dragging = _a.dragging;\n            var mirror = dragging.mirror;\n            var options = component.context.options;\n            var initialCalendar = component.context.calendar;\n            var subjectSeg = _this.subjectSeg = getElSeg(ev.subjectEl);\n            var eventRange = _this.eventRange = subjectSeg.eventRange;\n            var eventInstanceId = eventRange.instance.instanceId;\n            _this.relevantEvents = getRelevantEvents(initialCalendar.state.eventStore, eventInstanceId);\n            dragging.minDistance = ev.isTouch ? 0 : options.eventDragMinDistance;\n            dragging.delay =\n                // only do a touch delay if touch and this event hasn't been selected yet\n                (ev.isTouch && eventInstanceId !== component.props.eventSelection) ?\n                    getComponentTouchDelay(component) :\n                    null;\n            mirror.parentNode = initialCalendar.el;\n            mirror.revertDuration = options.dragRevertDuration;\n            var isValid = component.isValidSegDownEl(origTarget) &&\n                !elementClosest(origTarget, '.fc-resizer'); // NOT on a resizer\n            dragging.setIgnoreMove(!isValid);\n            // disable dragging for elements that are resizable (ie, selectable)\n            // but are not draggable\n            _this.isDragging = isValid &&\n                ev.subjectEl.classList.contains('fc-draggable');\n        };\n        _this.handleDragStart = function (ev) {\n            var context = _this.component.context;\n            var initialCalendar = context.calendar;\n            var eventRange = _this.eventRange;\n            var eventInstanceId = eventRange.instance.instanceId;\n            if (ev.isTouch) {\n                // need to select a different event?\n                if (eventInstanceId !== _this.component.props.eventSelection) {\n                    initialCalendar.dispatch({ type: 'SELECT_EVENT', eventInstanceId: eventInstanceId });\n                }\n            }\n            else {\n                // if now using mouse, but was previous touch interaction, clear selected event\n                initialCalendar.dispatch({ type: 'UNSELECT_EVENT' });\n            }\n            if (_this.isDragging) {\n                initialCalendar.unselect(ev); // unselect *date* selection\n                initialCalendar.publiclyTrigger('eventDragStart', [\n                    {\n                        el: _this.subjectSeg.el,\n                        event: new EventApi(initialCalendar, eventRange.def, eventRange.instance),\n                        jsEvent: ev.origEvent,\n                        view: context.view\n                    }\n                ]);\n            }\n        };\n        _this.handleHitUpdate = function (hit, isFinal) {\n            if (!_this.isDragging) {\n                return;\n            }\n            var relevantEvents = _this.relevantEvents;\n            var initialHit = _this.hitDragging.initialHit;\n            var initialCalendar = _this.component.context.calendar;\n            // states based on new hit\n            var receivingCalendar = null;\n            var mutation = null;\n            var mutatedRelevantEvents = null;\n            var isInvalid = false;\n            var interaction = {\n                affectedEvents: relevantEvents,\n                mutatedEvents: createEmptyEventStore(),\n                isEvent: true,\n                origSeg: _this.subjectSeg\n            };\n            if (hit) {\n                var receivingComponent = hit.component;\n                receivingCalendar = receivingComponent.context.calendar;\n                var receivingOptions = receivingComponent.context.options;\n                if (initialCalendar === receivingCalendar ||\n                    receivingOptions.editable && receivingOptions.droppable) {\n                    mutation = computeEventMutation(initialHit, hit, receivingCalendar.pluginSystem.hooks.eventDragMutationMassagers);\n                    if (mutation) {\n                        mutatedRelevantEvents = applyMutationToEventStore(relevantEvents, receivingCalendar.eventUiBases, mutation, receivingCalendar);\n                        interaction.mutatedEvents = mutatedRelevantEvents;\n                        if (!receivingComponent.isInteractionValid(interaction)) {\n                            isInvalid = true;\n                            mutation = null;\n                            mutatedRelevantEvents = null;\n                            interaction.mutatedEvents = createEmptyEventStore();\n                        }\n                    }\n                }\n                else {\n                    receivingCalendar = null;\n                }\n            }\n            _this.displayDrag(receivingCalendar, interaction);\n            if (!isInvalid) {\n                enableCursor();\n            }\n            else {\n                disableCursor();\n            }\n            if (!isFinal) {\n                if (initialCalendar === receivingCalendar && // TODO: write test for this\n                    isHitsEqual(initialHit, hit)) {\n                    mutation = null;\n                }\n                _this.dragging.setMirrorNeedsRevert(!mutation);\n                // render the mirror if no already-rendered mirror\n                // TODO: wish we could somehow wait for dispatch to guarantee render\n                _this.dragging.setMirrorIsVisible(!hit || !document.querySelector('.fc-mirror'));\n                // assign states based on new hit\n                _this.receivingCalendar = receivingCalendar;\n                _this.validMutation = mutation;\n                _this.mutatedRelevantEvents = mutatedRelevantEvents;\n            }\n        };\n        _this.handlePointerUp = function () {\n            if (!_this.isDragging) {\n                _this.cleanup(); // because handleDragEnd won't fire\n            }\n        };\n        _this.handleDragEnd = function (ev) {\n            if (_this.isDragging) {\n                var context = _this.component.context;\n                var initialCalendar_1 = context.calendar;\n                var initialView = context.view;\n                var _a = _this, receivingCalendar = _a.receivingCalendar, validMutation = _a.validMutation;\n                var eventDef = _this.eventRange.def;\n                var eventInstance = _this.eventRange.instance;\n                var eventApi = new EventApi(initialCalendar_1, eventDef, eventInstance);\n                var relevantEvents_1 = _this.relevantEvents;\n                var mutatedRelevantEvents = _this.mutatedRelevantEvents;\n                var finalHit = _this.hitDragging.finalHit;\n                _this.clearDrag(); // must happen after revert animation\n                initialCalendar_1.publiclyTrigger('eventDragStop', [\n                    {\n                        el: _this.subjectSeg.el,\n                        event: eventApi,\n                        jsEvent: ev.origEvent,\n                        view: initialView\n                    }\n                ]);\n                if (validMutation) {\n                    // dropped within same calendar\n                    if (receivingCalendar === initialCalendar_1) {\n                        initialCalendar_1.dispatch({\n                            type: 'MERGE_EVENTS',\n                            eventStore: mutatedRelevantEvents\n                        });\n                        var transformed = {};\n                        for (var _i = 0, _b = initialCalendar_1.pluginSystem.hooks.eventDropTransformers; _i < _b.length; _i++) {\n                            var transformer = _b[_i];\n                            __assign(transformed, transformer(validMutation, initialCalendar_1));\n                        }\n                        var eventDropArg = tslib_1.__assign({}, transformed, { el: ev.subjectEl, delta: validMutation.datesDelta, oldEvent: eventApi, event: new EventApi(// the data AFTER the mutation\n                            initialCalendar_1, mutatedRelevantEvents.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null), revert: function () {\n                                initialCalendar_1.dispatch({\n                                    type: 'MERGE_EVENTS',\n                                    eventStore: relevantEvents_1\n                                });\n                            }, jsEvent: ev.origEvent, view: initialView });\n                        initialCalendar_1.publiclyTrigger('eventDrop', [eventDropArg]);\n                        // dropped in different calendar\n                    }\n                    else if (receivingCalendar) {\n                        initialCalendar_1.publiclyTrigger('eventLeave', [\n                            {\n                                draggedEl: ev.subjectEl,\n                                event: eventApi,\n                                view: initialView\n                            }\n                        ]);\n                        initialCalendar_1.dispatch({\n                            type: 'REMOVE_EVENT_INSTANCES',\n                            instances: _this.mutatedRelevantEvents.instances\n                        });\n                        receivingCalendar.dispatch({\n                            type: 'MERGE_EVENTS',\n                            eventStore: _this.mutatedRelevantEvents\n                        });\n                        if (ev.isTouch) {\n                            receivingCalendar.dispatch({\n                                type: 'SELECT_EVENT',\n                                eventInstanceId: eventInstance.instanceId\n                            });\n                        }\n                        var dropArg = tslib_1.__assign({}, receivingCalendar.buildDatePointApi(finalHit.dateSpan), { draggedEl: ev.subjectEl, jsEvent: ev.origEvent, view: finalHit.component // should this be finalHit.component.view? See #4644\n                         });\n                        receivingCalendar.publiclyTrigger('drop', [dropArg]);\n                        receivingCalendar.publiclyTrigger('eventReceive', [\n                            {\n                                draggedEl: ev.subjectEl,\n                                event: new EventApi(// the data AFTER the mutation\n                                receivingCalendar, mutatedRelevantEvents.defs[eventDef.defId], mutatedRelevantEvents.instances[eventInstance.instanceId]),\n                                view: finalHit.component // should this be finalHit.component.view? See #4644\n                            }\n                        ]);\n                    }\n                }\n                else {\n                    initialCalendar_1.publiclyTrigger('_noEventDrop');\n                }\n            }\n            _this.cleanup();\n        };\n        var component = _this.component;\n        var options = component.context.options;\n        var dragging = _this.dragging = new FeaturefulElementDragging(component.el);\n        dragging.pointer.selector = EventDragging.SELECTOR;\n        dragging.touchScrollAllowed = false;\n        dragging.autoScroller.isEnabled = options.dragScroll;\n        var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, interactionSettingsStore);\n        hitDragging.useSubjectCenter = settings.useEventCenter;\n        hitDragging.emitter.on('pointerdown', _this.handlePointerDown);\n        hitDragging.emitter.on('dragstart', _this.handleDragStart);\n        hitDragging.emitter.on('hitupdate', _this.handleHitUpdate);\n        hitDragging.emitter.on('pointerup', _this.handlePointerUp);\n        hitDragging.emitter.on('dragend', _this.handleDragEnd);\n        return _this;\n    }\n    EventDragging.prototype.destroy = function () {\n        this.dragging.destroy();\n    };\n    // render a drag state on the next receivingCalendar\n    EventDragging.prototype.displayDrag = function (nextCalendar, state) {\n        var initialCalendar = this.component.context.calendar;\n        var prevCalendar = this.receivingCalendar;\n        // does the previous calendar need to be cleared?\n        if (prevCalendar && prevCalendar !== nextCalendar) {\n            // does the initial calendar need to be cleared?\n            // if so, don't clear all the way. we still need to to hide the affectedEvents\n            if (prevCalendar === initialCalendar) {\n                prevCalendar.dispatch({\n                    type: 'SET_EVENT_DRAG',\n                    state: {\n                        affectedEvents: state.affectedEvents,\n                        mutatedEvents: createEmptyEventStore(),\n                        isEvent: true,\n                        origSeg: state.origSeg\n                    }\n                });\n                // completely clear the old calendar if it wasn't the initial\n            }\n            else {\n                prevCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' });\n            }\n        }\n        if (nextCalendar) {\n            nextCalendar.dispatch({ type: 'SET_EVENT_DRAG', state: state });\n        }\n    };\n    EventDragging.prototype.clearDrag = function () {\n        var initialCalendar = this.component.context.calendar;\n        var receivingCalendar = this.receivingCalendar;\n        if (receivingCalendar) {\n            receivingCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' });\n        }\n        // the initial calendar might have an dummy drag state from displayDrag\n        if (initialCalendar !== receivingCalendar) {\n            initialCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' });\n        }\n    };\n    EventDragging.prototype.cleanup = function () {\n        this.subjectSeg = null;\n        this.isDragging = false;\n        this.eventRange = null;\n        this.relevantEvents = null;\n        this.receivingCalendar = null;\n        this.validMutation = null;\n        this.mutatedRelevantEvents = null;\n    };\n    EventDragging.SELECTOR = '.fc-draggable, .fc-resizable'; // TODO: test this in IE11\n    return EventDragging;\n}(Interaction));\nexport default EventDragging;\nfunction computeEventMutation(hit0, hit1, massagers) {\n    var dateSpan0 = hit0.dateSpan;\n    var dateSpan1 = hit1.dateSpan;\n    var date0 = dateSpan0.range.start;\n    var date1 = dateSpan1.range.start;\n    var standardProps = {};\n    if (dateSpan0.allDay !== dateSpan1.allDay) {\n        standardProps.allDay = dateSpan1.allDay;\n        standardProps.hasEnd = hit1.component.context.options.allDayMaintainDuration;\n        if (dateSpan1.allDay) {\n            // means date1 is already start-of-day,\n            // but date0 needs to be converted\n            date0 = startOfDay(date0);\n        }\n    }\n    var delta = diffDates(date0, date1, hit0.component.context.dateEnv, hit0.component === hit1.component ?\n        hit0.component.largeUnit :\n        null);\n    if (delta.milliseconds) { // has hours/minutes/seconds\n        standardProps.allDay = false;\n    }\n    var mutation = {\n        datesDelta: delta,\n        standardProps: standardProps\n    };\n    for (var _i = 0, massagers_1 = massagers; _i < massagers_1.length; _i++) {\n        var massager = massagers_1[_i];\n        massager(mutation, hit0, hit1);\n    }\n    return mutation;\n}\nfunction getComponentTouchDelay(component) {\n    var options = component.context.options;\n    var delay = options.eventLongPressDelay;\n    if (delay == null) {\n        delay = options.longPressDelay;\n    }\n    return delay;\n}\n","import * as tslib_1 from \"tslib\";\nimport { applyMutationToEventStore, elementClosest, getRelevantEvents, createEmptyEventStore, diffDates, enableCursor, disableCursor, EventApi, getElSeg, createDuration, Interaction, interactionSettingsToStore } from '@fullcalendar/core';\nimport HitDragging, { isHitsEqual } from './HitDragging';\nimport FeaturefulElementDragging from '../dnd/FeaturefulElementDragging';\nimport { __assign } from 'tslib';\nvar EventDragging = /** @class */ (function (_super) {\n    tslib_1.__extends(EventDragging, _super);\n    function EventDragging(settings) {\n        var _this = _super.call(this, settings) || this;\n        // internal state\n        _this.draggingSeg = null; // TODO: rename to resizingSeg? subjectSeg?\n        _this.eventRange = null;\n        _this.relevantEvents = null;\n        _this.validMutation = null;\n        _this.mutatedRelevantEvents = null;\n        _this.handlePointerDown = function (ev) {\n            var component = _this.component;\n            var seg = _this.querySeg(ev);\n            var eventRange = _this.eventRange = seg.eventRange;\n            _this.dragging.minDistance = component.context.options.eventDragMinDistance;\n            // if touch, need to be working with a selected event\n            _this.dragging.setIgnoreMove(!_this.component.isValidSegDownEl(ev.origEvent.target) ||\n                (ev.isTouch && _this.component.props.eventSelection !== eventRange.instance.instanceId));\n        };\n        _this.handleDragStart = function (ev) {\n            var _a = _this.component.context, calendar = _a.calendar, view = _a.view;\n            var eventRange = _this.eventRange;\n            _this.relevantEvents = getRelevantEvents(calendar.state.eventStore, _this.eventRange.instance.instanceId);\n            _this.draggingSeg = _this.querySeg(ev);\n            calendar.unselect();\n            calendar.publiclyTrigger('eventResizeStart', [\n                {\n                    el: _this.draggingSeg.el,\n                    event: new EventApi(calendar, eventRange.def, eventRange.instance),\n                    jsEvent: ev.origEvent,\n                    view: view\n                }\n            ]);\n        };\n        _this.handleHitUpdate = function (hit, isFinal, ev) {\n            var calendar = _this.component.context.calendar;\n            var relevantEvents = _this.relevantEvents;\n            var initialHit = _this.hitDragging.initialHit;\n            var eventInstance = _this.eventRange.instance;\n            var mutation = null;\n            var mutatedRelevantEvents = null;\n            var isInvalid = false;\n            var interaction = {\n                affectedEvents: relevantEvents,\n                mutatedEvents: createEmptyEventStore(),\n                isEvent: true,\n                origSeg: _this.draggingSeg\n            };\n            if (hit) {\n                mutation = computeMutation(initialHit, hit, ev.subjectEl.classList.contains('fc-start-resizer'), eventInstance.range, calendar.pluginSystem.hooks.eventResizeJoinTransforms);\n            }\n            if (mutation) {\n                mutatedRelevantEvents = applyMutationToEventStore(relevantEvents, calendar.eventUiBases, mutation, calendar);\n                interaction.mutatedEvents = mutatedRelevantEvents;\n                if (!_this.component.isInteractionValid(interaction)) {\n                    isInvalid = true;\n                    mutation = null;\n                    mutatedRelevantEvents = null;\n                    interaction.mutatedEvents = null;\n                }\n            }\n            if (mutatedRelevantEvents) {\n                calendar.dispatch({\n                    type: 'SET_EVENT_RESIZE',\n                    state: interaction\n                });\n            }\n            else {\n                calendar.dispatch({ type: 'UNSET_EVENT_RESIZE' });\n            }\n            if (!isInvalid) {\n                enableCursor();\n            }\n            else {\n                disableCursor();\n            }\n            if (!isFinal) {\n                if (mutation && isHitsEqual(initialHit, hit)) {\n                    mutation = null;\n                }\n                _this.validMutation = mutation;\n                _this.mutatedRelevantEvents = mutatedRelevantEvents;\n            }\n        };\n        _this.handleDragEnd = function (ev) {\n            var _a = _this.component.context, calendar = _a.calendar, view = _a.view;\n            var eventDef = _this.eventRange.def;\n            var eventInstance = _this.eventRange.instance;\n            var eventApi = new EventApi(calendar, eventDef, eventInstance);\n            var relevantEvents = _this.relevantEvents;\n            var mutatedRelevantEvents = _this.mutatedRelevantEvents;\n            calendar.publiclyTrigger('eventResizeStop', [\n                {\n                    el: _this.draggingSeg.el,\n                    event: eventApi,\n                    jsEvent: ev.origEvent,\n                    view: view\n                }\n            ]);\n            if (_this.validMutation) {\n                calendar.dispatch({\n                    type: 'MERGE_EVENTS',\n                    eventStore: mutatedRelevantEvents\n                });\n                calendar.publiclyTrigger('eventResize', [\n                    {\n                        el: _this.draggingSeg.el,\n                        startDelta: _this.validMutation.startDelta || createDuration(0),\n                        endDelta: _this.validMutation.endDelta || createDuration(0),\n                        prevEvent: eventApi,\n                        event: new EventApi(// the data AFTER the mutation\n                        calendar, mutatedRelevantEvents.defs[eventDef.defId], eventInstance ? mutatedRelevantEvents.instances[eventInstance.instanceId] : null),\n                        revert: function () {\n                            calendar.dispatch({\n                                type: 'MERGE_EVENTS',\n                                eventStore: relevantEvents\n                            });\n                        },\n                        jsEvent: ev.origEvent,\n                        view: view\n                    }\n                ]);\n            }\n            else {\n                calendar.publiclyTrigger('_noEventResize');\n            }\n            // reset all internal state\n            _this.draggingSeg = null;\n            _this.relevantEvents = null;\n            _this.validMutation = null;\n            // okay to keep eventInstance around. useful to set it in handlePointerDown\n        };\n        var component = settings.component;\n        var dragging = _this.dragging = new FeaturefulElementDragging(component.el);\n        dragging.pointer.selector = '.fc-resizer';\n        dragging.touchScrollAllowed = false;\n        dragging.autoScroller.isEnabled = component.context.options.dragScroll;\n        var hitDragging = _this.hitDragging = new HitDragging(_this.dragging, interactionSettingsToStore(settings));\n        hitDragging.emitter.on('pointerdown', _this.handlePointerDown);\n        hitDragging.emitter.on('dragstart', _this.handleDragStart);\n        hitDragging.emitter.on('hitupdate', _this.handleHitUpdate);\n        hitDragging.emitter.on('dragend', _this.handleDragEnd);\n        return _this;\n    }\n    EventDragging.prototype.destroy = function () {\n        this.dragging.destroy();\n    };\n    EventDragging.prototype.querySeg = function (ev) {\n        return getElSeg(elementClosest(ev.subjectEl, this.component.fgSegSelector));\n    };\n    return EventDragging;\n}(Interaction));\nexport default EventDragging;\nfunction computeMutation(hit0, hit1, isFromStart, instanceRange, transforms) {\n    var dateEnv = hit0.component.context.dateEnv;\n    var date0 = hit0.dateSpan.range.start;\n    var date1 = hit1.dateSpan.range.start;\n    var delta = diffDates(date0, date1, dateEnv, hit0.component.largeUnit);\n    var props = {};\n    for (var _i = 0, transforms_1 = transforms; _i < transforms_1.length; _i++) {\n        var transform = transforms_1[_i];\n        var res = transform(hit0, hit1);\n        if (res === false) {\n            return null;\n        }\n        else if (res) {\n            __assign(props, res);\n        }\n    }\n    if (isFromStart) {\n        if (dateEnv.add(instanceRange.start, delta) < instanceRange.end) {\n            props.startDelta = delta;\n            return props;\n        }\n    }\n    else {\n        if (dateEnv.add(instanceRange.end, delta) > instanceRange.start) {\n            props.endDelta = delta;\n            return props;\n        }\n    }\n    return null;\n}\n","import { elementClosest } from '@fullcalendar/core';\nimport PointerDragging from '../dnd/PointerDragging';\nimport EventDragging from './EventDragging';\nvar UnselectAuto = /** @class */ (function () {\n    function UnselectAuto(calendar) {\n        var _this = this;\n        this.isRecentPointerDateSelect = false; // wish we could use a selector to detect date selection, but uses hit system\n        this.onSelect = function (selectInfo) {\n            if (selectInfo.jsEvent) {\n                _this.isRecentPointerDateSelect = true;\n            }\n        };\n        this.onDocumentPointerUp = function (pev) {\n            var _a = _this, calendar = _a.calendar, documentPointer = _a.documentPointer;\n            var state = calendar.state;\n            // touch-scrolling should never unfocus any type of selection\n            if (!documentPointer.wasTouchScroll) {\n                if (state.dateSelection && // an existing date selection?\n                    !_this.isRecentPointerDateSelect // a new pointer-initiated date selection since last onDocumentPointerUp?\n                ) {\n                    var unselectAuto = calendar.viewOpt('unselectAuto');\n                    var unselectCancel = calendar.viewOpt('unselectCancel');\n                    if (unselectAuto && (!unselectAuto || !elementClosest(documentPointer.downEl, unselectCancel))) {\n                        calendar.unselect(pev);\n                    }\n                }\n                if (state.eventSelection && // an existing event selected?\n                    !elementClosest(documentPointer.downEl, EventDragging.SELECTOR) // interaction DIDN'T start on an event\n                ) {\n                    calendar.dispatch({ type: 'UNSELECT_EVENT' });\n                }\n            }\n            _this.isRecentPointerDateSelect = false;\n        };\n        this.calendar = calendar;\n        var documentPointer = this.documentPointer = new PointerDragging(document);\n        documentPointer.shouldIgnoreMove = true;\n        documentPointer.shouldWatchScroll = false;\n        documentPointer.emitter.on('pointerup', this.onDocumentPointerUp);\n        /*\n        TODO: better way to know about whether there was a selection with the pointer\n        */\n        calendar.on('select', this.onSelect);\n    }\n    UnselectAuto.prototype.destroy = function () {\n        this.calendar.off('select', this.onSelect);\n        this.documentPointer.destroy();\n    };\n    return UnselectAuto;\n}());\nexport default UnselectAuto;\n","import * as tslib_1 from \"tslib\";\nimport { interactionSettingsStore, parseEventDef, createEventInstance, createEmptyEventStore, eventTupleToStore, config, parseDragMeta, EventApi, elementMatches, enableCursor, disableCursor, isInteractionValid } from '@fullcalendar/core';\nimport HitDragging from '../interactions/HitDragging';\nimport { __assign } from 'tslib';\n/*\nGiven an already instantiated draggable object for one-or-more elements,\nInterprets any dragging as an attempt to drag an events that lives outside\nof a calendar onto a calendar.\n*/\nvar ExternalElementDragging = /** @class */ (function () {\n    function ExternalElementDragging(dragging, suppliedDragMeta) {\n        var _this = this;\n        this.receivingCalendar = null;\n        this.droppableEvent = null; // will exist for all drags, even if create:false\n        this.suppliedDragMeta = null;\n        this.dragMeta = null;\n        this.handleDragStart = function (ev) {\n            _this.dragMeta = _this.buildDragMeta(ev.subjectEl);\n        };\n        this.handleHitUpdate = function (hit, isFinal, ev) {\n            var dragging = _this.hitDragging.dragging;\n            var receivingCalendar = null;\n            var droppableEvent = null;\n            var isInvalid = false;\n            var interaction = {\n                affectedEvents: createEmptyEventStore(),\n                mutatedEvents: createEmptyEventStore(),\n                isEvent: _this.dragMeta.create,\n                origSeg: null\n            };\n            if (hit) {\n                receivingCalendar = hit.component.context.calendar;\n                if (_this.canDropElOnCalendar(ev.subjectEl, receivingCalendar)) {\n                    droppableEvent = computeEventForDateSpan(hit.dateSpan, _this.dragMeta, receivingCalendar);\n                    interaction.mutatedEvents = eventTupleToStore(droppableEvent);\n                    isInvalid = !isInteractionValid(interaction, receivingCalendar);\n                    if (isInvalid) {\n                        interaction.mutatedEvents = createEmptyEventStore();\n                        droppableEvent = null;\n                    }\n                }\n            }\n            _this.displayDrag(receivingCalendar, interaction);\n            // show mirror if no already-rendered mirror element OR if we are shutting down the mirror (?)\n            // TODO: wish we could somehow wait for dispatch to guarantee render\n            dragging.setMirrorIsVisible(isFinal || !droppableEvent || !document.querySelector('.fc-mirror'));\n            if (!isInvalid) {\n                enableCursor();\n            }\n            else {\n                disableCursor();\n            }\n            if (!isFinal) {\n                dragging.setMirrorNeedsRevert(!droppableEvent);\n                _this.receivingCalendar = receivingCalendar;\n                _this.droppableEvent = droppableEvent;\n            }\n        };\n        this.handleDragEnd = function (pev) {\n            var _a = _this, receivingCalendar = _a.receivingCalendar, droppableEvent = _a.droppableEvent;\n            _this.clearDrag();\n            if (receivingCalendar && droppableEvent) {\n                var finalHit = _this.hitDragging.finalHit;\n                var finalView = finalHit.component.context.view;\n                var dragMeta = _this.dragMeta;\n                var arg = tslib_1.__assign({}, receivingCalendar.buildDatePointApi(finalHit.dateSpan), { draggedEl: pev.subjectEl, jsEvent: pev.origEvent, view: finalView });\n                receivingCalendar.publiclyTrigger('drop', [arg]);\n                if (dragMeta.create) {\n                    receivingCalendar.dispatch({\n                        type: 'MERGE_EVENTS',\n                        eventStore: eventTupleToStore(droppableEvent)\n                    });\n                    if (pev.isTouch) {\n                        receivingCalendar.dispatch({\n                            type: 'SELECT_EVENT',\n                            eventInstanceId: droppableEvent.instance.instanceId\n                        });\n                    }\n                    // signal that an external event landed\n                    receivingCalendar.publiclyTrigger('eventReceive', [\n                        {\n                            draggedEl: pev.subjectEl,\n                            event: new EventApi(receivingCalendar, droppableEvent.def, droppableEvent.instance),\n                            view: finalView\n                        }\n                    ]);\n                }\n            }\n            _this.receivingCalendar = null;\n            _this.droppableEvent = null;\n        };\n        var hitDragging = this.hitDragging = new HitDragging(dragging, interactionSettingsStore);\n        hitDragging.requireInitial = false; // will start outside of a component\n        hitDragging.emitter.on('dragstart', this.handleDragStart);\n        hitDragging.emitter.on('hitupdate', this.handleHitUpdate);\n        hitDragging.emitter.on('dragend', this.handleDragEnd);\n        this.suppliedDragMeta = suppliedDragMeta;\n    }\n    ExternalElementDragging.prototype.buildDragMeta = function (subjectEl) {\n        if (typeof this.suppliedDragMeta === 'object') {\n            return parseDragMeta(this.suppliedDragMeta);\n        }\n        else if (typeof this.suppliedDragMeta === 'function') {\n            return parseDragMeta(this.suppliedDragMeta(subjectEl));\n        }\n        else {\n            return getDragMetaFromEl(subjectEl);\n        }\n    };\n    ExternalElementDragging.prototype.displayDrag = function (nextCalendar, state) {\n        var prevCalendar = this.receivingCalendar;\n        if (prevCalendar && prevCalendar !== nextCalendar) {\n            prevCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' });\n        }\n        if (nextCalendar) {\n            nextCalendar.dispatch({ type: 'SET_EVENT_DRAG', state: state });\n        }\n    };\n    ExternalElementDragging.prototype.clearDrag = function () {\n        if (this.receivingCalendar) {\n            this.receivingCalendar.dispatch({ type: 'UNSET_EVENT_DRAG' });\n        }\n    };\n    ExternalElementDragging.prototype.canDropElOnCalendar = function (el, receivingCalendar) {\n        var dropAccept = receivingCalendar.opt('dropAccept');\n        if (typeof dropAccept === 'function') {\n            return dropAccept(el);\n        }\n        else if (typeof dropAccept === 'string' && dropAccept) {\n            return Boolean(elementMatches(el, dropAccept));\n        }\n        return true;\n    };\n    return ExternalElementDragging;\n}());\nexport default ExternalElementDragging;\n// Utils for computing event store from the DragMeta\n// ----------------------------------------------------------------------------------------------------\nfunction computeEventForDateSpan(dateSpan, dragMeta, calendar) {\n    var defProps = tslib_1.__assign({}, dragMeta.leftoverProps);\n    for (var _i = 0, _a = calendar.pluginSystem.hooks.externalDefTransforms; _i < _a.length; _i++) {\n        var transform = _a[_i];\n        __assign(defProps, transform(dateSpan, dragMeta));\n    }\n    var def = parseEventDef(defProps, dragMeta.sourceId, dateSpan.allDay, calendar.opt('forceEventDuration') || Boolean(dragMeta.duration), // hasEnd\n    calendar);\n    var start = dateSpan.range.start;\n    // only rely on time info if drop zone is all-day,\n    // otherwise, we already know the time\n    if (dateSpan.allDay && dragMeta.startTime) {\n        start = calendar.dateEnv.add(start, dragMeta.startTime);\n    }\n    var end = dragMeta.duration ?\n        calendar.dateEnv.add(start, dragMeta.duration) :\n        calendar.getDefaultEventEnd(dateSpan.allDay, start);\n    var instance = createEventInstance(def.defId, { start: start, end: end });\n    return { def: def, instance: instance };\n}\n// Utils for extracting data from element\n// ----------------------------------------------------------------------------------------------------\nfunction getDragMetaFromEl(el) {\n    var str = getEmbeddedElData(el, 'event');\n    var obj = str ?\n        JSON.parse(str) :\n        { create: false }; // if no embedded data, assume no event creation\n    return parseDragMeta(obj);\n}\nconfig.dataAttrPrefix = '';\nfunction getEmbeddedElData(el, name) {\n    var prefix = config.dataAttrPrefix;\n    var prefixedName = (prefix ? prefix + '-' : '') + name;\n    return el.getAttribute('data-' + prefixedName) || '';\n}\n","import { globalDefaults } from '@fullcalendar/core';\nimport FeaturefulElementDragging from '../dnd/FeaturefulElementDragging';\nimport ExternalElementDragging from './ExternalElementDragging';\n/*\nMakes an element (that is *external* to any calendar) draggable.\nCan pass in data that determines how an event will be created when dropped onto a calendar.\nLeverages FullCalendar's internal drag-n-drop functionality WITHOUT a third-party drag system.\n*/\nvar ExternalDraggable = /** @class */ (function () {\n    function ExternalDraggable(el, settings) {\n        var _this = this;\n        if (settings === void 0) { settings = {}; }\n        this.handlePointerDown = function (ev) {\n            var dragging = _this.dragging;\n            var _a = _this.settings, minDistance = _a.minDistance, longPressDelay = _a.longPressDelay;\n            dragging.minDistance =\n                minDistance != null ?\n                    minDistance :\n                    (ev.isTouch ? 0 : globalDefaults.eventDragMinDistance);\n            dragging.delay =\n                ev.isTouch ? // TODO: eventually read eventLongPressDelay instead vvv\n                    (longPressDelay != null ? longPressDelay : globalDefaults.longPressDelay) :\n                    0;\n        };\n        this.handleDragStart = function (ev) {\n            if (ev.isTouch &&\n                _this.dragging.delay &&\n                ev.subjectEl.classList.contains('fc-event')) {\n                _this.dragging.mirror.getMirrorEl().classList.add('fc-selected');\n            }\n        };\n        this.settings = settings;\n        var dragging = this.dragging = new FeaturefulElementDragging(el);\n        dragging.touchScrollAllowed = false;\n        if (settings.itemSelector != null) {\n            dragging.pointer.selector = settings.itemSelector;\n        }\n        if (settings.appendTo != null) {\n            dragging.mirror.parentNode = settings.appendTo; // TODO: write tests\n        }\n        dragging.emitter.on('pointerdown', this.handlePointerDown);\n        dragging.emitter.on('dragstart', this.handleDragStart);\n        new ExternalElementDragging(dragging, settings.eventData);\n    }\n    ExternalDraggable.prototype.destroy = function () {\n        this.dragging.destroy();\n    };\n    return ExternalDraggable;\n}());\nexport default ExternalDraggable;\n","import * as tslib_1 from \"tslib\";\nimport { ElementDragging } from '@fullcalendar/core';\nimport PointerDragging from '../dnd/PointerDragging';\n/*\nDetects when a *THIRD-PARTY* drag-n-drop system interacts with elements.\nThe third-party system is responsible for drawing the visuals effects of the drag.\nThis class simply monitors for pointer movements and fires events.\nIt also has the ability to hide the moving element (the \"mirror\") during the drag.\n*/\nvar InferredElementDragging = /** @class */ (function (_super) {\n    tslib_1.__extends(InferredElementDragging, _super);\n    function InferredElementDragging(containerEl) {\n        var _this = _super.call(this, containerEl) || this;\n        _this.shouldIgnoreMove = false;\n        _this.mirrorSelector = '';\n        _this.currentMirrorEl = null;\n        _this.handlePointerDown = function (ev) {\n            _this.emitter.trigger('pointerdown', ev);\n            if (!_this.shouldIgnoreMove) {\n                // fire dragstart right away. does not support delay or min-distance\n                _this.emitter.trigger('dragstart', ev);\n            }\n        };\n        _this.handlePointerMove = function (ev) {\n            if (!_this.shouldIgnoreMove) {\n                _this.emitter.trigger('dragmove', ev);\n            }\n        };\n        _this.handlePointerUp = function (ev) {\n            _this.emitter.trigger('pointerup', ev);\n            if (!_this.shouldIgnoreMove) {\n                // fire dragend right away. does not support a revert animation\n                _this.emitter.trigger('dragend', ev);\n            }\n        };\n        var pointer = _this.pointer = new PointerDragging(containerEl);\n        pointer.emitter.on('pointerdown', _this.handlePointerDown);\n        pointer.emitter.on('pointermove', _this.handlePointerMove);\n        pointer.emitter.on('pointerup', _this.handlePointerUp);\n        return _this;\n    }\n    InferredElementDragging.prototype.destroy = function () {\n        this.pointer.destroy();\n    };\n    InferredElementDragging.prototype.setIgnoreMove = function (bool) {\n        this.shouldIgnoreMove = bool;\n    };\n    InferredElementDragging.prototype.setMirrorIsVisible = function (bool) {\n        if (bool) {\n            // restore a previously hidden element.\n            // use the reference in case the selector class has already been removed.\n            if (this.currentMirrorEl) {\n                this.currentMirrorEl.style.visibility = '';\n                this.currentMirrorEl = null;\n            }\n        }\n        else {\n            var mirrorEl = this.mirrorSelector ?\n                document.querySelector(this.mirrorSelector) :\n                null;\n            if (mirrorEl) {\n                this.currentMirrorEl = mirrorEl;\n                mirrorEl.style.visibility = 'hidden';\n            }\n        }\n    };\n    return InferredElementDragging;\n}(ElementDragging));\nexport default InferredElementDragging;\n","import ExternalElementDragging from './ExternalElementDragging';\nimport InferredElementDragging from './InferredElementDragging';\n/*\nBridges third-party drag-n-drop systems with FullCalendar.\nMust be instantiated and destroyed by caller.\n*/\nvar ThirdPartyDraggable = /** @class */ (function () {\n    function ThirdPartyDraggable(containerOrSettings, settings) {\n        var containerEl = document;\n        if (\n        // wish we could just test instanceof EventTarget, but doesn't work in IE11\n        containerOrSettings === document ||\n            containerOrSettings instanceof Element) {\n            containerEl = containerOrSettings;\n            settings = settings || {};\n        }\n        else {\n            settings = (containerOrSettings || {});\n        }\n        var dragging = this.dragging = new InferredElementDragging(containerEl);\n        if (typeof settings.itemSelector === 'string') {\n            dragging.pointer.selector = settings.itemSelector;\n        }\n        else if (containerEl === document) {\n            dragging.pointer.selector = '[data-event]';\n        }\n        if (typeof settings.mirrorSelector === 'string') {\n            dragging.mirrorSelector = settings.mirrorSelector;\n        }\n        new ExternalElementDragging(dragging, settings.eventData);\n    }\n    ThirdPartyDraggable.prototype.destroy = function () {\n        this.dragging.destroy();\n    };\n    return ThirdPartyDraggable;\n}());\nexport default ThirdPartyDraggable;\n","import { createPlugin } from '@fullcalendar/core';\nimport DateClicking from './interactions/DateClicking';\nimport DateSelecting from './interactions/DateSelecting';\nimport EventDragging from './interactions/EventDragging';\nimport EventResizing from './interactions/EventResizing';\nimport UnselectAuto from './interactions/UnselectAuto';\nimport FeaturefulElementDragging from './dnd/FeaturefulElementDragging';\nexport default createPlugin({\n    componentInteractions: [DateClicking, DateSelecting, EventDragging, EventResizing],\n    calendarInteractions: [UnselectAuto],\n    elementDraggingImpl: FeaturefulElementDragging\n});\nexport { FeaturefulElementDragging };\nexport { default as PointerDragging } from './dnd/PointerDragging';\nexport { default as Draggable } from './interactions-external/ExternalDraggable';\nexport { default as ThirdPartyDraggable } from './interactions-external/ThirdPartyDraggable';\n"],"names":["tslib_1.__extends","getComponentTouchDelay","tslib_1.__assign","EventDragging","EventResizing"],"mappings":"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"}

?>