{"version":3,"file":"main.js","sources":["../../node_modules/tslib/tslib.es6.js","../../src/daygrid/DayGridDateProfileGenerator.ts","../../src/daygrid/Popover.ts","../../src/daygrid/SimpleDayGridEventRenderer.ts","../../src/daygrid/DayGridEventRenderer.ts","../../src/daygrid/DayGridMirrorRenderer.ts","../../src/daygrid/DayGridFillRenderer.ts","../../src/daygrid/DayTile.ts","../../src/daygrid/DayBgRow.ts","../../src/daygrid/DayGrid.ts","../../src/daygrid/AbstractDayGridView.ts","../../src/daygrid/SimpleDayGrid.ts","../../src/daygrid/DayGridView.ts","../../src/daygrid/main.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n            t[p[i]] = s[p[i]];\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n    if (m) return m.call(o);\r\n    return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import {\n  DateProfileGenerator,\n  addWeeks, diffWeeks,\n  DateRange\n} from '@fullcalendar/core'\n\nexport default class DayGridDateProfileGenerator extends DateProfileGenerator {\n\n  // Computes the date range that will be rendered.\n  buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay): DateRange {\n    let { dateEnv } = this\n    let renderRange = super.buildRenderRange(currentRange, currentRangeUnit, isRangeAllDay)\n    let start = renderRange.start\n    let end = renderRange.end\n    let endOfWeek\n\n    // year and month views should be aligned with weeks. this is already done for week\n    if (/^(year|month)$/.test(currentRangeUnit)) {\n      start = dateEnv.startOfWeek(start)\n\n      // make end-of-week if not already\n      endOfWeek = dateEnv.startOfWeek(end)\n      if (endOfWeek.valueOf() !== end.valueOf()) {\n        end = addWeeks(endOfWeek, 1)\n      }\n    }\n\n    // ensure 6 weeks\n    if (\n      this.options.monthMode &&\n      this.options.fixedWeekCount\n    ) {\n      let rowCnt = Math.ceil( // could be partial weeks due to hiddenDays\n        diffWeeks(start, end)\n      )\n      end = addWeeks(end, 6 - rowCnt)\n    }\n\n    return { start, end }\n  }\n\n}\n","\n/* A rectangular panel that is absolutely positioned over other content\n------------------------------------------------------------------------------------------------------------------------\nOptions:\n  - className (string)\n  - content (HTML string, element, or element array)\n  - parentEl\n  - top\n  - left\n  - right (the x coord of where the right edge should be. not a \"CSS\" right)\n  - autoHide (boolean)\n  - show (callback)\n  - hide (callback)\n*/\n\nimport {\n  removeElement, createElement, applyStyle,\n  listenBySelector,\n  computeClippingRect, computeRect\n} from '@fullcalendar/core'\n\nexport interface PopoverOptions {\n  className?: string\n  content?: (el: HTMLElement) => void\n  parentEl: HTMLElement\n  autoHide?: boolean\n  top?: number\n  left?: number\n  right?: number\n  viewportConstrain?: boolean\n}\n\nexport default class Popover {\n\n  isHidden: boolean = true\n  options: PopoverOptions\n  el: HTMLElement // the container element for the popover. generated by this object\n  margin: number = 10 // the space required between the popover and the edges of the scroll container\n\n\n  constructor(options: PopoverOptions) {\n    this.options = options\n  }\n\n\n  // Shows the popover on the specified position. Renders it if not already\n  show() {\n    if (this.isHidden) {\n      if (!this.el) {\n        this.render()\n      }\n      this.el.style.display = ''\n      this.position()\n      this.isHidden = false\n      this.trigger('show')\n    }\n  }\n\n\n  // Hides the popover, through CSS, but does not remove it from the DOM\n  hide() {\n    if (!this.isHidden) {\n      this.el.style.display = 'none'\n      this.isHidden = true\n      this.trigger('hide')\n    }\n  }\n\n\n  // Creates `this.el` and renders content inside of it\n  render() {\n    let options = this.options\n    let el = this.el = createElement('div', {\n      className: 'fc-popover ' + (options.className || ''),\n      style: {\n        top: '0',\n        left: '0'\n      }\n    })\n\n    if (typeof options.content === 'function') {\n      options.content(el)\n    }\n\n    options.parentEl.appendChild(el)\n\n    // when a click happens on anything inside with a 'fc-close' className, hide the popover\n    listenBySelector(el, 'click', '.fc-close', (ev) => {\n      this.hide()\n    })\n\n    if (options.autoHide) {\n      document.addEventListener('mousedown', this.documentMousedown)\n    }\n  }\n\n\n  // Triggered when the user clicks *anywhere* in the document, for the autoHide feature\n  documentMousedown = (ev) => {\n    // only hide the popover if the click happened outside the popover\n    if (this.el && !this.el.contains(ev.target)) {\n      this.hide()\n    }\n  }\n\n\n  // Hides and unregisters any handlers\n  destroy() {\n    this.hide()\n\n    if (this.el) {\n      removeElement(this.el)\n      this.el = null\n    }\n\n    document.removeEventListener('mousedown', this.documentMousedown)\n  }\n\n\n  // Positions the popover optimally, using the top/left/right options\n  position() {\n    let options = this.options\n    let el = this.el\n    let elDims = el.getBoundingClientRect() // only used for width,height\n    let origin = computeRect(el.offsetParent)\n    let clippingRect = computeClippingRect(options.parentEl)\n    let top // the \"position\" (not \"offset\") values for the popover\n    let left //\n\n    // compute top and left\n    top = options.top || 0\n    if (options.left !== undefined) {\n      left = options.left\n    } else if (options.right !== undefined) {\n      left = options.right - elDims.width // derive the left value from the right value\n    } else {\n      left = 0\n    }\n\n    // constrain to the view port. if constrained by two edges, give precedence to top/left\n    top = Math.min(top, clippingRect.bottom - elDims.height - this.margin)\n    top = Math.max(top, clippingRect.top + this.margin)\n    left = Math.min(left, clippingRect.right - elDims.width - this.margin)\n    left = Math.max(left, clippingRect.left + this.margin)\n\n    applyStyle(el, {\n      top: top - origin.top,\n      left: left - origin.left\n    })\n  }\n\n\n  // Triggers a callback. Calls a function in the option hash of the same name.\n  // Arguments beyond the first `name` are forwarded on.\n  // TODO: better code reuse for this. Repeat code\n  // can kill this???\n  trigger(name) {\n    if (this.options[name]) {\n      this.options[name].apply(this, Array.prototype.slice.call(arguments, 1))\n    }\n  }\n\n}\n","import {\n  htmlEscape, cssToStr,\n  FgEventRenderer,\n  Seg\n} from '@fullcalendar/core'\n\n\n/* Event-rendering methods for the DayGrid class\n----------------------------------------------------------------------------------------------------------------------*/\n\n// \"Simple\" is bad a name. has nothing to do with SimpleDayGrid\nexport default abstract class SimpleDayGridEventRenderer extends FgEventRenderer {\n\n\n  // Builds the HTML to be used for the default element for an individual segment\n  renderSegHtml(seg: Seg, mirrorInfo) {\n    let { options } = this.context\n    let eventRange = seg.eventRange\n    let eventDef = eventRange.def\n    let eventUi = eventRange.ui\n    let allDay = eventDef.allDay\n    let isDraggable = eventUi.startEditable\n    let isResizableFromStart = allDay && seg.isStart && eventUi.durationEditable && options.eventResizableFromStart\n    let isResizableFromEnd = allDay && seg.isEnd && eventUi.durationEditable\n    let classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd, mirrorInfo)\n    let skinCss = cssToStr(this.getSkinCss(eventUi))\n    let timeHtml = ''\n    let timeText\n    let titleHtml\n\n    classes.unshift('fc-day-grid-event', 'fc-h-event')\n\n    // Only display a timed events time if it is the starting segment\n    if (seg.isStart) {\n      timeText = this.getTimeText(eventRange)\n      if (timeText) {\n        timeHtml = '<span class=\"fc-time\">' + htmlEscape(timeText) + '</span>'\n      }\n    }\n\n    titleHtml =\n      '<span class=\"fc-title\">' +\n        (htmlEscape(eventDef.title || '') || '&nbsp;') + // we always want one line of height\n      '</span>'\n\n    return '<a class=\"' + classes.join(' ') + '\"' +\n        (eventDef.url ?\n          ' href=\"' + htmlEscape(eventDef.url) + '\"' :\n          ''\n          ) +\n        (skinCss ?\n          ' style=\"' + skinCss + '\"' :\n          ''\n          ) +\n      '>' +\n        '<div class=\"fc-content\">' +\n          (options.dir === 'rtl' ?\n            titleHtml + ' ' + timeHtml : // put a natural space in between\n            timeHtml + ' ' + titleHtml   //\n            ) +\n        '</div>' +\n        (isResizableFromStart ?\n          '<div class=\"fc-resizer fc-start-resizer\"></div>' :\n          ''\n          ) +\n        (isResizableFromEnd ?\n          '<div class=\"fc-resizer fc-end-resizer\"></div>' :\n          ''\n          ) +\n      '</a>'\n  }\n\n\n  // Computes a default event time formatting string if `eventTimeFormat` is not explicitly defined\n  computeEventTimeFormat() {\n    return {\n      hour: 'numeric',\n      minute: '2-digit',\n      omitZeroMinute: true,\n      meridiem: 'narrow'\n    }\n  }\n\n\n  computeDisplayEventEnd() {\n    return false // TODO: somehow consider the originating DayGrid's column count\n  }\n\n}\n","import {\n  createElement,\n  removeElement,\n  appendToElement,\n  prependToElement,\n  Seg\n} from '@fullcalendar/core'\nimport DayGrid from './DayGrid'\nimport SimpleDayGridEventRenderer from './SimpleDayGridEventRenderer'\n\n\n/* Event-rendering methods for the DayGrid class\n----------------------------------------------------------------------------------------------------------------------*/\n\nexport default class DayGridEventRenderer extends SimpleDayGridEventRenderer {\n\n  dayGrid: DayGrid\n  rowStructs: any // an array of objects, each holding information about a row's foreground event-rendering\n\n\n  constructor(dayGrid: DayGrid) {\n    super(dayGrid.context)\n\n    this.dayGrid = dayGrid\n  }\n\n\n  // Renders the given foreground event segments onto the grid\n  attachSegs(segs: Seg[], mirrorInfo) {\n    let rowStructs = this.rowStructs = this.renderSegRows(segs)\n\n    // append to each row's content skeleton\n    this.dayGrid.rowEls.forEach(function(rowNode, i) {\n      rowNode.querySelector('.fc-content-skeleton > table').appendChild(\n        rowStructs[i].tbodyEl\n      )\n    })\n\n    // removes the \"more..\" events popover\n    if (!mirrorInfo) {\n      this.dayGrid.removeSegPopover()\n    }\n  }\n\n\n  // Unrenders all currently rendered foreground event segments\n  detachSegs() {\n    let rowStructs = this.rowStructs || []\n    let rowStruct\n\n    while ((rowStruct = rowStructs.pop())) {\n      removeElement(rowStruct.tbodyEl)\n    }\n\n    this.rowStructs = null\n  }\n\n\n  // Uses the given events array to generate <tbody> elements that should be appended to each row's content skeleton.\n  // Returns an array of rowStruct objects (see the bottom of `renderSegRow`).\n  // PRECONDITION: each segment shoud already have a rendered and assigned `.el`\n  renderSegRows(segs: Seg[]) {\n    let rowStructs = []\n    let segRows\n    let row\n\n    segRows = this.groupSegRows(segs) // group into nested arrays\n\n    // iterate each row of segment groupings\n    for (row = 0; row < segRows.length; row++) {\n      rowStructs.push(\n        this.renderSegRow(row, segRows[row])\n      )\n    }\n\n    return rowStructs\n  }\n\n\n  // Given a row # and an array of segments all in the same row, render a <tbody> element, a skeleton that contains\n  // the segments. Returns object with a bunch of internal data about how the render was calculated.\n  // NOTE: modifies rowSegs\n  renderSegRow(row, rowSegs) {\n    let { dayGrid } = this\n    let { colCnt, isRtl } = dayGrid\n    let segLevels = this.buildSegLevels(rowSegs) // group into sub-arrays of levels\n    let levelCnt = Math.max(1, segLevels.length) // ensure at least one level\n    let tbody = document.createElement('tbody')\n    let segMatrix = [] // lookup for which segments are rendered into which level+col cells\n    let cellMatrix = [] // lookup for all <td> elements of the level+col matrix\n    let loneCellMatrix = [] // lookup for <td> elements that only take up a single column\n    let i\n    let levelSegs\n    let col\n    let tr: HTMLTableRowElement\n    let j\n    let seg\n    let td: HTMLTableCellElement\n\n    // populates empty cells from the current column (`col`) to `endCol`\n    function emptyCellsUntil(endCol) {\n      while (col < endCol) {\n        // try to grab a cell from the level above and extend its rowspan. otherwise, create a fresh cell\n        td = (loneCellMatrix[i - 1] || [])[col]\n        if (td) {\n          td.rowSpan = (td.rowSpan || 1) + 1\n        } else {\n          td = document.createElement('td')\n          tr.appendChild(td)\n        }\n        cellMatrix[i][col] = td\n        loneCellMatrix[i][col] = td\n        col++\n      }\n    }\n\n    for (i = 0; i < levelCnt; i++) { // iterate through all levels\n      levelSegs = segLevels[i]\n      col = 0\n      tr = document.createElement('tr')\n\n      segMatrix.push([])\n      cellMatrix.push([])\n      loneCellMatrix.push([])\n\n      // levelCnt might be 1 even though there are no actual levels. protect against this.\n      // this single empty row is useful for styling.\n      if (levelSegs) {\n        for (j = 0; j < levelSegs.length; j++) { // iterate through segments in level\n          seg = levelSegs[j]\n          let leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol\n          let rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol\n\n          emptyCellsUntil(leftCol)\n\n          // create a container that occupies or more columns. append the event element.\n          td = createElement('td', { className: 'fc-event-container' }, seg.el) as HTMLTableCellElement\n          if (leftCol !== rightCol) {\n            td.colSpan = rightCol - leftCol + 1\n          } else { // a single-column segment\n            loneCellMatrix[i][col] = td\n          }\n\n          while (col <= rightCol) {\n            cellMatrix[i][col] = td\n            segMatrix[i][col] = seg\n            col++\n          }\n\n          tr.appendChild(td)\n        }\n      }\n\n      emptyCellsUntil(colCnt) // finish off the row\n\n      let introHtml = dayGrid.renderProps.renderIntroHtml()\n      if (introHtml) {\n        if (dayGrid.isRtl) {\n          appendToElement(tr, introHtml)\n        } else {\n          prependToElement(tr, introHtml)\n        }\n      }\n\n      tbody.appendChild(tr)\n    }\n\n    return { // a \"rowStruct\"\n      row: row, // the row number\n      tbodyEl: tbody,\n      cellMatrix: cellMatrix,\n      segMatrix: segMatrix,\n      segLevels: segLevels,\n      segs: rowSegs\n    }\n  }\n\n\n  // Stacks a flat array of segments, which are all assumed to be in the same row, into subarrays of vertical levels.\n  // NOTE: modifies segs\n  buildSegLevels(segs: Seg[]) {\n    let { isRtl, colCnt } = this.dayGrid\n    let levels = []\n    let i\n    let seg\n    let j\n\n    // Give preference to elements with certain criteria, so they have\n    // a chance to be closer to the top.\n    segs = this.sortEventSegs(segs)\n\n    for (i = 0; i < segs.length; i++) {\n      seg = segs[i]\n\n      // loop through levels, starting with the topmost, until the segment doesn't collide with other segments\n      for (j = 0; j < levels.length; j++) {\n        if (!isDaySegCollision(seg, levels[j])) {\n          break\n        }\n      }\n\n      // `j` now holds the desired subrow index\n      seg.level = j\n      seg.leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol // for sorting only\n      seg.rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol // for sorting only\n\n      // create new level array if needed and append segment\n      ;(levels[j] || (levels[j] = [])).push(seg)\n    }\n\n    // order segments left-to-right. very important if calendar is RTL\n    for (j = 0; j < levels.length; j++) {\n      levels[j].sort(compareDaySegCols)\n    }\n\n    return levels\n  }\n\n\n  // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's row\n  groupSegRows(segs: Seg[]) {\n    let segRows = []\n    let i\n\n    for (i = 0; i < this.dayGrid.rowCnt; i++) {\n      segRows.push([])\n    }\n\n    for (i = 0; i < segs.length; i++) {\n      segRows[segs[i].row].push(segs[i])\n    }\n\n    return segRows\n  }\n\n\n  // Computes a default `displayEventEnd` value if one is not expliclty defined\n  computeDisplayEventEnd() {\n    return this.dayGrid.colCnt === 1 // we'll likely have space if there's only one day\n  }\n\n}\n\n\n// Computes whether two segments' columns collide. They are assumed to be in the same row.\nfunction isDaySegCollision(seg: Seg, otherSegs: Seg) {\n  let i\n  let otherSeg\n\n  for (i = 0; i < otherSegs.length; i++) {\n    otherSeg = otherSegs[i]\n\n    if (\n      otherSeg.firstCol <= seg.lastCol &&\n      otherSeg.lastCol >= seg.firstCol\n    ) {\n      return true\n    }\n  }\n\n  return false\n}\n\n\n// A cmp function for determining the leftmost event\nfunction compareDaySegCols(a: Seg, b: Seg) {\n  return a.leftCol - b.leftCol\n}\n","import {\n  htmlToElement, Seg\n} from '@fullcalendar/core'\nimport DayGridEventRenderer from './DayGridEventRenderer'\n\n\nexport default class DayGridMirrorRenderer extends DayGridEventRenderer {\n\n  attachSegs(segs: Seg[], mirrorInfo) {\n    let { sourceSeg } = mirrorInfo\n    let rowStructs = this.rowStructs = this.renderSegRows(segs)\n\n    // inject each new event skeleton into each associated row\n    this.dayGrid.rowEls.forEach(function(rowNode, row) {\n      let skeletonEl = htmlToElement('<div class=\"fc-mirror-skeleton\"><table></table></div>') // will be absolutely positioned\n      let skeletonTopEl: HTMLElement\n      let skeletonTop\n\n      // If there is an original segment, match the top position. Otherwise, put it at the row's top level\n      if (sourceSeg && sourceSeg.row === row) {\n        skeletonTopEl = sourceSeg.el\n      } else {\n        skeletonTopEl = rowNode.querySelector('.fc-content-skeleton tbody')\n\n        if (!skeletonTopEl) { // when no events\n          skeletonTopEl = rowNode.querySelector('.fc-content-skeleton table')\n        }\n      }\n\n      skeletonTop = skeletonTopEl.getBoundingClientRect().top -\n        rowNode.getBoundingClientRect().top // the offsetParent origin\n\n      skeletonEl.style.top = skeletonTop + 'px'\n      skeletonEl.querySelector('table').appendChild(rowStructs[row].tbodyEl)\n\n      rowNode.appendChild(skeletonEl)\n    })\n  }\n\n}\n","import {\n  htmlToElement,\n  appendToElement,\n  prependToElement,\n  FillRenderer,\n  Seg\n} from '@fullcalendar/core'\nimport DayGrid, { DayGridSeg } from './DayGrid'\n\n\nexport default class DayGridFillRenderer extends FillRenderer {\n\n  fillSegTag: string = 'td' // override the default tag name\n  dayGrid: DayGrid\n\n  constructor(dayGrid: DayGrid) {\n    super(dayGrid.context)\n\n    this.dayGrid = dayGrid\n  }\n\n  renderSegs(type: string, segs: DayGridSeg[]) {\n\n    // don't render timed background events\n    if (type === 'bgEvent') {\n      segs = segs.filter(function(seg) {\n        return seg.eventRange.def.allDay\n      })\n    }\n\n    super.renderSegs(type, segs)\n  }\n\n  attachSegs(type, segs: Seg[]) {\n    let els = []\n    let i\n    let seg\n    let skeletonEl: HTMLElement\n\n    for (i = 0; i < segs.length; i++) {\n      seg = segs[i]\n      skeletonEl = this.renderFillRow(type, seg)\n      this.dayGrid.rowEls[seg.row].appendChild(skeletonEl)\n      els.push(skeletonEl)\n    }\n\n    return els\n  }\n\n  // Generates the HTML needed for one row of a fill. Requires the seg's el to be rendered.\n  renderFillRow(type, seg: Seg): HTMLElement {\n    let { dayGrid } = this\n    let { colCnt, isRtl } = dayGrid\n    let leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol\n    let rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol\n    let startCol = leftCol\n    let endCol = rightCol + 1\n    let className\n    let skeletonEl: HTMLElement\n    let trEl: HTMLTableRowElement\n\n    if (type === 'businessHours') {\n      className = 'bgevent'\n    } else {\n      className = type.toLowerCase()\n    }\n\n    skeletonEl = htmlToElement(\n      '<div class=\"fc-' + className + '-skeleton\">' +\n        '<table><tr></tr></table>' +\n      '</div>'\n    )\n    trEl = skeletonEl.getElementsByTagName('tr')[0]\n\n    if (startCol > 0) {\n      appendToElement(trEl,\n        // will create (startCol + 1) td's\n        new Array(startCol + 1).join('<td></td>')\n      )\n    }\n\n    (seg.el as HTMLTableCellElement).colSpan = endCol - startCol\n    trEl.appendChild(seg.el)\n\n    if (endCol < colCnt) {\n      appendToElement(trEl,\n        // will create (colCnt - endCol) td's\n        new Array(colCnt - endCol + 1).join('<td></td>')\n      )\n    }\n\n    let introHtml = dayGrid.renderProps.renderIntroHtml()\n    if (introHtml) {\n      if (dayGrid.isRtl) {\n        appendToElement(trEl, introHtml)\n      } else {\n        prependToElement(trEl, introHtml)\n      }\n    }\n\n    return skeletonEl\n  }\n\n}\n","import {\n  DateComponent, Seg,\n  htmlEscape,\n  createFormatter,\n  Hit,\n  addDays, DateMarker,\n  removeElement,\n  ComponentContext,\n  EventInstanceHash,\n  memoizeRendering, MemoizedRendering\n} from '@fullcalendar/core'\nimport SimpleDayGridEventRenderer from './SimpleDayGridEventRenderer'\n\nexport interface DayTileProps {\n  date: DateMarker\n  fgSegs: Seg[]\n  eventSelection: string\n  eventDragInstances: EventInstanceHash\n  eventResizeInstances: EventInstanceHash\n}\n\nexport default class DayTile extends DateComponent<DayTileProps> {\n\n  segContainerEl: HTMLElement\n\n  private renderFrame: MemoizedRendering<[DateMarker]>\n  private renderFgEvents: MemoizedRendering<[Seg[]]>\n  private renderEventSelection: MemoizedRendering<[string]>\n  private renderEventDrag: MemoizedRendering<[EventInstanceHash]>\n  private renderEventResize: MemoizedRendering<[EventInstanceHash]>\n\n  constructor(context: ComponentContext, el: HTMLElement) {\n    super(context, el)\n\n    let eventRenderer = this.eventRenderer = new DayTileEventRenderer(this)\n\n    let renderFrame = this.renderFrame = memoizeRendering(\n      this._renderFrame\n    )\n\n    this.renderFgEvents = memoizeRendering(\n      eventRenderer.renderSegs.bind(eventRenderer),\n      eventRenderer.unrender.bind(eventRenderer),\n      [ renderFrame ]\n    )\n\n    this.renderEventSelection = memoizeRendering(\n      eventRenderer.selectByInstanceId.bind(eventRenderer),\n      eventRenderer.unselectByInstanceId.bind(eventRenderer),\n      [ this.renderFgEvents ]\n    )\n\n    this.renderEventDrag = memoizeRendering(\n      eventRenderer.hideByHash.bind(eventRenderer),\n      eventRenderer.showByHash.bind(eventRenderer),\n      [ renderFrame ]\n    )\n\n    this.renderEventResize = memoizeRendering(\n      eventRenderer.hideByHash.bind(eventRenderer),\n      eventRenderer.showByHash.bind(eventRenderer),\n      [ renderFrame ]\n    )\n\n    context.calendar.registerInteractiveComponent(this, {\n      el: this.el,\n      useEventCenter: false\n    })\n  }\n\n  render(props: DayTileProps) {\n    this.renderFrame(props.date)\n    this.renderFgEvents(props.fgSegs)\n    this.renderEventSelection(props.eventSelection)\n    this.renderEventDrag(props.eventDragInstances)\n    this.renderEventResize(props.eventResizeInstances)\n  }\n\n  destroy() {\n    super.destroy()\n\n    this.renderFrame.unrender() // should unrender everything else\n\n    this.calendar.unregisterInteractiveComponent(this)\n  }\n\n  _renderFrame(date: DateMarker) {\n    let { theme, dateEnv } = this\n\n    let title = dateEnv.format(\n      date,\n      createFormatter(this.opt('dayPopoverFormat')) // TODO: cache\n    )\n\n    this.el.innerHTML =\n      '<div class=\"fc-header ' + theme.getClass('popoverHeader') + '\">' +\n        '<span class=\"fc-title\">' +\n          htmlEscape(title) +\n        '</span>' +\n        '<span class=\"fc-close ' + theme.getIconClass('close') + '\"></span>' +\n      '</div>' +\n      '<div class=\"fc-body ' + theme.getClass('popoverContent') + '\">' +\n        '<div class=\"fc-event-container\"></div>' +\n      '</div>'\n\n    this.segContainerEl = this.el.querySelector('.fc-event-container')\n  }\n\n  queryHit(positionLeft: number, positionTop: number, elWidth: number, elHeight: number): Hit | null {\n    let date = (this.props as any).date // HACK\n\n    if (positionLeft < elWidth && positionTop < elHeight) {\n      return {\n        component: this,\n        dateSpan: {\n          allDay: true,\n          range: { start: date, end: addDays(date, 1) }\n        },\n        dayEl: this.el,\n        rect: {\n          left: 0,\n          top: 0,\n          right: elWidth,\n          bottom: elHeight\n        },\n        layer: 1\n      }\n    }\n  }\n\n}\n\n\nexport class DayTileEventRenderer extends SimpleDayGridEventRenderer {\n\n  dayTile: DayTile\n\n  constructor(dayTile) {\n    super(dayTile.context)\n\n    this.dayTile = dayTile\n  }\n\n  attachSegs(segs: Seg[]) {\n    for (let seg of segs) {\n      this.dayTile.segContainerEl.appendChild(seg.el)\n    }\n  }\n\n  detachSegs(segs: Seg[]) {\n    for (let seg of segs) {\n      removeElement(seg.el)\n    }\n  }\n\n}\n","import {\n  ComponentContext,\n  DateMarker,\n  getDayClasses,\n  rangeContainsMarker,\n  DateProfile\n} from '@fullcalendar/core'\n\nexport interface DayBgCell {\n  date: DateMarker\n  htmlAttrs?: string\n}\n\nexport interface DayBgRowProps {\n  cells: DayBgCell[]\n  dateProfile: DateProfile\n  renderIntroHtml?: () => string\n}\n\nexport default class DayBgRow {\n\n  context: ComponentContext\n\n  constructor(context: ComponentContext) {\n    this.context = context\n  }\n\n  renderHtml(props: DayBgRowProps) {\n    let parts = []\n\n    if (props.renderIntroHtml) {\n      parts.push(props.renderIntroHtml())\n    }\n\n    for (let cell of props.cells) {\n      parts.push(\n        renderCellHtml(\n          cell.date,\n          props.dateProfile,\n          this.context,\n          cell.htmlAttrs\n        )\n      )\n    }\n\n    if (!props.cells.length) {\n      parts.push('<td class=\"fc-day ' + this.context.theme.getClass('widgetContent') + '\"></td>')\n    }\n\n    if (this.context.options.dir === 'rtl') {\n      parts.reverse()\n    }\n\n    return '<tr>' + parts.join('') + '</tr>'\n  }\n\n}\n\nfunction renderCellHtml(date: DateMarker, dateProfile: DateProfile, context: ComponentContext, otherAttrs?) {\n  let { dateEnv, theme } = context\n  let isDateValid = rangeContainsMarker(dateProfile.activeRange, date) // TODO: called too frequently. cache somehow.\n  let classes = getDayClasses(date, dateProfile, context)\n\n  classes.unshift('fc-day', theme.getClass('widgetContent'))\n\n  return '<td class=\"' + classes.join(' ') + '\"' +\n    (isDateValid ?\n      ' data-date=\"' + dateEnv.formatIso(date, { omitTime: true }) + '\"' :\n      '') +\n    (otherAttrs ?\n      ' ' + otherAttrs :\n      '') +\n    '></td>'\n}\n","import {\n  createElement,\n  insertAfterElement,\n  findElements,\n  findChildren,\n  removeElement,\n  computeRect,\n  PositionCache,\n  addDays,\n  DateMarker,\n  createFormatter,\n  DateComponent,\n  EventSegUiInteractionState,\n  Seg,\n  rangeContainsMarker,\n  intersectRanges,\n  EventRenderRange,\n  buildGotoAnchorHtml,\n  getDayClasses,\n  DateProfile,\n  memoizeRendering,\n  MemoizedRendering\n} from '@fullcalendar/core'\nimport Popover from './Popover'\nimport DayGridEventRenderer from './DayGridEventRenderer'\nimport DayGridMirrorRenderer from './DayGridMirrorRenderer'\nimport DayGridFillRenderer from './DayGridFillRenderer'\nimport DayTile from './DayTile'\nimport DayBgRow from './DayBgRow'\n\nconst DAY_NUM_FORMAT = createFormatter({ day: 'numeric' })\nconst WEEK_NUM_FORMAT = createFormatter({ week: 'numeric' })\n\n\n/* A component that renders a grid of whole-days that runs horizontally. There can be multiple rows, one per week.\n----------------------------------------------------------------------------------------------------------------------*/\n\nexport interface RenderProps { // TODO: combine with DayGridProps\n  renderNumberIntroHtml: (row: number, dayGrid: DayGrid) => string\n  renderBgIntroHtml: () => string\n  renderIntroHtml: () => string\n  colWeekNumbersVisible: boolean // week numbers render in own column? (caller does HTML via intro)\n  cellWeekNumbersVisible: boolean // display week numbers in day cell?\n}\n\nexport interface DayGridSeg extends Seg {\n  row: number\n  firstCol: number\n  lastCol: number\n}\n\nexport interface DayGridCell {\n  date: DateMarker\n  htmlAttrs?: string\n}\n\nexport interface DayGridProps {\n  dateProfile: DateProfile\n  cells: DayGridCell[][]\n  businessHourSegs: DayGridSeg[]\n  bgEventSegs: DayGridSeg[]\n  fgEventSegs: DayGridSeg[]\n  dateSelectionSegs: DayGridSeg[]\n  eventSelection: string\n  eventDrag: EventSegUiInteractionState | null\n  eventResize: EventSegUiInteractionState | null\n\n  // isRigid determines whether the individual rows should ignore the contents and be a constant height.\n  // Relies on the view's colCnt and rowCnt. In the future, this component should probably be self-sufficient.\n  isRigid: boolean\n}\n\nexport default class DayGrid extends DateComponent<DayGridProps> {\n\n  eventRenderer: DayGridEventRenderer\n  renderProps: RenderProps\n\n  rowCnt: number\n  colCnt: number\n\n  bottomCoordPadding: number = 0 // hack for extending the hit area for the last row of the coordinate grid\n\n  rowEls: HTMLElement[] // set of fake row elements\n  cellEls: HTMLElement[] // set of whole-day elements comprising the row's background\n\n  isCellSizesDirty: boolean = false\n  rowPositions: PositionCache\n  colPositions: PositionCache\n\n  segPopover: Popover // the Popover that holds events that can't fit in a cell. null when not visible\n  segPopoverTile: DayTile\n\n  private renderCells: MemoizedRendering<[DayGridCell[][], boolean]>\n  private renderBusinessHours: MemoizedRendering<[DayGridSeg[]]>\n  private renderDateSelection: MemoizedRendering<[DayGridSeg[]]>\n  private renderBgEvents: MemoizedRendering<[DayGridSeg[]]>\n  private renderFgEvents: MemoizedRendering<[DayGridSeg[]]>\n  private renderEventSelection: MemoizedRendering<[string]>\n  private renderEventDrag: MemoizedRendering<[EventSegUiInteractionState]>\n  private renderEventResize: MemoizedRendering<[EventSegUiInteractionState]>\n\n\n  constructor(context, el, renderProps: RenderProps) {\n    super(context, el)\n\n    let eventRenderer = this.eventRenderer = new DayGridEventRenderer(this)\n    let fillRenderer = this.fillRenderer = new DayGridFillRenderer(this)\n    this.mirrorRenderer = new DayGridMirrorRenderer(this)\n\n    let renderCells = this.renderCells = memoizeRendering(\n      this._renderCells,\n      this._unrenderCells\n    )\n\n    this.renderBusinessHours = memoizeRendering(\n      fillRenderer.renderSegs.bind(fillRenderer, 'businessHours'),\n      fillRenderer.unrender.bind(fillRenderer, 'businessHours'),\n      [ renderCells ]\n    )\n\n    this.renderDateSelection = memoizeRendering(\n      fillRenderer.renderSegs.bind(fillRenderer, 'highlight'),\n      fillRenderer.unrender.bind(fillRenderer, 'highlight'),\n      [ renderCells ]\n    )\n\n    this.renderBgEvents = memoizeRendering(\n      fillRenderer.renderSegs.bind(fillRenderer, 'bgEvent'),\n      fillRenderer.unrender.bind(fillRenderer, 'bgEvent'),\n      [ renderCells ]\n    )\n\n    this.renderFgEvents = memoizeRendering(\n      eventRenderer.renderSegs.bind(eventRenderer),\n      eventRenderer.unrender.bind(eventRenderer),\n      [ renderCells ]\n    )\n\n    this.renderEventSelection = memoizeRendering(\n      eventRenderer.selectByInstanceId.bind(eventRenderer),\n      eventRenderer.unselectByInstanceId.bind(eventRenderer),\n      [ this.renderFgEvents ]\n    )\n\n    this.renderEventDrag = memoizeRendering(\n      this._renderEventDrag,\n      this._unrenderEventDrag,\n      [ renderCells ]\n    )\n\n    this.renderEventResize = memoizeRendering(\n      this._renderEventResize,\n      this._unrenderEventResize,\n      [ renderCells ]\n    )\n\n    this.renderProps = renderProps\n  }\n\n\n  render(props: DayGridProps) {\n    console.log('DAY GRID RENDER')\n    let cells = props.cells\n    this.rowCnt = cells.length\n    this.colCnt = cells[0].length\n\n    this.renderCells(cells, props.isRigid)\n    this.renderBusinessHours(props.businessHourSegs)\n    this.renderDateSelection(props.dateSelectionSegs)\n    this.renderBgEvents(props.bgEventSegs)\n    console.log('renderFgEvents', props.fgEventSegs)\n    this.renderFgEvents(props.fgEventSegs)\n    this.renderEventSelection(props.eventSelection)\n    this.renderEventDrag(props.eventDrag)\n    this.renderEventResize(props.eventResize)\n\n    if (this.segPopoverTile) {\n      this.updateSegPopoverTile()\n    }\n  }\n\n\n  destroy() {\n    super.destroy()\n\n    this.renderCells.unrender() // will unrender everything else\n  }\n\n\n  getCellRange(row, col) {\n    let start = this.props.cells[row][col].date\n    let end = addDays(start, 1)\n\n    return { start, end }\n  }\n\n\n  updateSegPopoverTile(date?, segs?) {\n    let ownProps = this.props\n\n    this.segPopoverTile.receiveProps({\n      date: date || (this.segPopoverTile.props as any).date,\n      fgSegs: segs || (this.segPopoverTile.props as any).fgSegs,\n      eventSelection: ownProps.eventSelection,\n      eventDragInstances: ownProps.eventDrag ? ownProps.eventDrag.affectedInstances : null,\n      eventResizeInstances: ownProps.eventResize ? ownProps.eventResize.affectedInstances : null\n    })\n  }\n\n\n  /* Date Rendering\n  ------------------------------------------------------------------------------------------------------------------*/\n\n\n  _renderCells(cells: DayGridCell[][], isRigid: boolean) {\n    let { view, dateEnv } = this\n    let { rowCnt, colCnt } = this\n    let html = ''\n    let row\n    let col\n\n    for (row = 0; row < rowCnt; row++) {\n      html += this.renderDayRowHtml(row, isRigid)\n    }\n    this.el.innerHTML = html\n\n    this.rowEls = findElements(this.el, '.fc-row')\n    this.cellEls = findElements(this.el, '.fc-day, .fc-disabled-day')\n\n    if (this.isRtl) {\n      this.cellEls.reverse()\n    }\n\n    this.rowPositions = new PositionCache(\n      this.el,\n      this.rowEls,\n      false,\n      true // vertical\n    )\n\n    this.colPositions = new PositionCache(\n      this.el,\n      this.cellEls.slice(0, colCnt), // only the first row\n      true,\n      false // horizontal\n    )\n\n    // trigger dayRender with each cell's element\n    for (row = 0; row < rowCnt; row++) {\n      for (col = 0; col < colCnt; col++) {\n        this.publiclyTrigger('dayRender', [\n          {\n            date: dateEnv.toDate(cells[row][col].date),\n            el: this.getCellEl(row, col),\n            view\n          }\n        ])\n      }\n    }\n\n    this.isCellSizesDirty = true\n  }\n\n\n  _unrenderCells() {\n    this.removeSegPopover()\n  }\n\n\n  // Generates the HTML for a single row, which is a div that wraps a table.\n  // `row` is the row number.\n  renderDayRowHtml(row, isRigid) {\n    let { theme } = this\n    let classes = [ 'fc-row', 'fc-week', theme.getClass('dayRow') ]\n\n    if (isRigid) {\n      classes.push('fc-rigid')\n    }\n\n    let bgRow = new DayBgRow(this.context)\n\n    return '' +\n      '<div class=\"' + classes.join(' ') + '\">' +\n        '<div class=\"fc-bg\">' +\n          '<table class=\"' + theme.getClass('tableGrid') + '\">' +\n            bgRow.renderHtml({\n              cells: this.props.cells[row],\n              dateProfile: this.props.dateProfile,\n              renderIntroHtml: this.renderProps.renderBgIntroHtml\n            }) +\n          '</table>' +\n        '</div>' +\n        '<div class=\"fc-content-skeleton\">' +\n          '<table>' +\n            (this.getIsNumbersVisible() ?\n              '<thead>' +\n                this.renderNumberTrHtml(row) +\n              '</thead>' :\n              ''\n              ) +\n          '</table>' +\n        '</div>' +\n      '</div>'\n  }\n\n\n  getIsNumbersVisible() {\n    return this.getIsDayNumbersVisible() ||\n      this.renderProps.cellWeekNumbersVisible ||\n      this.renderProps.colWeekNumbersVisible\n  }\n\n\n  getIsDayNumbersVisible() {\n    return this.rowCnt > 1\n  }\n\n\n  /* Grid Number Rendering\n  ------------------------------------------------------------------------------------------------------------------*/\n\n\n  renderNumberTrHtml(row: number) {\n    let intro = this.renderProps.renderNumberIntroHtml(row, this)\n\n    return '' +\n      '<tr>' +\n        (this.isRtl ? '' : intro) +\n        this.renderNumberCellsHtml(row) +\n        (this.isRtl ? intro : '') +\n      '</tr>'\n  }\n\n\n  renderNumberCellsHtml(row) {\n    let htmls = []\n    let col\n    let date\n\n    for (col = 0; col < this.colCnt; col++) {\n      date = this.props.cells[row][col].date\n      htmls.push(this.renderNumberCellHtml(date))\n    }\n\n    if (this.isRtl) {\n      htmls.reverse()\n    }\n\n    return htmls.join('')\n  }\n\n\n  // Generates the HTML for the <td>s of the \"number\" row in the DayGrid's content skeleton.\n  // The number row will only exist if either day numbers or week numbers are turned on.\n  renderNumberCellHtml(date) {\n    let { view, dateEnv } = this\n    let html = ''\n    let isDateValid = rangeContainsMarker(this.props.dateProfile.activeRange, date) // TODO: called too frequently. cache somehow.\n    let isDayNumberVisible = this.getIsDayNumbersVisible() && isDateValid\n    let classes\n    let weekCalcFirstDow\n\n    if (!isDayNumberVisible && !this.renderProps.cellWeekNumbersVisible) {\n      // no numbers in day cell (week number must be along the side)\n      return '<td></td>' //  will create an empty space above events :(\n    }\n\n    classes = getDayClasses(date, this.props.dateProfile, this.context)\n    classes.unshift('fc-day-top')\n\n    if (this.renderProps.cellWeekNumbersVisible) {\n      weekCalcFirstDow = dateEnv.weekDow\n    }\n\n    html += '<td class=\"' + classes.join(' ') + '\"' +\n      (isDateValid ?\n        ' data-date=\"' + dateEnv.formatIso(date, { omitTime: true }) + '\"' :\n        ''\n        ) +\n      '>'\n\n    if (this.renderProps.cellWeekNumbersVisible && (date.getUTCDay() === weekCalcFirstDow)) {\n      html += buildGotoAnchorHtml(\n        view,\n        { date, type: 'week' },\n        { 'class': 'fc-week-number' },\n        dateEnv.format(date, WEEK_NUM_FORMAT) // inner HTML\n      )\n    }\n\n    if (isDayNumberVisible) {\n      html += buildGotoAnchorHtml(\n        view,\n        date,\n        { 'class': 'fc-day-number' },\n        dateEnv.format(date, DAY_NUM_FORMAT) // inner HTML\n      )\n    }\n\n    html += '</td>'\n\n    return html\n  }\n\n\n  /* Sizing\n  ------------------------------------------------------------------------------------------------------------------*/\n\n\n  updateSize(isResize: boolean) {\n    let { fillRenderer, eventRenderer, mirrorRenderer } = this\n\n    if (\n      isResize ||\n      this.isCellSizesDirty ||\n      this.view.calendar.isEventsUpdated // hack\n    ) {\n      this.buildPositionCaches()\n      this.isCellSizesDirty = false\n    }\n\n    fillRenderer.computeSizes(isResize)\n    eventRenderer.computeSizes(isResize)\n    mirrorRenderer.computeSizes(isResize)\n\n    fillRenderer.assignSizes(isResize)\n    eventRenderer.assignSizes(isResize)\n    mirrorRenderer.assignSizes(isResize)\n  }\n\n\n  buildPositionCaches() {\n    this.buildColPositions()\n    this.buildRowPositions()\n  }\n\n\n  buildColPositions() {\n    this.colPositions.build()\n  }\n\n\n  buildRowPositions() {\n    this.rowPositions.build()\n    this.rowPositions.bottoms[this.rowCnt - 1] += this.bottomCoordPadding // hack\n  }\n\n\n  /* Hit System\n  ------------------------------------------------------------------------------------------------------------------*/\n\n  positionToHit(leftPosition, topPosition) {\n    let { colPositions, rowPositions } = this\n\n    let col = colPositions.leftToIndex(leftPosition)\n    let row = rowPositions.topToIndex(topPosition)\n\n    if (row != null && col != null) {\n      return {\n        row,\n        col,\n        dateSpan: {\n          range: this.getCellRange(row, col),\n          allDay: true\n        },\n        dayEl: this.getCellEl(row, col),\n        relativeRect: {\n          left: colPositions.lefts[col],\n          right: colPositions.rights[col],\n          top: rowPositions.tops[row],\n          bottom: rowPositions.bottoms[row]\n        }\n      }\n    }\n  }\n\n\n  /* Cell System\n  ------------------------------------------------------------------------------------------------------------------*/\n  // FYI: the first column is the leftmost column, regardless of date\n\n\n  getCellEl(row, col) {\n    return this.cellEls[row * this.colCnt + col]\n  }\n\n\n  /* Event Drag Visualization\n  ------------------------------------------------------------------------------------------------------------------*/\n\n\n  _renderEventDrag(state: EventSegUiInteractionState) {\n    if (state) {\n      this.eventRenderer.hideByHash(state.affectedInstances)\n      this.fillRenderer.renderSegs('highlight', state.segs)\n    }\n  }\n\n\n  _unrenderEventDrag(state: EventSegUiInteractionState) {\n    if (state) {\n      this.eventRenderer.showByHash(state.affectedInstances)\n      this.fillRenderer.unrender('highlight')\n    }\n  }\n\n\n  /* Event Resize Visualization\n  ------------------------------------------------------------------------------------------------------------------*/\n\n\n  _renderEventResize(state: EventSegUiInteractionState) {\n    if (state) {\n      this.eventRenderer.hideByHash(state.affectedInstances)\n      this.fillRenderer.renderSegs('highlight', state.segs)\n      this.mirrorRenderer.renderSegs(state.segs, { isResizing: true, sourceSeg: state.sourceSeg })\n    }\n  }\n\n\n  _unrenderEventResize(state: EventSegUiInteractionState) {\n    if (state) {\n      this.eventRenderer.showByHash(state.affectedInstances)\n      this.fillRenderer.unrender('highlight')\n      this.mirrorRenderer.unrender(state.segs, { isResizing: true, sourceSeg: state.sourceSeg })\n    }\n  }\n\n\n  /* More+ Link Popover\n  ------------------------------------------------------------------------------------------------------------------*/\n\n\n  removeSegPopover() {\n    if (this.segPopover) {\n      this.segPopover.hide() // in handler, will call segPopover's removeElement\n    }\n  }\n\n\n  // Limits the number of \"levels\" (vertically stacking layers of events) for each row of the grid.\n  // `levelLimit` can be false (don't limit), a number, or true (should be computed).\n  limitRows(levelLimit) {\n    let rowStructs = this.eventRenderer.rowStructs || []\n    let row // row #\n    let rowLevelLimit\n\n    for (row = 0; row < rowStructs.length; row++) {\n      this.unlimitRow(row)\n\n      if (!levelLimit) {\n        rowLevelLimit = false\n      } else if (typeof levelLimit === 'number') {\n        rowLevelLimit = levelLimit\n      } else {\n        rowLevelLimit = this.computeRowLevelLimit(row)\n      }\n\n      if (rowLevelLimit !== false) {\n        this.limitRow(row, rowLevelLimit)\n      }\n    }\n  }\n\n\n  // Computes the number of levels a row will accomodate without going outside its bounds.\n  // Assumes the row is \"rigid\" (maintains a constant height regardless of what is inside).\n  // `row` is the row number.\n  computeRowLevelLimit(row): (number | false) {\n    let rowEl = this.rowEls[row] // the containing \"fake\" row div\n    let rowBottom = rowEl.getBoundingClientRect().bottom // relative to viewport!\n    let trEls = findChildren(this.eventRenderer.rowStructs[row].tbodyEl) as HTMLTableRowElement[]\n    let i\n    let trEl: HTMLTableRowElement\n\n    // Reveal one level <tr> at a time and stop when we find one out of bounds\n    for (i = 0; i < trEls.length; i++) {\n      trEl = trEls[i]\n      trEl.classList.remove('fc-limited') // reset to original state (reveal)\n\n      if (trEl.getBoundingClientRect().bottom > rowBottom) {\n        return i\n      }\n    }\n\n    return false // should not limit at all\n  }\n\n\n  // Limits the given grid row to the maximum number of levels and injects \"more\" links if necessary.\n  // `row` is the row number.\n  // `levelLimit` is a number for the maximum (inclusive) number of levels allowed.\n  limitRow(row, levelLimit) {\n    let { colCnt, isRtl } = this\n    let rowStruct = this.eventRenderer.rowStructs[row]\n    let moreNodes = [] // array of \"more\" <a> links and <td> DOM nodes\n    let col = 0 // col #, left-to-right (not chronologically)\n    let levelSegs // array of segment objects in the last allowable level, ordered left-to-right\n    let cellMatrix // a matrix (by level, then column) of all <td> elements in the row\n    let limitedNodes // array of temporarily hidden level <tr> and segment <td> DOM nodes\n    let i\n    let seg\n    let segsBelow // array of segment objects below `seg` in the current `col`\n    let totalSegsBelow // total number of segments below `seg` in any of the columns `seg` occupies\n    let colSegsBelow // array of segment arrays, below seg, one for each column (offset from segs's first column)\n    let td: HTMLTableCellElement\n    let rowSpan\n    let segMoreNodes // array of \"more\" <td> cells that will stand-in for the current seg's cell\n    let j\n    let moreTd: HTMLTableCellElement\n    let moreWrap\n    let moreLink\n\n    // Iterates through empty level cells and places \"more\" links inside if need be\n    let emptyCellsUntil = (endCol) => { // goes from current `col` to `endCol`\n      while (col < endCol) {\n        segsBelow = this.getCellSegs(row, col, levelLimit)\n        if (segsBelow.length) {\n          td = cellMatrix[levelLimit - 1][col]\n          moreLink = this.renderMoreLink(row, col, segsBelow)\n          moreWrap = createElement('div', null, moreLink)\n          td.appendChild(moreWrap)\n          moreNodes.push(moreWrap)\n        }\n        col++\n      }\n    }\n\n    if (levelLimit && levelLimit < rowStruct.segLevels.length) { // is it actually over the limit?\n      levelSegs = rowStruct.segLevels[levelLimit - 1]\n      cellMatrix = rowStruct.cellMatrix\n\n      limitedNodes = findChildren(rowStruct.tbodyEl).slice(levelLimit) // get level <tr> elements past the limit\n      limitedNodes.forEach(function(node) {\n        node.classList.add('fc-limited') // hide elements and get a simple DOM-nodes array\n      })\n\n      // iterate though segments in the last allowable level\n      for (i = 0; i < levelSegs.length; i++) {\n        seg = levelSegs[i]\n        let leftCol = isRtl ? (colCnt - 1 - seg.lastCol) : seg.firstCol\n        let rightCol = isRtl ? (colCnt - 1 - seg.firstCol) : seg.lastCol\n\n        emptyCellsUntil(leftCol) // process empty cells before the segment\n\n        // determine *all* segments below `seg` that occupy the same columns\n        colSegsBelow = []\n        totalSegsBelow = 0\n        while (col <= rightCol) {\n          segsBelow = this.getCellSegs(row, col, levelLimit)\n          colSegsBelow.push(segsBelow)\n          totalSegsBelow += segsBelow.length\n          col++\n        }\n\n        if (totalSegsBelow) { // do we need to replace this segment with one or many \"more\" links?\n          td = cellMatrix[levelLimit - 1][leftCol] // the segment's parent cell\n          rowSpan = td.rowSpan || 1\n          segMoreNodes = []\n\n          // make a replacement <td> for each column the segment occupies. will be one for each colspan\n          for (j = 0; j < colSegsBelow.length; j++) {\n            moreTd = createElement('td', { className: 'fc-more-cell', rowSpan }) as HTMLTableCellElement\n            segsBelow = colSegsBelow[j]\n            moreLink = this.renderMoreLink(\n              row,\n              leftCol + j,\n              [ seg ].concat(segsBelow) // count seg as hidden too\n            )\n            moreWrap = createElement('div', null, moreLink)\n            moreTd.appendChild(moreWrap)\n            segMoreNodes.push(moreTd)\n            moreNodes.push(moreTd)\n          }\n\n          td.classList.add('fc-limited')\n          insertAfterElement(td, segMoreNodes)\n\n          limitedNodes.push(td)\n        }\n      }\n\n      emptyCellsUntil(this.colCnt) // finish off the level\n      rowStruct.moreEls = moreNodes // for easy undoing later\n      rowStruct.limitedEls = limitedNodes // for easy undoing later\n    }\n  }\n\n\n  // Reveals all levels and removes all \"more\"-related elements for a grid's row.\n  // `row` is a row number.\n  unlimitRow(row) {\n    let rowStruct = this.eventRenderer.rowStructs[row]\n\n    if (rowStruct.moreEls) {\n      rowStruct.moreEls.forEach(removeElement)\n      rowStruct.moreEls = null\n    }\n\n    if (rowStruct.limitedEls) {\n      rowStruct.limitedEls.forEach(function(limitedEl) {\n        limitedEl.classList.remove('fc-limited')\n      })\n      rowStruct.limitedEls = null\n    }\n  }\n\n\n  // Renders an <a> element that represents hidden event element for a cell.\n  // Responsible for attaching click handler as well.\n  renderMoreLink(row, col, hiddenSegs) {\n    let { view, dateEnv } = this\n\n    let a = createElement('a', { className: 'fc-more' })\n    a.innerText = this.getMoreLinkText(hiddenSegs.length)\n    a.addEventListener('click', (ev) => {\n      let clickOption = this.opt('eventLimitClick')\n      let _col = this.isRtl ? this.colCnt - col - 1 : col // HACK: props.cells has different dir system?\n      let date = this.props.cells[row][_col].date\n      let moreEl = ev.currentTarget as HTMLElement\n      let dayEl = this.getCellEl(row, col)\n      let allSegs = this.getCellSegs(row, col)\n\n      // rescope the segments to be within the cell's date\n      let reslicedAllSegs = this.resliceDaySegs(allSegs, date)\n      let reslicedHiddenSegs = this.resliceDaySegs(hiddenSegs, date)\n\n      if (typeof clickOption === 'function') {\n        // the returned value can be an atomic option\n        clickOption = this.publiclyTrigger('eventLimitClick', [\n          {\n            date: dateEnv.toDate(date),\n            allDay: true,\n            dayEl: dayEl,\n            moreEl: moreEl,\n            segs: reslicedAllSegs,\n            hiddenSegs: reslicedHiddenSegs,\n            jsEvent: ev,\n            view\n          }\n        ])\n      }\n\n      if (clickOption === 'popover') {\n        this.showSegPopover(row, col, moreEl, reslicedAllSegs)\n      } else if (typeof clickOption === 'string') { // a view name\n        view.calendar.zoomTo(date, clickOption)\n      }\n    })\n\n    return a\n  }\n\n\n  // Reveals the popover that displays all events within a cell\n  showSegPopover(row, col, moreLink: HTMLElement, segs) {\n    let { calendar, view, theme } = this\n    let _col = this.isRtl ? this.colCnt - col - 1 : col // HACK: props.cells has different dir system?\n    let moreWrap = moreLink.parentNode as HTMLElement // the <div> wrapper around the <a>\n    let topEl: HTMLElement // the element we want to match the top coordinate of\n    let options\n\n    if (this.rowCnt === 1) {\n      topEl = view.el // will cause the popover to cover any sort of header\n    } else {\n      topEl = this.rowEls[row] // will align with top of row\n    }\n\n    options = {\n      className: 'fc-more-popover ' + theme.getClass('popover'),\n      parentEl: view.el, // will be outside of all scrollers within the view\n      top: computeRect(topEl).top,\n      autoHide: true, // when the user clicks elsewhere, hide the popover\n      content: (el) => {\n        this.segPopoverTile = new DayTile(\n          this.context,\n          el\n        )\n        this.updateSegPopoverTile(\n          this.props.cells[row][_col].date,\n          segs\n        )\n      },\n      hide: () => {\n        this.segPopoverTile.destroy()\n        this.segPopoverTile = null\n        this.segPopover.destroy()\n        this.segPopover = null\n      }\n    }\n\n    // Determine horizontal coordinate.\n    // We use the moreWrap instead of the <td> to avoid border confusion.\n    if (this.isRtl) {\n      options.right = computeRect(moreWrap).right + 1 // +1 to be over cell border\n    } else {\n      options.left = computeRect(moreWrap).left - 1 // -1 to be over cell border\n    }\n\n    this.segPopover = new Popover(options)\n    this.segPopover.show()\n    calendar.releaseAfterSizingTriggers() // hack for eventPositioned\n  }\n\n\n  // Given the events within an array of segment objects, reslice them to be in a single day\n  resliceDaySegs(segs, dayDate) {\n    let dayStart = dayDate\n    let dayEnd = addDays(dayStart, 1)\n    let dayRange = { start: dayStart, end: dayEnd }\n    let newSegs = []\n\n    for (let seg of segs) {\n      let eventRange = seg.eventRange\n      let origRange = eventRange.range\n      let slicedRange = intersectRanges(origRange, dayRange)\n\n      if (slicedRange) {\n        newSegs.push({\n          ...seg,\n          eventRange: {\n            def: eventRange.def,\n            ui: { ...eventRange.ui, durationEditable: false }, // hack to disable resizing\n            instance: eventRange.instance,\n            range: slicedRange\n          } as EventRenderRange,\n          isStart: seg.isStart && slicedRange.start.valueOf() === origRange.start.valueOf(),\n          isEnd: seg.isEnd && slicedRange.end.valueOf() === origRange.end.valueOf()\n        })\n      }\n    }\n\n    return newSegs\n  }\n\n\n  // Generates the text that should be inside a \"more\" link, given the number of events it represents\n  getMoreLinkText(num) {\n    let opt = this.opt('eventLimitText')\n\n    if (typeof opt === 'function') {\n      return opt(num)\n    } else {\n      return '+' + num + ' ' + opt\n    }\n  }\n\n\n  // Returns segments within a given cell.\n  // If `startLevel` is specified, returns only events including and below that level. Otherwise returns all segs.\n  getCellSegs(row, col, startLevel?) {\n    let segMatrix = this.eventRenderer.rowStructs[row].segMatrix\n    let level = startLevel || 0\n    let segs = []\n    let seg\n\n    while (level < segMatrix.length) {\n      seg = segMatrix[level][col]\n      if (seg) {\n        segs.push(seg)\n      }\n      level++\n    }\n\n    return segs\n  }\n\n}\n","import {\n  htmlEscape, createElement, findElements,\n  matchCellWidths,\n  uncompensateScroll,\n  compensateScroll,\n  subtractInnerElHeight,\n  distributeHeight,\n  undistributeHeight,\n  createFormatter,\n  ScrollComponent,\n  View,\n  buildGotoAnchorHtml,\n  ComponentContext,\n  ViewSpec,\n  DateProfileGenerator\n} from '@fullcalendar/core'\nimport DayGridDateProfileGenerator from './DayGridDateProfileGenerator'\nimport DayGrid from './DayGrid'\n\nconst WEEK_NUM_FORMAT = createFormatter({ week: 'numeric' })\n\n\n/* An abstract class for the daygrid views, as well as month view. Renders one or more rows of day cells.\n----------------------------------------------------------------------------------------------------------------------*/\n// It is a manager for a DayGrid subcomponent, which does most of the heavy lifting.\n// It is responsible for managing width/height.\n\nexport default abstract class DayGridView extends View {\n\n  scroller: ScrollComponent\n  dayGrid: DayGrid // the main subcomponent that does most of the heavy lifting\n\n  colWeekNumbersVisible: boolean\n  weekNumberWidth: number\n\n\n  constructor(context: ComponentContext, viewSpec: ViewSpec, dateProfileGenerator: DateProfileGenerator, parentEl: HTMLElement) {\n    super(context, viewSpec, dateProfileGenerator, parentEl)\n\n    this.el.classList.add('fc-dayGrid-view')\n    this.el.innerHTML = this.renderSkeletonHtml()\n\n    this.scroller = new ScrollComponent(\n      'hidden', // overflow x\n      'auto' // overflow y\n    )\n\n    let dayGridContainerEl = this.scroller.el\n    this.el.querySelector('.fc-body > tr > td').appendChild(dayGridContainerEl)\n    dayGridContainerEl.classList.add('fc-day-grid-container')\n    let dayGridEl = createElement('div', { className: 'fc-day-grid' })\n    dayGridContainerEl.appendChild(dayGridEl)\n\n    let cellWeekNumbersVisible\n\n    if (this.opt('weekNumbers')) {\n      if (this.opt('weekNumbersWithinDays')) {\n        cellWeekNumbersVisible = true\n        this.colWeekNumbersVisible = false\n      } else {\n        cellWeekNumbersVisible = false\n        this.colWeekNumbersVisible = true\n      }\n    } else {\n      this.colWeekNumbersVisible = false\n      cellWeekNumbersVisible = false\n    }\n\n    this.dayGrid = new DayGrid(\n      this.context,\n      dayGridEl,\n      {\n        renderNumberIntroHtml: this.renderDayGridNumberIntroHtml,\n        renderBgIntroHtml: this.renderDayGridBgIntroHtml,\n        renderIntroHtml: this.renderDayGridIntroHtml,\n        colWeekNumbersVisible: this.colWeekNumbersVisible,\n        cellWeekNumbersVisible\n      }\n    )\n  }\n\n\n  destroy() {\n    super.destroy()\n\n    this.dayGrid.destroy()\n    this.scroller.destroy()\n  }\n\n  // Builds the HTML skeleton for the view.\n  // The day-grid component will render inside of a container defined by this HTML.\n  renderSkeletonHtml() {\n    let { theme } = this\n\n    return '' +\n      '<table class=\"' + theme.getClass('tableGrid') + '\">' +\n        (this.opt('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          ) +\n        '<tbody class=\"fc-body\">' +\n          '<tr>' +\n            '<td class=\"' + theme.getClass('widgetContent') + '\"></td>' +\n          '</tr>' +\n        '</tbody>' +\n      '</table>'\n  }\n\n\n  // Generates an HTML attribute string for setting the width of the week number column, if it is known\n  weekNumberStyleAttr() {\n    if (this.weekNumberWidth != null) {\n      return 'style=\"width:' + this.weekNumberWidth + 'px\"'\n    }\n    return ''\n  }\n\n\n  // Determines whether each row should have a constant height\n  hasRigidRows() {\n    let eventLimit = this.opt('eventLimit')\n\n    return eventLimit && typeof eventLimit !== 'number'\n  }\n\n\n  /* Dimensions\n  ------------------------------------------------------------------------------------------------------------------*/\n\n\n  updateSize(isResize: boolean, viewHeight: number, isAuto: boolean) {\n    super.updateSize(isResize, viewHeight, isAuto) // will call updateBaseSize. important that executes first\n\n    this.dayGrid.updateSize(isResize)\n  }\n\n\n  // Refreshes the horizontal dimensions of the view\n  updateBaseSize(isResize: boolean, viewHeight: number, isAuto: boolean) {\n    let { dayGrid } = this\n    let eventLimit = this.opt('eventLimit')\n    let headRowEl = (this as any).header ? (this as any).header.el : null // HACK\n    let scrollerHeight\n    let scrollbarWidths\n\n    // hack to give the view some height prior to dayGrid's columns being rendered\n    // TODO: separate setting height from scroller VS dayGrid.\n    if (!dayGrid.rowEls) {\n      if (!isAuto) {\n        scrollerHeight = this.computeScrollerHeight(viewHeight)\n        this.scroller.setHeight(scrollerHeight)\n      }\n      return\n    }\n\n    if (this.colWeekNumbersVisible) {\n      // Make sure all week number cells running down the side have the same width.\n      this.weekNumberWidth = matchCellWidths(\n        findElements(this.el, '.fc-week-number')\n      )\n    }\n\n    // reset all heights to be natural\n    this.scroller.clear()\n    if (headRowEl) {\n      uncompensateScroll(headRowEl)\n    }\n\n    dayGrid.removeSegPopover() // kill the \"more\" popover if displayed\n\n    // is the event limit a constant level number?\n    if (eventLimit && typeof eventLimit === 'number') {\n      dayGrid.limitRows(eventLimit) // limit the levels first so the height can redistribute after\n    }\n\n    // distribute the height to the rows\n    // (viewHeight is a \"recommended\" value if isAuto)\n    scrollerHeight = this.computeScrollerHeight(viewHeight)\n    this.setGridHeight(scrollerHeight, isAuto)\n\n    // is the event limit dynamically calculated?\n    if (eventLimit && typeof eventLimit !== 'number') {\n      dayGrid.limitRows(eventLimit) // limit the levels after the grid's row heights have been set\n    }\n\n    if (!isAuto) { // should we force dimensions of the scroll container?\n\n      this.scroller.setHeight(scrollerHeight)\n      scrollbarWidths = this.scroller.getScrollbarWidths()\n\n      if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars?\n\n        if (headRowEl) {\n          compensateScroll(headRowEl, scrollbarWidths)\n        }\n\n        // doing the scrollbar compensation might have created text overflow which created more height. redo\n        scrollerHeight = this.computeScrollerHeight(viewHeight)\n        this.scroller.setHeight(scrollerHeight)\n      }\n\n      // guarantees the same scrollbar widths\n      this.scroller.lockOverflow(scrollbarWidths)\n    }\n  }\n\n\n  // given a desired total height of the view, returns what the height of the scroller should be\n  computeScrollerHeight(viewHeight) {\n    return viewHeight -\n      subtractInnerElHeight(this.el, this.scroller.el) // everything that's NOT the scroller\n  }\n\n\n  // Sets the height of just the DayGrid component in this view\n  setGridHeight(height, isAuto) {\n\n    if (this.opt('monthMode')) {\n\n      // if auto, make the height of each row the height that it would be if there were 6 weeks\n      if (isAuto) {\n        height *= this.dayGrid.rowCnt / 6\n      }\n\n      distributeHeight(this.dayGrid.rowEls, height, !isAuto) // if auto, don't compensate for height-hogging rows\n\n    } else {\n\n      if (isAuto) {\n        undistributeHeight(this.dayGrid.rowEls) // let the rows be their natural height with no expanding\n      } else {\n        distributeHeight(this.dayGrid.rowEls, height, true) // true = compensate for height-hogging rows\n      }\n    }\n  }\n\n\n  /* Scroll\n  ------------------------------------------------------------------------------------------------------------------*/\n\n\n  computeDateScroll(timeMs: number) {\n    return { top: 0 }\n  }\n\n\n  queryDateScroll() {\n    return { top: this.scroller.getScrollTop() }\n  }\n\n\n  applyDateScroll(scroll) {\n    if (scroll.top !== undefined) {\n      this.scroller.setScrollTop(scroll.top)\n    }\n  }\n\n\n  /* Header Rendering\n  ------------------------------------------------------------------------------------------------------------------*/\n\n\n  // Generates the HTML that will go before the day-of week header cells\n  renderHeadIntroHtml = () => {\n    let { theme } = this\n\n    if (this.colWeekNumbersVisible) {\n      return '' +\n        '<th class=\"fc-week-number ' + theme.getClass('widgetHeader') + '\" ' + this.weekNumberStyleAttr() + '>' +\n          '<span>' + // needed for matchCellWidths\n            htmlEscape(this.opt('weekLabel')) +\n          '</span>' +\n        '</th>'\n    }\n\n    return ''\n  }\n\n\n  /* Day Grid Rendering\n  ------------------------------------------------------------------------------------------------------------------*/\n\n\n  // Generates the HTML that will go before content-skeleton cells that display the day/week numbers\n  renderDayGridNumberIntroHtml = (row: number, dayGrid: DayGrid) => {\n    let { dateEnv } = this\n    let weekStart = dayGrid.props.cells[row][0].date\n\n    if (this.colWeekNumbersVisible) {\n      return '' +\n        '<td class=\"fc-week-number\" ' + this.weekNumberStyleAttr() + '>' +\n          buildGotoAnchorHtml( // aside from link, important for matchCellWidths\n            this,\n            { date: weekStart, type: 'week', forceOff: dayGrid.colCnt === 1 },\n            dateEnv.format(weekStart, WEEK_NUM_FORMAT) // inner HTML\n          ) +\n        '</td>'\n    }\n\n    return ''\n  }\n\n\n  // Generates the HTML that goes before the day bg cells for each day-row\n  renderDayGridBgIntroHtml = () => {\n    let { theme } = this\n\n    if (this.colWeekNumbersVisible) {\n      return '<td class=\"fc-week-number ' + theme.getClass('widgetContent') + '\" ' + this.weekNumberStyleAttr() + '></td>'\n    }\n\n    return ''\n  }\n\n\n  // Generates the HTML that goes before every other type of row generated by DayGrid.\n  // Affects mirror-skeleton and highlight-skeleton rows.\n  renderDayGridIntroHtml = () => {\n\n    if (this.colWeekNumbersVisible) {\n      return '<td class=\"fc-week-number\" ' + this.weekNumberStyleAttr() + '></td>'\n    }\n\n    return ''\n  }\n\n}\n\nDayGridView.prototype.dateProfileGeneratorClass = DayGridDateProfileGenerator\n","import {\n  DateProfile,\n  EventStore,\n  EventUiHash,\n  DateSpan,\n  EventInteractionState,\n  DayTable,\n  Duration,\n  DateComponent,\n  DateRange,\n  Slicer,\n  Hit,\n  ComponentContext\n} from '@fullcalendar/core'\nimport { default as DayGrid, DayGridSeg } from './DayGrid'\n\nexport interface SimpleDayGridProps {\n  dateProfile: DateProfile | null\n  dayTable: DayTable\n  nextDayThreshold: Duration\n  businessHours: EventStore\n  eventStore: EventStore\n  eventUiBases: EventUiHash\n  dateSelection: DateSpan | null\n  eventSelection: string\n  eventDrag: EventInteractionState | null\n  eventResize: EventInteractionState | null\n  isRigid: boolean\n}\n\nexport default class SimpleDayGrid extends DateComponent<SimpleDayGridProps> {\n\n  dayGrid: DayGrid\n\n  private slicer = new DayGridSlicer()\n\n  constructor(context: ComponentContext, dayGrid: DayGrid) {\n    super(context, dayGrid.el)\n\n    this.dayGrid = dayGrid\n\n    context.calendar.registerInteractiveComponent(this, { el: this.dayGrid.el })\n  }\n\n  destroy() {\n    super.destroy()\n\n    this.calendar.unregisterInteractiveComponent(this)\n  }\n\n  render(props: SimpleDayGridProps) {\n    let { dayGrid } = this\n    let { dateProfile, dayTable } = props\n\n    dayGrid.receiveProps({\n      ...this.slicer.sliceProps(props, dateProfile, props.nextDayThreshold, dayGrid, dayTable),\n      dateProfile,\n      cells: dayTable.cells,\n      isRigid: props.isRigid\n    })\n  }\n\n  buildPositionCaches() {\n    this.dayGrid.buildPositionCaches()\n  }\n\n  queryHit(positionLeft: number, positionTop: number): Hit {\n    let rawHit = this.dayGrid.positionToHit(positionLeft, positionTop)\n\n    if (rawHit) {\n      return {\n        component: this.dayGrid,\n        dateSpan: rawHit.dateSpan,\n        dayEl: rawHit.dayEl,\n        rect: {\n          left: rawHit.relativeRect.left,\n          right: rawHit.relativeRect.right,\n          top: rawHit.relativeRect.top,\n          bottom: rawHit.relativeRect.bottom\n        },\n        layer: 0\n      }\n    }\n  }\n\n}\n\n\nexport class DayGridSlicer extends Slicer<DayGridSeg, [DayTable]> {\n\n  sliceRange(dateRange: DateRange, dayTable: DayTable): DayGridSeg[] {\n    return dayTable.sliceRange(dateRange)\n  }\n\n}\n","import {\n  DayHeader,\n  ComponentContext,\n  ViewSpec,\n  DateProfileGenerator,\n  DateProfile,\n  ViewProps,\n  memoize,\n  DaySeries,\n  DayTable\n} from '@fullcalendar/core'\nimport AbstractDayGridView from './AbstractDayGridView'\nimport SimpleDayGrid from './SimpleDayGrid'\n\nexport default class DayGridView extends AbstractDayGridView {\n\n  header: DayHeader\n  simpleDayGrid: SimpleDayGrid\n  dayTable: DayTable\n\n  private buildDayTable = memoize(buildDayTable)\n\n  constructor(_context: ComponentContext, viewSpec: ViewSpec, dateProfileGenerator: DateProfileGenerator, parentEl: HTMLElement) {\n    super(_context, viewSpec, dateProfileGenerator, parentEl)\n\n    if (this.opt('columnHeader')) {\n      this.header = new DayHeader(\n        this.context,\n        this.el.querySelector('.fc-head-container')\n      )\n    }\n\n    this.simpleDayGrid = new SimpleDayGrid(this.context, this.dayGrid)\n  }\n\n  destroy() {\n    super.destroy()\n\n    if (this.header) {\n      this.header.destroy()\n    }\n\n    this.simpleDayGrid.destroy()\n  }\n\n  render(props: ViewProps) {\n    super.render(props)\n\n    let { dateProfile } = this.props\n\n    let dayTable = this.dayTable =\n      this.buildDayTable(dateProfile, this.dateProfileGenerator)\n\n    if (this.header) {\n      this.header.receiveProps({\n        dateProfile,\n        dates: dayTable.headerDates,\n        datesRepDistinctDays: dayTable.rowCnt === 1,\n        renderIntroHtml: this.renderHeadIntroHtml\n      })\n    }\n\n    this.simpleDayGrid.receiveProps({\n      dateProfile,\n      dayTable,\n      businessHours: props.businessHours,\n      dateSelection: props.dateSelection,\n      eventStore: props.eventStore,\n      eventUiBases: props.eventUiBases,\n      eventSelection: props.eventSelection,\n      eventDrag: props.eventDrag,\n      eventResize: props.eventResize,\n      isRigid: this.hasRigidRows(),\n      nextDayThreshold: this.nextDayThreshold\n    })\n  }\n\n}\n\nexport function buildDayTable(dateProfile: DateProfile, dateProfileGenerator: DateProfileGenerator) {\n  let daySeries = new DaySeries(dateProfile.renderRange, dateProfileGenerator)\n\n  return new DayTable(\n    daySeries,\n    /year|month|week/.test(dateProfile.currentRangeUnit)\n  )\n}\n","import { createPlugin } from '@fullcalendar/core'\nimport DayGridView from './DayGridView'\n\nexport { default as SimpleDayGrid, DayGridSlicer } from './SimpleDayGrid'\nexport { default as DayGrid, DayGridSeg } from './DayGrid'\nexport { default as AbstractDayGridView } from './AbstractDayGridView'\nexport { default as DayGridView, buildDayTable as buildBasicDayTable } from './DayGridView'\nexport { default as DayBgRow } from './DayBgRow'\n\nexport default createPlugin({\n  defaultView: 'dayGridMonth',\n  views: {\n\n    dayGrid: DayGridView,\n\n    dayGridDay: {\n      type: 'dayGrid',\n      duration: { days: 1 }\n    },\n\n    dayGridWeek: {\n      type: 'dayGrid',\n      duration: { weeks: 1 }\n    },\n\n    dayGridMonth: {\n      type: 'dayGrid',\n      duration: { months: 1 },\n      monthMode: true,\n      fixedWeekCount: true\n    }\n\n  }\n})\n"],"names":["tslib_1.__extends","addWeeks","diffWeeks","DateProfileGenerator","createElement","listenBySelector","removeElement","computeRect","computeClippingRect","applyStyle","cssToStr","htmlEscape","FgEventRenderer","appendToElement","prependToElement","htmlToElement","FillRenderer","memoizeRendering","createFormatter","addDays","DateComponent","rangeContainsMarker","getDayClasses","findElements","PositionCache","buildGotoAnchorHtml","findChildren","insertAfterElement","intersectRanges","WEEK_NUM_FORMAT","ScrollComponent","matchCellWidths","uncompensateScroll","compensateScroll","subtractInnerElHeight","distributeHeight","undistributeHeight","View","Slicer","memoize","DayHeader","AbstractDayGridView","DaySeries","DayTable","createPlugin","DayGridView"],"mappings":"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"}