{"version":3,"file":"76d22f9e-b8aadd9b0d6ce93885ad.js","mappings":"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","sources":["webpack://escola-feevale/./node_modules/@fullcalendar/common/main.js"],"sourcesContent":["/*!\nFullCalendar v5.10.1\nDocs & License: https://fullcalendar.io/\n(c) 2021 Adam Shaw\n*/\nimport './main.css';\nimport { __assign, __spreadArray, __extends } from 'tslib';\nimport { createContext, Component, createRef, createElement, Fragment, createPortal } from './vdom.js';\nexport * from './vdom.js';\n\n// no public types yet. when there are, export from:\n// import {} from './api-type-deps'\nvar EventSourceApi = /** @class */function () {\n function EventSourceApi(context, internalEventSource) {\n this.context = context;\n this.internalEventSource = internalEventSource;\n }\n EventSourceApi.prototype.remove = function () {\n this.context.dispatch({\n type: 'REMOVE_EVENT_SOURCE',\n sourceId: this.internalEventSource.sourceId\n });\n };\n EventSourceApi.prototype.refetch = function () {\n this.context.dispatch({\n type: 'FETCH_EVENT_SOURCES',\n sourceIds: [this.internalEventSource.sourceId],\n isRefetch: true\n });\n };\n Object.defineProperty(EventSourceApi.prototype, \"id\", {\n get: function () {\n return this.internalEventSource.publicId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventSourceApi.prototype, \"url\", {\n get: function () {\n return this.internalEventSource.meta.url;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventSourceApi.prototype, \"format\", {\n get: function () {\n return this.internalEventSource.meta.format; // TODO: bad. not guaranteed\n },\n enumerable: false,\n configurable: true\n });\n return EventSourceApi;\n}();\nfunction removeElement(el) {\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n}\n// Querying\n// ----------------------------------------------------------------------------------------------------------------\nfunction elementClosest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n // really bad fallback for IE\n // from https://developer.mozilla.org/en-US/docs/Web/API/Element/closest\n }\n if (!document.documentElement.contains(el)) {\n return null;\n }\n do {\n if (elementMatches(el, selector)) {\n return el;\n }\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n}\nfunction elementMatches(el, selector) {\n var method = el.matches || el.matchesSelector || el.msMatchesSelector;\n return method.call(el, selector);\n}\n// accepts multiple subject els\n// returns a real array. good for methods like forEach\n// TODO: accept the document\nfunction findElements(container, selector) {\n var containers = container instanceof HTMLElement ? [container] : container;\n var allMatches = [];\n for (var i = 0; i < containers.length; i += 1) {\n var matches = containers[i].querySelectorAll(selector);\n for (var j = 0; j < matches.length; j += 1) {\n allMatches.push(matches[j]);\n }\n }\n return allMatches;\n}\n// accepts multiple subject els\n// only queries direct child elements // TODO: rename to findDirectChildren!\nfunction findDirectChildren(parent, selector) {\n var parents = parent instanceof HTMLElement ? [parent] : parent;\n var allMatches = [];\n for (var i = 0; i < parents.length; i += 1) {\n var childNodes = parents[i].children; // only ever elements\n for (var j = 0; j < childNodes.length; j += 1) {\n var childNode = childNodes[j];\n if (!selector || elementMatches(childNode, selector)) {\n allMatches.push(childNode);\n }\n }\n }\n return allMatches;\n}\n// Style\n// ----------------------------------------------------------------------------------------------------------------\nvar PIXEL_PROP_RE = /(top|left|right|bottom|width|height)$/i;\nfunction applyStyle(el, props) {\n for (var propName in props) {\n applyStyleProp(el, propName, props[propName]);\n }\n}\nfunction applyStyleProp(el, name, val) {\n if (val == null) {\n el.style[name] = '';\n } else if (typeof val === 'number' && PIXEL_PROP_RE.test(name)) {\n el.style[name] = val + \"px\";\n } else {\n el.style[name] = val;\n }\n}\n// Event Handling\n// ----------------------------------------------------------------------------------------------------------------\n// if intercepting bubbled events at the document/window/body level,\n// and want to see originating element (the 'target'), use this util instead\n// of `ev.target` because it goes within web-component boundaries.\nfunction getEventTargetViaRoot(ev) {\n var _a, _b;\n return (_b = (_a = ev.composedPath) === null || _a === void 0 ? void 0 : _a.call(ev)[0]) !== null && _b !== void 0 ? _b : ev.target;\n}\n// Shadow DOM consuderations\n// ----------------------------------------------------------------------------------------------------------------\nfunction getElRoot(el) {\n return el.getRootNode ? el.getRootNode() : document;\n}\n// Unique ID for DOM attribute\nvar guid$1 = 0;\nfunction getUniqueDomId() {\n guid$1 += 1;\n return 'fc-dom-' + guid$1;\n}\n\n// Stops a mouse/touch event from doing it's native browser action\nfunction preventDefault(ev) {\n ev.preventDefault();\n}\n// Event Delegation\n// ----------------------------------------------------------------------------------------------------------------\nfunction buildDelegationHandler(selector, handler) {\n return function (ev) {\n var matchedChild = elementClosest(ev.target, selector);\n if (matchedChild) {\n handler.call(matchedChild, ev, matchedChild);\n }\n };\n}\nfunction listenBySelector(container, eventType, selector, handler) {\n var attachedHandler = buildDelegationHandler(selector, handler);\n container.addEventListener(eventType, attachedHandler);\n return function () {\n container.removeEventListener(eventType, attachedHandler);\n };\n}\nfunction listenToHoverBySelector(container, selector, onMouseEnter, onMouseLeave) {\n var currentMatchedChild;\n return listenBySelector(container, 'mouseover', selector, function (mouseOverEv, matchedChild) {\n if (matchedChild !== currentMatchedChild) {\n currentMatchedChild = matchedChild;\n onMouseEnter(mouseOverEv, matchedChild);\n var realOnMouseLeave_1 = function (mouseLeaveEv) {\n currentMatchedChild = null;\n onMouseLeave(mouseLeaveEv, matchedChild);\n matchedChild.removeEventListener('mouseleave', realOnMouseLeave_1);\n };\n // listen to the next mouseleave, and then unattach\n matchedChild.addEventListener('mouseleave', realOnMouseLeave_1);\n }\n });\n}\n// Animation\n// ----------------------------------------------------------------------------------------------------------------\nvar transitionEventNames = ['webkitTransitionEnd', 'otransitionend', 'oTransitionEnd', 'msTransitionEnd', 'transitionend'];\n// triggered only when the next single subsequent transition finishes\nfunction whenTransitionDone(el, callback) {\n var realCallback = function (ev) {\n callback(ev);\n transitionEventNames.forEach(function (eventName) {\n el.removeEventListener(eventName, realCallback);\n });\n };\n transitionEventNames.forEach(function (eventName) {\n el.addEventListener(eventName, realCallback); // cross-browser way to determine when the transition finishes\n });\n}\n// ARIA workarounds\n// ----------------------------------------------------------------------------------------------------------------\nfunction createAriaClickAttrs(handler) {\n return __assign({\n onClick: handler\n }, createAriaKeyboardAttrs(handler));\n}\nfunction createAriaKeyboardAttrs(handler) {\n return {\n tabIndex: 0,\n onKeyDown: function (ev) {\n if (ev.key === 'Enter' || ev.key === ' ') {\n handler(ev);\n ev.preventDefault(); // if space, don't scroll down page\n }\n }\n };\n}\nvar guidNumber = 0;\nfunction guid() {\n guidNumber += 1;\n return String(guidNumber);\n}\n/* FullCalendar-specific DOM Utilities\n----------------------------------------------------------------------------------------------------------------------*/\n// Make the mouse cursor express that an event is not allowed in the current area\nfunction disableCursor() {\n document.body.classList.add('fc-not-allowed');\n}\n// Returns the mouse cursor to its original look\nfunction enableCursor() {\n document.body.classList.remove('fc-not-allowed');\n}\n/* Selection\n----------------------------------------------------------------------------------------------------------------------*/\nfunction preventSelection(el) {\n el.classList.add('fc-unselectable');\n el.addEventListener('selectstart', preventDefault);\n}\nfunction allowSelection(el) {\n el.classList.remove('fc-unselectable');\n el.removeEventListener('selectstart', preventDefault);\n}\n/* Context Menu\n----------------------------------------------------------------------------------------------------------------------*/\nfunction preventContextMenu(el) {\n el.addEventListener('contextmenu', preventDefault);\n}\nfunction allowContextMenu(el) {\n el.removeEventListener('contextmenu', preventDefault);\n}\nfunction parseFieldSpecs(input) {\n var specs = [];\n var tokens = [];\n var i;\n var token;\n if (typeof input === 'string') {\n tokens = input.split(/\\s*,\\s*/);\n } else if (typeof input === 'function') {\n tokens = [input];\n } else if (Array.isArray(input)) {\n tokens = input;\n }\n for (i = 0; i < tokens.length; i += 1) {\n token = tokens[i];\n if (typeof token === 'string') {\n specs.push(token.charAt(0) === '-' ? {\n field: token.substring(1),\n order: -1\n } : {\n field: token,\n order: 1\n });\n } else if (typeof token === 'function') {\n specs.push({\n func: token\n });\n }\n }\n return specs;\n}\nfunction compareByFieldSpecs(obj0, obj1, fieldSpecs) {\n var i;\n var cmp;\n for (i = 0; i < fieldSpecs.length; i += 1) {\n cmp = compareByFieldSpec(obj0, obj1, fieldSpecs[i]);\n if (cmp) {\n return cmp;\n }\n }\n return 0;\n}\nfunction compareByFieldSpec(obj0, obj1, fieldSpec) {\n if (fieldSpec.func) {\n return fieldSpec.func(obj0, obj1);\n }\n return flexibleCompare(obj0[fieldSpec.field], obj1[fieldSpec.field]) * (fieldSpec.order || 1);\n}\nfunction flexibleCompare(a, b) {\n if (!a && !b) {\n return 0;\n }\n if (b == null) {\n return -1;\n }\n if (a == null) {\n return 1;\n }\n if (typeof a === 'string' || typeof b === 'string') {\n return String(a).localeCompare(String(b));\n }\n return a - b;\n}\n/* String Utilities\n----------------------------------------------------------------------------------------------------------------------*/\nfunction padStart(val, len) {\n var s = String(val);\n return '000'.substr(0, len - s.length) + s;\n}\nfunction formatWithOrdinals(formatter, args, fallbackText) {\n if (typeof formatter === 'function') {\n return formatter.apply(void 0, args);\n }\n if (typeof formatter === 'string') {\n // non-blank string\n return args.reduce(function (str, arg, index) {\n return str.replace('$' + index, arg || '');\n }, formatter);\n }\n return fallbackText;\n}\n/* Number Utilities\n----------------------------------------------------------------------------------------------------------------------*/\nfunction compareNumbers(a, b) {\n return a - b;\n}\nfunction isInt(n) {\n return n % 1 === 0;\n}\n/* FC-specific DOM dimension stuff\n----------------------------------------------------------------------------------------------------------------------*/\nfunction computeSmallestCellWidth(cellEl) {\n var allWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-frame');\n var contentWidthEl = cellEl.querySelector('.fc-scrollgrid-shrink-cushion');\n if (!allWidthEl) {\n throw new Error('needs fc-scrollgrid-shrink-frame className'); // TODO: use const\n }\n if (!contentWidthEl) {\n throw new Error('needs fc-scrollgrid-shrink-cushion className');\n }\n return cellEl.getBoundingClientRect().width - allWidthEl.getBoundingClientRect().width +\n // the cell padding+border\n contentWidthEl.getBoundingClientRect().width;\n}\nvar DAY_IDS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\n// Adding\nfunction addWeeks(m, n) {\n var a = dateToUtcArray(m);\n a[2] += n * 7;\n return arrayToUtcDate(a);\n}\nfunction addDays(m, n) {\n var a = dateToUtcArray(m);\n a[2] += n;\n return arrayToUtcDate(a);\n}\nfunction addMs(m, n) {\n var a = dateToUtcArray(m);\n a[6] += n;\n return arrayToUtcDate(a);\n}\n// Diffing (all return floats)\n// TODO: why not use ranges?\nfunction diffWeeks(m0, m1) {\n return diffDays(m0, m1) / 7;\n}\nfunction diffDays(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60 * 24);\n}\nfunction diffHours(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60 * 60);\n}\nfunction diffMinutes(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / (1000 * 60);\n}\nfunction diffSeconds(m0, m1) {\n return (m1.valueOf() - m0.valueOf()) / 1000;\n}\nfunction diffDayAndTime(m0, m1) {\n var m0day = startOfDay(m0);\n var m1day = startOfDay(m1);\n return {\n years: 0,\n months: 0,\n days: Math.round(diffDays(m0day, m1day)),\n milliseconds: m1.valueOf() - m1day.valueOf() - (m0.valueOf() - m0day.valueOf())\n };\n}\n// Diffing Whole Units\nfunction diffWholeWeeks(m0, m1) {\n var d = diffWholeDays(m0, m1);\n if (d !== null && d % 7 === 0) {\n return d / 7;\n }\n return null;\n}\nfunction diffWholeDays(m0, m1) {\n if (timeAsMs(m0) === timeAsMs(m1)) {\n return Math.round(diffDays(m0, m1));\n }\n return null;\n}\n// Start-Of\nfunction startOfDay(m) {\n return arrayToUtcDate([m.getUTCFullYear(), m.getUTCMonth(), m.getUTCDate()]);\n}\nfunction startOfHour(m) {\n return arrayToUtcDate([m.getUTCFullYear(), m.getUTCMonth(), m.getUTCDate(), m.getUTCHours()]);\n}\nfunction startOfMinute(m) {\n return arrayToUtcDate([m.getUTCFullYear(), m.getUTCMonth(), m.getUTCDate(), m.getUTCHours(), m.getUTCMinutes()]);\n}\nfunction startOfSecond(m) {\n return arrayToUtcDate([m.getUTCFullYear(), m.getUTCMonth(), m.getUTCDate(), m.getUTCHours(), m.getUTCMinutes(), m.getUTCSeconds()]);\n}\n// Week Computation\nfunction weekOfYear(marker, dow, doy) {\n var y = marker.getUTCFullYear();\n var w = weekOfGivenYear(marker, y, dow, doy);\n if (w < 1) {\n return weekOfGivenYear(marker, y - 1, dow, doy);\n }\n var nextW = weekOfGivenYear(marker, y + 1, dow, doy);\n if (nextW >= 1) {\n return Math.min(w, nextW);\n }\n return w;\n}\nfunction weekOfGivenYear(marker, year, dow, doy) {\n var firstWeekStart = arrayToUtcDate([year, 0, 1 + firstWeekOffset(year, dow, doy)]);\n var dayStart = startOfDay(marker);\n var days = Math.round(diffDays(firstWeekStart, dayStart));\n return Math.floor(days / 7) + 1; // zero-indexed\n}\n// start-of-first-week - start-of-year\nfunction firstWeekOffset(year, dow, doy) {\n // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n var fwd = 7 + dow - doy;\n // first-week day local weekday -- which local weekday is fwd\n var fwdlw = (7 + arrayToUtcDate([year, 0, fwd]).getUTCDay() - dow) % 7;\n return -fwdlw + fwd - 1;\n}\n// Array Conversion\nfunction dateToLocalArray(date) {\n return [date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()];\n}\nfunction arrayToLocalDate(a) {\n return new Date(a[0], a[1] || 0, a[2] == null ? 1 : a[2],\n // day of month\n a[3] || 0, a[4] || 0, a[5] || 0);\n}\nfunction dateToUtcArray(date) {\n return [date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds()];\n}\nfunction arrayToUtcDate(a) {\n // according to web standards (and Safari), a month index is required.\n // massage if only given a year.\n if (a.length === 1) {\n a = a.concat([0]);\n }\n return new Date(Date.UTC.apply(Date, a));\n}\n// Other Utils\nfunction isValidDate(m) {\n return !isNaN(m.valueOf());\n}\nfunction timeAsMs(m) {\n return m.getUTCHours() * 1000 * 60 * 60 + m.getUTCMinutes() * 1000 * 60 + m.getUTCSeconds() * 1000 + m.getUTCMilliseconds();\n}\nfunction createEventInstance(defId, range, forcedStartTzo, forcedEndTzo) {\n return {\n instanceId: guid(),\n defId: defId,\n range: range,\n forcedStartTzo: forcedStartTzo == null ? null : forcedStartTzo,\n forcedEndTzo: forcedEndTzo == null ? null : forcedEndTzo\n };\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n// Merges an array of objects into a single object.\n// The second argument allows for an array of property names who's object values will be merged together.\nfunction mergeProps(propObjs, complexPropsMap) {\n var dest = {};\n if (complexPropsMap) {\n for (var name_1 in complexPropsMap) {\n var complexObjs = [];\n // collect the trailing object values, stopping when a non-object is discovered\n for (var i = propObjs.length - 1; i >= 0; i -= 1) {\n var val = propObjs[i][name_1];\n if (typeof val === 'object' && val) {\n // non-null object\n complexObjs.unshift(val);\n } else if (val !== undefined) {\n dest[name_1] = val; // if there were no objects, this value will be used\n break;\n }\n }\n // if the trailing values were objects, use the merged value\n if (complexObjs.length) {\n dest[name_1] = mergeProps(complexObjs);\n }\n }\n }\n // copy values into the destination, going from last to first\n for (var i = propObjs.length - 1; i >= 0; i -= 1) {\n var props = propObjs[i];\n for (var name_2 in props) {\n if (!(name_2 in dest)) {\n // if already assigned by previous props or complex props, don't reassign\n dest[name_2] = props[name_2];\n }\n }\n }\n return dest;\n}\nfunction filterHash(hash, func) {\n var filtered = {};\n for (var key in hash) {\n if (func(hash[key], key)) {\n filtered[key] = hash[key];\n }\n }\n return filtered;\n}\nfunction mapHash(hash, func) {\n var newHash = {};\n for (var key in hash) {\n newHash[key] = func(hash[key], key);\n }\n return newHash;\n}\nfunction arrayToHash(a) {\n var hash = {};\n for (var _i = 0, a_1 = a; _i < a_1.length; _i++) {\n var item = a_1[_i];\n hash[item] = true;\n }\n return hash;\n}\nfunction buildHashFromArray(a, func) {\n var hash = {};\n for (var i = 0; i < a.length; i += 1) {\n var tuple = func(a[i], i);\n hash[tuple[0]] = tuple[1];\n }\n return hash;\n}\nfunction hashValuesToArray(obj) {\n var a = [];\n for (var key in obj) {\n a.push(obj[key]);\n }\n return a;\n}\nfunction isPropsEqual(obj0, obj1) {\n if (obj0 === obj1) {\n return true;\n }\n for (var key in obj0) {\n if (hasOwnProperty.call(obj0, key)) {\n if (!(key in obj1)) {\n return false;\n }\n }\n }\n for (var key in obj1) {\n if (hasOwnProperty.call(obj1, key)) {\n if (obj0[key] !== obj1[key]) {\n return false;\n }\n }\n }\n return true;\n}\nfunction getUnequalProps(obj0, obj1) {\n var keys = [];\n for (var key in obj0) {\n if (hasOwnProperty.call(obj0, key)) {\n if (!(key in obj1)) {\n keys.push(key);\n }\n }\n }\n for (var key in obj1) {\n if (hasOwnProperty.call(obj1, key)) {\n if (obj0[key] !== obj1[key]) {\n keys.push(key);\n }\n }\n }\n return keys;\n}\nfunction compareObjs(oldProps, newProps, equalityFuncs) {\n if (equalityFuncs === void 0) {\n equalityFuncs = {};\n }\n if (oldProps === newProps) {\n return true;\n }\n for (var key in newProps) {\n if (key in oldProps && isObjValsEqual(oldProps[key], newProps[key], equalityFuncs[key])) ;else {\n return false;\n }\n }\n // check for props that were omitted in the new\n for (var key in oldProps) {\n if (!(key in newProps)) {\n return false;\n }\n }\n return true;\n}\n/*\nassumed \"true\" equality for handler names like \"onReceiveSomething\"\n*/\nfunction isObjValsEqual(val0, val1, comparator) {\n if (val0 === val1 || comparator === true) {\n return true;\n }\n if (comparator) {\n return comparator(val0, val1);\n }\n return false;\n}\nfunction collectFromHash(hash, startIndex, endIndex, step) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n if (step === void 0) {\n step = 1;\n }\n var res = [];\n if (endIndex == null) {\n endIndex = Object.keys(hash).length;\n }\n for (var i = startIndex; i < endIndex; i += step) {\n var val = hash[i];\n if (val !== undefined) {\n // will disregard undefined for sparse arrays\n res.push(val);\n }\n }\n return res;\n}\nfunction parseRecurring(refined, defaultAllDay, dateEnv, recurringTypes) {\n for (var i = 0; i < recurringTypes.length; i += 1) {\n var parsed = recurringTypes[i].parse(refined, dateEnv);\n if (parsed) {\n var allDay = refined.allDay;\n if (allDay == null) {\n allDay = defaultAllDay;\n if (allDay == null) {\n allDay = parsed.allDayGuess;\n if (allDay == null) {\n allDay = false;\n }\n }\n }\n return {\n allDay: allDay,\n duration: parsed.duration,\n typeData: parsed.typeData,\n typeId: i\n };\n }\n }\n return null;\n}\nfunction expandRecurring(eventStore, framingRange, context) {\n var dateEnv = context.dateEnv,\n pluginHooks = context.pluginHooks,\n options = context.options;\n var defs = eventStore.defs,\n instances = eventStore.instances;\n // remove existing recurring instances\n // TODO: bad. always expand events as a second step\n instances = filterHash(instances, function (instance) {\n return !defs[instance.defId].recurringDef;\n });\n for (var defId in defs) {\n var def = defs[defId];\n if (def.recurringDef) {\n var duration = def.recurringDef.duration;\n if (!duration) {\n duration = def.allDay ? options.defaultAllDayEventDuration : options.defaultTimedEventDuration;\n }\n var starts = expandRecurringRanges(def, duration, framingRange, dateEnv, pluginHooks.recurringTypes);\n for (var _i = 0, starts_1 = starts; _i < starts_1.length; _i++) {\n var start = starts_1[_i];\n var instance = createEventInstance(defId, {\n start: start,\n end: dateEnv.add(start, duration)\n });\n instances[instance.instanceId] = instance;\n }\n }\n }\n return {\n defs: defs,\n instances: instances\n };\n}\n/*\nEvent MUST have a recurringDef\n*/\nfunction expandRecurringRanges(eventDef, duration, framingRange, dateEnv, recurringTypes) {\n var typeDef = recurringTypes[eventDef.recurringDef.typeId];\n var markers = typeDef.expand(eventDef.recurringDef.typeData, {\n start: dateEnv.subtract(framingRange.start, duration),\n end: framingRange.end\n }, dateEnv);\n // the recurrence plugins don't guarantee that all-day events are start-of-day, so we have to\n if (eventDef.allDay) {\n markers = markers.map(startOfDay);\n }\n return markers;\n}\nvar INTERNAL_UNITS = ['years', 'months', 'days', 'milliseconds'];\nvar PARSE_RE = /^(-?)(?:(\\d+)\\.)?(\\d+):(\\d\\d)(?::(\\d\\d)(?:\\.(\\d\\d\\d))?)?/;\n// Parsing and Creation\nfunction createDuration(input, unit) {\n var _a;\n if (typeof input === 'string') {\n return parseString(input);\n }\n if (typeof input === 'object' && input) {\n // non-null object\n return parseObject(input);\n }\n if (typeof input === 'number') {\n return parseObject((_a = {}, _a[unit || 'milliseconds'] = input, _a));\n }\n return null;\n}\nfunction parseString(s) {\n var m = PARSE_RE.exec(s);\n if (m) {\n var sign = m[1] ? -1 : 1;\n return {\n years: 0,\n months: 0,\n days: sign * (m[2] ? parseInt(m[2], 10) : 0),\n milliseconds: sign * ((m[3] ? parseInt(m[3], 10) : 0) * 60 * 60 * 1000 +\n // hours\n (m[4] ? parseInt(m[4], 10) : 0) * 60 * 1000 +\n // minutes\n (m[5] ? parseInt(m[5], 10) : 0) * 1000 + (\n // seconds\n m[6] ? parseInt(m[6], 10) : 0) // ms\n )\n };\n }\n return null;\n}\nfunction parseObject(obj) {\n var duration = {\n years: obj.years || obj.year || 0,\n months: obj.months || obj.month || 0,\n days: obj.days || obj.day || 0,\n milliseconds: (obj.hours || obj.hour || 0) * 60 * 60 * 1000 +\n // hours\n (obj.minutes || obj.minute || 0) * 60 * 1000 +\n // minutes\n (obj.seconds || obj.second || 0) * 1000 + (\n // seconds\n obj.milliseconds || obj.millisecond || obj.ms || 0) // ms\n };\n var weeks = obj.weeks || obj.week;\n if (weeks) {\n duration.days += weeks * 7;\n duration.specifiedWeeks = true;\n }\n return duration;\n}\n// Equality\nfunction durationsEqual(d0, d1) {\n return d0.years === d1.years && d0.months === d1.months && d0.days === d1.days && d0.milliseconds === d1.milliseconds;\n}\nfunction asCleanDays(dur) {\n if (!dur.years && !dur.months && !dur.milliseconds) {\n return dur.days;\n }\n return 0;\n}\n// Simple Math\nfunction addDurations(d0, d1) {\n return {\n years: d0.years + d1.years,\n months: d0.months + d1.months,\n days: d0.days + d1.days,\n milliseconds: d0.milliseconds + d1.milliseconds\n };\n}\nfunction subtractDurations(d1, d0) {\n return {\n years: d1.years - d0.years,\n months: d1.months - d0.months,\n days: d1.days - d0.days,\n milliseconds: d1.milliseconds - d0.milliseconds\n };\n}\nfunction multiplyDuration(d, n) {\n return {\n years: d.years * n,\n months: d.months * n,\n days: d.days * n,\n milliseconds: d.milliseconds * n\n };\n}\n// Conversions\n// \"Rough\" because they are based on average-case Gregorian months/years\nfunction asRoughYears(dur) {\n return asRoughDays(dur) / 365;\n}\nfunction asRoughMonths(dur) {\n return asRoughDays(dur) / 30;\n}\nfunction asRoughDays(dur) {\n return asRoughMs(dur) / 864e5;\n}\nfunction asRoughMinutes(dur) {\n return asRoughMs(dur) / (1000 * 60);\n}\nfunction asRoughSeconds(dur) {\n return asRoughMs(dur) / 1000;\n}\nfunction asRoughMs(dur) {\n return dur.years * (365 * 864e5) + dur.months * (30 * 864e5) + dur.days * 864e5 + dur.milliseconds;\n}\n// Advanced Math\nfunction wholeDivideDurations(numerator, denominator) {\n var res = null;\n for (var i = 0; i < INTERNAL_UNITS.length; i += 1) {\n var unit = INTERNAL_UNITS[i];\n if (denominator[unit]) {\n var localRes = numerator[unit] / denominator[unit];\n if (!isInt(localRes) || res !== null && res !== localRes) {\n return null;\n }\n res = localRes;\n } else if (numerator[unit]) {\n // needs to divide by something but can't!\n return null;\n }\n }\n return res;\n}\nfunction greatestDurationDenominator(dur) {\n var ms = dur.milliseconds;\n if (ms) {\n if (ms % 1000 !== 0) {\n return {\n unit: 'millisecond',\n value: ms\n };\n }\n if (ms % (1000 * 60) !== 0) {\n return {\n unit: 'second',\n value: ms / 1000\n };\n }\n if (ms % (1000 * 60 * 60) !== 0) {\n return {\n unit: 'minute',\n value: ms / (1000 * 60)\n };\n }\n if (ms) {\n return {\n unit: 'hour',\n value: ms / (1000 * 60 * 60)\n };\n }\n }\n if (dur.days) {\n if (dur.specifiedWeeks && dur.days % 7 === 0) {\n return {\n unit: 'week',\n value: dur.days / 7\n };\n }\n return {\n unit: 'day',\n value: dur.days\n };\n }\n if (dur.months) {\n return {\n unit: 'month',\n value: dur.months\n };\n }\n if (dur.years) {\n return {\n unit: 'year',\n value: dur.years\n };\n }\n return {\n unit: 'millisecond',\n value: 0\n };\n}\n\n// timeZoneOffset is in minutes\nfunction buildIsoString(marker, timeZoneOffset, stripZeroTime) {\n if (stripZeroTime === void 0) {\n stripZeroTime = false;\n }\n var s = marker.toISOString();\n s = s.replace('.000', '');\n if (stripZeroTime) {\n s = s.replace('T00:00:00Z', '');\n }\n if (s.length > 10) {\n // time part wasn't stripped, can add timezone info\n if (timeZoneOffset == null) {\n s = s.replace('Z', '');\n } else if (timeZoneOffset !== 0) {\n s = s.replace('Z', formatTimeZoneOffset(timeZoneOffset, true));\n }\n // otherwise, its UTC-0 and we want to keep the Z\n }\n return s;\n}\n// formats the date, but with no time part\n// TODO: somehow merge with buildIsoString and stripZeroTime\n// TODO: rename. omit \"string\"\nfunction formatDayString(marker) {\n return marker.toISOString().replace(/T.*$/, '');\n}\n// TODO: use Date::toISOString and use everything after the T?\nfunction formatIsoTimeString(marker) {\n return padStart(marker.getUTCHours(), 2) + ':' + padStart(marker.getUTCMinutes(), 2) + ':' + padStart(marker.getUTCSeconds(), 2);\n}\nfunction formatTimeZoneOffset(minutes, doIso) {\n if (doIso === void 0) {\n doIso = false;\n }\n var sign = minutes < 0 ? '-' : '+';\n var abs = Math.abs(minutes);\n var hours = Math.floor(abs / 60);\n var mins = Math.round(abs % 60);\n if (doIso) {\n return sign + padStart(hours, 2) + \":\" + padStart(mins, 2);\n }\n return \"GMT\" + sign + hours + (mins ? \":\" + padStart(mins, 2) : '');\n}\n\n// TODO: new util arrayify?\nfunction removeExact(array, exactVal) {\n var removeCnt = 0;\n var i = 0;\n while (i < array.length) {\n if (array[i] === exactVal) {\n array.splice(i, 1);\n removeCnt += 1;\n } else {\n i += 1;\n }\n }\n return removeCnt;\n}\nfunction isArraysEqual(a0, a1, equalityFunc) {\n if (a0 === a1) {\n return true;\n }\n var len = a0.length;\n var i;\n if (len !== a1.length) {\n // not array? or not same length?\n return false;\n }\n for (i = 0; i < len; i += 1) {\n if (!(equalityFunc ? equalityFunc(a0[i], a1[i]) : a0[i] === a1[i])) {\n return false;\n }\n }\n return true;\n}\nfunction memoize(workerFunc, resEquality, teardownFunc) {\n var currentArgs;\n var currentRes;\n return function () {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (!currentArgs) {\n currentRes = workerFunc.apply(this, newArgs);\n } else if (!isArraysEqual(currentArgs, newArgs)) {\n if (teardownFunc) {\n teardownFunc(currentRes);\n }\n var res = workerFunc.apply(this, newArgs);\n if (!resEquality || !resEquality(res, currentRes)) {\n currentRes = res;\n }\n }\n currentArgs = newArgs;\n return currentRes;\n };\n}\nfunction memoizeObjArg(workerFunc, resEquality, teardownFunc) {\n var _this = this;\n var currentArg;\n var currentRes;\n return function (newArg) {\n if (!currentArg) {\n currentRes = workerFunc.call(_this, newArg);\n } else if (!isPropsEqual(currentArg, newArg)) {\n if (teardownFunc) {\n teardownFunc(currentRes);\n }\n var res = workerFunc.call(_this, newArg);\n if (!resEquality || !resEquality(res, currentRes)) {\n currentRes = res;\n }\n }\n currentArg = newArg;\n return currentRes;\n };\n}\nfunction memoizeArraylike(\n// used at all?\nworkerFunc, resEquality, teardownFunc) {\n var _this = this;\n var currentArgSets = [];\n var currentResults = [];\n return function (newArgSets) {\n var currentLen = currentArgSets.length;\n var newLen = newArgSets.length;\n var i = 0;\n for (; i < currentLen; i += 1) {\n if (!newArgSets[i]) {\n // one of the old sets no longer exists\n if (teardownFunc) {\n teardownFunc(currentResults[i]);\n }\n } else if (!isArraysEqual(currentArgSets[i], newArgSets[i])) {\n if (teardownFunc) {\n teardownFunc(currentResults[i]);\n }\n var res = workerFunc.apply(_this, newArgSets[i]);\n if (!resEquality || !resEquality(res, currentResults[i])) {\n currentResults[i] = res;\n }\n }\n }\n for (; i < newLen; i += 1) {\n currentResults[i] = workerFunc.apply(_this, newArgSets[i]);\n }\n currentArgSets = newArgSets;\n currentResults.splice(newLen); // remove excess\n return currentResults;\n };\n}\nfunction memoizeHashlike(\n// used?\nworkerFunc, resEquality, teardownFunc) {\n var _this = this;\n var currentArgHash = {};\n var currentResHash = {};\n return function (newArgHash) {\n var newResHash = {};\n for (var key in newArgHash) {\n if (!currentResHash[key]) {\n newResHash[key] = workerFunc.apply(_this, newArgHash[key]);\n } else if (!isArraysEqual(currentArgHash[key], newArgHash[key])) {\n if (teardownFunc) {\n teardownFunc(currentResHash[key]);\n }\n var res = workerFunc.apply(_this, newArgHash[key]);\n newResHash[key] = resEquality && resEquality(res, currentResHash[key]) ? currentResHash[key] : res;\n } else {\n newResHash[key] = currentResHash[key];\n }\n }\n currentArgHash = newArgHash;\n currentResHash = newResHash;\n return newResHash;\n };\n}\nvar EXTENDED_SETTINGS_AND_SEVERITIES = {\n week: 3,\n separator: 0,\n omitZeroMinute: 0,\n meridiem: 0,\n omitCommas: 0\n};\nvar STANDARD_DATE_PROP_SEVERITIES = {\n timeZoneName: 7,\n era: 6,\n year: 5,\n month: 4,\n day: 2,\n weekday: 2,\n hour: 1,\n minute: 1,\n second: 1\n};\nvar MERIDIEM_RE = /\\s*([ap])\\.?m\\.?/i; // eats up leading spaces too\nvar COMMA_RE = /,/g; // we need re for globalness\nvar MULTI_SPACE_RE = /\\s+/g;\nvar LTR_RE = /\\u200e/g; // control character\nvar UTC_RE = /UTC|GMT/;\nvar NativeFormatter = /** @class */function () {\n function NativeFormatter(formatSettings) {\n var standardDateProps = {};\n var extendedSettings = {};\n var severity = 0;\n for (var name_1 in formatSettings) {\n if (name_1 in EXTENDED_SETTINGS_AND_SEVERITIES) {\n extendedSettings[name_1] = formatSettings[name_1];\n severity = Math.max(EXTENDED_SETTINGS_AND_SEVERITIES[name_1], severity);\n } else {\n standardDateProps[name_1] = formatSettings[name_1];\n if (name_1 in STANDARD_DATE_PROP_SEVERITIES) {\n // TODO: what about hour12? no severity\n severity = Math.max(STANDARD_DATE_PROP_SEVERITIES[name_1], severity);\n }\n }\n }\n this.standardDateProps = standardDateProps;\n this.extendedSettings = extendedSettings;\n this.severity = severity;\n this.buildFormattingFunc = memoize(buildFormattingFunc);\n }\n NativeFormatter.prototype.format = function (date, context) {\n return this.buildFormattingFunc(this.standardDateProps, this.extendedSettings, context)(date);\n };\n NativeFormatter.prototype.formatRange = function (start, end, context, betterDefaultSeparator) {\n var _a = this,\n standardDateProps = _a.standardDateProps,\n extendedSettings = _a.extendedSettings;\n var diffSeverity = computeMarkerDiffSeverity(start.marker, end.marker, context.calendarSystem);\n if (!diffSeverity) {\n return this.format(start, context);\n }\n var biggestUnitForPartial = diffSeverity;\n if (biggestUnitForPartial > 1 && (\n // the two dates are different in a way that's larger scale than time\n standardDateProps.year === 'numeric' || standardDateProps.year === '2-digit') && (standardDateProps.month === 'numeric' || standardDateProps.month === '2-digit') && (standardDateProps.day === 'numeric' || standardDateProps.day === '2-digit')) {\n biggestUnitForPartial = 1; // make it look like the dates are only different in terms of time\n }\n var full0 = this.format(start, context);\n var full1 = this.format(end, context);\n if (full0 === full1) {\n return full0;\n }\n var partialDateProps = computePartialFormattingOptions(standardDateProps, biggestUnitForPartial);\n var partialFormattingFunc = buildFormattingFunc(partialDateProps, extendedSettings, context);\n var partial0 = partialFormattingFunc(start);\n var partial1 = partialFormattingFunc(end);\n var insertion = findCommonInsertion(full0, partial0, full1, partial1);\n var separator = extendedSettings.separator || betterDefaultSeparator || context.defaultSeparator || '';\n if (insertion) {\n return insertion.before + partial0 + separator + partial1 + insertion.after;\n }\n return full0 + separator + full1;\n };\n NativeFormatter.prototype.getLargestUnit = function () {\n switch (this.severity) {\n case 7:\n case 6:\n case 5:\n return 'year';\n case 4:\n return 'month';\n case 3:\n return 'week';\n case 2:\n return 'day';\n default:\n return 'time';\n // really?\n }\n };\n return NativeFormatter;\n}();\nfunction buildFormattingFunc(standardDateProps, extendedSettings, context) {\n var standardDatePropCnt = Object.keys(standardDateProps).length;\n if (standardDatePropCnt === 1 && standardDateProps.timeZoneName === 'short') {\n return function (date) {\n return formatTimeZoneOffset(date.timeZoneOffset);\n };\n }\n if (standardDatePropCnt === 0 && extendedSettings.week) {\n return function (date) {\n return formatWeekNumber(context.computeWeekNumber(date.marker), context.weekText, context.weekTextLong, context.locale, extendedSettings.week);\n };\n }\n return buildNativeFormattingFunc(standardDateProps, extendedSettings, context);\n}\nfunction buildNativeFormattingFunc(standardDateProps, extendedSettings, context) {\n standardDateProps = __assign({}, standardDateProps); // copy\n extendedSettings = __assign({}, extendedSettings); // copy\n sanitizeSettings(standardDateProps, extendedSettings);\n standardDateProps.timeZone = 'UTC'; // we leverage the only guaranteed timeZone for our UTC markers\n var normalFormat = new Intl.DateTimeFormat(context.locale.codes, standardDateProps);\n var zeroFormat; // needed?\n if (extendedSettings.omitZeroMinute) {\n var zeroProps = __assign({}, standardDateProps);\n delete zeroProps.minute; // seconds and ms were already considered in sanitizeSettings\n zeroFormat = new Intl.DateTimeFormat(context.locale.codes, zeroProps);\n }\n return function (date) {\n var marker = date.marker;\n var format;\n if (zeroFormat && !marker.getUTCMinutes()) {\n format = zeroFormat;\n } else {\n format = normalFormat;\n }\n var s = format.format(marker);\n return postProcess(s, date, standardDateProps, extendedSettings, context);\n };\n}\nfunction sanitizeSettings(standardDateProps, extendedSettings) {\n // deal with a browser inconsistency where formatting the timezone\n // requires that the hour/minute be present.\n if (standardDateProps.timeZoneName) {\n if (!standardDateProps.hour) {\n standardDateProps.hour = '2-digit';\n }\n if (!standardDateProps.minute) {\n standardDateProps.minute = '2-digit';\n }\n }\n // only support short timezone names\n if (standardDateProps.timeZoneName === 'long') {\n standardDateProps.timeZoneName = 'short';\n }\n // if requesting to display seconds, MUST display minutes\n if (extendedSettings.omitZeroMinute && (standardDateProps.second || standardDateProps.millisecond)) {\n delete extendedSettings.omitZeroMinute;\n }\n}\nfunction postProcess(s, date, standardDateProps, extendedSettings, context) {\n s = s.replace(LTR_RE, ''); // remove left-to-right control chars. do first. good for other regexes\n if (standardDateProps.timeZoneName === 'short') {\n s = injectTzoStr(s, context.timeZone === 'UTC' || date.timeZoneOffset == null ? 'UTC' :\n // important to normalize for IE, which does \"GMT\"\n formatTimeZoneOffset(date.timeZoneOffset));\n }\n if (extendedSettings.omitCommas) {\n s = s.replace(COMMA_RE, '').trim();\n }\n if (extendedSettings.omitZeroMinute) {\n s = s.replace(':00', ''); // zeroFormat doesn't always achieve this\n }\n // ^ do anything that might create adjacent spaces before this point,\n // because MERIDIEM_RE likes to eat up loading spaces\n if (extendedSettings.meridiem === false) {\n s = s.replace(MERIDIEM_RE, '').trim();\n } else if (extendedSettings.meridiem === 'narrow') {\n // a/p\n s = s.replace(MERIDIEM_RE, function (m0, m1) {\n return m1.toLocaleLowerCase();\n });\n } else if (extendedSettings.meridiem === 'short') {\n // am/pm\n s = s.replace(MERIDIEM_RE, function (m0, m1) {\n return m1.toLocaleLowerCase() + \"m\";\n });\n } else if (extendedSettings.meridiem === 'lowercase') {\n // other meridiem transformers already converted to lowercase\n s = s.replace(MERIDIEM_RE, function (m0) {\n return m0.toLocaleLowerCase();\n });\n }\n s = s.replace(MULTI_SPACE_RE, ' ');\n s = s.trim();\n return s;\n}\nfunction injectTzoStr(s, tzoStr) {\n var replaced = false;\n s = s.replace(UTC_RE, function () {\n replaced = true;\n return tzoStr;\n });\n // IE11 doesn't include UTC/GMT in the original string, so append to end\n if (!replaced) {\n s += \" \" + tzoStr;\n }\n return s;\n}\nfunction formatWeekNumber(num, weekText, weekTextLong, locale, display) {\n var parts = [];\n if (display === 'long') {\n parts.push(weekTextLong);\n } else if (display === 'short' || display === 'narrow') {\n parts.push(weekText);\n }\n if (display === 'long' || display === 'short') {\n parts.push(' ');\n }\n parts.push(locale.simpleNumberFormat.format(num));\n if (locale.options.direction === 'rtl') {\n // TODO: use control characters instead?\n parts.reverse();\n }\n return parts.join('');\n}\n// Range Formatting Utils\n// 0 = exactly the same\n// 1 = different by time\n// and bigger\nfunction computeMarkerDiffSeverity(d0, d1, ca) {\n if (ca.getMarkerYear(d0) !== ca.getMarkerYear(d1)) {\n return 5;\n }\n if (ca.getMarkerMonth(d0) !== ca.getMarkerMonth(d1)) {\n return 4;\n }\n if (ca.getMarkerDay(d0) !== ca.getMarkerDay(d1)) {\n return 2;\n }\n if (timeAsMs(d0) !== timeAsMs(d1)) {\n return 1;\n }\n return 0;\n}\nfunction computePartialFormattingOptions(options, biggestUnit) {\n var partialOptions = {};\n for (var name_2 in options) {\n if (!(name_2 in STANDARD_DATE_PROP_SEVERITIES) ||\n // not a date part prop (like timeZone)\n STANDARD_DATE_PROP_SEVERITIES[name_2] <= biggestUnit) {\n partialOptions[name_2] = options[name_2];\n }\n }\n return partialOptions;\n}\nfunction findCommonInsertion(full0, partial0, full1, partial1) {\n var i0 = 0;\n while (i0 < full0.length) {\n var found0 = full0.indexOf(partial0, i0);\n if (found0 === -1) {\n break;\n }\n var before0 = full0.substr(0, found0);\n i0 = found0 + partial0.length;\n var after0 = full0.substr(i0);\n var i1 = 0;\n while (i1 < full1.length) {\n var found1 = full1.indexOf(partial1, i1);\n if (found1 === -1) {\n break;\n }\n var before1 = full1.substr(0, found1);\n i1 = found1 + partial1.length;\n var after1 = full1.substr(i1);\n if (before0 === before1 && after0 === after1) {\n return {\n before: before0,\n after: after0\n };\n }\n }\n }\n return null;\n}\nfunction expandZonedMarker(dateInfo, calendarSystem) {\n var a = calendarSystem.markerToArray(dateInfo.marker);\n return {\n marker: dateInfo.marker,\n timeZoneOffset: dateInfo.timeZoneOffset,\n array: a,\n year: a[0],\n month: a[1],\n day: a[2],\n hour: a[3],\n minute: a[4],\n second: a[5],\n millisecond: a[6]\n };\n}\nfunction createVerboseFormattingArg(start, end, context, betterDefaultSeparator) {\n var startInfo = expandZonedMarker(start, context.calendarSystem);\n var endInfo = end ? expandZonedMarker(end, context.calendarSystem) : null;\n return {\n date: startInfo,\n start: startInfo,\n end: endInfo,\n timeZone: context.timeZone,\n localeCodes: context.locale.codes,\n defaultSeparator: betterDefaultSeparator || context.defaultSeparator\n };\n}\n\n/*\nTODO: fix the terminology of \"formatter\" vs \"formatting func\"\n*/\n/*\nAt the time of instantiation, this object does not know which cmd-formatting system it will use.\nIt receives this at the time of formatting, as a setting.\n*/\nvar CmdFormatter = /** @class */function () {\n function CmdFormatter(cmdStr) {\n this.cmdStr = cmdStr;\n }\n CmdFormatter.prototype.format = function (date, context, betterDefaultSeparator) {\n return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(date, null, context, betterDefaultSeparator));\n };\n CmdFormatter.prototype.formatRange = function (start, end, context, betterDefaultSeparator) {\n return context.cmdFormatter(this.cmdStr, createVerboseFormattingArg(start, end, context, betterDefaultSeparator));\n };\n return CmdFormatter;\n}();\nvar FuncFormatter = /** @class */function () {\n function FuncFormatter(func) {\n this.func = func;\n }\n FuncFormatter.prototype.format = function (date, context, betterDefaultSeparator) {\n return this.func(createVerboseFormattingArg(date, null, context, betterDefaultSeparator));\n };\n FuncFormatter.prototype.formatRange = function (start, end, context, betterDefaultSeparator) {\n return this.func(createVerboseFormattingArg(start, end, context, betterDefaultSeparator));\n };\n return FuncFormatter;\n}();\nfunction createFormatter(input) {\n if (typeof input === 'object' && input) {\n // non-null object\n return new NativeFormatter(input);\n }\n if (typeof input === 'string') {\n return new CmdFormatter(input);\n }\n if (typeof input === 'function') {\n return new FuncFormatter(input);\n }\n return null;\n}\n\n// base options\n// ------------\nvar BASE_OPTION_REFINERS = {\n navLinkDayClick: identity,\n navLinkWeekClick: identity,\n duration: createDuration,\n bootstrapFontAwesome: identity,\n buttonIcons: identity,\n customButtons: identity,\n defaultAllDayEventDuration: createDuration,\n defaultTimedEventDuration: createDuration,\n nextDayThreshold: createDuration,\n scrollTime: createDuration,\n scrollTimeReset: Boolean,\n slotMinTime: createDuration,\n slotMaxTime: createDuration,\n dayPopoverFormat: createFormatter,\n slotDuration: createDuration,\n snapDuration: createDuration,\n headerToolbar: identity,\n footerToolbar: identity,\n defaultRangeSeparator: String,\n titleRangeSeparator: String,\n forceEventDuration: Boolean,\n dayHeaders: Boolean,\n dayHeaderFormat: createFormatter,\n dayHeaderClassNames: identity,\n dayHeaderContent: identity,\n dayHeaderDidMount: identity,\n dayHeaderWillUnmount: identity,\n dayCellClassNames: identity,\n dayCellContent: identity,\n dayCellDidMount: identity,\n dayCellWillUnmount: identity,\n initialView: String,\n aspectRatio: Number,\n weekends: Boolean,\n weekNumberCalculation: identity,\n weekNumbers: Boolean,\n weekNumberClassNames: identity,\n weekNumberContent: identity,\n weekNumberDidMount: identity,\n weekNumberWillUnmount: identity,\n editable: Boolean,\n viewClassNames: identity,\n viewDidMount: identity,\n viewWillUnmount: identity,\n nowIndicator: Boolean,\n nowIndicatorClassNames: identity,\n nowIndicatorContent: identity,\n nowIndicatorDidMount: identity,\n nowIndicatorWillUnmount: identity,\n showNonCurrentDates: Boolean,\n lazyFetching: Boolean,\n startParam: String,\n endParam: String,\n timeZoneParam: String,\n timeZone: String,\n locales: identity,\n locale: identity,\n themeSystem: String,\n dragRevertDuration: Number,\n dragScroll: Boolean,\n allDayMaintainDuration: Boolean,\n unselectAuto: Boolean,\n dropAccept: identity,\n eventOrder: parseFieldSpecs,\n eventOrderStrict: Boolean,\n handleWindowResize: Boolean,\n windowResizeDelay: Number,\n longPressDelay: Number,\n eventDragMinDistance: Number,\n expandRows: Boolean,\n height: identity,\n contentHeight: identity,\n direction: String,\n weekNumberFormat: createFormatter,\n eventResizableFromStart: Boolean,\n displayEventTime: Boolean,\n displayEventEnd: Boolean,\n weekText: String,\n weekTextLong: String,\n progressiveEventRendering: Boolean,\n businessHours: identity,\n initialDate: identity,\n now: identity,\n eventDataTransform: identity,\n stickyHeaderDates: identity,\n stickyFooterScrollbar: identity,\n viewHeight: identity,\n defaultAllDay: Boolean,\n eventSourceFailure: identity,\n eventSourceSuccess: identity,\n eventDisplay: String,\n eventStartEditable: Boolean,\n eventDurationEditable: Boolean,\n eventOverlap: identity,\n eventConstraint: identity,\n eventAllow: identity,\n eventBackgroundColor: String,\n eventBorderColor: String,\n eventTextColor: String,\n eventColor: String,\n eventClassNames: identity,\n eventContent: identity,\n eventDidMount: identity,\n eventWillUnmount: identity,\n selectConstraint: identity,\n selectOverlap: identity,\n selectAllow: identity,\n droppable: Boolean,\n unselectCancel: String,\n slotLabelFormat: identity,\n slotLaneClassNames: identity,\n slotLaneContent: identity,\n slotLaneDidMount: identity,\n slotLaneWillUnmount: identity,\n slotLabelClassNames: identity,\n slotLabelContent: identity,\n slotLabelDidMount: identity,\n slotLabelWillUnmount: identity,\n dayMaxEvents: identity,\n dayMaxEventRows: identity,\n dayMinWidth: Number,\n slotLabelInterval: createDuration,\n allDayText: String,\n allDayClassNames: identity,\n allDayContent: identity,\n allDayDidMount: identity,\n allDayWillUnmount: identity,\n slotMinWidth: Number,\n navLinks: Boolean,\n eventTimeFormat: createFormatter,\n rerenderDelay: Number,\n moreLinkText: identity,\n moreLinkHint: identity,\n selectMinDistance: Number,\n selectable: Boolean,\n selectLongPressDelay: Number,\n eventLongPressDelay: Number,\n selectMirror: Boolean,\n eventMaxStack: Number,\n eventMinHeight: Number,\n eventMinWidth: Number,\n eventShortHeight: Number,\n slotEventOverlap: Boolean,\n plugins: identity,\n firstDay: Number,\n dayCount: Number,\n dateAlignment: String,\n dateIncrement: createDuration,\n hiddenDays: identity,\n monthMode: Boolean,\n fixedWeekCount: Boolean,\n validRange: identity,\n visibleRange: identity,\n titleFormat: identity,\n eventInteractive: Boolean,\n // only used by list-view, but languages define the value, so we need it in base options\n noEventsText: String,\n viewHint: identity,\n navLinkHint: identity,\n closeHint: String,\n timeHint: String,\n eventHint: String,\n moreLinkClick: identity,\n moreLinkClassNames: identity,\n moreLinkContent: identity,\n moreLinkDidMount: identity,\n moreLinkWillUnmount: identity\n};\n// do NOT give a type here. need `typeof BASE_OPTION_DEFAULTS` to give real results.\n// raw values.\nvar BASE_OPTION_DEFAULTS = {\n eventDisplay: 'auto',\n defaultRangeSeparator: ' - ',\n titleRangeSeparator: ' \\u2013 ',\n defaultTimedEventDuration: '01:00:00',\n defaultAllDayEventDuration: {\n day: 1\n },\n forceEventDuration: false,\n nextDayThreshold: '00:00:00',\n dayHeaders: true,\n initialView: '',\n aspectRatio: 1.35,\n headerToolbar: {\n start: 'title',\n center: '',\n end: 'today prev,next'\n },\n weekends: true,\n weekNumbers: false,\n weekNumberCalculation: 'local',\n editable: false,\n nowIndicator: false,\n scrollTime: '06:00:00',\n scrollTimeReset: true,\n slotMinTime: '00:00:00',\n slotMaxTime: '24:00:00',\n showNonCurrentDates: true,\n lazyFetching: true,\n startParam: 'start',\n endParam: 'end',\n timeZoneParam: 'timeZone',\n timeZone: 'local',\n locales: [],\n locale: '',\n themeSystem: 'standard',\n dragRevertDuration: 500,\n dragScroll: true,\n allDayMaintainDuration: false,\n unselectAuto: true,\n dropAccept: '*',\n eventOrder: 'start,-duration,allDay,title',\n dayPopoverFormat: {\n month: 'long',\n day: 'numeric',\n year: 'numeric'\n },\n handleWindowResize: true,\n windowResizeDelay: 100,\n longPressDelay: 1000,\n eventDragMinDistance: 5,\n expandRows: false,\n navLinks: false,\n selectable: false,\n eventMinHeight: 15,\n eventMinWidth: 30,\n eventShortHeight: 30\n};\n// calendar listeners\n// ------------------\nvar CALENDAR_LISTENER_REFINERS = {\n datesSet: identity,\n eventsSet: identity,\n eventAdd: identity,\n eventChange: identity,\n eventRemove: identity,\n windowResize: identity,\n eventClick: identity,\n eventMouseEnter: identity,\n eventMouseLeave: identity,\n select: identity,\n unselect: identity,\n loading: identity,\n // internal\n _unmount: identity,\n _beforeprint: identity,\n _afterprint: identity,\n _noEventDrop: identity,\n _noEventResize: identity,\n _resize: identity,\n _scrollRequest: identity\n};\n// calendar-specific options\n// -------------------------\nvar CALENDAR_OPTION_REFINERS = {\n buttonText: identity,\n buttonHints: identity,\n views: identity,\n plugins: identity,\n initialEvents: identity,\n events: identity,\n eventSources: identity\n};\nvar COMPLEX_OPTION_COMPARATORS = {\n headerToolbar: isBoolComplexEqual,\n footerToolbar: isBoolComplexEqual,\n buttonText: isBoolComplexEqual,\n buttonHints: isBoolComplexEqual,\n buttonIcons: isBoolComplexEqual\n};\nfunction isBoolComplexEqual(a, b) {\n if (typeof a === 'object' && typeof b === 'object' && a && b) {\n // both non-null objects\n return isPropsEqual(a, b);\n }\n return a === b;\n}\n// view-specific options\n// ---------------------\nvar VIEW_OPTION_REFINERS = {\n type: String,\n component: identity,\n buttonText: String,\n buttonTextKey: String,\n dateProfileGeneratorClass: identity,\n usesMinMaxTime: Boolean,\n classNames: identity,\n content: identity,\n didMount: identity,\n willUnmount: identity\n};\n// util funcs\n// ----------------------------------------------------------------------------------------------------\nfunction mergeRawOptions(optionSets) {\n return mergeProps(optionSets, COMPLEX_OPTION_COMPARATORS);\n}\nfunction refineProps(input, refiners) {\n var refined = {};\n var extra = {};\n for (var propName in refiners) {\n if (propName in input) {\n refined[propName] = refiners[propName](input[propName]);\n }\n }\n for (var propName in input) {\n if (!(propName in refiners)) {\n extra[propName] = input[propName];\n }\n }\n return {\n refined: refined,\n extra: extra\n };\n}\nfunction identity(raw) {\n return raw;\n}\nfunction parseEvents(rawEvents, eventSource, context, allowOpenRange) {\n var eventStore = createEmptyEventStore();\n var eventRefiners = buildEventRefiners(context);\n for (var _i = 0, rawEvents_1 = rawEvents; _i < rawEvents_1.length; _i++) {\n var rawEvent = rawEvents_1[_i];\n var tuple = parseEvent(rawEvent, eventSource, context, allowOpenRange, eventRefiners);\n if (tuple) {\n eventTupleToStore(tuple, eventStore);\n }\n }\n return eventStore;\n}\nfunction eventTupleToStore(tuple, eventStore) {\n if (eventStore === void 0) {\n eventStore = createEmptyEventStore();\n }\n eventStore.defs[tuple.def.defId] = tuple.def;\n if (tuple.instance) {\n eventStore.instances[tuple.instance.instanceId] = tuple.instance;\n }\n return eventStore;\n}\n// retrieves events that have the same groupId as the instance specified by `instanceId`\n// or they are the same as the instance.\n// why might instanceId not be in the store? an event from another calendar?\nfunction getRelevantEvents(eventStore, instanceId) {\n var instance = eventStore.instances[instanceId];\n if (instance) {\n var def_1 = eventStore.defs[instance.defId];\n // get events/instances with same group\n var newStore = filterEventStoreDefs(eventStore, function (lookDef) {\n return isEventDefsGrouped(def_1, lookDef);\n });\n // add the original\n // TODO: wish we could use eventTupleToStore or something like it\n newStore.defs[def_1.defId] = def_1;\n newStore.instances[instance.instanceId] = instance;\n return newStore;\n }\n return createEmptyEventStore();\n}\nfunction isEventDefsGrouped(def0, def1) {\n return Boolean(def0.groupId && def0.groupId === def1.groupId);\n}\nfunction createEmptyEventStore() {\n return {\n defs: {},\n instances: {}\n };\n}\nfunction mergeEventStores(store0, store1) {\n return {\n defs: __assign(__assign({}, store0.defs), store1.defs),\n instances: __assign(__assign({}, store0.instances), store1.instances)\n };\n}\nfunction filterEventStoreDefs(eventStore, filterFunc) {\n var defs = filterHash(eventStore.defs, filterFunc);\n var instances = filterHash(eventStore.instances, function (instance) {\n return defs[instance.defId] // still exists?\n ;\n });\n return {\n defs: defs,\n instances: instances\n };\n}\nfunction excludeSubEventStore(master, sub) {\n var defs = master.defs,\n instances = master.instances;\n var filteredDefs = {};\n var filteredInstances = {};\n for (var defId in defs) {\n if (!sub.defs[defId]) {\n // not explicitly excluded\n filteredDefs[defId] = defs[defId];\n }\n }\n for (var instanceId in instances) {\n if (!sub.instances[instanceId] &&\n // not explicitly excluded\n filteredDefs[instances[instanceId].defId] // def wasn't filtered away\n ) {\n filteredInstances[instanceId] = instances[instanceId];\n }\n }\n return {\n defs: filteredDefs,\n instances: filteredInstances\n };\n}\nfunction normalizeConstraint(input, context) {\n if (Array.isArray(input)) {\n return parseEvents(input, null, context, true); // allowOpenRange=true\n }\n if (typeof input === 'object' && input) {\n // non-null object\n return parseEvents([input], null, context, true); // allowOpenRange=true\n }\n if (input != null) {\n return String(input);\n }\n return null;\n}\nfunction parseClassNames(raw) {\n if (Array.isArray(raw)) {\n return raw;\n }\n if (typeof raw === 'string') {\n return raw.split(/\\s+/);\n }\n return [];\n}\n\n// TODO: better called \"EventSettings\" or \"EventConfig\"\n// TODO: move this file into structs\n// TODO: separate constraint/overlap/allow, because selection uses only that, not other props\nvar EVENT_UI_REFINERS = {\n display: String,\n editable: Boolean,\n startEditable: Boolean,\n durationEditable: Boolean,\n constraint: identity,\n overlap: identity,\n allow: identity,\n className: parseClassNames,\n classNames: parseClassNames,\n color: String,\n backgroundColor: String,\n borderColor: String,\n textColor: String\n};\nvar EMPTY_EVENT_UI = {\n display: null,\n startEditable: null,\n durationEditable: null,\n constraints: [],\n overlap: null,\n allows: [],\n backgroundColor: '',\n borderColor: '',\n textColor: '',\n classNames: []\n};\nfunction createEventUi(refined, context) {\n var constraint = normalizeConstraint(refined.constraint, context);\n return {\n display: refined.display || null,\n startEditable: refined.startEditable != null ? refined.startEditable : refined.editable,\n durationEditable: refined.durationEditable != null ? refined.durationEditable : refined.editable,\n constraints: constraint != null ? [constraint] : [],\n overlap: refined.overlap != null ? refined.overlap : null,\n allows: refined.allow != null ? [refined.allow] : [],\n backgroundColor: refined.backgroundColor || refined.color || '',\n borderColor: refined.borderColor || refined.color || '',\n textColor: refined.textColor || '',\n classNames: (refined.className || []).concat(refined.classNames || []) // join singular and plural\n };\n}\n// TODO: prevent against problems with <2 args!\nfunction combineEventUis(uis) {\n return uis.reduce(combineTwoEventUis, EMPTY_EVENT_UI);\n}\nfunction combineTwoEventUis(item0, item1) {\n return {\n display: item1.display != null ? item1.display : item0.display,\n startEditable: item1.startEditable != null ? item1.startEditable : item0.startEditable,\n durationEditable: item1.durationEditable != null ? item1.durationEditable : item0.durationEditable,\n constraints: item0.constraints.concat(item1.constraints),\n overlap: typeof item1.overlap === 'boolean' ? item1.overlap : item0.overlap,\n allows: item0.allows.concat(item1.allows),\n backgroundColor: item1.backgroundColor || item0.backgroundColor,\n borderColor: item1.borderColor || item0.borderColor,\n textColor: item1.textColor || item0.textColor,\n classNames: item0.classNames.concat(item1.classNames)\n };\n}\nvar EVENT_NON_DATE_REFINERS = {\n id: String,\n groupId: String,\n title: String,\n url: String,\n interactive: Boolean\n};\nvar EVENT_DATE_REFINERS = {\n start: identity,\n end: identity,\n date: identity,\n allDay: Boolean\n};\nvar EVENT_REFINERS = __assign(__assign(__assign({}, EVENT_NON_DATE_REFINERS), EVENT_DATE_REFINERS), {\n extendedProps: identity\n});\nfunction parseEvent(raw, eventSource, context, allowOpenRange, refiners) {\n if (refiners === void 0) {\n refiners = buildEventRefiners(context);\n }\n var _a = refineEventDef(raw, context, refiners),\n refined = _a.refined,\n extra = _a.extra;\n var defaultAllDay = computeIsDefaultAllDay(eventSource, context);\n var recurringRes = parseRecurring(refined, defaultAllDay, context.dateEnv, context.pluginHooks.recurringTypes);\n if (recurringRes) {\n var def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', recurringRes.allDay, Boolean(recurringRes.duration), context);\n def.recurringDef = {\n typeId: recurringRes.typeId,\n typeData: recurringRes.typeData,\n duration: recurringRes.duration\n };\n return {\n def: def,\n instance: null\n };\n }\n var singleRes = parseSingle(refined, defaultAllDay, context, allowOpenRange);\n if (singleRes) {\n var def = parseEventDef(refined, extra, eventSource ? eventSource.sourceId : '', singleRes.allDay, singleRes.hasEnd, context);\n var instance = createEventInstance(def.defId, singleRes.range, singleRes.forcedStartTzo, singleRes.forcedEndTzo);\n return {\n def: def,\n instance: instance\n };\n }\n return null;\n}\nfunction refineEventDef(raw, context, refiners) {\n if (refiners === void 0) {\n refiners = buildEventRefiners(context);\n }\n return refineProps(raw, refiners);\n}\nfunction buildEventRefiners(context) {\n return __assign(__assign(__assign({}, EVENT_UI_REFINERS), EVENT_REFINERS), context.pluginHooks.eventRefiners);\n}\n/*\nWill NOT populate extendedProps with the leftover properties.\nWill NOT populate date-related props.\n*/\nfunction parseEventDef(refined, extra, sourceId, allDay, hasEnd, context) {\n var def = {\n title: refined.title || '',\n groupId: refined.groupId || '',\n publicId: refined.id || '',\n url: refined.url || '',\n recurringDef: null,\n defId: guid(),\n sourceId: sourceId,\n allDay: allDay,\n hasEnd: hasEnd,\n interactive: refined.interactive,\n ui: createEventUi(refined, context),\n extendedProps: __assign(__assign({}, refined.extendedProps || {}), extra)\n };\n for (var _i = 0, _a = context.pluginHooks.eventDefMemberAdders; _i < _a.length; _i++) {\n var memberAdder = _a[_i];\n __assign(def, memberAdder(refined));\n }\n // help out EventApi from having user modify props\n Object.freeze(def.ui.classNames);\n Object.freeze(def.extendedProps);\n return def;\n}\nfunction parseSingle(refined, defaultAllDay, context, allowOpenRange) {\n var allDay = refined.allDay;\n var startMeta;\n var startMarker = null;\n var hasEnd = false;\n var endMeta;\n var endMarker = null;\n var startInput = refined.start != null ? refined.start : refined.date;\n startMeta = context.dateEnv.createMarkerMeta(startInput);\n if (startMeta) {\n startMarker = startMeta.marker;\n } else if (!allowOpenRange) {\n return null;\n }\n if (refined.end != null) {\n endMeta = context.dateEnv.createMarkerMeta(refined.end);\n }\n if (allDay == null) {\n if (defaultAllDay != null) {\n allDay = defaultAllDay;\n } else {\n // fall back to the date props LAST\n allDay = (!startMeta || startMeta.isTimeUnspecified) && (!endMeta || endMeta.isTimeUnspecified);\n }\n }\n if (allDay && startMarker) {\n startMarker = startOfDay(startMarker);\n }\n if (endMeta) {\n endMarker = endMeta.marker;\n if (allDay) {\n endMarker = startOfDay(endMarker);\n }\n if (startMarker && endMarker <= startMarker) {\n endMarker = null;\n }\n }\n if (endMarker) {\n hasEnd = true;\n } else if (!allowOpenRange) {\n hasEnd = context.options.forceEventDuration || false;\n endMarker = context.dateEnv.add(startMarker, allDay ? context.options.defaultAllDayEventDuration : context.options.defaultTimedEventDuration);\n }\n return {\n allDay: allDay,\n hasEnd: hasEnd,\n range: {\n start: startMarker,\n end: endMarker\n },\n forcedStartTzo: startMeta ? startMeta.forcedTzo : null,\n forcedEndTzo: endMeta ? endMeta.forcedTzo : null\n };\n}\nfunction computeIsDefaultAllDay(eventSource, context) {\n var res = null;\n if (eventSource) {\n res = eventSource.defaultAllDay;\n }\n if (res == null) {\n res = context.options.defaultAllDay;\n }\n return res;\n}\n\n/* Date stuff that doesn't belong in datelib core\n----------------------------------------------------------------------------------------------------------------------*/\n// given a timed range, computes an all-day range that has the same exact duration,\n// but whose start time is aligned with the start of the day.\nfunction computeAlignedDayRange(timedRange) {\n var dayCnt = Math.floor(diffDays(timedRange.start, timedRange.end)) || 1;\n var start = startOfDay(timedRange.start);\n var end = addDays(start, dayCnt);\n return {\n start: start,\n end: end\n };\n}\n// given a timed range, computes an all-day range based on how for the end date bleeds into the next day\n// TODO: give nextDayThreshold a default arg\nfunction computeVisibleDayRange(timedRange, nextDayThreshold) {\n if (nextDayThreshold === void 0) {\n nextDayThreshold = createDuration(0);\n }\n var startDay = null;\n var endDay = null;\n if (timedRange.end) {\n endDay = startOfDay(timedRange.end);\n var endTimeMS = timedRange.end.valueOf() - endDay.valueOf(); // # of milliseconds into `endDay`\n // If the end time is actually inclusively part of the next day and is equal to or\n // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.\n // Otherwise, leaving it as inclusive will cause it to exclude `endDay`.\n if (endTimeMS && endTimeMS >= asRoughMs(nextDayThreshold)) {\n endDay = addDays(endDay, 1);\n }\n }\n if (timedRange.start) {\n startDay = startOfDay(timedRange.start); // the beginning of the day the range starts\n // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day.\n if (endDay && endDay <= startDay) {\n endDay = addDays(startDay, 1);\n }\n }\n return {\n start: startDay,\n end: endDay\n };\n}\n// spans from one day into another?\nfunction isMultiDayRange(range) {\n var visibleRange = computeVisibleDayRange(range);\n return diffDays(visibleRange.start, visibleRange.end) > 1;\n}\nfunction diffDates(date0, date1, dateEnv, largeUnit) {\n if (largeUnit === 'year') {\n return createDuration(dateEnv.diffWholeYears(date0, date1), 'year');\n }\n if (largeUnit === 'month') {\n return createDuration(dateEnv.diffWholeMonths(date0, date1), 'month');\n }\n return diffDayAndTime(date0, date1); // returns a duration\n}\nfunction parseRange(input, dateEnv) {\n var start = null;\n var end = null;\n if (input.start) {\n start = dateEnv.createMarker(input.start);\n }\n if (input.end) {\n end = dateEnv.createMarker(input.end);\n }\n if (!start && !end) {\n return null;\n }\n if (start && end && end < start) {\n return null;\n }\n return {\n start: start,\n end: end\n };\n}\n// SIDE-EFFECT: will mutate ranges.\n// Will return a new array result.\nfunction invertRanges(ranges, constraintRange) {\n var invertedRanges = [];\n var start = constraintRange.start; // the end of the previous range. the start of the new range\n var i;\n var dateRange;\n // ranges need to be in order. required for our date-walking algorithm\n ranges.sort(compareRanges);\n for (i = 0; i < ranges.length; i += 1) {\n dateRange = ranges[i];\n // add the span of time before the event (if there is any)\n if (dateRange.start > start) {\n // compare millisecond time (skip any ambig logic)\n invertedRanges.push({\n start: start,\n end: dateRange.start\n });\n }\n if (dateRange.end > start) {\n start = dateRange.end;\n }\n }\n // add the span of time after the last event (if there is any)\n if (start < constraintRange.end) {\n // compare millisecond time (skip any ambig logic)\n invertedRanges.push({\n start: start,\n end: constraintRange.end\n });\n }\n return invertedRanges;\n}\nfunction compareRanges(range0, range1) {\n return range0.start.valueOf() - range1.start.valueOf(); // earlier ranges go first\n}\nfunction intersectRanges(range0, range1) {\n var start = range0.start,\n end = range0.end;\n var newRange = null;\n if (range1.start !== null) {\n if (start === null) {\n start = range1.start;\n } else {\n start = new Date(Math.max(start.valueOf(), range1.start.valueOf()));\n }\n }\n if (range1.end != null) {\n if (end === null) {\n end = range1.end;\n } else {\n end = new Date(Math.min(end.valueOf(), range1.end.valueOf()));\n }\n }\n if (start === null || end === null || start < end) {\n newRange = {\n start: start,\n end: end\n };\n }\n return newRange;\n}\nfunction rangesEqual(range0, range1) {\n return (range0.start === null ? null : range0.start.valueOf()) === (range1.start === null ? null : range1.start.valueOf()) && (range0.end === null ? null : range0.end.valueOf()) === (range1.end === null ? null : range1.end.valueOf());\n}\nfunction rangesIntersect(range0, range1) {\n return (range0.end === null || range1.start === null || range0.end > range1.start) && (range0.start === null || range1.end === null || range0.start < range1.end);\n}\nfunction rangeContainsRange(outerRange, innerRange) {\n return (outerRange.start === null || innerRange.start !== null && innerRange.start >= outerRange.start) && (outerRange.end === null || innerRange.end !== null && innerRange.end <= outerRange.end);\n}\nfunction rangeContainsMarker(range, date) {\n return (range.start === null || date >= range.start) && (range.end === null || date < range.end);\n}\n// If the given date is not within the given range, move it inside.\n// (If it's past the end, make it one millisecond before the end).\nfunction constrainMarkerToRange(date, range) {\n if (range.start != null && date < range.start) {\n return range.start;\n }\n if (range.end != null && date >= range.end) {\n return new Date(range.end.valueOf() - 1);\n }\n return date;\n}\n\n/*\nSpecifying nextDayThreshold signals that all-day ranges should be sliced.\n*/\nfunction sliceEventStore(eventStore, eventUiBases, framingRange, nextDayThreshold) {\n var inverseBgByGroupId = {};\n var inverseBgByDefId = {};\n var defByGroupId = {};\n var bgRanges = [];\n var fgRanges = [];\n var eventUis = compileEventUis(eventStore.defs, eventUiBases);\n for (var defId in eventStore.defs) {\n var def = eventStore.defs[defId];\n var ui = eventUis[def.defId];\n if (ui.display === 'inverse-background') {\n if (def.groupId) {\n inverseBgByGroupId[def.groupId] = [];\n if (!defByGroupId[def.groupId]) {\n defByGroupId[def.groupId] = def;\n }\n } else {\n inverseBgByDefId[defId] = [];\n }\n }\n }\n for (var instanceId in eventStore.instances) {\n var instance = eventStore.instances[instanceId];\n var def = eventStore.defs[instance.defId];\n var ui = eventUis[def.defId];\n var origRange = instance.range;\n var normalRange = !def.allDay && nextDayThreshold ? computeVisibleDayRange(origRange, nextDayThreshold) : origRange;\n var slicedRange = intersectRanges(normalRange, framingRange);\n if (slicedRange) {\n if (ui.display === 'inverse-background') {\n if (def.groupId) {\n inverseBgByGroupId[def.groupId].push(slicedRange);\n } else {\n inverseBgByDefId[instance.defId].push(slicedRange);\n }\n } else if (ui.display !== 'none') {\n (ui.display === 'background' ? bgRanges : fgRanges).push({\n def: def,\n ui: ui,\n instance: instance,\n range: slicedRange,\n isStart: normalRange.start && normalRange.start.valueOf() === slicedRange.start.valueOf(),\n isEnd: normalRange.end && normalRange.end.valueOf() === slicedRange.end.valueOf()\n });\n }\n }\n }\n for (var groupId in inverseBgByGroupId) {\n // BY GROUP\n var ranges = inverseBgByGroupId[groupId];\n var invertedRanges = invertRanges(ranges, framingRange);\n for (var _i = 0, invertedRanges_1 = invertedRanges; _i < invertedRanges_1.length; _i++) {\n var invertedRange = invertedRanges_1[_i];\n var def = defByGroupId[groupId];\n var ui = eventUis[def.defId];\n bgRanges.push({\n def: def,\n ui: ui,\n instance: null,\n range: invertedRange,\n isStart: false,\n isEnd: false\n });\n }\n }\n for (var defId in inverseBgByDefId) {\n var ranges = inverseBgByDefId[defId];\n var invertedRanges = invertRanges(ranges, framingRange);\n for (var _a = 0, invertedRanges_2 = invertedRanges; _a < invertedRanges_2.length; _a++) {\n var invertedRange = invertedRanges_2[_a];\n bgRanges.push({\n def: eventStore.defs[defId],\n ui: eventUis[defId],\n instance: null,\n range: invertedRange,\n isStart: false,\n isEnd: false\n });\n }\n }\n return {\n bg: bgRanges,\n fg: fgRanges\n };\n}\nfunction hasBgRendering(def) {\n return def.ui.display === 'background' || def.ui.display === 'inverse-background';\n}\nfunction setElSeg(el, seg) {\n el.fcSeg = seg;\n}\nfunction getElSeg(el) {\n return el.fcSeg || el.parentNode.fcSeg ||\n // for the harness\n null;\n}\n// event ui computation\nfunction compileEventUis(eventDefs, eventUiBases) {\n return mapHash(eventDefs, function (eventDef) {\n return compileEventUi(eventDef, eventUiBases);\n });\n}\nfunction compileEventUi(eventDef, eventUiBases) {\n var uis = [];\n if (eventUiBases['']) {\n uis.push(eventUiBases['']);\n }\n if (eventUiBases[eventDef.defId]) {\n uis.push(eventUiBases[eventDef.defId]);\n }\n uis.push(eventDef.ui);\n return combineEventUis(uis);\n}\nfunction sortEventSegs(segs, eventOrderSpecs) {\n var objs = segs.map(buildSegCompareObj);\n objs.sort(function (obj0, obj1) {\n return compareByFieldSpecs(obj0, obj1, eventOrderSpecs);\n });\n return objs.map(function (c) {\n return c._seg;\n });\n}\n// returns a object with all primitive props that can be compared\nfunction buildSegCompareObj(seg) {\n var eventRange = seg.eventRange;\n var eventDef = eventRange.def;\n var range = eventRange.instance ? eventRange.instance.range : eventRange.range;\n var start = range.start ? range.start.valueOf() : 0; // TODO: better support for open-range events\n var end = range.end ? range.end.valueOf() : 0; // \"\n return __assign(__assign(__assign({}, eventDef.extendedProps), eventDef), {\n id: eventDef.publicId,\n start: start,\n end: end,\n duration: end - start,\n allDay: Number(eventDef.allDay),\n _seg: seg\n });\n}\nfunction computeSegDraggable(seg, context) {\n var pluginHooks = context.pluginHooks;\n var transformers = pluginHooks.isDraggableTransformers;\n var _a = seg.eventRange,\n def = _a.def,\n ui = _a.ui;\n var val = ui.startEditable;\n for (var _i = 0, transformers_1 = transformers; _i < transformers_1.length; _i++) {\n var transformer = transformers_1[_i];\n val = transformer(val, def, ui, context);\n }\n return val;\n}\nfunction computeSegStartResizable(seg, context) {\n return seg.isStart && seg.eventRange.ui.durationEditable && context.options.eventResizableFromStart;\n}\nfunction computeSegEndResizable(seg, context) {\n return seg.isEnd && seg.eventRange.ui.durationEditable;\n}\nfunction buildSegTimeText(seg, timeFormat, context, defaultDisplayEventTime,\n// defaults to true\ndefaultDisplayEventEnd,\n// defaults to true\nstartOverride, endOverride) {\n var dateEnv = context.dateEnv,\n options = context.options;\n var displayEventTime = options.displayEventTime,\n displayEventEnd = options.displayEventEnd;\n var eventDef = seg.eventRange.def;\n var eventInstance = seg.eventRange.instance;\n if (displayEventTime == null) {\n displayEventTime = defaultDisplayEventTime !== false;\n }\n if (displayEventEnd == null) {\n displayEventEnd = defaultDisplayEventEnd !== false;\n }\n var wholeEventStart = eventInstance.range.start;\n var wholeEventEnd = eventInstance.range.end;\n var segStart = startOverride || seg.start || seg.eventRange.range.start;\n var segEnd = endOverride || seg.end || seg.eventRange.range.end;\n var isStartDay = startOfDay(wholeEventStart).valueOf() === startOfDay(segStart).valueOf();\n var isEndDay = startOfDay(addMs(wholeEventEnd, -1)).valueOf() === startOfDay(addMs(segEnd, -1)).valueOf();\n if (displayEventTime && !eventDef.allDay && (isStartDay || isEndDay)) {\n segStart = isStartDay ? wholeEventStart : segStart;\n segEnd = isEndDay ? wholeEventEnd : segEnd;\n if (displayEventEnd && eventDef.hasEnd) {\n return dateEnv.formatRange(segStart, segEnd, timeFormat, {\n forcedStartTzo: startOverride ? null : eventInstance.forcedStartTzo,\n forcedEndTzo: endOverride ? null : eventInstance.forcedEndTzo\n });\n }\n return dateEnv.format(segStart, timeFormat, {\n forcedTzo: startOverride ? null : eventInstance.forcedStartTzo // nooooo, same\n });\n }\n return '';\n}\nfunction getSegMeta(seg, todayRange, nowDate) {\n var segRange = seg.eventRange.range;\n return {\n isPast: segRange.end < (nowDate || todayRange.start),\n isFuture: segRange.start >= (nowDate || todayRange.end),\n isToday: todayRange && rangeContainsMarker(todayRange, segRange.start)\n };\n}\nfunction getEventClassNames(props) {\n var classNames = ['fc-event'];\n if (props.isMirror) {\n classNames.push('fc-event-mirror');\n }\n if (props.isDraggable) {\n classNames.push('fc-event-draggable');\n }\n if (props.isStartResizable || props.isEndResizable) {\n classNames.push('fc-event-resizable');\n }\n if (props.isDragging) {\n classNames.push('fc-event-dragging');\n }\n if (props.isResizing) {\n classNames.push('fc-event-resizing');\n }\n if (props.isSelected) {\n classNames.push('fc-event-selected');\n }\n if (props.isStart) {\n classNames.push('fc-event-start');\n }\n if (props.isEnd) {\n classNames.push('fc-event-end');\n }\n if (props.isPast) {\n classNames.push('fc-event-past');\n }\n if (props.isToday) {\n classNames.push('fc-event-today');\n }\n if (props.isFuture) {\n classNames.push('fc-event-future');\n }\n return classNames;\n}\nfunction buildEventRangeKey(eventRange) {\n return eventRange.instance ? eventRange.instance.instanceId : eventRange.def.defId + \":\" + eventRange.range.start.toISOString();\n // inverse-background events don't have specific instances. TODO: better solution\n}\nfunction getSegAnchorAttrs(seg, context) {\n var _a = seg.eventRange,\n def = _a.def,\n instance = _a.instance;\n var url = def.url;\n if (url) {\n return {\n href: url\n };\n }\n var emitter = context.emitter,\n options = context.options;\n var eventInteractive = options.eventInteractive;\n if (eventInteractive == null) {\n eventInteractive = def.interactive;\n if (eventInteractive == null) {\n eventInteractive = Boolean(emitter.hasHandlers('eventClick'));\n }\n }\n // mock what happens in EventClicking\n if (eventInteractive) {\n // only attach keyboard-related handlers because click handler is already done in EventClicking\n return createAriaKeyboardAttrs(function (ev) {\n emitter.trigger('eventClick', {\n el: ev.target,\n event: new EventApi(context, def, instance),\n jsEvent: ev,\n view: context.viewApi\n });\n });\n }\n return {};\n}\nvar STANDARD_PROPS = {\n start: identity,\n end: identity,\n allDay: Boolean\n};\nfunction parseDateSpan(raw, dateEnv, defaultDuration) {\n var span = parseOpenDateSpan(raw, dateEnv);\n var range = span.range;\n if (!range.start) {\n return null;\n }\n if (!range.end) {\n if (defaultDuration == null) {\n return null;\n }\n range.end = dateEnv.add(range.start, defaultDuration);\n }\n return span;\n}\n/*\nTODO: somehow combine with parseRange?\nWill return null if the start/end props were present but parsed invalidly.\n*/\nfunction parseOpenDateSpan(raw, dateEnv) {\n var _a = refineProps(raw, STANDARD_PROPS),\n standardProps = _a.refined,\n extra = _a.extra;\n var startMeta = standardProps.start ? dateEnv.createMarkerMeta(standardProps.start) : null;\n var endMeta = standardProps.end ? dateEnv.createMarkerMeta(standardProps.end) : null;\n var allDay = standardProps.allDay;\n if (allDay == null) {\n allDay = startMeta && startMeta.isTimeUnspecified && (!endMeta || endMeta.isTimeUnspecified);\n }\n return __assign({\n range: {\n start: startMeta ? startMeta.marker : null,\n end: endMeta ? endMeta.marker : null\n },\n allDay: allDay\n }, extra);\n}\nfunction isDateSpansEqual(span0, span1) {\n return rangesEqual(span0.range, span1.range) && span0.allDay === span1.allDay && isSpanPropsEqual(span0, span1);\n}\n// the NON-DATE-RELATED props\nfunction isSpanPropsEqual(span0, span1) {\n for (var propName in span1) {\n if (propName !== 'range' && propName !== 'allDay') {\n if (span0[propName] !== span1[propName]) {\n return false;\n }\n }\n }\n // are there any props that span0 has that span1 DOESN'T have?\n // both have range/allDay, so no need to special-case.\n for (var propName in span0) {\n if (!(propName in span1)) {\n return false;\n }\n }\n return true;\n}\nfunction buildDateSpanApi(span, dateEnv) {\n return __assign(__assign({}, buildRangeApi(span.range, dateEnv, span.allDay)), {\n allDay: span.allDay\n });\n}\nfunction buildRangeApiWithTimeZone(range, dateEnv, omitTime) {\n return __assign(__assign({}, buildRangeApi(range, dateEnv, omitTime)), {\n timeZone: dateEnv.timeZone\n });\n}\nfunction buildRangeApi(range, dateEnv, omitTime) {\n return {\n start: dateEnv.toDate(range.start),\n end: dateEnv.toDate(range.end),\n startStr: dateEnv.formatIso(range.start, {\n omitTime: omitTime\n }),\n endStr: dateEnv.formatIso(range.end, {\n omitTime: omitTime\n })\n };\n}\nfunction fabricateEventRange(dateSpan, eventUiBases, context) {\n var res = refineEventDef({\n editable: false\n }, context);\n var def = parseEventDef(res.refined, res.extra, '',\n // sourceId\n dateSpan.allDay, true,\n // hasEnd\n context);\n return {\n def: def,\n ui: compileEventUi(def, eventUiBases),\n instance: createEventInstance(def.defId, dateSpan.range),\n range: dateSpan.range,\n isStart: true,\n isEnd: true\n };\n}\nfunction triggerDateSelect(selection, pev, context) {\n context.emitter.trigger('select', __assign(__assign({}, buildDateSpanApiWithContext(selection, context)), {\n jsEvent: pev ? pev.origEvent : null,\n view: context.viewApi || context.calendarApi.view\n }));\n}\nfunction triggerDateUnselect(pev, context) {\n context.emitter.trigger('unselect', {\n jsEvent: pev ? pev.origEvent : null,\n view: context.viewApi || context.calendarApi.view\n });\n}\nfunction buildDateSpanApiWithContext(dateSpan, context) {\n var props = {};\n for (var _i = 0, _a = context.pluginHooks.dateSpanTransforms; _i < _a.length; _i++) {\n var transform = _a[_i];\n __assign(props, transform(dateSpan, context));\n }\n __assign(props, buildDateSpanApi(dateSpan, context.dateEnv));\n return props;\n}\n// Given an event's allDay status and start date, return what its fallback end date should be.\n// TODO: rename to computeDefaultEventEnd\nfunction getDefaultEventEnd(allDay, marker, context) {\n var dateEnv = context.dateEnv,\n options = context.options;\n var end = marker;\n if (allDay) {\n end = startOfDay(end);\n end = dateEnv.add(end, options.defaultAllDayEventDuration);\n } else {\n end = dateEnv.add(end, options.defaultTimedEventDuration);\n }\n return end;\n}\n\n// applies the mutation to ALL defs/instances within the event store\nfunction applyMutationToEventStore(eventStore, eventConfigBase, mutation, context) {\n var eventConfigs = compileEventUis(eventStore.defs, eventConfigBase);\n var dest = createEmptyEventStore();\n for (var defId in eventStore.defs) {\n var def = eventStore.defs[defId];\n dest.defs[defId] = applyMutationToEventDef(def, eventConfigs[defId], mutation, context);\n }\n for (var instanceId in eventStore.instances) {\n var instance = eventStore.instances[instanceId];\n var def = dest.defs[instance.defId]; // important to grab the newly modified def\n dest.instances[instanceId] = applyMutationToEventInstance(instance, def, eventConfigs[instance.defId], mutation, context);\n }\n return dest;\n}\nfunction applyMutationToEventDef(eventDef, eventConfig, mutation, context) {\n var standardProps = mutation.standardProps || {};\n // if hasEnd has not been specified, guess a good value based on deltas.\n // if duration will change, there's no way the default duration will persist,\n // and thus, we need to mark the event as having a real end\n if (standardProps.hasEnd == null && eventConfig.durationEditable && (mutation.startDelta || mutation.endDelta)) {\n standardProps.hasEnd = true; // TODO: is this mutation okay?\n }\n var copy = __assign(__assign(__assign({}, eventDef), standardProps), {\n ui: __assign(__assign({}, eventDef.ui), standardProps.ui)\n });\n if (mutation.extendedProps) {\n copy.extendedProps = __assign(__assign({}, copy.extendedProps), mutation.extendedProps);\n }\n for (var _i = 0, _a = context.pluginHooks.eventDefMutationAppliers; _i < _a.length; _i++) {\n var applier = _a[_i];\n applier(copy, mutation, context);\n }\n if (!copy.hasEnd && context.options.forceEventDuration) {\n copy.hasEnd = true;\n }\n return copy;\n}\nfunction applyMutationToEventInstance(eventInstance, eventDef,\n// must first be modified by applyMutationToEventDef\neventConfig, mutation, context) {\n var dateEnv = context.dateEnv;\n var forceAllDay = mutation.standardProps && mutation.standardProps.allDay === true;\n var clearEnd = mutation.standardProps && mutation.standardProps.hasEnd === false;\n var copy = __assign({}, eventInstance);\n if (forceAllDay) {\n copy.range = computeAlignedDayRange(copy.range);\n }\n if (mutation.datesDelta && eventConfig.startEditable) {\n copy.range = {\n start: dateEnv.add(copy.range.start, mutation.datesDelta),\n end: dateEnv.add(copy.range.end, mutation.datesDelta)\n };\n }\n if (mutation.startDelta && eventConfig.durationEditable) {\n copy.range = {\n start: dateEnv.add(copy.range.start, mutation.startDelta),\n end: copy.range.end\n };\n }\n if (mutation.endDelta && eventConfig.durationEditable) {\n copy.range = {\n start: copy.range.start,\n end: dateEnv.add(copy.range.end, mutation.endDelta)\n };\n }\n if (clearEnd) {\n copy.range = {\n start: copy.range.start,\n end: getDefaultEventEnd(eventDef.allDay, copy.range.start, context)\n };\n }\n // in case event was all-day but the supplied deltas were not\n // better util for this?\n if (eventDef.allDay) {\n copy.range = {\n start: startOfDay(copy.range.start),\n end: startOfDay(copy.range.end)\n };\n }\n // handle invalid durations\n if (copy.range.end < copy.range.start) {\n copy.range.end = getDefaultEventEnd(eventDef.allDay, copy.range.start, context);\n }\n return copy;\n}\n\n// no public types yet. when there are, export from:\n// import {} from './api-type-deps'\nvar ViewApi = /** @class */function () {\n function ViewApi(type, getCurrentData, dateEnv) {\n this.type = type;\n this.getCurrentData = getCurrentData;\n this.dateEnv = dateEnv;\n }\n Object.defineProperty(ViewApi.prototype, \"calendar\", {\n get: function () {\n return this.getCurrentData().calendarApi;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"title\", {\n get: function () {\n return this.getCurrentData().viewTitle;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"activeStart\", {\n get: function () {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.start);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"activeEnd\", {\n get: function () {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.activeRange.end);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"currentStart\", {\n get: function () {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.start);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewApi.prototype, \"currentEnd\", {\n get: function () {\n return this.dateEnv.toDate(this.getCurrentData().dateProfile.currentRange.end);\n },\n enumerable: false,\n configurable: true\n });\n ViewApi.prototype.getOption = function (name) {\n return this.getCurrentData().options[name]; // are the view-specific options\n };\n return ViewApi;\n}();\nvar EVENT_SOURCE_REFINERS = {\n id: String,\n defaultAllDay: Boolean,\n url: String,\n format: String,\n events: identity,\n eventDataTransform: identity,\n // for any network-related sources\n success: identity,\n failure: identity\n};\nfunction parseEventSource(raw, context, refiners) {\n if (refiners === void 0) {\n refiners = buildEventSourceRefiners(context);\n }\n var rawObj;\n if (typeof raw === 'string') {\n rawObj = {\n url: raw\n };\n } else if (typeof raw === 'function' || Array.isArray(raw)) {\n rawObj = {\n events: raw\n };\n } else if (typeof raw === 'object' && raw) {\n // not null\n rawObj = raw;\n }\n if (rawObj) {\n var _a = refineProps(rawObj, refiners),\n refined = _a.refined,\n extra = _a.extra;\n var metaRes = buildEventSourceMeta(refined, context);\n if (metaRes) {\n return {\n _raw: raw,\n isFetching: false,\n latestFetchId: '',\n fetchRange: null,\n defaultAllDay: refined.defaultAllDay,\n eventDataTransform: refined.eventDataTransform,\n success: refined.success,\n failure: refined.failure,\n publicId: refined.id || '',\n sourceId: guid(),\n sourceDefId: metaRes.sourceDefId,\n meta: metaRes.meta,\n ui: createEventUi(refined, context),\n extendedProps: extra\n };\n }\n }\n return null;\n}\nfunction buildEventSourceRefiners(context) {\n return __assign(__assign(__assign({}, EVENT_UI_REFINERS), EVENT_SOURCE_REFINERS), context.pluginHooks.eventSourceRefiners);\n}\nfunction buildEventSourceMeta(raw, context) {\n var defs = context.pluginHooks.eventSourceDefs;\n for (var i = defs.length - 1; i >= 0; i -= 1) {\n // later-added plugins take precedence\n var def = defs[i];\n var meta = def.parseMeta(raw);\n if (meta) {\n return {\n sourceDefId: i,\n meta: meta\n };\n }\n }\n return null;\n}\nfunction reduceCurrentDate(currentDate, action) {\n switch (action.type) {\n case 'CHANGE_DATE':\n return action.dateMarker;\n default:\n return currentDate;\n }\n}\nfunction getInitialDate(options, dateEnv) {\n var initialDateInput = options.initialDate;\n // compute the initial ambig-timezone date\n if (initialDateInput != null) {\n return dateEnv.createMarker(initialDateInput);\n }\n return getNow(options.now, dateEnv); // getNow already returns unzoned\n}\nfunction getNow(nowInput, dateEnv) {\n if (typeof nowInput === 'function') {\n nowInput = nowInput();\n }\n if (nowInput == null) {\n return dateEnv.createNowMarker();\n }\n return dateEnv.createMarker(nowInput);\n}\nvar CalendarApi = /** @class */function () {\n function CalendarApi() {}\n CalendarApi.prototype.getCurrentData = function () {\n return this.currentDataManager.getCurrentData();\n };\n CalendarApi.prototype.dispatch = function (action) {\n return this.currentDataManager.dispatch(action);\n };\n Object.defineProperty(CalendarApi.prototype, \"view\", {\n get: function () {\n return this.getCurrentData().viewApi;\n } // for public API\n ,\n\n enumerable: false,\n configurable: true\n });\n CalendarApi.prototype.batchRendering = function (callback) {\n callback();\n };\n CalendarApi.prototype.updateSize = function () {\n this.trigger('_resize', true);\n };\n // Options\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.setOption = function (name, val) {\n this.dispatch({\n type: 'SET_OPTION',\n optionName: name,\n rawOptionValue: val\n });\n };\n CalendarApi.prototype.getOption = function (name) {\n return this.currentDataManager.currentCalendarOptionsInput[name];\n };\n CalendarApi.prototype.getAvailableLocaleCodes = function () {\n return Object.keys(this.getCurrentData().availableRawLocales);\n };\n // Trigger\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.on = function (handlerName, handler) {\n var currentDataManager = this.currentDataManager;\n if (currentDataManager.currentCalendarOptionsRefiners[handlerName]) {\n currentDataManager.emitter.on(handlerName, handler);\n } else {\n console.warn(\"Unknown listener name '\" + handlerName + \"'\");\n }\n };\n CalendarApi.prototype.off = function (handlerName, handler) {\n this.currentDataManager.emitter.off(handlerName, handler);\n };\n // not meant for public use\n CalendarApi.prototype.trigger = function (handlerName) {\n var _a;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n (_a = this.currentDataManager.emitter).trigger.apply(_a, __spreadArray([handlerName], args));\n };\n // View\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.changeView = function (viewType, dateOrRange) {\n var _this = this;\n this.batchRendering(function () {\n _this.unselect();\n if (dateOrRange) {\n if (dateOrRange.start && dateOrRange.end) {\n // a range\n _this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: viewType\n });\n _this.dispatch({\n type: 'SET_OPTION',\n optionName: 'visibleRange',\n rawOptionValue: dateOrRange\n });\n } else {\n var dateEnv = _this.getCurrentData().dateEnv;\n _this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: viewType,\n dateMarker: dateEnv.createMarker(dateOrRange)\n });\n }\n } else {\n _this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: viewType\n });\n }\n });\n };\n // Forces navigation to a view for the given date.\n // `viewType` can be a specific view name or a generic one like \"week\" or \"day\".\n // needs to change\n CalendarApi.prototype.zoomTo = function (dateMarker, viewType) {\n var state = this.getCurrentData();\n var spec;\n viewType = viewType || 'day'; // day is default zoom\n spec = state.viewSpecs[viewType] || this.getUnitViewSpec(viewType);\n this.unselect();\n if (spec) {\n this.dispatch({\n type: 'CHANGE_VIEW_TYPE',\n viewType: spec.type,\n dateMarker: dateMarker\n });\n } else {\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: dateMarker\n });\n }\n };\n // Given a duration singular unit, like \"week\" or \"day\", finds a matching view spec.\n // Preference is given to views that have corresponding buttons.\n CalendarApi.prototype.getUnitViewSpec = function (unit) {\n var _a = this.getCurrentData(),\n viewSpecs = _a.viewSpecs,\n toolbarConfig = _a.toolbarConfig;\n var viewTypes = [].concat(toolbarConfig.header ? toolbarConfig.header.viewsWithButtons : [], toolbarConfig.footer ? toolbarConfig.footer.viewsWithButtons : []);\n var i;\n var spec;\n for (var viewType in viewSpecs) {\n viewTypes.push(viewType);\n }\n for (i = 0; i < viewTypes.length; i += 1) {\n spec = viewSpecs[viewTypes[i]];\n if (spec) {\n if (spec.singleUnit === unit) {\n return spec;\n }\n }\n }\n return null;\n };\n // Current Date\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.prev = function () {\n this.unselect();\n this.dispatch({\n type: 'PREV'\n });\n };\n CalendarApi.prototype.next = function () {\n this.unselect();\n this.dispatch({\n type: 'NEXT'\n });\n };\n CalendarApi.prototype.prevYear = function () {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.addYears(state.currentDate, -1)\n });\n };\n CalendarApi.prototype.nextYear = function () {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.addYears(state.currentDate, 1)\n });\n };\n CalendarApi.prototype.today = function () {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: getNow(state.calendarOptions.now, state.dateEnv)\n });\n };\n CalendarApi.prototype.gotoDate = function (zonedDateInput) {\n var state = this.getCurrentData();\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.createMarker(zonedDateInput)\n });\n };\n CalendarApi.prototype.incrementDate = function (deltaInput) {\n var state = this.getCurrentData();\n var delta = createDuration(deltaInput);\n if (delta) {\n // else, warn about invalid input?\n this.unselect();\n this.dispatch({\n type: 'CHANGE_DATE',\n dateMarker: state.dateEnv.add(state.currentDate, delta)\n });\n }\n };\n // for external API\n CalendarApi.prototype.getDate = function () {\n var state = this.getCurrentData();\n return state.dateEnv.toDate(state.currentDate);\n };\n // Date Formatting Utils\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.formatDate = function (d, formatter) {\n var dateEnv = this.getCurrentData().dateEnv;\n return dateEnv.format(dateEnv.createMarker(d), createFormatter(formatter));\n };\n // `settings` is for formatter AND isEndExclusive\n CalendarApi.prototype.formatRange = function (d0, d1, settings) {\n var dateEnv = this.getCurrentData().dateEnv;\n return dateEnv.formatRange(dateEnv.createMarker(d0), dateEnv.createMarker(d1), createFormatter(settings), settings);\n };\n CalendarApi.prototype.formatIso = function (d, omitTime) {\n var dateEnv = this.getCurrentData().dateEnv;\n return dateEnv.formatIso(dateEnv.createMarker(d), {\n omitTime: omitTime\n });\n };\n // Date Selection / Event Selection / DayClick\n // -----------------------------------------------------------------------------------------------------------------\n // this public method receives start/end dates in any format, with any timezone\n // NOTE: args were changed from v3\n CalendarApi.prototype.select = function (dateOrObj, endDate) {\n var selectionInput;\n if (endDate == null) {\n if (dateOrObj.start != null) {\n selectionInput = dateOrObj;\n } else {\n selectionInput = {\n start: dateOrObj,\n end: null\n };\n }\n } else {\n selectionInput = {\n start: dateOrObj,\n end: endDate\n };\n }\n var state = this.getCurrentData();\n var selection = parseDateSpan(selectionInput, state.dateEnv, createDuration({\n days: 1\n }));\n if (selection) {\n // throw parse error otherwise?\n this.dispatch({\n type: 'SELECT_DATES',\n selection: selection\n });\n triggerDateSelect(selection, null, state);\n }\n };\n // public method\n CalendarApi.prototype.unselect = function (pev) {\n var state = this.getCurrentData();\n if (state.dateSelection) {\n this.dispatch({\n type: 'UNSELECT_DATES'\n });\n triggerDateUnselect(pev, state);\n }\n };\n // Public Events API\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.addEvent = function (eventInput, sourceInput) {\n if (eventInput instanceof EventApi) {\n var def = eventInput._def;\n var instance = eventInput._instance;\n var currentData = this.getCurrentData();\n // not already present? don't want to add an old snapshot\n if (!currentData.eventStore.defs[def.defId]) {\n this.dispatch({\n type: 'ADD_EVENTS',\n eventStore: eventTupleToStore({\n def: def,\n instance: instance\n }) // TODO: better util for two args?\n });\n this.triggerEventAdd(eventInput);\n }\n return eventInput;\n }\n var state = this.getCurrentData();\n var eventSource;\n if (sourceInput instanceof EventSourceApi) {\n eventSource = sourceInput.internalEventSource;\n } else if (typeof sourceInput === 'boolean') {\n if (sourceInput) {\n // true. part of the first event source\n eventSource = hashValuesToArray(state.eventSources)[0];\n }\n } else if (sourceInput != null) {\n // an ID. accepts a number too\n var sourceApi = this.getEventSourceById(sourceInput); // TODO: use an internal function\n if (!sourceApi) {\n console.warn(\"Could not find an event source with ID \\\"\" + sourceInput + \"\\\"\"); // TODO: test\n return null;\n }\n eventSource = sourceApi.internalEventSource;\n }\n var tuple = parseEvent(eventInput, eventSource, state, false);\n if (tuple) {\n var newEventApi = new EventApi(state, tuple.def, tuple.def.recurringDef ? null : tuple.instance);\n this.dispatch({\n type: 'ADD_EVENTS',\n eventStore: eventTupleToStore(tuple)\n });\n this.triggerEventAdd(newEventApi);\n return newEventApi;\n }\n return null;\n };\n CalendarApi.prototype.triggerEventAdd = function (eventApi) {\n var _this = this;\n var emitter = this.getCurrentData().emitter;\n emitter.trigger('eventAdd', {\n event: eventApi,\n relatedEvents: [],\n revert: function () {\n _this.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: eventApiToStore(eventApi)\n });\n }\n });\n };\n // TODO: optimize\n CalendarApi.prototype.getEventById = function (id) {\n var state = this.getCurrentData();\n var _a = state.eventStore,\n defs = _a.defs,\n instances = _a.instances;\n id = String(id);\n for (var defId in defs) {\n var def = defs[defId];\n if (def.publicId === id) {\n if (def.recurringDef) {\n return new EventApi(state, def, null);\n }\n for (var instanceId in instances) {\n var instance = instances[instanceId];\n if (instance.defId === def.defId) {\n return new EventApi(state, def, instance);\n }\n }\n }\n }\n return null;\n };\n CalendarApi.prototype.getEvents = function () {\n var currentData = this.getCurrentData();\n return buildEventApis(currentData.eventStore, currentData);\n };\n CalendarApi.prototype.removeAllEvents = function () {\n this.dispatch({\n type: 'REMOVE_ALL_EVENTS'\n });\n };\n // Public Event Sources API\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.getEventSources = function () {\n var state = this.getCurrentData();\n var sourceHash = state.eventSources;\n var sourceApis = [];\n for (var internalId in sourceHash) {\n sourceApis.push(new EventSourceApi(state, sourceHash[internalId]));\n }\n return sourceApis;\n };\n CalendarApi.prototype.getEventSourceById = function (id) {\n var state = this.getCurrentData();\n var sourceHash = state.eventSources;\n id = String(id);\n for (var sourceId in sourceHash) {\n if (sourceHash[sourceId].publicId === id) {\n return new EventSourceApi(state, sourceHash[sourceId]);\n }\n }\n return null;\n };\n CalendarApi.prototype.addEventSource = function (sourceInput) {\n var state = this.getCurrentData();\n if (sourceInput instanceof EventSourceApi) {\n // not already present? don't want to add an old snapshot\n if (!state.eventSources[sourceInput.internalEventSource.sourceId]) {\n this.dispatch({\n type: 'ADD_EVENT_SOURCES',\n sources: [sourceInput.internalEventSource]\n });\n }\n return sourceInput;\n }\n var eventSource = parseEventSource(sourceInput, state);\n if (eventSource) {\n // TODO: error otherwise?\n this.dispatch({\n type: 'ADD_EVENT_SOURCES',\n sources: [eventSource]\n });\n return new EventSourceApi(state, eventSource);\n }\n return null;\n };\n CalendarApi.prototype.removeAllEventSources = function () {\n this.dispatch({\n type: 'REMOVE_ALL_EVENT_SOURCES'\n });\n };\n CalendarApi.prototype.refetchEvents = function () {\n this.dispatch({\n type: 'FETCH_EVENT_SOURCES',\n isRefetch: true\n });\n };\n // Scroll\n // -----------------------------------------------------------------------------------------------------------------\n CalendarApi.prototype.scrollToTime = function (timeInput) {\n var time = createDuration(timeInput);\n if (time) {\n this.trigger('_scrollRequest', {\n time: time\n });\n }\n };\n return CalendarApi;\n}();\nvar EventApi = /** @class */function () {\n // instance will be null if expressing a recurring event that has no current instances,\n // OR if trying to validate an incoming external event that has no dates assigned\n function EventApi(context, def, instance) {\n this._context = context;\n this._def = def;\n this._instance = instance || null;\n }\n /*\n TODO: make event struct more responsible for this\n */\n EventApi.prototype.setProp = function (name, val) {\n var _a, _b;\n if (name in EVENT_DATE_REFINERS) {\n console.warn('Could not set date-related prop \\'name\\'. Use one of the date-related methods instead.');\n // TODO: make proper aliasing system?\n } else if (name === 'id') {\n val = EVENT_NON_DATE_REFINERS[name](val);\n this.mutate({\n standardProps: {\n publicId: val\n } // hardcoded internal name\n });\n } else if (name in EVENT_NON_DATE_REFINERS) {\n val = EVENT_NON_DATE_REFINERS[name](val);\n this.mutate({\n standardProps: (_a = {}, _a[name] = val, _a)\n });\n } else if (name in EVENT_UI_REFINERS) {\n var ui = EVENT_UI_REFINERS[name](val);\n if (name === 'color') {\n ui = {\n backgroundColor: val,\n borderColor: val\n };\n } else if (name === 'editable') {\n ui = {\n startEditable: val,\n durationEditable: val\n };\n } else {\n ui = (_b = {}, _b[name] = val, _b);\n }\n this.mutate({\n standardProps: {\n ui: ui\n }\n });\n } else {\n console.warn(\"Could not set prop '\" + name + \"'. Use setExtendedProp instead.\");\n }\n };\n EventApi.prototype.setExtendedProp = function (name, val) {\n var _a;\n this.mutate({\n extendedProps: (_a = {}, _a[name] = val, _a)\n });\n };\n EventApi.prototype.setStart = function (startInput, options) {\n if (options === void 0) {\n options = {};\n }\n var dateEnv = this._context.dateEnv;\n var start = dateEnv.createMarker(startInput);\n if (start && this._instance) {\n // TODO: warning if parsed bad\n var instanceRange = this._instance.range;\n var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity); // what if parsed bad!?\n if (options.maintainDuration) {\n this.mutate({\n datesDelta: startDelta\n });\n } else {\n this.mutate({\n startDelta: startDelta\n });\n }\n }\n };\n EventApi.prototype.setEnd = function (endInput, options) {\n if (options === void 0) {\n options = {};\n }\n var dateEnv = this._context.dateEnv;\n var end;\n if (endInput != null) {\n end = dateEnv.createMarker(endInput);\n if (!end) {\n return; // TODO: warning if parsed bad\n }\n }\n if (this._instance) {\n if (end) {\n var endDelta = diffDates(this._instance.range.end, end, dateEnv, options.granularity);\n this.mutate({\n endDelta: endDelta\n });\n } else {\n this.mutate({\n standardProps: {\n hasEnd: false\n }\n });\n }\n }\n };\n EventApi.prototype.setDates = function (startInput, endInput, options) {\n if (options === void 0) {\n options = {};\n }\n var dateEnv = this._context.dateEnv;\n var standardProps = {\n allDay: options.allDay\n };\n var start = dateEnv.createMarker(startInput);\n var end;\n if (!start) {\n return; // TODO: warning if parsed bad\n }\n if (endInput != null) {\n end = dateEnv.createMarker(endInput);\n if (!end) {\n // TODO: warning if parsed bad\n return;\n }\n }\n if (this._instance) {\n var instanceRange = this._instance.range;\n // when computing the diff for an event being converted to all-day,\n // compute diff off of the all-day values the way event-mutation does.\n if (options.allDay === true) {\n instanceRange = computeAlignedDayRange(instanceRange);\n }\n var startDelta = diffDates(instanceRange.start, start, dateEnv, options.granularity);\n if (end) {\n var endDelta = diffDates(instanceRange.end, end, dateEnv, options.granularity);\n if (durationsEqual(startDelta, endDelta)) {\n this.mutate({\n datesDelta: startDelta,\n standardProps: standardProps\n });\n } else {\n this.mutate({\n startDelta: startDelta,\n endDelta: endDelta,\n standardProps: standardProps\n });\n }\n } else {\n // means \"clear the end\"\n standardProps.hasEnd = false;\n this.mutate({\n datesDelta: startDelta,\n standardProps: standardProps\n });\n }\n }\n };\n EventApi.prototype.moveStart = function (deltaInput) {\n var delta = createDuration(deltaInput);\n if (delta) {\n // TODO: warning if parsed bad\n this.mutate({\n startDelta: delta\n });\n }\n };\n EventApi.prototype.moveEnd = function (deltaInput) {\n var delta = createDuration(deltaInput);\n if (delta) {\n // TODO: warning if parsed bad\n this.mutate({\n endDelta: delta\n });\n }\n };\n EventApi.prototype.moveDates = function (deltaInput) {\n var delta = createDuration(deltaInput);\n if (delta) {\n // TODO: warning if parsed bad\n this.mutate({\n datesDelta: delta\n });\n }\n };\n EventApi.prototype.setAllDay = function (allDay, options) {\n if (options === void 0) {\n options = {};\n }\n var standardProps = {\n allDay: allDay\n };\n var maintainDuration = options.maintainDuration;\n if (maintainDuration == null) {\n maintainDuration = this._context.options.allDayMaintainDuration;\n }\n if (this._def.allDay !== allDay) {\n standardProps.hasEnd = maintainDuration;\n }\n this.mutate({\n standardProps: standardProps\n });\n };\n EventApi.prototype.formatRange = function (formatInput) {\n var dateEnv = this._context.dateEnv;\n var instance = this._instance;\n var formatter = createFormatter(formatInput);\n if (this._def.hasEnd) {\n return dateEnv.formatRange(instance.range.start, instance.range.end, formatter, {\n forcedStartTzo: instance.forcedStartTzo,\n forcedEndTzo: instance.forcedEndTzo\n });\n }\n return dateEnv.format(instance.range.start, formatter, {\n forcedTzo: instance.forcedStartTzo\n });\n };\n EventApi.prototype.mutate = function (mutation) {\n var instance = this._instance;\n if (instance) {\n var def = this._def;\n var context_1 = this._context;\n var eventStore_1 = context_1.getCurrentData().eventStore;\n var relevantEvents = getRelevantEvents(eventStore_1, instance.instanceId);\n var eventConfigBase = {\n '': {\n display: '',\n startEditable: true,\n durationEditable: true,\n constraints: [],\n overlap: null,\n allows: [],\n backgroundColor: '',\n borderColor: '',\n textColor: '',\n classNames: []\n }\n };\n relevantEvents = applyMutationToEventStore(relevantEvents, eventConfigBase, mutation, context_1);\n var oldEvent = new EventApi(context_1, def, instance); // snapshot\n this._def = relevantEvents.defs[def.defId];\n this._instance = relevantEvents.instances[instance.instanceId];\n context_1.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: relevantEvents\n });\n context_1.emitter.trigger('eventChange', {\n oldEvent: oldEvent,\n event: this,\n relatedEvents: buildEventApis(relevantEvents, context_1, instance),\n revert: function () {\n context_1.dispatch({\n type: 'RESET_EVENTS',\n eventStore: eventStore_1\n });\n }\n });\n }\n };\n EventApi.prototype.remove = function () {\n var context = this._context;\n var asStore = eventApiToStore(this);\n context.dispatch({\n type: 'REMOVE_EVENTS',\n eventStore: asStore\n });\n context.emitter.trigger('eventRemove', {\n event: this,\n relatedEvents: [],\n revert: function () {\n context.dispatch({\n type: 'MERGE_EVENTS',\n eventStore: asStore\n });\n }\n });\n };\n Object.defineProperty(EventApi.prototype, \"source\", {\n get: function () {\n var sourceId = this._def.sourceId;\n if (sourceId) {\n return new EventSourceApi(this._context, this._context.getCurrentData().eventSources[sourceId]);\n }\n return null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"start\", {\n get: function () {\n return this._instance ? this._context.dateEnv.toDate(this._instance.range.start) : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"end\", {\n get: function () {\n return this._instance && this._def.hasEnd ? this._context.dateEnv.toDate(this._instance.range.end) : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"startStr\", {\n get: function () {\n var instance = this._instance;\n if (instance) {\n return this._context.dateEnv.formatIso(instance.range.start, {\n omitTime: this._def.allDay,\n forcedTzo: instance.forcedStartTzo\n });\n }\n return '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"endStr\", {\n get: function () {\n var instance = this._instance;\n if (instance && this._def.hasEnd) {\n return this._context.dateEnv.formatIso(instance.range.end, {\n omitTime: this._def.allDay,\n forcedTzo: instance.forcedEndTzo\n });\n }\n return '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"id\", {\n // computable props that all access the def\n // TODO: find a TypeScript-compatible way to do this at scale\n get: function () {\n return this._def.publicId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"groupId\", {\n get: function () {\n return this._def.groupId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"allDay\", {\n get: function () {\n return this._def.allDay;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"title\", {\n get: function () {\n return this._def.title;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"url\", {\n get: function () {\n return this._def.url;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"display\", {\n get: function () {\n return this._def.ui.display || 'auto';\n } // bad. just normalize the type earlier\n ,\n\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"startEditable\", {\n get: function () {\n return this._def.ui.startEditable;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"durationEditable\", {\n get: function () {\n return this._def.ui.durationEditable;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"constraint\", {\n get: function () {\n return this._def.ui.constraints[0] || null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"overlap\", {\n get: function () {\n return this._def.ui.overlap;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"allow\", {\n get: function () {\n return this._def.ui.allows[0] || null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"backgroundColor\", {\n get: function () {\n return this._def.ui.backgroundColor;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"borderColor\", {\n get: function () {\n return this._def.ui.borderColor;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"textColor\", {\n get: function () {\n return this._def.ui.textColor;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"classNames\", {\n // NOTE: user can't modify these because Object.freeze was called in event-def parsing\n get: function () {\n return this._def.ui.classNames;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EventApi.prototype, \"extendedProps\", {\n get: function () {\n return this._def.extendedProps;\n },\n enumerable: false,\n configurable: true\n });\n EventApi.prototype.toPlainObject = function (settings) {\n if (settings === void 0) {\n settings = {};\n }\n var def = this._def;\n var ui = def.ui;\n var _a = this,\n startStr = _a.startStr,\n endStr = _a.endStr;\n var res = {};\n if (def.title) {\n res.title = def.title;\n }\n if (startStr) {\n res.start = startStr;\n }\n if (endStr) {\n res.end = endStr;\n }\n if (def.publicId) {\n res.id = def.publicId;\n }\n if (def.groupId) {\n res.groupId = def.groupId;\n }\n if (def.url) {\n res.url = def.url;\n }\n if (ui.display && ui.display !== 'auto') {\n res.display = ui.display;\n }\n // TODO: what about recurring-event properties???\n // TODO: include startEditable/durationEditable/constraint/overlap/allow\n if (settings.collapseColor && ui.backgroundColor && ui.backgroundColor === ui.borderColor) {\n res.color = ui.backgroundColor;\n } else {\n if (ui.backgroundColor) {\n res.backgroundColor = ui.backgroundColor;\n }\n if (ui.borderColor) {\n res.borderColor = ui.borderColor;\n }\n }\n if (ui.textColor) {\n res.textColor = ui.textColor;\n }\n if (ui.classNames.length) {\n res.classNames = ui.classNames;\n }\n if (Object.keys(def.extendedProps).length) {\n if (settings.collapseExtendedProps) {\n __assign(res, def.extendedProps);\n } else {\n res.extendedProps = def.extendedProps;\n }\n }\n return res;\n };\n EventApi.prototype.toJSON = function () {\n return this.toPlainObject();\n };\n return EventApi;\n}();\nfunction eventApiToStore(eventApi) {\n var _a, _b;\n var def = eventApi._def;\n var instance = eventApi._instance;\n return {\n defs: (_a = {}, _a[def.defId] = def, _a),\n instances: instance ? (_b = {}, _b[instance.instanceId] = instance, _b) : {}\n };\n}\nfunction buildEventApis(eventStore, context, excludeInstance) {\n var defs = eventStore.defs,\n instances = eventStore.instances;\n var eventApis = [];\n var excludeInstanceId = excludeInstance ? excludeInstance.instanceId : '';\n for (var id in instances) {\n var instance = instances[id];\n var def = defs[instance.defId];\n if (instance.instanceId !== excludeInstanceId) {\n eventApis.push(new EventApi(context, def, instance));\n }\n }\n return eventApis;\n}\nvar calendarSystemClassMap = {};\nfunction registerCalendarSystem(name, theClass) {\n calendarSystemClassMap[name] = theClass;\n}\nfunction createCalendarSystem(name) {\n return new calendarSystemClassMap[name]();\n}\nvar GregorianCalendarSystem = /** @class */function () {\n function GregorianCalendarSystem() {}\n GregorianCalendarSystem.prototype.getMarkerYear = function (d) {\n return d.getUTCFullYear();\n };\n GregorianCalendarSystem.prototype.getMarkerMonth = function (d) {\n return d.getUTCMonth();\n };\n GregorianCalendarSystem.prototype.getMarkerDay = function (d) {\n return d.getUTCDate();\n };\n GregorianCalendarSystem.prototype.arrayToMarker = function (arr) {\n return arrayToUtcDate(arr);\n };\n GregorianCalendarSystem.prototype.markerToArray = function (marker) {\n return dateToUtcArray(marker);\n };\n return GregorianCalendarSystem;\n}();\nregisterCalendarSystem('gregory', GregorianCalendarSystem);\nvar ISO_RE = /^\\s*(\\d{4})(-?(\\d{2})(-?(\\d{2})([T ](\\d{2}):?(\\d{2})(:?(\\d{2})(\\.(\\d+))?)?(Z|(([-+])(\\d{2})(:?(\\d{2}))?))?)?)?)?$/;\nfunction parse(str) {\n var m = ISO_RE.exec(str);\n if (m) {\n var marker = new Date(Date.UTC(Number(m[1]), m[3] ? Number(m[3]) - 1 : 0, Number(m[5] || 1), Number(m[7] || 0), Number(m[8] || 0), Number(m[10] || 0), m[12] ? Number(\"0.\" + m[12]) * 1000 : 0));\n if (isValidDate(marker)) {\n var timeZoneOffset = null;\n if (m[13]) {\n timeZoneOffset = (m[15] === '-' ? -1 : 1) * (Number(m[16] || 0) * 60 + Number(m[18] || 0));\n }\n return {\n marker: marker,\n isTimeUnspecified: !m[6],\n timeZoneOffset: timeZoneOffset\n };\n }\n }\n return null;\n}\nvar DateEnv = /** @class */function () {\n function DateEnv(settings) {\n var timeZone = this.timeZone = settings.timeZone;\n var isNamedTimeZone = timeZone !== 'local' && timeZone !== 'UTC';\n if (settings.namedTimeZoneImpl && isNamedTimeZone) {\n this.namedTimeZoneImpl = new settings.namedTimeZoneImpl(timeZone);\n }\n this.canComputeOffset = Boolean(!isNamedTimeZone || this.namedTimeZoneImpl);\n this.calendarSystem = createCalendarSystem(settings.calendarSystem);\n this.locale = settings.locale;\n this.weekDow = settings.locale.week.dow;\n this.weekDoy = settings.locale.week.doy;\n if (settings.weekNumberCalculation === 'ISO') {\n this.weekDow = 1;\n this.weekDoy = 4;\n }\n if (typeof settings.firstDay === 'number') {\n this.weekDow = settings.firstDay;\n }\n if (typeof settings.weekNumberCalculation === 'function') {\n this.weekNumberFunc = settings.weekNumberCalculation;\n }\n this.weekText = settings.weekText != null ? settings.weekText : settings.locale.options.weekText;\n this.weekTextLong = (settings.weekTextLong != null ? settings.weekTextLong : settings.locale.options.weekTextLong) || this.weekText;\n this.cmdFormatter = settings.cmdFormatter;\n this.defaultSeparator = settings.defaultSeparator;\n }\n // Creating / Parsing\n DateEnv.prototype.createMarker = function (input) {\n var meta = this.createMarkerMeta(input);\n if (meta === null) {\n return null;\n }\n return meta.marker;\n };\n DateEnv.prototype.createNowMarker = function () {\n if (this.canComputeOffset) {\n return this.timestampToMarker(new Date().valueOf());\n }\n // if we can't compute the current date val for a timezone,\n // better to give the current local date vals than UTC\n return arrayToUtcDate(dateToLocalArray(new Date()));\n };\n DateEnv.prototype.createMarkerMeta = function (input) {\n if (typeof input === 'string') {\n return this.parse(input);\n }\n var marker = null;\n if (typeof input === 'number') {\n marker = this.timestampToMarker(input);\n } else if (input instanceof Date) {\n input = input.valueOf();\n if (!isNaN(input)) {\n marker = this.timestampToMarker(input);\n }\n } else if (Array.isArray(input)) {\n marker = arrayToUtcDate(input);\n }\n if (marker === null || !isValidDate(marker)) {\n return null;\n }\n return {\n marker: marker,\n isTimeUnspecified: false,\n forcedTzo: null\n };\n };\n DateEnv.prototype.parse = function (s) {\n var parts = parse(s);\n if (parts === null) {\n return null;\n }\n var marker = parts.marker;\n var forcedTzo = null;\n if (parts.timeZoneOffset !== null) {\n if (this.canComputeOffset) {\n marker = this.timestampToMarker(marker.valueOf() - parts.timeZoneOffset * 60 * 1000);\n } else {\n forcedTzo = parts.timeZoneOffset;\n }\n }\n return {\n marker: marker,\n isTimeUnspecified: parts.isTimeUnspecified,\n forcedTzo: forcedTzo\n };\n };\n // Accessors\n DateEnv.prototype.getYear = function (marker) {\n return this.calendarSystem.getMarkerYear(marker);\n };\n DateEnv.prototype.getMonth = function (marker) {\n return this.calendarSystem.getMarkerMonth(marker);\n };\n // Adding / Subtracting\n DateEnv.prototype.add = function (marker, dur) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] += dur.years;\n a[1] += dur.months;\n a[2] += dur.days;\n a[6] += dur.milliseconds;\n return this.calendarSystem.arrayToMarker(a);\n };\n DateEnv.prototype.subtract = function (marker, dur) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] -= dur.years;\n a[1] -= dur.months;\n a[2] -= dur.days;\n a[6] -= dur.milliseconds;\n return this.calendarSystem.arrayToMarker(a);\n };\n DateEnv.prototype.addYears = function (marker, n) {\n var a = this.calendarSystem.markerToArray(marker);\n a[0] += n;\n return this.calendarSystem.arrayToMarker(a);\n };\n DateEnv.prototype.addMonths = function (marker, n) {\n var a = this.calendarSystem.markerToArray(marker);\n a[1] += n;\n return this.calendarSystem.arrayToMarker(a);\n };\n // Diffing Whole Units\n DateEnv.prototype.diffWholeYears = function (m0, m1) {\n var calendarSystem = this.calendarSystem;\n if (timeAsMs(m0) === timeAsMs(m1) && calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1) && calendarSystem.getMarkerMonth(m0) === calendarSystem.getMarkerMonth(m1)) {\n return calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0);\n }\n return null;\n };\n DateEnv.prototype.diffWholeMonths = function (m0, m1) {\n var calendarSystem = this.calendarSystem;\n if (timeAsMs(m0) === timeAsMs(m1) && calendarSystem.getMarkerDay(m0) === calendarSystem.getMarkerDay(m1)) {\n return calendarSystem.getMarkerMonth(m1) - calendarSystem.getMarkerMonth(m0) + (calendarSystem.getMarkerYear(m1) - calendarSystem.getMarkerYear(m0)) * 12;\n }\n return null;\n };\n // Range / Duration\n DateEnv.prototype.greatestWholeUnit = function (m0, m1) {\n var n = this.diffWholeYears(m0, m1);\n if (n !== null) {\n return {\n unit: 'year',\n value: n\n };\n }\n n = this.diffWholeMonths(m0, m1);\n if (n !== null) {\n return {\n unit: 'month',\n value: n\n };\n }\n n = diffWholeWeeks(m0, m1);\n if (n !== null) {\n return {\n unit: 'week',\n value: n\n };\n }\n n = diffWholeDays(m0, m1);\n if (n !== null) {\n return {\n unit: 'day',\n value: n\n };\n }\n n = diffHours(m0, m1);\n if (isInt(n)) {\n return {\n unit: 'hour',\n value: n\n };\n }\n n = diffMinutes(m0, m1);\n if (isInt(n)) {\n return {\n unit: 'minute',\n value: n\n };\n }\n n = diffSeconds(m0, m1);\n if (isInt(n)) {\n return {\n unit: 'second',\n value: n\n };\n }\n return {\n unit: 'millisecond',\n value: m1.valueOf() - m0.valueOf()\n };\n };\n DateEnv.prototype.countDurationsBetween = function (m0, m1, d) {\n // TODO: can use greatestWholeUnit\n var diff;\n if (d.years) {\n diff = this.diffWholeYears(m0, m1);\n if (diff !== null) {\n return diff / asRoughYears(d);\n }\n }\n if (d.months) {\n diff = this.diffWholeMonths(m0, m1);\n if (diff !== null) {\n return diff / asRoughMonths(d);\n }\n }\n if (d.days) {\n diff = diffWholeDays(m0, m1);\n if (diff !== null) {\n return diff / asRoughDays(d);\n }\n }\n return (m1.valueOf() - m0.valueOf()) / asRoughMs(d);\n };\n // Start-Of\n // these DON'T return zoned-dates. only UTC start-of dates\n DateEnv.prototype.startOf = function (m, unit) {\n if (unit === 'year') {\n return this.startOfYear(m);\n }\n if (unit === 'month') {\n return this.startOfMonth(m);\n }\n if (unit === 'week') {\n return this.startOfWeek(m);\n }\n if (unit === 'day') {\n return startOfDay(m);\n }\n if (unit === 'hour') {\n return startOfHour(m);\n }\n if (unit === 'minute') {\n return startOfMinute(m);\n }\n if (unit === 'second') {\n return startOfSecond(m);\n }\n return null;\n };\n DateEnv.prototype.startOfYear = function (m) {\n return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m)]);\n };\n DateEnv.prototype.startOfMonth = function (m) {\n return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m), this.calendarSystem.getMarkerMonth(m)]);\n };\n DateEnv.prototype.startOfWeek = function (m) {\n return this.calendarSystem.arrayToMarker([this.calendarSystem.getMarkerYear(m), this.calendarSystem.getMarkerMonth(m), m.getUTCDate() - (m.getUTCDay() - this.weekDow + 7) % 7]);\n };\n // Week Number\n DateEnv.prototype.computeWeekNumber = function (marker) {\n if (this.weekNumberFunc) {\n return this.weekNumberFunc(this.toDate(marker));\n }\n return weekOfYear(marker, this.weekDow, this.weekDoy);\n };\n // TODO: choke on timeZoneName: long\n DateEnv.prototype.format = function (marker, formatter, dateOptions) {\n if (dateOptions === void 0) {\n dateOptions = {};\n }\n return formatter.format({\n marker: marker,\n timeZoneOffset: dateOptions.forcedTzo != null ? dateOptions.forcedTzo : this.offsetForMarker(marker)\n }, this);\n };\n DateEnv.prototype.formatRange = function (start, end, formatter, dateOptions) {\n if (dateOptions === void 0) {\n dateOptions = {};\n }\n if (dateOptions.isEndExclusive) {\n end = addMs(end, -1);\n }\n return formatter.formatRange({\n marker: start,\n timeZoneOffset: dateOptions.forcedStartTzo != null ? dateOptions.forcedStartTzo : this.offsetForMarker(start)\n }, {\n marker: end,\n timeZoneOffset: dateOptions.forcedEndTzo != null ? dateOptions.forcedEndTzo : this.offsetForMarker(end)\n }, this, dateOptions.defaultSeparator);\n };\n /*\n DUMB: the omitTime arg is dumb. if we omit the time, we want to omit the timezone offset. and if we do that,\n might as well use buildIsoString or some other util directly\n */\n DateEnv.prototype.formatIso = function (marker, extraOptions) {\n if (extraOptions === void 0) {\n extraOptions = {};\n }\n var timeZoneOffset = null;\n if (!extraOptions.omitTimeZoneOffset) {\n if (extraOptions.forcedTzo != null) {\n timeZoneOffset = extraOptions.forcedTzo;\n } else {\n timeZoneOffset = this.offsetForMarker(marker);\n }\n }\n return buildIsoString(marker, timeZoneOffset, extraOptions.omitTime);\n };\n // TimeZone\n DateEnv.prototype.timestampToMarker = function (ms) {\n if (this.timeZone === 'local') {\n return arrayToUtcDate(dateToLocalArray(new Date(ms)));\n }\n if (this.timeZone === 'UTC' || !this.namedTimeZoneImpl) {\n return new Date(ms);\n }\n return arrayToUtcDate(this.namedTimeZoneImpl.timestampToArray(ms));\n };\n DateEnv.prototype.offsetForMarker = function (m) {\n if (this.timeZone === 'local') {\n return -arrayToLocalDate(dateToUtcArray(m)).getTimezoneOffset(); // convert \"inverse\" offset to \"normal\" offset\n }\n if (this.timeZone === 'UTC') {\n return 0;\n }\n if (this.namedTimeZoneImpl) {\n return this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m));\n }\n return null;\n };\n // Conversion\n DateEnv.prototype.toDate = function (m, forcedTzo) {\n if (this.timeZone === 'local') {\n return arrayToLocalDate(dateToUtcArray(m));\n }\n if (this.timeZone === 'UTC') {\n return new Date(m.valueOf()); // make sure it's a copy\n }\n if (!this.namedTimeZoneImpl) {\n return new Date(m.valueOf() - (forcedTzo || 0));\n }\n return new Date(m.valueOf() - this.namedTimeZoneImpl.offsetForArray(dateToUtcArray(m)) * 1000 * 60);\n };\n return DateEnv;\n}();\nvar globalLocales = [];\nvar MINIMAL_RAW_EN_LOCALE = {\n code: 'en',\n week: {\n dow: 0,\n doy: 4 // 4 days need to be within the year to be considered the first week\n },\n direction: 'ltr',\n buttonText: {\n prev: 'prev',\n next: 'next',\n prevYear: 'prev year',\n nextYear: 'next year',\n year: 'year',\n today: 'today',\n month: 'month',\n week: 'week',\n day: 'day',\n list: 'list'\n },\n weekText: 'W',\n weekTextLong: 'Week',\n closeHint: 'Close',\n timeHint: 'Time',\n eventHint: 'Event',\n allDayText: 'all-day',\n moreLinkText: 'more',\n noEventsText: 'No events to display'\n};\nvar RAW_EN_LOCALE = __assign(__assign({}, MINIMAL_RAW_EN_LOCALE), {\n // Includes things we don't want other locales to inherit,\n // things that derive from other translatable strings.\n buttonHints: {\n prev: 'Previous $0',\n next: 'Next $0',\n today: function (buttonText, unit) {\n return unit === 'day' ? 'Today' : \"This \" + buttonText;\n }\n },\n viewHint: '$0 view',\n navLinkHint: 'Go to $0',\n moreLinkHint: function (eventCnt) {\n return \"Show \" + eventCnt + \" more event\" + (eventCnt === 1 ? '' : 's');\n }\n});\nfunction organizeRawLocales(explicitRawLocales) {\n var defaultCode = explicitRawLocales.length > 0 ? explicitRawLocales[0].code : 'en';\n var allRawLocales = globalLocales.concat(explicitRawLocales);\n var rawLocaleMap = {\n en: RAW_EN_LOCALE\n };\n for (var _i = 0, allRawLocales_1 = allRawLocales; _i < allRawLocales_1.length; _i++) {\n var rawLocale = allRawLocales_1[_i];\n rawLocaleMap[rawLocale.code] = rawLocale;\n }\n return {\n map: rawLocaleMap,\n defaultCode: defaultCode\n };\n}\nfunction buildLocale(inputSingular, available) {\n if (typeof inputSingular === 'object' && !Array.isArray(inputSingular)) {\n return parseLocale(inputSingular.code, [inputSingular.code], inputSingular);\n }\n return queryLocale(inputSingular, available);\n}\nfunction queryLocale(codeArg, available) {\n var codes = [].concat(codeArg || []); // will convert to array\n var raw = queryRawLocale(codes, available) || RAW_EN_LOCALE;\n return parseLocale(codeArg, codes, raw);\n}\nfunction queryRawLocale(codes, available) {\n for (var i = 0; i < codes.length; i += 1) {\n var parts = codes[i].toLocaleLowerCase().split('-');\n for (var j = parts.length; j > 0; j -= 1) {\n var simpleId = parts.slice(0, j).join('-');\n if (available[simpleId]) {\n return available[simpleId];\n }\n }\n }\n return null;\n}\nfunction parseLocale(codeArg, codes, raw) {\n var merged = mergeProps([MINIMAL_RAW_EN_LOCALE, raw], ['buttonText']);\n delete merged.code; // don't want this part of the options\n var week = merged.week;\n delete merged.week;\n return {\n codeArg: codeArg,\n codes: codes,\n week: week,\n simpleNumberFormat: new Intl.NumberFormat(codeArg),\n options: merged\n };\n}\nfunction formatDate(dateInput, options) {\n if (options === void 0) {\n options = {};\n }\n var dateEnv = buildDateEnv$1(options);\n var formatter = createFormatter(options);\n var dateMeta = dateEnv.createMarkerMeta(dateInput);\n if (!dateMeta) {\n // TODO: warning?\n return '';\n }\n return dateEnv.format(dateMeta.marker, formatter, {\n forcedTzo: dateMeta.forcedTzo\n });\n}\nfunction formatRange(startInput, endInput, options) {\n var dateEnv = buildDateEnv$1(typeof options === 'object' && options ? options : {}); // pass in if non-null object\n var formatter = createFormatter(options);\n var startMeta = dateEnv.createMarkerMeta(startInput);\n var endMeta = dateEnv.createMarkerMeta(endInput);\n if (!startMeta || !endMeta) {\n // TODO: warning?\n return '';\n }\n return dateEnv.formatRange(startMeta.marker, endMeta.marker, formatter, {\n forcedStartTzo: startMeta.forcedTzo,\n forcedEndTzo: endMeta.forcedTzo,\n isEndExclusive: options.isEndExclusive,\n defaultSeparator: BASE_OPTION_DEFAULTS.defaultRangeSeparator\n });\n}\n// TODO: more DRY and optimized\nfunction buildDateEnv$1(settings) {\n var locale = buildLocale(settings.locale || 'en', organizeRawLocales([]).map); // TODO: don't hardcode 'en' everywhere\n return new DateEnv(__assign(__assign({\n timeZone: BASE_OPTION_DEFAULTS.timeZone,\n calendarSystem: 'gregory'\n }, settings), {\n locale: locale\n }));\n}\nvar DEF_DEFAULTS = {\n startTime: '09:00',\n endTime: '17:00',\n daysOfWeek: [1, 2, 3, 4, 5],\n display: 'inverse-background',\n classNames: 'fc-non-business',\n groupId: '_businessHours' // so multiple defs get grouped\n};\n/*\nTODO: pass around as EventDefHash!!!\n*/\nfunction parseBusinessHours(input, context) {\n return parseEvents(refineInputs(input), null, context);\n}\nfunction refineInputs(input) {\n var rawDefs;\n if (input === true) {\n rawDefs = [{}]; // will get DEF_DEFAULTS verbatim\n } else if (Array.isArray(input)) {\n // if specifying an array, every sub-definition NEEDS a day-of-week\n rawDefs = input.filter(function (rawDef) {\n return rawDef.daysOfWeek;\n });\n } else if (typeof input === 'object' && input) {\n // non-null object\n rawDefs = [input];\n } else {\n // is probably false\n rawDefs = [];\n }\n rawDefs = rawDefs.map(function (rawDef) {\n return __assign(__assign({}, DEF_DEFAULTS), rawDef);\n });\n return rawDefs;\n}\nfunction pointInsideRect(point, rect) {\n return point.left >= rect.left && point.left < rect.right && point.top >= rect.top && point.top < rect.bottom;\n}\n// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false\nfunction intersectRects(rect1, rect2) {\n var res = {\n left: Math.max(rect1.left, rect2.left),\n right: Math.min(rect1.right, rect2.right),\n top: Math.max(rect1.top, rect2.top),\n bottom: Math.min(rect1.bottom, rect2.bottom)\n };\n if (res.left < res.right && res.top < res.bottom) {\n return res;\n }\n return false;\n}\nfunction translateRect(rect, deltaX, deltaY) {\n return {\n left: rect.left + deltaX,\n right: rect.right + deltaX,\n top: rect.top + deltaY,\n bottom: rect.bottom + deltaY\n };\n}\n// Returns a new point that will have been moved to reside within the given rectangle\nfunction constrainPoint(point, rect) {\n return {\n left: Math.min(Math.max(point.left, rect.left), rect.right),\n top: Math.min(Math.max(point.top, rect.top), rect.bottom)\n };\n}\n// Returns a point that is the center of the given rectangle\nfunction getRectCenter(rect) {\n return {\n left: (rect.left + rect.right) / 2,\n top: (rect.top + rect.bottom) / 2\n };\n}\n// Subtracts point2's coordinates from point1's coordinates, returning a delta\nfunction diffPoints(point1, point2) {\n return {\n left: point1.left - point2.left,\n top: point1.top - point2.top\n };\n}\nvar canVGrowWithinCell;\nfunction getCanVGrowWithinCell() {\n if (canVGrowWithinCell == null) {\n canVGrowWithinCell = computeCanVGrowWithinCell();\n }\n return canVGrowWithinCell;\n}\nfunction computeCanVGrowWithinCell() {\n // for SSR, because this function is call immediately at top-level\n // TODO: just make this logic execute top-level, immediately, instead of doing lazily\n if (typeof document === 'undefined') {\n return true;\n }\n var el = document.createElement('div');\n el.style.position = 'absolute';\n el.style.top = '0px';\n el.style.left = '0px';\n el.innerHTML = '
/ | elements with colspans.\n SOLUTION: making individual |
---|