{"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 '' +\n '
' +\n (timeText ?\n '
' +\n '' + htmlEscape(timeText) + '' +\n '
' :\n '') +\n (eventDef.title ?\n '
' +\n htmlEscape(eventDef.title) +\n '
' :\n '') +\n '
' +\n /* TODO: write CSS for this\n (isResizableFromStart ?\n '
' :\n ''\n ) +\n */\n (isResizableFromEnd ?\n '
' :\n '') +\n '
';\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 '
' +\n '
' +\n '
';\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 '' +\n this.renderSlatRowHtml(dateProfile) +\n '
';\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 '' +\n (isLabeled ?\n '' + // for matchCellWidths\n htmlEscape(dateEnv.format(slotDate, this.labelFormat)) +\n '' :\n '') +\n '';\n html +=\n '' +\n (!isRtl ? axisHtml : '') +\n '' +\n (isRtl ? axisHtml : '') +\n '';\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 '' +\n bgRow.renderHtml({\n cells: cells,\n dateProfile: dateProfile,\n renderIntroHtml: this.renderProps.renderBgIntroHtml\n }) +\n '
';\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('' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '');\n }\n if (isRtl) {\n parts.reverse();\n }\n skeletonEl = this.contentSkeletonEl = htmlToElement('
' +\n '' +\n '' + parts.join('') + '' +\n '
' +\n '
');\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 '' +\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 '';\n }\n else {\n return '';\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 '';\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 '';\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 '' +\n '' + // needed for matchCellWidths\n getAllDayHtml(options) +\n '' +\n '';\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 '';\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
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 '' +\n (options.columnHeader ?\n '' +\n '' +\n '' +\n '' +\n '' :\n '') +\n '' +\n '' +\n '' +\n '' +\n '' +\n '
 
' +\n (options.allDaySlot ?\n '
' +\n '
' :\n '') +\n '
';\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
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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"}