Your IP : 3.144.116.34


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

{"version":3,"file":"main.js","sources":["../../../tmp/tsc-output/packages/timegrid/src/TimeGridEventRenderer.js","../../../tmp/tsc-output/packages/timegrid/src/TimeGridMirrorRenderer.js","../../../tmp/tsc-output/packages/timegrid/src/TimeGridFillRenderer.js","../../../tmp/tsc-output/packages/timegrid/src/TimeGrid.js","../../../tmp/tsc-output/packages/timegrid/src/AllDaySplitter.js","../../../tmp/tsc-output/packages/timegrid/src/AbstractTimeGridView.js","../../../tmp/tsc-output/packages/timegrid/src/SimpleTimeGrid.js","../../../tmp/tsc-output/packages/timegrid/src/TimeGridView.js","../../../tmp/tsc-output/packages/timegrid/src/main.js"],"sourcesContent":["import * as tslib_1 from \"tslib\";\nimport { htmlEscape, cssToStr, removeElement, applyStyle, createFormatter, FgEventRenderer, buildSegCompareObj, isMultiDayRange, compareByFieldSpecs, computeEventDraggable, computeEventStartResizable, computeEventEndResizable } from '@fullcalendar/core';\n/*\nOnly handles foreground segs.\nDoes not own rendering. Use for low-level util methods by TimeGrid.\n*/\nvar TimeGridEventRenderer = /** @class */ (function (_super) {\n    tslib_1.__extends(TimeGridEventRenderer, _super);\n    function TimeGridEventRenderer(timeGrid) {\n        var _this = _super.call(this) || this;\n        _this.timeGrid = timeGrid;\n        return _this;\n    }\n    TimeGridEventRenderer.prototype.renderSegs = function (context, segs, mirrorInfo) {\n        _super.prototype.renderSegs.call(this, context, segs, mirrorInfo);\n        // TODO: dont do every time. memoize\n        this.fullTimeFormat = createFormatter({\n            hour: 'numeric',\n            minute: '2-digit',\n            separator: this.context.options.defaultRangeSeparator\n        });\n    };\n    // Given an array of foreground segments, render a DOM element for each, computes position,\n    // and attaches to the column inner-container elements.\n    TimeGridEventRenderer.prototype.attachSegs = function (segs, mirrorInfo) {\n        var segsByCol = this.timeGrid.groupSegsByCol(segs);\n        // order the segs within each column\n        // TODO: have groupSegsByCol do this?\n        for (var col = 0; col < segsByCol.length; col++) {\n            segsByCol[col] = this.sortEventSegs(segsByCol[col]);\n        }\n        this.segsByCol = segsByCol;\n        this.timeGrid.attachSegsByCol(segsByCol, this.timeGrid.fgContainerEls);\n    };\n    TimeGridEventRenderer.prototype.detachSegs = function (segs) {\n        segs.forEach(function (seg) {\n            removeElement(seg.el);\n        });\n        this.segsByCol = null;\n    };\n    TimeGridEventRenderer.prototype.computeSegSizes = function (allSegs) {\n        var _a = this, timeGrid = _a.timeGrid, segsByCol = _a.segsByCol;\n        var colCnt = timeGrid.colCnt;\n        timeGrid.computeSegVerticals(allSegs); // horizontals relies on this\n        if (segsByCol) {\n            for (var col = 0; col < colCnt; col++) {\n                this.computeSegHorizontals(segsByCol[col]); // compute horizontal coordinates, z-index's, and reorder the array\n            }\n        }\n    };\n    TimeGridEventRenderer.prototype.assignSegSizes = function (allSegs) {\n        var _a = this, timeGrid = _a.timeGrid, segsByCol = _a.segsByCol;\n        var colCnt = timeGrid.colCnt;\n        timeGrid.assignSegVerticals(allSegs); // horizontals relies on this\n        if (segsByCol) {\n            for (var col = 0; col < colCnt; col++) {\n                this.assignSegCss(segsByCol[col]);\n            }\n        }\n    };\n    // Computes a default event time formatting string if `eventTimeFormat` is not explicitly defined\n    TimeGridEventRenderer.prototype.computeEventTimeFormat = function () {\n        return {\n            hour: 'numeric',\n            minute: '2-digit',\n            meridiem: false\n        };\n    };\n    // Computes a default `displayEventEnd` value if one is not expliclty defined\n    TimeGridEventRenderer.prototype.computeDisplayEventEnd = function () {\n        return true;\n    };\n    // Renders the HTML for a single event segment's default rendering\n    TimeGridEventRenderer.prototype.renderSegHtml = function (seg, mirrorInfo) {\n        var eventRange = seg.eventRange;\n        var eventDef = eventRange.def;\n        var eventUi = eventRange.ui;\n        var allDay = eventDef.allDay;\n        var isDraggable = computeEventDraggable(this.context, eventDef, eventUi);\n        var isResizableFromStart = seg.isStart && computeEventStartResizable(this.context, eventDef, eventUi);\n        var isResizableFromEnd = seg.isEnd && computeEventEndResizable(this.context, eventDef, eventUi);\n        var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd, mirrorInfo);\n        var skinCss = cssToStr(this.getSkinCss(eventUi));\n        var timeText;\n        var fullTimeText; // more verbose time text. for the print stylesheet\n        var startTimeText; // just the start time text\n        classes.unshift('fc-time-grid-event');\n        // if the event appears to span more than one day...\n        if (isMultiDayRange(eventRange.range)) {\n            // Don't display time text on segments that run entirely through a day.\n            // That would appear as midnight-midnight and would look dumb.\n            // Otherwise, display the time text for the *segment's* times (like 6pm-midnight or midnight-10am)\n            if (seg.isStart || seg.isEnd) {\n                var unzonedStart = seg.start;\n                var unzonedEnd = seg.end;\n                timeText = this._getTimeText(unzonedStart, unzonedEnd, allDay); // TODO: give the timezones\n                fullTimeText = this._getTimeText(unzonedStart, unzonedEnd, allDay, this.fullTimeFormat);\n                startTimeText = this._getTimeText(unzonedStart, unzonedEnd, allDay, null, false); // displayEnd=false\n            }\n        }\n        else {\n            // Display the normal time text for the *event's* times\n            timeText = this.getTimeText(eventRange);\n            fullTimeText = this.getTimeText(eventRange, this.fullTimeFormat);\n            startTimeText = this.getTimeText(eventRange, null, false); // displayEnd=false\n        }\n        return '<a class=\"' + classes.join(' ') + '\"' +\n            (eventDef.url ?\n                ' href=\"' + htmlEscape(eventDef.url) + '\"' :\n                '') +\n            (skinCss ?\n                ' style=\"' + skinCss + '\"' :\n                '') +\n            '>' +\n            '<div class=\"fc-content\">' +\n            (timeText ?\n                '<div class=\"fc-time\"' +\n                    ' data-start=\"' + htmlEscape(startTimeText) + '\"' +\n                    ' data-full=\"' + htmlEscape(fullTimeText) + '\"' +\n                    '>' +\n                    '<span>' + htmlEscape(timeText) + '</span>' +\n                    '</div>' :\n                '') +\n            (eventDef.title ?\n                '<div class=\"fc-title\">' +\n                    htmlEscape(eventDef.title) +\n                    '</div>' :\n                '') +\n            '</div>' +\n            /* TODO: write CSS for this\n            (isResizableFromStart ?\n              '<div class=\"fc-resizer fc-start-resizer\"></div>' :\n              ''\n              ) +\n            */\n            (isResizableFromEnd ?\n                '<div class=\"fc-resizer fc-end-resizer\"></div>' :\n                '') +\n            '</a>';\n    };\n    // Given an array of segments that are all in the same column, sets the backwardCoord and forwardCoord on each.\n    // Assumed the segs are already ordered.\n    // NOTE: Also reorders the given array by date!\n    TimeGridEventRenderer.prototype.computeSegHorizontals = function (segs) {\n        var levels;\n        var level0;\n        var i;\n        levels = buildSlotSegLevels(segs);\n        computeForwardSlotSegs(levels);\n        if ((level0 = levels[0])) {\n            for (i = 0; i < level0.length; i++) {\n                computeSlotSegPressures(level0[i]);\n            }\n            for (i = 0; i < level0.length; i++) {\n                this.computeSegForwardBack(level0[i], 0, 0);\n            }\n        }\n    };\n    // Calculate seg.forwardCoord and seg.backwardCoord for the segment, where both values range\n    // from 0 to 1. If the calendar is left-to-right, the seg.backwardCoord maps to \"left\" and\n    // seg.forwardCoord maps to \"right\" (via percentage). Vice-versa if the calendar is right-to-left.\n    //\n    // The segment might be part of a \"series\", which means consecutive segments with the same pressure\n    // who's width is unknown until an edge has been hit. `seriesBackwardPressure` is the number of\n    // segments behind this one in the current series, and `seriesBackwardCoord` is the starting\n    // coordinate of the first segment in the series.\n    TimeGridEventRenderer.prototype.computeSegForwardBack = function (seg, seriesBackwardPressure, seriesBackwardCoord) {\n        var forwardSegs = seg.forwardSegs;\n        var i;\n        if (seg.forwardCoord === undefined) { // not already computed\n            if (!forwardSegs.length) {\n                // if there are no forward segments, this segment should butt up against the edge\n                seg.forwardCoord = 1;\n            }\n            else {\n                // sort highest pressure first\n                this.sortForwardSegs(forwardSegs);\n                // this segment's forwardCoord will be calculated from the backwardCoord of the\n                // highest-pressure forward segment.\n                this.computeSegForwardBack(forwardSegs[0], seriesBackwardPressure + 1, seriesBackwardCoord);\n                seg.forwardCoord = forwardSegs[0].backwardCoord;\n            }\n            // calculate the backwardCoord from the forwardCoord. consider the series\n            seg.backwardCoord = seg.forwardCoord -\n                (seg.forwardCoord - seriesBackwardCoord) / // available width for series\n                    (seriesBackwardPressure + 1); // # of segments in the series\n            // use this segment's coordinates to computed the coordinates of the less-pressurized\n            // forward segments\n            for (i = 0; i < forwardSegs.length; i++) {\n                this.computeSegForwardBack(forwardSegs[i], 0, seg.forwardCoord);\n            }\n        }\n    };\n    TimeGridEventRenderer.prototype.sortForwardSegs = function (forwardSegs) {\n        var objs = forwardSegs.map(buildTimeGridSegCompareObj);\n        var specs = [\n            // put higher-pressure first\n            { field: 'forwardPressure', order: -1 },\n            // put segments that are closer to initial edge first (and favor ones with no coords yet)\n            { field: 'backwardCoord', order: 1 }\n        ].concat(this.context.eventOrderSpecs);\n        objs.sort(function (obj0, obj1) {\n            return compareByFieldSpecs(obj0, obj1, specs);\n        });\n        return objs.map(function (c) {\n            return c._seg;\n        });\n    };\n    // Given foreground event segments that have already had their position coordinates computed,\n    // assigns position-related CSS values to their elements.\n    TimeGridEventRenderer.prototype.assignSegCss = function (segs) {\n        for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {\n            var seg = segs_1[_i];\n            applyStyle(seg.el, this.generateSegCss(seg));\n            if (seg.level > 0) {\n                seg.el.classList.add('fc-time-grid-event-inset');\n            }\n            // if the event is short that the title will be cut off,\n            // attach a className that condenses the title into the time area.\n            if (seg.eventRange.def.title && seg.bottom - seg.top < 30) {\n                seg.el.classList.add('fc-short'); // TODO: \"condensed\" is a better name\n            }\n        }\n    };\n    // Generates an object with CSS properties/values that should be applied to an event segment element.\n    // Contains important positioning-related properties that should be applied to any event element, customized or not.\n    TimeGridEventRenderer.prototype.generateSegCss = function (seg) {\n        var shouldOverlap = this.context.options.slotEventOverlap;\n        var backwardCoord = seg.backwardCoord; // the left side if LTR. the right side if RTL. floating-point\n        var forwardCoord = seg.forwardCoord; // the right side if LTR. the left side if RTL. floating-point\n        var props = this.timeGrid.generateSegVerticalCss(seg); // get top/bottom first\n        var isRtl = this.context.isRtl;\n        var left; // amount of space from left edge, a fraction of the total width\n        var right; // amount of space from right edge, a fraction of the total width\n        if (shouldOverlap) {\n            // double the width, but don't go beyond the maximum forward coordinate (1.0)\n            forwardCoord = Math.min(1, backwardCoord + (forwardCoord - backwardCoord) * 2);\n        }\n        if (isRtl) {\n            left = 1 - forwardCoord;\n            right = backwardCoord;\n        }\n        else {\n            left = backwardCoord;\n            right = 1 - forwardCoord;\n        }\n        props.zIndex = seg.level + 1; // convert from 0-base to 1-based\n        props.left = left * 100 + '%';\n        props.right = right * 100 + '%';\n        if (shouldOverlap && seg.forwardPressure) {\n            // add padding to the edge so that forward stacked events don't cover the resizer's icon\n            props[isRtl ? 'marginLeft' : 'marginRight'] = 10 * 2; // 10 is a guesstimate of the icon's width\n        }\n        return props;\n    };\n    return TimeGridEventRenderer;\n}(FgEventRenderer));\nexport default TimeGridEventRenderer;\n// Builds an array of segments \"levels\". The first level will be the leftmost tier of segments if the calendar is\n// left-to-right, or the rightmost if the calendar is right-to-left. Assumes the segments are already ordered by date.\nfunction buildSlotSegLevels(segs) {\n    var levels = [];\n    var i;\n    var seg;\n    var j;\n    for (i = 0; i < segs.length; i++) {\n        seg = segs[i];\n        // go through all the levels and stop on the first level where there are no collisions\n        for (j = 0; j < levels.length; j++) {\n            if (!computeSlotSegCollisions(seg, levels[j]).length) {\n                break;\n            }\n        }\n        seg.level = j;\n        (levels[j] || (levels[j] = [])).push(seg);\n    }\n    return levels;\n}\n// For every segment, figure out the other segments that are in subsequent\n// levels that also occupy the same vertical space. Accumulate in seg.forwardSegs\nfunction computeForwardSlotSegs(levels) {\n    var i;\n    var level;\n    var j;\n    var seg;\n    var k;\n    for (i = 0; i < levels.length; i++) {\n        level = levels[i];\n        for (j = 0; j < level.length; j++) {\n            seg = level[j];\n            seg.forwardSegs = [];\n            for (k = i + 1; k < levels.length; k++) {\n                computeSlotSegCollisions(seg, levels[k], seg.forwardSegs);\n            }\n        }\n    }\n}\n// Figure out which path forward (via seg.forwardSegs) results in the longest path until\n// the furthest edge is reached. The number of segments in this path will be seg.forwardPressure\nfunction computeSlotSegPressures(seg) {\n    var forwardSegs = seg.forwardSegs;\n    var forwardPressure = 0;\n    var i;\n    var forwardSeg;\n    if (seg.forwardPressure === undefined) { // not already computed\n        for (i = 0; i < forwardSegs.length; i++) {\n            forwardSeg = forwardSegs[i];\n            // figure out the child's maximum forward path\n            computeSlotSegPressures(forwardSeg);\n            // either use the existing maximum, or use the child's forward pressure\n            // plus one (for the forwardSeg itself)\n            forwardPressure = Math.max(forwardPressure, 1 + forwardSeg.forwardPressure);\n        }\n        seg.forwardPressure = forwardPressure;\n    }\n}\n// Find all the segments in `otherSegs` that vertically collide with `seg`.\n// Append into an optionally-supplied `results` array and return.\nfunction computeSlotSegCollisions(seg, otherSegs, results) {\n    if (results === void 0) { results = []; }\n    for (var i = 0; i < otherSegs.length; i++) {\n        if (isSlotSegCollision(seg, otherSegs[i])) {\n            results.push(otherSegs[i]);\n        }\n    }\n    return results;\n}\n// Do these segments occupy the same vertical space?\nfunction isSlotSegCollision(seg1, seg2) {\n    return seg1.bottom > seg2.top && seg1.top < seg2.bottom;\n}\nfunction buildTimeGridSegCompareObj(seg) {\n    var obj = buildSegCompareObj(seg);\n    obj.forwardPressure = seg.forwardPressure;\n    obj.backwardCoord = seg.backwardCoord;\n    return obj;\n}\n","import * as tslib_1 from \"tslib\";\nimport TimeGridEventRenderer from './TimeGridEventRenderer';\nvar TimeGridMirrorRenderer = /** @class */ (function (_super) {\n    tslib_1.__extends(TimeGridMirrorRenderer, _super);\n    function TimeGridMirrorRenderer() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    TimeGridMirrorRenderer.prototype.attachSegs = function (segs, mirrorInfo) {\n        this.segsByCol = this.timeGrid.groupSegsByCol(segs);\n        this.timeGrid.attachSegsByCol(this.segsByCol, this.timeGrid.mirrorContainerEls);\n        this.sourceSeg = mirrorInfo.sourceSeg;\n    };\n    TimeGridMirrorRenderer.prototype.generateSegCss = function (seg) {\n        var props = _super.prototype.generateSegCss.call(this, seg);\n        var sourceSeg = this.sourceSeg;\n        if (sourceSeg && sourceSeg.col === seg.col) {\n            var sourceSegProps = _super.prototype.generateSegCss.call(this, sourceSeg);\n            props.left = sourceSegProps.left;\n            props.right = sourceSegProps.right;\n            props.marginLeft = sourceSegProps.marginLeft;\n            props.marginRight = sourceSegProps.marginRight;\n        }\n        return props;\n    };\n    return TimeGridMirrorRenderer;\n}(TimeGridEventRenderer));\nexport default TimeGridMirrorRenderer;\n","import * as tslib_1 from \"tslib\";\nimport { FillRenderer } from '@fullcalendar/core';\nvar TimeGridFillRenderer = /** @class */ (function (_super) {\n    tslib_1.__extends(TimeGridFillRenderer, _super);\n    function TimeGridFillRenderer(timeGrid) {\n        var _this = _super.call(this) || this;\n        _this.timeGrid = timeGrid;\n        return _this;\n    }\n    TimeGridFillRenderer.prototype.attachSegs = function (type, segs) {\n        var timeGrid = this.timeGrid;\n        var containerEls;\n        // TODO: more efficient lookup\n        if (type === 'bgEvent') {\n            containerEls = timeGrid.bgContainerEls;\n        }\n        else if (type === 'businessHours') {\n            containerEls = timeGrid.businessContainerEls;\n        }\n        else if (type === 'highlight') {\n            containerEls = timeGrid.highlightContainerEls;\n        }\n        timeGrid.attachSegsByCol(timeGrid.groupSegsByCol(segs), containerEls);\n        return segs.map(function (seg) {\n            return seg.el;\n        });\n    };\n    TimeGridFillRenderer.prototype.computeSegSizes = function (segs) {\n        this.timeGrid.computeSegVerticals(segs);\n    };\n    TimeGridFillRenderer.prototype.assignSegSizes = function (segs) {\n        this.timeGrid.assignSegVerticals(segs);\n    };\n    return TimeGridFillRenderer;\n}(FillRenderer));\nexport default TimeGridFillRenderer;\n","import * as tslib_1 from \"tslib\";\nimport { htmlEscape, htmlToElement, findElements, removeElement, applyStyle, createElement, PositionCache, createDuration, addDurations, multiplyDuration, wholeDivideDurations, asRoughMs, startOfDay, createFormatter, formatIsoTimeString, DateComponent, memoizeRendering, memoize } from '@fullcalendar/core';\nimport { DayBgRow } from '@fullcalendar/daygrid';\nimport TimeGridEventRenderer from './TimeGridEventRenderer';\nimport TimeGridMirrorRenderer from './TimeGridMirrorRenderer';\nimport TimeGridFillRenderer from './TimeGridFillRenderer';\n/* A component that renders one or more columns of vertical time slots\n----------------------------------------------------------------------------------------------------------------------*/\n// potential nice values for the slot-duration and interval-duration\n// from largest to smallest\nvar AGENDA_STOCK_SUB_DURATIONS = [\n    { hours: 1 },\n    { minutes: 30 },\n    { minutes: 15 },\n    { seconds: 30 },\n    { seconds: 15 }\n];\nvar TimeGrid = /** @class */ (function (_super) {\n    tslib_1.__extends(TimeGrid, _super);\n    function TimeGrid(el, renderProps) {\n        var _this = _super.call(this, el) || this;\n        _this.isSlatSizesDirty = false;\n        _this.isColSizesDirty = false;\n        _this.processOptions = memoize(_this._processOptions);\n        _this.renderSkeleton = memoizeRendering(_this._renderSkeleton);\n        _this.renderSlats = memoizeRendering(_this._renderSlats, null, [_this.renderSkeleton]);\n        _this.renderColumns = memoizeRendering(_this._renderColumns, _this._unrenderColumns, [_this.renderSkeleton]);\n        _this.renderProps = renderProps;\n        var renderColumns = _this.renderColumns;\n        var eventRenderer = _this.eventRenderer = new TimeGridEventRenderer(_this);\n        var fillRenderer = _this.fillRenderer = new TimeGridFillRenderer(_this);\n        _this.mirrorRenderer = new TimeGridMirrorRenderer(_this);\n        _this.renderBusinessHours = memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'businessHours'), fillRenderer.unrender.bind(fillRenderer, 'businessHours'), [renderColumns]);\n        _this.renderDateSelection = memoizeRendering(_this._renderDateSelection, _this._unrenderDateSelection, [renderColumns]);\n        _this.renderFgEvents = memoizeRendering(eventRenderer.renderSegs.bind(eventRenderer), eventRenderer.unrender.bind(eventRenderer), [renderColumns]);\n        _this.renderBgEvents = memoizeRendering(fillRenderer.renderSegs.bind(fillRenderer, 'bgEvent'), fillRenderer.unrender.bind(fillRenderer, 'bgEvent'), [renderColumns]);\n        _this.renderEventSelection = memoizeRendering(eventRenderer.selectByInstanceId.bind(eventRenderer), eventRenderer.unselectByInstanceId.bind(eventRenderer), [_this.renderFgEvents]);\n        _this.renderEventDrag = memoizeRendering(_this._renderEventDrag, _this._unrenderEventDrag, [renderColumns]);\n        _this.renderEventResize = memoizeRendering(_this._renderEventResize, _this._unrenderEventResize, [renderColumns]);\n        return _this;\n    }\n    /* Options\n    ------------------------------------------------------------------------------------------------------------------*/\n    // Parses various options into properties of this object\n    // MUST have context already set\n    TimeGrid.prototype._processOptions = function (options) {\n        var slotDuration = options.slotDuration, snapDuration = options.snapDuration;\n        var snapsPerSlot;\n        var input;\n        slotDuration = createDuration(slotDuration);\n        snapDuration = snapDuration ? createDuration(snapDuration) : slotDuration;\n        snapsPerSlot = wholeDivideDurations(slotDuration, snapDuration);\n        if (snapsPerSlot === null) {\n            snapDuration = slotDuration;\n            snapsPerSlot = 1;\n            // TODO: say warning?\n        }\n        this.slotDuration = slotDuration;\n        this.snapDuration = snapDuration;\n        this.snapsPerSlot = snapsPerSlot;\n        // might be an array value (for TimelineView).\n        // if so, getting the most granular entry (the last one probably).\n        input = options.slotLabelFormat;\n        if (Array.isArray(input)) {\n            input = input[input.length - 1];\n        }\n        this.labelFormat = createFormatter(input || {\n            hour: 'numeric',\n            minute: '2-digit',\n            omitZeroMinute: true,\n            meridiem: 'short'\n        });\n        input = options.slotLabelInterval;\n        this.labelInterval = input ?\n            createDuration(input) :\n            this.computeLabelInterval(slotDuration);\n    };\n    // Computes an automatic value for slotLabelInterval\n    TimeGrid.prototype.computeLabelInterval = function (slotDuration) {\n        var i;\n        var labelInterval;\n        var slotsPerLabel;\n        // find the smallest stock label interval that results in more than one slots-per-label\n        for (i = AGENDA_STOCK_SUB_DURATIONS.length - 1; i >= 0; i--) {\n            labelInterval = createDuration(AGENDA_STOCK_SUB_DURATIONS[i]);\n            slotsPerLabel = wholeDivideDurations(labelInterval, slotDuration);\n            if (slotsPerLabel !== null && slotsPerLabel > 1) {\n                return labelInterval;\n            }\n        }\n        return slotDuration; // fall back\n    };\n    /* Rendering\n    ------------------------------------------------------------------------------------------------------------------*/\n    TimeGrid.prototype.render = function (props, context) {\n        this.processOptions(context.options);\n        var cells = props.cells;\n        this.colCnt = cells.length;\n        this.renderSkeleton(context.theme);\n        this.renderSlats(props.dateProfile);\n        this.renderColumns(props.cells, props.dateProfile);\n        this.renderBusinessHours(context, props.businessHourSegs);\n        this.renderDateSelection(props.dateSelectionSegs);\n        this.renderFgEvents(context, props.fgEventSegs);\n        this.renderBgEvents(context, props.bgEventSegs);\n        this.renderEventSelection(props.eventSelection);\n        this.renderEventDrag(props.eventDrag);\n        this.renderEventResize(props.eventResize);\n    };\n    TimeGrid.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n        // should unrender everything else too\n        this.renderSlats.unrender();\n        this.renderColumns.unrender();\n        this.renderSkeleton.unrender();\n    };\n    TimeGrid.prototype.updateSize = function (isResize) {\n        var _a = this, fillRenderer = _a.fillRenderer, eventRenderer = _a.eventRenderer, mirrorRenderer = _a.mirrorRenderer;\n        if (isResize || this.isSlatSizesDirty) {\n            this.buildSlatPositions();\n            this.isSlatSizesDirty = false;\n        }\n        if (isResize || this.isColSizesDirty) {\n            this.buildColPositions();\n            this.isColSizesDirty = false;\n        }\n        fillRenderer.computeSizes(isResize);\n        eventRenderer.computeSizes(isResize);\n        mirrorRenderer.computeSizes(isResize);\n        fillRenderer.assignSizes(isResize);\n        eventRenderer.assignSizes(isResize);\n        mirrorRenderer.assignSizes(isResize);\n    };\n    TimeGrid.prototype._renderSkeleton = function (theme) {\n        var el = this.el;\n        el.innerHTML =\n            '<div class=\"fc-bg\"></div>' +\n                '<div class=\"fc-slats\"></div>' +\n                '<hr class=\"fc-divider ' + theme.getClass('widgetHeader') + '\" style=\"display:none\" />';\n        this.rootBgContainerEl = el.querySelector('.fc-bg');\n        this.slatContainerEl = el.querySelector('.fc-slats');\n        this.bottomRuleEl = el.querySelector('.fc-divider');\n    };\n    TimeGrid.prototype._renderSlats = function (dateProfile) {\n        var theme = this.context.theme;\n        this.slatContainerEl.innerHTML =\n            '<table class=\"' + theme.getClass('tableGrid') + '\">' +\n                this.renderSlatRowHtml(dateProfile) +\n                '</table>';\n        this.slatEls = findElements(this.slatContainerEl, 'tr');\n        this.slatPositions = new PositionCache(this.el, this.slatEls, false, true // vertical\n        );\n        this.isSlatSizesDirty = true;\n    };\n    // Generates the HTML for the horizontal \"slats\" that run width-wise. Has a time axis on a side. Depends on RTL.\n    TimeGrid.prototype.renderSlatRowHtml = function (dateProfile) {\n        var _a = this.context, dateEnv = _a.dateEnv, theme = _a.theme, isRtl = _a.isRtl;\n        var html = '';\n        var dayStart = startOfDay(dateProfile.renderRange.start);\n        var slotTime = dateProfile.minTime;\n        var slotIterator = createDuration(0);\n        var slotDate; // will be on the view's first day, but we only care about its time\n        var isLabeled;\n        var axisHtml;\n        // Calculate the time for each slot\n        while (asRoughMs(slotTime) < asRoughMs(dateProfile.maxTime)) {\n            slotDate = dateEnv.add(dayStart, slotTime);\n            isLabeled = wholeDivideDurations(slotIterator, this.labelInterval) !== null;\n            axisHtml =\n                '<td class=\"fc-axis fc-time ' + theme.getClass('widgetContent') + '\">' +\n                    (isLabeled ?\n                        '<span>' + // for matchCellWidths\n                            htmlEscape(dateEnv.format(slotDate, this.labelFormat)) +\n                            '</span>' :\n                        '') +\n                    '</td>';\n            html +=\n                '<tr data-time=\"' + formatIsoTimeString(slotDate) + '\"' +\n                    (isLabeled ? '' : ' class=\"fc-minor\"') +\n                    '>' +\n                    (!isRtl ? axisHtml : '') +\n                    '<td class=\"' + theme.getClass('widgetContent') + '\"></td>' +\n                    (isRtl ? axisHtml : '') +\n                    '</tr>';\n            slotTime = addDurations(slotTime, this.slotDuration);\n            slotIterator = addDurations(slotIterator, this.slotDuration);\n        }\n        return html;\n    };\n    TimeGrid.prototype._renderColumns = function (cells, dateProfile) {\n        var _a = this.context, calendar = _a.calendar, view = _a.view, isRtl = _a.isRtl, theme = _a.theme, dateEnv = _a.dateEnv;\n        var bgRow = new DayBgRow(this.context);\n        this.rootBgContainerEl.innerHTML =\n            '<table class=\"' + theme.getClass('tableGrid') + '\">' +\n                bgRow.renderHtml({\n                    cells: cells,\n                    dateProfile: dateProfile,\n                    renderIntroHtml: this.renderProps.renderBgIntroHtml\n                }) +\n                '</table>';\n        this.colEls = findElements(this.el, '.fc-day, .fc-disabled-day');\n        for (var col = 0; col < this.colCnt; col++) {\n            calendar.publiclyTrigger('dayRender', [\n                {\n                    date: dateEnv.toDate(cells[col].date),\n                    el: this.colEls[col],\n                    view: view\n                }\n            ]);\n        }\n        if (isRtl) {\n            this.colEls.reverse();\n        }\n        this.colPositions = new PositionCache(this.el, this.colEls, true, // horizontal\n        false);\n        this.renderContentSkeleton();\n        this.isColSizesDirty = true;\n    };\n    TimeGrid.prototype._unrenderColumns = function () {\n        this.unrenderContentSkeleton();\n    };\n    /* Content Skeleton\n    ------------------------------------------------------------------------------------------------------------------*/\n    // Renders the DOM that the view's content will live in\n    TimeGrid.prototype.renderContentSkeleton = function () {\n        var isRtl = this.context.isRtl;\n        var parts = [];\n        var skeletonEl;\n        parts.push(this.renderProps.renderIntroHtml());\n        for (var i = 0; i < this.colCnt; i++) {\n            parts.push('<td>' +\n                '<div class=\"fc-content-col\">' +\n                '<div class=\"fc-event-container fc-mirror-container\"></div>' +\n                '<div class=\"fc-event-container\"></div>' +\n                '<div class=\"fc-highlight-container\"></div>' +\n                '<div class=\"fc-bgevent-container\"></div>' +\n                '<div class=\"fc-business-container\"></div>' +\n                '</div>' +\n                '</td>');\n        }\n        if (isRtl) {\n            parts.reverse();\n        }\n        skeletonEl = this.contentSkeletonEl = htmlToElement('<div class=\"fc-content-skeleton\">' +\n            '<table>' +\n            '<tr>' + parts.join('') + '</tr>' +\n            '</table>' +\n            '</div>');\n        this.colContainerEls = findElements(skeletonEl, '.fc-content-col');\n        this.mirrorContainerEls = findElements(skeletonEl, '.fc-mirror-container');\n        this.fgContainerEls = findElements(skeletonEl, '.fc-event-container:not(.fc-mirror-container)');\n        this.bgContainerEls = findElements(skeletonEl, '.fc-bgevent-container');\n        this.highlightContainerEls = findElements(skeletonEl, '.fc-highlight-container');\n        this.businessContainerEls = findElements(skeletonEl, '.fc-business-container');\n        if (isRtl) {\n            this.colContainerEls.reverse();\n            this.mirrorContainerEls.reverse();\n            this.fgContainerEls.reverse();\n            this.bgContainerEls.reverse();\n            this.highlightContainerEls.reverse();\n            this.businessContainerEls.reverse();\n        }\n        this.el.appendChild(skeletonEl);\n    };\n    TimeGrid.prototype.unrenderContentSkeleton = function () {\n        removeElement(this.contentSkeletonEl);\n    };\n    // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's col\n    TimeGrid.prototype.groupSegsByCol = function (segs) {\n        var segsByCol = [];\n        var i;\n        for (i = 0; i < this.colCnt; i++) {\n            segsByCol.push([]);\n        }\n        for (i = 0; i < segs.length; i++) {\n            segsByCol[segs[i].col].push(segs[i]);\n        }\n        return segsByCol;\n    };\n    // Given segments grouped by column, insert the segments' elements into a parallel array of container\n    // elements, each living within a column.\n    TimeGrid.prototype.attachSegsByCol = function (segsByCol, containerEls) {\n        var col;\n        var segs;\n        var i;\n        for (col = 0; col < this.colCnt; col++) { // iterate each column grouping\n            segs = segsByCol[col];\n            for (i = 0; i < segs.length; i++) {\n                containerEls[col].appendChild(segs[i].el);\n            }\n        }\n    };\n    /* Now Indicator\n    ------------------------------------------------------------------------------------------------------------------*/\n    TimeGrid.prototype.getNowIndicatorUnit = function () {\n        return 'minute'; // will refresh on the minute\n    };\n    TimeGrid.prototype.renderNowIndicator = function (segs, date) {\n        // HACK: if date columns not ready for some reason (scheduler)\n        if (!this.colContainerEls) {\n            return;\n        }\n        var top = this.computeDateTop(date);\n        var nodes = [];\n        var i;\n        // render lines within the columns\n        for (i = 0; i < segs.length; i++) {\n            var lineEl = createElement('div', { className: 'fc-now-indicator fc-now-indicator-line' });\n            lineEl.style.top = top + 'px';\n            this.colContainerEls[segs[i].col].appendChild(lineEl);\n            nodes.push(lineEl);\n        }\n        // render an arrow over the axis\n        if (segs.length > 0) { // is the current time in view?\n            var arrowEl = createElement('div', { className: 'fc-now-indicator fc-now-indicator-arrow' });\n            arrowEl.style.top = top + 'px';\n            this.contentSkeletonEl.appendChild(arrowEl);\n            nodes.push(arrowEl);\n        }\n        this.nowIndicatorEls = nodes;\n    };\n    TimeGrid.prototype.unrenderNowIndicator = function () {\n        if (this.nowIndicatorEls) {\n            this.nowIndicatorEls.forEach(removeElement);\n            this.nowIndicatorEls = null;\n        }\n    };\n    /* Coordinates\n    ------------------------------------------------------------------------------------------------------------------*/\n    TimeGrid.prototype.getTotalSlatHeight = function () {\n        return this.slatContainerEl.getBoundingClientRect().height;\n    };\n    // Computes the top coordinate, relative to the bounds of the grid, of the given date.\n    // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight.\n    TimeGrid.prototype.computeDateTop = function (when, startOfDayDate) {\n        if (!startOfDayDate) {\n            startOfDayDate = startOfDay(when);\n        }\n        return this.computeTimeTop(createDuration(when.valueOf() - startOfDayDate.valueOf()));\n    };\n    // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration).\n    TimeGrid.prototype.computeTimeTop = function (duration) {\n        var len = this.slatEls.length;\n        var dateProfile = this.props.dateProfile;\n        var slatCoverage = (duration.milliseconds - asRoughMs(dateProfile.minTime)) / asRoughMs(this.slotDuration); // floating-point value of # of slots covered\n        var slatIndex;\n        var slatRemainder;\n        // compute a floating-point number for how many slats should be progressed through.\n        // from 0 to number of slats (inclusive)\n        // constrained because minTime/maxTime might be customized.\n        slatCoverage = Math.max(0, slatCoverage);\n        slatCoverage = Math.min(len, slatCoverage);\n        // an integer index of the furthest whole slat\n        // from 0 to number slats (*exclusive*, so len-1)\n        slatIndex = Math.floor(slatCoverage);\n        slatIndex = Math.min(slatIndex, len - 1);\n        // how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition.\n        // could be 1.0 if slatCoverage is covering *all* the slots\n        slatRemainder = slatCoverage - slatIndex;\n        return this.slatPositions.tops[slatIndex] +\n            this.slatPositions.getHeight(slatIndex) * slatRemainder;\n    };\n    // For each segment in an array, computes and assigns its top and bottom properties\n    TimeGrid.prototype.computeSegVerticals = function (segs) {\n        var options = this.context.options;\n        var eventMinHeight = options.timeGridEventMinHeight;\n        var i;\n        var seg;\n        var dayDate;\n        for (i = 0; i < segs.length; i++) {\n            seg = segs[i];\n            dayDate = this.props.cells[seg.col].date;\n            seg.top = this.computeDateTop(seg.start, dayDate);\n            seg.bottom = Math.max(seg.top + eventMinHeight, this.computeDateTop(seg.end, dayDate));\n        }\n    };\n    // Given segments that already have their top/bottom properties computed, applies those values to\n    // the segments' elements.\n    TimeGrid.prototype.assignSegVerticals = function (segs) {\n        var i;\n        var seg;\n        for (i = 0; i < segs.length; i++) {\n            seg = segs[i];\n            applyStyle(seg.el, this.generateSegVerticalCss(seg));\n        }\n    };\n    // Generates an object with CSS properties for the top/bottom coordinates of a segment element\n    TimeGrid.prototype.generateSegVerticalCss = function (seg) {\n        return {\n            top: seg.top,\n            bottom: -seg.bottom // flipped because needs to be space beyond bottom edge of event container\n        };\n    };\n    /* Sizing\n    ------------------------------------------------------------------------------------------------------------------*/\n    TimeGrid.prototype.buildPositionCaches = function () {\n        this.buildColPositions();\n        this.buildSlatPositions();\n    };\n    TimeGrid.prototype.buildColPositions = function () {\n        this.colPositions.build();\n    };\n    TimeGrid.prototype.buildSlatPositions = function () {\n        this.slatPositions.build();\n    };\n    /* Hit System\n    ------------------------------------------------------------------------------------------------------------------*/\n    TimeGrid.prototype.positionToHit = function (positionLeft, positionTop) {\n        var dateEnv = this.context.dateEnv;\n        var _a = this, snapsPerSlot = _a.snapsPerSlot, slatPositions = _a.slatPositions, colPositions = _a.colPositions;\n        var colIndex = colPositions.leftToIndex(positionLeft);\n        var slatIndex = slatPositions.topToIndex(positionTop);\n        if (colIndex != null && slatIndex != null) {\n            var slatTop = slatPositions.tops[slatIndex];\n            var slatHeight = slatPositions.getHeight(slatIndex);\n            var partial = (positionTop - slatTop) / slatHeight; // floating point number between 0 and 1\n            var localSnapIndex = Math.floor(partial * snapsPerSlot); // the snap # relative to start of slat\n            var snapIndex = slatIndex * snapsPerSlot + localSnapIndex;\n            var dayDate = this.props.cells[colIndex].date;\n            var time = addDurations(this.props.dateProfile.minTime, multiplyDuration(this.snapDuration, snapIndex));\n            var start = dateEnv.add(dayDate, time);\n            var end = dateEnv.add(start, this.snapDuration);\n            return {\n                col: colIndex,\n                dateSpan: {\n                    range: { start: start, end: end },\n                    allDay: false\n                },\n                dayEl: this.colEls[colIndex],\n                relativeRect: {\n                    left: colPositions.lefts[colIndex],\n                    right: colPositions.rights[colIndex],\n                    top: slatTop,\n                    bottom: slatTop + slatHeight\n                }\n            };\n        }\n    };\n    /* Event Drag Visualization\n    ------------------------------------------------------------------------------------------------------------------*/\n    TimeGrid.prototype._renderEventDrag = function (state) {\n        if (state) {\n            this.eventRenderer.hideByHash(state.affectedInstances);\n            if (state.isEvent) {\n                this.mirrorRenderer.renderSegs(this.context, state.segs, { isDragging: true, sourceSeg: state.sourceSeg });\n            }\n            else {\n                this.fillRenderer.renderSegs('highlight', this.context, state.segs);\n            }\n        }\n    };\n    TimeGrid.prototype._unrenderEventDrag = function (state) {\n        if (state) {\n            this.eventRenderer.showByHash(state.affectedInstances);\n            if (state.isEvent) {\n                this.mirrorRenderer.unrender(this.context, state.segs, { isDragging: true, sourceSeg: state.sourceSeg });\n            }\n            else {\n                this.fillRenderer.unrender('highlight', this.context);\n            }\n        }\n    };\n    /* Event Resize Visualization\n    ------------------------------------------------------------------------------------------------------------------*/\n    TimeGrid.prototype._renderEventResize = function (state) {\n        if (state) {\n            this.eventRenderer.hideByHash(state.affectedInstances);\n            this.mirrorRenderer.renderSegs(this.context, state.segs, { isResizing: true, sourceSeg: state.sourceSeg });\n        }\n    };\n    TimeGrid.prototype._unrenderEventResize = function (state) {\n        if (state) {\n            this.eventRenderer.showByHash(state.affectedInstances);\n            this.mirrorRenderer.unrender(this.context, state.segs, { isResizing: true, sourceSeg: state.sourceSeg });\n        }\n    };\n    /* Selection\n    ------------------------------------------------------------------------------------------------------------------*/\n    // Renders a visual indication of a selection. Overrides the default, which was to simply render a highlight.\n    TimeGrid.prototype._renderDateSelection = function (segs) {\n        if (segs) {\n            if (this.context.options.selectMirror) {\n                this.mirrorRenderer.renderSegs(this.context, segs, { isSelecting: true });\n            }\n            else {\n                this.fillRenderer.renderSegs('highlight', this.context, segs);\n            }\n        }\n    };\n    TimeGrid.prototype._unrenderDateSelection = function (segs) {\n        if (segs) {\n            if (this.context.options.selectMirror) {\n                this.mirrorRenderer.unrender(this.context, segs, { isSelecting: true });\n            }\n            else {\n                this.fillRenderer.unrender('highlight', this.context);\n            }\n        }\n    };\n    return TimeGrid;\n}(DateComponent));\nexport default TimeGrid;\n","import * as tslib_1 from \"tslib\";\nimport { Splitter, hasBgRendering } from '@fullcalendar/core';\nvar AllDaySplitter = /** @class */ (function (_super) {\n    tslib_1.__extends(AllDaySplitter, _super);\n    function AllDaySplitter() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    AllDaySplitter.prototype.getKeyInfo = function () {\n        return {\n            allDay: {},\n            timed: {}\n        };\n    };\n    AllDaySplitter.prototype.getKeysForDateSpan = function (dateSpan) {\n        if (dateSpan.allDay) {\n            return ['allDay'];\n        }\n        else {\n            return ['timed'];\n        }\n    };\n    AllDaySplitter.prototype.getKeysForEventDef = function (eventDef) {\n        if (!eventDef.allDay) {\n            return ['timed'];\n        }\n        else if (hasBgRendering(eventDef)) {\n            return ['timed', 'allDay'];\n        }\n        else {\n            return ['allDay'];\n        }\n    };\n    return AllDaySplitter;\n}(Splitter));\nexport default AllDaySplitter;\n","import * as tslib_1 from \"tslib\";\nimport { findElements, createElement, htmlEscape, matchCellWidths, uncompensateScroll, compensateScroll, subtractInnerElHeight, ScrollComponent, View, createFormatter, diffDays, buildGotoAnchorHtml, getAllDayHtml, memoizeRendering } from '@fullcalendar/core';\nimport { DayGrid } from '@fullcalendar/daygrid';\nimport TimeGrid from './TimeGrid';\nimport AllDaySplitter from './AllDaySplitter';\nvar TIMEGRID_ALL_DAY_EVENT_LIMIT = 5;\nvar WEEK_HEADER_FORMAT = createFormatter({ week: 'short' });\n/* An abstract class for all timegrid-related views. Displays one more columns with time slots running vertically.\n----------------------------------------------------------------------------------------------------------------------*/\n// Is a manager for the TimeGrid subcomponent and possibly the DayGrid subcomponent (if allDaySlot is on).\n// Responsible for managing width/height.\nvar AbstractTimeGridView = /** @class */ (function (_super) {\n    tslib_1.__extends(AbstractTimeGridView, _super);\n    function AbstractTimeGridView() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.splitter = new AllDaySplitter();\n        _this.renderSkeleton = memoizeRendering(_this._renderSkeleton, _this._unrenderSkeleton);\n        /* Header Render Methods\n        ------------------------------------------------------------------------------------------------------------------*/\n        // Generates the HTML that will go before the day-of week header cells\n        _this.renderHeadIntroHtml = function () {\n            var _a = _this.context, theme = _a.theme, dateEnv = _a.dateEnv, options = _a.options;\n            var range = _this.props.dateProfile.renderRange;\n            var dayCnt = diffDays(range.start, range.end);\n            var weekText;\n            if (options.weekNumbers) {\n                weekText = dateEnv.format(range.start, WEEK_HEADER_FORMAT);\n                return '' +\n                    '<th class=\"fc-axis fc-week-number ' + theme.getClass('widgetHeader') + '\" ' + _this.axisStyleAttr() + '>' +\n                    buildGotoAnchorHtml(// aside from link, important for matchCellWidths\n                    options, dateEnv, { date: range.start, type: 'week', forceOff: dayCnt > 1 }, htmlEscape(weekText) // inner HTML\n                    ) +\n                    '</th>';\n            }\n            else {\n                return '<th class=\"fc-axis ' + theme.getClass('widgetHeader') + '\" ' + _this.axisStyleAttr() + '></th>';\n            }\n        };\n        /* Time Grid Render Methods\n        ------------------------------------------------------------------------------------------------------------------*/\n        // Generates the HTML that goes before the bg of the TimeGrid slot area. Long vertical column.\n        _this.renderTimeGridBgIntroHtml = function () {\n            var theme = _this.context.theme;\n            return '<td class=\"fc-axis ' + theme.getClass('widgetContent') + '\" ' + _this.axisStyleAttr() + '></td>';\n        };\n        // Generates the HTML that goes before all other types of cells.\n        // Affects content-skeleton, mirror-skeleton, highlight-skeleton for both the time-grid and day-grid.\n        _this.renderTimeGridIntroHtml = function () {\n            return '<td class=\"fc-axis\" ' + _this.axisStyleAttr() + '></td>';\n        };\n        /* Day Grid Render Methods\n        ------------------------------------------------------------------------------------------------------------------*/\n        // Generates the HTML that goes before the all-day cells\n        _this.renderDayGridBgIntroHtml = function () {\n            var _a = _this.context, theme = _a.theme, options = _a.options;\n            return '' +\n                '<td class=\"fc-axis ' + theme.getClass('widgetContent') + '\" ' + _this.axisStyleAttr() + '>' +\n                '<span>' + // needed for matchCellWidths\n                getAllDayHtml(options) +\n                '</span>' +\n                '</td>';\n        };\n        // Generates the HTML that goes before all other types of cells.\n        // Affects content-skeleton, mirror-skeleton, highlight-skeleton for both the time-grid and day-grid.\n        _this.renderDayGridIntroHtml = function () {\n            return '<td class=\"fc-axis\" ' + _this.axisStyleAttr() + '></td>';\n        };\n        return _this;\n    }\n    AbstractTimeGridView.prototype.render = function (props, context) {\n        _super.prototype.render.call(this, props, context);\n        this.renderSkeleton(context);\n    };\n    AbstractTimeGridView.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n        this.renderSkeleton.unrender();\n    };\n    AbstractTimeGridView.prototype._renderSkeleton = function (context) {\n        this.el.classList.add('fc-timeGrid-view');\n        this.el.innerHTML = this.renderSkeletonHtml();\n        this.scroller = new ScrollComponent('hidden', // overflow x\n        'auto' // overflow y\n        );\n        var timeGridWrapEl = this.scroller.el;\n        this.el.querySelector('.fc-body > tr > td').appendChild(timeGridWrapEl);\n        timeGridWrapEl.classList.add('fc-time-grid-container');\n        var timeGridEl = createElement('div', { className: 'fc-time-grid' });\n        timeGridWrapEl.appendChild(timeGridEl);\n        this.timeGrid = new TimeGrid(timeGridEl, {\n            renderBgIntroHtml: this.renderTimeGridBgIntroHtml,\n            renderIntroHtml: this.renderTimeGridIntroHtml\n        });\n        if (context.options.allDaySlot) { // should we display the \"all-day\" area?\n            this.dayGrid = new DayGrid(// the all-day subcomponent of this view\n            this.el.querySelector('.fc-day-grid'), {\n                renderNumberIntroHtml: this.renderDayGridIntroHtml,\n                renderBgIntroHtml: this.renderDayGridBgIntroHtml,\n                renderIntroHtml: this.renderDayGridIntroHtml,\n                colWeekNumbersVisible: false,\n                cellWeekNumbersVisible: false\n            });\n            // have the day-grid extend it's coordinate area over the <hr> dividing the two grids\n            var dividerEl = this.el.querySelector('.fc-divider');\n            this.dayGrid.bottomCoordPadding = dividerEl.getBoundingClientRect().height;\n        }\n    };\n    AbstractTimeGridView.prototype._unrenderSkeleton = function () {\n        this.el.classList.remove('fc-timeGrid-view');\n        this.timeGrid.destroy();\n        if (this.dayGrid) {\n            this.dayGrid.destroy();\n        }\n        this.scroller.destroy();\n    };\n    /* Rendering\n    ------------------------------------------------------------------------------------------------------------------*/\n    // Builds the HTML skeleton for the view.\n    // The day-grid and time-grid components will render inside containers defined by this HTML.\n    AbstractTimeGridView.prototype.renderSkeletonHtml = function () {\n        var _a = this.context, theme = _a.theme, options = _a.options;\n        return '' +\n            '<table class=\"' + theme.getClass('tableGrid') + '\">' +\n            (options.columnHeader ?\n                '<thead class=\"fc-head\">' +\n                    '<tr>' +\n                    '<td class=\"fc-head-container ' + theme.getClass('widgetHeader') + '\">&nbsp;</td>' +\n                    '</tr>' +\n                    '</thead>' :\n                '') +\n            '<tbody class=\"fc-body\">' +\n            '<tr>' +\n            '<td class=\"' + theme.getClass('widgetContent') + '\">' +\n            (options.allDaySlot ?\n                '<div class=\"fc-day-grid\"></div>' +\n                    '<hr class=\"fc-divider ' + theme.getClass('widgetHeader') + '\" />' :\n                '') +\n            '</td>' +\n            '</tr>' +\n            '</tbody>' +\n            '</table>';\n    };\n    /* Now Indicator\n    ------------------------------------------------------------------------------------------------------------------*/\n    AbstractTimeGridView.prototype.getNowIndicatorUnit = function () {\n        return this.timeGrid.getNowIndicatorUnit();\n    };\n    // subclasses should implement\n    // renderNowIndicator(date: DateMarker) {\n    // }\n    AbstractTimeGridView.prototype.unrenderNowIndicator = function () {\n        this.timeGrid.unrenderNowIndicator();\n    };\n    /* Dimensions\n    ------------------------------------------------------------------------------------------------------------------*/\n    AbstractTimeGridView.prototype.updateSize = function (isResize, viewHeight, isAuto) {\n        _super.prototype.updateSize.call(this, isResize, viewHeight, isAuto); // will call updateBaseSize. important that executes first\n        this.timeGrid.updateSize(isResize);\n        if (this.dayGrid) {\n            this.dayGrid.updateSize(isResize);\n        }\n    };\n    // Adjusts the vertical dimensions of the view to the specified values\n    AbstractTimeGridView.prototype.updateBaseSize = function (isResize, viewHeight, isAuto) {\n        var _this = this;\n        var eventLimit;\n        var scrollerHeight;\n        var scrollbarWidths;\n        // make all axis cells line up\n        this.axisWidth = matchCellWidths(findElements(this.el, '.fc-axis'));\n        // hack to give the view some height prior to timeGrid's columns being rendered\n        // TODO: separate setting height from scroller VS timeGrid.\n        if (!this.timeGrid.colEls) {\n            if (!isAuto) {\n                scrollerHeight = this.computeScrollerHeight(viewHeight);\n                this.scroller.setHeight(scrollerHeight);\n            }\n            return;\n        }\n        // set of fake row elements that must compensate when scroller has scrollbars\n        var noScrollRowEls = findElements(this.el, '.fc-row').filter(function (node) {\n            return !_this.scroller.el.contains(node);\n        });\n        // reset all dimensions back to the original state\n        this.timeGrid.bottomRuleEl.style.display = 'none'; // will be shown later if this <hr> is necessary\n        this.scroller.clear(); // sets height to 'auto' and clears overflow\n        noScrollRowEls.forEach(uncompensateScroll);\n        // limit number of events in the all-day area\n        if (this.dayGrid) {\n            this.dayGrid.removeSegPopover(); // kill the \"more\" popover if displayed\n            eventLimit = this.context.options.eventLimit;\n            if (eventLimit && typeof eventLimit !== 'number') {\n                eventLimit = TIMEGRID_ALL_DAY_EVENT_LIMIT; // make sure \"auto\" goes to a real number\n            }\n            if (eventLimit) {\n                this.dayGrid.limitRows(eventLimit);\n            }\n        }\n        if (!isAuto) { // should we force dimensions of the scroll container?\n            scrollerHeight = this.computeScrollerHeight(viewHeight);\n            this.scroller.setHeight(scrollerHeight);\n            scrollbarWidths = this.scroller.getScrollbarWidths();\n            if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars?\n                // make the all-day and header rows lines up\n                noScrollRowEls.forEach(function (rowEl) {\n                    compensateScroll(rowEl, scrollbarWidths);\n                });\n                // the scrollbar compensation might have changed text flow, which might affect height, so recalculate\n                // and reapply the desired height to the scroller.\n                scrollerHeight = this.computeScrollerHeight(viewHeight);\n                this.scroller.setHeight(scrollerHeight);\n            }\n            // guarantees the same scrollbar widths\n            this.scroller.lockOverflow(scrollbarWidths);\n            // if there's any space below the slats, show the horizontal rule.\n            // this won't cause any new overflow, because lockOverflow already called.\n            if (this.timeGrid.getTotalSlatHeight() < scrollerHeight) {\n                this.timeGrid.bottomRuleEl.style.display = '';\n            }\n        }\n    };\n    // given a desired total height of the view, returns what the height of the scroller should be\n    AbstractTimeGridView.prototype.computeScrollerHeight = function (viewHeight) {\n        return viewHeight -\n            subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller\n    };\n    /* Scroll\n    ------------------------------------------------------------------------------------------------------------------*/\n    // Computes the initial pre-configured scroll state prior to allowing the user to change it\n    AbstractTimeGridView.prototype.computeDateScroll = function (duration) {\n        var top = this.timeGrid.computeTimeTop(duration);\n        // zoom can give weird floating-point values. rather scroll a little bit further\n        top = Math.ceil(top);\n        if (top) {\n            top++; // to overcome top border that slots beyond the first have. looks better\n        }\n        return { top: top };\n    };\n    AbstractTimeGridView.prototype.queryDateScroll = function () {\n        return { top: this.scroller.getScrollTop() };\n    };\n    AbstractTimeGridView.prototype.applyDateScroll = function (scroll) {\n        if (scroll.top !== undefined) {\n            this.scroller.setScrollTop(scroll.top);\n        }\n    };\n    // Generates an HTML attribute string for setting the width of the axis, if it is known\n    AbstractTimeGridView.prototype.axisStyleAttr = function () {\n        if (this.axisWidth != null) {\n            return 'style=\"width:' + this.axisWidth + 'px\"';\n        }\n        return '';\n    };\n    return AbstractTimeGridView;\n}(View));\nexport default AbstractTimeGridView;\nAbstractTimeGridView.prototype.usesMinMaxTime = true; // indicates that minTime/maxTime affects rendering\n","import * as tslib_1 from \"tslib\";\nimport { DateComponent, memoize, intersectRanges, Slicer } from '@fullcalendar/core';\nvar SimpleTimeGrid = /** @class */ (function (_super) {\n    tslib_1.__extends(SimpleTimeGrid, _super);\n    function SimpleTimeGrid(timeGrid) {\n        var _this = _super.call(this, timeGrid.el) || this;\n        _this.buildDayRanges = memoize(buildDayRanges);\n        _this.slicer = new TimeGridSlicer();\n        _this.timeGrid = timeGrid;\n        return _this;\n    }\n    SimpleTimeGrid.prototype.firstContext = function (context) {\n        context.calendar.registerInteractiveComponent(this, {\n            el: this.timeGrid.el\n        });\n    };\n    SimpleTimeGrid.prototype.destroy = function () {\n        _super.prototype.destroy.call(this);\n        this.context.calendar.unregisterInteractiveComponent(this);\n    };\n    SimpleTimeGrid.prototype.render = function (props, context) {\n        var dateEnv = this.context.dateEnv;\n        var dateProfile = props.dateProfile, dayTable = props.dayTable;\n        var dayRanges = this.dayRanges = this.buildDayRanges(dayTable, dateProfile, dateEnv);\n        this.timeGrid.receiveProps(tslib_1.__assign({}, this.slicer.sliceProps(props, dateProfile, null, context.calendar, this.timeGrid, dayRanges), { dateProfile: dateProfile, cells: dayTable.cells[0] }), context);\n    };\n    SimpleTimeGrid.prototype.renderNowIndicator = function (date) {\n        this.timeGrid.renderNowIndicator(this.slicer.sliceNowDate(date, this.timeGrid, this.dayRanges), date);\n    };\n    SimpleTimeGrid.prototype.buildPositionCaches = function () {\n        this.timeGrid.buildPositionCaches();\n    };\n    SimpleTimeGrid.prototype.queryHit = function (positionLeft, positionTop) {\n        var rawHit = this.timeGrid.positionToHit(positionLeft, positionTop);\n        if (rawHit) {\n            return {\n                component: this.timeGrid,\n                dateSpan: rawHit.dateSpan,\n                dayEl: rawHit.dayEl,\n                rect: {\n                    left: rawHit.relativeRect.left,\n                    right: rawHit.relativeRect.right,\n                    top: rawHit.relativeRect.top,\n                    bottom: rawHit.relativeRect.bottom\n                },\n                layer: 0\n            };\n        }\n    };\n    return SimpleTimeGrid;\n}(DateComponent));\nexport default SimpleTimeGrid;\nexport function buildDayRanges(dayTable, dateProfile, dateEnv) {\n    var ranges = [];\n    for (var _i = 0, _a = dayTable.headerDates; _i < _a.length; _i++) {\n        var date = _a[_i];\n        ranges.push({\n            start: dateEnv.add(date, dateProfile.minTime),\n            end: dateEnv.add(date, dateProfile.maxTime)\n        });\n    }\n    return ranges;\n}\nvar TimeGridSlicer = /** @class */ (function (_super) {\n    tslib_1.__extends(TimeGridSlicer, _super);\n    function TimeGridSlicer() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    TimeGridSlicer.prototype.sliceRange = function (range, dayRanges) {\n        var segs = [];\n        for (var col = 0; col < dayRanges.length; col++) {\n            var segRange = intersectRanges(range, dayRanges[col]);\n            if (segRange) {\n                segs.push({\n                    start: segRange.start,\n                    end: segRange.end,\n                    isStart: segRange.start.valueOf() === range.start.valueOf(),\n                    isEnd: segRange.end.valueOf() === range.end.valueOf(),\n                    col: col\n                });\n            }\n        }\n        return segs;\n    };\n    return TimeGridSlicer;\n}(Slicer));\nexport { TimeGridSlicer };\n","import * as tslib_1 from \"tslib\";\nimport { DayHeader, DaySeries, DayTable, memoize } from '@fullcalendar/core';\nimport { SimpleDayGrid } from '@fullcalendar/daygrid';\nimport SimpleTimeGrid from './SimpleTimeGrid';\nimport AbstractTimeGridView from './AbstractTimeGridView';\nvar TimeGridView = /** @class */ (function (_super) {\n    tslib_1.__extends(TimeGridView, _super);\n    function TimeGridView() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.buildDayTable = memoize(buildDayTable);\n        return _this;\n    }\n    TimeGridView.prototype.render = function (props, context) {\n        _super.prototype.render.call(this, props, context); // for flags for updateSize. also _renderSkeleton/_unrenderSkeleton\n        var _a = this.props, dateProfile = _a.dateProfile, dateProfileGenerator = _a.dateProfileGenerator;\n        var nextDayThreshold = context.nextDayThreshold;\n        var dayTable = this.buildDayTable(dateProfile, dateProfileGenerator);\n        var splitProps = this.splitter.splitProps(props);\n        if (this.header) {\n            this.header.receiveProps({\n                dateProfile: dateProfile,\n                dates: dayTable.headerDates,\n                datesRepDistinctDays: true,\n                renderIntroHtml: this.renderHeadIntroHtml\n            }, context);\n        }\n        this.simpleTimeGrid.receiveProps(tslib_1.__assign({}, splitProps['timed'], { dateProfile: dateProfile,\n            dayTable: dayTable }), context);\n        if (this.simpleDayGrid) {\n            this.simpleDayGrid.receiveProps(tslib_1.__assign({}, splitProps['allDay'], { dateProfile: dateProfile,\n                dayTable: dayTable,\n                nextDayThreshold: nextDayThreshold, isRigid: false }), context);\n        }\n        this.startNowIndicator(dateProfile, dateProfileGenerator);\n    };\n    TimeGridView.prototype._renderSkeleton = function (context) {\n        _super.prototype._renderSkeleton.call(this, context);\n        if (context.options.columnHeader) {\n            this.header = new DayHeader(this.el.querySelector('.fc-head-container'));\n        }\n        this.simpleTimeGrid = new SimpleTimeGrid(this.timeGrid);\n        if (this.dayGrid) {\n            this.simpleDayGrid = new SimpleDayGrid(this.dayGrid);\n        }\n    };\n    TimeGridView.prototype._unrenderSkeleton = function () {\n        _super.prototype._unrenderSkeleton.call(this);\n        if (this.header) {\n            this.header.destroy();\n        }\n        this.simpleTimeGrid.destroy();\n        if (this.simpleDayGrid) {\n            this.simpleDayGrid.destroy();\n        }\n    };\n    TimeGridView.prototype.renderNowIndicator = function (date) {\n        this.simpleTimeGrid.renderNowIndicator(date);\n    };\n    return TimeGridView;\n}(AbstractTimeGridView));\nexport default TimeGridView;\nexport function buildDayTable(dateProfile, dateProfileGenerator) {\n    var daySeries = new DaySeries(dateProfile.renderRange, dateProfileGenerator);\n    return new DayTable(daySeries, false);\n}\n","import { createPlugin } from '@fullcalendar/core';\nimport AbstractTimeGridView from './AbstractTimeGridView';\nimport TimeGridView, { buildDayTable } from './TimeGridView';\nimport { TimeGridSlicer, buildDayRanges } from './SimpleTimeGrid';\nexport { TimeGridView, AbstractTimeGridView, buildDayTable, buildDayRanges, TimeGridSlicer };\nexport { default as TimeGrid } from './TimeGrid';\nexport default createPlugin({\n    defaultView: 'timeGridWeek',\n    views: {\n        timeGrid: {\n            class: TimeGridView,\n            allDaySlot: true,\n            slotDuration: '00:30:00',\n            slotEventOverlap: true // a bad name. confused with overlap/constraint system\n        },\n        timeGridDay: {\n            type: 'timeGrid',\n            duration: { days: 1 }\n        },\n        timeGridWeek: {\n            type: 'timeGrid',\n            duration: { weeks: 1 }\n        }\n    }\n});\n"],"names":["tslib_1.__extends","tslib_1.__assign"],"mappings":"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"}

?>